From 2e54723713060f01b7c88553c80bebd4c6af60a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyryl=20P=C5=82otnicki?= Date: Sat, 22 Oct 2016 20:55:50 +0200 Subject: [PATCH] Remove VSCode configuration and extension files --- .../.vsixmanifest | 35 - .../LICENSE.md | 13 - .../README.md | 30 - .../images/docker_icon.svg | 114 - .../images/dockercompose.gif | Bin 147105 -> 0 bytes .../images/dockerfile.gif | Bin 142578 -> 0 bytes .../images/installing.gif | Bin 116925 -> 0 bytes .../dockerComposeCompletionItemProvider.js | 55 - .../out/dockerCompose/dockerComposeKeyInfo.js | 51 - .../out/dockerCompose/dockerComposeParser.js | 75 - .../out/dockerExtension.js | 24 - .../out/dockerHoverProvider.js | 68 - .../out/dockerHubApi.js | 119 - .../dockerfileCompletionItemProvider.js | 25 - .../out/dockerfile/dockerfileKeyInfo.js | 27 - .../out/dockerfile/dockerfileParser.js | 51 - .../out/helpers/suggestSupportHelper.js | 90 - .../out/parser.js | 40 - .../package.json | 70 - .../snippets/dockerfile.json | 114 - .../.vsixmanifest | 32 - .../LICENSE.txt | 21 - .../README.md | 39 - .../icon/path-intellisense.png | Bin 9548 -> 0 bytes .../icon/path-intellisense.sketch | Bin 32768 -> 0 bytes .../out/src/FileInfo.js | 12 - .../out/src/PathCompletionItem.js | 43 - .../out/src/PathIntellisense.js | 39 - .../out/src/UpCompletionItem.js | 17 - .../out/src/extension.js | 14 - .../out/src/fs-functions.js | 50 - .../out/src/text-parser.js | 20 - .../package.json | 50 - .../.vsixmanifest | 32 - .../codezombiech.gitignore-0.2.0/CHANGELOG.md | 31 - .../codezombiech.gitignore-0.2.0/LICENSE.txt | 21 - .../codezombiech.gitignore-0.2.0/README.md | 51 - .../gitignore.configuration.json | 6 - .../codezombiech.gitignore-0.2.0/icon.png | Bin 3546 -> 0 bytes .../icon/icon.png | Bin 9334 -> 0 bytes .../icon/icon.xcf | Bin 33599 -> 0 bytes .../node_modules/github/.npmignore | 5 - .../node_modules/github/LICENSE | 21 - .../node_modules/github/README.md | 173 - .../github/api/v2.0.0/routes.json | 3 - .../github/api/v3.0.0/authorization.js | 255 - .../github/api/v3.0.0/authorizationTest.js | 258 - .../node_modules/github/api/v3.0.0/events.js | 495 - .../github/api/v3.0.0/eventsTest.js | 212 - .../node_modules/github/api/v3.0.0/gists.js | 801 - .../github/api/v3.0.0/gistsTest.js | 605 - .../node_modules/github/api/v3.0.0/gitdata.js | 650 - .../github/api/v3.0.0/gitdataTest.js | 480 - .../github/api/v3.0.0/gitignore.js | 112 - .../github/api/v3.0.0/gitignoreTest.js | 54 - .../node_modules/github/api/v3.0.0/index.js | 40 - .../node_modules/github/api/v3.0.0/issues.js | 1246 - .../github/api/v3.0.0/issuesTest.js | 423 - .../github/api/v3.0.0/markdown.js | 114 - .../github/api/v3.0.0/markdownTest.js | 56 - .../node_modules/github/api/v3.0.0/misc.js | 157 - .../github/api/v3.0.0/miscTest.js | 69 - .../node_modules/github/api/v3.0.0/orgs.js | 1140 - .../github/api/v3.0.0/orgsTest.js | 361 - .../github/api/v3.0.0/pullRequests.js | 757 - .../github/api/v3.0.0/pullRequestsTest.js | 281 - .../github/api/v3.0.0/releases.js | 507 - .../github/api/v3.0.0/releasesTest.js | 262 - .../node_modules/github/api/v3.0.0/repos.js | 3548 - .../github/api/v3.0.0/reposTest.js | 1126 - .../github/api/v3.0.0/routes.json | 3914 - .../node_modules/github/api/v3.0.0/search.js | 263 - .../github/api/v3.0.0/searchTest.js | 119 - .../github/api/v3.0.0/statuses.js | 167 - .../github/api/v3.0.0/statusesTest.js | 76 - .../node_modules/github/api/v3.0.0/user.js | 1035 - .../github/api/v3.0.0/userTest.js | 304 - .../node_modules/github/error.js | 117 - .../node_modules/github/generate.js | 295 - .../node_modules/github/index.js | 847 - .../github/node_modules/mime/.npmignore | 0 .../github/node_modules/mime/LICENSE | 19 - .../github/node_modules/mime/README.md | 90 - .../github/node_modules/mime/build/build.js | 11 - .../github/node_modules/mime/build/test.js | 57 - .../github/node_modules/mime/cli.js | 8 - .../github/node_modules/mime/mime.js | 108 - .../github/node_modules/mime/package.json | 73 - .../github/node_modules/mime/types.json | 1 - .../node_modules/github/package.json | 70 - .../node_modules/github/seed.yml | 5 - .../github/templates/after_request.js.tpl | 11 - .../github/templates/handler.js.tpl | 24 - .../github/templates/index.js.tpl | 40 - .../github/templates/section.js.tpl | 23 - .../github/templates/test_handler.js.tpl | 10 - .../github/templates/test_section.js.tpl | 30 - .../node_modules/github/test/client_test.js | 62 - .../node_modules/github/test/example.js | 37 - .../node_modules/github/test/oauth.js | 95 - .../node_modules/github/test/oauth_server.js | 59 - .../node_modules/github/util.js | 140 - .../out/src/extension.js | 164 - .../codezombiech.gitignore-0.2.0/package.json | 83 - .../syntaxes/gitignore.json | 15 - .../.vsixmanifest | 32 - .../README.md | 38 - .../extension.js | 79 - .../node_modules/.bin/instant-markdown-d | 101 - .../node_modules/.bin/shjs | 51 - .../node_modules/bluebird/LICENSE | 21 - .../node_modules/bluebird/README.md | 44 - .../node_modules/bluebird/changelog.md | 1 - .../bluebird/js/browser/bluebird.js | 5286 - .../bluebird/js/browser/bluebird.min.js | 31 - .../node_modules/bluebird/js/release/any.js | 21 - .../bluebird/js/release/assert.js | 55 - .../node_modules/bluebird/js/release/async.js | 157 - .../node_modules/bluebird/js/release/bind.js | 67 - .../bluebird/js/release/bluebird.js | 11 - .../bluebird/js/release/call_get.js | 123 - .../bluebird/js/release/cancel.js | 125 - .../bluebird/js/release/catch_filter.js | 42 - .../bluebird/js/release/context.js | 69 - .../bluebird/js/release/debuggability.js | 812 - .../bluebird/js/release/direct_resolve.js | 46 - .../node_modules/bluebird/js/release/each.js | 29 - .../bluebird/js/release/errors.js | 111 - .../node_modules/bluebird/js/release/es5.js | 80 - .../bluebird/js/release/filter.js | 12 - .../bluebird/js/release/finally.js | 100 - .../bluebird/js/release/generators.js | 204 - .../node_modules/bluebird/js/release/join.js | 149 - .../node_modules/bluebird/js/release/map.js | 151 - .../bluebird/js/release/method.js | 55 - .../bluebird/js/release/nodeback.js | 51 - .../bluebird/js/release/nodeify.js | 58 - .../bluebird/js/release/promise.js | 755 - .../bluebird/js/release/promise_array.js | 184 - .../bluebird/js/release/promisify.js | 314 - .../node_modules/bluebird/js/release/props.js | 118 - .../node_modules/bluebird/js/release/queue.js | 90 - .../node_modules/bluebird/js/release/race.js | 49 - .../bluebird/js/release/reduce.js | 162 - .../bluebird/js/release/schedule.js | 35 - .../bluebird/js/release/settle.js | 43 - .../node_modules/bluebird/js/release/some.js | 148 - .../js/release/synchronous_inspection.js | 96 - .../bluebird/js/release/thenables.js | 82 - .../bluebird/js/release/timers.js | 66 - .../node_modules/bluebird/js/release/using.js | 225 - .../node_modules/bluebird/js/release/util.js | 344 - .../node_modules/bluebird/package.json | 97 - .../instant-markdown-d/.npmignore | 1 - .../node_modules/instant-markdown-d/README.md | 16 - .../instant-markdown-d/github-markdown.css | 758 - .../github-syntax-highlight.css | 121 - .../instant-markdown-d/index.html | 50 - .../instant-markdown-d/instant-markdown-d | 101 - .../node_modules/.bin/markdown-it | 105 - .../node_modules/highlight.js/LICENSE | 24 - .../node_modules/highlight.js/README.md | 106 - .../node_modules/highlight.js/docs/api.rst | 120 - .../highlight.js/docs/building-testing.rst | 88 - .../docs/css-classes-reference.rst | 1558 - .../node_modules/highlight.js/docs/index.rst | 51 - .../docs/language-contribution.rst | 78 - .../highlight.js/docs/language-guide.rst | 247 - .../highlight.js/docs/language-requests.rst | 17 - .../highlight.js/docs/line-numbers.rst | 39 - .../highlight.js/docs/reference.rst | 298 - .../highlight.js/docs/release-process.rst | 20 - .../highlight.js/docs/style-contribution.rst | 35 - .../highlight.js/docs/style-guide.rst | 112 - .../highlight.js/lib/highlight.js | 771 - .../node_modules/highlight.js/lib/index.js | 141 - .../highlight.js/lib/languages/1c.js | 85 - .../highlight.js/lib/languages/accesslog.js | 37 - .../lib/languages/actionscript.js | 74 - .../highlight.js/lib/languages/apache.js | 45 - .../highlight.js/lib/languages/applescript.js | 96 - .../highlight.js/lib/languages/armasm.js | 91 - .../highlight.js/lib/languages/asciidoc.js | 191 - .../highlight.js/lib/languages/aspectj.js | 137 - .../highlight.js/lib/languages/autohotkey.js | 61 - .../highlight.js/lib/languages/autoit.js | 1754 - .../highlight.js/lib/languages/avrasm.js | 61 - .../highlight.js/lib/languages/axapta.js | 30 - .../highlight.js/lib/languages/bash.js | 75 - .../highlight.js/lib/languages/brainfuck.js | 36 - .../highlight.js/lib/languages/cal.js | 79 - .../highlight.js/lib/languages/capnproto.js | 48 - .../highlight.js/lib/languages/ceylon.js | 67 - .../lib/languages/clojure-repl.js | 14 - .../highlight.js/lib/languages/clojure.js | 96 - .../highlight.js/lib/languages/cmake.js | 38 - .../lib/languages/coffeescript.js | 140 - .../highlight.js/lib/languages/cpp.js | 140 - .../highlight.js/lib/languages/crmsh.js | 97 - .../highlight.js/lib/languages/crystal.js | 191 - .../highlight.js/lib/languages/cs.js | 118 - .../highlight.js/lib/languages/css.js | 101 - .../highlight.js/lib/languages/d.js | 257 - .../highlight.js/lib/languages/dart.js | 100 - .../highlight.js/lib/languages/delphi.js | 66 - .../highlight.js/lib/languages/diff.js | 39 - .../highlight.js/lib/languages/django.js | 49 - .../highlight.js/lib/languages/dns.js | 27 - .../highlight.js/lib/languages/dockerfile.js | 34 - .../highlight.js/lib/languages/dos.js | 48 - .../highlight.js/lib/languages/dust.js | 34 - .../highlight.js/lib/languages/elixir.js | 101 - .../highlight.js/lib/languages/elm.js | 85 - .../highlight.js/lib/languages/erb.js | 14 - .../highlight.js/lib/languages/erlang-repl.js | 47 - .../highlight.js/lib/languages/erlang.js | 151 - .../highlight.js/lib/languages/fix.js | 28 - .../highlight.js/lib/languages/fortran.js | 70 - .../highlight.js/lib/languages/fsharp.js | 58 - .../highlight.js/lib/languages/gams.js | 36 - .../highlight.js/lib/languages/gcode.js | 72 - .../highlight.js/lib/languages/gherkin.js | 32 - .../highlight.js/lib/languages/glsl.js | 93 - .../highlight.js/lib/languages/go.js | 38 - .../highlight.js/lib/languages/golo.js | 23 - .../highlight.js/lib/languages/gradle.js | 34 - .../highlight.js/lib/languages/groovy.js | 87 - .../highlight.js/lib/languages/haml.js | 107 - .../highlight.js/lib/languages/handlebars.js | 32 - .../highlight.js/lib/languages/haskell.js | 123 - .../highlight.js/lib/languages/haxe.js | 60 - .../highlight.js/lib/languages/http.js | 34 - .../highlight.js/lib/languages/inform7.js | 57 - .../highlight.js/lib/languages/ini.js | 59 - .../highlight.js/lib/languages/irpf90.js | 75 - .../highlight.js/lib/languages/java.js | 99 - .../highlight.js/lib/languages/javascript.js | 111 - .../highlight.js/lib/languages/json.js | 37 - .../highlight.js/lib/languages/julia.js | 160 - .../highlight.js/lib/languages/kotlin.js | 100 - .../highlight.js/lib/languages/lasso.js | 185 - .../highlight.js/lib/languages/less.js | 136 - .../highlight.js/lib/languages/lisp.js | 106 - .../lib/languages/livecodeserver.js | 157 - .../highlight.js/lib/languages/livescript.js | 150 - .../highlight.js/lib/languages/lua.js | 55 - .../highlight.js/lib/languages/makefile.js | 45 - .../highlight.js/lib/languages/markdown.js | 101 - .../highlight.js/lib/languages/mathematica.js | 58 - .../highlight.js/lib/languages/matlab.js | 90 - .../highlight.js/lib/languages/mel.js | 229 - .../highlight.js/lib/languages/mercury.js | 88 - .../highlight.js/lib/languages/mizar.js | 18 - .../highlight.js/lib/languages/mojolicious.js | 24 - .../highlight.js/lib/languages/monkey.js | 78 - .../highlight.js/lib/languages/nginx.js | 81 - .../highlight.js/lib/languages/nimrod.js | 51 - .../highlight.js/lib/languages/nix.js | 50 - .../highlight.js/lib/languages/nsis.js | 87 - .../highlight.js/lib/languages/objectivec.js | 78 - .../highlight.js/lib/languages/ocaml.js | 70 - .../highlight.js/lib/languages/openscad.js | 57 - .../highlight.js/lib/languages/oxygene.js | 68 - .../highlight.js/lib/languages/parser3.js | 47 - .../highlight.js/lib/languages/perl.js | 156 - .../highlight.js/lib/languages/pf.js | 51 - .../highlight.js/lib/languages/php.js | 124 - .../highlight.js/lib/languages/powershell.js | 47 - .../highlight.js/lib/languages/processing.js | 47 - .../highlight.js/lib/languages/profile.js | 41 - .../highlight.js/lib/languages/prolog.js | 88 - .../highlight.js/lib/languages/protobuf.js | 36 - .../highlight.js/lib/languages/puppet.js | 107 - .../highlight.js/lib/languages/python.js | 84 - .../highlight.js/lib/languages/q.js | 22 - .../highlight.js/lib/languages/r.js | 69 - .../highlight.js/lib/languages/rib.js | 26 - .../highlight.js/lib/languages/roboconf.js | 59 - .../highlight.js/lib/languages/rsl.js | 36 - .../highlight.js/lib/languages/ruby.js | 169 - .../lib/languages/ruleslanguage.js | 60 - .../highlight.js/lib/languages/rust.js | 85 - .../highlight.js/lib/languages/scala.js | 62 - .../highlight.js/lib/languages/scheme.js | 121 - .../highlight.js/lib/languages/scilab.js | 54 - .../highlight.js/lib/languages/scss.js | 116 - .../highlight.js/lib/languages/smali.js | 82 - .../highlight.js/lib/languages/smalltalk.js | 52 - .../highlight.js/lib/languages/sml.js | 64 - .../highlight.js/lib/languages/sqf.js | 95 - .../highlight.js/lib/languages/sql.js | 159 - .../highlight.js/lib/languages/stata.js | 37 - .../highlight.js/lib/languages/step21.js | 51 - .../highlight.js/lib/languages/stylus.js | 442 - .../highlight.js/lib/languages/swift.js | 119 - .../highlight.js/lib/languages/tcl.js | 61 - .../highlight.js/lib/languages/tex.js | 54 - .../highlight.js/lib/languages/thrift.js | 34 - .../highlight.js/lib/languages/tp.js | 83 - .../highlight.js/lib/languages/twig.js | 56 - .../highlight.js/lib/languages/typescript.js | 97 - .../highlight.js/lib/languages/vala.js | 54 - .../highlight.js/lib/languages/vbnet.js | 55 - .../lib/languages/vbscript-html.js | 11 - .../highlight.js/lib/languages/vbscript.js | 38 - .../highlight.js/lib/languages/verilog.js | 49 - .../highlight.js/lib/languages/vhdl.js | 55 - .../highlight.js/lib/languages/vim.js | 62 - .../highlight.js/lib/languages/x86asm.js | 135 - .../highlight.js/lib/languages/xl.js | 86 - .../highlight.js/lib/languages/xml.js | 102 - .../highlight.js/lib/languages/xquery.js | 72 - .../highlight.js/lib/languages/zephir.js | 106 - .../node_modules/highlight.js/package.json | 801 - .../highlight.js/styles/agate.css | 137 - .../highlight.js/styles/androidstudio.css | 53 - .../node_modules/highlight.js/styles/arta.css | 138 - .../highlight.js/styles/ascetic.css | 52 - .../highlight.js/styles/atelier-cave.dark.css | 113 - .../styles/atelier-cave.light.css | 113 - .../highlight.js/styles/atelier-dune.dark.css | 94 - .../styles/atelier-dune.light.css | 94 - .../styles/atelier-estuary.dark.css | 113 - .../styles/atelier-estuary.light.css | 113 - .../styles/atelier-forest.dark.css | 94 - .../styles/atelier-forest.light.css | 94 - .../styles/atelier-heath.dark.css | 94 - .../styles/atelier-heath.light.css | 94 - .../styles/atelier-lakeside.dark.css | 94 - .../styles/atelier-lakeside.light.css | 94 - .../styles/atelier-plateau.dark.css | 113 - .../styles/atelier-plateau.light.css | 113 - .../styles/atelier-savanna.dark.css | 113 - .../styles/atelier-savanna.light.css | 113 - .../styles/atelier-seaside.dark.css | 94 - .../styles/atelier-seaside.light.css | 94 - .../styles/atelier-sulphurpool.dark.css | 94 - .../styles/atelier-sulphurpool.light.css | 94 - .../highlight.js/styles/brown_paper.css | 103 - .../highlight.js/styles/brown_papersq.png | Bin 18198 -> 0 bytes .../highlight.js/styles/codepen-embed.css | 97 - .../highlight.js/styles/color-brewer.css | 165 - .../node_modules/highlight.js/styles/dark.css | 103 - .../highlight.js/styles/darkula.css | 152 - .../highlight.js/styles/default.css | 155 - .../highlight.js/styles/docco.css | 134 - .../node_modules/highlight.js/styles/far.css | 110 - .../highlight.js/styles/foundation.css | 135 - .../highlight.js/styles/github-gist.css | 218 - .../highlight.js/styles/github.css | 123 - .../highlight.js/styles/googlecode.css | 144 - .../highlight.js/styles/grayscale.css | 128 - .../highlight.js/styles/hopscotch.css | 95 - .../highlight.js/styles/hybrid.css | 164 - .../node_modules/highlight.js/styles/idea.css | 122 - .../highlight.js/styles/ir_black.css | 106 - .../highlight.js/styles/kimbie.dark.css | 97 - .../highlight.js/styles/kimbie.light.css | 97 - .../highlight.js/styles/magula.css | 120 - .../highlight.js/styles/mono-blue.css | 68 - .../highlight.js/styles/monokai.css | 126 - .../highlight.js/styles/monokai_sublime.css | 154 - .../highlight.js/styles/obsidian.css | 152 - .../highlight.js/styles/paraiso.dark.css | 96 - .../highlight.js/styles/paraiso.light.css | 96 - .../highlight.js/styles/pojoaque.css | 106 - .../highlight.js/styles/pojoaque.jpg | Bin 1186 -> 0 bytes .../highlight.js/styles/railscasts.css | 184 - .../highlight.js/styles/rainbow.css | 107 - .../highlight.js/styles/school_book.css | 111 - .../highlight.js/styles/school_book.png | Bin 486 -> 0 bytes .../highlight.js/styles/solarized_dark.css | 107 - .../highlight.js/styles/solarized_light.css | 107 - .../highlight.js/styles/sunburst.css | 161 - .../styles/tomorrow-night-blue.css | 96 - .../styles/tomorrow-night-bright.css | 95 - .../styles/tomorrow-night-eighties.css | 95 - .../highlight.js/styles/tomorrow-night.css | 96 - .../highlight.js/styles/tomorrow.css | 93 - .../node_modules/highlight.js/styles/vs.css | 92 - .../highlight.js/styles/xcode.css | 154 - .../highlight.js/styles/zenburn.css | 118 - .../node_modules/markdown-it/CHANGELOG.md | 147 - .../node_modules/markdown-it/CONTRIBUTING.md | 14 - .../node_modules/markdown-it/LICENSE | 22 - .../node_modules/markdown-it/README.md | 249 - .../markdown-it/bin/markdown-it.js | 105 - .../node_modules/markdown-it/bower.json | 28 - .../markdown-it/dist/markdown-it.js | 8096 -- .../markdown-it/dist/markdown-it.min.js | 4 - .../node_modules/markdown-it/index.js | 4 - .../markdown-it/lib/common/entities.js | 2134 - .../markdown-it/lib/common/html_blocks.js | 62 - .../markdown-it/lib/common/html_re.js | 26 - .../markdown-it/lib/common/url_schemas.js | 172 - .../markdown-it/lib/common/utils.js | 272 - .../markdown-it/lib/helpers/index.js | 7 - .../lib/helpers/parse_link_destination.js | 80 - .../lib/helpers/parse_link_label.js | 48 - .../lib/helpers/parse_link_title.js | 53 - .../node_modules/markdown-it/lib/index.js | 450 - .../markdown-it/lib/parser_block.js | 125 - .../markdown-it/lib/parser_core.js | 58 - .../markdown-it/lib/parser_inline.js | 160 - .../markdown-it/lib/presets/commonmark.js | 71 - .../markdown-it/lib/presets/default.js | 37 - .../markdown-it/lib/presets/zero.js | 54 - .../node_modules/markdown-it/lib/renderer.js | 288 - .../node_modules/markdown-it/lib/ruler.js | 352 - .../markdown-it/lib/rules_block/blockquote.js | 129 - .../markdown-it/lib/rules_block/code.js | 35 - .../markdown-it/lib/rules_block/fence.js | 91 - .../markdown-it/lib/rules_block/heading.js | 56 - .../markdown-it/lib/rules_block/hr.js | 41 - .../markdown-it/lib/rules_block/html_block.js | 74 - .../markdown-it/lib/rules_block/lheading.js | 55 - .../markdown-it/lib/rules_block/list.js | 259 - .../markdown-it/lib/rules_block/paragraph.js | 57 - .../markdown-it/lib/rules_block/reference.js | 163 - .../lib/rules_block/state_block.js | 156 - .../markdown-it/lib/rules_block/table.js | 165 - .../markdown-it/lib/rules_core/block.js | 17 - .../markdown-it/lib/rules_core/inline.js | 13 - .../markdown-it/lib/rules_core/linkify.js | 114 - .../markdown-it/lib/rules_core/normalize.js | 39 - .../lib/rules_core/replacements.js | 74 - .../markdown-it/lib/rules_core/smartquotes.js | 148 - .../markdown-it/lib/rules_core/state_core.js | 11 - .../markdown-it/lib/rules_inline/autolink.js | 80 - .../markdown-it/lib/rules_inline/backticks.js | 45 - .../markdown-it/lib/rules_inline/emphasis.js | 164 - .../markdown-it/lib/rules_inline/entity.js | 48 - .../markdown-it/lib/rules_inline/escape.js | 49 - .../lib/rules_inline/html_inline.js | 49 - .../markdown-it/lib/rules_inline/image.js | 157 - .../markdown-it/lib/rules_inline/link.js | 149 - .../markdown-it/lib/rules_inline/newline.js | 48 - .../lib/rules_inline/state_inline.js | 68 - .../lib/rules_inline/strikethrough.js | 130 - .../markdown-it/lib/rules_inline/text.js | 59 - .../node_modules/argparse/CHANGELOG.md | 142 - .../markdown-it/node_modules/argparse/LICENSE | 21 - .../node_modules/argparse/README.md | 243 - .../argparse/examples/arguments.js | 36 - .../node_modules/argparse/examples/choice.js | 22 - .../argparse/examples/constants.js | 59 - .../node_modules/argparse/examples/help.js | 13 - .../node_modules/argparse/examples/nargs.js | 33 - .../node_modules/argparse/examples/parents.js | 28 - .../argparse/examples/prefix_chars.js | 23 - .../argparse/examples/sub_commands.js | 49 - .../node_modules/argparse/examples/sum.js | 35 - .../argparse/examples/testformatters.js | 270 - .../node_modules/argparse/index.js | 1 - .../node_modules/argparse/lib/action.js | 146 - .../argparse/lib/action/append.js | 55 - .../argparse/lib/action/append/constant.js | 47 - .../node_modules/argparse/lib/action/count.js | 40 - .../node_modules/argparse/lib/action/help.js | 48 - .../node_modules/argparse/lib/action/store.js | 50 - .../argparse/lib/action/store/constant.js | 43 - .../argparse/lib/action/store/false.js | 27 - .../argparse/lib/action/store/true.js | 26 - .../argparse/lib/action/subparsers.js | 148 - .../argparse/lib/action/version.js | 50 - .../argparse/lib/action_container.js | 479 - .../node_modules/argparse/lib/argparse.js | 14 - .../argparse/lib/argument/error.js | 50 - .../argparse/lib/argument/exclusive.js | 54 - .../argparse/lib/argument/group.js | 75 - .../argparse/lib/argument_parser.js | 1170 - .../node_modules/argparse/lib/const.js | 18 - .../argparse/lib/help/added_formatters.js | 88 - .../argparse/lib/help/formatter.js | 798 - .../node_modules/argparse/lib/namespace.js | 77 - .../argparse/node_modules/lodash/LICENSE | 22 - .../argparse/node_modules/lodash/README.md | 121 - .../argparse/node_modules/lodash/array.js | 44 - .../node_modules/lodash/array/chunk.js | 46 - .../node_modules/lodash/array/compact.js | 30 - .../node_modules/lodash/array/difference.js | 29 - .../node_modules/lodash/array/drop.js | 39 - .../node_modules/lodash/array/dropRight.js | 40 - .../lodash/array/dropRightWhile.js | 59 - .../node_modules/lodash/array/dropWhile.js | 59 - .../node_modules/lodash/array/fill.js | 44 - .../node_modules/lodash/array/findIndex.js | 53 - .../lodash/array/findLastIndex.js | 53 - .../node_modules/lodash/array/first.js | 22 - .../node_modules/lodash/array/flatten.js | 32 - .../node_modules/lodash/array/flattenDeep.js | 21 - .../node_modules/lodash/array/head.js | 1 - .../node_modules/lodash/array/indexOf.js | 53 - .../node_modules/lodash/array/initial.js | 20 - .../node_modules/lodash/array/intersection.js | 58 - .../node_modules/lodash/array/last.js | 19 - .../node_modules/lodash/array/lastIndexOf.js | 60 - .../node_modules/lodash/array/object.js | 1 - .../node_modules/lodash/array/pull.js | 52 - .../node_modules/lodash/array/pullAt.js | 40 - .../node_modules/lodash/array/remove.js | 64 - .../node_modules/lodash/array/rest.js | 21 - .../node_modules/lodash/array/slice.js | 30 - .../node_modules/lodash/array/sortedIndex.js | 53 - .../lodash/array/sortedLastIndex.js | 25 - .../node_modules/lodash/array/tail.js | 1 - .../node_modules/lodash/array/take.js | 39 - .../node_modules/lodash/array/takeRight.js | 40 - .../lodash/array/takeRightWhile.js | 59 - .../node_modules/lodash/array/takeWhile.js | 59 - .../node_modules/lodash/array/union.js | 24 - .../node_modules/lodash/array/uniq.js | 71 - .../node_modules/lodash/array/unique.js | 1 - .../node_modules/lodash/array/unzip.js | 47 - .../node_modules/lodash/array/unzipWith.js | 41 - .../node_modules/lodash/array/without.js | 27 - .../argparse/node_modules/lodash/array/xor.js | 35 - .../argparse/node_modules/lodash/array/zip.js | 21 - .../node_modules/lodash/array/zipObject.js | 43 - .../node_modules/lodash/array/zipWith.js | 36 - .../argparse/node_modules/lodash/chain.js | 16 - .../node_modules/lodash/chain/chain.js | 35 - .../node_modules/lodash/chain/commit.js | 1 - .../node_modules/lodash/chain/concat.js | 1 - .../node_modules/lodash/chain/lodash.js | 125 - .../node_modules/lodash/chain/plant.js | 1 - .../node_modules/lodash/chain/reverse.js | 1 - .../argparse/node_modules/lodash/chain/run.js | 1 - .../argparse/node_modules/lodash/chain/tap.js | 29 - .../node_modules/lodash/chain/thru.js | 26 - .../node_modules/lodash/chain/toJSON.js | 1 - .../node_modules/lodash/chain/toString.js | 1 - .../node_modules/lodash/chain/value.js | 1 - .../node_modules/lodash/chain/valueOf.js | 1 - .../node_modules/lodash/chain/wrapperChain.js | 32 - .../lodash/chain/wrapperCommit.js | 32 - .../lodash/chain/wrapperConcat.js | 34 - .../node_modules/lodash/chain/wrapperPlant.js | 45 - .../lodash/chain/wrapperReverse.js | 43 - .../lodash/chain/wrapperToString.js | 17 - .../node_modules/lodash/chain/wrapperValue.js | 20 - .../node_modules/lodash/collection.js | 44 - .../node_modules/lodash/collection/all.js | 1 - .../node_modules/lodash/collection/any.js | 1 - .../node_modules/lodash/collection/at.js | 29 - .../node_modules/lodash/collection/collect.js | 1 - .../lodash/collection/contains.js | 1 - .../node_modules/lodash/collection/countBy.js | 54 - .../node_modules/lodash/collection/detect.js | 1 - .../node_modules/lodash/collection/each.js | 1 - .../lodash/collection/eachRight.js | 1 - .../node_modules/lodash/collection/every.js | 66 - .../node_modules/lodash/collection/filter.js | 61 - .../node_modules/lodash/collection/find.js | 56 - .../lodash/collection/findLast.js | 25 - .../lodash/collection/findWhere.js | 37 - .../node_modules/lodash/collection/foldl.js | 1 - .../node_modules/lodash/collection/foldr.js | 1 - .../node_modules/lodash/collection/forEach.js | 37 - .../lodash/collection/forEachRight.js | 26 - .../node_modules/lodash/collection/groupBy.js | 59 - .../node_modules/lodash/collection/include.js | 1 - .../lodash/collection/includes.js | 57 - .../node_modules/lodash/collection/indexBy.js | 53 - .../node_modules/lodash/collection/inject.js | 1 - .../node_modules/lodash/collection/invoke.js | 42 - .../node_modules/lodash/collection/map.js | 68 - .../node_modules/lodash/collection/max.js | 1 - .../node_modules/lodash/collection/min.js | 1 - .../lodash/collection/partition.js | 66 - .../node_modules/lodash/collection/pluck.js | 31 - .../node_modules/lodash/collection/reduce.js | 44 - .../lodash/collection/reduceRight.js | 29 - .../node_modules/lodash/collection/reject.js | 50 - .../node_modules/lodash/collection/sample.js | 50 - .../node_modules/lodash/collection/select.js | 1 - .../node_modules/lodash/collection/shuffle.js | 24 - .../node_modules/lodash/collection/size.js | 30 - .../node_modules/lodash/collection/some.js | 67 - .../node_modules/lodash/collection/sortBy.js | 71 - .../lodash/collection/sortByAll.js | 52 - .../lodash/collection/sortByOrder.js | 55 - .../node_modules/lodash/collection/sum.js | 1 - .../node_modules/lodash/collection/where.js | 37 - .../argparse/node_modules/lodash/date.js | 3 - .../argparse/node_modules/lodash/date/now.js | 24 - .../argparse/node_modules/lodash/function.js | 28 - .../node_modules/lodash/function/after.js | 48 - .../node_modules/lodash/function/ary.js | 34 - .../node_modules/lodash/function/backflow.js | 1 - .../node_modules/lodash/function/before.js | 42 - .../node_modules/lodash/function/bind.js | 56 - .../node_modules/lodash/function/bindAll.js | 50 - .../node_modules/lodash/function/bindKey.js | 66 - .../node_modules/lodash/function/compose.js | 1 - .../node_modules/lodash/function/curry.js | 51 - .../lodash/function/curryRight.js | 48 - .../node_modules/lodash/function/debounce.js | 181 - .../node_modules/lodash/function/defer.js | 25 - .../node_modules/lodash/function/delay.js | 26 - .../node_modules/lodash/function/flow.js | 25 - .../node_modules/lodash/function/flowRight.js | 25 - .../node_modules/lodash/function/memoize.js | 80 - .../node_modules/lodash/function/modArgs.js | 58 - .../node_modules/lodash/function/negate.js | 32 - .../node_modules/lodash/function/once.js | 24 - .../node_modules/lodash/function/partial.js | 43 - .../lodash/function/partialRight.js | 42 - .../node_modules/lodash/function/rearg.js | 40 - .../node_modules/lodash/function/restParam.js | 58 - .../node_modules/lodash/function/spread.js | 44 - .../node_modules/lodash/function/throttle.js | 62 - .../node_modules/lodash/function/wrap.js | 33 - .../argparse/node_modules/lodash/index.js | 12351 -- .../lodash/internal/LazyWrapper.js | 26 - .../lodash/internal/LodashWrapper.js | 21 - .../node_modules/lodash/internal/MapCache.js | 24 - .../node_modules/lodash/internal/SetCache.js | 29 - .../lodash/internal/arrayConcat.js | 25 - .../node_modules/lodash/internal/arrayCopy.js | 20 - .../node_modules/lodash/internal/arrayEach.js | 22 - .../lodash/internal/arrayEachRight.js | 21 - .../lodash/internal/arrayEvery.js | 23 - .../lodash/internal/arrayExtremum.js | 30 - .../lodash/internal/arrayFilter.js | 25 - .../node_modules/lodash/internal/arrayMap.js | 21 - .../node_modules/lodash/internal/arrayPush.js | 20 - .../lodash/internal/arrayReduce.js | 26 - .../lodash/internal/arrayReduceRight.js | 24 - .../node_modules/lodash/internal/arraySome.js | 23 - .../node_modules/lodash/internal/arraySum.js | 20 - .../lodash/internal/assignDefaults.js | 13 - .../lodash/internal/assignOwnDefaults.js | 26 - .../lodash/internal/assignWith.js | 32 - .../lodash/internal/baseAssign.js | 19 - .../node_modules/lodash/internal/baseAt.js | 32 - .../lodash/internal/baseCallback.js | 35 - .../node_modules/lodash/internal/baseClone.js | 128 - .../lodash/internal/baseCompareAscending.js | 34 - .../node_modules/lodash/internal/baseCopy.js | 23 - .../lodash/internal/baseCreate.js | 23 - .../node_modules/lodash/internal/baseDelay.js | 21 - .../lodash/internal/baseDifference.js | 55 - .../node_modules/lodash/internal/baseEach.js | 15 - .../lodash/internal/baseEachRight.js | 15 - .../node_modules/lodash/internal/baseEvery.js | 22 - .../lodash/internal/baseExtremum.js | 29 - .../node_modules/lodash/internal/baseFill.js | 31 - .../lodash/internal/baseFilter.js | 22 - .../node_modules/lodash/internal/baseFind.js | 25 - .../lodash/internal/baseFindIndex.js | 23 - .../lodash/internal/baseFlatten.js | 41 - .../node_modules/lodash/internal/baseFor.js | 17 - .../node_modules/lodash/internal/baseForIn.js | 17 - .../lodash/internal/baseForOwn.js | 17 - .../lodash/internal/baseForOwnRight.js | 17 - .../lodash/internal/baseForRight.js | 15 - .../lodash/internal/baseFunctions.js | 27 - .../node_modules/lodash/internal/baseGet.js | 29 - .../lodash/internal/baseIndexOf.js | 27 - .../lodash/internal/baseIsEqual.js | 28 - .../lodash/internal/baseIsEqualDeep.js | 102 - .../lodash/internal/baseIsFunction.js | 15 - .../lodash/internal/baseIsMatch.js | 52 - .../lodash/internal/baseLodash.js | 10 - .../node_modules/lodash/internal/baseMap.js | 23 - .../lodash/internal/baseMatches.js | 30 - .../lodash/internal/baseMatchesProperty.js | 45 - .../node_modules/lodash/internal/baseMerge.js | 56 - .../lodash/internal/baseMergeDeep.js | 67 - .../lodash/internal/baseProperty.js | 14 - .../lodash/internal/basePropertyDeep.js | 19 - .../lodash/internal/basePullAt.js | 30 - .../lodash/internal/baseRandom.js | 18 - .../lodash/internal/baseReduce.js | 24 - .../lodash/internal/baseSetData.js | 17 - .../node_modules/lodash/internal/baseSlice.js | 32 - .../node_modules/lodash/internal/baseSome.js | 23 - .../lodash/internal/baseSortBy.js | 21 - .../lodash/internal/baseSortByOrder.js | 31 - .../node_modules/lodash/internal/baseSum.js | 20 - .../lodash/internal/baseToString.js | 13 - .../node_modules/lodash/internal/baseUniq.js | 60 - .../lodash/internal/baseValues.js | 22 - .../node_modules/lodash/internal/baseWhile.js | 24 - .../lodash/internal/baseWrapperValue.js | 29 - .../lodash/internal/binaryIndex.js | 39 - .../lodash/internal/binaryIndexBy.js | 57 - .../lodash/internal/bindCallback.js | 39 - .../lodash/internal/bufferClone.js | 20 - .../lodash/internal/cacheIndexOf.js | 19 - .../node_modules/lodash/internal/cachePush.js | 20 - .../lodash/internal/charsLeftIndex.js | 18 - .../lodash/internal/charsRightIndex.js | 17 - .../lodash/internal/compareAscending.js | 16 - .../lodash/internal/compareMultiple.js | 44 - .../lodash/internal/composeArgs.js | 34 - .../lodash/internal/composeArgsRight.js | 36 - .../lodash/internal/createAggregator.js | 35 - .../lodash/internal/createAssigner.js | 41 - .../lodash/internal/createBaseEach.js | 31 - .../lodash/internal/createBaseFor.js | 27 - .../lodash/internal/createBindWrapper.js | 22 - .../lodash/internal/createCache.js | 21 - .../lodash/internal/createCompounder.js | 26 - .../lodash/internal/createCtorWrapper.js | 37 - .../lodash/internal/createCurry.js | 23 - .../lodash/internal/createDefaults.js | 22 - .../lodash/internal/createExtremum.js | 33 - .../lodash/internal/createFind.js | 25 - .../lodash/internal/createFindIndex.js | 21 - .../lodash/internal/createFindKey.js | 18 - .../lodash/internal/createFlow.js | 74 - .../lodash/internal/createForEach.js | 20 - .../lodash/internal/createForIn.js | 20 - .../lodash/internal/createForOwn.js | 19 - .../lodash/internal/createHybridWrapper.js | 111 - .../lodash/internal/createObjectMapper.js | 26 - .../lodash/internal/createPadDir.js | 18 - .../lodash/internal/createPadding.js | 29 - .../lodash/internal/createPartial.js | 20 - .../lodash/internal/createPartialWrapper.js | 43 - .../lodash/internal/createReduce.js | 22 - .../lodash/internal/createRound.js | 23 - .../lodash/internal/createSortedIndex.js | 20 - .../lodash/internal/createWrapper.js | 86 - .../lodash/internal/deburrLetter.js | 33 - .../lodash/internal/equalArrays.js | 51 - .../lodash/internal/equalByTag.js | 48 - .../lodash/internal/equalObjects.js | 67 - .../lodash/internal/escapeHtmlChar.js | 22 - .../lodash/internal/escapeRegExpChar.js | 38 - .../lodash/internal/escapeStringChar.js | 22 - .../node_modules/lodash/internal/getData.js | 15 - .../lodash/internal/getFuncName.js | 25 - .../node_modules/lodash/internal/getLength.js | 15 - .../lodash/internal/getMatchData.js | 21 - .../node_modules/lodash/internal/getNative.js | 16 - .../node_modules/lodash/internal/getView.js | 33 - .../lodash/internal/indexOfNaN.js | 23 - .../lodash/internal/initCloneArray.js | 26 - .../lodash/internal/initCloneByTag.js | 63 - .../lodash/internal/initCloneObject.js | 16 - .../lodash/internal/invokePath.js | 26 - .../lodash/internal/isArrayLike.js | 15 - .../node_modules/lodash/internal/isIndex.js | 24 - .../lodash/internal/isIterateeCall.js | 28 - .../node_modules/lodash/internal/isKey.js | 28 - .../lodash/internal/isLaziable.js | 27 - .../node_modules/lodash/internal/isLength.js | 20 - .../lodash/internal/isObjectLike.js | 12 - .../node_modules/lodash/internal/isSpace.js | 14 - .../lodash/internal/isStrictComparable.js | 15 - .../node_modules/lodash/internal/lazyClone.js | 23 - .../lodash/internal/lazyReverse.js | 23 - .../node_modules/lodash/internal/lazyValue.js | 72 - .../node_modules/lodash/internal/mapDelete.js | 14 - .../node_modules/lodash/internal/mapGet.js | 14 - .../node_modules/lodash/internal/mapHas.js | 20 - .../node_modules/lodash/internal/mapSet.js | 18 - .../node_modules/lodash/internal/mergeData.js | 89 - .../lodash/internal/mergeDefaults.js | 15 - .../node_modules/lodash/internal/metaMap.js | 9 - .../lodash/internal/pickByArray.js | 28 - .../lodash/internal/pickByCallback.js | 22 - .../node_modules/lodash/internal/reEscape.js | 4 - .../lodash/internal/reEvaluate.js | 4 - .../lodash/internal/reInterpolate.js | 4 - .../node_modules/lodash/internal/realNames.js | 4 - .../node_modules/lodash/internal/reorder.js | 29 - .../lodash/internal/replaceHolders.js | 28 - .../node_modules/lodash/internal/setData.js | 41 - .../node_modules/lodash/internal/shimKeys.js | 41 - .../lodash/internal/sortedUniq.js | 29 - .../lodash/internal/toIterable.js | 22 - .../node_modules/lodash/internal/toObject.js | 14 - .../node_modules/lodash/internal/toPath.js | 28 - .../lodash/internal/trimmedLeftIndex.js | 19 - .../lodash/internal/trimmedRightIndex.js | 18 - .../lodash/internal/unescapeHtmlChar.js | 22 - .../lodash/internal/wrapperClone.js | 18 - .../argparse/node_modules/lodash/lang.js | 32 - .../node_modules/lodash/lang/clone.js | 70 - .../node_modules/lodash/lang/cloneDeep.js | 55 - .../argparse/node_modules/lodash/lang/eq.js | 1 - .../argparse/node_modules/lodash/lang/gt.js | 25 - .../argparse/node_modules/lodash/lang/gte.js | 25 - .../node_modules/lodash/lang/isArguments.js | 34 - .../node_modules/lodash/lang/isArray.js | 40 - .../node_modules/lodash/lang/isBoolean.js | 35 - .../node_modules/lodash/lang/isDate.js | 35 - .../node_modules/lodash/lang/isElement.js | 24 - .../node_modules/lodash/lang/isEmpty.js | 47 - .../node_modules/lodash/lang/isEqual.js | 54 - .../node_modules/lodash/lang/isError.js | 36 - .../node_modules/lodash/lang/isFinite.js | 35 - .../node_modules/lodash/lang/isFunction.js | 38 - .../node_modules/lodash/lang/isMatch.js | 49 - .../node_modules/lodash/lang/isNaN.js | 34 - .../node_modules/lodash/lang/isNative.js | 48 - .../node_modules/lodash/lang/isNull.js | 21 - .../node_modules/lodash/lang/isNumber.js | 41 - .../node_modules/lodash/lang/isObject.js | 28 - .../node_modules/lodash/lang/isPlainObject.js | 71 - .../node_modules/lodash/lang/isRegExp.js | 35 - .../node_modules/lodash/lang/isString.js | 35 - .../node_modules/lodash/lang/isTypedArray.js | 74 - .../node_modules/lodash/lang/isUndefined.js | 21 - .../argparse/node_modules/lodash/lang/lt.js | 25 - .../argparse/node_modules/lodash/lang/lte.js | 25 - .../node_modules/lodash/lang/toArray.js | 32 - .../node_modules/lodash/lang/toPlainObject.js | 31 - .../argparse/node_modules/lodash/math.js | 9 - .../argparse/node_modules/lodash/math/add.js | 19 - .../argparse/node_modules/lodash/math/ceil.js | 25 - .../node_modules/lodash/math/floor.js | 25 - .../argparse/node_modules/lodash/math/max.js | 56 - .../argparse/node_modules/lodash/math/min.js | 56 - .../node_modules/lodash/math/round.js | 25 - .../argparse/node_modules/lodash/math/sum.js | 50 - .../argparse/node_modules/lodash/number.js | 4 - .../node_modules/lodash/number/inRange.js | 47 - .../node_modules/lodash/number/random.js | 70 - .../argparse/node_modules/lodash/object.js | 31 - .../node_modules/lodash/object/assign.js | 43 - .../node_modules/lodash/object/create.js | 47 - .../node_modules/lodash/object/defaults.js | 25 - .../lodash/object/defaultsDeep.js | 25 - .../node_modules/lodash/object/extend.js | 1 - .../node_modules/lodash/object/findKey.js | 54 - .../node_modules/lodash/object/findLastKey.js | 54 - .../node_modules/lodash/object/forIn.js | 33 - .../node_modules/lodash/object/forInRight.js | 31 - .../node_modules/lodash/object/forOwn.js | 33 - .../node_modules/lodash/object/forOwnRight.js | 31 - .../node_modules/lodash/object/functions.js | 23 - .../node_modules/lodash/object/get.js | 33 - .../node_modules/lodash/object/has.js | 57 - .../node_modules/lodash/object/invert.js | 60 - .../node_modules/lodash/object/keys.js | 45 - .../node_modules/lodash/object/keysIn.js | 64 - .../node_modules/lodash/object/mapKeys.js | 25 - .../node_modules/lodash/object/mapValues.js | 46 - .../node_modules/lodash/object/merge.js | 54 - .../node_modules/lodash/object/methods.js | 1 - .../node_modules/lodash/object/omit.js | 47 - .../node_modules/lodash/object/pairs.js | 33 - .../node_modules/lodash/object/pick.js | 42 - .../node_modules/lodash/object/result.js | 49 - .../node_modules/lodash/object/set.js | 55 - .../node_modules/lodash/object/transform.js | 61 - .../node_modules/lodash/object/values.js | 33 - .../node_modules/lodash/object/valuesIn.js | 31 - .../argparse/node_modules/lodash/package.json | 94 - .../argparse/node_modules/lodash/string.js | 25 - .../node_modules/lodash/string/camelCase.js | 27 - .../node_modules/lodash/string/capitalize.js | 21 - .../node_modules/lodash/string/deburr.js | 29 - .../node_modules/lodash/string/endsWith.js | 40 - .../node_modules/lodash/string/escape.js | 48 - .../lodash/string/escapeRegExp.js | 32 - .../node_modules/lodash/string/kebabCase.js | 26 - .../node_modules/lodash/string/pad.js | 47 - .../node_modules/lodash/string/padLeft.js | 27 - .../node_modules/lodash/string/padRight.js | 27 - .../node_modules/lodash/string/parseInt.js | 46 - .../node_modules/lodash/string/repeat.js | 47 - .../node_modules/lodash/string/snakeCase.js | 26 - .../node_modules/lodash/string/startCase.js | 26 - .../node_modules/lodash/string/startsWith.js | 36 - .../node_modules/lodash/string/template.js | 226 - .../lodash/string/templateSettings.js | 67 - .../node_modules/lodash/string/trim.js | 42 - .../node_modules/lodash/string/trimLeft.js | 36 - .../node_modules/lodash/string/trimRight.js | 36 - .../node_modules/lodash/string/trunc.js | 105 - .../node_modules/lodash/string/unescape.js | 33 - .../node_modules/lodash/string/words.js | 38 - .../argparse/node_modules/lodash/support.js | 10 - .../argparse/node_modules/lodash/utility.js | 18 - .../node_modules/lodash/utility/attempt.js | 32 - .../node_modules/lodash/utility/callback.js | 53 - .../node_modules/lodash/utility/constant.js | 23 - .../node_modules/lodash/utility/identity.js | 20 - .../node_modules/lodash/utility/iteratee.js | 1 - .../node_modules/lodash/utility/matches.js | 33 - .../lodash/utility/matchesProperty.js | 32 - .../node_modules/lodash/utility/method.js | 33 - .../node_modules/lodash/utility/methodOf.js | 32 - .../node_modules/lodash/utility/mixin.js | 82 - .../node_modules/lodash/utility/noop.js | 19 - .../node_modules/lodash/utility/property.js | 31 - .../node_modules/lodash/utility/propertyOf.js | 30 - .../node_modules/lodash/utility/range.js | 66 - .../node_modules/lodash/utility/times.js | 60 - .../node_modules/lodash/utility/uniqueId.js | 27 - .../node_modules/sprintf-js/.npmignore | 1 - .../argparse/node_modules/sprintf-js/LICENSE | 24 - .../node_modules/sprintf-js/README.md | 88 - .../node_modules/sprintf-js/bower.json | 14 - .../node_modules/sprintf-js/demo/angular.html | 20 - .../sprintf-js/dist/angular-sprintf.min.js | 4 - .../dist/angular-sprintf.min.js.map | 1 - .../sprintf-js/dist/angular-sprintf.min.map | 1 - .../sprintf-js/dist/sprintf.min.js | 4 - .../sprintf-js/dist/sprintf.min.js.map | 1 - .../sprintf-js/dist/sprintf.min.map | 1 - .../node_modules/sprintf-js/gruntfile.js | 36 - .../node_modules/sprintf-js/package.json | 52 - .../sprintf-js/src/angular-sprintf.js | 18 - .../node_modules/sprintf-js/src/sprintf.js | 208 - .../node_modules/sprintf-js/test/test.js | 82 - .../node_modules/argparse/package.json | 62 - .../node_modules/linkify-it/CHANGELOG.md | 41 - .../node_modules/linkify-it/LICENSE | 22 - .../node_modules/linkify-it/README.md | 170 - .../node_modules/linkify-it/index.js | 564 - .../node_modules/linkify-it/lib/re.js | 143 - .../node_modules/uc.micro/.npmignore | 5 - .../node_modules/uc.micro/CHANGELOG.md | 10 - .../linkify-it/node_modules/uc.micro/Makefile | 44 - .../node_modules/uc.micro/README.md | 16 - .../uc.micro/categories/Cc/regex.js | 1 - .../uc.micro/categories/Cf/regex.js | 1 - .../uc.micro/categories/P/regex.js | 1 - .../uc.micro/categories/Z/regex.js | 1 - .../linkify-it/node_modules/uc.micro/index.js | 6 - .../node_modules/uc.micro/package.json | 44 - .../uc.micro/properties/Any/regex.js | 1 - .../node_modules/linkify-it/package.json | 65 - .../node_modules/mdurl/CHANGELOG.md | 16 - .../markdown-it/node_modules/mdurl/LICENSE | 45 - .../markdown-it/node_modules/mdurl/README.md | 102 - .../markdown-it/node_modules/mdurl/decode.js | 122 - .../markdown-it/node_modules/mdurl/encode.js | 98 - .../markdown-it/node_modules/mdurl/format.js | 25 - .../markdown-it/node_modules/mdurl/index.js | 7 - .../node_modules/mdurl/package.json | 46 - .../markdown-it/node_modules/mdurl/parse.js | 312 - .../node_modules/uc.micro/.npmignore | 5 - .../node_modules/uc.micro/Makefile | 44 - .../node_modules/uc.micro/README.md | 16 - .../uc.micro/categories/Cc/regex.js | 1 - .../uc.micro/categories/Cf/regex.js | 1 - .../uc.micro/categories/P/regex.js | 1 - .../uc.micro/categories/Z/regex.js | 1 - .../node_modules/uc.micro/index.js | 2 - .../node_modules/uc.micro/package.json | 44 - .../uc.micro/properties/Any/regex.js | 1 - .../node_modules/markdown-it/package.json | 83 - .../node_modules/send/.npmignore | 4 - .../node_modules/send/History.md | 40 - .../node_modules/send/Makefile | 8 - .../node_modules/send/Readme.md | 128 - .../node_modules/send/index.js | 2 - .../node_modules/send/lib/send.js | 474 - .../node_modules/send/lib/utils.js | 47 - .../send/node_modules/debug/.jshintrc | 3 - .../send/node_modules/debug/.npmignore | 6 - .../send/node_modules/debug/History.md | 195 - .../send/node_modules/debug/Makefile | 36 - .../send/node_modules/debug/Readme.md | 188 - .../send/node_modules/debug/bower.json | 28 - .../send/node_modules/debug/browser.js | 168 - .../send/node_modules/debug/component.json | 19 - .../send/node_modules/debug/debug.js | 197 - .../send/node_modules/debug/node.js | 209 - .../debug/node_modules/ms/.npmignore | 5 - .../debug/node_modules/ms/History.md | 66 - .../debug/node_modules/ms/LICENSE | 20 - .../debug/node_modules/ms/README.md | 35 - .../debug/node_modules/ms/index.js | 125 - .../debug/node_modules/ms/package.json | 48 - .../send/node_modules/debug/package.json | 73 - .../send/node_modules/fresh/.npmignore | 1 - .../send/node_modules/fresh/History.md | 5 - .../send/node_modules/fresh/Makefile | 7 - .../send/node_modules/fresh/Readme.md | 57 - .../send/node_modules/fresh/index.js | 53 - .../send/node_modules/fresh/package.json | 45 - .../send/node_modules/mime/LICENSE | 19 - .../send/node_modules/mime/README.md | 66 - .../send/node_modules/mime/mime.js | 114 - .../send/node_modules/mime/package.json | 57 - .../send/node_modules/mime/test.js | 84 - .../send/node_modules/mime/types/mime.types | 1588 - .../send/node_modules/mime/types/node.types | 77 - .../send/node_modules/range-parser/.npmignore | 1 - .../send/node_modules/range-parser/History.md | 15 - .../send/node_modules/range-parser/Makefile | 7 - .../send/node_modules/range-parser/Readme.md | 28 - .../send/node_modules/range-parser/index.js | 49 - .../node_modules/range-parser/package.json | 44 - .../node_modules/send/package.json | 59 - .../node_modules/socket.io/.npmignore | 3 - .../node_modules/socket.io/.travis.yml | 6 - .../node_modules/socket.io/History.md | 332 - .../node_modules/socket.io/LICENSE | 22 - .../node_modules/socket.io/Makefile | 31 - .../node_modules/socket.io/Readme.md | 364 - .../socket.io/benchmarks/decode.bench.js | 64 - .../socket.io/benchmarks/encode.bench.js | 90 - .../socket.io/benchmarks/runner.js | 55 - .../node_modules/socket.io/index.js | 8 - .../node_modules/socket.io/latest | 2 - .../node_modules/socket.io/lib/logger.js | 97 - .../node_modules/socket.io/lib/manager.js | 1042 - .../node_modules/socket.io/lib/namespace.js | 355 - .../node_modules/socket.io/lib/parser.js | 249 - .../node_modules/socket.io/lib/socket.io.js | 143 - .../node_modules/socket.io/lib/socket.js | 369 - .../node_modules/socket.io/lib/static.js | 395 - .../node_modules/socket.io/lib/store.js | 98 - .../socket.io/lib/stores/memory.js | 143 - .../socket.io/lib/stores/redis.js | 269 - .../node_modules/socket.io/lib/transport.js | 516 - .../socket.io/lib/transports/flashsocket.js | 129 - .../socket.io/lib/transports/htmlfile.js | 83 - .../socket.io/lib/transports/http-polling.js | 147 - .../socket.io/lib/transports/http.js | 122 - .../socket.io/lib/transports/index.js | 12 - .../socket.io/lib/transports/jsonp-polling.js | 97 - .../socket.io/lib/transports/websocket.js | 36 - .../lib/transports/websocket/default.js | 376 - .../lib/transports/websocket/hybi-07-12.js | 642 - .../lib/transports/websocket/hybi-16.js | 642 - .../lib/transports/websocket/index.js | 11 - .../socket.io/lib/transports/xhr-polling.js | 69 - .../node_modules/socket.io/lib/util.js | 50 - .../node_modules/base64id/.npmignore | 3 - .../socket.io/node_modules/base64id/README.md | 18 - .../node_modules/base64id/lib/base64id.js | 103 - .../node_modules/base64id/package.json | 48 - .../node_modules/policyfile/.npmignore | 1 - .../socket.io/node_modules/policyfile/LICENSE | 19 - .../node_modules/policyfile/Makefile | 7 - .../node_modules/policyfile/README.md | 98 - .../node_modules/policyfile/doc/index.html | 375 - .../policyfile/examples/basic.fallback.js | 8 - .../node_modules/policyfile/examples/basic.js | 5 - .../node_modules/policyfile/index.js | 1 - .../node_modules/policyfile/lib/server.js | 289 - .../node_modules/policyfile/package.json | 67 - .../node_modules/policyfile/tests/ssl/ssl.crt | 21 - .../policyfile/tests/ssl/ssl.private.key | 27 - .../policyfile/tests/unit.test.js | 231 - .../socket.io/node_modules/redis/.npmignore | 1 - .../socket.io/node_modules/redis/README.md | 691 - .../redis/benches/buffer_bench.js | 89 - .../redis/benches/hiredis_parser.js | 38 - .../node_modules/redis/benches/re_sub_test.js | 14 - .../redis/benches/reconnect_test.js | 29 - .../redis/benches/stress/codec.js | 16 - .../redis/benches/stress/pubsub/pub.js | 38 - .../redis/benches/stress/pubsub/run | 10 - .../redis/benches/stress/pubsub/server.js | 23 - .../redis/benches/stress/rpushblpop/pub.js | 49 - .../redis/benches/stress/rpushblpop/run | 6 - .../redis/benches/stress/rpushblpop/server.js | 30 - .../redis/benches/stress/speed/00 | 13 - .../redis/benches/stress/speed/plot | 13 - .../redis/benches/stress/speed/size-rate.png | Bin 6672 -> 0 bytes .../redis/benches/stress/speed/speed.js | 84 - .../redis/benches/sub_quit_test.js | 18 - .../socket.io/node_modules/redis/changelog.md | 219 - .../redis/diff_multi_bench_output.js | 87 - .../node_modules/redis/examples/auth.js | 5 - .../redis/examples/backpressure_drain.js | 33 - .../node_modules/redis/examples/eval.js | 9 - .../node_modules/redis/examples/extend.js | 24 - .../node_modules/redis/examples/file.js | 32 - .../node_modules/redis/examples/mget.js | 5 - .../node_modules/redis/examples/monitor.js | 10 - .../node_modules/redis/examples/multi.js | 46 - .../node_modules/redis/examples/multi2.js | 29 - .../node_modules/redis/examples/psubscribe.js | 33 - .../node_modules/redis/examples/pub_sub.js | 41 - .../node_modules/redis/examples/simple.js | 24 - .../node_modules/redis/examples/sort.js | 17 - .../node_modules/redis/examples/subqueries.js | 15 - .../node_modules/redis/examples/subquery.js | 19 - .../redis/examples/unix_socket.js | 29 - .../node_modules/redis/examples/web_server.js | 31 - .../node_modules/redis/generate_commands.js | 39 - .../socket.io/node_modules/redis/index.js | 1113 - .../node_modules/redis/lib/commands.js | 147 - .../node_modules/redis/lib/parser/hiredis.js | 46 - .../redis/lib/parser/javascript.js | 317 - .../socket.io/node_modules/redis/lib/queue.js | 61 - .../node_modules/redis/lib/to_array.js | 12 - .../socket.io/node_modules/redis/lib/util.js | 11 - .../socket.io/node_modules/redis/mem.js | 11 - .../node_modules/redis/multi_bench.js | 225 - .../socket.io/node_modules/redis/package.json | 48 - .../socket.io/node_modules/redis/test.js | 1618 - .../node_modules/socket.io-client/.npmignore | 2 - .../node_modules/socket.io-client/History.md | 237 - .../node_modules/socket.io-client/Makefile | 20 - .../node_modules/socket.io-client/README.md | 246 - .../socket.io-client/bin/builder.js | 303 - .../components/component-bind/component.json | 14 - .../components/component-bind/index.js | 24 - .../component-emitter/component.json | 13 - .../components/component-emitter/index.js | 147 - .../component-json-fallback/component.json | 15 - .../component-json-fallback/index.js | 486 - .../components/component-json/component.json | 17 - .../components/component-json/index.js | 4 - .../component.json | 24 - .../lib/emitter.js | 52 - .../learnboost-engine.io-client/lib/index.js | 2 - .../learnboost-engine.io-client/lib/parser.js | 163 - .../learnboost-engine.io-client/lib/socket.js | 492 - .../lib/transport.js | 141 - .../lib/transports/flashsocket.js | 254 - .../lib/transports/index.js | 62 - .../lib/transports/polling-jsonp.js | 221 - .../lib/transports/polling-xhr.js | 288 - .../lib/transports/polling.js | 210 - .../lib/transports/websocket.js | 158 - .../learnboost-engine.io-client/lib/util.js | 265 - .../component.json | 12 - .../learnboost-socket.io-protocol/index.js | 177 - .../timoxley-to-array/component.json | 16 - .../components/timoxley-to-array/index.js | 27 - .../visionmedia-debug/component.json | 16 - .../components/visionmedia-debug/debug.js | 122 - .../components/visionmedia-debug/index.js | 5 - .../socket.io-client/dist/WebSocketMain.swf | Bin 175830 -> 0 bytes .../dist/WebSocketMainInsecure.swf | Bin 175953 -> 0 bytes .../socket.io-client/dist/socket.io.js | 3873 - .../socket.io-client/dist/socket.io.min.js | 2 - .../socket.io-client/lib/events.js | 182 - .../node_modules/socket.io-client/lib/io.js | 206 - .../node_modules/socket.io-client/lib/json.js | 322 - .../socket.io-client/lib/namespace.js | 242 - .../socket.io-client/lib/parser.js | 262 - .../socket.io-client/lib/socket.js | 579 - .../socket.io-client/lib/transport.js | 256 - .../lib/transports/flashsocket.js | 191 - .../lib/transports/htmlfile.js | 173 - .../lib/transports/jsonp-polling.js | 256 - .../lib/transports/websocket.js | 197 - .../lib/transports/xhr-polling.js | 177 - .../socket.io-client/lib/transports/xhr.js | 217 - .../node_modules/socket.io-client/lib/util.js | 365 - .../lib/vendor/web-socket-js/.npmignore | 1 - .../lib/vendor/web-socket-js/README.md | 157 - .../vendor/web-socket-js/WebSocketMain.swf | Bin 175830 -> 0 bytes .../web-socket-js/WebSocketMainInsecure.zip | 3 - .../flash-src/IWebSocketLogger.as | 8 - .../web-socket-js/flash-src/WebSocket.as | 464 - .../web-socket-js/flash-src/WebSocketEvent.as | 33 - .../web-socket-js/flash-src/WebSocketMain.as | 150 - .../flash-src/WebSocketMainInsecure.as | 19 - .../vendor/web-socket-js/flash-src/build.sh | 10 - .../com/adobe/net/proxies/RFC2817Socket.as | 204 - .../flash-src/com/gsolo/encryption/MD5.as | 375 - .../flash-src/com/hurlant/crypto/Crypto.as | 287 - .../crypto/cert/MozillaRootCertificates.as | 3235 - .../hurlant/crypto/cert/X509Certificate.as | 218 - .../crypto/cert/X509CertificateCollection.as | 57 - .../flash-src/com/hurlant/crypto/hash/HMAC.as | 82 - .../com/hurlant/crypto/hash/IHMAC.as | 27 - .../com/hurlant/crypto/hash/IHash.as | 21 - .../flash-src/com/hurlant/crypto/hash/MAC.as | 137 - .../flash-src/com/hurlant/crypto/hash/MD2.as | 124 - .../flash-src/com/hurlant/crypto/hash/MD5.as | 204 - .../flash-src/com/hurlant/crypto/hash/SHA1.as | 106 - .../com/hurlant/crypto/hash/SHA224.as | 28 - .../com/hurlant/crypto/hash/SHA256.as | 115 - .../com/hurlant/crypto/hash/SHABase.as | 71 - .../flash-src/com/hurlant/crypto/prng/ARC4.as | 90 - .../com/hurlant/crypto/prng/IPRNG.as | 20 - .../com/hurlant/crypto/prng/Random.as | 119 - .../com/hurlant/crypto/prng/TLSPRF.as | 142 - .../com/hurlant/crypto/rsa/RSAKey.as | 339 - .../com/hurlant/crypto/symmetric/AESKey.as | 2797 - .../hurlant/crypto/symmetric/BlowFishKey.as | 375 - .../com/hurlant/crypto/symmetric/CBCMode.as | 55 - .../com/hurlant/crypto/symmetric/CFB8Mode.as | 61 - .../com/hurlant/crypto/symmetric/CFBMode.as | 64 - .../com/hurlant/crypto/symmetric/CTRMode.as | 58 - .../com/hurlant/crypto/symmetric/DESKey.as | 365 - .../com/hurlant/crypto/symmetric/ECBMode.as | 86 - .../com/hurlant/crypto/symmetric/ICipher.as | 21 - .../com/hurlant/crypto/symmetric/IMode.as | 15 - .../com/hurlant/crypto/symmetric/IPad.as | 32 - .../hurlant/crypto/symmetric/IStreamCipher.as | 21 - .../hurlant/crypto/symmetric/ISymmetricKey.as | 35 - .../com/hurlant/crypto/symmetric/IVMode.as | 110 - .../com/hurlant/crypto/symmetric/NullPad.as | 34 - .../com/hurlant/crypto/symmetric/OFBMode.as | 52 - .../com/hurlant/crypto/symmetric/PKCS5.as | 44 - .../com/hurlant/crypto/symmetric/SSLPad.as | 44 - .../hurlant/crypto/symmetric/SimpleIVMode.as | 60 - .../com/hurlant/crypto/symmetric/TLSPad.as | 42 - .../hurlant/crypto/symmetric/TripleDESKey.as | 88 - .../com/hurlant/crypto/symmetric/XTeaKey.as | 94 - .../com/hurlant/crypto/symmetric/aeskey.pl | 29 - .../com/hurlant/crypto/symmetric/dump.txt | 2304 - .../com/hurlant/crypto/tests/AESKeyTest.as | 1220 - .../com/hurlant/crypto/tests/ARC4Test.as | 58 - .../hurlant/crypto/tests/BigIntegerTest.as | 39 - .../hurlant/crypto/tests/BlowFishKeyTest.as | 148 - .../com/hurlant/crypto/tests/CBCModeTest.as | 160 - .../com/hurlant/crypto/tests/CFB8ModeTest.as | 71 - .../com/hurlant/crypto/tests/CFBModeTest.as | 98 - .../com/hurlant/crypto/tests/CTRModeTest.as | 109 - .../com/hurlant/crypto/tests/DESKeyTest.as | 112 - .../com/hurlant/crypto/tests/ECBModeTest.as | 151 - .../com/hurlant/crypto/tests/HMACTest.as | 184 - .../com/hurlant/crypto/tests/ITestHarness.as | 20 - .../com/hurlant/crypto/tests/MD2Test.as | 56 - .../com/hurlant/crypto/tests/MD5Test.as | 58 - .../com/hurlant/crypto/tests/OFBModeTest.as | 101 - .../com/hurlant/crypto/tests/RSAKeyTest.as | 92 - .../com/hurlant/crypto/tests/SHA1Test.as | 198 - .../com/hurlant/crypto/tests/SHA224Test.as | 58 - .../com/hurlant/crypto/tests/SHA256Test.as | 60 - .../com/hurlant/crypto/tests/TLSPRFTest.as | 51 - .../com/hurlant/crypto/tests/TestCase.as | 42 - .../hurlant/crypto/tests/TripleDESKeyTest.as | 59 - .../com/hurlant/crypto/tests/XTeaKeyTest.as | 66 - .../com/hurlant/crypto/tls/BulkCiphers.as | 102 - .../com/hurlant/crypto/tls/CipherSuites.as | 117 - .../hurlant/crypto/tls/IConnectionState.as | 14 - .../hurlant/crypto/tls/ISecurityParameters.as | 29 - .../com/hurlant/crypto/tls/KeyExchanges.as | 24 - .../flash-src/com/hurlant/crypto/tls/MACs.as | 38 - .../hurlant/crypto/tls/SSLConnectionState.as | 171 - .../com/hurlant/crypto/tls/SSLEvent.as | 26 - .../crypto/tls/SSLSecurityParameters.as | 340 - .../com/hurlant/crypto/tls/TLSConfig.as | 70 - .../hurlant/crypto/tls/TLSConnectionState.as | 151 - .../com/hurlant/crypto/tls/TLSEngine.as | 895 - .../com/hurlant/crypto/tls/TLSError.as | 39 - .../com/hurlant/crypto/tls/TLSEvent.as | 27 - .../crypto/tls/TLSSecurityParameters.as | 197 - .../com/hurlant/crypto/tls/TLSSocket.as | 370 - .../com/hurlant/crypto/tls/TLSSocketEvent.as | 26 - .../com/hurlant/crypto/tls/TLSTest.as | 180 - .../com/hurlant/math/BarrettReduction.as | 90 - .../flash-src/com/hurlant/math/BigInteger.as | 1543 - .../com/hurlant/math/ClassicReduction.as | 35 - .../flash-src/com/hurlant/math/IReduction.as | 11 - .../com/hurlant/math/MontgomeryReduction.as | 85 - .../com/hurlant/math/NullReduction.as | 34 - .../flash-src/com/hurlant/math/bi_internal.as | 11 - .../flash-src/com/hurlant/util/ArrayUtil.as | 25 - .../flash-src/com/hurlant/util/Base64.as | 189 - .../flash-src/com/hurlant/util/Hex.as | 66 - .../flash-src/com/hurlant/util/Memory.as | 28 - .../com/hurlant/util/der/ByteString.as | 43 - .../flash-src/com/hurlant/util/der/DER.as | 210 - .../com/hurlant/util/der/IAsn1Type.as | 21 - .../flash-src/com/hurlant/util/der/Integer.as | 44 - .../flash-src/com/hurlant/util/der/OID.as | 35 - .../com/hurlant/util/der/ObjectIdentifier.as | 112 - .../flash-src/com/hurlant/util/der/PEM.as | 118 - .../com/hurlant/util/der/PrintableString.as | 49 - .../com/hurlant/util/der/Sequence.as | 90 - .../flash-src/com/hurlant/util/der/Set.as | 27 - .../flash-src/com/hurlant/util/der/Type.as | 94 - .../flash-src/com/hurlant/util/der/UTCTime.as | 60 - .../lib/vendor/web-socket-js/sample.html | 75 - .../lib/vendor/web-socket-js/swfobject.js | 6 - .../lib/vendor/web-socket-js/web_socket.js | 349 - .../node_modules/.bin/uglifyjs | 323 - .../socket.io-client/node_modules/.bin/wscat | 222 - .../active-x-obfuscator/..gitignore.un~ | Bin 1811 -> 0 bytes .../active-x-obfuscator/.Readme.md.un~ | Bin 1508 -> 0 bytes .../active-x-obfuscator/.index.js.un~ | Bin 220177 -> 0 bytes .../active-x-obfuscator/.npmignore | 2 - .../active-x-obfuscator/.package.json.un~ | Bin 1015 -> 0 bytes .../active-x-obfuscator/.test.js.un~ | Bin 76173 -> 0 bytes .../active-x-obfuscator/Readme.md | 33 - .../node_modules/active-x-obfuscator/index.js | 83 - .../node_modules/zeparser/.npmignore | 1 - .../node_modules/zeparser/LICENSE | 19 - .../node_modules/zeparser/README | 37 - .../node_modules/zeparser/Tokenizer.js | 646 - .../node_modules/zeparser/ZeParser.js | 2180 - .../node_modules/zeparser/benchmark.html | 111608 --------------- .../node_modules/zeparser/index.js | 1 - .../node_modules/zeparser/package.json | 51 - .../node_modules/zeparser/test-parser.html | 26 - .../node_modules/zeparser/test-tokenizer.html | 23 - .../node_modules/zeparser/tests.js | 478 - .../zeparser/unicodecategories.js | 49 - .../active-x-obfuscator/package.json | 54 - .../node_modules/active-x-obfuscator/test.js | 53 - .../node_modules/uglify-js/.npmignore | 4 - .../node_modules/uglify-js/README.html | 981 - .../node_modules/uglify-js/README.org | 574 - .../node_modules/uglify-js/bin/uglifyjs | 323 - .../node_modules/uglify-js/docstyle.css | 75 - .../node_modules/uglify-js/lib/object-ast.js | 75 - .../node_modules/uglify-js/lib/parse-js.js | 1342 - .../node_modules/uglify-js/lib/process.js | 2011 - .../uglify-js/lib/squeeze-more.js | 69 - .../node_modules/uglify-js/package.json | 59 - .../node_modules/uglify-js/package.json~ | 24 - .../node_modules/uglify-js/test/beautify.js | 28 - .../node_modules/uglify-js/test/testparser.js | 403 - .../test/unit/compress/expected/array1.js | 1 - .../test/unit/compress/expected/array2.js | 1 - .../test/unit/compress/expected/array3.js | 1 - .../test/unit/compress/expected/array4.js | 1 - .../test/unit/compress/expected/assignment.js | 1 - .../unit/compress/expected/concatstring.js | 1 - .../test/unit/compress/expected/const.js | 1 - .../unit/compress/expected/empty-blocks.js | 1 - .../unit/compress/expected/forstatement.js | 1 - .../test/unit/compress/expected/if.js | 1 - .../test/unit/compress/expected/ifreturn.js | 1 - .../test/unit/compress/expected/ifreturn2.js | 1 - .../test/unit/compress/expected/issue10.js | 1 - .../test/unit/compress/expected/issue11.js | 1 - .../test/unit/compress/expected/issue13.js | 1 - .../test/unit/compress/expected/issue14.js | 1 - .../test/unit/compress/expected/issue16.js | 1 - .../test/unit/compress/expected/issue17.js | 1 - .../test/unit/compress/expected/issue20.js | 1 - .../test/unit/compress/expected/issue21.js | 1 - .../test/unit/compress/expected/issue25.js | 1 - .../test/unit/compress/expected/issue27.js | 1 - .../test/unit/compress/expected/issue278.js | 1 - .../test/unit/compress/expected/issue28.js | 1 - .../test/unit/compress/expected/issue29.js | 1 - .../test/unit/compress/expected/issue30.js | 1 - .../test/unit/compress/expected/issue34.js | 1 - .../test/unit/compress/expected/issue4.js | 1 - .../test/unit/compress/expected/issue48.js | 1 - .../test/unit/compress/expected/issue50.js | 1 - .../test/unit/compress/expected/issue53.js | 1 - .../test/unit/compress/expected/issue54.1.js | 1 - .../test/unit/compress/expected/issue68.js | 1 - .../test/unit/compress/expected/issue69.js | 1 - .../test/unit/compress/expected/issue9.js | 1 - .../test/unit/compress/expected/mangle.js | 1 - .../unit/compress/expected/null_string.js | 1 - .../unit/compress/expected/strict-equals.js | 1 - .../test/unit/compress/expected/var.js | 1 - .../test/unit/compress/expected/whitespace.js | 1 - .../test/unit/compress/expected/with.js | 1 - .../test/unit/compress/test/array1.js | 3 - .../test/unit/compress/test/array2.js | 4 - .../test/unit/compress/test/array3.js | 4 - .../test/unit/compress/test/array4.js | 6 - .../test/unit/compress/test/assignment.js | 20 - .../test/unit/compress/test/concatstring.js | 3 - .../test/unit/compress/test/const.js | 5 - .../test/unit/compress/test/empty-blocks.js | 4 - .../test/unit/compress/test/forstatement.js | 10 - .../uglify-js/test/unit/compress/test/if.js | 6 - .../test/unit/compress/test/ifreturn.js | 9 - .../test/unit/compress/test/ifreturn2.js | 16 - .../test/unit/compress/test/issue10.js | 1 - .../test/unit/compress/test/issue11.js | 3 - .../test/unit/compress/test/issue13.js | 1 - .../test/unit/compress/test/issue14.js | 1 - .../test/unit/compress/test/issue16.js | 1 - .../test/unit/compress/test/issue17.js | 4 - .../test/unit/compress/test/issue20.js | 1 - .../test/unit/compress/test/issue21.js | 6 - .../test/unit/compress/test/issue25.js | 7 - .../test/unit/compress/test/issue27.js | 1 - .../test/unit/compress/test/issue278.js | 1 - .../test/unit/compress/test/issue28.js | 3 - .../test/unit/compress/test/issue29.js | 1 - .../test/unit/compress/test/issue30.js | 3 - .../test/unit/compress/test/issue34.js | 3 - .../test/unit/compress/test/issue4.js | 3 - .../test/unit/compress/test/issue48.js | 1 - .../test/unit/compress/test/issue50.js | 9 - .../test/unit/compress/test/issue53.js | 1 - .../test/unit/compress/test/issue54.1.js | 3 - .../test/unit/compress/test/issue68.js | 5 - .../test/unit/compress/test/issue69.js | 1 - .../test/unit/compress/test/issue9.js | 4 - .../test/unit/compress/test/mangle.js | 5 - .../test/unit/compress/test/null_string.js | 1 - .../test/unit/compress/test/strict-equals.js | 3 - .../uglify-js/test/unit/compress/test/var.js | 3 - .../test/unit/compress/test/whitespace.js | 21 - .../uglify-js/test/unit/compress/test/with.js | 2 - .../uglify-js/test/unit/scripts.js | 55 - .../node_modules/uglify-js/tmp/269.js | 13 - .../node_modules/uglify-js/tmp/app.js | 22315 --- .../uglify-js/tmp/embed-tokens.js | 15 - .../node_modules/uglify-js/tmp/goto.js | 26 - .../node_modules/uglify-js/tmp/goto2.js | 8 - .../node_modules/uglify-js/tmp/hoist.js | 33 - .../node_modules/uglify-js/tmp/instrument.js | 97 - .../node_modules/uglify-js/tmp/instrument2.js | 138 - .../node_modules/uglify-js/tmp/liftvars.js | 8 - .../node_modules/uglify-js/tmp/test.js | 30 - .../uglify-js/tmp/uglify-hangs.js | 3930 - .../uglify-js/tmp/uglify-hangs2.js | 166 - .../node_modules/uglify-js/uglify-js.js | 17 - .../node_modules/ws/.npmignore | 11 - .../node_modules/ws/.travis.yml | 5 - .../node_modules/ws/History.md | 312 - .../socket.io-client/node_modules/ws/Makefile | 40 - .../node_modules/ws/README.md | 171 - .../node_modules/ws/bin/wscat | 222 - .../node_modules/ws/binding.gyp | 16 - .../node_modules/ws/build/Makefile | 347 - .../bufferutil/src/bufferutil.o.d.raw | 15 - .../node_modules/ws/build/binding.Makefile | 6 - .../ws/build/bufferutil.target.mk | 165 - .../node_modules/ws/build/config.gypi | 138 - .../node_modules/ws/build/gyp-mac-tool | 612 - .../ws/build/validation.target.mk | 165 - .../node_modules/ws/builderror.log | 114 - .../socket.io-client/node_modules/ws/index.js | 26 - .../node_modules/ws/lib/BufferPool.js | 59 - .../ws/lib/BufferUtil.fallback.js | 47 - .../node_modules/ws/lib/BufferUtil.js | 16 - .../node_modules/ws/lib/ErrorCodes.js | 24 - .../node_modules/ws/lib/Receiver.hixie.js | 180 - .../node_modules/ws/lib/Receiver.js | 585 - .../node_modules/ws/lib/Sender.hixie.js | 118 - .../node_modules/ws/lib/Sender.js | 227 - .../ws/lib/Validation.fallback.js | 12 - .../node_modules/ws/lib/Validation.js | 16 - .../node_modules/ws/lib/WebSocket.js | 794 - .../node_modules/ws/lib/WebSocketServer.js | 465 - .../node_modules/ws/lib/browser.js | 43 - .../ws/node_modules/commander/Readme.md | 195 - .../ws/node_modules/commander/index.js | 851 - .../ws/node_modules/commander/package.json | 58 - .../node_modules/ws/node_modules/nan/.dntrc | 36 - .../node_modules/ws/node_modules/nan/LICENSE | 46 - .../ws/node_modules/nan/README.md | 947 - .../ws/node_modules/nan/build/config.gypi | 38 - .../ws/node_modules/nan/include_dirs.js | 1 - .../node_modules/ws/node_modules/nan/nan.h | 1910 - .../ws/node_modules/nan/package.json | 68 - .../ws/node_modules/options/.npmignore | 7 - .../ws/node_modules/options/Makefile | 12 - .../ws/node_modules/options/README.md | 69 - .../ws/node_modules/options/lib/options.js | 86 - .../ws/node_modules/options/package.json | 51 - .../ws/node_modules/tinycolor/.npmignore | 5 - .../ws/node_modules/tinycolor/README.md | 3 - .../ws/node_modules/tinycolor/example.js | 3 - .../ws/node_modules/tinycolor/package.json | 48 - .../ws/node_modules/tinycolor/tinycolor.js | 31 - .../node_modules/ws/package.json | 82 - .../node_modules/ws/src/bufferutil.cc | 117 - .../node_modules/ws/src/validation.cc | 145 - .../node_modules/xmlhttprequest/README.md | 53 - .../xmlhttprequest/autotest.watchr | 8 - .../xmlhttprequest/example/demo.js | 16 - .../xmlhttprequest/lib/XMLHttpRequest.js | 548 - .../node_modules/xmlhttprequest/package.json | 59 - .../xmlhttprequest/tests/test-constants.js | 13 - .../xmlhttprequest/tests/test-events.js | 50 - .../xmlhttprequest/tests/test-exceptions.js | 62 - .../xmlhttprequest/tests/test-headers.js | 61 - .../tests/test-request-methods.js | 62 - .../tests/test-request-protocols.js | 34 - .../xmlhttprequest/tests/testdata.txt | 1 - .../socket.io-client/package.json | 84 - .../socket.io-client/test/events.test.js | 120 - .../socket.io-client/test/io.test.js | 31 - .../test/node/builder.common.js | 102 - .../test/node/builder.test.js | 131 - .../socket.io-client/test/parser.test.js | 360 - .../socket.io-client/test/socket.test.js | 422 - .../socket.io-client/test/util.test.js | 156 - .../socket.io-client/test/worker.js | 20 - .../node_modules/socket.io/package.json | 87 - .../instant-markdown-d/package.json | 45 - .../node_modules/request/.eslintrc | 45 - .../node_modules/request/.npmignore | 6 - .../node_modules/request/.travis.yml | 15 - .../node_modules/request/CHANGELOG.md | 578 - .../node_modules/request/CONTRIBUTING.md | 44 - .../node_modules/request/LICENSE | 55 - .../node_modules/request/README.md | 1094 - .../node_modules/request/index.js | 156 - .../node_modules/request/lib/auth.js | 168 - .../node_modules/request/lib/cookies.js | 39 - .../request/lib/getProxyFromURI.js | 79 - .../node_modules/request/lib/har.js | 214 - .../node_modules/request/lib/helpers.js | 74 - .../node_modules/request/lib/multipart.js | 109 - .../node_modules/request/lib/oauth.js | 147 - .../node_modules/request/lib/querystring.js | 51 - .../node_modules/request/lib/redirect.js | 153 - .../node_modules/request/lib/tunnel.js | 178 - .../request/node_modules/.bin/har-validator | 56 - .../request/node_modules/.bin/uuid | 26 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 212 - .../node_modules/aws-sign2/package.json | 49 - .../request/node_modules/bl/.jshintrc | 59 - .../request/node_modules/bl/.npmignore | 1 - .../request/node_modules/bl/.travis.yml | 14 - .../request/node_modules/bl/LICENSE.md | 13 - .../request/node_modules/bl/README.md | 200 - .../request/node_modules/bl/bl.js | 216 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/.travis.yml | 50 - .../bl/node_modules/readable-stream/.zuul.yml | 1 - .../bl/node_modules/readable-stream/LICENSE | 18 - .../bl/node_modules/readable-stream/README.md | 36 - .../readable-stream/doc/stream.markdown | 1696 - .../doc/wg-meetings/2015-01-30.md | 60 - .../bl/node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 82 - .../lib/_stream_passthrough.js | 27 - .../readable-stream/lib/_stream_readable.js | 973 - .../readable-stream/lib/_stream_transform.js | 197 - .../readable-stream/lib/_stream_writable.js | 527 - .../node_modules/core-util-is/LICENSE | 19 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 - .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 60 - .../node_modules/core-util-is/test.js | 68 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 50 - .../node_modules/inherits/test.js | 25 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/build/build.js | 209 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 53 - .../process-nextick-args/.travis.yml | 7 - .../process-nextick-args/index.js | 13 - .../process-nextick-args/license.md | 19 - .../process-nextick-args/package.json | 45 - .../process-nextick-args/readme.md | 18 - .../node_modules/process-nextick-args/test.js | 24 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 54 - .../node_modules/util-deprecate/History.md | 16 - .../node_modules/util-deprecate/LICENSE | 24 - .../node_modules/util-deprecate/README.md | 53 - .../node_modules/util-deprecate/browser.js | 67 - .../node_modules/util-deprecate/node.js | 6 - .../node_modules/util-deprecate/package.json | 54 - .../node_modules/readable-stream/package.json | 76 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 12 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../request/node_modules/bl/package.json | 62 - .../node_modules/bl/test/basic-test.js | 541 - .../request/node_modules/bl/test/sauce.js | 38 - .../request/node_modules/bl/test/test.js | 9 - .../request/node_modules/caseless/LICENSE | 28 - .../request/node_modules/caseless/README.md | 45 - .../request/node_modules/caseless/index.js | 66 - .../node_modules/caseless/package.json | 62 - .../request/node_modules/caseless/test.js | 40 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Readme.md | 138 - .../combined-stream/lib/combined_stream.js | 188 - .../node_modules/delayed-stream/.npmignore | 1 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 141 - .../delayed-stream/lib/delayed_stream.js | 107 - .../node_modules/delayed-stream/package.json | 64 - .../node_modules/combined-stream/package.json | 67 - .../request/node_modules/extend/.eslintrc | 192 - .../request/node_modules/extend/.jscs.json | 104 - .../request/node_modules/extend/.npmignore | 1 - .../request/node_modules/extend/.travis.yml | 44 - .../request/node_modules/extend/CHANGELOG.md | 69 - .../request/node_modules/extend/LICENSE | 23 - .../request/node_modules/extend/README.md | 62 - .../node_modules/extend/component.json | 32 - .../request/node_modules/extend/index.js | 86 - .../request/node_modules/extend/package.json | 73 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 138 - .../node_modules/forever-agent/package.json | 56 - .../request/node_modules/form-data/License | 19 - .../request/node_modules/form-data/Readme.md | 210 - .../node_modules/form-data/lib/browser.js | 1 - .../node_modules/form-data/lib/form_data.js | 374 - .../form-data/node_modules/async/CHANGELOG.md | 113 - .../form-data/node_modules/async/LICENSE | 19 - .../form-data/node_modules/async/README.md | 1791 - .../node_modules/async/dist/async.js | 1260 - .../node_modules/async/dist/async.min.js | 2 - .../form-data/node_modules/async/lib/async.js | 1260 - .../form-data/node_modules/async/package.json | 123 - .../node_modules/form-data/package.json | 85 - .../node_modules/har-validator/LICENSE | 13 - .../node_modules/har-validator/README.md | 386 - .../har-validator/bin/har-validator | 56 - .../node_modules/har-validator/lib/async.js | 14 - .../node_modules/har-validator/lib/error.js | 10 - .../node_modules/har-validator/lib/index.js | 22 - .../node_modules/har-validator/lib/runner.js | 29 - .../har-validator/lib/schemas/cache.json | 13 - .../har-validator/lib/schemas/cacheEntry.json | 31 - .../har-validator/lib/schemas/content.json | 27 - .../har-validator/lib/schemas/cookie.json | 34 - .../har-validator/lib/schemas/creator.json | 18 - .../har-validator/lib/schemas/entry.json | 51 - .../har-validator/lib/schemas/har.json | 11 - .../har-validator/lib/schemas/index.js | 49 - .../har-validator/lib/schemas/log.json | 34 - .../har-validator/lib/schemas/page.json | 30 - .../lib/schemas/pageTimings.json | 16 - .../har-validator/lib/schemas/postData.json | 41 - .../har-validator/lib/schemas/record.json | 18 - .../har-validator/lib/schemas/request.json | 55 - .../har-validator/lib/schemas/response.json | 52 - .../har-validator/lib/schemas/timings.json | 40 - .../har-validator/node_modules/chalk/index.js | 116 - .../har-validator/node_modules/chalk/license | 21 - .../chalk/node_modules/ansi-styles/index.js | 65 - .../chalk/node_modules/ansi-styles/license | 21 - .../node_modules/ansi-styles/package.json | 80 - .../chalk/node_modules/ansi-styles/readme.md | 86 - .../escape-string-regexp/index.js | 11 - .../node_modules/escape-string-regexp/license | 21 - .../escape-string-regexp/package.json | 70 - .../escape-string-regexp/readme.md | 27 - .../chalk/node_modules/has-ansi/index.js | 4 - .../chalk/node_modules/has-ansi/license | 21 - .../has-ansi/node_modules/ansi-regex/index.js | 4 - .../has-ansi/node_modules/ansi-regex/license | 21 - .../node_modules/ansi-regex/package.json | 86 - .../node_modules/ansi-regex/readme.md | 31 - .../chalk/node_modules/has-ansi/package.json | 85 - .../chalk/node_modules/has-ansi/readme.md | 36 - .../chalk/node_modules/strip-ansi/index.js | 6 - .../chalk/node_modules/strip-ansi/license | 21 - .../node_modules/ansi-regex/index.js | 4 - .../node_modules/ansi-regex/license | 21 - .../node_modules/ansi-regex/package.json | 86 - .../node_modules/ansi-regex/readme.md | 31 - .../node_modules/strip-ansi/package.json | 85 - .../chalk/node_modules/strip-ansi/readme.md | 33 - .../node_modules/supports-color/index.js | 50 - .../chalk/node_modules/supports-color/license | 21 - .../node_modules/supports-color/package.json | 79 - .../node_modules/supports-color/readme.md | 36 - .../node_modules/chalk/package.json | 103 - .../node_modules/chalk/readme.md | 213 - .../node_modules/commander/History.md | 261 - .../node_modules/commander/LICENSE | 22 - .../node_modules/commander/Readme.md | 351 - .../node_modules/commander/index.js | 1110 - .../node_modules/graceful-readlink/.npmignore | 3 - .../graceful-readlink/.travis.yml | 5 - .../node_modules/graceful-readlink/LICENSE | 22 - .../node_modules/graceful-readlink/README.md | 17 - .../node_modules/graceful-readlink/index.js | 12 - .../graceful-readlink/package.json | 48 - .../node_modules/commander/package.json | 71 - .../node_modules/is-my-json-valid/.npmignore | 2 - .../node_modules/is-my-json-valid/.travis.yml | 3 - .../node_modules/is-my-json-valid/LICENSE | 21 - .../node_modules/is-my-json-valid/README.md | 173 - .../node_modules/is-my-json-valid/example.js | 18 - .../node_modules/is-my-json-valid/formats.js | 14 - .../node_modules/is-my-json-valid/index.js | 575 - .../node_modules/generate-function/.npmignore | 1 - .../generate-function/.travis.yml | 3 - .../node_modules/generate-function/README.md | 72 - .../node_modules/generate-function/example.js | 27 - .../node_modules/generate-function/index.js | 61 - .../generate-function/package.json | 53 - .../node_modules/generate-function/test.js | 33 - .../generate-object-property/.npmignore | 1 - .../generate-object-property/.travis.yml | 3 - .../generate-object-property/LICENSE | 21 - .../generate-object-property/README.md | 19 - .../generate-object-property/index.js | 12 - .../node_modules/is-property/.npmignore | 17 - .../node_modules/is-property/LICENSE | 22 - .../node_modules/is-property/README.md | 28 - .../node_modules/is-property/is-property.js | 5 - .../node_modules/is-property/package.json | 59 - .../generate-object-property/package.json | 51 - .../generate-object-property/test.js | 12 - .../node_modules/jsonpointer/.travis.yml | 10 - .../node_modules/jsonpointer/README.md | 32 - .../node_modules/jsonpointer/jsonpointer.js | 76 - .../node_modules/jsonpointer/package.json | 64 - .../node_modules/jsonpointer/test.js | 98 - .../node_modules/xtend/.jshintrc | 30 - .../node_modules/xtend/.npmignore | 1 - .../node_modules/xtend/LICENCE | 19 - .../node_modules/xtend/Makefile | 4 - .../node_modules/xtend/README.md | 32 - .../node_modules/xtend/immutable.js | 19 - .../node_modules/xtend/mutable.js | 17 - .../node_modules/xtend/package.json | 84 - .../node_modules/xtend/test.js | 83 - .../is-my-json-valid/package.json | 71 - .../node_modules/is-my-json-valid/require.js | 12 - .../is-my-json-valid/test/fixtures/cosmic.js | 84 - .../json-schema-draft4/additionalItems.json | 82 - .../additionalProperties.json | 88 - .../test/json-schema-draft4/allOf.json | 112 - .../test/json-schema-draft4/anyOf.json | 68 - .../test/json-schema-draft4/bignum.json | 107 - .../test/json-schema-draft4/default.json | 49 - .../test/json-schema-draft4/definitions.json | 32 - .../test/json-schema-draft4/dependencies.json | 113 - .../test/json-schema-draft4/enum.json | 72 - .../test/json-schema-draft4/format.json | 143 - .../test/json-schema-draft4/items.json | 46 - .../test/json-schema-draft4/maxItems.json | 28 - .../test/json-schema-draft4/maxLength.json | 28 - .../json-schema-draft4/maxProperties.json | 28 - .../test/json-schema-draft4/maximum.json | 42 - .../test/json-schema-draft4/minItems.json | 28 - .../test/json-schema-draft4/minLength.json | 28 - .../json-schema-draft4/minProperties.json | 28 - .../test/json-schema-draft4/minimum.json | 42 - .../test/json-schema-draft4/multipleOf.json | 60 - .../test/json-schema-draft4/not.json | 96 - .../json-schema-draft4/nullAndFormat.json | 18 - .../json-schema-draft4/nullAndObject.json | 18 - .../test/json-schema-draft4/oneOf.json | 68 - .../test/json-schema-draft4/pattern.json | 23 - .../json-schema-draft4/patternProperties.json | 110 - .../test/json-schema-draft4/properties.json | 92 - .../test/json-schema-draft4/ref.json | 128 - .../test/json-schema-draft4/refRemote.json | 74 - .../test/json-schema-draft4/required.json | 39 - .../test/json-schema-draft4/type.json | 330 - .../test/json-schema-draft4/uniqueItems.json | 79 - .../is-my-json-valid/test/json-schema.js | 23 - .../is-my-json-valid/test/misc.js | 429 - .../node_modules/pinkie-promise/index.js | 3 - .../node_modules/pinkie-promise/license | 21 - .../node_modules/pinkie/index.js | 292 - .../node_modules/pinkie/license | 21 - .../node_modules/pinkie/package.json | 66 - .../node_modules/pinkie/readme.md | 83 - .../node_modules/pinkie-promise/package.json | 65 - .../node_modules/pinkie-promise/readme.md | 28 - .../node_modules/har-validator/package.json | 88 - .../request/node_modules/hawk/.npmignore | 20 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 28 - .../request/node_modules/hawk/README.md | 634 - .../request/node_modules/hawk/bower.json | 24 - .../request/node_modules/hawk/component.json | 19 - .../request/node_modules/hawk/dist/client.js | 340 - .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/lib/browser.js | 637 - .../request/node_modules/hawk/lib/client.js | 369 - .../request/node_modules/hawk/lib/crypto.js | 126 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 540 - .../request/node_modules/hawk/lib/utils.js | 164 - .../hawk/node_modules/boom/.npmignore | 18 - .../hawk/node_modules/boom/.travis.yml | 8 - .../hawk/node_modules/boom/CONTRIBUTING.md | 1 - .../hawk/node_modules/boom/LICENSE | 28 - .../hawk/node_modules/boom/README.md | 652 - .../hawk/node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../hawk/node_modules/boom/lib/index.js | 318 - .../hawk/node_modules/boom/package.json | 64 - .../hawk/node_modules/boom/test/index.js | 654 - .../hawk/node_modules/cryptiles/.npmignore | 18 - .../hawk/node_modules/cryptiles/.travis.yml | 8 - .../hawk/node_modules/cryptiles/LICENSE | 28 - .../hawk/node_modules/cryptiles/README.md | 16 - .../hawk/node_modules/cryptiles/lib/index.js | 68 - .../hawk/node_modules/cryptiles/package.json | 61 - .../hawk/node_modules/cryptiles/test/index.js | 102 - .../hawk/node_modules/hoek/.npmignore | 18 - .../hawk/node_modules/hoek/.travis.yml | 7 - .../hawk/node_modules/hoek/CONTRIBUTING.md | 1 - .../hawk/node_modules/hoek/LICENSE | 31 - .../hawk/node_modules/hoek/README.md | 584 - .../hawk/node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../hawk/node_modules/hoek/lib/escape.js | 132 - .../hawk/node_modules/hoek/lib/index.js | 993 - .../hawk/node_modules/hoek/package.json | 61 - .../hawk/node_modules/hoek/test/escaper.js | 88 - .../hawk/node_modules/hoek/test/index.js | 2513 - .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../hawk/node_modules/sntp/.npmignore | 18 - .../hawk/node_modules/sntp/.travis.yml | 5 - .../hawk/node_modules/sntp/LICENSE | 28 - .../hawk/node_modules/sntp/Makefile | 9 - .../hawk/node_modules/sntp/README.md | 68 - .../hawk/node_modules/sntp/examples/offset.js | 16 - .../hawk/node_modules/sntp/examples/time.js | 25 - .../hawk/node_modules/sntp/index.js | 1 - .../hawk/node_modules/sntp/lib/index.js | 412 - .../hawk/node_modules/sntp/package.json | 65 - .../hawk/node_modules/sntp/test/index.js | 435 - .../request/node_modules/hawk/package.json | 68 - .../request/node_modules/hawk/test/browser.js | 1492 - .../request/node_modules/hawk/test/client.js | 440 - .../request/node_modules/hawk/test/crypto.js | 70 - .../request/node_modules/hawk/test/index.js | 378 - .../request/node_modules/hawk/test/readme.js | 95 - .../request/node_modules/hawk/test/server.js | 1302 - .../request/node_modules/hawk/test/uri.js | 838 - .../request/node_modules/hawk/test/utils.js | 121 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/CHANGES.md | 39 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 79 - .../http-signature/http_signing.md | 295 - .../node_modules/http-signature/lib/index.js | 29 - .../node_modules/http-signature/lib/parser.js | 318 - .../node_modules/http-signature/lib/signer.js | 394 - .../node_modules/http-signature/lib/utils.js | 112 - .../node_modules/http-signature/lib/verify.js | 88 - .../node_modules/.bin/sshpk-conv | 183 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 245 - .../node_modules/assert-plus/package.json | 45 - .../node_modules/jsprim/CHANGES.md | 30 - .../node_modules/jsprim/LICENSE | 19 - .../node_modules/jsprim/README.md | 228 - .../node_modules/jsprim/lib/jsprim.js | 478 - .../node_modules/extsprintf/.gitmodules | 6 - .../jsprim/node_modules/extsprintf/LICENSE | 19 - .../jsprim/node_modules/extsprintf/Makefile | 23 - .../node_modules/extsprintf/Makefile.deps | 39 - .../node_modules/extsprintf/Makefile.targ | 285 - .../jsprim/node_modules/extsprintf/README.md | 39 - .../extsprintf/examples/simple.js | 2 - .../node_modules/extsprintf/jsl.node.conf | 137 - .../node_modules/extsprintf/lib/extsprintf.js | 166 - .../node_modules/extsprintf/package.json | 38 - .../jsprim/node_modules/json-schema/README.md | 5 - .../json-schema/draft-00/hyper-schema | 68 - .../json-schema/draft-00/json-ref | 26 - .../node_modules/json-schema/draft-00/links | 33 - .../node_modules/json-schema/draft-00/schema | 155 - .../json-schema/draft-01/hyper-schema | 68 - .../json-schema/draft-01/json-ref | 26 - .../node_modules/json-schema/draft-01/links | 33 - .../node_modules/json-schema/draft-01/schema | 155 - .../json-schema/draft-02/hyper-schema | 68 - .../json-schema/draft-02/json-ref | 26 - .../node_modules/json-schema/draft-02/links | 35 - .../node_modules/json-schema/draft-02/schema | 166 - .../json-schema/draft-03/examples/address | 20 - .../json-schema/draft-03/examples/calendar | 53 - .../json-schema/draft-03/examples/card | 105 - .../json-schema/draft-03/examples/geo | 8 - .../json-schema/draft-03/examples/interfaces | 23 - .../json-schema/draft-03/hyper-schema | 60 - .../json-schema/draft-03/json-ref | 26 - .../node_modules/json-schema/draft-03/links | 35 - .../node_modules/json-schema/draft-03/schema | 174 - .../json-schema/draft-04/hyper-schema | 60 - .../node_modules/json-schema/draft-04/links | 41 - .../node_modules/json-schema/draft-04/schema | 189 - .../json-schema/draft-zyp-json-schema-03.xml | 1120 - .../json-schema/draft-zyp-json-schema-04.xml | 1072 - .../node_modules/json-schema/lib/links.js | 52 - .../node_modules/json-schema/lib/validate.js | 260 - .../node_modules/json-schema/package.json | 60 - .../node_modules/json-schema/test/tests.js | 95 - .../jsprim/node_modules/verror/.gitmodules | 0 .../jsprim/node_modules/verror/.npmignore | 1 - .../jsprim/node_modules/verror/LICENSE | 19 - .../jsprim/node_modules/verror/Makefile | 35 - .../jsprim/node_modules/verror/Makefile.targ | 285 - .../jsprim/node_modules/verror/README.md | 120 - .../verror/examples/levels-verror.js | 36 - .../verror/examples/levels-werror.js | 34 - .../node_modules/verror/examples/varargs.js | 6 - .../node_modules/verror/examples/verror.js | 13 - .../node_modules/verror/examples/werror.js | 14 - .../jsprim/node_modules/verror/jsl.node.conf | 139 - .../jsprim/node_modules/verror/lib/verror.js | 157 - .../jsprim/node_modules/verror/package.json | 44 - .../node_modules/verror/tests/tst.inherit.js | 100 - .../node_modules/verror/tests/tst.verror.js | 156 - .../node_modules/verror/tests/tst.werror.js | 179 - .../node_modules/jsprim/package.json | 47 - .../node_modules/sshpk/.npmignore | 8 - .../node_modules/sshpk/.travis.yml | 11 - .../http-signature/node_modules/sshpk/LICENSE | 18 - .../node_modules/sshpk/README.md | 436 - .../node_modules/sshpk/bin/sshpk-conv | 183 - .../node_modules/sshpk/lib/algs.js | 168 - .../node_modules/sshpk/lib/dhe.js | 311 - .../node_modules/sshpk/lib/ed-compat.js | 94 - .../node_modules/sshpk/lib/errors.js | 58 - .../node_modules/sshpk/lib/fingerprint.js | 140 - .../node_modules/sshpk/lib/formats/auto.js | 73 - .../node_modules/sshpk/lib/formats/pem.js | 152 - .../node_modules/sshpk/lib/formats/pkcs1.js | 320 - .../node_modules/sshpk/lib/formats/pkcs8.js | 510 - .../node_modules/sshpk/lib/formats/rfc4253.js | 145 - .../sshpk/lib/formats/ssh-private.js | 138 - .../node_modules/sshpk/lib/formats/ssh.js | 114 - .../node_modules/sshpk/lib/index.js | 25 - .../node_modules/sshpk/lib/key.js | 260 - .../node_modules/sshpk/lib/private-key.js | 224 - .../node_modules/sshpk/lib/signature.js | 237 - .../node_modules/sshpk/lib/ssh-buffer.js | 123 - .../node_modules/sshpk/lib/utils.js | 207 - .../sshpk/node_modules/asn1/.npmignore | 2 - .../sshpk/node_modules/asn1/.travis.yml | 4 - .../sshpk/node_modules/asn1/LICENSE | 19 - .../sshpk/node_modules/asn1/README.md | 50 - .../sshpk/node_modules/asn1/lib/ber/errors.js | 13 - .../sshpk/node_modules/asn1/lib/ber/index.js | 27 - .../sshpk/node_modules/asn1/lib/ber/reader.js | 261 - .../sshpk/node_modules/asn1/lib/ber/types.js | 36 - .../sshpk/node_modules/asn1/lib/ber/writer.js | 316 - .../sshpk/node_modules/asn1/lib/index.js | 20 - .../sshpk/node_modules/asn1/package.json | 65 - .../node_modules/asn1/tst/ber/reader.test.js | 208 - .../node_modules/asn1/tst/ber/writer.test.js | 370 - .../sshpk/node_modules/assert-plus/AUTHORS | 6 - .../sshpk/node_modules/assert-plus/CHANGES.md | 8 - .../sshpk/node_modules/assert-plus/README.md | 155 - .../sshpk/node_modules/assert-plus/assert.js | 206 - .../node_modules/assert-plus/package.json | 83 - .../sshpk/node_modules/dashdash/README.md | 508 - .../node_modules/dashdash/lib/dashdash.js | 813 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 245 - .../node_modules/assert-plus/package.json | 45 - .../sshpk/node_modules/dashdash/package.json | 81 - .../sshpk/node_modules/ecc-jsbn/.npmignore | 15 - .../sshpk/node_modules/ecc-jsbn/LICENSE | 21 - .../sshpk/node_modules/ecc-jsbn/README.md | 8 - .../sshpk/node_modules/ecc-jsbn/index.js | 57 - .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 - .../sshpk/node_modules/ecc-jsbn/lib/ec.js | 561 - .../sshpk/node_modules/ecc-jsbn/lib/sec.js | 170 - .../sshpk/node_modules/ecc-jsbn/package.json | 56 - .../sshpk/node_modules/ecc-jsbn/test.js | 14 - .../sshpk/node_modules/jodid25519/.npmignore | 11 - .../sshpk/node_modules/jodid25519/.travis.yml | 7 - .../sshpk/node_modules/jodid25519/AUTHORS.md | 3 - .../sshpk/node_modules/jodid25519/LICENSE | 23 - .../sshpk/node_modules/jodid25519/README.md | 51 - .../sshpk/node_modules/jodid25519/almond.0 | 42 - .../sshpk/node_modules/jodid25519/almond.1 | 13 - .../sshpk/node_modules/jodid25519/index.js | 35 - .../sshpk/node_modules/jodid25519/jsdoc.json | 19 - .../sshpk/node_modules/jodid25519/lib/core.js | 481 - .../node_modules/jodid25519/lib/curve255.js | 221 - .../sshpk/node_modules/jodid25519/lib/dh.js | 111 - .../node_modules/jodid25519/lib/eddsa.js | 573 - .../node_modules/jodid25519/lib/utils.js | 198 - .../node_modules/jodid25519/package.json | 71 - .../sshpk/node_modules/jsbn/.npmignore | 2 - .../sshpk/node_modules/jsbn/LICENSE | 40 - .../sshpk/node_modules/jsbn/README.md | 175 - .../sshpk/node_modules/jsbn/example.html | 12 - .../sshpk/node_modules/jsbn/example.js | 3 - .../sshpk/node_modules/jsbn/index.js | 1358 - .../sshpk/node_modules/jsbn/package.json | 50 - .../sshpk/node_modules/tweetnacl/.npmignore | 4 - .../sshpk/node_modules/tweetnacl/CHANGELOG.md | 128 - .../sshpk/node_modules/tweetnacl/README.md | 463 - .../sshpk/node_modules/tweetnacl/nacl-fast.js | 2418 - .../node_modules/tweetnacl/nacl-fast.min.js | 2 - .../sshpk/node_modules/tweetnacl/nacl.js | 1205 - .../sshpk/node_modules/tweetnacl/nacl.min.js | 1 - .../sshpk/node_modules/tweetnacl/package.json | 94 - .../node_modules/sshpk/package.json | 87 - .../node_modules/http-signature/package.json | 83 - .../node_modules/is-typedarray/LICENSE.md | 18 - .../node_modules/is-typedarray/README.md | 16 - .../node_modules/is-typedarray/index.js | 41 - .../node_modules/is-typedarray/package.json | 57 - .../node_modules/is-typedarray/test.js | 34 - .../request/node_modules/isstream/.jshintrc | 59 - .../request/node_modules/isstream/.npmignore | 1 - .../request/node_modules/isstream/.travis.yml | 12 - .../request/node_modules/isstream/LICENSE.md | 11 - .../request/node_modules/isstream/README.md | 66 - .../request/node_modules/isstream/isstream.js | 27 - .../node_modules/isstream/package.json | 59 - .../request/node_modules/isstream/test.js | 168 - .../json-stringify-safe/.npmignore | 1 - .../json-stringify-safe/CHANGELOG.md | 14 - .../node_modules/json-stringify-safe/LICENSE | 15 - .../node_modules/json-stringify-safe/Makefile | 35 - .../json-stringify-safe/README.md | 52 - .../json-stringify-safe/package.json | 68 - .../json-stringify-safe/stringify.js | 27 - .../json-stringify-safe/test/mocha.opts | 2 - .../test/stringify_test.js | 246 - .../node_modules/mime-types/HISTORY.md | 177 - .../request/node_modules/mime-types/LICENSE | 23 - .../request/node_modules/mime-types/README.md | 103 - .../request/node_modules/mime-types/index.js | 188 - .../node_modules/mime-db/HISTORY.md | 287 - .../mime-types/node_modules/mime-db/LICENSE | 22 - .../mime-types/node_modules/mime-db/README.md | 82 - .../mime-types/node_modules/mime-db/db.json | 6504 - .../mime-types/node_modules/mime-db/index.js | 11 - .../node_modules/mime-db/package.json | 94 - .../node_modules/mime-types/package.json | 84 - .../request/node_modules/node-uuid/.npmignore | 4 - .../request/node_modules/node-uuid/LICENSE.md | 21 - .../request/node_modules/node-uuid/README.md | 254 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../request/node_modules/node-uuid/bin/uuid | 26 - .../request/node_modules/node-uuid/bower.json | 23 - .../node_modules/node-uuid/component.json | 25 - .../node_modules/node-uuid/package.json | 81 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 231 - .../request/node_modules/node-uuid/uuid.js | 272 - .../request/node_modules/oauth-sign/LICENSE | 55 - .../request/node_modules/oauth-sign/README.md | 4 - .../request/node_modules/oauth-sign/index.js | 134 - .../node_modules/oauth-sign/package.json | 59 - .../request/node_modules/oauth-sign/test.js | 89 - .../request/node_modules/qs/.eslintignore | 1 - .../request/node_modules/qs/.npmignore | 18 - .../request/node_modules/qs/.travis.yml | 8 - .../request/node_modules/qs/CHANGELOG.md | 99 - .../request/node_modules/qs/CONTRIBUTING.md | 1 - .../request/node_modules/qs/LICENSE | 28 - .../request/node_modules/qs/README.md | 331 - .../request/node_modules/qs/bower.json | 22 - .../request/node_modules/qs/component.json | 15 - .../request/node_modules/qs/dist/qs.js | 544 - .../request/node_modules/qs/lib/index.js | 15 - .../request/node_modules/qs/lib/parse.js | 187 - .../request/node_modules/qs/lib/stringify.js | 154 - .../request/node_modules/qs/lib/utils.js | 190 - .../request/node_modules/qs/package.json | 59 - .../request/node_modules/qs/test/parse.js | 478 - .../request/node_modules/qs/test/stringify.js | 293 - .../request/node_modules/qs/test/utils.js | 28 - .../node_modules/stringstream/.npmignore | 15 - .../node_modules/stringstream/.travis.yml | 4 - .../node_modules/stringstream/LICENSE.txt | 22 - .../node_modules/stringstream/README.md | 38 - .../node_modules/stringstream/example.js | 27 - .../node_modules/stringstream/package.json | 50 - .../node_modules/stringstream/stringstream.js | 102 - .../request/node_modules/tough-cookie/LICENSE | 27 - .../node_modules/tough-cookie/README.md | 492 - .../node_modules/tough-cookie/lib/cookie.js | 1342 - .../node_modules/tough-cookie/lib/memstore.js | 170 - .../tough-cookie/lib/pathMatch.js | 61 - .../tough-cookie/lib/permuteDomain.js | 56 - .../tough-cookie/lib/pubsuffix.js | 98 - .../node_modules/tough-cookie/lib/store.js | 71 - .../node_modules/tough-cookie/package.json | 90 - .../node_modules/tunnel-agent/.jshintrc | 5 - .../request/node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 241 - .../node_modules/tunnel-agent/package.json | 60 - .../node_modules/request/package.json | 113 - .../node_modules/request/request.js | 1395 - .../node_modules/shelljs/.documentup.json | 6 - .../node_modules/shelljs/.jshintrc | 7 - .../node_modules/shelljs/.npmignore | 2 - .../node_modules/shelljs/.travis.yml | 6 - .../node_modules/shelljs/LICENSE | 26 - .../node_modules/shelljs/README.md | 579 - .../node_modules/shelljs/RELEASE.md | 9 - .../node_modules/shelljs/bin/shjs | 51 - .../node_modules/shelljs/global.js | 3 - .../node_modules/shelljs/make.js | 56 - .../node_modules/shelljs/package.json | 64 - .../shelljs/scripts/generate-docs.js | 21 - .../node_modules/shelljs/scripts/run-tests.js | 50 - .../node_modules/shelljs/shell.js | 159 - .../node_modules/shelljs/src/cat.js | 43 - .../node_modules/shelljs/src/cd.js | 19 - .../node_modules/shelljs/src/chmod.js | 208 - .../node_modules/shelljs/src/common.js | 203 - .../node_modules/shelljs/src/cp.js | 204 - .../node_modules/shelljs/src/dirs.js | 191 - .../node_modules/shelljs/src/echo.js | 20 - .../node_modules/shelljs/src/error.js | 10 - .../node_modules/shelljs/src/exec.js | 216 - .../node_modules/shelljs/src/find.js | 51 - .../node_modules/shelljs/src/grep.js | 52 - .../node_modules/shelljs/src/ln.js | 53 - .../node_modules/shelljs/src/ls.js | 126 - .../node_modules/shelljs/src/mkdir.js | 68 - .../node_modules/shelljs/src/mv.js | 80 - .../node_modules/shelljs/src/popd.js | 1 - .../node_modules/shelljs/src/pushd.js | 1 - .../node_modules/shelljs/src/pwd.js | 11 - .../node_modules/shelljs/src/rm.js | 163 - .../node_modules/shelljs/src/sed.js | 43 - .../node_modules/shelljs/src/tempdir.js | 56 - .../node_modules/shelljs/src/test.js | 85 - .../node_modules/shelljs/src/to.js | 29 - .../node_modules/shelljs/src/toEnd.js | 29 - .../node_modules/shelljs/src/which.js | 83 - .../npm-shrinkwrap.json | 559 - .../package.json | 36 - .../.codeclimate.yml | 7 - .../saviorisdead.RustyCode-0.18.0/.travis.yml | 9 - .../.vsixmanifest | 32 - .../CHANGELOG.md | 119 - .../saviorisdead.RustyCode-0.18.0/LICENSE | 22 - .../saviorisdead.RustyCode-0.18.0/README.md | 80 - .../saviorisdead.RustyCode-0.18.0/ROADMAP.md | 4 - .../saviorisdead.RustyCode-0.18.0/gulpfile.js | 20 - .../images/icon.png | Bin 5758 -> 0 bytes .../images/ide_features.png | Bin 50240 -> 0 bytes .../node_modules/.bin/_mocha | 499 - .../node_modules/.bin/dateformat | 75 - .../node_modules/.bin/gulp | 212 - .../node_modules/.bin/har-validator | 45 - .../node_modules/.bin/jade | 147 - .../node_modules/.bin/mkdirp | 33 - .../node_modules/.bin/mocha | 72 - .../node_modules/.bin/semver | 133 - .../node_modules/.bin/sshpk-conv | 195 - .../node_modules/.bin/sshpk-sign | 191 - .../node_modules/.bin/sshpk-verify | 166 - .../node_modules/.bin/strip-indent | 49 - .../node_modules/.bin/tsc | 2 - .../node_modules/.bin/tslint | 3 - .../node_modules/.bin/tsserver | 2 - .../node_modules/.bin/user-home | 26 - .../node_modules/.bin/uuid | 26 - .../node_modules/amdefine/LICENSE | 58 - .../node_modules/amdefine/README.md | 171 - .../node_modules/amdefine/amdefine.js | 301 - .../node_modules/amdefine/intercept.js | 36 - .../node_modules/amdefine/package.json | 74 - .../node_modules/ansi-regex/index.js | 4 - .../node_modules/ansi-regex/license | 21 - .../node_modules/ansi-regex/package.json | 113 - .../node_modules/ansi-regex/readme.md | 31 - .../node_modules/ansi-styles/index.js | 65 - .../node_modules/ansi-styles/license | 21 - .../node_modules/ansi-styles/package.json | 106 - .../node_modules/ansi-styles/readme.md | 86 - .../node_modules/archy/.travis.yml | 4 - .../node_modules/archy/LICENSE | 18 - .../node_modules/archy/examples/beep.js | 24 - .../node_modules/archy/examples/multi_line.js | 25 - .../node_modules/archy/index.js | 35 - .../node_modules/archy/package.json | 106 - .../node_modules/archy/readme.markdown | 88 - .../node_modules/archy/test/beep.js | 40 - .../node_modules/archy/test/multi_line.js | 45 - .../node_modules/archy/test/non_unicode.js | 40 - .../node_modules/array-differ/index.js | 7 - .../node_modules/array-differ/package.json | 87 - .../node_modules/array-differ/readme.md | 41 - .../node_modules/array-find-index/index.js | 25 - .../node_modules/array-find-index/license | 21 - .../array-find-index/package.json | 92 - .../node_modules/array-find-index/readme.md | 32 - .../node_modules/array-uniq/index.js | 60 - .../node_modules/array-uniq/package.json | 92 - .../node_modules/array-uniq/readme.md | 30 - .../node_modules/asn1/.npmignore | 2 - .../node_modules/asn1/LICENSE | 19 - .../node_modules/asn1/README.md | 50 - .../node_modules/asn1/lib/ber/errors.js | 13 - .../node_modules/asn1/lib/ber/index.js | 27 - .../node_modules/asn1/lib/ber/reader.js | 267 - .../node_modules/asn1/lib/ber/types.js | 36 - .../node_modules/asn1/lib/ber/writer.js | 317 - .../node_modules/asn1/lib/index.js | 20 - .../node_modules/asn1/package.json | 88 - .../node_modules/asn1/tst/ber/reader.test.js | 172 - .../node_modules/asn1/tst/ber/writer.test.js | 296 - .../node_modules/assert-plus/README.md | 126 - .../node_modules/assert-plus/assert.js | 245 - .../node_modules/assert-plus/package.json | 69 - .../node_modules/async/CHANGELOG.md | 125 - .../node_modules/async/LICENSE | 19 - .../node_modules/async/README.md | 1877 - .../node_modules/async/dist/async.js | 1265 - .../node_modules/async/dist/async.min.js | 2 - .../node_modules/async/lib/async.js | 1265 - .../node_modules/async/package.json | 150 - .../node_modules/aws-sign2/LICENSE | 55 - .../node_modules/aws-sign2/README.md | 4 - .../node_modules/aws-sign2/index.js | 202 - .../node_modules/aws-sign2/package.json | 69 - .../node_modules/aws4/.npmignore | 4 - .../node_modules/aws4/.tern-port | 1 - .../node_modules/aws4/.travis.yml | 5 - .../node_modules/aws4/LICENSE | 19 - .../node_modules/aws4/README.md | 514 - .../node_modules/aws4/aws4.js | 318 - .../aws4/node_modules/lru-cache/LICENSE | 15 - .../aws4/node_modules/lru-cache/README.md | 142 - .../node_modules/lru-cache/lib/lru-cache.js | 469 - .../aws4/node_modules/lru-cache/package.json | 95 - .../node_modules/aws4/package.json | 137 - .../node_modules/balanced-match/.npmignore | 5 - .../node_modules/balanced-match/LICENSE.md | 21 - .../node_modules/balanced-match/README.md | 91 - .../node_modules/balanced-match/index.js | 58 - .../node_modules/balanced-match/package.json | 102 - .../node_modules/beeper/index.js | 61 - .../node_modules/beeper/license | 21 - .../node_modules/beeper/package.json | 94 - .../node_modules/beeper/readme.md | 55 - .../node_modules/bl/.jshintrc | 59 - .../node_modules/bl/.npmignore | 1 - .../node_modules/bl/.travis.yml | 11 - .../node_modules/bl/LICENSE.md | 13 - .../node_modules/bl/README.md | 198 - .../node_modules/bl/bl.js | 221 - .../node_modules/readable-stream/.npmignore | 5 - .../bl/node_modules/readable-stream/LICENSE | 18 - .../bl/node_modules/readable-stream/README.md | 15 - .../bl/node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/bl/package.json | 91 - .../node_modules/bl/test/basic-test.js | 557 - .../node_modules/bl/test/sauce.js | 38 - .../node_modules/bl/test/test.js | 9 - .../node_modules/bluebird/LICENSE | 21 - .../node_modules/bluebird/README.md | 679 - .../node_modules/bluebird/changelog.md | 1723 - .../bluebird/js/browser/bluebird.js | 4887 - .../bluebird/js/browser/bluebird.min.js | 31 - .../node_modules/bluebird/js/main/any.js | 21 - .../node_modules/bluebird/js/main/assert.js | 55 - .../node_modules/bluebird/js/main/async.js | 150 - .../node_modules/bluebird/js/main/bind.js | 72 - .../node_modules/bluebird/js/main/bluebird.js | 11 - .../node_modules/bluebird/js/main/call_get.js | 123 - .../node_modules/bluebird/js/main/cancel.js | 48 - .../bluebird/js/main/captured_trace.js | 493 - .../bluebird/js/main/catch_filter.js | 66 - .../node_modules/bluebird/js/main/context.js | 38 - .../bluebird/js/main/debuggability.js | 162 - .../bluebird/js/main/direct_resolve.js | 63 - .../node_modules/bluebird/js/main/each.js | 12 - .../node_modules/bluebird/js/main/errors.js | 111 - .../node_modules/bluebird/js/main/es5.js | 80 - .../node_modules/bluebird/js/main/filter.js | 12 - .../node_modules/bluebird/js/main/finally.js | 98 - .../bluebird/js/main/generators.js | 136 - .../node_modules/bluebird/js/main/join.js | 107 - .../node_modules/bluebird/js/main/map.js | 133 - .../node_modules/bluebird/js/main/method.js | 44 - .../node_modules/bluebird/js/main/nodeify.js | 59 - .../node_modules/bluebird/js/main/progress.js | 76 - .../node_modules/bluebird/js/main/promise.js | 754 - .../bluebird/js/main/promise_array.js | 142 - .../bluebird/js/main/promise_resolver.js | 123 - .../bluebird/js/main/promisify.js | 307 - .../node_modules/bluebird/js/main/props.js | 79 - .../node_modules/bluebird/js/main/queue.js | 90 - .../node_modules/bluebird/js/main/race.js | 47 - .../node_modules/bluebird/js/main/reduce.js | 148 - .../node_modules/bluebird/js/main/schedule.js | 35 - .../node_modules/bluebird/js/main/settle.js | 40 - .../node_modules/bluebird/js/main/some.js | 125 - .../js/main/synchronous_inspection.js | 94 - .../bluebird/js/main/thenables.js | 84 - .../node_modules/bluebird/js/main/timers.js | 64 - .../node_modules/bluebird/js/main/using.js | 213 - .../node_modules/bluebird/js/main/util.js | 321 - .../node_modules/bluebird/package.json | 127 - .../node_modules/boom/.npmignore | 18 - .../node_modules/boom/.travis.yml | 8 - .../node_modules/boom/CONTRIBUTING.md | 1 - .../node_modules/boom/LICENSE | 28 - .../node_modules/boom/README.md | 652 - .../node_modules/boom/images/boom.png | Bin 29479 -> 0 bytes .../node_modules/boom/lib/index.js | 318 - .../node_modules/boom/package.json | 90 - .../node_modules/boom/test/index.js | 654 - .../node_modules/brace-expansion/.npmignore | 3 - .../node_modules/brace-expansion/README.md | 122 - .../node_modules/brace-expansion/example.js | 8 - .../node_modules/brace-expansion/index.js | 191 - .../node_modules/brace-expansion/package.json | 106 - .../node_modules/buffer-crc32/.npmignore | 1 - .../node_modules/buffer-crc32/.travis.yml | 8 - .../node_modules/buffer-crc32/LICENSE | 19 - .../node_modules/buffer-crc32/README.md | 47 - .../node_modules/buffer-crc32/index.js | 91 - .../node_modules/buffer-crc32/package.json | 89 - .../buffer-crc32/tests/crc.test.js | 89 - .../builtin-modules/builtin-modules.json | 35 - .../node_modules/builtin-modules/index.js | 10 - .../node_modules/builtin-modules/license | 21 - .../node_modules/builtin-modules/package.json | 96 - .../node_modules/builtin-modules/readme.md | 41 - .../node_modules/builtin-modules/static.js | 2 - .../node_modules/camelcase-keys/index.js | 12 - .../node_modules/camelcase-keys/license | 21 - .../node_modules/camelcase-keys/package.json | 111 - .../node_modules/camelcase-keys/readme.md | 54 - .../node_modules/camelcase/index.js | 56 - .../node_modules/camelcase/license | 21 - .../node_modules/camelcase/package.json | 99 - .../node_modules/camelcase/readme.md | 57 - .../node_modules/caseless/README.md | 45 - .../node_modules/caseless/index.js | 65 - .../node_modules/caseless/package.json | 83 - .../node_modules/caseless/test.js | 40 - .../node_modules/chalk/index.js | 116 - .../node_modules/chalk/license | 21 - .../node_modules/chalk/package.json | 135 - .../node_modules/chalk/readme.md | 213 - .../node_modules/clone-stats/LICENSE.md | 21 - .../node_modules/clone-stats/README.md | 17 - .../node_modules/clone-stats/index.js | 13 - .../node_modules/clone-stats/package.json | 86 - .../node_modules/clone-stats/test.js | 36 - .../node_modules/clone/.npmignore | 1 - .../node_modules/clone/.travis.yml | 3 - .../node_modules/clone/LICENSE | 18 - .../node_modules/clone/README.md | 126 - .../node_modules/clone/clone.js | 160 - .../node_modules/clone/package.json | 159 - .../node_modules/clone/test-apart-ctx.html | 22 - .../node_modules/clone/test.html | 148 - .../node_modules/clone/test.js | 372 - .../node_modules/colors/LICENSE | 23 - .../node_modules/colors/ReadMe.md | 178 - .../colors/examples/normal-usage.js | 74 - .../colors/examples/safe-string.js | 76 - .../node_modules/colors/lib/colors.js | 187 - .../node_modules/colors/lib/custom/trap.js | 45 - .../node_modules/colors/lib/custom/zalgo.js | 104 - .../colors/lib/extendStringPrototype.js | 113 - .../node_modules/colors/lib/index.js | 12 - .../node_modules/colors/lib/maps/america.js | 12 - .../node_modules/colors/lib/maps/rainbow.js | 13 - .../node_modules/colors/lib/maps/random.js | 8 - .../node_modules/colors/lib/maps/zebra.js | 5 - .../node_modules/colors/lib/styles.js | 77 - .../colors/lib/system/supports-colors.js | 61 - .../node_modules/colors/package.json | 86 - .../node_modules/colors/safe.js | 9 - .../colors/themes/generic-logging.js | 12 - .../node_modules/combined-stream/License | 19 - .../node_modules/combined-stream/Readme.md | 138 - .../combined-stream/lib/combined_stream.js | 188 - .../node_modules/combined-stream/package.json | 93 - .../node_modules/commander/History.md | 261 - .../node_modules/commander/LICENSE | 22 - .../node_modules/commander/Readme.md | 351 - .../node_modules/commander/index.js | 1110 - .../node_modules/commander/package.json | 96 - .../node_modules/concat-map/.travis.yml | 4 - .../node_modules/concat-map/LICENSE | 18 - .../node_modules/concat-map/README.markdown | 62 - .../node_modules/concat-map/example/map.js | 6 - .../node_modules/concat-map/index.js | 13 - .../node_modules/concat-map/package.json | 109 - .../node_modules/concat-map/test/map.js | 39 - .../node_modules/core-util-is/LICENSE | 19 - .../node_modules/core-util-is/README.md | 3 - .../node_modules/core-util-is/float.patch | 604 - .../node_modules/core-util-is/lib/util.js | 107 - .../node_modules/core-util-is/package.json | 96 - .../node_modules/core-util-is/test.js | 68 - .../node_modules/cryptiles/.npmignore | 18 - .../node_modules/cryptiles/.travis.yml | 8 - .../node_modules/cryptiles/LICENSE | 28 - .../node_modules/cryptiles/README.md | 16 - .../node_modules/cryptiles/lib/index.js | 68 - .../node_modules/cryptiles/package.json | 86 - .../node_modules/cryptiles/test/index.js | 102 - .../node_modules/ctype/.npmignore | 1 - .../node_modules/ctype/CHANGELOG | 78 - .../node_modules/ctype/LICENSE | 24 - .../node_modules/ctype/README | 82 - .../node_modules/ctype/README.old | 298 - .../node_modules/ctype/ctf.js | 245 - .../node_modules/ctype/ctio.js | 1485 - .../node_modules/ctype/ctype.js | 944 - .../ctype/man/man3ctype/ctio.3ctype | 241 - .../node_modules/ctype/package.json | 69 - .../node_modules/ctype/tools/jsl.conf | 129 - .../node_modules/ctype/tools/jsstyle | 839 - .../node_modules/dashdash/README.md | 574 - .../dashdash/etc/dashdash.bash_completion.in | 388 - .../node_modules/dashdash/lib/dashdash.js | 1022 - .../dashdash/node_modules/assert-plus/AUTHORS | 6 - .../node_modules/assert-plus/CHANGES.md | 14 - .../node_modules/assert-plus/README.md | 162 - .../node_modules/assert-plus/assert.js | 211 - .../node_modules/assert-plus/package.json | 107 - .../node_modules/dashdash/package.json | 116 - .../node_modules/dateformat/.npmignore | 57 - .../node_modules/dateformat/.travis.yml | 4 - .../node_modules/dateformat/LICENSE | 20 - .../node_modules/dateformat/Readme.md | 82 - .../node_modules/dateformat/bin/cli.js | 75 - .../node_modules/dateformat/lib/dateformat.js | 226 - .../node_modules/dateformat/package.json | 100 - .../dateformat/test/test_dayofweek.js | 15 - .../dateformat/test/test_formats.js | 76 - .../dateformat/test/test_isoutcdatetime.js | 11 - .../test/weekofyear/test_weekofyear.js | 4 - .../test/weekofyear/test_weekofyear.sh | 27 - .../node_modules/debug/.jshintrc | 3 - .../node_modules/debug/.npmignore | 6 - .../node_modules/debug/History.md | 195 - .../node_modules/debug/Makefile | 36 - .../node_modules/debug/Readme.md | 188 - .../node_modules/debug/bower.json | 28 - .../node_modules/debug/browser.js | 168 - .../node_modules/debug/component.json | 19 - .../node_modules/debug/debug.js | 197 - .../node_modules/debug/node.js | 209 - .../node_modules/debug/package.json | 98 - .../node_modules/decamelize/index.js | 13 - .../node_modules/decamelize/license | 21 - .../node_modules/decamelize/package.json | 98 - .../node_modules/decamelize/readme.md | 48 - .../node_modules/defaults/.npmignore | 1 - .../node_modules/defaults/LICENSE | 21 - .../node_modules/defaults/README.md | 43 - .../node_modules/defaults/index.js | 13 - .../node_modules/defaults/package.json | 80 - .../node_modules/defaults/test.js | 34 - .../node_modules/delayed-stream/.npmignore | 1 - .../node_modules/delayed-stream/License | 19 - .../node_modules/delayed-stream/Makefile | 7 - .../node_modules/delayed-stream/Readme.md | 141 - .../delayed-stream/lib/delayed_stream.js | 107 - .../node_modules/delayed-stream/package.json | 89 - .../node_modules/deprecated/.npmignore | 6 - .../node_modules/deprecated/.travis.yml | 6 - .../node_modules/deprecated/LICENSE | 20 - .../node_modules/deprecated/README.md | 51 - .../node_modules/deprecated/index.js | 39 - .../node_modules/deprecated/package.json | 88 - .../node_modules/deprecated/test/field.js | 44 - .../node_modules/deprecated/test/method.js | 32 - .../node_modules/diff/CONTRIBUTING.md | 39 - .../node_modules/diff/LICENSE | 31 - .../node_modules/diff/README.md | 193 - .../node_modules/diff/dist/diff.js | 1338 - .../node_modules/diff/dist/diff.min.js | 311 - .../diff/examples/node_example.js | 17 - .../diff/examples/web_example.html | 20 - .../node_modules/diff/images/node_example.png | Bin 5654 -> 0 bytes .../node_modules/diff/images/web_example.png | Bin 4372 -> 0 bytes .../node_modules/diff/lib/convert/dmp.js | 24 - .../node_modules/diff/lib/convert/xml.js | 35 - .../node_modules/diff/lib/diff/base.js | 227 - .../node_modules/diff/lib/diff/character.js | 18 - .../node_modules/diff/lib/diff/css.js | 22 - .../node_modules/diff/lib/diff/json.js | 100 - .../node_modules/diff/lib/diff/line.js | 53 - .../node_modules/diff/lib/diff/sentence.js | 22 - .../node_modules/diff/lib/diff/word.js | 70 - .../node_modules/diff/lib/index.js | 71 - .../node_modules/diff/lib/patch/apply.js | 161 - .../node_modules/diff/lib/patch/create.js | 153 - .../node_modules/diff/lib/patch/merge.js | 380 - .../node_modules/diff/lib/patch/parse.js | 134 - .../node_modules/diff/lib/util/array.js | 27 - .../diff/lib/util/distance-iterator.js | 47 - .../node_modules/diff/lib/util/params.js | 18 - .../node_modules/diff/package.json | 122 - .../node_modules/diff/release-notes.md | 158 - .../node_modules/diff/runtime.js | 3 - .../node_modules/duplexer/.npmignore | 3 - .../node_modules/duplexer/.travis.yml | 6 - .../node_modules/duplexer/LICENCE | 19 - .../node_modules/duplexer/README.md | 47 - .../node_modules/duplexer/index.js | 87 - .../node_modules/duplexer/package.json | 108 - .../node_modules/duplexer/test/index.js | 31 - .../node_modules/duplexer2/.npmignore | 1 - .../node_modules/duplexer2/.travis.yml | 3 - .../node_modules/duplexer2/LICENSE.md | 26 - .../node_modules/duplexer2/README.md | 129 - .../node_modules/duplexer2/example.js | 49 - .../node_modules/duplexer2/index.js | 62 - .../node_modules/duplexer2/package.json | 82 - .../node_modules/duplexer2/test/tests.js | 161 - .../node_modules/duplexify/.npmignore | 1 - .../node_modules/duplexify/.travis.yml | 4 - .../node_modules/duplexify/LICENSE | 21 - .../node_modules/duplexify/README.md | 97 - .../node_modules/duplexify/example.js | 21 - .../node_modules/duplexify/index.js | 227 - .../node_modules/end-of-stream/.npmignore | 1 - .../node_modules/end-of-stream/README.md | 47 - .../node_modules/end-of-stream/index.js | 72 - .../node_modules/end-of-stream/package.json | 81 - .../node_modules/end-of-stream/test.js | 62 - .../duplexify/node_modules/isarray/.npmignore | 1 - .../node_modules/isarray/.travis.yml | 4 - .../duplexify/node_modules/isarray/Makefile | 6 - .../duplexify/node_modules/isarray/README.md | 60 - .../node_modules/isarray/component.json | 19 - .../duplexify/node_modules/isarray/index.js | 5 - .../node_modules/isarray/package.json | 96 - .../duplexify/node_modules/isarray/test.js | 20 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/.travis.yml | 54 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 36 - .../readable-stream/doc/stream.markdown | 1761 - .../doc/wg-meetings/2015-01-30.md | 60 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 75 - .../lib/_stream_passthrough.js | 26 - .../readable-stream/lib/_stream_readable.js | 880 - .../readable-stream/lib/_stream_transform.js | 180 - .../readable-stream/lib/_stream_writable.js | 516 - .../node_modules/readable-stream/package.json | 114 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 16 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/duplexify/package.json | 101 - .../node_modules/duplexify/test.js | 269 - .../node_modules/ecc-jsbn/.npmignore | 15 - .../node_modules/ecc-jsbn/LICENSE | 21 - .../node_modules/ecc-jsbn/README.md | 8 - .../node_modules/ecc-jsbn/index.js | 57 - .../node_modules/ecc-jsbn/lib/LICENSE-jsbn | 40 - .../node_modules/ecc-jsbn/lib/ec.js | 561 - .../node_modules/ecc-jsbn/lib/sec.js | 170 - .../node_modules/ecc-jsbn/package.json | 82 - .../node_modules/ecc-jsbn/test.js | 14 - .../node_modules/end-of-stream/.npmignore | 1 - .../node_modules/end-of-stream/README.md | 47 - .../node_modules/end-of-stream/index.js | 61 - .../node_modules/end-of-stream/package.json | 81 - .../node_modules/end-of-stream/test.js | 59 - .../node_modules/error-ex/LICENSE | 21 - .../node_modules/error-ex/README.md | 144 - .../node_modules/error-ex/index.js | 115 - .../node_modules/error-ex/package.json | 101 - .../escape-string-regexp/index.js | 11 - .../node_modules/escape-string-regexp/license | 21 - .../escape-string-regexp/package.json | 101 - .../escape-string-regexp/readme.md | 27 - .../node_modules/event-stream/.npmignore | 3 - .../node_modules/event-stream/.travis.yml | 4 - .../node_modules/event-stream/LICENCE | 22 - .../event-stream/examples/pretty.js | 25 - .../node_modules/event-stream/index.js | 306 - .../node_modules/event-stream/package.json | 105 - .../node_modules/event-stream/readme.markdown | 298 - .../event-stream/test/connect.asynct.js | 86 - .../event-stream/test/helper/index.js | 12 - .../event-stream/test/merge.asynct.js | 21 - .../event-stream/test/pause.asynct.js | 39 - .../event-stream/test/pipeline.asynct.js | 52 - .../event-stream/test/readArray.asynct.js | 89 - .../event-stream/test/readable.asynct.js | 197 - .../event-stream/test/replace.asynct.js | 51 - .../event-stream/test/simple-map.asynct.js | 343 - .../event-stream/test/spec.asynct.js | 86 - .../event-stream/test/split.asynct.js | 47 - .../event-stream/test/stringify.js | 15 - .../event-stream/test/writeArray.asynct.js | 31 - .../node_modules/extend/.jscs.json | 68 - .../node_modules/extend/.npmignore | 1 - .../node_modules/extend/.travis.yml | 36 - .../node_modules/extend/CHANGELOG.md | 61 - .../node_modules/extend/LICENSE | 23 - .../node_modules/extend/README.md | 62 - .../node_modules/extend/component.json | 32 - .../node_modules/extend/index.js | 89 - .../node_modules/extend/package.json | 96 - .../node_modules/extsprintf/.gitmodules | 6 - .../node_modules/extsprintf/LICENSE | 19 - .../node_modules/extsprintf/Makefile | 23 - .../node_modules/extsprintf/Makefile.deps | 39 - .../node_modules/extsprintf/Makefile.targ | 285 - .../node_modules/extsprintf/README.md | 39 - .../extsprintf/examples/simple.js | 2 - .../node_modules/extsprintf/jsl.node.conf | 137 - .../node_modules/extsprintf/lib/extsprintf.js | 166 - .../node_modules/extsprintf/package.json | 66 - .../node_modules/fancy-log/LICENSE | 23 - .../node_modules/fancy-log/README.md | 35 - .../node_modules/fancy-log/index.js | 27 - .../node_modules/fancy-log/package.json | 103 - .../node_modules/fd-slicer/.npmignore | 2 - .../node_modules/fd-slicer/.travis.yml | 7 - .../node_modules/fd-slicer/CHANGELOG.md | 49 - .../node_modules/fd-slicer/LICENSE | 21 - .../node_modules/fd-slicer/README.md | 189 - .../node_modules/fd-slicer/index.js | 277 - .../node_modules/fd-slicer/package.json | 90 - .../node_modules/fd-slicer/test/test.js | 350 - .../node_modules/find-index/README.md | 33 - .../node_modules/find-index/index.js | 26 - .../node_modules/find-index/last.js | 26 - .../node_modules/find-index/package.json | 79 - .../node_modules/find-up/index.js | 53 - .../node_modules/find-up/license | 21 - .../node_modules/find-up/package.json | 111 - .../node_modules/find-up/readme.md | 72 - .../node_modules/findup-sync/.npmignore | 4 - .../node_modules/findup-sync/LICENSE-MIT | 22 - .../node_modules/findup-sync/README.md | 48 - .../findup-sync/lib/findup-sync.js | 49 - .../node_modules/findup-sync/package.json | 96 - .../node_modules/first-chunk-stream/index.js | 93 - .../first-chunk-stream/package.json | 92 - .../node_modules/first-chunk-stream/readme.md | 62 - .../node_modules/flagged-respawn/.npmignore | 1 - .../node_modules/flagged-respawn/.travis.yml | 9 - .../node_modules/flagged-respawn/LICENSE | 22 - .../node_modules/flagged-respawn/README.md | 58 - .../node_modules/flagged-respawn/index.js | 18 - .../flagged-respawn/lib/reorder.js | 16 - .../flagged-respawn/lib/respawn.js | 15 - .../node_modules/flagged-respawn/package.json | 97 - .../flagged-respawn/test/bin/exit_code.js | 13 - .../flagged-respawn/test/bin/respawner.js | 17 - .../flagged-respawn/test/bin/signal.js | 16 - .../flagged-respawn/test/index.js | 99 - .../node_modules/forever-agent/LICENSE | 55 - .../node_modules/forever-agent/README.md | 4 - .../node_modules/forever-agent/index.js | 138 - .../node_modules/forever-agent/package.json | 80 - .../node_modules/form-data/.dockerignore | 7 - .../node_modules/form-data/.editorconfig | 10 - .../node_modules/form-data/.eslintignore | 1 - .../node_modules/form-data/.eslintrc | 64 - .../node_modules/form-data/License | 19 - .../node_modules/form-data/README.md | 218 - .../node_modules/form-data/lib/browser.js | 2 - .../node_modules/form-data/lib/form_data.js | 411 - .../node_modules/form-data/lib/populate.js | 9 - .../node_modules/mime-types/HISTORY.md | 197 - .../form-data/node_modules/mime-types/LICENSE | 23 - .../node_modules/mime-types/README.md | 103 - .../node_modules/mime-types/index.js | 188 - .../node_modules/mime-types/package.json | 114 - .../node_modules/form-data/package.json | 131 - .../node_modules/form-data/wercker.yml | 36 - .../node_modules/from/.npmignore | 1 - .../node_modules/from/LICENSE.APACHE2 | 15 - .../node_modules/from/LICENSE.MIT | 24 - .../node_modules/from/index.js | 68 - .../node_modules/from/package.json | 84 - .../node_modules/from/readme.markdown | 38 - .../node_modules/from/test/index.js | 141 - .../node_modules/gaze/LICENSE-MIT | 22 - .../node_modules/gaze/README.md | 181 - .../node_modules/gaze/lib/gaze.js | 439 - .../node_modules/gaze/lib/helper.js | 67 - .../node_modules/gaze/package.json | 144 - .../node_modules/generate-function/.npmignore | 1 - .../generate-function/.travis.yml | 3 - .../node_modules/generate-function/README.md | 72 - .../node_modules/generate-function/example.js | 27 - .../node_modules/generate-function/index.js | 61 - .../generate-function/package.json | 79 - .../node_modules/generate-function/test.js | 33 - .../generate-object-property/.npmignore | 1 - .../generate-object-property/.travis.yml | 3 - .../generate-object-property/LICENSE | 21 - .../generate-object-property/README.md | 19 - .../generate-object-property/index.js | 12 - .../generate-object-property/package.json | 76 - .../generate-object-property/test.js | 12 - .../node_modules/get-stdin/index.js | 49 - .../node_modules/get-stdin/package.json | 91 - .../node_modules/get-stdin/readme.md | 44 - .../node_modules/getpass/.npmignore | 8 - .../node_modules/getpass/.travis.yml | 9 - .../node_modules/getpass/LICENSE | 18 - .../node_modules/getpass/README.md | 32 - .../node_modules/getpass/lib/index.js | 123 - .../getpass/node_modules/assert-plus/AUTHORS | 6 - .../node_modules/assert-plus/CHANGES.md | 14 - .../node_modules/assert-plus/README.md | 162 - .../node_modules/assert-plus/assert.js | 211 - .../node_modules/assert-plus/package.json | 107 - .../node_modules/getpass/package.json | 82 - .../node_modules/glob-stream/LICENSE | 20 - .../node_modules/glob-stream/README.md | 67 - .../node_modules/glob-stream/index.js | 117 - .../glob-stream/node_modules/glob/LICENSE | 15 - .../glob-stream/node_modules/glob/README.md | 369 - .../glob-stream/node_modules/glob/common.js | 237 - .../glob-stream/node_modules/glob/glob.js | 740 - .../node_modules/glob/package.json | 97 - .../glob-stream/node_modules/glob/sync.js | 457 - .../node_modules/minimatch/LICENSE | 15 - .../node_modules/minimatch/README.md | 216 - .../node_modules/minimatch/browser.js | 1159 - .../node_modules/minimatch/minimatch.js | 912 - .../node_modules/minimatch/package.json | 89 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/through2/.npmignore | 3 - .../glob-stream/node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 132 - .../node_modules/through2/package.json | 90 - .../node_modules/through2/through2.js | 96 - .../node_modules/glob-stream/package.json | 110 - .../node_modules/glob-watcher/.npmignore | 6 - .../node_modules/glob-watcher/.travis.yml | 6 - .../node_modules/glob-watcher/LICENSE | 20 - .../node_modules/glob-watcher/README.md | 53 - .../node_modules/glob-watcher/index.js | 39 - .../node_modules/glob-watcher/package.json | 91 - .../glob-watcher/test/fixtures/test.coffee | 1 - .../node_modules/glob-watcher/test/main.js | 87 - .../node_modules/glob/LICENSE | 15 - .../node_modules/glob/README.md | 377 - .../node_modules/glob/common.js | 245 - .../node_modules/glob/glob.js | 752 - .../node_modules/glob/package.json | 99 - .../node_modules/glob/sync.js | 460 - .../node_modules/glob2base/LICENSE | 20 - .../node_modules/glob2base/README.md | 51 - .../node_modules/glob2base/index.js | 59 - .../node_modules/glob2base/package.json | 99 - .../node_modules/globule/.jshintrc | 15 - .../node_modules/globule/.npmignore | 1 - .../node_modules/globule/.travis.yml | 6 - .../node_modules/globule/Gruntfile.js | 48 - .../node_modules/globule/LICENSE-MIT | 22 - .../node_modules/globule/README.md | 117 - .../node_modules/globule/lib/globule.js | 172 - .../globule/node_modules/glob/.npmignore | 2 - .../globule/node_modules/glob/.travis.yml | 3 - .../globule/node_modules/glob/LICENSE | 27 - .../globule/node_modules/glob/README.md | 233 - .../globule/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../globule/node_modules/glob/glob.js | 643 - .../globule/node_modules/glob/package.json | 82 - .../node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 348 - .../node_modules/glob/test/cwd-test.js | 55 - .../globule/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../globule/node_modules/glob/test/root.js | 46 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../node_modules/graceful-fs/.npmignore | 1 - .../globule/node_modules/graceful-fs/LICENSE | 27 - .../node_modules/graceful-fs/README.md | 33 - .../node_modules/graceful-fs/graceful-fs.js | 442 - .../node_modules/graceful-fs/package.json | 93 - .../node_modules/graceful-fs/test/open.js | 46 - .../node_modules/graceful-fs/test/ulimit.js | 158 - .../globule/node_modules/inherits/LICENSE | 16 - .../globule/node_modules/inherits/README.md | 51 - .../globule/node_modules/inherits/inherits.js | 29 - .../node_modules/inherits/package.json | 76 - .../globule/node_modules/minimatch/.npmignore | 1 - .../globule/node_modules/minimatch/LICENSE | 23 - .../globule/node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1055 - .../node_modules/minimatch/package.json | 83 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../node_modules/globule/package.json | 101 - .../globule/test/fixtures/expand/README.md | 0 .../globule/test/fixtures/expand/css/baz.css | 0 .../globule/test/fixtures/expand/css/qux.css | 0 .../test/fixtures/expand/deep/deep.txt | 0 .../fixtures/expand/deep/deeper/deeper.txt | 0 .../expand/deep/deeper/deepest/deepest.txt | 0 .../globule/test/fixtures/expand/js/bar.js | 0 .../globule/test/fixtures/expand/js/foo.js | 0 .../node_modules/globule/test/globule_test.js | 486 - .../node_modules/glogg/LICENSE | 22 - .../node_modules/glogg/README.md | 92 - .../node_modules/glogg/index.js | 34 - .../node_modules/glogg/package.json | 97 - .../node_modules/graceful-fs/LICENSE | 15 - .../node_modules/graceful-fs/README.md | 53 - .../node_modules/graceful-fs/fs.js | 21 - .../node_modules/graceful-fs/graceful-fs.js | 253 - .../graceful-fs/legacy-streams.js | 118 - .../node_modules/graceful-fs/package.json | 104 - .../node_modules/graceful-fs/polyfills.js | 252 - .../node_modules/graceful-readlink/.npmignore | 3 - .../graceful-readlink/.travis.yml | 5 - .../node_modules/graceful-readlink/LICENSE | 22 - .../node_modules/graceful-readlink/README.md | 17 - .../node_modules/graceful-readlink/index.js | 12 - .../graceful-readlink/package.json | 75 - .../node_modules/growl/History.md | 63 - .../node_modules/growl/Readme.md | 99 - .../node_modules/growl/lib/growl.js | 234 - .../node_modules/growl/package.json | 72 - .../node_modules/growl/test.js | 20 - .../node_modules/gulp-remote-src/.npmignore | 2 - .../node_modules/gulp-remote-src/.travis.yml | 5 - .../node_modules/gulp-remote-src/CHANGELOG.md | 27 - .../node_modules/gulp-remote-src/Gulpfile.js | 90 - .../node_modules/gulp-remote-src/LICENSE | 23 - .../node_modules/gulp-remote-src/README.md | 42 - .../node_modules/gulp-remote-src/index.js | 77 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/request/.eslintrc | 45 - .../node_modules/request/.npmignore | 3 - .../node_modules/request/.travis.yml | 14 - .../node_modules/request/CHANGELOG.md | 499 - .../node_modules/request/CONTRIBUTING.md | 44 - .../node_modules/request/LICENSE | 55 - .../node_modules/request/README.md | 1059 - .../request/disabled.appveyor.yml | 36 - .../node_modules/request/examples/README.md | 115 - .../node_modules/request/index.js | 152 - .../node_modules/request/lib/auth.js | 153 - .../node_modules/request/lib/cookies.js | 39 - .../request/lib/getProxyFromURI.js | 79 - .../node_modules/request/lib/har.js | 205 - .../node_modules/request/lib/helpers.js | 64 - .../node_modules/request/lib/multipart.js | 109 - .../node_modules/request/lib/oauth.js | 147 - .../node_modules/request/lib/querystring.js | 51 - .../node_modules/request/lib/redirect.js | 153 - .../node_modules/request/lib/tunnel.js | 183 - .../node_modules/request/package.json | 137 - .../node_modules/request/release.sh | 45 - .../node_modules/request/request.js | 1399 - .../node_modules/through2/.npmignore | 3 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 140 - .../node_modules/through2/package.json | 90 - .../node_modules/through2/through2.js | 78 - .../node_modules/vinyl/.npmignore | 6 - .../node_modules/vinyl/.travis.yml | 6 - .../node_modules/vinyl/LICENSE | 20 - .../node_modules/vinyl/README.md | 123 - .../node_modules/vinyl/index.js | 128 - .../node_modules/vinyl/lib/cloneBuffer.js | 7 - .../node_modules/vinyl/lib/inspectStream.js | 12 - .../node_modules/vinyl/lib/isBuffer.js | 7 - .../node_modules/vinyl/lib/isNull.js | 3 - .../node_modules/vinyl/lib/isStream.js | 5 - .../node_modules/vinyl/package.json | 93 - .../node_modules/vinyl/test/File.js | 540 - .../node_modules/vinyl/test/cloneBuffer.js | 28 - .../node_modules/vinyl/test/inspectStream.js | 53 - .../node_modules/vinyl/test/isBuffer.js | 29 - .../node_modules/vinyl/test/isNull.js | 23 - .../node_modules/vinyl/test/isStream.js | 29 - .../node_modules/xtend/.jshintrc | 30 - .../node_modules/xtend/.npmignore | 1 - .../node_modules/xtend/LICENCE | 19 - .../node_modules/xtend/Makefile | 4 - .../node_modules/xtend/README.md | 28 - .../node_modules/xtend/index.js | 17 - .../node_modules/xtend/mutable.js | 15 - .../node_modules/xtend/package.json | 112 - .../node_modules/xtend/test.js | 63 - .../node_modules/gulp-remote-src/package.json | 103 - .../node_modules/gulp-symdest/.npmignore | 1 - .../node_modules/gulp-symdest/LICENSE | 22 - .../node_modules/gulp-symdest/README.md | 21 - .../node_modules/gulp-symdest/index.js | 50 - .../gulp-symdest/node_modules/.bin/strip-bom | 42 - .../node_modules/clone/.npmignore | 1 - .../node_modules/clone/.travis.yml | 5 - .../gulp-symdest/node_modules/clone/LICENSE | 18 - .../gulp-symdest/node_modules/clone/README.md | 126 - .../gulp-symdest/node_modules/clone/clone.js | 144 - .../node_modules/clone/package.json | 151 - .../gulp-symdest/node_modules/clone/test.js | 289 - .../node_modules/event-stream/.npmignore | 3 - .../node_modules/event-stream/.travis.yml | 3 - .../node_modules/event-stream/LICENCE | 24 - .../event-stream/examples/pretty.js | 25 - .../node_modules/event-stream/index.js | 312 - .../node_modules/event-stream/package.json | 109 - .../node_modules/event-stream/readme.markdown | 314 - .../event-stream/test/connect.asynct.js | 86 - .../event-stream/test/helper/index.js | 12 - .../event-stream/test/merge.asynct.js | 29 - .../event-stream/test/parse.asynct.js | 32 - .../event-stream/test/pause.asynct.js | 39 - .../event-stream/test/pipeline.asynct.js | 52 - .../event-stream/test/readArray.asynct.js | 89 - .../event-stream/test/readable.asynct.js | 197 - .../event-stream/test/replace.asynct.js | 76 - .../event-stream/test/simple-map.asynct.js | 343 - .../event-stream/test/spec.asynct.js | 86 - .../event-stream/test/split.asynct.js | 47 - .../event-stream/test/stringify.js | 15 - .../event-stream/test/writeArray.asynct.js | 31 - .../node_modules/glob-stream/LICENSE | 20 - .../node_modules/glob-stream/README.md | 81 - .../node_modules/glob-stream/index.js | 137 - .../node_modules/glob-stream/package.json | 104 - .../node_modules/glob-watcher/LICENSE | 20 - .../node_modules/glob-watcher/README.md | 53 - .../node_modules/glob-watcher/index.js | 39 - .../node_modules/glob-watcher/package.json | 101 - .../gulp-symdest/node_modules/glob/LICENSE | 15 - .../gulp-symdest/node_modules/glob/README.md | 369 - .../gulp-symdest/node_modules/glob/common.js | 237 - .../gulp-symdest/node_modules/glob/glob.js | 740 - .../node_modules/glob/package.json | 97 - .../gulp-symdest/node_modules/glob/sync.js | 457 - .../node_modules/graceful-fs/.npmignore | 1 - .../node_modules/graceful-fs/LICENSE | 15 - .../node_modules/graceful-fs/README.md | 36 - .../node_modules/graceful-fs/fs.js | 11 - .../node_modules/graceful-fs/graceful-fs.js | 158 - .../node_modules/graceful-fs/package.json | 99 - .../node_modules/graceful-fs/polyfills.js | 255 - .../node_modules/graceful-fs/test/max-open.js | 69 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 20 - .../graceful-fs/test/write-then-read.js | 47 - .../node_modules/minimatch/LICENSE | 15 - .../node_modules/minimatch/README.md | 216 - .../node_modules/minimatch/browser.js | 1159 - .../node_modules/minimatch/minimatch.js | 912 - .../node_modules/minimatch/package.json | 89 - .../node_modules/object-assign/index.js | 26 - .../node_modules/object-assign/license | 21 - .../node_modules/object-assign/package.json | 94 - .../node_modules/object-assign/readme.md | 51 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/split/.npmignore | 3 - .../node_modules/split/.travis.yml | 4 - .../gulp-symdest/node_modules/split/LICENCE | 22 - .../node_modules/split/examples/pretty.js | 26 - .../gulp-symdest/node_modules/split/index.js | 63 - .../node_modules/split/package.json | 84 - .../node_modules/split/readme.markdown | 66 - .../node_modules/split/test/options.asynct.js | 23 - .../split/test/partitioned_unicode.js | 34 - .../node_modules/split/test/split.asynct.js | 137 - .../split/test/try_catch.asynct.js | 51 - .../node_modules/strip-bom/cli.js | 42 - .../node_modules/strip-bom/index.js | 24 - .../node_modules/strip-bom/package.json | 105 - .../node_modules/strip-bom/readme.md | 59 - .../node_modules/through2/.npmignore | 3 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 132 - .../node_modules/through2/package.json | 91 - .../node_modules/through2/through2.js | 96 - .../node_modules/unique-stream/LICENSE | 20 - .../node_modules/unique-stream/README.md | 133 - .../node_modules/unique-stream/index.js | 48 - .../node_modules/unique-stream/package.json | 100 - .../node_modules/vinyl-fs/LICENSE | 20 - .../node_modules/vinyl-fs/README.md | 121 - .../node_modules/vinyl-fs/index.js | 8 - .../node_modules/vinyl-fs/lib/dest/index.js | 23 - .../vinyl-fs/lib/dest/writeContents/index.js | 71 - .../lib/dest/writeContents/writeBuffer.js | 14 - .../lib/dest/writeContents/writeDir.js | 9 - .../lib/dest/writeContents/writeStream.js | 33 - .../node_modules/vinyl-fs/lib/prepareWrite.js | 47 - .../vinyl-fs/lib/src/filterSince.js | 18 - .../lib/src/getContents/bufferFile.js | 16 - .../vinyl-fs/lib/src/getContents/index.js | 25 - .../vinyl-fs/lib/src/getContents/readDir.js | 8 - .../lib/src/getContents/streamFile.js | 13 - .../node_modules/vinyl-fs/lib/src/index.js | 74 - .../vinyl-fs/lib/src/resolveSymlinks.js | 38 - .../vinyl-fs/lib/symlink/index.js | 30 - .../node_modules/vinyl-fs/package.json | 111 - .../gulp-symdest/node_modules/vinyl/LICENSE | 20 - .../gulp-symdest/node_modules/vinyl/README.md | 127 - .../gulp-symdest/node_modules/vinyl/index.js | 175 - .../node_modules/vinyl/lib/cloneBuffer.js | 7 - .../node_modules/vinyl/lib/inspectStream.js | 11 - .../node_modules/vinyl/lib/isBuffer.js | 7 - .../node_modules/vinyl/lib/isNull.js | 3 - .../node_modules/vinyl/lib/isStream.js | 5 - .../node_modules/vinyl/package.json | 100 - .../node_modules/gulp-symdest/package.json | 107 - .../node_modules/gulp-util/LICENSE | 20 - .../node_modules/gulp-util/README.md | 146 - .../node_modules/gulp-util/index.js | 18 - .../node_modules/gulp-util/lib/PluginError.js | 130 - .../node_modules/gulp-util/lib/buffer.js | 15 - .../node_modules/gulp-util/lib/combine.js | 11 - .../node_modules/gulp-util/lib/env.js | 4 - .../node_modules/gulp-util/lib/isBuffer.js | 7 - .../node_modules/gulp-util/lib/isNull.js | 3 - .../node_modules/gulp-util/lib/isStream.js | 5 - .../node_modules/gulp-util/lib/log.js | 14 - .../node_modules/gulp-util/lib/noop.js | 5 - .../node_modules/gulp-util/lib/template.js | 23 - .../node_modules/gulp-util/package.json | 116 - .../node_modules/gulp-vinyl-zip/.npmignore | 2 - .../node_modules/gulp-vinyl-zip/README.md | 76 - .../node_modules/gulp-vinyl-zip/index.js | 7 - .../gulp-vinyl-zip/lib/dest/index.js | 32 - .../gulp-vinyl-zip/lib/src/index.js | 157 - .../gulp-vinyl-zip/lib/vinyl-zip.js | 14 - .../gulp-vinyl-zip/lib/zip/index.js | 51 - .../node_modules/clone/.npmignore | 1 - .../node_modules/clone/.travis.yml | 5 - .../gulp-vinyl-zip/node_modules/clone/LICENSE | 18 - .../node_modules/clone/README.md | 126 - .../node_modules/clone/clone.js | 144 - .../node_modules/clone/package.json | 151 - .../gulp-vinyl-zip/node_modules/clone/test.js | 289 - .../node_modules/event-stream/.npmignore | 3 - .../node_modules/event-stream/.travis.yml | 3 - .../node_modules/event-stream/LICENCE | 24 - .../event-stream/examples/pretty.js | 25 - .../node_modules/event-stream/index.js | 312 - .../node_modules/event-stream/package.json | 109 - .../node_modules/event-stream/readme.markdown | 314 - .../event-stream/test/connect.asynct.js | 86 - .../event-stream/test/helper/index.js | 12 - .../event-stream/test/merge.asynct.js | 29 - .../event-stream/test/parse.asynct.js | 32 - .../event-stream/test/pause.asynct.js | 39 - .../event-stream/test/pipeline.asynct.js | 52 - .../event-stream/test/readArray.asynct.js | 89 - .../event-stream/test/readable.asynct.js | 197 - .../event-stream/test/replace.asynct.js | 76 - .../event-stream/test/simple-map.asynct.js | 343 - .../event-stream/test/spec.asynct.js | 86 - .../event-stream/test/split.asynct.js | 47 - .../event-stream/test/stringify.js | 15 - .../event-stream/test/writeArray.asynct.js | 31 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/split/.npmignore | 3 - .../node_modules/split/.travis.yml | 4 - .../gulp-vinyl-zip/node_modules/split/LICENCE | 22 - .../node_modules/split/examples/pretty.js | 26 - .../node_modules/split/index.js | 63 - .../node_modules/split/package.json | 84 - .../node_modules/split/readme.markdown | 66 - .../node_modules/split/test/options.asynct.js | 23 - .../split/test/partitioned_unicode.js | 34 - .../node_modules/split/test/split.asynct.js | 137 - .../split/test/try_catch.asynct.js | 51 - .../node_modules/through2/.npmignore | 3 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 132 - .../node_modules/through2/package.json | 90 - .../node_modules/through2/through2.js | 96 - .../gulp-vinyl-zip/node_modules/vinyl/LICENSE | 20 - .../node_modules/vinyl/README.md | 127 - .../node_modules/vinyl/index.js | 175 - .../node_modules/vinyl/lib/cloneBuffer.js | 7 - .../node_modules/vinyl/lib/inspectStream.js | 11 - .../node_modules/vinyl/lib/isBuffer.js | 7 - .../node_modules/vinyl/lib/isNull.js | 3 - .../node_modules/vinyl/lib/isStream.js | 5 - .../node_modules/vinyl/package.json | 100 - .../node_modules/gulp-vinyl-zip/package.json | 109 - .../gulp-vinyl-zip/test/assets/archive.zip | 3 - .../node_modules/gulp-vinyl-zip/test/tests.js | 134 - .../node_modules/gulplog/CHANGELOG.md | 10 - .../node_modules/gulplog/LICENSE | 22 - .../node_modules/gulplog/README.md | 79 - .../node_modules/gulplog/index.js | 7 - .../node_modules/gulplog/package.json | 93 - .../node_modules/har-validator/LICENSE | 13 - .../node_modules/har-validator/README.md | 362 - .../har-validator/bin/har-validator | 45 - .../node_modules/har-validator/lib/error.js | 10 - .../node_modules/har-validator/lib/index.js | 39 - .../har-validator/lib/schemas/cache.json | 13 - .../har-validator/lib/schemas/cacheEntry.json | 31 - .../har-validator/lib/schemas/content.json | 27 - .../har-validator/lib/schemas/cookie.json | 34 - .../har-validator/lib/schemas/creator.json | 18 - .../har-validator/lib/schemas/entry.json | 51 - .../har-validator/lib/schemas/har.json | 11 - .../har-validator/lib/schemas/index.js | 49 - .../har-validator/lib/schemas/log.json | 34 - .../har-validator/lib/schemas/page.json | 30 - .../lib/schemas/pageTimings.json | 16 - .../har-validator/lib/schemas/postData.json | 41 - .../har-validator/lib/schemas/record.json | 18 - .../har-validator/lib/schemas/request.json | 55 - .../har-validator/lib/schemas/response.json | 52 - .../har-validator/lib/schemas/timings.json | 40 - .../node_modules/har-validator/package.json | 112 - .../node_modules/has-ansi/index.js | 4 - .../node_modules/has-ansi/license | 21 - .../node_modules/has-ansi/package.json | 110 - .../node_modules/has-ansi/readme.md | 36 - .../node_modules/has-gulplog/LICENSE | 22 - .../node_modules/has-gulplog/README.md | 2 - .../node_modules/has-gulplog/index.js | 9 - .../node_modules/has-gulplog/package.json | 90 - .../node_modules/hawk/.npmignore | 20 - .../node_modules/hawk/.travis.yml | 5 - .../node_modules/hawk/LICENSE | 28 - .../node_modules/hawk/Makefile | 8 - .../node_modules/hawk/README.md | 635 - .../node_modules/hawk/bower.json | 24 - .../node_modules/hawk/component.json | 19 - .../node_modules/hawk/example/usage.js | 78 - .../node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../node_modules/hawk/index.js | 1 - .../node_modules/hawk/lib/browser.js | 641 - .../node_modules/hawk/lib/client.js | 369 - .../node_modules/hawk/lib/crypto.js | 126 - .../node_modules/hawk/lib/index.js | 15 - .../node_modules/hawk/lib/server.js | 534 - .../node_modules/hawk/lib/utils.js | 164 - .../node_modules/hawk/package.json | 96 - .../node_modules/hawk/test/browser.js | 1453 - .../node_modules/hawk/test/client.js | 443 - .../node_modules/hawk/test/crypto.js | 86 - .../node_modules/hawk/test/index.js | 378 - .../node_modules/hawk/test/message.js | 261 - .../node_modules/hawk/test/readme.js | 98 - .../node_modules/hawk/test/server.js | 985 - .../node_modules/hawk/test/uri.js | 590 - .../node_modules/hawk/test/utils.js | 120 - .../node_modules/hoek/.npmignore | 18 - .../node_modules/hoek/.travis.yml | 7 - .../node_modules/hoek/CONTRIBUTING.md | 1 - .../node_modules/hoek/LICENSE | 31 - .../node_modules/hoek/README.md | 584 - .../node_modules/hoek/images/hoek.png | Bin 37939 -> 0 bytes .../node_modules/hoek/lib/escape.js | 132 - .../node_modules/hoek/lib/index.js | 993 - .../node_modules/hoek/package.json | 88 - .../node_modules/hoek/test/escaper.js | 88 - .../node_modules/hoek/test/index.js | 2513 - .../node_modules/hoek/test/modules/ignore.txt | 0 .../node_modules/hoek/test/modules/test1.js | 1 - .../node_modules/hoek/test/modules/test2.js | 1 - .../node_modules/hoek/test/modules/test3.js | 1 - .../node_modules/hosted-git-info/.npmignore | 3 - .../node_modules/hosted-git-info/.travis.yml | 5 - .../node_modules/hosted-git-info/LICENSE | 13 - .../node_modules/hosted-git-info/README.md | 99 - .../hosted-git-info/git-host-info.js | 64 - .../node_modules/hosted-git-info/git-host.js | 96 - .../node_modules/hosted-git-info/index.js | 103 - .../node_modules/hosted-git-info/package.json | 86 - .../hosted-git-info/test/basic.js | 15 - .../bitbucket-https-with-embedded-auth.js | 27 - .../hosted-git-info/test/bitbucket.js | 23 - .../node_modules/hosted-git-info/test/gist.js | 41 - .../hosted-git-info/test/github.js | 40 - .../hosted-git-info/test/gitlab.js | 23 - .../test/https-with-inline-auth.js | 39 - .../test/lib/standard-tests.js | 27 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 79 - .../http-signature/http_signing.md | 296 - .../node_modules/http-signature/lib/index.js | 27 - .../node_modules/http-signature/lib/parser.js | 304 - .../node_modules/http-signature/lib/signer.js | 178 - .../node_modules/http-signature/lib/util.js | 306 - .../node_modules/http-signature/lib/verify.js | 56 - .../node_modules/http-signature/package.json | 102 - .../node_modules/indent-string/index.js | 20 - .../node_modules/indent-string/license | 21 - .../node_modules/indent-string/package.json | 91 - .../node_modules/indent-string/readme.md | 58 - .../node_modules/inflight/.eslintrc | 17 - .../node_modules/inflight/LICENSE | 15 - .../node_modules/inflight/README.md | 37 - .../node_modules/inflight/inflight.js | 44 - .../node_modules/inflight/package.json | 89 - .../node_modules/inflight/test.js | 97 - .../node_modules/inherits/LICENSE | 16 - .../node_modules/inherits/README.md | 42 - .../node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 23 - .../node_modules/inherits/package.json | 94 - .../node_modules/inherits/test.js | 25 - .../node_modules/interpret/CHANGELOG | 98 - .../node_modules/interpret/LICENSE | 22 - .../node_modules/interpret/README.md | 126 - .../node_modules/interpret/index.js | 121 - .../node_modules/interpret/package.json | 107 - .../node_modules/is-arrayish/.editorconfig | 18 - .../node_modules/is-arrayish/.istanbul.yml | 4 - .../node_modules/is-arrayish/.npmignore | 5 - .../node_modules/is-arrayish/.travis.yml | 17 - .../node_modules/is-arrayish/LICENSE | 21 - .../node_modules/is-arrayish/README.md | 16 - .../node_modules/is-arrayish/index.js | 10 - .../node_modules/is-arrayish/package.json | 90 - .../node_modules/is-builtin-module/index.js | 10 - .../node_modules/is-builtin-module/license | 21 - .../is-builtin-module/package.json | 98 - .../node_modules/is-builtin-module/readme.md | 33 - .../node_modules/is-finite/index.js | 6 - .../node_modules/is-finite/license | 21 - .../node_modules/is-finite/package.json | 93 - .../node_modules/is-finite/readme.md | 30 - .../node_modules/is-my-json-valid/.npmignore | 2 - .../node_modules/is-my-json-valid/.travis.yml | 3 - .../node_modules/is-my-json-valid/LICENSE | 21 - .../node_modules/is-my-json-valid/README.md | 173 - .../node_modules/is-my-json-valid/example.js | 18 - .../node_modules/is-my-json-valid/formats.js | 14 - .../node_modules/is-my-json-valid/index.js | 584 - .../is-my-json-valid/package.json | 100 - .../node_modules/is-my-json-valid/require.js | 12 - .../is-my-json-valid/test/fixtures/cosmic.js | 84 - .../json-schema-draft4/additionalItems.json | 82 - .../additionalProperties.json | 88 - .../test/json-schema-draft4/allOf.json | 112 - .../test/json-schema-draft4/anyOf.json | 68 - .../test/json-schema-draft4/bignum.json | 107 - .../test/json-schema-draft4/default.json | 49 - .../test/json-schema-draft4/definitions.json | 32 - .../test/json-schema-draft4/dependencies.json | 113 - .../test/json-schema-draft4/enum.json | 72 - .../test/json-schema-draft4/format.json | 143 - .../test/json-schema-draft4/items.json | 46 - .../test/json-schema-draft4/maxItems.json | 28 - .../test/json-schema-draft4/maxLength.json | 28 - .../json-schema-draft4/maxProperties.json | 28 - .../test/json-schema-draft4/maximum.json | 42 - .../test/json-schema-draft4/minItems.json | 28 - .../test/json-schema-draft4/minLength.json | 28 - .../json-schema-draft4/minProperties.json | 28 - .../test/json-schema-draft4/minimum.json | 42 - .../test/json-schema-draft4/multipleOf.json | 96 - .../test/json-schema-draft4/not.json | 96 - .../json-schema-draft4/nullAndFormat.json | 18 - .../json-schema-draft4/nullAndObject.json | 18 - .../test/json-schema-draft4/oneOf.json | 68 - .../test/json-schema-draft4/pattern.json | 23 - .../json-schema-draft4/patternProperties.json | 110 - .../test/json-schema-draft4/properties.json | 92 - .../test/json-schema-draft4/ref.json | 128 - .../test/json-schema-draft4/refRemote.json | 74 - .../test/json-schema-draft4/required.json | 39 - .../test/json-schema-draft4/type.json | 330 - .../test/json-schema-draft4/uniqueItems.json | 79 - .../is-my-json-valid/test/json-schema.js | 23 - .../is-my-json-valid/test/misc.js | 447 - .../node_modules/is-property/.npmignore | 17 - .../node_modules/is-property/LICENSE | 22 - .../node_modules/is-property/README.md | 28 - .../node_modules/is-property/is-property.js | 5 - .../node_modules/is-property/package.json | 84 - .../node_modules/is-typedarray/LICENSE.md | 18 - .../node_modules/is-typedarray/README.md | 16 - .../node_modules/is-typedarray/index.js | 41 - .../node_modules/is-typedarray/package.json | 82 - .../node_modules/is-typedarray/test.js | 34 - .../node_modules/is-utf8/LICENSE | 9 - .../node_modules/is-utf8/README.md | 16 - .../node_modules/is-utf8/is-utf8.js | 76 - .../node_modules/is-utf8/package.json | 80 - .../node_modules/is/CHANGELOG.md | 100 - .../node_modules/is/LICENSE.md | 23 - .../node_modules/is/Makefile | 17 - .../node_modules/is/README.md | 140 - .../node_modules/is/component.json | 8 - .../node_modules/is/index.js | 761 - .../node_modules/is/package.json | 119 - .../node_modules/is/test/index.js | 636 - .../node_modules/isarray/README.md | 54 - .../node_modules/isarray/build/build.js | 209 - .../node_modules/isarray/component.json | 19 - .../node_modules/isarray/index.js | 3 - .../node_modules/isarray/package.json | 87 - .../node_modules/isstream/.jshintrc | 59 - .../node_modules/isstream/.npmignore | 1 - .../node_modules/isstream/.travis.yml | 12 - .../node_modules/isstream/LICENSE.md | 11 - .../node_modules/isstream/README.md | 66 - .../node_modules/isstream/isstream.js | 27 - .../node_modules/isstream/package.json | 85 - .../node_modules/isstream/test.js | 168 - .../node_modules/jade/.npmignore | 15 - .../node_modules/jade/LICENSE | 22 - .../node_modules/jade/bin/jade | 147 - .../node_modules/jade/index.js | 4 - .../node_modules/jade/jade.js | 3586 - .../node_modules/jade/jade.md | 510 - .../node_modules/jade/jade.min.js | 2 - .../node_modules/jade/lib/compiler.js | 642 - .../node_modules/jade/lib/doctypes.js | 18 - .../node_modules/jade/lib/filters.js | 97 - .../node_modules/jade/lib/inline-tags.js | 28 - .../node_modules/jade/lib/jade.js | 237 - .../node_modules/jade/lib/lexer.js | 771 - .../node_modules/jade/lib/nodes/attrs.js | 77 - .../jade/lib/nodes/block-comment.js | 33 - .../node_modules/jade/lib/nodes/block.js | 121 - .../node_modules/jade/lib/nodes/case.js | 43 - .../node_modules/jade/lib/nodes/code.js | 35 - .../node_modules/jade/lib/nodes/comment.js | 32 - .../node_modules/jade/lib/nodes/doctype.js | 29 - .../node_modules/jade/lib/nodes/each.js | 35 - .../node_modules/jade/lib/nodes/filter.js | 35 - .../node_modules/jade/lib/nodes/index.js | 20 - .../node_modules/jade/lib/nodes/literal.js | 32 - .../node_modules/jade/lib/nodes/mixin.js | 36 - .../node_modules/jade/lib/nodes/node.js | 25 - .../node_modules/jade/lib/nodes/tag.js | 95 - .../node_modules/jade/lib/nodes/text.js | 36 - .../node_modules/jade/lib/parser.js | 710 - .../node_modules/jade/lib/runtime.js | 174 - .../node_modules/jade/lib/self-closing.js | 19 - .../node_modules/jade/lib/utils.js | 49 - .../jade/node_modules/commander/.npmignore | 4 - .../jade/node_modules/commander/.travis.yml | 4 - .../jade/node_modules/commander/History.md | 107 - .../jade/node_modules/commander/Makefile | 7 - .../jade/node_modules/commander/Readme.md | 262 - .../jade/node_modules/commander/index.js | 2 - .../node_modules/commander/lib/commander.js | 1026 - .../jade/node_modules/commander/package.json | 84 - .../jade/node_modules/mkdirp/.gitignore.orig | 2 - .../jade/node_modules/mkdirp/.gitignore.rej | 5 - .../jade/node_modules/mkdirp/.npmignore | 2 - .../jade/node_modules/mkdirp/LICENSE | 21 - .../jade/node_modules/mkdirp/README.markdown | 54 - .../jade/node_modules/mkdirp/examples/pow.js | 6 - .../node_modules/mkdirp/examples/pow.js.orig | 6 - .../node_modules/mkdirp/examples/pow.js.rej | 19 - .../jade/node_modules/mkdirp/index.js | 79 - .../jade/node_modules/mkdirp/package.json | 83 - .../jade/node_modules/mkdirp/test/chmod.js | 38 - .../jade/node_modules/mkdirp/test/clobber.js | 37 - .../jade/node_modules/mkdirp/test/mkdirp.js | 28 - .../jade/node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../jade/node_modules/mkdirp/test/race.js | 41 - .../jade/node_modules/mkdirp/test/rel.js | 32 - .../jade/node_modules/mkdirp/test/sync.js | 27 - .../jade/node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 27 - .../node_modules/jade/package.json | 87 - .../node_modules/jade/runtime.js | 179 - .../node_modules/jade/runtime.min.js | 1 - .../node_modules/jade/test.jade | 7 - .../node_modules/jade/testing/head.jade | 5 - .../node_modules/jade/testing/index.jade | 22 - .../node_modules/jade/testing/index.js | 11 - .../node_modules/jade/testing/layout.jade | 6 - .../node_modules/jade/testing/user.jade | 7 - .../node_modules/jade/testing/user.js | 27 - .../node_modules/jodid25519/.npmignore | 11 - .../node_modules/jodid25519/.travis.yml | 7 - .../node_modules/jodid25519/AUTHORS.md | 3 - .../node_modules/jodid25519/LICENSE | 23 - .../node_modules/jodid25519/README.md | 51 - .../node_modules/jodid25519/almond.0 | 42 - .../node_modules/jodid25519/almond.1 | 13 - .../node_modules/jodid25519/index.js | 35 - .../node_modules/jodid25519/jsdoc.json | 19 - .../node_modules/jodid25519/lib/core.js | 481 - .../node_modules/jodid25519/lib/curve255.js | 221 - .../node_modules/jodid25519/lib/dh.js | 111 - .../node_modules/jodid25519/lib/eddsa.js | 573 - .../node_modules/jodid25519/lib/utils.js | 198 - .../node_modules/jodid25519/package.json | 96 - .../node_modules/jsbn/.npmignore | 2 - .../node_modules/jsbn/LICENSE | 40 - .../node_modules/jsbn/README.md | 175 - .../node_modules/jsbn/example.html | 12 - .../node_modules/jsbn/example.js | 3 - .../node_modules/jsbn/index.js | 1358 - .../node_modules/jsbn/package.json | 79 - .../node_modules/json-schema/README.md | 5 - .../json-schema/draft-00/hyper-schema | 68 - .../json-schema/draft-00/json-ref | 26 - .../node_modules/json-schema/draft-00/links | 33 - .../node_modules/json-schema/draft-00/schema | 155 - .../json-schema/draft-01/hyper-schema | 68 - .../json-schema/draft-01/json-ref | 26 - .../node_modules/json-schema/draft-01/links | 33 - .../node_modules/json-schema/draft-01/schema | 155 - .../json-schema/draft-02/hyper-schema | 68 - .../json-schema/draft-02/json-ref | 26 - .../node_modules/json-schema/draft-02/links | 35 - .../node_modules/json-schema/draft-02/schema | 166 - .../json-schema/draft-03/examples/address | 20 - .../json-schema/draft-03/examples/calendar | 53 - .../json-schema/draft-03/examples/card | 105 - .../json-schema/draft-03/examples/geo | 8 - .../json-schema/draft-03/examples/interfaces | 23 - .../json-schema/draft-03/hyper-schema | 60 - .../json-schema/draft-03/json-ref | 26 - .../node_modules/json-schema/draft-03/links | 35 - .../node_modules/json-schema/draft-03/schema | 174 - .../json-schema/draft-04/hyper-schema | 60 - .../node_modules/json-schema/draft-04/links | 41 - .../node_modules/json-schema/draft-04/schema | 189 - .../json-schema/draft-zyp-json-schema-03.xml | 1120 - .../json-schema/draft-zyp-json-schema-04.xml | 1072 - .../node_modules/json-schema/lib/links.js | 52 - .../node_modules/json-schema/lib/validate.js | 260 - .../node_modules/json-schema/package.json | 86 - .../node_modules/json-schema/test/tests.js | 95 - .../json-stable-stringify/.npmignore | 1 - .../json-stable-stringify/.travis.yml | 4 - .../json-stable-stringify/LICENSE | 18 - .../json-stable-stringify/example/key_cmp.js | 7 - .../json-stable-stringify/example/nested.js | 3 - .../json-stable-stringify/example/str.js | 3 - .../example/value_cmp.js | 7 - .../json-stable-stringify/index.js | 84 - .../json-stable-stringify/package.json | 101 - .../json-stable-stringify/readme.markdown | 130 - .../json-stable-stringify/test/cmp.js | 11 - .../json-stable-stringify/test/nested.js | 35 - .../json-stable-stringify/test/replacer.js | 74 - .../json-stable-stringify/test/space.js | 59 - .../json-stable-stringify/test/str.js | 32 - .../json-stable-stringify/test/to-json.js | 20 - .../json-stringify-safe/.npmignore | 1 - .../json-stringify-safe/CHANGELOG.md | 14 - .../node_modules/json-stringify-safe/LICENSE | 15 - .../node_modules/json-stringify-safe/Makefile | 35 - .../json-stringify-safe/README.md | 52 - .../json-stringify-safe/package.json | 94 - .../json-stringify-safe/stringify.js | 27 - .../json-stringify-safe/test/mocha.opts | 2 - .../test/stringify_test.js | 246 - .../node_modules/jsonify/README.markdown | 34 - .../node_modules/jsonify/index.js | 2 - .../node_modules/jsonify/lib/parse.js | 273 - .../node_modules/jsonify/lib/stringify.js | 154 - .../node_modules/jsonify/package.json | 82 - .../node_modules/jsonify/test/parse.js | 16 - .../node_modules/jsonify/test/stringify.js | 15 - .../node_modules/jsonpointer/.travis.yml | 10 - .../node_modules/jsonpointer/README.md | 32 - .../node_modules/jsonpointer/jsonpointer.js | 76 - .../node_modules/jsonpointer/package.json | 91 - .../node_modules/jsonpointer/test.js | 98 - .../node_modules/jsprim/CHANGES.md | 30 - .../node_modules/jsprim/LICENSE | 19 - .../node_modules/jsprim/README.md | 228 - .../node_modules/jsprim/lib/jsprim.js | 478 - .../node_modules/jsprim/package.json | 73 - .../node_modules/liftoff/.jscsrc | 60 - .../node_modules/liftoff/.jshintrc | 11 - .../node_modules/liftoff/.npmignore | 2 - .../node_modules/liftoff/.travis.yml | 9 - .../node_modules/liftoff/CHANGELOG | 123 - .../node_modules/liftoff/LICENSE | 22 - .../node_modules/liftoff/README.md | 304 - .../node_modules/liftoff/UPGRADING.md | 28 - .../node_modules/liftoff/appveyor.yml | 26 - .../node_modules/liftoff/index.js | 205 - .../liftoff/lib/build_config_name.js | 17 - .../node_modules/liftoff/lib/file_search.js | 14 - .../node_modules/liftoff/lib/find_config.js | 25 - .../node_modules/liftoff/lib/find_cwd.js | 18 - .../node_modules/liftoff/lib/parse_options.js | 35 - .../liftoff/lib/silent_require.js | 5 - .../node_modules/liftoff/package.json | 104 - .../node_modules/load-json-file/index.js | 21 - .../node_modules/load-json-file/license | 21 - .../node_modules/load-json-file/package.json | 101 - .../node_modules/load-json-file/readme.md | 45 - .../node_modules/lodash._basecopy/LICENSE.txt | 22 - .../node_modules/lodash._basecopy/README.md | 20 - .../node_modules/lodash._basecopy/index.js | 32 - .../lodash._basecopy/package.json | 115 - .../node_modules/lodash._basetostring/LICENSE | 22 - .../lodash._basetostring/README.md | 20 - .../lodash._basetostring/index.js | 22 - .../lodash._basetostring/package.json | 115 - .../lodash._basevalues/LICENSE.txt | 22 - .../node_modules/lodash._basevalues/README.md | 20 - .../node_modules/lodash._basevalues/index.js | 31 - .../lodash._basevalues/package.json | 99 - .../node_modules/lodash._getnative/LICENSE | 22 - .../node_modules/lodash._getnative/README.md | 20 - .../node_modules/lodash._getnative/index.js | 137 - .../lodash._getnative/package.json | 111 - .../lodash._isiterateecall/LICENSE.txt | 22 - .../lodash._isiterateecall/README.md | 20 - .../lodash._isiterateecall/index.js | 132 - .../lodash._isiterateecall/package.json | 115 - .../node_modules/lodash._reescape/LICENSE.txt | 22 - .../node_modules/lodash._reescape/README.md | 20 - .../node_modules/lodash._reescape/index.js | 13 - .../lodash._reescape/package.json | 99 - .../lodash._reevaluate/LICENSE.txt | 22 - .../node_modules/lodash._reevaluate/README.md | 20 - .../node_modules/lodash._reevaluate/index.js | 13 - .../lodash._reevaluate/package.json | 99 - .../lodash._reinterpolate/LICENSE.txt | 22 - .../lodash._reinterpolate/README.md | 20 - .../lodash._reinterpolate/index.js | 13 - .../lodash._reinterpolate/package.json | 113 - .../node_modules/lodash._root/LICENSE | 23 - .../node_modules/lodash._root/README.md | 18 - .../node_modules/lodash._root/index.js | 59 - .../node_modules/lodash._root/package.json | 101 - .../node_modules/lodash.escape/LICENSE | 22 - .../node_modules/lodash.escape/README.md | 18 - .../node_modules/lodash.escape/index.js | 180 - .../node_modules/lodash.escape/package.json | 108 - .../node_modules/lodash.isarguments/LICENSE | 23 - .../node_modules/lodash.isarguments/README.md | 18 - .../node_modules/lodash.isarguments/index.js | 243 - .../lodash.isarguments/package.json | 105 - .../node_modules/lodash.isarray/LICENSE | 22 - .../node_modules/lodash.isarray/README.md | 20 - .../node_modules/lodash.isarray/index.js | 180 - .../node_modules/lodash.isarray/package.json | 121 - .../node_modules/lodash.keys/LICENSE | 22 - .../node_modules/lodash.keys/README.md | 20 - .../node_modules/lodash.keys/index.js | 236 - .../node_modules/lodash.keys/package.json | 125 - .../node_modules/lodash.restparam/LICENSE.txt | 22 - .../node_modules/lodash.restparam/README.md | 20 - .../node_modules/lodash.restparam/index.js | 67 - .../lodash.restparam/package.json | 121 - .../node_modules/lodash.template/LICENSE | 22 - .../node_modules/lodash.template/README.md | 20 - .../node_modules/lodash.template/index.js | 389 - .../node_modules/lodash.template/package.json | 131 - .../lodash.templatesettings/LICENSE | 22 - .../lodash.templatesettings/README.md | 18 - .../lodash.templatesettings/index.js | 77 - .../lodash.templatesettings/package.json | 107 - .../node_modules/lodash/LICENSE.txt | 22 - .../node_modules/lodash/README.md | 128 - .../node_modules/lodash/dist/lodash.compat.js | 5152 - .../lodash/dist/lodash.compat.min.js | 42 - .../node_modules/lodash/dist/lodash.js | 4983 - .../node_modules/lodash/dist/lodash.min.js | 41 - .../lodash/dist/lodash.underscore.js | 4307 - .../lodash/dist/lodash.underscore.min.js | 34 - .../node_modules/lodash/package.json | 125 - .../node_modules/loud-rejection/api.js | 33 - .../node_modules/loud-rejection/index.js | 35 - .../node_modules/loud-rejection/license | 21 - .../node_modules/loud-rejection/package.json | 119 - .../node_modules/loud-rejection/readme.md | 55 - .../node_modules/loud-rejection/register.js | 3 - .../node_modules/lru-cache/.npmignore | 1 - .../node_modules/lru-cache/.travis.yml | 8 - .../node_modules/lru-cache/CONTRIBUTORS | 14 - .../node_modules/lru-cache/LICENSE | 15 - .../node_modules/lru-cache/README.md | 137 - .../node_modules/lru-cache/lib/lru-cache.js | 334 - .../node_modules/lru-cache/package.json | 85 - .../node_modules/lru-cache/test/basic.js | 396 - .../node_modules/lru-cache/test/foreach.js | 120 - .../lru-cache/test/memory-leak.js | 51 - .../node_modules/lru-cache/test/serialize.js | 216 - .../node_modules/map-obj/index.js | 13 - .../node_modules/map-obj/license | 21 - .../node_modules/map-obj/package.json | 93 - .../node_modules/map-obj/readme.md | 29 - .../node_modules/map-stream/.npmignore | 3 - .../node_modules/map-stream/.travis.yml | 4 - .../node_modules/map-stream/LICENCE | 22 - .../map-stream/examples/pretty.js | 26 - .../node_modules/map-stream/index.js | 145 - .../node_modules/map-stream/package.json | 79 - .../node_modules/map-stream/readme.markdown | 37 - .../map-stream/test/simple-map.asynct.js | 318 - .../node_modules/meow/index.js | 82 - .../node_modules/meow/license | 21 - .../meow/node_modules/object-assign/index.js | 39 - .../meow/node_modules/object-assign/license | 21 - .../node_modules/object-assign/package.json | 104 - .../meow/node_modules/object-assign/readme.md | 51 - .../node_modules/meow/package.json | 113 - .../node_modules/meow/readme.md | 159 - .../node_modules/merge-stream/README.md | 25 - .../node_modules/merge-stream/index.js | 40 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/through2/.npmignore | 3 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 132 - .../node_modules/through2/package.json | 90 - .../node_modules/through2/through2.js | 96 - .../node_modules/merge-stream/package.json | 85 - .../node_modules/mime-db/HISTORY.md | 341 - .../node_modules/mime-db/LICENSE | 22 - .../node_modules/mime-db/README.md | 82 - .../node_modules/mime-db/db.json | 6627 - .../node_modules/mime-db/index.js | 11 - .../node_modules/mime-db/package.json | 126 - .../node_modules/mime-types/HISTORY.md | 115 - .../node_modules/mime-types/LICENSE | 22 - .../node_modules/mime-types/README.md | 102 - .../node_modules/mime-types/index.js | 63 - .../node_modules/mime-db/HISTORY.md | 212 - .../mime-types/node_modules/mime-db/LICENSE | 22 - .../mime-types/node_modules/mime-db/README.md | 76 - .../mime-types/node_modules/mime-db/db.json | 6359 - .../mime-types/node_modules/mime-db/index.js | 11 - .../node_modules/mime-db/package.json | 120 - .../node_modules/mime-types/package.json | 109 - .../node_modules/minimatch/LICENSE | 15 - .../node_modules/minimatch/README.md | 216 - .../node_modules/minimatch/minimatch.js | 912 - .../node_modules/minimatch/package.json | 86 - .../node_modules/minimist/.travis.yml | 8 - .../node_modules/minimist/LICENSE | 18 - .../node_modules/minimist/example/parse.js | 2 - .../node_modules/minimist/index.js | 236 - .../node_modules/minimist/package.json | 99 - .../node_modules/minimist/readme.markdown | 91 - .../node_modules/minimist/test/all_bool.js | 32 - .../node_modules/minimist/test/bool.js | 166 - .../node_modules/minimist/test/dash.js | 31 - .../minimist/test/default_bool.js | 35 - .../node_modules/minimist/test/dotted.js | 22 - .../node_modules/minimist/test/kv_short.js | 16 - .../node_modules/minimist/test/long.js | 31 - .../node_modules/minimist/test/num.js | 36 - .../node_modules/minimist/test/parse.js | 197 - .../minimist/test/parse_modified.js | 9 - .../node_modules/minimist/test/short.js | 67 - .../node_modules/minimist/test/stop_early.js | 15 - .../node_modules/minimist/test/unknown.js | 102 - .../node_modules/minimist/test/whitespace.js | 8 - .../node_modules/mkdirp/.travis.yml | 8 - .../node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/bin/cmd.js | 33 - .../node_modules/mkdirp/bin/usage.txt | 12 - .../node_modules/mkdirp/examples/pow.js | 6 - .../node_modules/mkdirp/index.js | 98 - .../mkdirp/node_modules/minimist/.travis.yml | 4 - .../mkdirp/node_modules/minimist/LICENSE | 18 - .../node_modules/minimist/example/parse.js | 2 - .../mkdirp/node_modules/minimist/index.js | 187 - .../mkdirp/node_modules/minimist/package.json | 93 - .../node_modules/minimist/readme.markdown | 73 - .../mkdirp/node_modules/minimist/test/dash.js | 24 - .../minimist/test/default_bool.js | 20 - .../node_modules/minimist/test/dotted.js | 16 - .../mkdirp/node_modules/minimist/test/long.js | 31 - .../node_modules/minimist/test/parse.js | 318 - .../minimist/test/parse_modified.js | 9 - .../node_modules/minimist/test/short.js | 67 - .../node_modules/minimist/test/whitespace.js | 8 - .../node_modules/mkdirp/package.json | 88 - .../node_modules/mkdirp/readme.markdown | 100 - .../node_modules/mkdirp/test/chmod.js | 41 - .../node_modules/mkdirp/test/clobber.js | 38 - .../node_modules/mkdirp/test/mkdirp.js | 28 - .../node_modules/mkdirp/test/opts_fs.js | 29 - .../node_modules/mkdirp/test/opts_fs_sync.js | 27 - .../node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 36 - .../node_modules/mkdirp/test/race.js | 37 - .../node_modules/mkdirp/test/rel.js | 32 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../node_modules/mkdirp/test/root.js | 19 - .../node_modules/mkdirp/test/sync.js | 32 - .../node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../node_modules/mocha/CHANGELOG.md | 1154 - .../node_modules/mocha/LICENSE | 22 - .../node_modules/mocha/README.md | 12 - .../node_modules/mocha/bin/.eslintrc | 3 - .../node_modules/mocha/bin/_mocha | 499 - .../node_modules/mocha/bin/mocha | 72 - .../node_modules/mocha/bin/options.js | 39 - .../node_modules/mocha/images/error.png | Bin 412 -> 0 bytes .../node_modules/mocha/images/ok.png | Bin 388 -> 0 bytes .../node_modules/mocha/index.js | 3 - .../node_modules/mocha/lib/browser/debug.js | 4 - .../node_modules/mocha/lib/browser/events.js | 193 - .../mocha/lib/browser/progress.js | 117 - .../node_modules/mocha/lib/browser/tty.js | 11 - .../node_modules/mocha/lib/context.js | 104 - .../node_modules/mocha/lib/hook.js | 46 - .../node_modules/mocha/lib/interfaces/bdd.js | 117 - .../mocha/lib/interfaces/common.js | 85 - .../mocha/lib/interfaces/exports.js | 61 - .../mocha/lib/interfaces/index.js | 4 - .../mocha/lib/interfaces/qunit.js | 94 - .../node_modules/mocha/lib/interfaces/tdd.js | 106 - .../node_modules/mocha/lib/mocha.js | 502 - .../node_modules/mocha/lib/ms.js | 128 - .../node_modules/mocha/lib/pending.js | 15 - .../node_modules/mocha/lib/reporters/base.js | 487 - .../node_modules/mocha/lib/reporters/doc.js | 62 - .../node_modules/mocha/lib/reporters/dot.js | 66 - .../mocha/lib/reporters/html-cov.js | 56 - .../node_modules/mocha/lib/reporters/html.js | 329 - .../node_modules/mocha/lib/reporters/index.js | 19 - .../mocha/lib/reporters/json-cov.js | 151 - .../mocha/lib/reporters/json-stream.js | 60 - .../node_modules/mocha/lib/reporters/json.js | 90 - .../mocha/lib/reporters/landing.js | 92 - .../node_modules/mocha/lib/reporters/list.js | 61 - .../mocha/lib/reporters/markdown.js | 97 - .../node_modules/mocha/lib/reporters/min.js | 36 - .../node_modules/mocha/lib/reporters/nyan.js | 261 - .../mocha/lib/reporters/progress.js | 89 - .../node_modules/mocha/lib/reporters/spec.js | 83 - .../node_modules/mocha/lib/reporters/tap.js | 68 - .../lib/reporters/templates/coverage.jade | 51 - .../mocha/lib/reporters/templates/menu.jade | 13 - .../mocha/lib/reporters/templates/script.html | 34 - .../mocha/lib/reporters/templates/style.html | 324 - .../node_modules/mocha/lib/reporters/xunit.js | 174 - .../node_modules/mocha/lib/runnable.js | 352 - .../node_modules/mocha/lib/runner.js | 899 - .../node_modules/mocha/lib/suite.js | 389 - .../node_modules/mocha/lib/template.html | 18 - .../node_modules/mocha/lib/test.js | 45 - .../node_modules/mocha/lib/utils.js | 740 - .../node_modules/mocha/mocha.css | 305 - .../node_modules/mocha/mocha.js | 12710 -- .../mocha/node_modules/.bin/supports-color | 29 - .../mocha/node_modules/commander/Readme.md | 208 - .../mocha/node_modules/commander/index.js | 876 - .../mocha/node_modules/commander/package.json | 97 - .../mocha/node_modules/diff/README.md | 181 - .../mocha/node_modules/diff/diff.js | 619 - .../mocha/node_modules/diff/package.json | 88 - .../escape-string-regexp/index.js | 11 - .../escape-string-regexp/package.json | 95 - .../escape-string-regexp/readme.md | 27 - .../mocha/node_modules/glob/.npmignore | 2 - .../mocha/node_modules/glob/.travis.yml | 3 - .../mocha/node_modules/glob/LICENSE | 27 - .../mocha/node_modules/glob/README.md | 250 - .../mocha/node_modules/glob/examples/g.js | 9 - .../node_modules/glob/examples/usr-local.js | 9 - .../mocha/node_modules/glob/glob.js | 675 - .../mocha/node_modules/glob/package.json | 82 - .../mocha/node_modules/glob/test/00-setup.js | 176 - .../node_modules/glob/test/bash-comparison.js | 63 - .../node_modules/glob/test/bash-results.json | 350 - .../mocha/node_modules/glob/test/cwd-test.js | 55 - .../node_modules/glob/test/globstar-match.js | 19 - .../mocha/node_modules/glob/test/mark.js | 74 - .../node_modules/glob/test/nocase-nomagic.js | 113 - .../node_modules/glob/test/pause-resume.js | 73 - .../node_modules/glob/test/root-nomount.js | 39 - .../mocha/node_modules/glob/test/root.js | 46 - .../mocha/node_modules/glob/test/stat.js | 32 - .../node_modules/glob/test/zz-cleanup.js | 11 - .../mocha/node_modules/graceful-fs/.npmignore | 1 - .../mocha/node_modules/graceful-fs/LICENSE | 27 - .../mocha/node_modules/graceful-fs/README.md | 26 - .../node_modules/graceful-fs/graceful-fs.js | 160 - .../node_modules/graceful-fs/package.json | 93 - .../node_modules/graceful-fs/polyfills.js | 228 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 21 - .../mocha/node_modules/minimatch/.npmignore | 1 - .../mocha/node_modules/minimatch/LICENSE | 23 - .../mocha/node_modules/minimatch/README.md | 218 - .../mocha/node_modules/minimatch/minimatch.js | 1055 - .../mocha/node_modules/minimatch/package.json | 82 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../test/extglob-ending-with-state-char.js | 8 - .../mocha/node_modules/supports-color/cli.js | 29 - .../node_modules/supports-color/index.js | 39 - .../node_modules/supports-color/package.json | 111 - .../node_modules/supports-color/readme.md | 44 - .../node_modules/mocha/package.json | 1102 - .../node_modules/ms/.npmignore | 5 - .../node_modules/ms/History.md | 66 - .../node_modules/ms/LICENSE | 20 - .../node_modules/ms/README.md | 35 - .../node_modules/ms/index.js | 125 - .../node_modules/ms/package.json | 74 - .../node_modules/multipipe/.npmignore | 1 - .../node_modules/multipipe/.travis.yml | 3 - .../node_modules/multipipe/History.md | 25 - .../node_modules/multipipe/Makefile | 10 - .../node_modules/multipipe/Readme.md | 102 - .../node_modules/multipipe/index.js | 72 - .../node_modules/multipipe/package.json | 71 - .../node_modules/multipipe/test/multipipe.js | 141 - .../node_modules/node-uuid/.npmignore | 4 - .../node_modules/node-uuid/LICENSE.md | 21 - .../node_modules/node-uuid/README.md | 254 - .../node-uuid/benchmark/README.md | 53 - .../node-uuid/benchmark/bench.gnu | 174 - .../node_modules/node-uuid/benchmark/bench.sh | 34 - .../node-uuid/benchmark/benchmark-native.c | 34 - .../node-uuid/benchmark/benchmark.js | 84 - .../node_modules/node-uuid/bin/uuid | 26 - .../node_modules/node-uuid/bower.json | 23 - .../node_modules/node-uuid/component.json | 25 - .../node_modules/node-uuid/package.json | 105 - .../node_modules/node-uuid/test/compare_v1.js | 63 - .../node_modules/node-uuid/test/test.html | 17 - .../node_modules/node-uuid/test/test.js | 231 - .../node_modules/node-uuid/uuid.js | 272 - .../node_modules/node.extend/.jscs.json | 68 - .../node_modules/node.extend/.npmignore | 4 - .../node_modules/node.extend/.travis.yml | 22 - .../node_modules/node.extend/History.md | 21 - .../node_modules/node.extend/Readme.md | 77 - .../node_modules/node.extend/index.js | 2 - .../node_modules/node.extend/lib/extend.js | 82 - .../node_modules/node.extend/package.json | 118 - .../normalize-package-data/.npmignore | 1 - .../normalize-package-data/.travis.yml | 3 - .../normalize-package-data/AUTHORS | 4 - .../normalize-package-data/LICENSE | 30 - .../normalize-package-data/README.md | 107 - .../lib/extract_description.js | 14 - .../normalize-package-data/lib/fixer.js | 418 - .../lib/make_warning.js | 23 - .../normalize-package-data/lib/normalize.js | 39 - .../normalize-package-data/lib/safe_format.js | 9 - .../normalize-package-data/lib/typos.json | 25 - .../lib/warning_messages.json | 31 - .../normalize-package-data/package.json | 112 - .../normalize-package-data/test/basic.js | 34 - .../test/consistency.js | 36 - .../test/dependencies.js | 44 - .../test/fixtures/async.json | 36 - .../test/fixtures/badscripts.json | 5 - .../test/fixtures/bcrypt.json | 56 - .../test/fixtures/coffee-script.json | 35 - .../test/fixtures/http-server.json | 53 - .../test/fixtures/movefile.json | 21 - .../test/fixtures/no-description.json | 4 - .../test/fixtures/node-module_exist.json | 26 - .../test/fixtures/npm.json | 135 - .../test/fixtures/read-package-json.json | 28 - .../test/fixtures/request.json | 39 - .../test/fixtures/underscore.json | 17 - .../test/github-urls.js | 44 - .../test/mixedcase-names.js | 32 - .../normalize-package-data/test/normalize.js | 246 - .../normalize-package-data/test/normalize.js~ | 253 - .../normalize-package-data/test/scoped.js | 59 - .../normalize-package-data/test/scripts.js | 24 - .../normalize-package-data/test/strict.js | 54 - .../normalize-package-data/test/typo.js | 133 - .../node_modules/number-is-nan/index.js | 4 - .../node_modules/number-is-nan/license | 21 - .../node_modules/number-is-nan/package.json | 93 - .../node_modules/number-is-nan/readme.md | 30 - .../node_modules/oauth-sign/LICENSE | 55 - .../node_modules/oauth-sign/README.md | 4 - .../node_modules/oauth-sign/index.js | 136 - .../node_modules/oauth-sign/package.json | 83 - .../node_modules/oauth-sign/test.js | 89 - .../node_modules/object-assign/index.js | 39 - .../node_modules/object-assign/license | 21 - .../node_modules/object-assign/package.json | 94 - .../node_modules/object-assign/readme.md | 51 - .../node_modules/once/LICENSE | 15 - .../node_modules/once/README.md | 51 - .../node_modules/once/once.js | 21 - .../node_modules/once/package.json | 94 - .../node_modules/optimist/.travis.yml | 4 - .../node_modules/optimist/LICENSE | 21 - .../node_modules/optimist/example/bool.js | 10 - .../optimist/example/boolean_double.js | 7 - .../optimist/example/boolean_single.js | 7 - .../optimist/example/default_hash.js | 8 - .../optimist/example/default_singles.js | 7 - .../node_modules/optimist/example/divide.js | 8 - .../optimist/example/line_count.js | 20 - .../optimist/example/line_count_options.js | 29 - .../optimist/example/line_count_wrap.js | 29 - .../node_modules/optimist/example/nonopt.js | 4 - .../node_modules/optimist/example/reflect.js | 2 - .../node_modules/optimist/example/short.js | 3 - .../node_modules/optimist/example/string.js | 11 - .../optimist/example/usage-options.js | 19 - .../node_modules/optimist/example/xup.js | 10 - .../node_modules/optimist/index.js | 343 - .../node_modules/minimist/.travis.yml | 4 - .../optimist/node_modules/minimist/LICENSE | 18 - .../node_modules/minimist/example/parse.js | 2 - .../optimist/node_modules/minimist/index.js | 187 - .../node_modules/minimist/package.json | 93 - .../node_modules/minimist/readme.markdown | 73 - .../node_modules/minimist/test/bool.js | 119 - .../node_modules/minimist/test/dash.js | 24 - .../minimist/test/default_bool.js | 20 - .../node_modules/minimist/test/dotted.js | 22 - .../node_modules/minimist/test/long.js | 31 - .../node_modules/minimist/test/num.js | 36 - .../node_modules/minimist/test/parse.js | 197 - .../minimist/test/parse_modified.js | 9 - .../node_modules/minimist/test/short.js | 67 - .../node_modules/minimist/test/whitespace.js | 8 - .../node_modules/optimist/package.json | 89 - .../node_modules/optimist/readme.markdown | 513 - .../node_modules/optimist/test/_.js | 71 - .../node_modules/optimist/test/_/argv.js | 2 - .../node_modules/optimist/test/_/bin.js | 3 - .../node_modules/optimist/test/dash.js | 31 - .../node_modules/optimist/test/parse.js | 446 - .../optimist/test/parse_modified.js | 14 - .../node_modules/optimist/test/short.js | 16 - .../node_modules/optimist/test/usage.js | 292 - .../node_modules/optimist/test/whitespace.js | 8 - .../node_modules/orchestrator/.npmignore | 10 - .../node_modules/orchestrator/LICENSE | 20 - .../node_modules/orchestrator/README.md | 286 - .../node_modules/orchestrator/index.js | 304 - .../node_modules/orchestrator/lib/runTask.js | 66 - .../node_modules/orchestrator/package.json | 106 - .../ordered-read-streams/.npmignore | 16 - .../ordered-read-streams/.travis.yml | 4 - .../node_modules/ordered-read-streams/LICENSE | 20 - .../ordered-read-streams/README.md | 65 - .../ordered-read-streams/index.js | 87 - .../ordered-read-streams/package.json | 78 - .../ordered-read-streams/test/main.js | 160 - .../node_modules/os-homedir/index.js | 24 - .../node_modules/os-homedir/license | 21 - .../node_modules/os-homedir/package.json | 96 - .../node_modules/os-homedir/readme.md | 33 - .../node_modules/os-tmpdir/index.js | 25 - .../node_modules/os-tmpdir/license | 21 - .../node_modules/os-tmpdir/package.json | 96 - .../node_modules/os-tmpdir/readme.md | 36 - .../node_modules/parse-json/index.js | 35 - .../node_modules/parse-json/license | 21 - .../node_modules/parse-json/package.json | 101 - .../node_modules/parse-json/readme.md | 83 - .../node_modules/parse-json/vendor/parse.js | 752 - .../node_modules/parse-json/vendor/unicode.js | 71 - .../node_modules/path-exists/index.js | 24 - .../node_modules/path-exists/license | 21 - .../node_modules/path-exists/package.json | 95 - .../node_modules/path-exists/readme.md | 45 - .../node_modules/path-is-absolute/index.js | 20 - .../node_modules/path-is-absolute/license | 21 - .../path-is-absolute/package.json | 99 - .../node_modules/path-is-absolute/readme.md | 51 - .../node_modules/path-type/index.js | 29 - .../node_modules/path-type/license | 21 - .../node_modules/path-type/package.json | 107 - .../node_modules/path-type/readme.md | 42 - .../node_modules/pause-stream/.npmignore | 3 - .../node_modules/pause-stream/LICENSE | 231 - .../node_modules/pause-stream/index.js | 3 - .../node_modules/pause-stream/package.json | 91 - .../node_modules/pause-stream/readme.markdown | 29 - .../node_modules/pause-stream/test/index.js | 17 - .../pause-stream/test/pause-end.js | 33 - .../node_modules/pend/LICENSE | 23 - .../node_modules/pend/README.md | 41 - .../node_modules/pend/index.js | 55 - .../node_modules/pend/package.json | 71 - .../node_modules/pend/test.js | 137 - .../node_modules/pify/index.js | 68 - .../node_modules/pify/license | 21 - .../node_modules/pify/package.json | 105 - .../node_modules/pify/readme.md | 119 - .../node_modules/pinkie-promise/index.js | 3 - .../node_modules/pinkie-promise/license | 21 - .../node_modules/pinkie-promise/package.json | 97 - .../node_modules/pinkie-promise/readme.md | 28 - .../node_modules/pinkie/index.js | 292 - .../node_modules/pinkie/license | 21 - .../node_modules/pinkie/package.json | 92 - .../node_modules/pinkie/readme.md | 83 - .../node_modules/pretty-hrtime/.jshintignore | 1 - .../node_modules/pretty-hrtime/.npmignore | 10 - .../node_modules/pretty-hrtime/LICENSE | 20 - .../node_modules/pretty-hrtime/README.md | 57 - .../node_modules/pretty-hrtime/index.js | 80 - .../node_modules/pretty-hrtime/package.json | 87 - .../process-nextick-args/.travis.yml | 12 - .../process-nextick-args/index.js | 20 - .../process-nextick-args/license.md | 19 - .../process-nextick-args/package.json | 72 - .../process-nextick-args/readme.md | 18 - .../node_modules/process-nextick-args/test.js | 24 - .../node_modules/pseudomap/LICENSE | 15 - .../node_modules/pseudomap/README.md | 60 - .../node_modules/pseudomap/map.js | 9 - .../node_modules/pseudomap/package.json | 77 - .../node_modules/pseudomap/pseudomap.js | 113 - .../node_modules/pseudomap/test/basic.js | 86 - .../node_modules/qs/.eslintignore | 1 - .../node_modules/qs/.jshintignore | 1 - .../node_modules/qs/.jshintrc | 10 - .../node_modules/qs/.npmignore | 19 - .../node_modules/qs/.travis.yml | 6 - .../node_modules/qs/CHANGELOG.md | 88 - .../node_modules/qs/CONTRIBUTING.md | 1 - .../node_modules/qs/LICENSE | 28 - .../node_modules/qs/Makefile | 8 - .../node_modules/qs/README.md | 303 - .../node_modules/qs/bower.json | 22 - .../node_modules/qs/index.js | 1 - .../node_modules/qs/lib/index.js | 15 - .../node_modules/qs/lib/parse.js | 166 - .../node_modules/qs/lib/stringify.js | 121 - .../node_modules/qs/lib/utils.js | 190 - .../node_modules/qs/package.json | 81 - .../node_modules/qs/test/parse.js | 455 - .../node_modules/qs/test/stringify.js | 259 - .../node_modules/qs/test/utils.js | 28 - .../node_modules/queue/.npmignore | 2 - .../node_modules/queue/.travis.yml | 5 - .../node_modules/queue/coverage/coverage.json | 1 - .../queue/coverage/lcov-report/index.html | 350 - .../queue/coverage/lcov-report/prettify.css | 1 - .../queue/coverage/lcov-report/prettify.js | 1 - .../coverage/lcov-report/queue/index.html | 350 - .../coverage/lcov-report/queue/index.js.html | 733 - .../node_modules/queue/coverage/lcov.info | 156 - .../node_modules/queue/index.js | 137 - .../node_modules/queue/package.json | 92 - .../node_modules/queue/readme.md | 170 - .../node_modules/rcfinder/.jshintrc | 4 - .../node_modules/rcfinder/.npmignore | 1 - .../node_modules/rcfinder/.travis.yml | 5 - .../node_modules/rcfinder/README.md | 53 - .../node_modules/rcfinder/index.js | 180 - .../rcfinder/node_modules/lodash/LICENSE.txt | 22 - .../rcfinder/node_modules/lodash/README.md | 145 - .../node_modules/lodash/dist/lodash.compat.js | 7158 - .../lodash/dist/lodash.compat.min.js | 92 - .../node_modules/lodash/dist/lodash.js | 6786 - .../node_modules/lodash/dist/lodash.min.js | 87 - .../lodash/dist/lodash.underscore.js | 4979 - .../lodash/dist/lodash.underscore.min.js | 39 - .../rcfinder/node_modules/lodash/lodash.js | 7180 - .../rcfinder/node_modules/lodash/package.json | 164 - .../node_modules/rcfinder/package.json | 84 - .../node_modules/rcfinder/test/.jshintrc | 7 - .../node_modules/rcfinder/test/finder.js | 185 - .../rcfinder/test/fixtures/foo/bar.json | 3 - .../rcfinder/test/fixtures/foo/foo/.baz | 0 .../test/fixtures/foo/foo/foo/foo/root | 0 .../node_modules/rcfinder/test/get.js | 25 - .../node_modules/rcloader/.jshintrc | 28 - .../node_modules/rcloader/.npmignore | 1 - .../node_modules/rcloader/.travis.yml | 4 - .../node_modules/rcloader/README.md | 59 - .../node_modules/rcloader/index.js | 85 - .../rcloader/node_modules/lodash/LICENSE | 22 - .../rcloader/node_modules/lodash/README.md | 121 - .../rcloader/node_modules/lodash/array.js | 44 - .../node_modules/lodash/array/chunk.js | 46 - .../node_modules/lodash/array/compact.js | 30 - .../node_modules/lodash/array/difference.js | 29 - .../node_modules/lodash/array/drop.js | 39 - .../node_modules/lodash/array/dropRight.js | 40 - .../lodash/array/dropRightWhile.js | 59 - .../node_modules/lodash/array/dropWhile.js | 59 - .../node_modules/lodash/array/fill.js | 44 - .../node_modules/lodash/array/findIndex.js | 53 - .../lodash/array/findLastIndex.js | 53 - .../node_modules/lodash/array/first.js | 22 - .../node_modules/lodash/array/flatten.js | 32 - .../node_modules/lodash/array/flattenDeep.js | 21 - .../node_modules/lodash/array/head.js | 1 - .../node_modules/lodash/array/indexOf.js | 53 - .../node_modules/lodash/array/initial.js | 20 - .../node_modules/lodash/array/intersection.js | 58 - .../node_modules/lodash/array/last.js | 19 - .../node_modules/lodash/array/lastIndexOf.js | 60 - .../node_modules/lodash/array/object.js | 1 - .../node_modules/lodash/array/pull.js | 52 - .../node_modules/lodash/array/pullAt.js | 40 - .../node_modules/lodash/array/remove.js | 64 - .../node_modules/lodash/array/rest.js | 21 - .../node_modules/lodash/array/slice.js | 30 - .../node_modules/lodash/array/sortedIndex.js | 53 - .../lodash/array/sortedLastIndex.js | 25 - .../node_modules/lodash/array/tail.js | 1 - .../node_modules/lodash/array/take.js | 39 - .../node_modules/lodash/array/takeRight.js | 40 - .../lodash/array/takeRightWhile.js | 59 - .../node_modules/lodash/array/takeWhile.js | 59 - .../node_modules/lodash/array/union.js | 24 - .../node_modules/lodash/array/uniq.js | 71 - .../node_modules/lodash/array/unique.js | 1 - .../node_modules/lodash/array/unzip.js | 47 - .../node_modules/lodash/array/unzipWith.js | 41 - .../node_modules/lodash/array/without.js | 27 - .../rcloader/node_modules/lodash/array/xor.js | 35 - .../rcloader/node_modules/lodash/array/zip.js | 21 - .../node_modules/lodash/array/zipObject.js | 43 - .../node_modules/lodash/array/zipWith.js | 36 - .../rcloader/node_modules/lodash/chain.js | 16 - .../node_modules/lodash/chain/chain.js | 35 - .../node_modules/lodash/chain/commit.js | 1 - .../node_modules/lodash/chain/concat.js | 1 - .../node_modules/lodash/chain/lodash.js | 125 - .../node_modules/lodash/chain/plant.js | 1 - .../node_modules/lodash/chain/reverse.js | 1 - .../rcloader/node_modules/lodash/chain/run.js | 1 - .../rcloader/node_modules/lodash/chain/tap.js | 29 - .../node_modules/lodash/chain/thru.js | 26 - .../node_modules/lodash/chain/toJSON.js | 1 - .../node_modules/lodash/chain/toString.js | 1 - .../node_modules/lodash/chain/value.js | 1 - .../node_modules/lodash/chain/valueOf.js | 1 - .../node_modules/lodash/chain/wrapperChain.js | 32 - .../lodash/chain/wrapperCommit.js | 32 - .../lodash/chain/wrapperConcat.js | 34 - .../node_modules/lodash/chain/wrapperPlant.js | 45 - .../lodash/chain/wrapperReverse.js | 43 - .../lodash/chain/wrapperToString.js | 17 - .../node_modules/lodash/chain/wrapperValue.js | 20 - .../node_modules/lodash/collection.js | 44 - .../node_modules/lodash/collection/all.js | 1 - .../node_modules/lodash/collection/any.js | 1 - .../node_modules/lodash/collection/at.js | 29 - .../node_modules/lodash/collection/collect.js | 1 - .../lodash/collection/contains.js | 1 - .../node_modules/lodash/collection/countBy.js | 54 - .../node_modules/lodash/collection/detect.js | 1 - .../node_modules/lodash/collection/each.js | 1 - .../lodash/collection/eachRight.js | 1 - .../node_modules/lodash/collection/every.js | 66 - .../node_modules/lodash/collection/filter.js | 61 - .../node_modules/lodash/collection/find.js | 56 - .../lodash/collection/findLast.js | 25 - .../lodash/collection/findWhere.js | 37 - .../node_modules/lodash/collection/foldl.js | 1 - .../node_modules/lodash/collection/foldr.js | 1 - .../node_modules/lodash/collection/forEach.js | 37 - .../lodash/collection/forEachRight.js | 26 - .../node_modules/lodash/collection/groupBy.js | 59 - .../node_modules/lodash/collection/include.js | 1 - .../lodash/collection/includes.js | 57 - .../node_modules/lodash/collection/indexBy.js | 53 - .../node_modules/lodash/collection/inject.js | 1 - .../node_modules/lodash/collection/invoke.js | 42 - .../node_modules/lodash/collection/map.js | 68 - .../node_modules/lodash/collection/max.js | 1 - .../node_modules/lodash/collection/min.js | 1 - .../lodash/collection/partition.js | 66 - .../node_modules/lodash/collection/pluck.js | 31 - .../node_modules/lodash/collection/reduce.js | 44 - .../lodash/collection/reduceRight.js | 29 - .../node_modules/lodash/collection/reject.js | 50 - .../node_modules/lodash/collection/sample.js | 50 - .../node_modules/lodash/collection/select.js | 1 - .../node_modules/lodash/collection/shuffle.js | 24 - .../node_modules/lodash/collection/size.js | 30 - .../node_modules/lodash/collection/some.js | 67 - .../node_modules/lodash/collection/sortBy.js | 71 - .../lodash/collection/sortByAll.js | 52 - .../lodash/collection/sortByOrder.js | 55 - .../node_modules/lodash/collection/sum.js | 1 - .../node_modules/lodash/collection/where.js | 37 - .../rcloader/node_modules/lodash/date.js | 3 - .../rcloader/node_modules/lodash/date/now.js | 24 - .../rcloader/node_modules/lodash/function.js | 28 - .../node_modules/lodash/function/after.js | 48 - .../node_modules/lodash/function/ary.js | 34 - .../node_modules/lodash/function/backflow.js | 1 - .../node_modules/lodash/function/before.js | 42 - .../node_modules/lodash/function/bind.js | 56 - .../node_modules/lodash/function/bindAll.js | 50 - .../node_modules/lodash/function/bindKey.js | 66 - .../node_modules/lodash/function/compose.js | 1 - .../node_modules/lodash/function/curry.js | 51 - .../lodash/function/curryRight.js | 48 - .../node_modules/lodash/function/debounce.js | 181 - .../node_modules/lodash/function/defer.js | 25 - .../node_modules/lodash/function/delay.js | 26 - .../node_modules/lodash/function/flow.js | 25 - .../node_modules/lodash/function/flowRight.js | 25 - .../node_modules/lodash/function/memoize.js | 80 - .../node_modules/lodash/function/modArgs.js | 58 - .../node_modules/lodash/function/negate.js | 32 - .../node_modules/lodash/function/once.js | 24 - .../node_modules/lodash/function/partial.js | 43 - .../lodash/function/partialRight.js | 42 - .../node_modules/lodash/function/rearg.js | 40 - .../node_modules/lodash/function/restParam.js | 58 - .../node_modules/lodash/function/spread.js | 44 - .../node_modules/lodash/function/throttle.js | 62 - .../node_modules/lodash/function/wrap.js | 33 - .../rcloader/node_modules/lodash/index.js | 12351 -- .../lodash/internal/LazyWrapper.js | 26 - .../lodash/internal/LodashWrapper.js | 21 - .../node_modules/lodash/internal/MapCache.js | 24 - .../node_modules/lodash/internal/SetCache.js | 29 - .../lodash/internal/arrayConcat.js | 25 - .../node_modules/lodash/internal/arrayCopy.js | 20 - .../node_modules/lodash/internal/arrayEach.js | 22 - .../lodash/internal/arrayEachRight.js | 21 - .../lodash/internal/arrayEvery.js | 23 - .../lodash/internal/arrayExtremum.js | 30 - .../lodash/internal/arrayFilter.js | 25 - .../node_modules/lodash/internal/arrayMap.js | 21 - .../node_modules/lodash/internal/arrayPush.js | 20 - .../lodash/internal/arrayReduce.js | 26 - .../lodash/internal/arrayReduceRight.js | 24 - .../node_modules/lodash/internal/arraySome.js | 23 - .../node_modules/lodash/internal/arraySum.js | 20 - .../lodash/internal/assignDefaults.js | 13 - .../lodash/internal/assignOwnDefaults.js | 26 - .../lodash/internal/assignWith.js | 32 - .../lodash/internal/baseAssign.js | 19 - .../node_modules/lodash/internal/baseAt.js | 32 - .../lodash/internal/baseCallback.js | 35 - .../node_modules/lodash/internal/baseClone.js | 128 - .../lodash/internal/baseCompareAscending.js | 34 - .../node_modules/lodash/internal/baseCopy.js | 23 - .../lodash/internal/baseCreate.js | 23 - .../node_modules/lodash/internal/baseDelay.js | 21 - .../lodash/internal/baseDifference.js | 55 - .../node_modules/lodash/internal/baseEach.js | 15 - .../lodash/internal/baseEachRight.js | 15 - .../node_modules/lodash/internal/baseEvery.js | 22 - .../lodash/internal/baseExtremum.js | 29 - .../node_modules/lodash/internal/baseFill.js | 31 - .../lodash/internal/baseFilter.js | 22 - .../node_modules/lodash/internal/baseFind.js | 25 - .../lodash/internal/baseFindIndex.js | 23 - .../lodash/internal/baseFlatten.js | 41 - .../node_modules/lodash/internal/baseFor.js | 17 - .../node_modules/lodash/internal/baseForIn.js | 17 - .../lodash/internal/baseForOwn.js | 17 - .../lodash/internal/baseForOwnRight.js | 17 - .../lodash/internal/baseForRight.js | 15 - .../lodash/internal/baseFunctions.js | 27 - .../node_modules/lodash/internal/baseGet.js | 29 - .../lodash/internal/baseIndexOf.js | 27 - .../lodash/internal/baseIsEqual.js | 28 - .../lodash/internal/baseIsEqualDeep.js | 102 - .../lodash/internal/baseIsFunction.js | 15 - .../lodash/internal/baseIsMatch.js | 52 - .../lodash/internal/baseLodash.js | 10 - .../node_modules/lodash/internal/baseMap.js | 23 - .../lodash/internal/baseMatches.js | 30 - .../lodash/internal/baseMatchesProperty.js | 45 - .../node_modules/lodash/internal/baseMerge.js | 56 - .../lodash/internal/baseMergeDeep.js | 67 - .../lodash/internal/baseProperty.js | 14 - .../lodash/internal/basePropertyDeep.js | 19 - .../lodash/internal/basePullAt.js | 30 - .../lodash/internal/baseRandom.js | 18 - .../lodash/internal/baseReduce.js | 24 - .../lodash/internal/baseSetData.js | 17 - .../node_modules/lodash/internal/baseSlice.js | 32 - .../node_modules/lodash/internal/baseSome.js | 23 - .../lodash/internal/baseSortBy.js | 21 - .../lodash/internal/baseSortByOrder.js | 31 - .../node_modules/lodash/internal/baseSum.js | 20 - .../lodash/internal/baseToString.js | 13 - .../node_modules/lodash/internal/baseUniq.js | 60 - .../lodash/internal/baseValues.js | 22 - .../node_modules/lodash/internal/baseWhile.js | 24 - .../lodash/internal/baseWrapperValue.js | 29 - .../lodash/internal/binaryIndex.js | 39 - .../lodash/internal/binaryIndexBy.js | 57 - .../lodash/internal/bindCallback.js | 39 - .../lodash/internal/bufferClone.js | 20 - .../lodash/internal/cacheIndexOf.js | 19 - .../node_modules/lodash/internal/cachePush.js | 20 - .../lodash/internal/charsLeftIndex.js | 18 - .../lodash/internal/charsRightIndex.js | 17 - .../lodash/internal/compareAscending.js | 16 - .../lodash/internal/compareMultiple.js | 44 - .../lodash/internal/composeArgs.js | 34 - .../lodash/internal/composeArgsRight.js | 36 - .../lodash/internal/createAggregator.js | 35 - .../lodash/internal/createAssigner.js | 41 - .../lodash/internal/createBaseEach.js | 31 - .../lodash/internal/createBaseFor.js | 27 - .../lodash/internal/createBindWrapper.js | 22 - .../lodash/internal/createCache.js | 21 - .../lodash/internal/createCompounder.js | 26 - .../lodash/internal/createCtorWrapper.js | 37 - .../lodash/internal/createCurry.js | 23 - .../lodash/internal/createDefaults.js | 22 - .../lodash/internal/createExtremum.js | 33 - .../lodash/internal/createFind.js | 25 - .../lodash/internal/createFindIndex.js | 21 - .../lodash/internal/createFindKey.js | 18 - .../lodash/internal/createFlow.js | 74 - .../lodash/internal/createForEach.js | 20 - .../lodash/internal/createForIn.js | 20 - .../lodash/internal/createForOwn.js | 19 - .../lodash/internal/createHybridWrapper.js | 111 - .../lodash/internal/createObjectMapper.js | 26 - .../lodash/internal/createPadDir.js | 18 - .../lodash/internal/createPadding.js | 29 - .../lodash/internal/createPartial.js | 20 - .../lodash/internal/createPartialWrapper.js | 43 - .../lodash/internal/createReduce.js | 22 - .../lodash/internal/createRound.js | 23 - .../lodash/internal/createSortedIndex.js | 20 - .../lodash/internal/createWrapper.js | 86 - .../lodash/internal/deburrLetter.js | 33 - .../lodash/internal/equalArrays.js | 51 - .../lodash/internal/equalByTag.js | 48 - .../lodash/internal/equalObjects.js | 67 - .../lodash/internal/escapeHtmlChar.js | 22 - .../lodash/internal/escapeRegExpChar.js | 38 - .../lodash/internal/escapeStringChar.js | 22 - .../node_modules/lodash/internal/getData.js | 15 - .../lodash/internal/getFuncName.js | 25 - .../node_modules/lodash/internal/getLength.js | 15 - .../lodash/internal/getMatchData.js | 21 - .../node_modules/lodash/internal/getNative.js | 16 - .../node_modules/lodash/internal/getView.js | 33 - .../lodash/internal/indexOfNaN.js | 23 - .../lodash/internal/initCloneArray.js | 26 - .../lodash/internal/initCloneByTag.js | 63 - .../lodash/internal/initCloneObject.js | 16 - .../lodash/internal/invokePath.js | 26 - .../lodash/internal/isArrayLike.js | 15 - .../node_modules/lodash/internal/isIndex.js | 24 - .../lodash/internal/isIterateeCall.js | 28 - .../node_modules/lodash/internal/isKey.js | 28 - .../lodash/internal/isLaziable.js | 27 - .../node_modules/lodash/internal/isLength.js | 20 - .../lodash/internal/isObjectLike.js | 12 - .../node_modules/lodash/internal/isSpace.js | 14 - .../lodash/internal/isStrictComparable.js | 15 - .../node_modules/lodash/internal/lazyClone.js | 23 - .../lodash/internal/lazyReverse.js | 23 - .../node_modules/lodash/internal/lazyValue.js | 72 - .../node_modules/lodash/internal/mapDelete.js | 14 - .../node_modules/lodash/internal/mapGet.js | 14 - .../node_modules/lodash/internal/mapHas.js | 20 - .../node_modules/lodash/internal/mapSet.js | 18 - .../node_modules/lodash/internal/mergeData.js | 89 - .../lodash/internal/mergeDefaults.js | 15 - .../node_modules/lodash/internal/metaMap.js | 9 - .../lodash/internal/pickByArray.js | 28 - .../lodash/internal/pickByCallback.js | 22 - .../node_modules/lodash/internal/reEscape.js | 4 - .../lodash/internal/reEvaluate.js | 4 - .../lodash/internal/reInterpolate.js | 4 - .../node_modules/lodash/internal/realNames.js | 4 - .../node_modules/lodash/internal/reorder.js | 29 - .../lodash/internal/replaceHolders.js | 28 - .../node_modules/lodash/internal/setData.js | 41 - .../node_modules/lodash/internal/shimKeys.js | 41 - .../lodash/internal/sortedUniq.js | 29 - .../lodash/internal/toIterable.js | 22 - .../node_modules/lodash/internal/toObject.js | 14 - .../node_modules/lodash/internal/toPath.js | 28 - .../lodash/internal/trimmedLeftIndex.js | 19 - .../lodash/internal/trimmedRightIndex.js | 18 - .../lodash/internal/unescapeHtmlChar.js | 22 - .../lodash/internal/wrapperClone.js | 18 - .../rcloader/node_modules/lodash/lang.js | 32 - .../node_modules/lodash/lang/clone.js | 70 - .../node_modules/lodash/lang/cloneDeep.js | 55 - .../rcloader/node_modules/lodash/lang/eq.js | 1 - .../rcloader/node_modules/lodash/lang/gt.js | 25 - .../rcloader/node_modules/lodash/lang/gte.js | 25 - .../node_modules/lodash/lang/isArguments.js | 34 - .../node_modules/lodash/lang/isArray.js | 40 - .../node_modules/lodash/lang/isBoolean.js | 35 - .../node_modules/lodash/lang/isDate.js | 35 - .../node_modules/lodash/lang/isElement.js | 24 - .../node_modules/lodash/lang/isEmpty.js | 47 - .../node_modules/lodash/lang/isEqual.js | 54 - .../node_modules/lodash/lang/isError.js | 36 - .../node_modules/lodash/lang/isFinite.js | 35 - .../node_modules/lodash/lang/isFunction.js | 38 - .../node_modules/lodash/lang/isMatch.js | 49 - .../node_modules/lodash/lang/isNaN.js | 34 - .../node_modules/lodash/lang/isNative.js | 48 - .../node_modules/lodash/lang/isNull.js | 21 - .../node_modules/lodash/lang/isNumber.js | 41 - .../node_modules/lodash/lang/isObject.js | 28 - .../node_modules/lodash/lang/isPlainObject.js | 71 - .../node_modules/lodash/lang/isRegExp.js | 35 - .../node_modules/lodash/lang/isString.js | 35 - .../node_modules/lodash/lang/isTypedArray.js | 74 - .../node_modules/lodash/lang/isUndefined.js | 21 - .../rcloader/node_modules/lodash/lang/lt.js | 25 - .../rcloader/node_modules/lodash/lang/lte.js | 25 - .../node_modules/lodash/lang/toArray.js | 32 - .../node_modules/lodash/lang/toPlainObject.js | 31 - .../rcloader/node_modules/lodash/math.js | 9 - .../rcloader/node_modules/lodash/math/add.js | 19 - .../rcloader/node_modules/lodash/math/ceil.js | 25 - .../node_modules/lodash/math/floor.js | 25 - .../rcloader/node_modules/lodash/math/max.js | 56 - .../rcloader/node_modules/lodash/math/min.js | 56 - .../node_modules/lodash/math/round.js | 25 - .../rcloader/node_modules/lodash/math/sum.js | 50 - .../rcloader/node_modules/lodash/number.js | 4 - .../node_modules/lodash/number/inRange.js | 47 - .../node_modules/lodash/number/random.js | 70 - .../rcloader/node_modules/lodash/object.js | 31 - .../node_modules/lodash/object/assign.js | 43 - .../node_modules/lodash/object/create.js | 47 - .../node_modules/lodash/object/defaults.js | 25 - .../lodash/object/defaultsDeep.js | 25 - .../node_modules/lodash/object/extend.js | 1 - .../node_modules/lodash/object/findKey.js | 54 - .../node_modules/lodash/object/findLastKey.js | 54 - .../node_modules/lodash/object/forIn.js | 33 - .../node_modules/lodash/object/forInRight.js | 31 - .../node_modules/lodash/object/forOwn.js | 33 - .../node_modules/lodash/object/forOwnRight.js | 31 - .../node_modules/lodash/object/functions.js | 23 - .../node_modules/lodash/object/get.js | 33 - .../node_modules/lodash/object/has.js | 57 - .../node_modules/lodash/object/invert.js | 60 - .../node_modules/lodash/object/keys.js | 45 - .../node_modules/lodash/object/keysIn.js | 64 - .../node_modules/lodash/object/mapKeys.js | 25 - .../node_modules/lodash/object/mapValues.js | 46 - .../node_modules/lodash/object/merge.js | 54 - .../node_modules/lodash/object/methods.js | 1 - .../node_modules/lodash/object/omit.js | 47 - .../node_modules/lodash/object/pairs.js | 33 - .../node_modules/lodash/object/pick.js | 42 - .../node_modules/lodash/object/result.js | 49 - .../node_modules/lodash/object/set.js | 55 - .../node_modules/lodash/object/transform.js | 61 - .../node_modules/lodash/object/values.js | 33 - .../node_modules/lodash/object/valuesIn.js | 31 - .../rcloader/node_modules/lodash/package.json | 121 - .../rcloader/node_modules/lodash/string.js | 25 - .../node_modules/lodash/string/camelCase.js | 27 - .../node_modules/lodash/string/capitalize.js | 21 - .../node_modules/lodash/string/deburr.js | 29 - .../node_modules/lodash/string/endsWith.js | 40 - .../node_modules/lodash/string/escape.js | 48 - .../lodash/string/escapeRegExp.js | 32 - .../node_modules/lodash/string/kebabCase.js | 26 - .../node_modules/lodash/string/pad.js | 47 - .../node_modules/lodash/string/padLeft.js | 27 - .../node_modules/lodash/string/padRight.js | 27 - .../node_modules/lodash/string/parseInt.js | 46 - .../node_modules/lodash/string/repeat.js | 47 - .../node_modules/lodash/string/snakeCase.js | 26 - .../node_modules/lodash/string/startCase.js | 26 - .../node_modules/lodash/string/startsWith.js | 36 - .../node_modules/lodash/string/template.js | 226 - .../lodash/string/templateSettings.js | 67 - .../node_modules/lodash/string/trim.js | 42 - .../node_modules/lodash/string/trimLeft.js | 36 - .../node_modules/lodash/string/trimRight.js | 36 - .../node_modules/lodash/string/trunc.js | 105 - .../node_modules/lodash/string/unescape.js | 33 - .../node_modules/lodash/string/words.js | 38 - .../rcloader/node_modules/lodash/support.js | 10 - .../rcloader/node_modules/lodash/utility.js | 18 - .../node_modules/lodash/utility/attempt.js | 32 - .../node_modules/lodash/utility/callback.js | 53 - .../node_modules/lodash/utility/constant.js | 23 - .../node_modules/lodash/utility/identity.js | 20 - .../node_modules/lodash/utility/iteratee.js | 1 - .../node_modules/lodash/utility/matches.js | 33 - .../lodash/utility/matchesProperty.js | 32 - .../node_modules/lodash/utility/method.js | 33 - .../node_modules/lodash/utility/methodOf.js | 32 - .../node_modules/lodash/utility/mixin.js | 82 - .../node_modules/lodash/utility/noop.js | 19 - .../node_modules/lodash/utility/property.js | 31 - .../node_modules/lodash/utility/propertyOf.js | 30 - .../node_modules/lodash/utility/range.js | 66 - .../node_modules/lodash/utility/times.js | 60 - .../node_modules/lodash/utility/uniqueId.js | 27 - .../node_modules/rcloader/package.json | 85 - .../node_modules/rcloader/test/.jshintrc | 10 - .../rcloader/test/fixtures/foo/bar.json | 7 - .../rcloader/test/fixtures/foo/foo/.baz | 9 - .../test/fixtures/foo/foo/foo/foo/root | 0 .../node_modules/rcloader/test/loader.js | 147 - .../node_modules/read-pkg-up/index.js | 31 - .../node_modules/read-pkg-up/license | 21 - .../node_modules/read-pkg-up/package.json | 114 - .../node_modules/read-pkg-up/readme.md | 79 - .../node_modules/read-pkg/index.js | 48 - .../node_modules/read-pkg/license | 21 - .../node_modules/read-pkg/package.json | 97 - .../node_modules/read-pkg/readme.md | 79 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../node_modules/readable-stream/float.patch | 923 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 951 - .../readable-stream/lib/_stream_transform.js | 209 - .../readable-stream/lib/_stream_writable.js | 477 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 10 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/rechoir/.npmignore | 1 - .../node_modules/rechoir/.travis.yml | 24 - .../node_modules/rechoir/CHANGELOG | 38 - .../node_modules/rechoir/LICENSE | 22 - .../node_modules/rechoir/README.md | 42 - .../node_modules/rechoir/index.js | 59 - .../node_modules/rechoir/lib/extension.js | 11 - .../node_modules/rechoir/lib/normalize.js | 15 - .../node_modules/rechoir/lib/register.js | 15 - .../node_modules/rechoir/package.json | 140 - .../node_modules/redent/index.js | 7 - .../node_modules/redent/license | 21 - .../node_modules/redent/package.json | 98 - .../node_modules/redent/readme.md | 48 - .../node_modules/repeating/index.js | 24 - .../node_modules/repeating/license | 21 - .../node_modules/repeating/package.json | 96 - .../node_modules/repeating/readme.md | 30 - .../node_modules/replace-ext/.npmignore | 6 - .../node_modules/replace-ext/.travis.yml | 8 - .../node_modules/replace-ext/LICENSE | 20 - .../node_modules/replace-ext/README.md | 44 - .../node_modules/replace-ext/index.js | 9 - .../node_modules/replace-ext/package.json | 89 - .../node_modules/replace-ext/test/main.js | 51 - .../node_modules/request/.eslintrc | 45 - .../node_modules/request/.npmignore | 6 - .../node_modules/request/.travis.yml | 19 - .../node_modules/request/CHANGELOG.md | 623 - .../node_modules/request/CONTRIBUTING.md | 81 - .../node_modules/request/LICENSE | 55 - .../node_modules/request/README.md | 1098 - .../node_modules/request/index.js | 157 - .../node_modules/request/lib/auth.js | 168 - .../node_modules/request/lib/cookies.js | 39 - .../request/lib/getProxyFromURI.js | 79 - .../node_modules/request/lib/har.js | 215 - .../node_modules/request/lib/helpers.js | 74 - .../node_modules/request/lib/multipart.js | 112 - .../node_modules/request/lib/oauth.js | 147 - .../node_modules/request/lib/querystring.js | 51 - .../node_modules/request/lib/redirect.js | 153 - .../node_modules/request/lib/tunnel.js | 176 - .../request/node_modules/.bin/har-validator | 56 - .../request/node_modules/assert-plus/AUTHORS | 6 - .../node_modules/assert-plus/CHANGES.md | 8 - .../node_modules/assert-plus/README.md | 155 - .../node_modules/assert-plus/assert.js | 206 - .../node_modules/assert-plus/package.json | 107 - .../request/node_modules/aws-sign2/LICENSE | 55 - .../request/node_modules/aws-sign2/README.md | 4 - .../request/node_modules/aws-sign2/index.js | 212 - .../node_modules/aws-sign2/package.json | 73 - .../request/node_modules/bl/.jshintrc | 59 - .../request/node_modules/bl/.npmignore | 1 - .../request/node_modules/bl/.travis.yml | 13 - .../request/node_modules/bl/LICENSE.md | 13 - .../request/node_modules/bl/README.md | 200 - .../request/node_modules/bl/bl.js | 243 - .../request/node_modules/bl/package.json | 89 - .../request/node_modules/bl/test/test.js | 640 - .../request/node_modules/caseless/LICENSE | 28 - .../request/node_modules/caseless/README.md | 45 - .../request/node_modules/caseless/index.js | 66 - .../node_modules/caseless/package.json | 88 - .../request/node_modules/caseless/test.js | 40 - .../request/node_modules/extend/.eslintrc | 192 - .../request/node_modules/extend/.jscs.json | 104 - .../request/node_modules/extend/.npmignore | 1 - .../request/node_modules/extend/.travis.yml | 44 - .../request/node_modules/extend/CHANGELOG.md | 69 - .../request/node_modules/extend/LICENSE | 23 - .../request/node_modules/extend/README.md | 62 - .../node_modules/extend/component.json | 32 - .../request/node_modules/extend/index.js | 86 - .../request/node_modules/extend/package.json | 98 - .../node_modules/har-validator/LICENSE | 13 - .../node_modules/har-validator/README.md | 309 - .../har-validator/bin/har-validator | 56 - .../node_modules/har-validator/lib/async.js | 14 - .../node_modules/har-validator/lib/error.js | 10 - .../node_modules/har-validator/lib/index.js | 22 - .../node_modules/har-validator/lib/runner.js | 29 - .../har-validator/lib/schemas/cache.json | 13 - .../har-validator/lib/schemas/cacheEntry.json | 31 - .../har-validator/lib/schemas/content.json | 27 - .../har-validator/lib/schemas/cookie.json | 34 - .../har-validator/lib/schemas/creator.json | 18 - .../har-validator/lib/schemas/entry.json | 51 - .../har-validator/lib/schemas/har.json | 11 - .../har-validator/lib/schemas/index.js | 49 - .../har-validator/lib/schemas/log.json | 34 - .../har-validator/lib/schemas/page.json | 30 - .../lib/schemas/pageTimings.json | 16 - .../har-validator/lib/schemas/postData.json | 41 - .../har-validator/lib/schemas/record.json | 18 - .../har-validator/lib/schemas/request.json | 55 - .../har-validator/lib/schemas/response.json | 52 - .../har-validator/lib/schemas/timings.json | 40 - .../node_modules/har-validator/package.json | 112 - .../request/node_modules/hawk/.npmignore | 20 - .../request/node_modules/hawk/.travis.yml | 5 - .../request/node_modules/hawk/LICENSE | 28 - .../request/node_modules/hawk/README.md | 634 - .../request/node_modules/hawk/bower.json | 24 - .../request/node_modules/hawk/component.json | 19 - .../request/node_modules/hawk/dist/client.js | 343 - .../node_modules/hawk/example/usage.js | 78 - .../request/node_modules/hawk/images/hawk.png | Bin 6945 -> 0 bytes .../request/node_modules/hawk/images/logo.png | Bin 71732 -> 0 bytes .../request/node_modules/hawk/lib/browser.js | 637 - .../request/node_modules/hawk/lib/client.js | 369 - .../request/node_modules/hawk/lib/crypto.js | 126 - .../request/node_modules/hawk/lib/index.js | 15 - .../request/node_modules/hawk/lib/server.js | 548 - .../request/node_modules/hawk/lib/utils.js | 184 - .../request/node_modules/hawk/package.json | 93 - .../request/node_modules/hawk/test/browser.js | 1492 - .../request/node_modules/hawk/test/client.js | 440 - .../request/node_modules/hawk/test/crypto.js | 70 - .../request/node_modules/hawk/test/index.js | 378 - .../request/node_modules/hawk/test/readme.js | 95 - .../request/node_modules/hawk/test/server.js | 1329 - .../request/node_modules/hawk/test/uri.js | 838 - .../request/node_modules/hawk/test/utils.js | 149 - .../http-signature/.dir-locals.el | 6 - .../node_modules/http-signature/.npmignore | 7 - .../node_modules/http-signature/CHANGES.md | 46 - .../node_modules/http-signature/LICENSE | 18 - .../node_modules/http-signature/README.md | 79 - .../http-signature/http_signing.md | 363 - .../node_modules/http-signature/lib/index.js | 29 - .../node_modules/http-signature/lib/parser.js | 318 - .../node_modules/http-signature/lib/signer.js | 399 - .../node_modules/http-signature/lib/utils.js | 112 - .../node_modules/http-signature/lib/verify.js | 88 - .../node_modules/http-signature/package.json | 108 - .../request/node_modules/isarray/.npmignore | 1 - .../request/node_modules/isarray/.travis.yml | 4 - .../request/node_modules/isarray/Makefile | 6 - .../request/node_modules/isarray/README.md | 60 - .../node_modules/isarray/component.json | 19 - .../request/node_modules/isarray/index.js | 5 - .../request/node_modules/isarray/package.json | 98 - .../request/node_modules/isarray/test.js | 20 - .../node_modules/mime-types/HISTORY.md | 197 - .../request/node_modules/mime-types/LICENSE | 23 - .../request/node_modules/mime-types/README.md | 103 - .../request/node_modules/mime-types/index.js | 188 - .../node_modules/mime-types/package.json | 114 - .../request/node_modules/qs/.eslintignore | 1 - .../request/node_modules/qs/.eslintrc | 17 - .../request/node_modules/qs/.npmignore | 18 - .../request/node_modules/qs/.travis.yml | 69 - .../request/node_modules/qs/CHANGELOG.md | 115 - .../request/node_modules/qs/CONTRIBUTING.md | 1 - .../request/node_modules/qs/LICENSE | 28 - .../request/node_modules/qs/README.md | 335 - .../request/node_modules/qs/bower.json | 21 - .../request/node_modules/qs/component.json | 15 - .../request/node_modules/qs/dist/qs.js | 476 - .../request/node_modules/qs/lib/index.js | 9 - .../request/node_modules/qs/lib/parse.js | 164 - .../request/node_modules/qs/lib/stringify.js | 131 - .../request/node_modules/qs/lib/utils.js | 162 - .../request/node_modules/qs/package.json | 109 - .../request/node_modules/qs/test/index.js | 5 - .../request/node_modules/qs/test/parse.js | 393 - .../request/node_modules/qs/test/stringify.js | 259 - .../request/node_modules/qs/test/utils.js | 9 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/.travis.yml | 52 - .../node_modules/readable-stream/.zuul.yml | 1 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 36 - .../readable-stream/doc/stream.markdown | 1760 - .../doc/wg-meetings/2015-01-30.md | 60 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 75 - .../lib/_stream_passthrough.js | 26 - .../readable-stream/lib/_stream_readable.js | 880 - .../readable-stream/lib/_stream_transform.js | 180 - .../readable-stream/lib/_stream_writable.js | 516 - .../node_modules/readable-stream/package.json | 105 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 12 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/request/package.json | 161 - .../node_modules/request/request.js | 1458 - .../node_modules/resolve/.travis.yml | 4 - .../node_modules/resolve/LICENSE | 18 - .../node_modules/resolve/example/async.js | 5 - .../node_modules/resolve/example/sync.js | 3 - .../node_modules/resolve/index.js | 5 - .../node_modules/resolve/lib/async.js | 192 - .../node_modules/resolve/lib/caller.js | 8 - .../node_modules/resolve/lib/core.js | 4 - .../node_modules/resolve/lib/core.json | 38 - .../resolve/lib/node-modules-paths.js | 38 - .../node_modules/resolve/lib/sync.js | 81 - .../node_modules/resolve/package.json | 83 - .../node_modules/resolve/readme.markdown | 148 - .../node_modules/resolve/test/core.js | 12 - .../node_modules/resolve/test/dotdot.js | 29 - .../resolve/test/dotdot/abc/index.js | 2 - .../node_modules/resolve/test/dotdot/index.js | 1 - .../resolve/test/faulty_basedir.js | 17 - .../node_modules/resolve/test/filter.js | 18 - .../node_modules/resolve/test/filter_sync.js | 15 - .../node_modules/resolve/test/mock.js | 142 - .../node_modules/resolve/test/mock_sync.js | 68 - .../node_modules/resolve/test/module_dir.js | 56 - .../test/module_dir/xmodules/aaa/index.js | 1 - .../test/module_dir/ymodules/aaa/index.js | 1 - .../test/module_dir/zmodules/bbb/main.js | 1 - .../test/module_dir/zmodules/bbb/package.json | 3 - .../node_modules/resolve/test/node_path.js | 48 - .../resolve/test/node_path/x/aaa/index.js | 1 - .../resolve/test/node_path/x/ccc/index.js | 1 - .../resolve/test/node_path/y/bbb/index.js | 1 - .../resolve/test/node_path/y/ccc/index.js | 1 - .../node_modules/resolve/test/nonstring.js | 9 - .../node_modules/resolve/test/pathfilter.js | 35 - .../resolve/test/pathfilter/deep_ref/main.js | 0 .../deep_ref/node_modules/deep/alt.js | 0 .../deep_ref/node_modules/deep/deeper/ref.js | 0 .../deep_ref/node_modules/deep/package.json | 4 - .../deep_ref/node_modules/deep/ref.js | 0 .../node_modules/resolve/test/precedence.js | 23 - .../resolve/test/precedence/aaa.js | 1 - .../resolve/test/precedence/aaa/index.js | 1 - .../resolve/test/precedence/aaa/main.js | 1 - .../resolve/test/precedence/bbb.js | 1 - .../resolve/test/precedence/bbb/main.js | 1 - .../node_modules/resolve/test/resolver.js | 281 - .../resolver/bar/node_modules/foo/index.js | 1 - .../resolve/test/resolver/baz/doom.js | 0 .../resolve/test/resolver/baz/package.json | 3 - .../resolve/test/resolver/baz/quux.js | 1 - .../biz/node_modules/garply/lib/index.js | 1 - .../biz/node_modules/garply/package.json | 3 - .../resolver/biz/node_modules/grux/index.js | 1 - .../resolver/biz/node_modules/tiv/index.js | 1 - .../resolve/test/resolver/cup.coffee | 1 - .../node_modules/resolve/test/resolver/foo.js | 1 - .../test/resolver/incorrect_main/index.js | 2 - .../test/resolver/incorrect_main/package.json | 3 - .../resolve/test/resolver/mug.coffee | 0 .../node_modules/resolve/test/resolver/mug.js | 0 .../test/resolver/other_path/lib/other-lib.js | 0 .../resolve/test/resolver/other_path/root.js | 0 .../punycode/node_modules/punycode/index.js | 0 .../resolve/test/resolver/quux/foo/index.js | 1 - .../test/resolver/without_basedir/main.js | 6 - .../without_basedir/node_modules/mymodule.js | 1 - .../resolve/test/resolver_sync.js | 180 - .../node_modules/resolve/test/subdirs.js | 13 - .../test/subdirs/node_modules/a/b/c/x.json | 1 - .../test/subdirs/node_modules/a/package.json | 1 - .../node_modules/semver/.npmignore | 4 - .../node_modules/semver/.travis.yml | 5 - .../node_modules/semver/LICENSE | 15 - .../node_modules/semver/Makefile | 24 - .../node_modules/semver/README.md | 303 - .../node_modules/semver/bin/semver | 133 - .../node_modules/semver/foot.js.txt | 6 - .../node_modules/semver/head.js.txt | 2 - .../node_modules/semver/package.json | 82 - .../node_modules/semver/semver.browser.js | 1201 - .../node_modules/semver/semver.browser.js.gz | Bin 7992 -> 0 bytes .../node_modules/semver/semver.js | 1205 - .../node_modules/semver/semver.min.js | 1 - .../node_modules/semver/semver.min.js.gz | Bin 3790 -> 0 bytes .../node_modules/semver/test/amd.js | 15 - .../node_modules/semver/test/big-numbers.js | 31 - .../node_modules/semver/test/clean.js | 29 - .../node_modules/semver/test/gtr.js | 173 - .../node_modules/semver/test/index.js | 685 - .../node_modules/semver/test/ltr.js | 181 - .../semver/test/major-minor-patch.js | 72 - .../node_modules/semver/test/no-module.js | 19 - .../node_modules/sequencify/.npmignore | 9 - .../node_modules/sequencify/.travis.yml | 6 - .../node_modules/sequencify/LICENSE | 20 - .../node_modules/sequencify/README.md | 68 - .../node_modules/sequencify/index.js | 46 - .../node_modules/sequencify/package.json | 88 - .../node_modules/sigmund/LICENSE | 15 - .../node_modules/sigmund/README.md | 53 - .../node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 86 - .../node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/signal-exit/.npmignore | 4 - .../node_modules/signal-exit/.travis.yml | 7 - .../node_modules/signal-exit/LICENSE.txt | 14 - .../node_modules/signal-exit/README.md | 38 - .../node_modules/signal-exit/index.js | 148 - .../node_modules/signal-exit/package.json | 87 - .../node_modules/signal-exit/signals.js | 47 - .../signal-exit/test/all-integration-test.js | 94 - .../signal-exit/test/fixtures/awaiter.js | 35 - .../test/fixtures/change-code-expect.json | 800 - .../signal-exit/test/fixtures/change-code.js | 96 - .../test/fixtures/end-of-execution.js | 5 - .../signal-exit/test/fixtures/exit-last.js | 14 - .../signal-exit/test/fixtures/exit.js | 7 - .../signal-exit/test/fixtures/exiter.js | 45 - .../signal-exit/test/fixtures/load-unload.js | 7 - .../test/fixtures/multiple-load.js | 52 - .../signal-exit/test/fixtures/parent.js | 51 - .../signal-exit/test/fixtures/sigint.js | 11 - .../signal-exit/test/fixtures/sigkill.js | 19 - .../test/fixtures/signal-default.js | 99 - .../signal-exit/test/fixtures/signal-last.js | 17 - .../test/fixtures/signal-listener.js | 23 - .../signal-exit/test/fixtures/sigpipe.js | 8 - .../signal-exit/test/fixtures/sigterm.js | 9 - .../signal-exit/test/fixtures/unwrap.js | 37 - .../signal-exit/test/multi-exit.js | 58 - .../signal-exit/test/signal-exit-test.js | 108 - .../node_modules/sntp/.npmignore | 18 - .../node_modules/sntp/.travis.yml | 5 - .../node_modules/sntp/LICENSE | 28 - .../node_modules/sntp/Makefile | 9 - .../node_modules/sntp/README.md | 68 - .../node_modules/sntp/examples/offset.js | 16 - .../node_modules/sntp/examples/time.js | 25 - .../node_modules/sntp/index.js | 1 - .../node_modules/sntp/lib/index.js | 412 - .../node_modules/sntp/package.json | 90 - .../node_modules/sntp/test/index.js | 435 - .../source-map-support/.npmignore | 1 - .../source-map-support/.travis.yml | 5 - .../source-map-support/LICENSE.md | 21 - .../node_modules/source-map-support/README.md | 239 - .../amd-test/browser-source-map-support.js | 89 - .../source-map-support/amd-test/index.html | 6 - .../source-map-support/amd-test/require.js | 36 - .../source-map-support/amd-test/script.coffee | 13 - .../source-map-support/amd-test/script.js | 24 - .../browser-source-map-support.js | 89 - .../browser-test/index.html | 6 - .../browser-test/script.coffee | 12 - .../source-map-support/browser-test/script.js | 25 - .../node_modules/source-map-support/build.js | 73 - .../source-map-support/header-test/index.html | 6 - .../header-test/script.coffee | 12 - .../source-map-support/header-test/script.js | 25 - .../source-map-support/header-test/server.js | 45 - .../source-map-support/package.json | 87 - .../source-map-support/register.js | 1 - .../source-map-support/source-map-support.js | 444 - .../node_modules/source-map-support/test.js | 477 - .../node_modules/source-map/.npmignore | 2 - .../node_modules/source-map/.travis.yml | 4 - .../node_modules/source-map/CHANGELOG.md | 121 - .../node_modules/source-map/LICENSE | 28 - .../source-map/Makefile.dryice.js | 166 - .../node_modules/source-map/README.md | 434 - .../source-map/build/assert-shim.js | 56 - .../source-map/build/mini-require.js | 152 - .../source-map/build/prefix-source-map.jsm | 20 - .../source-map/build/prefix-utils.jsm | 18 - .../source-map/build/suffix-browser.js | 8 - .../source-map/build/suffix-source-map.jsm | 6 - .../source-map/build/suffix-utils.jsm | 21 - .../source-map/build/test-prefix.js | 8 - .../source-map/build/test-suffix.js | 3 - .../node_modules/source-map/lib/source-map.js | 8 - .../source-map/lib/source-map/array-set.js | 97 - .../source-map/lib/source-map/base64-vlq.js | 144 - .../source-map/lib/source-map/base64.js | 42 - .../lib/source-map/binary-search.js | 81 - .../lib/source-map/source-map-consumer.js | 478 - .../lib/source-map/source-map-generator.js | 380 - .../source-map/lib/source-map/source-node.js | 371 - .../source-map/lib/source-map/util.js | 205 - .../node_modules/source-map/package.json | 167 - .../node_modules/source-map/test/run-tests.js | 62 - .../source-map/test/source-map/test-api.js | 26 - .../test/source-map/test-array-set.js | 104 - .../test/source-map/test-base64-vlq.js | 24 - .../source-map/test/source-map/test-base64.js | 35 - .../test/source-map/test-binary-search.js | 54 - .../test/source-map/test-dog-fooding.js | 72 - .../source-map/test-source-map-consumer.js | 451 - .../source-map/test-source-map-generator.js | 417 - .../test/source-map/test-source-node.js | 365 - .../source-map/test/source-map/util.js | 161 - .../node_modules/sparkles/LICENSE | 22 - .../node_modules/sparkles/README.md | 41 - .../node_modules/sparkles/index.js | 45 - .../node_modules/sparkles/package.json | 96 - .../node_modules/spdx-correct/LICENSE | 57 - .../node_modules/spdx-correct/README.md | 10 - .../node_modules/spdx-correct/index.js | 237 - .../node_modules/spdx-correct/package.json | 90 - .../node_modules/spdx-exceptions/README.md | 1 - .../node_modules/spdx-exceptions/index.json | 24 - .../node_modules/spdx-exceptions/package.json | 75 - .../spdx-expression-parse/LICENSE | 22 - .../spdx-expression-parse/README.md | 44 - .../spdx-expression-parse/index.js | 4 - .../spdx-expression-parse/package.json | 92 - .../spdx-expression-parse/parser.generated.js | 1 - .../node_modules/spdx-license-ids/LICENSE | 24 - .../node_modules/spdx-license-ids/README.md | 55 - .../spdx-license-ids/package.json | 109 - .../spdx-license-ids/spdx-license-ids.json | 330 - .../node_modules/split/.npmignore | 3 - .../node_modules/split/.travis.yml | 4 - .../node_modules/split/LICENCE | 22 - .../node_modules/split/examples/pretty.js | 26 - .../node_modules/split/index.js | 59 - .../node_modules/split/package.json | 80 - .../node_modules/split/readme.markdown | 39 - .../split/test/partitioned_unicode.js | 34 - .../node_modules/split/test/split.asynct.js | 85 - .../split/test/try_catch.asynct.js | 51 - .../node_modules/sshpk/.npmignore | 9 - .../node_modules/sshpk/.travis.yml | 11 - .../node_modules/sshpk/LICENSE | 18 - .../node_modules/sshpk/README.md | 455 - .../node_modules/sshpk/bin/sshpk-conv | 195 - .../node_modules/sshpk/bin/sshpk-sign | 191 - .../node_modules/sshpk/bin/sshpk-verify | 166 - .../node_modules/sshpk/lib/algs.js | 168 - .../node_modules/sshpk/lib/dhe.js | 311 - .../node_modules/sshpk/lib/ed-compat.js | 96 - .../node_modules/sshpk/lib/errors.js | 71 - .../node_modules/sshpk/lib/fingerprint.js | 140 - .../node_modules/sshpk/lib/formats/auto.js | 73 - .../node_modules/sshpk/lib/formats/pem.js | 186 - .../node_modules/sshpk/lib/formats/pkcs1.js | 320 - .../node_modules/sshpk/lib/formats/pkcs8.js | 510 - .../node_modules/sshpk/lib/formats/rfc4253.js | 146 - .../sshpk/lib/formats/ssh-private.js | 138 - .../node_modules/sshpk/lib/formats/ssh.js | 114 - .../node_modules/sshpk/lib/index.js | 26 - .../node_modules/sshpk/lib/key.js | 269 - .../node_modules/sshpk/lib/private-key.js | 231 - .../node_modules/sshpk/lib/signature.js | 237 - .../node_modules/sshpk/lib/ssh-buffer.js | 124 - .../node_modules/sshpk/lib/utils.js | 246 - .../node_modules/sshpk/man/man1/sshpk-conv.1 | 135 - .../node_modules/sshpk/man/man1/sshpk-sign.1 | 81 - .../sshpk/man/man1/sshpk-verify.1 | 68 - .../sshpk/node_modules/asn1/.npmignore | 2 - .../sshpk/node_modules/asn1/.travis.yml | 4 - .../sshpk/node_modules/asn1/LICENSE | 19 - .../sshpk/node_modules/asn1/README.md | 50 - .../sshpk/node_modules/asn1/lib/ber/errors.js | 13 - .../sshpk/node_modules/asn1/lib/ber/index.js | 27 - .../sshpk/node_modules/asn1/lib/ber/reader.js | 261 - .../sshpk/node_modules/asn1/lib/ber/types.js | 36 - .../sshpk/node_modules/asn1/lib/ber/writer.js | 316 - .../sshpk/node_modules/asn1/lib/index.js | 20 - .../sshpk/node_modules/asn1/package.json | 90 - .../node_modules/asn1/tst/ber/reader.test.js | 208 - .../node_modules/asn1/tst/ber/writer.test.js | 370 - .../sshpk/node_modules/assert-plus/AUTHORS | 6 - .../sshpk/node_modules/assert-plus/CHANGES.md | 14 - .../sshpk/node_modules/assert-plus/README.md | 162 - .../sshpk/node_modules/assert-plus/assert.js | 211 - .../node_modules/assert-plus/package.json | 107 - .../node_modules/sshpk/package.json | 125 - .../node_modules/stream-combiner/.npmignore | 3 - .../node_modules/stream-combiner/.travis.yml | 4 - .../node_modules/stream-combiner/LICENSE | 22 - .../node_modules/stream-combiner/README.md | 29 - .../node_modules/stream-combiner/index.js | 39 - .../node_modules/stream-combiner/package.json | 77 - .../stream-combiner/test/index.js | 52 - .../node_modules/stream-consume/.npmignore | 1 - .../node_modules/stream-consume/README.md | 53 - .../node_modules/stream-consume/index.js | 14 - .../node_modules/stream-consume/package.json | 74 - .../node_modules/stream-consume/test/tests.js | 180 - .../node_modules/string_decoder/.npmignore | 2 - .../node_modules/string_decoder/LICENSE | 20 - .../node_modules/string_decoder/README.md | 7 - .../node_modules/string_decoder/index.js | 221 - .../node_modules/string_decoder/package.json | 89 - .../node_modules/stringstream/.npmignore | 15 - .../node_modules/stringstream/.travis.yml | 4 - .../node_modules/stringstream/LICENSE.txt | 22 - .../node_modules/stringstream/README.md | 38 - .../node_modules/stringstream/example.js | 27 - .../node_modules/stringstream/package.json | 77 - .../node_modules/stringstream/stringstream.js | 102 - .../node_modules/strip-ansi/index.js | 6 - .../node_modules/strip-ansi/license | 21 - .../node_modules/strip-ansi/package.json | 115 - .../node_modules/strip-ansi/readme.md | 33 - .../node_modules/strip-bom/index.js | 17 - .../node_modules/strip-bom/license | 21 - .../node_modules/strip-bom/package.json | 97 - .../node_modules/strip-bom/readme.md | 39 - .../node_modules/strip-indent/cli.js | 49 - .../node_modules/strip-indent/index.js | 16 - .../node_modules/strip-indent/license | 21 - .../node_modules/strip-indent/package.json | 101 - .../node_modules/strip-indent/readme.md | 61 - .../node_modules/supports-color/index.js | 50 - .../node_modules/supports-color/license | 21 - .../node_modules/supports-color/package.json | 105 - .../node_modules/supports-color/readme.md | 36 - .../node_modules/through/.travis.yml | 5 - .../node_modules/through/LICENSE.APACHE2 | 15 - .../node_modules/through/LICENSE.MIT | 24 - .../node_modules/through/index.js | 108 - .../node_modules/through/package.json | 99 - .../node_modules/through/readme.markdown | 64 - .../node_modules/through/test/async.js | 28 - .../node_modules/through/test/auto-destroy.js | 30 - .../node_modules/through/test/buffering.js | 71 - .../node_modules/through/test/end.js | 45 - .../node_modules/through/test/index.js | 133 - .../node_modules/through2-filter/README.md | 79 - .../node_modules/through2-filter/index.js | 46 - .../node_modules/through2-filter/package.json | 97 - .../node_modules/through2/.npmignore | 3 - .../node_modules/through2/LICENSE | 39 - .../node_modules/through2/README.md | 133 - .../through2/node_modules/isarray/.npmignore | 1 - .../through2/node_modules/isarray/.travis.yml | 4 - .../through2/node_modules/isarray/Makefile | 6 - .../through2/node_modules/isarray/README.md | 60 - .../node_modules/isarray/component.json | 19 - .../through2/node_modules/isarray/index.js | 5 - .../node_modules/isarray/package.json | 96 - .../through2/node_modules/isarray/test.js | 20 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/.travis.yml | 52 - .../node_modules/readable-stream/.zuul.yml | 1 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 36 - .../readable-stream/doc/stream.markdown | 1760 - .../doc/wg-meetings/2015-01-30.md | 60 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 75 - .../lib/_stream_passthrough.js | 26 - .../readable-stream/lib/_stream_readable.js | 880 - .../readable-stream/lib/_stream_transform.js | 180 - .../readable-stream/lib/_stream_writable.js | 516 - .../node_modules/readable-stream/package.json | 105 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 12 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../node_modules/through2/package.json | 104 - .../node_modules/through2/through2.js | 96 - .../node_modules/tildify/index.js | 9 - .../node_modules/tildify/license | 21 - .../node_modules/tildify/package.json | 100 - .../node_modules/tildify/readme.md | 30 - .../node_modules/time-stamp/LICENSE | 21 - .../node_modules/time-stamp/README.md | 121 - .../node_modules/time-stamp/index.js | 47 - .../node_modules/time-stamp/package.json | 128 - .../node_modules/tmp/.npmignore | 2 - .../node_modules/tmp/.travis.yml | 8 - .../node_modules/tmp/Gruntfile.js | 18 - .../node_modules/tmp/LICENSE | 21 - .../node_modules/tmp/README.md | 266 - .../node_modules/tmp/cleanup.sh | 3 - .../node_modules/tmp/lib/tmp.js | 462 - .../node_modules/tmp/package.json | 89 - .../node_modules/tmp/test/base.js | 149 - .../node_modules/tmp/test/dir-sync-test.js | 230 - .../node_modules/tmp/test/dir-test.js | 225 - .../node_modules/tmp/test/file-sync-test.js | 190 - .../node_modules/tmp/test/file-test.js | 191 - .../node_modules/tmp/test/graceful-sync.js | 20 - .../node_modules/tmp/test/graceful.js | 15 - .../node_modules/tmp/test/issue62-sync.js | 27 - .../node_modules/tmp/test/issue62.js | 27 - .../node_modules/tmp/test/keep-sync.js | 12 - .../node_modules/tmp/test/keep.js | 11 - .../node_modules/tmp/test/name-test.js | 82 - .../node_modules/tmp/test/spawn-sync.js | 32 - .../node_modules/tmp/test/spawn.js | 32 - .../node_modules/tmp/test/symlinkme/file.js | 0 .../node_modules/tmp/test/unsafe-sync.js | 30 - .../node_modules/tmp/test/unsafe.js | 30 - .../node_modules/tough-cookie/LICENSE | 27 - .../node_modules/tough-cookie/README.md | 492 - .../node_modules/tough-cookie/lib/cookie.js | 1342 - .../node_modules/tough-cookie/lib/memstore.js | 170 - .../tough-cookie/lib/pathMatch.js | 61 - .../tough-cookie/lib/permuteDomain.js | 56 - .../tough-cookie/lib/pubsuffix.js | 98 - .../node_modules/tough-cookie/lib/store.js | 71 - .../node_modules/tough-cookie/package.json | 120 - .../node_modules/tree-kill/.npmignore | 1 - .../node_modules/tree-kill/README.md | 54 - .../node_modules/tree-kill/index.js | 104 - .../node_modules/tree-kill/package.json | 101 - .../node_modules/trim-newlines/index.js | 13 - .../node_modules/trim-newlines/license | 21 - .../node_modules/trim-newlines/package.json | 98 - .../node_modules/trim-newlines/readme.md | 46 - .../node_modules/tunnel-agent/.jshintrc | 5 - .../node_modules/tunnel-agent/LICENSE | 55 - .../node_modules/tunnel-agent/README.md | 4 - .../node_modules/tunnel-agent/index.js | 243 - .../node_modules/tunnel-agent/package.json | 85 - .../node_modules/tweetnacl/.npmignore | 4 - .../node_modules/tweetnacl/CHANGELOG.md | 128 - .../node_modules/tweetnacl/README.md | 463 - .../node_modules/tweetnacl/nacl-fast.js | 2418 - .../node_modules/tweetnacl/nacl-fast.min.js | 2 - .../node_modules/tweetnacl/nacl.js | 1205 - .../node_modules/tweetnacl/nacl.min.js | 1 - .../node_modules/tweetnacl/package.json | 120 - .../underscore.string/.editorconfig | 9 - .../node_modules/underscore.string/.npmignore | 3 - .../underscore.string/.travis.yml | 4 - .../underscore.string/CHANGELOG.markdown | 161 - .../underscore.string/CONTRIBUTING.markdown | 31 - .../underscore.string/README.markdown | 832 - .../node_modules/underscore.string/bower.json | 34 - .../underscore.string/camelize.js | 14 - .../underscore.string/capitalize.js | 8 - .../node_modules/underscore.string/chars.js | 5 - .../node_modules/underscore.string/chop.js | 6 - .../underscore.string/classify.js | 8 - .../node_modules/underscore.string/clean.js | 5 - .../underscore.string/component.json | 16 - .../node_modules/underscore.string/count.js | 10 - .../underscore.string/dasherize.js | 5 - .../underscore.string/decapitalize.js | 6 - .../node_modules/underscore.string/dedent.js | 28 - .../dist/underscore.string.js | 1065 - .../dist/underscore.string.min.js | 1 - .../underscore.string/endsWith.js | 13 - .../underscore.string/escapeHTML.js | 18 - .../node_modules/underscore.string/exports.js | 10 - .../underscore.string/gulpfile.js | 89 - .../underscore.string/helper/adjacent.js | 9 - .../helper/defaultToWhiteSpace.js | 10 - .../underscore.string/helper/escapeChars.js | 19 - .../underscore.string/helper/escapeRegExp.js | 5 - .../underscore.string/helper/htmlEntities.js | 19 - .../underscore.string/helper/makeString.js | 7 - .../underscore.string/helper/strRepeat.js | 9 - .../underscore.string/helper/toPositive.js | 3 - .../underscore.string/humanize.js | 7 - .../node_modules/underscore.string/include.js | 6 - .../node_modules/underscore.string/index.js | 136 - .../node_modules/underscore.string/insert.js | 5 - .../node_modules/underscore.string/isBlank.js | 5 - .../node_modules/underscore.string/join.js | 9 - .../underscore.string/levenshtein.js | 52 - .../node_modules/underscore.string/lines.js | 4 - .../node_modules/underscore.string/lpad.js | 5 - .../node_modules/underscore.string/lrpad.js | 5 - .../node_modules/underscore.string/ltrim.js | 10 - .../underscore.string/meteor-post.js | 2 - .../underscore.string/meteor-pre.js | 6 - .../underscore.string/naturalCmp.js | 29 - .../underscore.string/numberFormat.js | 12 - .../node_modules/underscore.string/package.js | 16 - .../underscore.string/package.json | 151 - .../node_modules/underscore.string/pad.js | 26 - .../node_modules/underscore.string/pred.js | 5 - .../node_modules/underscore.string/prune.js | 27 - .../node_modules/underscore.string/quote.js | 5 - .../node_modules/underscore.string/repeat.js | 15 - .../underscore.string/replaceAll.js | 8 - .../node_modules/underscore.string/reverse.js | 5 - .../node_modules/underscore.string/rpad.js | 5 - .../node_modules/underscore.string/rtrim.js | 10 - .../node_modules/underscore.string/slugify.js | 17 - .../node_modules/underscore.string/splice.js | 7 - .../node_modules/underscore.string/sprintf.js | 124 - .../underscore.string/startsWith.js | 9 - .../node_modules/underscore.string/strLeft.js | 8 - .../underscore.string/strLeftBack.js | 8 - .../underscore.string/strRight.js | 8 - .../underscore.string/strRightBack.js | 8 - .../underscore.string/stripTags.js | 5 - .../node_modules/underscore.string/succ.js | 5 - .../underscore.string/surround.js | 3 - .../underscore.string/swapCase.js | 7 - .../underscore.string/titleize.js | 7 - .../underscore.string/toBoolean.js | 20 - .../underscore.string/toNumber.js | 7 - .../underscore.string/toSentence.js | 12 - .../underscore.string/toSentenceSerial.js | 5 - .../node_modules/underscore.string/trim.js | 10 - .../underscore.string/truncate.js | 8 - .../underscore.string/underscored.js | 5 - .../underscore.string/unescapeHTML.js | 18 - .../node_modules/underscore.string/unquote.js | 6 - .../underscore.string/vsprintf.js | 6 - .../node_modules/underscore.string/words.js | 7 - .../node_modules/unique-stream/.npmignore | 3 - .../node_modules/unique-stream/.travis.yml | 3 - .../node_modules/unique-stream/LICENSE | 20 - .../node_modules/unique-stream/README.md | 89 - .../node_modules/unique-stream/index.js | 54 - .../node_modules/unique-stream/package.json | 81 - .../node_modules/unique-stream/test/index.js | 109 - .../node_modules/user-home/cli.js | 26 - .../node_modules/user-home/index.js | 15 - .../node_modules/user-home/license | 21 - .../node_modules/user-home/package.json | 95 - .../node_modules/user-home/readme.md | 42 - .../node_modules/util-deprecate/History.md | 16 - .../node_modules/util-deprecate/LICENSE | 24 - .../node_modules/util-deprecate/README.md | 53 - .../node_modules/util-deprecate/browser.js | 67 - .../node_modules/util-deprecate/node.js | 6 - .../node_modules/util-deprecate/package.json | 82 - .../node_modules/v8flags/.npmignore | 4 - .../node_modules/v8flags/LICENSE | 22 - .../node_modules/v8flags/README.md | 47 - .../node_modules/v8flags/index.js | 131 - .../node_modules/v8flags/package.json | 98 - .../validate-npm-package-license/LICENSE | 174 - .../validate-npm-package-license/README.md | 113 - .../validate-npm-package-license/index.js | 84 - .../validate-npm-package-license/package.json | 88 - .../node_modules/verror/.gitmodules | 0 .../node_modules/verror/.npmignore | 1 - .../node_modules/verror/LICENSE | 19 - .../node_modules/verror/Makefile | 35 - .../node_modules/verror/Makefile.targ | 285 - .../node_modules/verror/README.md | 120 - .../verror/examples/levels-verror.js | 36 - .../verror/examples/levels-werror.js | 34 - .../node_modules/verror/examples/varargs.js | 6 - .../node_modules/verror/examples/verror.js | 13 - .../node_modules/verror/examples/werror.js | 14 - .../node_modules/verror/jsl.node.conf | 139 - .../node_modules/verror/lib/verror.js | 157 - .../node_modules/verror/package.json | 70 - .../node_modules/verror/tests/tst.inherit.js | 100 - .../node_modules/verror/tests/tst.verror.js | 156 - .../node_modules/verror/tests/tst.werror.js | 179 - .../node_modules/vinyl-fs/LICENSE | 20 - .../node_modules/vinyl-fs/README.md | 93 - .../node_modules/vinyl-fs/index.js | 7 - .../node_modules/vinyl-fs/lib/dest/index.js | 61 - .../vinyl-fs/lib/dest/writeContents/index.js | 59 - .../lib/dest/writeContents/writeBuffer.js | 13 - .../lib/dest/writeContents/writeDir.js | 9 - .../lib/dest/writeContents/writeStream.js | 22 - .../lib/src/getContents/bufferFile.js | 16 - .../vinyl-fs/lib/src/getContents/index.js | 26 - .../vinyl-fs/lib/src/getContents/readDir.js | 8 - .../lib/src/getContents/streamFile.js | 13 - .../node_modules/vinyl-fs/lib/src/getStats.js | 19 - .../node_modules/vinyl-fs/lib/src/index.js | 61 - .../vinyl-fs/node_modules/.bin/strip-bom | 42 - .../vinyl-fs/node_modules/clone/.npmignore | 1 - .../vinyl-fs/node_modules/clone/.travis.yml | 5 - .../vinyl-fs/node_modules/clone/LICENSE | 18 - .../vinyl-fs/node_modules/clone/README.md | 126 - .../vinyl-fs/node_modules/clone/clone.js | 144 - .../vinyl-fs/node_modules/clone/package.json | 151 - .../vinyl-fs/node_modules/clone/test.js | 289 - .../node_modules/graceful-fs/.npmignore | 1 - .../vinyl-fs/node_modules/graceful-fs/LICENSE | 15 - .../node_modules/graceful-fs/README.md | 36 - .../vinyl-fs/node_modules/graceful-fs/fs.js | 11 - .../node_modules/graceful-fs/graceful-fs.js | 158 - .../node_modules/graceful-fs/package.json | 99 - .../node_modules/graceful-fs/polyfills.js | 255 - .../node_modules/graceful-fs/test/max-open.js | 69 - .../node_modules/graceful-fs/test/open.js | 39 - .../graceful-fs/test/readdir-sort.js | 20 - .../graceful-fs/test/write-then-read.js | 47 - .../node_modules/readable-stream/.npmignore | 5 - .../node_modules/readable-stream/LICENSE | 18 - .../node_modules/readable-stream/README.md | 15 - .../node_modules/readable-stream/duplex.js | 1 - .../readable-stream/lib/_stream_duplex.js | 89 - .../lib/_stream_passthrough.js | 46 - .../readable-stream/lib/_stream_readable.js | 982 - .../readable-stream/lib/_stream_transform.js | 210 - .../readable-stream/lib/_stream_writable.js | 386 - .../node_modules/readable-stream/package.json | 104 - .../readable-stream/passthrough.js | 1 - .../node_modules/readable-stream/readable.js | 11 - .../node_modules/readable-stream/transform.js | 1 - .../node_modules/readable-stream/writable.js | 1 - .../vinyl-fs/node_modules/strip-bom/cli.js | 42 - .../vinyl-fs/node_modules/strip-bom/index.js | 24 - .../node_modules/strip-bom/package.json | 105 - .../vinyl-fs/node_modules/strip-bom/readme.md | 59 - .../vinyl-fs/node_modules/through2/.npmignore | 3 - .../vinyl-fs/node_modules/through2/LICENSE | 39 - .../vinyl-fs/node_modules/through2/README.md | 132 - .../node_modules/through2/package.json | 90 - .../node_modules/through2/through2.js | 96 - .../vinyl-fs/node_modules/vinyl/LICENSE | 20 - .../vinyl-fs/node_modules/vinyl/README.md | 127 - .../vinyl-fs/node_modules/vinyl/index.js | 175 - .../node_modules/vinyl/lib/cloneBuffer.js | 7 - .../node_modules/vinyl/lib/inspectStream.js | 11 - .../node_modules/vinyl/lib/isBuffer.js | 7 - .../vinyl-fs/node_modules/vinyl/lib/isNull.js | 3 - .../node_modules/vinyl/lib/isStream.js | 5 - .../vinyl-fs/node_modules/vinyl/package.json | 100 - .../node_modules/vinyl-fs/package.json | 119 - .../node_modules/vinyl/LICENSE | 20 - .../node_modules/vinyl/README.md | 195 - .../node_modules/vinyl/index.js | 213 - .../node_modules/vinyl/lib/cloneBuffer.js | 7 - .../node_modules/vinyl/lib/inspectStream.js | 11 - .../node_modules/vinyl/lib/isBuffer.js | 1 - .../node_modules/vinyl/lib/isNull.js | 3 - .../node_modules/vinyl/lib/isStream.js | 5 - .../node_modules/vinyl/package.json | 99 - .../node_modules/wordwrap/LICENSE | 18 - .../node_modules/wordwrap/README.markdown | 70 - .../node_modules/wordwrap/example/center.js | 10 - .../node_modules/wordwrap/example/meat.js | 3 - .../node_modules/wordwrap/index.js | 76 - .../node_modules/wordwrap/package.json | 89 - .../node_modules/wordwrap/test/break.js | 30 - .../node_modules/wordwrap/test/idleness.txt | 63 - .../node_modules/wordwrap/test/wrap.js | 31 - .../node_modules/wrappy/LICENSE | 15 - .../node_modules/wrappy/README.md | 36 - .../node_modules/wrappy/package.json | 78 - .../node_modules/wrappy/test/basic.js | 51 - .../node_modules/wrappy/wrappy.js | 33 - .../node_modules/xtend/.jshintrc | 30 - .../node_modules/xtend/.npmignore | 1 - .../node_modules/xtend/LICENCE | 19 - .../node_modules/xtend/Makefile | 4 - .../node_modules/xtend/README.md | 32 - .../node_modules/xtend/immutable.js | 19 - .../node_modules/xtend/mutable.js | 17 - .../node_modules/xtend/package.json | 117 - .../node_modules/xtend/test.js | 83 - .../node_modules/yallist/.npmignore | 4 - .../node_modules/yallist/.travis.yml | 7 - .../node_modules/yallist/CONTRIBUTING.md | 4 - .../node_modules/yallist/LICENSE | 15 - .../node_modules/yallist/README.md | 204 - .../node_modules/yallist/package.json | 77 - .../node_modules/yallist/test/basic.js | 188 - .../node_modules/yallist/yallist.js | 360 - .../node_modules/yauzl/.npmignore | 2 - .../node_modules/yauzl/.travis.yml | 8 - .../node_modules/yauzl/LICENSE | 21 - .../node_modules/yauzl/README.md | 467 - .../node_modules/yauzl/index.js | 626 - .../node_modules/yauzl/package.json | 91 - .../node_modules/yazl/.npmignore | 1 - .../node_modules/yazl/LICENSE | 21 - .../node_modules/yazl/README.md | 291 - .../node_modules/yazl/index.js | 418 - .../node_modules/yazl/package.json | 83 - .../out/src/extension.js | 139 - .../out/src/formatService.js | 47 - .../out/src/pathService.js | 19 - .../out/src/racerClient.js | 263 - .../out/src/rustFormat.js | 47 - .../out/src/rustMain.js | 24 - .../out/src/rustMode.js | 11 - .../out/src/rustPath.js | 20 - .../out/src/rustStatus.js | 35 - .../out/src/rustSuggest.js | 87 - .../out/src/rustSymbols.js | 72 - .../out/src/services/commandService.js | 386 - .../out/src/services/documentSymbolService.js | 13 - .../out/src/services/filterService.js | 12 - .../out/src/services/formatService.js | 110 - .../out/src/services/pathService.js | 55 - .../out/src/services/racerClient.js | 264 - .../out/src/services/rustStatus.js | 35 - .../out/src/services/statusBarService.js | 36 - .../out/src/services/suggestService.js | 448 - .../src/services/workspaceSymbolService.js | 25 - .../package.json | 271 - .../snippets/rust.json | 555 - .../saviorisdead.RustyCode-0.18.0/tslint.json | 104 - .../.github/CONTRIBUTING.md | 104 - .../.github/ISSUE_TEMPLATE.md | 21 - .../.github/PULL_REQUEST_TEMPLATE.md | 9 - .../vscodevim.vim-0.2.0/.travis.yml | 59 - .../vscodevim.vim-0.2.0/.vsixmanifest | 38 - .../vscodevim.vim-0.2.0/LICENSE.txt | 22 - .../extensions/vscodevim.vim-0.2.0/README.md | 144 - .../extensions/vscodevim.vim-0.2.0/ROADMAP.md | 580 - .../extensions/vscodevim.vim-0.2.0/STYLE.md | 25 - .../vscodevim.vim-0.2.0/gulpfile.js | 76 - .../vscodevim.vim-0.2.0/images/icon.png | Bin 14500 -> 0 bytes .../vscodevim.vim-0.2.0/images/screen.png | Bin 74618 -> 0 bytes .../node_modules/child-process/README.md | 9 - .../node_modules/child-process/package.json | 83 - .../node_modules/copy-paste/.npmignore | 2 - .../node_modules/copy-paste/README.md | 44 - .../node_modules/copy-paste/index.js | 116 - .../node_modules/copy-paste/package.json | 85 - .../copy-paste/platform/darwin.js | 9 - .../copy-paste/platform/fallbacks/paste.vbs | 52 - .../node_modules/copy-paste/platform/linux.js | 9 - .../node_modules/copy-paste/platform/win32.js | 22 - .../node_modules/copy-paste/test/copypaste.js | 39 - .../node_modules/copy-paste/test/mocha.opts | 4 - .../node_modules/diff-match-patch/.npmignore | 13 - .../node_modules/diff-match-patch/.travis.yml | 3 - .../node_modules/diff-match-patch/LICENSE | 14 - .../node_modules/diff-match-patch/README.md | 32 - .../node_modules/diff-match-patch/index.js | 2193 - .../diff-match-patch/package.json | 69 - .../diff-match-patch/test/index.js | 1022 - .../node_modules/iconv-lite/.npmignore | 6 - .../node_modules/iconv-lite/.travis.yml | 20 - .../node_modules/iconv-lite/Changelog.md | 93 - .../node_modules/iconv-lite/LICENSE | 21 - .../node_modules/iconv-lite/README.md | 157 - .../iconv-lite/encodings/dbcs-codec.js | 554 - .../iconv-lite/encodings/dbcs-data.js | 170 - .../iconv-lite/encodings/index.js | 22 - .../iconv-lite/encodings/internal.js | 187 - .../iconv-lite/encodings/sbcs-codec.js | 72 - .../encodings/sbcs-data-generated.js | 451 - .../iconv-lite/encodings/sbcs-data.js | 169 - .../encodings/tables/big5-added.json | 122 - .../iconv-lite/encodings/tables/cp936.json | 264 - .../iconv-lite/encodings/tables/cp949.json | 273 - .../iconv-lite/encodings/tables/cp950.json | 177 - .../iconv-lite/encodings/tables/eucjp.json | 182 - .../encodings/tables/gb18030-ranges.json | 1 - .../encodings/tables/gbk-added.json | 55 - .../iconv-lite/encodings/tables/shiftjis.json | 125 - .../iconv-lite/encodings/utf16.js | 174 - .../node_modules/iconv-lite/encodings/utf7.js | 289 - .../iconv-lite/lib/bom-handling.js | 52 - .../iconv-lite/lib/extend-node.js | 214 - .../node_modules/iconv-lite/lib/index.js | 141 - .../node_modules/iconv-lite/lib/streams.js | 120 - .../node_modules/iconv-lite/package.json | 145 - .../node_modules/lodash/LICENSE | 47 - .../node_modules/lodash/README.md | 40 - .../node_modules/lodash/_DataView.js | 7 - .../node_modules/lodash/_Hash.js | 32 - .../node_modules/lodash/_LazyWrapper.js | 28 - .../node_modules/lodash/_ListCache.js | 32 - .../node_modules/lodash/_LodashWrapper.js | 22 - .../node_modules/lodash/_Map.js | 7 - .../node_modules/lodash/_MapCache.js | 32 - .../node_modules/lodash/_Promise.js | 7 - .../node_modules/lodash/_Set.js | 7 - .../node_modules/lodash/_SetCache.js | 27 - .../node_modules/lodash/_Stack.js | 26 - .../node_modules/lodash/_Symbol.js | 6 - .../node_modules/lodash/_Uint8Array.js | 6 - .../node_modules/lodash/_WeakMap.js | 7 - .../node_modules/lodash/_addMapEntry.js | 15 - .../node_modules/lodash/_addSetEntry.js | 15 - .../node_modules/lodash/_apply.js | 21 - .../node_modules/lodash/_arrayAggregator.js | 22 - .../node_modules/lodash/_arrayEach.js | 22 - .../node_modules/lodash/_arrayEachRight.js | 21 - .../node_modules/lodash/_arrayEvery.js | 23 - .../node_modules/lodash/_arrayFilter.js | 25 - .../node_modules/lodash/_arrayIncludes.js | 17 - .../node_modules/lodash/_arrayIncludesWith.js | 22 - .../node_modules/lodash/_arrayLikeKeys.js | 39 - .../node_modules/lodash/_arrayMap.js | 21 - .../node_modules/lodash/_arrayPush.js | 20 - .../node_modules/lodash/_arrayReduce.js | 26 - .../node_modules/lodash/_arrayReduceRight.js | 24 - .../node_modules/lodash/_arraySome.js | 23 - .../node_modules/lodash/_asciiSize.js | 12 - .../node_modules/lodash/_asciiToArray.js | 12 - .../node_modules/lodash/_asciiWords.js | 15 - .../node_modules/lodash/_assignInDefaults.js | 27 - .../node_modules/lodash/_assignMergeValue.js | 19 - .../node_modules/lodash/_assignValue.js | 27 - .../node_modules/lodash/_assocIndexOf.js | 21 - .../node_modules/lodash/_baseAggregator.js | 21 - .../node_modules/lodash/_baseAssign.js | 17 - .../node_modules/lodash/_baseAt.js | 23 - .../node_modules/lodash/_baseClamp.js | 22 - .../node_modules/lodash/_baseClone.js | 139 - .../node_modules/lodash/_baseConforms.js | 18 - .../node_modules/lodash/_baseConformsTo.js | 27 - .../node_modules/lodash/_baseCreate.js | 18 - .../node_modules/lodash/_baseDelay.js | 21 - .../node_modules/lodash/_baseDifference.js | 67 - .../node_modules/lodash/_baseEach.js | 14 - .../node_modules/lodash/_baseEachRight.js | 14 - .../node_modules/lodash/_baseEvery.js | 21 - .../node_modules/lodash/_baseExtremum.js | 32 - .../node_modules/lodash/_baseFill.js | 32 - .../node_modules/lodash/_baseFilter.js | 21 - .../node_modules/lodash/_baseFindIndex.js | 24 - .../node_modules/lodash/_baseFindKey.js | 23 - .../node_modules/lodash/_baseFlatten.js | 38 - .../node_modules/lodash/_baseFor.js | 16 - .../node_modules/lodash/_baseForOwn.js | 16 - .../node_modules/lodash/_baseForOwnRight.js | 16 - .../node_modules/lodash/_baseForRight.js | 15 - .../node_modules/lodash/_baseFunctions.js | 19 - .../node_modules/lodash/_baseGet.js | 25 - .../node_modules/lodash/_baseGetAllKeys.js | 20 - .../node_modules/lodash/_baseGetTag.js | 22 - .../node_modules/lodash/_baseGt.js | 14 - .../node_modules/lodash/_baseHas.js | 19 - .../node_modules/lodash/_baseHasIn.js | 13 - .../node_modules/lodash/_baseInRange.js | 18 - .../node_modules/lodash/_baseIndexOf.js | 28 - .../node_modules/lodash/_baseIndexOfWith.js | 23 - .../node_modules/lodash/_baseIntersection.js | 74 - .../node_modules/lodash/_baseInverter.js | 21 - .../node_modules/lodash/_baseInvoke.js | 28 - .../node_modules/lodash/_baseIsArrayBuffer.js | 26 - .../node_modules/lodash/_baseIsDate.js | 27 - .../node_modules/lodash/_baseIsEqual.js | 30 - .../node_modules/lodash/_baseIsEqualDeep.js | 82 - .../node_modules/lodash/_baseIsMap.js | 18 - .../node_modules/lodash/_baseIsMatch.js | 62 - .../node_modules/lodash/_baseIsNaN.js | 12 - .../node_modules/lodash/_baseIsNative.js | 48 - .../node_modules/lodash/_baseIsRegExp.js | 27 - .../node_modules/lodash/_baseIsSet.js | 18 - .../node_modules/lodash/_baseIsTypedArray.js | 69 - .../node_modules/lodash/_baseIteratee.js | 31 - .../node_modules/lodash/_baseKeys.js | 30 - .../node_modules/lodash/_baseKeysIn.js | 33 - .../node_modules/lodash/_baseLodash.js | 10 - .../node_modules/lodash/_baseLt.js | 14 - .../node_modules/lodash/_baseMap.js | 22 - .../node_modules/lodash/_baseMatches.js | 22 - .../lodash/_baseMatchesProperty.js | 33 - .../node_modules/lodash/_baseMean.js | 20 - .../node_modules/lodash/_baseMerge.js | 50 - .../node_modules/lodash/_baseMergeDeep.js | 82 - .../node_modules/lodash/_baseNth.js | 20 - .../node_modules/lodash/_baseOrderBy.js | 34 - .../node_modules/lodash/_basePick.js | 19 - .../node_modules/lodash/_basePickBy.js | 26 - .../node_modules/lodash/_baseProperty.js | 14 - .../node_modules/lodash/_basePropertyDeep.js | 16 - .../node_modules/lodash/_basePropertyOf.js | 14 - .../node_modules/lodash/_basePullAll.js | 51 - .../node_modules/lodash/_basePullAt.js | 50 - .../node_modules/lodash/_baseRandom.js | 18 - .../node_modules/lodash/_baseRange.js | 28 - .../node_modules/lodash/_baseReduce.js | 23 - .../node_modules/lodash/_baseRepeat.js | 35 - .../node_modules/lodash/_baseRest.js | 35 - .../node_modules/lodash/_baseSet.js | 48 - .../node_modules/lodash/_baseSetData.js | 17 - .../node_modules/lodash/_baseSlice.js | 31 - .../node_modules/lodash/_baseSome.js | 22 - .../node_modules/lodash/_baseSortBy.js | 21 - .../node_modules/lodash/_baseSortedIndex.js | 42 - .../node_modules/lodash/_baseSortedIndexBy.js | 64 - .../node_modules/lodash/_baseSortedUniq.js | 30 - .../node_modules/lodash/_baseSum.js | 24 - .../node_modules/lodash/_baseTimes.js | 20 - .../node_modules/lodash/_baseToNumber.js | 24 - .../node_modules/lodash/_baseToPairs.js | 18 - .../node_modules/lodash/_baseToString.js | 31 - .../node_modules/lodash/_baseUnary.js | 14 - .../node_modules/lodash/_baseUniq.js | 72 - .../node_modules/lodash/_baseUnset.js | 29 - .../node_modules/lodash/_baseUpdate.js | 18 - .../node_modules/lodash/_baseValues.js | 19 - .../node_modules/lodash/_baseWhile.js | 26 - .../node_modules/lodash/_baseWrapperValue.js | 25 - .../node_modules/lodash/_baseXor.js | 30 - .../node_modules/lodash/_baseZipObject.js | 23 - .../node_modules/lodash/_cacheHas.js | 13 - .../lodash/_castArrayLikeObject.js | 14 - .../node_modules/lodash/_castFunction.js | 14 - .../node_modules/lodash/_castPath.js | 15 - .../node_modules/lodash/_castSlice.js | 18 - .../node_modules/lodash/_charsEndIndex.js | 19 - .../node_modules/lodash/_charsStartIndex.js | 20 - .../node_modules/lodash/_cloneArrayBuffer.js | 16 - .../node_modules/lodash/_cloneBuffer.js | 18 - .../node_modules/lodash/_cloneDataView.js | 16 - .../node_modules/lodash/_cloneMap.js | 19 - .../node_modules/lodash/_cloneRegExp.js | 17 - .../node_modules/lodash/_cloneSet.js | 19 - .../node_modules/lodash/_cloneSymbol.js | 18 - .../node_modules/lodash/_cloneTypedArray.js | 16 - .../node_modules/lodash/_compareAscending.js | 41 - .../node_modules/lodash/_compareMultiple.js | 44 - .../node_modules/lodash/_composeArgs.js | 39 - .../node_modules/lodash/_composeArgsRight.js | 41 - .../node_modules/lodash/_copyArray.js | 20 - .../node_modules/lodash/_copyObject.js | 31 - .../node_modules/lodash/_copySymbols.js | 16 - .../node_modules/lodash/_coreJsData.js | 6 - .../node_modules/lodash/_countHolders.js | 21 - .../node_modules/lodash/_createAggregator.js | 23 - .../node_modules/lodash/_createAssigner.js | 37 - .../node_modules/lodash/_createBaseEach.js | 32 - .../node_modules/lodash/_createBaseFor.js | 25 - .../node_modules/lodash/_createBind.js | 28 - .../node_modules/lodash/_createCaseFirst.js | 33 - .../node_modules/lodash/_createCompounder.js | 24 - .../node_modules/lodash/_createCtor.js | 37 - .../node_modules/lodash/_createCurry.js | 46 - .../node_modules/lodash/_createFind.js | 25 - .../node_modules/lodash/_createFlow.js | 85 - .../node_modules/lodash/_createHybrid.js | 92 - .../node_modules/lodash/_createInverter.js | 17 - .../lodash/_createMathOperation.js | 38 - .../node_modules/lodash/_createOver.js | 31 - .../node_modules/lodash/_createPadding.js | 33 - .../node_modules/lodash/_createPartial.js | 43 - .../node_modules/lodash/_createRange.js | 30 - .../node_modules/lodash/_createRecurry.js | 56 - .../lodash/_createRelationalOperation.js | 20 - .../node_modules/lodash/_createRound.js | 33 - .../node_modules/lodash/_createSet.js | 19 - .../node_modules/lodash/_createToPairs.js | 30 - .../node_modules/lodash/_createWrap.js | 107 - .../node_modules/lodash/_deburrLetter.js | 71 - .../node_modules/lodash/_defineProperty.js | 11 - .../node_modules/lodash/_equalArrays.js | 83 - .../node_modules/lodash/_equalByTag.js | 113 - .../node_modules/lodash/_equalObjects.js | 90 - .../node_modules/lodash/_escapeHtmlChar.js | 22 - .../node_modules/lodash/_escapeStringChar.js | 22 - .../node_modules/lodash/_freeGlobal.js | 4 - .../node_modules/lodash/_getAllKeys.js | 16 - .../node_modules/lodash/_getAllKeysIn.js | 17 - .../node_modules/lodash/_getData.js | 15 - .../node_modules/lodash/_getFuncName.js | 31 - .../node_modules/lodash/_getHolder.js | 13 - .../node_modules/lodash/_getMapData.js | 18 - .../node_modules/lodash/_getMatchData.js | 24 - .../node_modules/lodash/_getNative.js | 17 - .../node_modules/lodash/_getPrototype.js | 6 - .../node_modules/lodash/_getSymbols.js | 16 - .../node_modules/lodash/_getSymbolsIn.js | 26 - .../node_modules/lodash/_getTag.js | 69 - .../node_modules/lodash/_getValue.js | 13 - .../node_modules/lodash/_getView.js | 33 - .../node_modules/lodash/_getWrapDetails.js | 17 - .../node_modules/lodash/_hasPath.js | 40 - .../node_modules/lodash/_hasUnicode.js | 24 - .../node_modules/lodash/_hasUnicodeWord.js | 15 - .../node_modules/lodash/_hashClear.js | 14 - .../node_modules/lodash/_hashDelete.js | 15 - .../node_modules/lodash/_hashGet.js | 30 - .../node_modules/lodash/_hashHas.js | 23 - .../node_modules/lodash/_hashSet.js | 22 - .../node_modules/lodash/_initCloneArray.js | 26 - .../node_modules/lodash/_initCloneByTag.js | 80 - .../node_modules/lodash/_initCloneObject.js | 18 - .../node_modules/lodash/_insertWrapDetails.js | 21 - .../node_modules/lodash/_isFlattenable.js | 20 - .../node_modules/lodash/_isHostObject.js | 20 - .../node_modules/lodash/_isIndex.js | 22 - .../node_modules/lodash/_isIterateeCall.js | 30 - .../node_modules/lodash/_isKey.js | 29 - .../node_modules/lodash/_isKeyable.js | 15 - .../node_modules/lodash/_isLaziable.js | 28 - .../node_modules/lodash/_isMaskable.js | 14 - .../node_modules/lodash/_isMasked.js | 20 - .../node_modules/lodash/_isPrototype.js | 18 - .../lodash/_isStrictComparable.js | 15 - .../node_modules/lodash/_iteratorToArray.js | 18 - .../node_modules/lodash/_lazyClone.js | 23 - .../node_modules/lodash/_lazyReverse.js | 23 - .../node_modules/lodash/_lazyValue.js | 73 - .../node_modules/lodash/_listCacheClear.js | 12 - .../node_modules/lodash/_listCacheDelete.js | 34 - .../node_modules/lodash/_listCacheGet.js | 19 - .../node_modules/lodash/_listCacheHas.js | 16 - .../node_modules/lodash/_listCacheSet.js | 25 - .../node_modules/lodash/_mapCacheClear.js | 20 - .../node_modules/lodash/_mapCacheDelete.js | 16 - .../node_modules/lodash/_mapCacheGet.js | 16 - .../node_modules/lodash/_mapCacheHas.js | 16 - .../node_modules/lodash/_mapCacheSet.js | 18 - .../node_modules/lodash/_mapToArray.js | 18 - .../lodash/_matchesStrictComparable.js | 20 - .../node_modules/lodash/_mergeData.js | 90 - .../node_modules/lodash/_mergeDefaults.js | 27 - .../node_modules/lodash/_metaMap.js | 6 - .../node_modules/lodash/_nativeCreate.js | 6 - .../node_modules/lodash/_nativeKeys.js | 6 - .../node_modules/lodash/_nativeKeysIn.js | 20 - .../node_modules/lodash/_nodeUtil.js | 22 - .../node_modules/lodash/_overArg.js | 15 - .../node_modules/lodash/_parent.js | 16 - .../node_modules/lodash/_reEscape.js | 4 - .../node_modules/lodash/_reEvaluate.js | 4 - .../node_modules/lodash/_reInterpolate.js | 4 - .../node_modules/lodash/_realNames.js | 4 - .../node_modules/lodash/_reorder.js | 29 - .../node_modules/lodash/_replaceHolders.js | 29 - .../node_modules/lodash/_root.js | 9 - .../node_modules/lodash/_setCacheAdd.js | 19 - .../node_modules/lodash/_setCacheHas.js | 14 - .../node_modules/lodash/_setData.js | 42 - .../node_modules/lodash/_setToArray.js | 18 - .../node_modules/lodash/_setToPairs.js | 18 - .../node_modules/lodash/_setWrapToString.js | 27 - .../node_modules/lodash/_stackClear.js | 14 - .../node_modules/lodash/_stackDelete.js | 14 - .../node_modules/lodash/_stackGet.js | 14 - .../node_modules/lodash/_stackHas.js | 14 - .../node_modules/lodash/_stackSet.js | 32 - .../node_modules/lodash/_stringSize.js | 18 - .../node_modules/lodash/_stringToArray.js | 18 - .../node_modules/lodash/_stringToPath.js | 31 - .../node_modules/lodash/_toKey.js | 21 - .../node_modules/lodash/_toSource.js | 26 - .../node_modules/lodash/_unescapeHtmlChar.js | 22 - .../node_modules/lodash/_unicodeSize.js | 42 - .../node_modules/lodash/_unicodeToArray.js | 38 - .../node_modules/lodash/_unicodeWords.js | 63 - .../node_modules/lodash/_updateWrapDetails.js | 46 - .../node_modules/lodash/_wrapperClone.js | 23 - .../node_modules/lodash/add.js | 22 - .../node_modules/lodash/after.js | 42 - .../node_modules/lodash/array.js | 67 - .../node_modules/lodash/ary.js | 29 - .../node_modules/lodash/assign.js | 64 - .../node_modules/lodash/assignIn.js | 40 - .../node_modules/lodash/assignInWith.js | 38 - .../node_modules/lodash/assignWith.js | 37 - .../node_modules/lodash/at.js | 26 - .../node_modules/lodash/attempt.js | 35 - .../node_modules/lodash/before.js | 40 - .../node_modules/lodash/bind.js | 57 - .../node_modules/lodash/bindAll.js | 41 - .../node_modules/lodash/bindKey.js | 68 - .../node_modules/lodash/camelCase.js | 29 - .../node_modules/lodash/capitalize.js | 23 - .../node_modules/lodash/castArray.js | 44 - .../node_modules/lodash/ceil.js | 26 - .../node_modules/lodash/chain.js | 38 - .../node_modules/lodash/chunk.js | 50 - .../node_modules/lodash/clamp.js | 39 - .../node_modules/lodash/clone.js | 33 - .../node_modules/lodash/cloneDeep.js | 25 - .../node_modules/lodash/cloneDeepWith.js | 35 - .../node_modules/lodash/cloneWith.js | 38 - .../node_modules/lodash/collection.js | 30 - .../node_modules/lodash/commit.js | 33 - .../node_modules/lodash/compact.js | 31 - .../node_modules/lodash/concat.js | 42 - .../node_modules/lodash/cond.js | 60 - .../node_modules/lodash/conforms.js | 32 - .../node_modules/lodash/conformsTo.js | 32 - .../node_modules/lodash/constant.js | 26 - .../node_modules/lodash/core.js | 3806 - .../node_modules/lodash/core.min.js | 28 - .../node_modules/lodash/countBy.js | 36 - .../node_modules/lodash/create.js | 43 - .../node_modules/lodash/curry.js | 57 - .../node_modules/lodash/curryRight.js | 54 - .../node_modules/lodash/date.js | 3 - .../node_modules/lodash/debounce.js | 188 - .../node_modules/lodash/deburr.js | 43 - .../node_modules/lodash/defaultTo.js | 25 - .../node_modules/lodash/defaults.js | 32 - .../node_modules/lodash/defaultsDeep.js | 30 - .../node_modules/lodash/defer.js | 26 - .../node_modules/lodash/delay.js | 28 - .../node_modules/lodash/difference.js | 33 - .../node_modules/lodash/differenceBy.js | 43 - .../node_modules/lodash/differenceWith.js | 40 - .../node_modules/lodash/divide.js | 22 - .../node_modules/lodash/drop.js | 38 - .../node_modules/lodash/dropRight.js | 39 - .../node_modules/lodash/dropRightWhile.js | 45 - .../node_modules/lodash/dropWhile.js | 46 - .../node_modules/lodash/each.js | 1 - .../node_modules/lodash/eachRight.js | 1 - .../node_modules/lodash/endsWith.js | 43 - .../node_modules/lodash/entries.js | 1 - .../node_modules/lodash/entriesIn.js | 1 - .../node_modules/lodash/eq.js | 37 - .../node_modules/lodash/escape.js | 49 - .../node_modules/lodash/escapeRegExp.js | 32 - .../node_modules/lodash/every.js | 57 - .../node_modules/lodash/extend.js | 1 - .../node_modules/lodash/extendWith.js | 1 - .../node_modules/lodash/fill.js | 45 - .../node_modules/lodash/filter.js | 49 - .../node_modules/lodash/find.js | 43 - .../node_modules/lodash/findIndex.js | 56 - .../node_modules/lodash/findKey.js | 44 - .../node_modules/lodash/findLast.js | 26 - .../node_modules/lodash/findLastIndex.js | 60 - .../node_modules/lodash/findLastKey.js | 44 - .../node_modules/lodash/first.js | 1 - .../node_modules/lodash/flatMap.js | 30 - .../node_modules/lodash/flatMapDeep.js | 32 - .../node_modules/lodash/flatMapDepth.js | 32 - .../node_modules/lodash/flatten.js | 22 - .../node_modules/lodash/flattenDeep.js | 25 - .../node_modules/lodash/flattenDepth.js | 33 - .../node_modules/lodash/flip.js | 28 - .../node_modules/lodash/floor.js | 26 - .../node_modules/lodash/flow.js | 27 - .../node_modules/lodash/flowRight.js | 26 - .../node_modules/lodash/forEach.js | 41 - .../node_modules/lodash/forEachRight.js | 31 - .../node_modules/lodash/forIn.js | 39 - .../node_modules/lodash/forInRight.js | 37 - .../node_modules/lodash/forOwn.js | 36 - .../node_modules/lodash/forOwnRight.js | 34 - .../node_modules/lodash/fp.js | 2 - .../node_modules/lodash/fp/F.js | 1 - .../node_modules/lodash/fp/T.js | 1 - .../node_modules/lodash/fp/__.js | 1 - .../node_modules/lodash/fp/_baseConvert.js | 535 - .../node_modules/lodash/fp/_convertBrowser.js | 18 - .../node_modules/lodash/fp/_falseOptions.js | 7 - .../node_modules/lodash/fp/_mapping.js | 362 - .../node_modules/lodash/fp/_util.js | 15 - .../node_modules/lodash/fp/add.js | 5 - .../node_modules/lodash/fp/after.js | 5 - .../node_modules/lodash/fp/all.js | 1 - .../node_modules/lodash/fp/allPass.js | 1 - .../node_modules/lodash/fp/always.js | 1 - .../node_modules/lodash/fp/any.js | 1 - .../node_modules/lodash/fp/anyPass.js | 1 - .../node_modules/lodash/fp/apply.js | 1 - .../node_modules/lodash/fp/array.js | 2 - .../node_modules/lodash/fp/ary.js | 5 - .../node_modules/lodash/fp/assign.js | 5 - .../node_modules/lodash/fp/assignAll.js | 5 - .../node_modules/lodash/fp/assignAllWith.js | 5 - .../node_modules/lodash/fp/assignIn.js | 5 - .../node_modules/lodash/fp/assignInAll.js | 5 - .../node_modules/lodash/fp/assignInAllWith.js | 5 - .../node_modules/lodash/fp/assignInWith.js | 5 - .../node_modules/lodash/fp/assignWith.js | 5 - .../node_modules/lodash/fp/assoc.js | 1 - .../node_modules/lodash/fp/assocPath.js | 1 - .../node_modules/lodash/fp/at.js | 5 - .../node_modules/lodash/fp/attempt.js | 5 - .../node_modules/lodash/fp/before.js | 5 - .../node_modules/lodash/fp/bind.js | 5 - .../node_modules/lodash/fp/bindAll.js | 5 - .../node_modules/lodash/fp/bindKey.js | 5 - .../node_modules/lodash/fp/camelCase.js | 5 - .../node_modules/lodash/fp/capitalize.js | 5 - .../node_modules/lodash/fp/castArray.js | 5 - .../node_modules/lodash/fp/ceil.js | 5 - .../node_modules/lodash/fp/chain.js | 5 - .../node_modules/lodash/fp/chunk.js | 5 - .../node_modules/lodash/fp/clamp.js | 5 - .../node_modules/lodash/fp/clone.js | 5 - .../node_modules/lodash/fp/cloneDeep.js | 5 - .../node_modules/lodash/fp/cloneDeepWith.js | 5 - .../node_modules/lodash/fp/cloneWith.js | 5 - .../node_modules/lodash/fp/collection.js | 2 - .../node_modules/lodash/fp/commit.js | 5 - .../node_modules/lodash/fp/compact.js | 5 - .../node_modules/lodash/fp/complement.js | 1 - .../node_modules/lodash/fp/compose.js | 1 - .../node_modules/lodash/fp/concat.js | 5 - .../node_modules/lodash/fp/cond.js | 5 - .../node_modules/lodash/fp/conforms.js | 1 - .../node_modules/lodash/fp/conformsTo.js | 5 - .../node_modules/lodash/fp/constant.js | 5 - .../node_modules/lodash/fp/contains.js | 1 - .../node_modules/lodash/fp/convert.js | 18 - .../node_modules/lodash/fp/countBy.js | 5 - .../node_modules/lodash/fp/create.js | 5 - .../node_modules/lodash/fp/curry.js | 5 - .../node_modules/lodash/fp/curryN.js | 5 - .../node_modules/lodash/fp/curryRight.js | 5 - .../node_modules/lodash/fp/curryRightN.js | 5 - .../node_modules/lodash/fp/date.js | 2 - .../node_modules/lodash/fp/debounce.js | 5 - .../node_modules/lodash/fp/deburr.js | 5 - .../node_modules/lodash/fp/defaultTo.js | 5 - .../node_modules/lodash/fp/defaults.js | 5 - .../node_modules/lodash/fp/defaultsAll.js | 5 - .../node_modules/lodash/fp/defaultsDeep.js | 5 - .../node_modules/lodash/fp/defaultsDeepAll.js | 5 - .../node_modules/lodash/fp/defer.js | 5 - .../node_modules/lodash/fp/delay.js | 5 - .../node_modules/lodash/fp/difference.js | 5 - .../node_modules/lodash/fp/differenceBy.js | 5 - .../node_modules/lodash/fp/differenceWith.js | 5 - .../node_modules/lodash/fp/dissoc.js | 1 - .../node_modules/lodash/fp/dissocPath.js | 1 - .../node_modules/lodash/fp/divide.js | 5 - .../node_modules/lodash/fp/drop.js | 5 - .../node_modules/lodash/fp/dropLast.js | 1 - .../node_modules/lodash/fp/dropLastWhile.js | 1 - .../node_modules/lodash/fp/dropRight.js | 5 - .../node_modules/lodash/fp/dropRightWhile.js | 5 - .../node_modules/lodash/fp/dropWhile.js | 5 - .../node_modules/lodash/fp/each.js | 1 - .../node_modules/lodash/fp/eachRight.js | 1 - .../node_modules/lodash/fp/endsWith.js | 5 - .../node_modules/lodash/fp/entries.js | 1 - .../node_modules/lodash/fp/entriesIn.js | 1 - .../node_modules/lodash/fp/eq.js | 5 - .../node_modules/lodash/fp/equals.js | 1 - .../node_modules/lodash/fp/escape.js | 5 - .../node_modules/lodash/fp/escapeRegExp.js | 5 - .../node_modules/lodash/fp/every.js | 5 - .../node_modules/lodash/fp/extend.js | 1 - .../node_modules/lodash/fp/extendAll.js | 1 - .../node_modules/lodash/fp/extendAllWith.js | 1 - .../node_modules/lodash/fp/extendWith.js | 1 - .../node_modules/lodash/fp/fill.js | 5 - .../node_modules/lodash/fp/filter.js | 5 - .../node_modules/lodash/fp/find.js | 5 - .../node_modules/lodash/fp/findFrom.js | 5 - .../node_modules/lodash/fp/findIndex.js | 5 - .../node_modules/lodash/fp/findIndexFrom.js | 5 - .../node_modules/lodash/fp/findKey.js | 5 - .../node_modules/lodash/fp/findLast.js | 5 - .../node_modules/lodash/fp/findLastFrom.js | 5 - .../node_modules/lodash/fp/findLastIndex.js | 5 - .../lodash/fp/findLastIndexFrom.js | 5 - .../node_modules/lodash/fp/findLastKey.js | 5 - .../node_modules/lodash/fp/first.js | 1 - .../node_modules/lodash/fp/flatMap.js | 5 - .../node_modules/lodash/fp/flatMapDeep.js | 5 - .../node_modules/lodash/fp/flatMapDepth.js | 5 - .../node_modules/lodash/fp/flatten.js | 5 - .../node_modules/lodash/fp/flattenDeep.js | 5 - .../node_modules/lodash/fp/flattenDepth.js | 5 - .../node_modules/lodash/fp/flip.js | 5 - .../node_modules/lodash/fp/floor.js | 5 - .../node_modules/lodash/fp/flow.js | 5 - .../node_modules/lodash/fp/flowRight.js | 5 - .../node_modules/lodash/fp/forEach.js | 5 - .../node_modules/lodash/fp/forEachRight.js | 5 - .../node_modules/lodash/fp/forIn.js | 5 - .../node_modules/lodash/fp/forInRight.js | 5 - .../node_modules/lodash/fp/forOwn.js | 5 - .../node_modules/lodash/fp/forOwnRight.js | 5 - .../node_modules/lodash/fp/fromPairs.js | 5 - .../node_modules/lodash/fp/function.js | 2 - .../node_modules/lodash/fp/functions.js | 5 - .../node_modules/lodash/fp/functionsIn.js | 5 - .../node_modules/lodash/fp/get.js | 5 - .../node_modules/lodash/fp/getOr.js | 5 - .../node_modules/lodash/fp/groupBy.js | 5 - .../node_modules/lodash/fp/gt.js | 5 - .../node_modules/lodash/fp/gte.js | 5 - .../node_modules/lodash/fp/has.js | 5 - .../node_modules/lodash/fp/hasIn.js | 5 - .../node_modules/lodash/fp/head.js | 5 - .../node_modules/lodash/fp/identical.js | 1 - .../node_modules/lodash/fp/identity.js | 5 - .../node_modules/lodash/fp/inRange.js | 5 - .../node_modules/lodash/fp/includes.js | 5 - .../node_modules/lodash/fp/includesFrom.js | 5 - .../node_modules/lodash/fp/indexBy.js | 1 - .../node_modules/lodash/fp/indexOf.js | 5 - .../node_modules/lodash/fp/indexOfFrom.js | 5 - .../node_modules/lodash/fp/init.js | 1 - .../node_modules/lodash/fp/initial.js | 5 - .../node_modules/lodash/fp/intersection.js | 5 - .../node_modules/lodash/fp/intersectionBy.js | 5 - .../lodash/fp/intersectionWith.js | 5 - .../node_modules/lodash/fp/invert.js | 5 - .../node_modules/lodash/fp/invertBy.js | 5 - .../node_modules/lodash/fp/invertObj.js | 1 - .../node_modules/lodash/fp/invoke.js | 5 - .../node_modules/lodash/fp/invokeArgs.js | 5 - .../node_modules/lodash/fp/invokeArgsMap.js | 5 - .../node_modules/lodash/fp/invokeMap.js | 5 - .../node_modules/lodash/fp/isArguments.js | 5 - .../node_modules/lodash/fp/isArray.js | 5 - .../node_modules/lodash/fp/isArrayBuffer.js | 5 - .../node_modules/lodash/fp/isArrayLike.js | 5 - .../lodash/fp/isArrayLikeObject.js | 5 - .../node_modules/lodash/fp/isBoolean.js | 5 - .../node_modules/lodash/fp/isBuffer.js | 5 - .../node_modules/lodash/fp/isDate.js | 5 - .../node_modules/lodash/fp/isElement.js | 5 - .../node_modules/lodash/fp/isEmpty.js | 5 - .../node_modules/lodash/fp/isEqual.js | 5 - .../node_modules/lodash/fp/isEqualWith.js | 5 - .../node_modules/lodash/fp/isError.js | 5 - .../node_modules/lodash/fp/isFinite.js | 5 - .../node_modules/lodash/fp/isFunction.js | 5 - .../node_modules/lodash/fp/isInteger.js | 5 - .../node_modules/lodash/fp/isLength.js | 5 - .../node_modules/lodash/fp/isMap.js | 5 - .../node_modules/lodash/fp/isMatch.js | 5 - .../node_modules/lodash/fp/isMatchWith.js | 5 - .../node_modules/lodash/fp/isNaN.js | 5 - .../node_modules/lodash/fp/isNative.js | 5 - .../node_modules/lodash/fp/isNil.js | 5 - .../node_modules/lodash/fp/isNull.js | 5 - .../node_modules/lodash/fp/isNumber.js | 5 - .../node_modules/lodash/fp/isObject.js | 5 - .../node_modules/lodash/fp/isObjectLike.js | 5 - .../node_modules/lodash/fp/isPlainObject.js | 5 - .../node_modules/lodash/fp/isRegExp.js | 5 - .../node_modules/lodash/fp/isSafeInteger.js | 5 - .../node_modules/lodash/fp/isSet.js | 5 - .../node_modules/lodash/fp/isString.js | 5 - .../node_modules/lodash/fp/isSymbol.js | 5 - .../node_modules/lodash/fp/isTypedArray.js | 5 - .../node_modules/lodash/fp/isUndefined.js | 5 - .../node_modules/lodash/fp/isWeakMap.js | 5 - .../node_modules/lodash/fp/isWeakSet.js | 5 - .../node_modules/lodash/fp/iteratee.js | 5 - .../node_modules/lodash/fp/join.js | 5 - .../node_modules/lodash/fp/juxt.js | 1 - .../node_modules/lodash/fp/kebabCase.js | 5 - .../node_modules/lodash/fp/keyBy.js | 5 - .../node_modules/lodash/fp/keys.js | 5 - .../node_modules/lodash/fp/keysIn.js | 5 - .../node_modules/lodash/fp/lang.js | 2 - .../node_modules/lodash/fp/last.js | 5 - .../node_modules/lodash/fp/lastIndexOf.js | 5 - .../node_modules/lodash/fp/lastIndexOfFrom.js | 5 - .../node_modules/lodash/fp/lowerCase.js | 5 - .../node_modules/lodash/fp/lowerFirst.js | 5 - .../node_modules/lodash/fp/lt.js | 5 - .../node_modules/lodash/fp/lte.js | 5 - .../node_modules/lodash/fp/map.js | 5 - .../node_modules/lodash/fp/mapKeys.js | 5 - .../node_modules/lodash/fp/mapValues.js | 5 - .../node_modules/lodash/fp/matches.js | 1 - .../node_modules/lodash/fp/matchesProperty.js | 5 - .../node_modules/lodash/fp/math.js | 2 - .../node_modules/lodash/fp/max.js | 5 - .../node_modules/lodash/fp/maxBy.js | 5 - .../node_modules/lodash/fp/mean.js | 5 - .../node_modules/lodash/fp/meanBy.js | 5 - .../node_modules/lodash/fp/memoize.js | 5 - .../node_modules/lodash/fp/merge.js | 5 - .../node_modules/lodash/fp/mergeAll.js | 5 - .../node_modules/lodash/fp/mergeAllWith.js | 5 - .../node_modules/lodash/fp/mergeWith.js | 5 - .../node_modules/lodash/fp/method.js | 5 - .../node_modules/lodash/fp/methodOf.js | 5 - .../node_modules/lodash/fp/min.js | 5 - .../node_modules/lodash/fp/minBy.js | 5 - .../node_modules/lodash/fp/mixin.js | 5 - .../node_modules/lodash/fp/multiply.js | 5 - .../node_modules/lodash/fp/nAry.js | 1 - .../node_modules/lodash/fp/negate.js | 5 - .../node_modules/lodash/fp/next.js | 5 - .../node_modules/lodash/fp/noop.js | 5 - .../node_modules/lodash/fp/now.js | 5 - .../node_modules/lodash/fp/nth.js | 5 - .../node_modules/lodash/fp/nthArg.js | 5 - .../node_modules/lodash/fp/number.js | 2 - .../node_modules/lodash/fp/object.js | 2 - .../node_modules/lodash/fp/omit.js | 5 - .../node_modules/lodash/fp/omitAll.js | 1 - .../node_modules/lodash/fp/omitBy.js | 5 - .../node_modules/lodash/fp/once.js | 5 - .../node_modules/lodash/fp/orderBy.js | 5 - .../node_modules/lodash/fp/over.js | 5 - .../node_modules/lodash/fp/overArgs.js | 5 - .../node_modules/lodash/fp/overEvery.js | 5 - .../node_modules/lodash/fp/overSome.js | 5 - .../node_modules/lodash/fp/pad.js | 5 - .../node_modules/lodash/fp/padChars.js | 5 - .../node_modules/lodash/fp/padCharsEnd.js | 5 - .../node_modules/lodash/fp/padCharsStart.js | 5 - .../node_modules/lodash/fp/padEnd.js | 5 - .../node_modules/lodash/fp/padStart.js | 5 - .../node_modules/lodash/fp/parseInt.js | 5 - .../node_modules/lodash/fp/partial.js | 5 - .../node_modules/lodash/fp/partialRight.js | 5 - .../node_modules/lodash/fp/partition.js | 5 - .../node_modules/lodash/fp/path.js | 1 - .../node_modules/lodash/fp/pathEq.js | 1 - .../node_modules/lodash/fp/pathOr.js | 1 - .../node_modules/lodash/fp/paths.js | 1 - .../node_modules/lodash/fp/pick.js | 5 - .../node_modules/lodash/fp/pickAll.js | 1 - .../node_modules/lodash/fp/pickBy.js | 5 - .../node_modules/lodash/fp/pipe.js | 1 - .../node_modules/lodash/fp/placeholder.js | 6 - .../node_modules/lodash/fp/plant.js | 5 - .../node_modules/lodash/fp/pluck.js | 1 - .../node_modules/lodash/fp/prop.js | 1 - .../node_modules/lodash/fp/propEq.js | 1 - .../node_modules/lodash/fp/propOr.js | 1 - .../node_modules/lodash/fp/property.js | 1 - .../node_modules/lodash/fp/propertyOf.js | 5 - .../node_modules/lodash/fp/props.js | 1 - .../node_modules/lodash/fp/pull.js | 5 - .../node_modules/lodash/fp/pullAll.js | 5 - .../node_modules/lodash/fp/pullAllBy.js | 5 - .../node_modules/lodash/fp/pullAllWith.js | 5 - .../node_modules/lodash/fp/pullAt.js | 5 - .../node_modules/lodash/fp/random.js | 5 - .../node_modules/lodash/fp/range.js | 5 - .../node_modules/lodash/fp/rangeRight.js | 5 - .../node_modules/lodash/fp/rearg.js | 5 - .../node_modules/lodash/fp/reduce.js | 5 - .../node_modules/lodash/fp/reduceRight.js | 5 - .../node_modules/lodash/fp/reject.js | 5 - .../node_modules/lodash/fp/remove.js | 5 - .../node_modules/lodash/fp/repeat.js | 5 - .../node_modules/lodash/fp/replace.js | 5 - .../node_modules/lodash/fp/rest.js | 5 - .../node_modules/lodash/fp/restFrom.js | 5 - .../node_modules/lodash/fp/result.js | 5 - .../node_modules/lodash/fp/reverse.js | 5 - .../node_modules/lodash/fp/round.js | 5 - .../node_modules/lodash/fp/sample.js | 5 - .../node_modules/lodash/fp/sampleSize.js | 5 - .../node_modules/lodash/fp/seq.js | 2 - .../node_modules/lodash/fp/set.js | 5 - .../node_modules/lodash/fp/setWith.js | 5 - .../node_modules/lodash/fp/shuffle.js | 5 - .../node_modules/lodash/fp/size.js | 5 - .../node_modules/lodash/fp/slice.js | 5 - .../node_modules/lodash/fp/snakeCase.js | 5 - .../node_modules/lodash/fp/some.js | 5 - .../node_modules/lodash/fp/sortBy.js | 5 - .../node_modules/lodash/fp/sortedIndex.js | 5 - .../node_modules/lodash/fp/sortedIndexBy.js | 5 - .../node_modules/lodash/fp/sortedIndexOf.js | 5 - .../node_modules/lodash/fp/sortedLastIndex.js | 5 - .../lodash/fp/sortedLastIndexBy.js | 5 - .../lodash/fp/sortedLastIndexOf.js | 5 - .../node_modules/lodash/fp/sortedUniq.js | 5 - .../node_modules/lodash/fp/sortedUniqBy.js | 5 - .../node_modules/lodash/fp/split.js | 5 - .../node_modules/lodash/fp/spread.js | 5 - .../node_modules/lodash/fp/spreadFrom.js | 5 - .../node_modules/lodash/fp/startCase.js | 5 - .../node_modules/lodash/fp/startsWith.js | 5 - .../node_modules/lodash/fp/string.js | 2 - .../node_modules/lodash/fp/stubArray.js | 5 - .../node_modules/lodash/fp/stubFalse.js | 5 - .../node_modules/lodash/fp/stubObject.js | 5 - .../node_modules/lodash/fp/stubString.js | 5 - .../node_modules/lodash/fp/stubTrue.js | 5 - .../node_modules/lodash/fp/subtract.js | 5 - .../node_modules/lodash/fp/sum.js | 5 - .../node_modules/lodash/fp/sumBy.js | 5 - .../lodash/fp/symmetricDifference.js | 1 - .../lodash/fp/symmetricDifferenceBy.js | 1 - .../lodash/fp/symmetricDifferenceWith.js | 1 - .../node_modules/lodash/fp/tail.js | 5 - .../node_modules/lodash/fp/take.js | 5 - .../node_modules/lodash/fp/takeLast.js | 1 - .../node_modules/lodash/fp/takeLastWhile.js | 1 - .../node_modules/lodash/fp/takeRight.js | 5 - .../node_modules/lodash/fp/takeRightWhile.js | 5 - .../node_modules/lodash/fp/takeWhile.js | 5 - .../node_modules/lodash/fp/tap.js | 5 - .../node_modules/lodash/fp/template.js | 5 - .../lodash/fp/templateSettings.js | 5 - .../node_modules/lodash/fp/throttle.js | 5 - .../node_modules/lodash/fp/thru.js | 5 - .../node_modules/lodash/fp/times.js | 5 - .../node_modules/lodash/fp/toArray.js | 5 - .../node_modules/lodash/fp/toFinite.js | 5 - .../node_modules/lodash/fp/toInteger.js | 5 - .../node_modules/lodash/fp/toIterator.js | 5 - .../node_modules/lodash/fp/toJSON.js | 5 - .../node_modules/lodash/fp/toLength.js | 5 - .../node_modules/lodash/fp/toLower.js | 5 - .../node_modules/lodash/fp/toNumber.js | 5 - .../node_modules/lodash/fp/toPairs.js | 5 - .../node_modules/lodash/fp/toPairsIn.js | 5 - .../node_modules/lodash/fp/toPath.js | 5 - .../node_modules/lodash/fp/toPlainObject.js | 5 - .../node_modules/lodash/fp/toSafeInteger.js | 5 - .../node_modules/lodash/fp/toString.js | 5 - .../node_modules/lodash/fp/toUpper.js | 5 - .../node_modules/lodash/fp/transform.js | 5 - .../node_modules/lodash/fp/trim.js | 5 - .../node_modules/lodash/fp/trimChars.js | 5 - .../node_modules/lodash/fp/trimCharsEnd.js | 5 - .../node_modules/lodash/fp/trimCharsStart.js | 5 - .../node_modules/lodash/fp/trimEnd.js | 5 - .../node_modules/lodash/fp/trimStart.js | 5 - .../node_modules/lodash/fp/truncate.js | 5 - .../node_modules/lodash/fp/unapply.js | 1 - .../node_modules/lodash/fp/unary.js | 5 - .../node_modules/lodash/fp/unescape.js | 5 - .../node_modules/lodash/fp/union.js | 5 - .../node_modules/lodash/fp/unionBy.js | 5 - .../node_modules/lodash/fp/unionWith.js | 5 - .../node_modules/lodash/fp/uniq.js | 5 - .../node_modules/lodash/fp/uniqBy.js | 5 - .../node_modules/lodash/fp/uniqWith.js | 5 - .../node_modules/lodash/fp/uniqueId.js | 5 - .../node_modules/lodash/fp/unnest.js | 1 - .../node_modules/lodash/fp/unset.js | 5 - .../node_modules/lodash/fp/unzip.js | 5 - .../node_modules/lodash/fp/unzipWith.js | 5 - .../node_modules/lodash/fp/update.js | 5 - .../node_modules/lodash/fp/updateWith.js | 5 - .../node_modules/lodash/fp/upperCase.js | 5 - .../node_modules/lodash/fp/upperFirst.js | 5 - .../node_modules/lodash/fp/useWith.js | 1 - .../node_modules/lodash/fp/util.js | 2 - .../node_modules/lodash/fp/value.js | 5 - .../node_modules/lodash/fp/valueOf.js | 5 - .../node_modules/lodash/fp/values.js | 5 - .../node_modules/lodash/fp/valuesIn.js | 5 - .../node_modules/lodash/fp/where.js | 1 - .../node_modules/lodash/fp/whereEq.js | 1 - .../node_modules/lodash/fp/without.js | 5 - .../node_modules/lodash/fp/words.js | 5 - .../node_modules/lodash/fp/wrap.js | 5 - .../node_modules/lodash/fp/wrapperAt.js | 5 - .../node_modules/lodash/fp/wrapperChain.js | 5 - .../node_modules/lodash/fp/wrapperLodash.js | 5 - .../node_modules/lodash/fp/wrapperReverse.js | 5 - .../node_modules/lodash/fp/wrapperValue.js | 5 - .../node_modules/lodash/fp/xor.js | 5 - .../node_modules/lodash/fp/xorBy.js | 5 - .../node_modules/lodash/fp/xorWith.js | 5 - .../node_modules/lodash/fp/zip.js | 5 - .../node_modules/lodash/fp/zipAll.js | 5 - .../node_modules/lodash/fp/zipObj.js | 1 - .../node_modules/lodash/fp/zipObject.js | 5 - .../node_modules/lodash/fp/zipObjectDeep.js | 5 - .../node_modules/lodash/fp/zipWith.js | 5 - .../node_modules/lodash/fromPairs.js | 28 - .../node_modules/lodash/function.js | 25 - .../node_modules/lodash/functions.js | 31 - .../node_modules/lodash/functionsIn.js | 31 - .../node_modules/lodash/get.js | 33 - .../node_modules/lodash/groupBy.js | 41 - .../node_modules/lodash/gt.js | 29 - .../node_modules/lodash/gte.js | 30 - .../node_modules/lodash/has.js | 35 - .../node_modules/lodash/hasIn.js | 34 - .../node_modules/lodash/head.js | 23 - .../node_modules/lodash/identity.js | 21 - .../node_modules/lodash/inRange.js | 55 - .../node_modules/lodash/includes.js | 53 - .../node_modules/lodash/index.js | 1 - .../node_modules/lodash/indexOf.js | 42 - .../node_modules/lodash/initial.js | 22 - .../node_modules/lodash/intersection.js | 30 - .../node_modules/lodash/intersectionBy.js | 44 - .../node_modules/lodash/intersectionWith.js | 42 - .../node_modules/lodash/invert.js | 27 - .../node_modules/lodash/invertBy.js | 44 - .../node_modules/lodash/invoke.js | 24 - .../node_modules/lodash/invokeMap.js | 44 - .../node_modules/lodash/isArguments.js | 46 - .../node_modules/lodash/isArray.js | 26 - .../node_modules/lodash/isArrayBuffer.js | 27 - .../node_modules/lodash/isArrayLike.js | 33 - .../node_modules/lodash/isArrayLikeObject.js | 33 - .../node_modules/lodash/isBoolean.js | 38 - .../node_modules/lodash/isBuffer.js | 38 - .../node_modules/lodash/isDate.js | 27 - .../node_modules/lodash/isElement.js | 25 - .../node_modules/lodash/isEmpty.js | 79 - .../node_modules/lodash/isEqual.js | 35 - .../node_modules/lodash/isEqualWith.js | 41 - .../node_modules/lodash/isError.js | 42 - .../node_modules/lodash/isFinite.js | 36 - .../node_modules/lodash/isFunction.js | 41 - .../node_modules/lodash/isInteger.js | 33 - .../node_modules/lodash/isLength.js | 35 - .../node_modules/lodash/isMap.js | 27 - .../node_modules/lodash/isMatch.js | 36 - .../node_modules/lodash/isMatchWith.js | 41 - .../node_modules/lodash/isNaN.js | 38 - .../node_modules/lodash/isNative.js | 37 - .../node_modules/lodash/isNil.js | 25 - .../node_modules/lodash/isNull.js | 22 - .../node_modules/lodash/isNumber.js | 47 - .../node_modules/lodash/isObject.js | 31 - .../node_modules/lodash/isObjectLike.js | 29 - .../node_modules/lodash/isPlainObject.js | 70 - .../node_modules/lodash/isRegExp.js | 27 - .../node_modules/lodash/isSafeInteger.js | 37 - .../node_modules/lodash/isSet.js | 27 - .../node_modules/lodash/isString.js | 39 - .../node_modules/lodash/isSymbol.js | 38 - .../node_modules/lodash/isTypedArray.js | 27 - .../node_modules/lodash/isUndefined.js | 22 - .../node_modules/lodash/isWeakMap.js | 28 - .../node_modules/lodash/isWeakSet.js | 37 - .../node_modules/lodash/iteratee.js | 50 - .../node_modules/lodash/join.js | 26 - .../node_modules/lodash/kebabCase.js | 28 - .../node_modules/lodash/keyBy.js | 36 - .../node_modules/lodash/keys.js | 37 - .../node_modules/lodash/keysIn.js | 32 - .../node_modules/lodash/lang.js | 58 - .../node_modules/lodash/last.js | 20 - .../node_modules/lodash/lastIndexOf.js | 55 - .../node_modules/lodash/lodash.js | 16733 --- .../node_modules/lodash/lodash.min.js | 132 - .../node_modules/lodash/lowerCase.js | 27 - .../node_modules/lodash/lowerFirst.js | 22 - .../node_modules/lodash/lt.js | 29 - .../node_modules/lodash/lte.js | 30 - .../node_modules/lodash/map.js | 53 - .../node_modules/lodash/mapKeys.js | 35 - .../node_modules/lodash/mapValues.js | 42 - .../node_modules/lodash/matches.js | 36 - .../node_modules/lodash/matchesProperty.js | 34 - .../node_modules/lodash/math.js | 17 - .../node_modules/lodash/max.js | 29 - .../node_modules/lodash/maxBy.js | 34 - .../node_modules/lodash/mean.js | 22 - .../node_modules/lodash/meanBy.js | 31 - .../node_modules/lodash/memoize.js | 73 - .../node_modules/lodash/merge.js | 39 - .../node_modules/lodash/mergeWith.js | 39 - .../node_modules/lodash/method.js | 34 - .../node_modules/lodash/methodOf.js | 33 - .../node_modules/lodash/min.js | 29 - .../node_modules/lodash/minBy.js | 34 - .../node_modules/lodash/mixin.js | 74 - .../node_modules/lodash/multiply.js | 22 - .../node_modules/lodash/negate.js | 40 - .../node_modules/lodash/next.js | 35 - .../node_modules/lodash/noop.js | 17 - .../node_modules/lodash/now.js | 23 - .../node_modules/lodash/nth.js | 29 - .../node_modules/lodash/nthArg.js | 32 - .../node_modules/lodash/number.js | 5 - .../node_modules/lodash/object.js | 49 - .../node_modules/lodash/omit.js | 36 - .../node_modules/lodash/omitBy.js | 29 - .../node_modules/lodash/once.js | 25 - .../node_modules/lodash/orderBy.js | 47 - .../node_modules/lodash/over.js | 24 - .../node_modules/lodash/overArgs.js | 60 - .../node_modules/lodash/overEvery.js | 30 - .../node_modules/lodash/overSome.js | 30 - .../node_modules/lodash/package.json | 109 - .../node_modules/lodash/pad.js | 49 - .../node_modules/lodash/padEnd.js | 39 - .../node_modules/lodash/padStart.js | 39 - .../node_modules/lodash/parseInt.js | 49 - .../node_modules/lodash/partial.js | 50 - .../node_modules/lodash/partialRight.js | 49 - .../node_modules/lodash/partition.js | 43 - .../node_modules/lodash/pick.js | 28 - .../node_modules/lodash/pickBy.js | 27 - .../node_modules/lodash/plant.js | 48 - .../node_modules/lodash/property.js | 32 - .../node_modules/lodash/propertyOf.js | 30 - .../node_modules/lodash/pull.js | 29 - .../node_modules/lodash/pullAll.js | 29 - .../node_modules/lodash/pullAllBy.js | 34 - .../node_modules/lodash/pullAllWith.js | 32 - .../node_modules/lodash/pullAt.js | 46 - .../node_modules/lodash/random.js | 82 - .../node_modules/lodash/range.js | 46 - .../node_modules/lodash/rangeRight.js | 41 - .../node_modules/lodash/rearg.js | 34 - .../node_modules/lodash/reduce.js | 51 - .../node_modules/lodash/reduceRight.js | 36 - .../node_modules/lodash/reject.js | 46 - .../node_modules/lodash/remove.js | 54 - .../node_modules/lodash/repeat.js | 37 - .../node_modules/lodash/replace.js | 29 - .../node_modules/lodash/rest.js | 40 - .../node_modules/lodash/result.js | 57 - .../node_modules/lodash/reverse.js | 34 - .../node_modules/lodash/round.js | 26 - .../node_modules/lodash/sample.js | 26 - .../node_modules/lodash/sampleSize.js | 49 - .../node_modules/lodash/seq.js | 16 - .../node_modules/lodash/set.js | 35 - .../node_modules/lodash/setWith.js | 32 - .../node_modules/lodash/shuffle.js | 25 - .../node_modules/lodash/size.js | 46 - .../node_modules/lodash/slice.js | 37 - .../node_modules/lodash/snakeCase.js | 28 - .../node_modules/lodash/some.js | 51 - .../node_modules/lodash/sortBy.js | 53 - .../node_modules/lodash/sortedIndex.js | 24 - .../node_modules/lodash/sortedIndexBy.js | 34 - .../node_modules/lodash/sortedIndexOf.js | 31 - .../node_modules/lodash/sortedLastIndex.js | 25 - .../node_modules/lodash/sortedLastIndexBy.js | 34 - .../node_modules/lodash/sortedLastIndexOf.js | 31 - .../node_modules/lodash/sortedUniq.js | 24 - .../node_modules/lodash/sortedUniqBy.js | 26 - .../node_modules/lodash/split.js | 52 - .../node_modules/lodash/spread.js | 63 - .../node_modules/lodash/startCase.js | 29 - .../node_modules/lodash/startsWith.js | 36 - .../node_modules/lodash/string.js | 33 - .../node_modules/lodash/stubArray.js | 23 - .../node_modules/lodash/stubFalse.js | 18 - .../node_modules/lodash/stubObject.js | 23 - .../node_modules/lodash/stubString.js | 18 - .../node_modules/lodash/stubTrue.js | 18 - .../node_modules/lodash/subtract.js | 22 - .../node_modules/lodash/sum.js | 24 - .../node_modules/lodash/sumBy.js | 33 - .../node_modules/lodash/tail.js | 22 - .../node_modules/lodash/take.js | 37 - .../node_modules/lodash/takeRight.js | 39 - .../node_modules/lodash/takeRightWhile.js | 46 - .../node_modules/lodash/takeWhile.js | 46 - .../node_modules/lodash/tap.js | 29 - .../node_modules/lodash/template.js | 237 - .../node_modules/lodash/templateSettings.js | 67 - .../node_modules/lodash/throttle.js | 69 - .../node_modules/lodash/thru.js | 28 - .../node_modules/lodash/times.js | 51 - .../node_modules/lodash/toArray.js | 58 - .../node_modules/lodash/toFinite.js | 42 - .../node_modules/lodash/toInteger.js | 36 - .../node_modules/lodash/toIterator.js | 23 - .../node_modules/lodash/toJSON.js | 1 - .../node_modules/lodash/toLength.js | 38 - .../node_modules/lodash/toLower.js | 28 - .../node_modules/lodash/toNumber.js | 66 - .../node_modules/lodash/toPairs.js | 30 - .../node_modules/lodash/toPairsIn.js | 30 - .../node_modules/lodash/toPath.js | 32 - .../node_modules/lodash/toPlainObject.js | 32 - .../node_modules/lodash/toSafeInteger.js | 35 - .../node_modules/lodash/toString.js | 28 - .../node_modules/lodash/toUpper.js | 28 - .../node_modules/lodash/transform.js | 63 - .../node_modules/lodash/trim.js | 49 - .../node_modules/lodash/trimEnd.js | 43 - .../node_modules/lodash/trimStart.js | 43 - .../node_modules/lodash/truncate.js | 111 - .../node_modules/lodash/unary.js | 22 - .../node_modules/lodash/unescape.js | 34 - .../node_modules/lodash/union.js | 26 - .../node_modules/lodash/unionBy.js | 40 - .../node_modules/lodash/unionWith.js | 36 - .../node_modules/lodash/uniq.js | 26 - .../node_modules/lodash/uniqBy.js | 32 - .../node_modules/lodash/uniqWith.js | 28 - .../node_modules/lodash/uniqueId.js | 28 - .../node_modules/lodash/unset.js | 34 - .../node_modules/lodash/unzip.js | 45 - .../node_modules/lodash/unzipWith.js | 39 - .../node_modules/lodash/update.js | 35 - .../node_modules/lodash/updateWith.js | 33 - .../node_modules/lodash/upperCase.js | 27 - .../node_modules/lodash/upperFirst.js | 22 - .../node_modules/lodash/util.js | 34 - .../node_modules/lodash/value.js | 1 - .../node_modules/lodash/valueOf.js | 1 - .../node_modules/lodash/values.js | 34 - .../node_modules/lodash/valuesIn.js | 32 - .../node_modules/lodash/without.js | 31 - .../node_modules/lodash/words.js | 35 - .../node_modules/lodash/wrap.js | 31 - .../node_modules/lodash/wrapperAt.js | 50 - .../node_modules/lodash/wrapperChain.js | 34 - .../node_modules/lodash/wrapperLodash.js | 147 - .../node_modules/lodash/wrapperReverse.js | 44 - .../node_modules/lodash/wrapperValue.js | 21 - .../node_modules/lodash/xor.js | 28 - .../node_modules/lodash/xorBy.js | 39 - .../node_modules/lodash/xorWith.js | 35 - .../node_modules/lodash/zip.js | 22 - .../node_modules/lodash/zipObject.js | 24 - .../node_modules/lodash/zipObjectDeep.js | 23 - .../node_modules/lodash/zipWith.js | 31 - .../node_modules/sync-exec/.npmignore | 4 - .../node_modules/sync-exec/LICENSE | 21 - .../node_modules/sync-exec/Makefile | 13 - .../node_modules/sync-exec/README.md | 40 - .../sync-exec/coffee/lib/create-pipes.coffee | 28 - .../sync-exec/coffee/lib/proxy.coffee | 32 - .../sync-exec/coffee/lib/read-pipes.coffee | 40 - .../sync-exec/coffee/lib/timeout.coffee | 7 - .../sync-exec/coffee/sync-exec.coffee | 50 - .../sync-exec/js/lib/create-pipes.js | 31 - .../node_modules/sync-exec/js/lib/proxy.js | 33 - .../sync-exec/js/lib/read-pipes.js | 44 - .../node_modules/sync-exec/js/lib/timeout.js | 9 - .../node_modules/sync-exec/js/sync-exec.js | 48 - .../node_modules/sync-exec/package.json | 82 - .../sync-exec/test/example.coffee | 44 - .../node_modules/sync-exec/test/sh/err.sh | 4 - .../node_modules/sync-exec/test/sh/out.sh | 2 - .../vscodevim.vim-0.2.0/out/extension.js | 223 - .../out/src/actions/actions.js | 4988 - .../out/src/actions/notation.js | 25 - .../out/src/cmd_line/commands/deleteRange.js | 81 - .../out/src/cmd_line/commands/file.js | 74 - .../out/src/cmd_line/commands/quit.js | 45 - .../out/src/cmd_line/commands/read.js | 91 - .../out/src/cmd_line/commands/register.js | 46 - .../out/src/cmd_line/commands/setoptions.js | 108 - .../out/src/cmd_line/commands/substitute.js | 110 - .../out/src/cmd_line/commands/tab.js | 107 - .../out/src/cmd_line/commands/wall.js | 34 - .../out/src/cmd_line/commands/write.js | 84 - .../out/src/cmd_line/commands/writequit.js | 46 - .../out/src/cmd_line/lexer.js | 214 - .../out/src/cmd_line/main.js | 50 - .../out/src/cmd_line/node.js | 122 - .../out/src/cmd_line/parser.js | 96 - .../out/src/cmd_line/scanner.js | 131 - .../out/src/cmd_line/subparser.js | 56 - .../src/cmd_line/subparsers/deleteRange.js | 15 - .../out/src/cmd_line/subparsers/file.js | 34 - .../out/src/cmd_line/subparsers/quit.js | 32 - .../out/src/cmd_line/subparsers/read.js | 30 - .../out/src/cmd_line/subparsers/register.js | 15 - .../out/src/cmd_line/subparsers/setoptions.js | 69 - .../out/src/cmd_line/subparsers/substitute.js | 142 - .../out/src/cmd_line/subparsers/tab.js | 105 - .../out/src/cmd_line/subparsers/wall.js | 26 - .../out/src/cmd_line/subparsers/write.js | 63 - .../out/src/cmd_line/subparsers/writequit.js | 53 - .../out/src/cmd_line/token.js | 34 - .../out/src/configuration/configuration.js | 85 - .../vscodevim.vim-0.2.0/out/src/error.js | 44 - .../vscodevim.vim-0.2.0/out/src/globals.js | 11 - .../out/src/history/historyTracker.js | 436 - .../out/src/matching/matcher.js | 58 - .../out/src/matching/quoteMatcher.js | 50 - .../out/src/matching/tagMatcher.js | 51 - .../vscodevim.vim-0.2.0/out/src/mode/mode.js | 35 - .../out/src/mode/modeHandler.js | 913 - .../out/src/mode/modeInsert.js | 12 - .../out/src/mode/modeInsertVisualBlock.js | 13 - .../out/src/mode/modeNormal.js | 13 - .../out/src/mode/modeReplace.js | 12 - .../out/src/mode/modeSearchInProgress.js | 12 - .../out/src/mode/modeVisual.js | 13 - .../out/src/mode/modeVisualBlock.js | 31 - .../out/src/mode/modeVisualLine.js | 13 - .../out/src/mode/remapper.js | 87 - .../out/src/motion/position.js | 655 - .../vscodevim.vim-0.2.0/out/src/notation.js | 33 - .../out/src/number/numericString.js | 28 - .../out/src/register/register.js | 110 - .../vscodevim.vim-0.2.0/out/src/taskQueue.js | 60 - .../vscodevim.vim-0.2.0/out/src/textEditor.js | 202 - .../vscodevim.vim-0.2.0/out/src/util.js | 23 - .../vscodevim.vim-0.2.0/package.json | 272 - .../extensions/vscodevim.vim-0.2.0/tsd.json | 12 - .../vscodevim.vim-0.2.0/tslint.json | 92 - .../vscodevim.vim-0.2.0/typings.json | 10 - common/configure_fresh_system | 1 - 6644 files changed, 875536 deletions(-) delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/.vsixmanifest delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/LICENSE.md delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/README.md delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/docker_icon.svg delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockercompose.gif delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockerfile.gif delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/installing.gif delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeCompletionItemProvider.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeKeyInfo.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeParser.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerExtension.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHoverProvider.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHubApi.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileCompletionItemProvider.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileKeyInfo.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileParser.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/helpers/suggestSupportHelper.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/parser.js delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/package.json delete mode 100644 .vscode/extensions/PeterJausovec.vscode-docker-0.0.6/snippets/dockerfile.json delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/.vsixmanifest delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/LICENSE.txt delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/README.md delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/icon/path-intellisense.png delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/icon/path-intellisense.sketch delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/FileInfo.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathCompletionItem.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathIntellisense.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/UpCompletionItem.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/extension.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/fs-functions.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/text-parser.js delete mode 100644 .vscode/extensions/christian-kohler.path-intellisense-1.0.2/package.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/.vsixmanifest delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/CHANGELOG.md delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/LICENSE.txt delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/README.md delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/gitignore.configuration.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/icon.png delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/icon/icon.png delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/icon/icon.xcf delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/.npmignore delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/LICENSE delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/README.md delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v2.0.0/routes.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorization.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorizationTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/events.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/eventsTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gists.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gistsTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdata.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdataTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignore.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignoreTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/index.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issues.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issuesTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdown.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdownTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/misc.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/miscTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgs.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgsTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequests.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequestsTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releases.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releasesTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/repos.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/reposTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/routes.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/search.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/searchTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statuses.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statusesTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/user.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/userTest.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/error.js delete mode 100755 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/generate.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/index.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/.npmignore delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/LICENSE delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/README.md delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/build.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/test.js delete mode 100755 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/cli.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/mime.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/package.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/types.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/package.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/seed.yml delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/after_request.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/handler.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/index.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/section.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_handler.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_section.js.tpl delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/client_test.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/example.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth_server.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/util.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/out/src/extension.js delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/package.json delete mode 100644 .vscode/extensions/codezombiech.gitignore-0.2.0/syntaxes/gitignore.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/.vsixmanifest delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/extension.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/instant-markdown-d delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/shjs delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/changelog.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/any.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/assert.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/async.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bind.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bluebird.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/call_get.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/cancel.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/catch_filter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/context.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/debuggability.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/direct_resolve.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/each.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/errors.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/es5.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/filter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/finally.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/generators.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/join.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/map.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/method.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise_array.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promisify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/props.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/queue.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/race.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/reduce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/schedule.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/settle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/some.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/synchronous_inspection.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/thenables.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/timers.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/using.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-markdown.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-syntax-highlight.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/index.html delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/instant-markdown-d delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/.bin/markdown-it delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/api.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/building-testing.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/css-classes-reference.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/index.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-contribution.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-guide.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-requests.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/line-numbers.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/reference.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/release-process.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/style-contribution.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/style-guide.rst delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/highlight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/1c.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/accesslog.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/actionscript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/apache.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/applescript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/armasm.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/asciidoc.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/aspectj.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/autohotkey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/autoit.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/avrasm.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/axapta.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/bash.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/brainfuck.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/cal.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/capnproto.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/ceylon.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/clojure-repl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/clojure.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/cmake.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/coffeescript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/cpp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/crmsh.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/crystal.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/cs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/css.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/d.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/dart.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/delphi.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/diff.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/django.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/dns.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/dockerfile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/dos.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/dust.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/elixir.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/elm.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/erb.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/erlang-repl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/erlang.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/fix.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/fortran.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/fsharp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/gams.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/gcode.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/gherkin.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/glsl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/go.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/golo.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/gradle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/groovy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/haml.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/handlebars.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/haskell.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/haxe.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/http.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/inform7.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/ini.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/irpf90.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/java.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/javascript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/json.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/julia.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/kotlin.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/lasso.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/less.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/lisp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/livecodeserver.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/livescript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/lua.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/makefile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/markdown.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/mathematica.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/matlab.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/mel.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/mercury.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/mizar.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/mojolicious.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/monkey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/nginx.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/nimrod.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/nix.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/nsis.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/objectivec.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/ocaml.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/openscad.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/oxygene.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/parser3.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/perl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/pf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/php.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/powershell.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/processing.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/profile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/prolog.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/protobuf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/puppet.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/python.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/q.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/r.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/rib.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/roboconf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/rsl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/ruby.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/ruleslanguage.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/rust.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/scala.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/scheme.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/scilab.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/scss.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/smali.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/smalltalk.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/sml.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/sqf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/sql.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/stata.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/step21.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/stylus.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/swift.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/tcl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/tex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/thrift.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/tp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/twig.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/typescript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vala.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vbnet.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vbscript-html.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vbscript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/verilog.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vhdl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/vim.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/x86asm.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/xl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/xml.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/xquery.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/lib/languages/zephir.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/agate.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/androidstudio.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/arta.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/ascetic.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-cave.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-cave.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-dune.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-dune.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-estuary.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-estuary.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-forest.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-forest.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-heath.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-heath.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-lakeside.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-lakeside.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-plateau.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-plateau.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-savanna.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-savanna.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-seaside.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-seaside.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-sulphurpool.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/atelier-sulphurpool.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/brown_paper.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/brown_papersq.png delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/codepen-embed.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/color-brewer.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/darkula.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/default.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/docco.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/far.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/foundation.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/github-gist.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/github.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/googlecode.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/grayscale.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/hopscotch.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/hybrid.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/idea.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/ir_black.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/kimbie.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/kimbie.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/magula.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/mono-blue.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/monokai.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/monokai_sublime.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/obsidian.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/paraiso.dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/paraiso.light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/pojoaque.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/pojoaque.jpg delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/railscasts.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/rainbow.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/school_book.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/school_book.png delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/solarized_dark.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/solarized_light.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/sunburst.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/tomorrow-night-blue.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/tomorrow-night-bright.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/tomorrow-night-eighties.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/tomorrow-night.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/tomorrow.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/vs.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/xcode.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/styles/zenburn.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/CONTRIBUTING.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/bin/markdown-it.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/dist/markdown-it.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/dist/markdown-it.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/common/entities.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/common/html_blocks.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/common/html_re.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/common/url_schemas.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/common/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/helpers/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/helpers/parse_link_destination.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/helpers/parse_link_label.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/helpers/parse_link_title.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/parser_block.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/parser_core.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/parser_inline.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/presets/commonmark.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/presets/default.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/presets/zero.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/renderer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/ruler.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/blockquote.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/code.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/fence.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/heading.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/hr.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/html_block.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/lheading.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/list.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/paragraph.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/reference.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/state_block.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_block/table.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/block.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/inline.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/linkify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/normalize.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/replacements.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/smartquotes.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_core/state_core.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/autolink.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/backticks.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/emphasis.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/entity.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/escape.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/html_inline.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/image.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/link.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/newline.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/state_inline.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/strikethrough.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/lib/rules_inline/text.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/arguments.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/choice.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/constants.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/help.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/nargs.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/parents.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/prefix_chars.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/sub_commands.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/sum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/examples/testformatters.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/append.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/append/constant.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/count.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/help.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/store.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/store/constant.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/store/false.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/store/true.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/subparsers.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action/version.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/action_container.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/argparse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/argument/error.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/argument/exclusive.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/argument/group.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/argument_parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/const.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/help/added_formatters.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/help/formatter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/lib/namespace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/chunk.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/compact.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/difference.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/drop.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/dropRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/dropRightWhile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/dropWhile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/fill.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/findIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/findLastIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/first.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/flatten.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/flattenDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/head.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/indexOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/initial.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/intersection.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/last.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/lastIndexOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/object.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/pull.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/pullAt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/remove.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/rest.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/slice.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/sortedIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/sortedLastIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/tail.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/take.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/takeRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/takeRightWhile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/takeWhile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/union.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/uniq.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/unique.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/unzip.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/unzipWith.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/without.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/xor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/zip.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/zipObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/array/zipWith.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/chain.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/commit.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/concat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/lodash.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/plant.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/reverse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/run.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/tap.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/thru.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/toJSON.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/toString.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/value.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/valueOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperChain.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperCommit.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperConcat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperPlant.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperReverse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperToString.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/chain/wrapperValue.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/all.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/any.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/at.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/collect.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/contains.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/countBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/detect.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/each.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/eachRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/every.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/filter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/find.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/findLast.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/findWhere.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/foldl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/foldr.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/forEach.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/forEachRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/groupBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/include.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/includes.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/indexBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/inject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/invoke.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/map.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/max.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/partition.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/pluck.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/reduce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/reduceRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/reject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/sample.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/select.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/shuffle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/size.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/some.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/sortBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/sortByAll.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/sortByOrder.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/sum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/collection/where.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/date.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/date/now.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/after.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/ary.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/backflow.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/before.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/bind.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/bindAll.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/bindKey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/compose.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/curry.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/curryRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/debounce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/defer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/delay.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/flow.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/flowRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/memoize.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/modArgs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/negate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/once.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/partial.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/partialRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/rearg.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/restParam.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/spread.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/throttle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/function/wrap.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/LazyWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/LodashWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/MapCache.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/SetCache.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayConcat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayCopy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayEach.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayEachRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayEvery.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayExtremum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayFilter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayMap.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayPush.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayReduce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arrayReduceRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arraySome.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/arraySum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/assignDefaults.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/assignOwnDefaults.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/assignWith.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseAssign.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseAt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseCallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseClone.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseCompareAscending.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseCopy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseCreate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseDelay.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseDifference.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseEach.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseEachRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseEvery.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseExtremum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFill.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFilter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFind.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFindIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFlatten.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseForIn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseForOwn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseForOwnRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseForRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseFunctions.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseGet.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseIndexOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseIsEqual.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseIsEqualDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseIsFunction.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseIsMatch.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseLodash.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseMap.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseMatches.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseMatchesProperty.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseMerge.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseMergeDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseProperty.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/basePropertyDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/basePullAt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseRandom.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseReduce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSetData.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSlice.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSome.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSortBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSortByOrder.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseSum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseToString.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseUniq.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseValues.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseWhile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/baseWrapperValue.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/binaryIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/binaryIndexBy.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/bindCallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/bufferClone.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/cacheIndexOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/cachePush.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/charsLeftIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/charsRightIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/compareAscending.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/compareMultiple.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/composeArgs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/composeArgsRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createAggregator.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createAssigner.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createBaseEach.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createBaseFor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createBindWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createCache.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createCompounder.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createCtorWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createCurry.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createDefaults.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createExtremum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createFind.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createFindIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createFindKey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createFlow.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createForEach.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createForIn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createForOwn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createHybridWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createObjectMapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createPadDir.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createPadding.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createPartial.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createPartialWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createReduce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createRound.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createSortedIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/createWrapper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/deburrLetter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/equalArrays.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/equalByTag.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/equalObjects.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/escapeHtmlChar.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/escapeRegExpChar.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/escapeStringChar.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getData.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getFuncName.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getLength.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getMatchData.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getNative.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/getView.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/indexOfNaN.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/initCloneArray.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/initCloneByTag.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/initCloneObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/invokePath.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isArrayLike.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isIterateeCall.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isKey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isLaziable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isLength.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isObjectLike.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isSpace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/isStrictComparable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/lazyClone.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/lazyReverse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/lazyValue.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mapDelete.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mapGet.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mapHas.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mapSet.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mergeData.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/mergeDefaults.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/metaMap.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/pickByArray.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/pickByCallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/reEscape.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/reEvaluate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/reInterpolate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/realNames.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/reorder.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/replaceHolders.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/setData.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/shimKeys.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/sortedUniq.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/toIterable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/toObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/toPath.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/trimmedLeftIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/trimmedRightIndex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/unescapeHtmlChar.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/internal/wrapperClone.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/clone.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/cloneDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/eq.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/gt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/gte.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isArguments.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isArray.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isBoolean.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isDate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isElement.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isEmpty.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isEqual.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isError.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isFinite.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isFunction.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isMatch.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isNaN.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isNative.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isNull.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isNumber.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isPlainObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isRegExp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isString.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isTypedArray.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/isUndefined.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/lt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/lte.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/toArray.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/lang/toPlainObject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/add.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/ceil.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/floor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/max.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/round.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/math/sum.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/number.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/number/inRange.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/number/random.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/assign.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/create.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/defaults.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/defaultsDeep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/extend.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/findKey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/findLastKey.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/forIn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/forInRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/forOwn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/forOwnRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/functions.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/get.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/has.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/invert.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/keys.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/keysIn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/mapKeys.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/mapValues.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/merge.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/methods.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/omit.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/pairs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/pick.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/result.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/set.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/transform.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/values.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/object/valuesIn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/camelCase.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/capitalize.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/deburr.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/endsWith.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/escape.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/escapeRegExp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/kebabCase.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/pad.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/padLeft.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/padRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/parseInt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/repeat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/snakeCase.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/startCase.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/startsWith.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/template.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/templateSettings.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/trim.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/trimLeft.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/trimRight.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/trunc.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/unescape.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/string/words.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/support.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/attempt.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/callback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/constant.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/identity.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/iteratee.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/matches.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/matchesProperty.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/method.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/methodOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/mixin.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/noop.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/property.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/propertyOf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/range.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/times.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/lodash/utility/uniqueId.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/demo/angular.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js.map delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.map delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js.map delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.map delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/gruntfile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/angular-sprintf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/sprintf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/test/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/lib/re.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cc/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cf/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/P/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Z/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/properties/Any/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/decode.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/encode.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/format.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/parse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/send.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/browser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/debug.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/mime.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/mime.types delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/node.types delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/decode.bench.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/encode.bench.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/runner.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/index.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/latest delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/logger.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/manager.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/namespace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.io.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/static.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/store.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/memory.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/redis.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transport.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/flashsocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/htmlfile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http-polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/jsonp-polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/default.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-16.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/xhr-polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/lib/base64id.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/doc/index.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/lib/server.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/codec.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/changelog.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/auth.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/eval.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/extend.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/file.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/mget.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/monitor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/psubscribe.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/pub_sub.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/simple.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/sort.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subqueries.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subquery.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/unix_socket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/web_server.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/generate_commands.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/commands.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/queue.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/to_array.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/mem.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/multi_bench.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/emitter.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/socket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transport.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/flashsocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling-jsonp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling-xhr.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/websocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-socket.io-protocol/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-socket.io-protocol/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/timoxley-to-array/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/timoxley-to-array/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/visionmedia-debug/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/visionmedia-debug/debug.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/visionmedia-debug/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMain.swf delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/dist/WebSocketMainInsecure.swf delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/events.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/io.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/json.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/namespace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/socket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transport.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/flashsocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/htmlfile.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/jsonp-polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/websocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/xhr-polling.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/transports/xhr.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/WebSocketMain.swf delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/WebSocketMainInsecure.zip delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/IWebSocketLogger.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocket.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocketEvent.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocketMain.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/WebSocketMainInsecure.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/build.sh delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/adobe/net/proxies/RFC2817Socket.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/gsolo/encryption/MD5.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/Crypto.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/MozillaRootCertificates.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509Certificate.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/cert/X509CertificateCollection.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/HMAC.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHMAC.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/IHash.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MAC.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD2.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/MD5.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA1.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA224.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHA256.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/hash/SHABase.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/ARC4.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/IPRNG.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/Random.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/prng/TLSPRF.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/rsa/RSAKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/AESKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/BlowFishKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CBCMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFB8Mode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CFBMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/CTRMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/DESKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ECBMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ICipher.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IPad.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IStreamCipher.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/ISymmetricKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/IVMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/NullPad.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/OFBMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/PKCS5.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SSLPad.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/SimpleIVMode.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TLSPad.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/TripleDESKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/XTeaKey.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/aeskey.pl delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/symmetric/dump.txt delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/AESKeyTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ARC4Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BigIntegerTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/BlowFishKeyTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CBCModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFB8ModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CFBModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/CTRModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/DESKeyTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ECBModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/HMACTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/ITestHarness.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD2Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/MD5Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/OFBModeTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/RSAKeyTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA1Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA224Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/SHA256Test.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TLSPRFTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TestCase.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/TripleDESKeyTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tests/XTeaKeyTest.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/BulkCiphers.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/CipherSuites.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/IConnectionState.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/ISecurityParameters.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/KeyExchanges.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/MACs.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLConnectionState.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLEvent.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/SSLSecurityParameters.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConfig.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSConnectionState.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEngine.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSError.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSEvent.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSecurityParameters.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocket.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSSocketEvent.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/crypto/tls/TLSTest.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/BarrettReduction.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/BigInteger.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/ClassicReduction.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/IReduction.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/MontgomeryReduction.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/NullReduction.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/math/bi_internal.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/ArrayUtil.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/Base64.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/Hex.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/Memory.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/ByteString.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/DER.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/IAsn1Type.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/Integer.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/OID.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/ObjectIdentifier.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/PEM.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/PrintableString.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/Sequence.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/Set.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/Type.as delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/flash-src/com/hurlant/util/der/UTCTime.as delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/sample.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/swfobject.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/lib/vendor/web-socket-js/web_socket.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/.bin/uglifyjs delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/.bin/wscat delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/..gitignore.un~ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/.Readme.md.un~ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/.index.js.un~ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/.package.json.un~ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/.test.js.un~ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/README delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/Tokenizer.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/ZeParser.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/benchmark.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/unicodecategories.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/bin/uglifyjs delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/docstyle.css delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/lib/object-ast.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/lib/parse-js.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/lib/process.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/lib/squeeze-more.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/package.json~ delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/beautify.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/testparser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/array1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/array2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/array3.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/array4.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/assignment.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/concatstring.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/const.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/forstatement.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/if.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue10.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue11.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue13.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue14.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue16.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue17.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue20.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue21.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue25.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue27.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue278.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue28.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue29.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue30.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue34.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue4.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue48.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue50.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue53.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue68.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue69.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/issue9.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/mangle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/null_string.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/var.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/whitespace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/expected/with.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/array1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/array2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/array3.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/array4.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/assignment.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/concatstring.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/const.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/forstatement.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/if.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/ifreturn.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue10.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue11.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue13.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue14.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue16.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue17.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue20.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue21.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue25.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue27.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue278.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue28.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue29.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue30.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue34.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue4.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue48.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue50.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue53.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue54.1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue68.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue69.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/issue9.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/mangle.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/null_string.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/strict-equals.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/var.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/whitespace.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/compress/test/with.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/test/unit/scripts.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/269.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/app.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/uglify-js.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/bin/wscat delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/binding.gyp delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/builderror.log delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferPool.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.fallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/ErrorCodes.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.hixie.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.hixie.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.fallback.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocket.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocketServer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/browser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/.dntrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/build/config.gypi delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/include_dirs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/nan.h delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/lib/options.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/example.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/tinycolor.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/bufferutil.cc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/validation.cc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/autotest.watchr delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/example/demo.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/lib/XMLHttpRequest.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-constants.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-events.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-exceptions.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-headers.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-methods.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-protocols.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/testdata.txt delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/events.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/io.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.common.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/parser.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/socket.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/util.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/worker.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.eslintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CONTRIBUTING.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/auth.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/cookies.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/getProxyFromURI.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/har.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/helpers.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/multipart.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/oauth.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/querystring.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/redirect.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/tunnel.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/har-validator delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/uuid delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/LICENSE.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/bl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/basic-test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/sauce.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/License delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.eslintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.jscs.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/License delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/browser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/form_data.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/dist/async.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/bin/har-validator delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/async.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/error.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/runner.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/cache.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/cacheEntry.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/content.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/cookie.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/creator.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/entry.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/har.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/log.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/page.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/pageTimings.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/postData.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/record.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/request.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/response.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/lib/schemas/timings.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/ansi-styles/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/escape-string-regexp/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/node_modules/ansi-regex/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/has-ansi/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/node_modules/ansi-regex/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/strip-ansi/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/node_modules/supports-color/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/chalk/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/History.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/Readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/node_modules/graceful-readlink/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/commander/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/example.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/formats.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/example.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-function/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/is-property.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/node_modules/is-property/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/generate-object-property/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/jsonpointer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/jsonpointer/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/LICENCE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/immutable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/mutable.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/node_modules/xtend/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/require.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/fixtures/cosmic.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/default.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/format.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/items.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/not.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/required.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/type.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/json-schema.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/is-my-json-valid/test/misc.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/license delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/node_modules/pinkie/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/node_modules/pinkie-promise/readme.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/har-validator/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/dist/client.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/CONTRIBUTING.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/CONTRIBUTING.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/ignore.txt delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/index.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/CHANGES.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/.bin/sshpk-conv delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/CHANGES.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/lib/jsprim.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/.gitmodules delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.deps delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/Makefile.targ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/examples/simple.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/jsl.node.conf delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/lib/extsprintf.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/extsprintf/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/hyper-schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/json-ref delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/links delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-00/schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/hyper-schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/json-ref delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/links delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-01/schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/hyper-schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/json-ref delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/links delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-02/schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/address delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/calendar delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/card delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/geo delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/examples/interfaces delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/hyper-schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/json-ref delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/links delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-03/schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/hyper-schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/links delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-04/schema delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-03.xml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/draft-zyp-json-schema-04.xml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/links.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/lib/validate.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/json-schema/test/tests.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/.gitmodules delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/Makefile.targ delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-verror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/levels-werror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/varargs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/verror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/examples/werror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/jsl.node.conf delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/lib/verror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.inherit.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.verror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/node_modules/verror/tests/tst.werror.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/jsprim/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/README.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/bin/sshpk-conv delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/algs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/dhe.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ed-compat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/errors.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/fingerprint.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/auto.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pem.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/pkcs8.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/rfc4253.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh-private.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/formats/ssh.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/key.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/private-key.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/signature.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/ssh-buffer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/types.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/AUTHORS delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/CHANGES.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/lib/dashdash.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/dashdash/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/LICENSE-jsbn delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/ec.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/lib/sec.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/ecc-jsbn/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/AUTHORS.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.0 delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/almond.1 delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/jsdoc.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/core.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/curve255.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/dh.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/eddsa.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jodid25519/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/LICENSE.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/LICENSE.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/isstream.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/Makefile delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/stringify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/HISTORY.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/LICENSE.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bin/uuid delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/compare_v1.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.html delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/uuid.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.eslintignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CHANGELOG.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CONTRIBUTING.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/bower.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/component.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/dist/qs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/parse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/stringify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/parse.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/stringify.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/utils.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/LICENSE.txt delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/example.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/stringstream.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/cookie.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/memstore.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/pathMatch.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/permuteDomain.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/store.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/index.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/package.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/request.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.documentup.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.jshintrc delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.npmignore delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.travis.yml delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/LICENSE delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/README.md delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/RELEASE.md delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/bin/shjs delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/global.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/make.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/package.json delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/generate-docs.js delete mode 100755 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/run-tests.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/shell.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cat.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cd.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/chmod.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/common.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cp.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/dirs.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/echo.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/error.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/exec.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/find.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/grep.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ln.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ls.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mkdir.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mv.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/popd.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pushd.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pwd.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/rm.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/sed.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/tempdir.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/test.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/to.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/toEnd.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/which.js delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/npm-shrinkwrap.json delete mode 100644 .vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/images/icon.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/images/ide_features.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/_mocha delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/lib/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws-sign2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.tern-port delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/aws4.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/node_modules/lru-cache/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/aws4/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/balanced-match/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/beeper/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/beeper/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/beeper/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/beeper/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/bl.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/test/basic-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/test/sauce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bl/test/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/changelog.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/browser/bluebird.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/browser/bluebird.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/any.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/bind.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/bluebird.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/call_get.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/cancel.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/captured_trace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/catch_filter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/context.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/debuggability.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/direct_resolve.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/each.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/errors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/es5.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/filter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/finally.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/generators.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/join.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/method.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/nodeify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/progress.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/promise.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/promise_array.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/promise_resolver.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/promisify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/props.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/queue.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/race.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/reduce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/schedule.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/settle.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/some.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/synchronous_inspection.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/thenables.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/timers.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/using.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/js/main/util.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/bluebird/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/.npmignore delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/CONTRIBUTING.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/images/boom.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/boom/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/brace-expansion/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/brace-expansion/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/brace-expansion/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/brace-expansion/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/brace-expansion/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/buffer-crc32/tests/crc.test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/builtin-modules.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/builtin-modules/static.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase-keys/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase-keys/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase-keys/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase-keys/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/camelcase/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/caseless/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/caseless/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/caseless/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/caseless/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/chalk/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/chalk/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/chalk/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/chalk/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone-stats/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone-stats/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone-stats/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone-stats/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone-stats/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/clone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test-apart-ctx.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/ReadMe.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/normal-usage.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/safe-string.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/colors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/trap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/zalgo.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/extendStringPrototype.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/america.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/rainbow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/random.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/zebra.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/styles.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/system/supports-colors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/safe.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/themes/generic-logging.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/License delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/lib/combined_stream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/README.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/example/map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/test/map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/float.patch delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/lib/util.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.npmignore delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/CHANGELOG delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README.old delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctio.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctype.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/man/man3ctype/ctio.3ctype delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsl.conf delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsstyle delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/etc/dashdash.bash_completion.in delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/lib/dashdash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/AUTHORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/Readme.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/bin/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/lib/dateformat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_dayofweek.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_formats.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_isoutcdatetime.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.sh delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/debug.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/node.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/License delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/field.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/method.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/node_example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/web_example.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/node_example.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/web_example.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/convert/dmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/convert/xml.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/base.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/character.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/css.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/json.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/line.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/sentence.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/word.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/apply.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/create.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/merge.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/array.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/distance-iterator.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/params.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/release-notes.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/runtime.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/test/tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/stream.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/LICENSE-jsbn delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/ec.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/sec.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/connect.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/helper/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/merge.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pause.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pipeline.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readArray.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readable.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/replace.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/simple-map.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/spec.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/writeArray.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.jscs.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/.gitmodules delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.deps delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.targ delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/examples/simple.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/jsl.node.conf delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/lib/extsprintf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/test/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/last.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/LICENSE-MIT delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/lib/findup-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/reorder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/respawn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/exit_code.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/respawner.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/signal.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.dockerignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.editorconfig delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/License delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/form_data.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/populate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/HISTORY.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/wercker.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.APACHE2 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.MIT delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/LICENSE-MIT delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/gaze.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/helper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/AUTHORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/common.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/glob.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/minimatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/fixtures/test.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/common.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/glob.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/sync.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/Gruntfile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/LICENSE-MIT delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/lib/globule.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/g.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/usr-local.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/glob.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/00-setup.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-comparison.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-results.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/cwd-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/mark.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/nocase-nomagic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/pause-resume.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root-nomount.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/zz-cleanup.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/graceful-fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/ulimit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/inherits.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/minimatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/brace-expand.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/caching.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/defaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/baz.css delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/qux.css delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deep.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deeper.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deepest/deepest.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/bar.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/foo.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/globule_test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/graceful-fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/legacy-streams.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/polyfills.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/lib/growl.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/Gulpfile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/disabled.appveyor.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/examples/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/auth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/cookies.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/getProxyFromURI.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/har.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/helpers.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/multipart.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/oauth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/querystring.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/redirect.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/tunnel.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/release.sh delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/request.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/File.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/mutable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/.bin/strip-bom delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/clone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/connect.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/helper/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/merge.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/parse.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pause.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pipeline.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readArray.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readable.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/replace.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/simple-map.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/spec.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/writeArray.asynct.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/common.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/glob.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/graceful-fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/polyfills.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/max-open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/write-then-read.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/minimatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/options.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/partitioned_unicode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/try_catch.asynct.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/prepareWrite.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/filterSince.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/readDir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/streamFile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/resolveSymlinks.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/symlink/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/PluginError.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/buffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/combine.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/env.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/log.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/noop.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/template.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/dest/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/src/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/vinyl-zip.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/zip/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/clone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/connect.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/helper/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/merge.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/parse.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pause.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pipeline.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readArray.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readable.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/replace.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/simple-map.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/spec.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/writeArray.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/options.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/partitioned_unicode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/try_catch.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/assets/archive.zip delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/bin/har-validator delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/error.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cache.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cacheEntry.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/content.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cookie.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/creator.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/entry.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/har.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/log.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/page.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/pageTimings.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/postData.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/record.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/request.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/response.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/timings.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.npmignore delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/Makefile delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/component.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/example/usage.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/images/hawk.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/images/logo.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/browser.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/client.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/crypto.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/server.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/browser.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/client.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/crypto.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/message.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/readme.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/server.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/uri.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/test/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/images/hoek.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/lib/escape.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/escaper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/modules/ignore.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/modules/test1.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/modules/test2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hoek/test/modules/test3.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/git-host-info.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/git-host.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/bitbucket-https-with-embedded-auth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/bitbucket.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/gist.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/github.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/gitlab.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/https-with-inline-auth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hosted-git-info/test/lib/standard-tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/.dir-locals.el delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/http_signing.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/lib/parser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/lib/signer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/lib/util.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/lib/verify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/http-signature/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/indent-string/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/indent-string/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/indent-string/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/indent-string/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/inflight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inflight/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/inherits.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/inherits_browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/inherits/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/interpret/CHANGELOG delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/interpret/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/interpret/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/interpret/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/interpret/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/.editorconfig delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/.istanbul.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-arrayish/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-builtin-module/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-builtin-module/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-builtin-module/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-builtin-module/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-finite/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-finite/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-finite/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-finite/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/formats.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/require.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/fixtures/cosmic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/default.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/format.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/items.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/not.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/required.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/type.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/json-schema.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-my-json-valid/test/misc.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-property/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-property/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-property/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-property/is-property.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-property/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-typedarray/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-typedarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-typedarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-typedarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-typedarray/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-utf8/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-utf8/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-utf8/is-utf8.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is-utf8/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/is/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isarray/build/build.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isarray/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/isstream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/isstream/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/bin/jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/compiler.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/doctypes.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/filters.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/inline-tags.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/jade.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/lexer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/attrs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block-comment.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/case.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/code.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/comment.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/doctype.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/each.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/filter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/literal.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/mixin.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/node.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/tag.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/text.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/parser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/runtime.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/self-closing.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/lib/commander.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.orig delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.rej delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/README.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/chmod.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/clobber.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/mkdirp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/race.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/rel.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/test.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/head.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/layout.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/AUTHORS.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.0 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.1 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/jsdoc.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/core.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/curve255.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/dh.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/eddsa.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/hyper-schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/json-ref delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/links delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/hyper-schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/json-ref delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/links delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/hyper-schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/json-ref delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/links delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/address delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/calendar delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/card delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/geo delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/interfaces delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/hyper-schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/json-ref delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/links delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/hyper-schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/links delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/schema delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-03.xml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-04.xml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/links.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/validate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/test/tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/key_cmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/nested.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/str.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/value_cmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/cmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/nested.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/replacer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/space.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/str.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/to-json.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/mocha.opts delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/stringify_test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/README.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/jsonpointer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/lib/jsprim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jscsrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/CHANGELOG delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/UPGRADING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/appveyor.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/build_config_name.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/file_search.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_config.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_cwd.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/parse_options.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/silent_require.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.templatesettings/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.templatesettings/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.templatesettings/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.templatesettings/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.compat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/api.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/loud-rejection/register.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/CONTRIBUTORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/test/foreach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/test/memory-leak.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lru-cache/test/serialize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-obj/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-obj/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-obj/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-obj/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/map-stream/test/simple-map.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/node_modules/object-assign/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/node_modules/object-assign/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/node_modules/object-assign/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/node_modules/object-assign/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/meow/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/merge-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/HISTORY.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/db.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-db/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/HISTORY.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/HISTORY.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/db.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/node_modules/mime-db/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mime-types/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimatch/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimatch/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimatch/minimatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimatch/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/example/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/all_bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/dash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/default_bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/dotted.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/kv_short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/long.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/num.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/parse_modified.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/stop_early.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/unknown.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/minimist/test/whitespace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/bin/cmd.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/bin/usage.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/examples/pow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/example/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/dash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/default_bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/dotted.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/long.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/node_modules/minimist/test/whitespace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/chmod.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/clobber.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/mkdirp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/opts_fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/opts_fs_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/perm.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/perm_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/race.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/rel.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/return.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/return_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/root.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/umask.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mkdirp/test/umask_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/bin/.eslintrc delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/bin/_mocha delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/bin/mocha delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/bin/options.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/images/error.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/images/ok.png delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/browser/debug.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/browser/events.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/browser/progress.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/browser/tty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/context.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/hook.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/bdd.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/common.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/exports.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/qunit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/interfaces/tdd.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/mocha.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/ms.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/pending.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/base.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/doc.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/dot.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/html-cov.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/html.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/json-cov.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/json-stream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/json.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/landing.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/list.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/markdown.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/nyan.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/progress.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/spec.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/tap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/coverage.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/menu.jade delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/script.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/style.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/xunit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runnable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runner.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/suite.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/template.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.css delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/.bin/supports-color delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/diff.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/g.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/usr-local.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/glob.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/00-setup.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-comparison.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-results.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/cwd-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/globstar-match.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/mark.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/pause-resume.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root-nomount.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/stat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/zz-cleanup.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/graceful-fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/polyfills.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/minimatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/brace-expand.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/caching.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/defaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/test/multipipe.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.gnu delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.sh delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark-native.c delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bin/uuid delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/compare_v1.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/uuid.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.jscs.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/Readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/lib/extend.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/AUTHORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/extract_description.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/fixer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/make_warning.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/normalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/safe_format.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/typos.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/warning_messages.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/consistency.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/dependencies.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/async.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/badscripts.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/bcrypt.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/coffee-script.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/http-server.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/movefile.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/no-description.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/node-module_exist.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/npm.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/read-package-json.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/request.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/underscore.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/github-urls.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/mixedcase-names.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js~ delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scoped.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scripts.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/strict.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/typo.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/once.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_double.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_single.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_hash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_singles.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/divide.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_options.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_wrap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/nonopt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/reflect.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/string.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/usage-options.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/xup.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/example/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/default_bool.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dotted.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/long.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/num.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse_modified.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/whitespace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/argv.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/bin.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/dash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse_modified.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/short.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/usage.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/whitespace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/lib/runTask.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/test/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/unicode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/pause-end.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.jshintignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/license.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/pseudomap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.eslintignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/parse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/stringify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/coverage.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/index.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.css delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.js.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov.info delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.compat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.compat.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.underscore.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.underscore.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/lodash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/finder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/fixtures/foo/bar.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/fixtures/foo/foo/.baz delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/fixtures/foo/foo/foo/foo/root delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/test/get.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/chunk.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/compact.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/difference.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/drop.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/dropRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/dropRightWhile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/dropWhile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/fill.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/findIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/findLastIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/first.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/flatten.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/flattenDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/head.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/indexOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/initial.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/intersection.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/last.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/lastIndexOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/object.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/pull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/pullAt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/remove.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/rest.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/slice.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/sortedIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/sortedLastIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/tail.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/take.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/takeRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/takeRightWhile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/takeWhile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/union.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/uniq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/unique.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/unzip.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/unzipWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/without.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/xor.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/zip.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/zipObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/array/zipWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/chain.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/commit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/concat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/lodash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/plant.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/reverse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/run.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/tap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/thru.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/toJSON.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/toString.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/value.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/valueOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperChain.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperCommit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperConcat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperPlant.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperReverse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperToString.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/chain/wrapperValue.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/all.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/any.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/at.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/collect.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/contains.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/countBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/detect.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/each.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/eachRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/every.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/filter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/find.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/findLast.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/findWhere.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/foldl.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/foldr.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/forEach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/forEachRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/groupBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/include.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/includes.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/indexBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/inject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/invoke.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/max.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/partition.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/pluck.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/reduce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/reduceRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/reject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/sample.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/select.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/shuffle.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/size.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/some.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/sortBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/sortByAll.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/sortByOrder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/sum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/collection/where.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/date.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/date/now.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/after.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/ary.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/backflow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/before.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/bind.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/bindAll.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/bindKey.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/compose.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/curry.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/curryRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/debounce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/defer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/delay.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/flow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/flowRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/memoize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/modArgs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/negate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/once.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/partial.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/partialRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/rearg.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/restParam.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/spread.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/throttle.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/function/wrap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/LazyWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/LodashWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/MapCache.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/SetCache.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayConcat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayCopy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayEach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayEachRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayEvery.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayExtremum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayFilter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayMap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayPush.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayReduce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arrayReduceRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arraySome.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/arraySum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/assignDefaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/assignOwnDefaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/assignWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseAssign.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseAt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseCallback.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseClone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseCompareAscending.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseCopy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseCreate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseDelay.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseDifference.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseEach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseEachRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseEvery.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseExtremum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFill.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFilter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFind.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFindIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFlatten.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFor.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseForIn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseForOwn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseForOwnRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseForRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseFunctions.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseGet.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseIndexOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseIsEqual.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseIsEqualDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseIsFunction.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseIsMatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseLodash.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseMap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseMatches.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseMatchesProperty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseMerge.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseMergeDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseProperty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/basePropertyDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/basePullAt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseRandom.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseReduce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSetData.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSlice.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSome.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSortBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSortByOrder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseSum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseToString.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseUniq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseValues.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseWhile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/baseWrapperValue.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/binaryIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/binaryIndexBy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/bindCallback.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/bufferClone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/cacheIndexOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/cachePush.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/charsLeftIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/charsRightIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/compareAscending.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/compareMultiple.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/composeArgs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/composeArgsRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createAggregator.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createAssigner.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createBaseEach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createBaseFor.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createBindWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createCache.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createCompounder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createCtorWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createCurry.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createDefaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createExtremum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createFind.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createFindIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createFindKey.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createFlow.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createForEach.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createForIn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createForOwn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createHybridWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createObjectMapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createPadDir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createPadding.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createPartial.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createPartialWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createReduce.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createRound.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createSortedIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/createWrapper.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/deburrLetter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/equalArrays.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/equalByTag.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/equalObjects.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/escapeHtmlChar.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/escapeRegExpChar.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/escapeStringChar.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getData.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getFuncName.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getLength.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getMatchData.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getNative.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/getView.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/indexOfNaN.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/initCloneArray.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/initCloneByTag.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/initCloneObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/invokePath.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isArrayLike.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isIterateeCall.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isKey.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isLaziable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isLength.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isObjectLike.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isSpace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/isStrictComparable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/lazyClone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/lazyReverse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/lazyValue.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mapDelete.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mapGet.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mapHas.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mapSet.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mergeData.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/mergeDefaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/metaMap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/pickByArray.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/pickByCallback.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/reEscape.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/reEvaluate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/reInterpolate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/realNames.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/reorder.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/replaceHolders.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/setData.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/shimKeys.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/sortedUniq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/toIterable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/toObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/toPath.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/trimmedLeftIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/trimmedRightIndex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/unescapeHtmlChar.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/internal/wrapperClone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/clone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/cloneDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/eq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/gt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/gte.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isArguments.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isArray.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isBoolean.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isDate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isElement.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isEmpty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isEqual.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isError.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isFinite.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isFunction.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isMatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isNaN.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isNative.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isNumber.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isPlainObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isRegExp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isString.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isTypedArray.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/isUndefined.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/lt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/lte.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/toArray.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/lang/toPlainObject.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/add.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/ceil.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/floor.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/max.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/round.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/math/sum.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/number.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/number/inRange.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/number/random.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/assign.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/create.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/defaults.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/defaultsDeep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/extend.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/findKey.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/findLastKey.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/forIn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/forInRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/forOwn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/forOwnRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/functions.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/get.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/has.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/invert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/keys.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/keysIn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/mapKeys.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/mapValues.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/merge.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/methods.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/omit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/pairs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/pick.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/result.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/set.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/values.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/object/valuesIn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/camelCase.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/capitalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/deburr.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/endsWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/escape.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/escapeRegExp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/kebabCase.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/pad.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/padLeft.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/padRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/parseInt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/repeat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/snakeCase.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/startCase.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/startsWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/template.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/templateSettings.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/trim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/trimLeft.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/trimRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/trunc.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/unescape.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/string/words.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/support.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/attempt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/callback.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/constant.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/identity.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/iteratee.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/matches.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/matchesProperty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/method.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/methodOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/mixin.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/noop.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/property.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/propertyOf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/range.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/times.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/node_modules/lodash/utility/uniqueId.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/test/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/test/fixtures/foo/bar.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/test/fixtures/foo/foo/.baz delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/test/fixtures/foo/foo/foo/foo/root delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcloader/test/loader.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg-up/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg-up/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg-up/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg-up/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/read-pkg/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/float.patch delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/CHANGELOG delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/lib/extension.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/lib/normalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/lib/register.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rechoir/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/redent/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/redent/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/redent/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/redent/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/repeating/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/repeating/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/repeating/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/repeating/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/replace-ext/test/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/auth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/cookies.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/getProxyFromURI.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/har.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/helpers.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/multipart.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/oauth.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/querystring.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/redirect.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/lib/tunnel.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/.bin/har-validator delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/assert-plus/AUTHORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/assert-plus/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/aws-sign2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/aws-sign2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/aws-sign2/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/aws-sign2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/bl.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/bl/test/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/caseless/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/caseless/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/caseless/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/caseless/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/caseless/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/.jscs.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/extend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/bin/har-validator delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/error.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/runner.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/cache.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/cacheEntry.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/content.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/cookie.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/creator.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/entry.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/har.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/log.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/page.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/pageTimings.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/postData.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/record.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/request.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/response.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/lib/schemas/timings.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/har-validator/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/.npmignore delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/dist/client.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/example/usage.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/images/hawk.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/images/logo.png delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/browser.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/client.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/crypto.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/server.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/browser.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/client.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/crypto.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/readme.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/server.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/uri.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/hawk/test/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/.dir-locals.el delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/http_signing.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/lib/parser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/lib/signer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/lib/verify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/http-signature/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/isarray/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/mime-types/HISTORY.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/mime-types/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/mime-types/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/mime-types/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/mime-types/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/.eslintignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/.eslintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/dist/qs.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/lib/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/lib/parse.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/lib/stringify.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/test/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/test/parse.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/test/stringify.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/qs/test/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/.zuul.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/doc/stream.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/request/request.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/example/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/example/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/caller.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/core.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/core.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/node-modules-paths.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/lib/sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/core.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/dotdot.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/dotdot/abc/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/dotdot/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/faulty_basedir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/filter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/filter_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/mock.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/mock_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/module_dir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/module_dir/xmodules/aaa/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/module_dir/ymodules/aaa/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/module_dir/zmodules/bbb/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/module_dir/zmodules/bbb/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/node_path.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/node_path/x/aaa/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/node_path/x/ccc/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/node_path/y/bbb/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/node_path/y/ccc/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/nonstring.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter/deep_ref/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence/aaa.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence/aaa/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence/aaa/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence/bbb.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/precedence/bbb/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/baz/doom.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/baz/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/baz/quux.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/cup.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/foo.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/incorrect_main/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/incorrect_main/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/mug.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/mug.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/other_path/lib/other-lib.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/other_path/root.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/quux/foo/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/without_basedir/main.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/resolver_sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/subdirs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/resolve/test/subdirs/node_modules/a/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/bin/semver delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/foot.js.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/head.js.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/semver.browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/semver.browser.js.gz delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/semver.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/semver.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/semver.min.js.gz delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/amd.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/big-numbers.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/clean.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/gtr.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/ltr.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/major-minor-patch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/semver/test/no-module.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sequencify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/bench.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/sigmund.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sigmund/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/signals.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/all-integration-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/awaiter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/change-code-expect.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/change-code.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/end-of-execution.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/exit-last.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/exit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/exiter.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/load-unload.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/multiple-load.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/parent.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/sigint.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/sigkill.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/signal-default.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/signal-last.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/signal-listener.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/sigpipe.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/sigterm.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/fixtures/unwrap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/multi-exit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/signal-exit/test/signal-exit-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/.npmignore delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/.travis.yml delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/Makefile delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/examples/offset.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/examples/time.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sntp/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/LICENSE.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/browser-source-map-support.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/index.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/require.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-source-map-support.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/index.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/build.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/index.html delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.coffee delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/server.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/register.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/source-map-support.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/Makefile.dryice.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/assert-shim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/mini-require.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-source-map.jsm delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-utils.jsm delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-source-map.jsm delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-utils.jsm delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-prefix.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-suffix.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/array-set.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64-vlq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/binary-search.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-consumer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-generator.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-node.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/util.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/package.json delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/run-tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-api.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-array-set.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64-vlq.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-binary-search.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-dog-fooding.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-consumer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-generator.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-node.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/util.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/index.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/parser.generated.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/LICENSE delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/spdx-license-ids.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/examples/pretty.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/partitioned_unicode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/split.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/try_catch.asynct.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-conv delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-sign delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-verify delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/algs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/dhe.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ed-compat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/errors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/fingerprint.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/auto.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pem.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs1.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs8.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/rfc4253.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh-private.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/key.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/private-key.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/signature.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ssh-buffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/utils.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-conv.1 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-sign.1 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-verify.1 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/types.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/AUTHORS delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/CHANGES.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/assert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/test/tests.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/LICENSE.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/example.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/stringstream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/readme.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.APACHE2 delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.MIT delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/readme.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/async.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/auto-destroy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/buffering.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/end.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.zuul.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/stream.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/Gruntfile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/README.md delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/cleanup.sh delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/lib/tmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/base.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-sync-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-sync-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/name-test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/symlinkme/file.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe-sync.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/cookie.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/memstore.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/pathMatch.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/permuteDomain.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/pubsuffix.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/store.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/CHANGELOG.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.editorconfig delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CHANGELOG.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CONTRIBUTING.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/README.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/bower.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/camelize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/capitalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chars.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chop.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/classify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/clean.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/component.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/count.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dasherize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/decapitalize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dedent.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.min.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/endsWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/escapeHTML.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/exports.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/gulpfile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/adjacent.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/defaultToWhiteSpace.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeChars.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeRegExp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/htmlEntities.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/makeString.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/strRepeat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/toPositive.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/humanize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/include.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/insert.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/isBlank.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/join.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/levenshtein.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lines.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lpad.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lrpad.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/ltrim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-post.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-pre.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/naturalCmp.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/numberFormat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pad.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pred.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/prune.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/quote.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/repeat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/replaceAll.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/reverse.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rpad.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rtrim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/slugify.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/splice.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/sprintf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/startsWith.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeft.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeftBack.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRight.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRightBack.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/stripTags.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/succ.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/surround.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/swapCase.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/titleize.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toBoolean.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toNumber.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentence.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentenceSerial.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/trim.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/truncate.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/underscored.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unescapeHTML.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unquote.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/vsprintf.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/words.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/test/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/license delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/History.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/browser.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/node.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.gitmodules delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile.targ delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-verror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-werror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/varargs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/verror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/werror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/jsl.node.conf delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/lib/verror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.inherit.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.verror.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.werror.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/readDir.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/streamFile.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getStats.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/index.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/.bin/strip-bom delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/clone.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/graceful-fs.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/polyfills.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/max-open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/open.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/readdir-sort.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/write-then-read.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_duplex.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_writable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/passthrough.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/readable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/transform.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/writable.js delete mode 100755 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/cli.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/readme.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/through2.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/cloneBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/inspectStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isBuffer.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isNull.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isStream.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/README.markdown delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/center.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/meat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/break.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/idleness.txt delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/wrap.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/wrappy.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.jshintrc delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/LICENCE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/Makefile delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/immutable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/mutable.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/test.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/CONTRIBUTING.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/test/basic.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/yallist.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.travis.yml delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/.npmignore delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/LICENSE delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/README.md delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/index.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/extension.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/formatService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/pathService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/racerClient.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustFormat.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMain.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMode.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustPath.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustStatus.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSuggest.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSymbols.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/commandService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/documentSymbolService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/filterService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/formatService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/pathService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/racerClient.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/rustStatus.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/statusBarService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/suggestService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/workspaceSymbolService.js delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/package.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/snippets/rust.json delete mode 100644 .vscode/extensions/saviorisdead.RustyCode-0.18.0/tslint.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/.github/CONTRIBUTING.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/.github/ISSUE_TEMPLATE.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/.travis.yml delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/.vsixmanifest delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/LICENSE.txt delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/ROADMAP.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/STYLE.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/gulpfile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/images/icon.png delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/images/screen.png delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/child-process/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/child-process/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/.npmignore delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/darwin.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/fallbacks/paste.vbs delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/linux.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/win32.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/copypaste.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/mocha.opts delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.npmignore delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.travis.yml delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/LICENSE delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/test/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.npmignore delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.travis.yml delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/Changelog.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/LICENSE delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-codec.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-data.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/internal.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-codec.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data-generated.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/big5-added.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp936.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp949.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp950.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/eucjp.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gbk-added.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/shiftjis.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf16.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf7.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/bom-handling.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/extend-node.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/streams.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/LICENSE delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_DataView.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Hash.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LazyWrapper.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_ListCache.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LodashWrapper.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Map.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_MapCache.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Promise.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Set.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_SetCache.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Stack.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Symbol.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Uint8Array.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_WeakMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addMapEntry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addSetEntry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_apply.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayAggregator.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEach.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEvery.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayFilter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludesWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayLikeKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayPush.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduceRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arraySome.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiSize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiWords.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignInDefaults.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignMergeValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assocIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAggregator.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAssign.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClamp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClone.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConforms.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConformsTo.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseCreate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDelay.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDifference.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEach.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEvery.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseExtremum.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFill.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFilter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFlatten.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwnRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFunctions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetAllKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetTag.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHasIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOfWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIntersection.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInverter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInvoke.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsArrayBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsDate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqual.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqualDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMatch.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNaN.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNative.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsTypedArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIteratee.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeysIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLodash.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatches.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatchesProperty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMean.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMerge.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMergeDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseNth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseOrderBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePick.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePickBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseProperty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRandom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseReduce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRepeat.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRest.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSetData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSlice.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSome.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedUniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSum.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseTimes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToNumber.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnary.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnset.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUpdate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseValues.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWrapperValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseXor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseZipObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cacheHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castArrayLikeObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castFunction.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castSlice.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsEndIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsStartIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneArrayBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneDataView.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSymbol.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneTypedArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareAscending.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareMultiple.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgsRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copySymbols.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_coreJsData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_countHolders.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAggregator.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAssigner.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseEach.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseFor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBind.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCaseFirst.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCompounder.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCtor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCurry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFind.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFlow.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createHybrid.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createInverter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createMathOperation.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createOver.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPadding.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPartial.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRecurry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRelationalOperation.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRound.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createToPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createWrap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_deburrLetter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_defineProperty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalArrays.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalByTag.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalObjects.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeHtmlChar.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeStringChar.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_freeGlobal.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeysIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getFuncName.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getHolder.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMapData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMatchData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getNative.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getPrototype.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbols.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbolsIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getTag.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getView.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getWrapDetails.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicode.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicodeWord.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashClear.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashDelete.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashGet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneByTag.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_insertWrapDetails.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isFlattenable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isHostObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIterateeCall.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKeyable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isLaziable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMaskable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMasked.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isPrototype.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isStrictComparable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_iteratorToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyClone.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyReverse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheClear.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheDelete.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheGet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheClear.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheDelete.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheGet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_matchesStrictComparable.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeDefaults.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_metaMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeCreate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeysIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nodeUtil.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_overArg.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_parent.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEscape.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEvaluate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reInterpolate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_realNames.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reorder.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_replaceHolders.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_root.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheAdd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setData.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setWrapToString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackClear.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackDelete.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackGet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackHas.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringSize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toSource.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unescapeHtmlChar.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeSize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeToArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeWords.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_updateWrapDetails.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_wrapperClone.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/add.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/after.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/array.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ary.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assign.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignInWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/at.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/attempt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/before.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bind.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/camelCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/capitalize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/castArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ceil.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chain.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chunk.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clamp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clone.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeepWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/collection.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/commit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/compact.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/concat.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cond.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conforms.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conformsTo.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/constant.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.min.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/countBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/create.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curryRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/date.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/debounce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/deburr.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultTo.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaults.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultsDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/delay.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/difference.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/divide.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/drop.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRightWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/each.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/endsWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entries.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entriesIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escape.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escapeRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/every.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extend.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extendWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fill.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/filter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/find.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLast.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/first.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDepth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatten.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDepth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/floor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flow.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flowRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEach.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forInRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwnRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/F.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/T.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/__.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_baseConvert.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_convertBrowser.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_falseOptions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_mapping.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_util.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/add.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/after.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/all.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/allPass.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/always.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/any.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/anyPass.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/apply.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/array.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ary.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assign.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assoc.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assocPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/at.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/attempt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/before.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bind.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/camelCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/capitalize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/castArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ceil.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chain.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chunk.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clamp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clone.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeepWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/collection.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/commit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compact.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/complement.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compose.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/concat.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cond.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conforms.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conformsTo.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/constant.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/contains.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/convert.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/countBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/create.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryN.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRightN.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/date.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/debounce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/deburr.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultTo.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaults.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeepAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/delay.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/difference.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissoc.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissocPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/divide.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/drop.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLast.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLastWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRightWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/each.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/endsWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entries.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entriesIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/equals.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escape.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escapeRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/every.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extend.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fill.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/filter.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/find.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndexFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLast.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndexFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastKey.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/first.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDepth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatten.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDepth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/floor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flow.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flowRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEach.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEachRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forInRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwnRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fromPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/function.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functionsIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/get.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/getOr.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/groupBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gte.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/has.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/hasIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/head.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identical.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identity.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/inRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includesFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOfFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/init.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/initial.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersection.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invert.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertObj.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invoke.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgsMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArguments.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLike.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLikeObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBoolean.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isDate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isElement.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEmpty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqual.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqualWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isError.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFinite.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFunction.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isLength.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatch.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatchWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNaN.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNative.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNil.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNull.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNumber.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObjectLike.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isPlainObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSafeInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSymbol.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isTypedArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isUndefined.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/iteratee.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/join.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/juxt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/kebabCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keyBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keysIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lang.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/last.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOfFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerFirst.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lte.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/map.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapValues.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matches.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matchesProperty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/math.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/max.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/maxBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mean.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/meanBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/memoize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/merge.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/method.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/methodOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/min.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/minBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mixin.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/multiply.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nAry.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/negate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/next.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/noop.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/now.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nthArg.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/number.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/object.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/once.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/orderBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/over.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overArgs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overEvery.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overSome.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pad.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padChars.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/parseInt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partial.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partialRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partition.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/path.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathEq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathOr.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/paths.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pick.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pipe.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/placeholder.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/plant.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pluck.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/prop.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propEq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propOr.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/property.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propertyOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/props.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pull.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/random.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/range.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rangeRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rearg.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduceRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/remove.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/repeat.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/replace.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rest.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/restFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/result.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reverse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/round.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sample.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sampleSize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/seq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/set.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/setWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/shuffle.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/size.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/slice.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/snakeCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/some.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniqBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/split.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spread.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spreadFrom.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startsWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/string.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubFalse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubTrue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/subtract.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sum.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sumBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifference.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tail.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/take.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLast.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLastWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRightWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/template.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/templateSettings.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/throttle.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/thru.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/times.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toFinite.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toIterator.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toJSON.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLength.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLower.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toNumber.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairsIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPlainObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toSafeInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toUpper.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/transform.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trim.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimChars.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/truncate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unapply.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unary.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unescape.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/union.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqueId.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unnest.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unset.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzipWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/update.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/updateWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperFirst.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/useWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/util.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/value.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valueOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/values.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valuesIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/where.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/whereEq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/without.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/words.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperChain.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperLodash.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperReverse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObj.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObjectDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fromPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/function.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functionsIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/get.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/groupBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gte.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/has.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/hasIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/head.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/identity.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/inRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/includes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/index.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/indexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/initial.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersection.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invert.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invertBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invoke.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invokeMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArguments.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLike.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLikeObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBoolean.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBuffer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isDate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isElement.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEmpty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqual.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqualWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isError.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFinite.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFunction.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isLength.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatch.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatchWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNaN.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNative.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNil.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNull.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNumber.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObjectLike.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isPlainObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isRegExp.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSafeInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSymbol.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isTypedArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isUndefined.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakMap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakSet.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/iteratee.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/join.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/kebabCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keyBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keysIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lang.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/last.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lastIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lodash.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lodash.min.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lowerCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lowerFirst.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lte.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/map.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/mapKeys.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/mapValues.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/matches.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/matchesProperty.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/math.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/max.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/maxBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/mean.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/meanBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/memoize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/merge.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/mergeWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/method.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/methodOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/min.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/minBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/mixin.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/multiply.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/negate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/next.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/noop.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/now.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/nth.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/nthArg.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/number.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/object.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/omit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/omitBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/once.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/orderBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/over.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/overArgs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/overEvery.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/overSome.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pad.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/padEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/padStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/parseInt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/partial.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/partialRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/partition.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pick.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pickBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/plant.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/property.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/propertyOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pull.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pullAll.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pullAllBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pullAllWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/pullAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/random.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/range.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/rangeRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/rearg.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/reduce.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/reduceRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/reject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/remove.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/repeat.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/replace.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/rest.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/result.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/reverse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/round.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sample.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sampleSize.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/seq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/set.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/setWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/shuffle.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/size.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/slice.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/snakeCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/some.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedIndexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedLastIndex.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedLastIndexBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedLastIndexOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedUniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sortedUniqBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/split.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/spread.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/startCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/startsWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/string.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/stubArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/stubFalse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/stubObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/stubString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/stubTrue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/subtract.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sum.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/sumBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/tail.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/take.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/takeRight.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/takeRightWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/takeWhile.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/tap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/template.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/templateSettings.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/throttle.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/thru.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/times.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toArray.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toFinite.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toIterator.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toJSON.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toLength.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toLower.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toNumber.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toPairs.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toPairsIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toPath.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toPlainObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toSafeInteger.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/toUpper.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/transform.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/trim.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/trimEnd.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/trimStart.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/truncate.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unary.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unescape.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/union.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unionBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unionWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/uniq.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/uniqBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/uniqWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/uniqueId.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unset.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unzip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/unzipWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/update.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/updateWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/upperCase.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/upperFirst.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/util.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/value.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/valueOf.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/values.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/valuesIn.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/without.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/words.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrap.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrapperAt.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrapperChain.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrapperLodash.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrapperReverse.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/wrapperValue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/xor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/xorBy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/xorWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/zip.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/zipObject.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/zipObjectDeep.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/zipWith.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/.npmignore delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/LICENSE delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/Makefile delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/README.md delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/coffee/lib/create-pipes.coffee delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/coffee/lib/proxy.coffee delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/coffee/lib/read-pipes.coffee delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/coffee/lib/timeout.coffee delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/coffee/sync-exec.coffee delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/js/lib/create-pipes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/js/lib/proxy.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/js/lib/read-pipes.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/js/lib/timeout.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/js/sync-exec.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/test/example.coffee delete mode 100755 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/test/sh/err.sh delete mode 100755 .vscode/extensions/vscodevim.vim-0.2.0/node_modules/sync-exec/test/sh/out.sh delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/extension.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/actions/actions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/actions/notation.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/deleteRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/file.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/quit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/read.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/register.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/setoptions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/substitute.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/tab.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/wall.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/write.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/commands/writequit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/lexer.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/main.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/node.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/parser.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/scanner.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparser.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/deleteRange.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/file.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/quit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/read.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/register.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/setoptions.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/substitute.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/tab.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/wall.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/write.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/subparsers/writequit.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/cmd_line/token.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/configuration/configuration.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/error.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/globals.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/history/historyTracker.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/matching/matcher.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/matching/quoteMatcher.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/matching/tagMatcher.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/mode.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeHandler.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeInsert.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeInsertVisualBlock.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeNormal.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeReplace.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeSearchInProgress.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeVisual.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeVisualBlock.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/modeVisualLine.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/mode/remapper.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/motion/position.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/notation.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/number/numericString.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/register/register.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/taskQueue.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/textEditor.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/out/src/util.js delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/package.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/tsd.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/tslint.json delete mode 100644 .vscode/extensions/vscodevim.vim-0.2.0/typings.json diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/.vsixmanifest b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/.vsixmanifest deleted file mode 100644 index 9a44ec8e..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/.vsixmanifest +++ /dev/null @@ -1,35 +0,0 @@ - - - - - Dockerfile and Docker Compose File (yml) Support - Adds syntax highlighting, snippets and description on hover for Dockerfiles and Docker compose files. - snippet,dockerfile,Dockerfile,yaml - Languages - Public - - - - - - - - - - - - - - - extension/LICENSE.md - extension/images/docker_icon.svg - - - - - - - - - - diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/LICENSE.md b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/LICENSE.md deleted file mode 100644 index 28622332..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -Visual Studio Code Extension for Docker - -Copyright (c) Microsoft Corporation - -All rights reserved. - -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/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/README.md b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/README.md deleted file mode 100644 index 7e89a1fc..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/README.md +++ /dev/null @@ -1,30 +0,0 @@ -## Docker Extension for Visual Studio Code -------------------- -## Functionality -This extension adds syntax highlighting, snippets and additional intellisense for Dockerfiles and docker-compose files in Visual Studio Code. Hovering over -commands in your Dockerfile will show you additional information about commands and images. - -![dockerfile](https://github.com/Microsoft/vscode-docker/raw/master/images/dockerfile.gif) - -Similar functionality is available for docker compose files: - -![composefile](https://github.com/Microsoft/vscode-docker/raw/master/images/dockercompose.gif) - -## Install -Open up Visual Studio Code, press F1 and type `ext install` and select **Dockerfile and Docker Compose File (yml) Support**. Once extension is installed you will -be prompted to restart Visual Studio Code. - -![installation](https://github.com/Microsoft/vscode-docker/raw/master/images/installing.gif) - -## Contributing -There are a couple of ways you can contribute to this repo: - -- Ideas, feature requests and bugs: We are open to all ideas and we want to get rid of bugs! Use the Issues section to either report a new issue, provide your ideas or contribute to existing threads -- Documentation: Found a typo or strangely worded sentences? Submit a PR! -- Code: Contribute bug fixes, features or design changes. - -## Legal -Before we can accept your pull request you will need to sign a **Contribution License Agreement**. All you need to do is to submit a pull request, then the PR will get appropriately labelled (e.g. `cla-required`, `cla-norequired`, `cla-signed`, `cla-already-signed`). If you already signed the agreement we will continue with reviewing the PR, otherwise system will tell you how you can sign the CLA. Once you sign the CLA all future PR's will be labeled as `cla-signed`. - -## License -[MIT](https://github.com/Microsoft/vscode-docker/blob/master/LICENSE) \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/docker_icon.svg b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/docker_icon.svg deleted file mode 100644 index bec2539c..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/docker_icon.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockercompose.gif b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockercompose.gif deleted file mode 100644 index c5b9cba5babd7b06db3f670f094cadb8f4c2d2a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147105 zcmeFYRajeX*Y6vGTObsd7AVjlrAS+}Sb^eJDBeP$Sb^d$!2<+$5AG1$A-KCc#l1)c zY02Vw-tS${yRWtOwZC<;k5&#dGp{l3`~HtHXU1=gH}bNA0>-jH9*kdrzdm?)c#KTU zSd!)<3dWBVEqN7bZQ@vk=pFQr5TCGB6P_^wc-Ba5S_cd><$A-b3xZz0e1!$_EE8BWrPEAK{OI z8XuhlOl(@afGZA?w2J_YK3ayK_~f}4GLWgd27{_&Hgb-bm$;b*VUpFfLP$3v}6 zGOQgmZ2eAY)8^(D;bGh9;qK@eQRZo;@0H~2 z73}5Z<>DP1;O!Xi7iadVRoSKY31-PpYT*V_SGiS8pHIygsgzcc|ZSY20mUYW8f|t7w__Z{1mG4PtE*5@}QPZ{H7V z-$A!?OQF<)Q3ue@V00(+}8`w-p36W4bf)F0m3Kbbgq%swKOHgd{3DwaL|jbq|< z{^Ymm$*IzrZxyp=)$`{o3o~_#=QE2dTZ^N^OQS1GD>KVmEh`r*t3{iut1D|82Wv~6 z>)$ulH$qwmGfgeFvx(R}+_QcZ@Bn+Fr)udlAL zuz>(Hfa|Z|_$y2Rcxb>M{E@wi^v(dh2OI_iYF{B3q>rWOXVt#Og;Voet+=V{3Vos% zdPgr`oi`WPOu~m=a~UH3*9Q1@GL2PR{n3vVDIwFV+r!EHpCk2EIMzoIufreOG_1UxDtfEE zGkjBPRTE6C=cC+Ge==I}R0o!RZHZViklYWq773Bhq$zbkG41Ig%&{31ZgCRatf4u49am&5 zS{It^tntzu{88e&GS})!z&{QwG2ifdA`=x3y9+ecIV@*W1fQmC3*RyBE2g>+HSN98 zOMC!HcCdZHlH%PLnuCx@q}fiE-n`z*yY<%2jRKwvezn%JB%m*hU-|^%L7CR=#2urO zKE(~K#O)~_yh1NNiQi*jx76x@T<68?9bm4~c1b*}A};7J z)tr8Ky%S?uu(#=vac#0&nlX4;npFAnO0jl;o6f4JVD{=j>!dl{GPB>1;IP>a|8b;H zr`+2^tzr$&GSnT>bU7^a#!^pgYA7^X9OG?Wp=SFTKcbR6X|Pb7;tkPx6|Q3|vL5$q zsF6oEq&ul{*NpDs8TU9xP5q&mwU*e!K~YXmH5V7#%+=~#?sjnxt6VMF@wD%4(rK)b z9k+M9F2cCN*jm8W2s05Mslzba!N6+3p z6!2s=FhlAx4(l*T5; zxc60V=N~(yCl$+Z0x~wAg#yA5Q2hXCzT3ckJ_X{5%+kjdwBXb%p(YraT8 z!t=Sz<%ji_E)p9@^0{3Hhu_~^B%z23ctYeyKGI$$4=5GzB@K?4316m6zzd!i%8y#< zU8XLK6ufL09JTehOxqwT6zrEDb4a~R-&ZOWo*x`@X}-)jgBObK$&Y(1U1na56pH;C zM34L2TxJ1?izILrCj4o?Bk+`qq^O1_f`z|llSULtKT((r)BB!7Jz69yFf7wB+rfV>&PEUo082yOJov1ls_R`F&=R+?JTzV#Hz{4 ztW`gxkq2z#klt=4*C&W79dW{r{dpL!Ce2@l#46+S4jZXT{8479Y%M+4tkWmeQ&o}2 zZn&p6t-qUBIyA%i;aACwX)sXb!w$LPP7f?q8p|9Q{orj}(NF-B3rEx|Y7;E~z*ICn zycmdBHOc40gsFW_Fn^1q``JGybz`pf1@ULf3yep}a{0ApT4hd5%X7W$FPI<7<>PRC zR!q5nUEpQXu!#xvM-oT_Z2pu1W;mfVMLVVR51=&dVOVueyNzHlxAfuJ`w!N$?bi!W zrKKe2L?u}Wtt9QFe;WtifCN!@JcltF#YXFtI$hp|M-HrA8~uEntfWFD(!1gBdlUr9 zXYx;-**RlMmueFYW)GjgIQn49#?Jg(hFki=&*%aF?4#caJQ}MpLHMstaro7W#VxFG zemPKMyZhlio;x)4{Z7ezTJ%~-fpf>9QM*_k#2Fg1vg~k0!CYbY#{IF>W~Hqzni)=A zp=ZklCBCiid7@$+R!FOuHRW8*b7yOXZKy=wlbuM%myxL%ScGXNkg-0Vy3jdH0iz*RqWCpMIg`!ipf#bd*O}@v)by&x_#4rY zsDSgh?TI4?9m22F>{nt=B8*R1MCtXHpCb^7sT8V+#g~eK{dYX}LPMpdz0%hxw|6_S zREnF}uW70V+iMCR$L+f22aS5EW zPiKoV-dOAw>uw{y+r=9J=Hcpn;yUi>yS8>&`mOCO zq;h=yvDj6QYWu}kORsGK-|LB}c7d$%?|X{qn}tHQAC6gnPCeICm)A?sIUTBZ7nK(~ z*>W8>^N+&LJNSNw^LG5+dlW;%$V7NG-f>rh`lQ>HbqAn^mVI|4`Q_961d5joMQ&TC z$*`OjLP@Fp$U31RY<`q(e$>f+w2glB3w{r;{1~bInFak>bo|-e{2|Hy9F6{53;x_! z{yfwHe1ZYbbpl?x1qdbw2sZ|ZE(C~O1xQc_N(lx^>jcWW1IA)W3(`pr(rXMd!1L!iS|=3A zVjltlCtHN3Un!(rDd=tx1}%hUP}`)yOfcSrmF&BJ2=O#&3@cp-E`)?5b;3)vVcGkH z-_63)so!rVDA>t`wl0Jd?-K;$z`Aup+l#2}uH50t@S$W2GG5H9Uttp#p~G$wgUJy~ z1K}$R5p~JoIe3w+u+Ut&$n<3F7Fgu*LgeXHrCPrr4E?DSWFjo=wh=chTK52(EGM*S=4f7mdr*3HCtZ=<51=pH7~Vv*Xb1L(CR5pi98uu7P(Ru#;$=HkqD%z1Mm~);8*czg)Cf)XS0ftO zz`sM_twj^J9uT99()(%rf9+*Ocg_X1_dLVz_Cpk;3Du_d+^x?iDVb< zK26%vU?yoJI7Ka;Ivejdd-By{rn7q@Mp!y#GZ@>$57#3L-^y>5Ch2GqK_;9{u9r>e zkxiYNP1~GJzm)y(CYzBqhgmp>MK6cVBL|Y2!_l0>wUonslf!-$l)6LUdSJxVIRy637-x+IVb0RPSvqYRrnIdf;7)_PBr(a zQ!p#hRSwDb_IL~G*UqOXnsX}%LMs&9X}Ouv7EJ|vMU?3HF2(t<7SFyZN?6ix^)T{G zDAsJ&@>wVrnk@(xEH)c53%4ip@+X!S(sMdl~!4{EQ`}nnQ#zG3w7Si;b);GXnSh83TrM%CwEP_Vq33b z*P~)Twc@b3;&`dz^rqsBw(>%_^1EK;Pmjv0)XJOY%HKR%y9b z<+fIhu1-UwPE)_`ooAg+TAf}?oxyV5``bDry84eI^``puW}fvHY4uhu_14Svwzu_m zbPWz74Nm$Egf~f^G{ov@_;=CxF1HO(x<-GIMr}?)?M?z!P6{9W+E&t}ePoRzA_@4F zIC~J>h$Oj15?Kr;!#oowktA1)gn=T>281LLo`@*V#5s1-ZBnw9L2$7r;?|CU<}1m* z8im_!CJis{hEWTeCaD#WQm07aJV;n^jg_(3bcIZ%sv^EqYsv~uE?BM!4yVW{txZuQ zo?UK`5y>!5A&^8nfClXlQ@Ru#p5S0YqS2<54>T+r*9l{sgdr&edHNmNEhI_zk$je9 zZV9@BHiki)=+B#5hC2ukNpix$cLjx6 zv~MEWg=UT%;Q_NdHyP8ZJ8^*Lsn;zv!1KnoBa*cU8R8~T8R!(?bOCyf+OIm;!ag$S}#7)J^<7! zkD@|{d8-VA%%SYX+8)@5T&nE4X%O+9>)HsGW28ZpEhd0ue8S%C^NKg|k z)^@C|cA!YcR_EfRRL|t3gR~b0E$D+bdN9k>bvqqX2DN0Sv)7nP=@8Y|wA^ZvA1H7H z96T&BN;BEgJ3)jl9jGga%SDk*)90JMK)^M#zu4tD2$pLb&>x-2 z{8OWHGEZeZ_~m!Pu-zP$IuWZkIJ0c#Ze%?D_jufK-w#I8-RM5bW0F}O1pdjmZ7X65 zzfCd+B+!~lwwfCJ6eM@DfVo8R@D;^WQ$J90%GYqH7Yh0z(J}x9Ig+MzqHo8h*)zg6 z@FD?3)u@%xwrSOg={SbY!r?CZ&OR7BMaLhkGjDL;?c&X=+U$(x3Wm-PG_!ZsDEai+ zvypL=)fDe*EF*@_bkTwA6rw85p4N;x5>Q`-WtV{gk?$Z58AE4wI{xsVuBa2@WloA} zMAD{pZSB2uX|kp>z&RPibKZSmI4B#QddZM>7v1qHa&5M3Srt0!Bj4@L-nxd|OnOSX zvpo4_q&=^7T?4elBDRG-NiCDutaP7JwQB)$4WAi-v@2@nLczmuF!9xwpm{KVBiiR%SI;gnq7WsX|u@PDh>DNuvh|){w-oaFP@6+FGKM6~YzT zulOCD1BG_8lFQo@3}l%SlXS+1TwD|ik>En;a9;bVQaIt`5pbc=;z4HZ@?A|Kpv$?n zZ4pIKCb7^qwiy;)AHzwpY&U`Fk*qCwaNK^TMo5G+erD>qnRQp|ReDP5drqBouK1_P zz4ZJc`ke96h4L){^M?yI-wPTv!Oj^jWc`90eX;)=w}4a~#6oiU()UvEQ3FR72?oYL zMMAv$k|7vCa$iPI0VG^s;35zJ-<|jb{Q+dUxGNSRP;kF8M<$$Qhv?GGpLX;(-k zII^M=#I@VK+G+%~Xu8xWF4@yUCO*q}WBxfHtgA3!sJZhxHz|C1GV5@lWK({1l<~Tj za;MK(N1eL``j59Vz-RZ)-@A;51-Qh<`fpsg|2cphKz)BlCtw(#UJhv_>HBvP6q(%} zLi$)CU9Kvp!;A7k^W_uN$My(-@ca0E&UkSE(;xOrE!+HOpYVJWE_a64E8-v`V_bV* z%#@Px+;c{X`HYo)JJwj0LL4pL_~1p|`P0@OsFBN>T(nXTA8Psj$>V6*8&Bd)2WoI& zal{pfN9+E^21HkWYKq`3ZvSD9!$bhE|MqdDl(z^KAMk)}O(gm;G?zrY`8Ihx0a`<{ zN`bX>Slp{jO5A8*-uGN%R(atIi*m#p zk%AzO+3eL8x68xT;iSrzze~GHI!I_Y>;dQdk^d^~W-2vR@BCHTT^nht*&F|>w5!}) zYw4Sh9V;85S1S$x>IL`^>(`qv)tO^15R0svue4xaof3Hogndm5r+br`QV(6iio+b( zd<*$$}L8x%At~uhao= zLdlGQf7yqo@ceDRkTZs3*j{ws*68iMdB}*vjMg;#ZfI1ek-}KwAN$(??)w0vxwrr2 z|7jnY{W|3CA;B3HcvBh%;O6^|%V;7KL@#2cM6I#iAHXWJ`*^X66+q6Z-fWHk)=V~v zoSk+%x%UGAzze?NkE^670O%UTz;(w=q+BtxfoBOp#u^wE2;1-4wz97)2{3{G_^=6h z0U*8)0|1`IzkTq(12HQVsToNH-!GjMFp201rNDpR<7T(j<3))9BWDNX^~F3^Pj-Uw z?F@wjd2Z4M)jm@CVgSnM_s5mm9UuTx`=AL^p-8M%Vod^+Hf7Lj>_!dR$q!95#8tFJ zc>fsx3J?Gg0m$x+f4tW!^}SXBzCdD1@?^EIk^o!=vA_j8CTKXA_@)KMns>cr2eP%?@Rj3M8qyA_SmVBz?^;5?*64hL;Ah4XbnQM;fW$@4Mi4c9fQS2;T5$ zwBW4Kf9(6l-)0}&n>G1+&1#4af4n~o(t>9jQo(lsJU1Pl9O*D(42$$+wXHrcidQ}? z7V0bn(Ks?5qA41iGC>4S{yuI%Jn`ShUBDR&88&3OKkmQG@{C+eYpKKTkJ|`hWYziK zNm2g`j=7K79kP2Ib1#J8Tr9bCi2cm#5LG^_m4PY~S+kvF_wR01|Ak`)tMiAGcua=U zzNUB^Pi_{JurWt`LGDjA8aAh& ztlMLG*a_YH>Cp-NQOOrN!j?kWi6*MWS;0%i#UEWf4vJu1=o^kK0{JBispR?_E6HZs zz|Vyd+InN{(oB-7&?V!Vj>I7Ox^R*}moP3`?dg!E9PcCmm%1h*NWaHnXV>rRTohY)+ z|31m)=b}Yn`OhWmhLa!aqoyp;^T46#iT*Y`WT;3t9$GC}#DM-}i~;EMIv+~3@Usd^ z-N+vdC|Y2vgL1B%1c-#2zjtakZtM;P>>#`Z_MO)a{Y7Mr>;xE+nf z0+Ma~yxLCsa(BI7Sm`6FsjB&MZrqS{rU<7(tsf(7 zMJwrm8Zrb4l3o5zKqnbe6srORKx9Sg)Qrc(fnEV)V^QbfJVK?D3}wUHSxJI`Q2$DU zKp}P)Bx6)f_T@WRG--}8L!3#@cY5<4e+gt5PE01WUEr1L%!IEUJePiNLEQS&5%#C8 zcWL#B2$OglgDVj#hI<@Si!t%2Q?U2J23WvP=a4a3N0VS!J#d(U#SZv!RTB6Fij9nx z-P!QRedSUs$9xvVUW-Mgf7SJ(K#d{>YwMEi?U$v?pwW z>hGuAPhs0!B+MeA)&Rc)i#6#2^AUe1NiP%AN8|=6%G{I}_c-PWJ@KU2>-bR`>#+5- zrEPfiEWYnoWU%0#eE(}PCTgtb2=Rw0XjB)4X}}K5{|t*%65~7L+jcxw;EinH-r$6m z0W@Qld|zsSC5oKiAYWV`!l*bBorBGknFG64^LZ$Zi1lQk<<}xz#E4G;GN#)wdnob9 zepFwRPJ>7o=vsKZd<%jn+@hw07f7w4&+1!OWxT4 z1)5H#nSgTXCk73pvUoct2Z6&II3kU#!KgVxq8Kvs=n(2Y zJ6VOY$;@9mTb+z!9B-w{v?yYei!?Z8Oseu@0RD#U_nxXVB}isub8W3d3h!pqlVZeul>zee`NZm-9opjrg3^1c+^%>?Y! z@s@IQUsmL1GCHz0?}_q(g8t1^@>p$w!03UB=RJi7)fK%_KGaCNnJH4KE72Z3eAjX_ zi;S!*Ggm&+TfUiV9ILBv9X)z~dozy$)gwcck3Z7gE)1yDS0{}gn~B^mPDIw%7Al`u z>EA9bjMdjSjGowf-Y#!|8XEhRPaV>3SN2sJn&(GPU0QBe&mtRI_msbREZ?qOjWx78 zM)>>u@>~ayG@|q~$P{v+%(#ylyQs#_l&QR?@RJ5Q=v2%1*)L-PJ z74P8OCFlNm8j~X6%}nQ7JL(u|rOlHvm~BxvPS^J1?HlhI3926x5h_2E9^f4)X2GUs zxzFWAbocV>Z)Q`x95h05AVX)@-oIncS_uQezy%L6(NkC7yjJ>lQanhwlv6HO1*8H( zKnDB}nUhDqCv)E0AI66n+B2*aN;U8c_-z37LF`Oz-GlNXW+G?h&o{(lkHx`Ar&`hX6 z)@Zxb2{1l=^8(!9qAFk?o#^-y_p?L4ckV8saFX}f6Y#Z>Pj!;RU9|T%ZHKWq?6W6e z341#)0kGMGS6>Lwj0p@^;~Cu}$#?=jRm0r@xN+-%B*6~+YF=busKliEPP8-GSAx@x z03az;%r$_#6R*76kzB`Tea{^z2$j`_n)O@IHMkH^TWS_c+5NHvyE!v9nle&b{S*LC zhXf)VUHL7%?oeWR=H$=hoMH;y44(il_T1%oT!1{E`dt0qIJ#Ch_>?{&H8b*g111Mf zhE$`qaZeGj$o@cgn8!1iqcpXP=6=Y#MhBe%UduONVgv?%l4l$a4Ck$D=F4EmH-QkO zsWdEDxG<1B#_x{Na|cSvCg|`~$45($@yQi0Mx(zEEUajcqoUrieGkma*yefBAejjRO9_?Si(yPjh~E8T zaP52u@q5&7`k*uR+=A`HUIM0nqM5Gcja;m)yyJ;u;;X_0CtX`pp+u#34z5DB3DlpN zshyl@lGo~!1YMo!@DsNS!m5L@!q}4|Lu~?S5<{+&<8@QkDO22pQWBd|(sgZ;i&L@| zQ*wk-yD3v4G^u$hsU_~Qu$0)9kkryeF>ji*+C|HP>(p}HGy{RO=EbxGmoz%};Pyd_ zC4ux(U0gUR!BA8B2n|73lLd+$Fm9QyxkUnCgv|`5@I$e5CoomNFg0}DGP!?5Z~h%S~n7cY%;xj9Fw)j4%k0%qod8a|7W;M1pq{6GpFV(TDo2P z0a;42IB0X5Qz#$tXYqODcGEZ|V*=Wdae_CwRVmny%>yO$^7xxozgXlcD5T0a=c(M} zsnOc=i zLAcOKuh7M#&`mi1o?Q+N;teJjLKUp}p;?SnMZpBt&VcaH1>bA5dr@S`XETK9W@uEz zO;Mu4XN9@s5TW9vrQ#AwFP@tS&BvD$Rd=Zv^%w|Z9ez(x^U>GEHbgEfunpvubddKZ1JMB z9Z@p3RQ{aIt4n|p9#*!dSMfC@tAZyu-Kt`ZpkiUD$UU^=c&Yrg@{Sg{r&kO-s$2>y$EHKp)0W{cm+PX+iT`^zhNGpLYx#e{F@k9||KOO<6%`T{ zlAZ--I<-~`2szJ!dXHK~kpkBFTCCgJ_XJT7Fe-@@>olyA-Gu7&Jo6o?5>;;N-i2jV zyCUB!)~hKL8POEG7uV|#*VD;^r^1kSEqRz$b*6)+M;;9VhZXG-1nxX!53_MUZ#1|a z5tc|a!qdR8(!7L;#@O3N8IGnz#U??krqu8zz9H}$Bk3&)N0pRVh6yiXxQSy4gHE03 zE*iWc0V>-d$w?!=nrLKzHZu=_x7CPfz%9ek#57EJt8Gr1zs#|qyHDnoM`?}mbrOEj6$`aC}x+G z{>3tB?pY>j3(Y;sM1bd(!3}gM@*%Kn%wH(;c7w!g12s>GA`{JKh`~Q91&8r;72b9} zC~Ja;cb%4YF?4p(9dZTP&CDL_1Pwy6P?G|0>7W>^TLEj@K+9PeyBkR>8m)@h$ z+M~46qw>2)jlNeyv{%!h_gz_)Cx>f=8t#QhZ}CBWAVJmpk(7$&^5>iNx*~nfLPbFe zFKm~4t>}|0^n%yqz}EErX(?IGBe7(HMV9dX8mi)#54@xY`jJ+BP_ASywERHO!Glm? z#-`K(PJyDi{(*MJItWd%9oOKeUjvvQ2Nes#Y(@qdEuGP+!465WzDh$B4UyWoZt!D* zYudrG6}t*iFr0oES(H*|9aO+ouUj}=*fiAEYL{u?qf_YR*&36oH^T8|urYN64)i)l4bO|(#aMYS3pK3#4uSn1t#K_uya6Mu8ukrbD#A)&DMR0^gRHH+ zPr1tH492M%OjpACey1lG!LvTnPt+v!UJv%-v`rALPJsSQkTOh?y_zI9oTT)gq|TV6 zZJVTDoqYIbl96GG`PCGQ;S`(q6eMGcqiu?7b&C7X6c58R->d28Xv683-qV5^)52}j zqN~$lf2JiEW~5%tNE^<`de6vZ%qXnAIrH6QlKg>piQJF{{@$Yp^=| z{?Dw@(`r7^Ia9+qGw(Tzj5({eIqTIq+dp%54D$}J=A8`ZUA*VrGUh$n=Dk+ueg4ct z85aCsEd&}a1bZ*QG8V$x7T~K3k$)DV85Uz-Eyf!zCVDR>XDp_+EvBz7W0nb9&gd>KC60h9zi2Dd+CTIFsf3CjcDp`jo-@DfEU*bx9)x9Lh8 zCah}#%VjsUO0=mmw)RDkOs0XCH%Qu*Tgz`(%>FDX8m~BJ;LmQX7o5yp4>uM^ckV?K zaloa%s)cy} ztYdJ4WZAB*7XeyBcA_@$dU^Km>_FV~?ds_FF$8C$;3`g1z#90Dr)zQo z^{D;8(`Ltvn{XHbqNo5X-|al~>yW&|`r6Wtf`T@X?Od7Q{D%jLgj>g}otr#|^{3z! z&Mgkn?PG>5zB0T!(&Yh(w#pU~3ee6>+Ftq5feFJB%JcY6VsGZvlD**)(0Cu~{jRD+ z`}Rib9Vv0yFu`;<(Z1sGFsgZ2qW!;6rqP;pbmtw4aBla5umt18>_1i(8tVT7h$&KW09SUKIECv#MKh3pH$j^ zdY`M>fqDT%Bez(K2vDU>Yb&bdT5(6R0yK=+{A5VpI=m+%*~wrn@u>qGSD~6v0gkQ! zGojDyNan$n-|aHbX|lj;YU||3cr=pjU!Dm(j=I3kI$E_e#LnRjQO6| zar_s>M9BR`F#)7unP*+v-$KP@GD(FUu$1Q7KdQ2*87O8h<9qFe1i z$(AI%j4LvIAUsbdnfKFJp6>Lna=MW7>GtAup)`yEOb z^QC&U_)D_hPigzA?|OwCGg%&U@TLl`rP5yQpZ#SOGWT5UB3ig>ZcScXRr;|U{vwC}_>lw~DMF!`uT>`*Q`7RR&faRP@%-s4q* zczape&$TgZ%Q*anWhc?8c%tF&dgQoPK%P1M6>b{lJmhs3qgj;3WVn6l%*O*Q5Z9&1 z^3d3GTzbb$YWAGBH?&0A>Ce6VDZbRJ5^)ww86{=#-(#VWEJ9vae~v-6FdAkbw7xermXk_k$icD*9mew@M_~A3heCKbCj^m zs3oYIXQ@CsLr}OT7i2i=to`1z9FJPho5DpWMXv3IqL4nTi>_Ik^G{ui+@P1K^uL(Y z^sH-UUG!~RekAHkv{SemI1In|wPJyxj$`Pu?EK5nZL3Z`#UUPF`@PrYtm_9KcddqW zDBvGxVG0li0RM&-L;&x91GfJ}D*s6$hyUM5M(-#T*RA{p9b1wYr+eU~0 z8l>9ZdVRS+UHW0Xz3ukb+17BDYDfE@+pEi?e?d9`4rBw0MQO3&hsRd5;ZO8(ecC6CNgY7sqS@xZH&3BeN2|8xQJBbD^2Rlhd!R))q zriqrjDHa9AyQ$Xo2fJx@ee8SbPIH!f8E(79{|V^=DXsRiVQeM)Iq;W<`?=Aw90z&v z@2n2;lg&yF3esH;4+;^%9EU}DiB^ZjMFk~?C1v%8ho#6qG{;d{?VQz7dE;)$QAO*| z!=p+R4(Bnlhw}4r)xiD3wR+^`(f@>WpHJ!*%t}w{S6q%x8a9GCPaC%rKc6=3{{`ue z>yJ)b&iXjNwSJ%b{H^V3xAa-2>i45>9ROUeGZYq;^;sw0ld`ieB7x(xZqheg=RM@w z*5|#{=4I!7^sdL}{fr@87XvIw))#}2!m^7Yu7=}_VV-`j%aP~v)|aE)Th-%Y!_*^T z;$_tIqhePB{+E+-o=g=)LxL2mv{&ajS)iZX&MPB?kay(E(+-%B< z7QXT$Ilp|^naI@SOOfmSM+56_lj>E$;8=h)46%vT*a!`p_~82%L9kfg{)DUB?>d*E zbM1*p^AFnqGy#+7E@Q{ut4=yBEQGP9v;b^_MbwV4-s$_Sh^Ae)Lk!LtiB#sa^Iyh@qm5oOt2$c*mb zr(|RN=LO^cJefHF)Bpt-eg95P|JC!umOdl-PbX9Fzf)6x6yuW{e`<)-z~AGXfAELy)i76^I4zxoHlkSh{}{26STyBsre7@CHL&iP#Ne6m0_ zw;vQ%vI~{%2KZilpw%e=N2 z&MKJVCkj87{S6Ynf}YYf>h4U8zEssQaAMf6_scDcpt$+Aw$UAqezbn>$}j|nJ#u~J z!7sV1eIzP=#c*v;u3cjqHQFY2jRxQhP@8H@2C6~4@B@3ah88sEodSrrhg2YT?#t0Z&b9^kAf)th$Evo=F zCFiA0l#!x%QIwayL_?#=&uTjRzDTQgF&cO!NcuRK-Gcg)e-(P^pv+B!0Bnv&5RDB- zF;OanWf{BeJ5^*T993m(KA9jg!WYV|J|NcI&z3v8p-js6u4AuWIV>&%$U$ZFU_B}= zWp&5k_#oJ7y$GA1j;tA}xtzZzg`_hc+f#kof)-luQ=HblX1jCe3-UMq%8WSkteKq;xLN69vzk2x{Gn7K(c-f2ww^riMN!l3?6%Z6zqXsP zjN>jBz3o1|Z|I-WU^~(9^(Ti~E&K^Rcjd2w$YoI zP4TmB9+N+^V8kZ6UA*Wt_jT;?8cg2kv=(^sxTJ-I9IsoM(6q06+q1{{_C@FO zU(kQ9_A1f${R7|bXS0bA09-i~koF9UE!j1eY=Xmo2J*v^CfioHh!aMF{2{l?ub*py zKZ%~PQGKVyc}7`ZMPce)#-|uGMJ9%Z1#z@~By?1X=V^wknbM{Yc?&uwEL9ze@SDb4 zqSYRE(WP1|;=PtMJOnezMTfA;O0BKx&?L%E^;-DTFx*k_OXQF`B5acJIp#NX16`u+896*qi?E z$2sK_lS|`n95ppQ;wlL3s4>y^kgLCMkbDQq1G#hMrzyyF1R#)MoIS%%ZZnC-JK-FU zb+rjj$f!`Ld`VzqKEXHtQif}p#4p0EbUPYMpa>itOz<41V}FWO*cY+K>KokSAC>J4 zNmIS0m|rAa^~Ok-M)-bDKV8^mYATZPJ0v0$p>RU0I1yMyxUDctiY+#+pP$)RHlBMhv8R>Qqv%HBbR)E7yH7xSWgv#=2ZDpz)05B$H<{iL(`6_QR|cCpSuRB zWc&6V?7Y=}tU*#6H7*5i@GHZPVS1#z%#tFTM79x}(?6u(98=}Y&Su;F!Fb6|DD~m1 z?}}gP2oiFdby=i2N4|nQueupQRj@Zon`CJVyqJRa{X9-U3KK4%-&syLMxCxd{YD=< zr35wysXuVVi1A@#CpMk~CW+=3Mh?7A_@uOATYKTtr+o_C@p0jjcpKm$R5d*o-zOc2 z2{BL&%4fv8WBgQC>BYkV3}K#72Z6ttWn?fyAc7bd(^P`oHg6eG)@Erle@R$Lks z{*|*o2ITQ{nok{I8vzHdGy$>IaI$bQ2>l?akpiE%RS$AM?bnjiP6a=bKR<=?KyWFI zxKV6~Ek7gN!vP%p+V5oy1%v_8G-+pi$fl?4*nxa#!&J^B-Rr~BWB7C3F)7PV4PY2I}uWju!skXeF4SG zHt?(cbp>hYgWq3i(Srh#nwc>$Lg*&&{z;x^_r;G(l96qF02A0w4kg6e!LIV_!2JmD zdyu{dL`s4{9|0UhhCrSW*f0~BbEwX5h;|_i56VMIXCNx@*!)@&Vv9j&(X)pIZk9E8 z@9ek0xQ3>LJrM2!j>TG)i{nh=zbi;yb07d)}7)T<$ zBZO$^G2wCKfI%542Qb#;vjCHEK8)n+jpRPh0HBfOA1`^@0M*>2m8J}< z!4Ck+WC3&+l@TT*{O(di2MQ?5a>XK*Ab3axIJ&(fWk(q@{xTE)iA@?nIg*B%L}iD? zgEc?zj4*d}7jVLmBPEjX@R;|aWCZ@AbitZ*(?mMW&%5D10nkG1nJ0j5=DNpBGo!u6 znH?LCD<&ATVh@YZ2t$+6g$?B>gu=j5bC-w)5J_N@y$O7lFVw8+YG7)qWY)5%!uVNH>YlfjJ2y+s2!Br2t2nl`k z3!wQw*n97&CiiV$|IM2KNeB=+C}QXxDN0odMY@29R7*grAciVUNa&r=dlBi)fJhY$ zNC#;mQY@f=h@x0fio!3r&f34V_Bs3By~jBB+;i_;e=`^`7>vyCoX`9`6MapS0??EP z^WeRVM6c72fe%C==bK^NeGr4FAdn20;d}#hJlR_OtyiwGiGUAQ2yl}Km<|m$UCfd1 zfi#LYLPP*8{#wk_FgwMF+gaY4*S(aK(1Mvztd2jp9!%32&i?&63J1}oKu{E)80UDU zJ_rXPTDIJCCpsjdFXBhEFIy&Xiwp0t;*}l+l$86rws@o|dP`v-ETkl!G4O|Ipd(k< z_oqGqx@ZI?GC0d)T?u_QD)f3EgohjstG{L-N269Xz?e+&}#lv+@H$3bxq17{k9YOG$L`aJUD~XiwPa*Mdu}h@DavegUv_q zV8A;fXk{`mvFV}M7q2Pi`}sOa{1Jk>(iQ&bfFu0Q0`R>BpF)Xg^mo{DHq5|C4# zsH=+>ydI?RG%5F~FEb=kR1`!3sWf8Q8i-*2v6PEqXrCw`G!u}eL|iH-fh1^^PGk-| zS?#-z1|8v&^7U{rfLl41iJU8rNU67oqO(nhF5snb&`bVaafl${r%^u5x$VlSX;Gev zF1}FpT)52jaQW@|dCUM*<3#OhF zGjlC!E7L36o92xFnJ7SAi5cgYAGR6zEh_g+bCJUJq-xzXk=R(N9G@yZk5=8AYMgjx zv0MZRx;2&Xvho@WDMHC9@cw`o@ZG0_JITz%iy!Y5?jNIcAUsqlElS6O$s|68t7P68 zqN*6(`Tdrv7)fM0!C^WHHw|*g6ew?dexFLvR4i9GM>oI4{c$g9bZm)QJoetxJ2OmMg)-B?V=3zoBu*s+R84*n`qG?HWY9jOD-{yzbUSf&A!n1 zDjBLdAHrqO=$*}mz|cs^z^u2A8A@PGRGDohct2L~fB5eH=QyVwR^X`HO|%hPv%_a= zs0Wy&anWy%-^Kh)GiV+XXzrJ;YYaQfGQsZXB_89z9-+!h+);HMmpS^1_v)7;!|bhQ zpAY&N2=vwqBILRA-U$`BwpQHbRq2F}dL1ft6>55AZ*1n|#tb=VD){Krk+hvQlZKO? ze44Tm?G@mm^`7?LA-Na6_XgYV4bR;h*||4%uwz2CWBXV$@6B_xM83&6t^jKE54=3L z7s!&DD_t3`-|fk4&Uzm)ZqH?Y=GtYeu%k!hOl>?<#jn=eDBLteHVDL(-iOKFe{8Fi z)x(|cgD$*lkm&_h&>t)&ia&q%VCj>7*Z7&mhgR(pz-%DTR=V*rtn=kJ{S|dn&htj> zl4$N{+|L`e554cCC0<#)d%Rz(tu7GFp=I>e6mT1dM5WNEdUjsu={mU3E?dlVw!7u5 zhhdtk+xIyowR+PZux^?9Rueb2fk0;6dE`@D);RCxvo%5&e)QmYdhL$)+Mn-rJbt;* z27NxLx4pC3t-DtYLg6pz!QW$fAK3k{q-A~XtPc-sw83G8h0{q9ZD4QTjrS~zsl7tS zg8B`T`@@fS#ouF=K7ORU^WlMGh^A_t0sH>s8kW9pZc2MM^TUDsc$Sj$gNM)bdO|29cri?%BQ9CT4g(F*c{Mg;1RJ`Y!N(Zg8g3u5%8@#7ka_cb0_ zPLF3w5RHXTugaKM={iVhX1lqtlxZgLoZvHF0J}*TONVDb4vTmY8lp z6U{a+5r@5mVm4wUm{qFF`!MR~6T2>-t*&d(K2&kW>MX>hV~YE2(+Aypo5zE-uIAW7 zYz|CQr`o?=ttj!M=`9tt8?I-JJb(4L z995c-e9)I8uK3Q8Vfsg*j2#(`a@F^5%$Vt&_i=b|eNG{v7TqaK}`r3sQl)Wq~A zVQSK4`$R_8>4oQSm>obFyL9Z9EEm#k{=$=S0!`Of^B8a#Urc0l7{7VL2X@Q^B38Pb zZQR}|yr79q(aqCGO+87m>3ec)j`Z(_oQS39SC4?Qe`}rNU0x=zIxGxc0P8=6t82}0 zGUu`!^1a|DSwP1ZbuwWyRif_@TiTJ@)}v2cQnU14pR4;C{zBKi%Td5N{+{_w<7kG( zEOiH@%S^nFw{^j}v+B!JDPceRb2M(A+^agTvvTvmqPnh(+~u1|0myP}eO-E001aQK z#6{~TvX^h)PMN-hp|PJ%tN-}q=3*r1(O6a8&%oB7>}Awad)IyA?b4ryob9|Um!%ye zxgYqxMG8EiWr3XXq0S}Fyg(Sv-x$&h2X&H*OIQrpxbKY{e!p6EvqDumV-9=ng2RVE zOl-?Jw*$sH`8Hc4Z;E{cH4RA=zpl*J^$Z<;IZ3c%OS2^F1h=u|RC~Co^V2~CAwTy@ zm#-7Qk_aX`hmOT-f49KZeYc$)>tnlm)#Q+IY^Kb4afhte#_2N^^A}=0;c0R-*=Hto zOP-|F;*TdgeTq;I+#9SuUE+U?-7tMT?&^HJtTWkDPTfrnv?YCaH&E4D1C6}HYL)j)h{c=`Eq0Djo z*5h++3or94RQu-i*M58%(>e0<>!iiU4;@psx6xN@p0AFrz9+Vvv${gdB7OELacyIJ zcH;$U;f1V0k>SBd6}a#OgiZyH2XP=)o7SUHV_t-ih94CB$}G%uhZ`-7$JNqEJ%+;;^zjM1E%txLzs=K9?=S|p9rNwT`+ z!&xxha&~u;dZ-Fqdk@*8y4B+@74dlB8f|g;heyKJ72{0Mu;>7XCR8hS<@-gXoY zIj+GSl@^Beyovg)lfw#dXY)xeb%}wkfT24s^?bNGkSkgO;MBvVuCg4bA#@4D_@j*Z z8B(l0#~Ju5<3Y4-I>;3+;q+FB^BflNtSA+hFaaEbJkexyG$`(0YCwA@`7Rrl>lsL| z%YkF{`9#PBX3(Y|qO;$c_6qYLMtsFEuzTINsA4E1WqmBh6tBz3B7=sZZW?@JgM&PF zd(Z&JZeYolz*>P03p~(GOYLxIU>FE1z()&ZCNh*@BRJq%Ft$fTfNKmqC}~?{fX3?5 z$b^UAzf%b1BQWS*2@SW#QG29H0BwDS*iAqh5GvTdxqu>Eg0yIM0xJg&B7V;cBP`?0 zsDvdXgM1KF5lE+SWz26DcN5hjqQBukDrA`k{lq2?3Zf_dVvA}}Ko_}}oVR?i$ASfrYQ@ zly9~_^a*9nSbx6wZL0j_g&H>ZZQ$VhvxNsPta%^C(ugcls^xnswK>HJG+bt?!u@V( zTzDHu#W6a~ekt2KnigV0SfmtJ7k=x&5!lg|{9luV_q?S&aS7+!9-kVEU{&($50U$1 zYC-Z53mtPa2v9fwf^rb&(V^jMGmXC6QgYypU#XMpz=WW5bj`qIX`f(XLt44vlDN&5 z%M1B_m#HT=;hRqS=kLH{*_-S(Dz5gC$2m@i%CWq{$Y#2GT_)}JN;1FhsZcq6-YChK zyol(aHM#f+7l6-P)JZr!bi;hmL07Jet{`gc+2`S#bPY?TK%!%!g0Xr~avGniAWl&1 zXp(txp(MO~tjy+oz%zcaC>fWDcu)CqQPWIrha5{qM^2XWwzZ-6#=9>fzoh?`L^weS z=FD$ibiI}DKVxZ!X}o>Z#o<=Kg(|(N#!9w7)M{5MkZgpk|338>rDPrn{X>3P?oU9H zI`!9##QYtA|>4MvDt^i|Jf*+Pn1wwvmnw~Gz&iIoot z?xzM1W=J?|Q(lI}&_Hnmj|-OylI30N+NaNP^br)VozLFStVW!wzSwd1%bUKM6MqY@ z_Pls>u+nvm6nOcoPV+Op3==4Fd48-m2j9ChmdwBp7O z?9h^9)}_&4+pUe&xuL>KGD=h+IrCujS8DJNKyq6VO9hhfbFkFB`T1}*T6T5JAu}qF zTINeco_=*J9NZLLWCf2G z$0t*ZN1Pm4^iCvzlxek(S1`|hnRr~q8%xKGJUYONKmMs(5H#^8%7M=aWk72PTQIYcme^AG&G`nua_}ocnOf6zdU$2T*Ihq=~iXKs#B_L zr0n}t8n@5obZrW`n0VwPWpv|+`P^Kha`k5e%oZ z=Z{c?6}>&W*a8=is2{m*Uk`B8r!^o<*CobSz}n-Fp|o`8$XF=>`-c=LHy+=mPLI=M zL~>(kCRip>^1f6BpeC&0WuV_Hl$GlLzN8^)JD7NeVi0XQv4ZBOMP% zMB0#H?1HNKM`mO<4?!O=eSM^)4sVu1cOkOJ*0D$4kUsXv&KpL+sj?}}mz5&;fK{ji zs)4PWo&vdlXO7$kT%@-L-WZs;LFtUT?{$9#EeY2i(oX}h)e?hx0x-9e06_)35hHM!4ev&G~|9{bu>x^ZUI*gUhfo}f3@3|x0JeVg9tz*a zDg0h2z?HX03ok2XG7R%OsEcxZ6Ha4EKsw2*k9krcpfe*Jfdkm3GqiG)uU^&r!Sh(I zPxkX&G=wGV5Jd~46MRaR_9QEI4bG|6{MImxK>(mGJE~M?8)3i_s}4hKQ%Ho2k0yx% z9(97!caJB}xGv1{0y0Bx08(PZn4*Gu=LR)M6y)pWgdd{7Z@23uUWe$HiTKZuSAZIA!M;?5ja@2X_C&R zICh`q`UV#PFzZ7e8pjWExV$}D@~I{Ys%OO*o1qLDW8ynwsK-sywFl6nh)@(fS0Hmn zp3$->Ss~C0yCc#ngKWIYZ2*Wfl=a?pVT4o$9^_HaP%gQP1z9#l=&UhgbG7404wK<5*Qv_L0EUbl9myrX1I^~mO zj^2s6p9f+mvzaH#&Kp|M(}1HuMta`0IhQ@h>&-+IAEYqQi4~C|x4h<7RFpcW`|T}^ zS%y+Z-y>-{BodmPl3u8Zr7WtzioyQQcN3d>aeFKYZaNY;t50Q?kRY~nCb+cW z=_{%y#KWth*_QNfCgugFn*1bKOJ0N?e3s`}=Wyb}9M(GyxQEz?P$tcb&|L|AO2Y}c zXpnE#IRw-}ELxb|t{KJk5HRtymB<9gifak{V8Mw`v!)GIzWxXCXYFt9$tarRsVJ?D>jWPHEGvTir(tMjagJ>Ko%T@iL~VX#0fBlV=h zE56jhmiQCc?8M`q)F|gstpm6F)lZ4i_f+;0GwSzfICMWIx%3|KP zX3k|U+(jmZg5BVap^=RXJuQ*3HdsTNok&^B$iWqMV+U$PL8ojryIJz|wxcjAusbfXQczYsu_iKf5 z$EwBX_Eh`s205wYy_50I?A-3RmeGz6*GG3=?CgH0Fx_8|GXC-E;NE6GRpOXA`eRvj zZ(rj0wcPmUstr}*IC}qE^C(r~xJONQJlNapqe>ie_kOGxQzee0yWiUPey%4`C62~> z+jD!n`x3|RqkFqMRQAe6phov#mIPYAeTgHog_mI4Tj@EdL87j?)nrHzROd zk#8!T znO|&0R%}&EY|V6R-DWJAE3Tm;b_f?mjqcRoqJC4Y-Pw$zhzhS$=!2peeX|%c)fv5% zsFJ}b>JIykNnBtHQ~7%2E`c%AgL|BmkO7IJh7_KzAOid8H-V^U)A4@&^edvmp@cZQ zP^ML~2sNkRwI2CqEdHT$6jj;f)55e%X7W)=YA~TjfRLSjBytN=Pf?T?Il;%7@k0fC zOf+hEGZHpHzuLkOxWaV5MT95&R~~_cc(uYb0HkDN;LEyV{XlIuqTAAYC z!nC|c7TG~38PCHrKBX9A7q5MVkH6^I~GH#Ds_D znU>e%H!x8KTaiO1i5~Dos?e-uCBv=@>4u4)m&u$`%JzGk9OjZZL!pzkN+PtTh0H|V zw94vMN-alcy&@z$smMfc!3y=Fc4e{+XA+FWqV!uu$TQi`xMRn;bL#zb0`~NxUQkk( zSKvi@N#%&dT|z;CQeHqzuKz#+ek<~eGxs?}YFBo`MrG8lbG%1PVqk0DtD<;)G5SYb z`6hb#*H)4qIdf+sqGrT|PtN3XAY)%5if*{%c(Jxvj{4=UiT~Lf)-3 zJ5#0%TSk4C)Lj#XZI?vJ*(iHN-q>5F)gs2@2hvvX$VbkMuSogG15w&yQKz?xo+6_3 z#D!P=Zki6paEl8IsibAufxeP+sWt0tKt+~isgqd2yY_zM4RPTelN`Iy zgaB@aE@#Gz+v%{@C=qetMRH=Ra%y|4NXtBveJqpz+p;d@DpX9?;i}9bLix>^_@JsJ zg{??~Ri<@Pf}%=s=BM)L12xGjMVYpYKtSp1x0U6s)tP6KLbsFRkQp=1q`;M1nI6?Q zt1>&bBNGs{+t~^IEw#1C^1#no^Q2VmR+2{Bt(pF!pIHgoTh(5E$ZSl_x187(QmUsP z@`L_upB04Z+o)G!z2C4gNuO|CzuY($hnupg{9g=s4sX{0ao6%f&cE>ET z&Gqt=!$0$-MA(|vaxV*&Li`-#q=ISH6H_e)an2H{!{f%}OoL;@?iI z>5uNNQ`cS(HiuCs!WRRlKmT#Mp|2uEwymwS;}H0i2oTDQ z8Y6}>d!r%hihd?o2(%L2Md0b}wy*)&`o{zXKZpP^q9^$%tfF0fCenkH;^70JC|V$% z%eO*6k0y9?4032iWK7VQ@(C6PY7sDTbkB;0<80yN0Swrw(Vb|?l3p0IeJDmSPE;G{ z5e5gCm+YJ;vX*jGt|~7gE*ho0WThi>L7454GX2?#W_A`mE9Ob?5J5|MC<1CJhW;gTKeGDg`?g6x{QwqfQ>B{pnr;PYG(!!n~iq3yjm z)zGahY7ek88&IxkZGFg1esD55=vROE@PVZ)PL|pR)@wD%oMjH{0cWrgY#eY55rOTN zA;A^gh8o~=j_+?XYz#_LSU`q)uNE|u7Nt`&i+qR1z{F#{=UD?!*syHS4t7|BwNd&Z zv^JN7SZ8Fb1C;UA*HFT45}-QA;vV|TQ-t@=4eSp_$(|P=o_uvyKy_!lIl2mcT|!k8gU!q?f#geOYYO3dlB+rRYq{4Jhc; z>U$fy(yYO^;oJHiw-H8YHqBWhNgRYdn;sY1rHsb{lOT``K+RTc?g6i7$GkqBQ_TCo zvga;M=wK;1Q3wAVGI#vLcGCq}^=4`_-3(`j+=GuDKNz%jIq&tw5B-@^tYpLUAjW!9 zkPLjtJ`#)$f3_3wjqq8D&+b(N1k#%sMn^C{zurLU%%gOASOEcGjQTEDD1}HK^I1}z zhE|Yj`DBVNl)VNf_X%L8Z1Ri+lxB|;M zo$L?eeoEII-OQ~JpYSe}2SNwJ#y&B}3itEUnfDSJmoPRfIVD(eJvn8g`ouR^h~iH& z&}V#^yvtY#U54vGQ%6#esbE1*9tNZ}JQHVvDx=Xt%Y}}~#b{!IQEJ2Vu^tugEpc!g z+fSBnK-t}^cKE^}1}IgnL*`M7hrX9T2(OulggbZcp@F+!J&Z9uf<;3V#E90(N4889 zo6!=bJ=j$wHs#|m1UeW!&_HB`2=7>nLI;7A8}fNDmkOnUH{=l0#G7w(OJQhS-|`K& zLLDO8$@&7THZe3`v|s(IltCW@I#P% zf{4eszqUWvW~p!nG=UKK3A6mFS!ap&=c6$c-NaNtYZ-b=jejnoX|mc1ft zaMOU;tCFSCi7+6m^BuOlZF9igjft#&ikT$qx-1D%_10jVrfU*PlkqUagCj6}bj*qlz*7YAseT zbjDK#_M9lgZ)v6vmW+k+d9zc*nb*6_ZmGbjLL#maa-`zl?UrqJiyGC(S`5G9_}xuo z`1-)yX0Osned6`u*StHMeOShZ-`q4?{kldC`)(Rx)vW=OzfFYyft$wJ=+3|3rZH+P z=KSC7rfIsHIrSg9X}&-D7`(Id%S}UPv>tl!$2{ElmzyS1^~VA_sfBv~fa<3C@rrA- zrB`v}Q)1wc*BGYOevuJm2wCIB_}(<#NqgDP8SVEL*5_&NkMn(WLr3y_EC^G3wubO& z2|To?dQzVM3f9a*@_n5w4Eyn_yC_xbRlv$1_KOnIyQ z=R%CYDJZX@ar^AX+E*VZ4UQob9fj#Nco$`kb$322)BBo>HfQ!t3i*ig>0`M_TRW2BDi?? z?N4L;kG7wD8@;TTHp11pV)255I=I`k z)ATxx#lVr&1MRQSh{I$yWzWwsX|=Gfp^-I&&BsQINK1{pK;Yz7!RaX-JL zgF~?0)ERVRu?S$=&o5btp+Qfcf1F?H=Y%K(3)8S4|GY^#O@06LsQ>o<$=ZMad=-sA z(EtAa(c-`Z<0LlOF^$tGv)|r7P;+6JvV9K9WneL#n?{e6$K@afWPPk64XWn?N<}Kbr*TUJC0`(1$Z)>k2!ibB?N`$P#Wn z9MS8St6=90dP)vk?34g@u3{SWlpK;rvw{6^IY99>Xks(^Au8Jgm115Wlcnrs3)Wsx z13r#{47P+ePx*l}x6zlxLNiRyyL8n-dvLc|=`FDlRl?{TC>_k3UJFE-+!T6!U3*ph z^{bPEYndVs69}+xjA9yVYNouJMc{m(F&E8F(bO?Svn!Lk%ST17^H32i+skZ zl7vGB0Cw|CBeJ~e(eopwaoeo(v|VL9m{=RI#Y$bYoOu!v4&mSe>Grs=RV&J96CN_~ z^|PP|KUiyBBEetNl1A7Ns`QCmZM`7UN?88d(p$*ZEPKJ{Xff6w(LmX20{oj0iANF}=CsX9!(Az! zukMlTt8$T7txvcGVIQfbxrA_7(kYrTuz+%FfZalx{mkK~nZBel_nni7+Z;pi zEsstW8^U~#FEK?C00$uqZHej=HX0JtzuqXw>iA?OTg2W`vkz6-Ao}$-FLq41O!iWT zYQG4bT`9*jkRDPj-1W@t-bLoLqM${NJm75=@hdB&UA*L(r^&HT+~cs%{Gy;nPn~{Z z8l>=mvw9`%*^~US5KLfY3p`yIR&*xarz8vJ2{g1_@HXPtWf@>>8nTlc$X|z*Ww_1j zhq4r9J=Z9^hem29sH9?!r#U7U#TZ`HuEIPYWCK~Em?w$e{&Zigu=1zQsX;t~6T&5a zygyLo?Jsw4@bRj^y{io!J}Dp5I_;$QV(Ay<~agSkpevY)Na z2VkMM$}QQfaVA3sTy}`o?&fr|kG9qYdP$0D=iZCAIzsXGjP0d;k$z-6>ET+6?_jqu z!;s&uX%WL>V@bbkOs$cwDXPYP3RygS5eZxFoN}tB!);`d-c^jYTnUp&=YSu2Vv(h< zG)E_0Su?HWs{AOM`EZ6Fa=ooE+t0G4@h0jvmSP3XpATAMV4s#&k`cKL=&EQGDF^aKNr6woss}s8FE-#x|8bx zC~G|;9%TE0IN7ZhTC4nBFv4~1ag$o`Tz*R0D@Ij&!(9g!;!ExG+8W+);cvMiA#O4d zLEND5sfEs!(vb_TEHyM2J=zPlOS$IX?csh|#v3E?E zAx!epweg7|iMK1D(F#fFO*o_l1RcEW+3P~fa@jh+I#Hjdw<21{I~w(VJx${?CM@b3 z6BUYG#-5Emanrh6x)pyey2SrM(MA4!(M|tj(Y^Oi6y2-;WYInKPZeF- ze^_*L{z1__|IZZN`%V9_=r;YS=xXDX-#q?9(LMJ+DY`2x5C!-DWkuKXKdtEM{8e;g z{+}qiPXBio-I)IyitbY(jeoJ|x*zKLZ&Gxv{*NiTcK`FDEAo$uuA?W$N-X^EitbmZ zqf*S~*OnuT>ba|&YX9Wu`G-yLzy5^)D*q7r1ONE*mL2CdtBmX)_($YE|HvLc4E!7a z5bCA!kJzLB4ZraZLn{9mjr@&&IQJH4$Izb0K0m_SEX-#`OS#5cCO3Y&9iF&2g zWpf%rvCH%wXTA~9Od6V}p>&U9X|T=GR(CwVEc=ui&YQOc*i5jQJTA1&B~oV&J-V0_ zPXc@S(O)}tenPI1tLKWi`*DibzB&nCQf31hT38;KWRU*rT~y5`Vw`w4mThA@f2E@4y9eeX~CxLO^JXZ@wPCiH^~-u zNK3{fij!A{gyhq$;5Q&4VB8T>;ztMKkw}@>3C8gC?gTts28%h4EF#E}7mE!c62f9E z@v{4Cb%@{A>gsO+%;#HPLsU-^aY?x-ezc^Ps7skKd@8Fb-Qt7aWtb|9l3vo_q}7`P zPRlW8b4&{;%YyKeokB%6v$}5>0)%6kQ>E^gjsd|&{#_7PYs5+#9R(tqc5XzB@@tna zB{oBaB~;M}EG^7fRk~Hie{zqxKk)=NytOZESW|s3Hh|%w>ZHQHX@t1gB{UlJ$j@E`iM$GHW|~X zB!sjlfkz3)|3V?8FEfa=8{e?7Ba%JyAYR7(nZ{WU@({>fw865s-_i$Ol4=Dw;^X#7 zh;7sKeoMcsvQI)7>DQY^ne>=HVBd6&?2`}~X*%mZDhaVpwU>Xr7mFdY?d8nF)MdNZ zxwevILIxW_8KNiGF`PQ`(x>N>w8#1ixGACj>|HEjuk|tX2>$sY zf&PzZyD%?4E!ZYM<*OUMDK*(BsPpWl7DK940zq)GN~M6^efM{)&|Vu7v(TyL@c7Ch zTA1!7Mqb=WpM@ci$tx88)B*AiAxOJ-IT}jGuQ^xy(Uz%5qh&9WLI`Lz^2c8Ojem3x zhsOWLKaf=Z5xCDkfV-bhB)h{50MzS^`#>xc#OWQCe~`)54u9ky?%27R9u$>-JiA6j zv>#aTT!H1CJ`(`5vOqM$TX@Xl6TWoifmHr6xz9f~dFdQ`2`x*Q^XvQkW8fG6_(G52zMc!8E;JrDR3 zHiF=j>^&%L8guH^Ibra;Z#Hb6z$9 zO*#qulv#eA&HDJtFGLHo1D(7CQ~Df?I~96#yIU&d?L!YG3!}Zt`?mU2=z$UaF)1>o zD_&ck3|-Y|qe72{^ow7LSJ*3T=+Q}*tA7KU@1Si}A|UP1P|XKVQmkJI(rKa#5CWk+<-hi?G|s(!$Fj2w zE3QdCMC2T%y7@Od(TU`65yJ)KU;N|m-25Gm3jY73oByBVA7Te~C{dD_w;k{?6 zs4|$J@Q|eW%xiDGuQ|0oKI3)qv$^#s$=HP?Gru3pO3mL-#wLGIrVgiGD@3VTeuABP zfBEo&(N^nqqC}(_lk#kSuCBdkZI9lgAA zt=UwL@eYFo!-;2={eg>HBmVbyp6e5uSza)xxnHYzxSj}fs43iL49a`OMhpp6Tlugy zd`Itn{^-vaYJ1@h@jnnjO2>1N zZ^|QqFKt}DJUsk8Y^7r@sqkgT){B$7tT4WxGY5I!8&A{yXf_V{@a4zH2XqgXJ_d&< zFc+L&!Q2?f2~pWb?i;2TIH7ovz{hm%!%kd{79lL69y@rhNL$9O%p3kXjNNoh97=S? zCcfxRSnhX1Bp-DHD|mrQIAn;@mLXKa@yZt&yM9$t*S$c-$DHL4lNBO$vQqx%$qM9u zFj=AdyUEH>+8-w?jsJeKBD3y128EsrpVqtk3unklDw3*=>yRQbLSopO84<7`D7B>l`etAx!KkEJgn!2UfFPQK`TlQr&Wdy! z1eit4T@^xS!&9flZ8`!@zuCW;RJN79ju=nXI_Z(u?qT&r(ec;KB;WxqgqH{3z8(X; z$^1q-2rzQ*j5Uo$j zB2eKJwD1`|06eO1+ogfht?yvc>@2SOv?N^ek82qop()_LCy&M8`?tQgCLyI0;nV8)t?_$<4#q4emKh zu*>qyinE)hiT}R*(Z5m&mlL-xWiWgtPRIvQ5Xr@Y1aA+w*j91={klbB(+e| zTDFI$D&Xh4a}1735@_UjTL}!<=y$bj^l%f|Iyf40Dif?3s@62UCr(O`xFm^1N%i*= z?_ybG!h7<9ZA9uq!P98y>*YZ*4gWM;Tz%N|W<}5N0Ws{dcQ(WPugIhc1?*~WLjUQbns zz-0;qG70XlkZ38l=?y_h!>o*S z$vm?APVSMMd6z_+B-L;jy@_iWO|^j9r{Ebnr=5Sy}DyhO<8Z z`lZKcY%AXxh{32=>Vs%O*-HojuAss3QbS1jJD;PvocYJ z0&30!P=$zl;ENb2hZ1kz-bCZWTv=DI)9-X7fqIg07_;+qL0l|D7uc{|}pQw5Z8!jZ_71o~7gqjaxARFxhK zJDc^ueqe|%{YzeRd2Xf7JIlgNduS{{@fae z9KCexp-4%Fb@{=nB$CsKOE$8lBVr3lRl%Ss+fp`xXFfXY@S|j^$fP`A%gb2pvzeN$ zE{#eI#i+ZH_acPzp85e-eI^X%Gq|HpzoO>{?7ZWRa8_VUsf#LfCDLf;SSZd!hee0; z-F-DpLhgND!{264F^tj`ys%Ms5z?rh6CU2em+%CEja5%=8>A%Nl^`^K&D^x!Ae3)^ z#!^5VkO_^@XJubu;6y$R2^)^mG)nTwrdL%KfhjG%vLtM0Z06MG*6Wo;s| zqGGy2mgXG-1K2|PluB72SYS?safcl`-Vx_JtzEuWmRB+_>EATf>*&Qw!W!B}Ial7- zoV`8ctJ)vNc=Mr8_3eZmAp%Ua_1599Pusf0s!cDZKj0V6JX6aSmdQOd@yK9s8JI?bZKDMbnXFemyc7Z^5D0DebX8s)3QZl|u?#YNrDu2?l z0b}Htyd-N*hJqe}%~}TbNP1R0VcD=mNbbu07P7q5PGeQn9~s8KJ~IjZt2X~toByiK zf7Rx{YV%*U`LEji->NnfsXT-CAMy;E%~Y=XzwwOAnqj<}vED08Ku@yhex753zdu7p zHsh$W?EbA`FY%ztJ8vl2M{ghx>9Yxp7Aq2ShNBuQ&z9&EHkh@UQTt}G^mGZuTl4BQ z5|tpfldWdv4)ahei%EH&MWbj>q7;3z`*ZH4hGB}UaMgtbd781WIxWjDA6g`*eJQQ+ z;CK)%l`%}cs|~az%d4G>M>i}-{hsHzTX>dJ%0dT|(p)96Eny?={C-a5le^D5Zbju~?lxV^sd)So`(lxd+s~IYjpOpETxuJeUXf zH{q#9(=UxrXi(!}G|p4*HmAHP#IFcEZl7J?ezA)%I$n%P7z?t(R@WV|$U#J%<}VHg zqn%$-l>oNN7@fc@{OUz)ZTr>!X{P25n}rZ{tb?rnqFA~kLDewAe6lN%&MwM6C!(l z4Lgb?g*B}7;xrog(e~<$hZXZF6Q`L<-0zu|NC9*M7Zc>z*G%^$Nf7LjGj$Bq+k?KN ze)Kr?h8NN}DB4g!ss{uCMmZ3st9~0em->Um*2g$mvlL2?)}$Zs1is#dW!;nRG)s%_V*p&PQD`?tyG;P)gA2D@&ylc>y+X5`=<9!LxM&ctD9;P#C>(|9VlJN8v7i^k5IH@I zXyn**rwln7f=ikB5Mu>9FP_NX^%z6&-dR|Kv(yUxcn5KOJ%7I-OX|VhYZxs48K;wT z=z<64GOERzG0~w`6)Bj+QeDhYZ&}Ns#NvvOUHrtOqYRlJf-#NdXq&I>huR}g6M8fB#xOgxKUOM4+CMA#!pYNIZ}flH_fN3}`jZrV#W8uUxf?P1wrDL$URO}~M7x6apS=Xrvt`i7s#Mc;#Q^!$U=Pu3Zt+!~$)c}HK zKHY?-_58&H=W})5Woe2Xm55lXxg>tWg{m;W9jsF;FsvP*m@3^3g9Y-L-A$Leu}UgD zKWA@#jPovff<6e!-PI@9Z<6UUa?=Rk#o|WL{*gc*2o~8)^5UR@{PVcx<5r;VN;r?% zsEa|r`W+>zMyEyEb;vsO`T1yclCnB-)2@bfWm_kwN{TM$A?L%z18v-)=12?8=gV-{ zX%3W3QRY>1(}TVWVtezbOyh{!GdF#t9<{mieX@Rc|5cmK?OEy6W2X^{oa;7GMGayo z_#yO)m1LH)sgN=kxXQwnd`LwIV(Q$9_O*VVb^f~0H$#Ty!J!x5+P-(JC)^HtWAJi& z_WS+KN4JB&553&o{{8@9BopWi=fQ)U6u1#N^#4Vk5mEY|cx(8=d*}Di!wp5v_rFWI z`>kuttYCZhmv5x?92#whOlYT1VGGYW_SU8XXX zQ7~rT;xSkR`bfHorNx(H*m?U}r<#r2@-P3+D41|gKc5a!=*Yhqg}|cm;fcW~^+{L1 zs<2xnsXnDz14R68=;98uOg)lzqcV#3iNHOzuSQvR{UGm^!z?fA1;5_6DR>tW(j^D( z!cOKLGAR7GA$KLQ)D9NB8mG21sD3+|ub%JSJ^0Thrw1R0uLbJ{&~=dMn7$-lI*5gV!RM{6^kf{9xg9L!pmnc<@3*_CwZK>0OaU-k<#6H^k)5?Cwe&=3GX*m1Bb}8$uptAmkJU z|NDn_|Mij0U*GZ1A7c8i_*+F&pXt9}8T;$l)1MAx?H^+5hRFRP$ka(a#KiG+$>7(u z6P5qKd#2Y=q7^B8mj5eVQSo4=%;mwnUqL3(Yl-$V6U8Hi*f44b)95@>e8B(PZ{9N# zM2a8FSLewXprL8_`d#WFCfq~eMseSwi5jpa@>U1C0_OpRt}>x{1N+Dwh;WLv&r>*rxixEgo#my)iV55PGXGj5(028nwGKdyBy zOgQwDzO1{_maP3i2KCxW2Q$o89}IOy1LuoC8g;YFyVcgjx38lj>CYd}l{1E%`04U} zpuPS3N9YZvJs58Z=rNHqOSyVBD;x{2;`u%-viF)SQeI209%Jl=2op|xa zW0dpwV3)D;9^A*wGt?Xx&oUwb`-NBnkMH!9*=w5XINRVu6VF`1EK!p12L$dVw*H(& zuJw}S(n5lg279;2@!;Yd;v44j7-4UO))FIQkY~~4{bW2eTgg0g;!*^-8XgS}HzZ5`7^(s3!_%4gB6r~U7 z?H^(iPq`WUuN`7C{7*Z?ltl~s?=E8aulUsY>u3D0tOA*TeWrs)sE;QI^`rZrJ$m>L z|0DlD_TDqB$+pWH4k5Gv0cipvgd)8+0TDv)ML`4j#p56ijpZSb!x}*0(_$}IE zIeIhbB02oE%NM&Y+Y&33R~hny=(H+B&M&z};*`M^(dXy49frzXriII*4TVM%z_$A% zmy8O&VQ($69tvP=8J-h>YA$qm30e4g4*s#(QfgdxCmc~qL_)iB_WetPuB?0p?@bwT zvqyxt0oLk5xl=*G^c{u?=+4SFrBW#3-0;r0n*>tedeWr_8{d2Ur6ct}R5dLOoNlWA z0NesUJ+J=#P1S$f@%^WEd{=iH{_l2tKWYzm{_l2t?c`JXsHd>-4Z%BrrKxustg#92>D_ zSHN?;Mj+gpB2PdeH(@&_fjxe^vBD?G=Ct#5ikos({5Zkg?ea|AL z@Y{ZVdP_w}OZd)&dhU_X$hQ&>uWz&7>H4D)EUQ%C43?)mD;}Nb;b(=;9XE)xD%Lem z8DO5t$WJk#WhP?U&*Lre#+`f1Oiy6@6|rcif~l!}2?=b7k??z-2t&Ptb%qgE@6|9K zm^=0WcO)ct;ow+Ee%7!6Ci5-F2DUMwQ$uy@Nn)w|f?Z6hjQmXZI^@ffl}*U^!XJ(5 zc)W8&`|eCink+W6rJ+(ks@(a1z8!7~kXHx@)_<=q|FTtgQu#R;F8A`!ydsuf7Xf(b z5mJl21-9w}{CMyhr%nu~mi8ZcrGxR$yuyV{=h~#VXe;AWOVg*_k>^L;1N8o`(O+%U z;Ggr(L~*FyrU&@(^Wsr$zGod;6GKW%s=miss!7;=L$j9z+ z=Yin;(o`aB$yhc1%eOm(@yWMq9vjVAC0=@6OD6|xz!x#^{yVSycWgc%D@?BZOY(}? zhnk802Vx}&?V(l&q{;<~Awliy71-s{Zt=5#&1V%3|7n%)n9fL8{1`NyFLPWZCfqvN z=eS8*G7}c6__Zc)t8cQ2VwI(F%@-zf0Uc^!rE>CeoA$UUFX-YT1?5)7^}*$pw($%O ziGIhA%Uc!q=XAS3KWeTsR#eZXP!8gz^JgY&C;mx-&Y$3x$P ziC}9e1|z>N$Un6d<3B7f{+Ip1J0NTAgZ|xJ;GpMJ=e7ULS_!@I=19^bf*{i0mV0o` zyIxR_;$*Kn#l(6MLe6r2Oh%`>z^|<`B}mw7f;2T|C4gPvMgh)2tUml0o~r~p+4skC zByw}8mhyaHc&UADd8ovGx~)8m!Ob#tRh!c&I>A!rA9h`!WudDTylGPmSzXOdb(l0g52CGKWgfY;&Lp+FlyD zX;ZO%{Q>dnH)9XQZOR&~(PUGMKxU9n<>p*Zy3T8$8v4z*|7%YC z57kg#lKbmBg?H40Olqg&Z5y`?hZ@x_JE$D`D&yVtS5JB09kDWy&r zdAGF40q6E`*W!xjXwb=}U0SnCp^qk?^dIfe=1oj>*FS3Cz_wZ$q~Pavgvaq?e(w7D zih1(Y-Qve^%QNp?bRFqM}H% z&mLjfbaD5w>q6b8hj!`q+KZ}SdHI*y6hVb<8mt4mFkKu{)fb6gV`op^X&zc64 zsz^X}?l0M)<;t772$mxPpq9ld#XT$oSOe!X!UfJ&x?A&q`>l1jz#DO`Pa9iL=9US*SSZkz4#dJ zb09lzl!8j|N;HT>YQf;mpvrsrH1kdTDw4DAJ`-Q%6_rLR2yerJu9bzs+EvLWWVR6$LpdtA=zzq7-C*}B~E z#lI#ytZw*HRW!C-6%z4S;cO{8=B06}@7e&|$iGkn*5$q6>F)QLcq5AP7CfPD=@kA` zK-n3Ua~mxNq8;SI$H-6Xoy<=Tmw%NmG>V~A7NVs$w`h+AH~l!qvk2YWyI?|YrFh;W zhydGko)k{*QZm#6hl!CYn_xL|Z0WlLIGH!%-C=!7iZ?t<8zEym175o$9;LUsV|oQY zcZb+`Hrglxd7`sxGLjQ{NkFEo1drAkkDaUDrM-1&M5YbBX@UPDDRB5`#`V%ONtxrd zt9y$(mMMGR-u;m*vK{oj%OVx)0uxhU3x8JB^X-E;pv%O6legzJD3F5lFL!1_F}ykC7$kqF`KzL~-pZo6 ztrkFme<&M;k@9y=F`$Pju3M%;dw zGgv4|PR8Z_#Y!*#Mzya+`_6PSN)KXnZSN{b_qmtN`?2=x9AAswI%gr6Q|Fxf2mF>V z*9t);?nb}(#rgt9hk<3rl8HAK?JJ|YNrl%?CY~LZz)jgv4BV8&rBH$7^(F(lX(|ySXO;E# zee;*U-IU}!p;VTh>G)hb1#<%noGntXxEUm+anwLN2*`kS)M#BnQ{qttm~+cnckpv$4|G6wah-1 zwv52#W2@b+hYL=^m-IXaT1tFF6$wX#$Y%@~3mm0mMTGY&!;QKs=eSCv9UBA`Yb(F{ zpL6n@PahP1un_r)b+6c6^X0O%#`WoLmaoh1c^#SOUUe4pkE|Z9Jf19fUv2kJDPG0R zd9)R8&%E>AXojU+=kJbp7FlUYnF=lmalDn!v!wV}$IAbDHmn9Bd*;u`{=FL3oi{*y z@~8f5WXtrzHT;i3GQUUm{jDJJw=IGEzxv0BI3A1IUy%)UP5M2uljzK&e?|6r>|7@z zgX{OmmL@0jQOTI7iv#uLj1AN0jZ|DnrVtF>PS+t2Ia=^1t0=q`_OSc6$aXs6x0Dxi z(f(NtD-F?4wpmItKud5R&t$aG^oQ)gSx4Nl;_5JW6L7Zdh4!s*l+Pn z#u*xE$%VcN#PhGpSH-QRxywq-=>_Gm%bzq7Wh=qG%L7ImEN)}UaI}!5mLOpY`4GO z%KhksS0vaI%3^5H=97oaS4$ z#_eU?A8RYmy`Jct2WGrvf*2^Y@6WMtSZk#{OZd7hm{ygR6lK70C7K@td8ZN+|0G$)E`X;wkxTm#jjZv=W37 z4^hIU$$+V}zN7|Q)m$adh4M;but@GOk_WXnZ(40kg1^a=JpLkK-v`(f$CD|GULa7C zBt5|k8=`#SSiRlGeB}E*l_?@_6Vk7#cGJCQ?sSP1X`P_@pO(dd3`QdEU6UI~qbvG~cUjhNlIA2F2{B z!(}*TQW4bJ_%T|^JQCJh%tab0YTHr+FWoxGR5?Pmb8OWWzNdl^3PU%iG+bMDV?|Hy{q!)`)WStDtYeU<@zvC1{rH6{zpkOt;y0uEy`FejyAEJVDQV zZ$#2Y016|wQ-u*`>X*VO$QdVO+;UC}cAfN9@8rcCX08nLQP!4MGhK*6@X17|mjA$g zhX`R(>1$a$xA~9)h2#9oMMLMOe94m-aaY{%{%->iof)=PvJ!ydVfj5iM19hLNhna9 zdHR8AX5t)#D?R*jSF4uWBv&ifGDcQwwg#4HptX4GQ@YdPO6@VR;2I80pu1K_TH)YQ zPjOLqxgMq=xE@Ds;JDs6axHAVi6!@)Yco9X@N+Xqykm(W*Xz8EHpzD#8||W@Gj1J{ zgJHcL(sOyG$}&HeH@h#N2$pp!Q8{h3tFh&mwQ7m1Z1o#z2yK5hzV5XB#q@6e_Q1_Y zE8BxsfkHb&w(&so*FH0UXV|e~WoN{tS!j3k;h@v*nAcqX?zqqH$;$3GB#AJ7!td+@ z{A3VM0e&j%;wpX`qanOE6MOx^-uHyN1$(nEAFb}qr3MP`&%cd-u)mO%S+KvDSFyUk zRMaeduv|9y;9vziS8%Xev%7lm14klqxYlsi`Eb33r|@v2J(awukN(9_@@i z`f;>75h!wupNV%q-kZ-XJljXcBB$tY^j5Juc6@-Z%8#X>uHkK{CIWWK(Dvd zGgPhli-x_SxU2bzd3Y^ArsEClQOhUR{k1>@MH=-K|O9Qvudaz+w z8eOJlBft52h-pU}Lq$uYu=jeX6-7E@vu2Zc(s~#&{hIRUpeE_6^>CNpY>ES@RJ}UV zS$A8S753L7krZ#?Bw8)X%o~^>-M1WPTU*rSHli?LZ@GB1TD8qLq7ypaa$jt1)%V_r zNu_wltD)6)HEAO@OZOfB_0~3%s*M*#VebU*YPFjWZ^U7jZ6#r4k@hni@i>YM(Lg3` zGnV;;V=I3SS3rm@I31a%Im?z_Oy$$!n=o{ELEcMD(^9gO`B_I3s->=37H<3 zkJ5OaN|<;&bU}PmhQtNiPwO{Bq_9DHVxY7!^%73wC;1vl<$<(6cbq`T+U?rq#NC&$ zCXW%Px~FS3QP1{uZCc^5m`ahun4xh^gTF+p&wMqV@py|wL>LNFNK#1(v7cq_)atfi z?qeH-oY9wvBJ;p-(&D!?#J!Tpl-6Qc@`f(35tC6M7awNHOXa|KZ^NipKBXGC_@UzV zA+Gr8#0R(0s1%nzRc78-J6nMlQ&J;}S^E+nX!#p$GwKoQJ&ZiY&C#Y2L`LsR#n};E z;kGTN@UW$e#Dg3pcjw8TyKIxqHt?K^%zgUkRLwmE*j?^XZ&rXUUCTV-w#h?Dy_J{PH-8SFCYuVIW8cg%>RxqC4`1Q6c~v#^ zQ7-;P<c<#bjr!2nm4s%E=oqsSdWb&2T5X3xeSmZwPx+k1pqKD&da(z})g zHyY{Mfw@)Xf6usa=nCBrnSQlQx1!S;(l^O!Uqw=tkBYsa`JD0MhbMWt_9RIfmA+Xu z-JL~z>6a`jBrirbH8iq*KwWz#S1;7xSft-Q^0hmFAraTYsZ9C#dPbK=JxPcd`^6;v zik|q=6M7Qa@Aq}VoZ@L`&aa}+`-~O~dqpyMhMGv}e!uF5ZGJ~osJ({`V@78&p7+#o zxK?wE;p||e+=nIF#oKWAmTM(k8XG+ktY!_j^uKre4lc2l}U1n{jn- zX6(~D_)+=UNCke$KFKS2tMb^c!pbyn4JTo-;Alj}v(;qxpeW)s+)z68@yC@{XyusR z=?`&?m@PYJj`rLy)L{pZE(CMhFW`_6saCPuGguMkS@w0bvW z-MDjU;r^qNKFlitxvnS;lSA*}A&>S;YD?`rxKAv$4EgMhWE^fX9v`x1r`7cIdV1=U zx^~XnKCYXz>lIcRBz@*vc!sZ=2YY}Jk}|ABIl;51iVGwaGSXl7nA_htm`ZTmL3Q-n zQ0(@PdHXes(eFFjWS;ws@^oB6vA~>r^;uNQrQU}}@^!_Nm(*lFt#_)sa;-RRtNXFS zESm6M>eG_?b0db_3X)GW4IrkG%)5c6k6W9KY{Ao}k1h!3R5cq>9Fdt6&hY8ywHV3N z4A*xN3z(i6l~WOat9k4>FbC7IvQJw5NGC1swAzdW{SOg~j)7!AFu)NKL}~{*B4gAn zf-5}-Q}WX#7)~mIz|3-6B%m}^G@XF@Ltv`2$%ppxvzxpn98e6AM4Wu$)pRvKQnsH$ zVePQrda}9xyzOSj^AT28K(!?z< z?pSXI86uSfNR9|xNX0mi!BhfrH9=RV5y31(Gn=I1Gc6$(WYc6?Mc--1G4NRHCKO#j z3Lb+&$gh36wQjr*s`}=C*j7f+kDW1w;;u795|&bUyraue0hlUN`qVErh(C|L6?pzr z0`8wOouB{nzgB?%0ODI*Qx#F?0rP7>1pZT|U@fO%dfcxuR>1uF-LS;#0YC&EV$oW@1gz!k&+#y206_~KrrTas(<8^K zA58WEZWe`l@4#`-4(BTX^J}ihs}vxF$W$|iQ|FH*oY8=r#a-XyiMZVT%Cd#}RniRN z34!*7!J>ux3={kw%Olw4XMz_wD}H>_kD^%y8s4t4ycphFT{j=Un(j$Y)*Y|ecV8GP z&7>>%Q2i)yls3TpM8EbBw@%WVe5<=Qb$@5A{bQuTt%JjT{F`sx-6y-p$DpR2TS!Qp zv=xd}+tbRIg7v)>ntEf~%8#x|>b5^)ipT8$mS^R+1L5Y|w}ZIa%Dx3%$jIso{_D?O z0UUQE0p0JasDCWD|M9qs(|>u5|2%HGqc=AJ^N@Bxb05;-tIQrE2tLY={mF(R(3W|X zn5?!}$}y(}H=n_C5Cra_{d3#aS>yH{+wn+3DuoVgu}%05B9|}Oo5kPT6X=yYf$?FakE=u|YxvjK zi9X*AK`mD!%9aKLj)a7-GrV6JaT}v#p}?KhAH|_>UC_qF2oMxJB)`>Fa{!iknwJy=WPhS*5N`zaQ=A z5{Bd`T#1aQ_Jft`Rw zo^q)`4-ZkiQK)%pHLCE`5U-CFRP&L81UtdG)CTA)T zd_=n#CCxjL^nT9N&%V;0nM@HO;o}%>`G>FJ=M4GJufeQIfXL0DPMO#hYG2Z0)fg`A z%&^Rdm^+sy_Va7_8GPDyT5Hpv!WBIj4*7aB>$r*PV6U{_|NI(qEH2SZt5<-1AE=p< z3iei?iz+$&8oqr*wp!XHY{IWsx~$W{fUjY?8PnYbF}qS=QVE`D5|V#kdgVhD0KfFA z%IaF-Is>(6VE5WfJA-_!FQh_UHI9ZR7m8``sUI%Hjm@x{hi6? zZ%7D3Q1o+F0>;!+D;c;pbU3~nO=n_%Tj`9p*JJ?8Mm#%+S9fSKh$~{3J%}SNYbvCH zfER(B^lzRDlUy`m^CAFYti$DZ7!&^-+=$fVCQDG{h$~HvHdGIeyF`423@Ku!nf*P^ zhzUSJ#%_GG3EKYGyC`fkvS+pJ3l?UR+5RfOyajxq#`#iIBD>Cn=8x4&(9;YctFGP7FMlCi2%B8eGP5A+wV!v-x^pY*$NedlUX|uLc zG34ViO4p@3zAd)<{y309&67#dpkrHjR}3_82kHn|hNBFqA%Y>CYdyx4Nu*5z!->#Zr&~7=($|wb;il9`J~GlYC8Q?`N(VW4BjhdOL{#*NZBclw zNV%DqkK8$8P5dcJZ;i@F;lsz16R~SNJsw}3uA?3m-0LI0;RI3lMNsz;D_J^TeuGol zp^tszyh{}S%?-}nz=q_Cv*%C;LlF~*VItR5PlFz-aZm4iF5{1A>MBg#n%H>^1K3x+ zrZB1uWW&lyhPu(AF|MOtD2e~wx5gNH%n!uHl6^~TP@C}wcwiQHmdnf0|CbtuNgF281H zF;_(b&c0mK0KL&%c-r95sAE`KE^b#BSSf>z@nb}44S@zno4Ek!{b+!|YTmf-rPa#$ z_m5`~vl&aP)yFTAg#ZlQo>;Rpn=5i1zX}MbwYJIEaF8EdE_I|lqkVPIi_2^36pDiD z4QJGJ*BcqxY+ajJY-#`ut$66#!o?}?*2;VG#H~$mq}r`rw0bE+QEc$$T8HFF-e#=? zIcBp9@#&HTNP)!ZVU-H)(Ppo%LvmT4p2p>se$_e7?JuoYEu;o+ZstgVcumK)hu%D+ zd_QEHnSZAb%)8P(qLVB1C|Kq0qyY$&dU(+?leX`(gg}v2}RL>4K+zp-|4SkDL+}{5|_4MS}h808@R6{_6@gkOouhC>7 z#>I+I*e7tvJ)SzU`T}1D+w;T{UR9KC)DKw?;j_xT%FR(leu0!p7$) zY&739^%Xft*RT(`WvOJZ7X|7auv4EzayPIO=Le~eGSS4?mtGJTyQA-8-JZtV7<;8S zzpTQla;gIXk7BeZBPcQwJVI{B}1AoRvx(9*>~i7w{7|mV-Uz zeaOMz+aXkzR+h%AE|uOJ9=({xYIj#br7AxnTGDe!enCMgr_Z~j>>Xa0Pj|ttFY)TT z3~39fzI#%2)JEAGkt4n-Uw&h~Gv!%FU-_;+Py76ixI0r{Z|+L^Vq(TsDISv#i@GH_ zUqE{0xo-~mP220g6btL--BG)D(5G#f4Ef8wdmTvGKM3Ui$&?*rb|;ll3s3_KviGci99;*=^-ZorRW6wPZlb z{#q*gj@3B%-_o8r{}Juk{3q?H-VPMKrHWr#uJcO<(#xkF;TP4H66h6Lit1B$1 zz?}O%s-l+J{-#89%rZ9-v`vH;Z*dD#SGu5_Up`OK|FGZNOIUmk!k!R~gfm0DPR?c_ zlrSUj4#rJHs}J9-foTQ&9DCec=Sd}|&kp&WAQlErE!>3f@gPwU*NYf{@q}Cch4HNT zjq$`hBSJBbK5N*X8x1BV(3}Vne6JaWB89z8MNr7i17v5`?)h8Hc^6Yux1^eGy0w!* zI6{=GvSy-nIUt;>#zOd4;plab7VjD|mv@LHQ(j~s;of_UE$8^fG!PtWIQ!gDfd}zW zuZb@+)Igf9fye8a+l_Flkl!gzLV;8fT;diu0S(`f-7Batl zS%@b0m8Iv)%F0-Lk;VUu*E~U9ABMuQ!-rEpZ!`Y2h8{!~5c|}IV0)A`t)EX4VpVl)3fRvs2U8IWX(XuP*+_b}b zGgth}GmW4~$Bi~YMZXOtstUo)jx>LtqBhAn!OeE!#=On$3!67F-H5ZVihCeuoVNO? zIWJ@SbTuxoeI&jzCed~Eu29hzh-?1#AWbQBXXtFG-p*HOa`?{hVNU1H$YvGg?&x&= zJk^+2p~LRjYo^gR}OuS9) z-khK(3-vc^sRq_}fORxg=(CPx{_@`5n_0v~xk zF6te}T6WE}X}qQn17=$@4zQZsr__1R56_`CWTfh$;5 zQi)kzG$#?V%sz_yCrrj_^`FAzXI0`0B`huetHkO=69S>11a&ObR^|&w!vb$H{k4^* z1#$$P0WknC;rI_P!P~B)c|@SePhzp=|(iuOL@IHr zD7VzM7ebugpXYnt=zvary{Y@(o#MBNhwrHEWW$NaC{HKXr&wgJtCk6^` zNq86}{=F>}EV`fEYG{2r#h1r2-+g-WAX``e9$VQ6$ghVp_^S|MuQH!LoU)ktuMhuU z)|s;f>He(`0}%bcWH9w#_}kk7zl$uv81N0BoCeSz8nl+8pPLT;qCsN>G-yDZ^EZ-< z_Hx>9tji4!r7ZEEyV@3S0zkel>C)+@gIN3S*TkVe+ngTtV=n5wfJpn~WbT@s6?^&7`=i6e5paf2%b|%?D%cp4*;S8ldT^% zrl>^d(eAmjTMBPls^1IC=e7wR0BW(drX=X6imoRvA1d~zweos#MjL&)C*B)*i7h2z za%a0k3~CHI9CCqaSN5fP4MH?bMq@;9=}YnbBfs7fKmeD|0=ieF@8{FR#_Fu^P>_%%uP)`$G% z0NhyJsUp?F&gQ+wh(7c)JN0+!wwJRf10B20UZ}|Vairyk4*=_?rW|nKv*yLS^MdcW zB%|}QzV*}U9|98vDVaQuh5s~gHgzDQn>=ORCjI|o$AkCtQ=y{5s*PdB6t~ZifQ4Mo z5OODCKwxQazjQ+yQ(NUIVl7lOo#Zg?42DGvu12n*oOlH+2UR7C1eaN%D9M5(-$ru- z22R%vXQ^i+RA#fH6Uo`{DJ9>M6*Hs|6I8tuM_gwX9SLS!i+ZJuS~vsNfpLKonar}I zh%})Syy~_J2!AqJ4l8?2KXL8o*UCy-2z82{V0-OUnz9AcFa@jWG~<~QIF8zQ9;-^O ztFDctyDGDXq%CIf!_gSa6we~cz;Cz-^kKJAbYzFxYAIkBoNY?OqCF^I2hQ(Hsw1c* zMEDtM3y!%9brGh&%Zx!&mP3oOXsJjspTcB9){xa}cd~6LmO|i$6y;5Zg=xBN+L%n0 z&(#mAXg~tFFLc(1!1Px?I}noS3$pvuGR!+%pk5b-KqAFVd$K{&4WK-nh4sxsQf^T4 zgNSwg)+I1F3NT@&km17--mPyJ?zu~>g{UecmhGu}tYC#gaKI5b>QR^@VN8ND6S|@X z_SKohW-hj;zLi9mN6J;Qs&kl8+rBgv5dc|RE19cFs_72!=*s87ojFK;l zp4-sOs3X*(w*6E^9;@=@hG#G*wS??0IP~+YzflJ66(ttTxm{qo~7_}+*r0DEh7ME0S_TX!1YE z>yhpWE>tpo1OWpGJf9^>Evm%#6x?&3M5YG}w=INg%Z($DMMw!KoLFrmmXf2f1bqSI zVdf2rkbVIo<}d(%q6uPcZWb5*dS6c{b-E`7E9&djO6*T6ygg>t!Grj zHNKZ6zrtjEeSz3IQ}3FqADPQIV>oG(XrGn_4W^#&z!t^c(Q{LM21#i?!6WD$V|Tl4 zf`+09#BnsKcjO{r~qwFm*W2A!yNm50M!`p!|1i9_5>ilYc`+=;8*LI#Li zITx#@ePH!2TDxp~Z6|M9W&Z;*Rq$Yk1?<@@tB*Wh#Y5BqCR>f#>De>nr)KAYX-7NJw(lOADy&@@QX1}UU} zP4uu`QZK(1tROX37aI$DPdQ`hC=iE`ZoEm(G4UeNgFpT4xlxukU6yL%`6AU1GZ=|C z;?4F4j;t%{u85^3eg^yU^zOY|NsBh0JDg)FFT47sPB%_^Ihv?LvJyq6`@WT8&@*sL zk(O65sFtYp#ClNdoMcQWMlC&D23d@E(t|<>Z%)6Q@FPFh za8@zS%*{$F&RE0MmVkf0*p!uc#mPN!WMzP#gvoB5M!u$qNpC@4iTfp;X^ zU#+@Z=Z*S{0x&kJUqKzbaj|)h$SlS+{*N`{Q_u^I)`m1&eT@{WukDC3*^$f-)b(en zMeXWX`dcB07RkUXkSm`=kxo3Jy{6oaM#L)#YKS2hvw$IAc085d*DWOD&t=&*q>+eETRsI|2p$DLwlSEkA z+Raa!FQzZiX;N2xW_x%};&a`cMx;(3InvKi@a-I7@7|Y8{hj`s8p;vHEl!IF=TVlY zG-q5WyS{glqHW)-+I1g1>F8k_rBMG4PJo=N`SjzRfX%Y_^?>To@kbvn9j{~J_x-r( z_S$an!vDnI|3Vn_AO2Gg06r=s82`N@`d!I?^Z&$0zxt48m??f20sO>A{+zdd+XN@$ zZXT9>I->(rL`SXezqPQmi+E2(0NStai^Vdb3OZ!o0W#3RLKO=!nyj#1lcG}@=#8s_ zW~C%wfv$ALs!9d8Eu|djL*B~q+HN`my3&*BZ`#NZS757?fCykjP@{6)vK8=vI`(>8 zI@g_g-V+A&A?JECjB=&Jya9aVe&f^siI1A)Ct3-D&dO6zloE$1^AZIB6_IHDTUzR1 zKPE4maB=@Oe!~;ClPYn$pn=me&IRYXO9(N^qJEkh_=Avsl$ScC=Hzn-+1rH2RV3&uNt$x3F}fz1w~5pFT9O4xxer(;ZDv%#!Jt|h0N3de*SdhSnWn?a#wf{4TV@y z6d4)(1i7f1Q@~ZH%srZfp*yd2JBRX2EAtt`t7VwnBG?674#F7Ak056l!r;`(H>!Y@ z)n#0cu>SYvOF3+}b1?-BJ_j+hgpJf_raHQemc3^Q!C|^YT|#A+ znhOG5v|S-IPAK9B}eoya$Q zwQv?fbpXK3FIUKrz47a*D;3REncD;-EnuXF=>2GQIQy8#Vy~t z*=jXUXHKxXL&sRYhenf}`eA*Q^K)?mJ4HB(h?}l^JKy=Pqt9k#45gUnRX7qvs1k(0 zl^_yKs!RMqPskd;>gm3O*cEOwwdDqNdK1Uqj?tEECrg_`eCgMg?M^CgNxibaOHx zrbCkEYF;EW6bqvYdR6X-1Cdb|`wS=}-oqYA))rqm^=hgtVi4fRMiAzirxUWl1@CDg zJq;vKy*LeOlk(IEV;0ThmOBOUXOPcDeUMmnK3`^K3}Ks`Eya8s=t37i35!gcmUhj@t z(5T14&SX6kC9J7A0T*zQa$^sGar=H713vjrnf^=@jrC(T;FfV{=@J~Fc+eb>M&ENg{k z!099!ZjY8RR6+;^L8iL-++Dtz0>pme&RoHqb#JXukOo8o?2uKdp;6%qjV-Ck+5W{+h+MY_l&eH>*+hY;q#MOjmhU{a zlyfK0H1%Bsh~z1V?tF_hPTRzXihf`U)IL;uLOF1s?X#f6z4r2&-mZcj!39T)OBl$I z;cd2eTvZKrg^)6MU|GHp;l5gp`3H{>g{Mx2S1t&hv;ACdKpO;!uBvBg=py65ni^LI zT*R%4+?c;sXnXc+8^g=+{2EHjar~}X%qSHqowA@hq_O}Fg+xOtv&o(vhzJkDL-cBnV14+BHb@b;^I7E2g^D&aYSEY6bF4E!AY!H$lm~ zLX(N*=5zYQrrbXG@Pik( z6BGn)q`$nY8&6*@8Br8PZ-X-kCx!&wmpU=mAIR!0;U9DpZ!cv565y3RL2|2Hq(}OV z;74*&JcIlZ+!G^$HaBU?3$|RP@!1k2d3wgK2v-}&6uM>Zk0-KqWWlPS)=`gphVBD) zte$rWUKuuIu)2h$sMwDg>WQ}Gw1JJS<~lhp-=;5&ZPZsVgE1Z~Tu`lYe#dW8W$&cO zm#Y1_F#QJ1cC3hfmth!YD|Og$L4i=bzqLv&InP4RE{3SWHn&e&`K@|)a^hgl*S6vI zk{3t=@^H9k3>av3mjsA+bCFa7EY!T3|PqW-l^C7q1S=;7ujP6a9 z1T5a|Lq9t&MO2=2JQ)(Vc1CVk3VqT@MpzRst3$tB?&w5gMU?BEWmkTs zpYcVl0kREswXL*sNAsEnRekYYTN#&*77Qb+K4<2=kCyEXs)q-=cHUPXt++&1kIw1uR*f93dUaQi1G}ti4~~8yscI%j4Dj{mj@N<= zYNpP1~qz1Q{Rcr%si!@P#UeqZwOR+hns#p~Vs1J%dd zMUfwt?;0Eoj~wq{yFaWx>OL4hINrrk)vg5^98R4(!M7OHZp3#V&R#m%>xr!0$}~7y zym7KW)Lpw%(S5Y~f;H%+2D91`Q&ik;N$*a_wi2k$17R%rJLDhX1Gkf1;XELA2PeT;-f;)9Q=DO2%55;7zcJ;5mx=o%!I zgiJ^*7G1LzV$DJNgqIti3KPRp0w$~CUa(mEAlZ4UuShg-s0T=N6)$q?oF|-Crehh+1+r!GUNJC7~F}&#Z7V=^&rNTTFiV;1VK$e&ao57G}&r`LgMkK;X z^EF|4@DQIKG!7nW4UXKq>%}c25{IhGS~n|{FX6XHUWAlgZ9P; z`Pie6F(C%jlxu5Y@Vx*UCUhd4yge26i5HDW278;LQzodOdytrf5F8RVfeHC`qKU!5 zxerVu=7u6e;M`M~XalPV=@ya_`&jv*n3wn%g)GwYAc_)F*h~=>Un{00f#M8bcpYP` zlxdjA<1k^qP$8!1JJ|u8eBA95RI^sW+n@-`$}lM`MV=-))0CpKC{UJVJ9CYLb)#ZbwV1w1N!woQT7w4%g??t^0ijvZd z62r#deVk<5lIYMHPtV6)GC_qkM2}lx^5;qKSBB<44mq|;MlHmqXeG>(hFs!9SK))$ zvLnO!UMiY~%~PXw@5RRP!J;&y3M&(D2BSY}p&K=WBYEQ_G?T1-FectotqaKe)|^b<1J53|_ziMI|~!B>&YVIV#<%OcepD1=n* zwK+5+A;jMlnmWgqo{on+(niPZ2iM@E$7D0agD|g$!W8hSukl%r&0}BiqfPIHDPSX0 z=YvXz(NFFrn3KT>$)fsX-cUe8UMHfHp;7VX=u8Y*;(nfE5IJFMUh_VrGX$N2i&FA} z*2wy0u4Ua}`in8|e~8xpXa0d3fFXtcf+2h2MSTAlCHx0vb5PG;du)(DdTc6PjKBBT z4oxFw>t3A-$-Qa)4bo0EHRe%K;&vK|+OM>w7Q#}9o|~MG66)lE?|TERx}$oLb!U!6 zI|I9UzSDHu`5RsKrdapQMLqKZ=Wk5+cA>0-lA-{sew$gp11r|r7{RI2MEbbodpk_P z=2Qj=V8~xu)05FRrF5R%Nola$iP0iSCHG=Ww%SFVjdk))s;M~% z=|p`obar6@HFM?H@!ay*cAYy9U_;EU=O@=RuR5>R?OOWOQhrVailVo=q#Rf6Cxh8; z%e)SNdh+%Jg8g`r;um9sroy2_K`-2)+YFi{C^&wc_Q%mc9a#*nx6XlvKPDN_kZ|BA zrzh>dt3lrL;0Tt_@f|7hU0tf9Hzqp=ZcIG}|u~~1-ee=W=kbBd;xmRAZ*>fpA zI}3BKk;MG-sS#Ih^U|vbHlPqXq7688ZZ0GujaFzl8bY3kyr+EChpX|8w5sGiRSL~s z-;8vil1>L-SnPTBz=&y`s zMwnWb3xUW|F@>vv_pYwzf>?a^b3cYNPpr~(hQRA-bmTj5pTLQ0*#+PrUH<~&8LLm# zV8l`bA$Z1WK8-^jv(c6(&5Um4Af@|MErvT>&RnLET%{IG)-8eTmn1LJM7~G((}|AY zP_#OllYT@}nNUbOlwjSSf+0u%NhvlzB9UkGNzj*UKe~grJ!7~UiMT~B03v(?Jy}B* z2)wST7-iN%fxr|L>|laCu#!Vj6$d5{!62`zR?2PI#@oR_t;kHov zE%A3Tw78{~K?$-jk!MsrBl)L5P1V_j&FnhN2jIaGORi!2DWENNL9!O7n@>tX)TA2z zsE+%_i?oPU861iM#QubIA$FY@>_>z%1c~83V;!yXOUZ-?GHkvOo-hy90K@J8NiVzEBKY>`QOR9&#W$6$l)Dv|yaSogWHF0!;7$l>W3z~2;wLq{Z|MEsL z5hd5nGL~TFHj8xvDk~(}u!h>=wtlQK?Q32#4t3g$zK5~apfmTr_zLW_Kh2K5u-C;P z$^(Uj5KeM%p4V#B+*o<>Dw*{x+r$UT0gBif7EWPWH7P@AxKaA(4GPmioxA3xw#rK* zhzImS_sutxz?!(VD!XP9O_=YjvgUWjYt^#DMsPNxw+NZklM0$R-IwRMzSqm~Axyqd zStvNL$=+s=+f}2nflMO4VYroF`-{Y>`WQnKW%Yc7&)f_bSK7*x>ZYu1iyomvsJSxM z+9tw%rb`i;T6g4J%#dNcbmo~90n~~2)^33b?zP&7faJjs<29WIi9JFveNqA>3HRsO zrJ^;JtUHNo%$c};JpQ2SYIT3J6!qcRfFMe=i%g%<_wCSyyuys__?;wsvI}#Ng%7T9 zalIf@z3-)1OY(I7clFdK{$J3uZdc4!X1|WVAbgnSL1rqI^aejX_=F5%epQnW9761u z@;x=Q*Z5xFs9D*C&-6wnF>^EOjK+=6;tC&KKBqkT!dUwx(FA&BGy(DcyB|w~LrzXB zw;^MyQt_EK2}BmZK8;llJKYNQW$%O`HQZv}e79<-v%s^WeQecxw|auI(5qQzd?RVM zW?rw*d+`4$Kcq&$F(cz*=Ysx|{r*&-F4oXnyqdiKIZMAh=X&R&N%j7hqKNXmyLwCJ zBl`o`uJVFMolF0jACh#D*(8;TpB(c6E>Q3-z^ZRDv)1rRiR=_d-bc!vJJ!4?D}R~f z`NLt_#rdt%saC_^?T#i_o*mp60PK#kA5T(Q0%NZeYh|)IM-Vkkb^rgz-g~$;xwhNB zAqkLBLlp#+-n)o^l+e2rkuCxP(ggtpL3G$>0^ z_Zg%aCy+{1JN(&kqt>(@Y&}F}&A_(;gcvHU9+`-~ht!;s90+1+k@jrvnGRdNb;ny=kGSK1CBlxXcmTNkv!BhF1PWB>%vh$p{@DCe% z%Oeq1W;G~?pV-Ohh(g)-UT|LW?87f~j<}#WAqh+{U2z011fh0paC2Ih>pu)J^!u{Y zNf?Sjm6&0TDoSLoc1mE_qLe}G6-^Wdu6CYNRo!sfQCUS%trtZr#L8H#4BzHO(8-Zt zg9#-$J*eWf-FuOw(yHkpX|mMi%j$P7Boz_5OMdJ{iuHQvr<u?DF=ct^Xc z0uzlW~V+Kuv@kQ9=${Gh^XvaCo7iB;Yn$Zmhd$5^pifncQA z?D>#qPb8%U6muzTL^?LL5Zjd|!V|Yi0n}s-z<#U?rM+fayPJ$0e275E^;-v(f@cxR zwUCGDb|>GGEIxt<=6nI9(!x$JvD#7kRs9g@ zPhRu68C^lUN0P#XTZ@naT5dSm zm<4y)%mS>wkRIU?08w1*+*}a=3x0Y)iB2R_MRvaOWYwmR?(RCJ#>laKL_ubj(Utc= zok6lFgZL?f1r$9G95?C#SpNtm;PMvAr?pAb_51Rs_>j|!Awk{*iYapNpS~r*33tzH3 zwM7tqRx`q}Es`k-f=7p;l*k0O_eq)*QaZ^;T7`rnyeR#I{p+5z$b5u#pYWzWD-|b* zZjd)vxP8YgauV0Ba|LtNb2y4qr|Zk0Z?9-n-L+7sSA>!vV@l0xp85Ckekw+79w6F_zIwcHMDbQ(Tnv~gg_Nw^^&gqrqqRVqT#N+YyCPvw%lj>igr z7tEsSN}xQpT08uT#q^IQ8cfbAUl|sSOd0Xvd%L0kCagA}t`XBn>#RqdfcjuRoXpXA zJ&Pn6MbCP-OvN5lSfa)m7*&%lAGR9PV+S!hoVEbRgCu=YA$ih@&=T-kJH?@XU;ak5 zA9*>E-z@myj#s(9^6Ur8VXBumua)TU(9nIg(+mp0u=Yy?UBCLK#WBc$RkP@Q1x&3; z+#t^Tu@{r&+7*cir+91bR%(rNv(jRxAE)ouyXELTNb32ixmlOJH7U5%TKJ|%tT{|v z(RJVs!8=K}>#p@6eZ7cUF0MQ`NVmyCG#BEU^iePj_0b`Jo_CYNM7_KtHD3QjTO?mI zJQ!M%(iNsK=ZP^Q^KfWF?G1Scmv@v`(#t@!285cteZ(?9l0UNxx?~V*4JoV=?|Xfd zod63ZrD6BDlAw3ff0Sr^yTESBmxIDi=dop?Qa5-_ibskd1eSIqSLerv;H;b}p z$_8{thHC6nIcH;dzD_Wkp-3J|(4$o|EpC2l?r0wFR=e2=MO=zjGwPYbkn)5v_08Ua zj3{EHxo(y`Zu7eO%Od-OahuTnD+%RCB=_P5ECk9XwbY%2HClFuAZr0}nD~M%E zNR|%Ox#=}M33MD+pOFwVyKS5b<6(i~hmCLMa+?2{67L&`@ z22kC9bFazX;)MP0mF7S|rpx|Wrisar|H4_nNGvN2@|;WzvYA0j!-_$Je=*ji_|($8 z!M1sc;JcLu_w~)fvVJ#>%CE%iKHWR-De4(FJc`9vagN*G@jbs4zV999y(O~_Q^8VQ)KZiC`aC zsNZhlGr6l-r)khq$k4>FC5dmNW>-w_)bdE~#q4`l1jKt*pCVfnuwT(|4|?0Zi95I; zn0yHqNorhV6^u~hT~hZp<9QwWA7l;td2dG6WaV1IM7QOhba?>GsRxS5^K%PVPMECo z1bl#*z2uje2AJ6^NcOZ1L<(SL7lAO6cB^^Q*9UMa%6*-3z#?V@<*X1h_?2_RglK_AcD>{_F3J`nM>PfmhyM6>Oo z1!r#djJS0bl3Oah1hiooUxIhDD?l-4ZuWFpA&jz1U^hj!A6t!gvt7uJ#5Xyspg}Ud z&vvQ>f@&LW+d|{;X7;l`&FmMZV6k0Az0%%FHaIfZMnps_FJ!E7Pti(YqgVP zu++082)7cgnnwZzU*+*;w$bU>r})znXP-BkQ>6T=f4bQz$mqE{888NZ4B?Dnei>Y! zw6^yd{fcEpEKHw@Ggg}{zct@Mq_&ux{(v7dsCp^AI?e$Y-awV*M>~+xmTy0%%76_T zN}xEuk9$JvgGJ;jm-vF4m?#g9Upa?3gNa`(Z?)1En@55WV2z~)*p~c@-ZW;TM_jR3 zdX@tuvttxb93>L|3^`f)>Juh~2DLq`E(*s0QxRB3I({mmU*qnegv=1WFBHD7hqte@ zv2>jL$I%ek`P{V&tXyK6D988WK}|R{#D%6j)C!ZvhjshXTU02|u7{{B2j1WhL9r0? zc5AXzSPE!|oR65f^@5s1atMxmg&-zjF?Nw&LRypcPQ;miEd%)1I)>)CAm4#A|9U|H zmY8q_?_b9N{&hUkK18!k&<3vmHswNI;We(Vpy5Ph9kgfQbK9tPtMhfzZPP|x$!J#V zdV&iPI3!?Sn{2V0Fka*y8d222NEIkiE<0dssZhp%eVsr7=h3}~v#ID!JuiY*BtX|k z=Oq+^$ih$p{+tO}J zzP_w-jv8-YgS4LDyywy+Tk-a_)}kOseL)E)QLm^?4m*Bc1IV<-gx6gTbk;F9Ak*Dh zCINQc8EwU9GQGYan2fGLbGrsm+0)7IGU&V}-!R(zk-$m(4Up*rKR2x+B)v4|Os3yX zV1-GlvZ!zgl%U+TV?d^dcM=Wf0hyi`jm+3Olj*r+(E_?@Ow*Z6gO;5(lR0}6v&aCM z=ETc1varmUGcfj5x_k_GY_DC2(cu9g(@4n&sUdioE+ygVKpbNGit#eNLG*Ao7%$TX z+6>Em*=kBp@{2j2S|c*wk|q>L z%O||N<7uO@48&YrxGBj;ypW6Hg&l#!jcRLX;g0yg>$mKLSST42yN3vM*W9B~qE`n6 zcCXPK6ppTsZzcwJLyrKNW($GkC7;Rk_oq!(m02`T-;9lny|PaeoQ>i8YQO@>bbu^g zrWf!s-SUS_U#V2PF+7DK=OJY7JH7)2Wcn&zrsuq_5@lttI7kcMzk(@0#>=#eK-r8l zAk*kpm|tak#wFd2?>7LMwsoTFwKfFJ4$K+>GHrS$(|oD|OuYO=&*y7uFtbWpZKi-s z9{@7#Xg&nUbP7{Ksx(yB#$(_if=z-D}R+9bY4%B&xd7tBN$D{y-8u2?xLcXW(nMXp?Knbtvr#JK^_$X9TWAbd2z zNLq78TQ!Es2VLP`;0O63!;47vdpt9|7?kGMCdAz!Z)8?*gU{@l`=aOq)}bDRv%vNS zxxtJ21u;f4CU%dA8zb`W?)We=$E%VctOBnaJC!Jx%$2gJwr2a;`d^V;Tg~#G`L`B~ zziMBe5m_AqC{J`FAWZo3MEJE(M{R0BJEdZ{=6*bF=sbd|hzehxNDbc92S)+riNfFI z3CmN7@)D`DrUb8w%Tu@*R;jS=JTksYs9S~#oC!1~swmRGV+hkoaIVUY_@+c8yLF{% zueb|M10_SdAe}T!6iOE*JOM79pk@uD&5_4J+hA<9P`YcqTG%$^3I;@wbJmO))K;wq znh{RbNBquRZQ85?_+~_qCN;1YmB3xQ@t70`?jtr@El z&#s4Yk1lu?aK(N91P0rTRe;ER`MV%4E@wrCQ+$)5h(x8b<5v`@4s3=Jr5nsZI2G_& zV2%)Ic4S{+xUd-XeQ$qPH@JM>I;aC|@TjGP>5^8(IM8Hp!d8KOc=8*&( zEkZm|RaH^)xbnTx%*AH|@$AB&jkyIug2Pn>(JNJw*00qDlSAf!i@*rGWkDGas_mN= zh}tx>W!-^*btQ%b5=2+_oLF(#GmjAIaY0FdpB;)@m#H2#%dR4n?)$l7w z#Z7>K8nJM^&4oGdK1H`ECwcA;4_mtqp>B z;%Wp@RmbFZFd=IsG~V~pD1jlU#vjGWXbs+H6Z5MtTp6!c*9^843&~uxEMl;JY1(8R zDJ%GzH;7pB5!`@Pg?aG8No(gtqI&oIB<9a~$Ec0VSo;K5F8T+KWhI*T?xa8Ed~1u4 zF#+N}7Z%drzH`*@vfoV`q(y=~Of=$j^gSaDS0OWi9NQCMH+l~rU_QN484*e zDNZIq0=7MwpFf>HY;GN^a(^(g@b3FzOBZ>yM}+p`hx13RgSyrCQb!h7WscggG1cCs z+HW`iziYuPCd|!#8}}V=$T=EalRx?P3PsVFN36T9#Pl7DzSdZ9Zfsrc>h}puY-16R z?uM4d_sO*J|EUG@+e@(oEEq4qOF>ASc_|0dOut}~(ucCdfjDW#5e-S~3mJk|!xVgjNCQ!~U#;#D3*_X%thU-_eGiGnXXLg#cjqqVr0GiF40ik% zu1>sp?)7`AC*;+!X}_zf&9>~ro{IssUUkdlWZo!_ck9g!f`>tOqPD)_?sFeMyE5*H zTw53)*^7`y)y4TQwlPGVrja*(?Ia6WXJr1xt9GfEWq*#7WA@iSMn_l97)#>>K7K) z@m`91TSe2XnkVn_725vM;e3kdO;OfN*_$OB+r57nEKV1EVdv5Y0`{6}b#r4Nu z{N+`-gJ1o`F844$lvgDk-mUy8|B(G%1N?8R41muksPvzPF~t9R7<1wGFoq_GDn~Zb z1EEFmchBV7@B0W3a38Vz{CCfU=^vhnAR!rRn-AcbkP=e-lV?KxmuHf5=9%RC6UUPC z9$nr~sZxa;5RB+7()3GGNysFpPOGG<<~IdI6TByig_>iky6kuYp_ey?XZO z))6!BLPI@MOZ=e~Py_cONZ2vF$x;R}7~_w4ASDLBMw|fVCOnmyQ0ywy1-s)Ok3WBQ z0+_uQ2cOK{d3U1N_TU^!a{v1gh=|wvHVK@bUR8v=3>QrH*eDg~vhps4{s+ZRca6R$ zMr1*MzqW{9Q{lKq&1$EFA<~?PrxgXREpcbp7G?1beXt~OZHfKk+Hz1B&m@KozNWK^ z{TQP#a~z*WOy#7Qp?P+bVTL*+6V;W+$ATG<@mW%y(o|q|;3ktsq4^C%s6vwGsBDeD z$y{bY-_1zgFR4o*Y<8L-~Bp$yz zpHC!!n@#(+vD0m`HGJo@t{+j8uhFiBDN*iy=-x)XxA`|B6C zW5rA{_|9in#S1e-W}x%AXYL-eBOeKLK7*ox&L=O>`Mh2KMEKS1LwtVzPzu}T^JnLC z_LmDJAxWGuq`CE1+Fde_L(`pF*)Q$Ar4S*uD$vL^E$_KH>b*~AozJONqV(M|{adGU zjU5@+{_K1j!BtWp#72Vhz-AyJy3mX~p!3=5(mh%;33NWM4g;OfPzcE(_y*AVtO9%f zXoz3_04wQ&Xku^oGy|Q_X%h!c4ur^cEmW4l;X81Q+B~iyo*ikikBnT?X)fXRz;tw? zwfFgw&N`n`PxReCYkLoMPZK%%Olb(w613`w^&!n5f_jhJa|cZ#wTz0{jA$bkjnt;zGiwIoXH8VSYC^}k zM?~UM54!nGprToyE_9X9N8ui1EQ6BS86bgND1W(O0^-wx2l2)qtsg-Ay7C!JI2w1N zb*akR|HGVII(eCki42Qu<0_TeL(Dg^@B8f@~3-x^sC3yiBHG4U=MG z?7ATw$-2+EClEBd|B&}(Lgn~0Sn8K+Bryj%#g%n{jTOTR>$=g_`L!=pO#B|na$$6t z$IB+h6%(jOGW>#Q5%Otd0<(rG-$&Jcn3g^$>qkM!EH4Pj#u{Z>nU7@90PzPHKuvWr z>tQz(y~5mC@3kAzDx`rvJ~BXCZnI~(auV=Gi|f%d^pN&(sZh-35&9PtNE*x(lL&W% zNc9sgzu>JbrivsGU^Z1fT;t_4WhD@^W?!9DJ4Hy&#e_i_!BT~3gMlm!S{D8&B}R`H zV`>8{G8WS#24{Z1e$UjRErYVbbS||+u}9!J$Is&u8bP%8SmQhI$dj5E=4cw3UE)A; zUd)plozu=|wzuF;HxdgoKd>ezG}+W}zMh-mVl5BhWxX|bJ&S^qpsUb`UyheYl7OE; zh#^NWa2Ta5y`%nZ`+~SvyAGr05K&>TQ!|u3$Z1BH_^MYhOsPrN3$BwN#*}EeF+4%? zu9k4WzSJO9QuJl<0eeuQrFLpmDbEaF0(gQ|G1w`%$d=;n=zIYZeJp?D=a!ST|GTx% zDa}poukOGrKD^LjEsi;l@VZ&x^v?WAXV&RFI`q&b$yO|a%cOcj?deSp7Xo|mjQ=Ze zi)u#kxLr_ol)JT>7HFPGT%?gun>AId8cJ2GH6l!B@an5uj0R5)Ym9NK+4<|FC#@s= zZZ40jI&h^77#&9f#l)3G>ie4TD$mbfVvLo_H%wQx7#)Vdw*HGRetey`y-(VqFrN!2 zn|b-xc9`|rU>bQsWM6-Rff{q3=}9#=A!=X9lQD-CY#COHxSFrtIGhZvJC@>+-OY%1 zxj4-EO~jHfve~sTm?flXX&fw_uA*vIdCz)+OvL6T@xzJ4)s@?2OIm6Ig(2kOC2DHI8|z_1@(Ys9l;Flpu}v zAX)6vPiL4UcM|!`4^xvll)hM3@*_{KUK$zxmsw7yOD^n%I61 zU;@MYR>uE+S-!IkXkKlmph%X#bho=M5{26=`B6)#jIyq}>LcwJUnN%|G2uPO-ehz2 zD#zcAk|1DqQTCsiUHo2!%19pk=N@8UcJWauUiddm2p~~#jPv@6{;nXh_%|^Bj*kMf z3xhOWpn|B?#NW^Oarm46{1ku*vwq1fG@yYJueQY-CG=d>g<$_{w;g2fDYBm6 zSE1heO0q%kaAN;!t zqBt=b=vt?5Kd@{9nRTFI9m=D}&MAvoZ1q{D;?71fl(nIFg3@?SN1y*}_nS%{&! z-2SY17@QUSqkE0@@jJLRtIzz6vJb9vY-QHLq$RvqG)2_F`zWcWGanv^1oIX~awSM% zViZ;#?QWgxDSqdh2%S{)y{MFGOU$DKRwo`#XTZ-h5bxlww0EA8QAds zQ>3(n#;yGV9gk{7aQ!vwbvI>cOCQ< zQLIR`P@1x0U@(Me?<b)E`=O>k zfz7&U)(@x3f~)p+o>y4;bkY8qUF`%b0*`2Rk7^|SqE25scdu|4wP^!tRj`>4s;_92 zZr+2Kc~HG9gffw=MGZj3rKXy+oN{H1=ZV+}47;mBz(WL|0thR03A*o{up^s2RD0-M zpWcw`GQs)e|tI z61Xy1!oXn3i+P>)-02a@j9eRB49S4I)5`^WKP7Y!{D7P`X>tjQ2JMh8K}u9LsnSGI z%(HYCZtFKgw=qW2I1q)HQXMnegO$?b%@3)svJ<-6;0)!9fW;9?U}(eoGJ}qW5UWVx z0nBJ{Y)aL$-T7R zPUBKeR>H905wLQt-K60V0aGKZWe3^jGP-Yo3%K>vZI+8&=kB;6hD>liF&R258(OEF zhFnlAdHqZiC>yHxamkLY8d|}(2t4djN4)LBl|wh&RFYg?)<@~a3uBC67W}oVn%8(q zIBP|{Q)CEx#)EJT6}N5*lxjr0Npp$?9S0y0r*AH|lHB(PWz)UK4V$!#eRV__0eFuE ziKgW7%C*LIM>(Ktc$(#L3n66JT;fv=ZA69@2?;?KZ(P0pC>bsCvr^~MWkDw1=>{ZF zHuN6uW<~>LLu8tMW{PBMy`I_Z>uT$7>qGR`F%^}`+4J*9rqOvKfr&9YEv`dC0VJFl zsA4(X>g2`lm`)nlteB3&L2`j*B%BC(@u0w>Z?Zck)!~w2HF%-_luEk+m$^r(uu!gg zKi+EZ=ldFd{;_L{rWw@osc=q96;khGpP%dkAwz5&(QS~=>v#0(K0lBf-lwT@98PwTrz2idgalJdtu z+0b7F+4tPXQRC9#ZHiyTKeMcrb3epI#f_BCiQW|HatF$W>)gX&IcsvSq?hvjrWD8D z*SVncZYlN2%^Hv7`RueN^8_p?RCa0@Tj*y`m%WdxFF!l^IyvxkETc?LcjZanjBS>o zq*A!?wIs8nvSGvXgGtFK^;glXcM_FmL2m>T$%Cf0>bq;t-K>e4v%V>I%#f;(qNP5w zH35;Ucy6F&>uKU@uFPIY@#Q$^! zQR)G9;$K$~kAp=S{);MzWnmMwl*g>3Hb4dOIB2hnly8vqq?YnEGI$P0>8(M*E=Bxn zFDM;E`3pxb08|TcK|r<8+Y}8{3&S-cE&|m;QFP8}UNF!tyqJde^9}CQkHoUUfX*T| zh;kDfw1A`Z!Ue5iB3yVw@_$zfG2zt=;XtL3*EjNarI6i`BJ&s;wHMBYj<`?;ix?!? z15xs?Q##BB4gRB57zeZpyP|s)Lo1NwIP z6Ft!+D>zFzD$IP-HeX7|Y|vL^#Ohw^hjmI%$Be|mNZ~<@ z^J!ZuzDB5@bKj4|&ynH-Dl@<@8p{^P0{jn~G!RYd6^m<|~f}G3?Tb zhv@~H=v>N;7@#qDagc^t~|1SBOH>nXhR+avHPnE)Nou%%CdX)7j41!rPDuh9b>m;mVuUY4U?uDe$ z>5s>CRl3s%SdIFw<|~6G0(!OpY{M{^oQ(e11jT(GoI@6CvMD;>j}OPk>|@?Zazdfq z0qHmgfTkpFl5V5myQg7T2b|mc9$>>?&LI|yO}=BH_GxYx344-7 zb1J9%tn=F!$tCV1O^$2#KD8)BzLqeOP@Ke0Y`uT=VkKWPBY?UWnG|qOgE{R{L0+(J z8^Zc#t|J)ts2Gki4FpnmHiqZi*Oww#tET~|O^V|Ojg@SGt05Ts2H5adFJ&7oF@wh% zu9hvw${wyS$03RMRsbY}(@MMscR8@%TXJJ1QD2SkW0H}v)5l~}2Y{<#d4J<$s&zQP z)v!x(T1|HZxEdL*%>Y-!qn~f>-x=ZfF5>^_G5PQJ+5FSK&&`V3{{OmtpWDp86#xa>YVUIq4h|2PDY3?O0vYY08(3SbR+D)#`a;r8B31b{W{r8NPth75Nq0j%MJ z?R@}iDEN7hGu8F;5N|1fH56>w2C#+$zK z22a(&q|TN9B-Zdq>h=F)Si|R60J>qr=-bNUm&0!-wnO3so6qT8mF?Uf)Bf~&HakWE zo2Y!m{Hu$6RD4z>gzWuE7Pv)W9Vzl$VIrFH(V`a$@|-8&OR(PJs!8q@kd4&)Jw$}U{VQ~mS(G6mQ*Vt7*?L>QQux0p%v6{?3U%yy8SH4u zLjOJmZYHSALK4a(UpCv(=GSvkKLGr7mKgBgLLPA?S#bYo>7l1Ept??_&Yat&)V`np zIA+=cv2;h{IUhK1u{6J&QCd3B~H)+xGpV@4|3 z{`e(x*Q~l6&N$jg%fo%dH+ON`B--Iv7?ZSZ!AY4us49Hj9loNBIOQ1=L(~?(6F<8Ip2&djFhM5vCGScaGOr^d4q8o-_hKjSe*U7)Z&0q~ zBZSZfy^1aQ^@BkjiT%yp-*J3Yq;MSM7W+eP=oNe`bdNQrkrJD@><}99UPa3HYk0{3ZK50RsA~37JEO%D@=K@gl_GyZ!?ne>5a;ZKTU^c#@f93 zcN^JdOZcxmq^JwHyLD4<0d5#J|LUSE!zMzYeBhL8x!8V%=UwN9QqO1d^lO6Qb|V8s z(c3f^%z>WX|+6Oi}nJjmXE2=@FaX|?~erjci7L$c_orNaNnt>50xk3jJG zl+1&GS4_3Di3+FLz}K&gEokG!a2S}OaB;* zW_mypNb-sHy}cU}^xwPn?Y~3R;{YW_{H4Ua|8gsUMA@H&D{9Vxgx_!^`+>wi#=5F$ zl4qn1&hZ@lR)CB>9=sB_OFYF#(iqc~@MB%2a)7j<8|4FRmb=;!3~U7`o~?JB3YV<_ z^6ycu?*Y7=sPNkk@0|~C7mP&!!WD${f)0MH3+&p(=ih-y8V9g>yA9Y10E~72ilhOX z<<9c&|3BNj?KeU5&ylqM>q?xrw|7d-D{``ZojiB$xKKdae|+gxcGvXzv5H=LrVaT% z(C`z5PTU7dDgTURN&!7yLzkTA^JdWsU4!*;QvCoNDSvQ2JyLL_EO9LRSWuZq;KhfH zNQHpujS3z;5U}_9*ujEFdP}};yA^tF`%asWFtF#kd#138-P=8LP5gKT9;?tNajEJB z)yZ-s`yR?=Z;*2;QZ$?71=DVJ{c(tP&bzY2Qia&OZOQ??z5I&m(xh##ZXWzPYwykI zwZ8gmWUsROigZfZuhjhLmB-2lMNcc-`RR;Ro{GH0^sDRAK+fK~4Lu2gmroiL5K}|V zGaenomnZaa(c{t&>JuunPoxxecw}DW=<>*}R>Ssua8krA z-+ooGCGVq6{&oDJh;aL>*0jPkKDRf1THFEtlb5ppUvuS81&%cAZ%6uHrA)Q{cBCiS z|8b;0_Wt8YEB|q%InItW`S-JBkvHgd@hQ_N?OeQ5gX?~3+8`P86kvv@h8>cvd~d2W zi?!*5&f15OQM>BCzW6W~a@{RIE-BmJ*0*G@D4Wk=edSGE&+Iy@qO zV)XKk50()H#qAb?L z0Uoof+CvGd&f`xntBY8t`MEkwYP?qHkZd!o>~vJoTW_k9^X^veS{ zukWya`vV+DI<7-{f*};y0Yw3xm43ny;7DfyNBXihnNRg`@79;s)nFlsY{`ZtN?EV% zxlh@@RA@XpBu};?IreOK4xgG+{tO*k&+_6C7@TjTeCb`FubU%5WwTZK-oke4vK}T;TsAR+{BHHhsLZJA>BR{sFB80k~ZH-?&_27WvRw4>r^jD)R3gXt7+iSQepRD5__`T)>?fEpqnE7war4af*j0}2IbKuNs+Oar3E z(}2Q%(|}0(@id@5-nzx;*jsFWrvdSU`~V;k15mtw@E45dPe>^T#R1QLoH zSxw>-|0<+7B zJimDIyi1WQ?Yj4aB{&yZpqgZ^T;mh*PPtx=SD%K4qR1)$ zm~*hH?YYfj10b)@sStkSD%E6)XzFH!gBACfp-C);f?7 z2xp<-1EIl@8n%!0u!y`z$xf_!j~Rs=&-*RK@L*!(t(;a;t*cE|Fs@;a?-R0a+()CP z;k6~mj9Ok$48)9Q!dY4-tq>$hf+-C{NSA=8~`{ob~YKzS(o;GdS0@5`0a)FEciKx2bWfbim>af5%SiN($4hmZcJx zPwm^y9p{=p-3z?|%sEb|3=UHy?gDcT0jlS}f*bF4L5a!k29R5ZZXUtfsw6l6Wx)5^ms`AAgG$uG zJHa$THl%l8-RG!D+O6G4q4*0(eT)D`ENk8BWZ*DMQY zb5pyRWuOty5lgf!$1?B?u1H9Jt_W(dPn_P}iDs14Y$-I7bDW)fLZwjy}h?!gg-svM*mkJcij$wbrpu!#u%uy4{*kWN0X$ zTY%JjyNLIM?wLV`p+l(-*Q8eYurbM#$GbNZ;1=FyKBkMa>KXLRawGKYsK zzERtE;c5Lk+yzNPqZVup>DbB}5~c8xJBD8}%<8x$TQ+Fj?tRJB+~<}W*r4%D_>v_p z#v}8_kJ_jHOE$YFkL=nUmEYu-9Oj-<`6kTvRUwj+lq;u!#WQIdyp%jaTwEpmQ%=d#*p38g&Puj8ZB*;R5WT10>c>0m;K?wl} zDL>r(I^cNO@p+o_4fwp?C09B^P;2?s&P{_9Z#_m^mWmrp8I-ghbWeHhHT4O_r;CQ^ za+?cyO@6{rwX02qT3;QdfBEYS>tPU~lZl1-RP~hczg2@M5b2pJEBsq!+G8aN)L{Oe=?KVUAfb>IXPIYVSL_8v z|4xmB0#pF!5<%t{JDjSXo^3NT`dY~->i^EggdET$p+7b0;G;Icw1$w9?0qEppKB7Y zh=ZaH2B(q=K40>W+4~t?M=$;oMNhQU!5_1C{PQ3|(1M>+=4<(H9P;p2XQQBMSQN`u zV+WH6&K!@oUiif{9vzPfwVSKwTJOBaoiVM`y-u|PKKF)o|BaM9{hO3LgeN730Hoxo zhl8vDDVap+8S#s4#YX@sd8U#OU~OG>!Og=$tp6Y-bCdp^l#DSa&!FfRxEx=FQX;A& zb!4Bn-kzBwynp&acyG*iaeb=dg`b5SY%~c9onU2sjwB=r7JVa^-UePdW>LyT=4#qy zC|5d}Tu`YI0_2GDy!ShQJkwfzr}!vGai7pY@lihjOSW;dQv+bhqQr`Jp#Usdm7JZn z(1*f-c*$2vMq()pKYLeXENIC`vOH#ZPa|=_lWTYW_)e}GaV&k#100<8cC6vAvX3eB zM3ENe%)@u=91>VQ-0}ve@nN`mNcIX8r*uQl$B<0&BBQ}rzNMTMxb=lp6p?vmY6Ic^ zP=2nc2`BoiQvuu-Jh3-aI0|n>bLR@Ov-r@^eO60)LuY%(k0k1;T6CF13-N>C=FLs3 z(C4R{UWaN=v5-;E>u<*#@SI zc`kFe8%EkFa_h+t3#yD*xqVJ0#5v0wJq#B+_pBnMIwyLGZ*<0YGp3Gy>i3m?0OJ~h zBYPq~H)YXRsjxSGwk7sUp&H^oViq3uWTDO?%7xK}+N86w6e!cUBosMhehR321q_mx z*o0aloOBEj;?xhPWqy$~WNJusiR z5+b8EnBC5jp28QHfY-{MH^M3Qzfn9luOCQxph|D`;mP{jy@+=s*yB?Gy3GdON59^> zNXk;LbW0x*sZVP~Fz`V+DDTy|%h3h&>TfPU=D7rI32^iStt|__`zRAZZRpToe-7bl z^n-Lo`g;97$@z&pUO~$&M}w*%>+x}@X$zxY41-FBFrZWx{iBGNkZu^zB<*6^Vt$dN;T!FSmNn5I8_fYt`V|If5|nph+YlrLvwM#{Ehz8CMS$$Q?z-Q7IM2<${{fse|Al)Om>Iqd&n@I5srd{NbBy@s zuA+Yof0&Hn=6py}K8&C&&f#Sx^qCt_ZeGIBGaS_tTZ;*)jW4Y z_UlvA>`eo5LwKeC*K%_@9&IrAudlik_$r73!~wh;Y(WMv27rKuqy>}ntCV@z^n^nh zm7rG zgh7VWnwK0W^5x<#7-htlV~b_H4wIs&RR8vVlLBi4KT8Artn~khpH)mCQcaO47v~xd z=KcF$;$M!hL7-F+1Ox|uh7Ne0B2Y?sFG3(R{1TS{&MGGa^0$8n5J(H83O4@Z{lxs+ zC;sa#_ct!&AMd9NSwTgBPpnao{_PY0xkL@Dk6Rr2QXq0m4$p;bEHj9ciQ@-mT4(Pk zE%J2lr>~QBYtDS)iKkW;k|;-1UT_19?ihOhOslR0$832Tm___yDqB4<+aS51llEz` zhk^2K@$3=qeN+$?Fr7BrSQ@6Ll#^D02P3KJphWwEs9vj(7~*>rpG}d{3RE1o@!XS< zk!HpVGMvblJQKoDdAKkZ=@L{<=vcsp)7Geb(+1)mpd;z$2yMSO;sr!#zS?R=3a39-z&~2+!qs9P>rYBN2ih z-kU=Jt+F9(FEx8?KY>txOrCNyWSdd;ky#NdW;A#KGIW3Gi72pg|6xR9{t%BMnaU7P zM6co^4-(v#MtbG(VI;R?0mEA*fo7?j(fVre*U^UkE4F}797&UGUhi!W_{440sq|y| z>b&`)!J%o_>H(ivqe|kXp7*2~aptWaU}r6PJf8uJcet$@eKd9>D$Vb6`Fa858$6y- zLCh9Gt-vz8UYz!PV_jL{ZKQrtI>0?i$&{px5=miK*+?vG-gHJ4i=Q4$k&*ti>#t~C z^}kt3l8-4vV!{iyYI|+_U6d-slU(aYC0%CKNBENnpN<>5xS0&FuLx8S6Yy_0;lfXh znsdJwBq%9V@d58A5>@w>Nbs;*$H5HgR0r{mC~V{NMQ6Y#ZV0`rSUOq$2^seNvs)M0 z6~Q;^gl{6B3ixPk?)5R;UNh*8;I=FkXmkL4Vlr|;&;WD{qe@Sl2>8TM@@R3qPmFke zX`#|h9O!SepH6o2e{-NkcXkIAwh|Pc73yDG8&ZF7ymZEa{;5?XXA(wZ*PmZ) z^y267b)VB_g^!IozrLqT6agIQK)TZ(yXktTKh@{rPJex>Um5QCLCUI!b>Jm9@1e~e zpEgM`*p-TLyFuuh2es(AtgWbji)NHnqgIV4*w;1aJlT?J8Mjz)fKDhcvyD3EAtzzU zUKlka1L@dhOuh{wT*?ym+<}2nBU>~ADLdHl&^IlaXXuHeqK@q~aV0T!5>9ct>$cQG zbYizK?353O3g}yop>maqQHlZQ`i#2!#51U(rF%`dMhDe|3#h`6oePar;Nstfr;+)u1u(iDhYRUGt;3mDZPZZste+$LmRu?|y!rjrK@)dG2^X;#wk$_MBh&vj&yfVa zSpbJgbqoe@>3@HZvfGn*Co6o)e&<$z5(Iy=v~i_b(DQ(7{I)2IW;>exM-`Wa-U6K3 z&9~A=*6*L`?wpO*ZC;4(OJX%V^MVIpbQs!zR=_Rupm~3Dx;39WST9Fk>DZ6ceiX>9 zgnw_b-fD=D31NOz+c-E?0TdMFzI;W#xBc74OH3H0;uz9MOigKP0erleJiojfe|DmV z19yd-%6V&`!u5u4!U77c@`5(Og``*&<*vldeJy*Ft!FPzPph5O-mr}}d0t2C)Ttu^ zz$&Fk@7Fdh7g4mvtt`GD9?|_D?44&+R9&;@n}#Om43cA$GXe@UIY*J4v*a8kHBC;^ z{ta;|sUH7h;xr>iy0d;omz0cnD|5cU6 zT`)_xbr@KLmJ!R7aCkkIy1I7LiFPwE(eZ+%q9oyav=nmyrb0_%Qr4HQ&2-p@rA@0r zy!CW>N?e!{1MAE2b?*Cj*j6L3-i_(Ah7nd;AuWUGmXVlpWC`-Bqdz8CeLH?k6uJj- zk=>n%sL;4}^1h2S*ZgenT}ikXgvnWw9V2*qud*!OjXeHNPGOEks^5oN{nF$QA0ATKUAh9BS@s9~`l6keJo=4;ANHFu z1Sx6A@4TKguJ5TplC(@q^5s;3D@Vp#dyF48w68c5P<9L}(o;VGi{IVOc$w?oq>WPD zPcd|X6voM8fLcEG951IBK6XAKpESS7|EoiL>vw987A-LOqQJASxeI#(0JmZ?i0QOJ zFks&!h8zW*WX27%#1wlmp7lwzfSOzxjwZ2dij1qh8O>%1`CnKHb#R0|p`MZa5#Cfm z-Ms%5rL6YNrIC{c;8tD@ZYT3qorwx87@4F|)O8+td|S3GjkTjT>tFk};+T-_wdz_U z+uGvR^-0p+p z)2`?9!42D|mx8~n21vZaoqd^`d)-EaK8Ksk$P1kt&FgtTy|rZ198n<*!TR?p$r%v3 z_&^N*(`v*zX9c>V*(t^mvuje8k!}vhVB_+xB%+u>$+X;VY=F=R^wp6wXUP9zKahnZ zTaBf0M9PT^)-WQa#i{|3a}o_QgzO;+3dBs9$jde;^k~4PFe+EuZ7oEhD{crPz_~A4 z?iG@h)Un>EK@o?S_N4@8ax>UGm(x9{9`+C`LD5yLrSVlWeud)wCreGBUd(TTA8y>L zdNy`ZvNog6K5I3U2#ItHl@caONB4RMnb=;_DMfHx1VCpO^;+!wgQ8`2xiu}(ab_@# z+C(tsXN-lelTY3OHW$u1-_)0_XOM2q3(M|jeq!}FY86kP{P?^+ltRF)*9TB!z)hCq zk96u-kSb^p104y!1W81gbCi|AL#haQk84^`*Z7DCJ{g!E>afO;FNKSAx7w;60O1~*IH0>~1JP%#>+c9TfZb}uV$8|>k-|Q3dO~aaoSzS@)_!oq$K27UCqUaT zcF}N_JEifnwdoT~VFFUNHfHb*@;-j-VR2nRchyca3RHMSX(q3lq1W&J65Un1uiZrf za*LVo?R`Bn*G+T@+O$_S)!S|un2>sp$H4f!Hy#!Wv2uFJe*p&VSqW!19Rek2z0L0% zB99 z0hx$icHT5z0A=?jZFfTpjK7|o_^cJ6?B;v+ShQd{VwlNN*gPDbgffXp&3Ef|`e{m% z?;V|%?mUmrAgxdyRnwLOC_6-t>#bbNc%Eug>t(E+eAnt8qXO~!bpU0zIlQCog|7H7 zIKy-6e#rOtHO{hsPW)^T4Ah1}_t(Uy>`s`5MLWJZxdB}#8WIX)5MBHF&Q>{|R?O{p zF5aIFlF_+%s+3H2#B1y=C|D8rmjDBljD4mM*Bd|F0af)IpS=1EF*^BWyKz1kj=OQq ztwAclmLl3FMiGEE8dlp~7X)+8{8(NjfX^|;SHIboH>*IlXKo;yU;c(RPB<*mjKrvO zZUmRpr+EF;bl&S~xq>!S?@F;-B*{b89oJ|{9Lwy#Rd7A-xoVdlJQ~uCDykQoKziNe z4Jem&dxQV1r$*!53c6i-pCs4#YyYq1!!x~)zwNKc&pMBHLT6)87-gGC!K2o_kHExt z={vU#i{BW@veA3i7qKsf+SOG`*CsEAtv%w9r1+CW>$w!|H z<6WW8Xiq@_T{#cX$^l=MTQz70XyxGeX+pmgPVEMD@m!{)FHeyCP-~Zz+__hjZtTXR zuJ)(0RR)p;`eIZ4z28Am%mXq1`wkxCtqy9G#0p%;E~p0+S-)AGs;N9a718Wal&wbo zzfK?ccd$9z$24_7V9m(Yuh<(ULRbZ0K-jMbB6kA#I?y&eI>ZHt# zdfLl|tM&Y1%Q#kam74NK5Q|Z?4n&gd=Aq|nG^=wj>_?e)JLb@lPO@76t0`O}AvCMw zlAVUP1DP^ufQN%qs|AWr+xK6zILr}BlODZ!4$?olHgfk7sME`dfLYhlcP|=>Pt_K2 zt;>rQe2I_jTXX-iztXNJE7;QNh~c1-nH*kg{sh?X6c(89SW=#WK>9a~+9jW!|2*OG zqY+jrmlp%vsTkI@jdr`CI3_uv{PoeB=$xXk56EnWO7w z()&+cHq?;EV76r8QK{l&k_;o=DAAo-2N!Xf*sXgo>`>EmMSz-hR%QaI+0@1{fSUE9 zG5q89Tmq5?s#kFS?H=H=`s^PXtN@o)wR;!Dk$+^!X4+Fz0^4mY-IucQ+`rvZ43#;< zWLe*t15hentI2FfeIzK6-t)J6eB~Z>C#<7tRoc;Q%Nxw%Ecp7q&{KKzwWHnhP)tBc zG^~Nr^2VY2tBP2xkEe=0BsP!HD3v9uX;2Ydgk%lrc74?e{e?#+Y{ue<;VmNuY`4d^ z$M8s^s7+TtJ5hQ=#FK97cf5bq?T;CuZfg4?x^Y00h%QsZ8_^laXEPhl?iO2N660Jn zVgmxT;xIM8?gc(aB&9SjEzd31gZ|czMG;Ts6R`E3$%TB`BFMqHkana{e5YQO7mE3w zyC4FWEB{&~1#p;&0d`f05+*O;o1L`K+_2d{x-3DDeM{Y=NJawGWEFo9t9-E~Y z3+q;@_@paYiV)x)W0B=Ow0jC@lL7Z|m|eL?n{xti&%w4M05yj`&o*|hs{$4z05y{a z;sH=IIfrwBYhS?iFbot zD^hv8Tpu6{tL^@9cO&5Lg1_B;LIG<5;^_ah8Xu@3F0lV}x1W739n^lZIEgK#zewP3 zZCA!cN|}`uq+9m8ax9NV1yRx&rma!s!b4L)+pVYIRjM<3==XaQ#(OG=bw0(h-CzR5h=`7yWDr#ad|hY0h$~XsR6Bp60R$5f$SG5-&XevhTkZ)vk_+jK_#m@M z2=|^T$Z>n6oxLkUzy29}>}1k7C)5&FE~}I1ZZj7t8XTkinkt*5KTjvl_~rgvp_7P# zDYI@iINuRnC3fI1&RQ1p3o?#H1=gIe>j)r@zD%g@Si2EVR~U_orH+T%8`Ju^RwS@j z*V-Es;e$4T)ws8if;SHZ81@RsErlC90K-oIXoVeM*zq!ussO{DK}^)Mou$f#_byvs zQ{!EZfn?IVTxIi#cX^_B0eABxYwQ$I6(;Qz{;HeUDcbMB+btfO(Ad4-wwknCQX&1G ztrR}HvrG7=RMQBO0_9_%BVm_-RCCDve|B#41@52D&E!zX5coUWT>vfR0}XfSSTG2O zHGUtRaFLwLydv%}L+C@44%2C2#N#Tn&CVlf}rdRsl4R+M7yJ!`I zQM3)4p7lZRli*<#QKyEkVE=s=8#64&^xhi0AD<7m+KHM`-5`@4ip;#ZXY!_J_;E(W zx4?Df_oINL6BQhftQM%=uPcE`4mg)Jjtn?D-KMbK`*Z31V`T6jAE5m~bS0gI{03Uq zVF1uV{~Krl)AJtVfGUO&lzgfI`34SsNmNSsCy64C>XaAokEi7G+Zxf1=87GOq~%C1 zN;KI5=NJ&WnErjnc7jBIr_iq~R^h{%*w(@f|3)P(Z|6O)|rU1x8Ax8eU8 zm3#mgLvv+J>Axojzc&f}vupa}LoJBGrx2IIgU_{BUe6Z#1Vmc#(re#mM|qKsty zil^_N$*x9us!I2(ZFfdBkH)}}zZ<6#l!`|o_=`;h{q;4%ceQUJy(RkhkeYxS4ms32 zNcg&tI7Gxk6MW*~9HovU+yTQ>WOf0+S7LQRw>A*0Nw4%~<9qt;Ri z0`+y?6^IRT8{luk>h{yhw9Se=?mQL<8N2iL5B(JhSW9|kZS>#c3QSC12B`4HAaHWR z^*Qlj10_+?sP;;=R*a;Of4#kiYY10QV^OF$yq-Kgkj)D@U^R7p07}IrOJ+UcvPUn~ zZOrz=6yOXqSq?&0ttpCL=;jXPJFibi$E}eq;`f{M$a**2yqcknOx(Z>#djZ}WBPN3 zrT|uvU0D_Tw^bNdW7xu~6mtQR3YQYDP>!P%u&zubg{vidF@M9v}T%j<;2a!locU zPSCegj3r_e#A0Eo7)}O3%>(v?9*m~Y%Hogj3ahJUa6q!ZDjiN}q(hH9lT7O0Y2{zI zz5J+dz^)Vzu?m_-gJRiuafM$@h#_!b?li3xe8#KwV}_tQ-h0`afcn}v#Pvz*K_*rT z#*Q*djqpz5KV26F94p8{lz>$wzpX+aDzx%UWt57%BYciVX(c0A?FCU~<#HO+IJU2GlBrI3h-DvUL)WioSRWVR*&+^nPwZ zUi0Icy0m^JdI?u@((R=2j4~|f36?@MLW#bl8>`>H5`>!_@WBXX@1mD->c!8Sc;uu< z$)SO3!~&~XsJVdMIqNVgQ^#OGPfC+&`MqHL_vQ$n`9VRBzK>9E%`x7Evjtp73IQ{K z0l%29pUP%{5|{zerXYu5Ng|d?O??-W7`{J8JqWm35d-WZ2p7GjqlG3AFc;30^7YqQ z>2c4k%#IHyU@3aPFr-41`YWV}OQAmHzU+#mEL7o$Lk@O$9>XhKIBbF~HdFXKn!F62 z3Ck1m$6r)N7?Kt%7;IB?tFt_>)WXT7wDsFitOK>7N8Rl=U74|zqYz~%^ry)!5JjW!Fw>gr6 zPQ+OKS-UWOu!KRfQWiIU93+K)CIQ7g5sR1gn~4mkqdpVMYGz2TYw8fC(roer(uRjtSTjOTKrm= zPdNy)lm*w6vIgxLh%%*m#RIq$v%(psvLZ|DJw5eGBRuso?0j+OdP3H9E(r=olT8d^tutC+g6B_7wT^*mW8 zyo1vU$;P>>P;HSR1}eIg@;DT{iG-1gooB=z)*--}zF72Bb$4vDL#pUYDD_=!oiKFz zhyxxjx4~wzA$=G+UFb9{opc6ujeZJpusOjo4y=E=4s6BIq)!WuRnmZ*oeuak40PnF z@HsxTw58a^)Tk-Z1%&SGhmg)lMhiGXs>A*IC6Tq=b7;sO-~!LrnJN={Gn*22Io-0+n7CE7yJ12c3&^ycv}H!L!9C5R=!rQZ<5QBdhw zNXm%>r??&^d4Oy8^jW>3>SnCM$+--9ZY|u^PGOGATR=i|QdWXS#rhl-T}5?OAvz69 z708dCBci{PyQb!bd%SxeNQj0iZQ!vm-O^@6SJ$dmwLpg*VR9MH_3x`?PaRa{-j#u1 z)RR7LAL?o=wn?hN+3eQ!R|(O|fd0w{1R6#5n|i-%>Z2nenvH$b?)>%IIbuV)&@!I} zm6;&QPwl=sTBwdD=z~w4`~p7>7;$nYk#wnv`^X-C&xeh$R|u^Pp_gZwWcWws!|F{8 zIr{=`&XwXro#z$tg6vI;eEN*#Wqfea$D1`R$|OHxu^w-p*$XRA#wC{*U+doCEdWzEgJ=G@Q|i5E4^ww=Cx~!D=AxV`u)x z5Yhw$S0I9pFHSDmz6-PDHYX%KDQ;Q@WQZl&Gy2zpO<6gt|@gl}>}1 zyOJ$fT6HLGi69c%Vhy4jOq{4Ai-h16P0`Nte>~T=miOO;xxIKQGw6#A$8ubyeW4nC zcyLc^`psamQ*la5^{a|34&V|qX$)dHX#If(%b8+y(-;2hI$qiU(0#B zx_gb93|Z5RHW{D%kX7*$qV(kFP`U>dORSt@IdpUQ+51R=j=sUDa?%M(gm@Mgx}QNp z;4JWBPv+kHdDaw*X9A9#pPbp6PnCSR7TFZ| z#X5pf9mgOu=UrE0s4=|=^?0<0+dhfPnH>O2X@Lx0j{C%PRqS;8Gkz4P&=Ixv% zK0CpmwMv2X4Qk76@Bs?gM;61uj|1*3QMYy(ZhzN#Pvn0eACG;0cCWDsF=tDCtkVD3 zWxP)_jb+yn7hBflR&V??Lf-KqsfKG)%Eg?meZ%-mxrx=`I}No27BAT&M5JH$q~>G3 z|6ui5bNTjVMMG!&SF@qy_^G&G?!K0?G`-UjmK~}AEGq2Pj|FQ4wnl|&1T6&J9Cp@r z*a9uAZqxh#;b=UKOtTnl6O<_bxfV$0*F!X5v044ysyXhu13tlyVlvlkg5xc>mmg@{ zqAUy-S!rzPCp?cfRSdiZJ-U~-1)r=uY4t2O3LC)Re2LmO37~6YQ-WwXeQURK3pK5v zoV;x*(aX-z84$#*>uV+u3+4zhVUHh~BWxpept|*NRC2cUUhwo5)6bJJ7;zgiL3^9+ z+UdBuuAfGO$`h2~@C0+TUwQt`W|X1X#EN6J8tE94#y!>&f5GI|#4bU7<5Cpu4Z1Jg zy%|Igmo8cCi4VoAOjP*OLq|L#)wQ*bT4dcj*cc-@)$a1_Wn;aZqYYh&__X%Cu&U8k z?kC-VoAXeJxfeEGQOB`%m;8O!mq-!+!b9G$+0@sc79ai+S8!(eFs)L^+WK{^a_X1! z&OO?|pPOr;ule{5dxF}N7A)_E%61rznrG#TVZK33B4q)f)Ng6oi>`Olxs7-NgTVfd z_n4xUMr+jr9k&ohEw6a!cXxWsGQxMp+fwv$|dDjo{vtvRgF6(s=IOqE_Gw7QXadJ&W9+ zq`_aaAwN#zt>j33vtD%A3t4O!nK~CF5WFW%s&nTt3rIBYdtd4xkoQyC(YMZGN7wt~ zlGbcT&E;Lzr?S_&Px{nelM%M~=Q2AQ5Kf_He+60R7Mz<-&CeYe)HX_-ZS}l1{WPJK z93oVG|L7X|>fIe*CkSDP>4S3#Nr#|;F81Dp&>O<*JL#=6{)d~bvmHBZH_mpJf{Cuf z)~jT1#oYKlW{LgCcBLwU!WjNIh?GJy;M0-K=?MJhZL^7Y7E^%+l3#W99tjwTMH92y zP{nD^JGpV=+I*oA{cu|^lmZ^aB`UQ;29k)OHgu6XA*+ukzup~l77aeYjAdbU;+whBCIuI`_Zm-~uOta)&!R(tQEoj;!tm!@x}-WR=&Od%M|~UM>h8n8o>VOl z02ZM@L{R~)MK)+1PBA^l`Vp>?X5Nfef4R3)P(q_D+46LWUn>V$qp3C}BMB9N_zIXL zZmBHEw%3q&3Lh$td<^F*!Rgesvao!nv`mqTc6?k z>)muwLOc+LAE`c=))rrV(N;lBbJsSIG_vM_0w7%gHIpK%j%?Qo zQShC9<_Idr6SLr#zTBwP8`g9{E@8a%JQ9magUpm^u*T6zTvP3@Svj=%-@J z?vmb-mK};eYK}& zA4nkAoN8Fq-EhS}wXQg)7`IK`HL3t{iH_!XZs)ptDX%?uwE2A_*+th(daPL0^fv>c z2(Yl%o_KUIo?QN={n)X5Zh0 z%U=dasw5b_j=%54M}7T1wm}^zM~i0V#}<<0_=mFE5Vz@u&t>rmjI=|9^mRtU#mP1~ zBf`Zt_gYh^f{`LiJ*+H6@WyJTS|!6r=z?$!S3*qFt6dRu$q!2PvtBoc9w`N=Un|4j z*x>f-(|KPh^#oK8;|Q<7`#O~O_`{d=(xUK_?Y!pslbxDoIY7YpeDO2$C(-4vW9G%k z^AqN%sEc0-eNmU7?N^szbyy8i3mlj5B?iTKe}+IyG^xi5CcFATluiqRma_Dh==eas zRZ9#D|1yq}`k+c$ODq&?0q@qhB6DL)obb�tfY>mFbpvsp%;q|8b>9A6pV&i<2am zG3vwhgsq9{Ym?YnlT9fnsM^Oz?s>GP*ba}=45^Qb2(+fU zDo@fbjH~{<-a(^wov*&_McY5Qqz1TWed(Kvcd{8}7T!O*-qxPFAHKV{#xnpNJ+8$i$Yd<)o-bX^VE07l%WY<$30llG`e%1vpj3k|)#r0&wgdij!SjH8$)|N9{`CuvM;$fOzj*XZc^1nx+iO)D zxeT+CXR1U4i*zIEuRq{j@-ci=zun7gJXg2WSl|B8+Oy`?ApKxS=8~zi?0)0(`epOh zM~z%qe3nz+mwRNin}Q@*tiMinJU)_8k38Q`2lJU)etOg*%Fb`kQ@JuySkrnhaMOBo81c#4lJAw@aq949WJ{exo-G_Yx${{PTRxR z1wLI*j4K5~hK^rB&LSnnZiW~*1oTQ>+hoH@*+tP(g()&hycy%s|40(B zx616f?4P^~x@Q=M813y>OV$%`unwRXM(7_?9AdcjdkirnBIl*)#ojY)oi1)}wx`QR ze>AC~o$K$9lW*JDj5u*%7QA@GpS+Q7q(X;)9fZyeO*LQ6w4M~zG`6lWw@(Xy2U#-?nmu3{@T?7|ItuKF5vKN*=qK1#N*N_GB7_d%#FaJ5eN!=OvV8_Uu_$rD?j z+@Y2AcHQ&T+txvv?7t{mn!D@Np3(-$V;mjohL*gY%^&`3YPr=X)0N`&EtE!X=X1$v zvdsk>>c+*HA$H#+#!v{=5W~ouy>FKdjAWs<%$8dvEs?2XZ+<1aTg~;We`%(R`Pwok zGxw#Y^^pKk{#uL`15o+2@Vj3KP`tB#K}+lO zaxBU^IF!GW@Y@fzk(LO!LC`V|$tz^Q+aLBHaiR~ddyD_T`qodobLdB~OR{7eRY@Hq zG3vqZ;`ssQSB4F*LDBB85HI3{i|4{SMjgg~U`=uhwmXN>ciD@+pq;3;zl}@VnHz1r z;&=_0_Ctb?z;eV_XRkGv$jWM$IUI)zWRxD#-2)!@Iq$ANi|a&xlpZP3=8wDf++o|! z(HHuJu`A9VAb5&zPysR)hc^7prH@A_7eSPBxXgDK>Am1ET0fp0qQYIG>=U2OL64DL zFU77P8=wjubv*B0v|c}c+DTY04sCTOtTOaXnw2GlV?2*M&!1k^EI#VC*^f^3K9r zgcK8m!ELCWyG)YVofiThWUi>xa+i$bg*y$!Lll1NMzLmp)91EAkyQHkoXmqE8{oqn zPS1gMu;sv`8z?~0vz6fF_!i6dHdXUP#b2SG5f395R5<&^BUUw-sbP14byuYftXU{7yHOXwdn?L}hV$e5Z`{c- z4imW$IGfGOCXr~(Y^hFnG*Z#6^HaF;FGe8wGb}1>3PXY)$Tu7V3b@#%B3nQv_i*T8 zwf+6h(d1Jz`aGz*eil6_5rZu1*mUWRL`K<(j9sykg7}}ezA)fDsjuGiB_MPGS(<3z z6LL}!kT^<#(1Xf;3HGs-mWM>3#mm`#B@$MK2HIw$(P)mFyeC+|fJK3+Ny^ znnKHXNPp+2mBv1Gah;RQMo=jwPf(S`bu^MQNxY`@;%_J-*;_HnX-Xl`62+)61-x*% zc3vyUBo_juoiS;=74^;;P>M2|s}c1S#8p2Fzj`1NppZIQlvy_7&xnT;pi#ZXK+F7S zjmm=s&BQ?>P8I)2qf$!#m-}-(z0ru2s(%u|1X$&A=Nrx-~ z@>K-U!6}>6;ll4yfl@UCb+;jwrWS__kY+(@JlC=Z3Ncbps(M!#&pp^9EFe#dwwY2{ zROLL0%v9Z$LKK^bK+x0z()UL@b1K}ZfThNuXs$Bf zz-4{j{AvW3d!qzcCAO}sL|$>48>R($Z>&zyM`Qw|*CYm~*_q%z@frNueX&o$_ z-}k@P7nJIzSACDM&K~yQF!z-g_>L5tB1e5KP_(zYn?Xr$e&e^WujkMBVJSa#+q@R^S z^N1bDyK4^_fb7IvXSlEklrvjRa_uRU;y8c5wYv^Q#q72qV zIbI%Pnx>l^Qym7w!`|;79x69^VY$07n?d{I0++t+w@pj_G-#m@#L2vSm2TKA^YByW znx^=W`g3aczm%`0fQJWz~9O2L6QW^MS=ob){MtTq&?9 zW(5py;saKHBq3cCHVzjO!6918LD7~_jl z$?L<()VC&!-|G<$D0(-LTGsk;>*PU#50o?XSf*1oawZ*`px;ZJU01I!|CG10#n(tUsmxTEI@yt1U7O^aGv9UN&$Yn}S+d9mQO7 zosi%l3EE%!EEs(*74sH8?rKZbR6g5v;|?>? zx7u<1q4MhU7=i-kM)+500GTopXcVQsiPD(E{GeJf7z;pAa#Z;L zLQzomJ#+y$n*x8*9F0IO4e8$_8NT{e6+Qq|xni({uBXYz#1Upn(|#$Vin?&q7GH^d z09Rxb!aq#dU01~jqXuBL=NyVzd}eZ#Eh6^ivJ?)Jjupsqh5P(pPjBLi*D6R5rhs9r zi#5-y#BPIac_`RNE3Zbf?7jXKfdY&qDnn;#;^zJVn*3=imi;}FQCA~5&`0p+NVb3! zKqOc5Gadx_NXF9t78oU5d}!q%fkM;;r6j8q*~Sopnug+FP2~9sIrELucJW=r55k8ttz76--)+v56Eg^mlTl_Y|ew=Lao* zTw(6x){|-Znun60--NmezuhB{llqeq@U`gXgqk?O{+)-{0SqDG)es^;kae<_-4u8X z)?0?-U}X?pY#cG~@$P3^iWFRk(ec=@?PwfGocLEQ8EiZm%!Z%udbB;D7$$h;PAB?y ztUz1>U&Abu3q*Ml^!*r*(s4YCk|!5U)PaiV{spsCC<^S7m)~dxgH9$D4MD~jO?|ml zre3OM7+zw3uIT@apzJ^XkGnv$_BRAWf3=(RD<4Bhct`0W zIQ{0%%TSgV2s_BxR~j?WJuXazqARrLc`c;gIpPFS{ZuOJ`z2+WVhg^GTKc`({F~kV z-$!I=_#NNjy6#-$$42l2jL#*|)OKBM6|d!fv<9A&1p?e-`^JtAW48p9<*T|1%YC#< z0?OmuWQe*Tf^H^qWSXu=*W*1J_be2CR1vfl3eUGEvU@b<@Wrf}E-DwOx1KPqz}4@< ziSBh!E&F96vlMsdrCZ~wN)p!|UhX3IZTx_N?9y&YeS2a?gYj$Mh>X-(W$seHE%0{5 z?Jvsn?Np;+WdpJ>LyS$z)YR73=hJ<#d62Q8=*D@XK=mQg!ts?1BdOsrva)DDR*s5% z=XxG>rakzJfb6~`gnX_S8tq}CtFJ{=13BX@xtHG`fM9}MYlN*k_4`dip84p!ZzM_c zFo5=`|10I2Z%h@aw?ud<)&P13(g2Q4Kr*7bIutWQG?jFF7Pbps*Mee4y!!OyIWN06 zHU9)(6KrGB0{OHX-_g7054}mOjY`W;?BgH=gub~JhPuTRKm*kG#j5ITFkzR&& zh{#hu6%Ub~Gr@*bx}S>f&;1UB-AM;9Q^JMW%}y!^$uHh`#1By}vHFa`Vuo8p1G}FK zv41ruJQ_aIb9L;pt&7A@$Tg`cw?2A5qu#P29U{CT zK>8|P>-grOU)Lp~ovH&Q=b$9Chf6;-fnH)6#vDduDTE{s|-h^R6~Y|()r9SSO9 z^^6EFVi%RTGo(#FYrRBR)V;aV!6GRTASYHv^LbY@jE*8!lk)WlF1h4gUqO$j3}#CR zyygeDzjDZ>Y>bosxMY4g|FsmPS-~Ppu8YZpg_lB!V&lX`#phx}#B5#FSw5&Hm>*Zr z&eW=2pPavU_xJ$|QJuP)=JU+L;|ga~jgmf#L0bNXZ!o(Y2`!|kww=@k_9>LwR;6u#-otGJnn zWf~#FzsW>nCb10lXwGZ2xFs$W{p!#peR_X^s@Q>h{-j_mp*D?W)cv7CD);SeDo+-V z{TEv2ciJT6W-?~AtiW?Jrj@J*ZHW=oR5NA0S>Jq0Ff|wz$ip(SJ_&dpJ-9EjPx=T& z^r;vproj|1QwV-3VxQwH0d-#}!W6Pe@aELsL0RDbGc5Pk{Wn^H^D4VtqqRK?ti+Ga z3Es^Gxr?ManfQl?HQjh;@s@rz*r9}qHFTBgZ8GJ2P@q-ehkJYNr;n%Ny;61tov*dj z%+K8UBCtuo{4nFFkUzYE(?>!i+{U%X-NE8oBHfOuO!T)$@fV6_sasQtHpW?G7UyO$ zHxh=ceDheKi6Zct$J<0?#TjK4aI06bl||)Ld%`tz_xxtRp7TqJq{gLG^{0G>_)g5_k!_D^QJW@z z8EH@amOt*w)ZTRM=yupDrM>=Fh`8OkI?MI0h7eD##nh+!oW`Ng-baWw75!Rj`!2Dn zJ)3tp?&R^^m}V?#Ij~eA*TaVY+W5>xCm2 z!k@2af_4}eKDcpIe6&u%lzQ}Zx9L8HzMY9zo8TQ!WeLrno0!oO&9BF`V~~C!#upt~ zCTd=H?ZRxJm)spsMFjmco4p()wAMx^i=|994_SZk`ac;<^~l=y@8#Gny0(?~HM(S} z8aC3^r-G}Iuk~@evbwqnujGj84M8?U|gONOLA#Yr9gw9Cpk()4C{NZ7reWs;QtqiDNuMsoA|!a-q-OaE}S z^J!pi^3eXyC81rO?(u!;KJZK#$G3Z*7-gvU;{EB#HiE{!xX1>CiS<4G(0ja8q%*p+ z=rO7kes}2lO022;mOAz$vM}mER(1#E81*3y1%)Xo(H>b07de$Fy~_(SnnWIVYC-QY zvIfrUF*Nk7`L>m<(Hqp{`j~>{aID+6*%H2yF(>li#sx5nV49J7x@E*HY{aMx#wdmu zs)od>=f`Sx$7-*{>Yl{v)5aM}#l2R%WfT$@(&k5HfU}$sXRXf9e-fwH?L5KlU;%yQOo-!JO9L-NN7OSAb;su1-}~*mLfi+1!>JUCx0@cj4TTb0#s* zuOsYN1kNr+?d67Kv8$zVoi(vf1f+mV61kftrsVu1XA$fhk=!CN*w!gqG4hxWksN~M z)DAQqj$f*hHy|OpTLcbEiHnLh%n3mcs9ZJ&<4)Q<2|4d9QC!Cf7T%6aRo@P#;qt6q z5iH+vYBj#j5nx|9oaCS?&L1b+O)Cx-^Cb%L+w?PH>+p0RQqkoU#D&=2sY&G+^_$vD z0Pm`u+bgvhr>#q-^P4zLFQ;W}33k>74~h9d!xc8Y?svyHbssADDL)}HFRlDr>TZjrsILl+S1WdgO>hcu)L0Kr?-&VL&y|R(vBG~ZJ9!cSf27HlXICvITpKL3dn==R zFf9+!p1hu`LhG+g7X)LT5Fo=e{}pu4tX=6+!f(vU{zGjhk#yv(O7}Vkdm;rbO!f39 zL*hHwqIWTsP42)IV{b*$#4CjII%<$&Q_vq*kv~r)b1}>9^~>#~4RMVIw=c%AC}@7e zA>*u-@hOm%Ss^9d&JY-gdBY`c=95pX5F1q>`)4%sKk$VAkALd-C6Ej_`u{r<0{hQP z{XhQZe?R!Y{o40m>cM|cynl*5DExQy0dxuC|1b5@KmKzx>UWIs<&TiTze-CeA^O5) zi~rYsI#*(PiddWjiU!g>KrfXG!`ZT*0h|6KtAhkj%1x zL{(c1J@IoM(^--sSx5ZLRfj4TbA-)zOX@_m{t_WDyIZ6dx+xRRRy?8KNmjI!9xnqq ze~S(&2KH4ZACPotCgI9P+q|gQ1jZ*a5-ii$jxHi#qgnr)2;WtBdsA%&C~Q?%uYkCe z`rRa865S*q(R&#Y!H1f;AiW!XkIGoGyP&6kFP~^TT^=mK3O9KbQL~O9%F1 z&dh)h+k}k>1gr*J=x~FQdGNQHvkl1etq`W)-|wcGdr=N^$3|{iq*GM`%>sha%>q)- zxUQN7;QEdV0L=n4xJ(j@FHe8e(d&V2c>^a;j_UlQIzRBnM3Y~>8?;m12(6c&Bm`P1 z0ZNN;gB;@~f}oJLW#0e7$#K6?kz;qi9aRYQZ^uU>cMPWrlM(VWsz8ZmL!Bx2&X?r4 zK#68*38lx2_X~I7m~8;+C)`*hnEks7BnoJc=+nBN{x|st22ej2j)R96$9yp9P)VRY zB9W|RMk|SLFH;z9GmXxg1+SX~DdsJ^q=@~hkD2T6c~1NC+ObkUqvC`Y&{?27)W|`FFCC)MNTZN;-Vw0ixbU+>DPj5w z^)sNc_qK3F&JKqi%lMo8kTW{0DO&3BV4Ta73Q& z)uf|NKXf(A{X7_xm-}_}qFMI*`|f9%i?bh}r7kZBY*#_he(+f;99w&RgtWFF8=M+V zoXYZpLtO!-0HA)c%Mh{g0TWLE_4~L0pni(5oWs~rrE>iHorBb~?y-WY8y2?EA$rZJ zc&TG50QDR4`F5DVhE+j&`LJV%mHrF2%FPOLm&{>KnR!l~@Cr&L@(~{M3~vClGOe#2 z5!8)Mu_oM7?1zqu(#NJcYd-*?YDY!eTGQ;p*%_Wd$E2NG?*()6WPTq!8yve~9RXeV7)RJ*;n3aRwY)HdUG(NZ2kwC0YgUYWhi~AP`R0BF`fN06C z-e%#wl{9d>Efdic?u6yQGll)UEf=qsQ;?u`$_l$BukRzXa7@87JM#9((VNb{GV7+l zi?kQK591P_;-0xPJ6D*}z$N*#X2$c)ToK|Umy{iV`W?&_hw^jF$kxmTUd-M1@!-Ds zjcYEH7*%qofm^Pi8bJM+P^I=CxnZ}tP|<>@vH;~;YJz%HoJdDGf9xJ5Gw(c&aYs5$ z1e=Oja#NZgr6qv+bt&>166G!;xf$6sZcRSSXOlqYCQ4EHxE3L)jjqYDtM~y*M``4e8tU#^16{M%;{V_uOs@dX!@WaW}P- zHg3xe%ym(5H}~u@?(CGv^Nw@343#!{y!yDz5Re1H7o>0w%P_^#I5vzI^m zPG*`Te@wjvCh;>6@js(}8~7F{gS1UP;_HvnT^;{I{ibcr`uB$~Y$0L0>qH@;4#clU zM&!P?5`J!D8+ns9DtE|AK>m|z`V#WPH+laI zlM(uTEZ!jXwKRNdvV_(f*;@4Okm>X>qW=rUVL36G=g=jyF!j9juP<03hv27Nv!cC5 z#nyUz($gyvBEmi!=^g>W%oi(a!EgCf>`&OKnD3Q3k{sPnXPc{9Dj1KI8P7-({>e_)I;))7s7-9_kx#N&C0^jmxNj8` z%)CQ7FZVy#d+VSo+kgLev7|c|B_IupMMyVDcXtcYAf3`3vOv1KLpmfBK{`c18b!KP zN;-ZwKF|00y3hXYGiT44b7sz*J^TsGTzOyjb${OP*L&d_Q5F+*PW8MgIj<`MLBx!* zl=o-Q#9`Rus~$2{waDgALXilp4@|ZqxIArz)3mezi?a^yd^CZ5u%si%2cfUWt;KnhXzyjkcb%s=wYXC0zee#{#?UGp@YpZ(t6 ztY2J?Vc>zRJ0d(Fs1zqI@N#*mj<@Awhoz*`0_C8$1TXUXx8s)9{eD`;W#oSl*0NT@p}6a<j8`d6?HoH`g4n*F@*4V3cFCukKCi(p1(rn`+{dH!%J|jELy|JEe4t5LnS?3G+ zMd)*y7BF#UcOh$jJK^O`9QbL|IeEaYBhAWY%ah*A*bQVpq~-?*@j!;QS2n9Fegs!pS@4hqNuDj5DLR@vfKc;+fR}r}q`3)Am+O>E`nTugT$AO80_VvwK^Qz9;Cqmf@|{kOq?dw=*bQps&15>&asVf)l>hyz`GzMT*YdBB)c z3Z|tXh1Gr2q*iwQ7k66n2W0NJEGP_&ZmG;H6+~DLUcr}Q?)plCAcfQ_tjO^Cuas7} z3xLRikNVj%uM8TLhocTtlxyWb2?SSfdqC?RfBTpZ)DT4`*`M_x&ibe@XHdmS=wyoZ z?Y~m|`p#Q^@5@-nnN1I)W&p>+`C-?f?3Tu(Z5**>^(>T{Q-Fj2YmWnqOsd10)wKZe z7(KE$<}Dj&EB&l9BkrDqe}HB8c&=D&vf1`KnV)8-S^-~5hL?%)@cFYm!u`Jc3&Aa~ zI)SYB^wNuMrbeUCdy=c(arms>3vy*SGh@@bmV4kQR5OwzT86z(RKvt0W;A+a!py`n&?|+sRV^KSS?UD7lEQ;BB|4o7#W#)z54Axmfi^d> zH<|aUq>DkHU;k1iB{EMuHA2{MJ|bLEu`mN_BwqT}Y)=9Ptf8 zx*g%SkqS`D<>Exjx>&VYSz_}gp~HfoC0@HfneNI`9dxDtU5u`iZWFkd*TF#Nw;J?( z+5T_MRi%)&lR$m)GS)OEpmG_0K#$>ELfT{us9e&C$}?U6kZ2Twqydc!F|Y^2LE-y& zVrrlaS|k*FmgG9qZaz$6BA?^Fg5Py~x^y#hnLsjOlM@t;V#z?TS|%N^o`+MI5L&gE z8cIgfcr3q+rfHTb=8`#FN+FySspd%WEI`-b>&CMH zC?g$L!j+f%3W*z5UCGRxRR7lBWPs!WiPgO@)8n_+=mBkODPeU_sNg>K1t_jD8Nxi+DEa@BGJ2rN0jHY5cKbsq=1wG64X8D#_^w)Am30+ZL0z_G;|74 z$Tm(82%yXv^bX<%4a5-e1dOJADw0Q_6Usb^qOtst!eIDl8ft3Z6Y=2oK44>EwR%?JPLC0a+P9 zzcivaVQkFq5B)2Ha-^piY$Tm?PYa3!chdYx&4~f2|2+`@3Zd+B4Zws!wqGqugx_9^ za08><8w^ZIoi_(CCCC`x=TY<5`@?DEQ>W9N3I|fa25f$9_~A+~ncWt`Y>v!(qxkPf zWQ9TM?;@O@N(vuN8a_j7XHO0-)Qy z4LBDVR110%h(#))M53M#@QIiO5rgoa^~R8M@gf3ZEV(!+Qo2+WKK;uSBE$ADG!3zV zNF4Kfg*Zql^dHb4zHaK?;6#pi8K5ez@CMLtWrUQeSp^C9J%6lR0U_Do zi>U?Wg`lEo9HrG!cZ=SV2(p~hVM_)Etfsi?eF9vZx04Rp+lNI`i6D)TY*fyYVLzyG zK-hd;u@ZzEZ{cl5lBqlb1Fg*TU*un(-TS$DSy)4US)@N+Ea`<*4@myPOM+O`jm>^N ztY5;c1&{OoIX9ue*EJvl4QS3kteyW1ZjDqvHCie^!0KbnyoIoASr^2MSj4T6oLhZN z3weYVFi)VFpF#^o6UECHC+PMrA+m$0l}C3;NFeG}Faj!tAi6*rCW}jrgFSmxt{aZ*=Q1tyMMZ=T zYC#>Q@~Chj+;X*G-wzC;^3Jf$jvz8hDV+QEi<8RxXhR10y;cPkWJ(9^GO2l%Lm*Nk>Vug{Xado|(2!=ys zCya_Bl7Y8NjBv6ionj*xW{hQ!0bnjpzm>%Y3}2k(`5zHltOTRMP=V-&jj0te3{k*o zK%jF@g-*f%&|4|mt@A-BA5iil0g$>X2o$zmaQ{t7;$@8zDpkY=JAZ-DgTs5$@*KY! z5l{PvqIht(?l`6#dhdGJpKCP)SSo)d5Cwpk&`8Q{SHzwmBQ@czsET!mq2X|xoZ+sD zDIh=O(c#epEoYGEh zxkAGIvlVyxUj)P9!YA1q8V2sx@yz$nR_tO}7ol!F!N`~xvngxuAFDSQqzyC)|M%*p z7CvMY3n~pk#e>hz0~9fkco+$R>;5^%v+e{s$p$z_o&J(1P2RQk;v1vUL1Au5mX zBW7`>GZAq+7c~?{J6~*AVHdiDp^pU z4^8siHXqW#2A77roU}prlt)~j>3d~rZoAJ;t#w=K<7Lv{%G6BoZ)K{3%)K&|kV^N@ zruqLfcfr7NI$#7zkRhP*P)m8+OAAuYlJ`Y0hx>KBUM1?|Qbb)8tmx5{t^!%7^ID_5tieqba0-;1jJ?+=teuonN4 zBKw0Zf#(OHS47A}z7#?&80!uL!VVxHvrm%Ycqn!nR4ZswfgsM1b09NL7DUbXNGpnS zLm`zFY26pC!E!JI#eP95n5%FsRoDz&j!C`nj^AN!Avf0WMuE^?#(c_sKS`=biHs!b!r{BaPABj94g zq~z)(!oyIg+5S_R>+f{z2RQPt%cED47?U9_Qu2+Z|AO9GtE7++LbPy?SCsPpWhg2m z`<-VLCPu7-BwXSAYh$7iOsMAXdLk?EL~ZIGvR%Dc7Ku$tbvP8H^AMc3g5}H2qKA+f zf@|Agw$_^?L^kwySMmKc3HC>V#`DyDP(t#*x%O7NFLRZPgWrv`^K6D7 zUt=NSS(|R&L$<$sKgZRbNkMsvjJcTi9D$GsjeCL*{pS{tPxAFec`RrXEp*yS)F{a~ zq~VqQ-Kv6TzF98><9o(<=R4oC$W@!m6AP*m)x)!Zh4)W^3KV#7^8;h%p!F9s!iuvm zAwZtNir5{3_fjZ8wD=Z|0M0iHBJte*7738MzJ*bx0(k}w(fl+oSz5LWRbh5fAy2s8 z0{JBT5s)JI#rplN76vH*;XkxCikD+}u@?Bd93%o`+DL|8{tHc4qZUnz4*Zo>%(J+Q zR8AY1IkL0|q!?4i{^7c6@`l`b0y7Wx$)=n`3!$~NZ^X`simhh_9zNW!82&f{Jq#)i z2Urnu!|P1(oKRr{jXZDxd$}?^48Ppa4n0Vs0wWd{REhDz2gqRPzC#Zxe)LVAph~sP zE|W89CU{RO)3um6D=7q`P@jg5yDwLSZ9i3Os|~}Yjc57TD+;DcS5f|%=6VyueLqaVI}{K6IOXFFGZMp=1f#1&KP!sd%g&H~&p>((UR_SfRq zG*>^w7EPFOyVfM&n|WMXm@Y&%nF5Z5;0&{fW-1KR{z8vyTU`9xOxyS-aF|A2h0S=j z<5*k>xk5H$ks#}Uug21LD-1&orD3>Gzd_oH&R{=FuJr?I_XDiwjm%RKx z3_vgCbfCe5)`CabH!B|kTGne7EL*1CMW}b&Ci%eqao>j>fAX&PRPNudd1|MPcoHz_1X9G!QG6N zTH^3v2X3l!I=x;G>gqrymJG;yXtz$qOUoeg;>II-9tyBV05sXS{#^F)DpRikU6{_# zFDD9%Nr+NTU_mCtY9R zhfx*?5|<URbKtZsP5Klz1NB%qgAz>jtuedYDkOgo#7anIMV9>KFm+)Dk z=f}^lZ`P>|y>}3JoH^h=)roEu;V@iHB?l#0gX-P!{K{~R@)67*8s0ADi$*uDQ%dHb zw0&>Bi=JTEBv)c;rQ)uk_7ZChZMj93E0Wqlbp`&dJYH7K(!Vk;4Uu&D;dbe>Sf&_9 z*ZJID;*Wy`(KJ`^C6QO0jRgmcVHFJG0WE+w5Q?5O^- z?6#u5GT2utDT|0;wl!7Q{({M`@@4)=GZ=qctO1$VF~!-RCv%~sZl0H%2wgu;ad%U~ zZY)b>-wXqdxSJPsc)BDyD@`G3XVRiHm$1s3!2*`=EF;zjXu-IvG8AwOX_+>)>t&3y zhzU8HyGzlN>l$B+oi{ToQzSHlt6<`ODGUgAK6}}=mq}02&O{VFCoOCzO?h!N79NV6 zXo__>R4VYY^OSn3HZ|+;Y46dOTTFAq^X)x=GS||M2VbI(vDbj2$%A$!zKl!r7ym_> ztLkfObD2_^z~ewC@CqFdR@8VgOqysjNzGU{{km8FQ;nfwNI7xtL$ls+jKbxthfxkPN;TB?>^v~WWF-WH4GZaFhsd5zIz!ld4Q-cD_41EWOpGF)43lc;(3v@)F< z9TVKFg?C!NI6~H&EyO}A#iMu)hZBkF!qyU7$xE7q!Mbf$9oc8kBR<#aGk0$lvo=JK zH*hI_zta#QV3*$KX<`35lIdl*pZZ?fTxK0hTcRp6<*=l7hfvT$KYgJrcge~j1+y_Q zWl!R~nLALu7c;uE`t#c*E-t5P^=a_0-H6hqP{hm;fp_a2l^c?I9D-VLiR--#9+f;B zFY*e>YKA%)M0A53U2J#_h8kMG#Vccs&16oihswND|7Ba@(dq`?n^)q0pgZW4xOR1N zqCR`UpZla*4$OyQ7Eyhn%uY|a^~_4V&&=_)4D;s(#(t*3@6NAJV)*L1klXo(1j3I@ z&a@gY_Qf1Lp4;9OG^hFCdgR%;FvOAmD$eRNktNFyc)hvV8f_{gR7am)l)V#2KP-6vEMl4aRT2-9TJ;} ztgoLv8q$_`NPfsbKZF%g8pVuNl4h~8%<41hEYGgS&TD4vl&Yw?Rbk8PP(1EG@+sCeOikQBIHZ&A%SfkT+?pL}^)jLfEmBJ{n1+>#gTv8`(&$us)}f`Nys zr*K*C7O@|1m&pQqC$Q~R$#oCftuZ*0UO9#Mc|f?sN5z^$oa3Y4uw!6tTs!@$jwi(O zztg|FaSJuh%|xJ|p-2lH4aer&=~K9pX&Z!nuH{u(e!`eJ_2X7{xPI@At|%e#^XX*c z4KBQEMn88h0bhKf_+#g-6OrvnS7}MD(qo=xt|#4|+6b+jjFwNtTeLZm+*=7nOmx+9 z(-=i(eX2BQznvOePia=ITXJxPat{U+|6*k7=Pi;D&D~;nC+(xJ&Er$ZdCJRhRqQxZ ztns789yN+vbX$=^%h&I-*y&7&g|?XyFGuEp*+D}n4^7DH4fYrb=CNP=A@mxPNBRNU z2IU$CEK#13JkSeH8)Ry|pe=8tZxOI5u0Trzq6Zq0+Db(lksUmi-g=^$^fqsJe+7i}G1*2M68A(E6dUAA=^=*dB-!8=pz7;wMDA&D z6@hI-`Ei@AHLF@9BXtZA(<9Cs{QSIKcaI$w2`#8yVlXA(4~X!^i{U2E;8ZTWL#=Rm zYSXP*ll3#&dAZo7x!5n~u`48TtNd~6dU2cHaog!}U$>uD)W?>D5$v~`o2|wjoI9O( zKShebKeNFt0#{>77`_Ztaoym^d;6=F_mmOK{rEv|H!)E0ST*?{YA$Zn$Ht!R? zDC$`z=J4YA@hRHyXn64nX7IqaxDR*Oz~KrgXnqcBapE(H_?CD~TuFYe9!_`D!i)lV z56*n45zJ|*lZ2_052fHj@^}Mf@C$1kbI^1szLuNE_{( zXE;D!;jj7a5@=!bApxbQY`SjNm4#LW2^>$iQ|vW4MT$7bUF}E@4WBZJiR&2fdZ!d2 z2}6l^e6-X27+Go8Y^F;19$K*)gC7riK7P(?Ya9_^)hKwq>K4tU_*4MaXDKJg%VGCG zIAw(y=Dpg$S#<2`}}# zU!Lj?TXA!lO9opq)s+gY^*Bwti|RuK70x*+2}M8YKZ&rg{~#^CAi!ap%&q!B*K#X~ ziWpkJpVP_bN|j=YQEcxssOCH)-4e|k9){Rf#`0VX56ceDV1Z0BoXwUYq1Z2}6&Wn3 zpJQ{TgMH}K>~}Zj$dIF>6Q^vEuI6DLGn<|yB;8Vu%IruJ(v42pBlrTx@PC)u~8K2I%cyMv} z`(lNS&3qFD@d7z>OrLxoPKJ0CmG|_rSb{8@7Oo+vszdskgqMnPO+s?{rH>Q}UYDED zyi855EICiE7@k!N4?N&5ZY~KenKQxE4mcqW@I$k1n-*Lfl2A*rLND~#!5O~fD85v`Ot%`oI{9E?`dXC8_e%pONm zRllH&#~6l7tF-P@D;Fm26~QYaA4+Y(I@?-SVHbml#H#LIbWj9Cv-il+2;1Xw3NcV4 z>Xwiycfsrlo91SiT$2N^Ei&nHcM4plG@_HPF)o=oyppUWcUgLUG`rR9v0eunT zp_Vu!LimzZkJofV>GZHt9Ir3cpXpcax#_87HMY%Z+dgCJMAgp*8^$*nVvrS+BNtIv z@EVskr$O1WQW$bGb9AesDtOuRo<*gCW7|9p?8vyh?B94?S(;9@B%Iee3#lmB%T*E@ zi)S&UlM>#6r~1_1z~o5!H)UU>F`CzW=yxou zE(=xB?}d@BbHS%1V~C!s!Xze-2Bb3`E{k0T@6P%QI@F_P=?6S~D!KVuX-kI|g6!yW zAjrPj6}UO2vPsWt`$-2xeLURZj^$@gd%M15121(L6t)qQ&1t5xu*ahlc=y?8`LoH*XH$xqXCgBe#xqv_ zGd4LhcJF4MFV8sM%s5lbx{A!Y8_#QLnGK?t3lW(MGoFj^pNqx*=oAN8> z*#VZYVAPk7S|i>M-X}A0!M%B&H%FHy+1_cSWC^6i6UA(@x(p*l9x`(w&khkE4ow|d z2Nqh$!!n5iIs>0|p}4$%IK{f()8)AK*!#mkWgEXfZl4<=mrV+EweLf-kj|5Z;H}Xw zZz!G{dP!=Pn5^Muek1$3>a#k<`{wEOLw^@Q^oh4&&cxl z+>*vi34C|C5EaMILs|~$m3sMzA!A&P=sUU^_qGn744b>PF zNJMa9Q9DVRs>3A;wiU#k;)XQ%)ph8SD|>NQQR!ql-o4yE24=(Ts}R8Lguh!{Q{{uA z+5+CeOLdkRS<0dqik=yX32PB7P7orMD6anAXU>2z75YFpw5d#fkJxuROg$C7?(MqV zK=R{)=YbzyzoePjiz+&(8(o<4@TM>voTUg7{5}?@;Gew3*7ACngK%^*ceE#5Yj&GS z&n*UCvts~dT{Y269IqaG==IrZm+g+S=o=%TI7%8{RHb+NX~Lj0Y;iC(I=uLjx$exr zNoBmBbcplucTA^5jpVicq-xSUgIeX`n&ALUyL$ZAgZ5E%;l6rPx{wM^Xyjn-eJ`aqSScC3Tcny#3e57rQ#h6wkMeetpq6%^W!9bvknn#MSiZK1da0!DwC% zJ3H`elq2b>#vkl3l2xufz`b#dSZBkd)cs1k<$|Q~)aN1$r)bsaQx}U+Wl7`E&|AWMh9n5}}Bf{@JMLGncQ>b!GTe zBH^u`OB@`nShJJ1;}-3|r-ju1CYaK8Y2Os_|opj8v-S3W&LwLyn5?Z0+;B z_GbRFhcn$YZCjN&Ic6C5W9ShR1}+#8n@(?H1t|LvvRTZj<#W`3w3l|yXYyl4ysbIPhm3$Oyi)fPRZS`XL z6gJC+=^f2-^%9j5gU`F#ul1W9Hx@qc>DHO`#nBti?CUq#ey*`xocX>O3|$#7F`R|s z%gF3OlI1ls9_v1ETA(+YJDBP8e_D8;T{r%*CxKp-Xk|DhBe=%zqVj?Iih|_}BrEmO z*Ksxo`Gj`2dvOcH{Rms&=dN0OcPr6zHp!4j zw5YsDk}q)4t`L)5WXe$e2E~3nat+5DLo`Kfz_dn<#iJ3C+Ll1*CkW!EiDq%`Q_F-n z@IO+8tM}~`(&2L*s1+S5vj3D|EfRFa3|AziWqDd^y#05wLcPivT?7K*XEW#cVk!lZ76O;xQX$@76 z)A_iDZHR$g)eRTjuh*YF7fF4=35L!+6wFlrF5vx_AL#$*7ysizqrN~y0)qgn)W7RI zBtV%Lh$u2Gpw-Dlu?rI z&3|Yp!`bo#-!LPfcDqYM0L45{EEJtS-OcP%!M|!gv9bg*C334nnh3r%zm<%-p_(`m zH@gQ|ziBAp0xhPCk*c|^BzO7J@vTfpLnEHfG?MF zACDw(yZ|T}ef@>vn|i3i|7MnVffo_+OabONLd+_vu!VN$Jxqml6qY|Bwg%1=ezdKB z>=HZ@gW*SD+yq3I2WAr0XXhwpn z?BI*{T?}_vTE?D;L^k;fiym(#ydH!DuBMGofUC)++3eocluw2j(0A`@`lTBm)qCMZ z9`vciW+DisWqUOSmp%$F6fA&h=B+w0k?S33yOR3?e;H-oZB&3UJ_?47ww9>GD-Tg2 z(f*w8&G+zhmiosH11J@28&UwG!iFqKq@nCKGS(S!( z?Y}opSpg6^qKnI<$DPj1KU(u|D&yOPgB5?Y@B4(;D1VJu{PFgLZNottON?$$Y&)DO zsD0}*^Ff!;vf?M2E8gM_6IBpe9SDPf<*=8TRQMA$n(BJpTU^ck!vS)A7Cfg&HPRQ`_Xfg3o%k&BShfVcyksL3NCzYPGO>_w5 zEg?sU|CDwgKpFyb4dBhrp3L&?VdC|ReboLnfhf%q|HKfdn0L-Ol;u=1GK?wBTjJ~Y z7V+Dv+Cv!(?_38Q)c8SUx3_xM-pY~I<{PnoIπn z>-^`|PupwG-w{<}2%v@)^czxkmFt-3C;hr{TNDSuj}@qtmN;90>S}nQ<2WSwTUwvur{r! z0oEqo%dl8SxViEQbU?5HDaLcuTy47?xE+SQ3c$3G0Wl3qXoST_D6LE4Rt(C(!V==( z#fAsaAq5k}#8fyPK&=>5cI8aSy|$p1WEvJrY)JMOriUGu4{OiVr_{h{Sby@A2p;IU(>TULPyPX>eKt-G@MEEy_TF@(c^wrctuQOR2q$$B5xUZ-O9%t zX6mxOz^VCr+CI1>x`k~DmmyD8jH5I(<{N;drC(sdR%e$&i{zO=l0tA z2n?H8!E4HI7lKMymQ944)D&Q2kxS8{zlqj3u_t;5o#L!i&vt1l3N50O^Jkh&KyEB% zpl49f^chWQ(8^%*x8*X2Y1&LSl}^27QmL+(%CTxJ6Ww4?3%wjGz}L=}5wR0Us?>7l zY_8bzgJ~@@eXi(ltkfxC)M@njSnaBvXL4irqz9%Gl-T_Gfe5n!R^?1HLsPY*CDdr` za-wZgyU_EUz4URVF8rvumh6VvR0KBH9Wf1!For!N*qiR-xV0-Yjx4mhDk!}c#fW1QAg^I1|RFpyC3=h#r!c*ONZ<=oA(&X z@?lF%$0kLQ_moiYQG?fuJ^!EC6U<+^`rmY_6h00}D*Sp=bJ%$st{(URGZ}&4JQgH+ zK(Jh8YEIhPE%<^x%$DXG+DI{A!23@W^Q`mUzbWPnR%+Cb9sd)>oUvE(KLj29_bBGG zqno@P7k6XMe^bmCFUGyc8*|S_w?wZlJ_cbo1#NIbSJGonwlAJg}?mWS|iDx`D7N*fTEt$-h$S0>}>kcD@B)4+Xm1j9y{t()Q+m-N+ZgC5@C<(;pST`V|nP7RtwMg{2O?u$JK^_YTr;e`EF;1 z@8GSP7xzl{&zjl!tw+OQEU5+9-VaDA1#o`Fe=Nr%y=D*G#9dTx}u3Hcn zktWsn8o|E4ao}z{sQh{Lwcu|5`9b%(s_fCX;2duTKL5klx#xFGEswFy?j9Z>|GapA zJbog_75GKV>g)T9IH%$wzh9rq1V2`bT2%PTT{II1*?IaZ6B9SSalGxam)OMOIC~z4 zORS6%v>Sv|=8S&3;)wi7I_)~U&+7ybog)G? z^jj}qC9BX0Udy91#FGKhk3<1Nd=}bX_8SZq;UvV95n*w6dR7V~#Jbx!2l4*moVltm2ewqkcunw6Xuo&iZ>r;yf??>K1@s3SH zd(j%8GQ;HX zW+e8Ob95&O@!Kux56Iq8znSQuLAXR&c)h3Vy0a?-FX`-`6sJ+@{<%w(V8}s&$d(z!B2q3op+6$X#%7Tu(S*S% z!3vvsF0P;Vl>{Ol86}SZ6+xt9)g?l*mYY z7+WOCW&Kf28iVfp&lAlCM8a7UKrHSy?}EXGzjqbAHIA5oPp9_wTp!_eUd$b(YUlOz zHloMfDJ$qo?E3?(^9NL2c@1S)AF{rFeExIW&TZ91n7-65x#couX4c2q3Z?lGJ+zYUNenzA`>GyjR<0 zwPEpx)YA_n459%s{jpZWgKvQl-`0tz5)rth41Of_G=L%-QH@S+2RD}SL7vT}W?eRA zC zQiX^qU1*7kG9dEcmRR6@n<|4|N0WNnl!BD$5bY?+r*`x~wn%=HC%q0z%6UW^OZx03 zpcHHhba#Y?eKGiNHM~bYK#|Af4|x8U8!GvVCSGc3>=kpGX0$;;M{q45MxV?yyH9?9 z$GbhE>kxY{>z%ve!;k0-BtBU&Gj&B6ONnv+VMwL2L0p63UGvVYXi&{FY@%A_}L7iUjxJshRRN19LAwF_y`dRfdt{*_vSCA zc&z0UZs&(O#t{!)<(48IX%GXX&wD*1wDjEYkHJm?!9bKCy5EECe?hjb7!>6C;AV_H zy^dTm6d4IyYjd1ZD$puk4}uHJ0|nM#rZV$Sn5M>3E^~womM>ujdSH%=1y90dV~9q= zL$-&FiJ~4NSq$+_j1Gm--yodp{V3}egi+5hMM}VAlEI^Xh;wa`ijJ@5{>QBvHAnK>hYIHU-Dn<9}ouy zN11e8Nhl-6tA6wj^u1aV=gu>oEtoa&fAG*^ zI4QpulM8!jHx~eoHxp07l^QdBz~}|{NDr^7Y9QZBAJub2mZfu+T)>L2;2n)q>6vfO0kat+8huT=|2Vo&vM>0-k-p$+bZ;f2Kop0{Z(%1h(I! zcXPq4JDwvRnvVFIOD|5mjYbsP6;DkCloN`~h_0trR~Yn)a>NC#8@Cuxtz$fTJy%^^ z@{$6n$wFUUUtSxHxII)q4n@xLk#cI|gNBzvQTUR@To>voLI|RE&mdHiyMu5ru2p#S zA<-ZfY`LV$Y%->!3b_N<+ioTw1l2%l+IU%Cv)ti*yt_Q|ruMgI_m(-{bXl9zE0?r9 ztk5tK?8AOSkKfIXAmxef+}=nKAx=q3E%D$GPOFLT)dt1c*J)Z zmutw$VhZxR_HPtMT@(X(^=$Cs_#aQ$Fk7a*Ao+BiA-;zE+_76B@c8eEaJoNkeK0NXHXMA3}(XNQo_=p~Rd*zu|39O$nn z1TucsN{A7jw^>h+yFWRUcz4#5)I?uAifjr>4tesu{!E>)iRbjwOE4#1vAmeeVQ@m4 zKO#{KHqnb`e1zQx1md>nb)~wLmUS!HJdaTD;THb#S?OZh5M=Q%e2db;Mi0)#=L#xj ziE#|yyEcJB^89Luy65grS$+h}u1xdM4i4yhY-MGFcuhNSW-Q!6O?`~+Pmb2jhxQe` zFgIA`gB_S%)dz_Sb>=>mZ=guD7 zeLT*82LsiC(Rz<3q=+3(KFKjwpG+zZ_}TsbHZ-KH>+tKdo^|!F8NI82gyPN)r}H*t z)u#)xSCSqAT@9>fOYXA{UNfrxClDaV{Lba z#d@-?quY9_b!+6_q=9kbhvM13l`-RQw>B4{C_V z8AfD6BBuPdO7jb~N7m=asSab~ zdZM&THS;K$VMsz;ZAd|j1|hB*UczE6KVqz%Srzx%xV~`PV*8qo zk2;c4Wb-k1(3PIh3R3rJc_5Jl=^!8a6CRYsyp&;q7F05VFN6e#EGTv{c=Z6~HokCc z)xdaBxP{s{1$BWsxwCs2T^R6)yG9@xN$eY|CHvu+nbCKRC(-J z#te!%>+fHI;#D)4Er$&n0~{i#0fX<-x0!c_MYT(+(Qg7`7iTR%o$RSS%I|zUo^~2p zKHgFYVh(KOiy@~}%`JKF$~9cYm=|ylAy^y9Q+?lg1LR+$ApU#6W`P6%!rzYZZO{c8 z`QYQHqJbBvFczD-0&y=?3We;sy6pE+5UzzrAO+(c9I~vBIPvL=Y&@2<_#sMA@jw!E zz|?fUp-9LJTRC;nR)b+I^VYMSD?=qn9pTk}j{X5bxw_?PE2`S&kGLR5BXVws=ns^y zkbWR)wJ|khPgfh=pg|dfu;;U^?c3jaCpf&y+VIQxj`}+(xqcm4~|`M<2-U7(A@5$lgnJN>`}Fmms@>?ffpv%m(P8_Ww+x_IWCUG&3WVSULTXyby z=Dt=s*`7-L)5^30bjkoh;P)1|*l64WW;6hm0QO(q1_`lJk98;VhmxTGp?dYtZ7`|y zT>@C)lw9Fo8N8JzWluoj-#Pwu8{Bp0!v|>vo)+6tD7L%?s#n^s{<}QoLiM&UURE|V zEk(Rg8bMPd1kUs<`*$tBw#JvgW}7Qa6V|ag0WvgNMIGD6bt|>u7-@#YEpB=>8=D@f zx;0CS!y9sGjb#Shwi8uCp`x)1P5YBgB3^99Y==K4^K6N+*@U>Z7tDUS&Wv5Rd>_t~ zMA>?G4lpKM$qLf5*AmvGC?;weIcJ<@fr*vK6+RAePf` z!WcjBglv8=0w?1~2x6+~tH7gfnpYsvbUqAwNM_kEDdG(ESK22Wr^`V{)t)lQN6K9p zAeKQ!*+B4H#x7*MRBPZixLLjyxA=L0$Y&R=F50%=g}w{DM16bQ?-%_AO{7_Ck9;sL zgMPjVC!KzXkc??O9fhI^69^f|h>HQeYL$!u8M@*X2`NDab8W*QdUM%7rsoaeznWK7 zu)rkp78#c4E8z*2ty~eH&{l${g+JQdWZ}0=1f`rlcw*b7*?*tuyXD2Hc6Mez>gl_5 z=@N=FNb551)W>0-9~in=G7oLbOqNOJV@)d8D>193JT*-5z(x|qChpK8I2qC|J~Qlx zRIr#8k6&Fe&IXhVUek&WlD6t%6ZkqoaU5~we%S4k*gGA}QjB`TF_U$wF- zH%a}nhh1Mr1bjI}Wqi$E24=}0)%*+FmtQB3g>fL0&zU}*X_7dH>rqW%w zHh<&5lrn&R0f;&O0r@6rWfTUY4(`_QZg{WXnc-&UNHkO5k&!e11v#|zLAhTfwy_>@ zCi?RqL*Q3$4`z(KzI%N5s<8q90Y^i@ApP|sI6n4@4qY{sR~0eS2RmcVS|5EHmL)Hf zy9$?y?r|L}NOPPmTbmU+=zIQ;Y=H_}qxhY;tYeuE=`(q|8(WD6N+$g8Mb;~kW^!n6 zegS8CoR7eM0$msOhM)F0#N^1z*MIn$MhvHwPrx&eDU`KYp(UnP*oZ<5kNJ!hXvQ1@tadpvxK{fCT4FAFKGZs}$*8kN>&EDC2 z;7q^0KKlv0lVbv&bh$1t!w^MX)W<~73Wk@`w+B~OGn3q>4cBN?zVGotm@sHJX^M<3 zco2jX8QCd6ROYElfbX;##`G?%fSUzEiP-H$Z=Qh@gqis23KdZ(y?{wR-7c^H4pXj| z=HX$KoDvO!F*Qi{Tr&E4jQ~e@VzN9h3^(mvBS+9f5sCQp$``Yk3PoSc8t*7RN~xHJcxX^Y@F*c3 zzD@%~B`6piC8m!SGw=-!srVcvZsRX7fpRdz?lv4M9a;A?ydw85a zs8q_CHZ*D_c$_f-FXb+iAG0$!&YT-9<$W_W=IC>rwSrm3KOjHunt7bPtyCsBJ2dXu zew=dvFB9I9|LC)DoO?c6CVDn>_c7oSVEJQ}i=ik?ggk^Gp-PvF6A!CB1;?jBsnn#% z6h6HiKPu?Rw(*770WAM%ryH_T8HWrc-=P8GN0;RaUw0&#Q=-za4#XbNWsV583=l6H zRH)3)Po^$#7JSdJRomdwFr2|FV_2@x_&7hMbIG3ikg(D(%s{JX#=b(2$66ETe--!E zQBn4NxA-vR3^jvDNrRFCf=Q=zgGeb#34$V>GIS%|-R;mFA~}R~x0IB$G`|bH@AvV2 z)^q>Xd)7H;oyC95tZQA@%&fKdXYc*ppMBM1`;=M%>kpqcefE;)RpHj~fEC#Bc1xxWG=lG6f}fphk%*CL*-o<7T{I z&+~h-iTT2*3&fh1Og-*8Z$IkRe8^V_d|3JC4y4CmIS|@)c>x5t8z8hX*M#^NM$ZFq zriZ5do6#-pMSlVq-9N$E_crG(94Mu939wTBKf&2D`-);l?^PIs>NlLpPJCwpXidgd z&nzHrs>g5HgWs6`{4sphGfO3VXzMYZJ?cl4f4FSSW;(u3%Rf+uBf z`U-?<+X9cRo-{|B8z7`EBPK6*K^<+#7qqpzv>MVA*%bH*;H{Dtu8#pMs<1b)?h4R?WGh1dc7 z;G@1s-O`wmIS;$Y$`@4Y0-_0qV>^{EOpFbXGZ;~jre;UWF(!~B*eqqvj;oFNJ5Vdt zk?61xAf5%27sLTTW|?;hAX)!BOSbMb&Ulb+-cTN1fw1kuO908h z8M@aW#+gh6VyosG-PkOVS47z#H!XYr6OC|_pHxNV!uDqK{xtDVn! zqjBB%34a~wtdDJhh8Lg25f?cr9pl)`&-ji7?<3zf&j1o=M?F zAMwh(@Lw-(B&T6N7*f+PF9#8)L|$*#`NZ8YG>0$~X*T^(VH>*ecBpF2H2QW!oWM#% z1q5OBxzLMTqTr?frEF{rnCmo~PhSv9L8@1izFZqhNpg^7`@c5r@Pct;u8{*lxfGFI9hdu%9z?YzK*ZN* z`|6X^(f;WB%k!g^zu|2Et-sLgP*2O8OiI;0qVtN|Wi_#8A8&Of>gsI^V^ys3h};my zqI^@kEnq4Dy&nfE_!aw58O8C6nJ%g1m)oYi^z+%lmu@3g4Hp~2GUTj8nHaP}i)htdCU7`LUQLR6mAOO|@ma5b38xNlm<-EieX2fvR?=kyLiHa-;>R6u}T|3M;Kl zjytZ)0Gz>Bd3RoY2)cr^?>We%f*nt*sh3pS_D=3BVxNsKx5au? zRnv;vGpZOf6qbeuvugITg>J4n`tz!PI^6Y?v&nll3>nsFu#TcSXkvSyr~YEiI$K+Q z{Yfpwptfy9-qZ6Oj%a_?@(J|>v-1$Od{ecT9K*Jn_4#_0v7;$92a$kYAm2LCCGgZN z(<6xeA?|u|Ju0j?tY?Gok*RD3v?(KIxZn*gs&By2_CLW{;@@!gSI=yZyNM4J=$YLs zYm?u)ADR#J%!XI@2EF4>Wt(0j3a=UI+2SnDpWa#vtDV7rfA0il z1#11Tt+fCGrii#1V36>3AnC*&09f_!2A-Hdr3t)MJe={*k?r^cR#^OFtC{;^e+3Q! zjLVcylv*d&MU~}Vcd3j22+11)47{trVXC_K%US^ADhf2iUg2j6T$M~z>K7X2iaqLT z`b<4{EyF72+mJz?v2N$zY4in3CKBLCy{Dd-WJYq;B}*;A*t0h+Ucob&e6XYTtg3;M z2~8fcnSvh>x5ufNZERjO6`Pa7O9O@al}P_S($~1OLA8KS@J2Dumq+RGE>JQNt=1r= zhrTjU`u1BxREo4bD+WU3&SNKFP37cZe!H^@B3Lm_FFgD1&e_T7(X{Ps0w7{{o!&g0 zMPSgAq!?h{$A&c@jT6QuFv9ImK6$!VpdVH>DWgi{_+h{6|WW-X45m zR^6r1OY_D3KT(Rm@||a>aWYJ<({XyR z)1N5)J?os*`sYelkP}Ccj{SD-po!R@6LLe{aiis<^lfZugp*;tU9}zO{!izl!)g84 z-`rx#?iu?YMCqj)HgqhWUzPZ|yTE17HMy`Dd09Fpmg*&jX8Y95ru&zaPp^aIoU>?R z=ojZ3h&v$Mz0Ub$&^83==DEBCOvwC)tLed8nb}D~V6!wW%hwR3sOilbv1AuH)X^)l zEsNKBo^ljN(RgxEbHQ*jE@_`|Ehqvl%zv7`iD9dc9uck6w@PpWt0J3%4vW<&o6kOq z2P^3Cnp`kCFvh)s&PjwBR_(3OZgq^VI&Dpfe0N2KwTwC!FrYaOfAdT1iqb5Bq-@TTP$8 zKc6yfpC&%d;~!#APv5{oIrfHvyjoUJ}c*E=2TluEn-=^Q> z%a1G_i%tT&&4W=rpP&p7@e!bZ@1=l*NsgJ*J<+S_9P&HnE+k}%b&}84Uq%sM@>M2j zS@Pd6u1F=vEHcV+dKU+lbIRc})yktFHLkglT^}mmR-WSuS<4`aVz_uuSZA90U{xld z5Kz4+d>~61nJ*fPX^U6v7 zTacF1LwpqCPh`nd(8czYL!7l_qE2weQjR-53zvqE$6dyh;&6RMQ}UA#kddQpU?}w(sVtR5~ctsh1u&eqQ56(fKo_bPsqlBQU5R@YjmQ1PsoN$ zxZ?j=_5Qy(Ap?{`K1Y-k)#uG?9mnkZMw|wikXgeKU&Te-?q5yF`_W`K??_Jb^nZ%m z&nU-Z;g+1}VqbhK*nk6~p5tACd+|LjY(@)Do;d66k1`_0WPTE07jEm|ZA z0j+Cy>$OrkUL2PGQp@G2N2z>sKPf(0 z)!=-_ZMtau>9vF_shIZ$P+}?_K+hR=-+{pt6~I>>z3 zqJ+kc0VPxGjRa|2WFc+Zr4b34U_JQ#4veo~kSG|#s}EHlL_J?}zMbi=E?xO!m|p-M z^$sgZAo(BtHftgcWvA0%|-(wJv%^RMnzxgD( zvY8EYgB@beyAaISy%aqUwNG^<$$C8R!*J0)?|q^?_S%DWB9EP0~`X%hfA`=K#7FB#Z{16BEC0_WM>5nV@ zAvY6G=Z=9W__0!NQjX4@1z&IhD35T7ziT+*mDEI{!4!V@DRrm3vp>2g3J(b6*}I9X|S28(5fbp`#Eg z;N7wnwN8Lqj^n-8`li6j%o1F{*Vglkh3-Qi{j(t52K8Cvl4gVGYl~dIqFw1}C+5I2 zR*%kVx^z>BEwx8rVn=`6Wj<<3<&iD{;Y+RKTq@aT04*t)`Bf3G6vn>v1AMwQN!Rv5W5htwR?P)dt=f({{ijFB|>H4*yuWNzWP-KH$G z9r=@r+cqlVY{zAi!{A9jVcIQ;idGVVeV5MWjWWK@2`BQOak5mMA=Z}xiB*NB#e4_a zzYuvOMftPUo7eioDy!^b!#ng-SY#tinDFoyYn_{nffGYYK1LJBkY8FI{JbfTIEKx8 zKh5S4Op^Qb;GRw-nwk_n(HZJXt*0;>-FNhx(u++ZM-LZ)>}_3NrG0QO~?TKFE2cOQgAkQZ-*QDm3q56P@MFs)BZ+n-2=>mgWu@t{ot; zme^9ySP|7x<=LZZ>*{b>O*dAOydlOl9jXBNasv40NPKfa&Re(Jg4NO0Fbf_EL2er| ztCu0`nN0ApdrB`Wp}OTtst z^l!z}p;V0C2bSW^+_f67eR08U_m$mfGpxFMOn@iOYh&(#oyKL)yCjZ;@08O|29K+S z8%h%n_zeZ$j(>B-Ds$LlUtK1u>FW}>pBA3KDnV1(A56fJ!H_s9tx8c5)nNUGr_cmt zSu^N!em`fAbxpand?;&~HBYsENWJtVyXfPAy#C$wxPh9HyY&x>6!X?~qsvAcs9BI6 zR0FSWoTj%4+De8OZUk}Hj+47QEaPO|G|?!V7)fHTD5dH*w>nLoxv&-cdUwk!tab__ z@Ti6`Z_9?XY__22gT zS~^c)$JD~m+v}&QlStC|m>1apb7DI+LSx6$F1Ga|Y;R(b=~D9evwDMN6z=2_r;kIi zp`cY9!{qX#_Tv(p2CF2#$rT}N$1*QL>onELRY}Q{^2i43thbXt6nz{kGX-t(JSNvP z+E1#=8*GZ=C)ZzMJJqxb+Ln|~ZWv3R)($t=R&-5nzV~seUlO#d`98U2*M8b?&|uea zI{DKT+qnr-$iDf;)V7c0*_WG*_HAraJG+$C!?zV}P_omzO6_%n558IVvQ6(vVb}Ld zC|VETPVWm#)_+s~W;L=tb@14yzQ<6}YNBiEkgL7E%jTQqO#aj_X6%MeFGb4*pQ$4n z$&c-kpFb?WoH{1<`Ph>A(_)Qt>IBl>@TFYHVherh^c<`4W<#s%``y9Gvz@1nwZo0? z4$~(a|I}NqSgHY<%(bl21)+Sb6f4AYv6~7CX-x#eL^%IR#ggVWXbGdlOo_So6<|u7 zUDf;$VT6z!*S|5P{=a0EAAOcKO55==Hl~8H=;uH#f-Si|@7k&P&6IvurB+&eM0ouGI-03(&-i3%V?J7u#^vL$)$w1Nj@!e(X50?( zG7_E8zcA?;6M)AwjluXiFRVA|a^?|-^2{O5Z4d0{9WKnTqs2K3S5>JC0bFe{DWGWy z$#f8E%&INu33XLh5O~p;A?OJKz=|IIW<_7p9g9IM84)~!ekuH_AWe4xxfz@*OUNP> zRJuyK9Fw3;xRL#sfqQp$Z?_aZ`x~Pr9F~>Epazi=RCfcpDvAdyLQ*I35 zs6OajwDG^fgg@){N8bLdKSI4Vv$hsqd>W$fDV$1 zHG~^%#^>Fc$U=t%@z_1Hw*Emf9ou^R?01;ZrUCac-eS7WoLL5UjLxkOSyAFE4_XMt z5_4G%v3snZ@Nd6aOt+nS4!A+qmlK*}x?t%KG4B+aLHS?2&+W>$B6@hTst2k>zWq>g z`d;C0H-cHK!iVoQnV4UH@H1n z@Sc}|K7~X{1^4DFfn!0xg7j6CpBF4?|D&Be*}7v7lMsT(9Vn8HNz1=v$97F+V(Gsjn0hNQSRr zG@$Bjw16r(OK7P!-lfZE<7$(zuMl2@Fg-wzFyIK{d!s?G)d{*Fv>xD2x{T(K*60sN zA8KNpHqok3_UR5!;R%tv35;A))(!6~r)EW}ox-s=nC>1eH6K|W>)e%70|XDopNhU? z)Ur=-N54Z40!Y)fQ*+lcOj;#_AhJOJ&fWhIJXoToYyL}C`NuHfG3qn<|Fz)3|9~k? ziMvTjKnKF&)Z%>-?m!V`1K~CMncw7c?`z92gf;JHJwA_6qEBuW$vuvOP{pFyrb|!Gz7IpCXGGjeqgB4M3JDk-=%%+CcHRb|+nA@}Q zLks_wd@&eS6x36|Pjid0`JFnteCzuCdk{uLJoVBXFDB!kQQe-6Kc>Puo z=Yx5+*%QI=hQprs<_BG~$A`Zf`&u{=r)+a*>y=Gd6`bxj*k>_$#;z0=PbRrnj0SXn zcrrf#Y$68X0N5k~0y;hSCT1hcc^oHL`pvTPs9VZ--6`PfHORRHUL~zN-3qp5~ah!_x$?s!M`88 z^2HO9*_SNIkPbVZinNOUnem^sfs^l&WjV@e#~Vx9j(_)j-~C$~_!IH|Q5*OJ z@f<$quzCPN2FWTQ$Pfu+HRSE({JOy-HVSEhW$UAFHanBd6%DH$N|zwkOxl@SmWLm| zkC@*&GMlV(`YG6uP_gHhWlXq{SZ8Z#H(dOd^m%-(z_;~;fXnQlgc|dyk?gJ)u`{Pf zf22+K)}tF`5w2)W4u{Fyv*%18l1t_5xgFRvSWHHi;)yB9oW!q62KWki7uUW5G6`_U zfD<)&39t01E(KKd?Dr*(Xe^8kwr4Ts0fch3WM>As0SGn!QJlo&Dn757Y&+&q;Vw*9 z^PMIFZcBH+}>su^njk zk_kb_{P`Z>q=Y4#J!H)!4Tzd2NcE^1OwPDq`QA$<#GPZ3l?0z#y^7jh83}o7c?A_~ zrs+m4m!?mjI% zOq)rFgP*?6t|D4IZ9K0)0k-vgZMTuu`jCZsTV?SIX_q20Jhr;NGMwE?I?mR;&_|p5gG!Qjk)ZlK>kv=| z4&S|&I!7ZvWcf3EW|4d7lLobNPv^7amLB>g#`mRd-pOYBP@KhQ({@YRR6F@{Z9G-Q z)a}>A$ze!7i41OU*-+r4t;gT-4Nm~j!LhfAtGt+akfZ9@hTuLI05S(kmR$~!ml&5+ryfj>udsmcvnWkl{WCJqh0XiFT|7X5dEzU z{3~krUq-?|NA3RB2L6cJsWCuptGjf7`23p!97<(9+SgzJ@pSaWy*1_Z@9f1^5@%5* z=C-jje-&;3wA{*E=@1)^z!?MmtFXZ9iXGZfVgx6wxySYecLG*I7>5%J!t$g&37nEe z(O-SpYhAOK9OlWyZ*xrJJToYCGPP0%LMcf>i4!mmK4CZKpm{cYNZc^Xc}jk)1d%99 zdd1EpFg~Ve{cb9}R@On#jmiI(?%G zDpm^=pvqHWVUfRoCn8Q-H&0Eyvn%h8b>8!yyl0iD;UdR_d_Da9=j}2hC2>8H@;xQ{Ytpw0ZM-9a z{x0mVfue|JpeVu(D2g}*iXxVQqKHDEC<1qsoOZq}`}W<}@&Q_mIfuw}m%G~fY})0J zfr^SZnOWpu@V}Jfa{wK%KgN;@Ac*~^uKyU!3v2>u1K!~dDoue21544| zu>N~gdqLC_-+!zh%R1sU2peX)f8$5yf4?mm5ES?W;oJo&(~?Vt&_dAwm7YIGiSDa6 z3^OKI?4Imb-c;_9>X>^&Prb+R~=&7Pt0H(9R}m1x)PG00^y zT0YT9W<}(Le*ZHj_>ZBB|MeICjA?}a8PoV*zZCEb06hhBU7H8zknWYDE92(s3s#zE zMuRbkQVuK4hX;`Hm`>R%Yd$fgeDdrc!iyd#e)^%~&}=z0W~J_ql}{;6ef>mK*#-U9(Z-ZC4lf^e|ZQg-|vxF;kN$F zS@hkNYx6)BnZnl-J01IUy3G3JNIK@%;OmiCL0$40zWO7B8AX@Rn8CFrf`)2BfR&5f z{7~f_E&Ip`*g8H{`}t9!pw8)jZBo48rBJ}xsq&Ihd+pu!Z*`|d7(V$UE^#Jj1AE^m zKMN*bZ2Wq6KAPkxad$XLc(pn@MF`tnB1PvM#GI;jb|6WkdQ*#xT7~?ua^BNmb5D)8 zA;R~?liMdMNkYtV9j_gpKr-a~mR$A&IO*@){uaba{UF_c@5pNE6HPyJALreZ-C*I3 z?dM5?3MX$Et?svV&(3>HploPt%>*ScPhN zWmLuHg>SYq#mtkH=gT1U?iXD2?F!a>!N>gq8m1<<9q*-)Wvet2=VeBni2J0aHBf5m zJ4B*r&7^#m+&*d&X8JOWL{CKib z?63KT$?E8!v!KM0dOebBA?8NleGhJ%Rfl}b^>1AIP_=@{i|z8Ld?fYaw+iVGEFsA6 zhBZr}vJG8?wd+L`Tebd6`s*T^cXFn#N zqt+^kCtZ569(7*k3f$zLdmdn}dX#o4d+7hsCBo#<&yn>_m7_zkh}xxHhW)ylEjF`R z!^0a4-@Cu~C$vbLZulp=SL+kz2G>y(hOMjz!u>5$ae_uGkLpmH;{7H(SvP$AE z`5!WJ4B^6y689PJTDS{2s$hMy5{c;2>;Hrxm__)~V*ei_2>*V*?!U}~|Gg~!Cp>?_o$D;VYUCY1Mkph9 zpDP7061N%%(`hRCV%)wq58%~GvJb68HI=-@ot1seYurO=yo@9TOuYT#)IyhF86s*F zomloMXc#sblJ{9b4So0HFZ2u)lKn93oJ%M*ALlCJ#;W)g4CMq&WrOsf@GS6BC{MWw zi*9II-U&T%-c&AqxeO}6yCho(e@&^KA~Y>(xBw=yPIqfe1W;EkrH-LZYp4^8BPHwyu?vKfA7NhQg8sJlz~%{%5E-> zL61mZRtL4;Y{CPSaZ5-O9-oA$LObJxuQdt1jb0Ha?Lh9rGI}u#;-#pG5z4+eRQL6P zhxOM}T~|+H33u`LM(w9F`6LHrL_6&UU0-~+pr9u(w|5^}PbN~^9#)ju#IC+5 zkvQ=Td+)IEX~Xw zU1-vys@Ry?bw=saX(c3{?#W|ztK*+~G%Yck`wKz8?>=(~Vdcn2_?*5jPKrZafQo#r zrVNBuCYn!{Ol<;gtuvG!SF7|&24iayXe^?an2-o(N!FSuC=LylVwTg%26YjcSBQs8 zi24h68ZFd#WRV^|6d$Qo)qVMV5aX$hGI^>lgW~8I0;|ASo8PQy#0@?xVH+wy-{IX( zj=aIinjXYIE@4GFm~`8&sfViHpMD@;@v_jIV_KjiuOW6R*_vIs4FldeW-llH!$O== zdkVbcxM(QgA4Gb(uKy`Y0+Yfd+gDVz5q3M{6CI@nq;EeP&Fp2j1-dWfH83GTqAS+qeT_V{6Ca>5obX6;NXWH0F1gA5l!rc7Pwg^-`; z+mm?wcKt6@%Y9Ubk>cP*xT3>b){6~oJLjcG-;UqDnE4s-vu;&VsOMX@zI*PQ?7J%i}gh zLB?3Z^EGXu@S(jZ1R_OhJxgNS%ipZ8-7 zksGv#jvFK*kX*h2XmPag9VMu*!AGzX z4t(AN+=qcr2B-9O6T*Rujd{R!u%uVr6k-%;g%J_7AQ6PNDh?c)0urJ1pgnTs&H-`6 zc=;f-VW|ioVmA+KH{mKzuM9Uc9JoBl2j1_g_}pia*b9EoOGF6`%;klZ0x`FMn=2t0 zL2wwY2dvMPEEN>E=zfZVG^j7JT%S|ECmare-cLb#DUr&j1fDGu{!LIUl@m`1KDvH zH@Pwyc{q=3;X^I&{KX@vEh4C7@5mJbkU02r;AD`hBGMh4;tmr5897A4zeL07f-zv& z#twn*Kf(kd5qc&uHssj6N{C=cY_xPN>{To{1>DdP2ZqHYR);II0CyFY6&wHQN6eR; zIB-)OD;9qQBE!&pcEZ49>dZR|Mf>aDZ-z%FIZM0p;bEm)e~R*6o^5!*YJ;o zxV~o?m)j7vT!`gyH0(>PkJ_hENJu+G{$5q^g(N7VDcEN&W-=#8&A~OUIkoMIL};UV2T;OR%-u#3hKax(lC{hLXMY3+6MI2cjV>V zXzCr5EDcoJNQu5D%jmXa8dseB?SZhM(X@Mx>3xgZ^DAj_KIwvaa<_MlyfEGiX=R}H zO$D?*%o}CM$;j^g60|>=BBMlTgPRlJLbjjXK4B76+opm z^|A{o@=JL0%e3+<9P_K<@@s1H>n8FWPV$>53YvKfTC@t<91A+)3Q#o#-4g}9Ck1^J zg#)~WLt2F+j)h}!g%dS}Qxkb{ScIxUmWPIW7Yq%L9*mPgujz}z;u1K{^=8#O`w?0s&!EA@J5YLQ*t>#U|(lSJ^m%kYf@}dOegv zgrL;|u2PFPZUJ|nDdfE8W#8(7PT9e zof=l-8`f$YHYOXkP8+swHSY2??rS$52IRwKG>Vk4gB%wR^W)Iqsy^@yN|MDgMQ(WbGXMY^(cWpq%u{2-BC?KibGE0E_SnooaL60 zx@%-hFubl;~>e8e4g1_-rl0CqbH>ELj7hNWw-8qt+wT7U-@fV zIVjb_A(nC zk#=8(hda#IaQWpr^`hx*{hJcl9YJR<-jpb(=*GGB#;iJ2!4#_K427iZD&g-c)9I>k z?y5@Ys;TR$o9b#f>uRFxZszZ9(dlk;?(RtFM%8t9Pj&a6b@x&B4Dk01>GX^^_lza< zOw{#EP4^~_QBF7Wp*>hvx<_pT=NuGRH!O!aP^^=?ys+vWeZ&o5(0@$w+y+ezKG zv#Da=M@T zyq}h8fL>sLQFq{u%K&rY0BijK`}6?E`2ZKyAh*Ea{Y%}!hc1JU69;+g2l=N51ix~ZjItl4a>WY+)RWF z3r|Sl_s33_+iByi&EePJ;sq<=acmK;^wqfq zR7r|dB^AOAT;RES;}mq|;8zp3<_Vi`;TLL8J)P-qPlOXS;H@Di$=nDH>*x7D!eb_9 z6k$~XxOl4|f&lI5%FRj4`f0D8+J(8r*S&D(0J!nT(x19xQ`2?+plL+}o;7ayDRS~m zzLIgPO!{4)7*&P!79maWsDwbj7Oz0MDZY??VHg{ORaz z4xGg~!lu44vk-I-Bntma;AlYBhQ@gwc&@JPS30%@dl^2!2RV+ABoGlY6pAaf(kR14RF3-cu&zfHD`Za@2Ww-It6^# ztsXvu94}kPsoxrpDkM0vfLdL?ot-#eM!r}!4JM`th9};INo>vVClT{CmeQvUzmu(a z{c&p{Wt5M4ctdbb`CfmyKsnjvUYFi}7ie>#uiV~zOmTba_RO?D^1Br9Bd4jC`cT2s zFlVZ;gAD!-q6R*N9n#QQ8rNU6oO6Ni_Dzc5K>}M8#dt!l@Ya-{r0|s$96`rqvh z6)g+DAOyc6;7gjh&>Iz2tQDrNk2xKuPa}X*SFQ+FzT_mh<$5?lbwK2@D(O}&&jC9Q zKCpj*x2i83h{7X`GOg>KV98ME0Zcg&a1!zaHugq+A+VXssgmXu-_*il7 zjPwhxYVfbIPknT*2c(ywM;9Q%$(ipWFUu;ocFA}4^lxqQ303%i+M71tw6dt^)Y})& z-<_h~pG~TJku=Nk0#5=LX4aDGv_Kf!D3^OCFs`xDDdr2mEwjJ!Exy2?{Je8_`TZ=g z2VFw6I|4p)!=9W+Lg(prXNehM>&?l^jZ`6PY#Olks-m)pkMONv#);yI@YffVPfMBm zZ#DSL2r5iP_p7$$66+2dAe_INzowedUu8 z9=H#+Us-y!+DwxXMGHM7+_5=8g{KviB52(CApNr?Zk%j_${l@M&$DoE7-MMk(ae@H z$esjTI*_G`8*scrvA2~jJaKJc+qJ|GRDYUtr0~gQ{j*lv%EhwW5c8Xb58)J=@@k$B z4(+z*TR$D~(DVT9vCgje3cYBrM9-T&tMigAME{%(fOul~;{x^DRKzk<^X((<;# zx7Wmew)*iuxy^{rme<$hr=Z*~P9Jc8SBkOotD$I!!n{%&orvX50r?=WS0iKTJ~SOe z^Hu9ZR}x0cipetZx52@z6GprxVWOPrOWhGx3cTx#gk%plhpfK+ta4WErkC{(QxwI0 zu&*Q`enZ__nJ2y9f@X{?(pp7^t$bfaj_1M7O?ke9eN`o~n>IrsFIZLxRaDh&)SqeF o9MlS-Ih($ diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockerfile.gif b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/images/dockerfile.gif deleted file mode 100644 index 1d36c3fda584d0a280ac4e7a359b6e94187c9de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142578 zcmeFZXIN9+*6$qxhE4(^AYDZ|2#PcjgM}j1f>bqv(#24um(W{)&^v_Qi}X(Dy@PZK zy-Sx4Z}h(R-tP9i`?=1CbFOn9zQMZInyfYE8uLH?zd4qSoV2LOJ87T*-T~m}4-pX& z>$U5I_ur8}GPv~EnBj>IMA}4121Y4sdQT2UEpNdnZ+J<;hD|~Lwt~(h1)Zl#x{S*3 zJIV%kRrIeuci?$$toU5_i{!RerKWn&Q@H<{k4t(yKacC zuCANz$4BpNi9W<${Sd1D!IDcaOhV7cU+)t@KLeRBKFmaS@*L6(-5PL{ai-Zr0Yi$7aEvP!D3wg%YrlG>Ef+7t@g!@qzTW@CzaOksi@ON-~8|7yZz$i2^xHkNoP2O!h+}75y8f13L5rvJe3gmjg$y1&+uDcFLf-E(cBC z3>q~I%1sS&p9(@L1=lMDcRmg2;|(2C3GML=&GQP43k?lT2o1Ck%cKmSyB$9MEPNm- z99a$@!8d>*~R(U`Of(t%Ztl>O9vMh7r4oP?SfS4$;%gyq*R{V z<`=-n`}wCMf=fWa1%UVG%klFy0T5jP&WMLN^3nBfM3=d>+X@mJy&yN9#>#$4YWAbM z!ynu7EV(t1^^q^5TwzLk$fbQ^M$S*Eoe=`M9kFsnY27iR7ORu(Md`f>P&X2$r^Oll z$+98buRC7EKXp||ej4|*Bx^WZy~t>)qr_M-ov+51Nxn2^tjJ(6>;9T$?nIgXex|#8 zS>9BY+|uk+r^u)2Is`uH8@WF8w`h+SvkH?|1#_*a8}e4M&rRROge}lCtq<)iwxfNn zuZxkt9qb-lKjO(%{Z`ypAZ7h^J!;X!wM740Jd<$gW~A3^bH;c(4&%7Ig{W7xyj^;yXj2e4RMsS;c~C-byu*uG#9jO{fjemxAOBX$uFNNFU`y~_QXSs6pp`rn0;XI zw)WJpCYOfBEbC})96rydHt7Ng7GZSb`(njtCQd2B>XvoW3+<9Gs2=ak8c>q(4zE&3 z=jqM7bPY!?&t)yQwa9KC~*-p%$+a2HbAXl>QB;2)-P3jGu(`P2?O?1W!-!NCL z*SA}fO{+QE*dio8hSAEWf6HVqTi@vvXyx7Q5*jfn^5I;_+3k@ySl{i167uc!J*H&} z0?2aY?hPo2Z0rrH$nfnCy;S?SKdi2wyZ=?&dSibC=Ee78^nJv~A7cjTxj)8D$~JyX zz+3qaCM`!k9!%LR3PSiIc49E*9uzsPu7b^Oiwn-m-0@&S08*o*~G{z zHf}W%emdQ5>vgpJD#SVEu+t}V%WkI9}Ouha}LuFqZz(legN8;^>|5*F@n?7 z6YEiW!S-S)Y`uk;Bsc81)ip^9BJKjh3QVi%dT2(!Hr?LQ@s->4I^OdZ0`jW>@>g^P zJ7gvC$IQH556!Y#8#D=s@0jZ{CWGC|i_bsw8nKzYpG0NI6%A9O0OC&ul&*p0Oi-XS z6XGAyhlDi3W}e=mtmNuP?K0!f&4aq8hZ+bUv+5`!fD#NGJSDO!O39H1C-Y=yK~OxC zL>c)Icb8MaR<2q$;{2D_2yPlEMojL+gmk8YI5LIEQ_#+aUE?evdXmNDmpz11q)4L5 zg`C->n3EnybIC;M@m+Y6==i z<(ueal-OQ$ze)Qt*djuHvr(+WEOc%_$!zxCTe03IM)trnh4)Z!aBq{u?ZgNZgVdXe zrABXrlGS)u?uk?m7}pA=)hOsMn2vY8{JxX!w+^}&cs!J$RFb9Ez51%^c(@>-Bu8Iy zO>^S-Yk5yeo^|)yo0H=a3`J>ym*Tn(!^voyQfXmC_qyJ_ld-;l(&BW*4I`~8i)Omr zk`4Klj}|eaNk2;MGABQp)maD4hZj{$WcNP{x1U=6Xsj_z{%JP}mAjc|Z4)xur8KBD zJ*}8W`HsvKL8y(zdl~I>|KrxWc-fTk%^oy^(rc*l9BlyFjZU~{JHSF49KcD?Tw>qw zj;LXd^Fq0T&Ou;jJ?-Iwz<~{orqdK})9E5Zf>?L@8h-3aHQ~L8yw?6}C?|o3WK-(I z9Hz{c%Sq_D{w*2irh))#NF$33N9%pl0N1oz5yVW+GD5;m`^G5UxmeV3%N!nY=$-nt zmJ+enUb6uIdyOn#(XB0xGl5bj4lK#gik_M8S{0udFQ2OuiV^^covY{Qfq0&GzB`fY zFDK2paY&fd_iRfbljw(KJ%_|7{f(9zaHkQ9F$PlTTb^!22W||CG5b53oH8w!i!(Gq z1MJ|8Tb!GA>$(%$66Nn9CK+B2e$0RsP9?XPS!zGoW6dJpU$!H?RWQ@eNV3|=Y%~xy3|WBQ+IKG*jsmg(0g%yf|FEq2%so}Kpg?H zK@deENXijpqX>#a1cc6oO4Nl~R)fy-aWgBi?<*JUC-C+UMvO$SV6XHQ9>Hg5T&D?i zHui)F%3L^!UchKx4x&E-(XO}XRE31yf-lL+;p=eNxLqO8UAip8ape)dj4PB#N#}{X zsmD`)q4#p5_gVGy6(aQx*Z~5IuFt$5t)&R5W<1tS)zwm$;usQA@O~`5@21On|B5PC zlBH)*xQ4O!qmPk73O1g*DH;~C4?cK*;&%5!r+V6ZOT6X;od56=kAx%GJl)Fgzqk<9 zZF2F}4fpW3d1TxyXXY-X!08nx`#?ZXzbMrkh;b(+aE)ub&zR^TVc^x;1Wy-z088`m zclXSVZFO z0uLhtkIMs3M+46f0|8f2Krs}71`1@0B8ozhRG`SlP!vZf$kiY%8$Ap5AR5~sx~L%f ziXg_ZAm*bW`4*?^V!>=0!R)rdoKeBt6~Vk?!Td+T0#`$Bi-ibjgb3S)h+ag6h*yM2 zjD<)Zg+Q-{J`@XmtPv`08!8(W`m`ccVJuYXC{*QY*mJS4ml|QOY{S%}!Za(ww8z5U zL=nnyKu-F|UwDNSW5LDPFr$iald*79!_Xw!%T4f*77mEvSg=VSS(UZLu1feiA@O4l z$a0?*R|MHf0eA#%p(YX`&pK8Z!$86(qbb(%sua*dGjd;!Zxm}hvI_p?T= zTT}S7o9!1+2%1sc+Kysq1Gzi`HX=^ zt*!)H>pQu@Kc_^Q4`ac-7?7Jvtc;g=YlWFD##*=4X#*1PY)xJXC4E*#QVb>C*rFhg zMl%zFPf%pBD|T3pIHoc*IZ2%8h)pe;v>hE?i?zUD!Hd@5c>wV~ERkI!Vi)?^l?$}T z3UMM1(O&@vXGR-nIJWnZ@2QZZ;1qk%#HKBZZ548RYl>YgnF);i98Qsp0rf+{%UFk= z0+N1s>Ny1L%mo=OphD@#FndKZh$Pwjn5%I>I#Ljc41Np2wlDgbyW_%p&wVH7bx10AdPcMs5BTPRx3N{x{1J005 zN9QrnMsc@VuXKP+;NkO-&zhR~FUv9{TQhaGGJrgpGlm5^0PvmwiGxg{WO}BKKqe!D zMZB-$bK2y7Omudi%^H^ML~dR`oO1!N2>=WS%xNVnOc-_t;>XM*tpplz_#dWMp8sNBX96BI+anaF);fJGa<2Nmo?)^{*~y8 z$niQOnW}k`im#gBbgpbQ5t6JZ!jh_n>^^dRV#fmGSZ}S=Y!unLk&|mwEKd;G+X|1q9L1L=(bD@6bzC6Lk3N1$(Wv88H zZdh<_NAxji3tLp7EiAVm)m3EZFa`PS#F5LU8M6tullQXmmTx69iA`1kZx&?MlRCYN zBAl+IT2qN=_07R_*n3Z!4Wrv;GRwbmL$kqo z#EXTmQF%#}F?;3e*cRsV)?V;Je7HL~t!s5K)+(_vK*}UrREEV`?G3|f;SRHw^^W2t zs-nqAfjzS>N&Oo96I=w6+N&D1PwVEN4lJRQK9dz2mQnTSJAJkV+d|2f;S^2qf!j|* z?)nbUuUdGbNy~Uam1t5YAL6Q!gzSRgjCHEXcC$)I5|>CG@LFkHl(`9(R4uOGvL@*q z^X05Pj@7T9GiromWkhBy!Pb`;BaqCjPt*jj5Q+H878N@WC2N9JOGwo3pN1kTsFu*9 z*s@YVv%b$~V_a8@(PwE+>r^3py%zV!vueh3$j4z~dAf$9SZnj#*Au0V6XhGhu3MxP zQxmmk6POLNI#w_mGTGud*`_#x2GG>85;??8_AyNjIEGbiP~+kK%?Nq|yoLJ}=M51N z0QN5t{09flan=z9;1cc(UO@U$jC5ZD05CYu^>SG`LBe@w@5*JBt^}NQ#G*Nr4%Th) zpuhj-t>Vho=5943` zqS|*sJDO^G04;ebzR5sv85#gs6t-F!G8DvXmJnvl3H-9y6vzkq?J;3-Pl6F}9d|Qz zI3tZwR)ys+M%ufFwvcP$)CK}G#eQ@g{IPnUutNSM>FxMqDr|C|?8=^unFH75oo{LR z4y7x9YYhhqzCrpFrME;=x;@NUF3Nb8h%?gmIS`qMbQPSDMl#HTNPAgiRAM)r`88j; z!s-&~t94b!_hmr!s#k#V;uqa{soONBs--q7<2CjrJoPn-c;(x)0O)Is;>A$PwQ{=I zf=>(nj=W%_4}if*iGbA>vo9Sn*$oO*^xP|bzt4$YTyPix%(#1U|1&`KZot0}&@Xe) zXtM1K&Kv}vxhO0vv&jar-#^A@Wxd%N#{1gH{c6z-#qi@dz|o2q(4Hs>+kr!$?KG7n zns+4L8intl0ZdOX0T9K@ERH({P`=XsX=U5HcROB)(qM!{n5W=;!mm;v*vd(^EYLyz zHgh^~4;liX#{FZ4fJ;O_XHLBv!Pzy5W#yR$cOauAl8ANovG0|e*Y^m~$;}>&_g)PV zK2MPeCR4OZaVdn!hVhbnQlq}SdlUhfJR}96Q@b7<&-b@!nA~`3dzG?-p`02w`sFEV zzEVq_N49eOdar*Uy#>Gq00XFSqZ{BtO($CblX3=1dZ zJye;Kc4Xr7r3O4tlnD}g%1qsUJ5|ab$bbED`G9{N0PwQ*G+CLM9AN7EftPD@_Mt67 z5HNDlGYNqP`d<6&tMY~_9hfIcM)bE^Z^8{u{%dgkKL*D_af8!SN2<(70f6+}dxU_b zCRb`6Y0JoG$+bRL9+4b+3%-}7XJd)Z@eYPbUj_3~(9u&~^W~Z!`dR-!y;R zHzAXx`zZVx!jF>txXSxkf^+~ApDO{haSr2uLoWI;7vlOuckmQ0(ik==XXm~4WIT-G z7Z3J@XS|$&uxGfpKy;4_t^Ul5XyIm%sA|$M;&0FUzn>TX`)2@fc~=^je}9?qDdM!W?y9oQY2<<}vt;a#m$m~j0-q=_=R`atUo5tHCVgYjX21VIKfKS(Avk4UqdmzIuALp#M z#+dG`4|^@uHM4xQ_pIod&z!%=`CX9!KMtkF02ff<9r6Guh-)78n8t8ENR~ZwKKPOF zC4_#q`1_LH_~0ST>-9(rRs^4C~4By?nlO1yTeY-H8CGV_S`k%Nw+w zdZZPK_yeliF0**iA-ME%s4974iKegXHkjns@)Q6BP{+W`lsvoq%7s@Z+s$0dv4It)%$ z8DTzqWZuC9Q8TSZXPjQ!H))T4nq{A2zO2TtW2Ly5b?Xlko{vAlk)+-PeI8`OS>*G^ z9xI~v(}WM>cjxa;DZSuY1&|;Rqlmn7zN9GJwaQr*n1VCm%LPxmL~a8y*He2Qov2#c7k4xk z^}g&(w)_gvWy%B44t>6rS$ik2nB$E#|Kw7c_2$_DZ9?rwbJuhI9*c2Pi`&U#E}Q2E z6|~=^`yW}8+fMI9uAZDV@G(!Hw`(zDM4ReN?@K*AC}hFYP!+7l_KHy z)0)=}u&BHnx5`L#?+RJs@~nQvOmU*SY?TLb6i2LQRL7myu*4n4)@xa|B-)K;4@bN) zJTR$1h1iLBq6;tCrhZ3P<%hCyWrgqP4P^1HzLB&V>s$`Ft{G&)R-IIiDi!0i+xCNz zCDUz&Hwzm1`9Xz}=||dHge$)oz>zl?r|7EQ-wX_}=}KlkXls=`-VQ{NrLYppwLNrt z7T~Rra-FulO2!%{xoJesja^nq7awWwv8vpS+d`&GEXnoSjqk=E zcBM-mv|sc(9q%Rp$TOgXPy1Zy_s~R&84qbY`aH$=5+VK>k0(|FeKai-gxUL`dcNs~&cjx2fq5l&<;cKtY)q zp^sIb8Ge1>U_jbI!tpZs>2T%hK-Me8RO$PTs6xcS>K+@dS=zd{IQ?}Edcxm@9w(i8I=cR>_Zt$L}OLsL5h8HAC_MdXH7pvZ;BiLp8?x zcg(*u-fM>cL@krPAdshmg4wZGD2-RODT0Tbu3G)$`Ky`@k9uD4qQWwi;83oydY z&hw7#YNA+>uf5po@ubhB{l&y_n6_+=k&ZPt6u5;^m+W=aL)HK3}J1L zv)er^fpU36qv4j`4Tl*>;Ne|{0JyLG=`5W{TJwd;Hq!odu6j~b{r>%J2e;GtOBZ48 z&s!UJ!gpQg(=S)(!}3f*C$tmgMqL@KdUoTh>N{QTR#erEZO1U2p@(bBxcnp)(^$?{ zsNxE*8wMz*KRR2b2s`$<%5Rxtf3_ySDL&e&^dm9iY~8@wW_*OgD!b@xgUd-phiR`Uj z6zM(cu|MBMgKL&$l#d5u&i68uYgW~IkH1!(?-vBttm`Y=S93^F&51p+H10itvr7e~ zZ`5q%XMRoEo&`Vfx-sn4>!5d@XaJ?P=ntPhT{U)~uP3zL%k6d4m9#!`qp`m@Xiex$ z+OU7}#Qx6F$fi7x_1TfSUfrq1)$1)T-Xhp8C`J(s3W>kKfWuo z2bCkTUpl1EA;{=lvVghg- z=AvGf>RwhhUN(_lcI93Uhpx>~grlq-l+HV~?6bS5-HeF0*Rt(Wm^bxBxp%CL0e+e{ z%Eor1#VAnSC(KJ0EA10aWb5Pp>QSUmLYs|WsGg^~uXn3#@k7RD8TTw%8%++MX&M<0 zIzMX}*TF5)04Sl(mLG-=iOC=gP$4Q8weh%1=F0lhgxA61w-VW8Vv$3fNDYX;L&T-w za{oG<8!u}uiSeHu#h(_nZt$i6^@EYDpeZ;cw!nYk(25g+?8ky_SwU-C6irz0nk>aZ zfj=iC(72VL{*a=7%kRX7e16L>78Y1X2S#C#3alu@bbpKu#nP5v4;K6t3a(owJr^LV zD+ecIkl$p3KIjM4c@v)(P+(yY6c)S*CkNq?^%Mk+Twuv6AxI9NU|ks$CXz5&g?t!A z_M?rsUxmC93rm|visgbp6IRf?3K%0B+(m~{m9wgk zBqS0fGEo7a7l6+Z#JU>64L0E)M(`VCN$(LOlM5n-Wdp3_thl)Xx<^A?h^^e@A~6P$ zUc^>5nUNTxNPizIP7HyMVXy)$JftEjb}TCXC<=WwI!P=#MI$=RHaa6JI;$c&XDmAJ zD7xTkOrcmzu|`a(ZA`hLN12)?4*u{*#*iL3_%*p>#NgkpT_~@|%Bsgs{;(gl7H>F; z>5?=3PG~#`@a_?dI~8^uS%K#+U#%;P9lywY*DLa}_lluZ$*W$O*tsLa46FF>p0MNv zn~jR+bzUx8V&nmb`n?=+`9-37@Kxv&jHK3C${Q zMh9pHnnd7u9JSpCTHnO2Fm#-aI#Y)k1xeDKE9hj|q^YAgkZ%&bRl)$R3@^R&8FBLC zA0N;5wd3&;SbUS~OX6>r+e=+aFlvs6`f4nCIW=uN7DT4dFFNsyYLbzpK3o*93f ziKfp=63Af7v_n zsO?YkL#b6Xd@)XTK@>HGjp!aFBm4s197QU$Bm1F6C|e31QX~%jkeX2tQx?~?f#z9@ zx&cu*^uvDQr{o7wsqz=Jg>3hg43~%cRs?Rq0w2ZXT<(PMYvtn5k8#YGZo3l86(j}_ zfkQv2icpgJqB?`n9#|-;oIgA>Y-qW-T_q3$D?*ayGGs=&6$DC8Apayk@Y1z5q~VF5 zEg+bXIBG+n{D$pM^0Qz5C;7>)s%#+oNq!`G!rbM`>PIW{dCDf~LVl7TOmQu10FM0l z+WsOxh^jWbFT039HXhI(48qEjOS}da>MSOSiTIQJT;R|Ttm+T+!(#hS=!Z4pC;CCv z;n2@DW5_5RBIHxjkWpBtUd_~rJTZWLgx(BI@;{hGOAlDTllNpdFkjiFKKS~=NPU8mmIL?6O>63Qr1 zw+xMlWUa-KpF6yNBR`h}Px z&Dr6}1wq5uT9`s45hZS*T7rAI#wNeW54^=(K14I7=qLF>1;OON(pQ6U?v9rWZ;$-JOuhM*RSU=~KCQdKtc+b`99VTmC>lATtV+_RwZO z$R=R0#TP<(R6;?H>|z+WvC_BEg`~|LV7NazJK9gH*jZ#;cH18%EmkpFHNaQne~Yj2 zwtuH2X^3h!$Rang1=;CKJfzcy`c8_JmKzcL2)UWr!&_Zb5li-B1I!%?iqgF&=Nq>eIpW5ne-jp864dBqGwDBK(3G zy{LM&ubZMD<>SbVYrwV$L$A4r4PV*xlJcM0`pfj5%yC zs~QwP9iuQD_T(M3(FV)OH=l@-D8vw|O-`@{VQz)MR>{i>gu7Goa_Ihs$F+U16 z$#BB@vQJ#ar0t*+0qi`}!lL8!&eXV+Kl$U_62p^Vlt9T_pVrwfB(Gu)xhXcrzCWHE zi6cL-_2O7QY)fUAEuyu*U{N(Yd`czox?F3EeaU7)=w@3m_s5w$|I(l2=c2DsS1}Sl zhS0?UvIhTRnA4&|7S7F#9LCJLbq?5={6s(ICJ;ug4&rsNuLC&fY!I{^oJ|qZVDklZ zt(3|i!u6)VA)}Qbrt6u~Xrd{EM`58Wa#RNpyi-#G60Ei@Xt+W?*6jOrloV+|v7qh) zQ9Umt30j=>9!X{VM);-LcxvjLY24FfeF;-d%ilw83o*}(q_zJG`9ZA@8Rw2PP(cs3N;B=V<`Mi4<8WP~ENG29oM~FoDF8pQG9}n(69uY-hq+SwqfR zN9A@q$~)IwJY=b74S?KLUb*siPhomb>DC@ltL>8Cj{6Zv*?C_*VPBIa_fsFS*2O-I<%iBK zWSjuGgTN1igdawqwjH)q!(jWyEC=Qf4#-bHVFC=l+x)*9mJ9z5{rt~?U;Cy1=UM#( zg#X!Ocn=T<0DqwhvcFOqB7ES#_SXNiOMbvzk{xdoM*%K=UQ+bqIObn&S2rqFhbRAa zySkhQlX8}J`%kC*=8J|uwyV>pw@+|whAPDV+^#;pv!tB#bG!O+Uxri~jmlLjK6hN6fO0lANesWRu-=eX1vIL(_LAzHd3J58LwDX zx-n61vG(nkQ;u;XWl^dw-=1p=;d$FrU9r2=mn@&4R8zUXHd02dXbi9}MC=(@S2E#ctQ$m{ zbH<(emBEY$onFR_C!^K!j2EjX&M9XLH<i}QUU_Ry^MCJFlwvR1QlN>^923tBF?*K&%#8m;A)FJ`UfRsUFB%g2CtemUjqU)tES z*9*IZ*Vc>rqM^-7MQpCTVL#db)GoJ@w0l`g087~eT4ANS`^7oO{_ zK7l{adXVhiAt!NOt-G1temJLqnUAdud~gzL7x19{@f=uSRhm~YtLLzBm32B^%joX8 zL}Lr<#$h8-=Amn}*Ml|4Wpm~P^Aj$C^MYrqWxJm8+zjU!9%+$%1>AP^gjbB*Z2dxa zdc}`ieRr$r1AQ%o5|0NrIG6kIOXzMobKlB1KfDg=5uc0Q%OG5Hg=gw@^0t&g%b33O zp&NL&?g<7OnP%1w|>}GJKY;dq%obUFlg2x4FBEMkKOU-3&ffeV-KRytj?IFOH;_lf}o*&P&Qqj*^*~g;+AAgX$J9ZMipRMG|gGK}UU*b#2|I8on=;NEGzh z#Xj;PtiSRb1pc?F*aDye5CB~LOOlW+z+yl|lq3c4S@%n>3|X;|<$4z=DFaEzL|agD zy-Sv!&&#`*q2iDhf`-Ua<7g&4j!P|UoSVAcfxwsdAJ)G>a6JGrDr5t97f^-|(}P6C z6_XWX#rDY}S1)ra@IB;c$hn;x9;eA3M_+v;n9?RA>7SYDG1MRgx?OSmK6h!JRGf$@ zdP}VP`Lu`Z9QR$l4(S)s%4S*gkG9egaGCjb&h!`D5;EvUYP{p;(TwM<9%oY zrR>ch20aaC`gf44Nr1bo71GfEm4)HoPKN*f0b|@6!-}`{m+8X^8y9l@S1nOSu?D}b zG3~B|e_3N#?)|yOTv=ENmu`d}??*=jhzdvQL9m>0N1i^5yWpDw_lP zH(fSqvn{9_5e~dK8jB3QW&G__;0|t$xnxK24{J=6aO8b0zy^pwn1NcJ)Iq7!*%?UBWtctLjyhUBI0Nv5urd>@VP#x@TA zrZhck?Rr3&HE;**Y`aL_Mb&IyedT4dP|4^sKd#;3CD`L5MUP2~z)%rC=9sntmrH{J ztm7^_B?nk<2siZ%bY=>UPeNmQyORzGKa6o1M8S|;!a}mM0Yq^&Nzg2eXdhkIil96` znL=X>-e9qeD;{vZZ7%d%ly@u&NGS#-yhZcg7ht8($VLp5lUsC5g2kIg2>?p zeUM8*S5pHF7FU8U+5Hex(MF^lB`5sT8k5yWANrgdKpmD>?*@gqZ#UB#z*+lf)gUjM z=z|03Ko8{~3#ic15?vr#2xF7*TmWx#5;0H%baa+mHr3E7R1H?}kdmOHfFSQlIcp!G z3VJ)+EqVuo4+8Q&!zW}M+VTKA=@VBWn0BI+Do}%C*NP`RI{1KNG|wK9zvN}$mztlA z<^z#9RPk3e$?@c51Ldk33h^rt>t%F8TCRW#AY%*$pZwlxu7LzE093iklZ~O2Kh-R_ zayd4)1)W3*s-GrN!Ed(=?oY3=JTZ#Q^EI5JU=SAZ;54B);VWL81vbWa~*Zw_NGE&>)evdJ4NOH&(Jl zA{p5Rs^~3uPK87gwYCPD$}JB8WFncqY$N^nmM29u2oWfakG#0U#-`Wa4fw7b3Us)Rw`LY_A=SW=ZLo9^ow@YHs&*hw>NW9Zl|Cbqt+-1j%NO23WOsml$YTPSP)I$IGhI@Qio34t)vK5Qidp9! zg^Z_f%lka_UXnp>!k96{7$@yUmhN(cCvV3BOaTJS{m@n@9!aydbbsL6_l=UZ`Ha&PcYfCt==z_ULUt5^_2lLtu*2n#29O(Y!EmyiG8w8` z^e~HFfPFqkk^G&)#NF-ygyA4T!yYGCS1}NmS4X*irq!Ft)s|wov>M6g+fv+4ogR;; zVjo~4z|+z1eJfib`$KwoW-90t4Ye`keVfdE{gpAcY&Q=>viC-+nxT3xkYb-Ep+Q!I zIfB4%&%4C^-34C=V*+ZlXtpqdH}<=XFfh%>_=CQ|0<5fGrV5xZWtj6qb`TWKZ=OL7bMS@;(dsa zztqLM8DD}5S*$l5CrZbE@bf6z3HZ6()dRmm;GHiW45uz+pQg`4DH=pr>D6%R!sXF% z`up&H!M2+rH$2C1>Ovq2r!Js>r!H)8vAq3zEMfmLmh=BrESoq3(`4}eWh{l%Lsk@3 z?Le{{VukfNoH93R|ImkN;WQ@VKQh~YkEOY)=1|&;z~5sz`A009sMx9wxv(y}(yLL! zi27o0P}-H7@1Rhfst?TH;G{L7P1sg zXnVY*XQ==>2pyZV?3PzhlXbECr+U4zBF#*Wch7!@@uzxCCwfMs zO7gRz|IR`jmFy#C)f}99-OmWiR!jJ)USkS!5P5IMI^uX!VG zz9J13jC(Ujfm5&SSe$wd{H0#~eyZ2WU+VR~+dnuYA`ETed@w6~S8^50KPxvFDWOk! zxzcay)il|Lc_DjwW|W0py8M1(mJDYD=>^>lQjgu$te1%}A!8RQsz-VH3Hb#l&=UgH zm8%$MiCs|9V>~P!a8f}2^5Bq;3||`d$+R2Aj2E?e@BQ1~cu|7Daljsi2e29hW3Z%F47B+Jtz=Y!l z2!Qwx&ILyu?Q9nNLCO zQu_8WX6*{&{OUS9_KhE)(s4bio zQF~JPbrV`^$IU}eLW+>e-7g)#)kt2{!qar|Tx&bczUFw^ z?ho~Pu!-~N{+HD&Bb(;~Z#<~5r7p{XEQrjy?Gd5y95dm%C;tUtl+2mVj3ss};emAh z1K~bh?~@5!A1ofm;_$}R{w+cQyS8S2s=lk|oLJWP8ILYh8(Df`jjZD{VClV2KBro( zR}MHH-54lvHrXPiu6hQ(h1*Mbf}ecOO6jlHrOTwy^_JORy@mbw2L17F>)j>+63agP zU>!vAIYO{mdRE!DGBWAnVLRxw9fHc(OJ?0|mHR19&p8*)&6gj%ZF=r(0>kG!l?vc( zxe?;iG|j444p#mu7;w* zZQy5bshBaL>$fx8>ORaW$MzwYNK?5$*1!oKu=?rbZ|d46n0?kse}8IPQufpQfLcc4m4l$d2`f7k6; zAe1C=`)t+cW26XoiaJ z(_u>2pp*mj%ClY#X)WeqU!r{vx*e42y>FKjtV6Fqq~%tXICiB`^>zeD_KeYD}Ke+-O4uTJ;PR$-VNTC~_cD z8N0huoFddoUu`=FA}NW{`{2P7@m+|jMPZCi3uUOAu0a@ZHB+DFVLi|Re%}O&nXL}I zpXJL7-vN|s+-fF|#ui|D?Fhxc$=j_0@WLovsmFtxj9c!yk+!O1f52Vtgy?HK{R{Pi z`K4Zp{|{0xHX=;H_=3xC5C$)~03ZTTJ4>*%WI8PTsps;7oq>Deybo{)J5T>Rc5}c5 zQs{RXik8A7r(%Dcf%;n@J^xZt0Ddbe2+#sopJ0j&fp6_Xtx@dKs(~uY)B@5pzQKH| znGfp?zPd)RdA2nf6v1A&W$lqgc38Z3(|DE_Knd4<6=GPjK6Lw1h@m3xTRxJrV)DK0 z8cgC{JBb5pLaElB@pli4S$h~nR0^hqjI*^XdFp}%^g2A>)Y^ly#>L@XviFOqXlSsF z{KWV`#$F^@SRu3%f8Ml4NX@|2kd44snDi)ZB@3SbrbJ|((K(vPV$Z0=sOvJ>Ogx~? zkFfn0CB^c;D=8NLT}h$;Z%PX7|FWcb^>0dwp?_6UDE)IuG4NlO6o~(MDPR9z@lyWV z`rr@p_*Yl>SIgO88q+_0D9dP)NbuU<$YU_`UtHn8l1E?;b{uE20^$>O$cB9UP*80c z!A|{6D0|PZ{yu|LWhregf+oy@6oN1f$bNImHZ*fE6ZfI48pE4hQrcjG>pNFD0-#iI zKS|d9)|`eC+=sG+4L<}2u{;Q9Ig9%I9jeU$j{^)6ej2QE!;wdY&(D!elFo%B9-T;x zN}{u7OY`c|haMbxq%mmTn_vPTDg?*S-+mz=t(_33SbaD&u0|_QqoRf#A%q3i3MKd*^qH#Ua#`N(b)Sik!7a1ra_RE}>B78uCo+G!D z*lFX{wTW6vq1op`qyqVD8_79|Dv48otgCKGMFPjNDI&5@SF$KId@})A)fZwaDfowx z*D@sA#xel-X!QTb-dl%70qxt@Yuo?GxDf65ouiz*XY@__Va3 zhx6yt##thvy42wclahM8zAClK>7PLkty>NHeI47G@jK=FwAVFVhwWd#^&F3IeeXS6 ze)|2@)o#xk!1A9mmd3*FYPJN z3jFc+>fA$08%;TsPA`1+>xz^{1r6TvMsty`F-grE&&9BtHh zv0VS{p{#$QEBvpytN+Fo7Mm)@_a7Ui{dpV%#VrB#yoFsZAlv3}hj7qGZ{O>wCl&6S) zs-q*DlMsCPiPHP`_0ORE$LoKD9of-&h`jy-k=OqY^7y~^D@UJ?c*E8FtS6Q+~_K{uOcDgfK zw9Mhby^_Jt)C_mqNEttlXt%||JY+|QvVUAjMWK}9hcO2K3cL1`%!Nc?B8ci&_=HYT zBrPQ=s?-v@wnnQ?5gO^f!X~?>g$8jFZ(AiNshXaffKTF2mtDz=gAwC_IdZ9Tb}Gkh z0xw%ZT1JZl`db}>(04W^oED!{HufK-G@K^>G-qNSFj;7bJFU1r!(bi)FNu8nRN{L0 znd+-2zOb7wsh*v^pi&clC~ia@6Hl#4u#9TTMyH$XT^(Ot!_A}^OzbmSXoVe zT54-pGiB~1%v(DW3?rfGBtez9?KXPSeU|kd#!7X8qPZlol3MrK*?QVkOT}`q)wy+7 zp`XFf>rg)D?Qx8YQSNk464GJUE_IQm(x{2Zto}}OMEUkcJ>=o#YXsWfv+oQRD;Mqg zPzxu&4_|Tkcf#M?=kuBzpqM^w)gea@DHW2PG?^vJN_06!=Q*C-cAHp!{pB28cJC_= zxFv=7byXb%_%|7w2;^nL|F>5r{h!RvE&4coAR)f-YGYAvJcOT;y2?3I*#LDUAiu4e zAudG+Z9nI8X&5JhOmt#{U3-a%L<~J4B}&eAB8wd|?OddsQJBVuH6zsNQ#yyD?HhqK zuCbT+fo@ZBI*a?0v1)enB(rm$m?zkSYUGsDWW&;ROk-jV*v=k(tG2cL5v>2oq6 zea>(r52&U0emEQ&^9Q2@oT&niyYof*oJ_CB-bG=|v&}|vL6JTuUJ^VU#)3(|BmOo;S30jo?Q3R>0q;f9oJ+nIYvpEHFC>2s$3b3SL}zdzmo4}ZG<=`s56fB5H9 zi2oD6D|@8r&Vq9K=g7z(!~urv7 z`(gTMrYl1mxInEyy@PlBA-d-<7>v4tg~B$0oox%MwXCuKycV(1sKXh!K*?eCPN;Nq zGFy8c{D(%9d!u&QNdTy@ksE@RzOzIkyZ$8)O7Q)feU znk>;>>12}q{K9jy+{TW#|lRMCHGn=70Cxf{Z`}gh0fVFpAt#P zo0s;*c9fd3?g6~F%162gJf>u#D`BD!F3D>|SY|hy{s~f1V|JS`lJ`R6_)4%C9IoOm zxm-Xo>=MAc=L$Elp0N@#=P0kbGUn*~MNc0OP+GAJZR6md<`e%mYV9)5&-Ru8fIrA+ zN@Q5IlgjKVf-oRCX_!os zvWT9Uxyl2xv70Y8D-=1#G)2F(mhCRl7)C_ME~VGg{&Y4&XjT-u^hD&PCv5RzG)N_a z<2k~Iu_$)slF!LF+pc!ah~#~*F3cGC?}}h`_)a=wU6K@abn7YCm7 z*6{yA95`zHslfkFi34W(w5H@>bNTq8V+{W0v1qr$PqgFOWvpGsiQZwJGznvjBDb`n^%M>-Lwuv{I)-uopq3IMvPUw zxsxFDkSTueSXrQCo50fLG}owiM5=cT)8UvXer}4Hd0%#lv%)Jw_i$HqxCkdy|5HJC zwl(c-Km6IdNXTM-8Tm@}y`qzwC*53_vT(`%7(1{u-!OrhuZj+G_t0~gDbQi%7ml?A^MCaSbA7PI0V zkmRk+IG8pS43k6}aj5CUtIg$|dw|62*_S(hM#i~V4)VX0o%Ti+=DsS7N~>Vub1pMc zVq|<2{6@L#D`i7>qQWAbuaoR>I-j@Hs3gp=o$M=SLw64UB54?IG7XGuDRi|L+Kr9X zAJND4HQ?f~;!@?hXBCOdw|i>V;k07y1*{AU<{>RrTM2Jopo<24BUw2}4xD97olGwg z+RITDIg4zv&feoTYD%(C7tA=Kj*=-P9Cm(JT5ZHqAv0?B{>L|=o;x_mC2f1X5!)zk zx|fS%T5WhEZo8tppvtUtKOqE0S}^(QrA75>g35?chNxnrkIlLcKecyPi}_(l6IZmA znlH%;fP>>zpdO*5-s{Qom$AP*jc+IX>AKHic!&9P<@I%ne_A+_DoeoGgGBpQsT(1^ zfm@s-hPZEnT{&M}Yh!Zx53JQIo32nQHnQ4)yTf3@%wN>38^a;rkCjDTy5kIdUD2r&eUAO>=w0_h4!Si&4w<^4%VmhzTLUa3 z@ru$uCDT#}L1=y|-dAlFsrQmoZ&nkm&~H%H6&vb7_j2X&-r6V+CW93Ac5$nojRcflmoBg*BmQ%UD0l zaoQT#K6~DHsPtGUeRvB8aeNI@mWgWwb& z%3O}5pg{xJupuXK!_FBOfG4AH})zcNk1XJ}{J3G-c0^C)yJu4Kc^mgBdR6+Whl6ZB!hszY2hGX!Ro;-h-blf;X zZ=!xyA^9sVL9Ck&qxkJV^#JrganStxd;Gua!2B0}9^=Sc^3Rqy&@*Mi;(HYj| zx83?aV0`HyQwdn8^tN99-I7WY`dUV#O)R0#phwuGJU z(W~F%{ccI|8f>|MDiH4tcf`l&V5GlWQlfKPB)?lyjLNJ7KI?JFmK2jA+YGWL#o2x} zA1`*XU+N(tK(eDIb?3N~QZFsUocce~lJfg<@ULn~t=j+no>=D7Z(aKpwcon`!&^n| z_t&={B_hYiv9S`7&9v%;ZmAOxbNR0lnC-xiaK_A0?iiCQ&oQ|_s z)}8*|6ZuB zy^!JWWc%Go^Pu6s?Uz|@DyF*WR2DcK?fWA9iMI7?G_UDO!tGHcaqW*$cCD-!->Xtu z;`B{%pksGXfOhDiBnCFWql5^8DSSGchUyk2cA;83l>0di^BH+Eb+;Dz9byx3zpbX;%=r~ zH@b6rkl1bi$Z8u?oO^FHuVc!v!E6NCQNSqOJzOH-kcooSC;HI7Q+5H}3(<<$#1Afx zw+)yjZ$t$_to#YQpe3{kQw4;-_zC#)!8F!I7&lwWl7LLDG#BGdz}l$7;xr#@vr3uV zf4uiWAwJQZv zr=M7CjLtcSEc&#Rv7#7sJPL6WD2L;{S4%OKuX)X%Q&n5^<%?(1{E-Lgk^;LF{6vec zTdTTUvIc^!K6KlU>bo-a1h4Yv+D1bkVG~qMu z%h*x*nOV45u+l*ditHN4Nmopig#^uw(gl`ZSrr$zJ@KT)7LQ+R-fb-ezpHy7GYN8~ zULkXAqyfu3&VM1yDV7#AgWc>NGhsI<*%&{wJRsU`vRNp1OeXS_!7*W;)DaKH;^e z-Ogu&K08+rzRvdREm%ORzudAg(|c<6DRuZJp&uRE_PoP!Kc%2!W{|}Y!zS1b@2Va1 z67^ai!=NH;nHlpEXymu@Vb%#9hhmUEjY--qiM)TaWJd?S&XtJc^`(<|*i>kf_3@bO zM^onT2wc5#Kxu}M=s^NYdP=Q9sHOIxZWK*Mp1Jb;ZXno?G!mQq;DfKdFoAXwsKUl^ z$jx@H-9+jD_XCOouJr(2_K}xBQf+@wZ)r_=`liAUz`||4O*&QiCi~i+34g#U$X*GG)cS0_* zOHKXc3c>9o$qqyId*P{7kj8mI zS@WBdz>|s0e>dL$JB@e#SgSub-v961 zawV*T$j1A``jm9JUuk^h^i}E6!+eh~Z`rewkR7&9)*lJ@<|=A=k^ObSFZ4rKpSUZR zu72QBMYet-V9E=5#=*9P);rU&x!Cdz+2&g3tw1O&Oi6tWd&WVvJ~7ELJZJgkt*~`M z1imyy{I+`qB%aWHfW6Y?U?2-vS}*whYB0Lua;moafq=~f2-#4V*AluLVrm}BE|gC$ zM|9Sn&VOxosh&i@W%=i_zS($Jthpg;=_)rZ6JuGdoAr<{L{iR`mUsL^1I z)T-uVg`s!|y4DnO3tc%%tuuCqRe4(om5xb^>0}O~7;fOlQ76DtKAjCZTI3W%BD!8s zcM+20Had{T196STbkNI{P(-4OeE7<+Bf~*8xLur<>#+>-Ak*0|i{U6#5AgD{?GIq+ zCxF{PZiQ37_ zwBE^iODoUbg>rMQl*(6_Y^oN3u@G@ov*x?*A_L@J<^8ox;xrG8PG?Qb+ZD2B!@w`z zw92e8X>lV7=77fYZ}tTE2V+STd+va!aqmT07iO*+U#nA1PCaf>jT2HV6^d^BI#YIq zZrseA%QkR@hEANzA<(~@&hOu^upwlHrSJkeeJ~fsX~S&S7ey|jn-8dfi6Fv&s|*XE zajO8UPz&KI;z!(Awi7`h4IBAqbgrza0LBdc^he!xZI9uX{3;0d(xWmeGnH{n15MC# z5lXj;#Vm6p+JW;@1hDS2zW2P2F_m*Ff6F^l5usR0w?^@;Q7yl)aZ6I88g@Mk9xrwl zUm<&2CLP>*Wm6rX>rB615^R9G;}rlh1pZU20soopd) zx)9eWd$65ejt|p|>&g)UXB8P5FA6CGuh)fYc$M?~8?i|^9yJKmJ;+6iOqew*ZzPd(zfJ|PFSk8mrXEeVam2ZN4UwvF_a-GV;6dUMv_7{)@P^5ee32ysebi-T?cfo{qu zfu0gZu9{$_48=(KwTXy~@+txZKnCU$wc(cCd046)3W>f^UO=pOUnbz)59Ty|aORQE zLGb>jS04YD`7f2m;wBffeHCUxtd5`jFn4H|jlIzIV7$kCvS2SW2A!(-xGw=?IrkV- z8dx#hmOd?3@AIzhffVOMPs(8~eg1W0s!ycJBHBacr|$wpcXS>Eyb>(nCuBotR(%wY zS*3b#j~J3n+VvAvV1*>EWLR73#m$=0Juuvhc79)RKXek#$SC+?UuvRO~YMp&x8}=Gj`|MUA{^ zb>m7_Djk~7h00{OU$8pKqoQjuRiSY_VIJM<(zf>qto{042;@HzAv9MaQ&$O!su4-z zeN?GL3Q*ztBJIqJmhCEOFH66^)H1HmK=S+m)ms$2l`|J7Ds00xd8NNPoK*MTOj~xo z+fa07!F`y|(W2F{d(hs;JY=)R;wxO_v28<25njEcvikab?gbK*Snq5!xxUEzfs#CzNYFtW_35Okz~CkX^vTT{aC+JV0rBL zYmw`9*d zoAIev;F9BQUs%!7K1Oo7(*<=b<+POuUmtv%QWmXYY+&`Pt)w!{g3*=w1b`Tt0SPXt zUws?zhxA)&*aLfPA7D34yiXfS&d{*-#V#vYYo*TiHJb*oq4k~doW>BBIH0t8`+S4_ zSj_Jg<9>XZUF9kNqpo*_Wg)sTMd37pJ!`H1=t_Nfj4oC36G^k}e%(9O*Dg9aG&rTehdbq7Xib(|xa zV!yCc$)cn-qZ{e*J=NXJ?kJHDY@=-dHjla=v!MJ zZSK9LJwdZn{rwp&{)tgQQ@6Bdk4tjT{kTz{pJGA^8tq1MmF+8G$|^=0w!PjO|IlvV zM(Q2g4>~Vr2$TH-T^DM8#f`Z|E&kl8oNQ2i@HF5Rkzi@)#kYI3X>Q5S89{+JF7$!P zGtTL9w%3O4A(l3kGJ=_lBcB-S2Kc>xMK}gJE{!UqU<$k+(wqf7J@o$%pu}v7dw*B# z{wKN}V2TT2@-bSvRoeAT!sjgkj7xzbAVTdu!oqW*h85ZeDoib-;8zCX+byA(d*)ma z4|fCb9E(NckUR5L5Wong1XoJ;lkD=5&(V8W!ergQ;E_!#)2&Rt zG7PFYE1@z>{1Nn!bw~4go7CR0;mHykUx%j)B#K`-w9&?EvK1_$OeH01M=USFq-3sP zWMzV3lr*BC4uh&@NqixRrT|By-)CvPv5S7mhE-qY`OSgoE*fPxS|hD_e+iR;$wFHaTX_&ZZodz zV7Q~ZMq(={g7-^VuPj@>G4!yLI!Vz%SU{(s!Gb&iLY-R_15DWep z?RcaRE7g>Er*G{ek4R_J9S-xoyY%!~2#tbB8kZ?i_)2@hbkyvWJV+E_8A>6TN~N;? zmY);bRw*KUB{(voWBfg%?@5yvR*WJ9P1b}cgS_L9*x;p2=+xq128f8t86he}1${N$ z0X2hE?C(K|IVx1f8B75}x*Q&Tiper4?v}#hGrnH+>1wI+YI50Nv^~NbHeuC$kJvPs zB_EkLXRcoCkD2tnqncrTHev3S667q8y&;OU6w1*DvTx`76O^J%hSaUnVnok9gE$lz z{UXexQ;vvL<2oLalK8lZB*kWEJyXd<=f}|}4?RdvG{x{sQ<7mf3{0xXaq@X6CahBl zl{kXi{kVKi)}bp=?w8aS|A5stR9Li&DYdHKzmi-t%qXA+Q_pk6qcc{%8y@o0@nMCa znBD!do?N+XQa@LJw9p0R#G2@WG*)wiGPp&SW_?*IQ~<_B$(#2(#XCOg>dc@B7LTVe99K5 z_e|+WF_ie&#UU7ZwpW^LUBb!-daZ#Gatje^IZ1^-(s59vNaIw%m)RChLcZccN*F0k z>vVRFa6739TcxPj$2bz%XXKS1&^?=X)xEO8Z_#MhQC|>O!faHZE_4Ka|B;lp>M(z= z3|*`8XHq~tNzYyWr1k4swZ`K~0$=py4@bGO(nY&G8_~q^Q9GI%9rEb7A=E@GA^pDA z;II36A#fdwGJA2d09?vQ$H5d0gBoel{O6r7WIN0oOs!JK z7@^zA*~MCZmd6n=2y)c^#$-v%YV9wdGMQ#I63YwG&r5S;`FyYrS60;_< zXHAg2Cdy|SH2aQ9E$E^2>1jT2+HOXL;QHaEthvf(m#B_Go&d=)(^a8#F_0d)eYnunwA? zs*r#9nBltshdb3m$guHcYl4ZbHlI2a)%IavPXp?+mnlCwqMpSi8OEl2cYHD}_jslc z4sSrW?SOIVrkJVE*F;Rgq9!7{c0VC%x!N|y!0?;$hvk7k;T;!UwQ1_l&tsyh2vdex zWV14rDw%pfI!f3&Jtbn41WGY_UlmeXdh(V63e#1ICo|r+H@(|<_5SA777~>BQS$Z9 zO%p>r#gjlnW-3COJT^vkrnNjG_V|a|98P0_K1W{*MWR4T3B(V?6h zo(cBMdqgp&dJZeSw0WqNrT1+<04pPiI4ZthS;qusA5f{M|4z2Un3!v~nCt-R@LaTk zJaJpEpslvEE<25Kp#T?ge?UOLucxLLO&+ z438p@-``GeQO|tTFr~kFt(*3SiAqKoF7iY2xl&|4g-)xuphQBc!~U%> z;I_}x>8V_{8s=eN6*DZ%n0iD6 zSJd8SG4yd+7E(nW!~+)L*;o>TmMw$J5}jx;EdtFz_k`dBeQCu`b9P=6aKb)ZzDMdT zH|zD&1r6#6R@NFL^hFIjMS$ANH05Dm^MIoK{5YJn_I*~zy+FI0z==8?NQSVWM9Mef zYT5dr>WMKl&+z9Li!Yd$B&7o@&0_Z>CojdplD+1F2YO1l+Si>gBptLL1Vm>BO@ND+ z6;Di1b6aILNmGa42(0$l@fd5v(%GkqDX~WrUrl+z5-6R)5wCcnNJ|!;t)?d0%1JIR ze_U#Mlc>A7OP2kune#v4=oSEM0d;`pzZynJMqR2SwYiFRDs#AyR+rV72W7wY zf&gdPAK-cPvTiU(M0j`v6Ga8H$?V5I9%8Hp5`qVdwkBAv zR%U(-#(dvlD)-J?&?ZTtMxLKtH%RomFXaz+$MCTG^buD|PmAFP$xNbRJ?-9Inbr6! z?|eFpR{KJ600|cKR*{u>_xBv;8qZ`OSG}l>c~2zhJJXvIIV@$+x^a^8YsUO3$s6rA z-|+O))$8gVw!*&($NbY%rCMhDiyz}KIoWd(CW9525CT0D{pfP0l3wU*_pPKd`Gh2g4UpXQ~NMykfp zBzYJU5l4YI98*wRW(KR0Hf zlA@BzrsK1)g+p}mmo*io$9IMD@mrO3Tg-Lm!hqu!#xZktz6H!Yxj}Iboj;eXi-Qdl z7koqw?ln#OH(p)DIP64O%+fYvLPxl9PIPnoh0YL2 z)u~8|&apEKd+fG(OWGMz!o!D8GME|{zuor0gg4A?pVv91sUlo$w!PD2(XiOmBop?f zHOPMUD{$!btR`YF*6REO{dG@Ijoy<_m%+|C*(a*nlKLAsUHx3Lv+BuUqu_}8j2-Yt z$p`jsfRP*Ho46R0_?EARvJ#b$Q=U4=Tn^3s?YYz{zZ-)|DJ^Ouh~cNnSOjS<$T-_U z@J-loAPtQ0t=vD%$RT6}H^wnF$p#}9`D6`$kgq!mSBh!Q21)c6_1y~q`On{}!0Av- z3*-0+DG|{@S*S}-g;>){G#?m0L?!YTvj%|1z$zv=+qjZ)>G#j;`Si;&%Agsk4=kpg zz2)L{9K#-b48#(C@=Wu}t2EtY%QEQk7raHrj=_^UJT=YJNfS4SLex~exidHYDFCfI z7tc;2gm`i=GcBWwfz5oXpHbGnnA4!jncu%fxUq$jbzoR<`}DnbquBWE?4)4m z7Ad882CeJIA)cay{2zCH{o%|lCds-}uKCR}!x}`Xb^~czv_|(Y$Pyjc=}G9I9ShR$ z@L=Sh($=QQbol=Y_%Xb6*fUZpAzwn6+ra~{SkbKTn>{-QK&{YYhtlN;=Ecr zu|~gA%^(?&%pfY1zfIP>^q7T|*XUeT0fIHuHnhNW@J^MI#^>#LYa83jwT>l>a-^i( zpn;lWY8FnGwT5XB-;QHSs`sg&F^oj(>L<2gu3rXQR6LJIx~0anZZ0e0$YhFw*gH6ELT9f05*QxbjkhJS8WAz}ImN&SVsQ z{oK8fx4EulFE%LVvlwG1!jIcCr+$^uwvbPMd97RcwpD|>bob?4@k{zhD$E`MKJ%1J z5|LfWZ`F7Y&oq#Ip z6j+XLF#{;L-B){s3{qkujhApp+ol|~T5?yWc13!w@25SITHp#Cdwcm5k6jI|7062* zT=1||Ipzp0DdvYCJRWOVNz{E)SXO~#`UTm}k>@+F3CCB*A{5&xOBH*-%`C(W@#szj z9I*W(+tr|=FDJ*QwwkN7WqExr9^Vn(ap&jo^dNCN#itv&FGZ>rUtAkhYHerYP%Us@ z)qbmw5a!l#BJi#sd~bC$ua45IXE2qpE5)G3(3aj(Dxx!XN}t2sb~}+T`1&NXvRTG( zz)z;xYOIa)@B>=I1Gy!pgombyQs*twOsh%Iq$b2M0c;Cx4$9%iZY>OCMr3c0jJ@Ly_UAf*B zd)qbRkA!;N-0p$B2B*Tcltg`mncIi1&2FUD`#+u^Xw!X)zjje1k<}t{4Vd0Wiox>qq&^`4+2%fqxvUw%+Tz`E+yx`Y$Pm7HQL>KF3S7--|z&S-2 z07{mbVkf9tlFCA|IFfna8y?S?DrTVBwe6}6Nmf-x=jUuf-F>Ee%lGvbud=GXNg%%3 zzvX^w<)T%dJur~7M-b|=^U7ECV%^S@yM~8Dvy#7>gGR=iprL*yB*+>C$1CgwNLQ=<~S&0ojKZ*KP< z-Ty>t1Lc>~WOsaL=g3XCYa>SH7>9?&+G#ou0?#pC=su(o48vfs(Hb>+W)FUL9)eMB zhf_(4FUDBTs+=NVcSJ;zkVzxJ645RXwh~|^Z4$Zj373rF{4j~#Gm2@iX~&P#~GM1!e8809Ys*Fq=b|JKACH!uFa%nYxI|H29;WX$-! z-FEpi%|siKNhjH(F|h6!;RFV?F_IhR4dViedwE%WEb$=w40{NVz>>%DvEF5 zL3fE8pBoIDe?M*RUkE@1<6tJ)$hm8HPIg>Zc7ixVWfiTGvN4TM z>`QhAOF<&0i)`8f9~DtYlQX7XNCLG^0_7@^;9w4Mvza+VQgVy$g0d=CEO8Rh)?zOy z*7xDHH8``JB&dod{*3clAo7+trgJ=fUyNa%EU-B$Xu~!`bWSH3mK-D+o=IwswVXj& zN%@sHnoKe6$}oL?M>Fj4Y3^>T;l{ZdS#@gWE-i0GN~@0xxTzpZmUG6Cp*k{5{#p$& zn$|#M`QApESOu)ToUyAPi^Iap=U~51l6m?GBDh@8YR}OP^DW0RgNheTHSzPRXr6Yl zg^M!$KO}2l$k++SUt=dKjr9Fa3%GyBX8$AlTj8&=ab>#yEkD@%dhf`QlYBB+n~o&*`K#s{o=bc^A_DdO=e3zT&B9%x1G$9 zkH^OfLV^}pNlPD3OIRN)H(I?((!4o4T>pE}f_X8DB#=j+LU%U&_cpu~d4P4-0I>i~ z{%VNzPc=ypg!Z1T0hSl&<|SdO;)u#Hu!ry5UnelVDntcb-*`b5vW0a=p*fhZ;MXad z$iky350uBRx}Xw8lkJ=Z%k%NkU@qg?%9Gw>ZH1v~T{A#QtA&6oLe7|$Ph=MyWoLO4 zac%p&eqr$`kp42U?286c9KWDp3u6bMQs^3?hoDjL;rXp3!pr3F6k-PesKsG&D5xAO zTMqjsX|;U<95|QtP6)phqX>#;$Uh5u zj;$aU%*AQ)q!_c!WDYMClg!>|~s zE&^m~+%r9i10FV87dBH8GkFk^ozcPDdIJ$fK!ZNYgP?F==i^|soQNX5o(N>o z45&gy7C|FnXU|iCS;XAb+N@HGvS0Ewy~wXO$E_O(Uk{_L!SxvA))6X-s~+*FrN>;5 zT6vu5;Z#eNyNhM{I0)ofGm?jYD4OU4@KfI%%DZbVZ2kIK3~huKBsH6grg~^^9MK@! zoWmoLVI4jaw)dp?ZTDrxn87<2OS!yk38hyudK5lQRw>XI;o<{|bb=w6s#F87c!!*N z8l$N)De_*NX_dzz7a_pZGmja&N-wvd zHpN_ti&EuZ^|03HgYG#T1e=n^k)X`OG?csy`{IO|24|`GTpR)Eb0R*$FUt3$i+awk z3Q2&Y^9A&0;sVssu!>`bE}C{plo?!1(?CzMQyEqrjD&1w6NfV8)6Y13rT@d+i9&cC zl-?1JNy1o!V3XTHg>ax?DCq*ZQeoJRodcBS;1nW-9UMmm8}|}+fXG8zEPWvr2t6>I z%hogAvkOQ7A_7TC?BI}8%M$WMqR?`0V=IP*K@ayMC}CE3)LlvogL5egnT7?X4v zpc2ui1IRQVBtknz*W&fU^CN*0&NfCBE>B3s;u2N)a|5q-@+D7cS~gAU7Uh)#CtTPI=OU zwQYr0_{Kbv^fD$$paO3=5V|1@N#|3zpylKHp+~9n+0{~e&{a4{AS4VM*a;N2;dqN_ zNuLp>51@JzhJsRO8CQU|BahPz5^S(co*@BXlyt&WE}9bC>tvbH0UGQzsR@Mi2h#iq z9TXoOz*B8oyu+&~>D)AWMaT}!&Ikf? zhI%PX7srlORndxbR7d(lsAS@0`)!G?M>Zbl z5#cV6w>qD5S3a@9ib}yBLXUbS=MfceNb7QvH+fzO$nA;7@o7S9@Nwd%_%cG&S%kg6LTz^vd(X-y8u0M3nQayr` z2uNb!OqifP(|pmEXa)wvKaLRLV}(&pss#xJF?> zx#6*SKF6Fm?M`L|^q*=6*nRi;rX!z7TQ#D121Ia`SjR}`^R#&`1(TfcOEq6~0^OH| zUIc}dam8}KvzYgq)G8~dp}?CE*7ls4gZ+TqYz%2V`?*kr-&Uop`9(MH=VFysTaD55 z7sH;POO3R#hLD!1D(2#t&*B7w+|B5%a0Q|c5Y~ftv(@n=Hp?vH`5q-?!f^VY6>Qmd zXxTK_7S#-}SaH#cRdUpL_K0yl1Xoc)8G*|Oh<+EM(xGD`?PEj5Ed*8J4*|NWGJodj z71Mdm6?w=kgwAmNa7t)5_`8h8Cz1us3$mR81T(eyJF}*EKs(gM{SEpy(fxQE3;%IA z4)X^^1`)hjFZW0Y)S&vlCJd?~950Vay)8o#&?jj?V%Jfz#*`=0Yr~7+IUaZ~P9DY# z55^u0xFHyN-Nx+vi}*2n0gsfw+FQ~zk7|tIkEF?g%k{54s|d;<{UIGtH8+F_LKaXX zcEbQ#i7-j%`v@WrqgrLeiltKcL@JYbPG;!Rw6OL5@^QdYy_P3RSny#-L&C6d!^S1>7&g>>P$F{NHOX ze9PN6KaBo<-6WiRJ^1V)cc_@+JD%4kmTb)LLE#rmfgij}m4i=Wbh=O8+y%BHUeT8u zz2bb|c-nH0cC8f(zdtk@bUAq%MSjfMwG$Qc{p7y*R|x^mZ4~dXDYnqlNYAUstBl}Z z58m_Lk$ayj2liU}&vt;<{Da)L{A~GfC@eiOMLk8xeWFI)2zS74^zH}bLBug+k^CXi zF<>G#EKMC;Gv!crM^A(i$ya|cCjV1>qCoeP2s$=*R25$gwxFVvuxfwI>Up$ZY?0I$ zl=M~pGoRFpYl|l6W;HBg~{0kMClULbKLVsT~0aTNh^RoQVhopE)maSc~-jga_evG`Ww`1XMK&g}T^&iLNd z_}5pzk;DUH2}8ySBLN9x*$ES!zmdcFXp1W+7- zW`Y0(A~16h*j)(RH3a@O0!)!YB%VTIl0p`k0?A3C>`I|tOQF3^p{Gb?6i;O~No5U8 zWzR|F>`LWcOXa;z<)cUw5Kj{_NfR+ib-AC#yYV0x_egtqokp{UdkIL{EW*KB!@WbK z-}GT&91xW9AxgmnceD5!f%ta_TqG&E50GxYmO*@gd$)y%gyI^-BL0L@oyEWF!vr0q z1I01#Jn)CYkYA5+XPIt2i+8@25ptb{jg^Ut^(SWOBMyWMBHhjj5l?}KdO)y34?^OP z&j2~rfGiZ%OyEKKT^}fqA~Ot$B<27`a3J~+=`+XpFH8_pfr!_$xpCtlB$9Rqk#T~^ ziRAzVnBZl5;Q4dpS_7~KOmauYGb$+%)mT{8joCdMh@06oP;5HLgkTSh80x~#r9d3_ zWq(KH0ILf|hs6t_Ir-Lz+=AS%; z2f{EXduxjT0mZ)oA5M0g{f8hY3Q|5hf%1AiC z>0K*TjV;<32c7k0p8;}_pvBg(Qhn3h0IXcJ9E{gRSwL~@*J0%#EUedCnbzRH!A4~v zmCYI8FGG(18QzD3@^_H;kAeCw52o?7KLqM^0f-0;v)@}S_LF)Tn(M#cW!}b!S=}Ma zk&fz*Pj_4woqi9bld_C&d{nB|u0jUtS;XqI`^x!|fqHfQ_jKW@UePR*?ME7cm1tyo zU)vit(<^tdS|`pLKD?o*Wcl1f*0?=LcEgBNHpNK14}(mS#`W>eME3W`Gk=eedx*D6 z=vX`fhT(IA-)Sqh_YpUc78V_B!M+o>8;Bgwg%vw567o>DTFn-@V6^!d=GeRB;-O5{ zJ`#i;4_)-VWLdv=dN@rqiQnSJ=c8?WhG4*Ti5!!jRU-Wkq!zpSq72Q@PlO34QUdj3 zW`#__t?Epu6kC-3Ks+6E7#YO!1r!wEFp719)dvXfFz}?21!=V8x!omJX`^zN@by92 zi?sWoG(};BLBLkO5~Nsx0%hx?_SSyu6dXS#%Aw7GIZ}I#P@v}Mx)46!WdZci0I5^- zu@!*6piC8uED)(leCRqwDNEK81=DOm1+EGrorR^kTn_naGr^sVc{aw~QZ*kAcnIjO z406^WE(io3T3e>aQ4SV4+$?!98<}eTFfBpjC#No$u)8ksS|qf^E=AYue!}F2?cprD zyM2F|foRKSgvRC&Wh3%CD7Uy^3yw~sDR1sLp@qm*$qD3mB#|O&%~`cW^FcVq)9e$LT?I&qMsgT_PwC+}1F?7R;`{W&V&P9?IkaxYY;T=xicLa{=AKPY>c z|4qvJyOiUfF?@j-uJe14Nx56bA@r(}7yx^jgPpfbrsS;8)YaU!!yvY0Z2hn1Q5tV! zt(NsJo(KNr(263L@to^##zhU+ucN=$U4Mxyg0^Z#Hjigz4q1?@GVL@1h?4my6MVRz z@{b&(;Ov;<>-THa7U1c8OnDikT$GSoG&;VjFZ z>1*ZpDWJ&%S?^{RX9T}`1dVrfgGeQdU__`3vXw|N#NNp^f3P~QNlbFxtd06p#gpbR z@Valum)39{w0WJwQk9fYd`W~J^LcEUql_+gOWrp85>ysC4-mvh3zfsi%IS{D8sz{IlEr=m71o2re1XJj0S z!>Ahpf4&{{KnfRx&NmptZ54@yg{naBfewyCa2sv)L+=NU*r0cc~|5Gp`WgiAc>g&m6l&d2>Mu#;GIV_AqAKv^7n3zcUFKwA92 z*!%9dCf9815PC;cj5JYtl`d66m0ql1#i(?UrUIhUgg^pBK%@i+9YQZ6ozQznnuzp{ zhNhti-wPfc=gc{G=H6-dyL0}|??-v_KKof~@3q$g)iY<_rai$r$=uadLoGyvv^zpU z;w-~JpfEuL)*w1PXJqa^mvb%$5N z4*@VgIL+huQzBxpu_sx*i<;%ByR^dBJsEiUL3F0}l$W_q(S9)|7No+Uj=4`#aoX$O zgn2}RIpRV4%!YX#PpxvDTR8xuCU+A=Y&|&17yu{IpE2Z6Hzra!Do`V;@B#y-tR;0p zwcUGqDB6T_=Fo9|20vzrSi_N2>dU!a%qkZ^RAU~zlj$B(xqYP8n3G42G^_fwF@O~e zpV5>|qRo3ViqUwcK>#z+d8&oabq+Ij&1C ztwb33;H22D`qZT`CPS0sDNdq#xpSHF5W=Zi5BM82KfXj-JmKWI0`febJqFKan{;*6 zc~>KC#PQb016)_^#k?*ZXMbt#=_`g7bk9n#N&0;Vy!DDF;cbm9X{Jc6hp*w)!Iu^k zwMQ|zZAU64Xjn%%jugwZ!+P@a!N%Nv&s<39E-3pr(|TVy>{Xr7`xIsTkQ+wldgZ<9;UP@RNc7<5+9ryJ}ksS5dOPNaFY=LHW% z3iSlUAL_QGroQy0I0c91Y%)$8_1J}I1l2Sd#g`emb z(`vnL^VQFCjHD|tXhS)~)W-1e)RFj$I2xpt#lf>c&?49XRSRCSB_I*?A@)!ws60O7MJ?qmPjj%NhAL{>p><} zn5yq=qdGE5>97u{cf*CDF`raVZ+$p(mVuc|VT5wCbWnZQ*C{l9Ddnkm!XCpy!;qr* zgPHn_X?^Q!Wj8?2L=|6CCu~)gJ)I*tv~#6n!jTAv=6GFo2IsVQwCYUEu^4~}RkN?2 z!Jughnmj;ed47lH(&uAlWbeTg-GWa)`AqYMa2>6;e(RX(0_53~J>8JeWfO^*ML)aX zo@OTtJK~BSYCo;Gm)Q)>em6i%vFe9OyxcE^UFWDbV>rj_)N{t1DUTFo{ue@CV^1a* zPe_C(bFnAupeH-QlLO*)O2&)J*o()-i!Z`Upx8@j&`X5iB?|Etm+_V~_Lg?>mWl9| zEB00x^gc`QhC+N)WPH?&eKcHrG$VYpi~sjCn>l|N>L1T+J`U1+@jwCuqk0e^7{LI+ zsG6fs%td@77!jagfZ5c~(d?Qc0bT)+4V*FUE}q6llwx^|9yx~CO+%mo&<~~gG)8aZ zfdZIKSsJR0;ul7-mxi!G1=DXL#E#RJ&Cw6+eWMhnp|IQ+C7N_A7=(mnh=wbQFCBqH z1$Quna5f_Vx>GqveX0aug9G@)3xM3HQUZL1ZVH3g9t%BZ622S}R#F^>;vf^-3@Iz7 zKR<*Z%po@H=}IUlcXO$3mb~=lAagq&ZgxCk0Ui#^4O5#BhaG=aZV^$YNz-f?rnDJh z*G#s?5&E@@)+;h{Rx<**848a?*l!|S$LQ;F5nt_Tce`lR_#;axC`)mar3|6i^vFW~ zAan_;WbUQE>#M=8SEVj=P)fR85am=ZJ?AFPu4t6qW`rvTS({08*JdCUf9S3~eerx` z1tbaveHllI7N4hvp~(ArB7>9XU)n(F#nU6YOJYCCL>ZI-zm@tk1*#GsTOmV*>q7q- zb@*4v#(wvA!~(o!8MN|UPxgDfh2l-=fkiAInpuAlEuk_g9R2wSJf?~ zv);X7wQSnvMA=;{c3IQd;dGw6QQ<*sEy-V;JO2C`yuvT%S^UDtjWEo zJWFX3$g{KUpz6bKCG>TKyE`0ogyh@yO5?lb=7xxEFIJ1-Jc$#Yl3dh!3&%@Jfny8a zs@Pvi^d!TW#e!5X-i{?DOXEcm4GuZfJO+z;+_br*b`C|<+ouuj&Lq%>^W&otWuW3a zB5Fv^2R|1JqD_+NA}c=R%={>F8HRc=Dts;i+EB-9=#-*2>ESR$IfawFRL++K<&sG~ z;oBi>X(-y;ck0B02Cfq2um*~$82&GZNVs6VgAqx8!BKD}Jg#?evOwx-={VlBR zS@cO0Lo2H#ixIm!jF0X*^&gsLRZj6ZcO?FkR8KPKB@+qzW3_H$1V7j`;%)?GycG_c z!T2(Xtt@P>#VW&68sjHG3`AEQp-t;ai7E;jz{L_z$?_V_JZKp*&bdd91=YoDCTi7P z(jM_tg$%Ph65rEgctBQf#pm$8M~3zp>G*7n*h3ol`^OB9bx{ATg$0Eh4`ul(Oq}a_ z*fngP-8@S*H7t3;n^jPC=xv!{C3rnL)!%uH8IL3V;M?Z>(p&AHj~SznVaH+2=AXxsstQv0Xs8*g zVGMT}HbENNIL{YhAP=s1FmrY;*)g>wl0%zbB;17Xuar11dK0fbMn*C?bc~8vXv`!V z=k4jE>_fK+R<|-FNiW8b-8NRGB(H%UP4FbQfYy?ds63ZSLvb)40nzOZ7LuNe%`+LM{a<5_bq8gJOmnf}|M67~PxdxidLv zxGg3Qlj4ae965XqHDR>I-H_+>MySQIJT4LUNNqbbKCC_IaTiLMKmAp7&wWSOG(f ziJ4w`sL)Kk@CNhOP}RtGfPFm??~iCgL~!0l;URwcVcN`P@I91aPi~ZmaW$1_nl=%i z2l33qB4K_EM6{J*$@mtTMAuK20sqLs7WmJs8^+5D|4Y z^!ZcL1l!{}gBdrgqjP*fS4s1|m?a-Zsk6;Gz8Y)v(|Cc^N=nu!FK!z*9$d9l^W_Z95bitL91F(7^=@&CZKbdn_iOU z-}Ak0(hQz+d{v^05d_ix+2{w>6|rf`ri(WZaJVHtTTtauPcN z%sM=XKKed-8O?!^k?=ZXz~sSI_Z4#S)xDmkhWya(Cm*?4+(y8DMW{|)@5hu}t(1+Q zPeeR%aEPuuJ0r4DM_Fqxk|W=BXU}0($cpX0OVzvS;}PoUX2WU4HrQcH>}myS#N121 zVa$lEq~?~MrEgA2?+M;Vb;>tZd`w4121mP@WMZA2LYaq0*fpDLZEPQM-klcl`@&+Q z=Nr+uNh@`wo}&M(m&dcRv18{}^9q)ylrUS9~ZLArbn^$>>3yzqA^n@JyR&@%~))ZLBm+~sB>qhErYa< zN_RcJxTo5EIe=RJqm39m?2(US`Ql9uteMPm8Qc7*PVDsQ0jW7sN7qYj(VK3k6tC%i zn)I`&UVPhG`T0%f*N>0)w#VqJ_6UszyQ|TAJ97qATLYcDpUd|Cq$k_kC3IHpe(BuX z-3H?IARb^D4-#V!G8Yeui2px%3m+@Y@E<;rNkgCjh9K%+*hL%IM7c3W-vFUS7}M6k z;nf!K2t3^`o(`3Z046fNg9uj!f16yY4N-dJAmS5_0yajo>w)xlp`EgazZ(pE9zhO_ zKI%Y$RThEkaKxYsycD5Fi`Oo}z81)S2HInh@D2u403^gOg8U-|eFu~tn2^x>!#Pdhv$=G>6!i0H zFJzV|5v(TgU3=Q+7NMuKLf{rJno)2vlNY;&w5MI+V*F&w_Mvo?FJ)z4Vv9pz0E;k$ z>sZ3|OhVKx;YbhK70^o{F!-7YTyK-^F8|AmL*dC5FL&`T&1HjB{NZ?xFb>&JUzu>H zp|E~KdS4g%w`1Wxo8iK)aEJ7lHd?Qay3!`v!xP8o2MysbTxsjZ=p#7D0M=F6^@^y3 zY8M~zVl(2oNfc%f(O`kxMnxDM57V>^@=c>opQoSW2u*jT%c2bB(xOW*L8fd*7aG%> zM8XTlsD~`zzGKw1{QkZmnpR457bU`GEIJkP)8OKFnZX|)fG9{n)BkF-s(nY8PLMD_ z$j~5C3f2SDe+s}6=J#ASRRdVH@&T94U!0i^2pKR)Iv`{R3qGCuNxN*{T{dqVB<+58 z*~|b2N$*=;XAI;3NxOhVE_0{=NCdmlS_BZX1DDM=*?>vQ+QR$RH#r}wfJ88MU4W3) z`u$De=Kniipk#pX{%0H2-UXh(1kn%5|5x5HPdkY3j^1lstc{V(5F7=O;qZ=qZB5wqn#L4gxR-Tx`bW5tJ3&ia_JiF zYb;kSidTf7A>~|>Q(BDp*)L44(VWyS3Z*4$vt4ZAL3zZM=P$?GM;?N-xSfAjY|On^ zp?Dp4pD2iQOXKwMC;byzA*=?B6+q@3Cd=ki*(6b%mWL~O^d(b>7`sX@lFLAon#vjN z%GtdUVHVZx@!>hdj3Vsmoh+VckT+#vKQU75vY{7R%=o6moCy!;v`JR#I8w4-^RVBO zEHgDetGwxcPowuKrkW8BJjb18xX<)xN=wgAg|e7b4_Ie#zhr`_pJbe}R!QMwuxp|v zF^d2%^&bzjNJ*cGvMHLMiMIdY{YBTETOaHGxy0Png-l=$?Y3pfhwlAdx~rKhDV^rmBr76kM%EB6EzGX?6k7qf~T z?^Z-R5+J`OiMCb4joM2|liKsX4n_KT-aw_PZ)y26FaxcfQ9;D=(%95nG1=YF+9hJXIoGw1l)RL|^G*FACOq}TifrZEmIX?qCkG?iv<)glMQT-;Mg~lB^Ef3K)Q2q6+(h_(GEkQ^~$%3^HaOO{MP{J=|gxJd^h#~H>j!X*P2qkopG?D-boC^0BXaei3L zGgZ=*-F-aR!Z4RDPm%-jKpAm8+l#5tqEQ}4sZUaK=R`9uQG!cGONrSKJ(cvFl8(%Z9hK4G$!GKo?NcWz zGYY=x7WTYKfrBfd8|j)^8$()1##(RMq75sIB40lTIp;~|W_*FBTWCx%!sP-bY|Uf4 zc>e5%NIlY!Jdatv1!7X|i_~^K@i2~ad_xShZkXDb2pMw4>}ucm03ybLu{w?>|12C1EHx?2}jG0pHs`G>OA+*_RC&Fet+MN6ICMbSjkyH;Rx%9g7F3}J`aCeIy1 z)S#H{<96*E zGMAz;OaoEsOVTSjvhDLkf&smWJY5;Lrg`rSu&6X@goVIzZHZ)G7?MsHd2Yy@BRW$; zwZfFkmipY(iW<`QrSbv-59N?5m^)7~93Ez(Yfti^?3Vb}9R||tDld7j@+tuWW7yi)~#aKo?CzAutw5+w+_~ltch4eQobk{i_6-4N` zYRm2&=lu+%R;J&8^p<$-!jm8nAgPZlHz9rm2Hr&878`lf2p=5__SPMCA*d!&OHQkA z=UrAjJyiAPNj`D+$*aUOL%6+53s+7OQCcw@=85wNNAL=niE*uU!CZWm7L=O`f*g+c zwGkt(R4>}O_s8(0*gcD>Uc76X*fFP>%oOTLcl9a*o1pr+SFa=04WAy1%DY>8RxM`E z&cMEVr_EA?y5g1%>KaXeGp`KaX49P(=6XsJQPTSruxAQ~D>6jJIPwu6A!qQ_BXnkF zYaELfOY$KpOAW>KD4lx!RW{5BC(jgXyJ=!E`zJz@+iKI* zB6K3=5PXQIwEvx`-`MHb#TN_`FHW0;Wj#CHT<1P>JC%vewp?l%nr>#)OrUcia*A|% zh!y`3rN(8OqhKwaOT>On@-<}c9ZhVUcRJH2&L;(Me@e!6c3?;%*P)DzJ9EUlv?&#A z9;tqI*2vQa|2+Cm$CtxVtJ6YRysb}&TYRU&mw&r^?Eg+={}24D?t*mx!%4zF@L~Sv z{;2)eh?nU7UmLDUSoK-hC;mwHZhp@8J>8q zB=k!`S}zdbr>`K#kgl5!aQUO!mpoWf_Fa~Bil&TWL!!d>xqN-%wV-dJ&@yn@LJ|Vt z@>w@Xn@|0jzB9R*xN-V=X>`PGulgE zFAf0d-m!XRMa%F0eBG_QcxAHbFH=(Y6EiBxzI+<1MF8pEmF1gjbG;e2Ix8!-fy9i~ zID;yHX%W^IKXg`A0ZmmhzA+CHCW|po3Z7r5dyfN5D{b7D_2JyOAIE-T23NSn#C~GN zM1WAy+ynwh%$Nk27Lb@BGm|zMr0{ueG8jt6KZR0bvYdLM$&)_yFHOwA-iC!)EdWdl zyMWCsT3E=)ZP;g8h5c3l)0)990!(XRF$YH`xRhJR1Td{8o{XjZHt9vcWm!XTxv=lD z_44ZHc~Eo|QmI2oS3hH$P+*WTO9<7K+yx!})WDjvfKKJ*>^Tufr6t+kR?vYQQi&;_Zk(chP)$a9}PRiQ8^FIVuuUTPp#ROzInQ~ z6x<)3*y67=mlp64yMexdZOVvvBEY%Zbq9EsiOgb6y8(2L=_PU5Wz zaGqU%Cx59v-(0}?IxXAb&}&rzML3cK0mu9A8f(YSRa-Q7J}Iq*Y-{=j(uQMU7l|7e zn)2ww6geGAC64jn-$0*nwK)lw4}dq!1?o1b-H*17=b!Dbd2A|bCw_g5j}g*X5g=@D z>x#d<a<869IjB{5u5Hi!SI}0D91#|O`FV*H`61;3AiZSJ^)sKC zrIJ*Y0)2`7=&x9@>KKTax(3p7KfQk@knHh8y2-3B9Z!<$wtDJF9Wkdc6s~K{@#9|h zOSDNK2X1$ zu;3^hP!Kg9Vo{CNjl}FPgH%tQ8j9?wGUuj#|ELSaH$U zLob*Fd`7C>7iY<9A$XeK;I`BA(*1+A@W_6#&YSI3MfvuX*^pkZiH-7r(-X*_fsOMKK1WjKP|qP&GO+@rNY6N=5o*punFyQ4sVw9>%i?Dw ziEpwCJ_1bu)lC;qhOi&SafBL*^o@iayL^25rLkH1bolj$^V6?Pefei1?rIb^L|S7! zJwb-L6J3)0wRYJ&F4)}BcB_EEwqBV7sJvhYq0!49y zCUHgfnd$xgn5DzpylP@HcRXP5alS&CQqY2mN8p1dJX0B5q zLmWf{Xa@Rp9J{~7$}$M0-a9GEesP_Z%e`Bc7H01gZ+&~Oh*$0?6{D9q^6o~@pzKke z7YNLxk5bo3If8#S`|KQ=3Z=zoK?P^^2Gb$q-3M z%N4I6NV6zrmL^R{h8cBeS5)oPRYxI4xlM_YI9hJIm;-F2UaRD_*FrTI3Q?uuI z!McqblUOj;w(c{cVe~oi^=Y&2v&`Vg59_RK(`Opo-NIbxGv^cuCiMt$rz0+z6Hr0z zCIw_)Wb$2atpVlIM_#!JtLv;R?#hVZtuW7XOKG#KW7Kw5eaBQt*?8Pn{w&vXA1Vm^ z3>7%451>K>>NYVs2U&2k{*ka(FYYx2-Z4x& zPkR1tdq}mRKG&S%Jq;ojrLzgg9j7=ia9`4YC!5RL8OL&BK2jC zZhT|JtS~`H1KlLzj@%t-Gl3H2#~hH|QSYp~Oc_AawKzrvlD=Yb z2336j?Wc){a_ine$7%*L87xLNRy|vz_vmgWHf$_pb=w<_;m5UUXF5osIVak(xh=~2`BFF5pFx3}U*hYbw+IcfP{GU>rq4*SPBPG2 zyWft7O7-z}9aSJ9`5Tbh1K{xs{`~k&fBpEO`$&zSYVI3SlUDqJ)I|A$VLAcdklK`H zG>>;O+8BS&Adpr0ES5h6c>Fw9^e45t%r9UH*n!92@cr?JCF`U`TQKDY^wN7L-+1Qs zeDhF!CLfsHmN8A6{xX2nlAo0Jn|2j{d;Bdo$a_E2IhR5NfQ4>mg#|(y?gkN0q!sY^ zO+E8sSl+PS5c?Ua?LU6u$AQaI7NQg$tG7)l*}+!VkHd*v7DX$&DU5rrjeQ!kzDyzX z@#-dYy6p*Zj!~`LM!$uOy&=IqxnXq%96LZTgb^O~TNFQj;8N$?IHlz)_)DxT>f~+|DEsnzXIZZ>zMoilfZ0R znW#5~?Kjj95V4bg>X?MEe+QF4Iwmv@^XPS`DIX&^%VWqx&=*IW$skbIyuU`vdSZ-` z!VK#Xr`*nmKH3xddWoM;Tv{7iSO>)5I z-;^=>FP=?5dkw*V%NV`C_mwdF^K6=26Zb!uP49%{1wXmY`K%64E{1RPwOg8GZ#Iml zdqjaV8%catnC7Rn*Iy0ama09W2~3ukW`m8of@#;g>i4nYU4l0&;hmq-XU{4p0_VYq z*hRBJe7N)Y?$`;g9U?kdTkQ#(v|Ca;D>TwH32eK3r@lsMRy}YxdMe^`LUhcc3UbQ9 zcjJz?QWBr9U0*E{<-^51{R@n>hwWsps2-qLmjtDRlSv88cX&q0<`ox_& zp026aV}K|fO!(?}{G3>wXb5g!7jFjG z2b^SIWKcbGZ>Ytk!vJBan;_duQS~%?EuPyZ71BYe^eo_Z(AM=dnJkFT<*VJ{=a7?7 z!C@MLSj`DvOx(%CZkk&$&J6f6UNv(n760=`qE``(r#^krQme^1F@Oim=(f5EuY_y1C#!sct4l8tBP81e$ZcB;(KV-$qUyZTHB?Hctr%G`T#aWZ2uQQ5 zN1lGcr}Ms82<8q5%~nyvULS94I2skg^sg=};_ z2y|5hC?7**oltq~*IV-K+ry<9c>Jylr{oJ2%`!6nhBHEK8 zTz?5_O-#cDh**sN1Zw2~2%8vEV3>4$NSsqU7|h;%gmN`SOHrQxv%Bo#J~M30?+$z)LO-Ki%%4#1{`VpIyWhv%us7nIEhYfT`0;(% zXmw9F1P5CLkhu0H#l|RxGLH~6>2(vNbu^kIL(P@LkDsxNG64y6hww#RzNF2tcs`iV zO#KkvA{2Vb4YxIx7P15df)(;FT{5N7tun$f8A^S|zAa}bP5SnIn38t!FXaQbGim8f z5kZgS*^a;XJ_bmCqaT_2t9~T*r+%ctU-l!<{aHV<_wVXQdi?Re{}bPLH=t2@=x=FM z3c37g8h2OSo9A2RsSbkg*1kncik`pN{R3rf6Z-7_G|ri$D?u|<;GU~9fGrJAO9uk^ z^_LRaa;)BOIST;F+DC4*Iz=|Ed1k#>TK|WDvX-}?CPwEG>|LqL%4mD*m*vsQAIe(z zVZoaR`SmDHo!EVB`SYsdud2y^&NNOo8RFb;IUD0LlRgXR9_MG{JOJGz#)rvjE*{Q< zol8JUF95nn4S{(;_h|LInWxxv8|Q*f#pcZYX}5VS1rv6BYk-2`HqtiH?gX%f32Du1Oh28m#$wh5C!rOsS2P5IsR0Q0kqqJ``phIX-+o7hn*dTzf7j}ygxI#GFUcS zqt!dqDP=aWxit7z=ECgR?ycI-F$#$4hO<-9k8bH9Wr`0Ay+KI5AwIeDbV}_4-kp*N_hFPl%d6PI~7Un=Z}@spI6) zyeySnt2^7gr$^jlfPmDTm_&m3UJRN5bNRdOso%Z8{?C8l3Dh{MzoEvR|0&m*k@I`5 z^S%0C40d_cz8UPUaUSG4znwRWQb=6=CD%DDWUA!F7xSp3I0ImNfZ2%gG?5l}Oijz{ zOp|O_H5G%-=gfC+lzV;I%8mfqZu#l#WI%CnE7EPK|Eo?hzNH8l#&jGEW9avXF(&)N zm}9qoWkdC2V)%#R;Cqe3`H%k%HSVt~4$ih{oY@`;)y->@erzT2#YS64aW}J8Gx=Mt zvmub{jGD;{QregU&&%#|9S&5&$t->>i;BQCuwGBz%6P`O?hdia8KfA#| z+<^&s3)1Iv%@DkEVtIt0qe@QY2BSVY1zKb+`6w4D6mrye8!u<0TocfvM99QDJXFxTf6`=KzKt;FE&N!&4Q>YVZRK)&qPa) z-}$s`QT52+s!UQHSLnyY`H%0vB;Js3fh&2-Xg``rqAnv$nW!>%*1inUrAhj_{+?zg z-1>%|QgDbW-Aq|QUgyVT@=uHNfz}mvbHOTJw5vf0+bcCFR6%EDr)0$!J}<;di9|50 z%C@h@FD|2e*y^#t3i?&fGM`kLFj?vJw)pDiaOFptowph-zNc>^KJ9gK5r0SoTKez@ zoyWk)u#@h}xgMau0iVNxLr(lR9PCK;r+v?cb4+@`iqHkPPMmhkf~3IP4C4np z$1S9Q6(PYlP4dPlA;7cYLg|Y}9n*nA`^ocYp5P3V5|=gYyVh5L6(OEaU|>baX1vz> z1K>4R3`|`A05X5Mz+n!X`n!P4!6CPbZ!X^lGB2f_g5$pd8PMb z@$73Zu2#IM$z$+QzCBZy=(JD;q4)2{he#8yGuOgI>4dERNR!A}0 z-v~4ujq@@t31FkXbd%9j*-09(mJ~K{y@ta+(0P;H8hT}R_~aAjKm;HHj8CkaG>~umY_Sq0ZVbdbU?c(cz?C|={hv-k0zTnVIiBE8AKH=sga@rOC zTd@3io7@AoGHIZ|L~WC+^w!joww0YcP`K%N02*H-$Fi^E;|s`40Cap7Z!+wK$P}8l z)`GgOU(+dsoMN$h4Vl)?vKaK+KluFj%ZoaOnGuw=HwI!B2P|gY(+W#PZQMk~{64Qa zNdT9uh5Qs`OMl|w8GXS~=EWOn?cR8V-n4J5lb8%eXhCOjXJ2bx`)Bs+d6Q{XSlj;H zk;Af$wfScQTD1`IuKkseCAWMJr#3Q0lU@nCg}T|tc)Z`txXy>JEid;36rslMf6M9r zKTlbH_aFSZ?xpG-hUNlMhksf3j*`MgzFX>sr8)ev2|bj{^=%W{wTpY-nrZ=U;RIMy zK`lSi>~BH`s|EwYvas7dDTaycPXu0L-=Z%9{hCs7L7-prf{q5*gf<2?q0Lw`in6Xf zzxknso8?jV`>Y3_e!U6(N56)D#uFB1ITQI?d#eAvevKJW&K!R!XJ!(+Nu~6>)>{$* zk%^{zoEe!B&Vb_g0Z`A-Kk8Z3k9wAFS!%_@`&O+isGt~7Pe+x;QhpOFXP8|j#zI^P z#9C1{gv0HTyVp4z_~yC_vLSu3ksr$kW}@#GnSn#G5}zond4!w8WCN63ljadPv;69P z+5xbil`iU!k+WTipBe^MuccJYraWFL*u^CBV6FO{^dl>>&!2AH&23p}D{>R^tum_= z(#R9c@L!9pnXZ)GN!5`;(UoaZJf37d{H2ix1 z{J(du9|HU5n9)exw4`u13yCjdS_cgWIJ%v%$GLbGT{qv!XZx+=aLQK+7a_2e`$TTC zGv@m-CqsWf=A9Y$M~7z)nhmet_o*%wPxV;ZM1O-VV=XCC=?Ac-ycvKkh4Y$Q(HGzbTgXk61mn><;LR%_bVt*H=-POI76Y+)rhUItM^tlm!gACA;h@7%>)$PL&ep0O zrq(vo&A%-niN5?sOILi?bVqQIn74hV1*((vIrZYBK=J4m!lX5Njj`8EN$ZT0)DZud zyR|&BQ%kBH!#+;KMK$*kMyniiuv(euS=O(@T%JnX$Ohx!i9!gHFxhsN{g_B;azl&2 zq9XiGJ9hpJQ)U6=Mf68Rd0MO0nf~19%8t46R)za>HZ$X`BQ`-3)Ob7Q3F@N1sT}wK zbEk`cHrK;}X{jhIx=cAJsELKq5t=F>N^&r*ji_keq(AZmxtrt|CIQMwM&h!=w?d-k zxe99uvosuw08+-&qTU+f3N4AfzoHx3cnygzr3^vjE@GlAFOi6_$<@(a^z8M8*jibo ziA6|Fzda(V@iv97z=aC3D#3L*R4I{%%|e&DI%MxSICSpM~Fu^)iF?;dr4up1DCvBxM^^kdlS=SULJhxswZ>V1RS4S zE6JisdPG9k)g0#u7F&zscc;9IWV`V7;w7&Xv3nqECUu$qUnJZDJmarmMuXG8oXEdy zD8$^)9tSJmzAk1+YfaHXCPAu%WX(N_&UrnAEPlq;wg(OFO z9if@=-c*LFwDG4F1Tu+bnX#ZyCWq%aue4jObN!=^laa+zF_4k_o;R|AP?>7ak#iH~ zvp_j?g(|dQAtNtn=qd)9_Wr36F}=c)tSC8a@mN~qtD9F_T8t@VK@Yh*6i{10 zJ+hkCv%8kFpE=^4B3}vQk~Ova-d@jPHC|ezvKDQ3IJ8YAiSHg&0STlOK9%oc)PGfi zKei3Sh%^zu#E4`|6$a)F^j&5YU?6$*S)PGD$gCx;z)eXI`Uel#0}1^r@PZG}<{@zG_4KV<_ta@K_WVtk|)B(e_+3e1$Xcu8vt_Y*YYjyf=oQ0~J5@zmx} zUcoRT&b6fl0ks}b{`gy{#|Oi*pr^6ZSa&0SeER|H|G|btH82k zlpc@`_{Xy3e>t8VMnljCu)tRUu%!wApDs&M3$eUkaxxI_G0PCnZXXF15Z)jZ&~YY8 zPj;4U+n>TJB|6JdN#kn}&A&`CY%)GoX3I^|W50t7jkNFJg1!Wk|Bj#c?ZtAsvfa5F z%QGAJ#g)e7twnyWZb^wwx#fpefp1__-fGHb~RS zU%~IaCN8_px}*CxkbX74Y<8>H{nH@t;{A=?5#pV}aYrSp{>a{I6{m$CKNDFDTnv%= zSlJcwbw{(z9iQq-NXSc_{BYmupHmfoX8eHn*&m(G|IhcO|LAo7(dqoRm?*viu*CXL zBNNl#9+~`R8dph312j}45OU7|sh4C5ON254XdOy&21d)$@9(5y zRnth5ft}O`0{uxhY6ISHURneuq$Vxz7^MKI*Qx2|myi2|fSptculCkA_iHPj5>t~2 z72Dse@jYCozCSYgV?z3?)}ey`?Y~><1&mCxfp(&I&)&f@WRJPT?iA2Zbl;Moiai*Q zL=;*r<#_?32F!OT&=C6_3Iu1lZMgxWDwJxQe9tNCk0mYw2;OffplZ~THuC@lxb33= zm+vT`3g%+XE4wl>Zy-J=jm#{41P;xRn9{fA6{aCxGGKSxI{z^S7?0=_cN0Q$t6_zz z9WmPsOZZl-icM-AVS(jz>{vnpZ}wwAz!1}(?d90)4L`ZwBFg&&+XmCj#J4}ZyuB6+ ztbyr@Qwt(D+HKULt(D&M2}`HzUb!LKSF_NQT2VI!NVaw*6Qx>Eb2a`VTP=#8N8`e; zRAk1eZeLiBL77Sv$IL=#Ix41?B$g#u5|L7kp=-9XsVy^6i;BEia7MoF_4V~j_oq&!(Uq^|L=uS ze0{;&No#-s6q+%bl3I+3Jg)!>a0#Q}buPo|eZblRF7rA-0p>4p4CYz%x(Qu7zaK_1 z6#E>Qbk>$UTwAa$1Jq09Pl*#rg^KZ)fn)oJLi0x-!YmY4_-D?P|AWq;uK+d;MX1$? zb;a}=DAsi~Yboy5?J>8b-#Q=W6)r0BZI+=-=gD$ z$xL=;I^0z4h_=Z*->G0bGj1SXhj+u~PI+lBMRzlJcPMm}n=ItO+MEK>iz91hQoHbK z3fXlJ2{@#`a!4<8L?b!}Vgq#JOK2XsWk=^-JsenLH*>qa_^Tl`Z~gt5abbmyu1N!S zqS|@g>e?6o+vAlYy0tA|u7>7X>Iw$(@H zN8j*!KQq`5q|VPMzD*J?9_FlSF6y%t2TK(VAXje@Q)u=x^SJvhSacyF!7198 zu$mL=3o3BOcim}e_!LC;x2(ASD|!I`z~7M!)RLLM4gtvj6l}9p{LA!E!Nf6ne|ng0 z!++qT%+k}g-%bdV--iG|OwqpDTM-M0q+)gVMN;DXA}Qso?SPMRxA)E3fUj~znI^v1 zI?P{FLRHqnAsvKC{#OI2L~fRh zJ_&%G%*Un~HPH%wH8PH~Lplt#|ghqd#$#-qKK z`AbZtHsNTXMkuv2SO+G-)(aNH*X<(DvG3w0X%u&-ls|@dV4|nxwu=^X<37RWgI~jN zlZ)Xt*$|u-!r#G$9HhvtBk|$Ok~{boR}G*>L9DCL|XV$x8XM&#h*E8>o*E4o|lm`j$QjAdxsPG zX4L(P$XxP`o(bv<6Xpp-vDN>@Qt%I~Du4W_e*mA$1WNP2-GV&}_#;L^KfL*5Y=?2b zp)O&d{-G{;*vI$H1wEWAJ%9gx&})&e7eDaXXHPn50M&~DeD+CY178_T3Wa{FOP(eBbBo9U1?>l^7FJ6*D#TON{bA= zK}wY$7le~4u*Ye|=GrEaQE@6>GYSKRB^`=ZmnVZENR%qQj5mBGGwOZj)htMR8zM!i z(%srVaXh62E7c7E&L~&o!&t~y$+DDM>lufAm|44AX)U+*iLae*qLYt26>U*N{6>&W zp)0$&L4G73m})oY@}G`6bA>oR>QqiMTxmVcrZ8RzG2WTJ)qtMi%fP97*_(o@h6 zRqg1sB#SWql}#bQwCsYC+Q*gZ8gh>9TthQ zlD!JIyjOd7O}%;g2GRokA!r7hH~D*VqhF?+a4M-@AWRNE@2*!#6Dry|BqL|vj*J$d!=Dlc>%0<()=6N zv)#vfX&SX=Qt#8WbTZ6>_80*VOw)wB61!>G8L25u zbA!M}+npH>prNBHA2WenPAEPy&nn=XJ(+A$l;#77 z3<@msSLhn8cB7F|AGa0_q}UTF#iJ@QrF1Q7#MpeuF3Re3n|Y8Iw#0hNX)O|IdYHa< z3e~$7sg$aP=u`KrnC&(_9mpfLi)-Og*p7=HtqAB!w)H%dh@j)k& zYk5hE=*%*`bY4EPC<{%Pq<-J{(VDg$Ez*>2i_%KxLrLz~V@$O9rs!J1_^-h6g}x*bmV84#vabcyzWLGLY< zZ*8LB)LS=I_0s|37yN3G5Q_YN?7ekZlwZ3xJPh46G*S*Qq{K)l!qD9vBHdjAf(+f= zNOy>&lz=FWfTR+FbczC^0wTWm;4gf>{XNIt&+)zAKHk0G{Wpi+*Q~X!Sl2qQ^Q<2F zIP8%5t3%|4%KZLYTZgFIXP&U4*8?|B;yeAL56^sfU$Iuaky%$4G}$so z-Tr!OGQau%ef!gVk~v<=HNbR9GR@lwdCl=D zUXy{Q1Zr}9?xsgnv7|>CoUWpH6*D1<0+~PvP#?5Nl2#ixZse8|On&*{aY2qk29pN=Q(y9xH$-kXjV9H&3vpL9U3!fbRUD={TLTNPGgKp-=}xh zW9O9aeg>6cR5?x|k75yJQ_dCwK%uyr zDPn%u?#J{>I@=roRdz0CTO%;!a$~cd83qB$amHjV=a{E8`mx6?PCt}dxclsnG1zJy zTAYoWC9*q!;e4m1XRhsQOR?!Z@1M*305jxj^ZnoIwdyfN|G*;pFMF*$FnC61vlXl+ z@r8t(js44Mi9Os*Z#q7+IiQ-Ae=aSCur#jRzoNu1>kqF@?b?UZi=*aj?4EqB`)Tt#Eb-#*+`A2vpn-gkh~ zd&Ibf8|%dvEyvF@mTO|o87k!KiIrwAd!J;S<~NOJCKAqajh&YvM%Fb)89Nca*ALe3v2iu=J`D5rNmm3AgjY?A8WndQ(WqAwBfltZeegN{=S zC<!-}n0C`!7NtJRxIsSjOu*(O7M#5Tg~3eVRL@wLDM;-XKjw z8B&P>JV>%p?8^X#_+EoiI{sz|62uI;34#C%5%ZTJz$lN*j{3^WNRsQ6kR6TU{#cA3 zXe1h>C4-T)!af%YQ)UXutlDZAJsu_E>743~kV7&y#cXc-ndWFx+wnXx)(8kwqj_&3 z<;{*GDiBDcRO;tWsysUKk%h*M^BN9fYrW`WoCr+5u`&HPeM|`c1HBpvKg9*pIIdQp z8IO++{(I8e1u*a0)jB1DFi-!SG&-ltsxOibL8lSVHJD%o1w#alI$`{lz47#SZeh@9 zL8VftzGRC3Ftx|vj3Wf!aI@IDC&*GpcBuvn_xr&HWFdDX%@?cQ;J$#;G~o&1d^*Cr9hL) zB!!t(@eoz@SwJ=W&MEmmNx5Pw{DM^xmZ<+C?~dgq!HDMyJc3|zQ|8vhdyWFC+frYI zoz13;!R5y%`YIs80zP!mguL_$Wg6Lw7(yeGEykc@I}nmXw_u`8uK%T#?`(m1?(r?k z3qb)VvphdKr4Ww8DiCP;9Zr@|OQFdSdOY6gv~FQ{V?V((20f+MY?$WV6sK4>*l_6Y z5OodUSN=M&&;I_E#OK$u>dmD?2(BqXc8Gg=qRF|8;-W~42I8-gKWwi2RQM?2x*}y7 zoRAfn$!E`JCEAeHop!?-uaE;t)f;}fad!r0c3mT=(@5>Rp$f1!6RYprYfJGz>n~6mdnd zOn1<`OQ8?HSc)88jc0r)*sSG(5m_sPN}QW-j2 z0X&fI9G!`;SOx@PHiC8a*wzi#*J+6GVji3sRViA^)GX-l zGD|YRuOPc}--5q2Nq;b#?5M9w0Srju^gF~z5NcOWgq;@(0QXf(-F~eq1%mPHk-Ont ze~|>kd_2Rh*wY+Af1_MQQMy3P)CGF}9X*v@-md~HpM}Qrx?0e=3f{XZ62t@uq=%Q( zdb0|l2#r23G1txSv9%qV zgdJQ@142%PUS0x0$dXGp^s;;8fnR-9PdTXETV*GrdLSIK$!gd}W&WE_BS7q+Sdj1) z-T{>#+;U#n2jKu(uM>p5k$8aP!jo9~VyOjzqW7psA{g&SUW$%NzCsKNNbn)b|dL#gU^EMZ#fRKa`^xNrQVLfCD#IV$yu^|Q?i zNxuplU_yNO1A;bP)%497JG*30h`rlob{qUvzf%y=9mBM})tHAroEvU=JCNlSTE2Yz zW3t&br*fY6Bojm6#Yk$bTJEqe(k|Rnf}C(naP`wZZ78}gZ{gACxI4$l&t(q9n$8z8 zm@0JKcj`Zu@4mGx2-5uiwJLn}`?S2b*>)q?ZdS)id$&pZLCC>La`4Gb5qgkHnb52> zoKMGGj;b-OD3o3Zvqu*V)MFM2&Dfb_JRg$ojXcZVVTt~J!1^v0?qN5t0#XUpiWd{w zi7;jT0)qxxv+{2wKc|WQH~KK$hQY5g+CDIWGK=~UNf~V<0wla<1bx`NQMgf?a(X8X zB)l9rBhI4fw6z$z(Q8MepK8IN3TtYmZWR*!oSQNA?t^ytZjcG<*96On}ks)96T z=+3nBh|XNw3EOQ7ykv@0>Z4v_Ti$c)ym+#oVXv^-azS#8DW=T~gf3aShGcLJwjO20 zAsq^{;p`5QYW@!^o0*TpLSkvq!;e2?wy(V$$?PzKCMM_T!KdLzwK7f(?>TFdC}!9? zdeH+^UhX_?YQ&8oeJ54AZc6k5o}_t+)iz~?t=d%7_+fn4p%yH5Ya*Z6EM`~gdk0mP z?2W2#95=Xh%Rg2fjOQfJiyA%Rv3(jXpw zk7iAsW;Qku;JS#9D_TiP!LuQ?dc7b(2qUTI49CH3>ScJY5e&J#>KX!ntTY<)m7^3h zE`V5(a_4+d`l&mqqx?J*^&r4@nsXHQ92e*BM1u+?_&~7|N-lBmPVOsd z@dx4J%0ZIcSo(u6K_(_qq{x9NazX#nHrCR?WRlzY7nL5Ygi$2=`K3jPYeR{AmZ-`F zp&A!-GF*bzqskvAvDpBDxteJM*&GHj(?K+pYcr213+RIMLw?WQ|9TCM0Mu=M8Et=M zbkBPZ#r_LYNM(|FZ!j^1I5!R{NH&6kM<@=b(DDTj{cQ&Vj>f|0sh2V_fUQL%={(v- z^w9!ksIs&<>=ad&g5E(w+qClsf{&B%KtSy$g(igwQ9eH@?S!ghnz8<#ArK%A;OnRi z;rQ$8j6iivN(QggVCoISW;}ne<5nmcLxzUn7I9|*#Y3(=#Gr96l?%jI&2O#*s=hQ# z;|`hKPbHwFYj>_nP?g9(mn@cVGx^UYV}f%Q8fb@+Z?bB(rT<>hApn(cVh{!JeZN1x zFNt>SdktcjRQMcpX3&P>Y9aQmW99U0oVJ%v|k`9Px59 zM`D?*A5H@}YYPh~bg*O1zbI*#lGTC7#R+~p&&nV{U~5q3c%T;NFOllD3C7;AOL}qm zj>cLaaGr7Mefdk|5{U0S>}(@ND#oAR%7=3>Sr4VN*|$022yUrFaZAX>DNM&d2Z3CK zE=trH2th6}swdl8%R`ZZo4CLkAyhSH4R;f&~kgh13+l~3I7Wx;0SOZStyD7G%@~p>uKri4?Djh) zXDe)Ksc_oHy{d^4WFiSOC%*TUVLn6z6ziLefj~v=rtQQz8LhP$4-xSy>I^tG!^LGRPUkKCxBuV&NE*^J^@h`b})kGIN zSm`QOkwm8OpK|dy-n=>v6RaAgzvSW_ltJKpl==?91$DD_#p32LBk1vET6he<2KVoR z-#sXjgik75ffzY=9_ixq5`)F&DERDopY$hw+WMl5BDJKd9Ub$}sP9(0jnM}Peq%hr zc4bW3X*ykL);``iqQx;@t_tq7P=CbD)FL+86N+EwWSx>s9eSIJ5()EqN7$x@+_k*5 z3ilHW!cT(Uz$Nrc!MOOj+bz3nH4io;MoG-gtnn*AKdJOu!?wY0x{QzB`=2f=;vD86 z-rALN)w@Z@7cM`>=iz!f~mgmVO&(RQ-<%Pi16ygTUh8#Z_vc6OK zxCM`y(6|r91=VobI-$PQ4oJ-PzEIk)YvJ5rs_UctZdNtGR`b|;h<4^f`~q)RWC)ee8NBuvr2!q)YdN6taROnrGcWoY9&+|Ym6-wiYZ2!B(oOp1;>WGgSR{5QTq72D+ zs-7!8-K5ah!`D4*^LydXZ%uU5sK>eVANVNpNxkDgAB3;Ixb5lxJf8j2{gZ(fvqw0! zoUbWkJKo(TyYqsw@a4_>*Xa9-l0sfZK(yz0E!j7mlAujL*oK{buPrSyGH~VYBWlV= z>87zZ2jUywBJr`0(8+k2a>QDw7^G;ZmnW<2;67ynx*|}IPbe+E?qm_&XlCD zY`^{JjvFitqO!8S_#%(Wze_W|bdy(DM`gJ5<#_w6#?X(??iJ(9D1?V43Aq#4;wMR2 zVRwzSe?ELD|HVamVd?uvd~^LIEp#H$N}rQUUUB^!EiJCFM9hp%kOhEP-3OP=+oi-8 z=YEs4H@aqg@cxs;`7-9`M%@K+M~$4KmaN#;Xq|(a~#VpnidO?C=ly)E0CL zh&-s2UiX)4gD;p(U=syE_lQCq9#ykOghpYAd5q0uo);5_vBnw26%Hb%zkU9I*^G=j z4$26}KnSiXnh?9uoE=G*j)uV<_Z|d0qCcU&&1+#r;h;5Ah@0+5tw{1#mPJU40 z50NVv>hPt4+r|Km^V%&q{tPN`p3IU)*%dvPINz8At&~&ug`H!JXrJjXBYHvQ?Ps^^ z>yQ=^G{PtBH=?bAjq!fZDlVYgptoqK-|+8;r*&CciXVP|hbN$|uN-_S)BQ^U6X1G~ ziRRLY3)VAGCEHccrU(vjb54UhSD+LymGVXeuuy>pMzKN+(zgb?JC6;eRnG$)F4gHV zc9BRCcQf$e9&tpZxFw<5ZB})Ly5NA#Jldg}PtE1v?<2;qt_Cp}*OZtGYu~k-+_qO0 zQDq<$j>S|+$qb7SQv_coEwd0e+(Qevj#9w!U$xK_5d?M z?vlz+dsZ=}Ud`fJ$Cv%No8l{iiiOtipYMju$%>4rT6{hp#W!;{2{i1EBn}-_Ln&aI zt9QoZi;EEkQ6*KF`VUZ4(0YUd;Y9n@>h?+~$%u^%%+PsO*Vpq0`-&f4#8)Gyf%fuz ze^QhJ=Iy(zAZn?*FwkB8elHC_dKTL`MBWk%WEWF}QotOaNvFHS03pRCQ3{xGXP+a* z^U+r1_*L|P$2ht%;baK~T6wArlsK5wlr!p~KE+PMZlFtHJU`C{D=eUNJW2Z_r^8@GTG#Xy9tImnMLA=L#YiOvY)F z<;K(-38t4afw@~q(^69CHMhB2$VV|UMp%iYunfeJs@rf^@egMJklXIG4XtujMNZMJ zlQwcI^<)V}teepS)|weqiA1w)a1NzXxdNg14iCBw}1JDhrWi$Fw^n1)jS zm~=+vY(4035*DwXJI;9xG>Q00LQ45CJ&M?q2VV6cI z*tEl;?5F6U*#gP}{EEC3cA)R~^jM8zqu(b-BiL!v8_3xJf1|>4wo=gyrx{Kiavqilgqn^SmTKgiiu&`m;uNB<2)@Ui1l@!#5EynXw{OpRw zqKdokft*b&)@Wuvt0@c1-NJJ9^c%ypi@3J5XY|ZRofstxdp~-CFrxd;lbi^}u+hBU zhw+9jCTN{uZ!WK#0^CdGrPSRi-ajdc{oXP!5R1-sQa18^2!YUC=EJk46NrxWndPb< zW|@2*BGx&>-1NR^MrJ4=3tOy7f|rzoI`%z5>?m2-;xYvw(ehy->G~&7PQjU8?27&Z zrfzuU6r4vb{izyq?fs0Hcd#CTKz2hLzza1^a;lb+BCC`bo<>}{X?c}Rju5Anxs&4n zM@5P=TXTP|@78Wf{O@<4Uq>GbY^f_~30foxbZ4PpOqj`#2J?#u5=^nUAvYG;NH{NV zvv2Zs*+f!FDad@1Reu~UYw?Vohj|Lr*kUA?<}yl)ou>k2$b1g$a|o>$yKFIS z@-duNb62yRBu^-OLBm0(nxIy%e@|doqfYYoF805E|N1ZXFNT3P;y-bt6}W%g3I02- zfE93=H$h|l4`odtKrl(i{6p3R0tDBTh^QcdO~tL)&27=p>X*Q1%`I;8q}522tzaz@ zt(}`l5pzCw@*NrLtD_xrW`LFkI6Cp@puLJBI9PK8|{`wXSt#SH(&F3 zu(6kt7B_-#F)ZpDewcE-fq5P7k477w#m~FJA-m^g`*Pa_70QuoKu0==tw1j$#5(g}dKdy%xc#P~M?=QLo^R+n=j(B{)CM&tR%pDl-->6n@|R zM(a|t*{AHTS-UmhAx<&yigIVycE(lI{7sfx(b!k)kfyt^Y=>3WzF55=>$z2xx@!>K z7|rCH#wI^S*%ux8mxaevp1WHYSn{?EXq%&d8JY<0`9V#QWagY+5C&cqNlHLW9_Az& zJKxj^7RN)DJ_MI#r8+bzN}&@PcvM+Q>qx;SOu%tMTNzlaz>5KWc|^8n8^yMDF6Go= zMz&4afVP7ZPbP+;baMZKWJ(xoX~K_dGMi4S3*R=h)Ed~?vc>X_b>h{>w+6C;C0&UY+`gaX}y#q`;$wCg94>|e?RM{OWHrynUMF)oFl|jcR ziypO<)jH-zfpl*&)^2%yYCqn>c967pj(d{rdw}oM-NURxl3qvVw8cpIsk5o=Rsrt& z=IlG7sm7cFgjtQ4s_(Y6O?cXMji?3Mm#l)4Xx}<3RV{`83Y+1@Ev83gTsX%I-XmBK}FO_TgUN zrw<3lX^s~sZ(Swi>fR?#UYvjX^z*00Z3yT_aT^-#AyCv8f~kgjux=d&lf)Hbuq(X4 zGdc{R9xcQY9+J#FEeT~JFvs|DBuScc77}R9ECSpaS>)@&^U#-V9+Qm3C^jV4TqWM=F^N-nWSVCrb30chY_ws7`b3R zDOf(WuPoZ!VeZb1{0s(*su8HWgzHEwdgfip4Rh+0( zxt^%LV5!5@J{Xzf6{6!6Dgg$8g7Z(xh`tOmo~$Z>+Jb5L#&(5%Fl&$xS;pTY++)8p zEDusyCz4XFW;`OvwD8rc(zpwB>HhAl{ufJ<|6R=eJ=y=&0Q~Qm?0taS0QuE5|If!& z$7M=?rbYBSv3(-;rwoXW;-uJB|r=m4)iqW1X-yt3Ced! zu2PU*nArflE#-RFwOg8dT+|*LJ%v)Z7BjvOSvi;sV4*=cyqgh=1 zt2JRJDc**4E@(%hFBN=ADF9hv#wv;gQz}9D4${Q@I!8%jf`P}?IB>;q$*LR!uO3(l zEYj|l0}VbNHHfZqV^j5WaU)9G6?u?^s1X1fiio?6=0Ob`avNxq=AqOI`$)yX&c zo@Q-A{unP9BL7hui~e4!eoE0u7OnXJL=k;$Andl~R}4RmGGsCyMa0#51`=YXWOL@XrOwcELXQOv2YNl64{}=X$sG@93Gz`2|^)=u|m~rN3O6l=hCFR zl*7$vEM3GqVuoG4O#P8$xZa1e&o;_MAiJK6C_eU?N`jgW$f3vT%P`R;U_}x4dV?=7 zNy>o7o`xpOu_y2RGWL|7Okeg~+tEYtKYKvc_>N2C6M{CSJddY*>UU^(5@0p)mDQPm z)sPj}6@=n60p5xJ1k=mliVamR1HR(EFfequM3MybBHkE^m+Rxe3`!)dV7<8hI(|46 z1M@s-fXgY^@eN)R=sN-6+w(geY2X}SGRpoD>V*?5TIq*X1D%LOI~q`Uf3 z;#|mrXDi)I-w*ccD`buw*nVs54rXH~XOj?M``fwrhBMlrglg-s-=P>OfUP7~w&tO1 z1vbCb9-W-%L|>yvGW>WWj|J9K&}ol@DW@VOonIOQ;xwHZdc_1B2dQ)EQ(&o~;MO7Z z?8aiGHkDvYsi8JwT{ik=x=eOsxvVgl#Rh5w0TIR`sDyaV(;}pb!8!s~z7$t)A3NGv z69E3_*v^+nE@Ne`lyi}dFvoj=u^oM>o`;g+hIFPcra`!(&q80J9>wo{f?wAFroXNM z8Y>*8DHv?r|D;dA7(4v^`s*=DKc-)TRad?Jv_Z!e#cUK&Dr$r|<}#!h*d-&4B34&2 zit{FvU{#6G7kv~eMkaC!k_2JZtuZKz0Y=mw&qrKhT`E3$<1qFFzJO=&panI;e2?Ky zj?Bk5Ph7rYjVYs$>_nU6thWy96#d+BFC_uND(l8e2fVDUr$>u}GB-WDRRH4mT=_4! zC*KY2_oe~j_pb`*mIw1~p8LyV&ssmB`UH$>ooz?!L#bT%#yi_T15CTh1!`TW=2?>? zs!#Ck(@JmbPsSS)cuzjJ`QRWJIR_A*+i-CEFy)vSO|ES!;VE}NSLX_Zgel{J`;f8N zU|(bbD0Sxkasa*yJPY*w%$8YQZ$_Skml!83%HO?@nFN=9;2Q`xP-bWXUNO{^F3FqU zXrwoNxV@%9wbhpL>s|h{cN;@6BhjDF@=)7X z-AlArJE#O}%VO4mSwDFT<$e5kdqYach3$H{fpwL&rl)3hpQ0j?V@FP}vVE0^_>ez3 z(wQNeky>tOcLMHWplh!PUMk(rziXHp^RWo_=WT*4x*JD5s5PqTXgs zd7L~l(vcl&F8RRGMEKa@pac9LlC%ErQbhdI-|>5O@!z_Ypax{>Vl?T$V#r@4>Ka)8 zw$~^hr{@;k_f)!PNP{0MqEA+ViI)$2wlV_5$})S#KVk?#w(Qe9Rl)QG0=8H=X6orx zK}$7@@j5#xex3t%!Ta?-Xx1AN20SaE2S+Il01td&h8e^PCsht^M%;eKK7^fIiJ3h) zmm8|R96cDOer$c5zqDd7YgGh}*CSswu_c#Zivr#$$j#2%fKGgV+U;X{BLN=Sd{(qe zP!A zF_Yb+37@wGKW0tRCZ3ShmpnUQM>>N2*jJE?2V^Uuu<}Za7}AXJY|m zVb&R!FlyAK+s>mk6Z=xNHTPFC5n$7ukU`3Z59gpYDg znBg>VYLJELTJ6{L7{%1czzKXt5S;{DZxKOEA|!Ra%L|TD#wv~z9OGnZ&Qil_C63;U zEYv(9uar(Ap)bnu^_od2l#`&L6oP~u;9+Bu&i7k=PY|=bVTDiNkS5utuzusw#^KB0 z14{CPnvcDZYq{KAV6$hth~t;a)Xl}58y^w9L|m?&Us&djIQk);9}xX=k30s!h97u_ z-r!AqlIq{$I;iEcG~uhj(Y;OGs~9JyIw%e*-Jzxzsy{&R(|L0u=)5c(nrz z>U09;OAOo^bFY*H8e68#@V#0Wl#adXh~B?@I=-SrcQBm-t(lmpp#Q0iKL6!-O|B7< zYFytFqD;vBL^$Z~{iWkZJl7eFz|PN=T?^k`#wOX6+uvQd6n)#o2u{!#r++zyzv%P! zG0!NRDy^@_K9v{Iu*rGJxsF*ESF^rGBq#jJlq$FV>ERpi3rP=YI+w9>#;{vsX%b@& zLwD$`;1h|hrVqZ=64yPb=zPC$^l2bex&5R+^~o7xxZ0(JznM2@t-N1w>M@TkOYr) z&OYcpS;3XDRDeWnD*3=eIzL7ClV>7uga{*ORDD+#^r)YgNi>V%$J|4=-2WO;D3Rsv zw8m+%H>qRe=RQlXtxN6spvKJ2}u zLJPTR$gp?$%v&?O){%?JV@ax4L!%fPD)FOQ8H1xyJgh0NjA>-N?%>+wHt&-1=waK@ zTFz0X&kEjSfm+XB&*FNzJ(9dh%Dfa)P7(a3(fZ{R%O#@>A<==K+```N81oeSa8>+D$i#!LA;46bZ^ zVKF4Y)xw=D@JSD%tiX?K!7L4lHw`j)voQWv+O$Eb^w47+ziTVAJV!O-?qfBE!I;^* z@dp8qr>edvOzYL@y68=3>GHkDYqY$nYnr1lHmnRGh{BZCw+!~@a#zwof*__^H(Ex!f5vkrw&c+hDm)^2@A?fjc+$WbD?!;-ajc{ld9)t)BkU z9s=SrV{O>ehTZj{sMXZ4KN<>}ySc}kTL0jc{&)gx+`>w?y#ef8`_Wc4#7h5}^#|SM zTpJzNqqmkppRcKyw{h|L$F|@>W(5kOYrE%Lx^IsyiGB`es(B-8tuMwtQQwd6v|DWk zzumv%WW?9e?wt8m*X*m4o%Ex0Z6kq*MKjRiT6a6Y=XPFY%HaH(Rfhf`O(%t%qDt?6 za9d9a*j6w*oyXMg6w;Jq6HNSVlQl7ZP?%mt@74ZG+z0bNdrR&ZMdE+p4VsG6ozVL5 z7?QEcL#x-P_P{nx6l2nVlBW@SRhB{Dxb9`JihfGe$q2Ne(QKUi$v302dkq&V;Z8-C zAB#`Igd;au)t~a(EPE9wJ1^1G(N?F_d${TbzUR@Nxv>BdBxGH(qi=m>glB5_{9z4` z`@<~0kLM?OW&IozEg9Key~nNe1RVk0q}}^mJ$4(~hS!kHmyek)7VnA-d5_ zk@e~k?)`T|Si<1iooAn`XB{E2jtz5kPu1SXXlIpqJTB;z2;ic4*s@jmX(yV$L$=1x zCWA9FKV7_dIRXAU{qRN2ZGpSGHEsjP*|{_qogt4jJK#UHH*Iv)Xsylb^ZC{-+L}ae zxp$Gr;1pQWsyl0)-?@PtC@B%{wR09UdRA1s!SJGO+qLkrX0<-!%Pw+hf}Jg3M<%l4 zqK#f#kFn2B^`yLiInvuGS$Umt+92k^OFJdqX@1w&8!_XXRyzH8{P#0&$M}3#RHmR6 z2zvW$1zY{}CEev=lzQhH)$7xN+m}Zo`?oi+pWDQl@qN1O&R@-CVNs`U>YnwU&ebb0 zxjcx$K&7SwgcGqC*P+?BZK*F`W3W{JQK`hxCNoEqNS^5Ytu2B2JTWEhXI}mms3eE1kT&5HvZ*NZ#(~}G zwDvdnYF_%q^krF)-LWZ}4$$7mZ-d{>uvEWwU9M~(m~@aC_6GUmn;l7(!^pI7msIfP zQ(as;2mG?&dm$m+12@9RA1aqSimW=3&V}R)3&jqEC{ddbWt!6Io5JU~DiAkDDBPpu z&_l{YIgU+bhL{~UshaQeqY1lvl<{PwBX_h+#G&%m3T96QWjACaK4+MOxg*a7L&F*Z zKBYSoq`MgzFksB_XtTn<*tn1PhIvqXQAUIcwkY$8Q;F9~D=^D@NwEne!aVp`eO8OD zLWb@fu0;kJC}a(a78%5dOWMzZ?JgVr%I9K4lQCRKe6b{j8+T&DA^-mn{{7SX{D1!N zzkz4xe-`n77LoZ30}~ATPonVu&p2>u04nYj?dacJXng?=n23K1o?((!ySQEjsDiPo zN1IelF#iR39eZ@M)yciLsX|>i#Vx|?N<9eR^}BnXg4GLE;U`0>xC6X?O%`4qBo1<1 zZ7}yd_+QIjdm%3J%A!P@LAjZ_fmK7h5U~`Nx9M$!RfZHQYB_O6tte&LjlkBKIBV96OoomAx& znCnFu-wn@Ely>X8iINH6JgGz^A5&CUUOxVrv-i097KdZa18W#EB3)N+zpkgzZ{Pi6 z`>Hw!v_t-(ag`&5hR&&*9qwu-@l z5topLO!Q#qWyWcYaKivO4_MM=0^2?UA*1m@=$% z#lwApS3+bMSDp?U?b5GUJayMs{WKCm>2W~c&9nN{H0JTWAEzH;Lm*>QEmWuT`{KTrmU_)X!l=8m-$| zOc|8b&*M)TdiSE3+Ma5FKS$HaTC9XtK4ai!ho+fxKneXS#h~bdyNP#a2}5@J;GOdZ zy}*kSCUuG-Nm{Zfb+J;GVcj9wTa7aD0j1E-ayMH}Wn@VV}uH zG;;(@v&G6dIkHD|JIGR_1IoCQwMPsWQrMn$mht{1dj-UlwAza@zN(a0=Cqz%FT~0P z&eBJ%Z#6}A1(d^!s;cdc$TP<}%Z2V}jXE1OJz7p<6Y1R@bx+aG-V&?epRQ6fZ*0oz z4qzAa=6LP5(3t-xOkLHqx7chk{u&LyQhElfl>q^>t1L=)A@w|amG?tv&{8P>4rkxyW zPb;VMj2bG$(^)h^_xg&+(xc_>a8fo^&D>*qS|uI8snb3*Q?;yBt=G@2*Mv7v?eQhu z_y^~gmz;V6{!brQK)H;rRlIpxeDv7mhn4ZVQDgg5dc0fLKI=jC+pwdjb#9|vW{hWV zU+mS?N0gPAkv~xA6KF9>2;^p<;+mI`YiXS8;I=tam>*l#Y|6)^w3Egk8c+EeUvh_M zUZut;tFh&&U?7i^Gw0&`&#mT`mQ4;9&+pSq$9k3BKb$o~xlBsQTHBQ4**w(!-)+i0 zZ67bI_9$7@+R@UldDG>hUs1C(=h6DC`3JABE7$VTUQ6fJ0gwMQ{<|-Y_uD=O*14~9 zz2DGl>fY$O@$hxc`ybV<&o7;CAkhilqmlb|V~N)Xl7~oO+VVXm!m{?cPH%9omGzLM zyWUjbv3adqTd%?fePvo7b*k zD-Vjd;3kE}sZx=Pnn{a$sH8l$GG%KUhFS`w$+B#6gqDuzZP_F?jl#G+&t91kHDwK| zYzaI%8?{qw%6U7wCG_m<=a^eUQ|>ITNZ5?uxbJvV{@$YA^kwndf*zx52)aMgX zYR$z|V>@!U&nJ@-noHSLca@CKr?SSI%Z0~w)gGKr7ZN?Klvmx;dUQThsrIy5e{4_h z+4*dJ!qdmLs{2NZ=Wp7^pFX)iwr~3V{A~|WOMRs32MfCIb3xV$oq0dB|~hY(_AINsLRzxhWe@9n75-P1fQY5d=~+ z7s}pVPX5}=PRsCJ0qc1l|85-i#e}2lZ63C39`|-wXb8W_mIfD{D7+7)PpXVux;f?% zG%8I%_znA3A0lxiAaI)b8@7Mn%ZL zbNCaz-vzF9dEDCjK}sm|{rXY~0{f2t4Xnqp=1Y-6;-$R_JAotxhrU$bXRRL+?MnL} zO+NP;x}lzs+QdwIf*Aa{#P3ezZxTv4L4^)|@*-L?DU@N-M*60ldHi^5FV(C;fWX>O zLb3M3{AInT#y0UR6V}o;@zR9-Y6PJLpI29_U+R6ks>lbenRa(D{G-(al<75VMkph1zxc+l3mloA9Q^1FR~MC=v_8!ZyMU4Vc4hhjAIj|{ zsXdsoqKeo;5S8vSKdGZENbbiCxW?)cZ=2aMx8jXp6L%dGr3r;ad=0fA3FCarb(mzw zGsjhMKX61pCfz+Ig)Ka5&iRrLC!&SuMB`z^0B*CL$L@e@Nv1mw%*Q>`om)QqwVB&MRtKPJO~4_Sc`Uy0s)v)j=K9mY;6rA|vqO5=e=ZO^&XQl~Y*l15IG z!@m(+Y7pbG2ki^t5oTh)YQr;|Clv6#-#-+QvqNB(O+YXgm-5YHF@s?BO=32s%gO}u zXvc}v*KVgLZigweXpRfM?Wy1D=~Pdwah4KwX2&m@KtUa&hK)N{pAv!Pejl5NR^PqE zHhs|7PMY1BTRtGUC0*Ozdu=B*rri4y+ui$H+5&r$pIQ23p*Pi_#}c1ci-^}yru!!| zk4vn?9EA+h;fN9q;(SycG(RrGYte@|uF7t6E+l^5J)POt51C(X8%k#2mo7=XwrhuNK+|zQE&fd; zUVF|vtR&5LXXU6wecaGoJAY*ktj;-tkA6gR`Wb^mv0Wj!X>WYLC1Kwk^ggop6U6ou zs<7)|@{N7t*~OCby2Z|E1)o?kpHInwn?2ue<$iQV*jaRRHzFrpujIPFy?BS?O{3r} z5P?{hT?B$)*3g5^$lgVfs1HH#eK#+Q%7wVKG#RUq2s?*=p{z;>PkE<|cQ@mmTv-z3 z|Fl+s>uEZG&S1J4#@ztW8CgQAg{2{2l=_<+vt%d^9WWE2k>42!<{5b;qB+%Luh?QT zI;7lF6_5YJ{aw`2Dx;sG)Jv5rEf(c4Y*kaJNW7d9+D)2e$WTooG>z;B8fc*&I*<(B zXeSl9$%-tKyrwoCH4!gYikog~JwkF_zD7TDkBjceX|CDwEhl_muh5_kzJXV2{Ec_H zFkmT$0y$f-`q-O-(;Eeu>WWVN6Eel3e!{NLpcgGpetikY%xG2{&(?twX^3dZsni!1 z3&`QT=XaybLq*^~{pB3ku5uhlP*FDq?{^qmH1I&%jz<00eKu*O*&b}I!0}H&9st(+ zu|mnZWN-sXg2@%}*_9fupv`cw%jJ%j^ie4??dG2YoC=C$7oOF-1@;3Q!(2jcnL3tW zVx=#NGSy-%ioL%;9y!980^Xdnu~0vJ^ z$6n&y;NwG_q*nYgu})6)oR~Pd8K2${S$U!UImi2_Ua;#?>*9mMS=*IhoE+~08G#|b2}vRWh`AYt zUWIxHwN2%!3ck?>x!jB{tS6ifH6caoZ7>;06>h*x2rUMNLEw0$7V4bA2F$_mK7C*q zgf=ToQMBbWA9NT_X_TZQG`y4~qq&WGb0sNBHLy8bjORm5O&w2wkaRlsfEsR;`&o(v zbVQpe$8A6{BL^~hwuHz;<0DiDCZudFh!wT0B&T7K>}fQrtUbO#LVGY3PP}ss{)mTg zRl8%R^PTcsABeq;^~d{3MK1Ls*_OwLXA|%g#BKyKsYrUn78&Z}P*YN%R-R%KJFLw? zn7x*1PgZ>kddOC$o`#yDcpid-d3rm`ZACJI@CTa4oCY&8nuO4_FH2)h4(*)8|AIPY zWhfplkS~KfSptf~r@~9y8Mp@mv8w**1_T*tgUN+rX#Fkp0O1nh%MwH~1FJ~<+tKjj za++%}ds;#?V=T34&aXAU!}01sQXqmWL>9nVa7DW$8H`R$OP{4tgaCoBiHFU(F(YG1 ziO-)!X%@&OT;mDBK$NTwBtyybA&AKW<%lahV9z=L2-}#9GIT0Z^@9+OJlc{&ie<>) zPi4tXsJ^z4$5mU`J+#&-k&0zY9%(LA`v<Eu0E9sZ;XAQBGJDz#H-hD`M~p`fXW)K@G+14<|B<*~2a*Ps2t}L~_y=(oC}k`wM2w}ED<%A3kEJyt~VKK@0$xlvPgvyqX2$ptdc>0P!lwSpZn&e$TzHv z+k-cr=5CdnHE4qa@L*fSyNEJ$(vj~?)+_KDFf_Q!!L3rP#u9fbX;2yQ8)r=|U=iWf zrg{FdXaxaSMElDkFfHc^HmJBS1i~ffm8DtI9Zeza(nl=-C5*nNJau|XQY;&W!+1rO zp!_GlL_;|DrXd`bScm}lB}BM|4s7{@j*BU|WBB$c(Uh>&9(yx!9>Bzq5zQbuOkxOE-x3Y>7 zC>si;=Vy_@xf;JWb@-DP;Lgc6Ee1KXX(&yad=dxJzCTNkfU__QVCZ5UPE{gVeG_ur z0#ji@klhG@ZzSIx@-~}kLHAQNR=EC~W&hOk{`Eg(0?p1}6Hhc(zUo%UuY6q2pPH$_ zaKrQ%Lxx-7cZB0V{r^#G^~=!!o{fLs(f%K&sQ7s%0a_ct3DPqXaz$?>ZPO6WwW*oQ z7G2mGB9EqWyLw{mwFL!L_r-O7#fD-sOclZZP$c@N_Wsj9RQ=_yPJe8=L@*{H9wG|} z6yb!|#H|zn60}%U?5b2>ABen$ZFGTy#Cn+wRRxg9M}^8)5K#h0?gV6vdwo-`F2OsfgHVXBLXQ)?8r_j|}H12$v}^sD>)&$R1hW59pW zluA>M{-GL>^9Q-G?jOYC1hy#RadxFVaUfgYB88zwH&aeBo2#Y^m9xe3lqj~e(6j)B zDq0T?5K5t{Yv+sO8-RG6liN`bP^bdWJ)FgEePYn=d9YU-Lj{U&dVo%TuuoOL(kt}? z?bP8-fn{&h^>v*Os6g$->PYm97Yx+K(b9gR7L>jD^yXMjd1pu+no25r)zgEl5==;F zz_V7x!E-FKG-zF$q+d|XGa6HqwoluHsZe)b#4;t?EAv;W-4`=HXcdLAKW&F%^(ATF z6L*W}2X=lB+sCJLd}tDw^6iw6vgDy@zF)`@n(y6*XTd%sgcz#i3`p!TxrsoGnC)v) zz|aPrRFfg~s^_lr&T1r61Ptgtqp~#sr&^2QZrNFj1?U!lZ2iV=Jziw1ay>!pD{6ET zi(>3?RfKi{x&=9o%`_dwtyfTCNd-UYHXO1u95 zn@BC!LGz5BBS5!cQ*+Sr&Ih1dSc%~J*tU@Y2+Qr1*L>{w(6Y~)Wzom=sq^HG?M)sKI(($J00~?+de)Tpuhj&XpkwA z`*;ZYzu0@Lpt!A-KCIxVyW%yF+N)gF7KWa7cnC1W4E< zbMJNLT<6SFYgg@yeX*`bbye4>uD{P3v2PI9t692=T-pA=F4ep8$A6S(P2WD3XZ1=`k~>lSZk3$=zykl}_IcTg^lz&H zM&Cz)@SDD~EpDfOvLdU`=Cq613Eh)(kpAYmzTF{E|hMf4>!zT<1j4+@tP zvpY$}-nJ>fhtCaDQ_od6$I34RN5=dfgg#tJw7cGc1U*!L|6 zSz-OnV^hM^zO{8uU>|7d_Cll z1cZb$P4AAZIS)qtGx7d!532vZ@PF6nHR}1??)ulMq0J)3zeVoxo}eUh$+R+||GY|X z-(?Y#lOy1iuPE@RT>QE1gZ|j=njGdQ zoZL|zz+R&pBH4=vzFPC}-<&l@GrnzyLC<2%REC^($aua*jA-AS@#)I*D*e&Dp2_)o zn~)F^TOy%TSXBVl^D6zTxjj>l&3d5+w$1ff%=@QjD`5BS_3@(D@H^oSm!8H=8NN6Y zfY0^m_1UL>(8GuO?`dP70ufG+K1q9H^W?wXKY9J^p?Kj{D2@7}6&wN-AleNl)8aFg z#z%9f3gOvV-Hl>&OhZsli5lC9p(}qrw^i!|7K4FXM>$SB-;YaFDc|wr|MgIWi_uq= zDvJB=&r;r_`~mV=pU>^AI>IC|l1VqpXAeadwxGYK8iDQRn_Fv=t{JYt?gN$hv(@!<>)e` zh|uZWrJOu~)iswY!Tu_ZuAufRfvMrVIhL)Tl{3rGfUDLR%rmre!~<3*(42#IO*M z+*qCq=kGOq;n6Ai@pdjk?A#Fa6eb|GgFhcBOJ;AQ~K3dz~ zh@h=g`ov>C#<czNtYNpK=9~NFw&dL=trZh$?ZH#o5)?##bK*=oxL_)&et(9DP+X-HgZzB7 z-c2#lOr;F}Ia8s`r8s>P^)ue2LF9BI{A{^&Kqe`Rh74i!%sS(vtVFW?}b5gm~1YX28C9 z%?oK}J+I-VAmC6{qGlC0g8rO1h>sXh7cQ1R5H8+2L>YU*V0Jx$8ju)5^z8zf6l3Fs z>$w}{>Kr0l@os|V(_ApY7w<6#rzsWha~fhTk8tsmZq2uco*k{6jK*(^V$5@w2@w#H zEKq&1Tp`62!w$!$zqqita+fKOLGU8}@ESoYG|k7nC+0s;qpW$}P@FM3ik_U3PT!~0 z&#zU8jlV*3pQGtFBdQ}B$HsblKlC2K;foy{tKsKvzM43Zu@Ka3Lu8iJh6D0OlXVcL zZ(&JirU0@?{XjTU3>?nt&MH=H?-ik{A!h%|)M-#E*Nd>8+O z{UA9OzIn!j`t-1bu%YCxP0 z$W-Av8M=igFStW09@fbRN+#vn&To=PrR?U&sehY~j@39%-!-;B+P)P}aWOfv}CG$7#nV+;s>e&7!a4n`3LZ`Ax=-GDM z-!=yCTdSS!P96AqhZcv@8?v3^?1xTUTGLh-)Muyn$sIHog^C?qXL4g5Rtf5m$@#|- zefQmR42n;lj5-E4f6Wf@@fG~aY%;jkb^0kGL6|#-XlSLZ>W;St<5qF&SHVDq>gX1P zlCw8OY+qp5c`pC-4;MQX*LtlT(pVy3M*-`LuJ?K~HL~nk`sPb)Jp()`6>@`FN;Zc3 z9sDkw#offwhq+XhjE`giynNYtDs2RWWFBwNY|B14L_Sskv@Iny~1V1Y6Wwnr#KpG#A<^U@pUd^3h$+r~fyzz==^n5l)b z8-$>QN(*jmdw!mFmS*0S$;cr~64l@ZTUTTTnwem!GY@G2&}s2esF}FUcJ@Yr6?ifN zbf&}ttVqo$p`m7B!$AGxan?XU%%U}-22q_0WNWqYjoZFV;`ae0#8-tx0)UaPL5$s} z_||Vw5F@Wz!S4HdfMf_aPY?yRwYb~q3b~4?4lz{_aUO5P6TbjhwelrU7nX&M5^pOD zEvK!2UOdZ!5a||X%=GsMz7!%{(R zK(*#Tz;{7pWGmuGsF@8E%(af;45fzwnO>M16BiQm<;S65at6Oc#0Ev%KA_?iC!nnJ zk3_HzW~>8Wr*ds$;HPqh*~N6-eM-|IvCtPs5M2mlPC(%dXMI2OQU<=|cpgUA!oxYt zgMooIm~6Pqf}mCxJkJcSd81Rv1k&h$AGEV>=g>lvmWa zEYZ3xFQnQ={@t&_4qbI&uxG_G*QHY&XU;Yu6@^pU8=sPA5HCBC-Z2KBwcWP&DmQQs|tNMP)aQ3PeWi&Jmd$P?quCkb=|wSnGnT}Y@+w`DDBLMs!Xc_Lfg z$`svt4+;*;65hs(50!}8JVla_GqVt&j;3+0JRd(@Nhge+*}*aIW-KORmS^n1;*@5L zk2Tsj%^r5tp)U^6GNM1Gy7U42O+llMh2hzM)dqWMz(U~h=g7nf4Dg^}WQ_ewna?pQ z^KRV!Jdpl_Ynge#=8?d!KcW)J zOao{yJH-=H1Chy#fF$o5!*MhaLXf%wff&Kz$p%H#Y>K;Rh|Xa|!RDdb^Cse|L^v4k zAR6YINX#chSP=D+RD`4=6cl5f!n>9jff8h36w?k5fHc^ML{X>)5O&@p zM7)B-Wq)qR#e>iwUO;)I)B&nGLnQ1>Am$gYn8vCAB;W)bNVGW-SUG_I?Diyi#13V5 z9w5}Z7*tD6L`#;EBzpdGJmy#Ep1r}iVh|~b_$2ty-eUB*KqQJ-HL$eKAf+8Rkw79a z)HD)??A`^$(F0}K1qMUvRe?O6J7@{L!Ibk5#URGOEIW5PX8cA33XJ(2Y@#EQQST>2 z!gKD-d$P~0DLSDx@(ZB_Jf#qvsBmdC+LRnT2=@L7Fi7|cT{?0fABQ-c80|W26GM`p zP*077fIIgytCisEXgFI(cT95pKp?a;)Jjw%h15NWM~x|v<1snr)vyU&l#f!T?duFW z>nZ>>WROewCIP?iP*(3Q4E;s}Kqz329orf1UvGj5bcRDgxqUq3QbXa9|2;5JMtI?`0&;`rkKMM@J2Z1n8W+eiy|!J zgqFBTq)Vr0oPh(>YwoB)k3hsKd2wdG@3Aip;R)?7200AifY`^jDskg*6i;Tb$l$k? z=-@^q+ZUn8_`d+`{U&Spku8ZR&NYf`Py;xkj9P`vB1k4P2>n#G-5B#sXY*c*C%8Sk zYX1$b!m$B}??+b!8<1=qx# zX$pg;9_tJ+>%nCb6oI8eOchK9zLlq;eMv0=pOLOm^4(-<%rLSMR*545UJm6M1Vv>8 z?wx$)t+yp-L6R?2j;hxNgYF>I$i;zJ!dGyt^ia%K)&rX_O2c@;B$Dix|@-GL0SzP##%>C1MKgUI87!XEv;D;76p1>f^145b$Jx0gH zSo+asF+_mYQgn@HoGWPG&VB`^|1SfAB+plE|N*z4o80Y?BhnJd<<@P~mV zy>EK5AcdV?|BgjwF@C?z2sIW0hEcE-Nt^`%Eqe~eK~H%$*o^-Atxq7FK`~#0rRRZ0 zkuE&?3aklJ`YfkvI>@r7Eu_o<9*9&dNlov%fo=#yE`0@RRp-Lc9KBMng6JHHk^r~U z9A(aJpE()iU^oo#t}?r)&cNa{Lt{es$BvD3=7AXu zMH!i^#O%Y)mN$J0Ki&c2&}F&N7>JODib;-yA^h2u9xAl7$(&c^`Vhdwp zl9}^NU8q2=xDL=*1@9K#i9zQiS{i*rwbA~dSfee|!5C(FHF~V}^)oshQH&`L^EiNt7-}zLj9NFA3Q$xJXr{yUaDfzd>x-9%NGV(kx!R~nK5xAr^;DhQXFri}>H(hi&+P$V6M zxAY1?Du2^LmvV&H!gNYAsq$a7bd6y~ghXlx*hm^6B+M|VvQ!Y6Dv*=T^aJASH^Zu` z7rJnfNZR{`(^5eous`XNta7M$#SiC7UJwq08d@cQFHG7L0>$Tj%bcmg*&eKL8~WAD z4k0N7p;P=fav-oXkn(CV(WNo*4$Q_VPcpFbA=NyvB@m~wVDW$8W=ek9_9*;1%sTN!5Gw_3QkO7CXhZS=7=iBUM4H?PhfH<;JMHv3OOa^keXotVor1=FrcLo z83;qUV~pp4;E^+d_89?-fcW3u@r$4o9h)>V;$*}o#9lBe@6R;GtQ6ss6nh)&U`fJ_ zwM0-Cs-zDp?gWdZAbMO7{KvJVNr^N>AGC$>H24AZoyc@+xy;vs=@WZt@2Xe@eKH*c zv+xEIQMu6F1XE+3GjeuPeVG7Ca~Zvy=|O^-hu+zhS(%j+Df+4yF-$2Xx}aomR;q4} z`dZpP!(EiA{-Jh9YHNEiU}2%h_L64Mk@#!fh3PI#ar5>8BHXe3gkr! zf?8~Hwgh?FlXE~msFF`i06%B2IT+;6gnmGrJ`tRopqm&V7iae~3ybrvfwSBeg5 z-ehnti(Jk}-JJ9)ynvkoINw5)>_W8eLX3^V7x#rAk|LZ}MRVY`T%WTS~bb_R$URW{Bz1Y`G&;?_{4I}7#WCD*Jv?^8c zBvn-|H>RpM`iVK6+CkI}^YYmDQ&!!Q7+nY%W2(VZqXXfr?($MAM%Mh+LRR%zyySiqYy)_?-Hu ztn@6jh6ngM#G;%%CeVQ(`VkZ0q$~gBdVxc9&0%FS@S>Pvy#^8P`JXn6C99EUs)}79 zQ*R@a=E*PlCMszHrwY$cjNpNibE8ELc4RizU{cjXJ>eFeIPf&`;W9Ut29;Y#I5;{EkX@m)%P z3Uuu1w6~fyy+AF)c!}<%o7Cc*#J8TT6;-y^Sq3;O+wN{LlP`DmE#J*7xAU!WVom`I zmLKX=*hZzmi&y!h^8`$$N>-ss`=rWsr7HbQRqHB|x@=SLs!1e?KVa@=$*Q5ZiO=>$ z%RQ|slyBLVuYS<$EqNeu>S~+6uWstjDVWHh%4wNMuHiZBgzM>``&H9;|t6SF_Rfk+ux15v0TvN&*RL`edpX%3Gh5G*Yczu{|{Q)Vd zRSf9nc^}TX0mhWuAQZpE1o)kudCdaC5(14z^&Mt5qSy3e>StasZ`Dsa|JMLPJ4Yw!_n zP%3v=zIRx0YgqYlSe0xhK#*mG~-PyXu1^^g1l<$9(-k;-ozR!sE_Uqj1-Gb@!#9C*rbT zp|UXjvPgvr^T|#_=KciIaxI(kEXDFc+petXa>3j#m&vZEnxulMluq>VNTD=h-4ybP zvV^ILaA8se|L!XN%G#Jp^xn#!57{dZN$o;aY1KWM_f-hHJvbP>I5~MG_YHQvqmHna zJ)$A_qFlYn#uj_f1nDS(8f@mFdRD(?L7|!SacU>KZ?d_MK)88Az4kP^ey?Ugu$J|! z@C^HA(qwmXd-e>f=`f;jUGL!gRrz!?{SWE>eK#!iNCUZN{`G@X{Rq4LI2f=iMZDg* zTtHMKn!@~J?M$aGHllq)cNXlPWE}GmMnycppwKAEI;#~mu=Y5Iz%?NJ)RhN%NZ?{Z zE$QkpK0_kknoo-wzt$ThvCBUeL_e(>q!yZG_mAhST?j~GWwRR+=v`twtBgDuGOQlG z_K(LGj%W8PVD?#NuVOVvU+TmGKe>)te_V0=wc<>^>MFA8Zn*0CcGWv?)wgd|uW3YE z9Ny8S1DhO2d~y{GH_EWlCSO$i+NMA75u3cLD-XRfybs$^5#-DYaE&c-Hy96li|u1D zuA`e509(MLO7zt)T~tio&|4?j?T98ziem+Y+I4DebfsXVY~7b7_DoP!O%TL3&*+sG z`d2VBEgzwj+v=4QGZn|%HrIc|E+eh16soMYtE|hZw4RtEIiEs)!kj+z?iup08u7^- z_ixT;261HN?s?B|PqvUvG&24ov>^Mq(OW&~*L3nQ({kFhC)~0hTYtDU2eX|7^(36< zrfpUih_Vf(WVcM!CY_G2gnyYmL7&T;NL^vhMr7Oh^!7uTO+SX=_D#>nK%2Z5@!3Ti zef$oeIs`#wn=>aY3;kIQ=#Oh9UtqI!3%CZ2>@!IbSp#b^DO9NOONzOLit7wQ*;wa$ zD5krOwu3TXKFJvtunPCloh=EWFZ0ySYB+#U-VZTX<+A4_QJm!ZS8qurjfyGm;>VnL9=RJGdA>XH&Oh>ff8@V?^zQeO=a*G2xV2!znb5am{!j61206vwtM*Z;j_`U@ ztWL_~l?M#ZH!?&(S$*rkxpp6xjj$IT1xg+4HX8}-8>06oB#*iG=Wz?iWBKH(jlU9` zMLIRATMEz0yD+D$*Xz{cCM=k{V0qbtb!n7Lc}!7V6CXECqdPw24s9PN6+R{r6AyR2 zOK}(Z*lz!^)4#HQvvLaKYoAfiF59%A+%#=`Qa|Z?DbpE-&D6 zY2w%6O-0zlOx7>Vz675wIEwy+>^+eF&S~yf!@8Z&i5*0r{a5V6MZRdbUk?(i3WACI z5CYJyPN|m_bs~bzbV-dH}C!k z6uk>Iz6%eyi!8W{?!SxubQk}0=R|ePM6yP(yS7+)7ySa~%`{%D;fcUDcGBC!1iusS z{1af)3IE1PUfros^f3zdM(roqsl(}P?rEs~!x{_f3H07e^em92to7|#M9x{XeoOD~ zsXp@aezvJd-SdLjbIa}W+}bVN`tlF?d3=U<8|;;#Pu<`=B2oa0kV6D-_5fAsX!NyIM7Fi-R9FBE5Mke~acBcOMb&fC_0Ak$I=o$;yNhkkRY%j4VO$4xKOQaNJoz8ei# zzHZAnXqZcZz;%Iu?hEf47cEDSrG<8GJ4r1pW6{E~G?KhGkd_6pGhYj1_xr{d#$da{)oX)o>O^B6YtIN1;h|mOx`^y^z4*UUHUvA#`&g z36jKfk-|~nxs<|tt>Gd~pznSuP4p(!MTW$#^-_k+ZOLUUSI;>SiQjr0m7_3p{}M`& zhN2u_tOuKh^dVSBjc225Rkdzx)r>b>c1m4Mp%BtQ6|*r+0;y3yNF7gO=clUE(=bKj zRtO%^j(-SVx_`ryYcP1Nly0pDO-|~SiWGhlx>UqdlnH=ORE)Ols%#Kt0&yn)_UXr?7HC2VA7+t8j-Zkq5)`!fqt$#;X6MY>G;!DOus z&pb=?Q{j&_i!wR4nChXHKJsZ5fj#ez z87}+tWJzPWoObOxS$7O?^j^;~>ryQ)N@>(N^9gOQ#^5*Q_rVU4Z@Tq9SGHzxNa*y1 zg}kWV-6ac|+^gnXiLME-08Z_!N|j@BJiTA&X8V|m`N5h!!*KhBLFxledg*JOmF||s zP_0ddmqmGUdt>Rzu`j3Iw@vW1I^=Wa{T!kfm20@`t!A;rQEPvO>fp>PFA1W?v$fw!a2OJ za18WS-{sw8+>jSzmW(YK*cGiW9;NHvUEZ-(C_FIjCK zR?1h>M2JBtAljj8p|{+v)!xn<_P7i$x1C33x{TZ}}K+&4y}^+@W$+T8NBa@NX~dg85R_{fJ`d(<+OUd8EhR-sM}M&r#!I)FX^Us)Jm}ED zC30H(lcHo{B1Swtz0H2!nzh`QlS_wTt`CRlDO|Irma)Y(@uc&~r7eJ^&;JG;R1>}dMfE;&FXX|s6I3J7N|L!|6FdB1@HhQ01Ez2hlo*#7$L!sV4(gq zHDe&s0GlJp^KwihwRG?cju-AaNhN`770ix!Oi9nI|8r4>xd8eYOsU0^i{y@;embb4 z{D7>}La)h;@L7oeJ;Jn!jWoh2l_zzlph!+MJXHh3YB5Oht*ybtb1A%L1VUoc2zaQL z9%%Um8)jV;7{kN(olJo3&2R?>uX0Ru$G5HbSUzfbnRsVf4UxD7TX^3W6yahQ<3WLM zOjU{`%JyO_Gr$c!fgw2Y`j;<1O=UI(YfX3a?l;C#IOz%5x#CXs%17WiM{}EY`viC) zO}7x8By_RJ>wW3=Ssm|iks>UNRzuQs#CpPHmV+e6R7B%Ev1+*styDYxyvmLK-57ZA z;jXoj#(W%nR`~o?$G1t@ZQk6k7LDn0NFild6bksGg${~was$7~BNENC**j||p@3AY-om9$vw;=^` zM7s7I^OmHJ^jrt_wT>_J?WKEJC-p0b%SbnzKE1plS5H1)$!Rl{<~Q_MRkKxBRjZTR zG1_}Mtk8@c-C7%_LpS!-c?qe~Kq@nx+1UK{W5y@ehpsR^FBeoqd&?m-X?vIq>TOl< zH!9&I)k>1_i)=tYokkTfoB3rt(Mt672jL&**Rv30wwpOALWi4qC_~+IKW2yLn?;_h z&f>D@6IOLCZUt*|aebDogH@9Xys~s8ZKg7L9W$x+0bE~H;!K|PeJ$mPe4C?e!ArW@ zO6sX6U4}f*X20@$_e;5qf<*vx}BVm8XKcynfPOG zoQBD{s-@~l=Aq)j(^_f5ZRVW%6irW)nde^&nU+(${!7aV$F|zQnfjg!$h`dH{cz(% zc^#mGYSp3k?H7^e9bhVpy0@2^(_>3R{~2-jwB)CSz7^As$2`D;{@ZUr+(+#n?p3T& zgJ0f@UR+(&QBsb4&q93Xo!0cbkyV^RKTBrEz3(h;%sd=BT9US?c}S_m0_>NidXvtZ z6;x}Yst~m-0UgA7_TV!r7NKd64-#}=gmK22n&s0=rf@PysK3Tu#^ILGMTPp@oK3Dg zC5D3F_UGiGip6rHD@n~^aV$1|$s23!9JKOsvW_89ihF$JU0D+fCUzjj!UG1gV-2+D&z z;Po4jckP2}eEK@W`5wO}Gsran%cWfUJY&piG$EjHo*4F(p?X`uR05b$<9@seE?178_kAlwvy*;6oMO5dmvDxwN?|QiusJu0>L-c%#tU9zDU08U#KT%h z4Lp~$+ucNXV;=)?EGg}mnIx!ngCAe&59|}j#S*h_Kh?c7+^9j}ro>TUP7ZG^MYK3V z$Piz3fBou{V!?Yyc|zCUHHDaO#vglS*Fvi)%H6n|@5RK86i-|hihjxBBZ2Zzq2>gr$8wlXw`tH!p*od^jDwMWS>CEAQX`J( z6E5y>wf=DRR;@Zer!Rh@zeVAvxjTM+vzzQN{WFbAKLNT77gfhNv)dO|IC;!J83dW| z4XHf3Jd!HBkDjQZ^lr+RN21YE?UUj`XN)eI>xPCa z+7XL+^q=5Ay896LE%#aM$@Gx&XST~%E=Stx3N2?Rc^YMs)3t-Ig-vl5IdjObJrUa# zujushG7!F&d|RsSRaN27;o5eY&)|3x;g3IH<$3iWIl@EOlBe}E!}D#0Ij976)tlm` z=sOcE2LGbq82{K8-Ej2B^R1!GY6v<A|{Vi2rNbK>ZRLg+5B^AHx(Aezx1N6=m)J8CeE z60v~0sLY(n%E>dT#tbzVwWY~d_;3WBKRms<(oM@u#S%CBbh(^vY=_jb2K+1zLQD|)#d^=`wnOkx^d zzeHfqqQjOChGnPe*^#DvK3taD$hsOE-R4fxTcqN5W{`gpQV;4+w^vB$tiCeQ3y zJZxy-Ld5+;gqVYWINSS8Mlai#?k)Ax_z;SD;|H!d`c=E*&*!-5EF%YJGfJtq28#Ro zx}#jHt~!ik2NHW8ZoYJuIt*61FFhgJDiIx)5p)0F>i%E)FH(f9z{OrVo<7SjOW^^^^Vr- zopk!U_I;+o&oTiw#+E?5i7PxvITfFkwvi_kpyR~{4Ggfb3<|USSQ1#=%m^8btSY4< zwAR(|k`LyyfJgD_4rSdgAuJwIC@aBLYbLE;^<})&%cT!dlnrszwvI^BuaH!#U8E&k zawiIk+vvo3dxW#oYM`+s+BF&)wrclLQiV21Wmq=0J)A1}$Ue;rlEELICF_vO;AkD0 zaO2@f8A^Oyc^rfAv!PSJl-v{xUV7A!y097!wPqk!S? zYvq@4T|<~|>V_;bUuc#jcwTcmpn8H~H#GX!Jo$eqMXv~$q4T{vPKspfY}<3G>#9&! z?nOD-5QiroR+SJ<4^4s!6}P@gRaP!FN;AM72c-#-oERu@jNIrbwQLPIb2gPU6#qRfJc&Ea(e6W9Hq4>=>J6NjHAH!_{Yyty6sPt zR{D=9y-Tu@<3g{G&5>}W#q4q(&r;U||286(w&%9oL1$h``=du@HlBut13~9%llIjD zYcTbJ&n_f@R`%R^4edEf=aw^5zJ>qDukfz_>WILW&`irVSo&VWQQ9@$w~!WHg%+;{ zSz_xD=7gGd8d!~XYZH&_JMsTc(SKX!d&1u=@qS+`E|31HsIJAQ5@{}O%-v-ntLn;Y zu})wpS0=9~D(5+f7mS+qk0>2eZex`rc==>eTlH$urb5LNC&#kD{THo$QV7ARb755R zMEOu+IIotjRau*sevW!5uR+_O&-sTT99m|rvV8fBk=~|L=2}pW{8`Vy!A7QipRyKl zu)wNtv$IZ~y}(W;Z%su|rZjp(&vNs2z1!yG;h!i?=vX&`q~iP~zl@aPN9&N^W6zau zd%gc$TWN#GS{MfztZgBdRT7E&hVag*ZL3ilYmuX=u5g~jj?m zQ)+(Ay`G2h4;;tESVQ$9ud7$3eB$O-xOWy1Ru3@z*yF$;GryT zzn}VDQM%hBFJA3)(^?HtGqZi)i==PaX|Ttzr4<+1NmpACXj<}ISR(!Dibd7){=IS`hjf_k6rM#%$Oky#hH6-Do@GgHV7tPLb z4HJ%c^r`9B4RRV4?<tBLIc|T1P@H3sE<{5s`q$ayUB+nE`b$!n)4OMNoC(-7$6i z_QikReRn{iA?Y-Az?UO5t2{0u{|%*aNn+a4Sxk{wR;!RQkHki%ZfA{0h*3A&Q#+Yx z4DnE}QW#MW8o#DUh&GRL#|30fhw}G5&(F=xEp~7!MhE3;%-6ed$?)3-AaPc;Znm5B zc84V5%FJ%*dj`hP>#o7n`PV)!`<3cruOcfaJ>L36d$9-4%qN9r7U9IX)aqfYUrna= zNGjyMb`0;~sk+DH&P4P$Zp%l~uzfJh@VP5F_xCVwHl1~7lV(-mKc{GaiS+m5 zWtw=fCK}(7TBGXbqnJQisA}E92D^l& zi)MzI&af?En=OCMzEZ3S;=VEVD~4tyi?}UGmO4DIv33H-{>CpU1}(CyWABqj)s@o> zxwNZhZetpJu2@(|iK_=>7Ty(BnTs2aa7Oz_JY~n%u|HP@CQW3U3#oNSS{R4un%pWE z{vvHgxcnhMU%YP7az1VITF82_iBGFxL?Pfny+QoevAqSGzOy}C#9ZbF=Tt59`6&dJ zmweb-!RARXJxnVeo$nbElDcvpn!+5@~K-$aKI=pL<8Th%r3t(k;AGQiTJeevU z?`eXk2Nj-3w_2@{8vf7%z2`6g6!hM$@Znu`+Cv#MfWbEzV5(q6#;4Xz{4Xh*@YR|$ zNNXZg8^;u#pGlhd_t)1x)oD&=S5OHy7o0fe<#*gk<%)e@V+1EIDnC4@=m{z_cj0o1 zf|D_0!@9%~y?q{v_1eHEHP^kBYCMPtalQHnZa_|pg~Z|QR6aU4{TSKW%aX6trJ}WT zxM!B5(MJpkdDmL|>)9f*quN=R1cd?$7PBuN>PATOJwnQavD<3n?~JNOuE~1 z2;>}te&mM)Z*-K97dxwAem8CKHJgcQQy7#x%X<;~VZ_mW_+0j5=R4!E}urD>0-eZ@6*|nO>u&@}r z>w>GGsF*#a^(YKYgQL_B~)I&DN7p2;0@Ffsf2rmb_)fpcBda zB*|`Z#7^AHdmUda<_Bqpi}cx0b)q)JWWa1`znENlKP3_p+Gc+=9jn9y+7 z(ic8O4MCGc_lK$;HcySLpSwHA1k$#(xM+@F_RngPk5#+_h$&#P`AKY z9@KV$Rp5ZUaC!(Sx5nNW@4qqPm7(E(M<*-5P~lc-p{0FDNfSX2nP*j@GAC7c^FFYM zSke~i&^PA`6w?muEVW!&ke_`M8PraN`}_v3RX1oc6 zV`jprw5^ROC4KbAAsK|?y_G%&G~sQYKCx-w%pi(IA{={feLS51iZkPXKOz73C;ku6 zy7~X%s=)Z4UYX|xvwt=n{r6q|uixcA;*T4^#ox)tzw=Ct#9$(tZH@n_2!G~cG%8*G zG5IjiZKVBcISxH>{maEj)K>lBm3feXU;e_ul4OEdGE55I4lU2 zCEhj@YzE*tWY2$WanS>0a!aNwc3m%Z0{4yjiAQF6np*BoL+>Dc|u^^FY8wsp24X z=V=fM8Op2RVZ0+v&?JTh0uUQrl*R(`6 zdFc0y+zk34!~$5wp{(F9kq5-7UnHVQXls+R5r7|o@sOXD9W3#4<>f&dbB8FWuJX^w z4XwOM%jux!0e#h#0;r#S+BF2AwqzRtLHRKWF2T^+DJ>G9*oWo-S^ef(QMPR^+rFaHI6fk9vIwfg?KXa z@N&9nYq|ySn}j@U8?o>yS|XD{Q8G9jZPu@#SB-%kwgf~dh8Mr&m8VFGb$wgEitIt! z9tbaS3SGbE(z}gxLgNG`*|qD+%y1<9IIe}s03zC7z1dGHl3yMIX1|c&-m+6}!h%ZZ}xI4!Io+}VkE^`39aB3>w z_`nO_i{}R5A{5#GXY%1P7!>S3K*eDIMb!dJlIWEp2v?%u&s~J^rWR6hNsS{u;RS+t z{P)o?xr#wijDakS*fhdR6SyIrAm%}Y2s~YJY!qM+12X~;tx6mnYi}eDoJ3_o8%czU zgA@-jK^55@AV35S{efYe|0fL7`V7P9z>|zZ6R{qhQG;7esj#xfLmp+2ZyPUd4PO40jF-Z zQ$PfP$F@sUqL^L)+pW*Cj0@wvX6-X8 z6qf$=77g98#Q2~Gh}hs6TW@GBRiL2xyxkJn76-tKhQVRvVgu>!B(PmKKM`zpbRr2l zQl)K5QN%8F&4r!n(U3@|cct4m^#Ujs9JWwE935S4is`aXz7_CQ<1$@0W zjODJA!-naqh&s5gvfT={^R6mPgU+xKYQlL8J7P3te->0X&5)6D!kiPFBJ@lGr?Fpo zB-w-LGIl1ed0pctqUPe!0tZwKn4}!y>_U69;EM_NiOYP##3W2J1?_Jza=f2s57=c$ zg4RUooHOI~R2TvNp4f9S@&IG~$=u#{hLq@YmEg4sV-!h@AU3%#>QopZ2&LeTnIIek zQcTyr@5J!B3ZE%RG2NCfI6E-mJfGYef@6!S6NHz88P{88v;gW(abI{ld4X#(@WNcA z-%zc{@@+8WP$|d>Fe1I_Up*O_N|>EmG&zG)xq~F8G?lNjHy;lLX1hLkeYnnlcszn& zbcLMu6y)#|G)T-V#WfKd4s*g${vFiLQ5k-Q%DI8!;7cd)%F$p~Y(D#FV< zF``l;SrwsO1?s2?!hNh1m0&=7p@*EaEFgqKSe!ZGu5I%zO$3VG=>!-Z$=rlM2?S&P z4hG1i8Zz<_jqjqGdB7=3o@$KE@bG-|+a`T?iM$Tv5Ki!zNZ7uqIEvinPr6sQA$O`O z81Z$!xEZ2R{NXAl{j?Bf3^IcD-HplyT)Gwb2Z264pyCG7exQ7tpeT0xKiGS(uqfMQ zTeQ2$xj`~0L2?oh$s$2=mYflhoMV%uo7m(GP0lnqXHdx*1<64H$sh_S8R0a}f6n=@ zwf8!E?VIzQi*?bL{XAcNZ&iKuj;b0Xy7h*|rX~O=kbl(~@4qJWW*qruFWi5(#S68f z@U6uM2m$}p3#4}qyh-!EMS7QaVN*#m@9Kd&!rx5M-z_IdyW+;`p+?{#bZn$!+kSo4 zknA&`5(*fJO(4hxr;HWgr@?F~30`K!6NC7J7=jL2y;oX1O3nhL;WTZm;NotdPGk`F z!=PjNz$Zhbfs&zmt)a&Ap{D1d=9FO;!eN&BVOEeZ8$=jV(}PCa+jz(0*(8(#7(l=W z>68o?oAWfI@IvSFdMyuj+6lA8BKBm32MPOQGQbHZ{UU_DF>cvBAV_aWulE})$ZHDU zoPvMVRJSZxKbP5r8BRufn5TYGFZ#M4~6sCY$ zJU9%JO!FLA9nIImCyim-D z05Uil1*HJ>5R7)gA3h&}qaTOajpyd=uQTXnc*_O|)QGw{hYKji>g@Q>>n92;fW?II zp0WX+QHEp+h1O8Uaj%hh!y)_^5Rg>N5i5?!Me-75ARRj(8xDWR3QjzRB3J^X&we?UOs7%^fb}IFyCQvmz{f~`os?D;3D}{X=FGC&zdO2ow?6*g=JQDUv=3*e`?jFW^rVW6eZ@7JRa)FWgBXF!pp94LthGZjgBd z)S@hBQ!h!?CrK+UNo?2)L&5V|TY>;2_uMB~1ai0A@ER*n8_v7Uo?^qESBVq#QQpT$ zB$WY@ZE660S(XvDTiAL83uq$_PA^hfEK<8H(x5JWAzG|$Sgh+?9MYY}WEm=bmiCkw zL0VS?J`XsJ$P)-hpywkjtVIKb;c+_99=|W;P%)ixnZAKH!N3(xP;~;4`1_w2Vre zvR+^osLQvrFd1|!o`cLwv( zrGm1ClG=ee`)qy(^U0gLS>W^>vf-SI(mV%>Tr-heY0X@w%Vf}G+#q#eIBWdzSu8NSg1js0eh-i-}&7n-lA1XzjXP{a&S_bh*g|fE!hFUmH z!B8Yp7~)i#uWBz{T3+6#kTnR&S{!bV7fTqot(a!ZUVwXb`euJt03!zT2yr`bfHfZ@ z{PFeMnKvp~76O-9t4tNEcBu01`Bbr;2YgTWe=u65j}>ap?kz}@$^(o==6UwrDocNh z6uKIY?}`EwEp#5s*N{^+pYOpQ;1zree>-pAP*)yz8{v){m58sL&sB!(MEdaJ1l`-u zSFkH-u1KQtOT}UHJRQvdiYEbuyF|k4x!dd4ck7jf3%96J9{Ux3^aB^b8@T2Raku~q znUz)|5O{ddyYn_QO+=&}l_K>!1HWG3tX|R1Uh(B#iR)fT@iZemQj@DD`Zi*3PT1?r zd)8OYfgR1oSTWg|&6$J6%%m;uoPcOsFJB|12P-mssO8N*In)R#&DTm40k-i*dR5Sb zEv4t$Mp(1^hWlp3b(9vKmqzKeVL;lt(jZ*IK25uA(V~&jJBc;ep72}wvIrrFl=5Jb z&_J?lJL*{mY_fLF%7+)CKPXplGjtTncVH%T%|`UJRV1P1SF-sBMVxhri*%v!bw-Z) z72+jF+w|JM?3~`N9>xpI^2>pDzGH~aJ1;GhOz--kP`x@BvA7?#JQ~t-_O_q3cNE{Z zUbqSgMa>LTuXhA~w|h5c2;QX`Yq;!sy!(zQa_rb>{KT(n6+4#*FE|J}_6hO6uI~N4 z_C)gXW@4J8UjJ;&%9?3EA3X64g6of))ZLpx-5#w$yYhoL@YZ-63(6yeLE%o zc}n8K@9^Wg zma}`7C)GdS{}h!so1I?nb{lEwFzv>$KqM{yk+NW~hq-0Zeu=hX4LbH)Kgb>(vEcs zDy3joEsC~(Vt6`1V?x4Y^T}qn=i6>1f2EI{{gn6ciq!8Fz=Ktg#45V!D(0J2bKz;I z!8F0zG=wHhIpCh^Z}9c~8Mfbkc&QZs#ry78`BzTRO)olT6Ed|ji5crXl^*7NAF@VgLBAVb;!qIsEO-?^>}miSR}y+ zWYS>_DK%f_H(VW=)%Ua}{lG7eHani+JqF(bva_Q+dLgHB;lu&ld;p6|+bDyFoLw)h z4UcZLbry41ZsNZc$*7`PSj3k3So?YGgsTyz7(CtS!*shlT7ww>y0>BkTUx1Hx*1+_ ztJ-G6|B~QXa;E$~=!^ew)t0haA|A)*9@xhZ2elmS5D-@#w#jF#>slP~g8jD7opYb} zFFs>%Ov*$-!306=YE-0E^$Ln#RM-ot4!Vy_8Xg3s&_DHM5&v`~w8HHA>Gb~F;_WZ+ z)|JStDgnH>7mh`?J3H7C-#1LZZ@u}xlk!QErc(IrU(!MLP zoEtFV`bsZ>t1TM@ip6we4GpHPYdm=SB*I6; z$y?iLxN4+5qAJVnen;&65i?V$MeO37^)+YJ(|6!YMu!o z=RP*^lDaCI*dtiC#1|^#Z@kKdLxfYpBVU-lePboukmqdV&yGG|_Zf@r_0T^-?F4=M zvlpYziTU@vn0PuA{rN?**+pvL1tRw%<^;Cyz@dZ z(ai+m$nDj%+3%zuD8-74U`hO&+j#sqGlH8#d89M3&>0Dy1MS?*~~m`e%X6x{#itvbf$@ryk2NN9wfFA$US z!N&aLx_mr?Y%G((rwzqqb{%Su)Jb|?*oQ9{ucnS3NX5Ogd0^Qamio+X^18p!rq299 z;0&+H&ot{zty0ZmwPK~FO({ftACrKu3*Cp$)cIbEhRn8Fq2HW`cPm+Vmy+*xgFTD_KHY^m95DDevwl@)b8aorgH(M|?Ycb*#+ z_LQawUaES;=aYrE+?hu3wB?r_2dmkaPNkxCqOGIisC728Ju&IyP<@rZ(RddCGyn;J zfjQcUL`Xbvz`rQ79|44;+*lHK){5l9`+2WC-z8%_`@uqH4=(Zhb708 z^sCrxg$ygYG>dOqdlaN~k5`TFIC-j(0?&lEIC_POY(%9^X==NX0W=+dOUpkF1yFYI zCX$2q_LjIPp~0S!LccZhAVrR4xHeH->CMt7l-SR)5LE zppf5!2|=LyP&%NiDxU!;mMvmVhD-szt~^A*E904pkvOFctCfVJZQ_`tDcTjCP5S1$ zO!q`feiELDDPCX(Ls0}p(#gWj3tRC+#Pk+&D1sskGusz;1VsX}mX2f-=wFkysfA*w zQIHmi9us7f5iT9DvxNk8u}jj6V)xy14;3L($|3!J5g+tM@OD$%Ef#xk%FPWIs%r;| zj@P$ErX*}8^H9k?h(graMEde@=S4h(wH6`Gw1i1;nVa~ju$lQ&*5GWhU2DjP8(*>Y z*&=awCt3>N^|@^MU1D9N`NBO_S{rr+-<8uHGD%SaGhyh>F#HM{<|SN9DB3-PRZV&r zEw4tkzNYw*tlhZFf+X6IE#Dvo0W?+ip|ivBFdMS+c!aCv+wmyxAlJ_^fjNhtAo~i6Ir~K6BibHe6|oqW;j3H#Z&wp9WgM2mzA3RT6jn}_ z?+wxqTHk4D?l@7iH`8C;KGc0n#%4~S49}K{J?#doF@d)CzpNp`QAiZfRu*n@Mt=xv zCwLB|TU|m^5ss%muX>Z(Yf5lyq1XEx2ZdYknxZS!qE~aT;qf4HuXJlc4>Y>NL7D*c zG;{G!PY#^s#29}Ycft5$C!FJr?r35J7G@k{Jd8kC^s7&R#zYP;;f!P$U?4}|56EF~ z*K#WK$x4-EETLwm9RFcs?*92YrzJ?=^kwR=#}5En-az1C9%j(5Y&`M>C9wfQ(C~UUy2%+# z1{eK}jPV9wd`o)d$eG?ALC0U`-C2-c1;Z^}#I>7{9CMs>(*`r_s(6Qfmy+^Uttk0a zo!9Z&Yr^xy1N*qA_BMo0saxl$6(3t61V0+=uJ2^2bz( zT2@jn^su-3)>p;ORDu8%fYr#^2GPDM?`&-2871P@t&}R)>;ZN|CTKUIF1-;#jxTbO z>;wKO5h444&NhdBk5WNB+J(&PB=B65(pRR?{z^%niurcwCe8>l1w9+d#A)2T%9`;# z{kNh7A8z02Ho+ag$uxIGeT>whue@JnTdcIyRbSd<&+VWS#R)bINongRsFooyT3UYK z-S`s2!PTc@X(Pv??R~!^#97(&xWE&yKc2^%jxpj}y(hKaOeF**Q#zm|4N%+}VW$_1 zw~%apSBT;0xw~%wR4;l9eacxMEf#b2La(;`b%MdZuL&kmNK@7Vhnd-x8Tn^D0JfUT z=*{6v;>`0tHnqA)y|J(49q0YLv31ebD(lpKeQ%|*E2F}f9`AmjcrBp7qj}`J7Jg3F zN_VuMu&t!KWT#Ve-@xr7iJ1QH$kV3IRaw2|T7x5{p5|yB2RE{c*E8gWV_sx%nh6K1 zfi17w+Gfv6Jt|Ji@g5PI(i!g8XIWOeUYnyJgKq{G6;`IvsS}9-a6R>-m!`%|lxjCe zp`l~TxsGS8G1-{;`C^8=^3+u?y}m&Pqjt+#W+yGkDif2U)-a4NTlSyU=8P}xN(Nps zbix}YPnBmiSDLyB*N#mL#$V-h>j93roomcS4PIu>O%bkz#-nvO$Xd@%kh=CZrrftQ zTleWEy5WryRMiLC7}QO~a#`1^EBHNJ89{{ zQacQyxn9LqZ|$M@aESPNUe^A`uFiXFJznLy^ts%znNTb-vy8!Hf<%3C+gojpd$YBT zx8ujD9V(`hg+*UpNw~jy{pH7;TJX4#UZqO~?M@cwlaF5socf3Nw+#!KR%rm@)%H7C zhRk^)7T%gGc4l_E1^8?p8ND2LlN%&Z_utd|`0t@0)M!20!CLeCv3_^KUn!m)rBv4Z zgHIl8uHoHQGW@7Gl7Hu)lfFC>H^`sS=D(d9Otobt_c(o0>Bmme>^RHzquZ3I1RYVL zjrz%zn-5Smk3@WvAEua(KgpYUf*(KabOIc_UL!bHyz(6nFL|ujVs0RBccka_?$k4R zAaK6e9DQET)5|@n7z)C+ci0ABS$ko@Nm|GqiS@jHZhDks`E)foUU=%b&pjSYbr6?> zfOsM0I*?C-CZw2d^r^-SC5ELGM!rps^j3BqtdGgaos#99()64|S$(st4RZBfJ}b4U z9$?h-bhh6NIoNW3g79O%7h?E#fO*KbRZp8Z+|0N?RB+0V2PypAU=Tlaz1tE6_K{G@002CuZ%58r*U;mrKvo~EQUdKWF|~|nu0zCWe^Rex2d-=o-jD7)IJ3>LZ-osECH51csawW?-?~ku_{SSqx5vHtzCpC+vB%eHLRC?9fdwW7Y(-YB|3# z{jjgXu^alaTaeftMC_jaV{4n(HSEU{r?C{6;nGjSA&@vP1%Ge2zeQ8_SG?E>oJNs=Pjj2Dy7ZOId6bX;O|gh zn-o})LJ(QYYl+r3wPCizC7znd_z``00gEl`ZMq4W53Y-j>oRj3Ct4IKLzIzxQn_~& zT0&HOS}-+byy?js?QrY&3PDD54!vx_;c21Pp}s0U4s29jt%3vxsG$d8pHDU+9ji}pkC%c$XjsV%Fw^~ccN9wxlnN0ff(S7{$UjMyP6_Ksag;Ak z<5~|(m?19NL>wx(jc*e_2#>QUMo7w~NXf*rvFc)71mP$~g$~7sBQk6U()?%P?CF8( z7jT)T1V6b5e>u2(cm%M`gPF>-RL;&Q1^s7BdKa5OKEjq?(Y|CDRxS^F7G}3BZx+@Z z#lD*^`7pUYHL=woy7?RyFlZ@Tn5c)LIDQQ^?Q^PZ`vAFB^#5Yj$*>efeA` z^`m}BYFg^_P}ZK8`}|HS5plq$Qum^5Xu)|5u6%k}+rNpI2qO{erFraV>G|Fkr;zju zi2s#B7Ab?CM`^k|Mg~+kV_L|3DI%ceBz}(~y0sM}!ZQtaqW^TzDvCMMRUbAz`{w>` z;Vf2SyFp;0OW???Veh$-rbr@ez>F)x`cZ`EFQF(Gy`%!~q|Fm7Cwhk}W~byiMw=F! z%hRL*TUgzWSFug8LYsZSARhj%QT|+@|C!D*MarB{4*6OT?~sGNNN_tm`i4E#mDxyi zC#S3QHL2a>Qyd5DoAlhH=G=Z11A~a6>X3m2MG&5q@8GHVdV~vkhVCy&tOt93kzsj> zZ+U4(`71=JU}`=+1J0N{@lHB_t&)qfoE{lN*8LW~Iu7mV;-umeL#va_=uJyEtC+YJ zCp1B`=qC74D*T>iWf^7_b9vHKXac28CDBV{B&(&wmf2$*3yLArMO=$qYwc?4>~`Nb z1LbxZl&0@lD}O(E=}&Hq*wW#V_sCb$-n|U#p|ZV*j0d5dJ~a|{YV-*sT@G2pY+d!< zE0H)Y;dz>I#H^XDt06+5WPSa+}LAuT(?l^b@H26D#MP2<%AM;FEe=q{|29 z5ZFc8<9q)zP=^v9{GZ9R|NdlJ2tXB34CMO@IJlFKLyh@ioTIG{poE4lNl-$KcXC^l zkL~_7nTFyC*pU6BKh|A~7*6}6SNMmqS@AN8P4WRCRODZJg#=E!A{sdWln@wGwo=m_ zV>2gHFd&wh34eBBPwXJSSf*JzCd*IMy zuNTswJ)RLNvs%(0jqa50WtZ_~1R1HwIM&v%{qe~fb(W_BwEUB$CEpNlg`(-O?+NZI zMtk$YQY#kq76){HE;t&)fg^yu{_s zQMYu?$)cWpF*QOjJKr5O76)1+<*L7z7~3TcHsjzn|7gLF#)q79n{u#Pfnl=<6TiVl zK{>%-IkvSBQeB(><4!({4fH;Cwz-UymoPLQO_bz$p{$^`)C&;0d6OiFFQZjQ@4b&D z%t824b3%ZLULYnOUG)`I*6SPp3yfG5J`D^q1??hvG>yhCd=S2d9Gfkp007UmTBH|5 z(VuSVvBfYg3A~@jI{{$B7S)Jn9U?En04=P^qnP`A9!kj!$w`x`JF#~apqq%=rh&5a z*pZ+k8(;~Ejs~VwvPL3mj16+z*HeD4Of>$XFL|FdTfr(j^q~ShabyiC27gbE|93A9 zU<5ZgYG6)Wa1=E#XFe#M}3TkB7JSq@lSr#U#V{X5YTB7o}x&@?P;6yR& zyYM}ASq;s(V~P^3SgIMfQIa0E>I29G(KAS5XoZkeN;arzZs2RFz(Nq{^qOIPpfLbe zEte!d)*z0v%6?57i2w)~3+B|I!lilMMatU}5%Q3CT|}Ddb;$A-enWj5;G-zL*t`#j z?@9p;rGwc;Sx+iDO6lWMA*Y|>l>WWt3yuguj38Uaa+`rOFG1lPE}%z%CfTrteZV2T z31EchQUl0fBz5WO=D0PMq6c*=c2!&A@&-M`M|*&c*VUuhoq*(+0t=Egftj%7h}ucLwe6+)2Jw!FsrO>13MC+> z%PQz>2BQY|rrKln6cEP4VsBRLE@r-@s z6uZ};_L~;%XitB&#Tz$z7h|s5I1Jpy=%8 zJ=5OtK#0mcYr8xE+hjX`Z3Mv5A$Nn;wR`#PYepK<*r|aDF$oEK>g`0mqr8?fXTDWm zQ!UfaDlc(@cncHe_@UTuF@&hzd;~b6>2zQk6iY82gqIb};E(V^fn6^#aq`wd^Fq*T zPX`@57adaMj@+243p$o%0Rr6x0Gw8N1;Wp+DaV$B6&>ln`$Yvj-i8Ye9H}I`7~D@t zlnUA4gJ4YbTKtMHQR2h$Pu0vhtKGc6g}tlzlmw2|#SE=5C~*{OjE?`Nf%ii)QDo%G zQkEnBR$2Hw8UqVIso}} zx|laT@Ntw@(g5{;C_+!r{jD_mAtzvPWWIHG^N5;>W}S*ize${}DlmU};oaV8Wx?+r3_CyA5&6s88hbbt zpj#XEFip3Sxm6lb1K4B?5y7v&kBtcd!`k1Sq6PO?fykqP{57j}S`zhm*q?0P;pU;Q zr|@I$8KPt1ucy404VfjoS%FP5(_@ZbKByDZyGO=;i2P3yzMDspf?=( z|FCFkj6>Y!RX?kbXRTrcdi_n z-}8?qyfDbgxyb-mJ57PW^5&VHXQRmsK<~z&8q|)gKsImvuH! zX=gkT&~`4JK3xZZ1@V9R){y)ydV+AjGViXsd>$sO`P7m*3g)?_*QjyZDjCz!;o!fY ziKg5NF;0`*x5A?6E4z%vn}M* zJZ>=I&mDSfFsSSmkb+APKgGM_y|tQs5FP-x zQLwVg_01me=W_kC8qS$;9xyg(+d&msz$fA#-c^CLxJ0GgZiC96%BVZISX`TThs64L znkfn+ZCLnWw5=-kuEU0x2W!t5jZX%;E|Sw2W<(bt^%H>R@JRaBB_E)VZEix(@g4HZ ze&UFi4RDpDb9;4<4!9k-IQ0bkJsyM`{CdT^P8N(=Y!y(s?IS*6RCa1Bl=c#@ zUqUh6PMw%b9H*Z!_+abuQAQR(+)ax8P09W{*NlIQo&L`P2|8f&|2H~=Fw`!}ecu9n*k1xwF^(@6rg>1JrJvfV?3?RfqujUE^-@St zOA*A#s(IPqYy=Bg-%Huv`uR!-lvL{!-HwuYQ8VdS2!gPGhaF4a%H0oPiaNQs~60#}gZI&zfyFbxeG4&`koB145}ChzO_k^}TW6+WNB#+iT$*n=K|T zpqR5&i!E0;weyXOccvpd51Uzp@-SwWFRx*%wqMKm_Hr~mrUBiXdp(=Uw(_Z|xp3kO zG=R6bZ}_4SsB3#UAx}~7H4Hs}F3myk$@#j51gbnIESSFuswBr~H-&@(TAX?yaKv-L+Yco!SVdQKOc z2vFm;1GYJXhZu=bWw%TDPmOzIUE|zxvUI z_2~MrkHY!-Xo$7u`gly}$Mw$%`A5HhP3t-TKAE?!`F*nO-3gmYLNmi|BB`=w6Qkz@eG+L>F1HjVRD5k znGz=LpGw|WXxaYJlGiL|yxmEXM}uZ2%Do?Hz-gve0Rl=eF#KlojA|Kw@Akr5@{8L3 z?r3EI36y#~1?rntjapVE)u^2B3I?g)=h`A#lkz#f!QR;Xm@96I%`BUoR+}#yfwtL3 zOs~Gi9tc3!r#%lZgxa!bmN>BS7DysMYM}YD7hU9OOi3Hb!&+v;8JOYUjTfi#M~ang zcifdo%eBM#F~%zOi5ZlHZa@IUp7thPp#Y#&F*2pHGyOHp4V~A~(g0?U1A1$unKRKb zb#wie6FOkpGsTNLjXk+*>SKgH|5Vs|&jWC}s`o|*YO5-z-8Ur`E7T{44=r)gF z|Bv8WeRXJ*)@o{-ImYp^_Y3Ypm}V5&J;?NT!v?}6TJ%GmRkhMs_mNRs{k)0penRpv zQPKnLkSwIC{k(yxX~_W%Z8S%P59%1$<+LqSd}uRAXoShS1cY#Gqm4Q8=BI;<-uXJPJ&NeAWm8w>WK+!P zw6*vgNd}%h=xPE%RFxS&5)gENHuz3B4r`czPR-coOP+RoosJZPPs9j*biH@MP!nSY za~r|}FdTT!DO_H|0!xmImD1Uz2GT$KV{rX&vFuYY`?$qy_+4+o=@ws{d5-H9up*P? z@BF7@0A>Ic%6I^F{2$Zf^X`tA@t3zoes2&KjfDRW5fl({@1AZWoUc#{K>x_s7@Hq; z#B|Dr;t|IMO7Q~vvCHTDEF&=>VSY>Dd(b=6hdM9hbH%A8qMAB~UOX5qKE{;8;2j_T z1anFzkMh-_m+?_-$HnJtu3SK2ttHGxshD%k&YB~coD)@&rc-+##yL+uE<^u)K8vWc zVFBDnJ!H&Z=OYz-Lx?I5UGm(uxlizAOxuMYe7uyW8W{Zg~b`bf5NOZDdt$j?0;%D>$>P5|TpQq&KC?GHfW&Q(d}K))h#HlX6S{!jhDfiy;7dTw^B|D%@>Ve=B`dJeb02lp4aG z7^V`%V!JqP^P+1g;+`wWW&IHVnkjylcwX7mCEr+%(4@ckB3%I}X>%=`7@xAxZS(!b z`Y1vlX!Wt&WS^h@->>WjKn5T}JrV%h6O|;Bx1IC4VN)b(KeyHMdqY5sxQ9ZTC=C4u zpxp^4hRQ|KGF$y><=aq5yp&e^HS|JKDVEjX6U3IUL?we*9`}4G{-r9w=^6t7ZP=m< zIJNh`PIln0;X+`S zYF&+J%1B3qSBZGCGf>5SN)TxP?Ef-5Gt4_|n)T)u_kl`l?OHGV9;fM8Yu)-_{6pm& zmA3lLQN&~WFMrVdJejBmsu`}5|9-V-KoWoqP!wg*EnxE^N&ZiJ;vbh4ao`jf*X2L9 zCkTHNpexo}JP%=2Mj2FJJeu|hd2x@I+iiH@9+C>Trt?v6@vLR)6K~cM<+Sz)v zZvXo?YNs9(Ak-hPoU3-f>HWy@wC>7>w;k)@_H>|I#MVH^#m}89X$lQ||I4$(^#(Hb zM-kUo=WmxjetiGlm>K}uK?!}I>S&q?G^Uut@CDiCVE){#sZc^)eTI-AMMxUWRO6Ev zCh{ z#hq7i_l`Xiqh;kT788V7hEs8!iYGQq)s=RO?X{azUKuO3H!+6#;83lnIi!-a7`^H# z&W}@WZe@wqXfE4+?Hp$P+K9TSmNC^|5wscZ$1=hitFVYsWE8@|QILs2WEE)! z&5|hJMdpQZ?3EU!+U=E8BVr{4nS)p>S({(MNO*-_&oeQ4*m;tul9#H@!-4A!BD$H`f ztlZ@$_@jY$?|xsM2VY%rt2^D?0x;QDr5InMcL_M*m#zlkzuCqN=!Z|QqB>;4SsKSo zFYj2ZDKoz4TK_;R^G0Pa^ z+Aq#CXr@90W0<4`eR4y%Lot~hP@dZzQ%{h*A#EhO``TBd1bs5OtPL`eVl8dCVQ*-6 zv6;COO0{J#QGi37VPCJPk>+yRmYr3S5Rnnbfk^F%Yt-yR=0;0nl_q<9v0Y4&9GEQ; zj}j~|bB&9oDl4*`-C{}0OdYY!b8l}h!DKf!U~^173~ehaYs8&nhvk->+EsN9_-Iwz zg*DsP^cn7at@9zT_*OqAxc{wTLXPvGaaz~@plRN!;-GoiYyY5SHH>DF?rW<3GWk{s zr*ZvWGbc^Q_kktq&f{6J(zoXyGJm{#eZ2oD_4Y>Dx$8TjN^LtPor6;kZq%qt@2UiT zT?>i&m}5V=y|T>Tk|QRN5P<*ZyAuv*+lZHUSrqUAh2emC$8(u|s?fWnAsSHez#H;r zhN1XXS>TO$WbzysFqDAt8^}xLW;vX~D*G;EA<>*Kh0~Tg3zOekjrx-O^j90nj&v4C z-=c4RD&{=^5QK~Ir@{a%lVrI}oHZSC|o`0TZMhDAy;FN*Xh>Bm_Ki`A++C`zHUhFZ9*O3i=1L=>m2P*<8Z zhL=P3O|^I%FxQ#L&hz*!X;!TWu5bRtcB@GoWOq?>ViyRY?wE~eT>XZMn*CE;vF4AT z`R%bVQBmW%{5F8jd12wz&rMX+Ji^OsKi-{huwOBK?BltxeAic|`|RgQeFH5w`}pqd z6)JI$qWa2rQS)ioWS$i*uG2+}%jhkYgv7qg7iE zOV+n4+e~Eyu}kvNxw3B|EK}19)fEwCTNw`2=~kI81MJ&b9<#RF*^sTW?HvEp-R)c` z<{lG42nokdKAeANAw5r$8^FUn*67+#Zi491yjy>J#+YuWIL+uBcB_n>Q%!mlNBl z!zjtfE9M|YNH>s3a2~WszsR%?PUYF>ECJ(k5;d+iXBM<-C;Cm+Z}qf)*Enmh_z`iq znDVWYy*1+?BvDdqy!47i+~R#XKehu5jgzY`DU0X47D=pLd6X6Eb$vKMAI^0=#FX}5 z45Z`SFbt!(-noX^|DOIafv6e>$ot2UkvP08>gMb|ppqsMm&!b-$+0ipJaqDb5+~kchc(V0^-MwV;uL{J;m`CKAUACh> zUz~>%ZDrSnjC-&WrWcD(LRm1>$1%t#zMsM^-RSx{4~$ajY#iA3#1K7zrgWdAadncgG#?faz+Xl_zGAKeMLDk zTYl6d5V$Z#{B-A)%M@v09$A062`2ZdzDi3TO=KLZyGlOG{RQhy=XvZ99=h$Tm*TsP7#MksIB_#boMA~x%zo+A8ZnDyBp_G{p*V zj)sf9@Tt1&>MKB&?9nRL!)$XZq_u9$(NQ4Nu8`gB z{HnzN6f>ooImVbI%WU)!fL9bBZL+LtS!AQ>pS~akN9+|;QfU6BS|VnZLG&WL#xm?T zRWjuNS+%>i4IK)_vnz)mC)Qi~pd?e846z!Rs4QLj5+e0dRT1QsOCc)TtDpZ|L$Z=C z(I(RPM^Q18+{y9i;nynLP~29RNqQCino-~OEFGv7iWLWsj?kYT@Cm)8noImHW_ahS zb#8t}NC$Hxdr>hn_^+4|SC=h}BkJT>WtK@bDR2&{ZmRq`{1i*fK+&@HcXwkzTDlK9 zxlNwSZduDTjHzyb^lqpq-+GFvbTuSQD(tRgI@byv48;Zz;7P+*qVQG3lhd8`I8RlrF&n4zd#LFxQg_@({TiEplK+2-nawowFjVr_tl#)Z zcR3`320$r1E&Rur`B(B^L_WLZ3d_p-D`xg~3gf?CB*+P?t;-dmVrI7_%WKcp(h*l< ztSI-ds=X}sSh)DEYQIHQ?U8LtcQI3rs@nh0G1KrVuc~?8YriV%*@0KNCmv(KU=(8=TrX)R)o9pE_slmxB#(8Gk4q4-2Ga)LU@&w($(z zYsuX1Cz|1EED;iO*zTnNY3wpVNp#RyDEnxu&Vss#w|3ND>BX_Yxx~Rqfu@%4uPpsQ zN5RUYPX={>pQ!<-OG8eaXNxX>iy8L+HD;nmFT$CS&v`C3V)O`i$cs?<{MJsgD*_cCqAuoza&K7w^Y^2-Y>^6oXY>41|kHZF0$2TK&MC? zwy?7wvY9LdVk(ubb$>4&F@ad9$0kF4bISlHIE}0tx#GZ0+{L7A=lrhVDcq4)JI-IF zfm7eOlf4IW0fCMz7L9XCfciLq1YxlLF(pMZJ14FJV;4f4hvgbLf1wHe_)6&I@h_qA z?Z#kHZ^EZ+k~sxMO2CPD5n{XPvU^BoGVoOHT%;ke6?MabzO(Hwxj%C`m@7eTu~|00 z=jk*S;nqaH-aq;f+9Vr*>!qb4$yX9|&o4#(vFq1?SQL!GB~1Ts%mN(<0!RaI{!|Pn zyFZa}xqm>Iy9O%?gn9V)2CHkqGat|D| zr^;tI%rnN?B1(pT7PRu}`#7E6WUI8fjdcZOf5_g_vA6!Hl4h5(tyE*vlO+>;I?~=` zKa(r}NayM0~PMw6?fZFLXB?EEo`W0ig{2>!;l&oM879Y0UI@7oTMVFeO&tK(nR?|JnGJ-6thBY6 zzlxC>E&x#2Fw?)RHC`-X)j1ZS$P4>}S(KNr(4kM>#_t%T>&jDR`h*&?+d5kqnr3lG zXd%)FZGjZNHD(`PcgGBE5ccpJ7N8JC*F6LN6)_;~c`a{qz&wVnjt><_$qindW%9V1ukWU36$UI9+lX!Ms9Y%>9QU&D2pBX zvGII!(E0Sjr{odzY@(uC;ADODN8sEqEv@4)OtBwp>W~?lFSq2aO#q%BHlL;>aiJ~m zN)#>pr%Lam2|=D<9TNsUub{`0pBJ1XQ}qQwv#}M2db(eJ4`p-suNthk|7@^6|4PT? z8hO`XMXt({ASs);9l8nb8myo5q&R$CZTXV5NZu(76ov9ZUaLHu{6P8iNjsm7gU1TZ zHbT0vKOt7DbN&7i{Q1-4qnJ0>h16*5L;NK5@n+&ojAf-mvMhB8vEqzO4-NVhU%0_j zJ1xOyrNi=GiLqJNMZ_}fN{os1$J0|2S7p5hpGd-+JBtb2%ao~) z>(ltJnRyM^#$LwOA_kV}`IFkZUh_`{e(<-tE?`$Z)@;a_?O+j%L5@2vR%d=OzAxM> z((an*?!F~%z4@u^!*E?gc7h+PI34RpAHnLJQ)60*pXs-)0mnaGZmzA@KpYwr`%CPsk^ewl_D*4LUrtRY0p~7zFXL1{A+WPxu1WSsLBai; z#}$R^Y=z%zWC!??-r=2(yPN+anSPG1D1PF5#&SgEK@+v2#3$AL;RJcGa{YPn%bV^t zU1~!g`Av)7u)Et)$Y#aL{DrXcQ#_fT>1~>yw&&`CR2#-64dmvf zy1Lnthm$HzbKYyZdKjpU#5D~JWL1s1cq)=dBGyeaYXe-ogw#fZ`8U#Aqkr>9x#01!YL-09O+Z(1TZw0&^ zLIp^+SG|dG;`|O_2P$@#lLTW=10Agv$abj8Auk!ceH6>qw^suxUKhOWV>poZuh&() z)Ng$k`_rNXumAwOe;Y6LfFDd-7k~o1{LL$CDGigX58~J}!0F$%ZVZC&&Gxpu&(aHA zm$y^Of1E{)mK2Z4zWqD9CQ(Z9WBK&?30;;GXYl2qx_>GK5sZm8DO&kJKfAj(lXQ=B8PTeV;IkxjtA#$0LpcHep!SNZ{KLg8ll3k=|7E=z(b-9+_G(rcMkj@V>N zX@+j-_Fw<0BJTX@FsiVs0a*X8fj9#=zzu&34MiRLKTK;ZT_^OvOOJo=85Rv!_(Qs= zu&OgRnYqoJM*s_*TYrM{Sj^)rs+M7+7et$^0{L@DIS4s9C|BJz$OpO3mP}09hGKg_O z(|-+dj?Pds^%H>oZ|)F!nKn{{hb)tFAv`#o;rBDNkv0UiU18eBRoack-bazch$e(YwMJL-2C4D;@np<^6BT}g6IkRw&x=5PSWd) z@~(7<@l}o6A2jOoVBC0uPuW~i%3kO-tU{$n8~3A~<~{O8LjzDt>!_iy?eyyiKK>Ts zaMjb#FC2e;4ObvPOXV&$6yL1gvHjV5FX#ZcXskFB6n0ERSzJuhW&H?Gf|%B}rtkV( zW7@geluus20N=959`#8+7<@h|qr`Z|vOR#;p`L6Je|ZF*i}5}B+j;0EU*>5u-^kY+45&fZo`JOkSM%%Sg@YO=^%cPl{DExQ0l7&3|x*_67hlQ}fuqvk~I2`U>4`yK^)49ZRNTUL=w2w@i*bC?gNZ)K$Q5+(Jqj}>`eSn7m$`pl%eFNaMe>L|Z+3V&VzoCq@z zJ7w;glDQ!hCuNRsOpnWT>qemw-V&DiR}MDao)uIcduVm~)=GB70zx`1?W`x~>AWYu z-!-d&C86N#}KdcB?s0bJ)sxlL+TXOiV%G@B0x<;)?m zf=2K5n&rXdKJG6A#UmkU6V3#~>17;1=XW%ns>w8hJuD4rtOpX;GP zQ~uUc8C?gf^_sWVIw0`#)&QhV!wD{iLaPjeD{Ux?-~7Xqb5XWk5A~I%2mluu7kqC+ zR!YS(tC9sL7GBlLePX*qeEhY2*KZDOma|SV%|mwUZH?Cjg}nmyTcyB0FPg8Mmybl? zG9a%`X-&(?y>`530RvGhE)FYdlN2}Dy1pp)H0CX*^UiL3!;(gP zTK*9SJ(3FT?aydm9x!H&_eNC+@R5cA{PfAPQ20Z6;7OJfj>j6env8rMVyD=gWddIr1JeN^Zo*P_F?&jOTC3m$|btJU>)OYP|BoSBKgkf zvgMnWlh=v^+zU?20%ll=(6W5D2Q zyI$1v{YMD&=1em1tzx?95kszk0R!Q=xL0y`=NMO1-34XiH?R{nEXO@eISo6x5)>L> zfnHYJT9={(*M;PjQIUM84A}8g<}X|rz$4!0K^jwHEcZpIciZ?v=cH`9Hm5@sv}gw} z7d*<_1|{ z%iFt4ee7<*M$OLNFBGhr!C|~f4e6XoJvHEOt*R02@;a?Rl}^W&_k>@|^z9By&hZsot@z>`vBi&NU84nX!Yr%-~QTTKCcjV+GY#()$fEj`JW-7n!PX3#X%hm z^$&XbC9fT6;MC=z*Z#Y=^mx~4Fp-x&)_y(X_+ugx&6B?#eV0G5#XXP8KF|QEJQU*) zIQ#1QzK?io2gg@6e{9q&G0XU6@x)(8v+F`83$3>ejlUhC2q?XU-<(P?0Id33I%}bQ z0tFqeOjQN`!}KNZ%*A8MEEzWJna+NRdDa=F*1C-dg?p%y>)ym>UyCM`{>l~8DqY0U zhkTns_oe)VTmnS&{etTPmJ$u-*n%dKul!c<+OPBiIx4|0X`JE@n&)_Z!{s9Db4cKYfqmf&ivBqVw$fFV8Z-YN^#&HsqShp?&B{_q(;#jsG!d2t%mBk%J#`92P1WEBX zbp2bK<0X(v?fTJ@h_`yHF{jXPWl3+((%;H&y;TrOIIo(Zgh)_ECa4^s6Vylv8uWzA zTM61iiC0t;uObq!BNO$}i8n}zM)bs6TZtw@@9wC+yN7sZihO5=eup*#Z{)v=l#YL> z8g6kcDUujvW02$_t?xvLcLBYI=NLHClX&$_Et`{`fC7#ynLb7)L<3ktrx=%kMfCpMoP|=sr6tkXi=kGYKG$j>gl`z6{O~6ZESVokj`H zG&H6_26$N;gG%Nq6vC#V*-K`95E57-6Fwy>IY*ykJQ858(k9j6@)0;~rS zWpGd4u;PUv`*9q0rO;o@!a)>n(hEimXYHKzHe#TE9l#;D@YF$VD2@v1rJ|PsAOiKs zIMus~j-K{{;%347HjvdibPWUcx(>agz(pWomuH`@P|+z2*c<@L&H~zBf)1L%>lolo zB&0K)8*h-#j`5tJqmc?+{U#8qLMjdp=}+h0SKyk_hQcDCoecC6DT9|IHB|_*Q-}VA zf(}uEcG}Q28kz-z`6`peJB>zq!C%(_*BG!J1}p`T&AN@g`tzyg61p6fk*dmNCX20C z&EfS)uO(oFf98;ZxwgY-`y07r(;Vkvv{gZ_`x{mxn_RZGBf4C9FEDw&CoFB8DA16$Bt42sPCnQB&iW$;vmH=@e3Es~mT0-99 zw@n*WAkxT)6RHId9K*j~RmvM86qw&@bh+!sp;RPX=yEcmqQLBwLpUL#uzxjR^y&5V zQ@2873hLBM5Z8(v*9?M#BdNaEk~Skd)FAHRUcG?AZr^Lk4~n(2@4qJ&7vBrM+*qW! zdZ$*lgsa@-*;|7t*%(SrNl8=5j{@&0%&leF_n}uyW}m%Jepj+BtNE2ZMZBqK-Ck=# zxb&=2F+oL)ol@AGQp{y>)9#|dA6$sB~tZ7z3Q1omA7Bj z3v87yrOJP#DsZO?B|;2RCk9&(L;Z+hSYiZ)7&StS*&)V>C^0yd5=2NzexwvE2}2>_ zMo9P_5`vzasZP$eAm{p#^ReUt3b|;6T(Uzh6`_1or<7YzD*Y%#EQL&=RF6<4&`HB8#@u#?G?sQyTDgri_ z4xdKBPoD*PXhY$n;74u1eeF8jRs#o57*6spYP(D>LL~ z)HQ8T$SR^ag&^=vVb}mIR~iEs?m$cZ1WQHWKhU!;31iRUz&#-F(b3N(k!j9qoI^78 zg@}Kz7S)f!5eQ9o3Y`01&?XbyJ{G&6{Tbj3As=XS_mG%11l$Wt(AeG9G!Sej4lKHx zX=~n$7osL;G?Ql2Ytp%?w1%1`Y#jsU>|9q6?-bXB{?h9rPJ z2KaALP&}v$NAI4Rhe`W>CWL41wA0o^hjRS7W-Q^I5(6Gz&^*UO{l*#Tgy3S4^xYHj!+zud4^H6BOmM|!n)FEtc0(&rf9 z9TV8mPyKVK#uiK14ytiq8+JRjO;3$$69MTF?X&fTPg=rz&enWr?_%O9kt=Qs z+8cj#W5_P9Z83ZhAWTc6))ydP6AS5uHseb+@L#lC+yb3#aoi5o1Z07w(bIq#jiQgn zg&)F2#d0O1y95`~a3tueO~)+yn>40Qv?EJpG|j=Es^UND(}C{ys{aDv`7qZ^N009- zblG`9%KRrM#-QDC9Qq5el{z4gSgQdhli&~kWiyfO2VVp=t&E{dJs1GB@t#!7?j8ex zpQ@E%>^>Uj2y7O7h?f$kRnNCy- z(NYCJ1Rla!w@29}Q#T^N8!$WOx^sCH$2ebQuEvd}hEL*RVeW}MxOjj4!HaXo`xL2p}&Tfc2;}B7kB4m<$+u!Q*AXEkC+M1uXIk& zY{3Qe9y~+21O42yS$q%rMjkt}^o2cOVfPDN4g!j!rKN&~2y)-X_OapeKyTcp4hHK2L=C<3c-Zo>nnv1$L;4E8b1g14p2gx4rwKxt#w_20b$!z?D z^7eq98qB*RYZKATw%4UxFr8(AV*m#Cwef8RgZOZ$Kok@T%LX2FHyd#^%us6EJVQQMKWIR#&52oChv}x?Fl;!67s+`3%Ks?=Cwe0bIIKCj$!rp zQ<2v24aPhavamZlrC|xr!*LMaj|X-Dt1RKG+S`R&lhvc>`{LN&kXiFs_@w7I&I~H* z;bg4l55ed~yL9}QrR`}zJ8N3zPgl6HZ|<5O40)i?8gzDtXhflC?4<8vL({phcA?2k zxe^J|z;M(sx7TomW4Sq%z@1lwak7HXj@1`{;2!?nymx5~onX*0d50m|gl-tm$y>}= z<+p3$$lVVHDJ{wJ!CC%~Ejg(IQjuahcK5=&f9S?$LG4(R-egGH#hv*1+ffm%l|C89 zBgN4t{vnyiRp?|&pX*iqnJ9cOLJ@PjNIOgO$8i7LgHqeZm?x(O<`Lztr}sO!juM7* zZuT?#mj@TEs*!7pKSmzd;yrgzi*rt8nG&_($Idx1`20)5NSF? zEVU&D!_GWBtE|YRCJ1UVMx@`})T9gUo%)TEQ(w|`wdP0TuKy7XK71fnrd0#r{O{$U1kccCHW&}KU2znk*D`n~}W%WSXj6v3%OIDv;&i;d)YXm$8E4P{?q#A6*7eLa0sJ=1u-EJb}IQ3Lmv22O?sX6A;8tgoZ5Uuz~AYAFGJ~#9AFw;pjF9a;hEiJ7NEKMw}9ObOvz^#i6Z2|z> zT1DGHTU%QOyF9?5)y(0IlY^a#W00exv%jN_qmyTflcI;S1K`rD;Sy%y;+Nx6;qU6_ z=H|xXUJiA)k@0xz;o)82Q3ZHT*m^=EJuLyR_xfIu_FfT%-qkWbS&qKWkNuE-etxF@ zu|fW>z?+X=ZxRyUxQhlL0|KBW0d=JT5|+?+5zxTEzyMgF8xZtKI;h4sD6uT4o+S9a zU2tMZa7bFPuU|+Map=c4q3Ou5X6Nwa(C`RYcsymqbXugpdsJFfR1^@sXAzC8iEdMm zZSaXjKx2a{DAHZr{+ z5ncd?!>thAF$iP{!mk{Wkdm31mzk-MHQ$i^)+4t+F}JiJHzO^tDK9UtGA~1?U;$oG zQBYV~R1|Mox`ZrEDJ#p*E3YXpuc|38si>$3tsHTx`kY?fUs7HFt(v>GrZTT~pt81Q zxAu8mUEO}YTyXPpU2}V9b7xKKU|RdkO$X0S4{vhsT5<1eaDU|5`1{rA&AFMm)%mf_ zg`KU1($%HK<E-K+Kjg_Ka2kx%m8cam z_eb<<9+u3MY1i6(8mTXvLq6*-AtPugpRcu=D*Z*{zQ54uv^J8VKv|*=cR$|!G%Cb1 z)B(jJVpvLHT82+*RXpv;>oMkK-^rr^*;M~6hq9*@9$f8RTbzX zb?dFOD>xD|#dYc0GBy`(kryd4yf1k%Z`?}hCUCGeblh>Bq3eFUF_!g|_cLPoWF1AR z_Nn<-otazjk^2p0$^&8kRf#EMwXg@Rm#5}AU+zSm^K50#?nSk~e{{3?%d4Ah+3*vA z`m#(w#N21)^JpzY*_MZ>3Gscz7Mb|IaqTjc&Z9Wdub}y7ma)W#(=7j@h$iX?hK8ou zz{LnxlE))eY=$u-Ftr?U;Y=9@36fb@v{~B>EGAU^!=v~x9>E>6myGFN%uydQnqEg< z{_FGS2njVdRWi@WKow1S~UGF+YiDE^9L@KY?<6SEzM+u3h z&jayk&sq4LFx?pk__lD$UvArI&etSVP`S1p-)lO4uRlS2GWmkizHU^8t>WaP7}5C2 zl!^>}-L$%v{ST{$$oAaU{TfXE0>MyREo5%R?93cuzKQb#K>@r=oI0?bedu z3iW($OX}e^$&bmAqbj#;&zrQDWl1u7^FQYn69f?Rzx7RA!?-vb^geV-6F3P6r%;c! zYa}G2#tOfTpk(`YZbw8$885Ty^eRX^On^@>K5k^l3hOY%ax*VypX1 zgd9VnLCFbW!Y!t1LPfC}7tiUvdv~9l>1ZmkPf_My<$)ylkr>7#g~V^2k; zN29{P+NNML@kXWBAkourxQ&R8E^hC+(a%ollr0A_NI$TrLDR%($JsAE1#=h_mzOFH2(@#t8%d|11$=T6sjZFa4U@qJi;{7!$q&!7EQct%#VpTmHd2MJC*_0dl6AAX7m0&Vq6T(r7>UE^my$;eHK5}7PTXI!CIl458kGN zD!$Gc3S+WS*2W0_I$X4aq^R<@lxc-^rM&d)p(pet)GF6C?jU!AOg)G*0a~_sX=4| zK}DNxJjGUgRKdZ5!H5 zR%j?n>W4TDbMg`n+k6&C=4S~DXR{J+8&HXz74k)SK~X{dr*AG88q%R{ z6Dk~2b3bBM*g$q$D>c-29eArNu&(O))X-(CXsYh5C>@Ddmntq0LnP zlOaQep@_ z2)?BfF&GsV&eddzg@k*+U`!$gvX;Vj#VUBs@ryX|fsew7%)|I^s9!6jBs|!Rc|vVW zc%A^FNPJde^g<^Q@JN(RdoACbcv|pInL0^TBuQN-Nz*$?J1t4KIZ1y$$?!bMh&tIs zB-uxbsNppt@H!oMgEzb>4c?+-jXMeNIEQypBYH#-eL9E%Z^Tdv=dE$gB=Yl%AR>O2de$;K4T#@5Zo70tSyM^H=>P&j3SF0x5! za&C*}+#$rshk&lSz$*|!&@zIc1wqioMIxVbPdAsNz!^W!8Meky zal&LS%@t116ZOeJL2<_-NC;FA2P@z!C<#3cf&v2SA;=$_2hlIXDV9Mf2v}XWfKs>M zBs;%z9s>mdp%}47BXCy%#5%MBMuzF8>l;{XL^BWNIm*N26@5hMo?Y+NVI6;e=7 z3C0P4NYE`AjR3CVirPysuAMOX8L?L2L?j|u7ZF;@ z1st}1cyI>Dd0=!qXpLW6djK!lmmCQCcY(_W{BbBo7y8FA89rFaj zws@*ch_g7Pl2~Eqd7)Yhej*_bHZ4L;ue4|vUTRZ9LR(Hso8K7$G%a9Qb(M{rmvyC8 z<3byT(`s-Tu`U4UkG$b(W1`Xw!5@p>|Xbgck_TfPnEN z!5Mt=nWcy|QN(x7T-0IVpl+?aSWCWbw&Ef@V-nOZhn+)+z@IEn(QWD=z_^ZVS)Z)8 zCThi}Z73P33f%({I9GPgS1igm4iYqW613qnwGD|h)2M2q4qHe_K`$4o1uq&)ZGm!H z1jiz>K9VHkW)eecx4{FBxFWrE1=Njj)I~&+1R2$#vWpAEI#1wPMYaIPB1Q$gRXwVu z#ukX;Yeqj0pFmqX&Rc#dAPDy0w-RV*spKQ<{I1s*|73X6yU)X~-=Vx!g|wuT8ng;Q5=|B~Uety~k$ATCjmnWr(&UB` zb=wjnG$CM;NI>n~fb(Uy`(-CG3b(2ipYy6QWvm^Q4xEve5J5m(dxcSp1A}rUYKyg> zODiPGI>gJF5*Ygu5#tN{8Rki(=Ds5>iv?W-7@ro3)(`Xfq2L1ucniQ-Ms&r{fvzS& zG^NFrWBpDe;B_c?<*;wCj1;vDIwS6BDF@5Rqb~-nlY-n4rKxs}D$C$YZjeV zO69{m907vdUR?&*5M`t)nrF*hPxcYdXonZuK5~y|N^>DdA=rdsjZa`e;lez|3zhP5 z>M79&SrwcaL=bGj2ME(KL>M=Nic?SC;Xou_cZc^tnCOKCjgso*5TKz6a8Gf9N^6|=ixu+l`-y{Fz5Ga?oCCd zw<%#soDlY5e}F#7=(Ffjfl&IDjSMgNG_Yw)oFFgEso{Q=-+Mn{7TAV-H} z4EROR$5xfy9ejN_t^h;+)~k+6$b@-w`@>eRb`G_UnERpuL5~yIhr7@?I=NLcyzlw4 z@xxVVPa<5_pC_ZtKDrG*{L=PL#C2k69{aAK`A8MD6sH^8IP1k`gc|F6tI0Gx6`K4a z#ibF%yy9*eB>-(PE6^U;yC8=@4v4)Yh><<0&*!{5>q8!{q+cF_ijTl@07B{?Lx(s(FO8q6OYMzHD)Cfa~Q8Vc(2vB1#(2)Ipx;wSWe}sw^hgugi(?HE4BM* zK~4&Ifu7(EdV+MazbE)xkP{}&`tJm}yur7O&m-yNYVwB@nEJbett#n9Qb?;KqD078 z71JIwO~5S^?oEUX_ZtKkDpEIOG6#qfm)aEyo6A1u?5BJTf9|7__XeRmW87h;+sN=E zeXK;o?{%+_ALoR@6T1=pNHMsk{a}$)$qYha_UmBA8?+#&*i@zK{BMF>91EKSq`78e zH1(0~=dphZa!M_AJ5$AKWrpJ|^?P$wrlXlktqli@O|E;N$6Fh}ed!7&x~tsQbhI{< z!1a2ft@(JXbxU$^|K-KW$hDhx=T|WF=N?{*uj-d;{j0N`&Gxe3%fdIUd6ohcnD|{%wkACAaMu&>mrzh92 zJRC2UXOw@0xf$RGB!I{0FqZ*f{C|b{f24c<8RkE9&k=-NZQ(dv*!7>fr^v+Kj^nm+ zfN1pQ2_9pKa-mYvLI@2x+f3oEgJHiYIdl%GRP%9ZS72WoiI;w%r{~71CVq?wkm^lk zvACo6%E>j`Qf+4dB%8$HU}Ox8oUE_=c4@63j;|u7audFfL;tl*>;QE@`>*kL{U00u zzte5ix7!K{e~E|sOlHNFs1saZISG_$0{Yb!p9mYuv}(*}GH^yU!*xro<^{bMA6M$P zC=4?!?;?@YEx^eb5db(E$m~`L5bWFT>!D`^Gv{Le@Rw!|0M9E zAr|JpCM61Z0O9}_Iw`sTTa!{sJa(WsNl`0;1c>_VqH|IFGFK{e_C@*$>s0QpokVEM z9q3G%Qtkx8Mqp2~3@`G6c2te^)$d$P%Ks}DC7S4wv&W!w@ftny?R<1DUT6Hy#cD$J zpSidPyakwmd+1>&{D;FvMiM2Z^`xq>$b?Wn{YS~Nt8pSyKHeQoxOQvf-T^}u69nuh z?xd-)4QEPtV^WEpY|3OmhwtaZ9`C3|h=5TiGBfuF(tS2@fNY2Sr!u>J0vOpc)bA^m z`Y?nK-Ex}(9WmHl)jxiadhMt%am=P1BiG6DXLzxJ9CUCs|JqvqTJwyO=J>ZR_Ufg$(n;qo@~TA7l)!nn z$%oZG-h*DMO4Sm6)PvAV+fBZQe@JZWCciky|H%m81Htck*d9u#&Y z$BY$AEL)ma7wj6lc}1Ri_u)$bC_avV8e7bwOa@S;39sY;Q?4MT6f118HT$g`tS$~&222ln#)l3=y zS1XWy01;Waqo-cPMx0$OKmANY47V8bAbZMI!;Yfd?1v82FdP$CG(#%N9%B*ndb3?X zZ>Ef~0sCraQV;qq7dxuyJ2xp+*K)gZ4pmjI7n^ASK-U@^Z6B}JmHKE8rQgK6J(jz8 zpmcG}zdP+1-13GbJHn=^f_AFXU(9nGEA|(`Y2!SAfgMG=_t*WF3>*JWD#IW9_Wxx^ zA|l`+1{eUNbCv~=P;E0-W#ibPl&K)W;}8rVdP4jsu*uj!G8EyRLm^&fsSp&mw#X|e z^eH{PSl|mUCrP;gKt)1_`Zhc}1u$t@!*F>OBt@;XIW0m)dk0H1sE4jJ&)|a`zB4Fh z=T1IOi5gt^z^prGvP7g_`lRIqq8MQHtC3t(7-Rr1dd!=@*BQGL1NsDlckw8-Y6T-eluGo;HW<H~D~Z%eST@>8qVp6<38 z6LJw7g?ZXg~Ht<@#_I-x}&fbA39Oh=o7(k^hAvN`InT_$V~N&fRo(OoQFia z2rr(^uBhAG&&sI;1le)5=RD}W;w@W|dY7MC7m>eDAhclof8Bt{fK7k}eG3Bci~d<+ zfyW@U8#?*=Sr{qP#ncgBZhz1+&~*UvKdXRQb`XsbZR4n0X)O6cZA}&0CS&03b*w= zC~u_+!S8)rK{v?eGujRPYwEw<&_?8!&fjh*`tbFK8yd&*6!gc~xqv*t4$wf4{p_D( z|EH7N?G5_N$z^^PK>FaflbidLo>~lj7y1r;3NR{^>WduR8;RpK9l5vtePayHZ=0(g zUTZ0rA?8oGfqw@=miauP0lTZN(hP|#UMRbbQp_q4Jd==CQ5I={I6kZL%9 z1jzPd2m@0Gn$B29m@0*Xm9NF^{8xV1dS*U#*2P~`D*x@|#<3`5D*hihI8Np%WGT0| z{MbX)MiKuJjA-;N*$!Yu2c!4@_Fzy@|52L; z{qN(NrP5!=wcWk@iYcoA-C?Tg5~K`B+;P@bd8zhVv-vh+>m`Ds8vA{&0i2)lUloIX zTKPAA;1`-7P^Rzr=c@ZpA6M9SN_s7vvYWgQO#Zub^uIfY)|E^ZspQEgi69vzoDZh0 z|Kkbar9A7&sM;u)$BqFYtu9|PGFTJHQ+-EA- zz65sUxOQ>ti!;e-r?Tgg3;MwFjCgg$25&)FL4vHB z!_st`y3_>`G`U{p$!xLbOlcgdmVFq`!aJLArvZ*FgxjpOCBmvuSSspN3Byd_{fzdS z>kKfQ=kCc`x}6&>xNy&1HP;Kuy!Ax&69d)=#dsP{7{>%zEspCdZ>_iUr?;zJ&kW$P z4ZFK#RRcGiWvK=pBEA04tF)Jh>vhkgU4saBmmal0^RNo+XD!>W857*wubq_UI;fl0 zv^}VM?Nb61PX5UZVx5cV9iWcOAmA{gi98;}n1`{*G~wwx7ub!}cptQ%ZI*rOxca&G ztrO7mE^}`FJZM|p=|Z-jy+o?FUtNpCebjeH%g(uOo~HGH<*65SOq2eEEjQ=3haZFz zmG9S8xDuH+;*Jt#uDxHs;CnPKyj6ZY@no)rEvsMY9d~vY;hw(0@H0in_liOXb^UmL zA2%@G6fag+-+imc({@iUW5=$&&2A$NwQVFwDv)q_@)tkQ&xQHRq~;N>4NH|aMeABl zefwYh0PSM`w8o9IfV)nay+cEonwCsOa~-imyA9rNe&ELbZk9avVphO}QZ091T8cwU z|MD|_-d01?2VXI?d9JaNV~}OLOjT-In1cBY2)B(QJl?CrE0afbmGbKq`&*L&zU)Vn zGA|#{&fs9_tW^ehK^|>ZKI8pqJXTmL+#czIKNRp^7$!WH1M(c|WwY-v~cwmsx*Re8{Ok{m&8Jug^`_@*DxytR5<(-d9(;Ap+9uwH{2FEn2ED@TPzjUQ zD*fp0b1R3?d>g|}g+83ZDmN{+#NDm*!>-EoUGalrmGFzcx4Pl^H&@xW7t{I@YfehO zPctjpmg1nFA?_X@%FIJ|!D{R*6lXxGFgqu02=UOZ>mg3TAW_-}+kq7?V#@R*tft?v zI_I;JGpprLMJ1IQN2z6uKNDC1XMUV6eBBOG2J?Y^42v?ZtG3*iMQKMSe$=F9C>aPu zy=cQdsZ?{@HLRvW)o2Q+9YfhnSR$ubPo{4jJH05J&VKda#wv$krrOTJlXh-=1h=G? zdgu95-@Xrow+dbwl$e6E^-EY2OVhVaY`|5z{S44tM-5r-meg0M@jTAvjS8=adwMAP zhb=QX(&|xG`UMe!%@N`dGR@tOTpmJg+ezbYWn3TjBJ&6YlVVuP7c@WZdbHtpSb7I? z_5XaPSnx!*gvBf`EXl^1!N6=7HkYTATw)UIsV(`hDJ(0i;#&e<0x{wr^*Rb}wB>1E$~M!&7st?O5b<)<+9E2h=j zD(NoZCwIQ=W8HQW)K9KS9W0l6Foo)V>0X{RJhmwa|9CUD|Kd?{8j+>Y;`zk8a@XV} z!8L)k^Y_p<`I%4cHYLEKlQ88v`V_GjPY2T`BV+6Ge+^l+Q>2%~X4Vx7wGYT2pMQ+o ztSgp@k$(AE$MpR4nG;)#fv%m{vT;iNn~GR zU7}9!{LFi4u>YLpa{j%#hx=!u*GckXu>)ZZ4LRQS^NfuPvzzWT{p0)g@J0BiLbHbV z<6n&nedG5W8r!_j9pnalKc7{aw;%8C`(475F2mN_Z zZ0a+gKa>Lbtx~-=>nHaVpssj@4@ z`?gKtt%GsbiR0$4ZCen^-S@%DZhoNlZP{;|9}*_q9E5)D5EzP17kzao)%#VW+SxMe zoc5!_S3KF^rUj*;^Q9X8Dc$&K>w*~d_tF7oio&zKg{_H0R-2rKy@J-y9P>_0jnlV$ z4omA#mCxiDmTqwh-~@8g?e&OdzQdRcls}fB9p-v|^!ELe(Ik|X{v*TVY_M6E2Imwf zmuXMV%U=wq;;)5SI`&K7w$q*d@-CP${Mi)Fa!^|lKCpFtYH#M>5K8R3Oq&&*rxj-Q z`oZa%SU@z!saPMn1b4%amV>umeS7Kn>#Og>W&a1XH!>(V|h2f z)XPsVJRf)^U*w(~zP};+B7U>mqyZi;3czd%ke&{}@`7qk+vCEZ#OzXY4NwxQK;?V( zi(9_8y#f{Q*+-{%P@(+i3h|2P0-0ei=!Anvw1Ze-P^Q!%?z0!`vq5NhfL}QHF_p}j zR;7*#t9u;T=<``dTx?S>rt)1LYQ-{Y*YhGD&)-i zaKj!C>Q$ZU+`b*5q!QIh74QPvA@!&E8_U4kDbXWC(c@H7AEoVGEzG&eqjAC`@kk@| z$zk)wG0*GX^rqVABzv{t13r9Uv|WJmirp4|v1DcJ#`H*;}=d@?^K(^m4@3&-fk!~LE?iJyktP_#Xyi-tj z{Du?NTI`~8A0z~eS8~_7&1%G4;_~o@BSAjVkFX@cyy=DbPJ+!=_#k_t73zhMb)v)e z3&*0wr#p#~_(`ugl3vIrX;>%8z>;)IlH`Yynk~Z(&%MwHL8wr&S+ge^A#h7UBLp63 zguwDN*-69$jS#%nO7UoR_ex9AYK-$Mu}32W?=2#N(EPxTQj$}u8zph1h$k8$ut`ac zBkS0h>ca5S`$Qb)JWPkvY?K(yMt>r% zS?xU=gN8Z0!;0U+DB-9Zg4E~t%vNVJxa$q$2h-N%GLP4drgqd<1rZ0{4j*xiUlw>B zQA2YyvksDz&qQdasIyLHvaY=ytkYE2w6d`mECao>PZN_jMQB@^l&8*(A8n+QMrJ>+ z%cwodh;YvlVp_Li)~5oMUa`qX@u4f4Av@k40NKO!0>G8rtC9G>C?d#Y%o7 zoF7pnq?46wq+}n7ko?QwJzI?HjXgv>udqj%WkG8Jzq=v_FM2drZ8wG2{Pb71|xn{EB-lW z8}SnYh|~a)B4HIAd55@O(+N}4sg+iL(Bnxx{a9s2wuT2leR$Dzv_SA~u`+|UDT=X8 zg|GM94dKvPWbb}td*5j9x659~#Y%jm4tgl=ZWQuhuTs_yNb*B!+W{O)7?-~H9Z4Hs za^d?%llVUw`eoZivIOFd2Gevk)jk5F%XCpIHRh5EDCv>Ziwk|YldED zo8RCh-S{K;;NAkkK~?38!?v%Hz@=VW%~&PrWY3HuDAI2D)6&q)<&YTn=vS3kils_W zxkipYGGnRoU`*qi9kLt2&lyItv;?e7HYzGMl>3e2#*KfA?B{;cftn+5~E?gHCKBOU!(QH=Pm(Iib=uE@j=Y^H6xkQ&yQ#fWM=>45BU!i2C-BzV;2_#Xc9zMaqyn_oEv=&YfQgDd!-OP z5>0}*+XAF~jTb7zDv&Atin%R6kGLOU*Oyg}yloFGjr}G; z{Po&(?Yq4FKjMyI&9t`vCPDa`5m5^lyQ8SM7Jae7Yp1c(^s(>q-G-MRm<;B6#Fy^) z&K3HjGW{o14qFdsK&yN`L{&{2qXQ(-Bt`9W=aKgvFY9WqrrQ% z&fWjG6pj0-4PR$`WH4hA7Xh3dwh~p14)}h_U!4EJ*#>Uwg52*hmip8>j=b}Pz(r|^ zuw$9H%w&Uoc+P(!YOj*CO0!G>6uu;1q`9O!l&!%n=!4(?$e z3;LMvv~jKr;6Z@I>z!47{)yH6?LvZS z>xrt;EUQwbs$EcwuHg{6n^3c)!HwGv%l&b`;LA^2VTD!wACG+M(D0Ig=*JV)sFes& zWq1#~6%8+eO$quMCbK94SKr92w`ntd-$T7ygNMJ&fGAy0uiQlKJ#IZe&V58_$6q6O zaeBB$mh!T*J5=Q5-y%NqC zhIRw)C0ngVuoo7uMshc#zQ)hWhQ^U8-%*!jy-n=4hKn6K36qjYTpfGpyS~lrN81G< zC4TZuJun_CXY!tE3`~viS=N>8BrZywFAi^YNH`8${7T)N!(uWp=8<8~i_LcuGhIs$ z4RKjOf)aFby$?mdViHNR^LdiIEr791P+|%6&hz0k*e$Pwa zPp;X)$cQ}WvYEr~trQl>bs}kbiO6mN>R~knz;pNw^w^ z4_fD8dG*o0(G@Jp>|TU*@q?gyN-S=7h?{0IV z@Ps}qo{^~yU(CMqn_3O9Tm4?&9Ev-0x0dS!qv|XJvK{xZ_MM!XeM{JNO^C1^OwRA- z`{&ZW!4e(=u9L7P}pI&?tFdx?W0mrcYn9SDJ!Tm+2nFy; zyxmL9!g8@Yf?zaMvXil|7eX(-yFodB*;0}Ztuu+tcfDjVqFBwQxm29LZ@R*f#4ico zfUohw~E0wS&h$|pCTnT@-eyPq<}A`MA1@yDt+OkPhwn z^WvlkLQ<*{EE{>!Ldvr^@SdwIw zuiu#7g)QhTx03h+w%H6crk6pJDBgd_U|xgN9M)StdQ=wmM340WRb**|aSAVls29a} zuNJ4dOxce~E9mA*fGKbWUr^gNPE5yy@ogx+0Z}e)x4K#FstT8zL{!{jShAETB!(l* zHKrBz0*RT!ZD!q*_LD=XzNR^fqHRlekFL*m;6cJ^v9Xp%b)#82)xOIT7pcve$?NP- z74|z^6jO%xn?9JQxcD7W3hkFwV{v@d{}vQ8U2_VonQM6;>=LapK*)+pTpx?s5x=zeW_x{<`C%q7sJqlKko~!cg|w3X!Ij4CSF^sJ=`K-Oz6mL?7o9%@%0sP9$z{9> zCop#^GwsC;gVfE33%7Zkivu-imnc4@hk=s8kQj_TrfJs>GL3Kr(h(bzmR@RyD#e`b z={g-eJ_$(V;+(n+M3?QocLW1IoLPXqnK77Ez%ijz!kN1;>TS|DKT;Q(DS1)>pANwo zlAs-taF5BXj>yJPJHxKWObfq!onmo%cCqzRKM{MB8b^#%E$(Kwju;&lh`D~*ioLJ> zQQ{SuDxB&PbZ;J3Ng%icXxNd3(9~1l=Y4vRynTCJBthA!058|9+oC0k2;2%W;XavA@MAhiY9e{wWr4y`%SOj#YM7k*Gtk?1hVSK9QG?v*Ny?R<nbvGTIM?LVYiB?U*nxbVuftrkZaRY__{!;?4GCVZ>H z;NEt2nRAofyABmfzF!*O_A?Fmb}6k>Z}w==dA&KwXxN+04GmvTsLPeZv z7dq!bmU^3r$&?92&U{Nhks`>;f^5|Y3&)ufyMb4N!Ux4?VvdRZnarzr(4JnCl?|ni zf@)ypxVshVV!k3Es-^1a3MrP<+y8DOf*bNfz+_CyW|-2b2E*iDq5p)YmlA{|o;>(x zBQ1}n75)cDo^YA~%Ana$-S>r>?hnn(PbnL4=r!Jjpj9c|LqpX=pH@~IW-48=pLB^g z&XlnO-ubNNUZIv94Xy@-xB-&hiz#7qVFpYvXuuh}vz2>scgVSgOK*eAj}+$+O^+9a zbV0)QMA|x!*@7Q5!k)2u#~xD70k}K^)|e~Sta!%7g~V(3BNqmtEmT31i2?e!;X@RW zJYg;*KRus^yUtVic+A)txqAeA0k7)49&KxnxQE*G+srkDFl*g`-Iv@Cb@2=eUfd$8 z8Fak4AIY8)KzOPySVh{h9hoNJR=gQ`DFZV&fi4S^o>=OIZG(bQ0DCkCmv)eNQtunb#er)nMu z!~PKUw43_!nKr-oYxi#22zC#T0iF~uKXY~)lWO~6Rv-WHILx2))okt#^IB0T2OLWi zk~4jGNs~q)AEP0Z(BZA0k+~sgvuqpLN3SgtNopVPH z?Idt1Ome8SH^69jYC$BogD-E;+88f2Df&Zl^v^(+3v=G4^obc$p0LPS9F4-RNPL}W zgFb4cput1yNF$qo$%X<(Z>{h5?e5Ar_qo$}Najn4fJ<;+Og zEa$K4q?>jd@>|Dvo4cCa6vaTD?QLyH`RApwVR;s~!J8#{BSqRf(xl<3G}DkGDNzO% zA19yEct~pKfkm9r%+oFEbal~asvQ&FhjHOras8#QeHN&eirt4+=-Kr2E8}ALOp6)h-HU|iB0`{yM=uE5>7V{j4n9cU0 zU5S_--&J~!GIcdIzPW6K(l(*pfRHG445ua-yeYD^DSELf_OdCCwmDv`IZ>}U*|#|r z-kjdrj96^Wyll=^Xr{T|xuSdiPY8 zXmN>TF%GSua|ejs|F3sXG0mv-7KStG1fuBdasFaQaq8I>d?6$afw74dp=jFrb)Hhy zD>d8t!_S@QR<|%~LOpJJ6TD{1vjO}uy47vv0`%`&-Tok!ZNE&kx1N4m?v1*+`?90${CIn+?DhMO z_Di%{G@A8KwMZuBUgXUUT~pm48}@CKtenLP}xaHq}Akv*#3FPbrzp z-L{R1nfzU{pUrjE3`Y1)zEb70U^EL8?k2uxB1vnch9NyC{4NgcNgtON#`VE@Jnn@> z&?J|RSsxRf?Bj?RP(1axU_8tXrxgh8y3-o2gdJK&;u{h+c{W#fMoOsrCT$bKupZZ) zVq61@dsF~(Er8vgHVT3WXijd%V0(K5=}_jALWmVZ`t!Hp3~>e7Sb+rhWN4vj1l&fd zI&lapXV?o#H#*ZK;Y1_X7~w2B(&%DM0h9m6+7WAA1qJC~0hA)5A2z_siQl)@+OECVK6{^g_x+vwH-lM6 z-Z`E*#(bVe1ykD7h;-9sl3%03GN)lm7C6sxR&t!G11cwhyK~tAktp%TRLPEMx?ZWW zwOMAIq&Qp2p)I{7(3;kF86tZxwz;v!!c;}#w!=#`z9H&Qx)?>@!A6CkS)NCCHNKxD zdu`?P!+$uz2$4G5iV= zd>y26rtb8xPEo}N$G}K*P_gK_;LXXWsTerB-zv!~En5uz9Hy zsZf*Jn%rpr6g43Hjl6npr%wh@vgo#^I*hAtCI{J5$fSoIEqNQOYSd(uEw_&eA`({gzTbgvEn#~IQE#_=e&@Ixlb-#r4fV;7- zuJcBv2HPzx202A=HhT!r%n)~LDml=aD1TokoAU&(dcd)w{xu$WhItBfabrg{puCT0 zQXUK;5UwD3FO>4eU+z}MgX1G8%C918c(P2&12#-zrx&s=524LgKQ3xW)d00Qg)JX8 zE_L0kZszrCve5!A_pWvF1>bG5lgwVe`!$$1`bQHEdU<7-{iv0w-|Wcp&|kV`?@QD1?h++Stk$toSUdQa@J+D(@2e{v;lIZm4DP zq!Om$J#%-~5xK;87PZKw&D4Qc7M-4_yQxBSQxt^TPmi99U`1Z7=Sdq@sFVQ0roCnZ z?05EgY}1F{nLhbuQx+e>#H=>L3Ff62r79Ti8Pa5`9vqK5iM@OKEy9+5gXS$IVx&dZ z7hjsH%w)gJ(#z|A<3j+2r*qBN1t|?T84;DzmbaBBo~8fT@fMMWku`yIBzBJ?ojp5}g6rw%=|kY$h$m^< z3f^CMH%cafyZSs_;_0ZQR-%}2wKbgA+Wh*;AwnI!6H&%}7lzMs|F7i=w@wI7JmB0_rlCzfn@;$9)gX@e9 zg2ls7qJ}V7bsZkL#N4Hsdh4T?_r?wjm5K_9K3IHW~TehXrbJhlIT$W^j`42ibs2W}%_}bomLWcX{4MnCm;^ zaOXOws8=+tIO;xE=ge_CRk=PEz$wE{ zl|^9CMlkinp6&8KMq2yV!Y-b~U9^bg+6xCudI9V4qDC=Mue<>y4jm(R8ggl5BAv6F zrF@o+j71!yf1IlWwcjpHn;#Ca1a`JaZ0w9ewuQuDe7CT^-)sF;WTFL#%H?yuwnP@F z3f*@~j?fC&jteNXEqV#Uv0axSXW=6p26w52DR*6uI^D%HR3tLixw2y-S_D|XVdy#K zl6+l}d*<$6Ke|*e^98o~m-9qk*s_apBQp3SKX$}c@z4i`h-cI>c216TLmS;;^3v=NK6v9PoWQrc8c8kukE(Mj6u3bzf^^6Vy&0}#SO;0W8L!q&r~@@u z>kCo5yX%oI{2`+%WXka082K>fJLDXl69l6$4NrJ(pHkW0G zCJ=)>?zu)QR_7d%n-wry8#*wz%loXEO~`5xwWT}Lgk7r}GQiA5F$Bp9 z!xv$Std=}!&D=}n;8Mr-?A-+wJgj^2g;!1pO!bAuIyr5bgbT4&aosukdoJYLZ@q#d zkVCwffLrz)UenBGsvH()8QQfF&az%h+N1Ij3<PYvs%t|1cNuZFv(BEl}jcUzVJwHoS{w5UXA4_oP z3%_~WoK?F5^=vnJ0Ud3xaGT6%1`~`4oIZ;v^y?F|!^}W297L^_BB; zIEDLb24~MqdulGX2IxmJE-j~@{rwK$|0*u~1(w4BLH|Hmjq7jaX0gH%c?4jHCMkIS^H7+j2+d*Lq`_6ZhCXX-~Q7fE`bOvWx7AX`h$I78Id zfFmW>6PuR+gUA7?3jb4~S1R;uaIhLZqe##%9ChfZQrJUIxNj}^VKeMWzmo8{Ff3#_ zm)8&?TW$!aR-_7Yf+!86;RWDlCmUEKm5w2mq6xeTt8!DZ%7@rGoB$5i^dA%sPj(su zV6=@b=nZ4TDY#l}_%g_7X{{~~?C?=QrR*dVBzH!vu?8E2n}3N_ob|_|61YC1?rYz#NXxRD>F`3a`WMA9o9Y5jOJCTvohl` zpc+2_?g)rEI_(wLpsC^%3^?&XIZN7C1chRh%oac&Ws;IcRk5)P;Naxrlao>nrzO$( zQt*~2IS#v3=&%QH0~ z5(gD;1v1U>Vr1a-VXC{3SU6J0+7v=)CsGCJJ6wI{DOj>b{b}b$4IGn~BSmw;1%eDJ zmVO2_I%U*TG3ERymO1Zu$3r4#%%XmE^WEAf$+UM;ow! zJk<*6!Zquo`La_KLguKz@5IH``mR2uHWt$=eakAY^c;{KN--+g;?JU*ZQ|;m?nFF{ zMUITE;v8zMh0cYFrah$5=!P>h^Q1uQ2@FfFz%vsbx^8P&1ik>ydO~r-UG;2Q2MaAP8$6r^FK5-W|orUWU8;vtIXPwIy%fp2b>B#YOoo*KlGc%@E7 zCRBC;DD+3RMD$rRUA~Waik9G(tsu?y30@UBCp8- zsyr=oIX>v*M01zR{y2}tLZpn_-BlS@+*L)a0Et_M>Xy}S9$X&H;&3^r;SU#l&OB601fho7N!$EEKS>#^$$e;eon&?0e^@O=c-);zbsDmD|@0-|-GfyNEi(Q^_=)xIAq%(*6X&ZK0v#F}Dyvplq*TQn9V$C|80 zJ!@oTQks>zWgzK|{Uon(!+~_mJI*@3^6;yP?(=j34=82(l36-VU%PblMK&9Dy-uBQ zMM}a)$xmM@legHHd&1kOP;z6j1+~a(Fh7l_(E9S6W`gX|t5npJ2t4L&2-?ap&aJrh z>iB*aX5jNJyAIyx7J4S==jqp?tkte0KgEG}orb<7_L?tbAG7t$CiG_D5e@ns5cQ$vnxg{mZeJ3*k?B}%5LOOY`quNEunQW z)$N_Kc+{TXJ-sa!`Q;&w{tjteZ%3;5%e1?}ouXx%98!Su=>!TeW1SrN^lQY(jJGdQ zhRM+(DQ%vQ@5hd6y(HUHF*7=1qO^zjhu!l|)sMwtpVX!=yPp$AJ#q8z&_zYyl>o!8 z!gOM?Z58?tOlq&Ve)*_5I!E1pFu%aHy$c8$eD=<9l%?h8GyspE<4<*}VacPudd|l^ z>Nfwx6h)^gwOamF<3I^x9a#?pPb+h2>v^p0Ql)j4k^aC=xm0?q3jLv5b&&?=CzC|W z`qi~1M(1j=Xd&C%I{EPzIi60Qr)YbTp03WPGzgs=sfP^vY{eAUZlNYrre+pr5BZdFzB>5Edt?4-F)!v371@g(B7(1 z_0qSkjZtbVIfHkHYdK<~h~8QTinWySe6e-fPfZ1i2KF7u*G|t;>9a*q34{G*3(eu0 z-9kvuli}@zonx)@muITn)?QiWQO|d7_?M)b%|A3X3w%ufh+6najN`G#_?z{$2fAGM zqI)BJiyP8hGQN`dq7|d=M-)QD``)>A2Zw%q9`BzbeB=~m! zl-CfYXvJ7x)w_3h;=aAR@K{uCLNTyUe6i>&{kL%%Ucd0`7e5(lDKG0kE`a5HD=&1D zPS%g2U=}ZyV!11LRnvYp(6Q=VW7owV=`*Q;DNf>HLd4Sz9gaLNn(#`N#T0Jl7q)!j z)QupW!;haut-bZm9M$#;9_bjzY>IuYxgr+?RKSBR@RVVADiWT$2T!|#r$52NSqY2^ z1ZE2YDvUr!aO0Q@xHqd8n22DvKsZ&nQ&oVjnz@B6AD#QD=dLAV98b*==T9t1U5pur5${dn*!<&YHyKV^;UCQc2A0jzg0DD^ zdEBh^u3Yk7ru5lD`>-zx+zLUpL8^xehbyKS51AJCVYc7f8|m? z9y)y0WH%18y@T?5K7ul%iYH>6f)F$pP|nv~s7Z6FsRfZ8^~#VCy&pTiZ$fpM#;K87 zY479xm9(yKj)zn&TB*nfobQHP83sZVlJvHNoHQbyjl^LIDLl{{cS0!0K<;B^=ol&T zB#hMvVYx7yCh114i?Y!yu>50!u_R8E%#88nU3}>$w~V)3GX) z4-V&v&tVaYFpP_ri#+3Y{dAiuVi_#GdL`PN#i`9U91$zZ96GHP+KdS2>oh^TM2wo|7_nr&t%J*0vYg6V z#qZFNYI5`DB0G-kmBTZy6>!{w#U%U1 z(KE++_TPd-%H_?61i~N48`R6g8(H#dXCoG><7<#YM9Kmse3~18^6clLaG|1Vp-c+H z;!dHoak+#!|YCP}v_@qK^df zEwZjJvqbJ`d7f&yJWFET(5hp8R;M1xlQXg%{kby`ioV`98U4JQCC0K?AJ5=rL|lt! z)lH;jbxC-qgziN!RV|^ixG%5Ny^!`@#GF**aWU?O5PQl{85=!^v zc)WBs>;}n%H!*8q4p}YdJFZCWTiY)u$;HMQe`c1vp_LcmW^CqnRla19nG!=ZxY}A} zHQhU#8v4WE>@U7r=pyqJAsNN$G18r&K8PoxPVGj|qscp7FD|xDK1n2(%blJnyKtVI zKGG<@@*mPi|Hs9~j(BZ#hplAJO!Y}hZqv1-e$0n zGc8mH{tCk45ErXeHgS^4ki-Sv1`Lr@422#YRBUqxA860!>WICra>ou6Mhdm7-7~YA z(L#pw63k$=5>P^>8Uz^rnv9m1!2&9RPkRk>K!s@cn~Db{wcKBsD3Y<6&a6O-LWiKr zbw(Khm5{A){LQGZI=dvTWZZs39WYs41slMl(xlpc%BV(H#B~Rd`^Y(Xh7!qHwVJBS zeMoJ&H9<;{S#}Rj19NLvS(ZeaC^e+598_A;L8DZ?F+pkk1_)PY%*?GM9VK`Tq>!Lr zB8cNl@79-YQ>h?+|HQk$=nDA2~qP>9s5&2RgQ+Jd0EsEXHlHE z9G$B1+%2`XGDkHn)bhsagzRjEL^}-n3Z21ZPjqsjS}|!GZ-?eGP6G-#jo}rGl;F>q?5gkgSpsfaK~7k7Y`fzwlbNW}vb!jqPkIU8?c((&OhVpMHdH#IeML z2_=iiU|)JNjfONfH(Sj@RCsv}pKW^Pn zeQ$i0bk2(n&Mlj^j_6Ht6ZTPg_Ks&ZcSf1vN3WE@6%^OfgPTV^S~Vw-D*_Ls^BQTd zQu5qN(PzY89i+zrmGDB=>4K{1=US60g(m$#o26g++!94bJV1qmW8iUfDS|fxr9mK2 z?w&-=x#m=Vy|@?EJMx(!Up#f%j4QCG=fZ|C9<4@Pp9Z0!1q#5TH+W^8a;m2&;j<%n zWMw9Yu)-ilp`L=nAYxQ3Wra#ryXuMr96D`?P4)`gppfW!PDSH>2S3>g4Dw?@ zT#jBxB`b1LLwag1-Mga--8rG9ru&4L)=@3!GNEJq?~09?g+#DSMY@c+nKC@6DWV2b z^?cS%Pv?3LJ8mo0`>e>WByB;Eh68o z6+<-_aAndirzS&M#~4nbD_TQv_`%$;ZZ{A_cd}=F^vU}ms(15UiWnHDLQF$ z-+A#6S(m-ieD=Ao`D_}U>>bQ4+IJE`qiLA{zL7pM!Hf{fhq^smV?dN!ylT(Jl~AHM z|xKeL0$m{s@T-(q6il`M{3^N&003mH5-x#V+)$uJ61v>w04$v==@=ar*f4p!_4# z#1?C)=hE%^ThxCba9I$G^Rg&)ILlpP!D577F6c*aecw65)YDP=f6x%y-K z-b#8RkJ9!z-&o}5o1xJv!fPLacZKs2P+M?z@gp$*yUAywUVc8-rn_b{bI8=9XY{3l zZk!)lkx8btP8-cVm_f0ODC>J_&tgx2#ZDEJ)d^dr+u7V4DTQILIvw+-z4*o7Vo&*0-64jRr&W-m~4C?Lv=vyJu6G7doqw86r;3LH|P zZeQKt6k*qxc+7tun{^_uHh=cF0(jh_Fvn(EApQNIk_4s-n1Gfys}WmC5*}WGhZx!V z*U(0EapT%zmbu{BP7)54hQ_ z%v#^>_IbQ%p}QBvRud+8V&x8Dd{qnA5JW7@QU}YLpiYlbm-20bT%4OF9e_hDEf{8L z&7_naRvR9A=~`MNS={Zp1dDhuoe3orEl&ly#yzV`gkMW|&&j0~OS>E{=xPy$@M&wc zP1LYXLeMZA`TGYu1?91@PB>xnjb7ETX(^b2lZXIPXewp$byxQ{2_CdVET9mk@}2a- z8t8dzUcQhPgm- zF8Je&=2pBU6?kIjMz$t=0^?1ppcQqnAf0M?OHlS|)bkaG&RP#PVtTTfZ9tVJpW!tqURN=cLLmu4+2%fv zq{$4qVK~m7Zp8i|-_JiJi=rW}D}lWhp7$)vDA4VQ zY?h=b6u6vM5H(TIaU4RZkFnpRX>%Y2IOIVyN%Wh!X|Fw(36Wuf5jmmoqBf*oeuAHC zSP5IUO--H%E`KVn2>3qqv#SK_X|KsVfMr)BCyhTsq0oOi4@m~FQVqr3TH(x}Bl>$- zo5?yX6|PFPF*-c4od{Do*61Qa+<8EG2Lc7ur2CW{onOfOAdkxmoknRDo!WbywWxx< zuYz-}g8OR)n!S=&sq$~qB}!*rgkFE$4gXpYgDk3i%@g@EsT{q^wdIFb{sKQ#Kz`ha z3Z1hnX|n+tu{+OIYV2o0aUf=;Se8bU($!eyefWiQ$e)K*(*h|5k~r+dbwACLVpQDo ztWah`NfN-panATzJ~B12)P{(+xA3gfOl-y_x+@^bklvy(YFH2gNQ||3k18a2Kr1r$ z$8M%f5QDaft*1f($YglwDzb$qu8x$_bRvNb0JWS*v{NC;Nx_JzsJkvc{c|_yD>A_q zFz8C|!ivi&iwmj2wGG}dw20d!WyCIK)SA^8y>BS*tD6$=m(nrwTC7b-(Z4H6o?8|} zFX;x!KMR8DP|8*^%#KaScAjjyNlo#Ty>YU@nMX7C0>8IJ67oY`8H9jz*>9ec^M)%n zt*m;-IbfYL|LEWfZ<+L+A8Gs|F2wbw*UPMetfSf1Xb?x>I z{-6TwrhxZ_6_eCelP$HqEe)?*p0c+;w~AW8=Sjj`0vt@9buq8kW(r;=%&^BXa`4|> zL>*$SESkP#Jbm5vqA+_axsHdUT_4^mSJRxMTfMW0(vfGb*Uc@*@SL)Ds6C9@rEcTf zYJyTU{%q|uFN#L6GXA%Ue*aUbdy@=9!G9K`vXP5XnFS6hh6oS_cD)IB#e)O}q^`HS z#BY3=|7kP-gMXl)=psK(Pay+iV+toOxcff72n2yJ$`Jj^)e;!^R7(UUE2}{I^zIA( z*oOdpBv0&u_Adzma$TiJ@-Fsa-e0e9cXUBezy0aSz`Dmbv7smhYT20@J%LpQbQ zQnJ{@57rmwqxQj`AL{7K=I5KqViV80b!G@5;s0K2;y=p`b2qiOY|l3dM8uFQa3$9t zlwCQk{{Hpkqtigk{rlIGzW)%|zys*r%VQwi^&3$zvAyyLx{HDpVF&|vhft(lJx>Um z@7`t*SBzj~AWw$7V*vlndR~8_+k2J1qW1(}rpYY1zf4!ysehSq{%G%Cu(!T`m1C$W zw4G~W=CPe;;o7jBZxix*y8xFcv_o>v_t+_PuWi^V^6vVLy>+)VY^P!OX4KK^-7+%E z$zFLp%5$%R_!oQY{$5q4=DF9^xn`cPYe=q*uWL&}_FvbPC!X7{ug>?}Z>X)Xvh%v>>C4Rx^HiT2ma)@4~rD*$*7OhXQJ2}TI^q)Gh-)fmZr7@ zr|>}VQVu_wO7Bt%x%!3ZC9ACsuU(-1lfCu*D63oZ`?1H6{|+C?Un~Pc|M1$sOQcLl zRP-eNJI&%>UVGsp?Vl1Ue|atcXqMRDSq2cr^{e%-@qDoo{(or}r{2@sPd4=vQkPwT z%MFE46z3CEZv4_LexrAtEm$z9(NIL?4z&CxmqO>hDZ%pYFP3g!)eg{1tZ2QO@#6#~ zaxNnTkayGRoT&QKeWHQfcz0hUWw#KF3_sJ}(UQ6kN{NpoS zcad#BOkEq#8GB!vqz^iG`v~Atv{qZw*tP!%w6K7WiA3Liy*pb~rMFhndg+3n!xe9! zF`X$_dc&L3m}%zPDvOO%JJA>$8o6x~wFh|yWR`&&89R#m_quhM259`{3URn&!XIg=b7Ev_)Dvx&U9Fm__Pf*wH&DVt+js}(g}xVK$~XH0l}{-mBS z6Z5k^?y(o!mt90G^fg6;8o|s{$mkR)BNQED_seTN7d-yiYkzSL6VJVA?pX4CbE{{k z@y+dlqy0B6gOtJtts^L}gSH7(^Rf16vEqX}6LRY!e{v3YuDCY6?RpyW=56;zqVT(( zSNXzT6nnKz@A?k9-n{ES925Ry;M0=VAHQ=BLv30#fh^vKLsSCIhr_h;2d#rUntyQ) z|IKShD1Yiflpqrv*JZU=UGj#iEBV-u^s`G}m#{g1B5&Olz7 zRvg>EbA}qS#b4`7c7{I(^Q)(Sa)vsx3H;Bsf&U6H$!jwd=R(P-PW(NtZ2qUw{Ob|7 z{MUW8kxdx>(bu1A9Q$kH7MR~+*p7cP`fKL@VL%b&Na!*J=YRM}6Ad~4B!)k`=SLQn zXAyQZSy7+Sj4h&9xLU87G+Zzw5x84ek3~_o2uZsHDZLEU@UI0GjZ}j){UE(B`K8MlhM6{w(wl=lNv#N zz)KlRn>uo=2BI(fhrRWbiomApRY+gpCO$+pU|sHkJsAZGsx%)!^&C^9%Eis|*ttff zEW0s|qgJgA9(q~jp0$wq*qZ&zHaU-lKYulCfCxVu7H1&EHWqyz%xPg^+_5q(Y2Uc1 z{N`sfNa#_9xG}?khYk9}6!kH6bQ+Sa_~yWqz{gM1EzxoZ2@P^Q>(6fMX5~7tq`^WY z-EyofI!z<2+e|p*w(6@_9dXGuNqRoLwPrS7*%n58&b&>^q-T|?1{on;1uHekp~aRO zIkfmi1+%x6DlzuYp#{cd><0Gd3ZJG5rQ$1%-^2C)-k0fr|Luw)Z~g!FryfP#cEf+M z?GuOizn#s8JikP0tfs?Sli4#svRr=EhUpn`9Fo7zUH*SNcjKonvg;)uI;$2?N7FM? z=akPD%3eb)_)G2163!Pm7B?PXMT(#u#43ydrx`)4O{h3UHs9PoLN7SFeoVNFr0s(` zdpUhgOUuntlb@*n3gA-f**>DlxQ8v+0-i3$f5NjDX?X2-aG3vX|Lba#doaLn?~r@p z8!tgh1Fjcwtj*5}8ICnak<#r3qAN=Cxion#?8YLHi`;KlL@f#TF82E>o=994wfUx$ z5kAPg_%u)WtC?oDjNDfGkZTRHE-k`qX~y=A;o6du-cwMZ>mL^+x`jqF?hBt4kuY=h zj-X294wO|4wQ_&At;KHj(H6yNSDO4X$DMj6h*P$yrZ&OMp6(>?@?`Y*RZkfswS3En z16NCTjaAi2XrL(^Z0n41+sD zOTVP28EEfltSRf&+_LqF^x>=FjJdbejimvdRuNfGG*^XBIPRQjp%H^4M>v+ucq`hL z_g(R@rsqL|?Bs>=M9f@~()%fWCBs7TtgQtZ#IpLvMiD*QgZu_47r879rE`BYo zwjd&3)W=_bpw3q#Z0O==93=#WHaWdf?RIIP{-n{@^>8HJ+Vge9*Y<|SA$g|JOE{bK z_62B$QoF8%-_WE(XNoZ?)Jz=RFu2cb-SiabeTF`#jo^7O0(N#^4p=e73KQ zk@1pc1g&|dZ5UViq;)&jXO?idtdW&A=t4toE{&)QJdZ{dLIxB{3uHhc#rB^93bz86 zR}F4ALt}b(Z$^jwt~~PV>yZlZ{14yrf0b?j6?FghSo3dC@$W(RzX|632cZvowJ24> zY;sO4Qc8!FwGyFr)~HLBEc9_Orn#ld^Zixc2BkNW^6TK3A5#;JMqFWd56?JdLi8yn zesj5bj2D7nqBR1!Q8jW3`HUPWY6(C2zu54Auaf~2XM4f()BG+}SIE}#hy_6fH} z*=hCQl(ef*_s}EktXjscXbpzxtlp6Kpa^K?1mYN-Vm`~Eob*$-Z|LemG;3GS_eLy} zV&ldseHN&W;SUaJk7*#w`tzsbt&=ad^D?5mYp`b~R6=hkczd)_LWRk-v{SZFvO8-e2ZR&1O$0n1@Teavy5`Ge?jZ;1lw54Iok6}C8E z5)wafY0V0-xK=Kyoaf$fGWCD^{$&VL1s)iIDMvqd)UYsBx7jq!vdjSvVV`GXP7D*6 zYU#ia3XHi8)ff$4VHZiJ7FwB1xz3K7^o7pZ8jzrc!Uy5N?TvU?x^w$Dr34AF$L;T8 z?%d0k;uVg)*b!Kjs2mzf9;Bg8fxof_d{ zo4tq63ERLICS)<38}SMl&O4WF(7uN-Ig>nI11Hy6Q%9R++((w6sz&o6$(j?qhwsWP z;i+9D=N(g_q3I)P|2qT2)+!t&G-`cscuhvLv~^7Y5x@(Rc})Ia@Rs4na+aL5wn|w; z0Z?bW9mLdd_3WU*AU>AC`b+ssfF%+JDl?7Bvc^bghYWH{IIEf>f@Z&%PhCWx1MtY! zCuKEwrR1>5?di-@ab@p(Yp@A&kWLNJ2%Gh!h1zU1Hfy)Kn!~it3<6k;;6XEy&{?B6 zh0HAXF@Z}(Jn7h4Gr#olqRHtyUHX-?2R1Wzw@d?$3O5PR6Y5t(A`-c$*^n2MZ=W5% zVCgrdUiz#VbWPyN6EB24*A zPi6z?;|E(+_ynD|`WOmd9oppvF?Xv_O4+MVUjL9>#Vt1unV;ZpnfQDMTRGgC8r5Qg zGmnFEhN(31Qw4Q+Qf=yGc9m1!fm#Ej=RR7yMkf6P>=&zikJgywhku>qYHd z(^X5StgY;qZ1h!r*`P5}RpIkB2R~DJ47rSHAbreSvV zWJ$1V3H$7k#3FG1SV}F|hDV4IVF3<+HaWaS>Kx=@Zy#O!{2DIyqu<_oL7t_Jgr~2( z`m&ooGhzA=&e1bTH-Ia@{j}9EDe~YYE1dS8p_1Z0sLAM;$1b3BKymWadCX=k`!u%ibe6O*;xl;vCtQ zlQfTSWfiQrKNJo@jDt2FTfbUMVfrMUd8K|_dp2@3>p=0e{md6^8Ay_m_B^~+{bDr% zw7KCZm0TF9k?csT{J89@{KQ9RMyFd&JkSR@7*>-(s0NX77p$7J4Qq8aIHcg${d!Z} zMmwi)g2~}|;7#fS0z7^t4(zFzg`2%BJ=9}FY^@l`dVfReD*|a%$xp|ijl*^V?HkDj zc9c4J8k%z;-*XZ)Ka(F=3lhybZc9Cq?z)n3n6qFr(kJO?viTmeJfhm*Gp%kmEnXLxc!5foF57}O*+{=i#d%}Pl(0iW+gYd#X+Mj#%v#u} zRGLPsoG`83=1&KOd#A@+ykw6jl~ctcwCSQ+Eh$g?e0h`)jOov&B3Tc+y6^KJ7@e~+ z-b8^RcUX)43;JzfVd$>u3ly|RxV1g2*lGdaP zQ5Ag`*{WfZKA0CdQsMOuU#1M1WxJYDAIq($2Agp;c9(=WwyqtX{%MDwSNxG32!F z29S{yke9RLY;wk#!F1&cmlrn4;zsSf?~trYk(%KnA8cC5?YAw8ECxU+Y4!@YkzovU~3Rv=Uk14!K>-=jL;Roj3S) z5w-^pq5m|5=3I#vG~-LTRUN^^7-ksPGC>WSc39-dIILE_+Ft7Vq_(hpM7Jdy)D^Ym z#V9x|Aow2EK?k04xNXe0RS6WERi-vM&1XmHaYGLBaN8z1a9VaAfEu#Gpfb&4^NY%;^Ed-_ymo9e2NuKx2ijO$q{CI> z5Z2&KX+i*ILtGNKj5sy`lI2mr3QvAF4dYs%@sZm@0S=?9kU#ugrOuumZ-Z)7S@L9p zUnMyUwkl!_d~D1hU6FLl0vR7LWmd$&Idrgj~?B8$1`6$QXpb*s6B^tXiIc zqB7Vw9eUwRCySy)3O{r5p(c)qhX{AWI0pg5)~Ik+5V0J{uymo8CCTV8eo6rFLoT7J zJE|!$fkq{g$-z1JLugwq0puV2R#Q%YN&UJTWeLcIty~afk>s!Ka%}~7O*>jB6s~CK z)ut)H*a|fVxPU60ZHG`n*ce)*;6taBQG)mC7&5U#np=^5kVU*p9`3pUdc5R1Nd)p% z`5%*DcBlR+dqW}5=Wf6hI9aX+atIiUz7~#@v^~m|-@xG8RiM*5mng#hVL>_b3V}yK zH*8p3-n!--ub>#`!s(v`RLH}lC7>7s%Ug3NFjiF=&uXZFrE*ux zvCPp4g(Y9o$~Fdj&a%qo(~%yBQLY}T(aIt_#UAM=5Cq3qqDd0C)BqjaQXMe5)vfrj z_F9B~U6TE^DQcexiv48pWrc)FiaH7bc%Y&)2Obu6HNRJ8=a$a2UWyUGZ9kY!MzBc z*`O*yV!xa#B_Ru$Nd)_Q-s*C!uYliy*@7D^$qa0N-)YT1c|R#lh`&H(Rqh+fZ38{HOjcZQV??YKbC*tk+0_ zB}G~p+R>TEfu7QVL(UJT;-KU&t`NfLQfbHI7h_+b0CB}x6n9c2;!^VMt(9>oRF|W2 zm$P-(FQJd(F34BERf+|4A z2%54c+BP(O4^3}&6YQSh`HWex3@?3ry0tTteSbsWWS31h(z`}L62TEaTs-6#}?2&wX*J|Uz zO6J3l-=Ey&oIm0_^CI%h^`{d}m*E%m;YF>>AfAPonZ9!(lPJl>#L^XB!pfDIm6RVV znOv*c7glp^SM#G+Nu{ercUMcEt={~xTF$jrd10;EcC9vgt^RIT#tc(a=^7357!dHN zRSz++z9`7E&Injgdr@p z307nXYn>h(pm}sH>Y2@H=^_FD47f=No$fDr+OwcPxYsn0k+~@OtY=+#9b)qwr1Bif zxvsQ9b+vpQm9|JOUV8ZUeuC%_6!&6BAD&19HWyu|ya?Z(dA>HYm{$%7YFKQrZbzHnCl&GFX)NozuB@&+TV#to2Gj%r4`zokbh? zRMW6#%&UjDC>8JRnw`FVRrbGldk?3k9)9aLl_b<1LT`p%MS2xX=+X=VQk9N$sfsic zKsp$z6r~ABla5F=bfifY5L7^<2qGX>RBnFHIq!X+bIzSRbMKwG|3LOkX7$}!x zb*_hKP6sef;tDrEb#8I;tsvp_Fs>h@W1wcm439KXG`SmTeY4S(PP_3 z4E<^Z)Q8A-cT6{m)wg5Q)|bzJ488Wg{Oz`1+B$i1LZl8sQ~R>lbgj{J2eI-xqGl(_ z?;}EH9YGwlEr!aNuH55WDS!LXFO34L+d6Lw6fEy(?{Bk4fSyL}T1;*w`b~BEy}!~k zUAn)s<<~To?={@?Aa9WSj*1(vg4lE|N@10&9f93l| zKI%X#ZIx!c2lJ`(yYF&W=iALcd+KRDCWKDw-|feA@AwPf99%tK_T6Vb2ke+0n#eFE zNF6i2eP;7#pZNEix$>$SkOt1sm^2XO6 zt1Ip$pRLj`w=SV$qCoolOmX!q5f_&9>i(0nF!AsQ`4dxGG2`MCj7p3=FZDC2p7F2b zKg3Az?|x67{+>GXXXe76Ifp;5?)+IS`t$nvpB0{Wf8L(^13mn+ ze&O$i!{5z2f47VNetiD--JSn}kK6*=Q_qaFRKwKvpUbH~7{$y8#Z)iG3Xh5iq2PX6 z1_x_!lJF+hFd=rVf|*&V3O52SrEu6w`*0=1vKmPvHpe{|n_xMr7$yS(T2Rl3QP#pB zp)#6PQb${m)?!+;it=yN!+&6ULH`A&M_p~l{L_Xi{=W)EFr4|f>4hpYp|Sh_5&Ck( zD02VjO(r1>*-`r+Z78Pg{~C&j9rag=l~AZ!sCVqw`<*vcrPTzT4m45s_nNPPhx{HN zRgzw6g~TUOr_0Zo@Ge3m)q&)X;Ir$MiJ0rw#pXVv5bm@=>j!-1$!DsaQqES})xd?# zAH~g@xm6%Qh_sF?3`*TmE@Op%&;^swQDaNDq}0btB-6p2p(igsfft4!U70uhC2vm} zjX=!_nVMh%Okl6;Mlo&Tb@>ffPam65VS0)0;Q|Z2)*YAUD0v;hEXjX9)jWZF^}0Wl z*d}QoUZ;(y;}<0}+TwI=u5Bq&rx%6;MDlPwj$0fNR9^2przGFD9P#MGEqg2I;bY@l z2;&bUjxb+6lN$&M&02~=wA%xh_{2vkfzRC*7cV2L<9V%47_#OQK+Hm`{=l%rit9b(?CWeYK+h9V}ty#Gfi;(rb?|Ibi__kR0-3q>>q0B~mJ zY(STu?I#t%kY#}TOyR7e(DE?z_tLVleL74+EL!-JnPLoE@Cdje^%psHQ?fnHeu558d6D=^vx z*v(WFa9zMukVaA9X}=d;nc7T!OB9H==={~=MP^G}`#$XUYAi;z%%|_OID2CYlZllX zoEFwgb=!3f?6sLG@}DDE6?w8yym^Ga2y~vSTrk-MfXXk)R~^(F93LoXj< z@r^!9>Gnfq0kg%_8>^9&zBh&-1r@9*l zhqRma?w@4y6X8m)&6Y<&dJpDZ(C%vT1fKL87l1BNlg%UNYQ1yc>L5-vwXUzhV4nJQHV zm@1DzmX#D5V`8*Ggt52z80ed^f6LWU3d(eYgLZOAmWibon@125j=&+#{P1S7Y~Y`9 z#38C5PN#&A#J<`WBXjW7rX~Oe+`3K;sw@NdpgQ@n4g9I+c(k#mBF((K0y33#;aXf#I_BjSJ})xe_XCG3?I1^eVE<}J>6 z8~^l*0)Gca5}zjaT#5(dW$}ggH30`Dv5;IurZ%@GZ-PYna0R%mDhh}OI>%d#bRXH- zd$wbu5T=B1P@(){1XTWhU~)RyJtJ9)1$R#1iM6YsDcepNrqcu$cUBcW@fI(jE^Iy{ zE?rL?c7*ag&&(eyb{A$KF3aJ_;QHdK-(JKI`vpZUh-$7b>~lUDpd8$qkX-uw%C^a# zkAl*j<$aOlI3V!@*R>c~I4orY%V_nhsFc?h+{U4pT=50LIPj%NuIEd<#eTQOxch$G zRKDVme@F@vTw}Wlx)4aA?x{SKKTlbX{*mK}ro%gyisg~`zGL}7cG_md)|_$yG)NxQD0WI$$ej9&JisWNQMSA+QKC zuUcO!5;Nl1{+fC1iUIs>zDq_Z`y+arGDRcXO(na5(^}dWNB7?tZ>dp-m_sL<3%`$V zX`WDrm>FA&5hmMO+`pzc@LGSl#<%svvtO=#q0{4W+ z@=tb38z6Il>Q@}29iVh)qg=ArNiXTZ&9-PbXXJ8-N$^?V+GmDp9^6+PSIGn^_At|@ z0LcN@i+8S}z61jXf--8pJwF`%XkL(nQp>${lh>Ccr}DU;pQVlBEoO4#K(^bM#W{Yz zho#NLagLl#3jSuh2r=swX_&eY!4SJJ!1kKKq(Q-B%iH0n`@k%D>?Q1M=QqmNYPow%W$Tu+ z&k8$u?~?q%bUfQJ_>UqX6Hwtilnc)3BXlx_x z%A*0%hVO|@?BUSm-D@JWoF>E|s4_il3{uYZ>lF+IGy5_0`f=Q?UV*0=5R{+gY-^b*&Q)b_14C^+&* zk~^eTdEL{K$pPu{9hIXBJ}e@NF>JG+80(yemAs4T=RUmq?A*1zwif1>2(S5eNt0EvV7efK?_fhB5~mmWu}`}9lxOdag|v^>NBjFbG)-8GGt%dwmCx5UUvf_n z1t&r)&%B?d#4D&F$5GP*QSO*KkaX0NAb21SQdF$S+MvgMfU=k+QjuaoP$H`%O)ys0 zhN$)i3Pl?DUjKs9eGe`o1|FHKr?%dF@Z}EJK=oQ%6kVu-WGILmsh1^x>)O_x9jKWc z!gnVdb#E|SErEoIjrFZR=V2QZOw= zmX1mU6~Oc^+}bgU2c$xPTQURx7_x;TA&v0_5>ghdQx<#|w(lmQBQm?XDwId??9(mK4P z?dI^SBF;K4|(%S86E&CF(n7OA91cS+v%97 z5A{{qg!&?&Yl1R8s_Je(4Z~%Wb%`lmRaOJyvb3RjH-08Djhtuo&pZ!(0O5a-!1+Kb z=059bqHhF>sPgnd+}#wSK}>93rh&Y&qL?YfiKa_A?>NS$)XnD3LPm->_^3T5cjxA% zm}D`cuR>Gi%{hc`3yOZU7;he#G*ldl@u{f_h6KcwP8Abl(@w7dG(or>u_S-1o1h=* zP;u~PkQ*frRV}EyCkTjn5&z^yca*7}rM(Zmt*w-g8oUpkuTs<`hOTG&d>heFrVUe; zC@c+C+DLR~vbH{Ie&nT#%9=v1xt8*_J>qo9P%^yzZ70gcRnxK~G~;JR=0K_CM=-eB z{F$=+o%{Yw>)vvQS+EjFB-uaEOLn>4-|xLk9wm?)^jJ9_5*-G_T2v~>LJURjbezUQ z^tBEAmCzz6qj)udnFx_?Q;hYh5_613rn^GSTmjk3g%<(8=E~9QUJX^i?O*O+7tK|E zu-e-&JLSRr*t`^Ey>=FZX-jIj&A@w>fTE*!6IZQ>lSx97dXk9eKSRtCPT8+&bM?Ib z?}nJUM7NBD94>jDXwu`hn#9UkEC9NXA{o+|Fp;1u> z#=}95Q*4ma>2C4p<|VVIn)+?t&up1$ylx4`X`M7k0V+Q(3soHgtPpmA>9*ssmW!pl z;?De*hZyO`4xzs84q3|iUSSA7{h%yInj=R$Kh;|0O*8`M zC}>xGh&=*?ebDx2xy_fp4+dr@21vBm(A%yejUhCK%L2E@gvpe4)J8@vEdy<^)J3 zwWv=E8%A?{uf{Oh_vQ$2?mN9`^lmLMb8g=qx~Mh5GTqO|KL8w#rmV1-(D%UCxF7Y6 zU9LS7Mrfu4CCF+X#Z(G0!u+xHrRfT6-py#PIfa zNBFqVaq`G(*@imxk(kRoW+g9WAu~41vs3s+@Du*8#%ycGFJhSK!VY*Ua9kWm5}URB zS0v$xREct`vAc?NdN>L(>tdfCukk$yfi;Wf z1%(-NY}B%TwwEY%$OE}J>XX#7% z4eVAi+*~yzPTPYCD<`gV0v(L$oXcw*iDsSE>Ku=*vZ|RmSNZ^1P95?5oKi<~Ysm7x@sE_HbTffA$Ofkw=`CJcIw6CFcH8C5z zbUR%e6y^pUCteHb57vbrZ2uWz{&4N@2S>h5XU$F5Yn$#-n;wOm3`eg!xY-Q(x+a@O zZ9d^we9v4w2uj3 z`GA>RhxU_cK7+20^8@bpG_xM=_y#n_6awXpgU~gmBtEuMQ#ASQM~;#$VeoEA6titD zp9(k97PtI>uV=#!z^x+ZCA&RK;Eu)JBm#=Mot0m_r=GrBMG`n~)TrWJ|0=C{B@*+> z4s}6xdqMM^cxiVS|UVH$E>VJPZcwq~MW&1bVVt0Er_ueM&O)|3IxBryZIILW- z@p*sj!~UM?*!BwDr}c-;E8)#1z_yAc{0*1}`FZzHg1T|toaQvZz00A@J?Ti{7{)jy1{eFw=; zO=$vZjmH%G@wx)6VefJK3hx{6cgo@M1vAv6Qkp=9ce8(w)k>hor(cQpj@jx5d~b{e zMPi`*2gwetH^(tH?~YgK*hyMnewlGmYH7H9_7DgAh5H=rPmWunfXQp(8J~~M>Bpy% z0n9r#|6UC2-1ijvd6tu(;eHKj$zRJMKXr;u{NEhEL4O0ueEU+ocPoI(M)fygTWq`@acYzbN3RYw!Lbl22e}<-87!uONOULHO)i71s&a_PRfOr9<8ZtgxIv9uNWxmK2yFDT> z1Z8Kc#8=0=W|q>W4xL|07t+_~bK=TcY!ESv7c4h4c}89xjW(Ut)CtSjG^k^~%SYIq zSsl!?crN|Hd!g#GiHjv;s?B}B%YBKM`Z?Lf)#09SrgPHUA{8_FoF8|H5qR>UdR@O{kd8e2}9e^j3E8(03sNW1gYb|L-s^7|?^h}QSe zUlWd(p{g2$%!@b(!?;vQf&Hu}pE-TCj@WADFFJ7wE<@n_Nzcqnp|c+Hi5K2iMsKUf zv~Wyx|J3@}Al<4k4YbDruL*r0`2;UA)EgR^o~tnKI4r{fP!{{#QKXRf)GD$tKc$zf75D)04+7swd9PUN$fy=RccKn-E~#zud^vWNIWmHhZ}w zzD{an>|}K2a{CLciKW8u%!;voM$h=j%MEhpjLb6;T35^N=pZ37PR_8t_{~hdx9QjX zkXJTe3bSvDp^Kh;TY3c(Zo$gnj=XFeyx_O&1IOUXW{&0K>TnTlGaY>?%^O`R2qU1C5@6s-V>w==n&<*~<6jgvT^BavGIiDdT01 z{n9DIj0M!z;y{%~afOu9L$f<<1A6zlT1(PKlahrAh&OFM1=Z;%ZCh5237C_CrRK_) zC5Zi@hZ58rJt=>n%2S{&5$7Y(*m%Bp+``Oc@x1x_aBNO}f0BzJ>*FI3VVK{-GyzX#T^~K+7qnM|ATMDfN$(or)@s81(m)s5f+nS~cx{{}oi#hoom42sc z@sro6P&AXIk5r@i0ScI_&OAvRS!>QA;n zA})G^(@I-yjuo%__dAQ08h!gUGC|KXi`vkwn##QL|Ei&z6TAU}^2YRWrf@pyzk zTenchl*JT0%TXq@+NJ2L{v>=ZV@oBBmEKj0v78UIgJa!r)WWltof?vvn!Ao@X_3=j zl68m@$6ZMq|7tRf2TQfS3$pwvqUBU3bS*+E|L&v3y(24z-pacsaLXy-NhxO6wQ=cn z6{jglcOHVF2(qL`x)YJzGz?~qm8iutQ@wL``v!p|SW&`kLie1xcADcY>Vq59wmV!f)$T7Nf+YX1w!4iw*@FMOUr-8Ncm68OufPpZK)V{*-@jt;Ne9ryOgXP zK}4*V*-=C36yDEWSp)$xrk+wGeb9FX*LAo*0}lHL4Io7K{2gkLT5K{(dx}%FGP?qI zPY7aAnhag-#4G;(Ree-1bO-nAY2Br+6V=~g^2apPJ4PR;CGi)S`vA{?Z31)rFu}sl zV?j=2Ftuqy0#b@$q6WRRwg=H1(WWDEM7D&<_Ra#O1Mvyt&|Pi=7P=qF(q^t1QVK+muokuUHR0!-w)5@H$YdHx%J7|DqYuK1iH z^87i@pAr}j=FDt0VHs^)JZ@+T)3-fJi?GtKE3tt&sKGN$)DA|nxONO>ssBewnZP7FhYv-u|};ch+E zF3o%rWBDj#kscKj^O2mR`D38w{6V6$TFYe_q1T$(3&T>mM%cmeXswd+m$9BKap#1E zWUa!cp_InB`e=Uo=x4LBU$dAqYbkt9y@5(JSGs>e#Y!U@uCT8g7CNBeDuNM|&yHI{JB@ zWfc!?NJ3CX=guH+VnrD$a0$Q6Cs_$~I@wZU-^qjy(%du|>Pg{g5 zWF6FiE#@+0r;x}QS>2`Ji`a)`9xvtg&Uiyc_LlvaUOvsk(JIJOG}QGIy=d4>pI+ND z2nmdXUw&)C=-TG})%PL-vhatt3@I~^75FuO<@vYP49?0Mi}WWmnR>SxbE|PB4G3Ik z#=_&BBa#Laxqm$4{yp+n(jD!`{ag{zR(r-=f|$)IfsR*k;XjUMVBcAq!BzgJ&l*a&hkb zho|U7hq={+KVsX0Klu&r%n|eNs}G=Ms|=(X!2J3|8nt!*SgyGJj6#C;dqiWqev1qr zZ=%rVZ_f^#@pM-FYL~#5waK6dLC1Fu@E-vuI5VR^^wpAbqM&7x2pI9*kTR4cC-{L^5Mx9&W?hgP_XNFCO0a)dkb53FO zV$@hyXrvW7h@xn39yJsn?&}h?)X4SxduW9+a8@)ZBAy}23HqCAzO6<}@-vP$pnc6a z=88jU(z)Phx(KsI`JJ3jx!$rn5=* z#w=Kc%pzic2k@m4LbN=fLL>$pE|hPbRePN-e=6ZkZ(L6?=6R){$>l^lr6gK)TK+fe#(2gs(gDz3)wd$@04Mho~#_N=+xw1|}}aYEpi%(=3sR zcrMtBuyY(q=h8Vh@sUr+K|*+j90~{T+}) z)lwyR)Blv*xWI@r03$zRWHR+ zp)(CT1~&NmIe~MhUhLvG-Ys4zJf? zd~L#u_481&xtv>jBS<$j6yX8M3O^LKo;H~#xfSpYpf@?J=ZY<{A@OGs3-&lw_fb3d z*4W}`A=5H#7bY8BAW2f|?o=X8x7B)z!ZoY+sfwcs|IZ;g6*t0*snXho?{+HYKc%&+ z76Yr;Kl*wx4@&RJCDaRtKM}`2gyfN-CH{>6L{3;Nz$GxZ!%@ldP$E@c8z(`u#EgF# zvPJR{Xe6x@sG1n|B=2s);-2#rhTiSde*`u0e+z1}DVll}{$9y&>~Rt&A}a%>RnB6E zFN~yqB8eryMn!5mi`B-Y5kgcMJ@_9o`pakq{O5rojRPT!@K~(!gtiPCk{^T7jFpg( zOepq>#+b4MQ1X4(vp$2}pXF`;F9qE%(+y=kG(-;fM0??79-J6J)5X8gyT3~zBr$ttV}5!_Mt5)n%k&{rKIaKkwj?ZiIvBEbUuym z)DAB$I*Z@KP4MAR!VuNN(IyCQIC1qt@(bNje}|J69Ng;A@_(si$}PO9t1WGdJH0f4 zp-?G|xSl|l74sOf8*T>oy|Jpz0QiEmXJ9`Wf8%Vaz_zQ zjnkTOS+E=$ifO_5R?W`Auz1bGM4l-pCTbZ<6!w&)=eizWPz~Wd4g8TP!6JkxD%KI< zG6S;^oS6(=*TLk)giE>LXvh*yB(8G6#0?a$+F~K{fQ*v2_s1T70W*e#J|Ecm46>=z zV!D%?h<&vW%3H*-jgMSd|9KFfDu-vhpZoaij4Uj;nE%&e2F5J>BU~OgKzBzy*n>vE={2mZYzj$Ir(d~(!yvGBrC0-*urYV%}v^lskJC$ zY=M{5>vPM>CjF5u;kwU6S|(MVKjkB~LP}uF@{UUjr=!Oex!vM!^YP;a6(LE3Y9&ls zsuxN{a!Lojkgku>JmrdjTrGM~ee%u!xj=*fH22S^*KwRrFNrPGtgL*fI8uFm>A^Un zzpVfE^mn_(ipJE2$Tw`Nc5imo@OM@RYVehkWS48r1@5?7v!6+|YolrRhZL(}MlYwaG)wVw{Ld^WvirBz30KL8 zom<4KGuUL!Isa6q1tibM?^ddBrF4U&h6d`+CUO%5ghQ`rgQ3bkM)pmJoRepIG?+xi zs55w;3b$DQc778DEX~h0Fw4}KQ~x8RuHbh!s^mR|OCQV8Mt$3yp=w?l1w69%w@hr7 z%{Z->!+rdEtey})+)=u(_`*8$j1(6&S<_M`YO-T!_iHA1vZX?KV#l;Vhc1m^h&AjJ z81T@-loTe!ip|7YiwUxo52Xp3MtWs;!DJY!E?NF%PQE{|Dd>frviMsXH}?BAe~)#D zjx#Csm&&^AAv#`g4(FRAGop)B{f28hQU4co=q zMHsVnFTIUt-@;wlWV}xdgD3k4`_l~i=Z#LZPA|)s->HHqy#jEOh4Wbnyz=$+Cbq1~ z-g()QA)|q_fO+i)VG|Fsio&64^qCbY73J6Sp9rjne4GOu^u zG>0{o%1QGdw${h?OlfbRJ||zlp0FccmD0Wx1@sCIv6ws?T5T+WwvW(on>#2g*~`nw z_`g+2KKCqPTk|$ai0?eaY4B~x=kHmo%kGZi3H}P^$EkvR5^0VRHZ7FGvD(+{>j0xO z@pH2Oec@M)Dya-Z?~_H!BCy4cJ*O_mQ$IRomN#yKjjEhXzaO8%zat!b_lLjSia6z3 zco1N6xD*vmlDf8%s>}wP_U>7wfvzFd2)Ajsc-Yxl*Oh?^GXGn5j8rMA_*(?8pVfdGYaN;dYPXp(TTc8F?2;Ww?&tt@<2;-=-kHlfH z{&$kaV}C;u!y^%9k3-_yo1r}*mNZAdvaQH^_NWx_?R63ZjabkmKlAw#)Ejr`@KDqm zd+fpe@UHKquWdI;XtpvdHbyOm7funk!2Z*RcixwSKHVYpCzSVCx~K)Y_~dIENso87ea?CYmymaB6;~?sLTIw; z|0c?r1TszKNY8(~GGD$!`(0S3Enj3kA9+e2W&f;-n(a<}ys5@^Yvh6n_^$~SbC-c@6H!T{8BW?W3<&#EW)i93tPoQUa&7l z3gvh>dpuR#GztZ)xjhIp@kHDB-^k0bj#)wrm2iz72mzL9VtNFRxh%xBq-kDkX`-=` zr$ff6sz{pLJov}EWUzCkW9U^`74j8TJ%g#(iHp~r?6)jgUte-M)LF_f9TMMi{BU;Y zpV0SgR(4LW%9~K-7q2)%!(zoBcxy)@N-fpqRafj94RlR{@(sRj#syK~jAj;YH$jSj z4<8S@WL@=SO+nNyzV^CEyR`qA=>8v=JE;Q-jQ!s*cL)7| z{(r&T@!Z-w9R4hT9vm^l27q;Cb$Y?N!dZJdXnqAq2F4V~>K9eHqZJQho(A{py6>%z zOWW{R;zd;NWT5EfK9eBYsS)5ny@Uqm*7?#(88gn>0U0xt_5GOyrt-k!#Bt~+(ga_4 zR`i781$CAbPPXo7lew$}^CUCAgwssaa`>E?uI0j9Edjac<7kG4-o*v2KzvvG%~D;R zRfSbKEP6K>%=(%gE&KV8L~0WPn{ez8ObJvs_frU-+5h0@M`moVAt$>2Xi2Nh0KF~ zg8ya4E7UsR8TbL%@8kYt=wBSw!y)|alQa;#W`@RW6w{us!LiC=!DsevKvU!m1yim^ z8?WBLvKGf`%gJ^&Sumg=Ys7h6C1j@28Dp!CLp_P>gFZ`xmi706$ynN&UOa?ZjF-L6 zT~X&jst@9TD1R!~+{3^Fm0d6H2S=mnh4$A#dgJ5LQzF17S_rl-_EuI$yA2wl#j|j* z%)E02Y;7+H4bDw@%ZNji?A*Z46g#uZf2UO(m7-g~Ig1~OF+!r8*$q|(j|0h^p67j; zyjJYs(fnMKy8Ee6{tfVNEB%Jx0PKPom##4p0^w!AI5G`cxG|=*$20se#<~;nviDTGrL0Xe*?+F$Rw=Yn31n9LMSe*Y z|I$CY+56jBjJ&|7)6f_uu1xqs-Fe(98i2KswrCA z;%);BW6UTs=c;F*3%RRrV36cZr~=O+;ExLyns89HS+0nIwViLh+J)J}_YBAdJS zz;e4W8WuQ6Y%!N4j(P=k;-_ts-1qlIAV`iRI`-B4`B5woAIMMh6uOOsJF9aVT0qnW zCC$GhVg$y|VR){dHJ2nZm<S?D3x`!5*Q9i=Dk<8s{AkQf~9(@NlEXcyA6E zcUsnGVI#Aoa~z@B>oV8EFMyLtQ%*fhnjp3ywd5D9;ObzC7q+9Z5f&O(Rsd&BFUj@`jVr$;x$ld#I=BnD4~fRywv5=z)x4nLS- zU7joNM8Ac;*iCdv_$+zX0|-jd01gxmSVp9}L=871`Fpqzs&TZpo|4EDW$)J{v5kkc z-zp5e?$x>_eeo!mcW?KR-Q>(gFmf}j5o+$>0dXxymu*e|p%HCh?GQ?Ge3 z&k{strtqeSB?j7&l6rk3h&0T!2z>1(TVprg-Q$}Jr zssh$-(#pmR!?&|=h&&nBEF6;AktP*~Xmq=s12@%u6c&q(tsYb|gW7=~>y!$|E(`iY z%;0#HSk?waEDkxj>3^Oj0*Zzz25Z$niqo)wuxu%+w}g+lDMnKB_+M31;vz)I`nPp% z+9C87SCv?FgRXr5XXWTW%u(u)4LLmx(s61rsbEaDgq0P&lkN85>c1YpvU#?eh>VU^_d z1z??uK?S5h`N5nx*Wd3`=Hf2!ty%>pDxu_jDlsOD6RdPN!>jNi=!Zd)4FY(Ot00N0yU zkKRLniK(_)Tth7ZVz^K^9-+3tt++`RQc*mb@z!hh{MrcS1Kr}=k?zQ1aSh3kTFQ|A znIXfODW{sLV3VnIJ5%K}FH@~O^ZZh#=Fd!|wsx~}mX1x9o@!Pp`T9z0oL*iQ?zU_# zSxc@2Qc3{KUH}$9v)KA+b$hd6YuWVR9PUQ24T$_iflTYl!oBM1oe0b-0S$9Gh{GJ3 zHBAwx`xn!5&LC4+%wU*{fFcdEvp6P3HJ4o`Q1VMQUwTNR9$>TT%6fnjNkoe^+-5e* z+rOR%Kg=xj6&EeMm*$})Mvkb!D19+(l6p*QZ&BMp$581&` zYVWNF6PM>`5=@X+eq`*9&C@+VWgVbKlmJV|avkOCP&2z=Y^;?nOp`1hI$vhek&}fz z&wqd-XS%Oup{%Z$;4M^#73|dK%ZhL}?_GS%=lEF5ASb-|aaESQs$+i8E2LG2t=*}u zs{2%~?P$3orXp-qrNRc9T3i`et#UC`NoV11hAlKMsmzKi9Fp!nWMQK(U+Fn&Tc}pf z8(W=6e8^1z2RoMM9Vl3am5(Tuj}EA$65w~B1-aE#nBW>i7aL~BnrB`&V#3PH*>a%# za-P;SJgcQ}GdX*ly}a#J10p=gKR}p>>>PfCID8~b4j6d>F95~sd7&?j-mduy@5y%4 z(J#1Q4jvT(x6|qt9pH)_HGC!P0%nnlfPd1gaZ$@{`w>0Gex+Yr-eLz;zdqu)=8#tv z%3Z7Ms4yPZgWTN2#_eMix3>mwcnY6-zH+8&PPu8v2XGPaBpuVh^$q25Dr8KXTv-I* z-4Ar~Mk`K}%3eX6*>js*w0*N00ufUUm$>pqo+93ERO~g^b7Y|u`)h;ek$tnqzkeyT za2oZ^HNMC~DPX}3x8={D=(G*yYwTKs?J7P)o0&U+HX9mQ;#De2NJdA_jHq4U4;J=+ z(5I>{5Cc~jkYA=HtQpGH2Z3ISgT-3pc*xgf353sv=$0xK8E*|Ed1J9nAJOoKmx4$f zvE`qk&@)ELo+9920RJvAueKG;S!}E5V&lwOQ~J}U@L~ZN*6dn!kr~&7wX;z=xzI<~ zB{Y^VVWb;QhB|;QxnrC6Tsl@+^3GFsg?!dtMbf_rAmUG zE!=tFFYE0QLE7Ln-Sr?0tnlscbgEY(8}%N#|4ETBM4 z?Fp45^pdrV2V^FwA1F&iO5n2n7oW(pz~effFoOt5c5;FXkJ7xe5i(`7VFfv3Xq)S* z2HH0}LMUQ4FJdIYeArl7BiHJ31zmIe89RlFi!K?cPE$wK>gy_Y)h%?~MTNKfb&PZT zLrhKn%`opyzsdCT&R)+skEj8QXt!}I4&Y{%v8 zeVnM}qWc!^h_$g5*!bXh{?hW8(sFlEwheLHrPcsAM`w7c|I8X z@&!zlu_g2`w~5{N+wf&|Fnu#8j-uau0U2>IaRta8zk1dX;F)^Dj_nIW65_%^1ygk~ z-gTNueG1i(Ti)vbRACNO?@OW$!tna1=1}(r`MQrVhcV4?T+`3-zzn6vSC8t|#2zDj zhK5&?MQ}}cmf_Tc*ot4{{bPaQ{>7s$6QLjTEPUtt)CXHsHQq(cVYqMD=qn3&Tu?BY z+ld%bc2UvjZ0XZ!&?>ksb1?t=qxwBH!01VPfPG12>#P&UbNznRHi^oL;-6b}UeJ)3Jo|E|SO2NF%Y3-Yp$N}qaFf(9!|Mj5Svq}e?vbrVkf_LREpyhZ`&RYt*!#jP+{R8CM%;x~v3_;(C6e zGBZc6+r3+GZMyR7A*W0wQ0T^z+HtwFWn>eYU$rc5w*2%BLZ)J!3k_L$7O8>sb64%$ z8|tK+?i2%x8O(B`_TH;2PlzW28z$sKo_ZO_Y6$5)UHXumrg5cF$L|;j!>tXaYm*v1 zz-n9yhwBIU8raU%MQrK{x6Ee9PaU%~{D|15mf!T%#F?2}ZP0KR72?9fn14<5mv4pK~`wsWz(}AcD9k=ox5w$%|T|{R~^+hK%R6A2O467 zLpaF1XLXu<7FufT{85}gOMmHO-PkzP-Nx zgT40-hx^^uhi42%@4ZaaQ6qW~WRx(<=v@dAHIg6*(sZNuE{r~UFOi0fUZRE|!iX9Y zH9?B^Bj4}d+ur+}_jk_qo^t)JcmM4gpY^nLujgLtS-0{g&UUl=(PnS%W`A5Vcw}?< z*X9UpYfO1-!glNJqpj)Ot(liwbMssCzqS@&pYh6{KiYm?sosKmeBOBZd2{~r=U<<< zVPAHYzpTF8{QBt2VeXgXmtTI&fBE(63+UW7!R2kjYum(+w@LE0$zE+!eAuQs*`_(S zLw9+H;o1(<;~kc~9ky3H93OTLB&lH^Bz}Q*xoaeVa&f+EyUa_}puk<>SG%B*U7_fc zUAou15?^+uukA@Z-rGpnqjlK3R0C1^vPT8kzx07nO@E)mx?9l+8$*Eh@sRk`W@B|w!cKVBN^ zusj?jLN3d=wzpssl69R@I;*k5JVb}|I=fCR+na)EoU0PXL9{u~lp1Tf!IX_~&%&)U zMzpL=y$bxY!hs!3Z+|Y)CG)gm9VD9qP01`TC!M|ScGH2CN%K~*P?h>qVi-!QvORNp z;sH$Vo|wsbWrs)x=B7xS83OYN_|R<0Is`i@81kUKnb(nM(&N$9oI5tN5TEZ`s3#x4 zER^Wh>D@B7OYZYctvShwtp5&PFQ}+!IkbK^QxI8*_o1-#nzOiE=6V^kUh2R9iKun- zPF$iR)8k=Qvm9%WpWf+0x1Kg7`CC4@_#}|U*PBr#nsGwigmir*Uv=Hlr6BUOS$qJX zLxcaPX7T?A9h#>FWQHj;s=R#ii-anA4|w4Gmb#5lGUidw7^#{EmQSG9yR}Fuyg3kk z#8jzxxT-~Ma47Z4!+p|pNGg61cK>;BtTbHRdnlLA)Pq9yeuiO`T~4 zzs!JY+5|%b<-ZDALx{Hro|1AWr>xw9JPlcOTGBc=@3~|`(X+X%kTS@q+owWeR_lZ+ z0!Ob{C?u1csu9|*T?tgjB5qL?T+dc3eD!u@3*29y6{3=Ddq0q{~H7$3@3f?MLQRzAe^gBJKrmCvuHH|uZK5H5>Xy&BHs9uau}G}Ed71>;qLGu}PY z5}HEaJugc~KS4r96VG3lMQ9w1>do73Bky>Ykrig$vv8!13Wuemu9?`) z`+@ZMjBUY}H6{y$velg@TzXWOE_PNz@iEpe!_eoHuVFXOjiBYO5mcb;9 zzlelBvwGcFL+BvfOL%K$9VY(3Q<}`1%O*^Yn?k+34SI#rh2(Kzpek)~y_GtV%#E?8 zj>)K)q1-Xit4#jEroiI%-TR)EFc@_RZY)mmmKz4P;hPpm;b{2c_*}-d{RO$JeUR<;(Dz$T+Mw| zakVwIWm6Pw#r7L6Kk+ZipOcH->R}MlJ zGHhC>LccS1?s9VZyIAKgsk*2I32w6K-oHXstr9_Y^|g8NS|%a~)M`T->PAS)RW{=X z3ftKRDN{@e1oP8KjnqUH1*`OZ?QZHPy+K{Sk>5+QtIn_>Zlwyy{_-JfL~`pGgi?rA z#HL=wRhvL6NOCbyImg&7n`UO#@g9|TJSL3%gYDa zE{HskquFH~MNJ`=!R_G*9EX_bhTWh=Dx;7{Vj^1>9@Z2>Z)a^s#OCkcOw8-H|6OkkJ2`Qp|lAqp?AF9{t4 zvbkGPVY}co*}8!62pRuOQ_Zztpl?yikr9XP)2xpQblAZZ6V$Yw(Is{rpj=A`WkZ>D zP_tSsRaZ8uxV<%7V&&USCp5f10;wWOS{eM-aH}wXQqWq|1AB@kSG${Awcb6galA8M zanQUM{}h!ed_L>;ogVM7(wwK$$3gD~^8kJLvQ5!QKf;J50@U<|w3kyHw zK=Y)z;3EY~{yhbfe*;t$ZGrYde3^+507b6zpG6Tl?p&x@+TT!w$4Ql=Hkd@~PaXNX z9+7FJgR1(}b9qCe9=nDJ)?)N{?_FiV^3q%<4qoPTvgJS&5m}df>0bck6hCU^4N9RC zr|R((>T6=9fK%5U}?7_ zt`QN(q5JJs>>PJv2s0U;ubsZf7;c{ac*%fQkncgx6We|rQdzpkNgHBZ(Z*2-ORNt? zb{<1c9~dTAm{tmL)iGd7dStC4-b1=6EIZxl`dOk1wyiBrxV1=8;xxi|q4vHVZ-+$f zpmwAj)4AF&)%bRgL9q~9pI5hR;>ZWKg6?MD_OC*L@Su7;tdwh+aYClA`0 zZN7{ifMe0TCDiHN1N>x+g@H0n>Z@C>0Kmk$;s|Aq*8mhrlp=en`fweQb~`$ugnJ~G zfb2@luq*AT6JGj7S5&e>17nSqbj$RO{BMY<4B8(E06=1=ucYtxZ@@RldIga23Y#j^ z3=#(7v76lM;Ho!PLGv93k~I9!T=W%WVRpv-DS9R&-#6l#BV4DsoOcnGB9L(2&nI`#sg=lx|> z^$p#oAf-WVt}(%`N;|pN(0Q?N%h@ah&MCMNtnbGJz{kFMP%|fn;Q~FHe#5Dg!ED4c zO*Mb-svn5uEfG-%l6NuKUOC8ujQA+ndfZJsK?%JPQ9{o%TaI`RapDf79Gw6c2qx$w zL%4b_A&8LhAYt1m7wZQcL^7lyo$uCJ8Zt~L6cLfvI5A|e+a~7*6D0LBG57eTk*@@U z${urXG4{|f&e$O|FX;)}HsiW~;W~Psyu0JUPGT$Wo3A}JNsA^hfu+h1_LL3_b3u{(R3IA4;=48V*83qWf-5Sz(m zI7Xvc;pIw$>$}P9zKh5wv>GX3H4f)Xwip#hS37`23^}U;XO8=Nv+Vcou1N zmP2wo2cb~Kc6}5xEek~xS4x6VvY_Pa)uKCP4zaz=l^YxawM|_Apzd{T$*HnOYp;5yV0t6V#bpKPDpK|DLkY-)mLw8`gtW?mxgg@hT%tRN!DCUJI-SRffvXDL1V~LqJX9fpFeJPS3wR@mk&^oq>aVK^m#tQd zGnqnFsfMT;R}jOSss=(+6oioaG1dF+#LBuN2~c^ynW|Qx)^!UZ?{Nu8{WF-T5LLK+ zx?QLz$JfD8S<6F4M^v?uMw$*=V#*_M*y}GKBpPsPmT%>!%!4DB%%}!oAc$1Nd4CotT=2uv~6>T^?^IC_#qb_#8L#o`&7Kdu(~AUI8~n8O2Wee`zWt;AZV zwL$qo!HDD#oTkyOk+h>j`keu}1lR%!=SjJn+Xz!Thh{`A?*5=y z<|6>KGMIu;`I&Pk58JVfjX75uooZ)1MxZIdv4kC08=S-`jPbe_Xjnp6U)YB>Ax_Jy z$*#QbyhQgU(BzFhG9{nuz~fgq_cp*aglaULJF?y?uOx7%WzIDFVNe)@r|vY~kIR6! z=0;sBLOf$m{0%{sn?^H17$E;L{8$G%e;=&|t@XwPs*+601qG;FGdL$+LSPz*qU~V# z-qHk>Gc-Ax==^l>p+}B;7zW1%($_i@>@dcmrUko1Yz?C(%gET@4g?+UGgaxQh;ehQ zr4w6%p}~VO#$zPx-+z6Lx}dAab={bKpUOb4nDWLQJSJ<}g_!)g36y<(fLUcmLxvg? zXF7GLT7IJYtt~)8m#Y}Wxj)vU>Wb+yo}<-iyedcY*8WSlA$_mF*Yt$hNL7M5Rf4Gu zfjAy6!_XnG)ZNBZCA%tdmYR%tgrbL%=M7KDv)bIl+MO3S=XANe#XDrY1<$)zCQvQ2 z=YL=5kutyX<&h;zuf)O?^gYf(lKgVSx0khwDG%Qy>DoWybj(pPzvqE81@47@F&k$xp z%9f2`7#l?DBZ+-SYgrhDjp602D&*=SyZ=nHrf;(D{m`kOI(uG8DgB+j0?A(NFB zA&R|N@2{jQrmK#zqWGU)Uk&-_yxrNiv2xnlhFMReqX_Jube9*3B%2}J6`m90HDnUV zdpEemw}YP2sn&>UgxV@G0^%PCnUHo2$(kxjO^Q_lhq{ca;5MR_gvV^j^=9SPo=T2z z66D-ql$D6Ou{sACOd!Xgn$D0jbS+^rnDC53=KnC%c*2bL5k_q z1m3NrDf)9Q2cdsm=Ly9++k!x%h6+XzRiq%LmrS_~(1pM*2%ZE^gwcJYj)6Ylecqfvp`bk&**^15{$)-^ z_G3uk=%Pj(E8`==J`X-kA97SK11Y9>04_*d?oMj#GyviFxnAVwQJCuw2H|wq-Xtox zqd;pr{E{VdAgC%E!^H$)kYfOwn9@SD+iU+{I9E?OUwZ_I`-qST0y+VSZh%q&El(!E zkUM7$5tX~Mhz-)`N*jdnsBfWgxB*Ne$G9F}9?yg#o=}Qr{DNzg@ z%|oFHFKnD{L!FRc9A&TH5(dJq!K|Yo9+)MBr@pK3c;WUM_?iLZ@ScF)fNBlNS>@Md zP$r;V$`07zbJm96HLMXdw8Qt;?p#-UtRO1359Q)ji{q5xA!Ie;?u*-?%T<@B3miyC z8L?emmt4_JhbkP;TGnxCD(w+~68uN(u#?QoGKigZH# z)`G?pZ6B6{vhBdQ2%FcZ)wGqrrOs^znyY48JVrksskbD?S5Mh(xi;#|iI9@kWU`_O zW^;q2?PwTuJ>E1yW2c?E1xR3A;4mtq`VN6z&INEd0cQp`Ssut2LBs{);<=xKL4N@AnPGW?MPao) zFc?V&K8o7OjyOmUongRqA<5#Js?&6;TB!XI0?K(MLva37>bw{MzVV0DxnsKdza@1Z zeo^1@*PwjbWrbcg9Ocl^WqnqY?hrDr2 z*J&#Z&Kw^+2n!hyTW?1pgw0T}2y2sD?v-f;~ticmgA-MPLbji3Q!U%$Lf)_euZ& z!l)DO9-Nd90LXa)IdK3$LjM6k(ls6nb`1@-8gQtTf>PFxvUXrK$Ai41%iF_IjSnFaD#>JI~?+_P$4 z;)dR{FW?m)c8~+$!x;hN3jld&myaJ2Xnk)% zM;bwzE->{WiK$D4Y*8H3m4<;W(IDqdT48C)jSC4z89d zwK!VKN*}17rRe#~-PL$)B#Sln*j-h+>`kdo_E$m=yOLKGzgFZYrGPA)kILyNPW}9q zjtv@3QxRQHibVp06?AEP1N1?MBMYYH17z=q{rF;w$08i48>~H=s$M#?NjgB+0R%oZ zI}`LR#mj2}k*Y64Camaj=S>hz-kL#w?MTQge|a`X`Pzu#PK96Ib0Vf5z`BtC1do8J zyE{`rW}SsQ^_cz)QJa^~BO8{7GZ1$>3E3JV^|RH3*e3n=+O;1W{5&!#I}K7c+>Y-S zQCZW20v>D)maB0DLiTKJs|WH80U&jV+yeFd`n zbCMfCPdIv2G#7G}7y;Ybw-MnKpS4Nn5+cW7q?FVKI3|F!bvKcjS7^Wsvlj*dmLfd?@YZptqqa_4Y=^+ZnPC$xPie$`RS> z{E;%B%t{f|Bm0_fKTKr?tPp`Pw?CR_Zs26Vm{p7M#+3Kqi3OI0wx7Ah20_xlbbx;`gJ7-Vw}YKXEqM z{ZdGQdgw2ZNsM2eokr|7lds}7EniPGKgw6PEGa)yN)#+zhu(J7&6K8e3f|ud)Od{e zITS*Rr`OB|?GKWJ5S&jS*Vas2Qi?Gs%`KdaRu+n@NaH@AMVOG7mJoo$a|1x-MJXFG zYLnJ{DF*7PoGP=s9ZALCOn^e{F655}X}qL5q%$w=4^q-6x{Xoq3;iH<_#<+*Nz6mVzNB4b6*Whsq9`s%O3=b9wA7y;e<{*?09<4VL{2spN)%w z5xSPb(*0f-Rd`3HWIkrEjCONAl#lEA2HTalA!j+UCXgl&MR5Y-J^@+AMs<>rLe0=r z$c)!fse*ja<2h^NZ97%D%42ofE`R}jyer14?w4;L!{TURe}q+=XN!ii_lNG$B6PU< zIJFbn!I7GeLGGQ;Qfl?P1+y)>u&j;CSO{~BY>XGsLL8%NZ}OsDMb)&zBD-_^_~6rI zEvh@MDuAhKrrw--dS7$ugLU(t(-zz0#92l^#rH*`-MuRk$wSo+zQ;-vy=P#WbJa1H z#<+T>cM5zhjW*q9RiA@%)N%dCmEQ|{)6hWGrb9if9Pad(vhD~0*UpPNJXGf(iu&;C zqTD+V46+1LFMp{_+c{v8GLKLFa)N^zF~j}Jb4=KThtHCAGrvmH>Dzwaq{%Zd8In}u z`diT308AD2Z`6JUvaD+h6(kek?2d4+dhO*xBbcP56a~=Hhqv#XW z0q^u#a)EJmv8=VJpKbBhkH*9r$V(Wsd1E+FP9eK$?5U3IneprbVJjF|d=LpKsEd>X z38;CT@m&A;Ypx^k|1e;a-&^VQZhH215<$cJ&yUKYfMy0jKQTe$@_&+Xw%SiMh#$^F z05ZM6@2*b&-01ypwy`-4g0Hn*6o` z2!og4AN>(I^<~PRnmJp|s{#1VR>)dKRw87ynp|8}Yws)oX!x2?N1mxU2uW?1eeq2# zq9;i$8m2Us2!CV65dsIc(#?oE!t3;(^rPD=NX=i(4}F(;>3=vuI`L7TQ@Qc!eUWSP z&mt#+Vls8|^j@?be41{!`C<5vFc?UR=>sw$du!tr*WSE*@%`I2rSLO$;89uF-j`1w zE{k72IXO52ZoFHh$c3OaR`f#fl2GqL$hXIU^k=~$>t7(y#{}eU)1pKb_&T4V zj^xqD6qPHkMII(j{>iE4ZtKgsR|!T4)2^lU8D(5ga$U)SpZ5<;w6LG#%k~a8Df%7M zX8C+2O}ZS14MEX^)>P8-(7q;fw?G`?&IJj!A2TgLg30DZ8P{*DfnWNit(P)n^2go6 zqzTiOm6Viklvg%yY*f^C%L6hYjc?rmnUIz8Pycb55F=)qzn!-K{QmpbFF+)OAnN}n zKFkp$4dQBkYUvpQ~92o+@{Vezw z2~2TKKcX`XAoKpDepzjCB!+km&JCu3A1q@Fy|E~5t2wk$aSw$4XP>T%;hX0mkO`0X zpRAaKs1Q|qdkCKFGQH_+8e#G ze8zBTf1~1o5K*=A`&xUvf!P;*1}lNA(h&TTf71Su6m}#IP93`6q)F(*0mZ^)<1YmMujeIX)+r>%&+#ak^gSun6Sbg_1B#N|xc(rn`W{wrM zrNXV-LP?F_f$$5iW{v(*rFwB75XbgfjSDUh@!L`Xqqx6VT1x+OnL(hD?`Ae{LwUwPF|Z7X?KfZI|A&F6xoUd&{yl?J1HGjmAV<%E zA{j&oTID2oaj_gqVub#NPkMuyv^K>3jqJ3OP!_olNR5Hy8C2|ew$B3&I$h{m`SH_i z<)dS_^`v5e#aD>>Gh3NKH_v-q0)=R-#50>S{7KpV|2#~LW9lqls4f6zX4V+ce22FT{PMNQW>?20IAHPptwejz(q2EEmF{R1>Mms z=iGku*5&ska&hKzyi$Xlr48Rsi?1^^vx;7ZBusIH;o%22vFQ*Ex@!Q>r>O- zZcH`ULa=``?RR|j56N@!xuEbfx#-*nEtSgy8B#ZaOk>098w|j{quLtR&t&N2ziVR! znzv?KU*mPwF0_34&~CpWF88DTbFdrk=o9Djr+ceZXXz1ZU~#&DnB%WyI154YB&*`t z&Xm)No`W+(yztw$7bCVaOmC!l#Hj>ZO#rR_H0BWQbp~V;!KipSB|d7GPFaH|Y5sA9 zQRANNAN8^c9tyEzLsr1&;gjp5>m=DVL3;wV*~JB6n}Ug!b zA`&n0molzl3))Jvh=lJJ^%Vi{LsK$8uhZR5?w9kKQF>zRy#?tXCYva_zwpT)bD4}e zuBdfqX$B`$gC*Cxq~De8x>r)w+9Fer;|3RTMha|gr!k%|3w%0c^RrHCvfks2lv_jA zw@ejtkp5gcOr$uO_Ow?EziSezb8&B>o<_4;abon5IVD39{H~`)tX#wU;$g)=p~7J= zIm2RledV&95w8l)krcTNbdjD_p&`;N45n&2gW$KnJ8Q@?{5l!VE?gSNE5gLUry}*< zsSprTZ=z39=%OpU0X5hgu@v+|8r&x2d^?F2q-vTqc+9ylV5~;)*7&NDrIUfRRvnVf zyhJdh*rkr*T{8Lt9quFe{;)qn^abs{Y1sFz^mAVGeg)Wz_{xrAuelC2+XwF*1>%a3 z?T}u-W!8K1OrKv&2?liC3d)s>OqkMxCBv+)<`W&9^dzX^22~aUiC}V?!FW-*t05}+ z#H*n?p2YNd(vHQi>+7CtFrls8>Nag5K5)|;YRwjvH^k|*7Tv`1WfR~$8w=4|Qs*l| zgdX2|%cmj~Ilz!SEohk{bi;MGC{A%bXy{cPmK~dSkNazCTfkrmsSDoQ$ujdszU!)v zG3Ve!3_%xz`^7m#as{pTD0D; zo`|cheM!qV<#;Z)BqvLA!#^ggO~doz9qzq=c~LdtK{0B+Pmi1C14L@tO>V^2bb>2t zm{N)lj6_T7o|x;`VZqbah9CK@=;7B&lKKkDPS)VF&#uT!BE*-aGv!LWyDcpPBMWtJ z5UjhDB6yhYC$mMVX)wO{dfg$b0UuaG;a1XQ77$5z6KHBcX?`MUW)wi2)f3mCciNKbNfX)x`S6K%tq(_<+RYda&5i+5)n&*1ICT0`T+>-Q1 zD?AU4rL0=JRWk~fk(G|G%@C4Owls^^=3`yft<}4|K^jTJ@)X3Rb6ZfdpU|*~s8>sa zTCcp<5?-1P8&Y!=spQIYGp?cbj|=wTPSiVj(3nD8fK@G1qlhySEXr!X;(Kqr!(v~W zr(1iVB@z^q5XYKK< zEXiWIAy?H~{o}dE`=toV4SgT&iGp$yED}|2l-_Sr%yv+AK)j^iQkg#4& z|73N*L50d>xdn>sZGF~3rOS&|i>bEp#GY8dv#lkk<0&yew0Zh%cQHIHE1PIF@gRk|3Peq-e1@DFfzBXVet6Vg7X2!C< zHeyj#Zsr3sZ`-~$)y7u2JL}9&o{R}y$(N#CZse+h5H1L!5bQGwpSV7}{o2}#s`g4B zm|Ic!_H-onw&RtM3+@;c)Y+bSS@boF5?=$?hg+3?Jv#Gcur&QCHnN_9RVwg5wf5vS04YQ?5@+r!aram)U0!=Vku0PEpAEsNeJe3M!9T7P~KxwVK~e zex2n8JRW7}AT?V(@W{8p z^8A(?^}Ba(hrhwfcD>Z&!TSeYVF=CG(gj3gWnA+z3$i(J}@R7u@2g)@UypBqOd(Uxj&;X(hK= zpp2r%^OLeJ9cj7WCdv|$03#|PSl_SRIpXP7fOcW`GX!DLd*;{c10DLLzK3(ZN`_Zz0 z=%=VJ4=H!Px652NaiL^6_TNJnjwo(})F>1|z9FL=N1ieU&gu4r5t5wi;`*W@N7t?C zH)#0dBt?Rx;}!a+Kaz)D%H)aTt@Bn-P++^xo2?*{C8YkAY$fsbp)fST0BR^TF9=_c98!0!4jsjxqJ`KB6<3-0)}xp^jDu zHz{rX-2?rC=qbydOkjS4_OB zHRO;L=uLNn^F^hQJ165Hdx2tSYj&ZtnGZtu-h6YCE^1D$Hjmzc-Yw_afMrUrZ- zT%u<`sNUU1pT=$lG|#IESuS`m-znA`f!Ksu-`a=~9Kqb8rYOoMzRZZ3HL?zil{1oU zJC0M%{pHY=g?yhmMM#>XpfCG$Xl3j|(vL4ww)B@}Ohg`^*AuPL^asg+lR}@(zKf>3 z`-DKGW?R?geaz1F!PP#a4*b=lg{`)bpI;Cqg1pN1gV%i5Z`p*{P8-paCz6J$(W_-^ zz#>B3fbQ6nmajMGnlJ8)i`?n#%a$7n3H?X{^;lVCqMK=kb&xuf&(Ue}xJqwDVCCtN#>@duFGEGiRbzAg}XL1rC(Vb=ZN^p zbZ3`hq&N_RywrQ!gh0_0xuxHA@`ZPd#EdOO&i)>ugJkyihK)HHW>&4N#q}1Oc{_W$ zXt;l5+EYq7zvd(e(WFp8KexJGmw2Q_ZL-s!SMH@G)4Jwl`HWJ3z7!&@cV0#%g<-Eg zWhissB@TO&{=hqw#Zz=$#$VFtL{932x`V`B+LW|(e`c-pBC(0Eu9b~$xtC1%+uQNp z8>}5A*z8o3;)g9NAMJ{qk_Skf?5?S1vGE-g!VT0ezH`Upp7*gb({`!qNQ{Bebk9Y@ zcP~=#Et5L%$GsZbxKnlGO=aloW-8^?Fr@gR7lCwVn@oaIt_$@34Q^9np2ZBP7Q8LZ zU+wB3HxG!e=ZYkO!V{uilWUz%I%`#U=X*tODqx6X8H!&7cZ*3&yIHI33QsYqY)Ljs zO~!kdAn)MyE_!u6VUm+(cPCy`J;*k;ea4r78}q^3e*XTd>5A;-CKTsmdy&s@;!%ZL z{0QTjPwqE@4KK59IDF0Gba{XD0(;WLc>Z42P5YF4g7w#C%a&O{stpG>0}4h*4lX75>h<9 zJ7z9;MdyQZ3=iGj3)da80!YWPcnT`v1K5-?EBpB3wK9e6I|P-qMBl^xb{)16e9sx6 z6=c$E+%7g9raT`+eR2bTWymq?r2{;N|;`cjmY`VpOZ0lgD?YGmg zPV4~yJX`+df>C|eI{S+3v!jzC4;VUZiGo8$nmed0*t7iDnucTa=nbKK0|tt6F|+p> zLK8O@Fb}P1Tsj_22)~^#fO2Kk{EHfbtA_dUI7ZgHR1>vflzlvrLDf{Q61!pc?0B*^ z&ZpcA^+{{s_-*TOQ#H5ECtLD>sdlR7+K8%a*VwZM1K`c|=|h|5=f1x)iNX(6EvV);H(gJv>-kY z-Ffuo**^)A4R42E`msn8--;8^+ljLNfv2SI`>LBt$D_IeQrP|$bmb8!Ci}-nL0|o+ z{pQ2FY0rKvi+^kBP9^k8!WF>fK9H$gEg;gA>s(sD-7*rP=WR?MhCv~8(ohf5<-n^C zuEe)Zl+L>(Azei3Ee(-b(g~_Rod!&(pH27tx{-89a84WV$c9sg!6qpiB?nOa7j6c)y>PbW$jbCe6+ zW^#DzB3twDDK;h{TLrwHFL9g(!d_)e!H6!yXKQy0sXX^qB8|sW9LBJ9p^~X`%>{BO zN1|?{i~3J$s)?R5O$1S{t2wHiGa6t|a%{lj>0Vr2>MJglflr}DbR`p8(=Rx{Z^*u} zdTqER{N*F7VYC7#YQn(S*-+oAK5k8Ha@1R-!{18vd)8D@fpe_F$_ph7sq9=#e~Qeg z%GKzyV)|6qPQlORSAzm3Ccg^pe;ZpRnCu!0t`anHwAyAmnSlM;*GQXbdF`32iU2kAl z8T0W&&|A3_5Xq>n?<~2+`IRz-Lb3TNIaV~K;qh*6_H&_-KEDz)A6ZX+-WX+LK0?k7 zDHILMZ;8>`1_g(T&b#n#VCSVFNS=9gAvvAD=*iNMhbx?PvCG7yf! z-o0v2f|^Y8x=q@aC4`r&f9v`FIBashwPu-+K^Eb9B!?|!h)BYV z4aFuC@1rb{xLmxlZUXNf7pXur*Efyor%*vDecXK_ZLcBdAiGeh%Jro0%g74>V3RgUz0BRQjz(IXnpx1%+u zpVpL@a-&)@zk$NcV>H%(Ay~5bZkXAL?o{TkfA>Skj$w&3j>&^{OQ1<-+AX1hu}a<1 z)u(Uz)p2?mzqTP4iai>`fNpCZ43Xg@h#K7f))?G-JBW;L30%vazS8R{RCmbZip^&v zi-g!2sM8brz^P`+MzykN$c_~EnPiVeU3GRc(l_e6vYQ6=OGx5|#&F%Ake-qEo)E zuiAwtKD1#jaV&S&xTznK;N(dRIn+aY6BG$~bU!caLOs;IS1eMvC0uRsry>C7^Afah}620?P^iSBgkfrj-_Q4oN9D3HimAZ z3(G#^@HsTzc2PV>nfH`6>8CDf-{N>WEaW?uEAPe}y&IMmgzIFsU?V{b6LmkXroZ&k z&$#4{Lwa90Doi#)IC5G8j#pV%W&|H->Tyy*l^u+cxl&7JU_jsM-+ zDGP0<$=4KKb=tF;fWb;c&f`%8I-2%ZB#^ z-wB`OoorvY#Q)-4R(FzY%G>IT2gZ=e_Gv;lzt!qIoZhv^#MMh5OLTpd^mH0R`u8fU zZXwso<@8uu=w%NiJb5FDeEcVm50fhEN66@Kiz<9EQ}kPYF{1d{Bz7xaZ?}Vd=~V+R zw{^biC-Qk_p-z%$2~xYfrzT(@akfg))x=6IwxdAF+`Jg4^FOV%O+tyg_wpNS9`Eag zgoM9)yv`kOk#8Vyj{FLXOsnf%cNfm}T}`M%R43an-ptw{yG@sr1l6&q?(Vy9s1g~B zD?DMzm4}zQ-%dX!VIs2y$x_Rd8M;D=-6pZR@R>TN^N$td(pS+77pp!G-W7FJL0i#L z67Zb7yj3lhDK7`Xrg34g92^lsNTh@uoF%ZzA;!Sjr z%a(SLd!K2`u1>8(AnPrTqWP7BqYvgTG193g!nt$P_N(@>Z7(GquzcrxW7XI!@9^aI z{qM7!PkCEeaaIUJoFaot!Ob3}&o`faf4}`X-m>MzE#KMi^WU6gUQW`m#n4!fC&Q>- zzTo^4%s%)2UCB2+;=hC-8Oa&PyRrQCH`bk@ zBPyV;dI>L}2(CxeKR!@%9d@$++D7X?$1}eAiT)cCX z{m#aPm52TV(QeACnyl?GX1WdeH^*#*e?DXxg$DK66jWP@ANJDT#T8dS~i6xX{dmvOiaN%Jj}2H;KOlV?U%?;CC2 zZ`f%6euPOr&zU3hWlTB!*l$Zpd&fKsh0|gx-OOimr{;{@kmcNI!g`89vc@-agJ!O8;V^XzH}_=FmkN znG#MrGTAzcqL2#{a(Me&tS}&^a&*E*!UbfxSHfXNO9PL9mG^9hqssI*He|Cmymbh!{=as_c2?XD*p6^I5p z^~$h5%Ui_=W#02y&gaOs>g901Vx$39i@vPdyJU!KK%!fp1^x!Q*2mD?Mc z85t{VtxYkoM`BttMV~koZ;C=bN^WnG-;mn&^QsZEZXAz!w!j~Ap@Wz=r&m!$vQpk#`4)AwE#AN;WzXM;MQrigmKBcGQ#@6u@wt?sV3h&= zw6HG)y1rp_WN6|%K`WBKC~ROT()*YSTB1wJC(UJ~8NRui`Sr)p`+8)741Zvxy(LDT_*T7M}nLD&Gul%e2#?X_cH? zW-wYBF_-LXi22&deM#6W9q$`Cc&F6LDF#k826d@5? zfkm90=LWHAk!0o-NMl9SVh7Y- z){QOk@gmCBdsM4kDP0AfIqJC2-_2To!>_b{?mY$0*@6!Vdf0GI7UgtD=f^b?W`+T6 z&S;-$mf`S#^-POeFXagrR5~tETCaa2M2=$N{DtDk{=pI54omzZpFmv0i!r%U!kqUB zj#1E`x6GbW6t`AqT)FNg!DP#T98yrHWn&zq@1*ZxQI z+iA}!w2!v)adYAdNOSq@peMZCN;f1@FH;E6bANk9;x!=C^lpY~Qat{G1Ub8mOc%vH zp*U&VP^KYoxuWV!(?QxQx4KuTW*c@|-L5|6%W~!>Vf6 zweLwtH;90Aryx1$knS!~5Jf^#LQ*;=-5rzeP7x5KI|W2Uxq^h0xMu%t6Pva`aL? zEoC(|^<1u{9wQkIUh&ON4rD8=T0P_XLLbTYSUFGMpPlQSyZFQGq@=Qs0day3+N8`y zJkPmCulpp8R5!hRw%-Z#h{6e|IE6dt^w(C7{e-_^^zA2FAJ^H?U z{G28i_F(fjNBm`B97ugzXDM#Bv#|h9DQj?bwZEh)EA1=FF*$38SpH7lFIK3bJ#-R^ znHO?=eb>f89weN5rs1iSeh?Qmp>V6nz>5{I=^L#HP=;MT{VZ_Qy_4O$QDuQZ<)h-J)Fa|lT?|w{ zI)Y!mwDdQ8x!l#s_&G_I$ljLnaMY`Dl?E9{C{7 z|Ehe3&xYKt4x!l1>oO|mV<}fh1uD&(a_j}4epfyju6`p|#|^{HyKjcwKK*HU;z z&^-3_nIZWtZ=w;PwP}T8_>XHO%YUav>izo~$?;c>^jm8~a7$}r^_SL$cMH(k+#AyS z1$^lTAQ}m*Gw;rHD{whiVfd&@q_8pd2>#`Tg_C zy3$COM|R1n=%KmR=>mrAVfQAym5#+tim}zN(K9MvRDWH>%QRTp$jRrSm__IsO6y+?hx`o8X*4he7_2PpkxH^U}l)&7MKo54lH2yzn+Su$_?2 z)E89y7{~pv7%iU3TcI;$qe?C!@-4u*7GzUdl+@Q`d~-YEp(F>sTSUHe- zUaXpVvG_6B@+?B8cLOrN+fsY2x7$)cS4wU3kFJyltSi+;W=CAbcON@dMy4?})bGJw z*ikM|tGiGt_$Z%YZMKj-W`)V&tZRih%}Jvaa_xD-~2PTA&}lObeO1gP93* zr6kBA6cAjz1oTp(GXwKFc!xt1#~>Td;YLK60)4DON(FP6rGZmGS1PQ?@bDV5l=Ev# z0MM2SO8hbD`{ptk8qTqs3ACkr*BmRESX8SJ&HJgHt*TMEtu~jnABXAPXA7^B_@D%| zrBcyKv%ErNYer#hsoAA7dFK^mMNIY&m6HMa#lyx!Wd-Rc3emjRlgL0@O7|Ux5bop8 zKwFBt1lE>%wC6z~Sn{x&oPl#Vj(Y3Qu9TP%tSbe-qKsCXOEJ*#@Q~u+#|D9)IDA$b;=XA)9dopjcN~f^r;Te(KjbzF!kM0>PgjPHh;=t-~rb=EQ7S&8& z*?CEh{R-J58BWy70ccSrs$Uk+ayoMl%kO)San7`*{~XAt(U3Q^(4M4=YO?gYz{Psd z_z>G*ea)+k5)0lVz6nm;jxx3HURY5({dn%GkGU^SNbsZ7uO(%IE)3dB?SAqbY`l9L!o1^)VP ztF@Ai264~)(%4-eIM(i`aJntrIaB9a4#!Z4#gM=tt|oT0Sdh-#Ww7|0 z&;bXw3J4yjD$<{!&i3IpDrfX##^pBcnaZEnE+xRx8I&B^eCJ$Xe5tu z=eOcud0t4!yM(PLvP}5q<=G2-N!7x%6j)T>zneLcR_lF$hPTs#(y$S*Zixsn38U8; ztg;IBXW@=o3-48g4le1ga3@&Rp(|M&M5ddTUgz>w#WMXwq( z($Up@v4I-W-3SdTD?pl2D?pt<8FNSypxK5GQ(`$#t%SbM>RjZoFB*Fkx}t~U=|Wq- z2!3&dl{E8HvYciH^v$w-S#7@02P}&dND+mz%vQT3Qsw;G^q@QbveO|iEoXzYhr4>L zL`qB^Adh1p*K2u)i9IqX!os0Vz1LiQ{T@dk%fdO91X0a2q4smwI%7^p@%iR}xUv0u zvbOjJo+-I~kqu6p9N4?!ouib=mgk4ht9OU^hriJh@(u}QH*w->c8uPSU~b4q9acx? zFwkQAB+kmo5GuiJ#q&;9kVzU6?L^Q!mJh6H?v-zZLGr^C8KTX>%ZCfbyb zt5Tj&8egA%o*Ht>%Ky4%6(Okomgyw9$%D&r*iGX?{7o~(@~-pA`+4t0?7P@k-@O6{ z7VfFwdxBc`LS@_*(ecmv-goRreE&JmpyJZ+_Le4b*nNdxCD9w0&B60GZ|eMAcj$MG z^z(Dz)jsNGGf*R4z`8>E*N@pM9xI|0AiuH}lOtQ*9k*-HRQFr% zgBI*Wv8arTMA6oz%eJ>I8KNAB9v@D~$^%^xL7=4s&nK+K*PB0SUb`WHTvaVE83=FN zRsMMe_WyVP#$R3mED!=BSnL;Gg&O0Qh zh&l}9bA&yPEJ+Xn6=y17Bx(auBG_&h?25_y(#TO0Kq>(q5*>CPfSRQ5LLj)@&AJs;oa$ddBD0;x7RKg{k5CcWo+ zq08ZQ!@D6ZRQu{3Lxo;tNjz@kl>|y|D3QZ49ZD0r4-c{x%l?p!<%@QMOM}Y)3HZx0 zo@EMW?D=D95!ybwHwL_axHKPNX+k$ki@#+C!24xq#J+s!CtH~XurcZNXM6U&L_x%Y z!8xb6IbBhV*zw$Y8~_{hSH3&_Kpf>KGUuc!hM`npU!+r1C}arA1R)d-)_l>6KzS(_ zH$B00~@U{W0V&jCl&Irw2E)%kOI0WMaB<**ikk z_;j4=AiFo5Q48LP|Mh}G_`^%M#Lr_3O2PbZ4oV=)YaLJt^BHbe9P_bssU#8y<{CMb zLJiSA0{vP#?Ff>3^2Cku645skIn*akZUIj`T)KT(;@3V@l$p#8L#?h=B} zh}G)t5@d*^>;C2;$i#yBzSh!~S9xc$=a9xM?U4#w-k)SK%-goZ0XRYcoyK(YskrtZ zxK(aDMt(z)f+stAWBH2~=nOFIo=`i>kt%zabwq7XTE&i9@11iX(mP~=jfK`A8UhUK zs;>}!wifr+tfz`}blfGQi_yzadsr&9*=|X|^^((b=pCX8{Yc&uJNRP${2iT_f^<&p zXarAl5<5z)!cY|-mQ{Il=sg#xEdw_!8eryZS&&y0NhGz=&?gg(@@KC)K1y>iu1{KA zO|r^&39p?hUJH8PLEt#vt&b|YlB9W*3yt#Ryc7P;Mx*Vktz3eO9J6JWqv%OGzP7=W zQujccYil+x#wSJkG$w@IvD>Coerm%CJAI5C#$`jnNRxuB6(T)Wbdk>RX?zJLQLXs8 z79JRr$|}K95~D_XOpKqs9zNuveAwJZH}Y!UN|scsRW|prb@`yTf}jLkyRj4j+JuZ? zL#S~QII7|G^KkVIFuqXmzQ3k5vU+Zc>We|3<*F;iiLH6R4X#_*%|y#kTYd!k8lFK+S`sDeJpS~`gy^twvVRN8hii6PBReUu8vkHT&tI1p5sTvpOsia5Y087DQo z=LL;2Kvc@aBs8d)DFRX^H@C`LuQnsV$fT55Amjmiv5EoSt?lZOWBu)#3GG)_l^w_O ztf0OEyPf*^0G8c`W&N#Uk`~f=^vadGt=;$Ehqx^9_a>HnS@D!yrBt)?WALcKSb2u*=EV!fEETsl#gI_zWV0&S?WIwoMWvnsR02>68NTGEX zYGtbCDwApbC>k#TeYD=$jHA)5eBPfN7R+mjUt}>{=h0ug{TV^}a^nZ`39~ND#jBct zEJwg<((^WKQ#QQ;fO49(f26Bi%vW2nlA{HlG`D#6=kfLQ@&tCyaS!n?YcUe~3|^cG z%qtiehr_+znrr^q3cQjXjzq+o8tj&oun@sRP5gFWhq3`0*X3=G*9sgXfH)%nF2gve zvkku+0}I&wDh@t_ssV+whcxbC_cm0*uJyd(HA=Y=vFAx56+u$P{ci8Yi;aeS9)+AazZ*?~bD1k9YN0yeOmi{(QLAI=u@$6|Bkex?rWhD3^ln^`ke(Nnt?4T?Hi zXrKOi=ls*gBm&=M;SZhTLfGk7(CBxJk!jO;OOQ6nbI?oFEmc9AE z@#z2O|Ea%96Jl7gFp>iy7f$Bx3|{F^sJc;06|mkq(*OB?|Nkw2fd_gf7u&n0SZEQ1m$gOWp7pP@3J8eW^V*M@_*PH$>eJQd!sDik^gt? zjei5O{te)@{A9*dP?%Zn=embRUJ|2Ug0Ki*j5{>~AOXWs71D*c_Psk19Em2}DLLCZ zuY@!J4`EJ~?x{pbyE`c3RTnbpS;`uA%DT7y(d>i4_uEY=`M4}Eg}$>Jo1`Jo%n3)j zd|xv({eofbVuwE*zRK_8!Cytlri3D}9H{)XSd{F8xjIGJm)f7Y)0~1`yf)+~Lo0`F zfcc{Ny!{ho98m<3KMVDZekfo1TMX$=L(h#)$uydThXKRSkd4|CMcvpEMtm>>dM12v z`Uq0luS&WSu}%kkBLv{h7b65tr;js(!17YYo*cUqh^7es2}_Zya7H;%0!OmT(TapM z*-=W2pO<4FiJ<1jYQF59_eDOsr*DR9!9?$JvGGs^1Tx}ZO&DPr>$1!7_xU*M z>$P2BfC4ERMga;3D3IwbH`vZJu;t=}p6Bp~4}CM?^IR(Upq_+pLO;*)=Y1$Ytzy4j z1lf9dp>mon_!A}34+Wf-9{;4b-v%JF9WXrmZ)fC$)-wPyDOhck6k@yN!T!VE6rA7t8miBUr(6x?23J;Q0VTX5DK=yl1)BhQd&?_Ys3{ zd#@cwhIPM#K*w^wlgPAWzl-$E_I@{IAnQR7ZGz=NFJpemK_6@V_CY^KH|ya5_mt(~ zAb73ha7gH6`*2tcneAvq@}AYvs4PS2(U>CN&e6E44BL+hO&zNrpL9)2e@q&@+4(VL z6v%cw{UX8Y__JAl>G6zZ{m$_h+itd#S%)dBldsNer6+UlCt*7$-@K3?oX-2*vp!u2 zVkkRZ4CUKBU5b=>0Dw7ltj|^wP0P+!Q{U{Ktw94HoUi93Sf6hcaqmelW_Z&h?Z z__=%0-_iQfqdlEAD%U zgeKGzX(T~*MaU~u06c?1cno+YDD%dWVR!hQI#6Cid!i`B(!gpFZ)~f^1kmy1>78B}35; z6s>&z=?uY$a7ViqG!4LPco1F|niH=gpj_j;F`R-E^W=iB^CSA{9>eb>MFZeYMl z0Xw?q7CHLaJjDk^vJdx@YL$xi0}Y3DMSW&nyNdmX+LQXsB95D@3&)PFI*Y}|`w;XH zmlDz0ijat%)b~ykUVn9$=;2I2!XQRq`_2F5?Q;j&yaaaiYKAsQBTzI=@Urj_xs^dR z3v4=0rAoDYKQt-Mq=tCr<=~E4Z1}{@RhQ4%V+7nSC1yDSllb zS`X}~p#Ke>vR%-Al$N$L9c)M9upLb&2<$`pQTYl~>um17FS)Ph(06M`aB!|5PM|FX zLaF#q?+BNoH{cL4SqQ?Bi{;6pN2s}m-P)hXd1nmK2><1fx1h`1#RhwUY6gE8d8eE@ z(=ffPihu`+p4b^|K0;17PK&vEky2=CB>bTuhMPYu9&jNhO)!2&X5p>_9 z&^B=qU)0FACVys#?5;)k4le^7_X4tsD9F3lQ{&I(_CM6e{FlDd{-ysp2rlrCtR(MW zFI37l7lb<`tU%I-s6YD6T}mbCiw~#iPV_KaIs{$#?Xs@wa!&|74=)uHko}PW(q=w# zHhL}_{MU;IQQ6_z{RG|;uXXF4dTvvpfds8@BQn2@8qV7I*M<|F_{m2aW zg={!2MY0e-C*8+5R>4M66s{LB@m%H>7`^zdN=Zyg}l%zv?O6?wvVZ$JxK$5n%aIiw%!}c!rX^EN2y&`$W!^!SVE#x@vR-an#`+EmC^)-lS$E9O_iZIdgNe;!wb2;RxXo5y}f?(YKJ~eOVBEA z3%@D>;*eTj=~W}$4^9cODXgluMZdY!hQOu194Oucjx4N7yrG^qWs9A7&BvYSx9VAd ztHN`;OOOFF2R*zw!kTYyhW3xmNLUuMe|rQW;wm~shAwu7Qr@*j92qt4i9wNxJ_@Q@ z5sPC{Y7|1{TJ284dlhX-jc=+PP76fjxQv@h#39R*+~HS;am^+m?exk|Msx4*3BZnB zP`=jMlg{(klv+THgDshYlhGqP+kHB%uDVhw*lQa28FW?@4JjYcZ9TtNf1;)CE+h{@z6nbG(*4>M6FyB zv`6g~ipS4;bgGu!<4da$ASB0;+ZRUtVL|Vuru1<*PQ%B1-p$hVe40p!q|sAPMpXWuQA%1pUxaQosGpd;l<)==} zOEWkb0*;46=K}NSrm_L29c+>_r)eGd9NY_QT)}5(m0zu&W*O zd*!fq3M@Scc&DHOw@oWmN6^hX#SVx8Aru4x$m|wmqwfi;PxMsD$w653EF4_+m%PKM znQriM0zmd@p)Yt8x5Y&Xv`ruovEB*=E;2Y7;LH`DS~Dx0sirl$JoO;k`wT=xcv0H{k?KAG>Yb&?-$TEiD5#|6BG%F7I!;QqSUhj^5g6CF z6oI*tto2wSsxJ-ZC4&wp72xYJ!&2iPmX`Q+TaRhKC_jtd0)l=E*mPX(O66@M~7uF&$3~ z*;$o}X|43<#g(h%!G^tdG%kkkoSwLHJvsU2iPd$Sc25qcSNfjIWt46VT~YqypcWJU zc}I>)Z|K`mJEp}qO{e>5v9iI{^U+j;c#AQPb7y3l3LZbu-7RU4wTQIHjq*d-W=`<^ z_-8(Sebqw7l@gjZ7-0Goy%7@Tu24Ceqj<+vpHeHnQD#$x@yY=sP;Eme5L~RQn3v9- zd*u+O=#yuj1rB4*k4jMI?$xVEcv<*3;+$+G)LZli<%*p}$wsc#F_UR>YU;bBZMf0o zf)s8^*!*CzOBVQ?*4{E|T)aJ?`j^%yx0^-(cQhRTGtHt0j;HEf@3_`<69H)1j&1eY zc(N=kR>-Ji$U?tAJ?wK0=S+h=`lNefb-8zoBRWO+l#`7K6q|b^HMQYz&61yDds`No zJTy}Mik;;v)Re8&#s-KCdHd?bC%-+xaQN+}i%-5Mh4Z(T7LV+sJI9mkS1s4qqAP*v z&hYSN^WG2d7R-4@Q8x<|BrY^S;Go(37m@_MlP;VM%sjHY0%#)ix^yr0MG9;ZyUE^z1ptqp)cO9`ZXPsX4!#F$98I`Ul#Aw z%{pzBKG8SBQ((>OINo`uVy^bWV!bXTmVSUgE0C$}-K%odaNC!`;!{lco6Vr590b#C z67CAlpGYNpO68Xdsvpp06!A?vsXO!>@l0pOUOym-wXr7&bjRyJk77OOrA11 z+ixdyY=ld@2bo9aW^CA*W8fDOZKf9^`e?leuLs_ohvV^Ix}}?Aib8cL>ZyFs=O{$a zFpLv^Lf1a<_p(cNQyIZwPTzO(wsJ;iC5W2$Z9y^a0~26m+#y>b4o&;+aleBghJfg! zC|!l$Y%wL8-kr9)!4?J&LNhT;W!p(+_5#2InOJXn+R4xN0>v=0aIOPoJE%$agJc!6 z@Dh4D=z(us)zB=0eA!NB{rzCwnr97)OXy0WY$4d^^L8l6(g=2}=7WM>SVN{woba+w z`WUChhfbvU$^xH1JP#G0Pm~rc>z363fO8X45~6qvhJ`LluZPB=?op$WGyD$Y`fwCwUnSww>c(tLfR;jTy7l$eFGGV){5Fl3ifp}bDt zSbXDO$gY{AJn&$l@|)ktt|HYy0NF+I;}2xlM4rHpLe;R}$gU#Y!6NPYU&t;a%wpYc z`CrH`rDFZ5zR5ZmvMa3EU`>9i5r*sH#Pmwf&IF|uo>cILRQVX)NtP5+m<^W*wf%re_Rh1o@tlfOlF zl{w@qeBIPPX`CJ`bE@zEy6Xz);4sT!$gYFrlcsg0a@VQ;x#Px@<~6a$5rDn3WDai+Z8NW%p^fHQ>0x~bDJQ3%X3 zWBk4U07kU`Ltw-W8B`V}r)PiZUU;mpKWas}6XsP?gLqz=}*aav-h{9b zjhBhI=Wp(LIBRF`GNbCO7%bCN&g{sGJs%au7x#ZQ^*1qkAP^GB1y0~*>eX3zUpA5w zO!p|B(STDDwZRAHQ&>t@X;!EC5;Y;g8)$ZSI6TiSDDBPUlnnslB(i?#)kl`VE0Nlu z<)smzNq$d<`LY9gXOKy+#{q(8Pd%tsBkM?_8Ad8q1Fi;eYLiM#Ng#Ff9!!4Lc#_P_|7@uzH6DcWA|Av!l`5g3O7ztSQ(F_$U)9xb z?bptzGWfBEXU-iN;6rlN{i@@1fldrA#kTMM)0&3^T;rjZnI&YS`g_3C z3u7^v^B+#Vo>cTn!=_&1s{rGI42t@LYXMnDwi$;o`0aFI28}>gzwrEC{>%YJxV$kNPeL8rjteni$d&2@5*v>^OJWHA0R3F?N7q`<-J zVA3UOOrl;H{nvJJu{ac+>*!<#2QlIOIk*g{ed@f*vC6c$OgiRZO$!r0+MEm)JvoK< zgJU#Ap}DNWdi_tYcH&zwR+qe(28`*)5_|k!a3&D*8*?5e;WRA>L79Y1tA;7Yb6$Qg zNfPl~r%aidAmbZd!v?u?r7ku-;~zv-b{MiwU3<(R_*G8OIa(!sRTEkGnd$ZL{sLFV zPlqR>ohK?FZt)B_rLSTibX0w*xij+~7o1GGfb7qgvZnpaBtHQnr~w)f$Qf4CNO%Iy zqiHh<89ITnkCmEkS7HTVU=;3DN8rFdIOht62LazTdES~?wR`3#xDm z@*nncKhiZaf;EctKhdZ)Td->te9C@VTU=sLK*)_7qMK;!ZS=%Mv=&DJF7Iya@q{EA zSthcE!(M5EUp~#cX>i|!DzRbb7O1-r;rv}Kr@xl8;hm5kI{^8+a$VZmlxZ-3-8a|p7-m!q=u+qPjqGUAsuU>W8 z_03$T1BQB<3Cy7 zP5b;r*g_oJ)vV09eyi@F>?Eqy;kz4|i^AE^n<@)I>sQ|uzSUmxR9t-e#`YufGiYh5 zwGENO$3}Pl&Qx>)7Es7AC_ZcUum6~k!xpgcenFkNq22e+K7%Oh;zd+L$By8`;PL#$ zyBX!356CG(pIf<4a16ub1hcue)s@QR56=tZwi) zN4#F8PTUF=!CO5Bo#%38Bu%YIMOV$-3Aav#kU+-!~q4r(r@blca7|xdb{O=y3<=?KX$y*W9o4oNaoRLIN_wdU0 z<{vgKG`oR2-Z1P#zLhN!mXmdHiM;2wzgRl*L+pt$4T+*DU#7q2OYhNm+fsQod@s3y zqn~Nbu8u9m?@c=YGVPq+fW-8>VDjoAniJbP=Im7pwVHvzx8Q&`yx}Lsp`)Hd4xJAT z;zzZz;e{#?Wunna3dt}t0$c$)Cw zn6(^C#*HSC;vdVUX_aL+64xiexA|NS>!O8H*U7%z+h zC+u~8EFy33=UxQP-b9JsBn{rA)86E#-k6&3l%BwGXQ>WL>u>K127?6}e7(ngMNav|i2U5R{3H|kxSjppF8Rm@@hMLGIUV|`%JQj$ z{a?4kX(#&YH~1S&`#(MPH)4DOhZA7)NaMvc?@Q+Zi-rKp=>Y4~09&HK*Wf@0-9RVj zKm%>A<(AfnG#GKHwlf-Jk&HprFK{;D(^k>7ejyXIms3NHiD{s|$&Dh9o9J zk{ckY(~$I22$U!|3mlxI8=U7HT#y)C;0!974lX+lt{@7j0*BP-hSWI+mpF$sHiR@y zhqRoAw62G|BMR-%4efFc?MV!+0EcFp!KE3&^$~@Qfx{+r!?JopGZI0{2w{`cVRNTp z^C+Ry(-1 zi})sB#x#=4Zf!b z!7z`QrbNMkV4i@ZADl%$(2J(u;0}odg?NQ?m?Xsr$VGAT$4rCnAXP-Oy^E35i`|)y z5#dM0HIG&N96KKrE7BXS%pa#I7p7_+J**q2|1Pe}8FZ&L&WJc(MGj=F7ypttjLa_H z;$8e=V!Y*9ye)r7cq=lQI0ywN!8s`*@3wzH1{h~yz~8;8ysy8qBGD1x%qdy%;aH-Ge-B$>!#AlK(l&7$TqkWzrXE~bnB zYzRRRU0JDtr$E8(s)-kfWca07ao>%0|(-*;nnu)DCDoHfEXnnYja%iW$0RJlt%T@#740O& zmI*yT`f+8y^kb9iAqke9T9r9hv65&0aV&N7^r*!*>BqGTc`Ri#n?~b^AlJ~m-6pYg z*+?*GUiy2B$Xpjbs4unadn-+sn-}{AZi%grJp}*LN1Xeow*Ob?&2CrT|C4&N5gAzJ ztz&ZuRNm#6$Fpy~U!Ked0+si2f(=l4=a*jrmG}3npL^Zx*B3`qHrJP@YvtEh7boAZ zuR$145VCA5JjtFHiXs&LUQa8Mz@9fwC=`)Fwhc{x&xdFLip1B`hUL2FONo(*A|v|| zFL}?8Q85!ur{^PKD5+nzaL5exl_j-Gz1rDOD z3=nyfgD{DSD)Em{(0N%oBoS+#!%39T(v5;7UmN+77bxa}m6POMy$%9#TBX4iaChkS zp=78aY8H(%dD-)WgjR#+4D^MPC}Q3e+Kkk^dr^w$MoTdgl3pUN=Ah@))sRITM4Ycw zD8xNp1j~D?sM;G!#Ho}))iocfFWP+RELtfhX!F6oFzWw!NIT*p>ImgEiltFDf;g>= z;6>B`m3}LQ-T&1+b!{M;V!`Wa6&~LZ@Lb% zP85L_B3h^W)gGpU3j!~gS<;R`Gsw(L2IpQRh~+dJKLm=*ORGPg!W@+&GEjicH!~`A z%8{^svG(wbp1L!<8mTf5NK+5iLi_}J@Pt`J>@!?3(rBKf0iqIu04haaD+OWVOEtDe zrLeNQtY4|6a0C~~JR{rTcDakO_eltw-~Olw!hETVxfftBq*Z3h!;G_2p-qwHjY4$^ z@Nz((i{%L+vOFN+?HRRL5+l5ec^SdJy`4RrJXvWw>!u#M+ELQ6 zL5^uKoFWB8CUwbQS*-^D+2J2&r5& zZBNW^_ZZB_x2;>X+LQE`AfJDxhFA@o$ES~*STj2psvgjSw~6{k-Vl7Jw(5(ipot1H zVdy}ym^*x7rvRmO5s4k6aH1Frr6oo+h+oK^1yuvZyOB5X z+_zLXzukoTu+|jMBV>>T@Pq&{3$P=xm^FMK&b?v*b|j{YTE-(=jK-u?1ED^?hF6xn zdy?(XFZrcYlS>~r9A;H%5xOvcnM0^V{|4(SCU!s+t|cEFw>ISsOfkRxB3YH~68?g{ ztXN6`-)H8-*00CuF7M=J?yb~nk{GFaym|8ATZB`EwYJ{0}I;KPsx50mRh8o$_0y4J|KTl{Foo zkCwF{u~cSC^rShR_G^~hXNdrdicj%CgCfvZ*B>`Hg9NE|KLVIl?gsC1?EKC#zAjaoUMinUv58+xgr;jE`X6T0^HBG~)CiUMmYl!_N+i(HN0a6E; z2KePoBX_U0$>+``nIt33bc}Kd=iH;ZC>eyn_EZrCx+Lj{$m28tSCuIfp(GzHi8{9E z4Y@LAjxB(hIqCki&2q*QAh*to*~u6(kNe`R!x_rr4gpDu=#PpKZ!23|Kr)~ixT9N7 znz;8(Jn7$K5C5>fh@LAD-2y)MC(vJRP@?`Rggwj?1#!XRA#ch^{wqXzu0N8!8ts@g zif)p<;_|hin~gB+VToRlVOu(^fB!h&9F80H=Z&&Or7KQ>uN)QtN@3s%D)`V&bBE>W zK;n)HOfI(mr2()lXk7BE2bKbDlok$Hd{(|_BOsnJ(}$Ijbe)*7m_VZFbc6lY5X!k1 z`{(z*=oD{lVJ7P!7Q-?@exQtm+2xuWe{4-x|8C&6hX9l47QnW!K3;4%d{ag)^=GJj zXu14(dI)>cJ^+U}tbdP42rDD$3+8<=c!5bYjx^)K|K7l5T!i)S7a@#!z$6;z-!F!6 zz@9YjNi)E5->~rWTWJ~^I+sGeLY}Y}DtWZ}j_`SV0j|meGh@j7+$~NecH+seF ziR}J(4DXLT4i@@3EOU8x5&{!#XyBb>0oj~YwL%Y!4aQNizHnZysO#!iIQU-Jvus|Z zkA%L`CJ9UqbqyxgT4p~Px8RQzr%b@2?Ou4{72!0pM2bVi_SEpDx9zLFY_bcKZX-{9 ziL~=@ise=ru)al$zV;|ti*SMQ4_vTojV~z>YNEwsrX?!TM$vW`nS|C1WSRBsefm*} zbLT7n$i`R{s#zLrPKFvRoJIYXa~PJR3|il> zjbnkSL>bvqG-k!>fjQ?hLC0-4L+gzPX=^H}gv|=q@Z^dO|DJ6Qrp(2@olX4(a3Fv| z)WB()c562`+0-zVH;_$TnR$~MDH%;- zxWK3#Br@c%Y--7WK+R4D*+0>E0s2xi;)Q+!zWK(Z`?Z1HtBcT7W8{*rQ zHVPaz5RVQFBT!C3oj0~cabHU;Mj;%<`3wpKY)QaK^sG7;M_cqHZ~%`+)S1Hd5BgCQpGtE#QBN>#wtlskcAe%>6RC^%c+&$C$WL0_XqLD(cgw zgkqSNeBMNnzx)qEMYqn%u-)atU1SjL`nXvqn4(I`XK7wh5PjGf9m1G^O(t%i%C^Y0? z4F>9u2FSR^ee1(noe*Rrh@b-~r2*kV#U)c$#NeD~=BOoM(W%Fk5_ zDFv?-rgp{sHl>)^n7xCzYY*$C&Jke;FUpUWG zi9m3PU0n*6sHN>NP|p!Y_Om4{Y2;il0EkY1G^<970dZw+e-d8dS+q+vs)*%81**Gq zwHdzS-IzQfv9Syd&%mxk>%4#23dd%J@- zp=*l^-Yoa-iKK3f1&M+LR!xfOG*XNFr%6$3m!oMwsiy=(n!!qe8k7&-&k7YGe1i*F zP#+4PNtZqkqjZ#h}r)N=n?ts$^;2#@p6iYu(xKdSm8^zz>kJrx)CJ50ra1 zu%m+PRRv<+5~l@$kNIVgXLb|h*e|!S4OvZq61_D)RDZR*KrLdnVWyl@nC5wZI@#k0 z0QaCfK1b&ERFbX9mjd+Q_p_QVMETc2!2<^Z3=bs0=C46(kV9kuL<$nPVA2HJkhcIr zBN0tLoL~QayEJAB*lu$MXbGq`%;Myb41J+^cRw4Qf-@9~p}(8I*(zgsdNJ6py_Tw(G#y$X7^pPdjW7m2I9vF!C0(r8 zNfx=huNH0Z-09MhGDTB|fSh$1hdy2OHAV#ux&3Ex#k~gKm8^3!o!Jb8&mFzqZu7xU zTXpzV2v61nXCFMeMhj55TeTkHsd(?fZ1HA)PZV}&I9t8)tU<{`vc3MZK$*FOXAnVd zgEDl>Fu4EK+gk_4)%9!IjYEL$#+~49K^qMO3Bd{O?h**D!JS4zNN|_n1SddncT3~$ zt^tBf=XuU~=RNbyJKs4oQ}Z8H)COu(d-Yzwb>G(|5Z&^O_nouJGx$I6LHxRLwJVzH z9~+hDS#r}qHIFg!D{P{aHUbS_Wx*6i$ zcz8UA-ZI7De{x7*n)feC>9cza|A(dYi~me1-9EPstE8`H8oD2sEu^n^RG+jDC~iQr zK1d^7zoF%5*yR^eafIIR#Jz;2+ochD_op4VhRcv8bFV3pCAZci#GJH;2yw^JHc@1U z)$3YMguFw*u>FL}=m|KU8iC}~apY@^GB~}sQyvE{gtDa8QY1Ea{IUnHK_%l|T zF8niA!aK=k=t_6QTb;kI8vEZar5m{a({u3u; zP15~yrC4$v>mLVlQ7%mXaHJ~~Y5wg<*DBEd@z*3}t_HU&_wOX6>`Z6IUm|jft@Xd& z{hGa>p26S!PN&=d5|Mi{toQyokn=rz@dp55RA2T-MD8yb44P-9rda)Dm9sH~^ z`{m019WEkgvDttpAw4YMGfT{|VjuXM)c0swqfy_w^X>6G4}T8$B&Bz{(r)EZK={|m z>W=plNV&~-?reLibS%mrzCg(@bY&?&72V(6TnNv?XO_P3XAOPY50TK?SQ?oUK1so( z?}txP?lz1=@JS&ip~QC{CSm034JP4KZNE$+=u!ntBbod?OrzLz8%(3Q_=%=7|cH_2wT{||5@WHEOHi`?D*MT>#Kthq-BuGmvy{Ur&P~1pe=RI50hg52>w-%wdY_)z zm6eam*_G5U>)KW{hYi|QW;{MCE9?Z?*;Mz+McIFYats~j@{iE|51Iad34q{ipcMRl zm~*`>Z{2o>IQZ^|?;|ExCL&0|ssptv(y7y)W0)%y_)@{L8#nlkbC14Z%!_2wcM2AL zl#&?l`xT%H+=&cX3g&|>NCWSOMB1=;pjGQ;e*h5aJQ_m34r@k#KCr<75F1mQk!{_k zDwAj_xmc3YPm4JG&|3Vf86v?T?AL=#4>(gdyVTG5Qmb6A=2Xe@2c}SMLJLkKcNt^v%{IEJ;-(aPPwmc8ZiZ(jM1xd0Z( zY~BY*tdqxQZ{+_jYg~=uIUd_0mR_D*i+s&{D-9#h9$jJ@5sN=Y`fB!TzZg&bZX}G> zG5+8=Hm93(zhw7!@%=?duTwOOHm}#2!5l)egF6bbw7M%Ipqtb$O5g*OTOi~LpRW@4 zFi}hC`%xpNR2^mEy&+hvdN(JWfxiQluX_!h&-#@&?qmohIW=_Ws{|(U{mMyFV64}d zbwKn~miYTZR4h{!a(=t)qi0%R3y5jpG&llsZuN|>(IL1{n~Hx`AfA9S8>3KrO@)mK z=-mB^Jk@D!_Q{r53Y9Y76|Ft&7Cjg13Bif#{=(=PLXpsio6Zky@C1SCF34Bk$ypmG z`z0GB?s3l~;xRiF+;`J+?=}&md>MWPc?~v7KMh5s%SOO~#L<}2`XJ||uJ{IGt93hu z-ejZlO%uQVoiQH!8=g@vcJ4TzD~t1nw2R0>;@g+T;t?aIQ5K3Nb_pgJSZh~F9U{8A z`BXvGPW1fKYY}Y8r%*NgaL(x*aoSFmFkW(W{-lZ5Gk)hDHEJ7}D5kGC98aUXv#B2X zx$$3m*~Z9{+(7 znR*;O@#&3=DOYG+*Q$VGZWCGklxOE<_U^a`#El#n{7_5Jha4rr`zpcpjef4UP;qb| zG$GeN&y;B5D~hWoNA^lt+N+{Q;nt3tEIl<;Sw95j3FiyIa`)=dwskzi;&|TLArtDr zoMM(~6_rto<&pNhgrKQP@xnzoU-ef-FS$ue-Kx!zR}BMx?%&er3QQHd(BB4lJ7pu3 z+w!N4E9DvB1y3LB2&mnte6T&wL%lLSC_=+wB2=er zx68>hJPIRjF83Nu=H`o3LRpU{J7$kWY+60i4i{TnV=GTfk?GLd{-xkd@1*-s-7sUEJtR<%1-zz>MljLeM;>B z3g1xU5%&dvxvbhW{+XtXK|hZ@hhlhpiR z{*+?jGrN!L{z=XhA&07xMaKJk3hh7Z=C&v2G*bLeYjv@67z8mIi!CS1OIRHkXBMQh z)+Os_v8(sZg?i?h%hMKokK7)d8^6u`vT4vTam47HSa_k`cjUH*9s9>}&}g4gXCX-P zn;=b_$9ux1(mBsff*hpnvOca)pj9*)+pE==N01&N5V2;nW?x619KW>vVxnZm@rfzn z;!s?yY~j|iyxuj#(vK)bis?C!6;gVH@Z@WH8s^v}>T3`BF4uCw+#DS+g_I(GOM+kr8l{)~VDfa92%~rJ;SQ^e|!ya*D~YAg6j+GWP?!yJ)^9a_5j? zDgy|6PDGw{l+Cuqv92(*znc?sq4)iKMu}v9mnu)yXB*pxz-fk{UrK^)Mauy=$X#cp zu2p2(W_p)eD!E%ayJ$&Do0O*fu||A%c;ovc!Ia|GLYCc)HeX!z(i~lcwev5<(2}&8 ziPq(^>XyCax6l=n<9dxVXBE2*q>-OWW*wYb!pOaIvpFJ-veie9c_?Z_ZciFa+3#lO zY}iLF*VK_lxl^}O<(jimpY+nP{ksITK+{us_(Q@WyHTXp?eEy9ds z3~oFB1@j+|NYfctXpLC!Yjq)zpk zq>JWu?QWGAm_5MTJtx|8DM46S@rzd}f2+GUtM)IbN1}5WsJwqbG#>N4np4N(yGFiB z`_jVut*oEh!=JubZkW=3+{Y$A>v^HOXqS4ke|n2*^w5%B>F!bd-SY{u#L_q#48D|j z{ej9k)nb`*v5LYUi+d_nYuTB;#c8@N1XC0Cxf+ABWF8`kyR!)r4II zEOU6oyMNkvZwpmSAq#Q&rS^zj6(H4m2!;^7qe8Q%>2v!M9w@Qnllxgx&O+d`S)hWs zmtwEZMj_gV9d!%>?_QJ-MlyOyM7H1tZ!=5#@}E5RL>}P+iia9r-k;sBlO28d-aofc zR%I+D^{M6L5PI^;X6TC|#NP#ab1jZcU17}OX@U=mTef0CHw!BbVDZ)QepH?4OQvea*$LNo=t)P-0dQs@WNd*gT-ip484lO zJLtLrAX_RIQAvlYK5H4+o8qp3mIiO+96^3fuXSS|+8v?q?sgxG0eUi*Tv7OmQpZI9; z#OOFgZ}Jl@N;yJe1g3Mwr>bbIysPdT*yP#8n=g5~g7F{u;PmLC@Jm1uG%abJ=?Q^LP z(W{Lo+fz$LV&wy~7=ea;y0HvVE?QB<_?QLeidg0*a-Kc`Q(?nb%C1O;g*QQ4H|ju( zXyqCxY#h2n{}Qq%h^{F}oFr+q3EE@=ZWD{5-oo{h1d`N14w4VZs(O^JiDGXen$a{} zWP`2>ycwI`Uzp26Tzrvrz-R>+V)Tkl)(X!w>=AL4CO1r9e^Iw>kU%LyEvWr?V{9Ts zpuc!b5-oXSRN>;GhR^SJC5#}QsIL|NUY+kk#aVLtOHial$bj2En)Jk# z%Bb}h*FA~0t3-Nt^^BAR{|$-ajn9-xQA8*{lv3D3PyC+*@RTIo)F{nm!G*p#OwRec zLa}rFl)P!5KBxSA^ODa(UZOvQ*gPf81+vq{@6neM#Z3Ld#*7YY_!0a9&2U}1x^W0*uH^{dmuheaER~Q0Jr%t*j`m1)iDM)LaHMI&%x!tz1hE*D;Le(RncjgN?vk?B zB<$YcNN;#~>=!b16_A(UmTW`Sn!z8ui$6|C_CNI$MMm)jvJ~gj5_srR#N9#O-Qj-} zA}}ZA{oE{)BE*w>$C9U8!eU-hz`|3UN>kEYLO)qjK}u6aT1vrPTANB;?_EleSlUcV z-7;SaGR5P#ENy3@>WtFvN#&9Z1TiF+p}M&3gB?eOxKOqw=mg7$gXB_+3Se@qN;!T@ zcWlKWpY{kV2Huum>QrnCu}$O_AF!~V$d#Wx5l4iYf?pf6i zOI7b=C9)k28YUZRTGd*06;>$?$cGh3Rz3fs8vlTX=zxVVt$L!mnw*vPc{D4v9Sf!K zw?5Tx4Bv@zYMwKb@l4O*GA(>FJ^#jrQ^WlvPsF;wB%nttNQTG%y~grY4eMEr_yVCQ zCZ3dDt(|i%XF{zU84gi+VCqfw#;c8{dQkuHNBXh$k6bwWM{G z-}in4ssi!HvD>3@V5QjW@vRF_dSF;-E9gbrnjQFe0Cpr5@Sza(++JIxy_88yB zIF6ON(^Opw-bkzSv1^2#A~uWr?g)b~g-hCP+-MM*rdV5{!cA-ol8$MhZK@7a`3})b zzeuVs|DgWZF62&)b%>d9)ebJJAvVWWI+SSU>PC=8Bh~LiGydK_)Z@Yi zWCT1T-o)^Xk*JUETz!%Ui;A?M8Dr-lVGtu@g)jCs=mDWv1Nf`0%EtZAI(kk^+t%Bg zHsS}?Pn*(9fjI#Z2R`jvPJs0B&I2a^k`o})X)tA|$+xU;Il9T$7vRBG|62tpjMZ`* zuj%1COq}1h)ZXWR&!oy)SBZ*i%jQaV=Eb;&sW1=L$E;yd?`m&}5*}|_YZ;8cM<@nh zm%!D8@jXh5sB?hPmsL@m+1TCbqX+k`%W17Ni;}u{SnH*k^ZI;tcejmR&Z)s8-Dyy za1|DeYf7|bz~eJ|o&4zGVJE&Z_IVXhEn|i)V=_6W^>=jZtkZ;cxr#2uO!n_Vw5m2M z;o%5{sVhC80aZ&%^aR@Y%(igbVZ3H)S*O9~1R9`+sl1iRekQ668wU7kiaqOPFpPvS z^Hy;Nx-?6fg#L1bX@adzT^L7N)Nzrv)lsB1uiT97_q4Si=(u!F_8t)b08m+!ymacl z4S=QEV?T+Ysyi&)l1<*H_b_7pM8ttsbIj3@tGG zF2+Ck{eYb!i`Mo#`ScurZ;L)!T3?0LmXD2MFP!|I(m(8>U$k+eSkMq%sPkKx%IGa@ z?ZrH7pG0ge9hsK=J%V&J`9*jLsb#8Oqz);tp%j8X3>IpL!G3u^*sv%WWe2F6B{%GuN#(QVq(AQlLr_102;HKH^@MEhHC~bQT4Id9P!w7HDfOffURUghxZ67 zA}bK!089D6vfgACE4Yko^mb@7FMX2`xW=faGyHpnA|bV8q`e!zPi(=&m0X1*8~glp z6AgeNd_R=Q2HuO7K=T7A1V{{|Yc|9*-PsMlZ=EbY9C8;M54=ZQqH1wF1+x3kAv`Ix zwa9O;xA$pObrtvmIH;DrG8ZY;TaN99cEKuf%ex2#+ZhKtPLA7F(G4~lErV=(meB3& z(e13Gl~)wX)E$jZSWP?V+p@n$@bs5(mHc)9y*eUGt^NbU?7h?FUVdrcQE+V7uY<9hs-yMO173v&yP=M|?#`tOuhq7r{nGH+!FO_SA6thnK&r`UFVH)TzsRmLC-VVgfmi3M)El3=bWX~ocOdL8m#B1jAPWyA5K}v&gqp$IG^H5Up(PZ zzPt!my|@ax_+E06-g(ise<9V1!zpKOK=9@@=#ro2lB~Lnv!qab)5d<=rV~l(q5QIa z;vDb9)~M|SneHki3G`c%Pb==KHRp=>hs3_|>&If-N6%vT8BSFg_H9*C+msC!FZ=Z8 zOUrj;)+=W$bjFysuTMWoIw=c`z$6P*Bv?1~Mr5zmc>)xjuyhxG`Hx+an&9!eNsDfx zzf_l<7bzgp3K${ARLaA$HCD!&P8^ZN&a}GyJoXJs>dk<=t*6no#&g9~t7k~+&f|dF zOronh;P2G4Uo;?l1ut=ASO3tE-xUnMF2rRcew4R^UUe$pe>1sfs7#!D@{mEkylttR z9s^yM5MTmof5lg#j99-Kje97_dEn-xCMrVv$|);kd=ugQpjK&{3NQj7gJBAhU4^{~ zKt9;^+QrZDHOUAZdZm2riFN515I3` z8jGXK>0>l^>ixOGS$F=0lE{S=w<4eFCSoLRHY);#*u!*<(o+ZNx~ZxRncL-rbRNX@ ztsEiacO*j3G4$UNo5tP;TZx!JrD}d$ zd-#jQvQLU&D3S*|FDD^XaCSqO?2>EC3`ZbD+XNL`jHJ_*A_tW$@SB<>iRfjvPMmfv zz{!#?dur3dzL>g6lEO5QgiH~5N^f&Su3Ct3oT`Fq`J|T3gR)(eWk*A3OKvlokXNeo z-nKd`t;y2DJ5woId;0O%Uh!L@l5J&<9pdhnI#ySpzK9uvDF$O^{DNS7aR-@E&z@zH zy|YgGx_paHAPj#D7n-Qk<6%e zJn#765{!8`{xl`(s#ZLakHKf!Au2fndY`{P(lCWgmeDY!A6x2-riZsA`cfQi?`E$F+0=a^S+kwo2D290lg8@AVF|y!|7}zWAdi8B~yYvJ@ht1gzjtL=y zh-{LIT_hwmEmUJqNjH}7W<0=l6h{-*gi^h6ly{#6ZF#Fjbi0A{L$eeKqOb8pr=b`~ zyD5&Rl@#k$s60Yb*yx3JwvtE-)93DW*(By3rjcocnP|27HVE&;U4g%hQKk5#5^YB& zsNkAC-ikLxUwXT?aKD~$Tj2B9bhy(040ny=pvnCzYFtrFe$$~@HJ3Dhf_s2*@B1t@yiCHR zHNIwwfb`>Zo$(U>35U)Ymn!vMar92U2t;*XV;Oa@5(>EbUsujZ{aRb3V0C(N&HqUcN9~XIGb1cqM{$$YhTy3L~FZO*j+Bc(Sx(WJH~BOf9FKiiJB0rOHW0eAiXN z2zg~i^G6Q9WPPL)Owo$p-fhnr*V_^gx#nh%k*?w3>$&(+h_u9aW+B>Q#GRRF{#yf_nITgV=Bh=bMD7aL#WbdzoGGdnUB0vX@XJf}hPi z%@xIYfSRYf&~aJYHCtOe28k*eoihXX5j5C=#3$5wB)iiBq3NYD&&V$G`HwCy^;f3R zO=}qZokxDC>AnY!i+tV-Ar+#!bg8$~HgSqte$&{8e z%y+lPof(;N_=RBpx&UV&S0IT!a|JG^4n;n%+sqFcLP@M za$m0*l9vPrZ=H$9zR5Z7P0)Pp=6vA?rVCke4UQEMQfxHVd`kL(mZoh%*OP zLRo*zQE+-74I6V5DD|fcIb_Vu;D;UI@a-C&D{7A#lvQSYco58&_~q+Yae1M=XY*Yw z)uje66BUPjC7N*4H}KJf^#lLjv5?j1>ScPN)(G(1O5t#Ute-*}QZQn~!=6I^C2zbA!A%$MA>P=rI&dg3pAqHjNu z=z{|lA1O`+vGmDlPM>^Iz`YD}qT(M`)KnfqT04lt@3Cm8*OxaPb` zm|wwjpS*$N6yt#@y8|@eBl9m<%CA`k)Lj_MhQ8+R<=)NlXUtV#P1O(H5tsY$9qvmU zCNj6GKIg*k`!v-d({B>7KV3_Ob|`0&qZ%) zP2qsfHtQnltR415?(_xa84G+ukJOK(gU<3CFI=Y|!D07B#!VVJiCENkV1!TU_9=pL zHqVX=l)|{Jqyt&Oy79O%wX2JJPaeM#jMhh8KsY4jAq+v76x%;7$UaLAgrw#-)vMN$ z)JjxL&bO1Zl)F4j&7P>kenpzLN0OPs&i=6jot1(8Afn#9U*10WDn80u$2rdNd!ni=5tvG zwc};U&vbg9WuMy{d0v%Pk`a!$2lYA*4 zyTK44l;`5)THq##dN@)x0yQMmG6FTDIFKDsiocQfQiN5ujBckGf%yW#SQh!1I78eX z`dUFMYmFOwo%IkF?}*SE<9>OU{PF&9mx=o>G>qv@prnRS*|E53} z;gwf4oh)QZ9Nv^H1{*-K4%I3~pp8cqf(2u>BX;WKui}Xn(1{h=%hjKU2*-yC13*Vj za$5_)eH#d_E`hu~!LcW07HM2yz)-#Z$mwe8uc#r9oOpOESrGPyY#f7#3Z3i*fv7R? zSqb<_{7^w6AINB3Iy#Vp%bR}NJRYNWcez^ zw41>6Mn!u7!cj;Loow$GbML@3-44?z|0%SNt`KN5N}$@bKdk&f7k82WiMxtGKLLfT zDiT2h?TmLk9US=BJr;gIjOGV?-j8?!phhbgzpIs!9T>;@l=N_@0_ur-j3HD)KoEie z(&7=_0?-7k!`%T$g8Jh#wI4wls-)8KFyzsf5{N)9Rll1kFZ5^j?P!@H6ZJ_Gq@r)> zM&iInAD_$-z{Uu4T&j`dXdj3t@lD3HUQE(0z2$g-(re&x7zY}H(WI?`ZrSLpd`V9< zb=@2eY63@4&Ldn7;y|-@G|y~QE^9R2kyr51FT0%>c`pv7r4-w3P-*(tn^ zw;H!<60zzWv1)>?fvhUi5in7jD>eR4>dJmMHn(rQFZ3zG*7?Y9UaLQ940y;p+0Qdo*<>9C08LQ=$q2*n! z<I_!6B1w-`w6QZfK?1|Vb=6B&<=CZ4)@cJh}DjCfIT5qA=n3? z`HD~bfYIcwfwm5WK=e6GS#5U*jgO*ph!`PGETJw(DnO<{T$t*InIlY!Hvs8?;E-yf@wW23)2t~=1GKP(Cw^aBo!=#M=t9>esB zCG^MH4W_USibD0;#pkCS41Tr(Cmf)oeg^Ybi!cpn%Lo`179`cL@U)`>SdJZ=r!drP zH4t7~lG-&m`4T|W55)k4>{21D&>QX(sBcK?qxJ{0+yM7RfGGXJyI%tK$_>vQrVjk{ zcZ>u0tmlwmON4+Bsrd12DukP>r4u(4{au6GrKQbJE892ArxYva6vlK9y3|$3YO`C!XWZYDc7tKj1`&`}_}b}%0x#6aBSJ8p|d=Tf7^(zf*~p*xUJ z3~;AmxKq5w61F1cgt8_I09+d*T$^xNDpC=eibG8B9m$^9t0?FV4O;zxjH4z@mMhl= z!R+;>*u86frz;%(KuVz5OT!ULa1e0>0v^99L9gMF-}-ihDbunkhNH>zcvJRelV|?G zy9YA`OL-(2W0Z=;c4+8rCy`z~S&@%hVf}haR>~St9R3`;R|5DV_Dsz6$&(h|4+B(zH4t3hL&C+3e z(tg?UUB!gsqowolxDzFuwmbS>%*stuW75FN<8j>8-^$A}*%L0=^`CZcv+^VS;=OG3 zq3xspqg5co#{f#};QGWMG3!v7#1KR4aA0DXzx7jOVM0Wvbu>dlRGW3|V|>iAb(~l{ z^wBzjFg~8r=HqN!qL|Gmj<_U4o6o3m$*2hm#7GEl0yVOs=$@f_vVmIYC@0_`&RJmg zH7E_3fZiCKjS50-MB;(O@uQDA7eV)TsE|zpP_ugDa#0iVl=e?l0)$UP zaNU5^r^q$#&??mUFOER!;?Ny1qAmo0!xU-;K{dPy-j4vZh@m$1LUnd+0XRV=nLtzs zYAO_%X=vZ56nY2?DpWG6(>xdu3qbD=mh=S<%!0b=p)yW~Pmq1i)n#_272$ZZb4Y0O zqfLJ=R2Xu291*}h0-S|HJ4WNiDxgo}gy6~EI6~OrPJeKXBXs3Du0bpS9}*_v1YOuh zw(5tzg&fiuBXuwwK1Dd}%N}m`0+k~iPgDSF?ofQ$FG zIq!Sgmdza?H3qkf0eFfJ^3gtoqIjH_ACj zp=PI{Kg9xMAgC7c&O4STNZMzF?*_GQP~g9Y;PrcYt8>aeyE)*+vzMr5+K1>Kt_+OG zIo+sct0+6!?@7;k9{%6GROi3G@cgEjyWC1yUerp}I>Eu93Ep)={bBZ)`v2b!Z zG7gZcI%JU9H|2DM5E%pFpnSwmiS^w9fd8JX{^xMy1IjbSlz%HJv>8&z?v&g(KGd%>k?a?p0E3K8bf)Yr!A z`U5f6N4Sz7nR?b(kQCBJ#S#+34%O7?RP2@^1x`VOGxU}c<#pz>7dvn4+7r?7lDi2s z?ea#W4tfUcRV0~*w;tff+ogGf&lktm?o+p{S2-K{!C4NC;E}z6r@rjJb6R_g`t7Cj z#r|6X@p-dxSUdFPs|(?spjfQ`fhwIws9@bax&u~PcaO2ZlUT83jJ7TXf@ zfrY{P@`VN`wUTJLhGT?kj5>*eG;4>&zv9`81czEJUe%)7+cPJte;6)d^4EZ(-j6(X z%fmWFjlMo0&-aT>f8yDkz(uVuuKV!F=n!0I1CNZt%eQ~vnSW~T|BLdCod>k?J3KP_ zf1`YRvn;Yd3=a{LdlMT*kp5l1MW>ED8li$O5 zcXDa@*7Km;Zi6>)-giDR0h1_~zwUeb-n|(qbeqs-DPOmq%rEUG zv^xx`dW&>WrZ>O86;Ts5uvz98=EhXjDduws$3SBmXIY`zG4sQZ;h8EX1|j9loypAR zUv;zPN*mzLuy=khqVmE>-S?dXfXTL)lu*@C^xZNqZxmX7Z^(PV51M6GxHIg-UXB)# z2lHt=g+Fm_xNXq=u@;WjpYrW*f%9JGKhCfNoMCRbGfcmxpJ(CUond&S4F7-5uyxqh zf6^KD|AOK2lOmcM&TwhvcHxIJTz>M{>|8G{M8X*^&z1cyc}?+HE@$#GUcXp_Gh8+i z8!4g8%f zxzi|tXA$i{?|4T;6EeUajW`-93s$o@8ovsx?yI;3DC{m9%L-k<`6kcKmdr$5&iXS( z1T8+Abq8oAm`$ zQP_oaTE(HQkVlx%h{YLn7R!UbK|G?_dpCzdYBny8Q)4atJZv5KA|!`wO;#3p&>3nT z9ZExl(JIY?8%OFS^PJvGS}wCw1s2gug*ou%fnxG`+F?G^>#z07>$FMv3I!}b-1|G* zO+Qt|Y~eiwf}EM&BsUIQ7}#SFm{6(087>xBdECRsq%KLF#nGH`0}4ua?>=AK74l+4 zVyP=#q{4;^`5OjC9KA2nRN002t>c|^1SRqf@U*jQ1Iul|`z zi(Al`{I>@DKSGKBf*Q!V$@~YO=O@O=zo7Ftwmq5+$Ll*>^1#KTv~G z#V+`|dTsG%U43Nrfv>ANJ8MXk-vs`Y8cUGgJ3yQ^2J+-jz8(XJ?MMA2vqoEg5AVZR zOrD-vm%iU#I5)2p$u0l%+-`=36e_NFXSg%ERf4*pOjeFE-0dkk$N}>%A_E6OF%ajMOV% zzh=GlC1xT#27emj75lLt8J^lU@6~~cs5gp_h~DUT(euA;7fi`|kGlU;WFJzbLSQDF$_gSM`A6eK!;dp)f;68=}o9aRS1&W$cnKbg+Nlp38IvC{}I6ma< z{82-95bJT!0@TjYdMmTE!g8(fFUD)sI1KsbBsBA>-h(s-f z9jJ_lDV7}rT!&XLPLrI#bl({Ifb+-C5N zV)?pt-z_=)G-SnchoQzP*0)<`9le{kJsEOexM{=oXx&Htr+2vj`cuUOFWO-Okl_yx zE#T~{n!vkkct7ucO>I{>r!fqXh~FNfk`8ghWn5>4yfgWyj?LfKp}?wob diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeCompletionItemProvider.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeCompletionItemProvider.js deleted file mode 100644 index fb74eea5..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeCompletionItemProvider.js +++ /dev/null @@ -1,55 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var vscode_1 = require('vscode'); -var helper = require('../helpers/suggestSupportHelper'); -var dockerComposeKeyInfo_1 = require('./dockerComposeKeyInfo'); -var DockerComposeCompletionItemProvider = (function () { - function DockerComposeCompletionItemProvider() { - this.triggerCharacters = []; - this.excludeTokens = []; - } - DockerComposeCompletionItemProvider.prototype.provideCompletionItems = function (document, position, token) { - var yamlSuggestSupport = new helper.SuggestSupportHelper(); - // Get the line where intellisense was invoked on (e.g. 'image: u'). - var line = document.lineAt(position.line).text; - if (line.length === 0) { - // empty line - return Promise.resolve(this.suggestKeys('')); - } - var range = document.getWordRangeAtPosition(position); - // Get the text where intellisense was invoked on (e.g. 'u'). - var word = range && document.getText(range) || ''; - var textBefore = line.substring(0, position.character); - if (/^\s*[\w_]*$/.test(textBefore)) { - // on the first token - return Promise.resolve(this.suggestKeys(word)); - } - // Matches strings like: 'image: "ubuntu' - var imageTextWithQuoteMatchYaml = textBefore.match(/^\s*image\s*\:\s*"([^"]*)$/); - if (imageTextWithQuoteMatchYaml) { - var imageText = imageTextWithQuoteMatchYaml[1]; - return yamlSuggestSupport.suggestImages(imageText); - } - // Matches strings like: 'image: ubuntu' - var imageTextWithoutQuoteMatch = textBefore.match(/^\s*image\s*\:\s*([\w\:\/]*)/); - if (imageTextWithoutQuoteMatch) { - var imageText = imageTextWithoutQuoteMatch[1]; - return yamlSuggestSupport.suggestImages(imageText); - } - return Promise.resolve([]); - }; - DockerComposeCompletionItemProvider.prototype.suggestKeys = function (word) { - return Object.keys(dockerComposeKeyInfo_1.DOCKER_COMPOSE_KEY_INFO).map(function (ruleName) { - var completionItem = new vscode_1.CompletionItem(ruleName); - completionItem.kind = vscode_1.CompletionItemKind.Keyword; - completionItem.insertText = ruleName + ': '; - completionItem.documentation = dockerComposeKeyInfo_1.DOCKER_COMPOSE_KEY_INFO[ruleName]; - return completionItem; - }); - }; - return DockerComposeCompletionItemProvider; -}()); -exports.DockerComposeCompletionItemProvider = DockerComposeCompletionItemProvider; -//# sourceMappingURL=dockerComposeCompletionItemProvider.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeKeyInfo.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeKeyInfo.js deleted file mode 100644 index 799ebe10..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeKeyInfo.js +++ /dev/null @@ -1,51 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -"use strict"; -// https://docs.docker.com/compose/yml/ -exports.DOCKER_COMPOSE_KEY_INFO = { - 'image': ("Tag or partial image ID. Can be local or remote - Compose will attempt to pull if it doesn't exist locally."), - 'build': ("Path to a directory containing a Dockerfile. When the value supplied is a relative path, it is interpreted as relative to the " + - "location of the yml file itself. This directory is also the build context that is sent to the Docker daemon.\n\n" + - "Compose will build and tag it with a generated name, and use that image thereafter."), - 'command': ("Override the default command."), - 'links': ("Link to containers in another service. Either specify both the service name and the link alias (`CONTAINER:ALIAS`), or " + - "just the service name (which will also be used for the alias)."), - 'external_links': ("Link to containers started outside this `docker-compose.yml` or even outside of Compose, especially for containers that " + - "provide shared or common services. `external_links` follow " + - "semantics similar to `links` when specifying both the container name and the link alias (`CONTAINER:ALIAS`)."), - 'ports': ("Expose ports. Either specify both ports (`HOST:CONTAINER`), or just the container port (a random host port will be chosen).\n\n" + - "**Note**: When mapping ports in the `HOST:CONTAINER` format, you may experience erroneous results when using a container port " + - "lower than 60, because YAML will parse numbers in the format `xx:yy` as sexagesimal (base 60). For this reason, we recommend " + - "always explicitly specifying your port mappings as strings."), - 'expose': ("Expose ports without publishing them to the host machine - they'll only be accessible to linked services. \n" + - "Only the internal port can be specified."), - 'volumes': ("Mount paths as volumes, optionally specifying a path on the host machine (`HOST:CONTAINER`), or an access mode (`HOST:CONTAINER:ro`)."), - 'volumes_from': ("Mount all of the volumes from another service or container."), - 'environment': ("Add environment variables. You can use either an array or a dictionary.\n\n" + - "Environment variables with only a key are resolved to their values on the machine Compose is running on, which can be helpful for secret or host-specific values."), - 'env_file': ("Add environment variables from a file. Can be a single value or a list.\n\n" + - "If you have specified a Compose file with `docker-compose -f FILE`, paths in `env_file` are relative to the directory that file is in.\n\n" + - "Environment variables specified in `environment` override these values."), - 'net': ("Networking mode. Use the same values as the docker client `--net` parameter."), - 'pid': ("Sets the PID mode to the host PID mode. This turns on sharing between container and the host operating system the PID address space. " + - "Containers launched with this flag will be able to access and manipulate other containers in the bare-metal machine's namespace and vise-versa."), - 'dns': ("Custom DNS servers. Can be a single value or a list."), - 'cap_add': ("Add or drop container capabilities. See `man 7 capabilities` for a full list."), - 'cap_drop': ("Add or drop container capabilities. See `man 7 capabilities` for a full list."), - 'dns_search': ("Custom DNS search domains. Can be a single value or a list."), - 'cgroup_parent': ("Specify an optional parent cgroup for the container."), - 'container_name': ("Specify custom container name, rather than a generated default name."), - 'devices': ("List of device mappings. Uses the same format as the `--device` docker client create option."), - 'dockerfile': ("Alternate dockerfile. Compose will use an alternate file to build with. Using `dockerfile` together with `image` is not allowed. Attempting to do so results in an error."), - 'extends': ("Extend another service, in the current file or another, optionally overriding configuration.\nYou can use `extends` on any service together with other configuration keys. " + - "The `extends` value must be a dictionary defined with a required `service` and an optional `file` key."), - 'extra_hosts': ("Add hostname mappings. Use the same values as the docker client `--add-host` parameter."), - 'labels': ("Add metadata to containers using Docker labels. You can either use an array or a dictionary.\n" + - "It's recommended that you use reverse-DNS notation to prevent your labels from conflicting with those used by other software."), - 'log_driver': ("Specify a logging driver for the service's containers, as with the `--log-driver` option for docker run. The default value is json-file."), - 'log_opt': ("Specify logging options with `log_opt` for the logging driver, as with the `--log-opt` option for docker run."), - 'security_opt': ("Override the default labeling scheme for each container."), - 'volume_driver': ("If you use a volume name (instead of a volume path), you may also specify a `volume_driver`.") -}; -//# sourceMappingURL=dockerComposeKeyInfo.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeParser.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeParser.js deleted file mode 100644 index 890de4e8..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerCompose/dockerComposeParser.js +++ /dev/null @@ -1,75 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'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 parser_1 = require('../parser'); -var DockerComposeParser = (function (_super) { - __extends(DockerComposeParser, _super); - function DockerComposeParser() { - var parseRegex = /\:+$/g; - _super.call(this, parseRegex); - } - DockerComposeParser.prototype.parseLine = function (textLine) { - var r = []; - var lastTokenEndIndex = 0, lastPushedToken = null; - var emit = function (end, type) { - if (end <= lastTokenEndIndex) { - return; - } - if (lastPushedToken && lastPushedToken.type === type) { - // merge with last pushed token - lastPushedToken.endIndex = end; - lastTokenEndIndex = end; - return; - } - lastPushedToken = { - startIndex: lastTokenEndIndex, - endIndex: end, - type: type - }; - r.push(lastPushedToken); - lastTokenEndIndex = end; - }; - var inString = false; - var idx = textLine.firstNonWhitespaceCharacterIndex; - var line = textLine.text; - for (var i = idx, len = line.length; i < len; i++) { - var ch = line.charAt(i); - if (inString) { - if (ch === '"' && line.charAt(i - 1) !== '\\') { - inString = false; - emit(i + 1, parser_1.TokenType.String); - } - continue; - } - if (ch === '"') { - emit(i, parser_1.TokenType.Text); - inString = true; - continue; - } - if (ch === '#') { - // Comment the rest of the line - emit(i, parser_1.TokenType.Text); - emit(line.length, parser_1.TokenType.Comment); - break; - } - if (ch === ':') { - emit(i + 1, parser_1.TokenType.Key); - } - if (ch === ' ' || ch === '\t') { - emit(i, parser_1.TokenType.Text); - emit(i + 1, parser_1.TokenType.Whitespace); - } - } - emit(line.length, parser_1.TokenType.Text); - return r; - }; - return DockerComposeParser; -}(parser_1.Parser)); -exports.DockerComposeParser = DockerComposeParser; -//# sourceMappingURL=dockerComposeParser.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerExtension.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerExtension.js deleted file mode 100644 index 2ada3c8c..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerExtension.js +++ /dev/null @@ -1,24 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -"use strict"; -var dockerHoverProvider_1 = require('./dockerHoverProvider'); -var dockerfileCompletionItemProvider_1 = require('./dockerfile/dockerfileCompletionItemProvider'); -var dockerComposeCompletionItemProvider_1 = require('./dockerCompose/dockerComposeCompletionItemProvider'); -var dockerfileKeyInfo_1 = require('./dockerfile/dockerfileKeyInfo'); -var dockerComposeKeyInfo_1 = require('./dockerCompose/dockerComposeKeyInfo'); -var dockerComposeParser_1 = require('./dockerCompose/dockerComposeParser'); -var dockerfileParser_1 = require('./dockerfile/dockerfileParser'); -var vscode = require('vscode'); -function activate(ctx) { - var DOCKERFILE_MODE_ID = { language: 'dockerfile', scheme: 'file' }; - var dockerHoverProvider = new dockerHoverProvider_1.DockerHoverProvider(new dockerfileParser_1.DockerfileParser(), dockerfileKeyInfo_1.DOCKERFILE_KEY_INFO); - ctx.subscriptions.push(vscode.languages.registerHoverProvider(DOCKERFILE_MODE_ID, dockerHoverProvider)); - ctx.subscriptions.push(vscode.languages.registerCompletionItemProvider(DOCKERFILE_MODE_ID, new dockerfileCompletionItemProvider_1.DockerfileCompletionItemProvider(), '.')); - var YAML_MODE_ID = { language: 'yaml', scheme: 'file', pattern: '**/docker-compose*.yml' }; - var yamlHoverProvider = new dockerHoverProvider_1.DockerHoverProvider(new dockerComposeParser_1.DockerComposeParser(), dockerComposeKeyInfo_1.DOCKER_COMPOSE_KEY_INFO); - ctx.subscriptions.push(vscode.languages.registerHoverProvider(YAML_MODE_ID, yamlHoverProvider)); - ctx.subscriptions.push(vscode.languages.registerCompletionItemProvider(YAML_MODE_ID, new dockerComposeCompletionItemProvider_1.DockerComposeCompletionItemProvider(), '.')); -} -exports.activate = activate; -//# sourceMappingURL=dockerExtension.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHoverProvider.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHoverProvider.js deleted file mode 100644 index 9159c379..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHoverProvider.js +++ /dev/null @@ -1,68 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var vscode_1 = require('vscode'); -var parser = require('./parser'); -var suggestHelper = require('./helpers/suggestSupportHelper'); -var DockerHoverProvider = (function () { - // Provide the parser you want to use as well as keyinfo dictionary. - function DockerHoverProvider(wordParser, keyInfo) { - this._parser = wordParser; - this._keyInfo = keyInfo; - } - DockerHoverProvider.prototype.provideHover = function (document, position, token) { - var line = document.lineAt(position.line); - if (line.text.length === 0) { - return Promise.resolve(null); - } - var tokens = this._parser.parseLine(line); - return this._computeInfoForLineWithTokens(line.text, tokens, position); - }; - DockerHoverProvider.prototype._computeInfoForLineWithTokens = function (line, tokens, position) { - var _this = this; - var possibleTokens = this._parser.tokensAtColumn(tokens, position.character); - return Promise.all(possibleTokens.map(function (tokenIndex) { return _this._computeInfoForToken(line, tokens, tokenIndex); })).then(function (results) { - return possibleTokens.map(function (tokenIndex, arrayIndex) { - return { - startIndex: tokens[tokenIndex].startIndex, - endIndex: tokens[tokenIndex].endIndex, - result: results[arrayIndex] - }; - }); - }).then(function (results) { - var r = results.filter(function (r) { return !!r.result; }); - if (r.length === 0) { - return null; - } - var range = new vscode_1.Range(position.line, r[0].startIndex, position.line, r[0].endIndex); - r[0].result.then(function (t) { - var hover = new vscode_1.Hover(t, range); - return hover; - }); - }); - }; - DockerHoverProvider.prototype._computeInfoForToken = function (line, tokens, tokenIndex) { - // ------------- - // Detect hovering on a key - if (tokens[tokenIndex].type === parser.TokenType.Key) { - var keyName = this._parser.keyNameFromKeyToken(this._parser.tokenValue(line, tokens[tokenIndex])).trim(); - var r = this._keyInfo[keyName]; - if (r) { - return Promise.resolve([r]); - } - } - // ------------- - // Detect <> - // Detect <> - var helper = new suggestHelper.SuggestSupportHelper(); - var r2 = helper.getImageNameHover(line, this._parser, tokens, tokenIndex); - if (r2) { - return r2; - } - return null; - }; - return DockerHoverProvider; -}()); -exports.DockerHoverProvider = DockerHoverProvider; -//# sourceMappingURL=dockerHoverProvider.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHubApi.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHubApi.js deleted file mode 100644 index 282c1354..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerHubApi.js +++ /dev/null @@ -1,119 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var https = require('https'); -function tagsForImage(image) { - var tags = []; - if (image.is_automated) { - tags.push('Automated'); - } - else if (image.is_trusted) { - tags.push('Trusted'); - } - else if (image.is_official) { - tags.push('Official'); - } - if (tags.length > 0) { - return '[' + tags.join('] [') + ']'; - } - return ''; -} -exports.tagsForImage = tagsForImage; -function searchImageInRegistryHub(imageName, cache) { - return invokeHubSearch(imageName, 1, cache).then(function (data) { - if (data.results.length === 0) { - return null; - } - return data.results[0]; - }); -} -exports.searchImageInRegistryHub = searchImageInRegistryHub; -var popular = [ - { "is_automated": false, "name": "redis", "is_trusted": false, "is_official": true, "star_count": 1300, "description": "Redis is an open source key-value store that functions as a data structure server." }, - { "is_automated": false, "name": "ubuntu", "is_trusted": false, "is_official": true, "star_count": 2600, "description": "Ubuntu is a Debian-based Linux operating system based on free software." }, - { "is_automated": false, "name": "wordpress", "is_trusted": false, "is_official": true, "star_count": 582, "description": "The WordPress rich content management system can utilize plugins, widgets, and themes." }, - { "is_automated": false, "name": "mysql", "is_trusted": false, "is_official": true, "star_count": 1300, "description": "MySQL is a widely used, open-source relational database management system (RDBMS)." }, - { "is_automated": false, "name": "mongo", "is_trusted": false, "is_official": true, "star_count": 1100, "description": "MongoDB document databases provide high availability and easy scalability." }, - { "is_automated": false, "name": "centos", "is_trusted": false, "is_official": true, "star_count": 1600, "description": "The official build of CentOS." }, - { "is_automated": false, "name": "node", "is_trusted": false, "is_official": true, "star_count": 1200, "description": "Node.js is a JavaScript-based platform for server-side and networking applications." }, - { "is_automated": false, "name": "nginx", "is_trusted": false, "is_official": true, "star_count": 1600, "description": "Official build of Nginx." }, - { "is_automated": false, "name": "postgres", "is_trusted": false, "is_official": true, "star_count": 1200, "description": "The PostgreSQL object-relational database system provides reliability and data integrity." }, - { "is_automated": true, "name": "microsoft/aspnet", "is_trusted": true, "is_official": false, "star_count": 277, "description": "ASP.NET is an open source server-side Web application framework" } -]; -function searchImagesInRegistryHub(prefix, cache) { - if (prefix.length === 0) { - // return the popular images if user invoked intellisense - // right after typing the keyword and ':' (e.g. 'image:'). - return Promise.resolve(popular.slice(0)); - } - // Do an image search on Docker hub and return the results - return invokeHubSearch(prefix, 100, cache).then(function (data) { - return data.results; - }); -} -exports.searchImagesInRegistryHub = searchImagesInRegistryHub; -// https://registry.hub.docker.com/v1/search?q=redis&n=1 -// { -// "num_pages": 10, -// "num_results": 10, -// "results": [ -// { -// "is_automated": false, -// "name": "redis", -// "is_trusted": false, -// "is_official": true, -// "star_count": 830, -// "description": "Redis is an open source key-value store that functions as a data structure server." -// } -// ], -// "page_size": 1, -// "query": "redis", -// "page": 1 -// } -function invokeHubSearch(imageName, count, cache) { - // https://registry.hub.docker.com/v1/search?q=redis&n=1 - return fetchHttpsJson({ - hostname: 'registry.hub.docker.com', - port: 443, - path: '/v1/search?q=' + encodeURIComponent(imageName) + '&n=' + count, - method: 'GET', - }, cache); -} -var JSON_CACHE = {}; -function fetchHttpsJson(opts, cache) { - if (!cache) { - return doFetchHttpsJson(opts); - } - var cache_key = (opts.method + ' ' + opts.hostname + ' ' + opts.path); - if (!JSON_CACHE[cache_key]) { - JSON_CACHE[cache_key] = doFetchHttpsJson(opts); - } - // new promise to avoid cancelling - return new Promise(function (resolve, reject) { - JSON_CACHE[cache_key].then(resolve, reject); - }); -} -function doFetchHttpsJson(opts) { - opts.headers = opts.headers || {}; - opts.headers['Accept'] = 'application/json'; - return httpsRequestAsPromise(opts).then(function (data) { - return JSON.parse(data); - }); -} -function httpsRequestAsPromise(opts) { - return new Promise(function (resolve, reject) { - var req = https.request(opts, function (res) { - var data = ''; - res.on('data', function (d) { - data += d; - }); - res.on('end', function () { - resolve(data); - }); - }); - req.end(); - req.on('error', reject); - }); -} -//# sourceMappingURL=dockerHubApi.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileCompletionItemProvider.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileCompletionItemProvider.js deleted file mode 100644 index d1cc9083..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileCompletionItemProvider.js +++ /dev/null @@ -1,25 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var helper = require('../helpers/suggestSupportHelper'); -// IntelliSense -var DockerfileCompletionItemProvider = (function () { - function DockerfileCompletionItemProvider() { - this.triggerCharacters = []; - this.excludeTokens = []; - } - DockerfileCompletionItemProvider.prototype.provideCompletionItems = function (document, position, token) { - var dockerSuggestSupport = new helper.SuggestSupportHelper(); - var textLine = document.lineAt(position.line); - // Matches strings like: 'FROM imagename' - var fromTextDocker = textLine.text.match(/^\s*FROM\s*([^"]*)$/); - if (fromTextDocker) { - return dockerSuggestSupport.suggestImages(fromTextDocker[1]); - } - return Promise.resolve([]); - }; - return DockerfileCompletionItemProvider; -}()); -exports.DockerfileCompletionItemProvider = DockerfileCompletionItemProvider; -//# sourceMappingURL=dockerfileCompletionItemProvider.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileKeyInfo.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileKeyInfo.js deleted file mode 100644 index 36e9c18b..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileKeyInfo.js +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -"use strict"; -// https://docs.docker.com/reference/builder/ -exports.DOCKERFILE_KEY_INFO = { - 'FROM': ("Sets the **Base Image** for subsequent instructions."), - 'MAINTAINER': ("Set the **Author** field of the generated images."), - 'RUN': ("Executes any commands in a new layer on top of the current image and commits the results."), - 'CMD': ("Provides defaults for an executing container."), - 'LABEL': ("Adds metadata to an image. A **LABEL** is a key-value pair."), - 'EXPOSE': ("Informs Docker that the container will listen on the specified network ports at runtime."), - 'ENV': ("Sets the environment variable `key` to the value `value`."), - 'ADD': ("The **ADD** instruction copies new files, directories or remote file URLs from `src` and adds them " + - "to the filesystem of the container at the path `dest`."), - 'COPY': ("Copies new files or directories from `src` and adds them to the filesystem of the container at the path `dest`."), - 'ENTRYPOINT': ("Configures a container that will run as an executable."), - 'VOLUME': ("Creates a mount point with the specified name and marks it as holding externally mounted volumes " + - "from native host or other containers."), - 'USER': ("Sets the user name or UID to use when running the image and for any `RUN`, `CMD` and `ENTRYPOINT` " + - "instructions that follow it in the Dockerfile."), - 'WORKDIR': ("Sets the working directory for any `RUN`, `CMD`, `ENTRYPOINT`, `COPY` and `ADD` instructions that follow it in the Dockerfile."), - 'ONBUILD': ("Adds to the image a trigger instruction to be executed at a later time, when the image is used as the " + - "base for another build."), - 'STOPSIGNAL': ("Sets the system call signal that will be sent to the container to exit.") -}; -//# sourceMappingURL=dockerfileKeyInfo.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileParser.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileParser.js deleted file mode 100644 index 2248624e..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/dockerfile/dockerfileParser.js +++ /dev/null @@ -1,51 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'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 parser_1 = require('../parser'); -var DockerfileParser = (function (_super) { - __extends(DockerfileParser, _super); - function DockerfileParser() { - var parseRegex = /\ +$/g; - _super.call(this, parseRegex); - } - DockerfileParser.prototype.parseLine = function (textLine) { - if (textLine.isEmptyOrWhitespace) { - return null; - } - var startIndex = textLine.firstNonWhitespaceCharacterIndex; - // Check for comment - if (textLine.text.charAt(startIndex) === '#') { - return null; - } - var tokens = []; - var previousTokenIndex = 0; - var keyFound = false; - for (var j = startIndex, len = textLine.text.length; j < len; j++) { - var ch = textLine.text.charAt(j); - if (ch === ' ' || ch === '\t') { - previousTokenIndex = j; - tokens.push({ - startIndex: 0, - endIndex: j, - type: parser_1.TokenType.Key - }); - break; - } - } - tokens.push({ - startIndex: previousTokenIndex, - endIndex: textLine.text.length, - type: parser_1.TokenType.String - }); - return tokens; - }; - return DockerfileParser; -}(parser_1.Parser)); -exports.DockerfileParser = DockerfileParser; -//# sourceMappingURL=dockerfileParser.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/helpers/suggestSupportHelper.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/helpers/suggestSupportHelper.js deleted file mode 100644 index b196bc87..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/helpers/suggestSupportHelper.js +++ /dev/null @@ -1,90 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var vscode = require('vscode'); -var hub = require('../dockerHubApi'); -var parser = require('../parser'); -var SuggestSupportHelper = (function () { - function SuggestSupportHelper() { - } - SuggestSupportHelper.prototype.suggestImages = function (word) { - return hub.searchImagesInRegistryHub(word, true).then(function (results) { - return results.map(function (image) { - var stars = ''; - if (image.star_count > 0) { - stars = ' ' + image.star_count + ' ' + (image.star_count > 1 ? 'stars' : 'star'); - } - return { - label: image.name, - kind: vscode.CompletionItemKind.Value, - detail: hub.tagsForImage(image) + stars, - insertText: image.name, - documentation: image.description, - }; - }); - }); - }; - SuggestSupportHelper.prototype.searchImageInRegistryHub = function (imageName) { - return hub.searchImageInRegistryHub(imageName, true).then(function (result) { - if (result) { - var r = []; - var tags = hub.tagsForImage(result); - // Name, tags and stars. - var nameString = ''; - if (tags.length > 0) { - nameString = '**' + result.name + ' ' + tags + '** '; - } - else { - nameString = '**' + result.name + '**'; - } - if (result.star_count) { - var plural = (result.star_count > 1); - nameString += '**' + String(result.star_count) + (plural ? ' stars' : ' star') + '**'; - } - r.push(nameString); - // Description - r.push(result.description); - return r; - } - }); - }; - SuggestSupportHelper.prototype.getImageNameHover = function (line, _parser, tokens, tokenIndex) { - // ------------- - // Detect <> - // Detect <> - var originalValue = _parser.tokenValue(line, tokens[tokenIndex]); - var keyToken = null; - tokenIndex--; - while (tokenIndex >= 0) { - var type = tokens[tokenIndex].type; - if (type === parser.TokenType.String || type === parser.TokenType.Text) { - return null; - } - if (type === parser.TokenType.Key) { - keyToken = _parser.tokenValue(line, tokens[tokenIndex]); - break; - } - tokenIndex--; - } - if (!keyToken) { - return null; - } - var keyName = _parser.keyNameFromKeyToken(keyToken); - if (keyName === 'image' || keyName === 'FROM') { - var imageName = originalValue.replace(/^"/, '').replace(/"$/, ''); - return this.searchImageInRegistryHub(imageName).then(function (results) { - if (results[0] && results[1]) { - return ['**DockerHub:**', results[0], '**DockerRuntime**', results[1]]; - } - if (results[0]) { - return results[0]; - } - return results[1]; - }); - } - }; - return SuggestSupportHelper; -}()); -exports.SuggestSupportHelper = SuggestSupportHelper; -//# sourceMappingURL=suggestSupportHelper.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/parser.js b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/parser.js deleted file mode 100644 index cc38e0dc..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/out/parser.js +++ /dev/null @@ -1,40 +0,0 @@ -/*--------------------------------------------------------- - * Copyright (C) Microsoft Corporation. All rights reserved. - *--------------------------------------------------------*/ -'use strict'; -var Parser = (function () { - function Parser(parseTokenRegex) { - this._tokenParseRegex = parseTokenRegex; - } - Parser.prototype.keyNameFromKeyToken = function (keyToken) { - return keyToken.replace(this._tokenParseRegex, ''); - }; - Parser.prototype.tokenValue = function (line, token) { - return line.substring(token.startIndex, token.endIndex); - }; - Parser.prototype.tokensAtColumn = function (tokens, charIndex) { - for (var i = 0, len = tokens.length; i < len; i++) { - var token = tokens[i]; - if (token.endIndex < charIndex) { - continue; - } - if (token.endIndex === charIndex && i + 1 < len) { - return [i, i + 1]; - } - return [i]; - } - // should not happen: no token found? => return the last one - return [tokens.length - 1]; - }; - return Parser; -}()); -exports.Parser = Parser; -(function (TokenType) { - TokenType[TokenType["Whitespace"] = 0] = "Whitespace"; - TokenType[TokenType["Text"] = 1] = "Text"; - TokenType[TokenType["String"] = 2] = "String"; - TokenType[TokenType["Comment"] = 3] = "Comment"; - TokenType[TokenType["Key"] = 4] = "Key"; -})(exports.TokenType || (exports.TokenType = {})); -var TokenType = exports.TokenType; -//# sourceMappingURL=parser.js.map \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/package.json b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/package.json deleted file mode 100644 index 2c004834..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "vscode-docker", - "version": "0.0.6", - "publisher": "PeterJausovec", - "displayName": "Dockerfile and Docker Compose File (yml) Support", - "description": "Adds syntax highlighting, snippets and description on hover for Dockerfiles and Docker compose files.", - "license": "SEE LICENSE IN LICENSE.md", - "icon": "images/docker_icon.svg", - "galleryBanner": { - "color": "#5c2d91", - "theme": "dark" - }, - "homepage": "https://github.com/Microsoft/vscode-docker/blob/master/README.md", - "bugs": { - "url": "https://github.com/Microsoft/vscode-docker/issues" - }, - "categories": [ - "Languages" - ], - "private": true, - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/vscode-docker.git" - }, - "activationEvents": [ - "onLanguage:dockerfile", - "onLanguage:yaml" - ], - "main": "./out/dockerExtension", - "contributes": { - "snippets": [ - { - "language": "dockerfile", - "path": "./snippets/dockerfile.json" - } - ], - "languages": [ - { - "id": "dockerfile", - "aliases": [ - "Dockerfile" - ], - "filenamePatterns": [ - "dockerfile*.*", - "Dockerfile*.*" - ] - } - ] - }, - "engines": { - "vscode": "^0.10.8" - }, - "scripts": { - "vscode:prepublish": "tsc", - "postinstall": "node ./node_modules/vscode/bin/install", - "compile": "node ./node_modules/vscode/bin/compile -watch -p ./" - }, - "extensionDependencies": [ - "vscode.docker", - "vscode.yaml" - ], - "devDependencies": { - "vscode": "0.11.x" - }, - "__metadata": { - "id": "0479fc1c-3d67-49f9-b087-fb9069afe48f", - "publisherId": "bc3f1075-3ced-4395-9b1b-3f0ecaee83be", - "publisherDisplayName": "Microsoft" - } -} \ No newline at end of file diff --git a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/snippets/dockerfile.json b/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/snippets/dockerfile.json deleted file mode 100644 index 695d68dd..00000000 --- a/.vscode/extensions/PeterJausovec.vscode-docker-0.0.6/snippets/dockerfile.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "FROM": { - "prefix": "FROM", - "body": [ - "FROM ${baseImage}", - "$0" - ], - "description": "FROM" - }, - "MAINTAINER": { - "prefix": "MAINTAINER", - "body": [ - "MAINTAINER ${name}", - "$0" - ], - "description": "MAINTAINER" - }, - "RUN": { - "prefix": "RUN", - "body": [ - "RUN ${cmd}", - "$0" - ], - "description": "RUN" - }, - "CMD": { - "prefix": "CMD", - "body": [ - "CMD ${command}", - "$0" - ], - "description": "CMD" - }, - "LABEL": { - "prefix": "LABEL", - "body": [ - "LABEL ${key}=${value}", - "$0" - ], - "description": "LABEL" - }, - "EXPOSE": { - "prefix": "EXPOSE", - "body": [ - "EXPOSE ${port}", - "$0" - ], - "description": "EXPOSE" - }, - "ENV": { - "prefix": "ENV", - "body": [ - "ENV ${key}=${value}", - "$0" - ], - "description": "ENV" - }, - "ADD": { - "prefix": "ADD", - "body": [ - "ADD ${source} ${dest}", - "$0" - ], - "description": "ADD" - }, - "COPY": { - "prefix": "COPY", - "body": [ - "COPY ${source} ${dest}", - "$0" - ], - "description": "COPY" - }, - "ENTRYPOINT": { - "prefix": "ENTRYPOINT", - "body": [ - "ENTRYPOINT ${command}", - "$0" - ], - "description": "ENTRYPOINT" - }, - "VOLUME": { - "prefix": "VOLUME", - "body": [ - "VOLUME ${name}", - "$0" - ], - "description": "VOLUME" - }, - "USER": { - "prefix": "USER", - "body": [ - "USER ${daemon}", - "$0" - ], - "description": "USER" - }, - "WORKDIR": { - "prefix": "WORKDIR", - "body": [ - "WORKDIR ${path}", - "$0" - ], - "description": "WORKDIR" - }, - "ONBUILD": { - "prefix": "ONBUILD", - "body": [ - "ONBUILD ${instruction}", - "$0" - ], - "description": "ONBUILD" - } -} \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/.vsixmanifest b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/.vsixmanifest deleted file mode 100644 index ef49bb56..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/.vsixmanifest +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Path Intellisense - Visual Studio Code plugin that autocompletes filenames - - Other - Public - - - - - - - - - - - - extension/LICENSE.txt - extension/icon/path-intellisense.png - - - - - - - - - - diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/LICENSE.txt b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/LICENSE.txt deleted file mode 100644 index e8a3f8bc..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Christian Kohler - -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/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/README.md b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/README.md deleted file mode 100644 index 15d16cfb..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Path Intellisense -Visual Studio Code plugin that autocompletes filenames. - -## Installation -In the command palette (cmd-shift-p) select Install Extension and choose Path Intellisense. - -## Usage -![IDE](http://i.giphy.com/iaHeUiDeTUZuo.gif) - -## Node packages intellisense -Use [npm intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense) - -## Contributing -Something missing? Found a bug? - Create a pull request or an issue. -[Github](https://github.com/ChristianKohler/PathIntellisense) - -## Settings -### File extension in import statements -Path Intellisense removes the file extension by default if the statement is a import statement. To enable file extensions set the following setting to true: - -```javascript -{ - "path-intellisense.extensionOnImport": true, -} -``` - -## History -* v1.0.2 - Fixed Bug #15 #16 -* v1.0.1 - Fixed compatibility with VS Code 1.3 -* v1.0.0 - Added .. on top of each suggestion, Removed trailing slash, bugs fixed -* v0.2.0 - Remove file extension within imports (configurable) -* v0.1.0 - Added slash after folders, group by folder and files, file icon -* v0.0.5 - Fixed windows path issue -* v0.0.3 - Fixed unknown publisher issue -* v0.0.2 - Updated Readme.md -* v0.0.1 - Initial - -## License -This software is released under [MIT License](http://www.opensource.org/licenses/mit-license.php) \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/icon/path-intellisense.png b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/icon/path-intellisense.png deleted file mode 100644 index 60daa8536885bab8d7ba0cd0d516937391be2c9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9548 zcmY*<2UJr*yKO?~z4wyPi$YM4DuiC7qZH{NDAGG9n9zGuqzMEN1QF>XB81*WiXc@& zM?ef95J(`o`rrHRd+)3@XJ)?Hv-kJSSu^LXIg@N=qDM!~O$`75=nV9=E&k?+e~FU( z@4ZjWW$bT8`cT7I0|02uq`7n<`&$RQ>01~B08d2!;^F`R+&}zJ03ZYk0PHyf0Lu9Q z0Ed53ySeJ$1}cAj+aLgdhUH%Z0t$;b0RW(_=Utm%8)GA7H$NX~mj`~X?$Y5t{(sQ` zfNHq%-=dFuunRcc$J;kZIsCTZe-O%l%m2(Wg5du^g1v4F+8CRGwfq9z!Sd2_(ojJ) zYA_hA8u-9N*+N_Qf4cvz-4=Wl9PF*DGc5`0@w@So8CUjOZ9u&2lWRq_q` zpRoQ0DD$sHMphas^S|7GyQ==PDw_s+y8l)F$FC-<`XA)~XZs%=RhfU{|Bo~O9qE6p ze?wKHR+ahRVN;_v>J_sE0E8S2v^DOA0}mW%!tL)BckQecCSXg9U4@rh3Q0$ z1#ThQ&NLRMWlEdW<^~)z;-k)^-Zk*(oZ#)*dImy%gs2DWa0o@Y+J$6`%X!}a7N_Y& zGdw-Ls3}1vne$+KrMU~Ogf;SgUZ8Sw#OTJ05l_GEm7s|~L;`Xyq;{R5w~71L;{CA# zInU=o!AGtx2TNi>%h%2A?08%*Qq2jdD7@LuA?3h4lgsSf(kTKi6fimeQ&dam-fYOj zLBXl!;_4z{Rj=p4TiOzv+IL1}bFY`@wv5JI_nvqmyYyUELZ?b((<@iVgxV9CQ+H)p zaN_vmQ_$5radj?@j!3TwUYb}!^xu%8! zIuTyTtaZTX0(P+fBNFbr|J|gYOcPXL_TtCPT^dbsepje7WpG8QFL35Q;6t)~$!f1u zz5PuIkEbuYXP70nBEcSYtgh_`imkg@+K)Yf9BpfzNQX7sm!#L;*{s@ancppw5Mt`# z(Sly1BXx~f;Yo_5k61dYv(Su>JIe1n95mok z-jmOeX@+iD2q-=lv{B{11Y|oFuNeFuHlEZ9Jkq@`AwM;5(+3uFPMRh6OD)pIsHLBpej4;m8(6pCFZlVOJRjO*o;kb%>@!+&3 z21JOIw+hM8zGVMvXE%^yn@rr<3+CjzJQhIG9uG)wIdqoVa7!KWWlBG?rl#hR zo!u*lJ$yCc&9b1`B@>4UcWp`^^RFP-#W{s%WQI2 zGs^d!Jc#WP2JoOdpzMJIG4cW$a13AwiTSj8zLpriev6YfMkt38%DL-8fUaw!+V+zZ zkq>*pL8Ldg|2#9J1kcOvMbLhXq~i`0Q6aBWz(uwBM=D2}pEOUHGphT)x9JNmv9^+Ab$zOxrWEsT8 zcJfl%OaaQ{=@vAG+>Edi{Es?IcjS-H9~-66+F3!`4Lvg63z}2D8k^{Zk}F2~BkjL4 z<2Ln?N53?kk>Q>^*HrYQv_7G7xwc;E)Y+1!E6Zp(V(2~<**6YHaQ3F^=3Nrfw;x=4 zYVc+I>Xi;EG=fgLK`Xd5+tOop7%3BHQeqk33cAtlM`*PrZQ<6lK#7N>&S{-Gse6N{ z-4uZ`P>62_&E3?6bEa&xfW<+~<~0zgI3fLf?QA<;T?^7}4U*}V6N89Jc7p{{p`u~b zcqTCMzJ4U9!eOvp7TQT$$&5laobq+Ij)GBv?9Omw9|d%3ChnNKRQFY2IWxHtfNImN zot=Hf3f#qAK4xLir$9%VE?m_-vC!P3l!>)i4CX>uGu-R^i&LyK_AqQKTXkr^OeUld-msS-Xb zqa6^%KXfAVsRC8&ZSO60nftEi;#Xf%B?FkT`oQ+_&#|oJ<$O^)UN3q<<@7Kuy|Fig zr91JzY!ja`0_Yfh;(KRbe}KQpynHUOAO!U+dBI`@GJetMoP~9PiF$R>rTHc=ecx}Z z>eqK$kEQ%YscUH(`=G8eRgqDU(u=2XS`6B`_i&(BK1`+eqGM;!z6E(T+*+#^&+(Kr zdyd*UlH^Vf(cSwCcReLcd{ua#hshy9?r9@5Y6MyS{hBIEmM0}bXTX_3yOI9bUvB-{ zmbWWB8FA{)YerR>V{O}v0}Y=?n0VsKHnU9?%}8%_DD2s?c-I-QOJ=}KLJLlOz=#)M z-bK2{lrQ7sD8T50n5o-BzuOti*n$G+?gfRnqWo@(0<>J%XsoTBhmSu$c`Hx*f=S&; z<7HMAC6dl6pMsu~eR0s)&Il|-Fsl54;0$Vo*t-(SG+Rg*OY(F@S|J7lS8r{yJtbt<=k*)-){)U?S_$h;mDcc< z2%tn7^X-fAl)VoeS>_V&KeNQ6D@6dt=5&s;z3pr^%iVZ_X)PxsZ~Fd>^5FA@LvRNufLwwn6Z)HKy9eB$xK6CdMN?r?FtSsjecm>1HaS zrUrLZCx%LR`B~iB|Gt8%fStK!v{?kzoS{Ea2}}|gDEV8==0wHw0C>DBZ=^-4z@4z= zg33Y^^yP~c4dW$itfNwPyW6hl z(R3gL0RRI*dRM*)Yhh}%uoU9m;fJ>b3$>3)YKeZDWM8yg(|&GhR!H7M$a8K5C=e!U z$E?X*#tm%!u(!N-uUG~z#-Q?CdJ`7Rv{KgwoB@H?+u+yw;mXz~Zdx`fBUh#5PZ(@@ z;BSEkle)1K$1Z8J_I(eWH_hJ2A7IQYM&d-4=VD8&aUeB=Z)d|ct_*S4&Qhc}eEB~K zMDvzNLdot8zUw}3&2Jc7SL5rckd)F<4Pf0sff#%E+7!}?EU1Mw9)qwOQr5jJ$C$=v z$dD<0`H{pdwy5S;C1|H|o=5T_}uFQ1{ zyG7eL`O4+m-`DJU{MIEemOtr{AKT@7+v=-9rk#bq`9#P1QP*^fdpJt;#x9-+RFDGn zct;UW^Dmx?9q&Zr>AHQm4>%$At2!C=?!uY%vNEwvd zZ5c$e>2ZL6Y8AnbB3eQT_ra2ZtN6sV=VGMvdmsq~f;p}~J zzivm5h6NK_V0cx6f>ShLM-UhRau&ft6j9@xfbQNjrH>*uJbuaAy-X*GRU3^P@t~oL z*_9R#V@;*??XMQFDoQ)QdRyv+U_ZGswr^5hgq}pfg;(!uko|g)9K@A)Gp+5E-({hr zu>H@GRHH|!p5o0YVrTa` zei!ey%K>=BU%*JD0ON>aa1^}suMdM1FH^XdNo#`6Pu=N@G-Q@iSt(PKZz9*%u zy17rl4`}7`aw8t!cH%4*=Ni^g4LzZPuU9$!A%K9YzZ8GndXrO#{jz4mmP*|ox7=3` zeHJl3x*J)Q)`i*tfjoN~hW{=XSU9`FT+hL0N^<90e+WFQcx2*b#L1QUljksbaOKzq zFJ-yAQCVj5tmi?^4$_*`d1P47pD5=<+;0=!dKt+2sepo_zPkf%g;LK#(@x3q-FUh5 zhTOKLT-kSWtDxwZo_Qgq)t?+>eP+LtWQ&OTTqQLpjmH`3Rd zU;a2>x++pumH&Cb{?2u!RcxohXq5W>C)SlD*1l7@`8>6+CyKqwDx8 zNCktGKPj!{Me}gd1XYOIAOy$5Z5MdWwm<7qf+-72unCFvBY`XMJavrvBNTkXBTU`p zrE+2dgq;1xG%fY+vxr8+q0q00Mws2u$p@97WVAW9D+d%~S6HUPc8PYY{ z_EYp{DU=Fj2U7j_CRg(X_XbG{K%7guG9FP%IP?&HM46?Pw$@6zuKq0ojw5)CtAB(` z-FYe=UGqa@IE?4jlg$C|(LaZPgHN*|JAnP>$RoggJ}PpOO>!JzVl@Fp9PlSL9bL_7 zkrX9fYGp*W^e{-XUzF0Ex6t>_H@XD~7x+wQez|+9l#{)n4yx{#IVDQ9wQa)#3nSpn zY1?4WfR!#Trjsj*wr%yPT;K|6ft>-s1mGH*qCgWwwAY!xa(M~-E@$8L?R3mz1$iaf zQ$$~T@vz7o(jl;3%GO!QE}RXnxLy%d7swE-5_|VXzYia7PwBibf@n$>No=r^ph6s3 z)m;#AjCg{?VzMlx)gpJJ&+g&Pbh;?$w=i<*Br{7nc-Ct=g${~Av@IjCWwS5xL9wF^ z*#=%LIp2&pyG`AG5-;LMK%%jIl42aU7^xAKZuKW&nu5O-QVf)VUvi(F6z-bnq@WWv` zOj}(Jpx>PxFjo!mx{-)Dq9^K+Kp0Q1(CHCGaU0QZ5yVoAQ@%3W&z+UvrNUBN%2Kld zJ2(w`YIP$=gJtBL@Q&mU!3E&V-M@cGXQN{u}oH#<&WntSklAT3I zDLVHWW8feb{soDBxY)}|e3Y-;5l2IIL>5At5~V}6$L40JnuSM_TKPp|)R&N01`rh$ ztp0-I@i<(h0r~oh;4*uLEq>#6Ij}uN3S^x$3xVTbevahU%pHgzrbWRi@8JlWxNBc= zV-BzJ=FjiC5$}`uR~MFTo+6GnfJtK-WKYJsAQWUsHF(mYFB)ydqelG|i&=PlA8$yt zDw8K>K{hNs+)y%Nc$hq6>d+>jaGD%JoM~4F3eHnfIA5q!GOW5H8doEU+FDmUE#?=I zC3lT0=?)XRK9p660BpMf-RFb?PI%|e70vhaeNoce0^qp9ohAsiM47#yix%c~wfh zuYwTZG_5j^&`3HDvuh^6?jC0(0D3KW21$3fK4f$n$8&O3A9rf{QJUpQpa?6b!P;?7 z@jEK0-g5Cfl`Gdia1$c0<($;s;$Q#d4oN8n?$wQ*<1OLkG|Y(6r|&)dOz}#MX8G?} zP#FWomh&e`0UT#K?ra&?DDIpSb~ALQ`XROG9_&uU#lSlL1#?c1Ol{ulqxpA{gTW0^ zW(O2AiLl%vZfJYg5*BktPFcDV?YeSKSb_oM`2W%}gaRcIW3lhue0*NbQhmH-Lby%& z?y#Z|B1t08{%ahDF*wi$M-h3-@Kx@gwvi~JeNt=;_UbdRGLEC#xhthN0@xb4F)oxv zqjxgMcv>*`d$aE{V-lLcGj|!ZqRz6BiGts3Lq>ZMjJYJs{fX7)Fp>56)2FvysPrA& ze){Y}bUF6nsdHAL#I=RD=sHcNK(7Peu@h zZ^QN>+W{Vo^awVJeAofaDxE$EU2)Gr%rdSAF_LHu#i_rLC;n=Ajs#3tqA=J4~o_lcA%$9mHs21Sfag5TFINcy`-8V^7* zXbyG$1Jzm*_!HAVxV+PSa#{+ow*7^i_(pycsJGG??V1Wr5d3;hK+>NRTpV2Z+b0u$ z;x}r#qkt25vHg@YK>U2AV=th;UKHW*`4%ea_lF>~jRfiS(GXK5jJoKCJdr&TKD0+7 ze^`wbysxi;OaGbq%qFvWXZwL7k64@qo95*R`jA5sap;nuK~tMmF(j2#6e*A3+ZNYn zlN|FHCwfgXEn`f_oQ&V>yo>%MGdFMqht*&sXPTF6BVRk|#cTm{M2oKTBo>Udbua^H zsxH?SpOzG91Q_|2(~J6Z4TTx%t|{b2hkV1TBVK)2C3s`;M9Oufz!T~69sx47%9YAT z3!j2Ixk(0@Afz7$GPNEVus@|x1$rq+kZE*o8rOlCV5C89AIKP%H9oV<-3eEVOLdxZ z8wH*#y~w`RrXktM-emTK zf%7#(hpUQm+-c(0i_-ALq5CsRL)fc6YBzoyL2oj5+@JV$;3ieV5y*!jg)?n68qZfm z4DU}?&TQ;GJ`TL)L{>@iCEI0Q<}4^Om=aCKdg&bJ!up~W-Bp`z-!EdVP4EF+ew7W_ z|JuC%J!LB3UCoz!0uF7$d-wkYbdd*yA=#SmXKic2W>|*%fmSvl zeOC2Kl4hkEx1@N`=)dnxr@%oj?>o;xJ#0rEikEN<#ER^wKDgtp6%&A8)k$V@E-L9x z0%PQ<^Yb%I-u2S2RlY=W1YzXn#&=s7j3evI{dvR+$EOV8QMngjpqhfH#}!C1Hxzh} za_q}3C5O1y1PFie9m43EWd&LHf*3VEfgj! zq_9qy#3UhnBS84cB$D4M{shZFqcFP7^04hYDZINfk=D>s@tcLnmu`!LrBY`4wSuA| zpHjuw#2~VUnkabe%BDzmcfKB;5E|p(7bGI%mE`Kc31^y1<>M1M5U6^r6$8izL&zR% z0y$&rqbbG7Y3VIrX3LcTD!#r+#WML5?fv<5eBmTxt}9YzgBC4{b`sr}IozrTf4}ld zunc*y8k4pp)%|+?D0rj_-CqRyP}kLtf>Ap0)@+y+nVTRws`gL z(}&$yk|$=Cv7B5bt`-r!KYLDl{SI>zJ1S1{yV=y*x)T;-q)9k~0Q!%{EU2x|NBeI( zst$U(_D(|O{Kf|4C-2#nG7% z?}F5ci&MDa=9bGfT)^gSPkmj0s-b-ZsgJ1~e+>7fu5+QH+nJlD+d-EsjM~|jnyO7{ zJx}L`{v0Pt3^BCS1I?uDvv zXD^x69S=|E{uBcr($%ZQ$Fits7+eGMO+SA*q3SIjbyS65O)wgD;eU~VA{L-{9xql> z@15#(YT51LyE48EY~bI;K8q}A?z)^|QCBng$iK`h*PK; zX_hp_(wj*5@+Apr_vOHA{DI=#*6u17{@wXT0>vX`y(`V^2{{O9mN@L+7Cc*P=8sI7 z6y^jjs$juH8qtZKfrXFPi~S{zcs30?40&w01{6hx`-OJMEdj>Gn=k@{#-ruqd%}MRm)!cS`$~>OO%oGk9MH?|E3QL3abN?0 zGfpy{Cml@{dx&kIFmD)sq@Ba{iK*6J2TmSl@) zvhiq7c=6O&D9?>VlKMzM!?EtlG&I25nRObyP^vYX5ExBaV{*-=wkW~it)xd#VW7NDY&;KUZhbRHdjyyNfET?5* z4lyr;Zmjw|s9#RwiT$Zne_`s$=AKd8^G(xzBJW*)j)bxaV4!7kP-~A?rTKDE+$o$R z=>Slj89~PcF(^ym6b_n69h&=qnQ!>+Cww8q!heUFxXHJrO+uS8S~wfl3%+E&X3Pwb z61>y|+4UMghGf;?b>E~Q5D zvDN#;oX}A{#=-Zsb0A-Nn)61FDmgl=W2u#J|mszB^+|={df%En!8O_d(Gqe zSHD6RO}qK?K^(GDg5Ywl&_lGtC@&>>?*D@Gx~8$)=@!HRPL*54KE5p zbH*v?(m%SwKGg39u8k<)Py#4f5h*tK)eDavd_>~>RM3{1@cgFzc;ouW> z%DiVivp)+`_U?^E7wCag8XEPd-@I-a7jNM3mOZ7AaWigWv|y2Wvuh2?_RA+nX!jTE z3sZ0UksMpUeTF-;h2x6S9~g^9+pSL^7<2JU@FI>58nxoOr+`}t%&LS;6 zv#G<8nZVyic`VOM0(Uu*+Vm6H818abEs*{3$O#Nb+VzD;IaZ|4e`GM={*~u=i9Pe& zaSSJU_A^jBt8}=Zi-kSA=$Gb+{!c1k`%`y+Y^aK?pS#!o_FS6q?}BTes|YNJnkoa? z-Kjo&m`TC2H3`NZq+5%Om*8;Sh)7;x%=5ku-rc9u$%|5pq27@Ntu}Y=&=mN<%gUWnNGz<@<7OfkzjhJ^Q1F+p9_;YS{uyTp?~!@VTbleA)h> zsV-h{^$26Mj=^C@L6HBiqI(n=gxVe@(}}p{{&ja@2>aXT*Qoq4Rgb-p zjx#LgovDMoiE}ctlqG1jX>#k~aCH9^8Qr%oL$sU5!<_t{K5ON|Ie2u`czjPDt;fvl zCtBuV>wU@+?}eG)X~*obF$%E6fOO_;b?4V2dFj`yn@*Hz@&@@sJ&Jq17bxhCn+tx7 zwVHm)1tjBQ*Hc*Z8z@kep8+)N_TG16v#aR_v~km@wUhR=81rkqQw=nepFX{g(4ugD zZuagX#iJiOy&XT8B zw_oc7OJrmEGRRxirJf5ww~R@G6+ZT~?qR7H$?~KfWv7yLe#a=c#Yr+(XSL3F zg9O>CLX#;K{Cag46WQ32`;S&mf_kqz;Y!@G^sz8N`)H|Q^}k(84+a#qVDEVh=G>bREK z5E_qY;@1rAD*q{oGy&coQpZWHk=Vsn)!4$MDlyW+%)h^ksXE5=4vQ0HLgea~2HKqaq zgWYb?X=t%Cr2To%4$gTefw7G))W?T~;jKm8ntSTr_I$~?94wTjc8yB4f`mVoy@0u< zEWCrf?*JN7y3wd*9nf)de<~3#n)c+X>di##+x=L5h7|?~@TbT5<7k-WcVC^;MH=Yk zmANXKbai}PiEJ;4rE>*Qkam~zxV2gK8T8r1co$n2#a9&1Z<+45W4a(>lO+0|vMzK`v_-OKMP)$CzHM4Q~utgdNSdaUDANTL6o^HI0arGIUzJt! z#@LWOv$O#xoHO6g#O(N$Vji-jHQF(jugKM4{TL}b(QKp5bgtbCp;0QUNr-6aKMb{;>j_e_X1=HQ=%mg}E3#!r1*b|hFpmmUZ&vY?^F7H>996hGk ziT%}DDv2c+`$4vJM0e!Vp`17UssblUGznQ>_G9qwrl}I*b*{0oe@`i_HjS;Q=%(@9 zjjrz@Zu~P~!$->Be%9%Z*UlQRz~?J1inf+yYZAjy4*bg{dwW2f7+-~YV_n1IYU=bJO<`_6gK6Y_H3 zUHQzAYGTJEsOG=M)s+4z8ar=+5tpK}G(ZB=j^`I$Brk z-n_V=1Ly1SMp$^R5&uY7nZjYf$*5mQ1^|R_-4GrGLS#zp3)TKaAie5Sr z4TM9Z_Eg`~)ka6q`t>RG-ez{=7;a&J)18i6zaIbU_q7`qCyR2{lrIT~V$m~q1|7H} z5ntc%4g&bv1fs74LKTe>x~-?ZlaAGSP3~~ezhOgN67-+h))NT&&)h#yb(X}gxwdVC zS0u_jn=+8CF1_&Hn<_QMyjD zmfB0r8|sNjvnDf0hdN@Nqf&RaQ%%Af{22P13S@T${%wgFYi&21{cToz8SP)-BeRI@TG>f?qDDqD=RyM2_;HO&dzBm8c2b)6ot7= zS#(~JFVfx_fa1oYSh!n-@P=(WQpED6qEJsTcu*ouO_Qb1t@oBLrTe1u;eDW8b5VQH z7maS)#*hOFr7B}S|C#;fMGJpRM_Uyc_1?N3?)w&=Kzj^QZ@x(14pnB>!g}xNf|kJy zTdP7|@105a(SFweP5afF#z;6EW3X76YcyFL=enjhENE-@FIn2V`gfaez4!5_p6B6( z-(Tdf++lFP_;w9W%38BGt;-h(4FQ5MB8Y+?W=ulK)O>2e*#UE}q93IoF)Bb~(0F7* zHZ%#Hho&Gm@}Oy`9?eExG#@QSKGcqaD2yT~hE^d4twWcftI==K@6mJUd2|3BMz5nI z=xy{@^f@|-{)Ya6MK}egV?8$D5_}GxfUVeu?RYYtf?aqzuE8^K1D=a7z{~J*yb3dT zExrU_im$}K!B^qm;~Vfz_%?hyz8gP;AHz@LXYhV}0Kbmk$DiUa@ChO!NkmFyL{3yB zljIOJ(Gmk0OB|$vILRd9BGX9?nL%cfImAmENfTK}7LmoIl`J8@A{UcQWHY&$+(LGc zTgmO@Uh)UBo7_+KlBdYiz$qYTsp z%1qg)a_T(le9A?6sA|f~OV|-4K~nh9%rqoJ=}3+gNQqP^17)Htl#Ozb8fj22{LOC$ zX`^ExQ;PPUNQ4f>8hjmeO~_9#Ul8>5(GhQ~FGxq5x}h{WAe^m=Y&yh#X~-K4v_st( z9r1BexUfAK?(us&eG$6G15(Fz&nQ_(Y!hSmF_C@JMbzbhC zPn7f2pNqyZ;y9vNP^KamBW2RqiBvMFJP}o>I>8!jM^(tmKbnqeS{1o*1J)$s){kbO znWz@kv9$h^daa7Q*3ou zL;-XmTFOr0Uo~h|=;OgYQ=d>}#HhUJ3=P|=FpTVFM4hw7qzi?ZEGCD?q8qTt9)?8^ z>P_ULms9c~dTv9@&~ns=R-l#WqT!qzR(BXDM?C#+PyS-Gn$a+M{N&fb#k|BdQgu*U#8M+)@fi|LFqbt#G&{ZrFXVb7%Q8bdBBm4hm{eNEBr)2f3JuzXHlrKRjc5zH3EhmgqHX9Fv>h7kKs!-Cx)t4qZb!S& z9q3MU7rGnWgYE^tw;SDu_Mkt4_j>?62p;hvv={veJq+c$(O=M`oNr`nJ;l}4fV~b! z0v&;nFUV^O>)SE{(duBJ8@5cR!^0JF9*UokMNr^aSaM2fi@7h+f_uj>KklvrVI|iY(42)JQ3>NQA9K?%@J9jI4=P2bM!`?0qvgNOWEx z+8l@mz@xYHL|MT+8zP7I*WsWZ4~Z_fqjp5hI@j3H|!oS zt@A~fR(67ETO4KGzkd)Z28o$-jDxWwQzBt*Wb};AIOPOi#_V9WiN(xVW<2Zdq4HMt z4+6oqS37MMv(064x$JI}t*YE(a=NSSrt)fstK8f;i240~Lg76i_DKsmP zZ$Md5Tp8=9-a+rSD%5dG4(vM3$9{Aay@!sW_gRe|wN|S_6R*YzJ)D&reGPp8*=1M`vvIa%PO!I5qMZ z#}htC_yTdmjg3{HW5evAH& zzC+&wFE!{#cx8gVL}R{4%tN<_Bb;WjnlK+WqUlI&0N&=YUrFcOD+oOu@+Veg#xY1C zWng*0vg>E`OJe-Rwd=?5L-Uwmik(+{#zh( zz^OP5%i_$LIqu#9rtN&j#Pl6iD8XRe2u5uS7_-~aCM?Ga0BJKAGuF(p=4}@+dJk6N z40wl-9_OIlm^EFyQ6|oZdo2RDPozs+Tt?XZKiT-xyxj8RJuVW-PNW_o5SOBR@=(WR(paXVk4`FxLC}T zgFcmU`h>>-3g#hWj>p3+Er+oQ=5s49#S@{$!0-9vGHk{cv=QB^-Jy;Kj=i`XJ6aVvaZ=0c65pmDS70ZegwJKUJX$4C(|Bgbw?8Xs z=4X2z%+@hvDPD(JeheJ@fK$=q=o4ItJ-7<^Q;DZBV~kUKrgECcIE_;qxjO{v=)Zuw z1yks8Ryf_2wrW##xf?iOwYyACONH5Fb(guF?h0#}z1jt$-|dTangXyK3qpE=4n^t1 zAaXNtEw01$cosN0?w=Q|bCWOF-RWy=gQGZ29TA!iF_U@xX5%@D3cv|WKlb8A+=QEl ztH*#iDdQ0vC_5|l0FA^gcpiAWIF@m%O3qy0hUeo2cp+Yd7volT>@!z`b!9vOr`sn^ zh3gVvimy9Rb{51QRb(dw8{0rHZ^1s`>`vSUx(I;=Zs#=e&cQGPF9F@`04@jcg?K6a z4YGO(pTnT5yK#gIFLoo%f@OgadjyE}-9U0X8&|+b)}^w`zo7_XsFZb))0rx<0y9&Y zDa>-v*0~ZfGY!gl-|4I@cUIXwl_smx>@nHw&T5mZvb@4%t}b&`Sv*x04o{-*#49+J zy-3Vdg37vhA-))d*gYh~eAzlE^9+@Z6zt3K6?h|3XuB!4%ho#b8QPw;Qequy#egj|4d4=yll&=BL@GZU; zCd-T}69C+-LB0N%88hob>5dTVD*<-AxY1a2WZ8f{_wXN?d9OI2LSe&|Z8ezKfY`obvwH zyMFvQxN+nSuafuRdqKeC^@EKv-Q28q;XmNr_&&S`{}JDhAHWZ?N-|1aFnRHk&v`Mv z7YIK_bnlA>+N)v4uzDNW>h!~S#o>Bv07ngaI-(6<9$$UbEC*{8_ToP!u4Z{kxgo&7 z3?z7N#Sh~@<45pc@T2U+;}?Kutlz584xcDX*Xa%u4F;FC`8SOIoHYIwe~>6TES)1{@k9I({um#}pRiMo z7qm0fPOQLn^`Df)&%jEzoDR0W0!f^ARG}IcPJWHQ!6zY{l#K`|PvLLDRj~o(58$YN zg4fTi>w^DtX*VHkNU3NGhl8{)G^-nOzpS}zru`6)`y1I9M9eH;E?`5+j9&&WG1Dey zmWi49V#deCl&(rR^67B6Om=$}IH(F2cmQWPI0Uo9?s8iz9L_37LQF|gKuKOD;N=#B zgIdU0cajRzTr}j2_%a2QwGNe?VPOQW>2kCO7Cem&KY!Uclgug%1o5Ph4dY1>DJCUkOkD781*9)zXePph-XQ0YanSR4 zGJ%*#DVYc(n2Cj0i4E-`cBEd&<^_5py>xXX+%*rf@4Yl@6Pq|9_|NQ zcK1Z*a@88c^9S2Dh9wHZ1ei`{3DW^;uU=VJ>Tr~sZ5FG;<}Bkb+XTIN75~U$u~yg} z0j7&t$^^N&0{La7Bj&`-m3uS-379MQz`kmFcIhVecnxq@DN)J;Ept));P-PnVws^LX*;AdumTugwN>kgo2gcaZ?OkSrxZ z(nUffOuC1YF;sIH8FA$azG0BMfhayPQW^FzepUa!TM6*fjF4!e3UE`L2CMAuJ4uZ6 zkY2KkEGK6 zST>oldu}uaxt|Vt5u569)1AKFK)44I85%!iUcG&xc1W#;Aaa@;h;{NC1MI4aOK#P$ z$yYW}3;PF<-Hg`L%W7c<#@p>{hecLgUj|=KEDZneAe%-F_IV<{WwSy}ka&#*`=BDL zKkT||9m6ocV^+dKYlWD(0p8YvqZ5nSRe;0dbXHeZJ51GPtJP$)ncXI*$Igabm7dBn zm)Q(C%S5MkBj?m^5;GTrQ@e=wG+V*btQvA)eA!MYTRl`ZV%0_NAa}Cq1addIhfOEM z-s9F<%o@ldEWLocH%<*a#@zs&7KfW%1UgM_kJAjRLu;kUZ7Tzct6gPfcJRDzn{`g< z#4{%3$RANA0~s}D{Q>d-c((`1L-Qd*jRe|yVswhtyM0OaELrZo+ZygkI&-( zd4asxRPUWL%?(?d++&uD5EHB5V-JW(*XhDpiZNxS&WZ|))oyXx%&eanyti;4$}J9? zz06sGn9G8?#LMKB#(Hm!2iDb>^IE>297q^yJ2{A~2_<~J!{oI=ino))tgb8S zy%5p)V3)ePlZ)@(gaO_pN61^`ZSoFzmmDSUkz?e2@>h6$2(OP}er7lc(&%gR!ikaS zqI&Oi+6UrSOZU=27?a)CaR(tE4~7ROe7bjDk|7FVYp^>8PytSS)CEGUpik$tfNL^0 z0!!OahbIu>H^`xhD;Veqb-^||a}{%?ajKY;5yajWoxYvK-@^Vf`GolmH)CWWpKWLN z!1?)qK_FW^V#?de7s%RN@2v(UJw(1H-;k5g#ox#&@-6v0lzRg!XyE^n>Y%S93ZLs? zO9Il+{AdaVb1m~*=ymwlxcCu&AU_WDyq)|oNX9?N&xyW=MTA4YpZr203R7gb&l##Q z%;&_F$2+r8;+8{{h)SZ8k&H?~8cIS*VOsnbw1A@?I!Jf;Vl?p3by`)f2PN9XY=+e$ zl}5>^bXF1C`dB6Uy}NWGH%UrCDS1}%=Lq;7cR;ZUS%*gWrwW&-ReZ1cQ~?MVKS9o_ z?xeJoj?yD*VlkN4)5jhL35R`b_G^KhJPpleppfsrkTQ;B0_UW5QAJcSRYHxS#!}}{ zJ%nVPY9qeimZcveM$1ptm?y zohEz=RmR*hNUR%(-9C)iY1DL(xwtrj-JZFVs-b33GpSmtj;g0-Q4Q2=Y7R^D@QR?X z@wp$iZDN>|5Us>lO?VJDJg2^cto&~jt0ncM0nVK@l4dfO%p(in?Ac-xC9BAKay_|;Y~{|K^^@D+)Y)G0 zFnI*r^HXFWoHsiLC(Zs2=2A>4L0?VORG2DFg{W>SLM@~EsI}C3Y6G>Ax{|t{+Ckk; z?WSI)-lV=2Ws1g&oFcc#BdQk76xE5EMN!ekq8mkfMX!q96@4uFO7ykpr06Hn&q*jL zDJdmMkz`47CABAQNZOUOFX@A%Z<2mY`bW|)$>L;ba$2%7IU_kg*_k{&nND7pd~5Ox z$;XnvO8zeShvc79l2TGqBq`}BiWE)Cl$1Fs%Tu=rkO=ZP1H7m1gM zBjT92SNx9ngd|y#CdrcINlcPT$!tkL(j!?d`K{zO$sWl=l1C-aOAbh0m%JzWLh?6h zsx()cFD;Pjq+_Myq~oO~=|rhnI!QWNdcJgubgI-X^+>Cv)1)=h8PZy5y>ymzwsg7l zO6ex)ozjP-&q$w@J}-Syx=;F=^bP3|=~3x1>8H}qrC&-53DPSvCqrA|p*kQzy4 zQa7jGn0jC8L#dCZKA!qy>QkxvQeR6wo_aDZDNUU=G3~rGPuiliXxhbTm!)kkez zWiQBHlD#Z@MYdmdKz2}eSoWIi4cU=&oSvPYldeh6OD{+-Ngta&F5Q}LPj{r(rnjbF znBJWpNsp!Xrmsj}nZ7>#=JZ|ZPo}?{eo9Ws)8y%Lg*;21Be%)R`(@j7b=6wkTR_Nl`^XAQ7%(1SN17aDlby5Qm$66QLa_4Q(mIHOZm9+3FTADXOzz= z_bU%74=ax--&TI8{8;&k@=N6jl}sg9sa3fuqpCFuCsZ%0_N(4feW3bMbwc%x>Tjx38TlFJ3~R>ZjH- zvr@B4vs%MwZqz)Wc~tY9<~_}4xm0d`t~J+{+m_p&OXqgv26C6?26HdX-JW}A?n}A* za$m{apL;O(aPDilU+1OeW#yIUIr5x&=jNT4HzjXs-h#Z|yw!P^*|!P5nA7Mv*f zSvybb(}uMhwKr)W)*jU!)4s3$K>LyQxb{=+XWGxTUuwV7ey#mRds2H!`>pmn?f2Rr zv_I+!bq-yHZjx@Y?tI-eU5#$0u0c0Pw?MZ@*Q)dDmgv^$F46r)ceU;s_}%#(x)*f& zbRX%C>ps!<5y=;!F$^#Ogaexv?={e$|w z`X}_y>YvxYs6V7XrvFHPQvZ`dWRMv04K72iVZNcmaFO9M!wrUe4G$Y0F+6H`&hUca zpy9CLUBh1u9~!Eeit|(krctc@- z;hzf+6@FIuy-{k+FlvqCjV9wnquFRRPBvB-T zX5%*FF5`p7$BZuD|xWw>5`XAj+dMqBO5bz%#<;8V_L>68q>x{_K-s6E^0CVKKOTx G|9=1>fB_u< diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/FileInfo.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/FileInfo.js deleted file mode 100644 index 982fd3d6..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/FileInfo.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -var fs_1 = require('fs'); -var path_1 = require('path'); -var FileInfo = (function () { - function FileInfo(path, file) { - this.file = file; - this.isFile = fs_1.statSync(path_1.join(path, file)).isFile(); - } - return FileInfo; -}()); -exports.FileInfo = FileInfo; -//# sourceMappingURL=FileInfo.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathCompletionItem.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathCompletionItem.js deleted file mode 100644 index b116c297..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathCompletionItem.js +++ /dev/null @@ -1,43 +0,0 @@ -"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 vscode_1 = require('vscode'); -var vscode_2 = require('vscode'); -var withExtension = vscode_2.workspace.getConfiguration('path-intellisense')['extensionOnImport']; -var PathCompletionItem = (function (_super) { - __extends(PathCompletionItem, _super); - function PathCompletionItem(fileInfo, isImport, documentExtension) { - _super.call(this, fileInfo.file); - this.kind = vscode_1.CompletionItemKind.File; - this.addGroupByFolderFile(fileInfo); - this.removeExtension(fileInfo, isImport, documentExtension); - this.addSlashForFolder(fileInfo); - } - PathCompletionItem.prototype.addGroupByFolderFile = function (fileInfo) { - this.sortText = (fileInfo.isFile ? 'b' : 'a') + "_" + fileInfo.file; - }; - PathCompletionItem.prototype.addSlashForFolder = function (fileInfo) { - if (!fileInfo.isFile) { - this.label = fileInfo.file + "/"; - this.insertText = fileInfo.file; - } - }; - PathCompletionItem.prototype.removeExtension = function (fileInfo, isImport, documentExtension) { - if (!fileInfo.isFile || withExtension || !isImport) { - return; - } - var fragments = fileInfo.file.split('.'); - var extension = fragments[fragments.length - 1]; - if (extension !== documentExtension) { - return; - } - var index = fileInfo.file.lastIndexOf('.'); - this.insertText = index != -1 ? fileInfo.file.substring(0, index) : fileInfo.file; - }; - return PathCompletionItem; -}(vscode_1.CompletionItem)); -exports.PathCompletionItem = PathCompletionItem; -//# sourceMappingURL=PathCompletionItem.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathIntellisense.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathIntellisense.js deleted file mode 100644 index 684d8808..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/PathIntellisense.js +++ /dev/null @@ -1,39 +0,0 @@ -"use strict"; -var text_parser_1 = require('./text-parser'); -var fs_functions_1 = require('./fs-functions'); -var PathCompletionItem_1 = require('./PathCompletionItem'); -var UpCompletionItem_1 = require('./UpCompletionItem'); -var PathIntellisense = (function () { - function PathIntellisense(getChildrenOfPath) { - this.getChildrenOfPath = getChildrenOfPath; - } - PathIntellisense.prototype.provideCompletionItems = function (document, position) { - var line = document.getText(document.lineAt(position).range); - var isImport = text_parser_1.isImportOrRequire(line); - var documentExtension = fs_functions_1.extractExtension(document); - var textWithinString = text_parser_1.getTextWithinString(line, position.character); - var path = fs_functions_1.getPath(document.fileName, textWithinString); - if (this.shouldProvide(textWithinString, isImport)) { - return this.getChildrenOfPath(path).then(function (children) { - return [ - new UpCompletionItem_1.UpCompletionItem() - ].concat(children.map(function (child) { return new PathCompletionItem_1.PathCompletionItem(child, isImport, documentExtension); })); - }); - } - else { - return Promise.resolve([]); - } - }; - PathIntellisense.prototype.shouldProvide = function (textWithinString, isImport) { - if (!textWithinString || textWithinString.length === 0) { - return false; - } - if (isImport && textWithinString[0] !== '.') { - return false; - } - return true; - }; - return PathIntellisense; -}()); -exports.PathIntellisense = PathIntellisense; -//# sourceMappingURL=PathIntellisense.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/UpCompletionItem.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/UpCompletionItem.js deleted file mode 100644 index e0e91374..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/UpCompletionItem.js +++ /dev/null @@ -1,17 +0,0 @@ -"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 vscode_1 = require('vscode'); -var UpCompletionItem = (function (_super) { - __extends(UpCompletionItem, _super); - function UpCompletionItem() { - _super.call(this, '..'); - this.kind = vscode_1.CompletionItemKind.File; - } - return UpCompletionItem; -}(vscode_1.CompletionItem)); -exports.UpCompletionItem = UpCompletionItem; -//# sourceMappingURL=UpCompletionItem.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/extension.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/extension.js deleted file mode 100644 index df39c612..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/extension.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; -var vscode_1 = require('vscode'); -var PathIntellisense_1 = require('./PathIntellisense'); -var fs_functions_1 = require('./fs-functions'); -function activate(context) { - var provider = new PathIntellisense_1.PathIntellisense(fs_functions_1.getChildrenOfPath); - var triggers = ['/', '"', '\'']; - context.subscriptions.push(vscode_1.languages.registerCompletionItemProvider.apply(vscode_1.languages, ['*', provider].concat(triggers))); -} -exports.activate = activate; -function deactivate() { -} -exports.deactivate = deactivate; -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/fs-functions.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/fs-functions.js deleted file mode 100644 index 801b4042..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/fs-functions.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var fs_1 = require('fs'); -var path_1 = require('path'); -var FileInfo_1 = require('./FileInfo'); -function getChildrenOfPath(path) { - return readdirPromise(path) - .then(function (files) { return files.filter(notHidden).map(function (f) { return new FileInfo_1.FileInfo(path, f); }); }) - .catch(function () { return []; }); -} -exports.getChildrenOfPath = getChildrenOfPath; -function getPath(fileName, text) { - console.log(fileName); - console.log(text); - console.log(path_1.normalize(text)); - console.log(fileName.substring(0, fileName.lastIndexOf(path_1.sep))); - console.log(text.substring(0, text.lastIndexOf(path_1.sep))); - console.log(path_1.normalize(text).substring(0, path_1.normalize(text).lastIndexOf(path_1.sep))); - console.log('===='); - return path_1.resolve(fileName.substring(0, fileName.lastIndexOf(path_1.sep)), path_1.normalize(text).substring(0, path_1.normalize(text).lastIndexOf(path_1.sep))); - ; -} -exports.getPath = getPath; -function extractExtension(document) { - if (document.isUntitled) { - return undefined; - } - var fragments = document.fileName.split('.'); - var extension = fragments[fragments.length - 1]; - if (!extension || extension.length > 3) { - return undefined; - } - return extension; -} -exports.extractExtension = extractExtension; -function readdirPromise(path) { - return new Promise(function (resolve, reject) { - fs_1.readdir(path, function (error, files) { - if (error) { - reject(error); - } - else { - resolve(files); - } - }); - }); -} -function notHidden(filename) { - return filename[0] !== '.'; -} -//# sourceMappingURL=fs-functions.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/text-parser.js b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/text-parser.js deleted file mode 100644 index a604d313..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/out/src/text-parser.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -function isInString(text, character) { - var inSingleQuoationString = (text.substring(0, character).match(/\'/g) || []).length % 2 === 1; - var inDoubleQuoationString = (text.substring(0, character).match(/\"/g) || []).length % 2 === 1; - return inSingleQuoationString || inDoubleQuoationString; -} -exports.isInString = isInString; -function isImportOrRequire(text) { - var isImport = text.substring(0, 6) === 'import'; - var isRequire = text.indexOf('require(') != -1; - return isImport || isRequire; -} -exports.isImportOrRequire = isImportOrRequire; -function getTextWithinString(text, position) { - var textToPosition = text.substring(0, position); - var quoatationPosition = Math.max(textToPosition.lastIndexOf('\"'), textToPosition.lastIndexOf('\'')); - return quoatationPosition != -1 ? textToPosition.substring(quoatationPosition + 1, textToPosition.length) : undefined; -} -exports.getTextWithinString = getTextWithinString; -//# sourceMappingURL=text-parser.js.map \ No newline at end of file diff --git a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/package.json b/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/package.json deleted file mode 100644 index 01f2f40e..00000000 --- a/.vscode/extensions/christian-kohler.path-intellisense-1.0.2/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "path-intellisense", - "displayName": "Path Intellisense", - "description": "Visual Studio Code plugin that autocompletes filenames", - "version": "1.0.2", - "publisher": "christian-kohler", - "engines": { - "vscode": "^1.0.0" - }, - "homepage": "https://github.com/ChristianKohler/PathIntellisense", - "repository": { - "type": "git", - "url": "https://github.com/ChristianKohler/PathIntellisense.git" - }, - "categories": [ - "Other" - ], - "activationEvents": [ - "*" - ], - "contributes": { - "configuration": { - "type": "object", - "title": "path-intellisense", - "properties": { - "path-intellisense.extensionOnImport": { - "type": "boolean", - "default": false, - "description": "Adds the file extension to a import statements" - } - } - } - }, - "main": "./out/src/extension", - "icon": "icon/path-intellisense.png", - "scripts": { - "vscode:prepublish": "node ./node_modules/vscode/bin/compile", - "compile": "node ./node_modules/vscode/bin/compile -watch -p ./", - "postinstall": "node ./node_modules/vscode/bin/install" - }, - "devDependencies": { - "typescript": "^1.8.5", - "vscode": "^0.11.0" - }, - "__metadata": { - "id": "a41c1549-4053-44d4-bf30-60fc809b4a86", - "publisherId": "a892fb38-060b-475f-9e73-2e06a8a17a68", - "publisherDisplayName": "Christian Kohler" - } -} \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/.vsixmanifest b/.vscode/extensions/codezombiech.gitignore-0.2.0/.vsixmanifest deleted file mode 100644 index ca966854..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/.vsixmanifest +++ /dev/null @@ -1,32 +0,0 @@ - - - - - gitignore - Language support for .gitignore files. Lets you pull .gitignore files from the https://github.com/github/gitignore repository. - vscode - Languages,Other - Public - - - - - - - - - - - - extension/LICENSE.txt - extension/icon.png - - - - - - - - - - diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/CHANGELOG.md b/.vscode/extensions/codezombiech.gitignore-0.2.0/CHANGELOG.md deleted file mode 100644 index 2c014a0c..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/CHANGELOG.md +++ /dev/null @@ -1,31 +0,0 @@ -# Changelog - -## v0.1.0 - -Basic implementation that allows pulling a single `.gitignore` file - - -## v0.1.2 - -- Fixed unhandled error in the case no workspace is open - - -## v0.1.3 - -- Added icon - - -## v0.1.4 - -- Fixed url to github repository -- Added url to github issues -- Exposed a setting named "gitignore.cacheExpirationInterval" that controls how long the `.gitignore` files retrieved from the github repository are stored in cache. Defaults to 3600 seconds. -- Fixed cancellation of the `Add gitignore` command not beeing handled correctly - -## v0.1.5 - -- Properly declared the exposed settings in the package.json. This way the user gets support from Visual Studio Code when authoring the settings files. - -## v0.2.0 - -- Added language support for `.gitignore` files diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/LICENSE.txt b/.vscode/extensions/codezombiech.gitignore-0.2.0/LICENSE.txt deleted file mode 100644 index 5a5523be..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Marc-André Bühler - -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/.vscode/extensions/codezombiech.gitignore-0.2.0/README.md b/.vscode/extensions/codezombiech.gitignore-0.2.0/README.md deleted file mode 100644 index 4b313b43..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# gitignore extension for Visual Studio Code - -A extension for Visual Studio Code that assists you in working with `.gitignore` files. - - -## Features - -- Language support for `.gitignore` files -- Add local `.gitignore` by pulling file from the the [github/gitignore](https://github.com/github/gitignore) repository. - - -## Usage - -Start command palette (with Ctrl+Shift+P or F1) and start typing `Add gitignore` - - -## Settings - -```JavaScript -{ - // Number of seconds the list of `.gitignore` files retrieved from github will be cached - "gitignore.cacheExpirationInterval": 3600 -} -``` - - -## Roadmap - -### v0.1 -Basic implementation that allows to pull a single `.gitignore` file - -### v0.2 -Add language support for `.gitignore` files - -### v0.3 -Support adding multiple .gitignore files and merge it to a `.gitignore` file - - -## Changelog - -See CHANGELOG.md - - -## License - -See LICENSE file - - -## Credits - -Icon based on the Git logo by Jason Long diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/gitignore.configuration.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/gitignore.configuration.json deleted file mode 100644 index 6a29b9dd..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/gitignore.configuration.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "comments": { - // symbol used for single line comment. Remove this entry if your language does not support line comments - "lineComment": "#" - } -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/icon.png b/.vscode/extensions/codezombiech.gitignore-0.2.0/icon.png deleted file mode 100644 index 386be5b3030db509f506f11abf97af66ab29c4ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3546 zcmV<04JGo4P)-BcCFKQFY6*7jFu5nAj5{J_4p&|k5?_W4K78*fAMmMr%rFF7-r zmzU%wC-;2sx#ygFa&Lu#P}R0D9ha(YT?$+W?53Qq0gnS$n~uA_Q+ zg0D(~iwGS+8L-+u*s9{ky1q9us0TuzHG(E0s;so7f1N>X#v$`fu zV020A$8_9@z%v>j`*hW|>{0_{fa)#LbleHROpTAueVo9^V{2~$f{DNr8d=J9oWRJN z@I}z4Gy%c!z#lZSmfJXikwf7x03NQ|)_F}pFbSBUSrgcKGYl(v5q^lD|4q|zf71jo zj{_%aWH(oFf=Z5rA2yzUq3O8yGy%aMf#Wo?otrp;k#*s>FrI&R)wV8b!6wk@9polX zP|3RR+lcLd7q~sB#VPli34BH4Yh*s3z{t4p+ZoTF0$f_g339FheB=31hIB7B9rw;A z_r4wYE3gDFBY0QfJmBP%Uh5pwaUUoF&|b@rlg!c7F!b-s|DAz5Qv$+SrsF=8HN()z zpzs$EKa=O~Msb3meWCYE$Nf6+qoTwKDp?VJh@T&qLgNH2@H7LM)a`MCN`{2rPTqby zbb;x(_eSJxb4qoTnK*&bY2ioA+i!=?jZyZ#ZjTcfoff|I`DvzcJrzSUO-qrlOym<7 z9TtAvy!}>aag;(LnEBlvConoF{G{^so6$!x%GNaS*U@|eqk}DfjHbu#7o(rmm1Nqn zd;+5b!e5}N<=5$$82#)xjeK?_PEgS${FMCsR%r;(7X=7a+nNm=sgYN$aRNi5@OwHW ze1K=7v@8+AIN)WCygpsEt)p~l0wZnVYw+`1p~I`THMQLqrHmqu1?FkwS6iH*lD6*aQTv%rlfEon<=i zL%Hb!I^gHGOWQPf?+dH8HMvojU^?!Bnr(tq;{-;EEq@I8qs@R*wXI1_-f=AOf=0el zixU_r2!BCFTYft*VJU=Tm9k3g?h_wK4Y&ISDebaIG#`|z34V&Oh z?Enzr&*=hdKT3s9j@V#s2X0BpJ2*aSS71bWnW}AF1sqB-sbQR;iLG!o(4PWN)1r(gJ)8nNt4zneOQ!~?0f!Y_3ruS_7GJfk ztrO55emSfMzMw4-RJUeL$DIp&vA_TrUA3)STLFOt&nhH8p>-eL$1Cq@3k3OqFb6oe zz#zDyYFl>!TZIW;Xm?;a-c&S6(FR~&V7ckIkw+X8@#m|ywLjjFa9(Iv({XzP-s2*? zq1-5RDlkiY{C=_Yw*#&PE=!pIeqay0fK;p-4M>6;({X#MwlxA+T3~JPu%_qKfSrJ~ zNqjk!SW1}bxXXayl$5scw=*4gZBn0&83}2CItW$*BT6}?Lj8bgI_~-;Z<<&rSOLK@ zijyRwi#AA~zc%R`Cps2TS4*bj_7vPZNZQZeI|+j?bpZIl;1)bikffi#GObU=QymS= zXq;d+;R7dcXH4zK_VYUm07VmI!6xVjjxZf}yr|V6PsYJZc3GDJUiSo6q$zwY08ng# zPJ0I{6zLp1T(5A0+*?pmFQ)0Ps}!8pN;sDK3? z(!^tGetu>E(7`yti&4hPh1Wmj-OtYy06G*Wh~q=QlXpKqvjET-C)hd07qmO(-OtZ7 z05ru3#zveV65xou`}vs%fQC512{G)I)AR1)H?t)C%m6?`oM0fZx^C1p0)p_d6xgjB{QO*W0U<5X zBAqXgZUug5I&NRUGk*ZwNJy4%M3vts*8YktE+n1luY9YvH5PA$&opQu@T#cheemY^ zNt)J+pTE4*)_yJlkg_I7n>OG@_*Q0B__+XpfFN(*9VC{wUjpF&AkaOE7^mMiNhoi> z1c076LD%~Exp4zK94F{nKffygpdn7swSIor*Z>*z4l?iOcZ~)J&|T>ANi06;*TU^K9) z^z#b@fI0|-Ud3C+ChnZP9nae@0T3Msi}99tjRS(*`}u|O0>X?#yeM4{?PvLPg`Zz& z04N~XQ(VMW-?wZ0{K5l30m3f8yG8T!O8{&cCm0G;8(jJkFf1rxv|FhVD~2d8;u>IU z;8?a??)7*Ga}yOQ7M0CS)KW#B_h1~*6#Orr~AsE zR#s^|8ld@k{uM{JZNN{Bj}PeV;`=|S6k)z-XQlQ2G~oPdV54mJ2b|vuZx+uQ@UOBu z^QQsc!&^#a5Wz#M0~DTuV)vVX?ZuW@Q;IKt008)}Y|W_Acz!ATjL<>A6QY*ilvceC zm=DYa76GpTPXWDn%ciXs0Mzh?YXPRnb^S^gu?BBk|24cBKGsV4Uc8aI8t}aUo_>rs z`d1SkYQQqtpC|WQinqYiTX^FGeRAD3qMaVYTOPND7apG8pbo|=b+AOX4}d56_}Yrs z$~(M+muFCucl#vXJjOMtgG+qn4ikQBz(3`8F>rM!g@1t}tml>Eeai8l0Y~GlwYxjs zxBjXXUkAYFfbqU_&jCkD`2+F7);IXB`Hu43fl|5kbED+=Ny@Q}c&na%S-P0(efN6+ zZz}owfZyUR$Xq`+FQ5*7qMTQSaiwznW?z}Jeb1aNfO*k(e5hQ1m2zyP9J^OJHltGj zSf?;?v2t8x?sZ?8At3-zE&uxVXh@f}F$4go`O2$h)Z+&?c;-^yxf^`o33Ew!1OvGoH&_H}-&;nx_0 zeZO^@)<%6aGDJrz`yVthR7bYJ|KG(!sz?`w&xRQ3YxNri-2KwMY6rlv%KmxE{>jSz z*E9lPmKaiXI#GVlSB^a&(w9e}N)w>;hg=&~K5vShQ{RRNxCaw)GR(LD_=gx$_u?%W zSyKWu=L>_&G}|RdD7^e$es2}+Fbeom!tQJ%cY2`DFpfeSl>I?Ui}!DlQ{dyo0Y(6G zgn=|Ni=u>ie=XW*9PmQQV0%sJ?#zJm>LL}3B0l3K@me5!;prWL2?BVn0JuY8YL((o z_er0)8gRs?Zq*1}CDt#%S3^{8*gb|SUD0fbA*>gEK9p@S@N?lUh-z&Zt*0u29TjkX zUuFN4h;@7wP)|(UO5!VHl=HiZ?eIuc0K}m~d`3ywHd`@he&;*)1fWjad4li!d(x77 z*e}o!jB>R`RD$hf;ZL7<^cEhaIqc61ZaWneb#ve zxD7Z;y2Z_6ussP}=PP@WXoF3@cNh%(0(d;6uD8LL$TVN6$X|tA^Ne!M_fzI)xKFr2D}4;}T{Ey0V|2PrsmQQk z&vH5ch6a8H`h*)achI5A`Qu9w#;2Qo-M~%K$4$Ze_@XBLv92NK;cOXye-^kDxIzrk zns_Svm7+_=2(0_+pAnV2tr%SE@dhrIknA`5tvrCo^P3vW2Ko#y<5_RD^7U8AH~4 ztd(UF8OGSMOx7`t<-IQIexC39-tTyi*K*8t{ny`rInVQdT|B&S-eT{b{d*t~$X@tq zQ)>u>V;KD9;RYySJ)~#A2ltJ$7N(F*@cVg9UJ5|j?RVNX5CY*90)IIm8Cg((xa$u5 zoY}5nE?yxSy@GMv0t9jh0yjN*Dfrv$_prw>lrwdNkqwJ-_@t8hSkQcOhek;VLBvx{ z^&>vwqm#)kQ;7rZ2}w^)nut+CNp0#cD$5n`(_Uw#B%BcW+SJP7C4b&PRP z6EUtH7za$WpwEvlFwcbbN2KyS9i>f2BbuX79++O3$0Js55xk`OEA?t=>dA=vga*P> zS1ZgxAyR$~9I3pb)Av3ot>*m|j`m}ue0X8bDRhc!D5j0OX3Vh9AdRDe7=uzLU&AbV zED5a0+1k$d@_FqQa7xQtEyQYmvHh0$3jdY*)gwOw@?iBmWg|e2cxxKGj#uMR`!u!n z5m&_X0K&B>;wZ??!96eHEa2osqAAuNsyjrI;p60MN1)B1JD`n-C;%NR9u(eIS99DF z7TDIywgQF!(c@9uG7C!nF|@^t__xakt1|yMp(Xrd7SKxo!2P2RT&n(u>9~LMWa`z* zfW&-)@WT6c)r=j^=hSpk<88JC(3)Na(4LGE1cDK82ICSm-y(pKm_oM*qFX#uD8Q@G zHr=M1|651Y`9CCY9-(mMDsyC|H*GW@BA>z3RG7O|<*0G;rKE-N-)-}hN#yB1j6B)B zx;j2*UyD^*(Lrj@sDCy;l|KXMb$0|Z_^ z{v#mwTLAl8;OcLI3x5O-{}xF3EpU2EAdZoE3I=i#S34)A<3Mk+BpIc8AZ_jFofbeE zc0hqz34$?=D*|l5E12eD(7WSFL1!Qf=4i94QD#t%7}lP+E#pAB022UAgxWWOk+!yQ zA35>CQL3+Exady1C_yKnAuO)r2QW)*n>Ds$JHtO+cYv2Xbv;aGnHOx^?{W`a#>{Bw zgKpFlS@M{)~Sy#nzm#ZEB!% zOQ+AADQoAmSPm2W*7Hx0V6g4yqIA5&1>H+3uI-HTbrVZ1ZB)4q4|sIW5EBiX9y{rC z2n<;2`;Bmy$Fv#StyIPTd@4&!r^{s8My2!NIAlpLr+*=yq9qL^jf9%{pz~Tng|66h zUUG@zYBWzdgUk;ll45>pzgaoemoq7rP)(;s{FKVo8Q-OjNcAmN_FTe`yB1jQj&Us^ zAQo!w4=nY?EWMObL@Z|F!D?y; zly|jRQggSGq{X#jZUQDATjiuvww0Ik7h}R;a)XKoM#BQWYKKfN#Aj^*qI^*A8%caf7v`=`&Ktoz}b+9oK*!xr)A(DB`Oj0A8hk zOc;?M3aog!1CW};N}bwbd3e=mXMx?U1=}U~Y0LJbvYJuV2u1kHK>ODHxw8DyZYm8; z0U9UqqiFsKbb4H=82bSGxPdvgRsDw|yrbNh9G?)C24s8Dy}XUrLk`Su@#+`XiJ-6* z=RbF*q1B`a_j-2_>=#pgV6(HgcRUUB?~f0>*U;(2#c^jQ?)&HWPN*`V_<_uS;k`f9 zstY)qrg6gH-Yab~S^lUE*D5MFjfG-0bg;Il%~cDu-dNdeb}QhlkDSlOzE z{XmLWXTzK^;pO#@b2ow1jknsu3s*!An+B8mcPf+G`^Ml%B#ZcYEU<2Fa=cXk8ffi~ zKc-hDTpO?h+BfZ>PVpbiGxkDUyzL+5knI7Ls62 z!;zN5xsKprl{p`H_bvLos>Bj*MXukngdu6nyd8{r9l916>#VEJPAPcmn*lV^$q0SX z5kogWb`WI@JPltVHnQBV#)C*W2k8(UnR=o4UxhHS{W&rQDuGO(7wQ{3)-*@_ug~~; zsQ??PoSr_pNqhck`?^Pcpor7_PC-faMz$#X0HIaD(MNMTFF%(|h#2~7e|q_LNLGf8 zo(iOmG77MCfRYM~Oqs9Np&rj-e%~rs1YelLkQ#GEN2>OL!FC;L)CV@eiQ`}b3`__# z0D)O>CIsJ=0djAO8pJJHCo9&k2b?-wr<}fCD5ppLx>GR6KPpsv@$U-xDPBK)8gO#s z)p=zGBY28hY)hM+E%ZM8H5@bGQV_|b^Y?9xr`PzC**V%t+w9$bEEsaPy1a=hIezeMSFgU{@IrNVA!WCWSL7#e!j8%in+Ov)dGT zgRHB(kS57KFBAzc2m-?*qk_ksziVh%6|wDkermf2Hj*_uMKp(FelE*S#&qaiZ4T2e zeTcwv^6~g7KAnhd=DQkk-@NITld{^Y^XNshi2HJBc`qNR;;RImo-3@_?&MK}9I7+< z>Z{4w{;Y;`kT0`YrfjG}?^>T(W~ghnu9MZ424m3|UsW@QI$Ss1EOW={O!swdP1A^- z(6sxVj#u4)L*zp`z?G{T!!lL1Bws9#OP?rOqqSv4=Gz=Wx*N!iY zd8N77=Sa_$gq$m@KF+0G_kxRKjz)RX>Q=%IIVOf08_qw^T}kX4Z)#R3>pO+XKA7D< zux>}yni_6N%qBn^fHMR!6Ca~JP0J~`oEZeuCj{3_7CP*`Wft|KymLR`S*YNoZwO+1 z`cmd7@?sULH1N3i@Iv;N&PwaQ%8;Ui(Or>kZfflJ3=DuMr%=Vtqi7cqn9`IyfD?PR z^sx_`8mMf{sdd*v!d@a*xpNiD!f zsi6S#E~cod|9vCMvf}Da=3R{PYhBFe3BC3&Hu53MSPhu|aS}gMehS+)vHVUfKsEWc z1Kj_hBV}O==Z>opp4DL2qv6P_BD4WvBQ7J$s8LO4$X3(>V8oC{1dy&1U{D;5Vj$r+ZwE;D%>yRIZDD|C z3Kek7Klw+;47mFbNkJf)|A*usN9Iu+^Jd#hP(k-g6c}qAmU(3-Z6NG=LF5#WaxA7m z-nLl#2=(zSFuWI>zqRIlwnU!Hx?)IEtdnUcRv#mG0&U{N?c#SBnDa}$xIueqAsNea zcEH%-VZbexQXm&neoltOQ_RyH6q>RG?2YXG$M{jXUzNQj;#GkP-1#!*hThdI4VVm` zZ{WrG-{h02lbLBM%G9I+#^e3tRs$j!96E7~-Kf4HSWW7qhMW$$Erag6l8};RUJ`}! zRez5QIm)%DOvaQPDArU-TSh!Gmxu+9gs+LT1o7f@HSd61nWNXg-QwHwSw`M~5ss^I zGheUX1I{o=g4+AyJh=Qfs6Ss}Zsmm?Tck(0b)(h-rGOJCjG(i#Mz`1& zFK}SoRS!SV0|X*lf9?zGL9xV5Af;+DgMX)w0Bd>qd#R#!DG0((Xc?H{K;`@UGXs#} zBrpa*&QuH;taGPpTm-Zy`fh5#ts6*FB9Bi0ZHnkk0LH^2sfSyHLE8sI0ThRu2=6QN zZbV>RN!+L?ed=mRjx4`8pao9_I^qF;V(c>*w*M7SD>e7}_h~!x^l|Bh{aIW1yh{kP z9!bF7g=o_eic@uQ7dvJV%2AA#FBEvg0hUJ$ow0G47%#z>)#aWK9V4lnmkd+s3)cCpDp; zuKU$1JED9b0#qH{1FE9e)GP5JMlm2fWAzj^E&|;pgqvRZ+oDT|Az+v z1AYB*4(Nf-{{S-uC$DXufb(x2NND=Mo&0w^@O;TLw$u@vo>{n&iaI*Nxk)nyNW6+ZVGM33$XWgNC8t)e2 z4-X{#=GCDsetQIvP9nDfgOvL||2u}WkyrU1r(a;}!xZ5vxRHj+)98sKGoB*Dl(fKJ1e18+Da zj2h3vk%y-a+rA0W1Qy3(TSenQ?j6uK(9vhGv+#;%n|8XUUc2DhZMdLPd*JQVfA^K) zbrv%r&zgo&s%?L;ez3cYIcieS% z$Qwo)Eb}c=?Mv?%^$~4Rgt7RGA22=G)-S&C_waNpRjOBs%OD@{Ayul} z0U8VZ*#U)o8~v*1xUowv#0xVEPsJDA4FN18~wa`ZS!BMw>p4gD;e; z8ziw|Rn(Klc|B_=M`di@)VGrMbNglUB*rH0nXGkUfqFKsXJ^yX$4XS6O*^ZTAHrAU zSq@c1gj^MIt>1W5JqU@xS(RkbN8p{70p^$#Ox9zXXQ0ku*2Q?n)9{yeQU~Bhwmzl) z$@BhRrA1E%hW(P@3q7zJSh6am;S}aTs~b^?d@a74c%H`kAWH`HGwIIoIUJo{qN;

_)|q~_2oxQWmA_-S$(sJhTEY?$eph%Z-!Kc-jN1REK@%nGu)ogJ=3 zR@Kq1Yg14$wO&RVsh^5sWYSS>{WH4Q*%(-nDzosDdduPdYJuMSIEHdqFVBvee0rgIPxA7j$vuNp3GOvGXuv4- zDP1ht?|M=8aKbcKD{9Gi|Bc7MGeft-ct!FPO^ks&SxSzzk=EDSkb?F(mCQ<7FbmCc zxajl1d5-P4HzX9l&p%X0o`u(vWK`n&`(O-cLq%0-z0ZnE>%`<|q*gea2On}W+P>FV zi6XAdv=MRq8XFQ>Q%mFhq}qd?sm-7r!rHcTdz7I)Gt+!}cyz zYs>L>E*N5I{W|Gi_1?9W^|Kox@m*w_z)X9+`s%?9dRKF$w~8c9T?$7J=L-q7NEjy^ zHK@4WrZZ926J|48KS#;ay)l0?^(g;B(QDn-4@oVrbgu8WP9Gh;e8pvXL1NAvQ~>iQH< z+hT?wp5m>*A9dU(Y95KGVve33x;9dgV@NMStXGcuzA6ZNXOup76lJn^+PLTIUIcTJ zgv)7wSh=JVG|VN9>UmkSaFsJ9uj|)qipRt3F9a%Gs;M>J?>tze*vpjZng1kM(XW$Y zz!Jdgz45<}ml#nuBGk{W9csW?(Tpje5x$5e$s3Sh^8aN%vnZ*6hA+0>4bK)Y5=@?=8Uuk{XY@c|BfmG}4Td_qGJ-uF1 z(#pp@Z5!|QCoevjDptvfFX`0JJsC}159p9b9mIEx9C$O3_~cz@p>;pjZmS9#{^V(H^iwMPBxd3;Yf^e+K-QY^G}AckRD{%*Ua^0vI3)d) z!WdN2s98^Fm;4*9zL`%mDhg?iQ`dM}ZJ`nF!N&~q?xv>9@=NQ{J2@#A4@Q4o9!HTT!W!U^|P`>R3x z)vL7*h)04hu1A8bn#0!tpw$`S_`&DP%n@n#`dDj}Xn419>Qq!A|BA|7ee z7Nj>{Dh{n26rXL^gUT+_owYXSVqGd3)uoex$BT!$ynnh3eCho-)C37vBugRIGLKT$ z(a5F&hqE<|=o^XcFLCc!D171wX}WVAx6yAl!mJjVz2@98Al35ZZ|2(&s!sV&J>(l5sUS&87-ww%>xD;q zxTfNzS9t8KM^=0+7yeFdyeY{w_)PsvIfSa-pk8@+*=n|b1wyfBC8CY z?H2TzekS5GA(diK;ijI^0zo+^rg2ciY6dU%8d@!Gh#Ivtmk;5|d=>#zVfhDAD+hcNdxw#0Px)xECAHr@)cCI@AE`-WHE->urX;j#m z1A8!k_fq^~(~#B+T)s7WSJ5o!3?GtsN4XBsOI(juSE5X5G1w*iJ63J9q$ovacrP2s zk@YRUjs^S-vZFe5#>fS|AwsM+)yr;yN({iwsP12^tPJLQ5}>4d+o+I=efldYyTNTE zpo(|?GdxGFkwJY*)67{{IPbjL4@1ba?yv$0&aR12S(m`e7_pvJf{iu0#!EO4n3j@* zoN64i?^0gfOO$T=>;<1U?5wr)pKT9yp#LK84WDtZ>ki@bJ}3*kYQrHGS8y6JW4|T< z#O*+e_$#az{lkn&@r{B?V?S}e2KhUaYxi;(y%=j790x1l3-_O+y~A(PfG~Y2mDFVX z(z&^hNs7$jo)E9DXX$qtD;RRtYP5s!eXyNlTrxIvo+=?Xy~Qj1S88;QkK2CZo05 z7{3ceSlkoEkEZ~INDXr-RuMHWH%n|s4A*NzsQ&Ng); z7@4xKdVN{N{9P#`{q%yB_^j(L9W0}M-|}LEFb+F-VPo*>2HVpHt*{yR7Wv}GOGDed zD*M{BAJ}dJjNGYi;kLhRFj_r;!k5GBuI!2yrg#?y_{Z>KmONFu&$jy8jfE^sUaEc9 zS5VPke8qY_v}4!WNz8ZIp-n4!R;EV%uE9%l?|(&xxP@N&9<9}h8)!vE)ne)L7U&0; zCN``jMvPS7`-kheqdkxr;~My|#2$M@ONSG;-NcREU1tJ3qS?U=p0*{5$lOFKEZMVP zJO74vl>d5+;0nK?JekSwpILj@V|FoJoKz{f=DOYu+gJF3Z{M2`+)K2>LPiFYRjZlP z&2c_3eZa{4e8(M@NwxjYA38mzsUi*4pt!-Mes6$&I|4(119 z4`HIK#dSX_b!Y+WD_%(TCGpgC$3}#4K7Y3z&C<0 zv3a^0zbZA}7-Q)y1r=Anpa-c{vo3V3=TO&?U8%k6Idex!)9{xoamOt#Y%(o30;w1A z{rP!ozgWdEs-(YxZz|yxE}cHJpf!>vETy_;iQ%|kplU2{Nw3eQ{MOJnCZ>)V-t)R-Eyo=xjD z!*J5|PRVuORw=vC@4@eBH^KJ}>Bh96Ju%Ezy6o;J$bHnJLB)W3 z=Wk{L|1-eF1pgNRv#A|3_RVtPTY%Wux}p&-Tp1OvHFndYuy*YTzFdpUaII8ynms!& zlKrl^rh{L?n@B)wF2-4I=$ClNu_lFE*54~6B|Mj{c)jt=NNzbW6cdj8G@8}Cer3LX zw_yxJ%P)OE&D^~_C*zphz8xd$CPOPNDa0~#3W_S+awN-UE^>28AUym!%YE*imSgDL z?cv4hBp1vYJ8^;rv-s7Yc~{=##YjaeBd+%IbFr_g5@iXmA6oTH?9&^Ct}Koq=tCBY zI=9j@jm&qf4&|iMWrglq>g4GjnadJ%L{cHOZFg(T zWN*m*Foy=NEa6?3YUE>$FVJq{*fsi1C|-Q~Y*;czt)rDM2W!{^ z3j7ihv4uNVBf4!Q5|O=e)9i+^oQlzLt<%@Xoy3!sWf#(fEoj--NGa@PZi5P@T*$?< zeWT(ENyF$H@tUWyQ)!w+p*CG=8f`cyOo22MXck{e8T3kQ?|`P42c{S(G(Gt?kxIz7 zQf-->A5$62Y}JXOo?b{+IKT4Y3B6UgW#5I42d$JS;O~qtVxJa?$UmE2?;H$!+v#aD z^K0``d`cMFa|q#pg%&H;t@9Wt(|EJw$!P?yEXLpMD!II2U^NPK^GW(F-1r>!IrA5q+W7 z{9#8+P1Xm~X(y8WZBH+h$Ez0N`(1%)gR|^Amo>UsZH9MXGri6w*sV#7!uaa7%?U49 ztzU`UZ4gtcXcUv&zeQcV?HCx^o$rCxjOs${ zYh9bqDK>U{C!&N2oXKYwgcMX}))nFRiqI!Xi%0M%PYmjHr3^2q(jF~@AB^2nB1ze!@z(*)M`q9G?(^?_Xie3RBm#cK*x9h$m=dT29I};6;y~Df5RqV zdWvK&o2)nCFV+~lkcyHi^c7*kZeO^@Y5#Ly8LujTt|4sfKCx}!g*sVa2>Wioej Yp8(~+k4_zlOppvWJ8xQe$|>@{0N_C5qW}N^ diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/icon/icon.xcf b/.vscode/extensions/codezombiech.gitignore-0.2.0/icon/icon.xcf deleted file mode 100644 index e79bf2c8edc37ce8abc96a6360c775870077b19a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33599 zcmeI53v^vox$kFo-tV2}(KKz+oiu5ZwrSGtzSGuR4k#iXmvSB`P*doGKxt!J4ivp4 zSMQO5c(1|1!QpEd6+L>69?QW89M8ZU1z#Y#)LIoD&(wb%USxBlOw+Xt>0j9q`lw%E3T9b1htITQXy(U>Z>oE-klVk@Ei zxd??G{i$XvI%mWfZTzcY%VX0ibwOEY)^gT7FuI)^bq!pzdHdF`?YjrIP-SS(F&%sM z?%T07wrAIlfi0aS9ox2Fv1`Y!-LVb}UAwnmzB$&jw8#FNp|C7y>g3eRXE-%%kG*g~ zr(VBjaPt)dJGaM{h4-Rz-%OQ3UDvfc2lmDWc3yGi);&6Z*S2kYw(d=LP-mZ7<=0F< zRnH;#m-BvO8uhHg{UHjMv*|gOY#-P=uzlyQ-TIM?egXX}VAE6g*ouO(jxG+$fYB9o zjQ;T(rpu*S<+7}Dc~-fSvaZ`hCvF4_v)aO6JeRtLpkDpbFaAN$|Hb!iy?$@kj?MeF z?xxEA;zJ$RY~FqKwS%#i^?qUFdLHV|*q(tKwr;qzWzF)nD^^_E5>#&6wR10(uiCn6 z_x6F!v2%9q*g{+SS*-8YsT-cgm)nj*KSS^@FL;e|!WWI#B(H@x z<~T1R<;JLgVA!6wi8tV1d5d_Z%DauJY-GM4WA49)IsddVv%k-q(8qR|Yv}bdLtG)f z<*qfyb1we($4?yif>~wUdEfH#Jh1UGFW*~f+{m}R0xBAE~e94DR z7Tnx%PUJ$(2e{B`+&^Gy8(`#$}^BL|Kp4?p>X|M>8A zuWL4yCQ(ow>sojI-(J4!ZSQ*D9e3W#^q88x<7+9e$x9ip+$%Q8`rD_xW`D2HB=d)! z=T^t3Ze3PZ^H+CzHGV^ZaqGWHSKMRgGPzPWc-7vdsXg!JUwFk{zH#UN!YlGpdzq`L zyC}KtMpJ6szj=l;@{C(FuDXK-YVP3#_gCd=UV4-paj~1IO1+Ocn0i2^AyZ~jLp0?Y zx9+HFE>qk8)`?G*aAK;>Hm2UbAydu>c$Q_4Xm=xz(rud5WBp0FZQ@60 ze^mQlipwbg6eNm+^skBL@O-vE@;anbZ>L+^e2YEP}jHRA? zpqZx|)>hf6S?En2@V*n{*@pGA>{QM7roI!qG{U)IeYH6nOkJw0)78uVgi@oKeDJ5g zJN(_OzLuJ&Pn!N5!B0_Wn!FrS_X0R&=XI4=Vahy4%Pg+6WyZ*qt+3@;nxg4qTc(&F z6swJY(tkImic#16uB2*$Vk)UgxSYKbZ~6;2Y*I~TgV8&*-nibI?BBcW-^cCW6ZY=` z`}d3X?VA8TxRQM zl)`G_N0>=H-i+epoO1%CMjG=6Vop(g{#<~HC+nN@~cjk!nIUaW=Y{z_A4?{ zxQ$(U6G~z2((h0Tw`G(W$>5@4^W2-R{D*hk`jO9m`CC7J?C`_r$ImryfB(0BeQ4_7 zBlrEEzpgZMkrVkQS$OqBOsnMKcg;3)s9~-8+s6%7~+}9#v-P{j&QO~_E*0rkqrsjh#i+taxieG9Lw7Y&yy=o3ole(Qga!4^(r#Bso`1^h6xq`$=}HFaISp*8hh)qGIP`c-;2T6E#Zdij8hc&QC)JC8Q^aHH;$ z&z0S$JNYW*vIlc%b&HPc)PLsGGB35x=)HMwrt;0I zyn#yhiCo^M;LvkbyGg@XpQ-Ft<$0>SAyYY5m0ha*Y^E}*%6e6PH&a=x%1Tu}m8r~C zWq~S>r7O`-5PM!KnXXAibeINjU-_Vug{mx7$dW@++Cj235AI@_m`g4ppvE zGQ3{YdZRf2uX1))P|sU#)9Cm#5}`Qst|3iq(N0Q-{hP z)7f9pJiA8CUr_UND&0x5{qW+WjMfXNbKP29(%yO#v%#%8tUF$+_LcheE>-hhb@J!= zw5P7qh1ROMQ_Z*2>=u1bkKjbFF8@QdFHn1<+V9tJYwpqGI`kT~FH&u-+N)IhEu%R0 z%8&p2=#d}YGDo-CLG9t9yrR;IS+(`^=C|16kHFBRKH;@`sgz0&dTm~v6nqQEbe#ge z8d7!@saENT>S8KAu2Q#352*AvDt%g||E1FPDt%6+K1%Mh1*Xfm`G-{dTGig6(x-U6 zlAAtO#=6H!z+tX*&B-N)y+`6a60ND>#*@C2ckX!d6PGNXQxY*TzL2PU0x|XMv8R9g z(}(Z>^8SzBcGFwma`Bo9`&~xkQEwhH?7n@oC8BaTo4W6L^S$JWkImy{Ox5~TZ{wrh zeQq0XY3dEO#x0%jTD;UvJVCeq5vq8{7C)t`x6`Z1(gm-4*CBovT4N9B+~j&hVL9J( z$;efYdNFV6r+knxBT(=P-gu90_y)UQXinrUx_IBaKSfpQ4s_q-`F9-R2YmXwH93(; zUVc$&Wp%@Xo^!W+!9MSwu%Ni@|D`wJw>6q|UD6v;&ujHxC&s`{oujX;%3tZlno_a$ zalN5m=0tvODxcDq)IX~9M%6W|^mWz!Sfvit@dfLp-mN-IA(W|Zj_TH^?s=7}RkuP{ z{wDWMJ*>KmRJYG|;uWfVCzbB~Ih^C>exK^p2nV>0M|A8By3$S^duOh`;jUsB?u`*C zC2yMI@wy+))5~|Gs_$DVF%kQust;Xm>WzEhqtrk5l^wnFigWX4EqKko`y?ZhlOL>u zX-pRH{)N}zB@f)vXqwDq&W3kC?4qMg{p_~$^GvIGqHNvPn?E)7!$%V*lHSyjXMXv> z7jNJD>Ka&}52xQOy0=!>QE!ep zH0O#BJ@lKy?y;x7f7d^rUu1^ze>`oJQeUUfqWM;(eSujdy_%uZlgvaaHB&jB7guF^ zCKa2hYR~()>cXjn5V}BW1p{Vm;dEjeRX)rYm_O*ONyWI!J70U#Q@kP^ZYR|glS*?4 z+RdL-NhTHhEG+(UG1 z+h6yu%)zPg8+xk{=I-Ae=5G0Bw(i_`7uQr7nRCupnRqG>6-1|XnHTnX^h^4gl-RnC zn@NvD$+b7zBoX&h>CZv!C)9<1m(Flvr8;I+!hF`^2r7ELhPNOoscAo$sx_1tjSzfN zg;JkY({(%xrV35FXoBps6z+gz<>WRANG1%UJ#;QpoR5IyRmhTLwzm#V0-nXX~NmkGI#k1|3 z-+RxG4jy%nKl_`nf9ii;P>tL;$aC40-VoW}Ru}J+bZ`2tz6i#&WcM*2S?yVw+J3Fs zeze`pHmOl+-FHT~uY2J$%yxc1qnx(B)Sl=~l-)2vU=WE$6GiK2?W0qcFOnk(cRmY9# zZ8K(lg)x15*xq5xc^4XUA$H!s{<1L_{SRaQ{vcb@m`m?BX7kUD*|O4@D?e?_z*WXv z!$W=x_ul&vW3K<2G5fggKCW}a3S(~Mo^QXJzMX0+61!5d4?P{~Fp}ssd5N{AAhFsM zCD0WTEW-)g?5NqH*`e8?*`e8?*|E)WHOFa=(;TNcPIH{*xNVNooQ#f-nssI}I_`O+ zW{q(v@Scv!Kt+++IciqeBA?Ww(Cw-%^33Q8`mvmT^q7hSU-*eGQck>b zljtYhsRROVpc%iP@$-QD-_5wWc#sV-_W<&Emu?vm{Yvx)M>dG*M}~6BVWhUT0aN z%q&lons}nbtVk4_m3C8Eb!yWwI#%cCTwO!g(lvE$-9z`%J#}yOL48r5)Hn4}eN~?s zzr*+)#_uqGhw(d%-(ma?<98Up!}uM>?=XIc@jHy)Vf+r`cNo9J_#Lk0a7~A6JKV$J zUJmzkxVJ+e9QxwWCx^Z{^wFWO4t;j$yTce9#^Nw0hp{<~(P69(V|Ez7-Bebc+H{PL z)j2v>*U+_eOZXZ&%-A7}h=#vf<=amF8K{Bgz~ zXZ&%-A7}h=#vf<=amF8K{Bgz~XZ&%l73Z39t{vwdaqbo8o^kFSrw?)Z5~ojb`WB~; zarzpk&vE)5XAE)15@$?t#ujIcamE^F%yGtVHuU8Qr4M$~`{)qWf8zm)IFo=`FSx z^%hyI@;WWf@;WS5d+io$yoDBPy*7(=UaQ5~-U5sDUW>&!UbDppFJ^JBH{aqsugPMg z*J!cHn`d#p$Kt}wjd`p;U^A+-u*GAY0vC9*Ew=J0to=5RwFg}2)mUuzpk&$afMphT zdVG+9i^M{Mi&1xkOZbcsc1h^~m!f_PyQPqTJt+CYWhlAAT!0j8K?*h_1!G8*`AC)~Bupcc zW*!n}E|RAK2{Z>uRF6cOjby4rLe(OvYLHmfNUm8(uqq^36p2=eWUD~Jl_TlOka(p? zz7i`1S0#$f>O`SglPEB26ZvLcBG2?DFiRyOWJe{q5N{2Lx4DS7d5E`0#9I^MZ9bwRhRA3} zbhIEs79dJm5h-nmmW7Czc0^4FBBvA4vj`Ei7*VtYk<^7~T8fD3MpX46vX&vbmLtOA zh_V%kH;J}Y4uf(Sl*6DL2IVj)he0_E%3)AW$~X+lDT*^F=4%=9syxo1kXO+-gFIFCYJFSG!!4=tkg^RWEL(qd{}^sAlrqV2Ezx~VIb(ic7uiqF2oEhY~#a0*oyKj zTwvx{Y%vWMn+-}U^)WNg;(XI+u?bVM>Kn~`i}Os(;#>oRM16y4u{g&puvl+eEzUM= z7VFGHi?ycRVvXsrSZz8j&N7QER++^Xqh^W4O4NT{zrrlFSZ=y4mYE)lrDmDM60_W5 zv58wOGAk?=nw1s{%qoldX0^pUv&LesS!*$3)>+Ikz1|e}GhVNk1ikgD_BMF%tV59@ zZ>YRas@w*Xlh}Ydx8CGhm2REMw`$!QQ)pGYRi@agcPorN!O;m0Cpes7l{`+ciXJCe zWseiA!WWzn*9mb>h;xEf`#8a>ew<*{KTfbJU~oc@%-Qr8HP8dFZrI_h)5je9Yx!;y zuF+>0xY|Ixf~yQ~AGp%+$p)^_TL{K8jC#nfmwCPpo5P@`$L1#1SzR_iflZD<7a~Qa z(-upgLa!~gI^~c~lWv>C(52tzI-JJP^BqoO=!M8B>AJ;IL(q3ittw_ulg^vN1CZXE z8|O40Kz^LlcmRb+0_niTNCWA?rB;Knr%4xPLE;&p5qoIFQ-H@K&?=SV`53{gO8dF; zvI4F97HHkKzyi-#l?!2u)Ltaz04(;Fu||ZN@>14`zeH`h$gEYs5O% zh+fu+^{f#a>>81KFH2py6Dqw7#q#uFH(nPD69voSr68*9;{_OSjT$M%X+Y$^ zu==2M!WU=DXJ)?`x~TL~>80T&J$0rn)M0083w7J@8oFkv=Z3m21{DAMQQwd+)|QV< zcrkQW>95jb!%ceaOk1e)&eRs_!r?V^%}_56bz^8G|6^*N7^SnRnCIn;xg*1(@-?s% z(ecD+e-9)#j?$xO*R_InlxkohIyKOSN)5E4Q3DH5sDT#rX`mT(8i=7y1M^X)fhKfm zpb=FXn1?0}%tes~8qlKwen!#v^;WBnTC}w^Iy3@NfHTIe2F?eA6!Fxs4}H_XSJELr zbdo)6dVBx0bNBmu34puw_%|E$VH}`eJ@f|{1=?gBkgm_(Y*c;P>fol0)jp(+z}xUO zyNoZ}3||LV!`H9R)xp>BMV#U5;A{fPw7&d3X&C*!_pzKnZX-s}%yc+SbF^RhX&p}a9KXE-@JrWF^X zP~YHwmS(Ig(SA`$P)B`ZP)txpeWISQS`WiS!4&mOz)*!u5vH9{2&@`G2Rs+6bi1Xy zCZM}8@$>-LbOs^8>ebjP=mX}M)EG<|&<8YVuSL-BLll^6Qu`s-fI%O60EWTFm12T1 zA4Yr_{yngN+6f8vxNgk9uH(a~4--BlEVw;76#fdFFCGwV5-$igiYEl;d8O8h;B!|M ze4CsV{8g#7efZo}1z#y=1%Fj)EjB)PRl)blS;1dnR_3K!F5U`UCKo!e2mVUfEdmR) z1Qz%*f%V@_U}5S{h*>#J9%rbW6aE+m$DZ)Va5wgZ9!0t`5IQ%U9e6qhLm3NYDD<5g7IV#d8`x5$544uP33OpBe4JGw1K(H-uQd#NBT;+=mt%+!b|nN z3@^JYUU?Erv7Jy}7K3ERsffZmbSP4eJD3}9Qfpmrt zv_F&oh6H`Mi5EY43wiT4I>WQHK4S6}lh2rZ$K*pMUo!cW$+t{CX7V+Y&zXGBc$Q+> zt0?3+JWDVFR)V=;1(*kxgZW??SOAuSg|C726VfO%j!m=BhL1z;&y2$q0FU@=$>7J(&TAy^6) zfMsAlSPtfa6<{t{2}Zyum;+XUbcSd7XYy9j0u*jy=}+E57QcEUjysp&j!}YzYVOBzZ+OB|2J@!{NcbV`Nx4#`OATo3ft)6`D>>_ zR=ctOV6U9Ll1AkbEMn zDe!CXgAHr){Td>F!kRq41~2!pCfBdQw?3>A{Fj4ell%Rx_q93~iB@7k)m?kJ;tLW!_poF=i9|Hv?EEcvyV^EEh z8dZngq902IB}^Cn7%M1Yy^!gE5(bQZOaqj#G4x{=poHnp+u{6MV zTl=Wkf4o5P+w)hvaJ4&m#mipx!j(^}U$_El6%046hS?h(ad2UiFWUy|xgZY)I)WzL zVQq_|_(kc<9hZ*SU+D=$G$kindInqKOz=H@jUUkVx3%;||nMqk?yBCEnMrk*r z^_qb8&rr^>gzwySX1X0^yB>w^M`;(N^_t%H55shPXS6fZB`Mo2DRfOryC>sCPc`^5j!fcWo{=PHculE8Cyap1YSDDYhE3_Mpm0?*afFF{wIT3amHAx#^KI-s ztSG+cYF*&DS{rz-)&!ob)q&^gtiW@%D)3y52A->xf#+&P;JI2Jc&?TOo~xyS=W0pd zxmp}}t|FOjKMDiS)q=otHQ#!!#t0F_bCvJqTs&7<-Q>86onL;ds0=xRF#xYs2j^A1 zm&U9QtBVUObk?Z-n~*yzq!)h%^+)U$;)g#tx0?Ti(Hhot4QOU9n&HAJBHCX(<#4{v zn)T&eC?`Xi_hBwK8D3E#5;T%_0>uv4)*V25INK-AT!Atcm*k$`uA!kUN|N@$09T?%paZ7)T|bXHdmdFhr(v!U^6MR?$#Ol*bf;znO+X5 zXHETZ3&ROdC!|nf<)z;U*tHIz1nUy+ICHQz;}5*8Lp+%d4n43#Tcf6bcI4sdL?245 zy!2Zbu>JdjwHbflXdU9o6mIBz9oiZ-{j-A{2zuv%Q3Y-5^tbXit$9UViPvQ|sKG~w4_&>Y5u zNuA;sHD4(*RrmWPES&vHB_&cyACaVz8bfQ-cN$5f#!%!`#CvrN-A+YPGmW9{sYvRS zF*HCoAs&ljw{B&*U#W{!oblks_A@F}-M$H5)s2oYcAR(N zwAnO9Rr~OY(>5`&+QiO=o9vWgZnepFDI2DkU9r6Spv>g1Xod}L!>ZSbcGZo0#!%6d zy5ltZRQuWVs>-5WwTX%iH(B&V(`u8IPu4!sxT19RVVB7m(TrDk8}_eGbee9QBDkyW zIE^dSzBttEjXS1uGjP{wIU2a@AIQ_tj9+&fmZDBHiEdmGxGQ($l}i(n?2X$!pRI($ z6nO~@`VbJCGWWoJiu43V0VP9_F(}|i1GW@X#UR`%mLnR4IO5b|P~x+!E^S{rjr<7c z{>qPl9}Z#3L`n0RgMT=o$YXs>Y`t%gH`tf>d~!4=r-<5!;X^PLb;$6r)H^&eHatAo z*EcvkJcb8P(Wl`&?iS~f;VF9|Jw#uM%G9RFNl~1Nq*O$uA}d!ydMGc6@{=e}iSm^w zZ;A4kD36KqnJBM`@|!5niSnH&?}_rCC=ZJAp(rnk@}nqEit?o>Z;JA#D36Nrsp#F* zJF0h8@2uWky~BE+m5)X5x$?7U9w=XnB2gsJi#pW_tQ63q# zvKP)nB&G;WZHlcF(WzKV#at@(awVLHl8`7FiIS2iIf;^#C|QY;mMD3Nl9(u&iISQq zxrvgTDA|dUo+$Z=lAtIVijtxzIf{~`C|Qbpa2_I;6+x^>Vnq})*fd>fIm=$G9-=ZuYid*UrRYvYV=5|B z(U~iuJd|-nnMag?M43pGkwlqEl%YhKN|dognM;(xM43#K(L|X|l;K2~PL%OPnNO4f zMVU~P5k;9%ny{)UQ;IUCD07N3s3?<)GOB3CD#MC0ttjJ)GOuXXD-(;NSu3GDl$}LU zu4PajqL>x;toUceLBCBAiXodfqEf&9#6zv{*790aMY&=V*o7T2)rRt@Dovs zETs`qjDt{&tEI8#K|lie@R2})^z2b`Sj7cJke5I)TqaP0Dhx;y2Fm2nGs-g8C6GD{ zNE-$MWw=VpuykV9(NU`l12u{t8fE#l(L{BAh|z369;#l^OA3p!u~H3wa!d+3;i`c} zP}jg>m~3DP#5T|c&kZb9zJ^iU-7)=+;{9&ZFD^3}i7mLyjIgOC(2sw~26kYg2A?slf=nJ)HUn9J(Q1=S&8>VCm zd6ew5OkqkUaVAQ|q!diDgbn45B~Er-3wet$dR+KIQRZPV=nJ)HUn9J(@MI1|H0Vs3 zm%^+|;yRRVNm-U;)1u$b$!=mH-w+0T3tuQOJPZbXq4w-+gx3|G%w34SoGH0dm{>_1 zg%T<$k&>)a^gE7rupeb#d4*yY?I*vCwxR?0#vj3!3&gBRm&j-vCmnU zgCOT&f6wtjUlknUgCFq8Zclb?(8!JLp`$*G0}v2V|Az8}Vo%Bnol)#IAg3rmLCggvo~etskeZ3{MX zEQSt7KBUnYn%N33Io2OVZ(Hpp_Ye1>)%7AI$8yGo@`f=VWzr+cAu0^B7UBw&-gpeB z9cry(v(L@GrtYCFbePrs#bELl@QHM4N=Pw=vL(x|EIYH_fGIwpGD!`&8uKeNPvl7z zZuI1|gROOJc%Cr(n!1O!&^1-}7w4!sCo_bC!j*hcydJ5#_%8C3I4Xc#_F~&>zJxNV z2)Wve5^hber=@nF*Xir(9@;`DP~Bflp=O+n2MP<%PQNI2PNCxpA(!3P_L@%`H|84{ z`RKNR(-VH+biW@s?He0uv+>h0>x0Fohz*<`@u3f(ql%cGu%<|e1{*&;;=}MChTsH! z>g!7Q9rpOw9`s>9fD5AHwlh)O?y=H1dT8KCQA^ z^)wU16;-oa`3RMlQ27a!r%?F{mA6p&3zf%E`3#lUP-L9)9Ezk9VJAOHk$cLAsJw`Z zFISwoawRHfqTK_2BCE`V%223Gh00i{%!SHes7!{+XsFDF%5bPmhst;; zCQ!_v*g~<0%8aNCiHbB=#JRF2Dtn?L(UnP2N#vAOaVUbzg#3YgSD~cO5U}`I&!SN% z0f>T8-}y+CfMo{cnna~Ml>j*|0rF!4DE# zu>m@SA5=;5lq^q4^OQVKN%WLVPdosJ6!`bc7px+t8d$B|?n)dT5vlw~mFevM*COlh1EBo$N3CJu*~|NDVPVJGm;M#;cJ%c!D^HbNjljxI64Lo zdNwI>QsAV#6(BRtBIQkro0PT!q{dmKv`Jx;vQ~iHcv)F{v6Zz!Yrk*hqg2O-WgvHE)#lIS(C8S)i2-T3Mm3?dD$eG!Ee%RG#NN zbTs9CR{m$@fwoo~4nfn=@2SkrdFW`$^sJ1}%KU8YHTU{@nv&h1fGPJ4pj0@3GUEVB nlmqlyJq`5^J+1s+bhLA(ZN}LDBIYZg{=GTaRMvkHqs{z3^;i`* diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/.npmignore b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/.npmignore deleted file mode 100644 index 988771c1..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -.settings.xml -.settings -.c9revisions -doc/ -node_modules/ diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/LICENSE b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/LICENSE deleted file mode 100644 index 277d0573..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2012 Cloud9 IDE, Inc. (Mike de Boer) - -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/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/README.md b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/README.md deleted file mode 100644 index 378fdd43..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/README.md +++ /dev/null @@ -1,173 +0,0 @@ -# JavaScript GitHub API for Node.JS - -A Node.JS module, which provides an object oriented wrapper for the GitHub v3 API. - -## Installation - - Install with the Node.JS package manager [npm](http://npmjs.org/) ![NPM version](https://badge.fury.io/js/github.svg): - - $ npm install github - -or - - Install via git clone: - - $ git clone git://github.com/mikedeboer/node-github.git - $ cd node-github - $ npm install - -## Documentation - -You can find the docs for the API of this client at [http://mikedeboer.github.com/node-github/](http://mikedeboer.github.com/node-github/) - -Additionally, the [official Github documentation](https://developer.github.com/v3/) -is a very useful resource. - -## Example - -Print all followers of the user "mikedeboer" to the console. -```javascript -var GitHubApi = require("github"); - -var github = new GitHubApi({ - // required - version: "3.0.0", - // optional - debug: true, - protocol: "https", - host: "github.my-GHE-enabled-company.com", // should be api.github.com for GitHub - pathPrefix: "/api/v3", // for some GHEs; none for GitHub - timeout: 5000, - headers: { - "user-agent": "My-Cool-GitHub-App" // GitHub is happy with a unique user agent - } -}); -github.user.getFollowingFromUser({ - // optional: - // headers: { - // "cookie": "blahblah" - // }, - user: "mikedeboer" -}, function(err, res) { - console.log(JSON.stringify(res)); -}); -``` - -First the _GitHubApi_ class is imported from the _node-github_ module. This class provides -access to all of GitHub's APIs (e.g. user, issues or repo APIs). The _getFollowingFromUser_ -method lists all followers of a given GitHub user. Is is part of the user API. It -takes the user name as first argument and a callback as last argument. Once the -follower list is returned from the server, the callback is called. - -Like in Node.JS, callbacks are always the last argument. If the functions fails an -error object is passed as first argument to the callback. - -## Authentication - -Most GitHub API calls don't require authentication. As a rule of thumb: If you -can see the information by visiting the site without being logged in, you don't -have to be authenticated to retrieve the same information through the API. Of -course calls, which change data or read sensitive information have to be authenticated. - -You need the GitHub user name and the API key for authentication. The API key can -be found in the user's _Account Settings_ page. - -This example shows how to authenticate and then change _location_ field of the -account settings to _Argentina_: -```javascript -github.authenticate({ - type: "basic", - username: username, - password: password -}); -github.user.update({ - location: "Argentina" -}, function(err) { - console.log("done!"); -}); -``` -Note that the _authenticate_ method is synchronous because it only stores the -credentials for the next request. - -Other examples for the various authentication methods: -```javascript -// OAuth2 -github.authenticate({ - type: "oauth", - token: token -}); - -// OAuth2 Key/Secret -github.authenticate({ - type: "oauth", - key: "clientID", - secret: "clientSecret" -}) - -// Deprecated Gihub API token (seems not to be working with the v3 API) -github.authenticate({ - type: "token", - token: token -}); -``` - -### Creating tokens for your application -[Create a new authorization](http://developer.github.com/v3/oauth/#create-a-new-authorization) for your application giving it access to the wanted scopes you need instead of relying on username / password and is the way to go if you have [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) on. - -For example: - -1. Use github.authenticate() to auth with GitHub using your username / password -2. Create an application token programmatically with the scopes you need and, if you use two-factor authentication send the `X-GitHub-OTP` header with the one-time-password you get on your token device. - -```javascript -github.authorization.create({ - scopes: ["user", "public_repo", "repo", "repo:status", "gist"], - note: "what this auth is for", - note_url: "http://url-to-this-auth-app", - headers: { - "X-GitHub-OTP": "two-factor-code" - } -}, function(err, res) { - if (res.token) { - //save and use res.token as in the Oauth process above from now on - } -}); -``` - -## Implemented GitHub APIs - -* Gists: 100% -* Git Data: 100% -* Issues: 100% -* Orgs: 100% -* Pull Requests: 100% -* Repos: 100% -* Users: 100% -* Events: 100% -* Search: 100% -* Markdown: 100% -* Rate Limit: 100% -* Releases: 100% -* Gitignore: 100% -* Meta: 100% -* Emojis: 100% - -## Running the Tests - -The unit tests are based on the [mocha](http://visionmedia.github.com/mocha/) -module, which may be installed via npm. To run the tests make sure that the -npm dependencies are installed by running `npm install` from the project directory. - -Before running unit tests: -```shell -npm install mocha -g -``` -At the moment, test classes can only be run separately. This will e.g. run the Issues Api test: -```shell -mocha api/v3.0.0/issuesTest.js -``` -Note that a connection to the internet is required to run the tests. - -## LICENSE - -MIT license. See the LICENSE file for details. diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v2.0.0/routes.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v2.0.0/routes.json deleted file mode 100644 index 49d1a202..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v2.0.0/routes.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorization.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorization.js deleted file mode 100644 index ca61fdfe..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorization.js +++ /dev/null @@ -1,255 +0,0 @@ -/** - * mixin authorization - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var authorization = module.exports = { - authorization: {} -}; - -(function() { - /** section: github - * authorization#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * authorization#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * authorization#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - scopes (Array): Optional. A list of scopes that this authorization is in. - * - note (String): Optional. A note to remind you what the OAuth token is for. - * - note_url (String): Optional. A URL to remind you what app the OAuth token is for. - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * authorization#update(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - scopes (Array): Optional. A list of scopes that this authorization is in. - * - add_scopes (Array): Optional. A list of scopes to add to this authorization. - * - remove_scopes (Array): Optional. A list of scopes to remove from this authorization. - * - note (String): Optional. A note to remind you what the OAuth token is for. - * - note_url (String): Optional. A URL to remind you what app the OAuth token is for. - **/ - this.update = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * authorization#delete(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.delete = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(authorization.authorization); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorizationTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorizationTest.js deleted file mode 100644 index 29b0b8da..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/authorizationTest.js +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[authorization]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - this.timeout(10000); - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "basic", - username: "mikedeboertest", - password: "test1324" - }); - }); - - it("should successfully execute GET /authorizations (getAll)", function(next) { - client.authorization.create( - { - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to unit tests auth", - note_url: "https://github.com/ajaxorg/node-github" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.authorization.getAll( - { - page: "1", - per_page: "100" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - - client.authorization["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.getAll( - { - page: "1", - per_page: "100" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 0); - - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute GET /authorizations/:id (get)", function(next) { - client.authorization.create( - { - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to unit tests auth", - note_url: "https://github.com/ajaxorg/node-github" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, id); - Assert.equal(res.note, "Authorization created to unit tests auth"); - Assert.equal(res.note_url, "https://github.com/ajaxorg/node-github"); - - client.authorization["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err.code, 404); - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute POST /authorizations (create)", function(next) { - client.authorization.create( - { - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to unit tests auth", - note_url: "https://github.com/ajaxorg/node-github" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, id); - Assert.equal(res.note, "Authorization created to unit tests auth"); - Assert.equal(res.note_url, "https://github.com/ajaxorg/node-github"); - - client.authorization["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err.code, 404); - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute PATCH /authorizations/:id (update)", function(next) { - client.authorization.create( - { - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to unit tests auth", - note_url: "https://github.com/ajaxorg/node-github" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.authorization.update( - { - id: id, - remove_scopes: ["repo"], - note: "changed" - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, id); - Assert.ok(res.scopes.indexOf("repo") === -1); - Assert.equal(res.note, "changed"); - Assert.equal(res.note_url, "https://github.com/ajaxorg/node-github"); - - client.authorization["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err.code, 404); - next(); - } - ); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute DELETE /authorizations/:id (delete)", function(next) { - client.authorization.create( - { - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to unit tests auth", - note_url: "https://github.com/ajaxorg/node-github" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.authorization["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.authorization.get( - { - id: id - }, - function(err, res) { - Assert.equal(err.code, 404); - next(); - } - ); - } - ); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/events.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/events.js deleted file mode 100644 index f0dfbb1e..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/events.js +++ /dev/null @@ -1,495 +0,0 @@ -/** - * mixin events - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var events = module.exports = { - events: {} -}; - -(function() { - /** section: github - * events#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromRepo(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromRepo = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromRepoIssues(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromRepoIssues = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromRepoNetwork(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromRepoNetwork = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromOrg(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromOrg = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getReceived(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getReceived = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getReceivedPublic(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getReceivedPublic = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromUserPublic(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromUserPublic = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * events#getFromUserOrg(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - org (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromUserOrg = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(events.events); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/eventsTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/eventsTest.js deleted file mode 100644 index 0c4a7320..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/eventsTest.js +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[events]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /events (get)", function(next) { - client.events.get( - { - page: 1, - per_page: 30 - }, - function(err, res) { - // other assertions go here - Assert.equal(err, null); - Assert.ok(res.length > 1); - Assert.equal(typeof res[0].type, "string"); - Assert.equal(typeof res[0].created_at, "string"); - Assert.equal(typeof res[0]["public"], "boolean"); - Assert.equal(typeof res[0].id, "string"); - Assert.ok("actor" in res[0]); - Assert.ok("repo" in res[0]); - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/events (getFromRepo)", function(next) { - client.events.getFromRepo( - { - user: "mikedeboertest", - repo: "node_chat" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 5); - // this is the lastly listed event - var last = res.pop(); - Assert.equal(last.type, "ForkEvent"); - Assert.equal(last.created_at, "2012-10-05T15:03:11Z"); - Assert.equal(last.id, "1607304921"); - Assert.equal(last["public"], true); - Assert.equal(last.actor.login, "mikedeboer"); - Assert.equal(last.repo.name, "mikedeboertest/node_chat"); - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/events (getFromRepoIssues)", function(next) { - client.events.getFromRepoIssues( - { - user: "mikedeboertest", - repo: "node_chat" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 4); - // this is the lastly listed event - var last = res.pop(); - Assert.equal(last.event, "referenced"); - Assert.equal(last.created_at, "2012-10-05T15:05:31Z"); - Assert.equal(last.id, "26276344"); - Assert.equal(last.actor.login, "mikedeboertest"); - Assert.equal(last.issue.title, "Macaroni"); - Assert.equal(last.issue.number, 1); - Assert.equal(last.issue.state, "closed"); - next(); - } - ); - }); - - it("should successfully execute GET /networks/:user/:repo/events (getFromRepoNetwork)", function(next) { - client.events.getFromRepoNetwork( - { - user: "mikedeboertest", - repo: "node_chat" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 1); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/events (getFromOrg)", function(next) { - client.events.getFromOrg( - { - org: "ajaxorg" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 1); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/received_events (getReceived)", function(next) { - client.events.getReceived( - { - user: "mikedeboertest" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 0); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/received_events/public (getReceivedPublic)", function(next) { - client.events.getReceivedPublic( - { - user: "mikedeboertest" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 0); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/events (getFromUser)", function(next) { - client.events.getFromUser( - { - user: "mikedeboertest" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 1); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/events/public (getFromUserPublic)", function(next) { - client.events.getFromUserPublic( - { - user: "mikedeboertest" - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.length > 1); - var last = res.pop(); - Assert.equal(typeof last.id, "string"); - Assert.equal(typeof last.created_at, "string"); - Assert.equal(typeof last.actor, "object"); - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/events/orgs/:org (getFromUserOrg)", function(next) { - client.events.getFromUserOrg( - { - user: "mikedeboer", - org: "ajaxorg" - }, - function(err, res) { - // we're not logged in as `mikedeboer` right now, so github API does not allow - // us to see the resource. - Assert.equal(err.code, 404); - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gists.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gists.js deleted file mode 100644 index 724b8c34..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gists.js +++ /dev/null @@ -1,801 +0,0 @@ -/** - * mixin gists - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var gists = module.exports = { - gists: {} -}; - -(function() { - /** section: github - * gists#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#getFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.getFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - description (String): Optional. - * - public (Boolean): Required. - * - files (Json): Required. Files that make up this gist. The key of which should be a required string filename and the value another required hash with parameters: 'content' - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#edit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - description (String): Optional. - * - files (Json): Required. Files that make up this gist. The key of which should be a required string filename and the value another required hash with parameters: 'content' - **/ - this.edit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#public(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.public = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#starred(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.starred = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#star(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.star = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#deleteStar(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.deleteStar = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#checkStar(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.checkStar = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#fork(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.fork = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#delete(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.delete = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#getComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - gist_id (String): Required. Id (SHA1 hash) of the gist. - **/ - this.getComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#getComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - gist_id (String): Required. Id (SHA1 hash) of the gist. - * - id (String): Required. - **/ - this.getComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#createComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - gist_id (String): Required. Id (SHA1 hash) of the gist. - * - body (String): Required. - **/ - this.createComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#editComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - gist_id (String): Required. Id (SHA1 hash) of the gist. - * - id (String): Required. - * - body (String): Required. - **/ - this.editComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gists#deleteComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - gist_id (String): Required. Id (SHA1 hash) of the gist. - * - id (String): Required. - **/ - this.deleteComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(gists.gists); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gistsTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gistsTest.js deleted file mode 100644 index d47d28f3..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gistsTest.js +++ /dev/null @@ -1,605 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[gists]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - timeout(5000); - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /gists (getAll)", function(next) { - client.gists.getAll( - {}, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - var gist = res.pop(); - Assert.equal(gist.user.login, "mikedeboertest"); - Assert.equal(gist.html_url, "https://gist.github.com/77dc15615eab09a79b61"); - Assert.equal(gist.created_at, "2012-10-05T16:10:40Z"); - Assert.equal(gist.public, false); - Assert.equal(gist.id, "77dc15615eab09a79b61"); - - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/gists (getFromUser)", function(next) { - client.gists.getFromUser( - { - user: "mikedeboertest" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - var gist = res.pop(); - Assert.equal(gist.user.login, "mikedeboertest"); - Assert.equal(gist.html_url, "https://gist.github.com/77dc15615eab09a79b61"); - Assert.equal(gist.created_at, "2012-10-05T16:10:40Z"); - Assert.equal(gist.public, false); - Assert.equal(gist.id, "77dc15615eab09a79b61"); - next(); - } - ); - }); - - it("should successfully execute POST /gists (create)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.html_url, "https://gist.github.com/" + id); - Assert.equal(res.public, false); - Assert.equal(res.id, id); - Assert.equal(res.description, "Another bowl of pasta"); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute PATCH /gists/:id (edit)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.edit( - { - id: id, - description: "changed", - files: { - "ravioli.js": { - "content": "alert(\"no ketchup, please.\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - - client.gists.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.html_url, "https://gist.github.com/" + id); - Assert.equal(res.public, false); - Assert.equal(res.id, id); - Assert.equal(res.description, "changed"); - Assert.equal(res.files["ravioli.js"].content, "alert(\"no ketchup, please.\");"); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - } - ); - }); -/* - it("should successfully execute GET /gists/public (public)", function(next) { - client.gists.public( - {}, - function(err, res) { - Assert.equal(err, null); - console.log(res); - next(); - } - ); - }); -*/ - it("should successfully execute GET /gists/starred (starred)", function(next) { - client.gists.starred( - {}, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - var gist = res.pop(); - Assert.equal(gist.user.login, "mikedeboertest"); - Assert.equal(gist.html_url, "https://gist.github.com/77dc15615eab09a79b61"); - Assert.equal(gist.created_at, "2012-10-05T16:10:40Z"); - Assert.equal(gist.public, false); - Assert.equal(gist.id, "77dc15615eab09a79b61"); - - next(); - } - ); - }); - - it("should successfully execute GET /gists/:id (get)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.get( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.html_url, "https://gist.github.com/" + id); - Assert.equal(res.public, false); - Assert.equal(res.id, id); - Assert.equal(res.description, "Another bowl of pasta"); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute PUT /gists/:id/star (star)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.star( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.gists.checkStar( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - //TODO: NO RESULT HERE??? - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute DELETE /gists/:id/star (deleteStar)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.star( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.gists.deleteStar( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute GET /gists/:id/star (checkStar)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.star( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute POST /gists/:id/fork (fork)", function(next) { - client.gists.fork( - { - id: "3047099" - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - Assert.equal(res.git_pull_url, "git://gist.github.com/" + id + ".git"); - Assert.equal(res.git_push_url, "git@gist.github.com:" + id + ".git"); - Assert.equal(res.description, "Why to call resume() after next()"); - Assert.equal(typeof res.files["resume_after_next.md"], "object"); - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - }); - - it("should successfully execute DELETE /gists/:id (delete)", function(next) { - client.gists.create( - { - description: "Another bowl of pasta", - public: "false", - files: { - "ravioli.js": { - "content": "alert(\"want some ketchup with that?\");" - } - } - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists["delete"]( - { - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - }); - - it("should successfully execute GET /gists/:gist_id/comments/:id (getComments)", function(next) { - client.gists.createComment( - { - gist_id: "3047099", - body: "This is a test comment.", - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.getComments( - { - gist_id: "3047099" - }, - function(err, res) { - var comment = res.pop(); - Assert.equal(err, null); - Assert.equal(comment.user.login, "mikedeboertest"); - Assert.equal(comment.id, id); - Assert.equal(comment.body, "This is a test comment."); - - client.gists["deleteComment"]( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute GET /gists/:gist_id/comments/:id (getComment)", function(next) { - client.gists.createComment( - { - gist_id: "3047099", - body: "This is a test comment.", - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.getComment( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.id, id); - Assert.equal(res.body, "This is a test comment."); - - client.gists["deleteComment"]( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute POST /gists/:gist_id/comments (createComment)", function(next) { - client.gists.createComment( - { - gist_id: "3047099", - body: "This is a test comment.", - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.getComment( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.id, id); - Assert.equal(res.body, "This is a test comment."); - - client.gists["deleteComment"]( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute PATCH /gists/:gist_id/comments/:id (editComment)", function(next) { - client.gists.createComment( - { - gist_id: "3047099", - body: "This is a test comment.", - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists.editComment( - { - gist_id: "3047099", - id: id, - body: "This comment has been edited." - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - client.gists.getComment( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.user.login, "mikedeboertest"); - Assert.equal(res.id, id); - Assert.equal(res.body, "This comment has been edited."); - - client.gists["deleteComment"]( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - } - ); - } - ); - }); - - it("should successfully execute DELETE /gists/:gist_id/comments/:id (deleteComment)", function(next) { - client.gists.createComment( - { - gist_id: "3047099", - body: "This is a test comment.", - }, - function(err, res) { - Assert.equal(err, null); - var id = res.id; - - client.gists["deleteComment"]( - { - gist_id: "3047099", - id: id - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdata.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdata.js deleted file mode 100644 index 584cc123..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdata.js +++ /dev/null @@ -1,650 +0,0 @@ -/** - * mixin gitdata - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var gitdata = module.exports = { - gitdata: {} -}; - -(function() { - /** section: github - * gitdata#getBlob(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getBlob = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#createBlob(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - content (String): Required. - * - encoding (String): Required. - **/ - this.createBlob = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#getCommit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - **/ - this.getCommit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#createCommit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - message (String): Required. String of the commit message - * - tree (String): Required. String of the SHA of the tree object this commit points to - * - parents (Array): Required. Array of the SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided, for a merge commit, an array of more than one should be provided. - * - author (Json): Optional. - * - committer (Json): Optional. - **/ - this.createCommit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#getReference(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Required. String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected. - **/ - this.getReference = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#getAllReferences(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAllReferences = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#createReference(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Required. String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected. - * - sha (String): Required. - **/ - this.createReference = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#updateReference(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Required. String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected. - * - sha (String): Required. - * - force (Boolean): Optional. Boolean indicating whether to force the update or to make sure the update is a fast-forward update. The default is false, so leaving this out or setting it to false will make sure you’re not overwriting work. - **/ - this.updateReference = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#deleteReference(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Required. String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected. - **/ - this.deleteReference = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#getTag(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - **/ - this.getTag = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#createTag(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - tag (String): Required. String of the tag - * - message (String): Required. String of the tag message - * - object (String): Required. String of the SHA of the git object this is tagging - * - type (String): Required. String of the type of the object we’re tagging. Normally this is a commit but it can also be a tree or a blob. - * - tagger (Json): Required. JSON object that contains the following keys: `name` - String of the name of the author of the tag, `email` - String of the email of the author of the tag, `date` - Timestamp of when this object was tagged - **/ - this.createTag = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#getTree(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - * - recursive (Boolean): Optional. - **/ - this.getTree = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitdata#createTree(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - tree (Json): Required. Array of Hash objects (of path, mode, type and sha) specifying a tree structure - * - base_tree (String): Optional. String of the SHA1 of the tree you want to update with new data - **/ - this.createTree = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(gitdata.gitdata); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdataTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdataTest.js deleted file mode 100644 index c9f7fbce..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitdataTest.js +++ /dev/null @@ -1,480 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[gitdata]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /repos/:user/:repo/git/blobs/:sha (getBlob)", function(next) { - // found an object after executing: - // git rev-list --all | xargs -l1 git diff-tree -r -c -M -C --no-commit-id | awk '{print $3}' - client.gitdata.getBlob( - { - user: "mikedeboertest", - repo: "node_chat", - sha: "8433b682c95edf3fd81f5ee217dc9c874db35e4b" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.sha, "8433b682c95edf3fd81f5ee217dc9c874db35e4b"); - Assert.equal(res.size, 2654); - Assert.equal(res.encoding, "base64"); - - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/git/blobs (createBlob)", function(next) { - client.gitdata.createBlob( - { - user: "mikedeboertest", - repo: "node_chat", - content: "test", - encoding: "utf-8" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(typeof res.sha, "string"); - var sha = res.sha; - - client.gitdata.getBlob( - { - user: "mikedeboertest", - repo: "node_chat", - sha: sha - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.sha, sha); - Assert.equal(res.size, 4); - Assert.equal(res.encoding, "base64"); - - next(); - } - ); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/git/commits/:sha (getCommit)", function(next) { - client.gitdata.getCommit( - { - user: "mikedeboertest", - repo: "node_chat", - sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.author.date, "2012-10-05T08:05:31-07:00"); - Assert.equal(res.author.name, "Mike de Boer"); - Assert.equal(res.parents[0].sha, "221140b288a3c64949594c58420cb4ab289b0756"); - Assert.equal(res.parents[1].sha, "d2836429f4ff7de033c8bc0d16d22d55f2ea39c3"); - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/git/commits (createCommit)", function(next) { - // got valid tree reference by executing - // git cat-file -p HEAD - client.gitdata.createCommit( - { - user: "mikedeboertest", - repo: "node_chat", - message: "test", - tree: "8ce4393a319b60bc6179509e0c46dee83c179f9f", - parents: [], - author: { - name: "test-chef", - email: "test-chef@pasta-nirvana.it", - date: "2008-07-09T16:13:30+12:00" - }, - committer: { - name: "test-minion", - email: "test-minion@pasta-nirvana.it", - date: "2008-07-09T16:13:30+12:00" - } - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.author.name, "test-chef"); - Assert.equal(res.author.email, "test-chef@pasta-nirvana.it"); - Assert.equal(res.committer.name, "test-minion"); - Assert.equal(res.committer.email, "test-minion@pasta-nirvana.it"); - Assert.equal(res.message, "test"); - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/git/refs/:ref (getReference)", function(next) { - client.gitdata.getReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/master" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.ref, "refs/heads/master"); - Assert.equal(res.object.type, "commit"); - Assert.equal(res.object.sha, "17e0734295ffd8174f91f04ba8e8f8e51954b793"); - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/git/refs (getAllReferences)", function(next) { - client.gitdata.getAllReferences( - { - user: "mikedeboertest", - repo: "node_chat" - }, - function(err, res) { - Assert.equal(err, null); - var ref = res[0]; - Assert.equal(ref.ref, "refs/heads/master"); - Assert.equal(ref.object.type, "commit"); - Assert.equal(ref.object.sha, "17e0734295ffd8174f91f04ba8e8f8e51954b793"); - next(); - } - ); - }); -/* -DISABLED temporarily due to Internal Server Error from Github! - - it("should successfully execute POST /repos/:user/:repo/git/refs (createReference)", function(next) { - client.gitdata.createReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/tagliatelle", - sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793" - }, - function(err, res) { - Assert.equal(err, null); - console.log(res); - - // other assertions go here - client.gitdata.deleteReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/tagliatelle" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - } - ); - });*/ - - it("should successfully execute PATCH /repos/:user/:repo/git/refs/:ref (updateReference)", function(next) { - client.gitdata.getReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/master" - }, - function(err, res) { - Assert.equal(err, null); - var sha = res.object.sha; - - // do `force=true` because we go backward in history, which yields a warning - // that it's not a reference that can be fast-forwarded to. - client.gitdata.updateReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/master", - sha: "221140b288a3c64949594c58420cb4ab289b0756", - force: true - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.ref, "refs/heads/master"); - Assert.equal(res.object.type, "commit"); - Assert.equal(res.object.sha, "221140b288a3c64949594c58420cb4ab289b0756"); - - client.gitdata.updateReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/master", - sha: sha, - force: false - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.ref, "refs/heads/master"); - Assert.equal(res.object.type, "commit"); - Assert.equal(res.object.sha, sha); - - next(); - } - ); - } - ); - } - ); - - }); -/* -DISABLED temporarily due to Internal Server Error from Github! - - it("should successfully execute DELETE /repos/:user/:repo/git/refs/:ref (deleteReference)", function(next) { - client.gitdata.createReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/tagliatelle", - sha: "17e0734295ffd8174f91f04ba8e8f8e51954b793" - }, - function(err, res) { - Assert.equal(err, null); - console.log(res); - - // other assertions go here - client.gitdata.deleteReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "heads/tagliatelle" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - } - ); - });*/ - - it("should successfully execute GET /repos/:user/:repo/git/tags/:sha (getTag)", function(next) { - client.gitdata.createTag( - { - user: "mikedeboertest", - repo: "node_chat", - tag: "test-pasta", - message: "Grandma's secret sauce", - object: "17e0734295ffd8174f91f04ba8e8f8e51954b793", - type: "commit", - tagger: { - name: "test-chef", - email: "test-chef@pasta-nirvana.it", - date: "2008-07-09T16:13:30+12:00" - } - }, - function(err, res) { - Assert.equal(err, null); - var sha = res.sha; - - client.gitdata.getTag( - { - user: "mikedeboertest", - repo: "node_chat", - sha: sha - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tag, "test-pasta"); - Assert.equal(res.message, "Grandma's secret sauce"); - Assert.equal(res.sha, sha); - Assert.equal(res.tagger.name, "test-chef"); - Assert.equal(res.tagger.email, "test-chef@pasta-nirvana.it"); - - // other assertions go here - client.gitdata.deleteReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "tags/" + sha - }, - function(err, res) { - //Assert.equal(err, null); - // NOTE: Github return 'Validation Failed' error codes back, which makes no sense to me. - // ask the guys what's up here... - Assert.equal(err.code, 422); - - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/git/tags (createTag)", function(next) { - client.gitdata.createTag( - { - user: "mikedeboertest", - repo: "node_chat", - tag: "test-pasta", - message: "Grandma's secret sauce", - object: "17e0734295ffd8174f91f04ba8e8f8e51954b793", - type: "commit", - tagger: { - name: "test-chef", - email: "test-chef@pasta-nirvana.it", - date: "2008-07-09T16:13:30+12:00" - } - }, - function(err, res) { - Assert.equal(err, null); - var sha = res.sha; - - client.gitdata.getTag( - { - user: "mikedeboertest", - repo: "node_chat", - sha: sha - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tag, "test-pasta"); - Assert.equal(res.message, "Grandma's secret sauce"); - Assert.equal(res.sha, sha); - Assert.equal(res.tagger.name, "test-chef"); - Assert.equal(res.tagger.email, "test-chef@pasta-nirvana.it"); - - // other assertions go here - client.gitdata.deleteReference( - { - user: "mikedeboertest", - repo: "node_chat", - ref: "tags/" + sha - }, - function(err, res) { - //Assert.equal(err, null); - // NOTE: Github return 'Validation Failed' error codes back, which makes no sense to me. - // ask the guys what's up here... - Assert.equal(err.code, 422); - - next(); - } - ); - } - ); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/git/trees/:sha (getTree)", function(next) { - client.gitdata.getTree( - { - user: "mikedeboertest", - repo: "node_chat", - sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f", - recursive: false - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tree[0].type, "blob"); - Assert.equal(res.tree[0].path, "LICENSE-MIT"); - Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6"); - Assert.equal(res.tree[0].mode, "100644"); - Assert.equal(res.tree[0].size, 1075); - - client.gitdata.getTree( - { - user: "mikedeboertest", - repo: "node_chat", - sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f", - recursive: true - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tree[0].type, "blob"); - Assert.equal(res.tree[0].path, "LICENSE-MIT"); - Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6"); - Assert.equal(res.tree[0].mode, "100644"); - Assert.equal(res.tree[0].size, 1075); - - next(); - } - ); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/git/trees (createTree)", function(next) { - client.gitdata.getTree( - { - user: "mikedeboertest", - repo: "node_chat", - sha: "8ce4393a319b60bc6179509e0c46dee83c179f9f", - recursive: false - }, - function(err, res) { - Assert.equal(err, null); - var file = res.tree[0]; - - client.gitdata.createTree( - { - base_tree: "8ce4393a319b60bc6179509e0c46dee83c179f9f", - user: "mikedeboertest", - repo: "node_chat", - tree: [ - { - path: file.path, - mode: "100755", - type: file.type, - sha: file.sha - } - ] - }, - function(err, res) { - Assert.equal(err, null); - var sha = res.sha; - - client.gitdata.getTree( - { - user: "mikedeboertest", - repo: "node_chat", - sha: sha, - recursive: true - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tree[0].type, "blob"); - Assert.equal(res.tree[0].path, "LICENSE-MIT"); - Assert.equal(res.tree[0].sha, "f30a31de94635399f42fd05f91f6ed3ff2f013d6"); - Assert.equal(res.tree[0].mode, "100755"); - Assert.equal(res.tree[0].size, 1075); - - next(); - } - ); - } - ); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignore.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignore.js deleted file mode 100644 index 3caa4b0c..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignore.js +++ /dev/null @@ -1,112 +0,0 @@ -/** - * mixin gitignore - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var gitignore = module.exports = { - gitignore: {} -}; - -(function() { - /** section: github - * gitignore#templates(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.templates = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * gitignore#template(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - name (String): Required. The name of the .gitignore template to get - **/ - this.template = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(gitignore.gitignore); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignoreTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignoreTest.js deleted file mode 100644 index e533eb4c..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/gitignoreTest.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[gitignore]", function() { - var client; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - }); - - it("should successfully execute GET /gitignore/templates (templates)", function(next) { - client.gitignore.templates( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - Assert.ifError(err); - Assert(Array.isArray(res)); - Assert(res.length > 10); - next(); - } - ); - }); - - it("should successfully execute GET /gitignore/templates/:name (template)", function(next) { - client.gitignore.template( - { - name: "C" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - Assert.ifError(err); - Assert('name' in res); - Assert('source' in res); - Assert(typeof res.source === 'string'); - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/index.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/index.js deleted file mode 100644 index 5ce2480f..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** - * class Github - * - * A Node.JS module, which provides an object oriented wrapper for the GitHub v3 API. - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var Fs = require("fs"); -var Util = require("./../../util"); -var error = require("./../../error"); - -var GithubHandler = module.exports = function(client) { - this.client = client; - this.routes = JSON.parse(Fs.readFileSync(__dirname + "/routes.json", "utf8")); -}; - -var proto = { - sendError: function(err, block, msg, callback) { - if (this.client.debug) - Util.log(err, block, msg.user, "error"); - if (typeof err == "string") - err = new error.InternalServerError(err); - if (callback) - callback(err); - } -}; - -["gists", "gitdata", "issues", "authorization", "orgs", "statuses", "pullRequests", "repos", "user", "events", "releases", "search", "markdown", "gitignore", "misc"].forEach(function(api) { - Util.extend(proto, require("./" + api)); -}); - -GithubHandler.prototype = proto; diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issues.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issues.js deleted file mode 100644 index 68d8ac0e..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issues.js +++ /dev/null @@ -1,1246 +0,0 @@ -/** - * mixin issues - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var issues = module.exports = { - issues: {} -}; - -(function() { - /** section: github - * issues#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - filter (String): Optional. Validation rule: ` ^(all|assigned|created|mentioned|subscribed)$ `. - * - state (String): Optional. open, closed, or all Validation rule: ` ^(open|closed|all)$ `. - * - labels (String): Optional. String list of comma separated Label names. Example: bug,ui,@high - * - sort (String): Optional. Validation rule: ` ^(created|updated|comments)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#repoIssues(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - milestone (String): Optional. Validation rule: ` ^([0-9]+|none|\*)$ `. - * - state (String): Optional. open, closed, or all Validation rule: ` ^(open|closed|all)$ `. - * - assignee (String): Optional. String User login, `none` for Issues with no assigned User. `*` for Issues with any assigned User. - * - creator (String): Optional. The user that created the issue. - * - mentioned (String): Optional. String User login. - * - labels (String): Optional. String list of comma separated Label names. Example: bug,ui,@high - * - sort (String): Optional. Validation rule: ` ^(created|updated|comments)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.repoIssues = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getRepoIssue(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.getRepoIssue = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - title (String): Required. - * - body (String): Optional. - * - assignee (String): Optional. Login for the user that this issue should be assigned to. - * - milestone (Number): Optional. Milestone to associate this issue with. Validation rule: ` ^[0-9]+$ `. - * - labels (Json): Optional. Array of strings - Labels to associate with this issue. - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#edit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - title (String): Optional. - * - body (String): Optional. - * - assignee (String): Optional. Login for the user that this issue should be assigned to. - * - milestone (Number): Optional. Milestone to associate this issue with. Validation rule: ` ^[0-9]+$ `. - * - labels (Json): Optional. Array of strings - Labels to associate with this issue. - * - state (String): Optional. open or closed Validation rule: ` ^(open|closed)$ `. - **/ - this.edit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#repoComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sort (String): Optional. Validation rule: ` ^(created|updated)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.repoComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#createComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - body (String): Required. - **/ - this.createComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#editComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - * - body (String): Required. - **/ - this.editComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#deleteComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.deleteComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getEvents(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getEvents = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getRepoEvents(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getRepoEvents = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getEvent(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getEvent = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getLabels(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getLabels = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getLabel(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - **/ - this.getLabel = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#createLabel(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - * - color (String): Required. 6 character hex code, without a leading #. - **/ - this.createLabel = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#updateLabel(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - * - color (String): Required. 6 character hex code, without a leading #. - **/ - this.updateLabel = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#deleteLabel(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - **/ - this.deleteLabel = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getIssueLabels(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.getIssueLabels = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getAllMilestones(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - state (String): Optional. Validation rule: ` ^(open|closed)$ `. - * - sort (String): Optional. due_date, completeness, default: due_date Validation rule: ` ^(due_date|completeness)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAllMilestones = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#getMilestone(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.getMilestone = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#createMilestone(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - title (String): Required. - * - state (String): Optional. Validation rule: ` ^(open|closed)$ `. - * - description (String): Optional. - * - due_on (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.createMilestone = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#updateMilestone(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - title (String): Required. - * - state (String): Optional. Validation rule: ` ^(open|closed)$ `. - * - description (String): Optional. - * - due_on (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.updateMilestone = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * issues#deleteMilestone(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.deleteMilestone = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(issues.issues); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issuesTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issuesTest.js deleted file mode 100644 index c9f217bf..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/issuesTest.js +++ /dev/null @@ -1,423 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[issues]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /issues (getAll)", function(next) { - client.issues.getAll( - { - filter: "created", - state: "open", - labels: "", - sort: "updated", - direction: "asc" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - var issue = res[0]; - Assert.equal(issue.title, "My First Issue"); - Assert.equal(issue.number, 2); - Assert.equal(issue.state, "open"); - Assert.equal(issue.body, "Willing to start a debate on the best recipe of macaroni."); - Assert.equal(issue.assignee.login, "mikedeboertest"); - - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues (repoIssues)", function(next) { - client.issues.repoIssues( - { - user: "mikedeboertest", - repo: "node_chat", - state: "open", - sort: "updated", - direction: "asc" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.length, 1); - var issue = res[0]; - Assert.equal(issue.title, "My First Issue"); - Assert.equal(issue.number, 2); - Assert.equal(issue.state, "open"); - Assert.equal(issue.body, "Willing to start a debate on the best recipe of macaroni."); - Assert.equal(issue.assignee.login, "mikedeboertest"); - - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/:number (getRepoIssue)", function(next) { - client.issues.getRepoIssue( - { - user: "mikedeboertest", - repo: "node_chat", - number: 2 - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.title, "My First Issue"); - Assert.equal(res.number, 2); - Assert.equal(res.state, "open"); - Assert.equal(res.body, "Willing to start a debate on the best recipe of macaroni."); - Assert.equal(res.assignee.login, "mikedeboertest"); - - next(); - } - ); - }); -/* - it("should successfully execute POST /repos/:user/:repo/issues (create)", function(next) { - client.issues.create( - { - user: "String", - repo: "String", - title: "String", - body: "String", - assignee: "String", - milestone: "Number", - labels: "Json" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/issues/:number (edit)", function(next) { - client.issues.edit( - { - user: "String", - repo: "String", - number: "Number", - title: "String", - body: "String", - assignee: "String", - milestone: "Number", - labels: "Json" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/:number/comments (getComments)", function(next) { - client.issues.getComments( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/comments/:id (getComment)", function(next) { - client.issues.getComment( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/issues/:number/comments (createComment)", function(next) { - client.issues.createComment( - { - user: "String", - repo: "String", - number: "Number", - body: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/issues/comments/:id (editComment)", function(next) { - client.issues.editComment( - { - user: "String", - repo: "String", - id: "String", - body: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/issues/comments/:id (deleteComment)", function(next) { - client.issues.deleteComment( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/:number/events (getEvents)", function(next) { - client.issues.getEvents( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/events (getRepoEvents)", function(next) { - client.issues.getRepoEvents( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/issues/events/:id (getEvent)", function(next) { - client.issues.getEvent( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/labels (getLabels)", function(next) { - client.issues.getLabels( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/labels/:name (getLabel)", function(next) { - client.issues.getLabel( - { - user: "String", - repo: "String", - name: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/labels (createLabel)", function(next) { - client.issues.createLabel( - { - user: "String", - repo: "String", - name: "String", - color: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/labels/:name (updateLabel)", function(next) { - client.issues.updateLabel( - { - user: "String", - repo: "String", - name: "String", - color: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/labels/:name (deleteLabel)", function(next) { - client.issues.deleteLabel( - { - user: "String", - repo: "String", - name: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/milestones (getAllMilestones)", function(next) { - client.issues.getAllMilestones( - { - user: "String", - repo: "String", - state: "String", - sort: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/milestones/:number (getMilestone)", function(next) { - client.issues.getMilestone( - { - user: "String", - repo: "String", - number: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/milestones (createMilestone)", function(next) { - client.issues.createMilestone( - { - user: "String", - repo: "String", - title: "String", - state: "String", - description: "String", - due_on: "Date" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/milestones/:number (updateMilestone)", function(next) { - client.issues.updateMilestone( - { - user: "String", - repo: "String", - number: "Number", - title: "String", - state: "String", - description: "String", - due_on: "Date" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/milestones/:number (deleteMilestone)", function(next) { - client.issues.deleteMilestone( - { - user: "String", - repo: "String", - number: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - });*/ -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdown.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdown.js deleted file mode 100644 index c7882c95..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdown.js +++ /dev/null @@ -1,114 +0,0 @@ -/** - * mixin markdown - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var markdown = module.exports = { - markdown: {} -}; - -(function() { - /** section: github - * markdown#render(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - text (String): Required. The Markdown text to render - * - mode (String): Optional. The rendering mode, `markdown` to render a document as plain Markdown, just like README files are rendered. `gfm` to render a document as user-content, e.g. like user comments or issues are rendered. In GFM mode, hard line breaks are always taken into account, and issue and user mentions are linked accordingly. Validation rule: ` ^(markdown|gfm)$ `. - * - context (String): Optional. The repository context, only taken into account when rendering as `gfm` - **/ - this.render = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * markdown#renderRaw(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - data (String): Required. Raw data to send as the body of the request - **/ - this.renderRaw = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(markdown.markdown); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdownTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdownTest.js deleted file mode 100644 index 29846a0f..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/markdownTest.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[markdown]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - /*client.authenticate({ - type: "oauth", - token: token - });*/ - }); - - it("should successfully execute POST /markdown (render)", function(next) { - client.markdown.render( - { - text: "Hello world github/linguist#1 **cool**, and #1!", - mode: "gfm", - context: "github/gollem" - }, - function(err, res) { - Assert.equal(err, null); - console.log(res); - next(); - } - ); - }); - - it("should successfully execute POST /markdown/raw (render)", function(next) { - client.markdown.renderRaw( - { - data: "Hello world github/linguist#1 **cool**, and #1!" - }, - function(err, res) { - Assert.equal(err, null); - console.log(res); - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/misc.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/misc.js deleted file mode 100644 index 6d3723b2..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/misc.js +++ /dev/null @@ -1,157 +0,0 @@ -/** - * mixin misc - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var misc = module.exports = { - misc: {} -}; - -(function() { - /** section: github - * misc#emojis(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.emojis = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * misc#meta(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.meta = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * misc#rateLimit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.rateLimit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(misc.misc); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/miscTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/miscTest.js deleted file mode 100644 index 6cee44f2..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/miscTest.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[misc]", function() { - var client; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - }); - - it("should successfully execute GET /emojis (emojis)", function(next) { - client.misc.emojis( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - Assert.ifError(err); - // A common emoji on github - Assert('shipit' in res); - next(); - } - ); - }); - - it("should successfully execute GET /meta (meta)", function(next) { - client.misc.meta( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - Assert('hooks' in res); - Assert('git' in res); - next(); - } - ); - }); - - it("should successfully execute GET /rate_limit (rateLimit)", function(next) { - client.misc.rateLimit( - {}, - function(err, res) { - Assert.equal(err, null); - Assert('resources' in res); - Assert('core' in res.resources); - Assert(typeof res.resources.core.limit === 'number'); - Assert(typeof res.resources.core.remaining === 'number'); - Assert(typeof res.resources.core.reset === 'number'); - Assert('search' in res.resources); - Assert(typeof res.resources.search.limit === 'number'); - Assert(typeof res.resources.search.remaining === 'number'); - Assert(typeof res.resources.search.reset === 'number'); - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgs.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgs.js deleted file mode 100644 index e584c4ea..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgs.js +++ /dev/null @@ -1,1140 +0,0 @@ -/** - * mixin orgs - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var orgs = module.exports = { - orgs: {} -}; - -(function() { - /** section: github - * orgs#getFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#update(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - billing_email (String): Optional. Billing email address. This address is not publicized. - * - company (String): Optional. - * - email (String): Optional. Publicly visible email address. - * - location (String): Optional. - * - name (String): Optional. - **/ - this.update = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getMembers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - * - filter (String): Optional. Validation rule: ` ^(all|2fa_disabled)$ `. - **/ - this.getMembers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - user (String): Required. - **/ - this.getMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#removeMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - user (String): Required. - **/ - this.removeMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getPublicMembers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - **/ - this.getPublicMembers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getPublicMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - user (String): Required. - **/ - this.getPublicMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#publicizeMembership(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - user (String): Required. - **/ - this.publicizeMembership = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#concealMembership(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - user (String): Required. - **/ - this.concealMembership = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeams(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTeams = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeam(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.getTeam = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#createTeam(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - name (String): Required. - * - repo_names (Array): Optional. Array of strings - * - permission (String): Optional. `pull` - team members can pull, but not push or administer this repositories (Default), `push` - team members can pull and push, but not administer this repositores, `admin` - team members can pull, push and administer these repositories. Validation rule: ` ^(pull|push|admin)$ `. - **/ - this.createTeam = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#updateTeam(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - name (String): Required. - * - permission (String): Optional. `pull` - team members can pull, but not push or administer this repositories (Default), `push` - team members can pull and push, but not administer this repositores, `admin` - team members can pull, push and administer these repositories. Validation rule: ` ^(pull|push|admin)$ `. - **/ - this.updateTeam = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#deleteTeam(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.deleteTeam = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeamMembers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTeamMembers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeamMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - **/ - this.getTeamMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#addTeamMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - **/ - this.addTeamMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#deleteTeamMember(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - **/ - this.deleteTeamMember = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#addTeamMembership(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - **/ - this.addTeamMembership = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeamRepos(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTeamRepos = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#getTeamRepo(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getTeamRepo = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#addTeamRepo(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - * - repo (String): Required. - **/ - this.addTeamRepo = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * orgs#deleteTeamRepo(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - user (String): Required. - * - repo (String): Required. - **/ - this.deleteTeamRepo = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(orgs.orgs); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgsTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgsTest.js deleted file mode 100644 index 44faeed8..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/orgsTest.js +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[orgs]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /users/:user/orgs (getFromUser)", function(next) { - client.orgs.getFromUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org (get)", function(next) { - client.orgs.get( - { - org: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /orgs/:org (update)", function(next) { - client.orgs.update( - { - org: "String", - billing_email: "String", - company: "String", - email: "String", - location: "String", - name: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/members (getMembers)", function(next) { - client.orgs.getMembers( - { - org: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/members/:user (getMember)", function(next) { - client.orgs.getMember( - { - org: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /orgs/:org/members/:user (removeMember)", function(next) { - client.orgs.removeMember( - { - org: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/public_members (getPublicMembers)", function(next) { - client.orgs.getPublicMembers( - { - org: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/public_members/:user (getPublicMember)", function(next) { - client.orgs.getPublicMember( - { - org: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /orgs/:org/public_members/:user (publicizeMembership)", function(next) { - client.orgs.publicizeMembership( - { - org: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /orgs/:org/public_members/:user (concealMembership)", function(next) { - client.orgs.concealMembership( - { - org: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/teams (getTeams)", function(next) { - client.orgs.getTeams( - { - org: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /teams/:id (getTeam)", function(next) { - client.orgs.getTeam( - { - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /orgs/:org/teams (createTeam)", function(next) { - client.orgs.createTeam( - { - org: "String", - name: "String", - repo_names: "Array", - permission: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /teams/:id (updateTeam)", function(next) { - client.orgs.updateTeam( - { - id: "String", - name: "String", - permission: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /teams/:id (deleteTeam)", function(next) { - client.orgs.deleteTeam( - { - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /teams/:id/members (getTeamMembers)", function(next) { - client.orgs.getTeamMembers( - { - id: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /teams/:id/members/:user (getTeamMember)", function(next) { - client.orgs.getTeamMember( - { - id: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /teams/:id/members/:user (addTeamMember)", function(next) { - client.orgs.addTeamMember( - { - id: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /teams/:id/members/:user (deleteTeamMember)", function(next) { - client.orgs.deleteTeamMember( - { - id: "String", - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /teams/:id/repos (getTeamRepos)", function(next) { - client.orgs.getTeamRepos( - { - id: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /teams/:id/repos/:user/:repo (getTeamRepo)", function(next) { - client.orgs.getTeamRepo( - { - id: "String", - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /teams/:id/repos/:user/:repo (addTeamRepo)", function(next) { - client.orgs.addTeamRepo( - { - id: "String", - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /teams/:id/repos/:user/:repo (deleteTeamRepo)", function(next) { - client.orgs.deleteTeamRepo( - { - id: "String", - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequests.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequests.js deleted file mode 100644 index 56c095f9..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequests.js +++ /dev/null @@ -1,757 +0,0 @@ -/** - * mixin pullRequests - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var pullRequests = module.exports = { - pullRequests: {} -}; - -(function() { - /** section: github - * pullRequests#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - state (String): Optional. open, closed, or all Validation rule: ` ^(open|closed|all)$ `. - * - head (String): Optional. - * - base (String): Optional. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - * - sort (String): Optional. Possible values are: `created`, `updated`, `popularity`, `long-running`, Default: `created` Validation rule: ` ^(created|updated|popularity|long-running)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - title (String): Required. - * - body (String): Optional. - * - base (String): Required. The branch (or git ref) you want your changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repo that requests a merge to a base of another repo. - * - head (String): Required. The branch (or git ref) where your changes are implemented. - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#createFromIssue(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - issue (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - base (String): Required. The branch (or git ref) you want your changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repo that requests a merge to a base of another repo. - * - head (String): Required. The branch (or git ref) where your changes are implemented. - **/ - this.createFromIssue = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#update(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - state (String): Optional. Validation rule: ` ^(open|closed)$ `. - * - title (String): Required. - * - body (String): Optional. - **/ - this.update = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#getCommits(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getCommits = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#getFiles(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFiles = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#getMerged(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getMerged = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#merge(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - commit_message (String): Optional. The message that will be used for the merge commit - **/ - this.merge = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#getComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#getComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.getComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#createComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - body (String): Required. - * - commit_id (String): Required. Sha of the commit to comment on. - * - path (String): Required. Relative path of the file to comment on. - * - position (Number): Required. Column index in the diff to comment on. - **/ - this.createComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#createCommentReply(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - body (String): Required. - * - in_reply_to (Number): Required. - **/ - this.createCommentReply = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#updateComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - * - body (String): Required. - **/ - this.updateComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * pullRequests#deleteComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - number (Number): Required. Validation rule: ` ^[0-9]+$ `. - **/ - this.deleteComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(pullRequests.pullRequests); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequestsTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequestsTest.js deleted file mode 100644 index 0b47fe8e..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/pullRequestsTest.js +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[pullRequests]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls (getAll)", function(next) { - client.pullRequests.getAll( - { - user: "String", - repo: "String", - base: "String", - head: "String", - state: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/:number (get)", function(next) { - client.pullRequests.get( - { - user: "String", - repo: "String", - number: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/pulls (create)", function(next) { - client.pullRequests.create( - { - user: "String", - repo: "String", - title: "String", - body: "String", - base: "String", - head: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/pulls (createFromIssue)", function(next) { - client.pullRequests.createFromIssue( - { - user: "String", - repo: "String", - issue: "Number", - base: "String", - head: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/pulls/:number (update)", function(next) { - client.pullRequests.update( - { - user: "String", - repo: "String", - number: "Number", - state: "String", - title: "String", - body: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/:number/commits (getCommits)", function(next) { - client.pullRequests.getCommits( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/:number/files (getFiles)", function(next) { - client.pullRequests.getFiles( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/:number/merge (getMerged)", function(next) { - client.pullRequests.getMerged( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /repos/:user/:repo/pulls/:number/merge (merge)", function(next) { - client.pullRequests.merge( - { - user: "String", - repo: "String", - number: "Number", - commit_message: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/:number/comments (getComments)", function(next) { - client.pullRequests.getComments( - { - user: "String", - repo: "String", - number: "Number", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/pulls/comments/:number (getComment)", function(next) { - client.pullRequests.getComment( - { - user: "String", - repo: "String", - number: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/pulls/:number/comments (createComment)", function(next) { - client.pullRequests.createComment( - { - user: "String", - repo: "String", - number: "Number", - body: "String", - commit_id: "String", - path: "String", - position: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/pulls/:number/comments (createCommentReply)", function(next) { - client.pullRequests.createCommentReply( - { - user: "String", - repo: "String", - number: "Number", - body: "String", - in_reply_to: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/pulls/comments/:number (updateComment)", function(next) { - client.pullRequests.updateComment( - { - user: "String", - repo: "String", - number: "Number", - body: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/pulls/comments/:number (deleteComment)", function(next) { - client.pullRequests.deleteComment( - { - user: "String", - repo: "String", - number: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releases.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releases.js deleted file mode 100644 index 1d83380e..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releases.js +++ /dev/null @@ -1,507 +0,0 @@ -/** - * mixin releases - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var releases = module.exports = { - releases: {} -}; - -(function() { - /** section: github - * releases#listReleases(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.listReleases = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#getRelease(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - **/ - this.getRelease = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#createRelease(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - repo (String): Required. - * - tag_name (String): Required. String of the tag - * - target_commitish (String): Optional. Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually master). - * - name (String): Optional. - * - body (String): Optional. - * - draft (Boolean): Optional. true to create a draft (unpublished) release, false to create a published one. Default: false - * - prerelease (Boolean): Optional. true to identify the release as a prerelease. false to identify the release as a full release. Default: false - **/ - this.createRelease = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#editRelease(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - * - tag_name (String): Required. String of the tag - * - target_commitish (String): Optional. Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually master). - * - name (String): Optional. - * - body (String): Optional. - * - draft (Boolean): Optional. true to create a draft (unpublished) release, false to create a published one. Default: false - * - prerelease (Boolean): Optional. true to identify the release as a prerelease. false to identify the release as a full release. Default: false - **/ - this.editRelease = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#deleteRelease(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - **/ - this.deleteRelease = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#listAssets(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - **/ - this.listAssets = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#getAsset(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - **/ - this.getAsset = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#uploadAsset(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - * - name (String): Required. the file name of the asset - **/ - this.uploadAsset = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#editAsset(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - * - name (String): Required. - * - label (String): Optional. An alternate short description of the asset. Used in place of the filename. - **/ - this.editAsset = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * releases#deleteAsset(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - owner (String): Required. - * - id (Number): Required. - * - repo (String): Required. - **/ - this.deleteAsset = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(releases.releases); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releasesTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releasesTest.js deleted file mode 100644 index 9b7e44e1..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/releasesTest.js +++ /dev/null @@ -1,262 +0,0 @@ - /* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); -var fs = require("fs"); -var mime = require("mime"); - -describe("[releases]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - var owner = "greggman"; - var repo = "test"; - var haveWriteAccess = true; // set to false if the authenticated person below does not have write access to the repo above - var releaseIdWithAsset = 393621; // Some release id from the repo above that has at least 1 asset. - var filePathToUpload = __filename; - var fileSizeToUpload = fs.statSync(filePathToUpload).size; - - var releaseId; // release id found when listing releases. Used for get release - var newReleaseId; // release id created when creating release, used for edit and delete release - var assetId; // asset id found when listing assets. Used for get asset - var newAssetId; // asset id used when creating asset. Used for edit and delete asset - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /repos/:owner/:repo/releases (listReleases)", function(next) { - client.releases.listReleases( - { - owner: owner, - repo: repo, - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res instanceof Array); - if (res instanceof Array && res.length > 0) { - releaseId = res[0].id; - } - next(); - } - ); - }); - - it("should successfully execute GET /repos/:owner/:repo/releases/:id (getRelease)", function(next) { - if (!releaseId) { - next(); - return; - } - client.releases.getRelease( - { - owner: owner, - id: releaseId, - repo: repo - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, releaseId); - next(); - } - ); - }); - - it("should successfully execute POST /repos/:owner/:repo/releases (createRelease)", function(next) { - if (!haveWriteAccess) { - next(); - return; - } - client.releases.createRelease( - { - owner: owner, - repo: repo, - tag_name: "node-github-tag", - target_commitish: "master", - name: "node-github-name", - body: "node-github-body", - draft: false, - prerelease: true, - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.tag_name, "node-github-tag"); - Assert.equal(res.target_commitish, "master"); - Assert.equal(res.name, "node-github-name"); - Assert.equal(res.body, "node-github-body"); - Assert.equal(res.assets.length, 0); - Assert.ok(res.prerelease); - Assert.ok(!res.draft); - newReleaseId = res.id; - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:owner/:repo/releases/:id (editRelease)", function(next) { - if (!haveWriteAccess) { - next(); - return; - } - client.releases.editRelease( - { - owner: owner, - id: newReleaseId, - repo: repo, - tag_name: "node-github-new-tag", - target_commitish: "master", - name: "node-github-new-name", - body: "node-github-new-body", - draft: true, - prerelease: true, - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, newReleaseId); - Assert.equal(res.tag_name, "node-github-new-tag"); - Assert.equal(res.target_commitish, "master"); - Assert.equal(res.name, "node-github-new-name"); - Assert.equal(res.body, "node-github-new-body"); - Assert.equal(res.assets.length, 0); - Assert.ok(res.prerelease); - Assert.ok(res.draft); - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:owner/:repo/releases/:id (deleteRelease)", function(next) { - if (!haveWriteAccess) { - next(); - return; - } - client.releases.deleteRelease( - { - owner: owner, - repo: repo, - id: newReleaseId, - }, - function(err, res) { - Assert.equal(err, null); - next(); - } - ); - }); - - it("should successfully execute GET /repos/:owner/:repo/releases/:id/assets (listAssets)", function(next) { - client.releases.listAssets( - { - owner: owner, - id: releaseIdWithAsset, - repo: repo - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res instanceof Array); - if (res instanceof Array && res.length > 0) { - assetId = res[0].id; - } - next(); - } - ); - }); - - it("should successfully execute GET /repos/:owner/:repo/releases/assets/:id (getAsset)", function(next) { - if (!assetId) { - next(); - return; - } - client.releases.getAsset( - { - owner: owner, - id: assetId, - repo: repo - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.id, assetId); - next(); - } - ); - }); - - it("should successfully execute POST /repos/:owner/:repo/releases/:id/assets (uploadAsset)", function(next) { - var name = "somenameornot.zip"; - client.releases.uploadAsset( - { - owner: owner, - id: releaseIdWithAsset, - repo: repo, - name: name, - filePath: filePathToUpload - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.content_type, mime.lookup(name)); // matches extension of name, not filePath - Assert.equal(res.state, "uploaded"); - Assert.equal(res.size, fileSizeToUpload); - Assert.equal(res.name, name); - newAssetId = res.id; - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:owner/:repo/releases/assets/:id (editAsset)", function(next) { - if (!newAssetId) { - next(); - return; - } - var newName = "somenewname.zip"; - client.releases.editAsset( - { - owner: owner, - id: newAssetId, - repo: repo, - name: newName, - label: "foo" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.state, "uploaded"); - Assert.equal(res.size, fileSizeToUpload); - Assert.equal(res.name, newName); - Assert.equal(res.label, "foo"); - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:owner/:repo/releases/assets/:id (deleteAsset)", function(next) { - if (!newAssetId) { - next(); - return; - } - client.releases.deleteAsset( - { - owner: owner, - id: newAssetId, - repo: repo - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/repos.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/repos.js deleted file mode 100644 index 4229d18d..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/repos.js +++ /dev/null @@ -1,3548 +0,0 @@ -/** - * mixin repos - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var repos = module.exports = { - repos: {} -}; - -(function() { - /** section: github - * repos#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - type (String): Optional. Possible values: `all`, `owner`, `public`, `private`, `member`. Default: `all`. Validation rule: ` ^(all|owner|public|private|member)$ `. - * - sort (String): Optional. Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`. Validation rule: ` ^(created|updated|pushed|full_name)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - type (String): Optional. Possible values: `all`, `owner`, `member`. Default: `public`. Validation rule: ` ^(all|owner|member)$ `. - * - sort (String): Optional. Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`. Validation rule: ` ^(created|updated|pushed|full_name)$ `. - * - direction (String): Optional. Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getFromOrg(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - type (String): Optional. Possible values: `all`, `public`, `member`. Default: `all`. Validation rule: ` ^(all|public|member)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFromOrg = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - name (String): Required. - * - description (String): Optional. - * - homepage (String): Optional. - * - private (Boolean): Optional. True to create a private repository, false to create a public one. Creating private repositories requires a paid GitHub account. Default is false. - * - has_issues (Boolean): Optional. True to enable issues for this repository, false to disable them. Default is true. - * - has_wiki (Boolean): Optional. True to enable the wiki for this repository, false to disable it. Default is true. - * - has_downloads (Boolean): Optional. True to enable downloads for this repository, false to disable them. Default is true. - * - auto_init (Boolean): Optional. True to create an initial commit with empty README. Default is false - * - gitignore_template (String): Optional. Desired language or platform .gitignore template to apply. Ignored if auto_init parameter is not provided. - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createFromOrg(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - name (String): Required. - * - description (String): Optional. - * - homepage (String): Optional. - * - private (Boolean): Optional. True to create a private repository, false to create a public one. Creating private repositories requires a paid GitHub account. Default is false. - * - has_issues (Boolean): Optional. True to enable issues for this repository, false to disable them. Default is true. - * - has_wiki (Boolean): Optional. True to enable the wiki for this repository, false to disable it. Default is true. - * - has_downloads (Boolean): Optional. True to enable downloads for this repository, false to disable them. Default is true. - * - auto_init (Boolean): Optional. True to create an initial commit with empty README. Default is false - * - gitignore_template (String): Optional. Desired language or platform .gitignore template to apply. Ignored if auto_init parameter is not provided. - * - team_id (Number): Optional. The id of the team that will be granted access to this repository. This is only valid when creating a repo in an organization. Validation rule: ` ^[0-9]+$ `. - **/ - this.createFromOrg = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#one(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.one = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#update(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - * - description (String): Optional. - * - homepage (String): Optional. - * - private (Boolean): Optional. True to create a private repository, false to create a public one. Creating private repositories requires a paid GitHub account. Default is false. - * - has_issues (Boolean): Optional. True to enable issues for this repository, false to disable them. Default is true. - * - has_wiki (Boolean): Optional. True to enable the wiki for this repository, false to disable it. Default is true. - * - has_downloads (Boolean): Optional. True to enable downloads for this repository, false to disable them. Default is true. - * - default_branch (String): Optional. Updates the default branch for this repository. - **/ - this.update = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#delete(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.delete = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#merge(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - base (String): Required. The branch (or git ref) you want your changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repo that requests a merge to a base of another repo. - * - head (String): Required. The branch (or git ref) where your changes are implemented. - * - commit_message (String): Optional. Commit message to use for the merge commit. If omitted, a default message will be used. - **/ - this.merge = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getContributors(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - anon (Boolean): Optional. Set to 1 or true to include anonymous contributors in results. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getContributors = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getLanguages(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getLanguages = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getTeams(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTeams = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getTags(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTags = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getBranches(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getBranches = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getBranch(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - branch (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getBranch = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCollaborators(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getCollaborators = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCollaborator(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - collabuser (String): Required. - **/ - this.getCollaborator = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#addCollaborator(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - collabuser (String): Required. - **/ - this.addCollaborator = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#removeCollaborator(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - collabuser (String): Required. - **/ - this.removeCollaborator = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCommits(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Optional. Sha or branch to start listing commits from. - * - path (String): Optional. Only commits containing this file path will be returned. - * - author (String): Optional. GitHub login or email address by which to filter by commit author. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - * - since (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - * - until (Date): Optional. Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ - **/ - this.getCommits = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCommit(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - **/ - this.getCommit = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getAllCommitComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getAllCommitComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCommitComments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getCommitComments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createCommitComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - * - body (String): Required. - * - commit_id (String): Required. Sha of the commit to comment on. - * - path (String): Optional. Relative path of the file to comment on. - * - position (Number): Optional. Line index in the diff to comment on. - * - line (Number): Optional. Line number in the file to comment on. Defaults to 1. - **/ - this.createCommitComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getCommitComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getCommitComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#updateCommitComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - * - body (String): Required. - **/ - this.updateCommitComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#compareCommits(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - base (String): Required. The branch (or git ref) you want your changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repo that requests a merge to a base of another repo. - * - head (String): Required. The branch (or git ref) where your changes are implemented. - **/ - this.compareCommits = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#deleteCommitComment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.deleteCommitComment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getReadme(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Optional. The String name of the Commit/Branch/Tag. Defaults to master. - **/ - this.getReadme = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getContent(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - path (String): Optional. The content path. - * - ref (String): Optional. The String name of the Commit/Branch/Tag. Defaults to master. - **/ - this.getContent = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createContent(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - content (String): Optional. - * - message (String): Optional. - * - path (String): Optional. The content path. - * - ref (String): Optional. The String name of the Commit/Branch/Tag. Defaults to master. - **/ - this.createContent = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createFile(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - path (String): Required. The content path. - * - message (String): Required. The commit message. - * - content (String): Required. The new file content, Base64 encoded. - * - branch (String): Optional. The branch name. If not provided, uses the repository’s default branch (usually master). - * - author (Json): Optional. - * - committer (Json): Optional. - **/ - this.createFile = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#updateFile(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - path (String): Required. The content path. - * - message (String): Required. The commit message. - * - content (String): Required. The updated file content, Base64 encoded. - * - sha (String): Required. The blob SHA of the file being replaced. - * - branch (String): Optional. The branch name. If not provided, uses the repository’s default branch (usually master). - * - author (Json): Optional. - * - committer (Json): Optional. - **/ - this.updateFile = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#deleteFile(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - path (String): Required. The content path. - * - message (String): Required. The commit message. - * - sha (String): Required. The blob SHA of the file being removed. - * - branch (String): Optional. The branch name. If not provided, uses the repository’s default branch (usually master). - * - author (Json): Optional. - * - committer (Json): Optional. - **/ - this.deleteFile = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getArchiveLink(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - ref (String): Optional. String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected. - * - archive_format (String): Required. Either tarball or zipball Validation rule: ` ^(tarball|zipball)$ `. - **/ - this.getArchiveLink = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getDownloads(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getDownloads = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getDownload(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getDownload = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#deleteDownload(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.deleteDownload = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getForks(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sort (String): Optional. Possible values: `newest`, `oldest`, `watchers`, default: `newest`. Validation rule: ` ^(newest|oldest|watchers)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getForks = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#fork(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - organization (String): Optional. Organization login. The repository will be forked into this organization. - **/ - this.fork = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getKeys(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getKeys = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - title (String): Required. - * - key (String): Required. - **/ - this.createKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#updateKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - * - title (String): Required. - * - key (String): Required. - **/ - this.updateKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#deleteKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.deleteKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStargazers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getStargazers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStarred(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getStarred = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStarredFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getStarredFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStarring(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getStarring = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#star(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.star = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#unStar(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.unStar = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getWatchers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getWatchers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getWatched(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getWatched = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getWatchedFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getWatchedFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getWatching(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getWatching = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#watch(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.watch = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#unWatch(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.unWatch = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getHooks(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getHooks = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getHook(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getHook = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createHook(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - name (String): Required. - * - config (Json): Required. A Hash containing key/value pairs to provide settings for this hook. These settings vary between the services and are defined in the github-services repo. Booleans are stored internally as `1` for true, and `0` for false. Any JSON true/false values will be converted automatically. - * - events (Array): Optional. Determines what events the hook is triggered for. Default: `['push']`. - * - active (Boolean): Optional. Determines whether the hook is actually triggered on pushes. - **/ - this.createHook = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#updateHook(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - * - name (String): Required. - * - config (Json): Required. A Hash containing key/value pairs to provide settings for this hook. Modifying this will replace the entire config object. These settings vary between the services and are defined in the github-services repo. Booleans are stored internally as `1` for true, and `0` for false. Any JSON true/false values will be converted automatically. - * - events (Array): Optional. Determines what events the hook is triggered for. This replaces the entire array of events. Default: `['push']`. - * - add_events (Array): Optional. Determines a list of events to be added to the list of events that the Hook triggers for. - * - remove_events (Array): Optional. Determines a list of events to be removed from the list of events that the Hook triggers for. - * - active (Boolean): Optional. Determines whether the hook is actually triggered on pushes. - **/ - this.updateHook = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#testHook(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.testHook = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#deleteHook(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.deleteHook = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStatsContributors(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getStatsContributors = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStatsCommitActivity(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getStatsCommitActivity = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStatsCodeFrequency(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getStatsCodeFrequency = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStatsParticipation(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getStatsParticipation = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getStatsPunchCard(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - **/ - this.getStatsPunchCard = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getDeployments(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - sha (String): Optional. The short or long sha that was recorded at creation time. Default: none. - * - ref (String): Optional. The name of the ref. This can be a branch, tag, or sha. Default: none. - * - task (String): Optional. The name of the task for the deployment. e.g. deploy or deploy:migrations. Default: none. - * - environment (String): Optional. The name of the environment that was deployed to. e.g. staging or production. Default: none. - * - user (String): Required. - * - repo (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getDeployments = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createDeployment(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - ref (String): Required. The ref to deploy. This can be a branch, tag, or sha. - * - task (String): Required. The named task to execute. e.g. deploy or deploy:migrations. Default: deploy - * - auto_merge (Boolean): Optional. Optional parameter to merge the default branch into the requested ref if it is behind the default branch. Default: true - * - required_contexts (Array): Optional. Optional array of status contexts verified against commit status checks. If this parameter is omitted from the parameters then all unique contexts will be verified before a deployment is created. To bypass checking entirely pass an empty array. Defaults to all unique contexts. - * - payload (String): Optional. Optional JSON payload with extra information about the deployment. Default: '' - * - environment (String): Optional. The name of the environment that was deployed to. e.g. staging or production. Default: none. - * - description (String): Optional. Optional short description. Default: '' - * - user (String): Required. - * - repo (String): Required. - **/ - this.createDeployment = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#getDeploymentStatuses(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.getDeploymentStatuses = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * repos#createDeploymentStatus(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - state (String): Optional. The state of the status. Can be one of pending, success, error, or failure. - * - target_url (String): Optional. The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. Default: '' - * - description (String): Optional. A short description of the status. Default: '' - * - user (String): Required. - * - repo (String): Required. - * - id (String): Required. - **/ - this.createDeploymentStatus = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(repos.repos); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/reposTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/reposTest.js deleted file mode 100644 index 356fab65..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/reposTest.js +++ /dev/null @@ -1,1126 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[repos]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /user/repos (getAll)", function(next) { - client.repos.getAll( - { - type: "String", - sort: "String", - direction: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/repos (getFromUser)", function(next) { - client.repos.getFromUser( - { - user: "String", - type: "String", - sort: "String", - direction: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /orgs/:org/repos (getFromOrg)", function(next) { - client.repos.getFromOrg( - { - org: "String", - type: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /user/repos (create)", function(next) { - client.repos.create( - { - name: "String", - description: "String", - homepage: "String", - private: "Boolean", - has_issues: "Boolean", - has_wiki: "Boolean", - has_downloads: "Boolean", - auto_init: "Boolean", - gitignore_template: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /orgs/:org/repos (createFromOrg)", function(next) { - client.repos.createFromOrg( - { - org: "String", - name: "String", - description: "String", - homepage: "String", - private: "Boolean", - has_issues: "Boolean", - has_wiki: "Boolean", - has_downloads: "Boolean", - auto_init: "Boolean", - gitignore_template: "String", - team_id: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo (get)", function(next) { - client.repos.get( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo (update)", function(next) { - client.repos.update( - { - user: "String", - repo: "String", - name: "String", - description: "String", - homepage: "String", - private: "Boolean", - has_issues: "Boolean", - has_wiki: "Boolean", - has_downloads: "Boolean" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo (delete)", function(next) { - client.repos.delete( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/merges (merge)", function(next) { - client.repos.merge( - { - user: "String", - repo: "String", - base: "String", - head: "String", - commit_message: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/contributors (getContributors)", function(next) { - client.repos.getContributors( - { - user: "String", - repo: "String", - anon: "Boolean", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/languages (getLanguages)", function(next) { - client.repos.getLanguages( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/teams (getTeams)", function(next) { - client.repos.getTeams( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/tags (getTags)", function(next) { - client.repos.getTags( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/branches (getBranches)", function(next) { - client.repos.getBranches( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/branches/:branch (getBranch)", function(next) { - client.repos.getBranches( - { - user: "String", - repo: "String", - branch: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/collaborators (getCollaborators)", function(next) { - client.repos.getCollaborators( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/collaborators/:collabuser (getCollaborator)", function(next) { - client.repos.getCollaborator( - { - user: "String", - repo: "String", - collabuser: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /repos/:user/:repo/collaborators/:collabuser (addCollaborator)", function(next) { - client.repos.addCollaborator( - { - user: "String", - repo: "String", - collabuser: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/collaborators/:collabuser (removeCollaborator)", function(next) { - client.repos.removeCollaborator( - { - user: "String", - repo: "String", - collabuser: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/commits (getCommits)", function(next) { - client.repos.getCommits( - { - user: "String", - repo: "String", - sha: "String", - path: "String", - page: "Number", - per_page: "Number", - author: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/commits/:sha (getCommit)", function(next) { - client.repos.getCommit( - { - user: "String", - repo: "String", - sha: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/comments (getAllCommitComments)", function(next) { - client.repos.getAllCommitComments( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/commits/:sha/comments (getCommitComments)", function(next) { - client.repos.getCommitComments( - { - user: "String", - repo: "String", - sha: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/commits/:sha/comments (createCommitComment)", function(next) { - client.repos.createCommitComment( - { - user: "String", - repo: "String", - sha: "String", - body: "String", - commit_id: "String", - path: "String", - position: "Number", - line: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/comments/:id (getCommitComment)", function(next) { - client.repos.getCommitComment( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/comments/:id (updateCommitComment)", function(next) { - client.repos.updateCommitComment( - { - user: "String", - repo: "String", - id: "String", - body: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/compare/:base...:head (compareCommits)", function(next) { - client.repos.compareCommits( - { - user: "String", - repo: "String", - base: "String", - head: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/comments/:id (deleteCommitComment)", function(next) { - client.repos.deleteCommitComment( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/readme (getReadme)", function(next) { - client.repos.getReadme( - { - user: "String", - repo: "String", - ref: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/contents/:path (getContent)", function(next) { - client.repos.getContent( - { - user: "String", - repo: "String", - path: "String", - ref: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - it("should successfully execute GET /repos/:user/:repo/contents/:path (createContent)", function(next) { - client.repos.getContent( - { - user: "String", - repo: "String", - path: "String", - ref: "String", - content:"String", - message:"String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /repos/:user/:repo/contents/:path (createFile)", function(next) { - client.repos.createFile( - { - user: "String", - repo: "String", - path: "String", - message: "String", - content: "String", - branch: "String", - author: "Json", - committer: "Json" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /repos/:user/:repo/contents/:path (updateFile)", function(next) { - client.repos.updateFile( - { - user: "String", - repo: "String", - path: "String", - message: "String", - content: "String", - sha: "String", - branch: "String", - author: "Json", - committer: "Json" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/contents/:path (deleteFile)", function(next) { - client.repos.deleteFile( - { - user: "String", - repo: "String", - path: "String", - message: "String", - sha: "String", - branch: "String", - author: "Json", - committer: "Json" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/:archive_format/:ref (getArchiveLink)", function(next) { - client.repos.getArchiveLink( - { - user: "String", - repo: "String", - archive_format: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/downloads (getDownloads)", function(next) { - client.repos.getDownloads( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/downloads/:id (getDownload)", function(next) { - client.repos.getDownload( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/downloads/:id (deleteDownload)", function(next) { - client.repos.deleteDownload( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/forks (getForks)", function(next) { - client.repos.getForks( - { - user: "String", - repo: "String", - sort: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/forks (fork)", function(next) { - client.repos.fork( - { - user: "String", - repo: "String", - organization: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/keys (getKeys)", function(next) { - client.repos.getKeys( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/keys/:id (getKey)", function(next) { - client.repos.getKey( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/keys (createKey)", function(next) { - client.repos.createKey( - { - user: "String", - repo: "String", - title: "String", - key: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /repos/:user/:repo/keys/:id (updateKey)", function(next) { - client.repos.updateKey( - { - user: "String", - repo: "String", - id: "String", - title: "String", - key: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/keys/:id (deleteKey)", function(next) { - client.repos.deleteKey( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stargazers (getStargazers)", function(next) { - client.repos.getStargazers( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/starred (getStarred)", function(next) { - client.repos.getStarred( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/starred (getStarredFromUser)", function(next) { - client.repos.getStarredFromUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/starred/:user/:repo (getStarring)", function(next) { - client.repos.getStarring( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /user/starred/:user/:repo (watch)", function(next) { - client.repos.watch( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /user/starred/:user/:repo (unWatch)", function(next) { - client.repos.unWatch( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/watchers (getWatchers)", function(next) { - client.repos.getWatchers( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/watched (getWatched)", function(next) { - client.repos.getWatched( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/watched (getWatchedFromUser)", function(next) { - client.repos.getWatchedFromUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/watched/:user/:repo (getWatching)", function(next) { - client.repos.getWatching( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /user/watched/:user/:repo (watch)", function(next) { - client.repos.watch( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /user/watched/:user/:repo (unWatch)", function(next) { - client.repos.unWatch( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/hooks (getHooks)", function(next) { - client.repos.getHooks( - { - user: "String", - repo: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/hooks/:id (getHook)", function(next) { - client.repos.getHook( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/hooks (createHook)", function(next) { - client.repos.createHook( - { - user: "String", - repo: "String", - name: "String", - config: "Json", - events: "Array", - active: "Boolean" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /repos/:user/:repo/hooks/:id (updateHook)", function(next) { - client.repos.updateHook( - { - user: "String", - repo: "String", - id: "String", - name: "String", - config: "Json", - events: "Array", - add_events: "Array", - remove_events: "Array", - active: "Boolean" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/hooks/:id/test (testHook)", function(next) { - client.repos.testHook( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /repos/:user/:repo/hooks/:id (deleteHook)", function(next) { - client.repos.deleteHook( - { - user: "String", - repo: "String", - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stats/contributors (getStatsContributors)", function(next) { - client.repos.getStatsContributors( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stats/commit_activity (getStatsCommitActivity)", function(next) { - client.repos.getStatsCommitActivity( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stats/code_frequency (getStatsCodeFrequency)", function(next) { - client.repos.getStatsCodeFrequency( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stats/participation (getStatsParticipation)", function(next) { - client.repos.getStatsParticipation( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/stats/punch_card (getStatsPunchCard)", function(next) { - client.repos.getStatsPunchCard( - { - user: "String", - repo: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/routes.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/routes.json deleted file mode 100644 index f82c8bfa..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/routes.json +++ /dev/null @@ -1,3914 +0,0 @@ -{ - "defines": { - "constants": { - "name": "Github", - "description": "A Node.JS module, which provides an object oriented wrapper for the GitHub v3 API.", - "protocol": "https", - "host": "api.github.com", - "port": 443, - "dateFormat": "YYYY-MM-DDTHH:MM:SSZ", - "requestFormat": "json", - "requestMedia": "application/vnd.github.v3+json" - }, - "response-headers": [ - "X-RateLimit-Limit", - "X-RateLimit-Remaining", - "X-RateLimit-Reset", - "X-Oauth-Scopes", - "Link", - "Location", - "Last-Modified", - "Etag", - "Status" - ], - "request-headers": [ - "If-Modified-Since", - "If-None-Match", - "Cookie", - "User-Agent", - "Accept", - "X-GitHub-OTP" - ], - "params": { - "files": { - "type": "Json", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Files that make up this gist. The key of which should be a required string filename and the value another required hash with parameters: 'content'" - }, - "user": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "org": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "repo": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "branch": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "sha": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "description": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "gist_id": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Id (SHA1 hash) of the gist." - }, - "ref": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected." - }, - "number": { - "type": "Number", - "required": true, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "" - }, - "name": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "direction": { - "type": "String", - "required": false, - "validation": "^(asc|desc)$", - "invalidmsg": "asc or desc, default: desc.", - "description": "" - }, - "since": { - "type": "Date", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ" - }, - "until": { - "type": "Date", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ" - }, - "state": { - "type": "String", - "required": false, - "validation": "^(open|closed)$", - "invalidmsg": "open, closed, default: open", - "description": "" - }, - "color": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "6 character hex code, without a leading #.", - "description": "6 character hex code, without a leading #." - }, - "permission": { - "type": "String", - "required": false, - "validation": "^(pull|push|admin)$", - "invalidmsg": "", - "description": "`pull` - team members can pull, but not push or administer this repositories (Default), `push` - team members can pull and push, but not administer this repositores, `admin` - team members can pull, push and administer these repositories." - }, - "base": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The branch (or git ref) you want your changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repo that requests a merge to a base of another repo." - }, - "head": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The branch (or git ref) where your changes are implemented." - }, - "commit_id": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "Sha of the commit to comment on.", - "description": "Sha of the commit to comment on." - }, - "line": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "Line index in the diff to comment on.", - "description": "Line index in the diff to comment on." - }, - "path": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "Relative path of the file to comment on.", - "description": "Relative path of the file to comment on." - }, - "position": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "Column index in the diff to comment on.", - "description": "Column index in the diff to comment on." - }, - "body": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "homepage": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "private": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "True to create a private repository, false to create a public one. Creating private repositories requires a paid GitHub account. Default is false." - }, - "has_issues": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "True to enable issues for this repository, false to disable them. Default is true." - }, - "has_wiki": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "True to enable the wiki for this repository, false to disable it. Default is true." - }, - "has_downloads": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "True to enable downloads for this repository, false to disable them. Default is true." - }, - "default_branch": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Updates the default branch for this repository." - }, - "collabuser": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "key": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "page": { - "type": "Number", - "required": false, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "Page number of the results to fetch." - }, - "per_page": { - "type": "Number", - "required": false, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "A custom page size up to 100. Default is 30." - }, - "scopes": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A list of scopes that this authorization is in." - }, - "note": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A note to remind you what the OAuth token is for." - }, - "note_url": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A URL to remind you what app the OAuth token is for." - }, - "auto_init": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "True to create an initial commit with empty README. Default is false" - }, - "gitignore_template": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Desired language or platform .gitignore template to apply. Ignored if auto_init parameter is not provided." - }, - "content": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "message": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "order": { - "type": "String", - "required": false, - "validation": "^(asc|desc)$", - "invalidmsg": "The sort order if sort parameter is provided. One of asc or desc. Default: desc", - "description": "asc or desc" - }, - "q": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Search Term", - "combined": true - }, - "data": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Raw data to send as the body of the request" - } - } - }, - - "gists": { - "get-all": { - "url": "/gists", - "method": "GET", - "params": { - "$page": null, - "$per_page": null, - "$since": null - } - }, - - "get-from-user": { - "url": "/users/:user/gists", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null, - "$since": null - } - }, - - "create": { - "url": "/gists", - "method": "POST", - "params": { - "$description": null, - "public": { - "type": "Boolean", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$files": null - } - }, - - "edit": { - "url": "/gists/:id", - "method": "PATCH", - "params": { - "$id": null, - "$description": null, - "$files": null - } - }, - - "public": { - "url": "/gists/public", - "method": "GET", - "params": { - "$since": null - } - }, - - "starred": { - "url": "/gists/starred", - "method": "GET", - "params": { - "$since": null - } - }, - - "get": { - "url": "/gists/:id", - "method": "GET", - "params": { - "$id": null - } - }, - - "star": { - "url": "/gists/:id/star", - "method": "PUT", - "params": { - "$id": null - } - }, - - "delete-star": { - "url": "/gists/:id/star", - "method": "DELETE", - "params": { - "$id": null - } - }, - - "check-star": { - "url": "/gists/:id/star", - "method": "GET", - "params": { - "$id": null - } - }, - - "fork": { - "url": "/gists/:id/fork", - "method": "POST", - "params": { - "$id": null - } - }, - - "delete": { - "url": "/gists/:id", - "method": "DELETE", - "params": { - "$id": null - } - }, - - "get-comments": { - "url": "/gists/:gist_id/comments", - "method": "GET", - "params": { - "$gist_id": null - } - }, - - "get-comment": { - "url": "/gists/:gist_id/comments/:id", - "method": "GET", - "params": { - "$gist_id": null, - "$id": null - } - }, - - "create-comment": { - "url": "/gists/:gist_id/comments", - "method": "POST", - "params": { - "$gist_id": null, - "$body": null - } - }, - - "edit-comment": { - "url": "/gists/:gist_id/comments/:id", - "method": "PATCH", - "params": { - "$gist_id": null, - "$id": null, - "$body": null - } - }, - - "delete-comment": { - "url": "/gists/:gist_id/comments/:id", - "method": "DELETE", - "params": { - "$gist_id": null, - "$id": null - } - } - }, - - "gitdata": { - "get-blob": { - "url": "/repos/:user/:repo/git/blobs/:sha", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null, - "$page": null, - "$per_page": null - } - }, - - "create-blob": { - "url": "/repos/:user/:repo/git/blobs", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "content": { - "type": "String", - "required": true, - "allow-empty": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "encoding": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-commit": { - "url": "/repos/:user/:repo/git/commits/:sha", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null - } - }, - - "create-commit": { - "url": "/repos/:user/:repo/git/commits", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "message": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the commit message" - }, - "tree": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the SHA of the tree object this commit points to" - }, - "parents": { - "type": "Array", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Array of the SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided, for a merge commit, an array of more than one should be provided." - }, - "author": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "committer": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-reference": { - "url": "/repos/:user/:repo/git/refs/:ref", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$ref": null - } - }, - - "get-all-references": { - "url": "/repos/:user/:repo/git/refs", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "create-reference": { - "url": "/repos/:user/:repo/git/refs", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$ref": null, - "$sha": null - } - }, - - "update-reference": { - "url": "/repos/:user/:repo/git/refs/:ref", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$ref": null, - "$sha": null, - "force": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Boolean indicating whether to force the update or to make sure the update is a fast-forward update. The default is false, so leaving this out or setting it to false will make sure you’re not overwriting work." - } - } - }, - - "delete-reference": { - "url": "/repos/:user/:repo/git/refs/:ref", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$ref": null - } - }, - - "get-tag": { - "url": "/repos/:user/:repo/git/tags/:sha", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null - } - }, - - "create-tag": { - "url": "/repos/:user/:repo/git/tags", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "tag": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the tag" - }, - "message": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the tag message" - }, - "object": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the SHA of the git object this is tagging" - }, - "type": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the type of the object we’re tagging. Normally this is a commit but it can also be a tree or a blob." - }, - "tagger": { - "type": "Json", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "JSON object that contains the following keys: `name` - String of the name of the author of the tag, `email` - String of the email of the author of the tag, `date` - Timestamp of when this object was tagged" - } - } - }, - - "get-tree": { - "url": "/repos/:user/:repo/git/trees/:sha", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null, - "recursive": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "create-tree": { - "url": "/repos/:user/:repo/git/trees", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "tree": { - "type": "Json", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Array of Hash objects (of path, mode, type and sha) specifying a tree structure" - }, - "base_tree": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String of the SHA1 of the tree you want to update with new data" - } - } - } - }, - - "issues": { - "get-all": { - "url": "/issues", - "method": "GET", - "params": { - "filter": { - "type": "String", - "required": false, - "validation": "^(all|assigned|created|mentioned|subscribed)$", - "invalidmsg": "", - "description": "" - }, - "state": { - "type": "String", - "required": false, - "validation": "^(open|closed|all)$", - "invalidmsg": "open, closed, all, default: open", - "description": "open, closed, or all" - }, - "labels": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String list of comma separated Label names. Example: bug,ui,@high" - }, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated|comments)$", - "invalidmsg": "created, updated, comments, default: created.", - "description": "" - }, - "$direction": null, - "$since": null, - "$page": null, - "$per_page": null - } - }, - - "repo-issues": { - "url": "/repos/:user/:repo/issues", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "milestone": { - "type": "String", - "required": false, - "validation": "^([0-9]+|none|\\*)$", - "invalidmsg": "", - "description": "" - }, - "state": { - "type": "String", - "required": false, - "validation": "^(open|closed|all)$", - "invalidmsg": "open, closed, all, default: open", - "description": "open, closed, or all" - }, - "assignee": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String User login, `none` for Issues with no assigned User. `*` for Issues with any assigned User." - }, - "creator": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The user that created the issue." - }, - "mentioned": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String User login." - }, - "labels": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String list of comma separated Label names. Example: bug,ui,@high" - }, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated|comments)$", - "invalidmsg": "created, updated, comments, default: created.", - "description": "" - }, - "$direction": null, - "$since": null, - "$page": null, - "$per_page": null - } - }, - - "get-repo-issue": { - "url": "/repos/:user/:repo/issues/:number", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - }, - - "create": { - "url": "/repos/:user/:repo/issues", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "assignee": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Login for the user that this issue should be assigned to." - }, - "milestone": { - "type": "Number", - "required": false, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "Milestone to associate this issue with." - }, - "labels": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Array of strings - Labels to associate with this issue." - } - } - }, - - "edit": { - "url": "/repos/:user/:repo/issues/:number", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "title": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "assignee": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Login for the user that this issue should be assigned to." - }, - "milestone": { - "type": "Number", - "required": false, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "Milestone to associate this issue with." - }, - "labels": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Array of strings - Labels to associate with this issue." - }, - "state": { - "type": "String", - "required": false, - "validation": "^(open|closed)$", - "invalidmsg": "open, closed, default: open", - "description": "open or closed" - } - } - }, - - "repo-comments": { - "url": "/repos/:user/:repo/issues/comments", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated)$", - "invalidmsg": "created, updated, default: created.", - "description": "" - }, - "$direction": null, - "$since": null, - "$page": null, - "$per_page": null - } - }, - - "get-comments": { - "url": "/repos/:user/:repo/issues/:number/comments", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "get-comment": { - "url": "/repos/:user/:repo/issues/comments/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "create-comment": { - "url": "/repos/:user/:repo/issues/:number/comments", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "body": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "edit-comment": { - "url": "/repos/:user/:repo/issues/comments/:id", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$id": null, - "body": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "delete-comment": { - "url": "/repos/:user/:repo/issues/comments/:id", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-events": { - "url": "/repos/:user/:repo/issues/:number/events", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "get-repo-events": { - "url": "/repos/:user/:repo/issues/events", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-event": { - "url": "/repos/:user/:repo/issues/events/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-labels": { - "url": "/repos/:user/:repo/labels", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-label": { - "url": "/repos/:user/:repo/labels/:name", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$name": null - } - }, - - "create-label": { - "url": "/repos/:user/:repo/labels", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$name": null, - "$color": null - } - }, - - "update-label": { - "url": "/repos/:user/:repo/labels/:name", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$name": null, - "$color": null - } - }, - - "delete-label": { - "url": "/repos/:user/:repo/labels/:name", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$name": null - } - }, - - "get-issue-labels": { - "url": "/repos/:user/:repo/issues/:number/labels", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - }, - - "get-all-milestones": { - "url": "/repos/:user/:repo/milestones", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$state": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(due_date|completeness)$", - "invalidmsg": "due_date, completeness, default: due_date", - "description": "due_date, completeness, default: due_date" - }, - "$page": null, - "$per_page": null - } - }, - - "get-milestone": { - "url": "/repos/:user/:repo/milestones/:number", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - }, - - "create-milestone": { - "url": "/repos/:user/:repo/milestones", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$state": null, - "$description": null, - "due_on": { - "type": "Date", - "required": false, - "validation": "", - "invalidmsg": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ", - "description": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ" - } - } - }, - - "update-milestone": { - "url": "/repos/:user/:repo/milestones/:number", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$state": null, - "$description": null, - "due_on": { - "type": "Date", - "required": false, - "validation": "", - "invalidmsg": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ", - "description": "Timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ" - } - } - }, - - "delete-milestone": { - "url": "/repos/:user/:repo/milestones/:number", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - } - }, - - "authorization": { - "get-all": { - "url": "/authorizations", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - "get": { - "url": "/authorizations/:id", - "method": "GET", - "params": { - "$id": null - } - }, - "create": { - "url": "/authorizations", - "method": "POST", - "params": { - "$scopes": null, - "$note": null, - "$note_url": null - } - }, - "update": { - "url": "/authorizations/:id", - "method": "PATCH", - "params": { - "$id": null, - "$scopes": null, - "add_scopes": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A list of scopes to add to this authorization." - }, - "remove_scopes": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A list of scopes to remove from this authorization." - }, - "$note": null, - "$note_url": null - } - }, - "delete": { - "url": "/authorizations/:id", - "method": "DELETE", - "params": { - "$id": null - } - } - }, - - "orgs": { - "get-from-user": { - "url": "/users/:user/orgs", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get": { - "url": "/orgs/:org", - "method": "GET", - "params": { - "$org": null, - "$page": null, - "$per_page": null - } - }, - - "update": { - "url": "/orgs/:org", - "method": "PATCH", - "params": { - "$org": null, - "billing_email": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Billing email address. This address is not publicized." - }, - "company": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "email": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Publicly visible email address." - }, - "location": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "name": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-members": { - "url": "/orgs/:org/members", - "method": "GET", - "params": { - "$org": null, - "$page": null, - "$per_page": null, - "filter": { - "type": "String", - "required": false, - "validation": "^(all|2fa_disabled)$", - "invalidmsg": "all, 2fa_disabled, default: all", - "description": "" - } - } - }, - - "get-member": { - "url": "/orgs/:org/members/:user", - "method": "GET", - "params": { - "$org": null, - "$user": null - } - }, - - "remove-member": { - "url": "/orgs/:org/members/:user", - "method": "DELETE", - "params": { - "$org": null, - "$user": null - } - }, - - "get-public-members": { - "url": "/orgs/:org/public_members", - "method": "GET", - "params": { - "$org": null - } - }, - - "get-public-member": { - "url": "/orgs/:org/public_members/:user", - "method": "GET", - "params": { - "$org": null, - "$user": null - } - }, - - "publicize-membership": { - "url": "/orgs/:org/public_members/:user", - "method": "PUT", - "params": { - "$org": null, - "$user": null - } - }, - - "conceal-membership": { - "url": "/orgs/:org/public_members/:user", - "method": "DELETE", - "params": { - "$org": null, - "$user": null - } - }, - - "get-teams": { - "url": "/orgs/:org/teams", - "method": "GET", - "params": { - "$org": null, - "$page": null, - "$per_page": null - } - }, - - "get-team": { - "url": "/teams/:id", - "method": "GET", - "params": { - "$id": null - } - }, - - "create-team": { - "url": "/orgs/:org/teams", - "method": "POST", - "params": { - "$org": null, - "$name": null, - "repo_names": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Array of strings" - }, - "$permission": null - } - }, - - "update-team": { - "url": "/teams/:id", - "method": "PATCH", - "params": { - "$id": null, - "$name": null, - "$permission": null - } - }, - - "delete-team": { - "url": "/teams/:id", - "method": "DELETE", - "params": { - "$id": null - } - }, - - "get-team-members": { - "url": "/teams/:id/members", - "method": "GET", - "params": { - "$id": null, - "$page": null, - "$per_page": null - } - }, - - "get-team-member": { - "url": "/teams/:id/members/:user", - "method": "GET", - "params": { - "$id": null, - "$user": null - } - }, - - "add-team-member": { - "url": "/teams/:id/members/:user", - "method": "PUT", - "params": { - "$id": null, - "$user": null - } - }, - - "delete-team-member": { - "url": "/teams/:id/members/:user", - "method": "DELETE", - "params": { - "$id": null, - "$user": null - } - }, - - "add-team-membership": { - "url": "/teams/:id/memberships/:user", - "method": "PUT", - "params": { - "$id": null, - "$user": null - } - }, - - "get-team-repos": { - "url": "/teams/:id/repos", - "method": "GET", - "params": { - "$id": null, - "$page": null, - "$per_page": null - } - }, - - "get-team-repo": { - "url": "/teams/:id/repos/:user/:repo", - "method": "GET", - "params": { - "$id": null, - "$user": null, - "$repo": null - } - }, - - "add-team-repo": { - "url": "/teams/:id/repos/:user/:repo", - "method": "PUT", - "params": { - "$id": null, - "$user": null, - "$repo": null - } - }, - - "delete-team-repo": { - "url": "/teams/:id/repos/:user/:repo", - "method": "DELETE", - "params": { - "$id": null, - "$user": null, - "$repo": null - } - } - }, - - "statuses": { - "get": { - "url": "/repos/:user/:repo/commits/:sha/statuses", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null - } - }, - - "get-combined": { - "url": "/repos/:user/:repo/commits/:sha/status", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null - } - }, - - "create": { - "url": "/repos/:user/:repo/statuses/:sha", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$sha": null, - "state": { - "type": "String", - "required": true, - "validation": "^(pending|success|error|failure)$", - "invalidmsg": "", - "description": "State of the status - can be one of pending, success, error, or failure." - }, - "target_url": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Target url to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the ‘source’ of the Status." - }, - "description": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Short description of the status." - }, - "context": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A string label to differentiate this status from the status of other systems." - } - } - } - }, - - "pull-requests": { - "get-all": { - "url": "/repos/:user/:repo/pulls", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "state": { - "type": "String", - "required": false, - "validation": "^(open|closed|all)$", - "invalidmsg": "open, closed, all, default: open", - "description": "open, closed, or all" - }, - "head": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "base": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$page": null, - "$per_page": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated|popularity|long-running)$", - "invalidmsg": "Possible values are: `created`, `updated`, `popularity`, `long-running`, Default: `created`", - "description": "Possible values are: `created`, `updated`, `popularity`, `long-running`, Default: `created`" - }, - "$direction": null - } - }, - - "get": { - "url": "/repos/:user/:repo/pulls/:number", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - }, - - "create": { - "url": "/repos/:user/:repo/pulls", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$base": null, - "$head": null - } - }, - - "create-from-issue": { - "url": "/repos/:user/:repo/pulls", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "issue": { - "type": "Number", - "required": true, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "" - }, - "$base": null, - "$head": null - } - }, - - "update": { - "url": "/repos/:user/:repo/pulls/:number", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$state": null, - "title": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-commits": { - "url": "/repos/:user/:repo/pulls/:number/commits", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "get-files": { - "url": "/repos/:user/:repo/pulls/:number/files", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "get-merged": { - "url": "/repos/:user/:repo/pulls/:number/merge", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "merge": { - "url": "/repos/:user/:repo/pulls/:number/merge", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "commit_message": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The message that will be used for the merge commit" - } - } - }, - - "get-comments": { - "url": "/repos/:user/:repo/pulls/:number/comments", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$page": null, - "$per_page": null - } - }, - - "get-comment": { - "url": "/repos/:user/:repo/pulls/comments/:number", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - }, - - "create-comment": { - "url": "/repos/:user/:repo/pulls/:number/comments", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$body": null, - "$commit_id": null, - "$path": null, - "$position": null - } - }, - - "create-comment-reply": { - "url": "/repos/:user/:repo/pulls/:number/comments", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$body": null, - "in_reply_to": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "update-comment": { - "url": "/repos/:user/:repo/pulls/comments/:number", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$number": null, - "$body": null - } - }, - - "delete-comment": { - "url": "/repos/:user/:repo/pulls/comments/:number", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$number": null - } - } - }, - - "repos": { - "get-all": { - "url": "/user/repos", - "method": "GET", - "params": { - "type": { - "type": "String", - "required": false, - "validation": "^(all|owner|public|private|member)$", - "invalidmsg": "Possible values: `all`, `owner`, `public`, `private`, `member`. Default: `all`.", - "description": "Possible values: `all`, `owner`, `public`, `private`, `member`. Default: `all`." - }, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated|pushed|full_name)$", - "invalidmsg": "Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`.", - "description": "Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`." - }, - "$direction": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-user": { - "url": "/users/:user/repos", - "method": "GET", - "params": { - "$user": null, - "type": { - "type": "String", - "required": false, - "validation": "^(all|owner|member)$", - "invalidmsg": "Possible values: `all`, `owner`, `member`. Default: `public`.", - "description": "Possible values: `all`, `owner`, `member`. Default: `public`." - }, - "sort": { - "type": "String", - "required": false, - "validation": "^(created|updated|pushed|full_name)$", - "invalidmsg": "Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`.", - "description": "Possible values: `created`, `updated`, `pushed`, `full_name`. Default: `full_name`." - }, - "$direction": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-org": { - "url": "/orgs/:org/repos", - "method": "GET", - "params": { - "$org": null, - "type": { - "type": "String", - "required": false, - "validation": "^(all|public|member)$", - "invalidmsg": "Possible values: `all`, `public`, `member`. Default: `all`.", - "description": "Possible values: `all`, `public`, `member`. Default: `all`." - }, - "$page": null, - "$per_page": null - } - }, - - "create": { - "url": "/user/repos", - "method": "POST", - "params": { - "$name": null, - "$description": null, - "$homepage": null, - "$private": null, - "$has_issues": null, - "$has_wiki": null, - "$has_downloads": null, - "$auto_init": null, - "$gitignore_template": null - } - }, - - "create-from-org": { - "url": "/orgs/:org/repos", - "method": "POST", - "params": { - "$org": null, - "$name": null, - "$description": null, - "$homepage": null, - "$private": null, - "$has_issues": null, - "$has_wiki": null, - "$has_downloads": null, - "$auto_init": null, - "$gitignore_template": null, - "team_id": { - "type": "Number", - "required": false, - "validation": "^[0-9]+$", - "invalidmsg": "", - "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repo in an organization." - } - } - }, - - "get": { - "url": "/repos/:user/:repo", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "one": { - "url": "/repositories/:id", - "method": "GET", - "params": { - "$id": null - } - }, - - "update": { - "url": "/repos/:user/:repo", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$name": null, - "$description": null, - "$homepage": null, - "$private": null, - "$has_issues": null, - "$has_wiki": null, - "$has_downloads": null, - "$default_branch": null - } - }, - - "delete": { - "url": "/repos/:user/:repo", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null - } - }, - - "merge": { - "url": "/repos/:user/:repo/merges", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$base": null, - "$head": null, - "commit_message": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Commit message to use for the merge commit. If omitted, a default message will be used." - } - } - }, - - "get-contributors": { - "url": "/repos/:user/:repo/contributors", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "anon": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Set to 1 or true to include anonymous contributors in results." - }, - "$page": null, - "$per_page": null - } - }, - - "get-languages": { - "url": "/repos/:user/:repo/languages", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-teams": { - "url": "/repos/:user/:repo/teams", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-tags": { - "url": "/repos/:user/:repo/tags", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-branches": { - "url": "/repos/:user/:repo/branches", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-branch": { - "url": "/repos/:user/:repo/branches/:branch", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$branch": null, - "$page": null, - "$per_page": null - } - }, - - "get-collaborators": { - "url": "/repos/:user/:repo/collaborators", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-collaborator": { - "url": "/repos/:user/:repo/collaborators/:collabuser", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$collabuser": null - } - }, - - "add-collaborator": { - "url": "/repos/:user/:repo/collaborators/:collabuser", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "$collabuser": null - } - }, - - "remove-collaborator": { - "url": "/repos/:user/:repo/collaborators/:collabuser", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$collabuser": null - } - }, - - "get-commits": { - "url": "/repos/:user/:repo/commits", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "sha": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Sha or branch to start listing commits from." - }, - "path": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Only commits containing this file path will be returned." - }, - "author": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "GitHub login or email address by which to filter by commit author." - }, - "$page": null, - "$per_page": null, - "$since": null, - "$until": null - } - }, - - "get-commit": { - "url": "/repos/:user/:repo/commits/:sha", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null - } - }, - - "get-all-commit-comments": { - "url": "/repos/:user/:repo/comments", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-commit-comments": { - "url": "/repos/:user/:repo/commits/:sha/comments", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$sha": null, - "$page": null, - "$per_page": null - } - }, - - "create-commit-comment": { - "url": "/repos/:user/:repo/commits/:sha/comments", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$sha": null, - "$body": null, - "$commit_id": null, - "path": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Relative path of the file to comment on." - }, - "position": { - "type": "Number", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Line index in the diff to comment on." - }, - "line": { - "type": "Number", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Line number in the file to comment on. Defaults to 1." - } - } - }, - - "get-commit-comment": { - "url": "/repos/:user/:repo/comments/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "update-commit-comment": { - "url": "/repos/:user/:repo/comments/:id", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$id": null, - "$body": null - } - }, - - "compare-commits": { - "url": "/repos/:user/:repo/compare/:base...:head", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$base": null, - "$head": null - } - }, - - "delete-commit-comment": { - "url": "/repos/:user/:repo/comments/:id", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-readme": { - "url": "/repos/:user/:repo/readme", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "ref": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The String name of the Commit/Branch/Tag. Defaults to master." - } - } - }, - - "get-content": { - "url": "/repos/:user/:repo/contents/:path", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "path": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The content path." - }, - "ref": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The String name of the Commit/Branch/Tag. Defaults to master." - } - } - }, - "create-content": { - "url": "/repos/:user/:repo/contents/:path", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "$content":null, - "$message":null, - "path": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The content path." - }, - "ref": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The String name of the Commit/Branch/Tag. Defaults to master." - } - } - }, - - "create-file": { - "url": "/repos/:user/:repo/contents/:path", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "path": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The content path." - }, - "message": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The commit message." - }, - "content": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The new file content, Base64 encoded." - }, - "branch": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The branch name. If not provided, uses the repository’s default branch (usually master)." - }, - "author": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "committer": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "update-file": { - "url": "/repos/:user/:repo/contents/:path", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "path": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The content path." - }, - "message": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The commit message." - }, - "content": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The updated file content, Base64 encoded." - }, - "sha": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The blob SHA of the file being replaced." - }, - "branch": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The branch name. If not provided, uses the repository’s default branch (usually master)." - }, - "author": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "committer": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "delete-file": { - "url": "/repos/:user/:repo/contents/:path", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "path": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The content path." - }, - "message": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The commit message." - }, - "sha": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The blob SHA of the file being removed." - }, - "branch": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The branch name. If not provided, uses the repository’s default branch (usually master)." - }, - "author": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "committer": { - "type": "Json", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-archive-link": { - "url": "/repos/:user/:repo/:archive_format/:ref", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "ref": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "String of the name of the fully qualified reference (ie: heads/master). If it doesn’t have at least one slash, it will be rejected." - }, - "archive_format": { - "type": "String", - "required": true, - "validation": "^(tarball|zipball)$", - "invalidmsg": "Either tarball or zipball", - "description": "Either tarball or zipball" - } - } - }, - - "get-downloads": { - "url": "/repos/:user/:repo/downloads", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-download": { - "url": "/repos/:user/:repo/downloads/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "delete-download": { - "url": "/repos/:user/:repo/downloads/:id", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-forks": { - "url": "/repos/:user/:repo/forks", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(newest|oldest|watchers)$", - "invalidmsg": "Possible values: `newest`, `oldest`, `watchers`, default: `newest`.", - "description": "Possible values: `newest`, `oldest`, `watchers`, default: `newest`." - }, - "$page": null, - "$per_page": null - } - }, - - "fork": { - "url": "/repos/:user/:repo/forks", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "organization": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Organization login. The repository will be forked into this organization." - } - } - }, - - "get-keys": { - "url": "/repos/:user/:repo/keys", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-key": { - "url": "/repos/:user/:repo/keys/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "create-key": { - "url": "/repos/:user/:repo/keys", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$title": null, - "$key": null - } - }, - - "update-key": { - "url": "/repos/:user/:repo/keys/:id", - "method": "PUT", - "params": { - "$user": null, - "$repo": null, - "$id": null, - "$title": null, - "$key": null - } - }, - - "delete-key": { - "url": "/repos/:user/:repo/keys/:id", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-stargazers": { - "url": "/repos/:user/:repo/stargazers", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-starred": { - "url": "/user/starred", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-starred-from-user": { - "url": "/users/:user/starred", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-starring": { - "url": "/user/starred/:user/:repo", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "star": { - "url": "/user/starred/:user/:repo", - "method": "PUT", - "params": { - "$user": null, - "$repo": null - } - }, - - "un-star": { - "url": "/user/starred/:user/:repo", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-watchers": { - "url": "/repos/:user/:repo/watchers", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-watched": { - "url": "/user/watched", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-watched-from-user": { - "url": "/users/:user/watched", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-watching": { - "url": "/user/watched/:user/:repo", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "watch": { - "url": "/user/watched/:user/:repo", - "method": "PUT", - "params": { - "$user": null, - "$repo": null - } - }, - - "un-watch": { - "url": "/user/watched/:user/:repo", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-hooks": { - "url": "/repos/:user/:repo/hooks", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-hook": { - "url": "/repos/:user/:repo/hooks/:id", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "create-hook": { - "url": "/repos/:user/:repo/hooks", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$name": null, - "config": { - "type": "Json", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "A Hash containing key/value pairs to provide settings for this hook. These settings vary between the services and are defined in the github-services repo. Booleans are stored internally as `1` for true, and `0` for false. Any JSON true/false values will be converted automatically." - }, - "events": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines what events the hook is triggered for. Default: `['push']`." - }, - "active": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines whether the hook is actually triggered on pushes." - } - } - }, - - "update-hook": { - "url": "/repos/:user/:repo/hooks/:id", - "method": "PATCH", - "params": { - "$user": null, - "$repo": null, - "$id": null, - "$name": null, - "config": { - "type": "Json", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "A Hash containing key/value pairs to provide settings for this hook. Modifying this will replace the entire config object. These settings vary between the services and are defined in the github-services repo. Booleans are stored internally as `1` for true, and `0` for false. Any JSON true/false values will be converted automatically." - }, - "events": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines what events the hook is triggered for. This replaces the entire array of events. Default: `['push']`." - }, - "add_events": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines a list of events to be added to the list of events that the Hook triggers for." - }, - "remove_events": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines a list of events to be removed from the list of events that the Hook triggers for." - }, - "active": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Determines whether the hook is actually triggered on pushes." - } - } - }, - - "test-hook": { - "url": "/repos/:user/:repo/hooks/:id/test", - "method": "POST", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "delete-hook": { - "url": "/repos/:user/:repo/hooks/:id", - "method": "DELETE", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "get-stats-contributors": { - "url": "/repos/:user/:repo/stats/contributors", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-stats-commit-activity": { - "url": "/repos/:user/:repo/stats/commit_activity", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-stats-code-frequency": { - "url": "/repos/:user/:repo/stats/code_frequency", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-stats-participation": { - "url": "/repos/:user/:repo/stats/participation", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-stats-punch-card": { - "url": "/repos/:user/:repo/stats/punch_card", - "method": "GET", - "params": { - "$user": null, - "$repo": null - } - }, - - "get-deployments": { - "url": "/repos/:user/:repo/deployments", - "method": "GET", - "params": { - "sha": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The short or long sha that was recorded at creation time. Default: none." - }, - "ref": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The name of the ref. This can be a branch, tag, or sha. Default: none." - }, - "task": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The name of the task for the deployment. e.g. deploy or deploy:migrations. Default: none." - }, - "environment": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The name of the environment that was deployed to. e.g. staging or production. Default: none." - }, - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "create-deployment": { - "url": "/repos/:user/:repo/deployments", - "method": "POST", - "params": { - "ref": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The ref to deploy. This can be a branch, tag, or sha." - }, - "task": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The named task to execute. e.g. deploy or deploy:migrations. Default: deploy" - }, - "auto_merge": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Optional parameter to merge the default branch into the requested ref if it is behind the default branch. Default: true" - }, - "required_contexts": { - "type": "Array", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Optional array of status contexts verified against commit status checks. If this parameter is omitted from the parameters then all unique contexts will be verified before a deployment is created. To bypass checking entirely pass an empty array. Defaults to all unique contexts." - }, - "payload": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Optional JSON payload with extra information about the deployment. Default: ''" - }, - "environment": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The name of the environment that was deployed to. e.g. staging or production. Default: none." - }, - "description": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Optional short description. Default: ''" - }, - "$user": null, - "$repo": null - } - }, - - "get-deployment-statuses": { - "url": "/repos/:user/:repo/deployments/:id/statuses", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$id": null - } - }, - - "create-deployment-status": { - "url": "/repos/:user/:repo/deployments/:id/statuses", - "method": "POST", - "params": { - "state": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The state of the status. Can be one of pending, success, error, or failure." - }, - "target_url": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. Default: ''" - }, - "description": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "A short description of the status. Default: ''" - }, - "$user": null, - "$repo": null, - "$id": null - } - } - }, - - "user": { - "get-all": { - "url": "/users", - "method": "GET", - "params": { - "since":{ - "type": "Number", - "required": false, - "validation": "", - "description": "The integer ID of the last User that you’ve seen." - } - } - - }, - - "get-from": { - "url": "/users/:user", - "method": "GET", - "params": { - "$user": null - } - }, - - "get": { - "url": "/user", - "method": "GET", - "params": {} - }, - - "update": { - "url": "/user", - "method": "PATCH", - "params": { - "name": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "email": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "blog": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "company": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "location": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "hireable": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "bio": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-orgs": { - "url": "/user/orgs", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "edit-organization-membership": { - "url": "/user/memberships/orgs/:org", - "method": "PATCH", - "params": { - "$org": null, - "state": { - "type": "String", - "required": true, - "validation": "^(open|closed|active)$", - "invalidmsg": "", - "description": "" - } - } - }, - - "get-teams": { - "url": "/user/teams", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-emails": { - "url": "/user/emails", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "add-emails": { - "url": "/user/emails", - "method": "POST", - "params": {} - }, - - "delete-emails": { - "url": "/user/emails", - "method": "DELETE", - "params": {} - }, - - "get-followers": { - "url": "/users/:user/followers", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-following-from-user": { - "url": "/users/:user/following", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-following": { - "url": "/user/following", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-follow-user": { - "url": "/user/following/:user", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "follow-user": { - "url": "/user/following/:user", - "method": "PUT", - "params": { - "$user": null - } - }, - - "un-follow-user": { - "url": "/user/following/:user", - "method": "DELETE", - "params": { - "$user": null - } - }, - - "get-keys": { - "url": "/user/keys", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-keys-from-user": { - "url": "/users/:user/keys", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-key": { - "url": "/user/keys/:id", - "method": "GET", - "params": { - "$id": null - } - }, - - "create-key": { - "url": "/user/keys", - "method": "POST", - "params": { - "$title": null, - "$key": null - } - }, - - "update-key": { - "url": "/user/keys/:id", - "method": "PATCH", - "params": { - "$id": null, - "$title": null, - "$key": null - } - }, - - "delete-key": { - "url": "/user/keys/:id", - "method": "DELETE", - "params": { - "$id": null - } - } - }, - - "events": { - "get": { - "url": "/events", - "method": "GET", - "params": { - "$page": null, - "$per_page": null - } - }, - - "get-from-repo": { - "url": "/repos/:user/:repo/events", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-repo-issues": { - "url": "/repos/:user/:repo/issues/events", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-repo-network": { - "url": "/networks/:user/:repo/events", - "method": "GET", - "params": { - "$user": null, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-org": { - "url": "/orgs/:org/events", - "method": "GET", - "params": { - "$org": null, - "$page": null, - "$per_page": null - } - }, - - "get-received": { - "url": "/users/:user/received_events", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-received-public": { - "url": "/users/:user/received_events/public", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-user": { - "url": "/users/:user/events", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-user-public": { - "url": "/users/:user/events/public", - "method": "GET", - "params": { - "$user": null, - "$page": null, - "$per_page": null - } - }, - - "get-from-user-org": { - "url": "/users/:user/events/orgs/:org", - "method": "GET", - "params": { - "$user": null, - "$org": null, - "$page": null, - "$per_page": null - } - } - }, - - "releases": { - "list-releases": { - "url": "/repos/:owner/:repo/releases", - "method": "GET", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null, - "$page": null, - "$per_page": null - } - }, - "get-release": { - "url": "/repos/:owner/:repo/releases/:id", - "method": "GET", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null - } - }, - "create-release": { - "url": "/repos/:owner/:repo/releases", - "method": "POST", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null, - "tag_name": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the tag" - }, - "target_commitish": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually master)." - }, - "name": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "draft": { - "type": "Boolean", - "validation": "", - "invalidmsg": "", - "description": "true to create a draft (unpublished) release, false to create a published one. Default: false" - }, - "prerelease": { - "type": "Boolean", - "validation": "", - "invalidmsg": "", - "description": "true to identify the release as a prerelease. false to identify the release as a full release. Default: false" - } - } - }, - "edit-release": { - "url": "/repos/:owner/:repo/releases/:id", - "method": "PATCH", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null, - "tag_name": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "String of the tag" - }, - "target_commitish": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually master)." - }, - "name": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "body": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "draft": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "true to create a draft (unpublished) release, false to create a published one. Default: false" - }, - "prerelease": { - "type": "Boolean", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "true to identify the release as a prerelease. false to identify the release as a full release. Default: false" - } - } - }, - "delete-release": { - "url": "/repos/:owner/:repo/releases/:id", - "method": "DELETE", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null - } - }, - "list-assets": { - "url": "/repos/:owner/:repo/releases/:id/assets", - "method": "GET", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null - } - }, - "get-asset": { - "url": "/repos/:owner/:repo/releases/assets/:id", - "method": "GET", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null - } - }, - "upload-asset": { - "url": "/repos/:owner/:repo/releases/:id/assets", - "method": "POST", - "host": "uploads.github.com", - "hasFileBody": true, - "timeout": 0, - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null, - "name": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "the file name of the asset" - } - } - }, - "edit-asset": { - "url": "/repos/:owner/:repo/releases/assets/:id", - "method": "PATCH", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null, - "$name": null, - "label": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "An alternate short description of the asset. Used in place of the filename." - } - } - }, - "delete-asset": { - "url": "/repos/:owner/:repo/releases/assets/:id", - "method": "DELETE", - "params": { - "owner": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "id": { - "type": "Number", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "" - }, - "$repo": null - } - } - }, - - "search": { - "code": { - "url": "/search/code", - "method": "GET", - "params": { - "$q": null, - "sort": { - "type": "String", - "required": false, - "validation": "^indexed$", - "invalidmsg": "indexed only", - "description": "indexed only" - }, - "$order": null, - "$page": null, - "$per_page": null - } - }, - - "issues": { - "url": "/search/issues", - "method": "GET", - "params": { - "$q": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(comments|created|updated)$", - "invalidmsg": "comments, created, or updated", - "description": "comments, created, or updated" - }, - "$order": null, - "$page": null, - "$per_page": null - } - }, - - "repos": { - "url": "/search/repositories", - "method": "GET", - "params": { - "$q": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(stars|forks|updated)$", - "invalidmsg": "One of stars, forks, or updated. Default: results are sorted by best match.", - "description": "stars, forks, or updated" - }, - "$order": null, - "$page": null, - "$per_page": null - } - }, - - "users": { - "url": "/search/users", - "method": "GET", - "params": { - "$q": null, - "sort": { - "type": "String", - "required": false, - "validation": "^(followers|repositories|joined)$", - "invalidmsg": "Can be followers, repositories, or joined. Default: results are sorted by best match.", - "description": "followers, repositories, or joined" - }, - "$order": null, - "$page": null, - "$per_page": null - } - }, - - "email": { - "url": "/legacy/user/email/:email", - "method": "GET", - "params": { - "email": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "Email address" - } - } - } - }, - - "markdown": { - "render": { - "url": "/markdown", - "method": "POST", - "params": { - "text": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The Markdown text to render" - }, - "mode": { - "type": "String", - "required": false, - "validation": "^(markdown|gfm)$", - "invalidmsg": "", - "description": "The rendering mode, `markdown` to render a document as plain Markdown, just like README files are rendered. `gfm` to render a document as user-content, e.g. like user comments or issues are rendered. In GFM mode, hard line breaks are always taken into account, and issue and user mentions are linked accordingly." - }, - "context": { - "type": "String", - "required": false, - "validation": "", - "invalidmsg": "", - "description": "The repository context, only taken into account when rendering as `gfm`" - } - } - }, - - "render-raw": { - "url": "/markdown/raw", - "method": "POST", - "requestFormat": "raw", - "params": { - "$data": null - } - } - }, - - "gitignore": { - "templates": { - "url": "/gitignore/templates", - "method": "GET", - "params": { } - }, - "template": { - "url": "/gitignore/templates/:name", - "method": "GET", - "params": { - "name": { - "type": "String", - "required": true, - "validation": "", - "invalidmsg": "", - "description": "The name of the .gitignore template to get" - } - } - } - }, - - "misc": { - "emojis": { - "url": "/emojis", - "method": "GET", - "params": { } - }, - "meta": { - "url": "/meta", - "method": "GET", - "params": { } - }, - "rate-limit": { - "url": "/rate_limit", - "method": "GET", - "params": { } - } - } -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/search.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/search.js deleted file mode 100644 index 260cf528..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/search.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * mixin search - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var search = module.exports = { - search: {} -}; - -(function() { - /** section: github - * search#code(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - q (String): Required. Search Term - * - sort (String): Optional. indexed only Validation rule: ` ^indexed$ `. - * - order (String): Optional. asc or desc Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.code = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * search#issues(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - q (String): Required. Search Term - * - sort (String): Optional. comments, created, or updated Validation rule: ` ^(comments|created|updated)$ `. - * - order (String): Optional. asc or desc Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.issues = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * search#repos(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - q (String): Required. Search Term - * - sort (String): Optional. stars, forks, or updated Validation rule: ` ^(stars|forks|updated)$ `. - * - order (String): Optional. asc or desc Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.repos = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * search#users(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - q (String): Required. Search Term - * - sort (String): Optional. followers, repositories, or joined Validation rule: ` ^(followers|repositories|joined)$ `. - * - order (String): Optional. asc or desc Validation rule: ` ^(asc|desc)$ `. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.users = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * search#email(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - email (String): Required. Email address - **/ - this.email = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(search.search); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/searchTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/searchTest.js deleted file mode 100644 index f95bc2d1..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/searchTest.js +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[search]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - /*client.authenticate({ - type: "oauth", - token: token - });*/ - }); - - it("should successfully execute GET /search/code/:q (code)", function(next) { - client.search.code( - { - q: ['test', 'repo:mikedeboertest/1423836276146'].join('+') - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.items.length, 1); - var file = res.items[0]; - Assert.equal(file.name, "TEST.md"); - - next(); - } - ); - }); - - it("should successfully execute GET /search/issues/:q (issues)", function(next) { - client.search.issues( - { - q: ['debate', 'repo:mikedeboertest/node_chat', 'state:open'].join('+') - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.items.length, 1); - var issue = res.items[0]; - Assert.equal(issue.title, "My First Issue"); - Assert.equal(issue.state, "open"); - - next(); - } - ); - }); - - it("should successfully execute GET /search/repositories/:q (repos)", function(next) { - client.search.repos( - { - q: ['pasta', 'language:JavaScript'].join('+') - }, - function(err, res) { - Assert.equal(err, null); - Assert.ok(res.items.length > 0); - Assert.equal(res.items[0].language, "JavaScript"); - - next(); - } - ); - }); - - it("should successfully execute GET /search/users/:q (users)", function(next) { - client.search.users( - { - q: "mikedeboer" - }, - function(err, res) { - Assert.equal(err, null); - Assert.equal(res.items.length, 2); - var user = res.items[0]; - Assert.equal(user.login, "mikedeboer"); - - client.search.users( - { - q: "location:Jyväskylä" - }, - function(err, res) { - Assert.equal(err, null); - //XXX: this is likely to change often. I added this for - // issue #159. - Assert.equal(res.items.length, 30); - var user = res.items[0]; - Assert.equal(user.login, "bebraw"); - - next(); - } - ); - } - ); - }); - - /*it("should successfully execute GET /search/user/email/:email (email)", function(next) { - client.search.email( - { - email: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - });*/ -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statuses.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statuses.js deleted file mode 100644 index 1a376afd..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statuses.js +++ /dev/null @@ -1,167 +0,0 @@ -/** - * mixin statuses - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var statuses = module.exports = { - statuses: {} -}; - -(function() { - /** section: github - * statuses#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * statuses#getCombined(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - **/ - this.getCombined = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * statuses#create(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - repo (String): Required. - * - sha (String): Required. - * - state (String): Required. State of the status - can be one of pending, success, error, or failure. Validation rule: ` ^(pending|success|error|failure)$ `. - * - target_url (String): Optional. Target url to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the ‘source’ of the Status. - * - description (String): Optional. Short description of the status. - * - context (String): Optional. A string label to differentiate this status from the status of other systems. - **/ - this.create = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(statuses.statuses); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statusesTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statusesTest.js deleted file mode 100644 index 5c23b4c7..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/statusesTest.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[statuses]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /repos/:user/:repo/commits/:sha/statuses (get)", function(next) { - client.statuses.get( - { - user: "mikedeboer", - repo: "node-github", - sha: "30d607d8fd8002427b61273f25d442c233cbf631" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /repos/:user/:repo/commits/:sha/status (get)", function(next) { - client.statuses.getCombined( - { - user: "mikedeboer", - repo: "node-github", - sha: "30d607d8fd8002427b61273f25d442c233cbf631" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /repos/:user/:repo/statuses/:sha (create)", function(next) { - client.statuses.create( - { - user: "String", - repo: "String", - sha: "String", - state: "String", - target_url: "String", - description: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/user.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/user.js deleted file mode 100644 index 1614cbc4..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/user.js +++ /dev/null @@ -1,1035 +0,0 @@ -/** - * mixin user - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var user = module.exports = { - user: {} -}; - -(function() { - /** section: github - * user#getAll(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - since (Number): Optional. The integer ID of the last User that you’ve seen. - **/ - this.getAll = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getFrom(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - **/ - this.getFrom = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#get(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.get = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#update(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - name (String): Optional. - * - email (String): Optional. - * - blog (String): Optional. - * - company (String): Optional. - * - location (String): Optional. - * - hireable (Boolean): Optional. - * - bio (String): Optional. - **/ - this.update = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getOrgs(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getOrgs = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#editOrganizationMembership(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - org (String): Required. - * - state (String): Required. Validation rule: ` ^(open|closed|active)$ `. - **/ - this.editOrganizationMembership = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getTeams(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getTeams = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getEmails(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getEmails = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#addEmails(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.addEmails = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#deleteEmails(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * No other params, simply pass an empty Object literal `{}` - **/ - this.deleteEmails = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getFollowers(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFollowers = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getFollowingFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFollowingFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getFollowing(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFollowing = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getFollowUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getFollowUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#followUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - **/ - this.followUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#unFollowUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - **/ - this.unFollowUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getKeys(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getKeys = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getKeysFromUser(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - user (String): Required. - * - page (Number): Optional. Page number of the results to fetch. Validation rule: ` ^[0-9]+$ `. - * - per_page (Number): Optional. A custom page size up to 100. Default is 30. Validation rule: ` ^[0-9]+$ `. - **/ - this.getKeysFromUser = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#getKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.getKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#createKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - title (String): Required. - * - key (String): Required. - **/ - this.createKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#updateKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - * - title (String): Required. - * - key (String): Required. - **/ - this.updateKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - - /** section: github - * user#deleteKey(msg, callback) -> null - * - msg (Object): Object that contains the parameters and their values to be sent to the server. - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * ##### Params on the `msg` object: - * - * - headers (Object): Optional. Key/ value pair of request headers to pass along with the HTTP request. Valid headers are: 'If-Modified-Since', 'If-None-Match', 'Cookie', 'User-Agent', 'Accept', 'X-GitHub-OTP'. - * - id (String): Required. - **/ - this.deleteKey = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "x-ratelimit-reset", "x-oauth-scopes", "link", "location", "last-modified", "etag", "status"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - }; - -}).call(user.user); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/userTest.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/userTest.js deleted file mode 100644 index c7b7a106..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/api/v3.0.0/userTest.js +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[user]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - - it("should successfully execute GET /users/:user (getFrom)", function(next) { - client.user.getFrom( - { - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user (get)", function(next) { - client.user.get( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /user (update)", function(next) { - client.user.update( - { - name: "String", - email: "String", - blog: "String", - company: "String", - location: "String", - hireable: "Boolean", - bio: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/orgs (getOrgs)", function(next) { - client.user.getOrgs( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/teams (getTeams)", function(next) { - client.user.getTeams( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/emails (getEmails)", function(next) { - client.user.getEmails( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /user/emails (addEmails)", function(next) { - client.user.addEmails( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /user/emails (deleteEmails)", function(next) { - client.user.deleteEmails( - {}, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/followers (getFollowers)", function(next) { - client.user.getFollowers( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/following (getFollowingFromUser)", function(next) { - client.user.getFollowingFromUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/following (getFollowing)", function(next) { - client.user.getFollowing( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/following/:user (getFollowUser)", function(next) { - client.user.getFollowUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PUT /user/following/:user (followUser)", function(next) { - client.user.followUser( - { - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /user/following/:user (unFollowUser)", function(next) { - client.user.unFollowUser( - { - user: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/keys (getKeys)", function(next) { - client.user.getKeys( - { - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /users/:user/keys (getKeysFromUser)", function(next) { - client.user.getKeysFromUser( - { - user: "String", - page: "Number", - per_page: "Number" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute GET /user/keys/:id (getKey)", function(next) { - client.user.getKey( - { - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute POST /user/keys (createKey)", function(next) { - client.user.createKey( - { - title: "String", - key: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute PATCH /user/keys/:id (updateKey)", function(next) { - client.user.updateKey( - { - id: "String", - title: "String", - key: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); - - it("should successfully execute DELETE /user/keys/:id (deleteKey)", function(next) { - client.user.deleteKey( - { - id: "String" - }, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/error.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/error.js deleted file mode 100644 index 2da83f29..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/error.js +++ /dev/null @@ -1,117 +0,0 @@ -/** section: github - * class HttpError - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -var Util = require("util"); - -exports.HttpError = function(message, code) { - Error.call(this, message); - //Error.captureStackTrace(this, arguments.callee); - this.message = message; - this.code = code; -}; -Util.inherits(exports.HttpError, Error); - -(function() { - /** - * HttpError#toString() -> String - * - * Returns the stringified version of the error (i.e. the message). - **/ - this.toString = function() { - return this.message; - }; - - /** - * HttpError#toJSON() -> Object - * - * Returns a JSON object representation of the error. - **/ - this.toJSON = function() { - return { - code: this.code, - status: this.defaultMessage, - message: this.message - }; - }; - -}).call(exports.HttpError.prototype); - - -var statusCodes = { - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Request Entity Too Large", - 414: "Request-URI Too Long", - 415: "Unsupported Media Type", - 416: "Requested Range Not Satisfiable", - 417: "Expectation Failed", - 420: "Enhance Your Calm", - 422: "Unprocessable Entity", - 423: "Locked", - 424: "Failed Dependency", - 425: "Unordered Collection", - 426: "Upgrade Required", - 428: "Precondition Required", - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 444: "No Response", - 449: "Retry With", - 499: "Client Closed Request", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 506: "Variant Also Negotiates", - 507: "Insufficient Storage", - 508: "Loop Detected", - 509: "Bandwidth Limit Exceeded", - 510: "Not Extended", - 511: "Network Authentication Required" -}; - -for (var status in statusCodes) { - var defaultMsg = statusCodes[status]; - - var error = (function(defaultMsg, status) { - return function(msg) { - this.defaultMessage = defaultMsg; - exports.HttpError.call(this, msg || status + ": " + defaultMsg, status); - - if (status >= 500) - Error.captureStackTrace(this, arguments.callee); - }; - })(defaultMsg, status); - - Util.inherits(error, exports.HttpError); - - var className = toCamelCase(defaultMsg); - exports[className] = error; - exports[status] = error; -} - -function toCamelCase(str) { - return str.toLowerCase().replace(/(?:(^.)|(\s+.))/g, function(match) { - return match.charAt(match.length-1).toUpperCase(); - }); -} \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/generate.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/generate.js deleted file mode 100755 index eb1e9bad..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/generate.js +++ /dev/null @@ -1,295 +0,0 @@ -#!/usr/bin/env node -/** section: github, internal - * class ApiGenerator - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var Fs = require("fs"); -var Path = require("path"); - -var Optimist = require("optimist"); -var Util = require("./util"); - -var IndexTpl = Fs.readFileSync(__dirname + "/templates/index.js.tpl", "utf8"); -var SectionTpl = Fs.readFileSync(__dirname + "/templates/section.js.tpl", "utf8"); -var HandlerTpl = Fs.readFileSync(__dirname + "/templates/handler.js.tpl", "utf8"); -var AfterRequestTpl = Fs.readFileSync(__dirname + "/templates/after_request.js.tpl", "utf8"); -var TestSectionTpl = Fs.readFileSync(__dirname + "/templates/test_section.js.tpl", "utf8"); -var TestHandlerTpl = Fs.readFileSync(__dirname + "/templates/test_handler.js.tpl", "utf8"); - -var main = module.exports = function(versions, tests, restore) { - Util.log("Generating for versions", Object.keys(versions)); - - Object.keys(versions).forEach(function(version) { - var dir = Path.join(__dirname, "api", version); - - // If we're in restore mode, move .bak file back to their original position - // and short-circuit. - if (restore) { - var bakRE = /\.bak$/; - var files = Fs.readdirSync(dir).filter(function(file) { - return bakRE.test(file); - }).forEach(function(file) { - var from = Path.join(dir, file); - var to = Path.join(dir, file.replace(/\.bak$/, "")); - Fs.renameSync(from, to); - Util.log("Restored '" + file + "' (" + version + ")"); - }); - - return; - } - - - var routes = versions[version]; - var defines = routes.defines; - delete routes.defines; - var headers = defines["response-headers"]; - // cast header names to lowercase. - if (headers && headers.length) - headers = headers.map(function(header) { return header.toLowerCase(); }); - var sections = {}; - var testSections = {}; - - function createComment(paramsStruct, section, funcName, indent) { - var params = Object.keys(paramsStruct); - var comment = [ - indent + "/** section: github", - indent + " * " + section + "#" + funcName + "(msg, callback) -> null", - indent + " * - msg (Object): Object that contains the parameters and their values to be sent to the server.", - indent + " * - callback (Function): function to call when the request is finished " + - "with an error as first argument and result data as second argument.", - indent + " *", - indent + " * ##### Params on the `msg` object:", - indent + " *" - ]; - comment.push(indent + " * - headers (Object): Optional. Key/ value pair " - + "of request headers to pass along with the HTTP request. Valid headers are: " - + "'" + defines["request-headers"].join("', '") + "'."); - if (!params.length) - comment.push(indent + " * No other params, simply pass an empty Object literal `{}`"); - var paramName, def, line; - for (var i = 0, l = params.length; i < l; ++i) { - paramName = params[i]; - if (paramName.charAt(0) == "$") { - paramName = paramName.substr(1); - if (!defines.params[paramName]) { - Util.log("Invalid variable parameter name substitution; param '" + - paramName + "' not found in defines block", "fatal"); - process.exit(1); - } - else - def = defines.params[paramName]; - } - else - def = paramsStruct[paramName]; - - line = indent + " * - " + paramName + " (" + (def.type || "mixed") + "): " + - (def.required ? "Required. " : "Optional. "); - if (def.description) - line += def.description; - if (def.validation) - line += " Validation rule: ` " + def.validation + " `."; - - comment.push(line); - } - - return comment.join("\n") + "\n" + indent + " **/"; - } - - function getParams(paramsStruct, indent) { - var params = Object.keys(paramsStruct); - if (!params.length) - return "{}"; - var values = []; - var paramName, def; - for (var i = 0, l = params.length; i < l; ++i) { - paramName = params[i]; - if (paramName.charAt(0) == "$") { - paramName = paramName.substr(1); - if (!defines.params[paramName]) { - Util.log("Invalid variable parameter name substitution; param '" + - paramName + "' not found in defines block", "fatal"); - process.exit(1); - } - else - def = defines.params[paramName]; - } - else - def = paramsStruct[paramName]; - - values.push(indent + " " + paramName + ": \"" + def.type + "\""); - } - return "{\n" + values.join(",\n") + "\n" + indent + "}"; - } - - function prepareApi(struct, baseType) { - if (!baseType) - baseType = ""; - - Object.keys(struct).forEach(function(routePart) { - var block = struct[routePart]; - if (!block) - return; - var messageType = baseType + "/" + routePart; - if (block.url && block.params) { - // we ended up at an API definition part! - var parts = messageType.split("/"); - var section = Util.toCamelCase(parts[1].toLowerCase()); - if (!block.method) { - throw new Error("No HTTP method specified for " + messageType + - "in section " + section); - } - - parts.splice(0, 2); - var funcName = Util.toCamelCase(parts.join("-")); - var comment = createComment(block.params, section, funcName, " "); - - // add the handler to the sections - if (!sections[section]) - sections[section] = []; - - var afterRequest = ""; - if (headers && headers.length) { - afterRequest = AfterRequestTpl.replace("<%headers%>", "\"" + - headers.join("\", \"") + "\""); - } - sections[section].push(HandlerTpl - .replace("<%funcName%>", funcName) - .replace("<%comment%>", comment) - .replace("<%afterRequest%>", afterRequest) - ); - - // add test to the testSections - if (!testSections[section]) - testSections[section] = []; - testSections[section].push(TestHandlerTpl - .replace("<%name%>", block.method + " " + block.url + " (" + funcName + ")") - .replace("<%funcName%>", section + "." + funcName) - .replace("<%params%>", getParams(block.params, " ")) - ); - } - else { - // recurse into this block next: - prepareApi(block, messageType); - } - }); - } - - Util.log("Converting routes to functions"); - prepareApi(routes); - - Util.log("Writing files to version dir"); - var sectionNames = Object.keys(sections); - - Util.log("Writing index.js file for version " + version); - Fs.writeFileSync(Path.join(dir, "index.js"), - IndexTpl - .replace("<%name%>", defines.constants.name) - .replace("<%description%>", defines.constants.description) - .replace("<%scripts%>", "\"" + sectionNames.join("\", \"") + "\""), - "utf8"); - - Object.keys(sections).forEach(function(section) { - var def = sections[section]; - Util.log("Writing '" + section + ".js' file for version " + version); - Fs.writeFileSync(Path.join(dir, section + ".js"), SectionTpl - .replace(/<%sectionName%>/g, section) - .replace("<%sectionBody%>", def.join("\n")), - "utf8" - ); - - // When we don't need to generate tests, bail out here. - if (!tests) - return; - - def = testSections[section]; - // test if previous tests already contained implementations by checking - // if the difference in character count between the current test file - // and the newly generated one is more than twenty characters. - var body = TestSectionTpl - .replace("<%version%>", version.replace("v", "")) - .replace(/<%sectionName%>/g, section) - .replace("<%testBody%>", def.join("\n\n")); - var path = Path.join(dir, section + "Test.js"); - if (Fs.existsSync(path) && Math.abs(Fs.readFileSync(path, "utf8").length - body.length) >= 20) { - Util.log("Moving old test file to '" + path + ".bak' to preserve tests " + - "that were already implemented. \nPlease be sure te check this file " + - "and move all implemented tests back into the newly generated test!", "error"); - Fs.renameSync(path, path + ".bak"); - } - - Util.log("Writing test file for " + section + ", version " + version); - Fs.writeFileSync(path, body, "utf8"); - }); - }); -}; - -if (!module.parent) { - var argv = Optimist - .wrap(80) - .usage("Generate the implementation of the node-github module, including " - + "unit-test scaffolds.\nUsage: $0 [-r] [-v VERSION]") - .alias("r", "restore") - .describe("r", "Restore .bak files, generated by a previous run, to the original") - .alias("v", "version") - .describe("v", "Semantic version number of the API to generate. Example: '3.0.0'") - .alias("t", "tests") - .describe("t", "Also generate unit test scaffolds") - .alias("h", "help") - .describe("h", "Display this usage information") - .boolean(["r", "t", "h"]) - .argv; - - if (argv.help) { - Util.log(Optimist.help()); - process.exit(); - } - - var baseDir = Path.join(__dirname, "api"); - var availVersions = {}; - Fs.readdirSync(baseDir).forEach(function(version) { - var path = Path.join(baseDir, version, "routes.json"); - if (!Fs.existsSync(path)) - return; - var routes; - try { - routes = JSON.parse(Fs.readFileSync(path, "utf8")); - } - catch (ex) { - return; - } - if (!routes.defines) - return; - availVersions[version] = routes; - }); - - if (!Object.keys(availVersions).length) { - Util.log("No versions available to generate.", "fatal"); - process.exit(1); - } - var versions = {}; - if (argv.version) { - if (argv.version.charAt(0) != "v") - argv.version = argv.v = "v" + argv.version; - if (!availVersions[argv.version]) { - Util.log("Version '" + argv.version + "' is not available", "fatal"); - process.exit(1); - } - versions[argv.version] = availVersions[argv.version]; - } - if (!Object.keys(versions).length) { - Util.log("No versions specified via the command line, generating for all available versions."); - versions = availVersions; - } - - Util.log("Starting up..."); - main(versions, argv.tests, argv.restore); -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/index.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/index.js deleted file mode 100644 index 0c062efc..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/index.js +++ /dev/null @@ -1,847 +0,0 @@ -"use strict"; - -var error = require("./error"); -var fs = require("fs"); -var mime = require("mime"); -var Util = require("./util"); -var Url = require("url"); - -/** section: github - * class Client - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - * - * [[Client]] can load any version of the [[github]] client API, with the - * requirement that a valid routes.json definition file is present in the - * `api/[VERSION]` directory and that the routes found in this file are - * implemented as well. - * - * Upon instantiation of the [[Client]] class, the routes.json file is loaded - * from the API version specified in the configuration and, parsed and from it - * the routes for HTTP requests are extracted. For each HTTP endpoint to the - * HTTP server, a method is generated which accepts a Javascript Object - * with parameters and an optional callback to be invoked when the API request - * returns from the server or when the parameters could not be validated. - * - * When an HTTP endpoint is processed and a method is generated as described - * above, [[Client]] also sets up parameter validation with the rules as - * defined in the routes.json. A full example that illustrates how this works - * is shown below: - * - * ##### Example - * - * First, we look at a listing of a sample routes.json routes definition file: - * - * { - * "defines": { - * "constants": { - * "name": "Github", - * "description": "A Node.JS module, which provides an object oriented wrapper for the GitHub v3 API.", - * "protocol": "https", - * "host": "api.github.com", - * "port": 443, - * "dateFormat": "YYYY-MM-DDTHH:MM:SSZ", - * "requestFormat": "json" - * }, - * "response-headers": [ - * "X-RateLimit-Limit", - * "X-RateLimit-Remaining", - * "Link" - * ], - * "params": { - * "files": { - * "type": "Json", - * "required": true, - * "validation": "", - * "invalidmsg": "", - * "description": "Files that make up this gist. The key of which should be a required string filename and the value another required hash with parameters: 'content'" - * }, - * "user": { - * "type": "String", - * "required": true, - * "validation": "", - * "invalidmsg": "", - * "description": "" - * }, - * "description": { - * "type": "String", - * "required": false, - * "validation": "", - * "invalidmsg": "", - * "description": "" - * }, - * "page": { - * "type": "Number", - * "required": false, - * "validation": "^[0-9]+$", - * "invalidmsg": "", - * "description": "Page number of the results to fetch." - * }, - * "per_page": { - * "type": "Number", - * "required": false, - * "validation": "^[0-9]+$", - * "invalidmsg": "", - * "description": "A custom page size up to 100. Default is 30." - * } - * } - * }, - * - * "gists": { - * "get-from-user": { - * "url": ":user/gists", - * "method": "GET", - * "params": { - * "$user": null, - * "$page": null, - * "$per_page": null - * } - * }, - * - * "create": { - * "url": "/gists", - * "method": "POST", - * "params": { - * "$description": null, - * "public": { - * "type": "Boolean", - * "required": true, - * "validation": "", - * "invalidmsg": "", - * "description": "" - * }, - * "$files": null - * } - * } - * } - * } - * - * You probably noticed that the definition is quite verbose and the decision - * for its design was made to be verbose whilst still allowing for basic variable - * definitions and substitions for request parameters. - * - * There are two sections; 'defines' and 'gists' in this example. - * - * The `defines` section contains a list of `constants` that will be used by the - * [[Client]] to make requests to the right URL that hosts the API. - * The `gists` section defines the endpoints for calls to the API server, for - * gists specifically in this example, but the other API sections are defined in - * the exact same way. - * These definitions are parsed and methods are created that the client can call - * to make an HTTP request to the server. - * there is one endpoint defined: . - * In this example, the endpoint `gists/get-from-user` will be exposed as a member - * on the [[Client]] object and may be invoked with - * - * client.getFromUser({ - * "user": "bob" - * }, function(err, ret) { - * // do something with the result here. - * }); - * - * // or to fetch a specfic page: - * client.getFromUser({ - * "user": "bob", - * "page": 2, - * "per_page": 100 - * }, function(err, ret) { - * // do something with the result here. - * }); - * - * All the parameters as specified in the Object that is passed to the function - * as first argument, will be validated according to the rules in the `params` - * block of the route definition. - * Thus, in the case of the `user` parameter, according to the definition in - * the `params` block, it's a variable that first needs to be looked up in the - * `params` block of the `defines` section (at the top of the JSON file). Params - * that start with a `$` sign will be substituted with the param with the same - * name from the `defines/params` section. - * There we see that it is a required parameter (needs to hold a value). In other - * words, if the validation requirements are not met, an HTTP error is passed as - * first argument of the callback. - * - * Implementation Notes: the `method` is NOT case sensitive, whereas `url` is. - * The `url` parameter also supports denoting parameters inside it as follows: - * - * "get-from-user": { - * "url": ":user/gists", - * "method": "GET" - * ... - * } - **/ -var Client = module.exports = function(config) { - config.headers = config.headers || {}; - this.config = config; - this.debug = Util.isTrue(config.debug); - - this.version = config.version; - var cls = require("./api/v" + this.version); - this[this.version] = new cls(this); - - var pathPrefix = ""; - // Check if a prefix is passed in the config and strip any leading or trailing slashes from it. - if (typeof config.pathPrefix == "string") { - pathPrefix = "/" + config.pathPrefix.replace(/(^[\/]+|[\/]+$)/g, ""); - this.config.pathPrefix = pathPrefix; - } - - this.setupRoutes(); -}; - -(function() { - /** - * Client#setupRoutes() -> null - * - * Configures the routes as defined in a routes.json file of an API version - * - * [[Client#setupRoutes]] is invoked by the constructor, takes the - * contents of the JSON document that contains the definitions of all the - * available API routes and iterates over them. - * - * It first recurses through each definition block until it reaches an API - * endpoint. It knows that an endpoint is found when the `url` and `param` - * definitions are found as a direct member of a definition block. - * Then the availability of an implementation by the API is checked; if it's - * not present, this means that a portion of the API as defined in the routes.json - * file is not implemented properly, thus an exception is thrown. - * After this check, a method is attached to the [[Client]] instance - * and becomes available for use. Inside this method, the parameter validation - * and typecasting is done, according to the definition of the parameters in - * the `params` block, upon invocation. - * - * This mechanism ensures that the handlers ALWAYS receive normalized data - * that is of the correct format and type. JSON parameters are parsed, Strings - * are trimmed, Numbers and Floats are casted and checked for NaN after that. - * - * Note: Query escaping for usage with SQL products is something that can be - * implemented additionally by adding an additional parameter type. - **/ - this.setupRoutes = function() { - var self = this; - var api = this[this.version]; - var routes = api.routes; - var defines = routes.defines; - this.constants = defines.constants; - this.requestHeaders = defines["request-headers"].map(function(header) { - return header.toLowerCase(); - }); - delete routes.defines; - - function trim(s) { - if (typeof s != "string") - return s; - return s.replace(/^[\s\t\r\n]+/, "").replace(/[\s\t\r\n]+$/, ""); - } - - function parseParams(msg, paramsStruct) { - var params = Object.keys(paramsStruct); - var paramName, def, value, type; - for (var i = 0, l = params.length; i < l; ++i) { - paramName = params[i]; - if (paramName.charAt(0) == "$") { - paramName = paramName.substr(1); - if (!defines.params[paramName]) { - throw new error.BadRequest("Invalid variable parameter name substitution; param '" + - paramName + "' not found in defines block", "fatal"); - } - else { - def = paramsStruct[paramName] = defines.params[paramName]; - delete paramsStruct["$" + paramName]; - } - } - else - def = paramsStruct[paramName]; - - value = trim(msg[paramName]); - if (typeof value != "boolean" && !value) { - // we don't need to validation for undefined parameter values - // that are not required. - if (!def.required || (def["allow-empty"] && value === "")) - continue; - throw new error.BadRequest("Empty value for parameter '" + - paramName + "': " + value); - } - - // validate the value and type of parameter: - if (def.validation) { - if (!new RegExp(def.validation).test(value)) { - throw new error.BadRequest("Invalid value for parameter '" + - paramName + "': " + value); - } - } - - if (def.type) { - type = def.type.toLowerCase(); - if (type == "number") { - value = parseInt(value, 10); - if (isNaN(value)) { - throw new error.BadRequest("Invalid value for parameter '" + - paramName + "': " + msg[paramName] + " is NaN"); - } - } - else if (type == "float") { - value = parseFloat(value); - if (isNaN(value)) { - throw new error.BadRequest("Invalid value for parameter '" + - paramName + "': " + msg[paramName] + " is NaN"); - } - } - else if (type == "json") { - if (typeof value == "string") { - try { - value = JSON.parse(value); - } - catch(ex) { - throw new error.BadRequest("JSON parse error of value for parameter '" + - paramName + "': " + value); - } - } - } - else if (type == "date") { - value = new Date(value); - } - } - msg[paramName] = value; - } - } - - function prepareApi(struct, baseType) { - if (!baseType) - baseType = ""; - Object.keys(struct).forEach(function(routePart) { - var block = struct[routePart]; - if (!block) - return; - var messageType = baseType + "/" + routePart; - if (block.url && block.params) { - // we ended up at an API definition part! - var endPoint = messageType.replace(/^[\/]+/g, ""); - var parts = messageType.split("/"); - var section = Util.toCamelCase(parts[1].toLowerCase()); - parts.splice(0, 2); - var funcName = Util.toCamelCase(parts.join("-")); - - if (!api[section]) { - throw new Error("Unsupported route section, not implemented in version " + - self.version + " for route '" + endPoint + "' and block: " + - JSON.stringify(block)); - } - - if (!api[section][funcName]) { - if (self.debug) - Util.log("Tried to call " + funcName); - throw new Error("Unsupported route, not implemented in version " + - self.version + " for route '" + endPoint + "' and block: " + - JSON.stringify(block)); - } - - if (!self[section]) { - self[section] = {}; - // add a utility function 'getFooApi()', which returns the - // section to which functions are attached. - self[Util.toCamelCase("get-" + section + "-api")] = function() { - return self[section]; - }; - } - - self[section][funcName] = function(msg, callback) { - try { - parseParams(msg, block.params); - } - catch (ex) { - // when the message was sent to the client, we can - // reply with the error directly. - api.sendError(ex, block, msg, callback); - if (self.debug) - Util.log(ex.message, "fatal"); - // on error, there's no need to continue. - return; - } - - api[section][funcName].call(api, msg, block, callback); - }; - } - else { - // recurse into this block next: - prepareApi(block, messageType); - } - }); - } - - prepareApi(routes); - }; - - /** - * Client#authenticate(options) -> null - * - options (Object): Object containing the authentication type and credentials - * - type (String): One of the following: `basic` or `oauth` - * - username (String): Github username - * - password (String): Password to your account - * - token (String): OAuth2 token - * - * Set an authentication method to have access to protected resources. - * - * ##### Example - * - * // basic - * github.authenticate({ - * type: "basic", - * username: "mikedeboertest", - * password: "test1324" - * }); - * - * // or oauth - * github.authenticate({ - * type: "oauth", - * token: "e5a4a27487c26e571892846366de023349321a73" - * }); - * - * // or oauth key/ secret - * github.authenticate({ - * type: "oauth", - * key: "clientID", - * secret: "clientSecret" - * }); - * - * // or token - * github.authenticate({ - * type: "token", - * token: "userToken", - * }); - **/ - this.authenticate = function(options) { - if (!options) { - this.auth = false; - return; - } - if (!options.type || "basic|oauth|client|token".indexOf(options.type) === -1) - throw new Error("Invalid authentication type, must be 'basic', 'oauth' or 'client'"); - if (options.type == "basic" && (!options.username || !options.password)) - throw new Error("Basic authentication requires both a username and password to be set"); - if (options.type == "oauth") { - if (!options.token && !(options.key && options.secret)) - throw new Error("OAuth2 authentication requires a token or key & secret to be set"); - } - if (options.type == "token" && !options.token) - throw new Error("Token authentication requires a token to be set"); - - this.auth = options; - }; - - function getPageLinks(link) { - if (typeof link == "object" && (link.link || link.meta.link)) - link = link.link || link.meta.link; - - var links = {}; - if (typeof link != "string") - return links; - - // link format: - // '; rel="next", ; rel="last"' - link.replace(/<([^>]*)>;\s*rel="([\w]*)\"/g, function(m, uri, type) { - links[type] = uri; - }); - return links; - } - - /** - * Client#hasNextPage(link) -> null - * - link (mixed): response of a request or the contents of the Link header - * - * Check if a request result contains a link to the next page - **/ - this.hasNextPage = function(link) { - return getPageLinks(link).next; - }; - - /** - * Client#hasPreviousPage(link) -> null - * - link (mixed): response of a request or the contents of the Link header - * - * Check if a request result contains a link to the previous page - **/ - this.hasPreviousPage = function(link) { - return getPageLinks(link).prev; - }; - - /** - * Client#hasLastPage(link) -> null - * - link (mixed): response of a request or the contents of the Link header - * - * Check if a request result contains a link to the last page - **/ - this.hasLastPage = function(link) { - return getPageLinks(link).last; - }; - - /** - * Client#hasFirstPage(link) -> null - * - link (mixed): response of a request or the contents of the Link header - * - * Check if a request result contains a link to the first page - **/ - this.hasFirstPage = function(link) { - return getPageLinks(link).first; - }; - - function getPage(link, which, callback) { - var url = getPageLinks(link)[which]; - if (!url) - return callback(new error.NotFound("No " + which + " page found")); - - var api = this[this.version]; - var parsedUrl = Url.parse(url, true); - var block = { - url: parsedUrl.pathname, - method: "GET", - params: parsedUrl.query - }; - this.httpSend(parsedUrl.query, block, function(err, res) { - if (err) - return api.sendError(err, null, parsedUrl.query, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - ["x-ratelimit-limit", "x-ratelimit-remaining", "link"].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } - - if (callback) - callback(null, ret); - }); - } - - /** - * Client#getNextPage(link, callback) -> null - * - link (mixed): response of a request or the contents of the Link header - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * Get the next page, based on the contents of the `Link` header - **/ - this.getNextPage = function(link, callback) { - getPage.call(this, link, "next", callback); - }; - - /** - * Client#getPreviousPage(link, callback) -> null - * - link (mixed): response of a request or the contents of the Link header - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * Get the previous page, based on the contents of the `Link` header - **/ - this.getPreviousPage = function(link, callback) { - getPage.call(this, link, "prev", callback); - }; - - /** - * Client#getLastPage(link, callback) -> null - * - link (mixed): response of a request or the contents of the Link header - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * Get the last page, based on the contents of the `Link` header - **/ - this.getLastPage = function(link, callback) { - getPage.call(this, link, "last", callback); - }; - - /** - * Client#getFirstPage(link, callback) -> null - * - link (mixed): response of a request or the contents of the Link header - * - callback (Function): function to call when the request is finished with an error as first argument and result data as second argument. - * - * Get the first page, based on the contents of the `Link` header - **/ - this.getFirstPage = function(link, callback) { - getPage.call(this, link, "first", callback); - }; - - function getRequestFormat(hasBody, block) { - if (hasBody) - return block.requestFormat || this.constants.requestFormat; - - return "query"; - } - - function getQueryAndUrl(msg, def, format, config) { - var url = def.url; - if (config.pathPrefix && url.indexOf(config.pathPrefix) !== 0) { - url = config.pathPrefix + def.url; - } - var ret = { - query: format == "json" ? {} : format == "raw" ? msg.data : [] - }; - if (!def || !def.params) { - ret.url = url; - return ret; - } - - Object.keys(def.params).forEach(function(paramName) { - paramName = paramName.replace(/^[$]+/, ""); - if (!(paramName in msg)) - return; - - var isUrlParam = url.indexOf(":" + paramName) !== -1; - var valFormat = isUrlParam || format != "json" ? "query" : format; - var val; - if (valFormat != "json") { - if (typeof msg[paramName] == "object") { - try { - msg[paramName] = JSON.stringify(msg[paramName]); - val = encodeURIComponent(msg[paramName]); - } - catch (ex) { - return Util.log("httpSend: Error while converting object to JSON: " - + (ex.message || ex), "error"); - } - } - else if (def.params[paramName] && def.params[paramName].combined) { - // Check if this is a combined (search) string. - val = msg[paramName].split(/[\s\t\r\n]*\+[\s\t\r\n]*/) - .map(function(part) { - return encodeURIComponent(part); - }) - .join("+"); - } - else - val = encodeURIComponent(msg[paramName]); - } - else - val = msg[paramName]; - - if (isUrlParam) { - url = url.replace(":" + paramName, val); - } - else { - if (format == "json") - ret.query[paramName] = val; - else if (format != "raw") - ret.query.push(paramName + "=" + val); - } - }); - ret.url = url; - return ret; - } - - /** - * Client#httpSend(msg, block, callback) -> null - * - msg (Object): parameters to send as the request body - * - block (Object): parameter definition from the `routes.json` file that - * contains validation rules - * - callback (Function): function to be called when the request returns. - * If the the request returns with an error, the error is passed to - * the callback as its first argument (NodeJS-style). - * - * Send an HTTP request to the server and pass the result to a callback. - **/ - this.httpSend = function(msg, block, callback) { - var self = this; - var method = block.method.toLowerCase(); - var hasFileBody = block.hasFileBody; - var hasBody = !hasFileBody && ("head|get|delete".indexOf(method) === -1); - var format = getRequestFormat.call(this, hasBody, block); - var obj = getQueryAndUrl(msg, block, format, self.config); - var query = obj.query; - var url = this.config.url ? this.config.url + obj.url : obj.url; - - var path = url; - var protocol = this.config.protocol || this.constants.protocol || "http"; - var host = block.host || this.config.host || this.constants.host; - var port = this.config.port || this.constants.port || (protocol == "https" ? 443 : 80); - var proxyUrl; - if (this.config.proxy !== undefined) { - proxyUrl = this.config.proxy; - } else { - proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY; - } - if (proxyUrl) { - path = Url.format({ - protocol: protocol, - hostname: host, - port: port, - pathname: path - }); - - if (!/^(http|https):\/\//.test(proxyUrl)) - proxyUrl = "https://" + proxyUrl; - - var parsedUrl = Url.parse(proxyUrl); - protocol = parsedUrl.protocol.replace(":", ""); - host = parsedUrl.hostname; - port = parsedUrl.port || (protocol == "https" ? 443 : 80); - } - if (!hasBody && query.length) - path += "?" + query.join("&"); - - var headers = { - "host": host, - "content-length": "0" - }; - if (hasBody) { - if (format == "json") - query = JSON.stringify(query); - else if (format != "raw") - query = query.join("&"); - headers["content-length"] = Buffer.byteLength(query, "utf8"); - headers["content-type"] = format == "json" - ? "application/json; charset=utf-8" - : format == "raw" - ? "text/plain; charset=utf-8" - : "application/x-www-form-urlencoded; charset=utf-8"; - } - if (this.auth) { - var basic; - switch (this.auth.type) { - case "oauth": - if (this.auth.token) { - path += (path.indexOf("?") === -1 ? "?" : "&") + - "access_token=" + encodeURIComponent(this.auth.token); - } else { - path += (path.indexOf("?") === -1 ? "?" : "&") + - "client_id=" + encodeURIComponent(this.auth.key) + - "&client_secret=" + encodeURIComponent(this.auth.secret); - } - break; - case "token": - headers.authorization = "token " + this.auth.token; - break; - case "basic": - basic = new Buffer(this.auth.username + ":" + this.auth.password, "ascii").toString("base64"); - headers.authorization = "Basic " + basic; - break; - default: - break; - } - } - - function callCallback(err, result) { - if (callback) { - var cb = callback; - callback = undefined; - cb(err, result); - } - } - - function addCustomHeaders(customHeaders) { - Object.keys(customHeaders).forEach(function(header) { - var headerLC = header.toLowerCase(); - if (self.requestHeaders.indexOf(headerLC) == -1) - return; - headers[headerLC] = customHeaders[header]; - }); - } - addCustomHeaders(Util.extend(msg.headers || {}, this.config.headers)); - - if (!headers["user-agent"]) - headers["user-agent"] = "NodeJS HTTP Client"; - - if (!("accept" in headers)) - headers.accept = this.config.requestMedia || this.constants.requestMedia; - - var options = { - host: host, - port: port, - path: path, - method: method, - headers: headers - }; - - if (this.config.rejectUnauthorized !== undefined) - options.rejectUnauthorized = this.config.rejectUnauthorized; - - if (this.debug) - console.log("REQUEST: ", options); - - function httpSendRequest() { - var req = require(protocol).request(options, function(res) { - if (self.debug) { - console.log("STATUS: " + res.statusCode); - console.log("HEADERS: " + JSON.stringify(res.headers)); - } - res.setEncoding("utf8"); - var data = ""; - res.on("data", function(chunk) { - data += chunk; - }); - res.on("error", function(err) { - callCallback(err); - }); - res.on("end", function() { - if (res.statusCode >= 400 && res.statusCode < 600 || res.statusCode < 10) { - callCallback(new error.HttpError(data, res.statusCode)); - } else { - res.data = data; - callCallback(null, res); - } - }); - }); - - var timeout = (block.timeout !== undefined) ? block.timeout : self.config.timeout; - if (timeout) { - req.setTimeout(timeout); - } - - req.on("error", function(e) { - if (self.debug) - console.log("problem with request: " + e.message); - callCallback(e.message); - }); - - req.on("timeout", function() { - if (self.debug) - console.log("problem with request: timed out"); - callCallback(new error.GatewayTimeout()); - }); - - // write data to request body - if (hasBody && query.length) { - if (self.debug) - console.log("REQUEST BODY: " + query + "\n"); - req.write(query + "\n"); - } - - if (block.hasFileBody) { - var stream = fs.createReadStream(msg.filePath); - stream.pipe(req); - } else { - req.end(); - } - }; - - if (hasFileBody) { - fs.stat(msg.filePath, function(err, stat) { - if (err) { - callCallback(err); - } else { - headers["content-length"] = stat.size; - headers["content-type"] = mime.lookup(msg.name); - httpSendRequest(); - } - }); - } else { - httpSendRequest(); - } - }; -}).call(Client.prototype); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/.npmignore b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/.npmignore deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/LICENSE b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/LICENSE deleted file mode 100644 index 451fc455..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -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/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/README.md b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/README.md deleted file mode 100644 index 506fbe55..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/README.md +++ /dev/null @@ -1,90 +0,0 @@ -# mime - -Comprehensive MIME type mapping API based on mime-db module. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## Contributing / Testing - - npm run test - -## Command Line - - mime [path_string] - -E.g. - - > mime scripts/jquery.js - application/javascript - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - -```js -var mime = require('mime'); - -mime.lookup('/path/to/file.txt'); // => 'text/plain' -mime.lookup('file.txt'); // => 'text/plain' -mime.lookup('.TXT'); // => 'text/plain' -mime.lookup('htm'); // => 'text/html' -``` - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - -```js -mime.extension('text/html'); // => 'html' -mime.extension('application/octet-stream'); // => 'bin' -``` - -### mime.charsets.lookup() - -Map mime-type to charset - -```js -mime.charsets.lookup('text/plain'); // => 'UTF-8' -``` - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -Custom type mappings can be added on a per-project basis via the following APIs. - -### mime.define() - -Add custom mime/extension mappings - -```js -mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... -}); - -mime.lookup('x-sft'); // => 'text/x-some-format' -``` - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - -```js -mime.extension('text/x-some-format'); // => 'x-sf' -``` - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - -```js -mime.load('./my_project.types'); -``` -The .types file format is simple - See the `types` dir for examples. diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/build.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/build.js deleted file mode 100644 index ed5313e3..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/build.js +++ /dev/null @@ -1,11 +0,0 @@ -var db = require('mime-db'); - -var mapByType = {}; -Object.keys(db).forEach(function(key) { - var extensions = db[key].extensions; - if (extensions) { - mapByType[key] = extensions; - } -}); - -console.log(JSON.stringify(mapByType)); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/test.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/test.js deleted file mode 100644 index 58b9ba7c..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/build/test.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('../mime'); -var assert = require('assert'); -var path = require('path'); - -// -// Test mime lookups -// - -assert.equal('text/plain', mime.lookup('text.txt')); // normal file -assert.equal('text/plain', mime.lookup('TEXT.TXT')); // uppercase -assert.equal('text/plain', mime.lookup('dir/text.txt')); // dir + file -assert.equal('text/plain', mime.lookup('.text.txt')); // hidden file -assert.equal('text/plain', mime.lookup('.txt')); // nameless -assert.equal('text/plain', mime.lookup('txt')); // extension-only -assert.equal('text/plain', mime.lookup('/txt')); // extension-less () -assert.equal('text/plain', mime.lookup('\\txt')); // Windows, extension-less -assert.equal('application/octet-stream', mime.lookup('text.nope')); // unrecognized -assert.equal('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -assert.equal('txt', mime.extension(mime.types.text)); -assert.equal('html', mime.extension(mime.types.htm)); -assert.equal('bin', mime.extension('application/octet-stream')); -assert.equal('bin', mime.extension('application/octet-stream ')); -assert.equal('html', mime.extension(' text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html; charset=UTF-8 ')); -assert.equal('html', mime.extension('text/html; charset=UTF-8')); -assert.equal('html', mime.extension('text/html ; charset=UTF-8')); -assert.equal('html', mime.extension('text/html;charset=UTF-8')); -assert.equal('html', mime.extension('text/Html;charset=UTF-8')); -assert.equal(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -assert.equal('application/font-woff', mime.lookup('file.woff')); -assert.equal('application/octet-stream', mime.lookup('file.buffer')); -assert.equal('audio/mp4', mime.lookup('file.m4a')); -assert.equal('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -assert.equal('UTF-8', mime.charsets.lookup('text/plain')); -assert.equal(undefined, mime.charsets.lookup(mime.types.js)); -assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nAll tests passed'); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/cli.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/cli.js deleted file mode 100755 index 20b1ffeb..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/cli.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var mime = require('./mime.js'); -var file = process.argv[2]; -var type = mime.lookup(file); - -process.stdout.write(type + '\n'); - diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/mime.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/mime.js deleted file mode 100644 index 341b6a5c..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/mime.js +++ /dev/null @@ -1,108 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Define built-in types -mime.define(require('./types.json')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/package.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/package.json deleted file mode 100644 index ab45e600..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "scripts": { - "prepublish": "node build/build.js > types.json", - "test": "node build/test.js" - }, - "bin": { - "mime": "cli.js" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "description": "A comprehensive library for mime-type mapping", - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/broofa/node-mime/master/LICENSE" - } - ], - "dependencies": {}, - "devDependencies": { - "mime-db": "^1.2.0" - }, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "git+https://github.com/broofa/node-mime.git", - "type": "git" - }, - "version": "1.3.4", - "gitHead": "1628f6e0187095009dcef4805c3a49706f137974", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "homepage": "https://github.com/broofa/node-mime", - "_id": "mime@1.3.4", - "_shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53", - "_from": "mime@>=1.2.11 <2.0.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "broofa", - "email": "robert@broofa.com" - }, - "maintainers": [ - { - "name": "broofa", - "email": "robert@broofa.com" - }, - { - "name": "bentomas", - "email": "benjamin@benjaminthomas.org" - } - ], - "dist": { - "shasum": "115f9e3b6b3daf2959983cb38f149a2d40eb5d53", - "tarball": "http://registry.npmjs.org/mime/-/mime-1.3.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/types.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/types.json deleted file mode 100644 index c674b1c8..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/node_modules/mime/types.json +++ /dev/null @@ -1 +0,0 @@ -{"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mdp"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-nzb":["nzb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-research-info-systems":["ris"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp4":["mp4a","m4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/opentype":["otf"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-mrsid-image":["sid"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/sgml":["sgml","sgm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["markdown","md","mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-pascal":["p","pas"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/package.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/package.json deleted file mode 100644 index 16d3ca1e..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "github", - "version": "0.2.4", - "description": "NodeJS wrapper for the GitHub API", - "author": { - "name": "Mike de Boer", - "email": "info@mikedeboer.nl" - }, - "contributors": [ - { - "name": "Mike de Boer", - "email": "info@mikedeboer.nl" - }, - { - "name": "Fabian Jakobs", - "email": "fabian@c9.io" - } - ], - "homepage": "http://github.com/mikedeboer/node-github", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/mikedeboer/node-github.git" - }, - "engine": { - "node": ">=0.4.0" - }, - "dependencies": { - "mime": "^1.2.11" - }, - "devDependencies": { - "oauth": "~0.9.7", - "optimist": "~0.6.0", - "mocha": "~1.13.0" - }, - "main": ".", - "scripts": { - "test": "node ./test/all.js" - }, - "licenses": [ - { - "type": "The MIT License", - "url": "http://www.opensource.org/licenses/mit-license.php" - } - ], - "gitHead": "29dedb3022649c27ac1dad79326270b6b2a48047", - "bugs": { - "url": "https://github.com/mikedeboer/node-github/issues" - }, - "_id": "github@0.2.4", - "_shasum": "24fa7f0e13fa11b946af91134c51982a91ce538b", - "_from": "github@*", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "mikedeboer", - "email": "info@mikedeboer.nl" - }, - "maintainers": [ - { - "name": "mikedeboer", - "email": "info@mikedeboer.nl" - } - ], - "dist": { - "shasum": "24fa7f0e13fa11b946af91134c51982a91ce538b", - "tarball": "http://registry.npmjs.org/github/-/github-0.2.4.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/github/-/github-0.2.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/seed.yml b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/seed.yml deleted file mode 100644 index 80315da0..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/seed.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- - name: node-github - description: NodeJS wrapper for the GitHub API - tags: git github web - version: 0.2.4 diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/after_request.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/after_request.js.tpl deleted file mode 100644 index 0e8277cc..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/after_request.js.tpl +++ /dev/null @@ -1,11 +0,0 @@ - - if (!ret) - ret = {}; - if (typeof ret == "object") { - if (!ret.meta) - ret.meta = {}; - [<%headers%>].forEach(function(header) { - if (res.headers[header]) - ret.meta[header] = res.headers[header]; - }); - } diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/handler.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/handler.js.tpl deleted file mode 100644 index b76033e6..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/handler.js.tpl +++ /dev/null @@ -1,24 +0,0 @@ -<%comment%> - this.<%funcName%> = function(msg, block, callback) { - var self = this; - this.client.httpSend(msg, block, function(err, res) { - if (err) - return self.sendError(err, null, msg, callback); - - var ret; - try { - ret = res.data; - var contentType = res.headers["content-type"]; - if (contentType && contentType.indexOf("application/json") !== -1) - ret = JSON.parse(ret); - } - catch (ex) { - if (callback) - callback(new error.InternalServerError(ex.message), res); - return; - } -<%afterRequest%> - if (callback) - callback(null, ret); - }); - }; diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/index.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/index.js.tpl deleted file mode 100644 index b5a585ff..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/index.js.tpl +++ /dev/null @@ -1,40 +0,0 @@ -/** - * class <%name%> - * - * <%description%> - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var Fs = require("fs"); -var Util = require("./../../util"); -var error = require("./../../error"); - -var GithubHandler = module.exports = function(client) { - this.client = client; - this.routes = JSON.parse(Fs.readFileSync(__dirname + "/routes.json", "utf8")); -}; - -var proto = { - sendError: function(err, block, msg, callback) { - if (this.client.debug) - Util.log(err, block, msg.user, "error"); - if (typeof err == "string") - err = new error.InternalServerError(err); - if (callback) - callback(err); - } -}; - -[<%scripts%>].forEach(function(api) { - Util.extend(proto, require("./" + api)); -}); - -GithubHandler.prototype = proto; diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/section.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/section.js.tpl deleted file mode 100644 index 82a7c5ea..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/section.js.tpl +++ /dev/null @@ -1,23 +0,0 @@ -/** - * mixin <%sectionName%> - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var error = require("./../../error"); -var Util = require("./../../util"); - -var <%sectionName%> = module.exports = { - <%sectionName%>: {} -}; - -(function() { -<%sectionBody%> -}).call(<%sectionName%>.<%sectionName%>); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_handler.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_handler.js.tpl deleted file mode 100644 index f6287660..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_handler.js.tpl +++ /dev/null @@ -1,10 +0,0 @@ - it("should successfully execute <%name%>", function(next) { - client.<%funcName%>( - <%params%>, - function(err, res) { - Assert.equal(err, null); - // other assertions go here - next(); - } - ); - }); \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_section.js.tpl b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_section.js.tpl deleted file mode 100644 index bde8fbfe..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/templates/test_section.js.tpl +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../../index"); - -describe("[<%sectionName%>]", function() { - var client; - var token = "c286e38330e15246a640c2cf32a45ea45d93b2ba"; - - beforeEach(function() { - client = new Client({ - version: "<%version%>" - }); - client.authenticate({ - type: "oauth", - token: token - }); - }); - -<%testBody%> -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/client_test.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/client_test.js deleted file mode 100644 index 85305895..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/client_test.js +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - */ - -"use strict"; - -var Assert = require("assert"); -var Client = require("./../index"); - -describe("[client]", function() { - var client; - var token = "e5a4a27487c26e571892846366de023349321a73"; - - beforeEach(function() { - client = new Client({ - version: "3.0.0" - }); - /*client.authenticate({ - type: "oauth", - token: token - });*/ - }); - - it("should successfully execute GET /authorizations (getAll)", function(next) { - // `aseemk` has two pages of followers right now. - client.user.getFollowers( - { - user: "aseemk" - }, - function(err, res) { - Assert.equal(err, null); - - Assert.ok(!!client.hasNextPage(res)); - Assert.ok(!!client.hasLastPage(res)); - Assert.ok(!client.hasPreviousPage(res)); - - client.getNextPage(res, function(err, res) { - Assert.equal(err, null); - - Assert.ok(!!client.hasPreviousPage(res)); - Assert.ok(!!client.hasFirstPage(res)); - Assert.ok(!client.hasNextPage(res)); - Assert.ok(!client.hasLastPage(res)); - - client.getPreviousPage(res.meta.link, function(err, res) { - Assert.equal(err, null); - - Assert.ok(!!client.hasNextPage(res)); - Assert.ok(!!client.hasLastPage(res)); - Assert.ok(!client.hasPreviousPage(res)); - next(); - }); - }); - } - ); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/example.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/example.js deleted file mode 100644 index 4c288862..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/example.js +++ /dev/null @@ -1,37 +0,0 @@ -/** section: github, internal - * Example - * - * Github API usage example. - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -"use strict"; - -var Client = require("./../index"); - -var github = new Client({ - debug: true, - version: "3.0.0" -}); - -github.authenticate({ - type: "basic", - username: "mikedeboer", - password: "mysecretpass" -}); - -github.user.get({}, function(err, res) { - console.log("GOT ERR?", err); - console.log("GOT RES?", res); - - github.repos.getAll({}, function(err, res) { - console.log("GOT ERR?", err); - console.log("GOT RES?", res); - }); -}); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth.js deleted file mode 100644 index 3fbeadd6..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth.js +++ /dev/null @@ -1,95 +0,0 @@ -/** section: github, internal - * OAuth - * - * OAuth usage example. - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -var http = require("http"); -var Url = require("url"); -var querystring = require("querystring"); - -var Client = require("../index"); -var OAuth2 = require("oauth").OAuth2; - -var github = new Client({ - version: "3.0.0" -}); - -var clientId = "e8c434a1c92e9de7ff8d"; -var secret = "1d0fcbb060e1dd86a0aa3d12265419c9bb19a333"; -var oauth = new OAuth2(clientId, secret, "https://github.com/", "login/oauth/authorize", "login/oauth/access_token"); - -// for demo purposes use one global access token -// in production this has to be stored in a user session -var accessToken = ""; - -http.createServer(function(req, res) { - var url = Url.parse(req.url); - var path = url.pathname; - var query = querystring.parse(url.query); - - if (path == "/" || path.match(/^\/user\/?$/)) { - // redirect to github if there is no access token - if (!accessToken) { - res.writeHead(303, { - Location: oauth.getAuthorizeUrl({ - redirect_uri: 'http://localhost:7878/github-callback', - scope: "user,repo,gist" - }) - }); - res.end(); - return; - } - - // use github API - github.user.get({}, function(err, user) { - if (err) { - res.writeHead(err.code); - res.end(err + ""); - return; - } - res.writeHead(200); - res.end(JSON.stringify(user)); - }); - return; - } - // URL called by github after authenticating - else if (path.match(/^\/github-callback\/?$/)) { - // upgrade the code to an access token - oauth.getOAuthAccessToken(query.code, {}, function (err, access_token, refresh_token) { - if (err) { - console.log(err); - res.writeHead(500); - res.end(err + ""); - return; - } - - accessToken = access_token; - - // authenticate github API - github.authenticate({ - type: "oauth", - token: accessToken - }); - - //redirect back - res.writeHead(303, { - Location: "/" - }); - res.end(); - }); - return; - } - - res.writeHead(404); - res.end("404 - Not found"); -}).listen(7878); - -console.log("listening at http://localhost:7878"); diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth_server.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth_server.js deleted file mode 100644 index 1a2e7cf7..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/test/oauth_server.js +++ /dev/null @@ -1,59 +0,0 @@ -"use strict"; - -var GitHubApi = require("./../index"); - -var github = new GitHubApi({ - version: "3.0.0" -}); - -/* -!!!UNCOMMENT THE FOLLOWING TO MAKE THIS SCRIPT WORK, BUT CHANGE THE CREDENTIALS TO YOUR OWN!!! -github.authenticate({ - type: "basic", - username: "mikedeboertest", - password: "test1324" -}); -*/ - -github.authorization.getAll({}, function(err, res) { - if (err) - throw err; - - var ids = res.map(function(app) { return app.id; }); - - function next(id) { - github.authorization["delete"]({ - id: id - }, function(err, res) { - if (err) - throw err; - if (ids.length) - next(ids.shift()); - else - allRemoved(); - }); - } - - next(ids.shift()); - - function allRemoved() { - github.authorization.create({ - scopes: ["user", "public_repo", "repo", "repo:status", "delete_repo", "gist"], - note: "Authorization created to create unit tests", - note_url: "https://github.com/ajaxorg/node-github" - }, function(err, res) { - if (err) - throw err; - - // you can use the token within server-side apps. - // use it by doing: - // github.authenticate({ - // type: "oauth", - // token: e5a4a27487c26e571892846366de023349321a73 - // }); - console.log("TOKEN:", res.token); - console.log(res); - }); - } - -}); \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/util.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/util.js deleted file mode 100644 index 7d536d6a..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/node_modules/github/util.js +++ /dev/null @@ -1,140 +0,0 @@ -/** section: github - * class Util - * - * Copyright 2012 Cloud9 IDE, Inc. - * - * This product includes software developed by - * Cloud9 IDE, Inc (http://c9.io). - * - * Author: Mike de Boer - **/ - -var Util = require("util"); - -/** - * Util#extend(dest, src, noOverwrite) -> Object - * - dest (Object): destination object - * - src (Object): source object - * - noOverwrite (Boolean): set to `true` to overwrite values in `src` - * - * Shallow copy of properties from the `src` object to the `dest` object. If the - * `noOverwrite` argument is set to to `true`, the value of a property in `src` - * will not be overwritten if it already exists. - **/ -exports.extend = function(dest, src, noOverwrite) { - for (var prop in src) { - if (!noOverwrite || typeof dest[prop] == "undefined") - dest[prop] = src[prop]; - } - return dest; -}; - -/** - * Util#escapeRegExp(str) -> String - * - str (String): string to escape - * - * Escapes characters inside a string that will an error when it is used as part - * of a regex upon instantiation like in `new RegExp("[0-9" + str + "]")` - **/ -exports.escapeRegExp = function(str) { - return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); -}; - -/** - * Util#toCamelCase(str, [upper]) -> String - * - str (String): string to transform - * - upper (Boolean): set to `true` to transform to CamelCase - * - * Transform a string that contains spaces or dashes to camelCase. If `upper` is - * set to `true`, the string will be transformed to CamelCase. - * - * Example: - * - * Util.toCamelCase("why U no-work"); // returns 'whyUNoWork' - * Util.toCamelCase("I U no-work", true); // returns 'WhyUNoWork' - **/ -exports.toCamelCase = function(str, upper) { - str = str.toLowerCase().replace(/(?:(^.)|(\s+.)|(-.))/g, function(match) { - return match.charAt(match.length - 1).toUpperCase(); - }); - if (upper) - return str; - return str.charAt(0).toLowerCase() + str.substr(1); -}; - -/** - * Util#isTrue(c) -> Boolean - * - c (mixed): value the variable to check. Possible values: - * true The function returns true. - * 'true' The function returns true. - * 'on' The function returns true. - * 1 The function returns true. - * '1' The function returns true. - * - * Determines whether a string is true in the html attribute sense. - **/ -exports.isTrue = function(c){ - return (c === true || c === "true" || c === "on" || typeof c == "number" && c > 0 || c === "1"); -}; - -/** - * Util#isFalse(c) -> Boolean - * - c (mixed): value the variable to check. Possible values: - * false The function returns true. - * 'false' The function returns true. - * 'off' The function returns true. - * 0 The function returns true. - * '0' The function returns true. - * - * Determines whether a string is false in the html attribute sense. - **/ -exports.isFalse = function(c){ - return (c === false || c === "false" || c === "off" || c === 0 || c === "0"); -}; - -var levels = { - "info": ["\033[90m", "\033[39m"], // grey - "error": ["\033[31m", "\033[39m"], // red - "fatal": ["\033[35m", "\033[39m"], // magenta - "exit": ["\033[36m", "\033[39m"] // cyan -}; -var _slice = Array.prototype.slice; - -/** - * Util#log(arg1, [arg2], [type]) -> null - * - arg1 (mixed): messages to be printed to the standard output - * - type (String): type denotation of the message. Possible values: - * 'info', 'error', 'fatal', 'exit'. Optional, defaults to 'info'. - * - * Unified logging to the console; arguments passed to this function will put logged - * to the standard output of the current process and properly formatted. - * Any non-String object will be inspected by the NodeJS util#inspect utility - * function. - * Messages will be prefixed with its type (with corresponding font color), like so: - * - * [info] informational message - * [error] error message - * [fatal] fatal error message - * [exit] program exit message (not an error) - * - * The type of message can be defined by passing it to this function as the last/ - * final argument. If the type can not be found, this last/ final argument will be - * regarded as yet another message. - **/ -exports.log = function() { - var args = _slice.call(arguments); - var lastArg = args[args.length - 1]; - - var level = levels[lastArg] ? args.pop() : "info"; - if (!args.length) - return; - - var msg = args.map(function(arg) { - return typeof arg != "string" ? Util.inspect(arg) : arg; - }).join(" "); - var pfx = levels[level][0] + "[" + level + "]" + levels[level][1]; - - msg.split("\n").forEach(function(line) { - console.log(pfx + " " + line); - }); -}; diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/out/src/extension.js b/.vscode/extensions/codezombiech.gitignore-0.2.0/out/src/extension.js deleted file mode 100644 index 93487bca..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/out/src/extension.js +++ /dev/null @@ -1,164 +0,0 @@ -'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 vscode = require('vscode'); -var GitHubApi = require('github'); -var fs = require('fs'); -var https = require('https'); -var CancellationError = (function (_super) { - __extends(CancellationError, _super); - function CancellationError() { - _super.apply(this, arguments); - } - return CancellationError; -}(Error)); -var CacheItem = (function () { - function CacheItem(value) { - this._value = value; - this.storeDate = new Date(); - } - Object.defineProperty(CacheItem.prototype, "value", { - get: function () { - return this._value; - }, - enumerable: true, - configurable: true - }); - CacheItem.prototype.isExpired = function (expirationInterval) { - return this.storeDate.getTime() + expirationInterval * 1000 < Date.now(); - }; - return CacheItem; -}()); -var GitignoreRepository = (function () { - function GitignoreRepository(client) { - this.client = client; - var config = vscode.workspace.getConfiguration('gitignore'); - this.cacheExpirationInterval = config.get('cacheExpirationInterval', 3600); - } - /** - * Get all .gitignore files - */ - GitignoreRepository.prototype.getFiles = function () { - var _this = this; - return new Promise(function (resolve, reject) { - // If cached, return cached content - if (_this.cache && !_this.cache.isExpired(_this.cacheExpirationInterval)) { - resolve(_this.cache.value); - return; - } - // Download .gitignore files from github - _this.client.repos.getContent({ - user: 'github', - repo: 'gitignore', - path: '' - }, function (err, response) { - if (err) { - reject(err.message); - return; - } - var files = response - .filter(function (file) { - return (file.type === 'file' && file.name.endsWith('.gitignore')); - }) - .map(function (file) { - return { - label: file.name.replace(/\.gitignore/, ''), - description: file.name, - url: file.download_url - }; - }); - // Cache the retrieved gitignore files - _this.cache = new CacheItem(files); - resolve(files); - }); - }); - }; - /** - * Downloads a .gitignore from the repository to the path passed - */ - GitignoreRepository.prototype.download = function (gitignoreFile, path) { - return new Promise(function (resolve, reject) { - var file = fs.createWriteStream(path); - var request = https.get(gitignoreFile.url, function (response) { - response.pipe(file); - file.on('finish', function () { - file.close(function () { - resolve(gitignoreFile); - }); - }); - }).on('error', function (err) { - // Delete the file - fs.unlink(path); - reject(err.message); - }); - }); - }; - return GitignoreRepository; -}()); -// Create a Github API client -var client = new GitHubApi({ - version: '3.0.0', - protocol: 'https', - host: 'api.github.com', - //debug: true, - pathPrefix: '', - timeout: 5000, - headers: { - 'user-agent': 'vscode-gitignore-extension' - } -}); -// Create gitignore repository -var gitignoreRepository = new GitignoreRepository(client); -function activate(context) { - console.log('extension "gitignore" is now active!'); - var disposable = vscode.commands.registerCommand('addgitignore', function () { - // Check if workspace open - if (!vscode.workspace.rootPath) { - vscode.window.showErrorMessage('No workspace directory open'); - return; - } - Promise.resolve(vscode.window.showQuickPick(gitignoreRepository.getFiles())) - .then(function (file) { - if (!file) { - // Cancel - throw new CancellationError(); - } - var path = vscode.workspace.rootPath + '/.gitignore'; - return new Promise(function (resolve, reject) { - // Check if file exists - fs.stat(path, function (err, stats) { - if (err) { - // File does not exists -> we are fine to create it - resolve({ path: path, file: file }); - } - else { - reject('.gitignore already exists'); - } - }); - }); - }) - .then(function (s) { - // Store the file on file system - return gitignoreRepository.download(s.file, s.path); - }) - .then(function (file) { - vscode.window.showInformationMessage("Added " + file.description + " to your project root"); - }) - .catch(function (reason) { - if (reason instanceof CancellationError) { - return; - } - vscode.window.showErrorMessage(reason); - }); - }); - context.subscriptions.push(disposable); -} -exports.activate = activate; -// this method is called when your extension is deactivated -function deactivate() { -} -exports.deactivate = deactivate; -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/package.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/package.json deleted file mode 100644 index 8a453233..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "gitignore", - "displayName": "gitignore", - "description": "Language support for .gitignore files. Lets you pull .gitignore files from the https://github.com/github/gitignore repository.", - "version": "0.2.0", - "publisher": "codezombiech", - "icon": "icon.png", - "repository": { - "type": "git", - "url": "https://github.com/CodeZombieCH/vscode-gitignore" - }, - "bugs": { - "url": "https://github.com/CodeZombieCH/vscode-gitignore/issues" - }, - "license": "MIT", - "engines": { - "vscode": "^0.10.10" - }, - "categories": [ - "Languages", - "Other" - ], - "activationEvents": [ - "onCommand:addgitignore" - ], - "main": "./out/src/extension", - "contributes": { - "commands": [ - { - "command": "addgitignore", - "title": "Add gitignore" - } - ], - "configuration": { - "type": "object", - "title": "gitignore extension configuration", - "properties": { - "gitignore.cacheExpirationInterval": { - "type": "integer", - "default": 3600, - "description": "Number of seconds the list of `.gitignore` files retrieved from github will be cached" - } - } - }, - "languages": [ - { - "id": "gitignore", - "aliases": [ - "Gitignore" - ], - "filenames": [ - ".gitignore" - ], - "configuration": "./gitignore.configuration.json" - } - ], - "grammars": [ - { - "language": "gitignore", - "scopeName": "text.gitignore", - "path": "./syntaxes/gitignore.json" - } - ] - }, - "scripts": { - "vscode:prepublish": "node ./node_modules/vscode/bin/compile", - "compile": "node ./node_modules/vscode/bin/compile -watch -p ./", - "postinstall": "node ./node_modules/vscode/bin/install" - }, - "devDependencies": { - "typescript": "^1.8.5", - "vsce": "^1.2.3", - "vscode": "^0.11.8" - }, - "dependencies": { - "github": "^0.2.4" - }, - "__metadata": { - "id": "3e891cf9-53cb-49a3-8d01-8f0b1f0afb29", - "publisherId": "930310c4-ca8b-4e80-9d19-2b1507b2af61", - "publisherDisplayName": "CodeZombie" - } -} \ No newline at end of file diff --git a/.vscode/extensions/codezombiech.gitignore-0.2.0/syntaxes/gitignore.json b/.vscode/extensions/codezombiech.gitignore-0.2.0/syntaxes/gitignore.json deleted file mode 100644 index 06ac5622..00000000 --- a/.vscode/extensions/codezombiech.gitignore-0.2.0/syntaxes/gitignore.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Gitignore", - "scopeName": "text.gitignore", - "fileTypes": [ - ".gitignore" - ], - "patterns": [ - { - "match": "^#.*", - "name": "comment.gitignore", - "comment": "Comments" - } - ], - "uuid": "2e829dfc-3206-466c-9cca-5f2251dd5758" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/.vsixmanifest b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/.vsixmanifest deleted file mode 100644 index dc86d754..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/.vsixmanifest +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Instant Markdown - Instant previews of your markdown files as you type. - vscode - Other - Public - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/README.md deleted file mode 100644 index 759af3ec..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# vscode-instant-markdown - -> Simply, edit markdown documents in vscode and instantly preview it in your browser. - -Uses [instant-markdown-d](https://github.com/suan/instant-markdown-d). - -## Installation - -Press F1 and narrow down the list commands by typing `extension`. Pick `Extensions: Install Extension`. -Select the `Instant Markdown` extension from the list - -## Install Manual - -**Mac & Linux** -```sh -cd $HOME/.vscode/extensions -git clone https://github.com/dbankier/vscode-instant-markdown.git -cd vscode-instant-markdown -npm install -``` - -**Windows** -``` -cd %USERPROFILE%\.vscode\extensions -git clone https://github.com/dbankier/vscode-instant-markdown.git -cd vscode-instant-markdown -npm install -``` - -## Usage - -When you edit a markdown document it should instantly preview in your browser with changes applied as you type. - - -## License - -MIT © [David Bankier @dbankier](https://github.com/dbankier) -[@davidbankier](https://twitter.com/davidbankier) \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/extension.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/extension.js deleted file mode 100644 index 2c2662e1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/extension.js +++ /dev/null @@ -1,79 +0,0 @@ -// The module 'vscode' contains the VS Code extensibility API -// Import the module and reference it with the alias vscode in your code below -var vscode = require('vscode'); -var Promise = require('bluebird'); -var request = Promise.promisify(require("request")); -var shell = require("shelljs"); -var path = require('path'); - - -function activate(context) { - var instantMarkdown = new InstantMarkdown(); - var instantMarkdownController = new InstantMarkdownController(instantMarkdown); - context.subscriptions.push(instantMarkdown); - context.subscriptions.push(instantMarkdownController); -} - -function InstantMarkdown() { - var started = false; - var self = this; - this.initialise = function(callback) { - console.log("Initialising"); - var server = shell.exec(path.join(__dirname,"node_modules","instant-markdown-d","instant-markdown-d"), {async: true}) - server.stdout.on('data', function(data) { - if (!started && (data.toString().indexOf("connection established!") !== -1 || data.toString().indexOf("EADDRINUSE") !== -1)) { - callback(); - started = true; - } - - console.log(">>>" + data); - }); - }; - this.update = function() { - function requestUpdate() { - return request({ - uri: "http://localhost:8090", - method: "PUT", - body: vscode.window.activeTextEditor.document.getText() - }) - .then(function() {}, function(e) { - if (e.code === "ECONNREFUSED") { - self.initialise(); - } - console.log(e) - }); - } - if (started) { - requestUpdate(); - } else { - this.initialise(requestUpdate); - } - }; - this.close = function() { - if (started) { - return request({ - uri: "http://localhost:8090", - method: "DELETE" - }) - .then(function() { started = false } , function(e) { started = false; }); - } - } -} - -function InstantMarkdownController(md) { - var subscriptions = []; - function update() { - var editor = vscode.window.activeTextEditor; - if (!editor) { return; } - var doc = editor.document; - if (doc.languageId === "markdown") { - md.update(); - } else { - md.close(); - } - } - vscode.window.onDidChangeActiveTextEditor(update, this, subscriptions); - vscode.window.onDidChangeTextEditorSelection(update, this, subscriptions); - md.update(); -} -exports.activate = activate; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/instant-markdown-d b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/instant-markdown-d deleted file mode 100755 index c75208fd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/instant-markdown-d +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -':' //; exec "`command -v nodejs || command -v node`" "$0" - -var MarkdownIt = require('markdown-it'); -var hljs = require('highlight.js'); -var server = require('http').createServer(httpHandler), - exec = require('child_process').exec, - io = require('socket.io').listen(server), - send = require('send'), - server, - socket; - -server.listen(8090); - -var md = new MarkdownIt({ - html: true, - linkify: true, - highlight: function(str, lang) { - if (lang && hljs.getLanguage(lang)) { - try { - return hljs.highlight(lang, str).value; - } catch (err) { - // Do nothing - } - } else { - return str; - } - } -}); - -function writeMarkdown(input, output) { - var body = ''; - input.on('data', function(data) { - body += data; - if (body.length > 1e6) { - throw new Error('The request body is too long.'); - } - }); - input.on('end', function() { - output.emit('newContent', md.render(body)); - }); -} - -function httpHandler(req, res) { - switch(req.method) - { - case 'GET': - // Example: /my-repo/raw/master/sub-dir/some.png - var githubUrl = req.url.match(/\/[^\/]+\/raw\/[^\/]+\/(.+)/); - if (githubUrl) { - // Serve the file out of the current working directory - send(req, githubUrl[1]) - .root(process.cwd()) - .pipe(res); - return; - } - - // Otherwise serve the file from the directory this module is in - send(req, req.url) - .root(__dirname) - .pipe(res); - break; - - // case 'HEAD': - // res.writeHead(200); - // res.end(); - // exec('open -g http://localhost:8090', function(error, stdout, stderr){ - // http.request({port: 8090}) - // }); - // break; - - case 'DELETE': - socket.emit('die'); - process.exit(); - break; - - case 'PUT': - writeMarkdown(req, socket); - res.writeHead(200); - res.end(); - break; - - default: - } -} - -io.set('log level', 1); -io.sockets.on('connection', function(sock){ - socket = sock; - process.stdout.write('connection established!'); - writeMarkdown(process.stdin, socket); - process.stdin.resume(); -}); - - -if (process.platform.toLowerCase().indexOf('darwin') >= 0){ - exec('open -g http://localhost:8090', function(error, stdout, stderr){}); -} -else { // assume unix/linux - exec('xdg-open http://localhost:8090', function(error, stdout, stderr){}); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/shjs b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/shjs deleted file mode 100755 index d239a7ad..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/.bin/shjs +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -if (process.argv.length < 3) { - console.log('ShellJS: missing argument (script name)'); - console.log(); - process.exit(1); -} - -var args, - scriptName = process.argv[2]; -env['NODE_PATH'] = __dirname + '/../..'; - -if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) { - if (test('-f', scriptName + '.js')) - scriptName += '.js'; - if (test('-f', scriptName + '.coffee')) - scriptName += '.coffee'; -} - -if (!test('-f', scriptName)) { - console.log('ShellJS: script not found ('+scriptName+')'); - console.log(); - process.exit(1); -} - -args = process.argv.slice(3); - -for (var i = 0, l = args.length; i < l; i++) { - if (args[i][0] !== "-"){ - args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words - } -} - -if (scriptName.match(/\.coffee$/)) { - // - // CoffeeScript - // - if (which('coffee')) { - exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true }); - } else { - console.log('ShellJS: CoffeeScript interpreter not found'); - console.log(); - process.exit(1); - } -} else { - // - // JavaScript - // - exec('node ' + scriptName + ' ' + args.join(' '), { async: true }); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/LICENSE deleted file mode 100644 index 4182a1e1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-2015 Petka Antonov - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/README.md deleted file mode 100644 index 2ffd5d08..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/README.md +++ /dev/null @@ -1,44 +0,0 @@ - - Promises/A+ logo - -[![Build Status](https://travis-ci.org/petkaantonov/bluebird.svg?branch=master)](https://travis-ci.org/petkaantonov/bluebird) -[![coverage-98%](http://img.shields.io/badge/coverage-98%-brightgreen.svg?style=flat)](http://petkaantonov.github.io/bluebird/coverage/debug/index.html) - -**Got a question?** Join us on [stackoverflow](http://stackoverflow.com/questions/tagged/bluebird), the [mailing list](https://groups.google.com/forum/#!forum/bluebird-js) or chat on [IRC](https://webchat.freenode.net/?channels=#promises) - -# Introduction - -Bluebird is a fully featured promise library with focus on innovative features and performance - -See the [bluebird website](http://bluebirdjs.com/docs/getting-started.html) for further documentation, references and instructions. - -For bluebird 2.x documentation and files, see the [2.x tree](https://github.com/petkaantonov/bluebird/tree/2.x). - -# Questions and issues - -The [github issue tracker](https://github.com/petkaantonov/bluebird/issues) is **_only_** for bug reports and feature requests. Anything else, such as questions for help in using the library, should be posted in [StackOverflow](http://stackoverflow.com/questions/tagged/bluebird) under tags `promise` and `bluebird`. - -# License - -The MIT License (MIT) - -Copyright (c) 2013-2015 Petka Antonov - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/changelog.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/changelog.md deleted file mode 100644 index 73b2eb6c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/changelog.md +++ /dev/null @@ -1 +0,0 @@ -[http://bluebirdjs.com/docs/changelog.html](http://bluebirdjs.com/docs/changelog.html) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.js deleted file mode 100644 index 8c742cda..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.js +++ /dev/null @@ -1,5286 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2015 Petka Antonov - * - * 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. - * - */ -/** - * bluebird build version 3.0.6 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_=="function"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_=="function"&&_dereq_;for(var o=0;o 0) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - continue; - } - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -}; - -Async.prototype._drainQueues = function () { - this._drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - this._drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; - -},{"./queue":26,"./schedule":29,"./util":36}],3:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; - -},{}],4:[function(_dereq_,module,exports){ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = _dereq_("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; - -},{"./promise":22}],5:[function(_dereq_,module,exports){ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!true) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var args = [].slice.call(arguments, 1);; - if (!true) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; - -},{"./util":36}],6:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise.isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent.isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this.isCancellable()) return; - - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this.isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; - -},{"./util":36}],7:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = _dereq_("./util"); -var getKeys = _dereq_("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; - -},{"./es5":13,"./util":36}],8:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; - -},{}],9:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, Context) { -var getDomain = Promise._getDomain; -var async = Promise._async; -var Warning = _dereq_("./errors").Warning; -var util = _dereq_("./util"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (true || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 2097152); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 2097152) !== 0) return; - this._setRejectionIsUnhandled(); - async.invokeLater(this._notifyUnhandledRejection, this, undefined); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var domain = getDomain(); - possiblyUnhandledRejection = - typeof fn === "function" ? (domain === null ? fn : domain.bind(fn)) - : undefined; -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var domain = getDomain(); - unhandledRejectionHandled = - typeof fn === "function" ? (domain === null ? fn : domain.bind(fn)) - : undefined; -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Context.deactivateLongStackTraces(); - async.enableTrampoline(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Context.activateLongStackTraces(); - async.disableTrampolineIfNecessary(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - config.warnings = !!opts.warnings; - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } -}; - -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this.isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise) { - if (returnValue === undefined && - promiseCreated !== null && - config.longStackTraces && - config.warnings) { - var msg = "a promise was created in a " + name + - " handler but was not returned from it"; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - formatAndLogError(warning, "", true); -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0) { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent(name, reason, promise); - } catch (e) { - globalEventFired = true; - async.throwLater(e); - } - - var domEventFired = false; - if (fireDomEvent) { - try { - domEventFired = fireDomEvent(name.toLowerCase(), { - reason: reason, - promise: promise - }); - } catch (e) { - domEventFired = true; - async.throwLater(e); - } - } - - if (!globalEventFired && !localEventFired && !domEventFired && - name === "unhandledRejection") { - formatAndLogError(reason, "Unhandled rejection "); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = firstLineError.stack.split("\n"); - var lastStackLines = lastLineError.stack.split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -var fireDomEvent; -var fireGlobalEvent = (function() { - if (util.isNode) { - return function(name, reason, promise) { - if (name === "rejectionHandled") { - return process.emit(name, promise); - } else { - return process.emit(name, reason, promise); - } - }; - } else { - var customEventWorks = false; - var anyEventWorks = true; - try { - var ev = new self.CustomEvent("test"); - customEventWorks = ev instanceof CustomEvent; - } catch (e) {} - if (!customEventWorks) { - try { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - self.dispatchEvent(event); - } catch (e) { - anyEventWorks = false; - } - } - if (anyEventWorks) { - fireDomEvent = function(type, detail) { - var event; - if (customEventWorks) { - event = new self.CustomEvent(type, { - detail: detail, - bubbles: false, - cancelable: true - }); - } else if (self.dispatchEvent) { - event = document.createEvent("CustomEvent"); - event.initCustomEvent(type, false, true, detail); - } - - return event ? !self.dispatchEvent(event) : false; - }; - } - - var toWindowMethodNameMap = {}; - toWindowMethodNameMap["unhandledRejection"] = ("on" + - "unhandledRejection").toLowerCase(); - toWindowMethodNameMap["rejectionHandled"] = ("on" + - "rejectionHandled").toLowerCase(); - - return function(name, reason, promise) { - var methodName = toWindowMethodNameMap[name]; - var method = self[methodName]; - if (!method) return false; - if (name === "rejectionHandled") { - method.call(self, promise); - } else { - method.call(self, reason, promise); - } - return true; - }; - } -})(); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace -}; -}; - -},{"./errors":12,"./util":36}],10:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; - -},{}],11:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return this.mapSeries(fn) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseMapSeries(promises, fn) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; - -},{}],12:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var Objectfreeze = es5.freeze; -var util = _dereq_("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - notEnumerableProp(Error, "__BluebirdErrorTypes__", errorTypes); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; - -},{"./es5":13,"./util":36}],13:[function(_dereq_,module,exports){ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} - -},{}],14:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; - -},{}],15:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, tryConvertToPromise) { -var util = _dereq_("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.type === 0 - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret !== undefined) { - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise.isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, fail, undefined, { - promise: this, - handler: handler, - called: false, - cancelPromise: null, - type: type - }, undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -return finallyHandler; -}; - -},{"./util":36}],16:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = _dereq_("./errors"); -var TypeError = errors.TypeError; -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - promise._setOnCancel(this); - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this.promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - if (result === errorObj && result.e === reason) { - result = null; - } - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - var promise = this._promise; - this._cleanup(); - if (result === errorObj) { - promise._rejectCallback(result.e, false); - } else { - promise.cancel(); - } -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - return promise._rejectCallback(result.e, false); - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - return promise._resolveCallback(value); - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", value) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - this._promiseFulfilled(maybePromise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._promiseRejected(maybePromise._reason()); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; - -},{"./errors":12,"./util":36}],17:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) { -var util = _dereq_("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!true) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.now = 0; \n\ - } \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - promise._pushContext(); \n\ - var callback = this.fn; \n\ - var ret = tryCatch(callback)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", code) - (tryCatch, errorObj, Promise); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!true) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - if (!ret._isFateSealed()) { - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var args = [].slice.call(arguments);; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; - -},{"./util":36}],18:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var EMPTY_ARRAY = []; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var domain = getDomain(); - this._callback = domain === null ? fn : domain.bind(fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = limit >= 1 ? [] : EMPTY_ARRAY; - this._init$(undefined, -2); -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var limit = typeof options === "object" && options !== null - ? options.concurrency - : 0; - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; - -},{"./util":36}],19:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; - -},{"./util":36}],20:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = _dereq_("./errors"); -var OperationalError = errors.OperationalError; -var es5 = _dereq_("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var args = [].slice.call(arguments, 1);; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; - -},{"./errors":12,"./es5":13,"./util":36}],21:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -var util = _dereq_("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; - -},{"./util":36}],22:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = _dereq_("./util"); - -var getDomain; -if (util.isNode) { - getDomain = function() { - var ret = process.domain; - if (ret === undefined) ret = null; - return ret; - }; -} else { - getDomain = function() { - return null; - }; -} -util.notEnumerableProp(Promise, "_getDomain", getDomain); - -var es5 = _dereq_("./es5"); -var Async = _dereq_("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = _dereq_("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = _dereq_("./thenables")(Promise, INTERNAL); -var PromiseArray = - _dereq_("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = _dereq_("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; -var debug = _dereq_("./debuggability")(Promise, Context); -var CapturedTrace = debug.CapturedTrace; -var finallyHandler = _dereq_("./finally")(Promise, tryConvertToPromise); -var catchFilter = _dereq_("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = _dereq_("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - if (self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } -} - -function Promise(executor) { - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - if (executor !== INTERNAL) { - check(this, executor); - this._resolveFromExecutor(executor); - } - this._promiseCreated(); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - var prev = async._schedule; - async._schedule = fn; - return prev; -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - } - - var domain = getDomain(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: domain === null ? handler - : (typeof handler === "function" && domain.bind(handler)), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, receiver, domain); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - domain -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = - domain === null ? fulfill : domain.bind(fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = - domain === null ? reject : domain.bind(reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - domain === null ? fulfill : domain.bind(fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - domain === null ? reject : domain.bind(reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - var promise = maybePromise._target(); - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(promise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj || x === promise) { - var err = x === promise ? makeSelfResolutionError() : x.e; - promise._rejectCallback(err, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (handler === finallyHandler) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -_dereq_("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -_dereq_("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -_dereq_("./cancel")(Promise, PromiseArray, apiRejection, debug); -_dereq_("./direct_resolve")(Promise); -_dereq_("./synchronous_inspection")(Promise); -_dereq_("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, debug); -Promise.Promise = Promise; -_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -_dereq_('./timers.js')(Promise, INTERNAL); -_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -_dereq_('./nodeify.js')(Promise); -_dereq_('./call_get.js')(Promise); -_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -_dereq_('./settle.js')(Promise, PromiseArray, debug); -_dereq_('./some.js')(Promise, PromiseArray, apiRejection); -_dereq_('./promisify.js')(Promise, INTERNAL); -_dereq_('./any.js')(Promise); -_dereq_('./each.js')(Promise, INTERNAL); -_dereq_('./filter.js')(Promise, INTERNAL); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; - -},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = _dereq_("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise.isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; - -},{"./util":36}],24:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = _dereq_("./util"); -var nodebackForPromise = _dereq_("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = _dereq_("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!true) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - - -},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); -var isObject = util.isObject; -var es5 = _dereq_("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; - -},{"./es5":13,"./util":36}],26:[function(_dereq_,module,exports){ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype._unshiftOne = function(value) { - var capacity = this._capacity; - this._checkCapacity(this.length() + 1); - var front = this._front; - var i = (((( front - 1 ) & - ( capacity - 1) ) ^ capacity ) - capacity ); - this[i] = value; - this._front = i; - this._length = this.length() + 1; -}; - -Queue.prototype.unshift = function(fn, receiver, arg) { - this._unshiftOne(arg); - this._unshiftOne(receiver); - this._unshiftOne(fn); -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; - -},{}],27:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = _dereq_("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; - -},{"./util":36}],28:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = _dereq_("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var domain = getDomain(); - this._fn = domain === null ? fn : domain.bind(fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - this._eachValues = _each === INTERNAL ? [] : undefined; - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - this._eachValues.push(value); - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; - -},{"./util":36}],29:[function(_dereq_,module,exports){ -"use strict"; -var util = _dereq_("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - window.navigator.standalone)) { - schedule = function(fn) { - var div = document.createElement("div"); - var observer = new MutationObserver(fn); - observer.observe(div, {attributes: true}); - return function() { div.classList.toggle("foo"); }; - }; - schedule.isStatic = true; -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; - -},{"./util":36}],30:[function(_dereq_,module,exports){ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = _dereq_("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; - -},{"./util":36}],31:[function(_dereq_,module,exports){ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = _dereq_("./util"); -var RangeError = _dereq_("./errors").RangeError; -var AggregateError = _dereq_("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; - -},{"./errors":12,"./util":36}],32:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = -Promise.prototype._isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype.isCancelled = function() { - return this._target()._isCancelled(); -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; - -},{}],33:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - return hasProp.call(obj, "_promise0"); -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; - -},{"./util":36}],34:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = _dereq_("./util"); -var TimeoutError = Promise.TimeoutError; - -var afterTimeout = function (promise, message, parent) { - if (!promise.isPending()) return; - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - parent.cancel(); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - } else { - ret = new Promise(INTERNAL); - setTimeout(function() { ret._fulfill(); }, +ms); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -function successClear(value) { - var handle = this; - if (handle instanceof Number) handle = +handle; - clearTimeout(handle); - return value; -} - -function failureClear(reason) { - var handle = this; - if (handle instanceof Number) handle = +handle; - clearTimeout(handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var parent = this.then(); - var ret = parent.then(); - var handle = setTimeout(function timeoutTimeout() { - afterTimeout(ret, message, parent); - }, ms); - return ret._then(successClear, failureClear, undefined, handle, undefined); -}; - -}; - -},{"./util":36}],35:[function(_dereq_,module,exports){ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = _dereq_("./util"); - var TypeError = _dereq_("./errors").TypeError; - var inherits = _dereq_("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return null; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== null - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; - -},{"./errors":12,"./util":36}],36:[function(_dereq_,module,exports){ -"use strict"; -var es5 = _dereq_("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var l = 8; - while (l--) new FakeConstructor(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return obj instanceof Error && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -function env(key, def) { - return isNode ? process.env[key] : def; -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - env: env -}; -ret.isRecentNode = ret.isNode && (function() { - var version = process.versions.node.split(".").map(Number); - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; - -},{"./es5":13}]},{},[4])(4) -}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; } \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.min.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.min.js deleted file mode 100644 index 7f99a654..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/browser/bluebird.min.js +++ /dev/null @@ -1,31 +0,0 @@ -/* @preserve - * The MIT License (MIT) - * - * Copyright (c) 2013-2015 Petka Antonov - * - * 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. - * - */ -/** - * bluebird build version 3.0.6 - * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each -*/ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Promise=t()}}(function(){var t,e,n;return function r(t,e,n){function i(s,a){if(!e[s]){if(!t[s]){var c="function"==typeof _dereq_&&_dereq_;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=e[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return i(n?n:e)},u,u.exports,r,t,e,n)}return e[s].exports}for(var o="function"==typeof _dereq_&&_dereq_,s=0;s0;){var e=t.shift();if("function"==typeof e){var n=t.shift(),r=t.shift();e.call(n,r)}else e._settlePromises()}},n.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},n.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},n.prototype._reset=function(){this._isTickUsed=!1},e.exports=n,e.exports.firstLineError=s},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},s=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},a=function(t,e){0===(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var l=n(o),u=new t(e);u._propagateFrom(this,1);var p=this._target();if(u._setBoundTo(l),l instanceof t){var h={promiseRejectionQueued:!1,promise:u,target:p,bindingPromise:l};p._then(e,s,void 0,u,h),l._then(a,c,void 0,u,h),u._setOnCancel(l)}else u._resolveCallback(p);return u},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152===(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e){"use strict";function n(){try{Promise===i&&(Promise=r)}catch(t){}return i}var r;"undefined"!=typeof Promise&&(r=Promise);var i=t("./promise")();i.noConflict=n,e.exports=i},{"./promise":22}],5:[function(t,e){"use strict";var n=Object.create;if(n){var r=n(null),i=n(null);r[" size"]=i[" size"]=0}e.exports=function(e){function n(t,n){var r;if(null!=t&&(r=t[n]),"function"!=typeof r){var i="Object "+a.classString(t)+" has no method '"+a.toString(n)+"'";throw new e.TypeError(i)}return r}function r(t){var e=this.pop(),r=n(t,e);return r.apply(t,this)}function i(t){return t[this]}function o(t){var e=+this;return 0>e&&(e=Math.max(0,e+t.length)),t[e]}{var s,a=t("./util"),c=a.canEvaluate;a.isIdentifier}e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(r,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=o;else if(c){var r=s(t);e=null!==r?r:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),s=o.tryCatch,a=o.errorObj,c=e._async;e.prototype["break"]=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t.isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n.isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),this._enoughBranchesHaveCancelled()?(this._invokeOnCancel(),!0):!1)},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this.isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n=0?o[t]:void 0}var i=!1,o=[];return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},e.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,o.push(this._trace))},e.prototype._popContext=function(){if(void 0!==this._trace){var t=o.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},e.CapturedTrace=null,e.create=n,e.deactivateLongStackTraces=function(){},e.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,s=t._peekContext,a=t.prototype._peekContext,c=t.prototype._promiseCreated;e.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=s,t.prototype._peekContext=a,t.prototype._promiseCreated=c,i=!1},i=!0,t.prototype._pushContext=e.prototype._pushContext,t.prototype._popContext=e.prototype._popContext,t._peekContext=t.prototype._peekContext=r,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},e}},{}],9:[function(t,e){"use strict";e.exports=function(e,n){function r(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+H.toString(t));r._attachCancellationCallback(t)})}catch(i){return i}}function i(t){if(!this.isCancellable())return this;var e=this._onCancel();void 0!==e?H.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function o(){return this._onCancelField}function s(t){this._onCancelField=t}function a(){this._cancellationParent=void 0,this._onCancelField=void 0}function c(t,e){if(0!==(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function l(t,e){0!==(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}function u(){var t=this._boundTo;return void 0!==t&&t instanceof e?t.isFulfilled()?t.value():void 0:t}function p(){this._trace=new P(this._peekContext())}function h(t,e){if(I(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=w(t);H.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),H.notEnumerableProp(t,"__stackCleaned__",!0)}}}function f(t,e,n,r){if(void 0===t&&null!==e&&Y.longStackTraces&&Y.warnings){var i="a promise was created in a "+n+" handler but was not returned from it";r._warn(i,!0,e)}}function _(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),d(n)}function d(t,n,r){if(Y.warnings){var i,o=new V(t);if(n)r._attachExtraTrace(o);else if(Y.longStackTraces&&(i=e._peekContext()))i.attachExtraTrace(o);else{var s=w(o);o.stack=s.message+"\n"+s.stack.join("\n")}C(o,"",!0)}}function v(t,e){for(var n=0;n=0;--a)if(r[a]===o){s=a;break}for(var a=s;a>=0;--a){var c=r[a];if(e[i]!==c)break;e.pop(),i--}e=r}}function m(t){for(var e=[],n=0;n0&&(e=e.slice(n)),e}function w(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?b(t):[" (No stack trace)"],{message:n,stack:m(e)}}function C(t,e,n){if("undefined"!=typeof console){var r;if(H.isObject(t)){var i=t.stack;r=e+U(i,t)}else r=e+String(t);"function"==typeof O?O(r,n):("function"==typeof console.log||"object"==typeof console.log)&&console.log(r)}}function j(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(o){D.throwLater(o)}var s=!1;try{s=J(t,n,r)}catch(o){s=!0,D.throwLater(o)}var a=!1;if(W)try{a=W(t.toLowerCase(),{reason:n,promise:r})}catch(o){a=!0,D.throwLater(o)}s||i||a||"unhandledRejection"!==t||C(n,"Unhandled rejection ")}function k(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{e=t&&"function"==typeof t.toString?t.toString():H.toString(t);var n=/\[object [a-zA-Z0-9$_]+\]/;if(n.test(e))try{var r=JSON.stringify(t);e=r}catch(i){}0===e.length&&(e="(empty array)")}return"(<"+F(e)+">, no stack trace)"}function F(t){var e=41;return t.lengths||0>a||!n||!r||n!==r||s>=a||(X=function(t){if(L.test(t))return!0;var e=x(t);return e&&e.fileName===n&&s<=e.line&&e.line<=a?!0:!1})}}function P(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);K(this,P),e>32&&this.uncycle()}var R,S,O,A=e._getDomain,D=e._async,V=t("./errors").Warning,H=t("./util"),I=H.canAttachTrace,L=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,N=null,U=null,M=!1,B=!(0==H.env("BLUEBIRD_DEBUG")||!H.env("BLUEBIRD_DEBUG")&&"development"!==H.env("NODE_ENV")),q=!(0==H.env("BLUEBIRD_WARNINGS")||!B&&!H.env("BLUEBIRD_WARNINGS")),Q=!(0==H.env("BLUEBIRD_LONG_STACK_TRACES")||!B&&!H.env("BLUEBIRD_LONG_STACK_TRACES"));e.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|2097152},e.prototype._ensurePossibleRejectionHandled=function(){0===(2097152&this._bitField)&&(this._setRejectionIsUnhandled(),D.invokeLater(this._notifyUnhandledRejection,this,void 0))},e.prototype._notifyUnhandledRejectionIsHandled=function(){j("rejectionHandled",R,void 0,this)},e.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),j("unhandledRejection",S,t,this)}},e.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},e.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},e.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},e.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},e.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},e.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},e.prototype._warn=function(t,e,n){return d(t,e,n||this)},e.onPossiblyUnhandledRejection=function(t){var e=A();S="function"==typeof t?null===e?t:e.bind(t):void 0},e.onUnhandledRejectionHandled=function(t){var e=A();R="function"==typeof t?null===e?t:e.bind(t):void 0};var $=function(){};e.longStackTraces=function(){if(D.haveItemsQueued()&&!Y.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Y.longStackTraces&&E()){var t=e.prototype._captureStackTrace,r=e.prototype._attachExtraTrace;Y.longStackTraces=!0,$=function(){if(D.haveItemsQueued()&&!Y.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");e.prototype._captureStackTrace=t,e.prototype._attachExtraTrace=r,n.deactivateLongStackTraces(),D.enableTrampoline(),Y.longStackTraces=!1},e.prototype._captureStackTrace=p,e.prototype._attachExtraTrace=h,n.activateLongStackTraces(),D.disableTrampolineIfNecessary()}},e.hasLongStackTraces=function(){return Y.longStackTraces&&E()},e.config=function(t){if(t=Object(t),"longStackTraces"in t&&(t.longStackTraces?e.longStackTraces():!t.longStackTraces&&e.hasLongStackTraces()&&$()),"warnings"in t&&(Y.warnings=!!t.warnings),"cancellation"in t&&t.cancellation&&!Y.cancellation){if(D.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");e.prototype._clearCancellationData=a,e.prototype._propagateFrom=c,e.prototype._onCancel=o,e.prototype._setOnCancel=s,e.prototype._attachCancellationCallback=i,e.prototype._execute=r,z=c,Y.cancellation=!0}},e.prototype._execute=function(t,e,n){try{t(e,n)}catch(r){return r}},e.prototype._onCancel=function(){},e.prototype._setOnCancel=function(){},e.prototype._attachCancellationCallback=function(){},e.prototype._captureStackTrace=function(){},e.prototype._attachExtraTrace=function(){},e.prototype._clearCancellationData=function(){},e.prototype._propagateFrom=function(){};var z=l,X=function(){return!1},G=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;H.inherits(P,Error),n.CapturedTrace=P,P.prototype.uncycle=function(){var t=this._length;if(!(2>t)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;t=this._length=r;for(var r=t-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;t>r;++r){var s=e[r].stack,a=n[s];if(void 0!==a&&a!==r){a>0&&(e[a-1]._parent=void 0,e[a-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;t-1>a?(c._parent=e[a+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var l=c._length+1,u=r-2;u>=0;--u)e[u]._length=l,l++;return}}}},P.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=w(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(m(i.stack.split("\n"))),i=i._parent;g(r),y(r),H.notEnumerableProp(t,"stack",v(n,r)),H.notEnumerableProp(t,"__stackCleaned__",!0)}};var W,K=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():k(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,N=t,U=e;var n=Error.captureStackTrace;return X=function(t){return L.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return N=/@/,U=e,M=!0,function(t){t.stack=(new Error).stack};var i;try{throw new Error}catch(o){i="stack"in o}return"stack"in r||!i||"number"!=typeof Error.stackTraceLimit?(U=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?k(e):e.toString()},null):(N=t,U=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}([]),J=function(){if(H.isNode)return function(t,e,n){return"rejectionHandled"===t?process.emit(t,n):process.emit(t,e,n)};var t=!1,e=!0;try{var n=new self.CustomEvent("test");t=n instanceof CustomEvent}catch(r){}if(!t)try{var i=document.createEvent("CustomEvent");i.initCustomEvent("testingtheevent",!1,!0,{}),self.dispatchEvent(i)}catch(r){e=!1}e&&(W=function(e,n){var r;return t?r=new self.CustomEvent(e,{detail:n,bubbles:!1,cancelable:!0}):self.dispatchEvent&&(r=document.createEvent("CustomEvent"),r.initCustomEvent(e,!1,!0,n)),r?!self.dispatchEvent(r):!1});var o={};return o.unhandledRejection="onunhandledRejection".toLowerCase(),o.rejectionHandled="onrejectionHandled".toLowerCase(),function(t,e,n){var r=o[t],i=self[r];return i?("rejectionHandled"===t?i.call(self,n):i.call(self,e,n),!0):!1}}();"undefined"!=typeof console&&"undefined"!=typeof console.warn&&(O=function(t){console.warn(t)},H.isNode&&process.stderr.isTTY?O=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:H.isNode||"string"!=typeof(new Error).stack||(O=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Y={warnings:q,longStackTraces:!1,cancellation:!1};return Q&&e.longStackTraces(),{longStackTraces:function(){return Y.longStackTraces},warnings:function(){return Y.warnings},cancellation:function(){return Y.cancellation},propagateFromFunction:function(){return z},boundValueFunction:function(){return u},checkForgottenReturns:f,setBounds:T,warn:d,deprecated:_,CapturedTrace:P}}},{"./errors":12,"./util":36}],10:[function(t,e){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype["return"]=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype["throw"]=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1],r=function(){throw e};return this.caught(t,r)},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];r instanceof t&&r.suppressUnhandledRejections();var i=function(){return r};return this.caught(n,i)}}},{}],11:[function(t,e){"use strict";e.exports=function(t,e){function n(){return o(this)}function r(t,n){return i(t,n,e,e)}var i=t.reduce,o=t.all;t.prototype.each=function(t){return this.mapSeries(t)._then(n,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return i(this,t,e,e)},t.each=function(t,e){return r(t,e)._then(n,void 0,void 0,t,void 0)},t.mapSeries=r}},{}],12:[function(t,e){"use strict";function n(t,e){function n(r){return this instanceof n?(u(this,"message","string"==typeof r?r:e),u(this,"name",t),void(Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this))):new n(r)}return l(n,Error),n}function r(t){return this instanceof r?(u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,void(t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor))):new r(t)}var i,o,s=t("./es5"),a=s.freeze,c=t("./util"),l=c.inherits,u=c.notEnumerableProp,p=n("Warning","warning"),h=n("CancellationError","cancellation error"),f=n("TimeoutError","timeout error"),_=n("AggregateError","aggregate error");try{i=TypeError,o=RangeError}catch(d){i=n("TypeError","type error"),o=n("RangeError","range error")}for(var v="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),y=0;y1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0):!1}function o(){return a.call(this,this.promise._target()._settledValue())}function s(t){return i(this,t)?void 0:(u.e=t,u)}function a(t){var a=this.promise,c=this.handler;if(!this.called){this.called=!0;var p=0===this.type?c.call(a._boundValue()):c.call(a._boundValue(),t);if(void 0!==p){var h=n(p,a);if(h instanceof e){if(null!=this.cancelPromise){if(h.isCancelled()){var f=new l("late cancellation observer");return a._attachExtraTrace(f),u.e=f,u}h.isPending()&&h._attachCancellationCallback(new r(this))}return h._then(o,s,void 0,this,void 0)}}}return a.isRejected()?(i(this),u.e=t,u):(i(this),t)}var c=t("./util"),l=e.CancellationError,u=c.errorObj;return r.prototype._resultCancelled=function(){i(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,{promise:this,handler:t,called:!1,cancelPromise:null,type:e},void 0)},e.prototype.lastly=e.prototype["finally"]=function(t){return this._passThrough(t,0,a,a)},e.prototype.tap=function(t){return this._passThrough(t,1,a)},a}},{"./util":36}],16:[function(t,e){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r){for(var o=0;o0&&"function"==typeof arguments[e]){t=arguments[e];var r}var i=[].slice.call(arguments);t&&i.pop();var r=new n(i).promise();return void 0!==t?r.spread(t):r}}},{"./util":36}],18:[function(t,e){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=l();this._callback=null===i?e:i.bind(e),this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=n>=1?[]:f,this._init$(void 0,-2)}function c(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+u.classString(e));var o="object"==typeof n&&null!==n?n.concurrency:0;return o="number"==typeof o&&isFinite(o)&&o>=1?o:0,new a(t,e,o,i).promise()}var l=e._getDomain,u=t("./util"),p=u.tryCatch,h=u.errorObj,f=[];u.inherits(a,n),a.prototype._init=function(){},a.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),a=this._preservedValues,c=this._limit;if(0>n){if(n=-1*n-1,r[n]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==a&&(a[n]=t);var l=this._promise,u=this._callback,f=l._boundValue();l._pushContext();var _=p(u).call(f,t,n,o),d=l._popContext();if(s.checkForgottenReturns(_,d,null!==a?"Promise.filter":"Promise.map",l),_===h)return this._reject(_.e),!0;var v=i(_,this._promise);if(v instanceof e){v=v._target();var y=v._bitField;if(0===(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0===(33554432&y))return 0!==(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);_=v._value()}r[n]=_}var g=++this._totalResolved;return g>=o?(null!==a?this._filter(r,a):this._resolve(r),!0):!1},a.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlighto;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},a.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return c(this,t,e,null)},e.map=function(t,e,n,r){return c(t,e,n,r)}}},{"./util":36}],19:[function(t,e){"use strict";e.exports=function(e,n,r,i,o){var s=t("./util"),a=s.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+s.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=a(t).apply(this,arguments),s=r._popContext();return o.checkForgottenReturns(i,s,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e["try"]=function(t){if("function"!=typeof t)return i("expecting a function but got "+s.classString(t));var r=new e(n);r._captureStackTrace(),r._pushContext();var c;if(arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var l=arguments[1],u=arguments[2];c=s.isArray(l)?a(t).apply(u,l):a(t).call(u,l)}else c=a(t)();var p=r._popContext();return o.checkForgottenReturns(c,p,"Promise.try",r),r._resolveFromSyncValue(c),r},e.prototype._resolveFromSyncValue=function(t){t===s.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e){"use strict";function n(t){return t instanceof Error&&l.getPrototypeOf(t)===Error.prototype}function r(t){var e;if(n(t)){e=new c(t),e.name=t.name,e.message=t.message,e.stack=t.stack;for(var r=l.keys(t),i=0;i1){var n,r=new Array(e-1),i=0;for(n=0;e-1>n;++n){var o=arguments[n];if(!h.isObject(o))return u("expecting an object but got "+h.classString(o));r[i++]=o}return r.length=i,t=arguments[n],this.then(void 0,T(r,t,this))}return this.then(void 0,t)},r.prototype.reflect=function(){return this._then(l,l,void 0,this,void 0)},r.prototype.then=function(t,e){if(E.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+h.classString(t);arguments.length>1&&(n+=", "+h.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},r.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},r.prototype.spread=function(t){return"function"!=typeof t?u("expecting a function but got "+h.classString(t)):this.all()._then(t,void 0,void 0,b,void 0)},r.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},r.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new j(this).promise()},r.prototype.error=function(t){return this.caught(h.originatesFromRejection,t)},r.is=function(t){return t instanceof r},r.fromNode=r.fromCallback=function(t){var e=new r(m),n=arguments.length>1?!!Object(arguments[1]).multiArgs:!1,i=S(t)(P(e,n));return i===R&&e._rejectCallback(i.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},r.all=function(t){return new j(t).promise()},r.cast=function(t){var e=C(t);return e instanceof r||(e=new r(m),e._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},r.resolve=r.fulfilled=r.cast,r.reject=r.rejected=function(t){var e=new r(m);return e._captureStackTrace(),e._rejectCallback(t,!0),e},r.setScheduler=function(t){if("function"!=typeof t)throw new y("expecting a function but got "+h.classString(t));var e=d._schedule;return d._schedule=t,e},r.prototype._then=function(t,e,n,i,o){var s=void 0!==o,c=s?o:new r(m),l=this._target(),u=l._bitField;s||(c._propagateFrom(this,3),c._captureStackTrace(),void 0===i&&0!==(2097152&this._bitField)&&(i=0!==(50397184&u)?this._boundValue():l===this?void 0:this._boundTo));var p=a();if(0!==(50397184&u)){var h,f,_=l._settlePromiseCtx;0!==(33554432&u)?(f=l._rejectionHandler0,h=t):0!==(16777216&u)?(f=l._fulfillmentHandler0,h=e,l._unsetRejectionIsUnhandled()):(_=l._settlePromiseLateCancellationObserver,f=new g("late cancellation observer"),l._attachExtraTrace(f),h=e),d.invoke(_,l,{handler:null===p?h:"function"==typeof h&&p.bind(h),promise:c,receiver:i,value:f})}else l._addCallbacks(t,e,c,i,p);return c},r.prototype._length=function(){return 65535&this._bitField},r.prototype._isFateSealed=function(){return 0!==(117506048&this._bitField)},r.prototype._isFollowing=function(){return 67108864===(67108864&this._bitField)},r.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},r.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField},r.prototype._setRejected=function(){this._bitField=16777216|this._bitField},r.prototype._setFollowing=function(){this._bitField=67108864|this._bitField},r.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},r.prototype._isFinal=function(){return(4194304&this._bitField)>0},r.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},r.prototype._setCancelled=function(){this._bitField=65536|this._bitField},r.prototype._setAsyncGuaranteed=function(){this._bitField=134217728|this._bitField},r.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];return e===p?void 0:void 0===e&&this._isBound()?this._boundValue():e},r.prototype._promiseAt=function(t){return this[4*t-4+2]},r.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},r.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},r.prototype._boundValue=function(){},r.prototype._migrateCallback0=function(t){var e=(t._bitField,t._fulfillmentHandler0),n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=p),this._addCallbacks(e,n,r,i,null)},r.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=p),this._addCallbacks(n,r,i,o,null)},r.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:i.bind(t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:i.bind(e));else{var s=4*o-4;this[s+2]=n,this[s+3]=r,"function"==typeof t&&(this[s+0]=null===i?t:i.bind(t)),"function"==typeof e&&(this[s+1]=null===i?e:i.bind(e))}return this._setLength(o+1),o},r.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},r.prototype._resolveCallback=function(t,e){if(0===(117506048&this._bitField)){if(t===this)return this._rejectCallback(c(),!1);var n=C(t,this);if(!(n instanceof r))return this._fulfill(t);e&&this._propagateFrom(n,2);var i=n._target(),o=i._bitField;if(0===(50397184&o)){var s=this._length();s>0&&i._migrateCallback0(this);for(var a=1;s>a;++a)i._migrateCallbackAt(this,a);this._setFollowing(),this._setLength(0),this._setFollowee(i)}else if(0!==(33554432&o))this._fulfill(i._value());else if(0!==(16777216&o))this._reject(i._reason());else{var l=new g("late cancellation observer");i._attachExtraTrace(l),this._reject(l)}}},r.prototype._rejectCallback=function(t,e,n){var r=h.ensureErrorObject(t),i=r===t;if(!i&&!n&&E.warnings()){var o="a promise was rejected with a non-error: "+h.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,e?i:!1),this._reject(t)},r.prototype._resolveFromExecutor=function(t){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)},r.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0===(65536&i)){r._pushContext();var o;e===b?n&&"number"==typeof n.length?o=S(t).apply(this._boundValue(),n):(o=R,o.e=new y("cannot .spread() a non-array: "+h.classString(n))):o=S(t).call(e,n);var s=r._popContext();if(i=r._bitField,0===(65536&i))if(o===w)r._reject(n);else if(o===R||o===r){var a=o===r?c():o.e;r._rejectCallback(a,!1)}else E.checkForgottenReturns(o,s,"",r),r._resolveCallback(o)}},r.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},r.prototype._followee=function(){return this._rejectionHandler0},r.prototype._setFollowee=function(t){this._rejectionHandler0=t},r.prototype._settlePromise=function(t,n,i,o){var s=t instanceof r,a=this._bitField,c=0!==(134217728&a);0!==(65536&a)?(s&&t._invokeInternalOnCancel(),n===x?(i.cancelPromise=t,S(n).call(i,o)===R&&t._reject(R.e)):n===l?t._fulfill(l.call(i)):i instanceof e?i._promiseCancelled(t):s||t instanceof j?t._cancel():i.cancel()):"function"==typeof n?s?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(n,i,o,t)):n.call(i,o,t):i instanceof e?i._isResolved()||(0!==(33554432&a)?i._promiseFulfilled(o,t):i._promiseRejected(o,t)):s&&(c&&t._setAsyncGuaranteed(),0!==(33554432&a)?t._fulfill(o):t._reject(o))},r.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,i=t.receiver,o=t.value;"function"==typeof e?n instanceof r?this._settlePromiseFromHandler(e,i,o,n):e.call(i,o,n):n instanceof r&&n._reject(o)},r.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},r.prototype._settlePromise0=function(t,e){var n=this._promise0,r=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(n,t,r,e)},r.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},r.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=c();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!==(134217728&e)?this._settlePromises():d.settlePromises(this))}},r.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16))return this._setRejected(),this._fulfillmentHandler0=t,this._isFinal()?d.fatalError(t,h.isNode):void((65535&e)>0?0!==(134217728&e)?this._settlePromises():d.settlePromises(this):this._ensurePossibleRejectionHandled())},r.prototype._fulfillPromises=function(t,e){for(var n=1;t>n;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},r.prototype._rejectPromises=function(t,e){for(var n=1;t>n;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},r.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!==(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},r.prototype._settledValue=function(){var t=this._bitField;return 0!==(33554432&t)?this._rejectionHandler0:0!==(16777216&t)?this._fulfillmentHandler0:void 0},r.defer=r.pending=function(){E.deprecated("Promise.defer","new Promise");var t=new r(m);return{promise:t,resolve:i,reject:o}},h.notEnumerableProp(r,"_makeSelfResolutionError",c),t("./method")(r,m,C,u,E),t("./bind")(r,m,C,E),t("./cancel")(r,j,u,E),t("./direct_resolve")(r),t("./synchronous_inspection")(r),t("./join")(r,j,C,m,E),r.Promise=r,t("./map.js")(r,j,u,C,m,E),t("./using.js")(r,u,C,F,m,E),t("./timers.js")(r,m),t("./generators.js")(r,u,m,C,e,E),t("./nodeify.js")(r),t("./call_get.js")(r),t("./props.js")(r,j,C,u),t("./race.js")(r,m,C,u),t("./reduce.js")(r,j,u,C,m,E),t("./settle.js")(r,j,E),t("./some.js")(r,j,u),t("./promisify.js")(r,m),t("./any.js")(r),t("./each.js")(r,m),t("./filter.js")(r,m),h.toFastProperties(r),h.toFastProperties(r.prototype),s({a:1}),s({b:2}),s({c:3}),s(1),s(function(){}),s(void 0),s(!1),s(new r(m)),E.setBounds(_.firstLineError,h.lastLineError),r}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e){"use strict";e.exports=function(e,n,r,i,o){function s(t){switch(t){case-2:return[];case-3:return{}}}function a(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}{var c=t("./util");c.isArray}return c.inherits(a,o),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function l(t,n){var o=r(this._values,this._promise);if(o instanceof e){o=o._target();var a=o._bitField;if(this._values=o,0===(50397184&a))return this._promise._setAsyncGuaranteed(),o._then(l,this._reject,void 0,this,n);if(0===(33554432&a))return 0!==(16777216&a)?this._reject(o._reason()):this._cancel();o=o._value()}if(o=c.asArray(o),null===o){var u=i("expecting an array or an iterable object but got "+c.classString(o)).reason();return void this._promise._rejectCallback(u,!1)}return 0===o.length?void(-5===n?this._resolveEmptyArray():this._resolve(s(n))):void this._iterate(o)},a.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,s=null,a=0;n>a;++a){var c=r(t[a],i);c instanceof e?(c=c._target(),s=c._bitField):s=null,o?null!==s&&c.suppressUnhandledRejections():null!==s?0===(50397184&s)?(c._proxy(this,a),this._values[a]=c):o=0!==(33554432&s)?this._promiseFulfilled(c._value(),a):0!==(16777216&s)?this._promiseRejected(c._reason(),a):this._promiseCancelled(a):o=this._promiseFulfilled(c,a)}o||i._setAsyncGuaranteed()},a.prototype._isResolved=function(){return null===this._values},a.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},a.prototype._cancel=function(){!this._isResolved()&&this._promise.isCancellable()&&(this._values=null,this._promise._cancel())},a.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},a.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;nc;c+=2){var u=s[c],p=s[c+1],_=u+e;if(r===F)t[_]=F(u,h,u,p,e,i);else{var d=r(p,function(){return F(u,h,u,p,e,i)});f.notEnumerableProp(d,"__isPromisified__",!0),t[_]=d}}return f.toFastProperties(t),t}function u(t,e,n){return F(t,e,void 0,t,null,n)}var p,h={},f=t("./util"),_=t("./nodeback"),d=f.withAppended,v=f.maybeWrapAsError,y=f.canEvaluate,g=t("./errors").TypeError,m="Async",b={__isPromisified__:!0},w=["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"],C=new RegExp("^(?:"+w.join("|")+")$"),j=function(t){return f.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t},k=function(t){return t.replace(/([$])/,"\\$")},F=y?p:c;e.promisify=function(t,e){if("function"!=typeof t)throw new g("expecting a function but got "+f.classString(t));if(i(t))return t;e=Object(e);var n=void 0===e.context?h:e.context,o=!!e.multiArgs,s=u(t,n,o);return f.copyDescriptors(t,s,r),s},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new g("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");e=Object(e);var n=!!e.multiArgs,r=e.suffix;"string"!=typeof r&&(r=m);var i=e.filter;"function"!=typeof i&&(i=j);var o=e.promisifier;if("function"!=typeof o&&(o=F),!f.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=f.inheritedDataKeys(t),a=0;ao;++o){var s=r[o];e[o]=t[s],e[o+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,-3)}function s(t){var n,s=r(t);return l(s)?(n=s instanceof e?s._then(e.props,void 0,void 0,void 0,void 0):new o(s).promise(),s instanceof e&&n._propagateFrom(s,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}var a,c=t("./util"),l=c.isObject,u=t("./es5");"function"==typeof Map&&(a=Map);var p=function(){function t(t,r){this[e]=t,this[e+n]=r,e++}var e=0,n=0;return function(r){n=r.size,e=0;var i=new Array(2*r.size);return r.forEach(t,i),i}}(),h=function(t){for(var e=new a,n=t.length/2|0,r=0;n>r;++r){var i=t[n+r],o=t[r];e.set(i,o)}return e};c.inherits(o,n),o.prototype._init=function(){},o.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=h(this._values);else{r={};for(var i=this.length(),o=0,s=this.length();s>o;++o)r[this._values[o+i]]=this._values[o]}return this._resolve(r),!0}return!1},o.prototype.shouldCopyValues=function(){return!1},o.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return s(this)},e.props=function(t){return s(t)}}},{"./es5":13,"./util":36}],26:[function(t,e){"use strict";function n(t,e,n,r,i){for(var o=0;i>o;++o)n[o+r]=t[o+e],t[o+e]=void 0}function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacityh;++h){var _=t[h];(void 0!==_||h in t)&&e.cast(_)._then(u,p,void 0,l,null)}return l}var s=t("./util"),a=function(t){return t.then(function(e){return o(e,t)})};e.race=function(t){return o(t,void 0)},e.prototype.race=function(){return o(this,void 0)}}},{"./util":36}],28:[function(t,e){"use strict";e.exports=function(e,n,r,i,o,s){function a(t,n,r,i){this.constructor$(t);var s=h();this._fn=null===s?n:s.bind(n),void 0!==r&&(r=e.resolve(r),r._attachCancellationCallback(this)),this._initialValue=r,this._currentCancellable=null,this._eachValues=i===o?[]:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function c(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function l(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+f.classString(e));var o=new a(t,e,n,i);return o.promise()}function u(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(p,void 0,void 0,this,void 0)):p.call(this,n)}function p(t){var n=this.array,r=n._promise,i=_(n._fn);r._pushContext();var o;o=void 0!==n._eachValues?i.call(r._boundValue(),t,this.index,this.length):i.call(r._boundValue(),this.accum,t,this.index,this.length),o instanceof e&&(n._currentCancellable=o);var a=r._popContext();return s.checkForgottenReturns(o,a,void 0!==n._eachValues?"Promise.each":"Promise.reduce",r),o}var h=e._getDomain,f=t("./util"),_=f.tryCatch;f.inherits(a,n),a.prototype._gotAccum=function(t){void 0!==this._eachValues&&t!==o&&this._eachValues.push(t)},a.prototype._eachComplete=function(t){return this._eachValues.push(t),this._eachValues},a.prototype._init=function(){},a.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},a.prototype.shouldCopyValues=function(){return!1},a.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},a.prototype._resultCancelled=function(t){return t===this._initialValue?this._cancel():void(this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel()))},a.prototype._iterate=function(t){this._values=t;var n,r,i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;i>r;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(u,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(c,c,void 0,n,this)},e.prototype.reduce=function(t,e){return l(this,t,e,null)},e.reduce=function(t,e,n,r){return l(t,e,n,r)}}},{"./util":36}],29:[function(t,e){"use strict";var n,r=t("./util"),i=function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")};if(r.isNode&&"undefined"==typeof MutationObserver){var o=global.setImmediate,s=process.nextTick;n=r.isRecentNode?function(t){o.call(global,t)}:function(t){s.call(process,t)}}else"undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&window.navigator.standalone?n="undefined"!=typeof setImmediate?function(t){setImmediate(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:i:(n=function(t){var e=document.createElement("div"),n=new MutationObserver(t);return n.observe(e,{attributes:!0}),function(){e.classList.toggle("foo")}},n.isStatic=!0);e.exports=n},{"./util":36}],30:[function(t,e){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t)}var o=e.PromiseInspection,s=t("./util");s.inherits(i,n),i.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length?(this._resolve(this._values),!0):!1},i.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},i.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new i(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e){"use strict";e.exports=function(e,n,r){function i(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function o(t,e){if((0|e)!==e||0>e)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new i(t),o=n.promise();return n.setHowMany(e),n.init(),o}var s=t("./util"),a=t("./errors").RangeError,c=t("./errors").AggregateError,l=s.isArray,u={};s.inherits(i,n),i.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var t=l(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},i.prototype.init=function(){this._initialized=!0,this._init()},i.prototype.setUnwrap=function(){this._unwrap=!0},i.prototype.howMany=function(){return this._howMany},i.prototype.setHowMany=function(t){this._howMany=t},i.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()?(this._values.length=this.howMany(),this._resolve(1===this.howMany()&&this._unwrap?this._values[0]:this._values),!0):!1},i.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},i.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(u),this._checkOutcome())},i.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new c,e=this.length();e0?this._reject(t):this._cancel(),!0}return!1},i.prototype._fulfilled=function(){return this._totalResolved},i.prototype._rejected=function(){return this._values.length-this.length()},i.prototype._addRejected=function(t){this._values.push(t)},i.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},i.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},i.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new a(e)},i.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return o(t,e)},e.prototype.some=function(t){return o(this,t)},e._SomePromiseArray=i}},{"./errors":12,"./util":36}],32:[function(t,e){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!==(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!==(16777216&this._bitField)},s=e.prototype.isPending=function(){return 0===(50397184&this._bitField)},a=e.prototype.isResolved=function(){return 0!==(50331648&this._bitField)};e.prototype.isCancelled=t.prototype._isCancelled=function(){return 65536===(65536&this._bitField)},t.prototype.isCancelled=function(){return this._target()._isCancelled()},t.prototype.isPending=function(){return s.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return a.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue() -},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e){"use strict";e.exports=function(e,n){function r(t,r){if(u(t)){if(t instanceof e)return t;var i=o(t);if(i===l){r&&r._pushContext();var c=e.reject(i.e);return r&&r._popContext(),c}if("function"==typeof i){if(s(t)){var c=new e(n);return t._then(c._fulfill,c._reject,void 0,c,null),c}return a(t,i,r)}}return t}function i(t){return t.then}function o(t){try{return i(t)}catch(e){return l.e=e,l}}function s(t){return p.call(t,"_promise0")}function a(t,r,i){function o(t){a&&(a._resolveCallback(t),a=null)}function s(t){a&&(a._rejectCallback(t,p,!0),a=null)}var a=new e(n),u=a;i&&i._pushContext(),a._captureStackTrace(),i&&i._popContext();var p=!0,h=c.tryCatch(r).call(t,o,s);return p=!1,a&&h===l&&(a._rejectCallback(h.e,!0,!0),a=null),u}var c=t("./util"),l=c.errorObj,u=c.isObject,p={}.hasOwnProperty;return r}},{"./util":36}],34:[function(t,e){"use strict";e.exports=function(e,n){function r(t){var e=this;return e instanceof Number&&(e=+e),clearTimeout(e),t}function i(t){var e=this;throw e instanceof Number&&(e=+e),clearTimeout(e),t}var o=t("./util"),s=e.TimeoutError,a=function(t,e,n){if(t.isPending()){var r;r="string"!=typeof e?e instanceof Error?e:new s("operation timed out"):new s(e),o.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),n.cancel()}},c=function(t){return l(+this).thenReturn(t)},l=e.delay=function(t,r){var i;return void 0!==r?i=e.resolve(r)._then(c,null,null,t,void 0):(i=new e(n),setTimeout(function(){i._fulfill()},+t)),i._setAsyncGuaranteed(),i};e.prototype.delay=function(t){return l(t,this)},e.prototype.timeout=function(t,e){t=+t;var n=this.then(),o=n.then(),s=setTimeout(function(){a(o,e,n)},t);return o._then(r,i,void 0,s,void 0)}}},{"./util":36}],35:[function(t,e){"use strict";e.exports=function(e,n,r,i,o,s){function a(t){setTimeout(function(){throw t},0)}function c(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}function l(t,n){function i(){if(s>=l)return u._fulfill();var o=c(t[s++]);if(o instanceof e&&o._isDisposable()){try{o=r(o._getDisposer().tryDispose(n),t.promise)}catch(p){return a(p)}if(o instanceof e)return o._then(i,a,null,null,null)}i()}var s=0,l=t.length,u=new e(o);return i(),u}function u(t,e,n){this._data=t,this._promise=e,this._context=n}function p(t,e,n){this.constructor$(t,e,n)}function h(t){return u.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function f(t){this.length=t,this.promise=null,this[t-1]=null}var _=t("./util"),d=t("./errors").TypeError,v=t("./util").inherits,y=_.errorObj,g=_.tryCatch;u.prototype.data=function(){return this._data},u.prototype.promise=function(){return this._promise},u.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():null},u.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=null!==e?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},u.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},v(p,u),p.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},f.prototype._resultCancelled=function(){for(var t=this.length,n=0;t>n;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(2>t)return n("you must pass at least 2 arguments to Promise.using");var i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+_.classString(i));var o,a=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,a=!1):(o=arguments,t--);for(var c=new f(t),p=0;t>p;++p){var d=o[p];if(u.isDisposer(d)){var v=d;d=d.promise(),d._setDisposable(v)}else{var m=r(d);m instanceof e&&(d=m._then(h,null,null,{resources:c,index:p},void 0))}c[p]=d}for(var b=new Array(c.length),p=0;p0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new p(t,this,i());throw new d}}},{"./errors":12,"./util":36}],36:[function(t,e,n){"use strict";function r(){try{var t=E;return E=null,t.apply(this,arguments)}catch(e){return F.e=e,F}}function i(t){return E=t,r}function o(t){return null==t||t===!0||t===!1||"string"==typeof t||"number"==typeof t}function s(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return o(t)?new Error(v(t)):t}function c(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;r>n;++n)i[n]=t[n];return i[n]=e,i}function l(t,e,n){if(!j.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function u(t,e,n){if(o(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return j.defineProperty(t,e,r),t}function p(t){throw t}function h(t){try{if("function"==typeof t){var e=j.names(t.prototype),n=j.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=P.test(t+"")&&j.names(t).length>0;if(n||r||i)return!0}return!1}catch(o){return!1}}function f(t){function e(){}e.prototype=t;for(var n=8;n--;)new e;return t}function _(t){return R.test(t)}function d(t,e,n){for(var r=new Array(t),i=0;t>i;++i)r[i]=e+i+n;return r}function v(t){try{return t+""}catch(e){return"[no string representation]"}}function y(t){try{u(t,"isOperational",!0)}catch(e){}}function g(t){return null==t?!1:t instanceof Error.__BluebirdErrorTypes__.OperationalError||t.isOperational===!0}function m(t){return t instanceof Error&&j.propertyIsWritable(t,"stack")}function b(t){return{}.toString.call(t)}function w(t,e,n){for(var r=j.names(t),i=0;i10||t[0]>0}(),V.isNode&&V.toFastProperties(process);try{throw new Error}catch(H){V.lastLineError=H}e.exports=V},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/any.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/any.js deleted file mode 100644 index 05a6228e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/any.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var SomePromiseArray = Promise._SomePromiseArray; -function any(promises) { - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(1); - ret.setUnwrap(); - ret.init(); - return promise; -} - -Promise.any = function (promises) { - return any(promises); -}; - -Promise.prototype.any = function () { - return any(this); -}; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/assert.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/assert.js deleted file mode 100644 index d2e535b2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/assert.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = (function(){ -var AssertionError = (function() { - function AssertionError(a) { - this.constructor$(a); - this.message = a; - this.name = "AssertionError"; - } - AssertionError.prototype = new Error(); - AssertionError.prototype.constructor = AssertionError; - AssertionError.prototype.constructor$ = Error; - return AssertionError; -})(); - -function getParams(args) { - var params = []; - for (var i = 0; i < args.length; ++i) params.push("arg" + i); - return params; -} - -function nativeAssert(callName, args, expect) { - try { - var params = getParams(args); - var constructorArgs = params; - constructorArgs.push("return " + - callName + "("+ params.join(",") + ");"); - var fn = Function.apply(null, constructorArgs); - return fn.apply(null, args); - } catch (e) { - if (!(e instanceof SyntaxError)) { - throw e; - } else { - return expect; - } - } -} - -return function assert(boolExpr, message) { - if (boolExpr === true) return; - - if (typeof boolExpr === "string" && - boolExpr.charAt(0) === "%") { - var nativeCallName = boolExpr; - var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];}; - if (nativeAssert(nativeCallName, args, message) === message) return; - message = (nativeCallName + " !== " + message); - } - - var ret = new AssertionError(message); - if (Error.captureStackTrace) { - Error.captureStackTrace(ret, assert); - } - throw ret; -}; -})(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/async.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/async.js deleted file mode 100644 index edfb3bab..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/async.js +++ /dev/null @@ -1,157 +0,0 @@ -"use strict"; -var firstLineError; -try {throw new Error(); } catch (e) {firstLineError = e;} -var schedule = require("./schedule"); -var Queue = require("./queue"); -var util = require("./util"); - -function Async() { - this._isTickUsed = false; - this._lateQueue = new Queue(16); - this._normalQueue = new Queue(16); - this._haveDrainedQueues = false; - this._trampolineEnabled = true; - var self = this; - this.drainQueues = function () { - self._drainQueues(); - }; - this._schedule = - schedule.isStatic ? schedule(this.drainQueues) : schedule; -} - -Async.prototype.enableTrampoline = function() { - this._trampolineEnabled = true; -}; - -Async.prototype.disableTrampolineIfNecessary = function() { - if (util.hasDevTools) { - this._trampolineEnabled = false; - } -}; - -Async.prototype.haveItemsQueued = function () { - return this._isTickUsed || this._haveDrainedQueues; -}; - - -Async.prototype.fatalError = function(e, isNode) { - if (isNode) { - process.stderr.write("Fatal " + (e instanceof Error ? e.stack : e)); - process.exit(2); - } else { - this.throwLater(e); - } -}; - -Async.prototype.throwLater = function(fn, arg) { - if (arguments.length === 1) { - arg = fn; - fn = function () { throw arg; }; - } - if (typeof setTimeout !== "undefined") { - setTimeout(function() { - fn(arg); - }, 0); - } else try { - this._schedule(function() { - fn(arg); - }); - } catch (e) { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } -}; - -function AsyncInvokeLater(fn, receiver, arg) { - this._lateQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncInvoke(fn, receiver, arg) { - this._normalQueue.push(fn, receiver, arg); - this._queueTick(); -} - -function AsyncSettlePromises(promise) { - this._normalQueue._pushOne(promise); - this._queueTick(); -} - -if (!util.hasDevTools) { - Async.prototype.invokeLater = AsyncInvokeLater; - Async.prototype.invoke = AsyncInvoke; - Async.prototype.settlePromises = AsyncSettlePromises; -} else { - if (schedule.isStatic) { - schedule = function(fn) { setTimeout(fn, 0); }; - } - Async.prototype.invokeLater = function (fn, receiver, arg) { - if (this._trampolineEnabled) { - AsyncInvokeLater.call(this, fn, receiver, arg); - } else { - this._schedule(function() { - setTimeout(function() { - fn.call(receiver, arg); - }, 100); - }); - } - }; - - Async.prototype.invoke = function (fn, receiver, arg) { - if (this._trampolineEnabled) { - AsyncInvoke.call(this, fn, receiver, arg); - } else { - this._schedule(function() { - fn.call(receiver, arg); - }); - } - }; - - Async.prototype.settlePromises = function(promise) { - if (this._trampolineEnabled) { - AsyncSettlePromises.call(this, promise); - } else { - this._schedule(function() { - promise._settlePromises(); - }); - } - }; -} - -Async.prototype.invokeFirst = function (fn, receiver, arg) { - this._normalQueue.unshift(fn, receiver, arg); - this._queueTick(); -}; - -Async.prototype._drainQueue = function(queue) { - while (queue.length() > 0) { - var fn = queue.shift(); - if (typeof fn !== "function") { - fn._settlePromises(); - continue; - } - var receiver = queue.shift(); - var arg = queue.shift(); - fn.call(receiver, arg); - } -}; - -Async.prototype._drainQueues = function () { - this._drainQueue(this._normalQueue); - this._reset(); - this._haveDrainedQueues = true; - this._drainQueue(this._lateQueue); -}; - -Async.prototype._queueTick = function () { - if (!this._isTickUsed) { - this._isTickUsed = true; - this._schedule(this.drainQueues); - } -}; - -Async.prototype._reset = function () { - this._isTickUsed = false; -}; - -module.exports = Async; -module.exports.firstLineError = firstLineError; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bind.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bind.js deleted file mode 100644 index fc3379db..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bind.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) { -var calledBind = false; -var rejectThis = function(_, e) { - this._reject(e); -}; - -var targetRejected = function(e, context) { - context.promiseRejectionQueued = true; - context.bindingPromise._then(rejectThis, rejectThis, null, this, e); -}; - -var bindingResolved = function(thisArg, context) { - if (((this._bitField & 50397184) === 0)) { - this._resolveCallback(context.target); - } -}; - -var bindingRejected = function(e, context) { - if (!context.promiseRejectionQueued) this._reject(e); -}; - -Promise.prototype.bind = function (thisArg) { - if (!calledBind) { - calledBind = true; - Promise.prototype._propagateFrom = debug.propagateFromFunction(); - Promise.prototype._boundValue = debug.boundValueFunction(); - } - var maybePromise = tryConvertToPromise(thisArg); - var ret = new Promise(INTERNAL); - ret._propagateFrom(this, 1); - var target = this._target(); - ret._setBoundTo(maybePromise); - if (maybePromise instanceof Promise) { - var context = { - promiseRejectionQueued: false, - promise: ret, - target: target, - bindingPromise: maybePromise - }; - target._then(INTERNAL, targetRejected, undefined, ret, context); - maybePromise._then( - bindingResolved, bindingRejected, undefined, ret, context); - ret._setOnCancel(maybePromise); - } else { - ret._resolveCallback(target); - } - return ret; -}; - -Promise.prototype._setBoundTo = function (obj) { - if (obj !== undefined) { - this._bitField = this._bitField | 2097152; - this._boundTo = obj; - } else { - this._bitField = this._bitField & (~2097152); - } -}; - -Promise.prototype._isBound = function () { - return (this._bitField & 2097152) === 2097152; -}; - -Promise.bind = function (thisArg, value) { - return Promise.resolve(value).bind(thisArg); -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bluebird.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bluebird.js deleted file mode 100644 index 1c36cf36..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/bluebird.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -var old; -if (typeof Promise !== "undefined") old = Promise; -function noConflict() { - try { if (Promise === bluebird) Promise = old; } - catch (e) {} - return bluebird; -} -var bluebird = require("./promise")(); -bluebird.noConflict = noConflict; -module.exports = bluebird; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/call_get.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/call_get.js deleted file mode 100644 index e643aaa2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/call_get.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; -var cr = Object.create; -if (cr) { - var callerCache = cr(null); - var getterCache = cr(null); - callerCache[" size"] = getterCache[" size"] = 0; -} - -module.exports = function(Promise) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var isIdentifier = util.isIdentifier; - -var getMethodCaller; -var getGetter; -if (!false) { -var makeMethodCaller = function (methodName) { - return new Function("ensureMethod", " \n\ - return function(obj) { \n\ - 'use strict' \n\ - var len = this.length; \n\ - ensureMethod(obj, 'methodName'); \n\ - switch(len) { \n\ - case 1: return obj.methodName(this[0]); \n\ - case 2: return obj.methodName(this[0], this[1]); \n\ - case 3: return obj.methodName(this[0], this[1], this[2]); \n\ - case 0: return obj.methodName(); \n\ - default: \n\ - return obj.methodName.apply(obj, this); \n\ - } \n\ - }; \n\ - ".replace(/methodName/g, methodName))(ensureMethod); -}; - -var makeGetter = function (propertyName) { - return new Function("obj", " \n\ - 'use strict'; \n\ - return obj.propertyName; \n\ - ".replace("propertyName", propertyName)); -}; - -var getCompiled = function(name, compiler, cache) { - var ret = cache[name]; - if (typeof ret !== "function") { - if (!isIdentifier(name)) { - return null; - } - ret = compiler(name); - cache[name] = ret; - cache[" size"]++; - if (cache[" size"] > 512) { - var keys = Object.keys(cache); - for (var i = 0; i < 256; ++i) delete cache[keys[i]]; - cache[" size"] = keys.length - 256; - } - } - return ret; -}; - -getMethodCaller = function(name) { - return getCompiled(name, makeMethodCaller, callerCache); -}; - -getGetter = function(name) { - return getCompiled(name, makeGetter, getterCache); -}; -} - -function ensureMethod(obj, methodName) { - var fn; - if (obj != null) fn = obj[methodName]; - if (typeof fn !== "function") { - var message = "Object " + util.classString(obj) + " has no method '" + - util.toString(methodName) + "'"; - throw new Promise.TypeError(message); - } - return fn; -} - -function caller(obj) { - var methodName = this.pop(); - var fn = ensureMethod(obj, methodName); - return fn.apply(obj, this); -} -Promise.prototype.call = function (methodName) { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - if (!false) { - if (canEvaluate) { - var maybeCaller = getMethodCaller(methodName); - if (maybeCaller !== null) { - return this._then( - maybeCaller, undefined, undefined, args, undefined); - } - } - } - args.push(methodName); - return this._then(caller, undefined, undefined, args, undefined); -}; - -function namedGetter(obj) { - return obj[this]; -} -function indexedGetter(obj) { - var index = +this; - if (index < 0) index = Math.max(0, index + obj.length); - return obj[index]; -} -Promise.prototype.get = function (propertyName) { - var isIndex = (typeof propertyName === "number"); - var getter; - if (!isIndex) { - if (canEvaluate) { - var maybeGetter = getGetter(propertyName); - getter = maybeGetter !== null ? maybeGetter : namedGetter; - } else { - getter = namedGetter; - } - } else { - getter = indexedGetter; - } - return this._then(getter, undefined, undefined, propertyName, undefined); -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/cancel.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/cancel.js deleted file mode 100644 index 5ed6bc9c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/cancel.js +++ /dev/null @@ -1,125 +0,0 @@ -"use strict"; -module.exports = function(Promise, PromiseArray, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var async = Promise._async; - -Promise.prototype["break"] = Promise.prototype.cancel = function() { - if (!debug.cancellation()) return this._warn("cancellation is disabled"); - - var promise = this; - var child = promise; - while (promise.isCancellable()) { - if (!promise._cancelBy(child)) { - if (child._isFollowing()) { - child._followee().cancel(); - } else { - child._cancelBranched(); - } - break; - } - - var parent = promise._cancellationParent; - if (parent == null || !parent.isCancellable()) { - if (promise._isFollowing()) { - promise._followee().cancel(); - } else { - promise._cancelBranched(); - } - break; - } else { - if (promise._isFollowing()) promise._followee().cancel(); - child = promise; - promise = parent; - } - } -}; - -Promise.prototype._branchHasCancelled = function() { - this._branchesRemainingToCancel--; -}; - -Promise.prototype._enoughBranchesHaveCancelled = function() { - return this._branchesRemainingToCancel === undefined || - this._branchesRemainingToCancel <= 0; -}; - -Promise.prototype._cancelBy = function(canceller) { - if (canceller === this) { - this._branchesRemainingToCancel = 0; - this._invokeOnCancel(); - return true; - } else { - this._branchHasCancelled(); - if (this._enoughBranchesHaveCancelled()) { - this._invokeOnCancel(); - return true; - } - } - return false; -}; - -Promise.prototype._cancelBranched = function() { - if (this._enoughBranchesHaveCancelled()) { - this._cancel(); - } -}; - -Promise.prototype._cancel = function() { - if (!this.isCancellable()) return; - - this._setCancelled(); - async.invoke(this._cancelPromises, this, undefined); -}; - -Promise.prototype._cancelPromises = function() { - if (this._length() > 0) this._settlePromises(); -}; - -Promise.prototype._unsetOnCancel = function() { - this._onCancelField = undefined; -}; - -Promise.prototype.isCancellable = function() { - return this.isPending() && !this.isCancelled(); -}; - -Promise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) { - if (util.isArray(onCancelCallback)) { - for (var i = 0; i < onCancelCallback.length; ++i) { - this._doInvokeOnCancel(onCancelCallback[i], internalOnly); - } - } else if (onCancelCallback !== undefined) { - if (typeof onCancelCallback === "function") { - if (!internalOnly) { - var e = tryCatch(onCancelCallback).call(this._boundValue()); - if (e === errorObj) { - this._attachExtraTrace(e.e); - async.throwLater(e.e); - } - } - } else { - onCancelCallback._resultCancelled(this); - } - } -}; - -Promise.prototype._invokeOnCancel = function() { - var onCancelCallback = this._onCancel(); - this._unsetOnCancel(); - async.invoke(this._doInvokeOnCancel, this, onCancelCallback); -}; - -Promise.prototype._invokeInternalOnCancel = function() { - if (this.isCancellable()) { - this._doInvokeOnCancel(this._onCancel(), true); - this._unsetOnCancel(); - } -}; - -Promise.prototype._resultCancelled = function() { - this.cancel(); -}; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/catch_filter.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/catch_filter.js deleted file mode 100644 index 0f24ce23..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/catch_filter.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; -module.exports = function(NEXT_FILTER) { -var util = require("./util"); -var getKeys = require("./es5").keys; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function catchFilter(instances, cb, promise) { - return function(e) { - var boundTo = promise._boundValue(); - predicateLoop: for (var i = 0; i < instances.length; ++i) { - var item = instances[i]; - - if (item === Error || - (item != null && item.prototype instanceof Error)) { - if (e instanceof item) { - return tryCatch(cb).call(boundTo, e); - } - } else if (typeof item === "function") { - var matchesPredicate = tryCatch(item).call(boundTo, e); - if (matchesPredicate === errorObj) { - return matchesPredicate; - } else if (matchesPredicate) { - return tryCatch(cb).call(boundTo, e); - } - } else if (util.isObject(e)) { - var keys = getKeys(item); - for (var j = 0; j < keys.length; ++j) { - var key = keys[j]; - if (item[key] != e[key]) { - continue predicateLoop; - } - } - return tryCatch(cb).call(boundTo, e); - } - } - return NEXT_FILTER; - }; -} - -return catchFilter; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/context.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/context.js deleted file mode 100644 index c307414f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/context.js +++ /dev/null @@ -1,69 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var longStackTraces = false; -var contextStack = []; - -Promise.prototype._promiseCreated = function() {}; -Promise.prototype._pushContext = function() {}; -Promise.prototype._popContext = function() {return null;}; -Promise._peekContext = Promise.prototype._peekContext = function() {}; - -function Context() { - this._trace = new Context.CapturedTrace(peekContext()); -} -Context.prototype._pushContext = function () { - if (this._trace !== undefined) { - this._trace._promiseCreated = null; - contextStack.push(this._trace); - } -}; - -Context.prototype._popContext = function () { - if (this._trace !== undefined) { - var trace = contextStack.pop(); - var ret = trace._promiseCreated; - trace._promiseCreated = null; - return ret; - } - return null; -}; - -function createContext() { - if (longStackTraces) return new Context(); -} - -function peekContext() { - var lastIndex = contextStack.length - 1; - if (lastIndex >= 0) { - return contextStack[lastIndex]; - } - return undefined; -} -Context.CapturedTrace = null; -Context.create = createContext; -Context.deactivateLongStackTraces = function() {}; -Context.activateLongStackTraces = function() { - var Promise_pushContext = Promise.prototype._pushContext; - var Promise_popContext = Promise.prototype._popContext; - var Promise_PeekContext = Promise._peekContext; - var Promise_peekContext = Promise.prototype._peekContext; - var Promise_promiseCreated = Promise.prototype._promiseCreated; - Context.deactivateLongStackTraces = function() { - Promise.prototype._pushContext = Promise_pushContext; - Promise.prototype._popContext = Promise_popContext; - Promise._peekContext = Promise_PeekContext; - Promise.prototype._peekContext = Promise_peekContext; - Promise.prototype._promiseCreated = Promise_promiseCreated; - longStackTraces = false; - }; - longStackTraces = true; - Promise.prototype._pushContext = Context.prototype._pushContext; - Promise.prototype._popContext = Context.prototype._popContext; - Promise._peekContext = Promise.prototype._peekContext = peekContext; - Promise.prototype._promiseCreated = function() { - var ctx = this._peekContext(); - if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; - }; -}; -return Context; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/debuggability.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/debuggability.js deleted file mode 100644 index 9f142f0f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/debuggability.js +++ /dev/null @@ -1,812 +0,0 @@ -"use strict"; -module.exports = function(Promise, Context) { -var getDomain = Promise._getDomain; -var async = Promise._async; -var Warning = require("./errors").Warning; -var util = require("./util"); -var canAttachTrace = util.canAttachTrace; -var unhandledRejectionHandled; -var possiblyUnhandledRejection; -var bluebirdFramePattern = - /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/; -var stackFramePattern = null; -var formatStack = null; -var indentStackFrames = false; -var printWarning; -var debugging = !!(util.env("BLUEBIRD_DEBUG") != 0 && - (false || - util.env("BLUEBIRD_DEBUG") || - util.env("NODE_ENV") === "development")); -var warnings = !!(util.env("BLUEBIRD_WARNINGS") != 0 && - (debugging || util.env("BLUEBIRD_WARNINGS"))); -var longStackTraces = !!(util.env("BLUEBIRD_LONG_STACK_TRACES") != 0 && - (debugging || util.env("BLUEBIRD_LONG_STACK_TRACES"))); - -Promise.prototype.suppressUnhandledRejections = function() { - var target = this._target(); - target._bitField = ((target._bitField & (~1048576)) | - 2097152); -}; - -Promise.prototype._ensurePossibleRejectionHandled = function () { - if ((this._bitField & 2097152) !== 0) return; - this._setRejectionIsUnhandled(); - async.invokeLater(this._notifyUnhandledRejection, this, undefined); -}; - -Promise.prototype._notifyUnhandledRejectionIsHandled = function () { - fireRejectionEvent("rejectionHandled", - unhandledRejectionHandled, undefined, this); -}; - -Promise.prototype._notifyUnhandledRejection = function () { - if (this._isRejectionUnhandled()) { - var reason = this._settledValue(); - this._setUnhandledRejectionIsNotified(); - fireRejectionEvent("unhandledRejection", - possiblyUnhandledRejection, reason, this); - } -}; - -Promise.prototype._setUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField | 262144; -}; - -Promise.prototype._unsetUnhandledRejectionIsNotified = function () { - this._bitField = this._bitField & (~262144); -}; - -Promise.prototype._isUnhandledRejectionNotified = function () { - return (this._bitField & 262144) > 0; -}; - -Promise.prototype._setRejectionIsUnhandled = function () { - this._bitField = this._bitField | 1048576; -}; - -Promise.prototype._unsetRejectionIsUnhandled = function () { - this._bitField = this._bitField & (~1048576); - if (this._isUnhandledRejectionNotified()) { - this._unsetUnhandledRejectionIsNotified(); - this._notifyUnhandledRejectionIsHandled(); - } -}; - -Promise.prototype._isRejectionUnhandled = function () { - return (this._bitField & 1048576) > 0; -}; - -Promise.prototype._warn = function(message, shouldUseOwnTrace, promise) { - return warn(message, shouldUseOwnTrace, promise || this); -}; - -Promise.onPossiblyUnhandledRejection = function (fn) { - var domain = getDomain(); - possiblyUnhandledRejection = - typeof fn === "function" ? (domain === null ? fn : domain.bind(fn)) - : undefined; -}; - -Promise.onUnhandledRejectionHandled = function (fn) { - var domain = getDomain(); - unhandledRejectionHandled = - typeof fn === "function" ? (domain === null ? fn : domain.bind(fn)) - : undefined; -}; - -var disableLongStackTraces = function() {}; -Promise.longStackTraces = function () { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - if (!config.longStackTraces && longStackTracesIsSupported()) { - var Promise_captureStackTrace = Promise.prototype._captureStackTrace; - var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace; - config.longStackTraces = true; - disableLongStackTraces = function() { - if (async.haveItemsQueued() && !config.longStackTraces) { - throw new Error("cannot enable long stack traces after promises have been created\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - Promise.prototype._captureStackTrace = Promise_captureStackTrace; - Promise.prototype._attachExtraTrace = Promise_attachExtraTrace; - Context.deactivateLongStackTraces(); - async.enableTrampoline(); - config.longStackTraces = false; - }; - Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace; - Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace; - Context.activateLongStackTraces(); - async.disableTrampolineIfNecessary(); - } -}; - -Promise.hasLongStackTraces = function () { - return config.longStackTraces && longStackTracesIsSupported(); -}; - -Promise.config = function(opts) { - opts = Object(opts); - if ("longStackTraces" in opts) { - if (opts.longStackTraces) { - Promise.longStackTraces(); - } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) { - disableLongStackTraces(); - } - } - if ("warnings" in opts) { - config.warnings = !!opts.warnings; - } - if ("cancellation" in opts && opts.cancellation && !config.cancellation) { - if (async.haveItemsQueued()) { - throw new Error( - "cannot enable cancellation after promises are in use"); - } - Promise.prototype._clearCancellationData = - cancellationClearCancellationData; - Promise.prototype._propagateFrom = cancellationPropagateFrom; - Promise.prototype._onCancel = cancellationOnCancel; - Promise.prototype._setOnCancel = cancellationSetOnCancel; - Promise.prototype._attachCancellationCallback = - cancellationAttachCancellationCallback; - Promise.prototype._execute = cancellationExecute; - propagateFromFunction = cancellationPropagateFrom; - config.cancellation = true; - } -}; - -Promise.prototype._execute = function(executor, resolve, reject) { - try { - executor(resolve, reject); - } catch (e) { - return e; - } -}; -Promise.prototype._onCancel = function () {}; -Promise.prototype._setOnCancel = function (handler) { ; }; -Promise.prototype._attachCancellationCallback = function(onCancel) { - ; -}; -Promise.prototype._captureStackTrace = function () {}; -Promise.prototype._attachExtraTrace = function () {}; -Promise.prototype._clearCancellationData = function() {}; -Promise.prototype._propagateFrom = function (parent, flags) { - ; - ; -}; - -function cancellationExecute(executor, resolve, reject) { - var promise = this; - try { - executor(resolve, reject, function(onCancel) { - if (typeof onCancel !== "function") { - throw new TypeError("onCancel must be a function, got: " + - util.toString(onCancel)); - } - promise._attachCancellationCallback(onCancel); - }); - } catch (e) { - return e; - } -} - -function cancellationAttachCancellationCallback(onCancel) { - if (!this.isCancellable()) return this; - - var previousOnCancel = this._onCancel(); - if (previousOnCancel !== undefined) { - if (util.isArray(previousOnCancel)) { - previousOnCancel.push(onCancel); - } else { - this._setOnCancel([previousOnCancel, onCancel]); - } - } else { - this._setOnCancel(onCancel); - } -} - -function cancellationOnCancel() { - return this._onCancelField; -} - -function cancellationSetOnCancel(onCancel) { - this._onCancelField = onCancel; -} - -function cancellationClearCancellationData() { - this._cancellationParent = undefined; - this._onCancelField = undefined; -} - -function cancellationPropagateFrom(parent, flags) { - if ((flags & 1) !== 0) { - this._cancellationParent = parent; - var branchesRemainingToCancel = parent._branchesRemainingToCancel; - if (branchesRemainingToCancel === undefined) { - branchesRemainingToCancel = 0; - } - parent._branchesRemainingToCancel = branchesRemainingToCancel + 1; - } - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} - -function bindingPropagateFrom(parent, flags) { - if ((flags & 2) !== 0 && parent._isBound()) { - this._setBoundTo(parent._boundTo); - } -} -var propagateFromFunction = bindingPropagateFrom; - -function boundValueFunction() { - var ret = this._boundTo; - if (ret !== undefined) { - if (ret instanceof Promise) { - if (ret.isFulfilled()) { - return ret.value(); - } else { - return undefined; - } - } - } - return ret; -} - -function longStackTracesCaptureStackTrace() { - this._trace = new CapturedTrace(this._peekContext()); -} - -function longStackTracesAttachExtraTrace(error, ignoreSelf) { - if (canAttachTrace(error)) { - var trace = this._trace; - if (trace !== undefined) { - if (ignoreSelf) trace = trace._parent; - } - if (trace !== undefined) { - trace.attachExtraTrace(error); - } else if (!error.__stackCleaned__) { - var parsed = parseStackAndMessage(error); - util.notEnumerableProp(error, "stack", - parsed.message + "\n" + parsed.stack.join("\n")); - util.notEnumerableProp(error, "__stackCleaned__", true); - } - } -} - -function checkForgottenReturns(returnValue, promiseCreated, name, promise) { - if (returnValue === undefined && - promiseCreated !== null && - config.longStackTraces && - config.warnings) { - var msg = "a promise was created in a " + name + - " handler but was not returned from it"; - promise._warn(msg, true, promiseCreated); - } -} - -function deprecated(name, replacement) { - var message = name + - " is deprecated and will be removed in a future version."; - if (replacement) message += " Use " + replacement + " instead."; - return warn(message); -} - -function warn(message, shouldUseOwnTrace, promise) { - if (!config.warnings) return; - var warning = new Warning(message); - var ctx; - if (shouldUseOwnTrace) { - promise._attachExtraTrace(warning); - } else if (config.longStackTraces && (ctx = Promise._peekContext())) { - ctx.attachExtraTrace(warning); - } else { - var parsed = parseStackAndMessage(warning); - warning.stack = parsed.message + "\n" + parsed.stack.join("\n"); - } - formatAndLogError(warning, "", true); -} - -function reconstructStack(message, stacks) { - for (var i = 0; i < stacks.length - 1; ++i) { - stacks[i].push("From previous event:"); - stacks[i] = stacks[i].join("\n"); - } - if (i < stacks.length) { - stacks[i] = stacks[i].join("\n"); - } - return message + "\n" + stacks.join("\n"); -} - -function removeDuplicateOrEmptyJumps(stacks) { - for (var i = 0; i < stacks.length; ++i) { - if (stacks[i].length === 0 || - ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) { - stacks.splice(i, 1); - i--; - } - } -} - -function removeCommonRoots(stacks) { - var current = stacks[0]; - for (var i = 1; i < stacks.length; ++i) { - var prev = stacks[i]; - var currentLastIndex = current.length - 1; - var currentLastLine = current[currentLastIndex]; - var commonRootMeetPoint = -1; - - for (var j = prev.length - 1; j >= 0; --j) { - if (prev[j] === currentLastLine) { - commonRootMeetPoint = j; - break; - } - } - - for (var j = commonRootMeetPoint; j >= 0; --j) { - var line = prev[j]; - if (current[currentLastIndex] === line) { - current.pop(); - currentLastIndex--; - } else { - break; - } - } - current = prev; - } -} - -function cleanStack(stack) { - var ret = []; - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - var isTraceLine = " (No stack trace)" === line || - stackFramePattern.test(line); - var isInternalFrame = isTraceLine && shouldIgnore(line); - if (isTraceLine && !isInternalFrame) { - if (indentStackFrames && line.charAt(0) !== " ") { - line = " " + line; - } - ret.push(line); - } - } - return ret; -} - -function stackFramesAsArray(error) { - var stack = error.stack.replace(/\s+$/g, "").split("\n"); - for (var i = 0; i < stack.length; ++i) { - var line = stack[i]; - if (" (No stack trace)" === line || stackFramePattern.test(line)) { - break; - } - } - if (i > 0) { - stack = stack.slice(i); - } - return stack; -} - -function parseStackAndMessage(error) { - var stack = error.stack; - var message = error.toString(); - stack = typeof stack === "string" && stack.length > 0 - ? stackFramesAsArray(error) : [" (No stack trace)"]; - return { - message: message, - stack: cleanStack(stack) - }; -} - -function formatAndLogError(error, title, isSoft) { - if (typeof console !== "undefined") { - var message; - if (util.isObject(error)) { - var stack = error.stack; - message = title + formatStack(stack, error); - } else { - message = title + String(error); - } - if (typeof printWarning === "function") { - printWarning(message, isSoft); - } else if (typeof console.log === "function" || - typeof console.log === "object") { - console.log(message); - } - } -} - -function fireRejectionEvent(name, localHandler, reason, promise) { - var localEventFired = false; - try { - if (typeof localHandler === "function") { - localEventFired = true; - if (name === "rejectionHandled") { - localHandler(promise); - } else { - localHandler(reason, promise); - } - } - } catch (e) { - async.throwLater(e); - } - - var globalEventFired = false; - try { - globalEventFired = fireGlobalEvent(name, reason, promise); - } catch (e) { - globalEventFired = true; - async.throwLater(e); - } - - var domEventFired = false; - if (fireDomEvent) { - try { - domEventFired = fireDomEvent(name.toLowerCase(), { - reason: reason, - promise: promise - }); - } catch (e) { - domEventFired = true; - async.throwLater(e); - } - } - - if (!globalEventFired && !localEventFired && !domEventFired && - name === "unhandledRejection") { - formatAndLogError(reason, "Unhandled rejection "); - } -} - -function formatNonError(obj) { - var str; - if (typeof obj === "function") { - str = "[function " + - (obj.name || "anonymous") + - "]"; - } else { - str = obj && typeof obj.toString === "function" - ? obj.toString() : util.toString(obj); - var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; - if (ruselessToString.test(str)) { - try { - var newStr = JSON.stringify(obj); - str = newStr; - } - catch(e) { - - } - } - if (str.length === 0) { - str = "(empty array)"; - } - } - return ("(<" + snip(str) + ">, no stack trace)"); -} - -function snip(str) { - var maxChars = 41; - if (str.length < maxChars) { - return str; - } - return str.substr(0, maxChars - 3) + "..."; -} - -function longStackTracesIsSupported() { - return typeof captureStackTrace === "function"; -} - -var shouldIgnore = function() { return false; }; -var parseLineInfoRegex = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; -function parseLineInfo(line) { - var matches = line.match(parseLineInfoRegex); - if (matches) { - return { - fileName: matches[1], - line: parseInt(matches[2], 10) - }; - } -} - -function setBounds(firstLineError, lastLineError) { - if (!longStackTracesIsSupported()) return; - var firstStackLines = firstLineError.stack.split("\n"); - var lastStackLines = lastLineError.stack.split("\n"); - var firstIndex = -1; - var lastIndex = -1; - var firstFileName; - var lastFileName; - for (var i = 0; i < firstStackLines.length; ++i) { - var result = parseLineInfo(firstStackLines[i]); - if (result) { - firstFileName = result.fileName; - firstIndex = result.line; - break; - } - } - for (var i = 0; i < lastStackLines.length; ++i) { - var result = parseLineInfo(lastStackLines[i]); - if (result) { - lastFileName = result.fileName; - lastIndex = result.line; - break; - } - } - if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName || - firstFileName !== lastFileName || firstIndex >= lastIndex) { - return; - } - - shouldIgnore = function(line) { - if (bluebirdFramePattern.test(line)) return true; - var info = parseLineInfo(line); - if (info) { - if (info.fileName === firstFileName && - (firstIndex <= info.line && info.line <= lastIndex)) { - return true; - } - } - return false; - }; -} - -function CapturedTrace(parent) { - this._parent = parent; - this._promisesCreated = 0; - var length = this._length = 1 + (parent === undefined ? 0 : parent._length); - captureStackTrace(this, CapturedTrace); - if (length > 32) this.uncycle(); -} -util.inherits(CapturedTrace, Error); -Context.CapturedTrace = CapturedTrace; - -CapturedTrace.prototype.uncycle = function() { - var length = this._length; - if (length < 2) return; - var nodes = []; - var stackToIndex = {}; - - for (var i = 0, node = this; node !== undefined; ++i) { - nodes.push(node); - node = node._parent; - } - length = this._length = i; - for (var i = length - 1; i >= 0; --i) { - var stack = nodes[i].stack; - if (stackToIndex[stack] === undefined) { - stackToIndex[stack] = i; - } - } - for (var i = 0; i < length; ++i) { - var currentStack = nodes[i].stack; - var index = stackToIndex[currentStack]; - if (index !== undefined && index !== i) { - if (index > 0) { - nodes[index - 1]._parent = undefined; - nodes[index - 1]._length = 1; - } - nodes[i]._parent = undefined; - nodes[i]._length = 1; - var cycleEdgeNode = i > 0 ? nodes[i - 1] : this; - - if (index < length - 1) { - cycleEdgeNode._parent = nodes[index + 1]; - cycleEdgeNode._parent.uncycle(); - cycleEdgeNode._length = - cycleEdgeNode._parent._length + 1; - } else { - cycleEdgeNode._parent = undefined; - cycleEdgeNode._length = 1; - } - var currentChildLength = cycleEdgeNode._length + 1; - for (var j = i - 2; j >= 0; --j) { - nodes[j]._length = currentChildLength; - currentChildLength++; - } - return; - } - } -}; - -CapturedTrace.prototype.attachExtraTrace = function(error) { - if (error.__stackCleaned__) return; - this.uncycle(); - var parsed = parseStackAndMessage(error); - var message = parsed.message; - var stacks = [parsed.stack]; - - var trace = this; - while (trace !== undefined) { - stacks.push(cleanStack(trace.stack.split("\n"))); - trace = trace._parent; - } - removeCommonRoots(stacks); - removeDuplicateOrEmptyJumps(stacks); - util.notEnumerableProp(error, "stack", reconstructStack(message, stacks)); - util.notEnumerableProp(error, "__stackCleaned__", true); -}; - -var captureStackTrace = (function stackDetection() { - var v8stackFramePattern = /^\s*at\s*/; - var v8stackFormatter = function(stack, error) { - if (typeof stack === "string") return stack; - - if (error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - if (typeof Error.stackTraceLimit === "number" && - typeof Error.captureStackTrace === "function") { - Error.stackTraceLimit += 6; - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - var captureStackTrace = Error.captureStackTrace; - - shouldIgnore = function(line) { - return bluebirdFramePattern.test(line); - }; - return function(receiver, ignoreUntil) { - Error.stackTraceLimit += 6; - captureStackTrace(receiver, ignoreUntil); - Error.stackTraceLimit -= 6; - }; - } - var err = new Error(); - - if (typeof err.stack === "string" && - err.stack.split("\n")[0].indexOf("stackDetection@") >= 0) { - stackFramePattern = /@/; - formatStack = v8stackFormatter; - indentStackFrames = true; - return function captureStackTrace(o) { - o.stack = new Error().stack; - }; - } - - var hasStackAfterThrow; - try { throw new Error(); } - catch(e) { - hasStackAfterThrow = ("stack" in e); - } - if (!("stack" in err) && hasStackAfterThrow && - typeof Error.stackTraceLimit === "number") { - stackFramePattern = v8stackFramePattern; - formatStack = v8stackFormatter; - return function captureStackTrace(o) { - Error.stackTraceLimit += 6; - try { throw new Error(); } - catch(e) { o.stack = e.stack; } - Error.stackTraceLimit -= 6; - }; - } - - formatStack = function(stack, error) { - if (typeof stack === "string") return stack; - - if ((typeof error === "object" || - typeof error === "function") && - error.name !== undefined && - error.message !== undefined) { - return error.toString(); - } - return formatNonError(error); - }; - - return null; - -})([]); - -var fireDomEvent; -var fireGlobalEvent = (function() { - if (util.isNode) { - return function(name, reason, promise) { - if (name === "rejectionHandled") { - return process.emit(name, promise); - } else { - return process.emit(name, reason, promise); - } - }; - } else { - var customEventWorks = false; - var anyEventWorks = true; - try { - var ev = new self.CustomEvent("test"); - customEventWorks = ev instanceof CustomEvent; - } catch (e) {} - if (!customEventWorks) { - try { - var event = document.createEvent("CustomEvent"); - event.initCustomEvent("testingtheevent", false, true, {}); - self.dispatchEvent(event); - } catch (e) { - anyEventWorks = false; - } - } - if (anyEventWorks) { - fireDomEvent = function(type, detail) { - var event; - if (customEventWorks) { - event = new self.CustomEvent(type, { - detail: detail, - bubbles: false, - cancelable: true - }); - } else if (self.dispatchEvent) { - event = document.createEvent("CustomEvent"); - event.initCustomEvent(type, false, true, detail); - } - - return event ? !self.dispatchEvent(event) : false; - }; - } - - var toWindowMethodNameMap = {}; - toWindowMethodNameMap["unhandledRejection"] = ("on" + - "unhandledRejection").toLowerCase(); - toWindowMethodNameMap["rejectionHandled"] = ("on" + - "rejectionHandled").toLowerCase(); - - return function(name, reason, promise) { - var methodName = toWindowMethodNameMap[name]; - var method = self[methodName]; - if (!method) return false; - if (name === "rejectionHandled") { - method.call(self, promise); - } else { - method.call(self, reason, promise); - } - return true; - }; - } -})(); - -if (typeof console !== "undefined" && typeof console.warn !== "undefined") { - printWarning = function (message) { - console.warn(message); - }; - if (util.isNode && process.stderr.isTTY) { - printWarning = function(message, isSoft) { - var color = isSoft ? "\u001b[33m" : "\u001b[31m"; - console.warn(color + message + "\u001b[0m\n"); - }; - } else if (!util.isNode && typeof (new Error().stack) === "string") { - printWarning = function(message, isSoft) { - console.warn("%c" + message, - isSoft ? "color: darkorange" : "color: red"); - }; - } -} - -var config = { - warnings: warnings, - longStackTraces: false, - cancellation: false -}; - -if (longStackTraces) Promise.longStackTraces(); - -return { - longStackTraces: function() { - return config.longStackTraces; - }, - warnings: function() { - return config.warnings; - }, - cancellation: function() { - return config.cancellation; - }, - propagateFromFunction: function() { - return propagateFromFunction; - }, - boundValueFunction: function() { - return boundValueFunction; - }, - checkForgottenReturns: checkForgottenReturns, - setBounds: setBounds, - warn: warn, - deprecated: deprecated, - CapturedTrace: CapturedTrace -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/direct_resolve.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/direct_resolve.js deleted file mode 100644 index a8902982..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/direct_resolve.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function returner() { - return this.value; -} -function thrower() { - throw this.reason; -} - -Promise.prototype["return"] = -Promise.prototype.thenReturn = function (value) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - returner, undefined, undefined, {value: value}, undefined); -}; - -Promise.prototype["throw"] = -Promise.prototype.thenThrow = function (reason) { - return this._then( - thrower, undefined, undefined, {reason: reason}, undefined); -}; - -Promise.prototype.catchThrow = function (reason) { - if (arguments.length <= 1) { - return this._then( - undefined, thrower, undefined, {reason: reason}, undefined); - } else { - var _reason = arguments[1]; - var handler = function() {throw _reason;}; - return this.caught(reason, handler); - } -}; - -Promise.prototype.catchReturn = function (value) { - if (arguments.length <= 1) { - if (value instanceof Promise) value.suppressUnhandledRejections(); - return this._then( - undefined, returner, undefined, {value: value}, undefined); - } else { - var _value = arguments[1]; - if (_value instanceof Promise) _value.suppressUnhandledRejections(); - var handler = function() {return _value;}; - return this.caught(value, handler); - } -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/each.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/each.js deleted file mode 100644 index ac8ead77..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/each.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseReduce = Promise.reduce; -var PromiseAll = Promise.all; - -function promiseAllThis() { - return PromiseAll(this); -} - -function PromiseMapSeries(promises, fn) { - return PromiseReduce(promises, fn, INTERNAL, INTERNAL); -} - -Promise.prototype.each = function (fn) { - return this.mapSeries(fn) - ._then(promiseAllThis, undefined, undefined, this, undefined); -}; - -Promise.prototype.mapSeries = function (fn) { - return PromiseReduce(this, fn, INTERNAL, INTERNAL); -}; - -Promise.each = function (promises, fn) { - return PromiseMapSeries(promises, fn) - ._then(promiseAllThis, undefined, undefined, promises, undefined); -}; - -Promise.mapSeries = PromiseMapSeries; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/errors.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/errors.js deleted file mode 100644 index ddd05257..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/errors.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var Objectfreeze = es5.freeze; -var util = require("./util"); -var inherits = util.inherits; -var notEnumerableProp = util.notEnumerableProp; - -function subError(nameProperty, defaultMessage) { - function SubError(message) { - if (!(this instanceof SubError)) return new SubError(message); - notEnumerableProp(this, "message", - typeof message === "string" ? message : defaultMessage); - notEnumerableProp(this, "name", nameProperty); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - Error.call(this); - } - } - inherits(SubError, Error); - return SubError; -} - -var _TypeError, _RangeError; -var Warning = subError("Warning", "warning"); -var CancellationError = subError("CancellationError", "cancellation error"); -var TimeoutError = subError("TimeoutError", "timeout error"); -var AggregateError = subError("AggregateError", "aggregate error"); -try { - _TypeError = TypeError; - _RangeError = RangeError; -} catch(e) { - _TypeError = subError("TypeError", "type error"); - _RangeError = subError("RangeError", "range error"); -} - -var methods = ("join pop push shift unshift slice filter forEach some " + - "every map indexOf lastIndexOf reduce reduceRight sort reverse").split(" "); - -for (var i = 0; i < methods.length; ++i) { - if (typeof Array.prototype[methods[i]] === "function") { - AggregateError.prototype[methods[i]] = Array.prototype[methods[i]]; - } -} - -es5.defineProperty(AggregateError.prototype, "length", { - value: 0, - configurable: false, - writable: true, - enumerable: true -}); -AggregateError.prototype["isOperational"] = true; -var level = 0; -AggregateError.prototype.toString = function() { - var indent = Array(level * 4 + 1).join(" "); - var ret = "\n" + indent + "AggregateError of:" + "\n"; - level++; - indent = Array(level * 4 + 1).join(" "); - for (var i = 0; i < this.length; ++i) { - var str = this[i] === this ? "[Circular AggregateError]" : this[i] + ""; - var lines = str.split("\n"); - for (var j = 0; j < lines.length; ++j) { - lines[j] = indent + lines[j]; - } - str = lines.join("\n"); - ret += str + "\n"; - } - level--; - return ret; -}; - -function OperationalError(message) { - if (!(this instanceof OperationalError)) - return new OperationalError(message); - notEnumerableProp(this, "name", "OperationalError"); - notEnumerableProp(this, "message", message); - this.cause = message; - this["isOperational"] = true; - - if (message instanceof Error) { - notEnumerableProp(this, "message", message.message); - notEnumerableProp(this, "stack", message.stack); - } else if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - -} -inherits(OperationalError, Error); - -var errorTypes = Error["__BluebirdErrorTypes__"]; -if (!errorTypes) { - errorTypes = Objectfreeze({ - CancellationError: CancellationError, - TimeoutError: TimeoutError, - OperationalError: OperationalError, - RejectionError: OperationalError, - AggregateError: AggregateError - }); - notEnumerableProp(Error, "__BluebirdErrorTypes__", errorTypes); -} - -module.exports = { - Error: Error, - TypeError: _TypeError, - RangeError: _RangeError, - CancellationError: errorTypes.CancellationError, - OperationalError: errorTypes.OperationalError, - TimeoutError: errorTypes.TimeoutError, - AggregateError: errorTypes.AggregateError, - Warning: Warning -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/es5.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/es5.js deleted file mode 100644 index ea41d5a5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/es5.js +++ /dev/null @@ -1,80 +0,0 @@ -var isES5 = (function(){ - "use strict"; - return this === undefined; -})(); - -if (isES5) { - module.exports = { - freeze: Object.freeze, - defineProperty: Object.defineProperty, - getDescriptor: Object.getOwnPropertyDescriptor, - keys: Object.keys, - names: Object.getOwnPropertyNames, - getPrototypeOf: Object.getPrototypeOf, - isArray: Array.isArray, - isES5: isES5, - propertyIsWritable: function(obj, prop) { - var descriptor = Object.getOwnPropertyDescriptor(obj, prop); - return !!(!descriptor || descriptor.writable || descriptor.set); - } - }; -} else { - var has = {}.hasOwnProperty; - var str = {}.toString; - var proto = {}.constructor.prototype; - - var ObjectKeys = function (o) { - var ret = []; - for (var key in o) { - if (has.call(o, key)) { - ret.push(key); - } - } - return ret; - }; - - var ObjectGetDescriptor = function(o, key) { - return {value: o[key]}; - }; - - var ObjectDefineProperty = function (o, key, desc) { - o[key] = desc.value; - return o; - }; - - var ObjectFreeze = function (obj) { - return obj; - }; - - var ObjectGetPrototypeOf = function (obj) { - try { - return Object(obj).constructor.prototype; - } - catch (e) { - return proto; - } - }; - - var ArrayIsArray = function (obj) { - try { - return str.call(obj) === "[object Array]"; - } - catch(e) { - return false; - } - }; - - module.exports = { - isArray: ArrayIsArray, - keys: ObjectKeys, - names: ObjectKeys, - defineProperty: ObjectDefineProperty, - getDescriptor: ObjectGetDescriptor, - freeze: ObjectFreeze, - getPrototypeOf: ObjectGetPrototypeOf, - isES5: isES5, - propertyIsWritable: function() { - return true; - } - }; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/filter.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/filter.js deleted file mode 100644 index ed57bf01..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/filter.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var PromiseMap = Promise.map; - -Promise.prototype.filter = function (fn, options) { - return PromiseMap(this, fn, options, INTERNAL); -}; - -Promise.filter = function (promises, fn, options) { - return PromiseMap(promises, fn, options, INTERNAL); -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/finally.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/finally.js deleted file mode 100644 index 0ee8b99f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/finally.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; -module.exports = function(Promise, tryConvertToPromise) { -var util = require("./util"); -var CancellationError = Promise.CancellationError; -var errorObj = util.errorObj; - -function FinallyHandlerCancelReaction(finallyHandler) { - this.finallyHandler = finallyHandler; -} - -FinallyHandlerCancelReaction.prototype._resultCancelled = function() { - checkCancel(this.finallyHandler); -}; - -function checkCancel(ctx, reason) { - if (ctx.cancelPromise != null) { - if (arguments.length > 1) { - ctx.cancelPromise._reject(reason); - } else { - ctx.cancelPromise._cancel(); - } - ctx.cancelPromise = null; - return true; - } - return false; -} - -function succeed() { - return finallyHandler.call(this, this.promise._target()._settledValue()); -} -function fail(reason) { - if (checkCancel(this, reason)) return; - errorObj.e = reason; - return errorObj; -} -function finallyHandler(reasonOrValue) { - var promise = this.promise; - var handler = this.handler; - - if (!this.called) { - this.called = true; - var ret = this.type === 0 - ? handler.call(promise._boundValue()) - : handler.call(promise._boundValue(), reasonOrValue); - if (ret !== undefined) { - var maybePromise = tryConvertToPromise(ret, promise); - if (maybePromise instanceof Promise) { - if (this.cancelPromise != null) { - if (maybePromise.isCancelled()) { - var reason = - new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - errorObj.e = reason; - return errorObj; - } else if (maybePromise.isPending()) { - maybePromise._attachCancellationCallback( - new FinallyHandlerCancelReaction(this)); - } - } - return maybePromise._then( - succeed, fail, undefined, this, undefined); - } - } - } - - if (promise.isRejected()) { - checkCancel(this); - errorObj.e = reasonOrValue; - return errorObj; - } else { - checkCancel(this); - return reasonOrValue; - } -} - -Promise.prototype._passThrough = function(handler, type, success, fail) { - if (typeof handler !== "function") return this.then(); - return this._then(success, fail, undefined, { - promise: this, - handler: handler, - called: false, - cancelPromise: null, - type: type - }, undefined); -}; - -Promise.prototype.lastly = -Promise.prototype["finally"] = function (handler) { - return this._passThrough(handler, - 0, - finallyHandler, - finallyHandler); -}; - -Promise.prototype.tap = function (handler) { - return this._passThrough(handler, 1, finallyHandler); -}; - -return finallyHandler; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/generators.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/generators.js deleted file mode 100644 index d04c228b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/generators.js +++ /dev/null @@ -1,204 +0,0 @@ -"use strict"; -module.exports = function(Promise, - apiRejection, - INTERNAL, - tryConvertToPromise, - Proxyable, - debug) { -var errors = require("./errors"); -var TypeError = errors.TypeError; -var util = require("./util"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -var yieldHandlers = []; - -function promiseFromYieldHandler(value, yieldHandlers, traceParent) { - for (var i = 0; i < yieldHandlers.length; ++i) { - traceParent._pushContext(); - var result = tryCatch(yieldHandlers[i])(value); - traceParent._popContext(); - if (result === errorObj) { - traceParent._pushContext(); - var ret = Promise.reject(errorObj.e); - traceParent._popContext(); - return ret; - } - var maybePromise = tryConvertToPromise(result, traceParent); - if (maybePromise instanceof Promise) return maybePromise; - } - return null; -} - -function PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) { - var promise = this._promise = new Promise(INTERNAL); - promise._captureStackTrace(); - promise._setOnCancel(this); - this._stack = stack; - this._generatorFunction = generatorFunction; - this._receiver = receiver; - this._generator = undefined; - this._yieldHandlers = typeof yieldHandler === "function" - ? [yieldHandler].concat(yieldHandlers) - : yieldHandlers; - this._yieldedPromise = null; -} -util.inherits(PromiseSpawn, Proxyable); - -PromiseSpawn.prototype._isResolved = function() { - return this.promise === null; -}; - -PromiseSpawn.prototype._cleanup = function() { - this._promise = this._generator = null; -}; - -PromiseSpawn.prototype._promiseCancelled = function() { - if (this._isResolved()) return; - var implementsReturn = typeof this._generator["return"] !== "undefined"; - - var result; - if (!implementsReturn) { - var reason = new Promise.CancellationError( - "generator .return() sentinel"); - Promise.coroutine.returnSentinel = reason; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - result = tryCatch(this._generator["throw"]).call(this._generator, - reason); - this._promise._popContext(); - if (result === errorObj && result.e === reason) { - result = null; - } - } else { - this._promise._pushContext(); - result = tryCatch(this._generator["return"]).call(this._generator, - undefined); - this._promise._popContext(); - } - var promise = this._promise; - this._cleanup(); - if (result === errorObj) { - promise._rejectCallback(result.e, false); - } else { - promise.cancel(); - } -}; - -PromiseSpawn.prototype._promiseFulfilled = function(value) { - this._yieldedPromise = null; - this._promise._pushContext(); - var result = tryCatch(this._generator.next).call(this._generator, value); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._promiseRejected = function(reason) { - this._yieldedPromise = null; - this._promise._attachExtraTrace(reason); - this._promise._pushContext(); - var result = tryCatch(this._generator["throw"]) - .call(this._generator, reason); - this._promise._popContext(); - this._continue(result); -}; - -PromiseSpawn.prototype._resultCancelled = function() { - if (this._yieldedPromise instanceof Promise) { - var promise = this._yieldedPromise; - this._yieldedPromise = null; - promise.cancel(); - } -}; - -PromiseSpawn.prototype.promise = function () { - return this._promise; -}; - -PromiseSpawn.prototype._run = function () { - this._generator = this._generatorFunction.call(this._receiver); - this._receiver = - this._generatorFunction = undefined; - this._promiseFulfilled(undefined); -}; - -PromiseSpawn.prototype._continue = function (result) { - var promise = this._promise; - if (result === errorObj) { - this._cleanup(); - return promise._rejectCallback(result.e, false); - } - - var value = result.value; - if (result.done === true) { - this._cleanup(); - return promise._resolveCallback(value); - } else { - var maybePromise = tryConvertToPromise(value, this._promise); - if (!(maybePromise instanceof Promise)) { - maybePromise = - promiseFromYieldHandler(maybePromise, - this._yieldHandlers, - this._promise); - if (maybePromise === null) { - this._promiseRejected( - new TypeError( - "A value %s was yielded that could not be treated as a promise\u000a\u000a See http://goo.gl/MqrFmX\u000a\u000a".replace("%s", value) + - "From coroutine:\u000a" + - this._stack.split("\n").slice(1, -7).join("\n") - ) - ); - return; - } - } - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - this._yieldedPromise = maybePromise; - maybePromise._proxy(this, null); - } else if (((bitField & 33554432) !== 0)) { - this._promiseFulfilled(maybePromise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._promiseRejected(maybePromise._reason()); - } else { - this._promiseCancelled(); - } - } -}; - -Promise.coroutine = function (generatorFunction, options) { - if (typeof generatorFunction !== "function") { - throw new TypeError("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var yieldHandler = Object(options).yieldHandler; - var PromiseSpawn$ = PromiseSpawn; - var stack = new Error().stack; - return function () { - var generator = generatorFunction.apply(this, arguments); - var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler, - stack); - var ret = spawn.promise(); - spawn._generator = generator; - spawn._promiseFulfilled(undefined); - return ret; - }; -}; - -Promise.coroutine.addYieldHandler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - yieldHandlers.push(fn); -}; - -Promise.spawn = function (generatorFunction) { - debug.deprecated("Promise.spawn()", "Promise.coroutine()"); - if (typeof generatorFunction !== "function") { - return apiRejection("generatorFunction must be a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var spawn = new PromiseSpawn(generatorFunction, this); - var ret = spawn.promise(); - spawn._run(Promise.spawn); - return ret; -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/join.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/join.js deleted file mode 100644 index b3ec246f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/join.js +++ /dev/null @@ -1,149 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, tryConvertToPromise, INTERNAL) { -var util = require("./util"); -var canEvaluate = util.canEvaluate; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var reject; - -if (!false) { -if (canEvaluate) { - var thenCallback = function(i) { - return new Function("value", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = value; \n\ - holder.checkFulfillment(this); \n\ - ".replace(/Index/g, i)); - }; - - var promiseSetter = function(i) { - return new Function("promise", "holder", " \n\ - 'use strict'; \n\ - holder.pIndex = promise; \n\ - ".replace(/Index/g, i)); - }; - - var generateHolderClass = function(total) { - var props = new Array(total); - for (var i = 0; i < props.length; ++i) { - props[i] = "this.p" + (i+1); - } - var assignment = props.join(" = ") + " = null;"; - var cancellationCode= "var promise;\n" + props.map(function(prop) { - return " \n\ - promise = " + prop + "; \n\ - if (promise instanceof Promise) { \n\ - promise.cancel(); \n\ - } \n\ - "; - }).join("\n"); - var passedArguments = props.join(", "); - var name = "Holder$" + total; - - - var code = "return function(tryCatch, errorObj, Promise) { \n\ - 'use strict'; \n\ - function [TheName](fn) { \n\ - [TheProperties] \n\ - this.fn = fn; \n\ - this.now = 0; \n\ - } \n\ - [TheName].prototype.checkFulfillment = function(promise) { \n\ - var now = ++this.now; \n\ - if (now === [TheTotal]) { \n\ - promise._pushContext(); \n\ - var callback = this.fn; \n\ - var ret = tryCatch(callback)([ThePassedArguments]); \n\ - promise._popContext(); \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(ret.e, false); \n\ - } else { \n\ - promise._resolveCallback(ret); \n\ - } \n\ - } \n\ - }; \n\ - \n\ - [TheName].prototype._resultCancelled = function() { \n\ - [CancellationCode] \n\ - }; \n\ - \n\ - return [TheName]; \n\ - }(tryCatch, errorObj, Promise); \n\ - "; - - code = code.replace(/\[TheName\]/g, name) - .replace(/\[TheTotal\]/g, total) - .replace(/\[ThePassedArguments\]/g, passedArguments) - .replace(/\[TheProperties\]/g, assignment) - .replace(/\[CancellationCode\]/g, cancellationCode); - - return new Function("tryCatch", "errorObj", "Promise", code) - (tryCatch, errorObj, Promise); - }; - - var holderClasses = []; - var thenCallbacks = []; - var promiseSetters = []; - - for (var i = 0; i < 8; ++i) { - holderClasses.push(generateHolderClass(i + 1)); - thenCallbacks.push(thenCallback(i + 1)); - promiseSetters.push(promiseSetter(i + 1)); - } - - reject = function (reason) { - this._reject(reason); - }; -}} - -Promise.join = function () { - var last = arguments.length - 1; - var fn; - if (last > 0 && typeof arguments[last] === "function") { - fn = arguments[last]; - if (!false) { - if (last <= 8 && canEvaluate) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - var HolderClass = holderClasses[last - 1]; - var holder = new HolderClass(fn); - var callbacks = thenCallbacks; - - for (var i = 0; i < last; ++i) { - var maybePromise = tryConvertToPromise(arguments[i], ret); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - maybePromise._then(callbacks[i], reject, - undefined, ret, holder); - promiseSetters[i](maybePromise, holder); - } else if (((bitField & 33554432) !== 0)) { - callbacks[i].call(ret, - maybePromise._value(), holder); - } else if (((bitField & 16777216) !== 0)) { - ret._reject(maybePromise._reason()); - } else { - ret._cancel(); - } - } else { - callbacks[i].call(ret, maybePromise, holder); - } - } - if (!ret._isFateSealed()) { - ret._setAsyncGuaranteed(); - ret._setOnCancel(holder); - } - return ret; - } - } - } - var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];}; - if (fn) args.pop(); - var ret = new PromiseArray(args).promise(); - return fn !== undefined ? ret.spread(fn) : ret; -}; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/map.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/map.js deleted file mode 100644 index 24690dc6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/map.js +++ /dev/null @@ -1,151 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = require("./util"); -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; -var EMPTY_ARRAY = []; - -function MappingPromiseArray(promises, fn, limit, _filter) { - this.constructor$(promises); - this._promise._captureStackTrace(); - var domain = getDomain(); - this._callback = domain === null ? fn : domain.bind(fn); - this._preservedValues = _filter === INTERNAL - ? new Array(this.length()) - : null; - this._limit = limit; - this._inFlight = 0; - this._queue = limit >= 1 ? [] : EMPTY_ARRAY; - this._init$(undefined, -2); -} -util.inherits(MappingPromiseArray, PromiseArray); - -MappingPromiseArray.prototype._init = function () {}; - -MappingPromiseArray.prototype._promiseFulfilled = function (value, index) { - var values = this._values; - var length = this.length(); - var preservedValues = this._preservedValues; - var limit = this._limit; - - if (index < 0) { - index = (index * -1) - 1; - values[index] = value; - if (limit >= 1) { - this._inFlight--; - this._drainQueue(); - if (this._isResolved()) return true; - } - } else { - if (limit >= 1 && this._inFlight >= limit) { - values[index] = value; - this._queue.push(index); - return false; - } - if (preservedValues !== null) preservedValues[index] = value; - - var promise = this._promise; - var callback = this._callback; - var receiver = promise._boundValue(); - promise._pushContext(); - var ret = tryCatch(callback).call(receiver, value, index, length); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - preservedValues !== null ? "Promise.filter" : "Promise.map", - promise - ); - if (ret === errorObj) { - this._reject(ret.e); - return true; - } - - var maybePromise = tryConvertToPromise(ret, this._promise); - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - var bitField = maybePromise._bitField; - ; - if (((bitField & 50397184) === 0)) { - if (limit >= 1) this._inFlight++; - values[index] = maybePromise; - maybePromise._proxy(this, (index + 1) * -1); - return false; - } else if (((bitField & 33554432) !== 0)) { - ret = maybePromise._value(); - } else if (((bitField & 16777216) !== 0)) { - this._reject(maybePromise._reason()); - return true; - } else { - this._cancel(); - return true; - } - } - values[index] = ret; - } - var totalResolved = ++this._totalResolved; - if (totalResolved >= length) { - if (preservedValues !== null) { - this._filter(values, preservedValues); - } else { - this._resolve(values); - } - return true; - } - return false; -}; - -MappingPromiseArray.prototype._drainQueue = function () { - var queue = this._queue; - var limit = this._limit; - var values = this._values; - while (queue.length > 0 && this._inFlight < limit) { - if (this._isResolved()) return; - var index = queue.pop(); - this._promiseFulfilled(values[index], index); - } -}; - -MappingPromiseArray.prototype._filter = function (booleans, values) { - var len = values.length; - var ret = new Array(len); - var j = 0; - for (var i = 0; i < len; ++i) { - if (booleans[i]) ret[j++] = values[i]; - } - ret.length = j; - this._resolve(ret); -}; - -MappingPromiseArray.prototype.preservedValues = function () { - return this._preservedValues; -}; - -function map(promises, fn, options, _filter) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var limit = typeof options === "object" && options !== null - ? options.concurrency - : 0; - limit = typeof limit === "number" && - isFinite(limit) && limit >= 1 ? limit : 0; - return new MappingPromiseArray(promises, fn, limit, _filter).promise(); -} - -Promise.prototype.map = function (fn, options) { - return map(this, fn, options, null); -}; - -Promise.map = function (promises, fn, options, _filter) { - return map(promises, fn, options, _filter); -}; - - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/method.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/method.js deleted file mode 100644 index ce9e4db7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/method.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -module.exports = -function(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) { -var util = require("./util"); -var tryCatch = util.tryCatch; - -Promise.method = function (fn) { - if (typeof fn !== "function") { - throw new Promise.TypeError("expecting a function but got " + util.classString(fn)); - } - return function () { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value = tryCatch(fn).apply(this, arguments); - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.method", ret); - ret._resolveFromSyncValue(value); - return ret; - }; -}; - -Promise.attempt = Promise["try"] = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._pushContext(); - var value; - if (arguments.length > 1) { - debug.deprecated("calling Promise.try with more than 1 argument"); - var arg = arguments[1]; - var ctx = arguments[2]; - value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg) - : tryCatch(fn).call(ctx, arg); - } else { - value = tryCatch(fn)(); - } - var promiseCreated = ret._popContext(); - debug.checkForgottenReturns( - value, promiseCreated, "Promise.try", ret); - ret._resolveFromSyncValue(value); - return ret; -}; - -Promise.prototype._resolveFromSyncValue = function (value) { - if (value === util.errorObj) { - this._rejectCallback(value.e, false); - } else { - this._resolveCallback(value, true); - } -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeback.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeback.js deleted file mode 100644 index 07b9f116..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeback.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -var util = require("./util"); -var maybeWrapAsError = util.maybeWrapAsError; -var errors = require("./errors"); -var OperationalError = errors.OperationalError; -var es5 = require("./es5"); - -function isUntypedError(obj) { - return obj instanceof Error && - es5.getPrototypeOf(obj) === Error.prototype; -} - -var rErrorKey = /^(?:name|message|stack|cause)$/; -function wrapAsOperationalError(obj) { - var ret; - if (isUntypedError(obj)) { - ret = new OperationalError(obj); - ret.name = obj.name; - ret.message = obj.message; - ret.stack = obj.stack; - var keys = es5.keys(obj); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (!rErrorKey.test(key)) { - ret[key] = obj[key]; - } - } - return ret; - } - util.markAsOriginatingFromRejection(obj); - return obj; -} - -function nodebackForPromise(promise, multiArgs) { - return function(err, value) { - if (promise === null) return; - if (err) { - var wrapped = wrapAsOperationalError(maybeWrapAsError(err)); - promise._attachExtraTrace(wrapped); - promise._reject(wrapped); - } else if (!multiArgs) { - promise._fulfill(value); - } else { - var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];}; - promise._fulfill(args); - } - promise = null; - }; -} - -module.exports = nodebackForPromise; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeify.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeify.js deleted file mode 100644 index ce2b1900..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/nodeify.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -var util = require("./util"); -var async = Promise._async; -var tryCatch = util.tryCatch; -var errorObj = util.errorObj; - -function spreadAdapter(val, nodeback) { - var promise = this; - if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback); - var ret = - tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val)); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -function successAdapter(val, nodeback) { - var promise = this; - var receiver = promise._boundValue(); - var ret = val === undefined - ? tryCatch(nodeback).call(receiver, null) - : tryCatch(nodeback).call(receiver, null, val); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} -function errorAdapter(reason, nodeback) { - var promise = this; - if (!reason) { - var newReason = new Error(reason + ""); - newReason.cause = reason; - reason = newReason; - } - var ret = tryCatch(nodeback).call(promise._boundValue(), reason); - if (ret === errorObj) { - async.throwLater(ret.e); - } -} - -Promise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback, - options) { - if (typeof nodeback == "function") { - var adapter = successAdapter; - if (options !== undefined && Object(options).spread) { - adapter = spreadAdapter; - } - this._then( - adapter, - errorAdapter, - undefined, - this, - nodeback - ); - } - return this; -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise.js deleted file mode 100644 index 9fe8f54c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise.js +++ /dev/null @@ -1,755 +0,0 @@ -"use strict"; -module.exports = function() { -var makeSelfResolutionError = function () { - return new TypeError("circular promise resolution chain\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -var reflectHandler = function() { - return new Promise.PromiseInspection(this._target()); -}; -var apiRejection = function(msg) { - return Promise.reject(new TypeError(msg)); -}; -function Proxyable() {} -var UNDEFINED_BINDING = {}; -var util = require("./util"); - -var getDomain; -if (util.isNode) { - getDomain = function() { - var ret = process.domain; - if (ret === undefined) ret = null; - return ret; - }; -} else { - getDomain = function() { - return null; - }; -} -util.notEnumerableProp(Promise, "_getDomain", getDomain); - -var es5 = require("./es5"); -var Async = require("./async"); -var async = new Async(); -es5.defineProperty(Promise, "_async", {value: async}); -var errors = require("./errors"); -var TypeError = Promise.TypeError = errors.TypeError; -Promise.RangeError = errors.RangeError; -var CancellationError = Promise.CancellationError = errors.CancellationError; -Promise.TimeoutError = errors.TimeoutError; -Promise.OperationalError = errors.OperationalError; -Promise.RejectionError = errors.OperationalError; -Promise.AggregateError = errors.AggregateError; -var INTERNAL = function(){}; -var APPLY = {}; -var NEXT_FILTER = {}; -var tryConvertToPromise = require("./thenables")(Promise, INTERNAL); -var PromiseArray = - require("./promise_array")(Promise, INTERNAL, - tryConvertToPromise, apiRejection, Proxyable); -var Context = require("./context")(Promise); - /*jshint unused:false*/ -var createContext = Context.create; -var debug = require("./debuggability")(Promise, Context); -var CapturedTrace = debug.CapturedTrace; -var finallyHandler = require("./finally")(Promise, tryConvertToPromise); -var catchFilter = require("./catch_filter")(NEXT_FILTER); -var nodebackForPromise = require("./nodeback"); -var errorObj = util.errorObj; -var tryCatch = util.tryCatch; -function check(self, executor) { - if (typeof executor !== "function") { - throw new TypeError("expecting a function but got " + util.classString(executor)); - } - if (self.constructor !== Promise) { - throw new TypeError("the promise constructor cannot be invoked directly\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } -} - -function Promise(executor) { - this._bitField = 0; - this._fulfillmentHandler0 = undefined; - this._rejectionHandler0 = undefined; - this._promise0 = undefined; - this._receiver0 = undefined; - if (executor !== INTERNAL) { - check(this, executor); - this._resolveFromExecutor(executor); - } - this._promiseCreated(); -} - -Promise.prototype.toString = function () { - return "[object Promise]"; -}; - -Promise.prototype.caught = Promise.prototype["catch"] = function (fn) { - var len = arguments.length; - if (len > 1) { - var catchInstances = new Array(len - 1), - j = 0, i; - for (i = 0; i < len - 1; ++i) { - var item = arguments[i]; - if (util.isObject(item)) { - catchInstances[j++] = item; - } else { - return apiRejection("expecting an object but got " + util.classString(item)); - } - } - catchInstances.length = j; - fn = arguments[i]; - return this.then(undefined, catchFilter(catchInstances, fn, this)); - } - return this.then(undefined, fn); -}; - -Promise.prototype.reflect = function () { - return this._then(reflectHandler, - reflectHandler, undefined, this, undefined); -}; - -Promise.prototype.then = function (didFulfill, didReject) { - if (debug.warnings() && arguments.length > 0 && - typeof didFulfill !== "function" && - typeof didReject !== "function") { - var msg = ".then() only accepts functions but was passed: " + - util.classString(didFulfill); - if (arguments.length > 1) { - msg += ", " + util.classString(didReject); - } - this._warn(msg); - } - return this._then(didFulfill, didReject, undefined, undefined, undefined); -}; - -Promise.prototype.done = function (didFulfill, didReject) { - var promise = - this._then(didFulfill, didReject, undefined, undefined, undefined); - promise._setIsFinal(); -}; - -Promise.prototype.spread = function (fn) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - return this.all()._then(fn, undefined, undefined, APPLY, undefined); -}; - -Promise.prototype.toJSON = function () { - var ret = { - isFulfilled: false, - isRejected: false, - fulfillmentValue: undefined, - rejectionReason: undefined - }; - if (this.isFulfilled()) { - ret.fulfillmentValue = this.value(); - ret.isFulfilled = true; - } else if (this.isRejected()) { - ret.rejectionReason = this.reason(); - ret.isRejected = true; - } - return ret; -}; - -Promise.prototype.all = function () { - if (arguments.length > 0) { - this._warn(".all() was passed arguments but it does not take any"); - } - return new PromiseArray(this).promise(); -}; - -Promise.prototype.error = function (fn) { - return this.caught(util.originatesFromRejection, fn); -}; - -Promise.is = function (val) { - return val instanceof Promise; -}; - -Promise.fromNode = Promise.fromCallback = function(fn) { - var ret = new Promise(INTERNAL); - var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs - : false; - var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs)); - if (result === errorObj) { - ret._rejectCallback(result.e, true); - } - if (!ret._isFateSealed()) ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.all = function (promises) { - return new PromiseArray(promises).promise(); -}; - -Promise.cast = function (obj) { - var ret = tryConvertToPromise(obj); - if (!(ret instanceof Promise)) { - ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._setFulfilled(); - ret._rejectionHandler0 = obj; - } - return ret; -}; - -Promise.resolve = Promise.fulfilled = Promise.cast; - -Promise.reject = Promise.rejected = function (reason) { - var ret = new Promise(INTERNAL); - ret._captureStackTrace(); - ret._rejectCallback(reason, true); - return ret; -}; - -Promise.setScheduler = function(fn) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - var prev = async._schedule; - async._schedule = fn; - return prev; -}; - -Promise.prototype._then = function ( - didFulfill, - didReject, - _, receiver, - internalData -) { - var haveInternalData = internalData !== undefined; - var promise = haveInternalData ? internalData : new Promise(INTERNAL); - var target = this._target(); - var bitField = target._bitField; - - if (!haveInternalData) { - promise._propagateFrom(this, 3); - promise._captureStackTrace(); - if (receiver === undefined && - ((this._bitField & 2097152) !== 0)) { - if (!((bitField & 50397184) === 0)) { - receiver = this._boundValue(); - } else { - receiver = target === this ? undefined : this._boundTo; - } - } - } - - var domain = getDomain(); - if (!((bitField & 50397184) === 0)) { - var handler, value, settler = target._settlePromiseCtx; - if (((bitField & 33554432) !== 0)) { - value = target._rejectionHandler0; - handler = didFulfill; - } else if (((bitField & 16777216) !== 0)) { - value = target._fulfillmentHandler0; - handler = didReject; - target._unsetRejectionIsUnhandled(); - } else { - settler = target._settlePromiseLateCancellationObserver; - value = new CancellationError("late cancellation observer"); - target._attachExtraTrace(value); - handler = didReject; - } - - async.invoke(settler, target, { - handler: domain === null ? handler - : (typeof handler === "function" && domain.bind(handler)), - promise: promise, - receiver: receiver, - value: value - }); - } else { - target._addCallbacks(didFulfill, didReject, promise, receiver, domain); - } - - return promise; -}; - -Promise.prototype._length = function () { - return this._bitField & 65535; -}; - -Promise.prototype._isFateSealed = function () { - return (this._bitField & 117506048) !== 0; -}; - -Promise.prototype._isFollowing = function () { - return (this._bitField & 67108864) === 67108864; -}; - -Promise.prototype._setLength = function (len) { - this._bitField = (this._bitField & -65536) | - (len & 65535); -}; - -Promise.prototype._setFulfilled = function () { - this._bitField = this._bitField | 33554432; -}; - -Promise.prototype._setRejected = function () { - this._bitField = this._bitField | 16777216; -}; - -Promise.prototype._setFollowing = function () { - this._bitField = this._bitField | 67108864; -}; - -Promise.prototype._setIsFinal = function () { - this._bitField = this._bitField | 4194304; -}; - -Promise.prototype._isFinal = function () { - return (this._bitField & 4194304) > 0; -}; - -Promise.prototype._unsetCancelled = function() { - this._bitField = this._bitField & (~65536); -}; - -Promise.prototype._setCancelled = function() { - this._bitField = this._bitField | 65536; -}; - -Promise.prototype._setAsyncGuaranteed = function() { - this._bitField = this._bitField | 134217728; -}; - -Promise.prototype._receiverAt = function (index) { - var ret = index === 0 ? this._receiver0 : this[ - index * 4 - 4 + 3]; - if (ret === UNDEFINED_BINDING) { - return undefined; - } else if (ret === undefined && this._isBound()) { - return this._boundValue(); - } - return ret; -}; - -Promise.prototype._promiseAt = function (index) { - return this[ - index * 4 - 4 + 2]; -}; - -Promise.prototype._fulfillmentHandlerAt = function (index) { - return this[ - index * 4 - 4 + 0]; -}; - -Promise.prototype._rejectionHandlerAt = function (index) { - return this[ - index * 4 - 4 + 1]; -}; - -Promise.prototype._boundValue = function() {}; - -Promise.prototype._migrateCallback0 = function (follower) { - var bitField = follower._bitField; - var fulfill = follower._fulfillmentHandler0; - var reject = follower._rejectionHandler0; - var promise = follower._promise0; - var receiver = follower._receiverAt(0); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._migrateCallbackAt = function (follower, index) { - var fulfill = follower._fulfillmentHandlerAt(index); - var reject = follower._rejectionHandlerAt(index); - var promise = follower._promiseAt(index); - var receiver = follower._receiverAt(index); - if (receiver === undefined) receiver = UNDEFINED_BINDING; - this._addCallbacks(fulfill, reject, promise, receiver, null); -}; - -Promise.prototype._addCallbacks = function ( - fulfill, - reject, - promise, - receiver, - domain -) { - var index = this._length(); - - if (index >= 65535 - 4) { - index = 0; - this._setLength(0); - } - - if (index === 0) { - this._promise0 = promise; - this._receiver0 = receiver; - if (typeof fulfill === "function") { - this._fulfillmentHandler0 = - domain === null ? fulfill : domain.bind(fulfill); - } - if (typeof reject === "function") { - this._rejectionHandler0 = - domain === null ? reject : domain.bind(reject); - } - } else { - var base = index * 4 - 4; - this[base + 2] = promise; - this[base + 3] = receiver; - if (typeof fulfill === "function") { - this[base + 0] = - domain === null ? fulfill : domain.bind(fulfill); - } - if (typeof reject === "function") { - this[base + 1] = - domain === null ? reject : domain.bind(reject); - } - } - this._setLength(index + 1); - return index; -}; - -Promise.prototype._proxy = function (proxyable, arg) { - this._addCallbacks(undefined, undefined, arg, proxyable, null); -}; - -Promise.prototype._resolveCallback = function(value, shouldBind) { - if (((this._bitField & 117506048) !== 0)) return; - if (value === this) - return this._rejectCallback(makeSelfResolutionError(), false); - var maybePromise = tryConvertToPromise(value, this); - if (!(maybePromise instanceof Promise)) return this._fulfill(value); - - if (shouldBind) this._propagateFrom(maybePromise, 2); - - var promise = maybePromise._target(); - var bitField = promise._bitField; - if (((bitField & 50397184) === 0)) { - var len = this._length(); - if (len > 0) promise._migrateCallback0(this); - for (var i = 1; i < len; ++i) { - promise._migrateCallbackAt(this, i); - } - this._setFollowing(); - this._setLength(0); - this._setFollowee(promise); - } else if (((bitField & 33554432) !== 0)) { - this._fulfill(promise._value()); - } else if (((bitField & 16777216) !== 0)) { - this._reject(promise._reason()); - } else { - var reason = new CancellationError("late cancellation observer"); - promise._attachExtraTrace(reason); - this._reject(reason); - } -}; - -Promise.prototype._rejectCallback = -function(reason, synchronous, ignoreNonErrorWarnings) { - var trace = util.ensureErrorObject(reason); - var hasStack = trace === reason; - if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) { - var message = "a promise was rejected with a non-error: " + - util.classString(reason); - this._warn(message, true); - } - this._attachExtraTrace(trace, synchronous ? hasStack : false); - this._reject(reason); -}; - -Promise.prototype._resolveFromExecutor = function (executor) { - var promise = this; - this._captureStackTrace(); - this._pushContext(); - var synchronous = true; - var r = this._execute(executor, function(value) { - promise._resolveCallback(value); - }, function (reason) { - promise._rejectCallback(reason, synchronous); - }); - synchronous = false; - this._popContext(); - - if (r !== undefined) { - promise._rejectCallback(r, true); - } -}; - -Promise.prototype._settlePromiseFromHandler = function ( - handler, receiver, value, promise -) { - var bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - promise._pushContext(); - var x; - if (receiver === APPLY) { - if (!value || typeof value.length !== "number") { - x = errorObj; - x.e = new TypeError("cannot .spread() a non-array: " + - util.classString(value)); - } else { - x = tryCatch(handler).apply(this._boundValue(), value); - } - } else { - x = tryCatch(handler).call(receiver, value); - } - var promiseCreated = promise._popContext(); - bitField = promise._bitField; - if (((bitField & 65536) !== 0)) return; - - if (x === NEXT_FILTER) { - promise._reject(value); - } else if (x === errorObj || x === promise) { - var err = x === promise ? makeSelfResolutionError() : x.e; - promise._rejectCallback(err, false); - } else { - debug.checkForgottenReturns(x, promiseCreated, "", promise); - promise._resolveCallback(x); - } -}; - -Promise.prototype._target = function() { - var ret = this; - while (ret._isFollowing()) ret = ret._followee(); - return ret; -}; - -Promise.prototype._followee = function() { - return this._rejectionHandler0; -}; - -Promise.prototype._setFollowee = function(promise) { - this._rejectionHandler0 = promise; -}; - -Promise.prototype._settlePromise = function(promise, handler, receiver, value) { - var isPromise = promise instanceof Promise; - var bitField = this._bitField; - var asyncGuaranteed = ((bitField & 134217728) !== 0); - if (((bitField & 65536) !== 0)) { - if (isPromise) promise._invokeInternalOnCancel(); - - if (handler === finallyHandler) { - receiver.cancelPromise = promise; - if (tryCatch(handler).call(receiver, value) === errorObj) { - promise._reject(errorObj.e); - } - } else if (handler === reflectHandler) { - promise._fulfill(reflectHandler.call(receiver)); - } else if (receiver instanceof Proxyable) { - receiver._promiseCancelled(promise); - } else if (isPromise || promise instanceof PromiseArray) { - promise._cancel(); - } else { - receiver.cancel(); - } - } else if (typeof handler === "function") { - if (!isPromise) { - handler.call(receiver, value, promise); - } else { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (receiver instanceof Proxyable) { - if (!receiver._isResolved()) { - if (((bitField & 33554432) !== 0)) { - receiver._promiseFulfilled(value, promise); - } else { - receiver._promiseRejected(value, promise); - } - } - } else if (isPromise) { - if (asyncGuaranteed) promise._setAsyncGuaranteed(); - if (((bitField & 33554432) !== 0)) { - promise._fulfill(value); - } else { - promise._reject(value); - } - } -}; - -Promise.prototype._settlePromiseLateCancellationObserver = function(ctx) { - var handler = ctx.handler; - var promise = ctx.promise; - var receiver = ctx.receiver; - var value = ctx.value; - if (typeof handler === "function") { - if (!(promise instanceof Promise)) { - handler.call(receiver, value, promise); - } else { - this._settlePromiseFromHandler(handler, receiver, value, promise); - } - } else if (promise instanceof Promise) { - promise._reject(value); - } -}; - -Promise.prototype._settlePromiseCtx = function(ctx) { - this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value); -}; - -Promise.prototype._settlePromise0 = function(handler, value, bitField) { - var promise = this._promise0; - var receiver = this._receiverAt(0); - this._promise0 = undefined; - this._receiver0 = undefined; - this._settlePromise(promise, handler, receiver, value); -}; - -Promise.prototype._clearCallbackDataAtIndex = function(index) { - var base = index * 4 - 4; - this[base + 2] = - this[base + 3] = - this[base + 0] = - this[base + 1] = undefined; -}; - -Promise.prototype._fulfill = function (value) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - if (value === this) { - var err = makeSelfResolutionError(); - this._attachExtraTrace(err); - return this._reject(err); - } - this._setFulfilled(); - this._rejectionHandler0 = value; - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } -}; - -Promise.prototype._reject = function (reason) { - var bitField = this._bitField; - if (((bitField & 117506048) >>> 16)) return; - this._setRejected(); - this._fulfillmentHandler0 = reason; - - if (this._isFinal()) { - return async.fatalError(reason, util.isNode); - } - - if ((bitField & 65535) > 0) { - if (((bitField & 134217728) !== 0)) { - this._settlePromises(); - } else { - async.settlePromises(this); - } - } else { - this._ensurePossibleRejectionHandled(); - } -}; - -Promise.prototype._fulfillPromises = function (len, value) { - for (var i = 1; i < len; i++) { - var handler = this._fulfillmentHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, value); - } -}; - -Promise.prototype._rejectPromises = function (len, reason) { - for (var i = 1; i < len; i++) { - var handler = this._rejectionHandlerAt(i); - var promise = this._promiseAt(i); - var receiver = this._receiverAt(i); - this._clearCallbackDataAtIndex(i); - this._settlePromise(promise, handler, receiver, reason); - } -}; - -Promise.prototype._settlePromises = function () { - var bitField = this._bitField; - var len = (bitField & 65535); - - if (len > 0) { - if (((bitField & 16842752) !== 0)) { - var reason = this._fulfillmentHandler0; - this._settlePromise0(this._rejectionHandler0, reason, bitField); - this._rejectPromises(len, reason); - } else { - var value = this._rejectionHandler0; - this._settlePromise0(this._fulfillmentHandler0, value, bitField); - this._fulfillPromises(len, value); - } - this._setLength(0); - } - this._clearCancellationData(); -}; - -Promise.prototype._settledValue = function() { - var bitField = this._bitField; - if (((bitField & 33554432) !== 0)) { - return this._rejectionHandler0; - } else if (((bitField & 16777216) !== 0)) { - return this._fulfillmentHandler0; - } -}; - -function deferResolve(v) {this.promise._resolveCallback(v);} -function deferReject(v) {this.promise._rejectCallback(v, false);} - -Promise.defer = Promise.pending = function() { - debug.deprecated("Promise.defer", "new Promise"); - var promise = new Promise(INTERNAL); - return { - promise: promise, - resolve: deferResolve, - reject: deferReject - }; -}; - -util.notEnumerableProp(Promise, - "_makeSelfResolutionError", - makeSelfResolutionError); - -require("./method")(Promise, INTERNAL, tryConvertToPromise, apiRejection, - debug); -require("./bind")(Promise, INTERNAL, tryConvertToPromise, debug); -require("./cancel")(Promise, PromiseArray, apiRejection, debug); -require("./direct_resolve")(Promise); -require("./synchronous_inspection")(Promise); -require("./join")( - Promise, PromiseArray, tryConvertToPromise, INTERNAL, debug); -Promise.Promise = Promise; -require('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug); -require('./timers.js')(Promise, INTERNAL); -require('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug); -require('./nodeify.js')(Promise); -require('./call_get.js')(Promise); -require('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection); -require('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection); -require('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug); -require('./settle.js')(Promise, PromiseArray, debug); -require('./some.js')(Promise, PromiseArray, apiRejection); -require('./promisify.js')(Promise, INTERNAL); -require('./any.js')(Promise); -require('./each.js')(Promise, INTERNAL); -require('./filter.js')(Promise, INTERNAL); - - util.toFastProperties(Promise); - util.toFastProperties(Promise.prototype); - function fillTypes(value) { - var p = new Promise(INTERNAL); - p._fulfillmentHandler0 = value; - p._rejectionHandler0 = value; - p._promise0 = value; - p._receiver0 = value; - } - // Complete slack tracking, opt out of field-type tracking and - // stabilize map - fillTypes({a: 1}); - fillTypes({b: 2}); - fillTypes({c: 3}); - fillTypes(1); - fillTypes(function(){}); - fillTypes(undefined); - fillTypes(false); - fillTypes(new Promise(INTERNAL)); - debug.setBounds(Async.firstLineError, util.lastLineError); - return Promise; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise_array.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise_array.js deleted file mode 100644 index 64007233..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promise_array.js +++ /dev/null @@ -1,184 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL, tryConvertToPromise, - apiRejection, Proxyable) { -var util = require("./util"); -var isArray = util.isArray; - -function toResolutionValue(val) { - switch(val) { - case -2: return []; - case -3: return {}; - } -} - -function PromiseArray(values) { - var promise = this._promise = new Promise(INTERNAL); - if (values instanceof Promise) { - promise._propagateFrom(values, 3); - } - promise._setOnCancel(this); - this._values = values; - this._length = 0; - this._totalResolved = 0; - this._init(undefined, -2); -} -util.inherits(PromiseArray, Proxyable); - -PromiseArray.prototype.length = function () { - return this._length; -}; - -PromiseArray.prototype.promise = function () { - return this._promise; -}; - -PromiseArray.prototype._init = function init(_, resolveValueIfEmpty) { - var values = tryConvertToPromise(this._values, this._promise); - if (values instanceof Promise) { - values = values._target(); - var bitField = values._bitField; - ; - this._values = values; - - if (((bitField & 50397184) === 0)) { - this._promise._setAsyncGuaranteed(); - return values._then( - init, - this._reject, - undefined, - this, - resolveValueIfEmpty - ); - } else if (((bitField & 33554432) !== 0)) { - values = values._value(); - } else if (((bitField & 16777216) !== 0)) { - return this._reject(values._reason()); - } else { - return this._cancel(); - } - } - values = util.asArray(values); - if (values === null) { - var err = apiRejection( - "expecting an array or an iterable object but got " + util.classString(values)).reason(); - this._promise._rejectCallback(err, false); - return; - } - - if (values.length === 0) { - if (resolveValueIfEmpty === -5) { - this._resolveEmptyArray(); - } - else { - this._resolve(toResolutionValue(resolveValueIfEmpty)); - } - return; - } - this._iterate(values); -}; - -PromiseArray.prototype._iterate = function(values) { - var len = this.getActualLength(values.length); - this._length = len; - this._values = this.shouldCopyValues() ? new Array(len) : this._values; - var result = this._promise; - var isResolved = false; - var bitField = null; - for (var i = 0; i < len; ++i) { - var maybePromise = tryConvertToPromise(values[i], result); - - if (maybePromise instanceof Promise) { - maybePromise = maybePromise._target(); - bitField = maybePromise._bitField; - } else { - bitField = null; - } - - if (isResolved) { - if (bitField !== null) { - maybePromise.suppressUnhandledRejections(); - } - } else if (bitField !== null) { - if (((bitField & 50397184) === 0)) { - maybePromise._proxy(this, i); - this._values[i] = maybePromise; - } else if (((bitField & 33554432) !== 0)) { - isResolved = this._promiseFulfilled(maybePromise._value(), i); - } else if (((bitField & 16777216) !== 0)) { - isResolved = this._promiseRejected(maybePromise._reason(), i); - } else { - isResolved = this._promiseCancelled(i); - } - } else { - isResolved = this._promiseFulfilled(maybePromise, i); - } - } - if (!isResolved) result._setAsyncGuaranteed(); -}; - -PromiseArray.prototype._isResolved = function () { - return this._values === null; -}; - -PromiseArray.prototype._resolve = function (value) { - this._values = null; - this._promise._fulfill(value); -}; - -PromiseArray.prototype._cancel = function() { - if (this._isResolved() || !this._promise.isCancellable()) return; - this._values = null; - this._promise._cancel(); -}; - -PromiseArray.prototype._reject = function (reason) { - this._values = null; - this._promise._rejectCallback(reason, false); -}; - -PromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -PromiseArray.prototype._promiseCancelled = function() { - this._cancel(); - return true; -}; - -PromiseArray.prototype._promiseRejected = function (reason) { - this._totalResolved++; - this._reject(reason); - return true; -}; - -PromiseArray.prototype._resultCancelled = function() { - if (this._isResolved()) return; - var values = this._values; - this._cancel(); - if (values instanceof Promise) { - values.cancel(); - } else { - for (var i = 0; i < values.length; ++i) { - if (values[i] instanceof Promise) { - values[i].cancel(); - } - } - } -}; - -PromiseArray.prototype.shouldCopyValues = function () { - return true; -}; - -PromiseArray.prototype.getActualLength = function (len) { - return len; -}; - -return PromiseArray; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promisify.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promisify.js deleted file mode 100644 index aa98e5bd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/promisify.js +++ /dev/null @@ -1,314 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var THIS = {}; -var util = require("./util"); -var nodebackForPromise = require("./nodeback"); -var withAppended = util.withAppended; -var maybeWrapAsError = util.maybeWrapAsError; -var canEvaluate = util.canEvaluate; -var TypeError = require("./errors").TypeError; -var defaultSuffix = "Async"; -var defaultPromisified = {__isPromisified__: true}; -var noCopyProps = [ - "arity", "length", - "name", - "arguments", - "caller", - "callee", - "prototype", - "__isPromisified__" -]; -var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); - -var defaultFilter = function(name) { - return util.isIdentifier(name) && - name.charAt(0) !== "_" && - name !== "constructor"; -}; - -function propsFilter(key) { - return !noCopyPropsPattern.test(key); -} - -function isPromisified(fn) { - try { - return fn.__isPromisified__ === true; - } - catch (e) { - return false; - } -} - -function hasPromisified(obj, key, suffix) { - var val = util.getDataPropertyOrDefault(obj, key + suffix, - defaultPromisified); - return val ? isPromisified(val) : false; -} -function checkValid(ret, suffix, suffixRegexp) { - for (var i = 0; i < ret.length; i += 2) { - var key = ret[i]; - if (suffixRegexp.test(key)) { - var keyWithoutAsyncSuffix = key.replace(suffixRegexp, ""); - for (var j = 0; j < ret.length; j += 2) { - if (ret[j] === keyWithoutAsyncSuffix) { - throw new TypeError("Cannot promisify an API that has normal methods with '%s'-suffix\u000a\u000a See http://goo.gl/MqrFmX\u000a" - .replace("%s", suffix)); - } - } - } - } -} - -function promisifiableMethods(obj, suffix, suffixRegexp, filter) { - var keys = util.inheritedDataKeys(obj); - var ret = []; - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - var value = obj[key]; - var passesDefaultFilter = filter === defaultFilter - ? true : defaultFilter(key, value, obj); - if (typeof value === "function" && - !isPromisified(value) && - !hasPromisified(obj, key, suffix) && - filter(key, value, obj, passesDefaultFilter)) { - ret.push(key, value); - } - } - checkValid(ret, suffix, suffixRegexp); - return ret; -} - -var escapeIdentRegex = function(str) { - return str.replace(/([$])/, "\\$"); -}; - -var makeNodePromisifiedEval; -if (!false) { -var switchCaseArgumentOrder = function(likelyArgumentCount) { - var ret = [likelyArgumentCount]; - var min = Math.max(0, likelyArgumentCount - 1 - 3); - for(var i = likelyArgumentCount - 1; i >= min; --i) { - ret.push(i); - } - for(var i = likelyArgumentCount + 1; i <= 3; ++i) { - ret.push(i); - } - return ret; -}; - -var argumentSequence = function(argumentCount) { - return util.filledRange(argumentCount, "_arg", ""); -}; - -var parameterDeclaration = function(parameterCount) { - return util.filledRange( - Math.max(parameterCount, 3), "_arg", ""); -}; - -var parameterCount = function(fn) { - if (typeof fn.length === "number") { - return Math.max(Math.min(fn.length, 1023 + 1), 0); - } - return 0; -}; - -makeNodePromisifiedEval = -function(callback, receiver, originalName, fn, _, multiArgs) { - var newParameterCount = Math.max(0, parameterCount(fn) - 1); - var argumentOrder = switchCaseArgumentOrder(newParameterCount); - var shouldProxyThis = typeof callback === "string" || receiver === THIS; - - function generateCallForArgumentCount(count) { - var args = argumentSequence(count).join(", "); - var comma = count > 0 ? ", " : ""; - var ret; - if (shouldProxyThis) { - ret = "ret = callback.call(this, {{args}}, nodeback); break;\n"; - } else { - ret = receiver === undefined - ? "ret = callback({{args}}, nodeback); break;\n" - : "ret = callback.call(receiver, {{args}}, nodeback); break;\n"; - } - return ret.replace("{{args}}", args).replace(", ", comma); - } - - function generateArgumentSwitchCase() { - var ret = ""; - for (var i = 0; i < argumentOrder.length; ++i) { - ret += "case " + argumentOrder[i] +":" + - generateCallForArgumentCount(argumentOrder[i]); - } - - ret += " \n\ - default: \n\ - var args = new Array(len + 1); \n\ - var i = 0; \n\ - for (var i = 0; i < len; ++i) { \n\ - args[i] = arguments[i]; \n\ - } \n\ - args[i] = nodeback; \n\ - [CodeForCall] \n\ - break; \n\ - ".replace("[CodeForCall]", (shouldProxyThis - ? "ret = callback.apply(this, args);\n" - : "ret = callback.apply(receiver, args);\n")); - return ret; - } - - var getFunctionCode = typeof callback === "string" - ? ("this != null ? this['"+callback+"'] : fn") - : "fn"; - var body = "'use strict'; \n\ - var ret = function (Parameters) { \n\ - 'use strict'; \n\ - var len = arguments.length; \n\ - var promise = new Promise(INTERNAL); \n\ - promise._captureStackTrace(); \n\ - var nodeback = nodebackForPromise(promise, " + multiArgs + "); \n\ - var ret; \n\ - var callback = tryCatch([GetFunctionCode]); \n\ - switch(len) { \n\ - [CodeForSwitchCase] \n\ - } \n\ - if (ret === errorObj) { \n\ - promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\n\ - } \n\ - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \n\ - return promise; \n\ - }; \n\ - notEnumerableProp(ret, '__isPromisified__', true); \n\ - return ret; \n\ - ".replace("[CodeForSwitchCase]", generateArgumentSwitchCase()) - .replace("[GetFunctionCode]", getFunctionCode); - body = body.replace("Parameters", parameterDeclaration(newParameterCount)); - return new Function("Promise", - "fn", - "receiver", - "withAppended", - "maybeWrapAsError", - "nodebackForPromise", - "tryCatch", - "errorObj", - "notEnumerableProp", - "INTERNAL", - body)( - Promise, - fn, - receiver, - withAppended, - maybeWrapAsError, - nodebackForPromise, - util.tryCatch, - util.errorObj, - util.notEnumerableProp, - INTERNAL); -}; -} - -function makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) { - var defaultThis = (function() {return this;})(); - var method = callback; - if (typeof method === "string") { - callback = fn; - } - function promisified() { - var _receiver = receiver; - if (receiver === THIS) _receiver = this; - var promise = new Promise(INTERNAL); - promise._captureStackTrace(); - var cb = typeof method === "string" && this !== defaultThis - ? this[method] : callback; - var fn = nodebackForPromise(promise, multiArgs); - try { - cb.apply(_receiver, withAppended(arguments, fn)); - } catch(e) { - promise._rejectCallback(maybeWrapAsError(e), true, true); - } - if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); - return promise; - } - util.notEnumerableProp(promisified, "__isPromisified__", true); - return promisified; -} - -var makeNodePromisified = canEvaluate - ? makeNodePromisifiedEval - : makeNodePromisifiedClosure; - -function promisifyAll(obj, suffix, filter, promisifier, multiArgs) { - var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + "$"); - var methods = - promisifiableMethods(obj, suffix, suffixRegexp, filter); - - for (var i = 0, len = methods.length; i < len; i+= 2) { - var key = methods[i]; - var fn = methods[i+1]; - var promisifiedKey = key + suffix; - if (promisifier === makeNodePromisified) { - obj[promisifiedKey] = - makeNodePromisified(key, THIS, key, fn, suffix, multiArgs); - } else { - var promisified = promisifier(fn, function() { - return makeNodePromisified(key, THIS, key, - fn, suffix, multiArgs); - }); - util.notEnumerableProp(promisified, "__isPromisified__", true); - obj[promisifiedKey] = promisified; - } - } - util.toFastProperties(obj); - return obj; -} - -function promisify(callback, receiver, multiArgs) { - return makeNodePromisified(callback, receiver, undefined, - callback, null, multiArgs); -} - -Promise.promisify = function (fn, options) { - if (typeof fn !== "function") { - throw new TypeError("expecting a function but got " + util.classString(fn)); - } - if (isPromisified(fn)) { - return fn; - } - options = Object(options); - var receiver = options.context === undefined ? THIS : options.context; - var multiArgs = !!options.multiArgs; - var ret = promisify(fn, receiver, multiArgs); - util.copyDescriptors(fn, ret, propsFilter); - return ret; -}; - -Promise.promisifyAll = function (target, options) { - if (typeof target !== "function" && typeof target !== "object") { - throw new TypeError("the target of promisifyAll must be an object or a function\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - options = Object(options); - var multiArgs = !!options.multiArgs; - var suffix = options.suffix; - if (typeof suffix !== "string") suffix = defaultSuffix; - var filter = options.filter; - if (typeof filter !== "function") filter = defaultFilter; - var promisifier = options.promisifier; - if (typeof promisifier !== "function") promisifier = makeNodePromisified; - - if (!util.isIdentifier(suffix)) { - throw new RangeError("suffix must be a valid identifier\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - - var keys = util.inheritedDataKeys(target); - for (var i = 0; i < keys.length; ++i) { - var value = target[keys[i]]; - if (keys[i] !== "constructor" && - util.isClass(value)) { - promisifyAll(value.prototype, suffix, filter, promisifier, - multiArgs); - promisifyAll(value, suffix, filter, promisifier, multiArgs); - } - } - - return promisifyAll(target, suffix, filter, promisifier, multiArgs); -}; -}; - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/props.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/props.js deleted file mode 100644 index fc981ce4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/props.js +++ /dev/null @@ -1,118 +0,0 @@ -"use strict"; -module.exports = function( - Promise, PromiseArray, tryConvertToPromise, apiRejection) { -var util = require("./util"); -var isObject = util.isObject; -var es5 = require("./es5"); -var Es6Map; -if (typeof Map === "function") Es6Map = Map; - -var mapToEntries = (function() { - var index = 0; - var size = 0; - - function extractEntry(value, key) { - this[index] = value; - this[index + size] = key; - index++; - } - - return function mapToEntries(map) { - size = map.size; - index = 0; - var ret = new Array(map.size * 2); - map.forEach(extractEntry, ret); - return ret; - }; -})(); - -var entriesToMap = function(entries) { - var ret = new Es6Map(); - var length = entries.length / 2 | 0; - for (var i = 0; i < length; ++i) { - var key = entries[length + i]; - var value = entries[i]; - ret.set(key, value); - } - return ret; -}; - -function PropertiesPromiseArray(obj) { - var isMap = false; - var entries; - if (Es6Map !== undefined && obj instanceof Es6Map) { - entries = mapToEntries(obj); - isMap = true; - } else { - var keys = es5.keys(obj); - var len = keys.length; - entries = new Array(len * 2); - for (var i = 0; i < len; ++i) { - var key = keys[i]; - entries[i] = obj[key]; - entries[i + len] = key; - } - } - this.constructor$(entries); - this._isMap = isMap; - this._init$(undefined, -3); -} -util.inherits(PropertiesPromiseArray, PromiseArray); - -PropertiesPromiseArray.prototype._init = function () {}; - -PropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) { - this._values[index] = value; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - var val; - if (this._isMap) { - val = entriesToMap(this._values); - } else { - val = {}; - var keyOffset = this.length(); - for (var i = 0, len = this.length(); i < len; ++i) { - val[this._values[i + keyOffset]] = this._values[i]; - } - } - this._resolve(val); - return true; - } - return false; -}; - -PropertiesPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -PropertiesPromiseArray.prototype.getActualLength = function (len) { - return len >> 1; -}; - -function props(promises) { - var ret; - var castValue = tryConvertToPromise(promises); - - if (!isObject(castValue)) { - return apiRejection("cannot await properties of a non-object\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } else if (castValue instanceof Promise) { - ret = castValue._then( - Promise.props, undefined, undefined, undefined, undefined); - } else { - ret = new PropertiesPromiseArray(castValue).promise(); - } - - if (castValue instanceof Promise) { - ret._propagateFrom(castValue, 2); - } - return ret; -} - -Promise.prototype.props = function () { - return props(this); -}; - -Promise.props = function (promises) { - return props(promises); -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/queue.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/queue.js deleted file mode 100644 index 84d57d5f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/queue.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; -function arrayMove(src, srcIndex, dst, dstIndex, len) { - for (var j = 0; j < len; ++j) { - dst[j + dstIndex] = src[j + srcIndex]; - src[j + srcIndex] = void 0; - } -} - -function Queue(capacity) { - this._capacity = capacity; - this._length = 0; - this._front = 0; -} - -Queue.prototype._willBeOverCapacity = function (size) { - return this._capacity < size; -}; - -Queue.prototype._pushOne = function (arg) { - var length = this.length(); - this._checkCapacity(length + 1); - var i = (this._front + length) & (this._capacity - 1); - this[i] = arg; - this._length = length + 1; -}; - -Queue.prototype._unshiftOne = function(value) { - var capacity = this._capacity; - this._checkCapacity(this.length() + 1); - var front = this._front; - var i = (((( front - 1 ) & - ( capacity - 1) ) ^ capacity ) - capacity ); - this[i] = value; - this._front = i; - this._length = this.length() + 1; -}; - -Queue.prototype.unshift = function(fn, receiver, arg) { - this._unshiftOne(arg); - this._unshiftOne(receiver); - this._unshiftOne(fn); -}; - -Queue.prototype.push = function (fn, receiver, arg) { - var length = this.length() + 3; - if (this._willBeOverCapacity(length)) { - this._pushOne(fn); - this._pushOne(receiver); - this._pushOne(arg); - return; - } - var j = this._front + length - 3; - this._checkCapacity(length); - var wrapMask = this._capacity - 1; - this[(j + 0) & wrapMask] = fn; - this[(j + 1) & wrapMask] = receiver; - this[(j + 2) & wrapMask] = arg; - this._length = length; -}; - -Queue.prototype.shift = function () { - var front = this._front, - ret = this[front]; - - this[front] = undefined; - this._front = (front + 1) & (this._capacity - 1); - this._length--; - return ret; -}; - -Queue.prototype.length = function () { - return this._length; -}; - -Queue.prototype._checkCapacity = function (size) { - if (this._capacity < size) { - this._resizeTo(this._capacity << 1); - } -}; - -Queue.prototype._resizeTo = function (capacity) { - var oldCapacity = this._capacity; - this._capacity = capacity; - var front = this._front; - var length = this._length; - var moveItemsCount = (front + length) & (oldCapacity - 1); - arrayMove(this, 0, this, oldCapacity, moveItemsCount); -}; - -module.exports = Queue; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/race.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/race.js deleted file mode 100644 index b862f46d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/race.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -module.exports = function( - Promise, INTERNAL, tryConvertToPromise, apiRejection) { -var util = require("./util"); - -var raceLater = function (promise) { - return promise.then(function(array) { - return race(array, promise); - }); -}; - -function race(promises, parent) { - var maybePromise = tryConvertToPromise(promises); - - if (maybePromise instanceof Promise) { - return raceLater(maybePromise); - } else { - promises = util.asArray(promises); - if (promises === null) - return apiRejection("expecting an array or an iterable object but got " + util.classString(promises)); - } - - var ret = new Promise(INTERNAL); - if (parent !== undefined) { - ret._propagateFrom(parent, 3); - } - var fulfill = ret._fulfill; - var reject = ret._reject; - for (var i = 0, len = promises.length; i < len; ++i) { - var val = promises[i]; - - if (val === undefined && !(i in promises)) { - continue; - } - - Promise.cast(val)._then(fulfill, reject, undefined, ret, null); - } - return ret; -} - -Promise.race = function (promises) { - return race(promises, undefined); -}; - -Promise.prototype.race = function () { - return race(this, undefined); -}; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/reduce.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/reduce.js deleted file mode 100644 index 8f73500d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/reduce.js +++ /dev/null @@ -1,162 +0,0 @@ -"use strict"; -module.exports = function(Promise, - PromiseArray, - apiRejection, - tryConvertToPromise, - INTERNAL, - debug) { -var getDomain = Promise._getDomain; -var util = require("./util"); -var tryCatch = util.tryCatch; - -function ReductionPromiseArray(promises, fn, initialValue, _each) { - this.constructor$(promises); - var domain = getDomain(); - this._fn = domain === null ? fn : domain.bind(fn); - if (initialValue !== undefined) { - initialValue = Promise.resolve(initialValue); - initialValue._attachCancellationCallback(this); - } - this._initialValue = initialValue; - this._currentCancellable = null; - this._eachValues = _each === INTERNAL ? [] : undefined; - this._promise._captureStackTrace(); - this._init$(undefined, -5); -} -util.inherits(ReductionPromiseArray, PromiseArray); - -ReductionPromiseArray.prototype._gotAccum = function(accum) { - if (this._eachValues !== undefined && accum !== INTERNAL) { - this._eachValues.push(accum); - } -}; - -ReductionPromiseArray.prototype._eachComplete = function(value) { - this._eachValues.push(value); - return this._eachValues; -}; - -ReductionPromiseArray.prototype._init = function() {}; - -ReductionPromiseArray.prototype._resolveEmptyArray = function() { - this._resolve(this._eachValues !== undefined ? this._eachValues - : this._initialValue); -}; - -ReductionPromiseArray.prototype.shouldCopyValues = function () { - return false; -}; - -ReductionPromiseArray.prototype._resolve = function(value) { - this._promise._resolveCallback(value); - this._values = null; -}; - -ReductionPromiseArray.prototype._resultCancelled = function(sender) { - if (sender === this._initialValue) return this._cancel(); - if (this._isResolved()) return; - this._resultCancelled$(); - if (this._currentCancellable instanceof Promise) { - this._currentCancellable.cancel(); - } - if (this._initialValue instanceof Promise) { - this._initialValue.cancel(); - } -}; - -ReductionPromiseArray.prototype._iterate = function (values) { - this._values = values; - var value; - var i; - var length = values.length; - if (this._initialValue !== undefined) { - value = this._initialValue; - i = 0; - } else { - value = Promise.resolve(values[0]); - i = 1; - } - - this._currentCancellable = value; - - if (!value.isRejected()) { - for (; i < length; ++i) { - var ctx = { - accum: null, - value: values[i], - index: i, - length: length, - array: this - }; - value = value._then(gotAccum, undefined, undefined, ctx, undefined); - } - } - - if (this._eachValues !== undefined) { - value = value - ._then(this._eachComplete, undefined, undefined, this, undefined); - } - value._then(completed, completed, undefined, value, this); -}; - -Promise.prototype.reduce = function (fn, initialValue) { - return reduce(this, fn, initialValue, null); -}; - -Promise.reduce = function (promises, fn, initialValue, _each) { - return reduce(promises, fn, initialValue, _each); -}; - -function completed(valueOrReason, array) { - if (this.isFulfilled()) { - array._resolve(valueOrReason); - } else { - array._reject(valueOrReason); - } -} - -function reduce(promises, fn, initialValue, _each) { - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var array = new ReductionPromiseArray(promises, fn, initialValue, _each); - return array.promise(); -} - -function gotAccum(accum) { - this.accum = accum; - this.array._gotAccum(accum); - var value = tryConvertToPromise(this.value, this.array._promise); - if (value instanceof Promise) { - this.array._currentCancellable = value; - return value._then(gotValue, undefined, undefined, this, undefined); - } else { - return gotValue.call(this, value); - } -} - -function gotValue(value) { - var array = this.array; - var promise = array._promise; - var fn = tryCatch(array._fn); - promise._pushContext(); - var ret; - if (array._eachValues !== undefined) { - ret = fn.call(promise._boundValue(), value, this.index, this.length); - } else { - ret = fn.call(promise._boundValue(), - this.accum, value, this.index, this.length); - } - if (ret instanceof Promise) { - array._currentCancellable = ret; - } - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, - promiseCreated, - array._eachValues !== undefined ? "Promise.each" : "Promise.reduce", - promise - ); - return ret; -} -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/schedule.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/schedule.js deleted file mode 100644 index 0e3e0f5e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/schedule.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; -var util = require("./util"); -var schedule; -var noAsyncScheduler = function() { - throw new Error("No async scheduler available\u000a\u000a See http://goo.gl/MqrFmX\u000a"); -}; -if (util.isNode && typeof MutationObserver === "undefined") { - var GlobalSetImmediate = global.setImmediate; - var ProcessNextTick = process.nextTick; - schedule = util.isRecentNode - ? function(fn) { GlobalSetImmediate.call(global, fn); } - : function(fn) { ProcessNextTick.call(process, fn); }; -} else if ((typeof MutationObserver !== "undefined") && - !(typeof window !== "undefined" && - window.navigator && - window.navigator.standalone)) { - schedule = function(fn) { - var div = document.createElement("div"); - var observer = new MutationObserver(fn); - observer.observe(div, {attributes: true}); - return function() { div.classList.toggle("foo"); }; - }; - schedule.isStatic = true; -} else if (typeof setImmediate !== "undefined") { - schedule = function (fn) { - setImmediate(fn); - }; -} else if (typeof setTimeout !== "undefined") { - schedule = function (fn) { - setTimeout(fn, 0); - }; -} else { - schedule = noAsyncScheduler; -} -module.exports = schedule; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/settle.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/settle.js deleted file mode 100644 index fade3a17..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/settle.js +++ /dev/null @@ -1,43 +0,0 @@ -"use strict"; -module.exports = - function(Promise, PromiseArray, debug) { -var PromiseInspection = Promise.PromiseInspection; -var util = require("./util"); - -function SettledPromiseArray(values) { - this.constructor$(values); -} -util.inherits(SettledPromiseArray, PromiseArray); - -SettledPromiseArray.prototype._promiseResolved = function (index, inspection) { - this._values[index] = inspection; - var totalResolved = ++this._totalResolved; - if (totalResolved >= this._length) { - this._resolve(this._values); - return true; - } - return false; -}; - -SettledPromiseArray.prototype._promiseFulfilled = function (value, index) { - var ret = new PromiseInspection(); - ret._bitField = 33554432; - ret._settledValueField = value; - return this._promiseResolved(index, ret); -}; -SettledPromiseArray.prototype._promiseRejected = function (reason, index) { - var ret = new PromiseInspection(); - ret._bitField = 16777216; - ret._settledValueField = reason; - return this._promiseResolved(index, ret); -}; - -Promise.settle = function (promises) { - debug.deprecated(".settle()", ".reflect()"); - return new SettledPromiseArray(promises).promise(); -}; - -Promise.prototype.settle = function () { - return Promise.settle(this); -}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/some.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/some.js deleted file mode 100644 index 400d8520..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/some.js +++ /dev/null @@ -1,148 +0,0 @@ -"use strict"; -module.exports = -function(Promise, PromiseArray, apiRejection) { -var util = require("./util"); -var RangeError = require("./errors").RangeError; -var AggregateError = require("./errors").AggregateError; -var isArray = util.isArray; -var CANCELLATION = {}; - - -function SomePromiseArray(values) { - this.constructor$(values); - this._howMany = 0; - this._unwrap = false; - this._initialized = false; -} -util.inherits(SomePromiseArray, PromiseArray); - -SomePromiseArray.prototype._init = function () { - if (!this._initialized) { - return; - } - if (this._howMany === 0) { - this._resolve([]); - return; - } - this._init$(undefined, -5); - var isArrayResolved = isArray(this._values); - if (!this._isResolved() && - isArrayResolved && - this._howMany > this._canPossiblyFulfill()) { - this._reject(this._getRangeError(this.length())); - } -}; - -SomePromiseArray.prototype.init = function () { - this._initialized = true; - this._init(); -}; - -SomePromiseArray.prototype.setUnwrap = function () { - this._unwrap = true; -}; - -SomePromiseArray.prototype.howMany = function () { - return this._howMany; -}; - -SomePromiseArray.prototype.setHowMany = function (count) { - this._howMany = count; -}; - -SomePromiseArray.prototype._promiseFulfilled = function (value) { - this._addFulfilled(value); - if (this._fulfilled() === this.howMany()) { - this._values.length = this.howMany(); - if (this.howMany() === 1 && this._unwrap) { - this._resolve(this._values[0]); - } else { - this._resolve(this._values); - } - return true; - } - return false; - -}; -SomePromiseArray.prototype._promiseRejected = function (reason) { - this._addRejected(reason); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._promiseCancelled = function () { - if (this._values instanceof Promise || this._values == null) { - return this._cancel(); - } - this._addRejected(CANCELLATION); - return this._checkOutcome(); -}; - -SomePromiseArray.prototype._checkOutcome = function() { - if (this.howMany() > this._canPossiblyFulfill()) { - var e = new AggregateError(); - for (var i = this.length(); i < this._values.length; ++i) { - if (this._values[i] !== CANCELLATION) { - e.push(this._values[i]); - } - } - if (e.length > 0) { - this._reject(e); - } else { - this._cancel(); - } - return true; - } - return false; -}; - -SomePromiseArray.prototype._fulfilled = function () { - return this._totalResolved; -}; - -SomePromiseArray.prototype._rejected = function () { - return this._values.length - this.length(); -}; - -SomePromiseArray.prototype._addRejected = function (reason) { - this._values.push(reason); -}; - -SomePromiseArray.prototype._addFulfilled = function (value) { - this._values[this._totalResolved++] = value; -}; - -SomePromiseArray.prototype._canPossiblyFulfill = function () { - return this.length() - this._rejected(); -}; - -SomePromiseArray.prototype._getRangeError = function (count) { - var message = "Input array must contain at least " + - this._howMany + " items but contains only " + count + " items"; - return new RangeError(message); -}; - -SomePromiseArray.prototype._resolveEmptyArray = function () { - this._reject(this._getRangeError(0)); -}; - -function some(promises, howMany) { - if ((howMany | 0) !== howMany || howMany < 0) { - return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - var ret = new SomePromiseArray(promises); - var promise = ret.promise(); - ret.setHowMany(howMany); - ret.init(); - return promise; -} - -Promise.some = function (promises, howMany) { - return some(promises, howMany); -}; - -Promise.prototype.some = function (howMany) { - return some(this, howMany); -}; - -Promise._SomePromiseArray = SomePromiseArray; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/synchronous_inspection.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/synchronous_inspection.js deleted file mode 100644 index fb0c1a62..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/synchronous_inspection.js +++ /dev/null @@ -1,96 +0,0 @@ -"use strict"; -module.exports = function(Promise) { -function PromiseInspection(promise) { - if (promise !== undefined) { - promise = promise._target(); - this._bitField = promise._bitField; - this._settledValueField = promise._isFateSealed() - ? promise._settledValue() : undefined; - } - else { - this._bitField = 0; - this._settledValueField = undefined; - } -} - -PromiseInspection.prototype._settledValue = function() { - return this._settledValueField; -}; - -var value = PromiseInspection.prototype.value = function () { - if (!this.isFulfilled()) { - throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var reason = PromiseInspection.prototype.error = -PromiseInspection.prototype.reason = function () { - if (!this.isRejected()) { - throw new TypeError("cannot get rejection reason of a non-rejected promise\u000a\u000a See http://goo.gl/MqrFmX\u000a"); - } - return this._settledValue(); -}; - -var isFulfilled = PromiseInspection.prototype.isFulfilled = function() { - return (this._bitField & 33554432) !== 0; -}; - -var isRejected = PromiseInspection.prototype.isRejected = function () { - return (this._bitField & 16777216) !== 0; -}; - -var isPending = PromiseInspection.prototype.isPending = function () { - return (this._bitField & 50397184) === 0; -}; - -var isResolved = PromiseInspection.prototype.isResolved = function () { - return (this._bitField & 50331648) !== 0; -}; - -PromiseInspection.prototype.isCancelled = -Promise.prototype._isCancelled = function() { - return (this._bitField & 65536) === 65536; -}; - -Promise.prototype.isCancelled = function() { - return this._target()._isCancelled(); -}; - -Promise.prototype.isPending = function() { - return isPending.call(this._target()); -}; - -Promise.prototype.isRejected = function() { - return isRejected.call(this._target()); -}; - -Promise.prototype.isFulfilled = function() { - return isFulfilled.call(this._target()); -}; - -Promise.prototype.isResolved = function() { - return isResolved.call(this._target()); -}; - -Promise.prototype.value = function() { - return value.call(this._target()); -}; - -Promise.prototype.reason = function() { - var target = this._target(); - target._unsetRejectionIsUnhandled(); - return reason.call(target); -}; - -Promise.prototype._value = function() { - return this._settledValue(); -}; - -Promise.prototype._reason = function() { - this._unsetRejectionIsUnhandled(); - return this._settledValue(); -}; - -Promise.PromiseInspection = PromiseInspection; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/thenables.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/thenables.js deleted file mode 100644 index a04fddea..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/thenables.js +++ /dev/null @@ -1,82 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = require("./util"); -var errorObj = util.errorObj; -var isObject = util.isObject; - -function tryConvertToPromise(obj, context) { - if (isObject(obj)) { - if (obj instanceof Promise) return obj; - var then = getThen(obj); - if (then === errorObj) { - if (context) context._pushContext(); - var ret = Promise.reject(then.e); - if (context) context._popContext(); - return ret; - } else if (typeof then === "function") { - if (isAnyBluebirdPromise(obj)) { - var ret = new Promise(INTERNAL); - obj._then( - ret._fulfill, - ret._reject, - undefined, - ret, - null - ); - return ret; - } - return doThenable(obj, then, context); - } - } - return obj; -} - -function doGetThen(obj) { - return obj.then; -} - -function getThen(obj) { - try { - return doGetThen(obj); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} - -var hasProp = {}.hasOwnProperty; -function isAnyBluebirdPromise(obj) { - return hasProp.call(obj, "_promise0"); -} - -function doThenable(x, then, context) { - var promise = new Promise(INTERNAL); - var ret = promise; - if (context) context._pushContext(); - promise._captureStackTrace(); - if (context) context._popContext(); - var synchronous = true; - var result = util.tryCatch(then).call(x, resolve, reject); - synchronous = false; - - if (promise && result === errorObj) { - promise._rejectCallback(result.e, true, true); - promise = null; - } - - function resolve(value) { - if (!promise) return; - promise._resolveCallback(value); - promise = null; - } - - function reject(reason) { - if (!promise) return; - promise._rejectCallback(reason, synchronous, true); - promise = null; - } - return ret; -} - -return tryConvertToPromise; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/timers.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/timers.js deleted file mode 100644 index 1e56acdb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/timers.js +++ /dev/null @@ -1,66 +0,0 @@ -"use strict"; -module.exports = function(Promise, INTERNAL) { -var util = require("./util"); -var TimeoutError = Promise.TimeoutError; - -var afterTimeout = function (promise, message, parent) { - if (!promise.isPending()) return; - var err; - if (typeof message !== "string") { - if (message instanceof Error) { - err = message; - } else { - err = new TimeoutError("operation timed out"); - } - } else { - err = new TimeoutError(message); - } - util.markAsOriginatingFromRejection(err); - promise._attachExtraTrace(err); - promise._reject(err); - parent.cancel(); -}; - -var afterValue = function(value) { return delay(+this).thenReturn(value); }; -var delay = Promise.delay = function (ms, value) { - var ret; - if (value !== undefined) { - ret = Promise.resolve(value) - ._then(afterValue, null, null, ms, undefined); - } else { - ret = new Promise(INTERNAL); - setTimeout(function() { ret._fulfill(); }, +ms); - } - ret._setAsyncGuaranteed(); - return ret; -}; - -Promise.prototype.delay = function (ms) { - return delay(ms, this); -}; - -function successClear(value) { - var handle = this; - if (handle instanceof Number) handle = +handle; - clearTimeout(handle); - return value; -} - -function failureClear(reason) { - var handle = this; - if (handle instanceof Number) handle = +handle; - clearTimeout(handle); - throw reason; -} - -Promise.prototype.timeout = function (ms, message) { - ms = +ms; - var parent = this.then(); - var ret = parent.then(); - var handle = setTimeout(function timeoutTimeout() { - afterTimeout(ret, message, parent); - }, ms); - return ret._then(successClear, failureClear, undefined, handle, undefined); -}; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/using.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/using.js deleted file mode 100644 index 66167940..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/using.js +++ /dev/null @@ -1,225 +0,0 @@ -"use strict"; -module.exports = function (Promise, apiRejection, tryConvertToPromise, - createContext, INTERNAL, debug) { - var util = require("./util"); - var TypeError = require("./errors").TypeError; - var inherits = require("./util").inherits; - var errorObj = util.errorObj; - var tryCatch = util.tryCatch; - - function thrower(e) { - setTimeout(function(){throw e;}, 0); - } - - function castPreservingDisposable(thenable) { - var maybePromise = tryConvertToPromise(thenable); - if (maybePromise !== thenable && - typeof thenable._isDisposable === "function" && - typeof thenable._getDisposer === "function" && - thenable._isDisposable()) { - maybePromise._setDisposable(thenable._getDisposer()); - } - return maybePromise; - } - function dispose(resources, inspection) { - var i = 0; - var len = resources.length; - var ret = new Promise(INTERNAL); - function iterator() { - if (i >= len) return ret._fulfill(); - var maybePromise = castPreservingDisposable(resources[i++]); - if (maybePromise instanceof Promise && - maybePromise._isDisposable()) { - try { - maybePromise = tryConvertToPromise( - maybePromise._getDisposer().tryDispose(inspection), - resources.promise); - } catch (e) { - return thrower(e); - } - if (maybePromise instanceof Promise) { - return maybePromise._then(iterator, thrower, - null, null, null); - } - } - iterator(); - } - iterator(); - return ret; - } - - function Disposer(data, promise, context) { - this._data = data; - this._promise = promise; - this._context = context; - } - - Disposer.prototype.data = function () { - return this._data; - }; - - Disposer.prototype.promise = function () { - return this._promise; - }; - - Disposer.prototype.resource = function () { - if (this.promise().isFulfilled()) { - return this.promise().value(); - } - return null; - }; - - Disposer.prototype.tryDispose = function(inspection) { - var resource = this.resource(); - var context = this._context; - if (context !== undefined) context._pushContext(); - var ret = resource !== null - ? this.doDispose(resource, inspection) : null; - if (context !== undefined) context._popContext(); - this._promise._unsetDisposable(); - this._data = null; - return ret; - }; - - Disposer.isDisposer = function (d) { - return (d != null && - typeof d.resource === "function" && - typeof d.tryDispose === "function"); - }; - - function FunctionDisposer(fn, promise, context) { - this.constructor$(fn, promise, context); - } - inherits(FunctionDisposer, Disposer); - - FunctionDisposer.prototype.doDispose = function (resource, inspection) { - var fn = this.data(); - return fn.call(resource, resource, inspection); - }; - - function maybeUnwrapDisposer(value) { - if (Disposer.isDisposer(value)) { - this.resources[this.index]._setDisposable(value); - return value.promise(); - } - return value; - } - - function ResourceList(length) { - this.length = length; - this.promise = null; - this[length-1] = null; - } - - ResourceList.prototype._resultCancelled = function() { - var len = this.length; - for (var i = 0; i < len; ++i) { - var item = this[i]; - if (item instanceof Promise) { - item.cancel(); - } - } - }; - - Promise.using = function () { - var len = arguments.length; - if (len < 2) return apiRejection( - "you must pass at least 2 arguments to Promise.using"); - var fn = arguments[len - 1]; - if (typeof fn !== "function") { - return apiRejection("expecting a function but got " + util.classString(fn)); - } - var input; - var spreadArgs = true; - if (len === 2 && Array.isArray(arguments[0])) { - input = arguments[0]; - len = input.length; - spreadArgs = false; - } else { - input = arguments; - len--; - } - var resources = new ResourceList(len); - for (var i = 0; i < len; ++i) { - var resource = input[i]; - if (Disposer.isDisposer(resource)) { - var disposer = resource; - resource = resource.promise(); - resource._setDisposable(disposer); - } else { - var maybePromise = tryConvertToPromise(resource); - if (maybePromise instanceof Promise) { - resource = - maybePromise._then(maybeUnwrapDisposer, null, null, { - resources: resources, - index: i - }, undefined); - } - } - resources[i] = resource; - } - - var reflectedResources = new Array(resources.length); - for (var i = 0; i < reflectedResources.length; ++i) { - reflectedResources[i] = Promise.resolve(resources[i]).reflect(); - } - - var resultPromise = Promise.all(reflectedResources) - .then(function(inspections) { - for (var i = 0; i < inspections.length; ++i) { - var inspection = inspections[i]; - if (inspection.isRejected()) { - errorObj.e = inspection.error(); - return errorObj; - } else if (!inspection.isFulfilled()) { - resultPromise.cancel(); - return; - } - inspections[i] = inspection.value(); - } - promise._pushContext(); - - fn = tryCatch(fn); - var ret = spreadArgs - ? fn.apply(undefined, inspections) : fn(inspections); - var promiseCreated = promise._popContext(); - debug.checkForgottenReturns( - ret, promiseCreated, "Promise.using", promise); - return ret; - }); - - var promise = resultPromise.lastly(function() { - var inspection = new Promise.PromiseInspection(resultPromise); - return dispose(resources, inspection); - }); - resources.promise = promise; - promise._setOnCancel(resources); - return promise; - }; - - Promise.prototype._setDisposable = function (disposer) { - this._bitField = this._bitField | 131072; - this._disposer = disposer; - }; - - Promise.prototype._isDisposable = function () { - return (this._bitField & 131072) > 0; - }; - - Promise.prototype._getDisposer = function () { - return this._disposer; - }; - - Promise.prototype._unsetDisposable = function () { - this._bitField = this._bitField & (~131072); - this._disposer = undefined; - }; - - Promise.prototype.disposer = function (fn) { - if (typeof fn === "function") { - return new FunctionDisposer(fn, this, createContext()); - } - throw new TypeError(); - }; - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/util.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/util.js deleted file mode 100644 index 2f001c02..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/js/release/util.js +++ /dev/null @@ -1,344 +0,0 @@ -"use strict"; -var es5 = require("./es5"); -var canEvaluate = typeof navigator == "undefined"; - -var errorObj = {e: {}}; -var tryCatchTarget; -function tryCatcher() { - try { - var target = tryCatchTarget; - tryCatchTarget = null; - return target.apply(this, arguments); - } catch (e) { - errorObj.e = e; - return errorObj; - } -} -function tryCatch(fn) { - tryCatchTarget = fn; - return tryCatcher; -} - -var inherits = function(Child, Parent) { - var hasProp = {}.hasOwnProperty; - - function T() { - this.constructor = Child; - this.constructor$ = Parent; - for (var propertyName in Parent.prototype) { - if (hasProp.call(Parent.prototype, propertyName) && - propertyName.charAt(propertyName.length-1) !== "$" - ) { - this[propertyName + "$"] = Parent.prototype[propertyName]; - } - } - } - T.prototype = Parent.prototype; - Child.prototype = new T(); - return Child.prototype; -}; - - -function isPrimitive(val) { - return val == null || val === true || val === false || - typeof val === "string" || typeof val === "number"; - -} - -function isObject(value) { - return typeof value === "function" || - typeof value === "object" && value !== null; -} - -function maybeWrapAsError(maybeError) { - if (!isPrimitive(maybeError)) return maybeError; - - return new Error(safeToString(maybeError)); -} - -function withAppended(target, appendee) { - var len = target.length; - var ret = new Array(len + 1); - var i; - for (i = 0; i < len; ++i) { - ret[i] = target[i]; - } - ret[i] = appendee; - return ret; -} - -function getDataPropertyOrDefault(obj, key, defaultValue) { - if (es5.isES5) { - var desc = Object.getOwnPropertyDescriptor(obj, key); - - if (desc != null) { - return desc.get == null && desc.set == null - ? desc.value - : defaultValue; - } - } else { - return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined; - } -} - -function notEnumerableProp(obj, name, value) { - if (isPrimitive(obj)) return obj; - var descriptor = { - value: value, - configurable: true, - enumerable: false, - writable: true - }; - es5.defineProperty(obj, name, descriptor); - return obj; -} - -function thrower(r) { - throw r; -} - -var inheritedDataKeys = (function() { - var excludedPrototypes = [ - Array.prototype, - Object.prototype, - Function.prototype - ]; - - var isExcludedProto = function(val) { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (excludedPrototypes[i] === val) { - return true; - } - } - return false; - }; - - if (es5.isES5) { - var getKeys = Object.getOwnPropertyNames; - return function(obj) { - var ret = []; - var visitedKeys = Object.create(null); - while (obj != null && !isExcludedProto(obj)) { - var keys; - try { - keys = getKeys(obj); - } catch (e) { - return ret; - } - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (visitedKeys[key]) continue; - visitedKeys[key] = true; - var desc = Object.getOwnPropertyDescriptor(obj, key); - if (desc != null && desc.get == null && desc.set == null) { - ret.push(key); - } - } - obj = es5.getPrototypeOf(obj); - } - return ret; - }; - } else { - var hasProp = {}.hasOwnProperty; - return function(obj) { - if (isExcludedProto(obj)) return []; - var ret = []; - - /*jshint forin:false */ - enumeration: for (var key in obj) { - if (hasProp.call(obj, key)) { - ret.push(key); - } else { - for (var i = 0; i < excludedPrototypes.length; ++i) { - if (hasProp.call(excludedPrototypes[i], key)) { - continue enumeration; - } - } - ret.push(key); - } - } - return ret; - }; - } - -})(); - -var thisAssignmentPattern = /this\s*\.\s*\S+\s*=/; -function isClass(fn) { - try { - if (typeof fn === "function") { - var keys = es5.names(fn.prototype); - - var hasMethods = es5.isES5 && keys.length > 1; - var hasMethodsOtherThanConstructor = keys.length > 0 && - !(keys.length === 1 && keys[0] === "constructor"); - var hasThisAssignmentAndStaticMethods = - thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; - - if (hasMethods || hasMethodsOtherThanConstructor || - hasThisAssignmentAndStaticMethods) { - return true; - } - } - return false; - } catch (e) { - return false; - } -} - -function toFastProperties(obj) { - /*jshint -W027,-W055,-W031*/ - function FakeConstructor() {} - FakeConstructor.prototype = obj; - var l = 8; - while (l--) new FakeConstructor(); - return obj; - eval(obj); -} - -var rident = /^[a-z$_][a-z$_0-9]*$/i; -function isIdentifier(str) { - return rident.test(str); -} - -function filledRange(count, prefix, suffix) { - var ret = new Array(count); - for(var i = 0; i < count; ++i) { - ret[i] = prefix + i + suffix; - } - return ret; -} - -function safeToString(obj) { - try { - return obj + ""; - } catch (e) { - return "[no string representation]"; - } -} - -function markAsOriginatingFromRejection(e) { - try { - notEnumerableProp(e, "isOperational", true); - } - catch(ignore) {} -} - -function originatesFromRejection(e) { - if (e == null) return false; - return ((e instanceof Error["__BluebirdErrorTypes__"].OperationalError) || - e["isOperational"] === true); -} - -function canAttachTrace(obj) { - return obj instanceof Error && es5.propertyIsWritable(obj, "stack"); -} - -var ensureErrorObject = (function() { - if (!("stack" in new Error())) { - return function(value) { - if (canAttachTrace(value)) return value; - try {throw new Error(safeToString(value));} - catch(err) {return err;} - }; - } else { - return function(value) { - if (canAttachTrace(value)) return value; - return new Error(safeToString(value)); - }; - } -})(); - -function classString(obj) { - return {}.toString.call(obj); -} - -function copyDescriptors(from, to, filter) { - var keys = es5.names(from); - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - if (filter(key)) { - try { - es5.defineProperty(to, key, es5.getDescriptor(from, key)); - } catch (ignore) {} - } - } -} - -var asArray = function(v) { - if (es5.isArray(v)) { - return v; - } - return null; -}; - -if (typeof Symbol !== "undefined" && Symbol.iterator) { - var ArrayFrom = typeof Array.from === "function" ? function(v) { - return Array.from(v); - } : function(v) { - var ret = []; - var it = v[Symbol.iterator](); - var itResult; - while (!((itResult = it.next()).done)) { - ret.push(itResult.value); - } - return ret; - }; - - asArray = function(v) { - if (es5.isArray(v)) { - return v; - } else if (v != null && typeof v[Symbol.iterator] === "function") { - return ArrayFrom(v); - } - return null; - }; -} - -var isNode = typeof process !== "undefined" && - classString(process).toLowerCase() === "[object process]"; - -function env(key, def) { - return isNode ? process.env[key] : def; -} - -var ret = { - isClass: isClass, - isIdentifier: isIdentifier, - inheritedDataKeys: inheritedDataKeys, - getDataPropertyOrDefault: getDataPropertyOrDefault, - thrower: thrower, - isArray: es5.isArray, - asArray: asArray, - notEnumerableProp: notEnumerableProp, - isPrimitive: isPrimitive, - isObject: isObject, - canEvaluate: canEvaluate, - errorObj: errorObj, - tryCatch: tryCatch, - inherits: inherits, - withAppended: withAppended, - maybeWrapAsError: maybeWrapAsError, - toFastProperties: toFastProperties, - filledRange: filledRange, - toString: safeToString, - canAttachTrace: canAttachTrace, - ensureErrorObject: ensureErrorObject, - originatesFromRejection: originatesFromRejection, - markAsOriginatingFromRejection: markAsOriginatingFromRejection, - classString: classString, - copyDescriptors: copyDescriptors, - hasDevTools: typeof chrome !== "undefined" && chrome && - typeof chrome.loadTimes === "function", - isNode: isNode, - env: env -}; -ret.isRecentNode = ret.isNode && (function() { - var version = process.versions.node.split(".").map(Number); - return (version[0] === 0 && version[1] > 10) || (version[0] > 0); -})(); - -if (ret.isNode) ret.toFastProperties(process); - -try {throw new Error(); } catch (e) {ret.lastLineError = e;} -module.exports = ret; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/package.json deleted file mode 100644 index 9d4aab0a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/bluebird/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "bluebird", - "description": "Full featured Promises/A+ implementation with exceptionally good performance", - "version": "3.0.6", - "keywords": [ - "promise", - "performance", - "promises", - "promises-a", - "promises-aplus", - "async", - "await", - "deferred", - "deferreds", - "future", - "flow control", - "dsl", - "fluent interface" - ], - "scripts": { - "lint": "node scripts/jshint.js", - "test": "node tools/test.js", - "istanbul": "istanbul", - "prepublish": "node tools/build.js --no-debug --release --browser --minify", - "generate-browser-core": "node tools/build.js --features=core --no-debug --release --zalgo --browser --minify && mv js/browser/bluebird.js js/browser/bluebird.core.js && mv js/browser/bluebird.min.js js/browser/bluebird.core.min.js" - }, - "homepage": "https://github.com/petkaantonov/bluebird", - "repository": { - "type": "git", - "url": "git://github.com/petkaantonov/bluebird.git" - }, - "bugs": { - "url": "http://github.com/petkaantonov/bluebird/issues" - }, - "license": "MIT", - "author": { - "name": "Petka Antonov", - "email": "petka_antonov@hotmail.com", - "url": "http://github.com/petkaantonov/" - }, - "devDependencies": { - "acorn": "~0.6.0", - "baconjs": "^0.7.43", - "bluebird": "^2.9.2", - "body-parser": "^1.10.2", - "browserify": "^8.1.1", - "cli-table": "~0.3.1", - "co": "^4.2.0", - "cross-spawn": "^0.2.3", - "glob": "^4.3.2", - "grunt-saucelabs": "~8.4.1", - "highland": "^2.3.0", - "istanbul": "^0.3.5", - "jshint": "^2.6.0", - "jshint-stylish": "~0.2.0", - "mkdirp": "~0.5.0", - "mocha": "~2.1", - "open": "~0.0.5", - "optimist": "~0.6.1", - "rimraf": "~2.2.6", - "rx": "^2.3.25", - "serve-static": "^1.7.1", - "sinon": "~1.7.3", - "uglify-js": "~2.4.16", - "kefir": "^2.4.1" - }, - "main": "./js/release/bluebird.js", - "browser": "./js/browser/bluebird.js", - "files": [ - "js/browser", - "js/release", - "LICENSE" - ], - "gitHead": "37393eae4b6c8a48d16b357768e624ce2b347cac", - "_id": "bluebird@3.0.6", - "_shasum": "f2488f325782f66d174842f481992e2faba56f38", - "_from": "bluebird@*", - "_npmVersion": "2.11.1", - "_nodeVersion": "2.3.0", - "_npmUser": { - "name": "esailija", - "email": "petka_antonov@hotmail.com" - }, - "maintainers": [ - { - "name": "esailija", - "email": "petka_antonov@hotmail.com" - } - ], - "dist": { - "shasum": "f2488f325782f66d174842f481992e2faba56f38", - "tarball": "http://registry.npmjs.org/bluebird/-/bluebird-3.0.6.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.0.6.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/README.md deleted file mode 100644 index f54ddaba..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/README.md +++ /dev/null @@ -1,16 +0,0 @@ -!nstant-markdown-d -================ -instant-markdown-d is a small Node.js server that enables instant compilation and previewing of Markup files. A plugin can easily be written for any text editor to interface with it. One currently exists for VIm: https://github.com/suan/vim-instant-markdown - -Installation ------------- -- `[sudo] npm -g install instant-markdown-d` - -REST API --------- -| Action | HTTP Method | Request URL | Request Body | -|---------------------|-------------|---------------------------|--------------------| -| Refresh Markdown on page | PUT | http://localhost:\ | \ | -| Close Webpage | DELETE | http://localhost:\ | | - -By default, `` is 8090 diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-markdown.css b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-markdown.css deleted file mode 100644 index 328bea95..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-markdown.css +++ /dev/null @@ -1,758 +0,0 @@ -@font-face { - font-family: octicons-anchor; - src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff'); -} - -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100% -} - -body { - min-width: 1020px; - font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; - /* color: #333; */ - background-color: #fff; -} - -table { - border-collapse: collapse; - border-spacing: 0 -} - -td,th { - padding: 0 -} - -* { - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.container { - width: 980px; - margin-right: auto; - margin-left: auto -} - -.container:before { - display: table; - content: "" -} - -.container:after { - display: table; - clear: both; - content: "" -} - -.boxed-group { - position: relative; - border-radius: 3px; - margin-bottom: 30px -} - -#readme .markdown-body, #readme .plain { - background-color: #fff; - border: 1px solid #ddd; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; - padding: 30px; - word-wrap: break-word; -} - -#readme .plain pre { - font-size: 15px; - white-space: pre-wrap -} - -.repository-with-sidebar:before { - display: table; - content: "" -} - -.repository-with-sidebar:after { - display: table; - clear: both; - content: "" -} - -.repository-with-sidebar .repository-sidebar { - float: right; - width: 38px -} - -.repository-with-sidebar .repository-sidebar .sidebar-button { - width: 100%; - margin: 0 0 10px; - text-align: center -} - -.repository-with-sidebar .repository-sidebar h3 { - margin-bottom: 5px; - font-size: 11px; - font-weight: normal; - color: #999 -} - -.repository-with-sidebar .repository-sidebar .clone-url { - display: none; - margin-top: -5px -} - -.repository-with-sidebar .repository-sidebar .clone-url.open { - display: block -} - -.repository-with-sidebar .repository-sidebar .clone-options { - margin: 8px 0 15px; - font-size: 11px; - color: #666 -} - -.repository-with-sidebar .repository-sidebar .clone-options .octicon-question { - position: relative; - bottom: 1px; - font-size: 11px; - color: #000; - cursor: pointer -} - -.repository-with-sidebar .repository-content { - /* float: left; */ - width: 920px; -} - -.repository-with-sidebar.with-full-navigation .repository-content { - width: 790px; -} - -.repository-with-sidebar.with-full-navigation .repository-sidebar { - width: 170px -} - -.repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped:before, .repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped:after { - display: none -} - -.markdown-body { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; - color: #333; - overflow: hidden; - font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif; - font-size: 16px; - line-height: 1.6; - word-wrap: break-word; -} - -.markdown-body a { - background: transparent; -} - -.markdown-body a:active, -.markdown-body a:hover { - outline: 0; -} - -.markdown-body strong { - font-weight: bold; -} - -.markdown-body h1 { - font-size: 2em; - margin: 0.67em 0; -} - -.markdown-body img { - border: 0; -} - -.markdown-body hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -.markdown-body pre { - overflow: auto; -} - -.markdown-body code, -.markdown-body kbd, -.markdown-body pre { - font-family: monospace, monospace; - font-size: 1em; -} - -.markdown-body input { - color: inherit; - font: inherit; - margin: 0; -} - -.markdown-body html input[disabled] { - cursor: default; -} - -.markdown-body input { - line-height: normal; -} - -.markdown-body input[type="checkbox"] { - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} - -.markdown-body table { - border-collapse: collapse; - border-spacing: 0; -} - -.markdown-body td, -.markdown-body th { - padding: 0; -} - -.markdown-body * { - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.markdown-body input { - font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; -} - -.markdown-body a { - color: #4183c4; - text-decoration: none; -} - -.markdown-body a:hover, -.markdown-body a:focus, -.markdown-body a:active { - text-decoration: underline; -} - -.markdown-body hr { - height: 0; - margin: 15px 0; - overflow: hidden; - background: transparent; - border: 0; - border-bottom: 1px solid #ddd; -} - -.markdown-body hr:before { - display: table; - content: ""; -} - -.markdown-body hr:after { - display: table; - clear: both; - content: ""; -} - -.markdown-body h1, -.markdown-body h2, -.markdown-body h3, -.markdown-body h4, -.markdown-body h5, -.markdown-body h6 { - margin-top: 15px; - margin-bottom: 15px; - line-height: 1.1; -} - -.markdown-body h1 { - font-size: 30px; -} - -.markdown-body h2 { - font-size: 21px; -} - -.markdown-body h3 { - font-size: 16px; -} - -.markdown-body h4 { - font-size: 14px; -} - -.markdown-body h5 { - font-size: 12px; -} - -.markdown-body h6 { - font-size: 11px; -} - -.markdown-body blockquote { - margin: 0; -} - -.markdown-body ul, -.markdown-body ol { - padding: 0; - margin-top: 0; - margin-bottom: 0; -} - -.markdown-body ol ol, -.markdown-body ul ol { - list-style-type: lower-roman; -} - -.markdown-body ul ul ol, -.markdown-body ul ol ol, -.markdown-body ol ul ol, -.markdown-body ol ol ol { - list-style-type: lower-alpha; -} - -.markdown-body dd { - margin-left: 0; -} - -.markdown-body code { - font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; -} - -.markdown-body pre { - margin-top: 0; - margin-bottom: 0; - font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; -} - -.markdown-body .octicon { - font: normal normal 16px octicons-anchor; - line-height: 1; - display: inline-block; - text-decoration: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.markdown-body .octicon-link:before { - content: '\f05c'; -} - -.markdown-body>*:first-child { - margin-top: 0 !important; -} - -.markdown-body>*:last-child { - margin-bottom: 0 !important; -} - -.markdown-body .anchor { - position: absolute; - top: 0; - bottom: 0; - left: 0; - display: block; - padding-right: 6px; - padding-left: 30px; - margin-left: -30px; -} - -.markdown-body .anchor:focus { - outline: none; -} - -.markdown-body h1, -.markdown-body h2, -.markdown-body h3, -.markdown-body h4, -.markdown-body h5, -.markdown-body h6 { - position: relative; - margin-top: 1em; - margin-bottom: 16px; - font-weight: bold; - line-height: 1.4; -} - -.markdown-body h1 .octicon-link, -.markdown-body h2 .octicon-link, -.markdown-body h3 .octicon-link, -.markdown-body h4 .octicon-link, -.markdown-body h5 .octicon-link, -.markdown-body h6 .octicon-link { - display: none; - color: #000; - vertical-align: middle; -} - -.markdown-body h1:hover .anchor, -.markdown-body h2:hover .anchor, -.markdown-body h3:hover .anchor, -.markdown-body h4:hover .anchor, -.markdown-body h5:hover .anchor, -.markdown-body h6:hover .anchor { - padding-left: 8px; - margin-left: -30px; - line-height: 1; - text-decoration: none; -} - -.markdown-body h1:hover .anchor .octicon-link, -.markdown-body h2:hover .anchor .octicon-link, -.markdown-body h3:hover .anchor .octicon-link, -.markdown-body h4:hover .anchor .octicon-link, -.markdown-body h5:hover .anchor .octicon-link, -.markdown-body h6:hover .anchor .octicon-link { - display: inline-block; -} - -.markdown-body h1 { - padding-bottom: 0.3em; - font-size: 2.25em; - line-height: 1.2; - border-bottom: 1px solid #eee; -} - -.markdown-body h2 { - padding-bottom: 0.3em; - font-size: 1.75em; - line-height: 1.225; - border-bottom: 1px solid #eee; -} - -.markdown-body h3 { - font-size: 1.5em; - line-height: 1.43; -} - -.markdown-body h4 { - font-size: 1.25em; -} - -.markdown-body h5 { - font-size: 1em; -} - -.markdown-body h6 { - font-size: 1em; - color: #777; -} - -.markdown-body p, -.markdown-body blockquote, -.markdown-body ul, -.markdown-body ol, -.markdown-body dl, -.markdown-body table, -.markdown-body pre { - margin-top: 0; - margin-bottom: 16px; -} - -.markdown-body hr { - height: 4px; - padding: 0; - margin: 16px 0; - background-color: #e7e7e7; - border: 0 none; -} - -.markdown-body ul, -.markdown-body ol { - padding-left: 2em; -} - -.markdown-body ul ul, -.markdown-body ul ol, -.markdown-body ol ol, -.markdown-body ol ul { - margin-top: 0; - margin-bottom: 0; -} - -.markdown-body li>p { - margin-top: 16px; -} - -.markdown-body dl { - padding: 0; -} - -.markdown-body dl dt { - padding: 0; - margin-top: 16px; - font-size: 1em; - font-style: italic; - font-weight: bold; -} - -.markdown-body dl dd { - padding: 0 16px; - margin-bottom: 16px; -} - -.markdown-body blockquote { - padding: 0 15px; - color: #777; - border-left: 4px solid #ddd; -} - -.markdown-body blockquote>:first-child { - margin-top: 0; -} - -.markdown-body blockquote>:last-child { - margin-bottom: 0; -} - -.markdown-body table { - display: block; - width: 100%; - overflow: auto; - word-break: normal; - word-break: keep-all; -} - -.markdown-body table th { - font-weight: bold; -} - -.markdown-body table th, -.markdown-body table td { - padding: 6px 13px; - border: 1px solid #ddd; -} - -.markdown-body table tr { - background-color: #fff; - border-top: 1px solid #ccc; -} - -.markdown-body table tr:nth-child(2n) { - background-color: #f8f8f8; -} - -.markdown-body img { - max-width: 100%; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.markdown-body code { - padding: 0; - padding-top: 0.2em; - padding-bottom: 0.2em; - margin: 0; - font-size: 85%; - background-color: rgba(0,0,0,0.04); - border-radius: 3px; -} - -.markdown-body code:before, -.markdown-body code:after { - letter-spacing: -0.2em; - content: "\00a0"; -} - -.markdown-body pre>code { - padding: 0; - margin: 0; - font-size: 100%; - word-break: normal; - white-space: pre; - background: transparent; - border: 0; -} - -.markdown-body .highlight { - margin-bottom: 16px; -} - -.markdown-body .highlight pre, -.markdown-body pre { - padding: 16px; - overflow: auto; - font-size: 85%; - line-height: 1.45; - background-color: #f7f7f7; - border-radius: 3px; -} - -.markdown-body .highlight pre { - margin-bottom: 0; - word-break: normal; -} - -.markdown-body pre { - word-wrap: normal; -} - -.markdown-body pre code { - display: inline; - max-width: initial; - padding: 0; - margin: 0; - overflow: initial; - line-height: inherit; - word-wrap: normal; - background-color: transparent; - border: 0; -} - -.markdown-body pre code:before, -.markdown-body pre code:after { - content: normal; -} - -.markdown-body .pl-c { - color: #969896; -} - -.markdown-body .pl-c1, -.markdown-body .pl-mdh, -.markdown-body .pl-mm, -.markdown-body .pl-mp, -.markdown-body .pl-mr, -.markdown-body .pl-s1 .pl-v, -.markdown-body .pl-s3, -.markdown-body .pl-sc, -.markdown-body .pl-sv { - color: #0086b3; -} - -.markdown-body .pl-e, -.markdown-body .pl-en { - color: #795da3; -} - -.markdown-body .pl-s1 .pl-s2, -.markdown-body .pl-smi, -.markdown-body .pl-smp, -.markdown-body .pl-stj, -.markdown-body .pl-vo, -.markdown-body .pl-vpf { - color: #333; -} - -.markdown-body .pl-ent { - color: #63a35c; -} - -.markdown-body .pl-k, -.markdown-body .pl-s, -.markdown-body .pl-st { - color: #a71d5d; -} - -.markdown-body .pl-pds, -.markdown-body .pl-s1, -.markdown-body .pl-s1 .pl-pse .pl-s2, -.markdown-body .pl-sr, -.markdown-body .pl-sr .pl-cce, -.markdown-body .pl-sr .pl-sra, -.markdown-body .pl-sr .pl-sre, -.markdown-body .pl-src, -.markdown-body .pl-v { - color: #df5000; -} - -.markdown-body .pl-id { - color: #b52a1d; -} - -.markdown-body .pl-ii { - background-color: #b52a1d; - color: #f8f8f8; -} - -.markdown-body .pl-sr .pl-cce { - color: #63a35c; - font-weight: bold; -} - -.markdown-body .pl-ml { - color: #693a17; -} - -.markdown-body .pl-mh, -.markdown-body .pl-mh .pl-en, -.markdown-body .pl-ms { - color: #1d3e81; - font-weight: bold; -} - -.markdown-body .pl-mq { - color: #008080; -} - -.markdown-body .pl-mi { - color: #333; - font-style: italic; -} - -.markdown-body .pl-mb { - color: #333; - font-weight: bold; -} - -.markdown-body .pl-md, -.markdown-body .pl-mdhf { - background-color: #ffecec; - color: #bd2c00; -} - -.markdown-body .pl-mdht, -.markdown-body .pl-mi1 { - background-color: #eaffea; - color: #55a532; -} - -.markdown-body .pl-mdr { - color: #795da3; - font-weight: bold; -} - -.markdown-body .pl-mo { - color: #1d3e81; -} - -.markdown-body kbd { - background-color: #e7e7e7; - background-image: -webkit-linear-gradient(#fefefe, #e7e7e7); - background-image: linear-gradient(#fefefe, #e7e7e7); - background-repeat: repeat-x; - display: inline-block; - padding: 3px 5px; - font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; - line-height: 10px; - color: #000; - border: 1px solid #cfcfcf; - border-radius: 2px; -} - -.markdown-body .task-list-item { - list-style-type: none; -} - -.markdown-body .task-list-item+.task-list-item { - margin-top: 3px; -} - -.markdown-body .task-list-item input { - float: left; - margin: 0.3em 0 0.25em -1.6em; - vertical-align: middle; -} - -.markdown-body :checked+.radio-label { - z-index: 1; - position: relative; - border-color: #4183c4; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-syntax-highlight.css b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-syntax-highlight.css deleted file mode 100644 index 7cc0e7a2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/github-syntax-highlight.css +++ /dev/null @@ -1,121 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #333; - background: #f8f8f8; - -webkit-text-size-adjust: none; -} - -.hljs-comment, -.diff .hljs-header, -.hljs-javadoc { - color: #998; - font-style: italic; -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.nginx .hljs-title, -.hljs-subst, -.hljs-request, -.hljs-status { - color: #a71d5d; -} - -.hljs-number, -.hljs-hexcolor, -.ruby .hljs-constant { - color: #0086b3; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.hljs-dartdoc, -.tex .hljs-formula { - color: #df5000; -} - -.hljs-title, -.hljs-id, -.scss .hljs-preprocessor { - color: #900; -} - -.hljs-list .hljs-keyword, -.hljs-subst { - font-weight: normal; -} - -.hljs-class .hljs-title, -.hljs-type, -.vhdl .hljs-literal, -.tex .hljs-command { - color: #795da3; -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal; -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body { - color: #008080; -} - -.hljs-regexp { - color: #009926; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.lisp .hljs-keyword, -.clojure .hljs-keyword, -.scheme .hljs-keyword, -.tex .hljs-special, -.hljs-prompt { - color: #990073; -} - -.hljs-built_in { - color: #795da3; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold; -} - -.hljs-deletion { - background: #fdd; -} - -.hljs-addition { - background: #dfd; -} - -.diff .hljs-change { - background: #0086b3; -} - -.hljs-chunk { - color: #aaa; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/index.html b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/index.html deleted file mode 100644 index 97642a67..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - -

-
-
-
-
-
-
-
-
-
-
- - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/instant-markdown-d b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/instant-markdown-d deleted file mode 100755 index c75208fd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/instant-markdown-d +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/sh -':' //; exec "`command -v nodejs || command -v node`" "$0" - -var MarkdownIt = require('markdown-it'); -var hljs = require('highlight.js'); -var server = require('http').createServer(httpHandler), - exec = require('child_process').exec, - io = require('socket.io').listen(server), - send = require('send'), - server, - socket; - -server.listen(8090); - -var md = new MarkdownIt({ - html: true, - linkify: true, - highlight: function(str, lang) { - if (lang && hljs.getLanguage(lang)) { - try { - return hljs.highlight(lang, str).value; - } catch (err) { - // Do nothing - } - } else { - return str; - } - } -}); - -function writeMarkdown(input, output) { - var body = ''; - input.on('data', function(data) { - body += data; - if (body.length > 1e6) { - throw new Error('The request body is too long.'); - } - }); - input.on('end', function() { - output.emit('newContent', md.render(body)); - }); -} - -function httpHandler(req, res) { - switch(req.method) - { - case 'GET': - // Example: /my-repo/raw/master/sub-dir/some.png - var githubUrl = req.url.match(/\/[^\/]+\/raw\/[^\/]+\/(.+)/); - if (githubUrl) { - // Serve the file out of the current working directory - send(req, githubUrl[1]) - .root(process.cwd()) - .pipe(res); - return; - } - - // Otherwise serve the file from the directory this module is in - send(req, req.url) - .root(__dirname) - .pipe(res); - break; - - // case 'HEAD': - // res.writeHead(200); - // res.end(); - // exec('open -g http://localhost:8090', function(error, stdout, stderr){ - // http.request({port: 8090}) - // }); - // break; - - case 'DELETE': - socket.emit('die'); - process.exit(); - break; - - case 'PUT': - writeMarkdown(req, socket); - res.writeHead(200); - res.end(); - break; - - default: - } -} - -io.set('log level', 1); -io.sockets.on('connection', function(sock){ - socket = sock; - process.stdout.write('connection established!'); - writeMarkdown(process.stdin, socket); - process.stdin.resume(); -}); - - -if (process.platform.toLowerCase().indexOf('darwin') >= 0){ - exec('open -g http://localhost:8090', function(error, stdout, stderr){}); -} -else { // assume unix/linux - exec('xdg-open http://localhost:8090', function(error, stdout, stderr){}); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/.bin/markdown-it b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/.bin/markdown-it deleted file mode 100755 index 290c3ae1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/.bin/markdown-it +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env node -/*eslint no-console:0*/ - -'use strict'; - - -var fs = require('fs'); -var argparse = require('argparse'); - - -//////////////////////////////////////////////////////////////////////////////// - -var cli = new argparse.ArgumentParser({ - prog: 'markdown-it', - version: require('../package.json').version, - addHelp: true -}); - -cli.addArgument([ '--no-html' ], { - help: 'Disable embedded HTML', - action: 'storeTrue' -}); - -cli.addArgument([ '-l', '--linkify' ], { - help: 'Autolink text', - action: 'storeTrue' -}); - -cli.addArgument([ '-t', '--typographer' ], { - help: 'Enable smartquotes and other typographic replacements', - action: 'storeTrue' -}); - -cli.addArgument([ '--trace' ], { - help: 'Show stack trace on error', - action: 'storeTrue' -}); - -cli.addArgument([ 'file' ], { - help: 'File to read', - nargs: '?', - defaultValue: '-' -}); - -var options = cli.parseArgs(); - - -function readFile(filename, encoding, callback) { - if (options.file === '-') { - // read from stdin - var chunks = []; - - process.stdin.on('data', function(chunk) { chunks.push(chunk); }); - - process.stdin.on('end', function() { - return callback(null, Buffer.concat(chunks).toString(encoding)); - }); - } else { - fs.readFile(filename, encoding, callback); - } -} - - -//////////////////////////////////////////////////////////////////////////////// - -readFile(options.file, 'utf8', function (err, input) { - var output, md; - - if (err) { - if (err.code === 'ENOENT') { - console.error('File not found: ' + options.file); - process.exit(2); - } - - console.error( - options.trace && err.stack || - err.message || - String(err)); - - process.exit(1); - } - - md = require('..')({ - html: !options['no-html'], - xhtmlOut: false, - typographer: options.typographer, - linkify: options.linkify - }); - - try { - output = md.render(input); - - } catch (e) { - console.error( - options.trace && e.stack || - e.message || - String(e)); - - process.exit(1); - } - - process.stdout.write(output); - - process.exit(0); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/LICENSE deleted file mode 100644 index 422deb73..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2006, Ivan Sagalaev -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of highlight.js nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/README.md deleted file mode 100644 index e03877bf..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# Highlight.js - -[![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js) - -Highlight.js is a syntax highlighter written in JavaScript. It works in -the browser as well as on the server. It works with pretty much any -markup, doesn’t depend on any framework and has automatic language -detection. - -## Getting Started - -The bare minimum for using highlight.js on a web page is linking to the -library along with one of the styles and calling -[`initHighlightingOnLoad`][1]: - -```html - - - -``` - -This will find and highlight code inside of `
` tags; it tries
-to detect the language automatically. If automatic detection doesn’t
-work for you, you can specify the language in the `class` attribute:
-
-```html
-
...
-``` - -The list of supported language classes is available in the [class -reference][2]. Classes can also be prefixed with either `language-` or -`lang-`. - -To disable highlighting altogether use the `nohighlight` class: - -```html -
...
-``` - -## Custom Initialization - -When you need a bit more control over the initialization of -highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4] -functions. This allows you to control *what* to highlight and *when*. - -Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using -jQuery: - -```javascript -$(document).ready(function() { - $('pre code').each(function(i, block) { - hljs.highlightBlock(block); - }); -}); -``` - -You can use any tags instead of `
` to mark up your code. If
-you don't use a container that preserve line breaks you will need to
-configure highlight.js to use the `
` tag: - -```javascript -hljs.configure({useBR: true}); - -$('div.code').each(function(i, block) { - hljs.highlightBlock(block); -}); -``` - -For other options refer to the documentation for [`configure`][4]. - -## Getting the Library - -You can get highlight.js as a hosted, or custom-build, browser script or -as a server module. Right out of the box the browser script supports -both AMD and CommonJS, so if you wish you can use RequireJS or -Browserify without having to build from source. The server module also -works perfectly fine with Browserify, but there is the option to use a -build specific to browsers rather than something meant for a server. -Head over to the [download page][5] for all the options. - -**Note:** the library is not supposed to work straight from the source -on GitHub; it requires building. If none of the pre-packaged options -work for you refer to the [building documentation][6]. - -## License - -Highlight.js is released under the BSD License. See [LICENSE][7] file -for details. - -## Links - -The official site for the library is at . - -Further in-depth documentation for the API and other topics is at -. - -Authors and contributors are listed in the [AUTHORS.en.txt][8] file. - -[1]: http://highlightjs.readthedocs.org/en/latest/api.html#inithighlightingonload -[2]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html -[3]: http://highlightjs.readthedocs.org/en/latest/api.html#highlightblock-block -[4]: http://highlightjs.readthedocs.org/en/latest/api.html#configure-options -[5]: https://highlightjs.org/download/ -[6]: http://highlightjs.readthedocs.org/en/latest/building-testing.html -[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE -[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/api.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/api.rst deleted file mode 100644 index d8039539..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/api.rst +++ /dev/null @@ -1,120 +0,0 @@ -Library API -=========== - -Highlight.js exports a few functions as methods of the ``hljs`` object. - - -``highlight(name, value, ignore_illegals, continuation)`` ---------------------------------------------------------- - -Core highlighting function. -Accepts a language name, or an alias, and a string with the code to highlight. -The ``ignore_illegals`` parameter, when present and evaluates to a true value, -forces highlighting to finish even in case of detecting illegal syntax for the -language instead of throwing an exception. -The ``continuation`` is an optional mode stack representing unfinished parsing. -When present, the function will restart parsing from this state instead of -initializing a new one. -Returns an object with the following properties: - -* ``language``: language name, same as the one passed into a function, returned for consistency with ``highlightAuto`` -* ``relevance``: integer value -* ``value``: HTML string with highlighting markup -* ``top``: top of the current mode stack - - -``highlightAuto(value, languageSubset)`` ----------------------------------------- - -Highlighting with language detection. -Accepts a string with the code to highlight and an optional array of language names and aliases restricting detection to only those languages. The subset can also be set with ``configure``, but the local parameter overrides the option if set. -Returns an object with the following properties: - -* ``language``: detected language -* ``relevance``: integer value -* ``value``: HTML string with highlighting markup -* ``second_best``: object with the same structure for second-best heuristically detected language, may be absent - - -``fixMarkup(value)`` --------------------- - -Post-processing of the highlighted markup. Currently consists of replacing indentation TAB characters and using ``
`` tags instead of new-line characters. Options are set globally with ``configure``. - -Accepts a string with the highlighted markup. - - -``highlightBlock(block)`` -------------------------- - -Applies highlighting to a DOM node containing code. - -This function is the one to use to apply highlighting dynamically after page load -or within initialization code of third-party Javascript frameworks. - -The function uses language detection by default but you can specify the language -in the ``class`` attribute of the DOM node. See the :doc:`class reference -` for all available language names and aliases. - - -``configure(options)`` ----------------------- - -Configures global options: - -* ``tabReplace``: a string used to replace TAB characters in indentation. -* ``useBR``: a flag to generate ``
`` tags instead of new-line characters in the output, useful when code is marked up using a non-``
`` container.
-* ``classPrefix``: a string prefix added before class names in the generated markup, used for backwards compatibility with stylesheets.
-* ``languages``: an array of language names and aliases restricting auto detection to only these languages.
-
-Accepts an object representing options with the values to updated. Other options don't change
-::
-
-  hljs.configure({
-    tabReplace: '    ', // 4 spaces
-    classPrefix: ''     // don't append class prefix
-                        // … other options aren't changed
-  })
-  hljs.initHighlighting();
-
-
-``initHighlighting()``
-----------------------
-
-Applies highlighting to all ``
..
`` blocks on a page. - - - -``initHighlightingOnLoad()`` ----------------------------- - -Attaches highlighting to the page load event. - - -``registerLanguage(name, language)`` ------------------------------------- - -Adds new language to the library under the specified name. Used mostly internally. - -* ``name``: a string with the name of the language being registered -* ``language``: a function that returns an object which represents the - language definition. The function is passed the ``hljs`` object to be able - to use common regular expressions defined within it. - - -``listLanguages()`` ----------------------------- - -Returns the languages names list. - - - -.. _getLanguage: - - -``getLanguage(name)`` ---------------------- - -Looks up a language by name or alias. - -Returns the language object if found, ``undefined`` otherwise. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/building-testing.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/building-testing.rst deleted file mode 100644 index 16292cb8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/building-testing.rst +++ /dev/null @@ -1,88 +0,0 @@ -Building and testing -==================== - -To actually run highlight.js it is necessary to build it for the environment -where you're going to run it: a browser, the node.js server, etc. - - -Building --------- - -The build tool is written in JavaScript using node.js. Before running the -script, make sure to have node installed and run ``npm install`` to get the -dependencies. - -The tool is located in ``tools/build.js``. A few useful examples: - -* Build for a browser using only common languages:: - - node tools/build.js :common - -* Build for node.js including all available languages:: - - node tools/build.js -t node - -* Build two specific languages for debugging, skipping compression in this case:: - - node tools/build.js -n python ruby - -On some systems the node binary is named ``nodejs``; simply replace ``node`` -with ``nodejs`` in the examples above if that is the case. - -The full option reference is available with the usual ``--help`` option. - -The build result will be in the ``build/`` directory. - -.. _basic-testing: - -Basic testing -------------- - -The usual approach to debugging and testing a language is first doing it -visually. You need to build highlight.js with only the language you're working -on (without compression, to have readable code in browser error messages) and -then use the Developer tool in ``tools/developer.html`` to see how it highlights -a test snippet in that language. - -A test snippet should be short and give the idea of the overall look of the -language. It shouldn't include every possible syntactic element and shouldn't -even make practical sense. - -After you satisfied with the result you need to make sure that language -detection still works with your language definition included in the whole suite. - -Testing is done using `Mocha `_ and the -files are found in the ``test/`` directory. You can use the node build to -run the tests in the command line with ``npm test`` after installing the -dependencies with ``npm install``. - -**Note**: for Debian-based machine, like Ubuntu, you might need to create an -alias or symbolic link for nodejs to node. The reason for this is the -dependencies that are requires to test highlight.js has a reference to -"node". - -Place the snippet you used inside the browser in -``test/detect//default.txt``, build the package with all the languages -for node and run the test suite. If your language breaks auto-detection, it -should be fixed by :ref:`improving relevance `, which is a black art -in and of itself. When in doubt, please refer to the discussion group! - - -Testing markup --------------- - -You can also provide additional markup tests for the language to test isolated -cases of various syntactic construct. If your language has 19 different string -literals or complicated heuristics for telling division (``/``) apart from -regexes (``/ .. /``) -- this is the place. - -A test case consists of two files: - -* ``test/markup//.txt``: test code -* ``test/markup//.expect.txt``: reference rendering - -To generate reference rendering use the Developer tool located at -``tools/developer.html``. Make sure to explicitly select your language in the -drop-down menu, as automatic detection is unlikely to work in this case. - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/css-classes-reference.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/css-classes-reference.rst deleted file mode 100644 index 1b28d36e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/css-classes-reference.rst +++ /dev/null @@ -1,1558 +0,0 @@ -CSS classes reference -===================== - -This is a full list of available classes corresponding to languages' -syntactic structures. The parentheses after language name contain identifiers -used as class names in ```` element. - - -Gams ("gms", "gams") --------------------- - -* ``section``: section -* ``keyword``: keyword -* ``number``: number -* ``string``: string - - -Python ("python", "py", "gyp") ------------------------------- - -* ``keyword``: keyword -* ``built_in``: built-in objects (None, False, True and Ellipsis) -* ``number``: number -* ``string``: string (of any type) -* ``comment``: comment -* ``decorator``: @-decorator for functions -* ``function``: function header "def some_name(...):" -* ``class``: class header "class SomeName(...):" -* ``title``: name of a function or a class inside a header -* ``params``: everything inside parentheses in a function's or class' header - -Python profiler results ("profile") ------------------------------------ - -* ``number``: number -* ``string``: string -* ``built_in``: built-in function entry -* ``filename``: filename in an entry -* ``summary``: profiling summary -* ``header``: header of table of results -* ``keyword``: column header -* ``function``: function name in an entry (including parentheses) -* ``title``: actual name of a function in an entry (excluding parentheses) -* ``prompt``: interpreter prompt (>>> or ...) - -Ruby ("ruby", "rb", "gemspec", "podspec", "thor", "irb") --------------------------------------------------------- - -* ``keyword``: keyword -* ``string``: string -* ``subst``: in-string substitution (#{...}) -* ``comment``: comment -* ``doctag``: YARD doctag -* ``function``: function header "def some_name(...):" -* ``class``: class header "class SomeName(...):" -* ``title``: name of a function or a class inside a header -* ``parent``: name of a parent class -* ``symbol``: symbol -* ``input``: complete input line (interpreter) -* ``output``: complete output line (interpreter) -* ``prompt``: interpreter prompt (>>) -* ``status``: interpreter response (=>) - -Haml ("haml") -------------- - -* ``tag``: any tag starting with "%" -* ``title``: tag's name -* ``attribute``: tag's attribute -* ``keyword``: tag's attribute that is a keyword -* ``string``: attribute's value that is a string -* ``value``: attribute's value, shorthand id or class for tag -* ``comment``: comment -* ``doctype``: !!! declaration -* ``bullet``: line defined by variable - -Perl ("perl", "pl") -------------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``regexp``: regular expression -* ``sub``: subroutine header (from "sub" till "{") -* ``variable``: variable starting with "$", "%", "@" -* ``operator``: operator -* ``pod``: plain old doc - -PHP ("php", "php3", "php4", "php5", "php6") -------------------------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string (of any type) -* ``comment``: comment -* ``doctag``: phpdoc params in comments -* ``variable``: variable starting with "$" -* ``preprocessor``: preprocessor marks: "" -* ``class``: class header -* ``function``: header of a function -* ``title``: name of a function inside a header -* ``params``: parentheses and everything inside them in a function's header - -Scala ("scala") ---------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``doctag``: @-tag in javadoc comment -* ``annotation``: annotation -* ``class``: class header -* ``title``: class name inside a header -* ``params``: everything in parentheses inside a class header -* ``inheritance``: keywords "extends" and "with" inside class header - -Groovy ("groovy") ------------------ - -* ``keyword``: keyword -* ``number``: number -* ``string``: string, map string keys and named argument labels -* ``regex``: regular expression -* ``comment``: comment -* ``doctag``: @-tag in javadoc comment -* ``annotation``: annotation -* ``class``: class header -* ``title``: class name inside a header -* ``label``: label -* ``shebang``: Groovy shell script header - -Go ("go", "golang") -------------------- - -* ``comment``: comment -* ``string``: string constant -* ``number``: number -* ``keyword``: language keywords -* ``constant``: true false nil iota -* ``typename``: built-in plain types (int, string etc.) -* ``built_in``: built-in functions - -Golo ("golo", "gololang") -------------------- - -* ``keyword``: language keywords -* ``literal``: true false null -* ``typename``: Golo type objects (DynamicObject, struct, ...) -* ``annotation``: decorator - -Gradle ("gradle") ------------------ - -* ``keyword``: keyword -* ``number``: number -* ``string``: string and character -* ``comment``: comment -* ``regexp``: regular expression - - -HTML, XML ("xml", "html", "xhtml", "rss", "atom", "xsl", "plist") ------------------------------------------------------------------ - -* ``tag``: any tag from "<" till ">" -* ``attribute``: tag's attribute with or without value -* ``value``: attribute's value -* ``comment``: comment -* ``pi``: processing instruction () -* ``doctype``: declaration -* ``cdata``: CDATA section - -Lasso ("lasso", "ls", "lassoscript") ------------------------------------- - -* ``preprocessor``: delimiters and interpreter flags -* ``shebang``: Lasso 9 shell script header -* ``comment``: single- or multi-line comment -* ``keyword``: keyword -* ``literal``: keyword representing a value -* ``built_in``: built-in types and variables -* ``number``: number -* ``string``: string -* ``variable``: variable reference starting with "#" or "$" -* ``tag``: tag literal -* ``attribute``: named or rest parameter in method signature -* ``subst``: unary/binary/ternary operator symbols -* ``class``: type, trait, or method header -* ``title``: name following "define" inside a header - -CSS ("css") ------------ - -* ``tag``: tag in selectors -* ``id``: #some_name in selectors -* ``class``: .some_name in selectors -* ``at_rule``: @-rule till first "{" or ";" -* ``keyword``: name of @-rule after @ sign -* ``attr_selector``: attribute selector (square brackets in a[href^=http://]) -* ``pseudo``: pseudo classes and elements (:after, ::after etc.) -* ``comment``: comment -* ``rules``: everything from "{" till "}" -* ``rule``: rule itself — everything inside "{" and "}" -* ``attribute``: property name inside a rule -* ``value``: property value inside a rule, from ":" till ";" or till the end of rule block -* ``number``: number within a value -* ``string``: string within a value -* ``hexcolor``: hex color (#FFFFFF) within a value -* ``function``: CSS function within a value -* ``important``: "!important" symbol - -SCSS ("scss") -------------- - -* ``tag``: tag in selectors -* ``id``: #some_name in selectors -* ``class``: .some_name in selectors -* ``at_rule``: @-rule till first "{" or ";" -* ``attr_selector``: attribute selector (square brackets in a[href^=http://]) -* ``pseudo``: pseudo classes and elements (:after, ::after etc.) -* ``comment``: comment -* ``rules``: everything from "{" till "}" -* ``attribute``: property name inside a rule -* ``value``: property value inside a rule, from ":" till ";" or till the end of rule block -* ``number``: number within a value -* ``string``: string within a value -* ``hexcolor``: hex color (#FFFFFF) within a value -* ``function``: CSS function within a value -* ``important``: "!important" symbol -* ``variable``: variable starting with "$" -* ``preprocessor``: keywords after @ - -Less ("less") -------------- - -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``attribute``: property name -* ``variable``: @var, @@var or @{var} -* ``keyword``: Less keywords (when, extend etc.) -* ``function``: Less and CSS functions (rgba, unit etc.) -* ``tag``: tag -* ``id``: #id -* ``class``: .class -* ``at_rule``: at-rule keyword (@media, @keyframes etc.) -* ``attr_selector``: attribute selector (e.g. [href^=http://]) -* ``pseudo``: pseudo classes and elements (:hover, ::before etc.) -* ``hexcolor``: hex color (#FFF) -* ``built_in``: inline javascript (or whatever host language) string - -Stylus ("stylus", "styl") -------------------------- - -* ``at_rule``: @-rule till first "{" or ";" -* ``attribute``: property name inside a rule -* ``class``: .some_name in selectors -* ``comment``: comment -* ``function``: Stylus function -* ``hexcolor``: hex color (#FFFFFF) within a value -* ``id``: #some_name in selectors -* ``number``: number within a value -* ``pseudo``: pseudo classes and elements (:after, ::after etc.) -* ``string``: string within a value -* ``tag``: tag in selectors -* ``variable``: variable starting with "$" - -Markdown ("markdown", "md", "mkdown", "mkd") --------------------------------------------- - -* ``header``: header -* ``bullet``: list bullet -* ``emphasis``: emphasis -* ``strong``: strong emphasis -* ``blockquote``: blockquote -* ``code``: code -* ``horizontal_rule``: horizontal rule -* ``link_label``: link label -* ``link_url``: link url -* ``link_reference``: link reference - -AsciiDoc ("asciidoc", "adoc") ------------------------------ - -* ``header``: heading -* ``bullet``: list or labeled bullet -* ``emphasis``: emphasis -* ``strong``: strong emphasis -* ``blockquote``: blockquote -* ``code``: inline or block code -* ``horizontal_rule``: horizontal rule -* ``link_label``: link or image label -* ``link_url``: link or image url -* ``comment``: comment -* ``attribute``: document attribute, block attributes -* ``label``: admonition label - -Django ("django", "jinja") --------------------------- - -* ``keyword``: HTML tag in HTML, default tags and default filters in templates -* ``tag``: any tag from "<" till ">" -* ``comment``: template comment, both {# .. #} and {% comment %} -* ``doctype``: declaration -* ``attribute``: tag's attribute with or without value -* ``value``: attribute's value -* ``template_tag``: template tag {% .. %} -* ``variable``: template variable {{ .. }} -* ``filter``: filter from "|" till the next filter or the end of tag -* ``argument``: filter argument - - -Twig ("twig", "craftcms") -------------------------- - -* ``keyword``: HTML tag in HTML, default tags and default filters in templates -* ``tag``: any tag from "<" till ">" -* ``comment``: template comment {# .. #} -* ``doctype``: declaration -* ``attribute``: tag's attribute with or withou value -* ``value``: attribute's value -* ``template_tag``: template tag {% .. %} -* ``variable``: template variable {{ .. }} -* ``filter``: filter from "|" till the next filter or the end of tag -* ``argument``: filter argument - - -Handlebars ("handlebars", "hbs", "html.hbs", "html.handlebars") ---------------------------------------------------------------- - -* ``expression``: expression to be evaluated -* ``variable``: variable -* ``begin-block``: the beginning of a block -* ``end-block``: the ending of a block -* ``string``: string - -Dust ("dust", "dst") --------------------- - -* ``expression``: expression to be evaluated -* ``variable``: variable -* ``begin-block``: the beginning of a block -* ``end-block``: the ending of a block -* ``string``: string - -JSON ("json") -------------- - -* ``number``: number -* ``literal``: "true", "false" and "null" -* ``string``: string value -* ``attribute``: name of an object property -* ``value``: value of an object property - -Mathematica ("mathematica", "mma") ----------------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``comment``: comment -* ``string``: string -* ``list``: a list { .. } - the basic Mma structure - -JavaScript ("javascript", "js") -------------------------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``literal``: special literal: "true", "false" and "null" -* ``built_in``: built-in objects and functions ("window", "console", "require", etc...) -* ``string``: string -* ``regexp``: regular expression -* ``function``: header of a function -* ``title``: name of a function inside a header -* ``params``: parentheses and everything inside them in a function's header -* ``pi``: 'use strict' processing instruction - -TypeScript ("typescript", "ts") -------------------------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``literal``: special literal: "true", "false" and "null" -* ``built_in``: built-in objects and functions ("window", "console", "require", etc...) -* ``string``: string -* ``regexp``: regular expression -* ``function``: header of a function -* ``title``: name of a function inside a header -* ``params``: parentheses and everything inside them in a function's header -* ``pi``: 'use strict' processing instruction - -CoffeeScript ("coffeescript", "coffee", "cson", "iced") -------------------------------------------------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``literal``: special literal: "true", "false" and "null" -* ``built_in``: built-in objects and functions ("window", "console", "require", etc...) -* ``string``: string -* ``subst``: #{ ... } interpolation in double-quoted strings -* ``regexp``: regular expression -* ``function``: header of a function -* ``class``: header of a class -* ``title``: name of a function variable inside a header -* ``params``: parentheses and everything inside them in a function's header -* ``property``: @-property within class and functions - -Dart ("dart") -------------- - -* ``keyword``: keyword -* ``literal``: keyword that can be uses as identifier but have special meaning in some cases -* ``built_in``: some of basic built in classes and function -* ``number``: number -* ``string``: string -* ``subst``: in-string substitution (${...}) -* ``comment``: commment -* ``annotation``: annotation -* ``class``: class header from "class" till "{" -* ``title``: class name - -LiveScript ("livescript", "ls") -------------------------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``literal``: special literal: "true", "false" and "null" -* ``built_in``: built-in objects and functions ("window", "console", "require", etc...) -* ``string``: string -* ``subst``: #{ ... } interpolation in double-quoted strings -* ``regexp``: regular expression -* ``function``: header of a function -* ``class``: header of a class -* ``title``: name of a function variable inside a header -* ``params``: parentheses and everything inside them in a function's header -* ``property``: @-property within class and functions - -ActionScript ("actionscript", "as") ------------------------------------ - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keywords -* ``literal``: literal -* ``reserved``: reserved keyword -* ``title``: name of declaration (package, class or function) -* ``preprocessor``: preprocessor directive (import, include) -* ``type``: type of returned value (for functions) -* ``package``: package (named or not) -* ``class``: class/interface -* ``function``: function -* ``param``: params of function -* ``rest_arg``: rest argument of function - -Haxe ("haxe", "hx") -------------------- - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keywords -* ``literal``: literal -* ``reserved``: reserved keyword -* ``title``: name of declaration (package, class or function) -* ``preprocessor``: preprocessor directive (if, else, elseif, error) -* ``type``: type of returned value (for functions) -* ``package``: package (named or not) -* ``class``: class/interface -* ``function``: function -* ``param``: params of function -* ``rest_arg``: rest argument of function - -VBScript ("vbscript", "vbs") ----------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``built_in``: built-in function - -VB.Net ("vbnet", "vb") ----------------------- - -* ``keyword``: keyword -* ``built_in``: built-in types -* ``literal``: "true", "false" and "nothing" -* ``string``: string -* ``comment``: comment -* ``xmlDocTag``: xmldoc tag ("'''", "", "<..>") -* ``preprocessor``: preprocessor directive - -Protocol Buffers ("protobuf") ------------------------------ - -* ``keyword``: keyword -* ``built_in``: built-in types (e.g. `int64`, `string`) -* ``string``: string -* ``number``: number -* ``literal``: "true" and "false" -* ``comment``: comment -* ``class``: message, service or enum definition header -* ``title``: message, service or enum identifier -* ``function``: RPC call identifier - -Cap’n Proto ("capnproto", "capnp") ----------------------------------- - -* ``shebang``: message identifier -* ``keyword``: keyword -* ``built_in``: built-in types (e.g. `Int64`, `Text`) -* ``string``: string -* ``number``: number or field number (e.g. @N) -* ``literal``: "true" and "false" -* ``comment``: comment -* ``class``: message, interface or enum definition header -* ``title``: message, interface or enum identifier - -Thrift ("thrift") ------------------ - -* ``keyword``: keyword -* ``built_in``: built-in types (e.g. `byte`, `i32`) -* ``string``: string -* ``number``: number -* ``literal``: "true" and "false" -* ``comment``: comment -* ``class``: struct, enum, service or exception definition header -* ``title``: struct, enum, service or exception identifier - -HTTP ("http", "https") ----------------------- - -* ``request``: first line of a request -* ``status``: first line of a response -* ``attribute``: header name -* ``string``: header value or query string in a request line -* ``number``: status code - -Lua ("lua") ------------ - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``built_in``: built-in operator -* ``function``: header of a function -* ``title``: name of a function inside a header -* ``params``: everything inside parentheses in a function's header -* ``long_brackets``: multiline string in [=[ .. ]=] - -Delphi ("delphi") ------------------ - -* ``keyword``: keyword -* ``comment``: comment (of any type) -* ``number``: number -* ``string``: string -* ``function``: header of a function, procedure, constructor and destructor -* ``title``: name of a function, procedure, constructor or destructor inside a header -* ``params``: everything inside parentheses in a function's header -* ``class``: class' body from "= class" till "end;" - -Oxygene ("oxygene") -------------------- - -* ``keyword``: keyword -* ``comment``: comment (of any type) -* ``string``: string/char -* ``function``: method, destructor, procedure or function -* ``title``: name of a function (inside function) -* ``params``: everything inside parentheses in a function's header -* ``number``: number -* ``class``: class' body from "= class" till "end;" - -Java ("java", "jsp") --------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``annotaion``: annotation -* ``class``: class header from "class" till "{" -* ``function``: method header -* ``title``: class or method name -* ``params``: everything in parentheses inside a class header -* ``inheritance``: keywords "extends" and "implements" inside class header - -Processing ("processing") -------------------------- - -* ``constant``: Processing constants -* ``variable``: Processing special variables -* ``keyword``: Variable types -* ``function``: Processing setup and draw functions -* ``built_in``: Processing built in functions - -AspectJ ("aspectj") -------------------- - -* ``comment``: comment -* ``doctag``: @-tag in javadoc comment -* ``string``: string -* ``number``: number -* ``keyword``: keyword -* ``annotation``: annotation -* ``function``: method and intertype method header -* ``aspect``: aspect header from "aspect" till "{" -* ``params``: everything in parentheses inside an aspect header -* ``inheritance``: keywords "extends" and "implements" inside an aspect header -* ``title``: aspect, (intertype) method name or pointcut name inside an aspect header - -Fortran ("fortran", "f90", "f95") ---------------------------------- - -* ``comment``: comment -* ``function``: name of a function or a subroutine -* ``keyword``: language keywords (function, if) -* ``number``: number -* ``string``: string constant (single or double quote) - -IRPF90 ("irpf90") ------------------ - -* ``comment``: comment -* ``function``: name of a function or a subroutine -* ``keyword``: language keywords (function, if) -* ``number``: number -* ``string``: string constant (single or double quote) - -C++ ("cpp", "c", "cc", "h", "c++", "h++", "hpp") ------------------------------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string and character -* ``comment``: comment -* ``preprocessor``: preprocessor directive - -Objective C ("objectivec", "mm", "objc", "obj-c") -------------------------------------------------- - -* ``keyword``: keyword -* ``built_in``: Cocoa/Cocoa Touch constants and classes -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``preprocessor``: preprocessor directive -* ``class``: interface/implementation, protocol and forward class declaration -* ``title``: title (id) of interface, implementation, protocol, class -* ``variable``: properties and struct accessors - -Vala ("vala") -------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``class``: class definitions -* ``title``: in class definition -* ``constant``: ALL_UPPER_CASE - -C# ("cs", "csharp") -------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``xmlDocTag``: xmldoc tag ("///", "", "<..>") -* ``class``: class header from "class" till "{" -* ``function``: method header -* ``title``: title of namespace or class - -F# ("fsharp", "fs") -------------------- - -* ``keywords``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``class``: any custom F# type -* ``title``: the name of a custom F# type -* ``annotation``: any attribute - -OCaml ("ocaml", "ml") ---------------------- - -* ``keywords``: keyword -* ``literal``: true false etc. -* ``number``: number -* ``string``: string -* ``char``: character -* ``comment``: comment -* ``built_in``: built-in type (int, list etc.) -* ``type``: variant constructor, module name -* ``tag``: polymorphic variant tag -* ``symbol``: type variable - -D ("d") -------- - -* ``comment``: comment -* ``string``: string constant -* ``number``: number -* ``keyword``: language keywords (including @attributes) -* ``constant``: true false null -* ``built_in``: built-in plain types (int, string etc.) - -RenderMan RSL ("rsl") ---------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string (including @"..") -* ``comment``: comment -* ``preprocessor``: preprocessor directive -* ``shader``: shader keywords -* ``shading``: shading keywords -* ``built_in``: built-in function - -RenderMan RIB ("rib") ---------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``commands``: command - -Maya Embedded Language ("mel") ------------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``variable``: variable - -SQL ("sql") ------------ - -* ``keyword``: keyword (mostly SQL'92, SQL'99 and T-SQL) -* ``literal``: special literal: "true" and "false" -* ``built_in``: built-in type name -* ``number``: number -* ``string``: string (of any type: "..", '..', \`..\`) -* ``comment``: comment -* ``variable``: mixed-case names - -Smalltalk ("smalltalk", "st") ------------------------------ - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``symbol``: symbol -* ``array``: array -* ``class``: name of a class -* ``char``: char -* ``localvars``: block of local variables - -Lisp ("lisp") -------------- - -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``variable``: variable -* ``literal``: b, t and nil -* ``list``: non-quoted list -* ``keyword``: first symbol in a non-quoted list -* ``body``: remainder of the non-quoted list -* ``quoted``: quoted list, both "(quote .. )" and "'(..)" - -Clojure ("clojure", "clj") --------------------------- - -* ``comment``: comments and hints -* ``string``: string -* ``number``: number -* ``collection``: collections -* ``attribute``: :keyword -* ``list``: non-quoted list -* ``keyword``: first symbol in a list -* ``built_in``: built-in function name as the first symbol in a list -* ``prompt``: REPL prompt - -Scheme ("scheme") ------------------ - -* ``shebang``: script interpreter header -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``regexp``: regexp -* ``variable``: single-quote 'identifier -* ``list``: non-quoted list -* ``keyword``: first symbol in a list -* ``built_in``: built-in function name as the first symbol in a list -* ``literal``: #t, #f, #\...\ - -Ini ("ini") ------------ - -* ``title``: title of a section -* ``value``: value of a setting of any type -* ``string``: string -* ``number``: number -* ``keyword``: boolean value keyword - -Apache ("apache", "apacheconf") -------------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``comment``: comment -* ``literal``: On and Off -* ``sqbracket``: variables in rewrites "%{..}" -* ``cbracket``: options in rewrites "[..]" -* ``tag``: begin and end of a configuration section - -Nginx ("nginx", "nginxconf") ----------------------------- - -* ``title``: directive title -* ``string``: string -* ``number``: number -* ``comment``: comment -* ``built_in``: built-in constant -* ``variable``: $-variable -* ``regexp``: regexp - -Diff ("diff", "patch") ----------------------- - -* ``header``: file header -* ``chunk``: chunk header within a file -* ``addition``: added lines -* ``deletion``: deleted lines -* ``change``: changed lines - -DOS ("dos", "bat", "cmd") -------------------------- - -* ``keyword``: keyword -* ``flow``: batch control keyword -* ``stream``: DOS special files ("con", "prn", ...) -* ``winutils``: some commands (see dos.js specifically) -* ``envvar``: environment variables - -PowerShell ("powershell", "ps") -------------------------------- - -* ``keyword``: keyword -* ``string``: string -* ``number``: number -* ``comment``: comment -* ``literal``: special literal: "true" and "false" -* ``variable``: variable - -Bash ("bash", "sh", "zsh") --------------------------- - -* ``keyword``: keyword -* ``string``: string -* ``number``: number -* ``comment``: comment -* ``literal``: special literal: "true" and "false" -* ``variable``: variable -* ``shebang``: script interpreter header - -Makefile ("makefile", "mk", "mak") ----------------------------------- - -* ``keyword``: keyword ".PHONY" within the phony line -* ``string``: string -* ``comment``: comment -* ``variable``: $(..) variable -* ``title``: target title -* ``constant``: constant within the initial definition - -CMake ("cmake", "cmake.in") ---------------------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``envvar``: $-variable -* ``operator``: operator (LESS, STREQUAL, MATCHES, etc) - -Nix ("nix") ------------ - -* ``keyword``: keyword -* ``built_in``: built-in constant -* ``number``: number -* ``string``: single and double quotes -* ``subst``: antiquote ${} -* ``comment``: comment -* ``variable``: function parameter name - -NSIS ("nsis") -------------- - -* ``symbol``: directory constants -* ``number``: number -* ``constant``: definitions, language-strings, compiler commands -* ``variable``: $-variable -* ``string``: string -* ``comment``: comment -* ``params``: parameters -* ``keyword``: keywords -* ``literal``: keyword options - -Axapta ("axapta") ------------------ - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``class``: class header from "class" till "{" -* ``title``: class name inside a header -* ``params``: everything in parentheses inside a class header -* ``preprocessor``: preprocessor directive - -Oracle Rules Language ("ruleslanguage") ---------------------------------------- - -* ``comment``: comment -* ``string``: string constant -* ``number``: number -* ``keyword``: language keywords -* ``built_in``: built-in functions -* ``array``: array stem - -1C ("1c") ---------- - -* ``keyword``: keyword -* ``number``: number -* ``date``: date -* ``string``: string -* ``comment``: comment -* ``function``: header of function or procedure -* ``title``: function name inside a header -* ``params``: everything in parentheses inside a function header -* ``preprocessor``: preprocessor directive - -x86 Assembly ("x86asm") ------------------------ - -* ``keyword``: instruction mnemonic -* ``literal``: register name -* ``pseudo``: assembler's pseudo instruction -* ``preprocessor``: macro -* ``built_in``: assembler's keyword -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``label``: jump label -* ``argument``: macro's argument - -AVR assembler ("avrasm") ------------------------- - -* ``keyword``: keyword -* ``built_in``: pre-defined register -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``label``: label -* ``preprocessor``: preprocessor directive -* ``localvars``: substitution in .macro - -VHDL ("vhdl") -------------- - -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``literal``: signal logical value -* ``typename``: typename -* ``attribute``: signal attribute - -Parser3 ("parser3") -------------------- - -* ``keyword``: keyword -* ``number``: number -* ``comment``: comment -* ``variable``: variable starting with "$" -* ``preprocessor``: preprocessor directive -* ``title``: user-defined name starting with "@" - -LiveCode Server ("livecodeserver") ----------------------------------- - -* ``variable``: variable starting with "g", "t", "p", "s", "$_" -* ``string``: string -* ``comment``: comment -* ``number``: number -* ``title``: name of a command or a function -* ``keyword``: keyword -* ``constant``: constant -* ``operator``: operator -* ``built_in``: built_in functions and commands -* ``function``: header of a function -* ``command``: header of a command -* ``preprocessor``: preprocessor marks: "" - -TeX ("tex") ------------ - -* ``comment``: comment -* ``number``: number -* ``command``: command -* ``parameter``: parameter -* ``formula``: formula -* ``special``: special symbol - -Haskell ("haskell", "hs") -------------------------- - -* ``comment``: comment -* ``pragma``: GHC pragma -* ``preprocessor``: CPP preprocessor directive -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``title``: function or variable name -* ``type``: value, type or type class constructor name (i.e. capitalized) -* ``container``: (..., ...) or {...; ...} list in declaration or record -* ``module``: module declaration -* ``import``: import declaration -* ``class``: type class or instance declaration -* ``typedef``: type declaration (type, newtype, data) -* ``default``: default declaration -* ``infix``: infix declaration -* ``foreign``: FFI declaration -* ``shebang``: shebang line - -Elm ("elm") -------------------------- - -* ``comment``: comment -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``title``: function or variable name -* ``type``: value or type constructor name (i.e. capitalized) -* ``container``: (..., ...) or {...; ...} list in declaration or record -* ``module``: module declaration -* ``import``: import declaration -* ``typedef``: type declaration (type, type alias) -* ``infix``: infix declaration -* ``foreign``: javascript interop declaration - -Erlang ("erlang", "erl") ------------------------- - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keyword -* ``record_name``: record access (#record_name) -* ``title``: name of declaration function -* ``variable``: variable (starts with capital letter or with _) -* ``pp``:.keywords module's attribute (-attribute) -* ``function_name``: atom or atom:atom in case of function call - -Elixir ("elixir") ------------------ - -* ``keyword``: keyword -* ``string``: string -* ``subst``: in-string substitution (#{...}) -* ``comment``: comment -* ``function``: function header "def some_name(...):" -* ``class``: defmodule and defrecord headers -* ``title``: name of a function or a module inside a header -* ``symbol``: atom -* ``constant``: name of a module -* ``number``: number -* ``variable``: variable -* ``regexp``: regexp - -Rust ("rust", "rs") -------------------- - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keyword -* ``title``: name of declaration -* ``preprocessor``: preprocessor directive - -Matlab ("matlab") ------------------ - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keyword -* ``title``: function name -* ``function``: function -* ``param``: params of function -* ``matrix``: matrix in [ .. ] -* ``cell``: cell in { .. } - -Scilab ("scilab", "sci") ------------------------- - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: keyword -* ``title``: function name -* ``function``: function -* ``param``: params of function -* ``matrix``: matrix in [ .. ] - -R ("r") -------- - -* ``comment``: comment -* ``string``: string constant -* ``number``: number -* ``keyword``: language keywords (function, if) plus "structural" functions (attach, require, setClass) -* ``literal``: special literal: TRUE, FALSE, NULL, NA, etc. - -OpenGL Shading Language ("glsl") --------------------------------- - -* ``comment``: comment -* ``number``: number -* ``preprocessor``: preprocessor directive -* ``keyword``: keyword -* ``built_in``: GLSL built-in functions and variables -* ``literal``: true false - -AppleScript ("applescript", "osascript") ----------------------------------------- - -* ``keyword``: keyword -* ``command``: core AppleScript command -* ``constant``: AppleScript built in constant -* ``type``: AppleScript variable type (integer, etc.) -* ``property``: Applescript built in property (length, etc.) -* ``number``: number -* ``string``: string -* ``comment``: comment -* ``title``: name of a handler - -Vim Script ("vim") ------------------- - -* ``keyword``: keyword -* ``built_in``: built-in functions -* ``string``: string, comment -* ``number``: number -* ``function``: function header "function Foo(...)" -* ``title``: name of a function -* ``params``: everything inside parentheses in a function's header -* ``variable``: vim variables with different visibilities "g:foo, b:bar" - -Brainfuck ("brainfuck", "bf") ------------------------------ - -* ``title``: Brainfuck while loop command -* ``literal``: Brainfuck inc and dec commands -* ``comment``: comment -* ``string``: Brainfuck input and output commands - -Mizar ("mizar") ---------------- - -* ``keyword``: keyword -* ``comment``: comment - -AutoHotkey ("autohotkey") -------------------------- - -* ``keyword``: keyword -* ``literal``: A (active window), true, false, NOT, AND, OR -* ``built_in``: built-in variables -* ``string``: string -* ``comment``: comment -* ``number``: number -* ``var_expand``: variable expansion (enclosed in percent sign) -* ``label``: label, hotkey label, hotstring label - -Monkey ("monkey") ------------------ - -* ``keyword``: keyword -* ``built_in``: built-in functions, variables and types of variables -* ``literal``: True, False, Null, And, Or, Shl, Shr, Mod -* ``string``: string -* ``comment``: comment -* ``number``: number -* ``function``: header of a function, method and constructor -* ``class``: class header -* ``title``: name of an alias, class, interface, function or method inside a header -* ``variable``: self and super keywords -* ``preprocessor``: import and preprocessor -* ``pi``: Strict directive - -FIX ("fix") ------------ - -* ``attribute``: attribute name -* ``string``: attribute value - -Gherkin ("gherkin") -------------------- - -* ``keyword``: keyword -* ``number``: number -* ``comment``: comment -* ``string``: string - -TP ("tp") ---------- - -* ``keyword``: keyword -* ``constant``: ON, OFF, max_speed, LPOS, JPOS, ENABLE, DISABLE, START, STOP, RESET -* ``number``: number -* ``comment``: comment -* ``string``: string -* ``data``: numeric registers, positions, position registers, etc. -* ``io``: inputs and outputs -* ``label``: data and io labels -* ``variable``: system variables -* ``units``: units (e.g. mm/sec, sec, deg) - -Nimrod ("nimrod", "nim") ------------------------- - -* ``decorator`` pragma -* ``string`` string literal -* ``type`` variable type -* ``number`` numeric literal -* ``comment`` comment - -Swift ("swift") ---------------- - -* ``keyword``: keyword -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``literal``: special literal: "true", "false" and "nil" -* ``built_in``: built-in Swift functions -* ``func``: header of a function -* ``class``: class, protocol, enum, struct, or extension declaration -* ``title``: name of a function or class (or protocol, etc) -* ``generics``: generic type of a function -* ``params``: parameters of a function -* ``type``: a type -* ``preprocessor``: @attributes - -G-Code ("gcode", "nc") ----------------------- - -* ``keyword``: G words, looping constructs and conditional operators -* ``comment``: comment -* ``number``: number -* ``built_in``: trigonometric and mathematical functions -* ``title``: M words and variable registers -* ``preprocessor``: program number and ending character -* ``label``: block number - -Q ("k", "kdb") --------------- - -* ``comment``: comment -* ``string``: string constant -* ``number``: number -* ``keyword``: language keywords -* ``constant``: 0/1b -* ``typename``: built-in plain types (int, symbol etc.) -* ``built_in``: built-in function - -Tcl ("tcl", "tk") ------------------ - -* ``keyword``: keyword -* ``comment``: comment -* ``symbol``: function (proc) -* ``variable``: variable -* ``string``: string -* ``number``: number - -Puppet ("puppet", "pp") ------------------------ - -* ``comment``: comment -* ``string``: string -* ``number``: number -* ``keyword``: classes and types -* ``constant``: dependencies - -Stata ("stata") ---------------- - -* ``keyword``: commands and control flow -* ``label``: macros (locals and globals) -* ``string``: string -* ``comment``: comment -* ``literal``: built-in functions - -XL ("xl", "tao") ----------------- - -* ``keyword``: keywords defined in the default syntax file -* ``literal``: names entered in the compiler (true, false, nil) -* ``type``: basic types (integer, real, text, name, etc) -* ``built_in``: built-in functions (sin, exp, mod, etc) -* ``module``: names of frequently used Tao modules -* ``id``: names of frequently used Tao functions -* ``constant``: all-uppercase names such as HELLO -* ``variable``: Mixed-case names such as Hello (style convention) -* ``id``: Lower-case names such as hello -* ``string``: Text between single or double quote, long text << >> -* ``number``: Number values -* ``function``: Function or variable definition -* ``import``: Import clause - -Roboconf ("graph", "instances") -------------------------------- - -* ``keyword``: keyword -* ``string``: names of imported variables -* ``comment``: comment -* ``facet``: a **facet** section -* ``component``: a **component** section -* ``instance-of``: an **instance** section - -STEP Part 21 ("p21", "step", "stp") ------------------------------------ - -* ``preprocessor``: delimiters -* ``comment``: single- or multi-line comment -* ``keyword``: keyword -* ``number``: number -* ``string``: string -* ``label``: variable reference starting with "#" - -Mercury ("mercury") -------------------- - -* ``keyword``: keyword -* ``pragma``: compiler directive -* ``preprocessor``: foreign language interface -* ``built_in``: control flow, logical, implication, head-body conjunction, purity -* ``number``: number, numcode of character -* ``comment``: comment -* ``label``: TODO label inside comment -* ``string``: string -* ``constant``: string format - -Smali ("smali") ---------------- - -* ``string``: string -* ``comment``: comment -* ``keyword``: smali keywords -* ``instruction``: instruction -* ``class``: classtypes -* ``function``: function (call or signature) -* ``variable``: variable or parameter - -Verilog ("verilog", "v") ------------------------- - -* ``keyword``: keyword, operator -* ``comment``: comment -* ``typename``: types of data, register, and net -* ``number``: number literals (including X and Z) -* ``value``: parameters passed to instances - -Dockerfile ("dockerfile", "docker") ------------------------------------ - -* ``keyword``: instruction keyword -* ``comment``: comment -* ``number``: number -* ``string``: string - -PF ("pf", "pf.conf") --------------------- - -* ``built_in``: top level action, e.g. block/match/pass -* ``keyword``: some parameter/modifier to an action (in, on, nat-to, most reserved words) -* ``literal``: words representing special values, e.g. all, egress -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``variable``: used for both macros and tables - -XQuery ("xpath", "xq") ----------------------- - -* ``keyword``: instruction keyword -* ``literal``: words representing special values, e.g. all, egress -* ``comment``: comment -* ``number``: number -* ``string``: string -* ``variable``: variable -* ``decorator``: annotations -* ``function``: function - -C/AL ("cal") ------------- - -* ``keyword``: keyword -* ``comment``: comment (of any type) -* ``number``: number -* ``string``: string -* ``date``: date, time, or datetime -* ``function``: header of a procedure -* ``title``: name of an object or procedure inside a header -* ``params``: everything inside parentheses in a function's header -* ``class``: objects body -* ``variable``: reference to variables - -Inform7 ("I7") --------------- - -* ``string``: string -* ``comment``: comment -* ``title``: a section header or table header -* ``subst``: a substitution inside a string -* ``kind``: a built-in kind (thing, room, person, etc), for relevance -* ``characteristic``: a commonly-used characteristic (open, closed, scenery, etc), for relevance -* ``verb``: a commonly-used verb (is, understand), for relevance. -* ``misc_keyword``: a word with specific I7 meaning (kind, rule), for relevance. - -Prolog ("prolog") ------------------ - -* ``atom``: non-quoted atoms and functor names -* ``string``: quoted atoms, strings, character code list literals, character code literals -* ``number``: numbers -* ``variable``: variables -* ``comment``: comments - -DNS Zone file ("dns", "zone", "bind") -------------------------------------- - -* ``keyword``: DNS resource records as defined in various RFCs -* ``operator``: operator -* ``number``: IPv4 and IPv6 addresses -* ``comment``: comments - -Ceylon ("ceylon") ------------------ - -* ``keyword``: keyword -* ``annotation``: language annotation or compiler annotation -* ``string``: string literal, part of string template, character literal -* ``number``: number -* ``comment``: comment - -OpenSCAD ("openscad", "scad") ------------------------------ - -* ``built_in``: built-in functions (cube, sphere, translate, ...) -* ``comment``: comments -* ``function``: function or module definition -* ``keyword``: keywords -* ``literal``: words representing values (e.g. false, undef, PI) -* ``number``: numbers -* ``params``: parameters in function or module header or call -* ``preprocessor``: file includes (i.e. include, use) -* ``string``: quoted strings -* ``title``: names of function or module in a header - -ARM assembler ("armasm", "arm") -------------------------------- - -* ``keyword``: keyword (instruction mnemonics) -* ``literal``: pre-defined register -* ``number``: number -* ``built_in``: constants (true, false) -* ``string``: string -* ``comment``: comment -* ``label``: label -* ``preprocessor``: preprocessor directive -* ``title``: symbol versions - -AutoIt ("autoit") ------------------ - -* ``keyword``: keyword -* ``literal``: True, False, And, Null, Not, Or -* ``built_in``: built-in functions and UDF -* ``constant``: constant, macros -* ``variable``: variables -* ``string``: string -* ``comment``: comment -* ``number``: number -* ``preprocessor``: AutoIt3Wrapper directives section - -Access log ("accesslog") ------------------------- - -* ``keyword``: HTTP method name -* ``string``: date, request string, user-agent etc -* ``number``: IP-address, numbers - -Crystal ("crystal", "cr") -------------------------- - -* ``keyword``: keyword -* ``string``: string -* ``number``: number -* ``symbol``: symbol -* ``regexp``: regexp -* ``literal``: true, false or nil -* ``constant``: constant -* ``variable``: global, instance, class and fresh variables -* ``subst``: in-string substitution (#{...}) -* ``expansion``: macro expansion ({{...}}, {%...%}) -* ``class``: class, module, struct, enum, union or lib header -* ``function``: method or function header -* ``title``: a method name or class name -* ``parent``: name of a parent class -* ``annotation``: any attribute - -Crmsh ("crmsh", "crm", "pcmk") ------------------------------- - -* ``keyword``: command name -* ``title``: resource id -* ``identifier``: node or property set identifier -* ``pragma``: resource agent -* ``string``: string -* ``number``: number -* ``literal``: literal -* ``type``: data type -* ``variable``: name-value pair variable name -* ``comment``: comment -* ``tag``: XML tag diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/index.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/index.rst deleted file mode 100644 index f80250d7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/index.rst +++ /dev/null @@ -1,51 +0,0 @@ -.. highlight.js documentation master file, created by - sphinx-quickstart on Wed Sep 12 23:48:27 2012. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -``highlight.js`` developer documentation -========================================== - -Contents: - -.. toctree:: - :maxdepth: 1 - - api - language-guide - reference - css-classes-reference - style-guide - building-testing - release-process - -Contribution: - -.. toctree:: - :maxdepth: 1 - - language-contribution - style-contribution - -Miscellaneous: - -.. toctree:: - :maxdepth: 1 - - line-numbers - language-requests - -Links: - -- Code: https://github.com/isagalaev/highlight.js -- Discussion: http://groups.google.com/group/highlightjs -- Bug tracking: https://github.com/isagalaev/highlight.js/issues - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-contribution.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-contribution.rst deleted file mode 100644 index 4deae3f3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-contribution.rst +++ /dev/null @@ -1,78 +0,0 @@ -Language contributor checklist -============================== - -1. Put language definition into a .js file ------------------------------------------- - -The file defines a function accepting a reference to the library and returning a language object. -The library parameter is useful to access common modes and regexps. You should not immediately call this function, -this is done during the build process and details differ for different build targets. - -:: - - function(hljs) { - return { - keywords: 'foo bar', - contains: [ ..., hljs.NUMBER_MODE, ... ] - } - } - -The name of the file is used as a short language identifier and should be usable as a class name in HTML and CSS. - - -2. Provide meta data --------------------- - -At the top of the file there is a specially formatted comment with meta data processed by a build system. -Meta data format is simply key-value pairs each occupying its own line: - -:: - - /* - Language: Superlanguage - Requires: java.js, sql.js - Author: John Smith - Contributors: Mike Johnson <...@...>, Matt Wilson <...@...> - Description: Some cool language definition - */ - -``Language`` — the only required header giving a human-readable language name. - -``Requires`` — a list of other language files required for this language to work. -This make it possible to describe languages that extend definitions of other ones. -Required files aren't processed in any special way. -The build system just makes sure that they will be in the final package in -``LANGUAGES`` object. - -The meaning of the other headers is pretty obvious. - - -3. Create a code example ------------------------- - -The code example is used both to test language detection and for the demo page -on https://highlightjs.org/. Put it in ``test/detect//default.txt``. - -Take inspiration from other languages in ``test/detect/`` and read -:ref:`testing instructions ` for more details. - - -4. Write class reference ------------------------- - -Class reference lives in the :doc:`CSS classes reference `.. -Describe shortly names of all meaningful modes used in your language definition. - - -5. Add yourself to AUTHORS.*.txt and CHANGES.md ------------------------------------------------ - -If you're a new contributor add yourself to the authors list. Feel free to use -either English and/or Russian version. -Also it will be good to update CHANGES.md. - - -6. Create a pull request ------------------------- - -Send your contribution as a pull request on GitHub. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-guide.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-guide.rst deleted file mode 100644 index e5df0f8a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-guide.rst +++ /dev/null @@ -1,247 +0,0 @@ -Language definition guide -========================= - -Highlighting overview ---------------------- - -Programming language code consists of parts with different rules of parsing: keywords like ``for`` or ``if`` -don't make sense inside strings, strings may contain backslash-escaped symbols like ``\"`` -and comments usually don't contain anything interesting except the end of the comment. - -In highlight.js such parts are called "modes". - -Each mode consists of: - -* starting condition -* ending condition -* list of contained sub-modes -* lexing rules and keywords -* …exotic stuff like another language inside a language - -The parser's work is to look for modes and their keywords. -Upon finding, it wraps them into the markup ``...`` -and puts the name of the mode ("string", "comment", "number") -or a keyword group name ("keyword", "literal", "built-in") as the span's class name. - - -General syntax --------------- - -A language definition is a JavaScript object describing the default parsing mode for the language. -This default mode contains sub-modes which in turn contain other sub-modes, effectively making the language definition a tree of modes. - -Here's an example: - -:: - - { - case_insensitive: true, // language is case-insensitive - keywords: 'for if while', - contains: [ - { - className: 'string', - begin: '"', end: '"' - }, - hljs.COMMENT( - '/\\*', // begin - '\\*/', // end - { - contains: [ - { - className: 'doc', begin: '@\\w+' - } - ] - } - ) - ] - } - -Usually the default mode accounts for the majority of the code and describes all language keywords. -A notable exception here is XML in which a default mode is just a user text that doesn't contain any keywords, -and most interesting parsing happens inside tags. - - -Keywords --------- - -In the simple case language keywords are defined in a string, separated by space: - -:: - - { - keywords: 'else for if while' - } - -Some languages have different kinds of "keywords" that might not be called as such by the language spec -but are very close to them from the point of view of a syntax highlighter. These are all sorts of "literals", "built-ins", "symbols" and such. -To define such keyword groups the attribute ``keywords`` becomes an object each property of which defines its own group of keywords: - -:: - - { - keywords: { - keyword: 'else for if while', - literal: 'false true null' - } - } - -The group name becomes then a class name in a generated markup enabling different styling for different kinds of keywords. - -To detect keywords highlight.js breaks the processed chunk of code into separate words — a process called lexing. -The "word" here is defined by the regexp ``[a-zA-Z][a-zA-Z0-9_]*`` that works for keywords in most languages. -Different lexing rules can be defined by the ``lexemes`` attribute: - -:: - - { - lexemes '-[a-z]+', - keywords: '-import -export' - } - - -Sub-modes ---------- - -Sub-modes are listed in the ``contains`` attribute: - -:: - - { - keywords: '...', - contains: [ - hljs.QUOTE_STRING_MODE, - hljs.C_LINE_COMMENT, - { ... custom mode definition ... } - ] - } - -A mode can reference itself in the ``contains`` array by using a special keyword ``'self``'. -This is commonly used to define nested modes: - -:: - - { - className: 'object', - begin: '{', end: '}', - contains: [hljs.QUOTE_STRING_MODE, 'self'] - } - - -Markup generation ------------------ - -Modes usually generate actual highlighting markup — ```` elements with specific class names that are defined by the ``className`` attribute: - -:: - - { - contains: [ - { - className: 'string', - // ... other attributes - }, - { - className: 'number', - // ... - } - ] - } - -Names are not required to be unique, it's quite common to have several definitions with the same name. -For example, many languages have various syntaxes for strings, comments, etc… - -Sometimes modes are defined only to support specific parsing rules and aren't needed in the final markup. -A classic example is an escaping sequence inside strings allowing them to contain an ending quote. - -:: - - { - className: 'string', - begin: '"', end: '"', - contains: [{begin: '\\\\.'}], - } - -For such modes ``className`` attribute should be omitted so they won't generate excessive markup. - - -Mode attributes ---------------- - -Other useful attributes are defined in the :doc:`mode reference `. - - -.. _relevance: - -Relevance ---------- - -Highlight.js tries to automatically detect the language of a code fragment. -The heuristics is essentially simple: it tries to highlight a fragment with all the language definitions -and the one that yields most specific modes and keywords wins. The job of a language definition -is to help this heuristics by hinting relative relevance (or irrelevance) of modes. - -This is best illustrated by example. Python has special kinds of strings defined by prefix letters before the quotes: -``r"..."``, ``u"..."``. If a code fragment contains such strings there is a good chance that it's in Python. -So these string modes are given high relevance: - -:: - - { - className: 'string', - begin: 'r"', end: '"', - relevance: 10 - } - -On the other hand, conventional strings in plain single or double quotes aren't specific to any language -and it makes sense to bring their relevance to zero to lessen statistical noise: - -:: - - { - className: 'string', - begin: '"', end: '"', - relevance: 0 - } - -The default value for relevance is 1. When setting an explicit value it's recommended to use either 10 or 0. - -Keywords also influence relevance. Each of them usually has a relevance of 1, but there are some unique names -that aren't likely to be found outside of their languages, even in the form of variable names. -For example just having ``reinterpret_cast`` somewhere in the code is a good indicator that we're looking at C++. -It's worth to set relevance of such keywords a bit higher. This is done with a pipe: - -:: - - { - keywords: 'for if reinterpret_cast|10' - } - - -Illegal symbols ---------------- - -Another way to improve language detection is to define illegal symbols for a mode. -For example in Python first line of class definition (``class MyClass(object):``) cannot contain symbol "{" or a newline. -Presence of these symbols clearly shows that the language is not Python and the parser can drop this attempt early. - -Illegal symbols are defined as a a single regular expression: - -:: - - { - className: 'class', - illegal: '[${]' - } - - -Pre-defined modes and regular expressions ------------------------------------------ - -Many languages share common modes and regular expressions. Such expressions are defined in core highlight.js code -at the end under "Common regexps" and "Common modes" titles. Use them when possible. - - -Contributing ------------- - -Follow the :doc:`contributor checklist `. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-requests.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-requests.rst deleted file mode 100644 index 4e4c2f0b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/language-requests.rst +++ /dev/null @@ -1,17 +0,0 @@ -On requesting new languages -=========================== - -This is a general answer to requests for adding new languages that appear from -time to time in the highlight.js issue tracker and discussion group. - - Highlight.js doesn't have a fundamental plan for implementing languages, - instead the project works by accepting language definitions from - interested contributors. There are also no rules at the moment forbidding - any languages from being added to the library, no matter how obscure or - weird. - - This means that there's no point in requesting a new language without - providing an implementation for it. If you want to see a particular language - included in highlight.js but cannot implement it, the best way to make it - happen is to get another developer interested in doing so. Here's our - :doc:`language-guide`. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/line-numbers.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/line-numbers.rst deleted file mode 100644 index 674542d4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/line-numbers.rst +++ /dev/null @@ -1,39 +0,0 @@ -Line numbers -============ - -Highlight.js' notable lack of line numbers support is not an oversight but a -feature. Following is the explanation of this policy from the current project -maintainer (hey guys!): - - One of the defining design principles for highlight.js from the start was - simplicity. Not the simplicity of code (in fact, it's quite complex) but - the simplicity of usage and of the actual look of highlighted snippets on - HTML pages. Many highlighters, in my opinion, are overdoing it with such - things as separate colors for every single type of lexemes, striped - backgrounds, fancy buttons around code blocks and — yes — line numbers. - The more fancy stuff resides around the code the more it distracts a - reader from understanding it. - - This is why it's not a straightforward decision: this new feature will not - just make highlight.js better, it might actually make it worse simply by - making it look more bloated in blog posts around the Internet. This is why - I'm asking people to show that it's worth it. - - The only real use-case that ever was brought up in support of line numbers - is referencing code from the descriptive text around it. On my own blog I - was always solving this either with comments within the code itself or by - breaking the larger snippets into smaller ones and describing each small - part separately. I'm not saying that my solution is better. But I don't - see how line numbers are better either. And the only way to show that they - are better is to set up some usability research on the subject. I doubt - anyone would bother to do it. - - Then there's maintenance. So far the core code of highlight.js is - maintained by only one person — yours truly. Inclusion of any new code in - highlight.js means that from that moment I will have to fix bugs in it, - improve it further, make it work together with the rest of the code, - defend its design. And I don't want to do all this for the feature that I - consider "evil" and probably will never use myself. - -This position is `subject to discuss `_. -Also it doesn't stop anyone from forking the code and maintaining line-numbers implementation separately. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/reference.rst b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/reference.rst deleted file mode 100644 index ff4f2eff..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/highlight.js/docs/reference.rst +++ /dev/null @@ -1,298 +0,0 @@ -Mode reference -============== - -Types ------ - -Types of attributes values in this reference: - -+------------+-------------------------------------------------------------------------------------+ -| identifier | String suitable to be used as a Javascript variable and CSS class name | -| | (i.e. mostly ``/[A-Za-z0-9_]+/``) | -+------------+-------------------------------------------------------------------------------------+ -| regexp | String representing a Javascript regexp. | -| | Note that since it's not a literal regexp all back-slashes should be repeated twice | -+------------+-------------------------------------------------------------------------------------+ -| boolean | Javascript boolean: ``true`` or ``false`` | -+------------+-------------------------------------------------------------------------------------+ -| number | Javascript number | -+------------+-------------------------------------------------------------------------------------+ -| object | Javascript object: ``{ ... }`` | -+------------+-------------------------------------------------------------------------------------+ -| array | Javascript array: ``[ ... ]`` | -+------------+-------------------------------------------------------------------------------------+ - - -Attributes ----------- - -case_insensitive -^^^^^^^^^^^^^^^^ - -**type**: boolean - -Case insensitivity of language keywords and regexps. Used only on the top-level mode. - - -aliases -^^^^^^^ - -**type**: array - -A list of additional names (besides the canonical one given by the filename) that can be used to identify a language in HTML classes and in a call to :ref:`getLanguage `. - - -className -^^^^^^^^^ - -**type**: identifier - -The name of the mode. It is used as a class name in HTML markup. - -Multiple modes can have the same name. This is useful when a language has multiple variants of syntax -for one thing like string in single or double quotes. - - -begin -^^^^^ - -**type**: regexp - -Regular expression starting a mode. For example a single quote for strings or two forward slashes for C-style comments. -If absent, ``begin`` defaults to a regexp that matches anything, so the mode starts immediately. - - -end -^^^ - -**type**: regexp - -Regular expression ending a mode. For example a single quote for strings or "$" (end of line) for one-line comments. - -It's often the case that a beginning regular expression defines the entire mode and doesn't need any special ending. -For example a number can be defined with ``begin: "\\b\\d+"`` which spans all the digits. - -If absent, ``end`` defaults to a regexp that matches anything, so the mode ends immediately. - -Sometimes a mode can end not by itself but implicitly with its containing (parent) mode. -This is achieved with :ref:`endsWithParent ` attribute. - - -beginKeywords -^^^^^^^^^^^^^^^^ - -**type**: string - -Used instead of ``begin`` for modes starting with keywords to avoid needless repetition: - -:: - - { - begin: '\\b(extends|implements) ', - keywords: 'extends implements' - } - -… becomes: - -:: - - { - beginKeywords: 'extends implements' - } - -Unlike the :ref:`keywords ` attribute, this one allows only a simple list of space separated keywords. -If you do need additional features of ``keywords`` or you just need more keywords for this mode you may include ``keywords`` along with ``beginKeywords``. - - -.. _endsWithParent: - -endsWithParent -^^^^^^^^^^^^^^ - -**type**: boolean - -A flag showing that a mode ends when its parent ends. - -This is best demonstrated by example. In CSS syntax a selector has a set of rules contained within symbols "{" and "}". -Individual rules separated by ";" but the last one in a set can omit the terminating semicolon: - -:: - - p { - width: 100%; color: red - } - -This is when ``endsWithParent`` comes into play: - -:: - - { - className: 'rules', begin: '{', end: '}', - contains: [ - {className: 'rule', /* ... */ end: ';', endsWithParent: true} - ] - } - -.. _endsParent: - -endsParent -^^^^^^^^^^^^^^ - -**type**: boolean - -Forces closing of the parent mode right after the current mode is closed. - -This is used for modes that don't have an easily expressible ending lexeme but -instead could be closed after the last interesting sub-mode is found. - -Here's an example with two ways of defining functions in Elixir, one using a -keyword ``do`` and another using a comma: - -:: - - def foo :clear, list do - :ok - end - - def foo, do: IO.puts "hello world" - -Note that in the first case the parameter list after the function title may also -include a comma. And iIf we're only interested in highlighting a title we can -tell it to end the function definition after itself: - -:: - - { - className: 'function', - beginKeywords: 'def', end: /\B\b/, - contains: [ - { - className: 'title', - begin: hljs.IDENT_RE, endsParent: true - } - ] - } - -(The ``end: /\B\b/`` regex tells function to never end by itself.) - -.. _lexemes: - -lexemes -^^^^^^^ - -**type**: regexp - -A regular expression that extracts individual lexemes from language text to find :ref:`keywords ` among them. -Default value is ``hljs.IDENT_RE`` which works for most languages. - - -.. _keywords: - -keywords -^^^^^^^^ - -**type**: object - -Keyword definition comes in two forms: - -* ``'for while if else weird_voodoo|10 ... '`` -- a string of space-separated keywords with an optional relevance over a pipe -* ``{'keyword': ' ... ', 'literal': ' ... '}`` -- an object whose keys are names of different kinds of keywords and values are keyword definition strings in the first form - -For detailed explanation see :doc:`Language definition guide `. - - -illegal -^^^^^^^ - -**type**: regexp - -A regular expression that defines symbols illegal for the mode. -When the parser finds a match for illegal expression it immediately drops parsing the whole language altogether. - - -excludeBegin, excludeEnd -^^^^^^^^^^^^^^^^^^^^^^^^ - -**type**: boolean - -Exclude beginning or ending lexemes out of mode's generated markup. For example in CSS syntax a rule ends with a semicolon. -However visually it's better not to color it as the rule contents. Having ``excludeEnd: true`` forces a ```` element for the rule to close before the semicolon. - - -returnBegin -^^^^^^^^^^^ - -**type**: boolean - -Returns just found beginning lexeme back into parser. This is used when beginning of a sub-mode is a complex expression -that should not only be found within a parent mode but also parsed according to the rules of a sub-mode. - -Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution! - - -returnEnd -^^^^^^^^^ - -**type**: boolean - -Returns just found ending lexeme back into parser. This is used for example to parse Javascript embedded into HTML. -A Javascript block ends with the HTML closing tag ```` that cannot be parsed with Javascript rules. -So it is returned back into its parent HTML mode that knows what to do with it. - -Since the parser is effectively goes back it's quite possible to create a infinite loop here so use with caution! - - -contains -^^^^^^^^ - -**type**: array - -The list of sub-modes that can be found inside the mode. For detailed explanation see :doc:`Language definition guide `. - - -starts -^^^^^^ - -**type**: identifier - -The name of the mode that will start right after the current mode ends. The new mode won't be contained within the current one. - -Currently this attribute is used to highlight Javascript and CSS contained within HTML. -Tags `` - - - - -
{{ "%+010d"|sprintf:-123 }}
-
{{ "%+010d"|vsprintf:[-123] }}
-
{{ "%+010d"|fmt:-123 }}
-
{{ "%+010d"|vfmt:[-123] }}
-
{{ "I've got %2$d apples and %1$d oranges."|fmt:4:2 }}
-
{{ "I've got %(apples)d apples and %(oranges)d oranges."|fmt:{apples: 2, oranges: 4} }}
- - - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js deleted file mode 100644 index dbaf744d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! sprintf-js | Alexandru Marasteanu (http://alexei.ro/) | BSD-3-Clause */ - -angular.module("sprintf",[]).filter("sprintf",function(){return function(){return sprintf.apply(null,arguments)}}).filter("fmt",["$filter",function(a){return a("sprintf")}]).filter("vsprintf",function(){return function(a,b){return vsprintf(a,b)}}).filter("vfmt",["$filter",function(a){return a("vsprintf")}]); -//# sourceMappingURL=angular-sprintf.min.map \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js.map b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js.map deleted file mode 100644 index 055964c6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"angular-sprintf.min.js","sources":["../src/angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";;AAAAA,QACIC,OAAO,cACPC,OAAO,UAAW,WACd,MAAO,YACH,MAAOC,SAAQC,MAAM,KAAMC,cAGnCH,OAAO,OAAQ,UAAW,SAASI,GAC/B,MAAOA,GAAQ,cAEnBJ,OAAO,WAAY,WACf,MAAO,UAASK,EAAQC,GACpB,MAAOC,UAASF,EAAQC,MAGhCN,OAAO,QAAS,UAAW,SAASI,GAChC,MAAOA,GAAQ"} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.map b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.map deleted file mode 100644 index 055964c6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/angular-sprintf.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"angular-sprintf.min.js","sources":["../src/angular-sprintf.js"],"names":["angular","module","filter","sprintf","apply","arguments","$filter","format","argv","vsprintf"],"mappings":";;AAAAA,QACIC,OAAO,cACPC,OAAO,UAAW,WACd,MAAO,YACH,MAAOC,SAAQC,MAAM,KAAMC,cAGnCH,OAAO,OAAQ,UAAW,SAASI,GAC/B,MAAOA,GAAQ,cAEnBJ,OAAO,WAAY,WACf,MAAO,UAASK,EAAQC,GACpB,MAAOC,UAASF,EAAQC,MAGhCN,OAAO,QAAS,UAAW,SAASI,GAChC,MAAOA,GAAQ"} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js deleted file mode 100644 index dc61e51a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! sprintf-js | Alexandru Marasteanu (http://alexei.ro/) | BSD-3-Clause */ - -!function(a){function b(){var a=arguments[0],c=b.cache;return c[a]&&c.hasOwnProperty(a)||(c[a]=b.parse(a)),b.format.call(null,c[a],arguments)}function c(a){return Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function d(a,b){return Array(b+1).join(a)}var e={not_string:/[^s]/,number:/[diefg]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[\+\-]/};b.format=function(a,f){var g,h,i,j,k,l,m,n=1,o=a.length,p="",q=[],r=!0,s="";for(h=0;o>h;h++)if(p=c(a[h]),"string"===p)q[q.length]=a[h];else if("array"===p){if(j=a[h],j[2])for(g=f[n],i=0;i=0),j[8]){case"b":g=g.toString(2);break;case"c":g=String.fromCharCode(g);break;case"d":case"i":g=parseInt(g,10);break;case"j":g=JSON.stringify(g,null,j[6]?parseInt(j[6]):0);break;case"e":g=j[7]?g.toExponential(j[7]):g.toExponential();break;case"f":g=j[7]?parseFloat(g).toFixed(j[7]):parseFloat(g);break;case"g":g=j[7]?parseFloat(g).toPrecision(j[7]):parseFloat(g);break;case"o":g=g.toString(8);break;case"s":g=(g=String(g))&&j[7]?g.substring(0,j[7]):g;break;case"u":g>>>=0;break;case"x":g=g.toString(16);break;case"X":g=g.toString(16).toUpperCase()}e.json.test(j[8])?q[q.length]=g:(!e.number.test(j[8])||r&&!j[3]?s="":(s=r?"+":"-",g=g.toString().replace(e.sign,"")),l=j[4]?"0"===j[4]?"0":j[4].charAt(1):" ",m=j[6]-(s+g).length,k=j[6]&&m>0?d(l,m):"",q[q.length]=j[5]?s+g+k:"0"===l?s+k+g:k+s+g)}return q.join("")},b.cache={},b.parse=function(a){for(var b=a,c=[],d=[],f=0;b;){if(null!==(c=e.text.exec(b)))d[d.length]=c[0];else if(null!==(c=e.modulo.exec(b)))d[d.length]="%";else{if(null===(c=e.placeholder.exec(b)))throw new SyntaxError("[sprintf] unexpected placeholder");if(c[2]){f|=1;var g=[],h=c[2],i=[];if(null===(i=e.key.exec(h)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(g[g.length]=i[1];""!==(h=h.substring(i[0].length));)if(null!==(i=e.key_access.exec(h)))g[g.length]=i[1];else{if(null===(i=e.index_access.exec(h)))throw new SyntaxError("[sprintf] failed to parse named argument key");g[g.length]=i[1]}c[2]=g}else f|=2;if(3===f)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");d[d.length]=c}b=b.substring(c[0].length)}return d};var f=function(a,c,d){return d=(c||[]).slice(0),d.splice(0,0,a),b.apply(null,d)};"undefined"!=typeof exports?(exports.sprintf=b,exports.vsprintf=f):(a.sprintf=b,a.vsprintf=f,"function"==typeof define&&define.amd&&define(function(){return{sprintf:b,vsprintf:f}}))}("undefined"==typeof window?this:window); -//# sourceMappingURL=sprintf.min.map \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js.map b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js.map deleted file mode 100644 index 369dbafa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sprintf.min.js","sources":["../src/sprintf.js"],"names":["window","sprintf","key","arguments","cache","hasOwnProperty","parse","format","call","get_type","variable","Object","prototype","toString","slice","toLowerCase","str_repeat","input","multiplier","Array","join","re","not_string","number","json","not_json","text","modulo","placeholder","key_access","index_access","sign","parse_tree","argv","arg","i","k","match","pad","pad_character","pad_length","cursor","tree_length","length","node_type","output","is_positive","Error","test","isNaN","TypeError","String","fromCharCode","parseInt","JSON","stringify","toExponential","parseFloat","toFixed","substring","toUpperCase","replace","charAt","fmt","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","vsprintf","_argv","splice","apply","exports","define","amd","this"],"mappings":";;CAAA,SAAUA,GAeN,QAASC,KACL,GAAIC,GAAMC,UAAU,GAAIC,EAAQH,EAAQG,KAIxC,OAHMA,GAAMF,IAAQE,EAAMC,eAAeH,KACrCE,EAAMF,GAAOD,EAAQK,MAAMJ,IAExBD,EAAQM,OAAOC,KAAK,KAAMJ,EAAMF,GAAMC,WA4JjD,QAASM,GAASC,GACd,MAAOC,QAAOC,UAAUC,SAASL,KAAKE,GAAUI,MAAM,EAAG,IAAIC,cAGjE,QAASC,GAAWC,EAAOC,GACvB,MAAOC,OAAMD,EAAa,GAAGE,KAAKH,GApLtC,GAAII,IACAC,WAAY,OACZC,OAAQ,SACRC,KAAM,MACNC,SAAU,OACVC,KAAM,YACNC,OAAQ,WACRC,YAAa,yFACb1B,IAAK,sBACL2B,WAAY,wBACZC,aAAc,aACdC,KAAM,UAWV9B,GAAQM,OAAS,SAASyB,EAAYC,GAClC,GAAiEC,GAAkBC,EAAGC,EAAGC,EAAOC,EAAKC,EAAeC,EAAhHC,EAAS,EAAGC,EAAcV,EAAWW,OAAQC,EAAY,GAASC,KAA0DC,GAAc,EAAMf,EAAO,EAC3J,KAAKI,EAAI,EAAOO,EAAJP,EAAiBA,IAEzB,GADAS,EAAYnC,EAASuB,EAAWG,IACd,WAAdS,EACAC,EAAOA,EAAOF,QAAUX,EAAWG,OAElC,IAAkB,UAAdS,EAAuB,CAE5B,GADAP,EAAQL,EAAWG,GACfE,EAAM,GAEN,IADAH,EAAMD,EAAKQ,GACNL,EAAI,EAAGA,EAAIC,EAAM,GAAGM,OAAQP,IAAK,CAClC,IAAKF,EAAI7B,eAAegC,EAAM,GAAGD,IAC7B,KAAM,IAAIW,OAAM9C,EAAQ,yCAA0CoC,EAAM,GAAGD,IAE/EF,GAAMA,EAAIG,EAAM,GAAGD,QAIvBF,GADKG,EAAM,GACLJ,EAAKI,EAAM,IAGXJ,EAAKQ,IAOf,IAJqB,YAAjBhC,EAASyB,KACTA,EAAMA,KAGNb,EAAGC,WAAW0B,KAAKX,EAAM,KAAOhB,EAAGI,SAASuB,KAAKX,EAAM,KAAyB,UAAjB5B,EAASyB,IAAoBe,MAAMf,GAClG,KAAM,IAAIgB,WAAUjD,EAAQ,0CAA2CQ,EAASyB,IAOpF,QAJIb,EAAGE,OAAOyB,KAAKX,EAAM,MACrBS,EAAcZ,GAAO,GAGjBG,EAAM,IACV,IAAK,IACDH,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,EAAMiB,OAAOC,aAAalB,EAC9B,MACA,KAAK,IACL,IAAK,IACDA,EAAMmB,SAASnB,EAAK,GACxB,MACA,KAAK,IACDA,EAAMoB,KAAKC,UAAUrB,EAAK,KAAMG,EAAM,GAAKgB,SAAShB,EAAM,IAAM,EACpE,MACA,KAAK,IACDH,EAAMG,EAAM,GAAKH,EAAIsB,cAAcnB,EAAM,IAAMH,EAAIsB,eACvD,MACA,KAAK,IACDtB,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKwB,QAAQrB,EAAM,IAAMoB,WAAWvB,EACpE,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,GAAQA,EAAMiB,OAAOjB,KAASG,EAAM,GAAKH,EAAIyB,UAAU,EAAGtB,EAAM,IAAMH,CAC1E,MACA,KAAK,IACDA,KAAc,CAClB,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,GACvB,MACA,KAAK,IACDqB,EAAMA,EAAIrB,SAAS,IAAI+C,cAG3BvC,EAAGG,KAAKwB,KAAKX,EAAM,IACnBQ,EAAOA,EAAOF,QAAUT,IAGpBb,EAAGE,OAAOyB,KAAKX,EAAM,KAASS,IAAeT,EAAM,GAKnDN,EAAO,IAJPA,EAAOe,EAAc,IAAM,IAC3BZ,EAAMA,EAAIrB,WAAWgD,QAAQxC,EAAGU,KAAM,KAK1CQ,EAAgBF,EAAM,GAAkB,MAAbA,EAAM,GAAa,IAAMA,EAAM,GAAGyB,OAAO,GAAK,IACzEtB,EAAaH,EAAM,IAAMN,EAAOG,GAAKS,OACrCL,EAAMD,EAAM,IAAMG,EAAa,EAAIxB,EAAWuB,EAAeC,GAAoB,GACjFK,EAAOA,EAAOF,QAAUN,EAAM,GAAKN,EAAOG,EAAMI,EAAyB,MAAlBC,EAAwBR,EAAOO,EAAMJ,EAAMI,EAAMP,EAAOG,GAI3H,MAAOW,GAAOzB,KAAK,KAGvBnB,EAAQG,SAERH,EAAQK,MAAQ,SAASyD,GAErB,IADA,GAAIC,GAAOD,EAAK1B,KAAYL,KAAiBiC,EAAY,EAClDD,GAAM,CACT,GAAqC,QAAhC3B,EAAQhB,EAAGK,KAAKwC,KAAKF,IACtBhC,EAAWA,EAAWW,QAAUN,EAAM,OAErC,IAAuC,QAAlCA,EAAQhB,EAAGM,OAAOuC,KAAKF,IAC7BhC,EAAWA,EAAWW,QAAU,QAE/B,CAAA,GAA4C,QAAvCN,EAAQhB,EAAGO,YAAYsC,KAAKF,IAgClC,KAAM,IAAIG,aAAY,mCA/BtB,IAAI9B,EAAM,GAAI,CACV4B,GAAa,CACb,IAAIG,MAAiBC,EAAoBhC,EAAM,GAAIiC,IACnD,IAAuD,QAAlDA,EAAcjD,EAAGnB,IAAIgE,KAAKG,IAe3B,KAAM,IAAIF,aAAY,+CAbtB,KADAC,EAAWA,EAAWzB,QAAU2B,EAAY,GACwC,MAA5ED,EAAoBA,EAAkBV,UAAUW,EAAY,GAAG3B,UACnE,GAA8D,QAAzD2B,EAAcjD,EAAGQ,WAAWqC,KAAKG,IAClCD,EAAWA,EAAWzB,QAAU2B,EAAY,OAE3C,CAAA,GAAgE,QAA3DA,EAAcjD,EAAGS,aAAaoC,KAAKG,IAIzC,KAAM,IAAIF,aAAY,+CAHtBC,GAAWA,EAAWzB,QAAU2B,EAAY,GAUxDjC,EAAM,GAAK+B,MAGXH,IAAa,CAEjB,IAAkB,IAAdA,EACA,KAAM,IAAIlB,OAAM,4EAEpBf,GAAWA,EAAWW,QAAUN,EAKpC2B,EAAOA,EAAKL,UAAUtB,EAAM,GAAGM,QAEnC,MAAOX,GAGX,IAAIuC,GAAW,SAASR,EAAK9B,EAAMuC,GAG/B,MAFAA,IAASvC,OAAYnB,MAAM,GAC3B0D,EAAMC,OAAO,EAAG,EAAGV,GACZ9D,EAAQyE,MAAM,KAAMF,GAiBR,oBAAZG,UACPA,QAAQ1E,QAAUA,EAClB0E,QAAQJ,SAAWA,IAGnBvE,EAAOC,QAAUA,EACjBD,EAAOuE,SAAWA,EAEI,kBAAXK,SAAyBA,OAAOC,KACvCD,OAAO,WACH,OACI3E,QAASA,EACTsE,SAAUA,OAKT,mBAAXvE,QAAyB8E,KAAO9E"} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.map b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.map deleted file mode 100644 index ee011aaa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/dist/sprintf.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"sprintf.min.js","sources":["../src/sprintf.js"],"names":["window","sprintf","key","arguments","cache","hasOwnProperty","parse","format","call","get_type","variable","Object","prototype","toString","slice","toLowerCase","str_repeat","input","multiplier","Array","join","re","not_string","number","json","not_json","text","modulo","placeholder","key_access","index_access","sign","parse_tree","argv","arg","i","k","match","pad","pad_character","pad_length","cursor","tree_length","length","node_type","output","is_positive","Error","test","isNaN","TypeError","String","fromCharCode","parseInt","JSON","stringify","toExponential","parseFloat","toFixed","toPrecision","substring","toUpperCase","replace","charAt","fmt","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","vsprintf","_argv","splice","apply","exports","define","amd","this"],"mappings":";;CAAA,SAAUA,GAeN,QAASC,KACL,GAAIC,GAAMC,UAAU,GAAIC,EAAQH,EAAQG,KAIxC,OAHMA,GAAMF,IAAQE,EAAMC,eAAeH,KACrCE,EAAMF,GAAOD,EAAQK,MAAMJ,IAExBD,EAAQM,OAAOC,KAAK,KAAMJ,EAAMF,GAAMC,WA+JjD,QAASM,GAASC,GACd,MAAOC,QAAOC,UAAUC,SAASL,KAAKE,GAAUI,MAAM,EAAG,IAAIC,cAGjE,QAASC,GAAWC,EAAOC,GACvB,MAAOC,OAAMD,EAAa,GAAGE,KAAKH,GAvLtC,GAAII,IACAC,WAAY,OACZC,OAAQ,UACRC,KAAM,MACNC,SAAU,OACVC,KAAM,YACNC,OAAQ,WACRC,YAAa,yFACb1B,IAAK,sBACL2B,WAAY,wBACZC,aAAc,aACdC,KAAM,UAWV9B,GAAQM,OAAS,SAASyB,EAAYC,GAClC,GAAiEC,GAAkBC,EAAGC,EAAGC,EAAOC,EAAKC,EAAeC,EAAhHC,EAAS,EAAGC,EAAcV,EAAWW,OAAQC,EAAY,GAASC,KAA0DC,GAAc,EAAMf,EAAO,EAC3J,KAAKI,EAAI,EAAOO,EAAJP,EAAiBA,IAEzB,GADAS,EAAYnC,EAASuB,EAAWG,IACd,WAAdS,EACAC,EAAOA,EAAOF,QAAUX,EAAWG,OAElC,IAAkB,UAAdS,EAAuB,CAE5B,GADAP,EAAQL,EAAWG,GACfE,EAAM,GAEN,IADAH,EAAMD,EAAKQ,GACNL,EAAI,EAAGA,EAAIC,EAAM,GAAGM,OAAQP,IAAK,CAClC,IAAKF,EAAI7B,eAAegC,EAAM,GAAGD,IAC7B,KAAM,IAAIW,OAAM9C,EAAQ,yCAA0CoC,EAAM,GAAGD,IAE/EF,GAAMA,EAAIG,EAAM,GAAGD,QAIvBF,GADKG,EAAM,GACLJ,EAAKI,EAAM,IAGXJ,EAAKQ,IAOf,IAJqB,YAAjBhC,EAASyB,KACTA,EAAMA,KAGNb,EAAGC,WAAW0B,KAAKX,EAAM,KAAOhB,EAAGI,SAASuB,KAAKX,EAAM,KAAyB,UAAjB5B,EAASyB,IAAoBe,MAAMf,GAClG,KAAM,IAAIgB,WAAUjD,EAAQ,0CAA2CQ,EAASyB,IAOpF,QAJIb,EAAGE,OAAOyB,KAAKX,EAAM,MACrBS,EAAcZ,GAAO,GAGjBG,EAAM,IACV,IAAK,IACDH,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,EAAMiB,OAAOC,aAAalB,EAC9B,MACA,KAAK,IACL,IAAK,IACDA,EAAMmB,SAASnB,EAAK,GACxB,MACA,KAAK,IACDA,EAAMoB,KAAKC,UAAUrB,EAAK,KAAMG,EAAM,GAAKgB,SAAShB,EAAM,IAAM,EACpE,MACA,KAAK,IACDH,EAAMG,EAAM,GAAKH,EAAIsB,cAAcnB,EAAM,IAAMH,EAAIsB,eACvD,MACA,KAAK,IACDtB,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKwB,QAAQrB,EAAM,IAAMoB,WAAWvB,EACpE,MACA,KAAK,IACDA,EAAMG,EAAM,GAAKoB,WAAWvB,GAAKyB,YAAYtB,EAAM,IAAMoB,WAAWvB,EACxE,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,EACvB,MACA,KAAK,IACDqB,GAAQA,EAAMiB,OAAOjB,KAASG,EAAM,GAAKH,EAAI0B,UAAU,EAAGvB,EAAM,IAAMH,CAC1E,MACA,KAAK,IACDA,KAAc,CAClB,MACA,KAAK,IACDA,EAAMA,EAAIrB,SAAS,GACvB,MACA,KAAK,IACDqB,EAAMA,EAAIrB,SAAS,IAAIgD,cAG3BxC,EAAGG,KAAKwB,KAAKX,EAAM,IACnBQ,EAAOA,EAAOF,QAAUT,IAGpBb,EAAGE,OAAOyB,KAAKX,EAAM,KAASS,IAAeT,EAAM,GAKnDN,EAAO,IAJPA,EAAOe,EAAc,IAAM,IAC3BZ,EAAMA,EAAIrB,WAAWiD,QAAQzC,EAAGU,KAAM,KAK1CQ,EAAgBF,EAAM,GAAkB,MAAbA,EAAM,GAAa,IAAMA,EAAM,GAAG0B,OAAO,GAAK,IACzEvB,EAAaH,EAAM,IAAMN,EAAOG,GAAKS,OACrCL,EAAMD,EAAM,IAAMG,EAAa,EAAIxB,EAAWuB,EAAeC,GAAoB,GACjFK,EAAOA,EAAOF,QAAUN,EAAM,GAAKN,EAAOG,EAAMI,EAAyB,MAAlBC,EAAwBR,EAAOO,EAAMJ,EAAMI,EAAMP,EAAOG,GAI3H,MAAOW,GAAOzB,KAAK,KAGvBnB,EAAQG,SAERH,EAAQK,MAAQ,SAAS0D,GAErB,IADA,GAAIC,GAAOD,EAAK3B,KAAYL,KAAiBkC,EAAY,EAClDD,GAAM,CACT,GAAqC,QAAhC5B,EAAQhB,EAAGK,KAAKyC,KAAKF,IACtBjC,EAAWA,EAAWW,QAAUN,EAAM,OAErC,IAAuC,QAAlCA,EAAQhB,EAAGM,OAAOwC,KAAKF,IAC7BjC,EAAWA,EAAWW,QAAU,QAE/B,CAAA,GAA4C,QAAvCN,EAAQhB,EAAGO,YAAYuC,KAAKF,IAgClC,KAAM,IAAIG,aAAY,mCA/BtB,IAAI/B,EAAM,GAAI,CACV6B,GAAa,CACb,IAAIG,MAAiBC,EAAoBjC,EAAM,GAAIkC,IACnD,IAAuD,QAAlDA,EAAclD,EAAGnB,IAAIiE,KAAKG,IAe3B,KAAM,IAAIF,aAAY,+CAbtB,KADAC,EAAWA,EAAW1B,QAAU4B,EAAY,GACwC,MAA5ED,EAAoBA,EAAkBV,UAAUW,EAAY,GAAG5B,UACnE,GAA8D,QAAzD4B,EAAclD,EAAGQ,WAAWsC,KAAKG,IAClCD,EAAWA,EAAW1B,QAAU4B,EAAY,OAE3C,CAAA,GAAgE,QAA3DA,EAAclD,EAAGS,aAAaqC,KAAKG,IAIzC,KAAM,IAAIF,aAAY,+CAHtBC,GAAWA,EAAW1B,QAAU4B,EAAY,GAUxDlC,EAAM,GAAKgC,MAGXH,IAAa,CAEjB,IAAkB,IAAdA,EACA,KAAM,IAAInB,OAAM,4EAEpBf,GAAWA,EAAWW,QAAUN,EAKpC4B,EAAOA,EAAKL,UAAUvB,EAAM,GAAGM,QAEnC,MAAOX,GAGX,IAAIwC,GAAW,SAASR,EAAK/B,EAAMwC,GAG/B,MAFAA,IAASxC,OAAYnB,MAAM,GAC3B2D,EAAMC,OAAO,EAAG,EAAGV,GACZ/D,EAAQ0E,MAAM,KAAMF,GAiBR,oBAAZG,UACPA,QAAQ3E,QAAUA,EAClB2E,QAAQJ,SAAWA,IAGnBxE,EAAOC,QAAUA,EACjBD,EAAOwE,SAAWA,EAEI,kBAAXK,SAAyBA,OAAOC,KACvCD,OAAO,WACH,OACI5E,QAASA,EACTuE,SAAUA,OAKT,mBAAXxE,QAAyB+E,KAAO/E"} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/gruntfile.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/gruntfile.js deleted file mode 100644 index 246e1c3b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/gruntfile.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = function(grunt) { - grunt.initConfig({ - pkg: grunt.file.readJSON("package.json"), - - uglify: { - options: { - banner: "/*! <%= pkg.name %> | <%= pkg.author %> | <%= pkg.license %> */\n", - sourceMap: true - }, - build: { - files: [ - { - src: "src/sprintf.js", - dest: "dist/sprintf.min.js" - }, - { - src: "src/angular-sprintf.js", - dest: "dist/angular-sprintf.min.js" - } - ] - } - }, - - watch: { - js: { - files: "src/*.js", - tasks: ["uglify"] - } - } - }) - - grunt.loadNpmTasks("grunt-contrib-uglify") - grunt.loadNpmTasks("grunt-contrib-watch") - - grunt.registerTask("default", ["uglify", "watch"]) -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/package.json deleted file mode 100644 index 6e9f1d73..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "sprintf-js", - "version": "1.0.3", - "description": "JavaScript sprintf implementation", - "author": { - "name": "Alexandru Marasteanu", - "email": "hello@alexei.ro", - "url": "http://alexei.ro/" - }, - "main": "src/sprintf.js", - "scripts": { - "test": "mocha test/test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/alexei/sprintf.js.git" - }, - "license": "BSD-3-Clause", - "devDependencies": { - "mocha": "*", - "grunt": "*", - "grunt-contrib-watch": "*", - "grunt-contrib-uglify": "*" - }, - "gitHead": "747b806c2dab5b64d5c9958c42884946a187c3b1", - "bugs": { - "url": "https://github.com/alexei/sprintf.js/issues" - }, - "homepage": "https://github.com/alexei/sprintf.js#readme", - "_id": "sprintf-js@1.0.3", - "_shasum": "04e6926f662895354f3dd015203633b857297e2c", - "_from": "sprintf-js@>=1.0.2 <1.1.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "alexei", - "email": "hello@alexei.ro" - }, - "dist": { - "shasum": "04e6926f662895354f3dd015203633b857297e2c", - "tarball": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - }, - "maintainers": [ - { - "name": "alexei", - "email": "hello@alexei.ro" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/angular-sprintf.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/angular-sprintf.js deleted file mode 100644 index 9c69123b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/angular-sprintf.js +++ /dev/null @@ -1,18 +0,0 @@ -angular. - module("sprintf", []). - filter("sprintf", function() { - return function() { - return sprintf.apply(null, arguments) - } - }). - filter("fmt", ["$filter", function($filter) { - return $filter("sprintf") - }]). - filter("vsprintf", function() { - return function(format, argv) { - return vsprintf(format, argv) - } - }). - filter("vfmt", ["$filter", function($filter) { - return $filter("vsprintf") - }]) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/sprintf.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/sprintf.js deleted file mode 100644 index c0fc7c08..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/src/sprintf.js +++ /dev/null @@ -1,208 +0,0 @@ -(function(window) { - var re = { - not_string: /[^s]/, - number: /[diefg]/, - json: /[j]/, - not_json: /[^j]/, - text: /^[^\x25]+/, - modulo: /^\x25{2}/, - placeholder: /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/, - key: /^([a-z_][a-z_\d]*)/i, - key_access: /^\.([a-z_][a-z_\d]*)/i, - index_access: /^\[(\d+)\]/, - sign: /^[\+\-]/ - } - - function sprintf() { - var key = arguments[0], cache = sprintf.cache - if (!(cache[key] && cache.hasOwnProperty(key))) { - cache[key] = sprintf.parse(key) - } - return sprintf.format.call(null, cache[key], arguments) - } - - sprintf.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = "", arg, output = [], i, k, match, pad, pad_character, pad_length, is_positive = true, sign = "" - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]) - if (node_type === "string") { - output[output.length] = parse_tree[i] - } - else if (node_type === "array") { - match = parse_tree[i] // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor] - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw new Error(sprintf("[sprintf] property '%s' does not exist", match[2][k])) - } - arg = arg[match[2][k]] - } - } - else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]] - } - else { // positional argument (implicit) - arg = argv[cursor++] - } - - if (get_type(arg) == "function") { - arg = arg() - } - - if (re.not_string.test(match[8]) && re.not_json.test(match[8]) && (get_type(arg) != "number" && isNaN(arg))) { - throw new TypeError(sprintf("[sprintf] expecting number but found %s", get_type(arg))) - } - - if (re.number.test(match[8])) { - is_positive = arg >= 0 - } - - switch (match[8]) { - case "b": - arg = arg.toString(2) - break - case "c": - arg = String.fromCharCode(arg) - break - case "d": - case "i": - arg = parseInt(arg, 10) - break - case "j": - arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0) - break - case "e": - arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential() - break - case "f": - arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg) - break - case "g": - arg = match[7] ? parseFloat(arg).toPrecision(match[7]) : parseFloat(arg) - break - case "o": - arg = arg.toString(8) - break - case "s": - arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg) - break - case "u": - arg = arg >>> 0 - break - case "x": - arg = arg.toString(16) - break - case "X": - arg = arg.toString(16).toUpperCase() - break - } - if (re.json.test(match[8])) { - output[output.length] = arg - } - else { - if (re.number.test(match[8]) && (!is_positive || match[3])) { - sign = is_positive ? "+" : "-" - arg = arg.toString().replace(re.sign, "") - } - else { - sign = "" - } - pad_character = match[4] ? match[4] === "0" ? "0" : match[4].charAt(1) : " " - pad_length = match[6] - (sign + arg).length - pad = match[6] ? (pad_length > 0 ? str_repeat(pad_character, pad_length) : "") : "" - output[output.length] = match[5] ? sign + arg + pad : (pad_character === "0" ? sign + pad + arg : pad + sign + arg) - } - } - } - return output.join("") - } - - sprintf.cache = {} - - sprintf.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0 - while (_fmt) { - if ((match = re.text.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = match[0] - } - else if ((match = re.modulo.exec(_fmt)) !== null) { - parse_tree[parse_tree.length] = "%" - } - else if ((match = re.placeholder.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1 - var field_list = [], replacement_field = match[2], field_match = [] - if ((field_match = re.key.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") { - if ((field_match = re.key_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else if ((field_match = re.index_access.exec(replacement_field)) !== null) { - field_list[field_list.length] = field_match[1] - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - } - } - else { - throw new SyntaxError("[sprintf] failed to parse named argument key") - } - match[2] = field_list - } - else { - arg_names |= 2 - } - if (arg_names === 3) { - throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported") - } - parse_tree[parse_tree.length] = match - } - else { - throw new SyntaxError("[sprintf] unexpected placeholder") - } - _fmt = _fmt.substring(match[0].length) - } - return parse_tree - } - - var vsprintf = function(fmt, argv, _argv) { - _argv = (argv || []).slice(0) - _argv.splice(0, 0, fmt) - return sprintf.apply(null, _argv) - } - - /** - * helpers - */ - function get_type(variable) { - return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase() - } - - function str_repeat(input, multiplier) { - return Array(multiplier + 1).join(input) - } - - /** - * export to either browser or node.js - */ - if (typeof exports !== "undefined") { - exports.sprintf = sprintf - exports.vsprintf = vsprintf - } - else { - window.sprintf = sprintf - window.vsprintf = vsprintf - - if (typeof define === "function" && define.amd) { - define(function() { - return { - sprintf: sprintf, - vsprintf: vsprintf - } - }) - } - } -})(typeof window === "undefined" ? this : window); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/test/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/test/test.js deleted file mode 100644 index 6f57b253..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/node_modules/sprintf-js/test/test.js +++ /dev/null @@ -1,82 +0,0 @@ -var assert = require("assert"), - sprintfjs = require("../src/sprintf.js"), - sprintf = sprintfjs.sprintf, - vsprintf = sprintfjs.vsprintf - -describe("sprintfjs", function() { - var pi = 3.141592653589793 - - it("should return formated strings for simple placeholders", function() { - assert.equal("%", sprintf("%%")) - assert.equal("10", sprintf("%b", 2)) - assert.equal("A", sprintf("%c", 65)) - assert.equal("2", sprintf("%d", 2)) - assert.equal("2", sprintf("%i", 2)) - assert.equal("2", sprintf("%d", "2")) - assert.equal("2", sprintf("%i", "2")) - assert.equal('{"foo":"bar"}', sprintf("%j", {foo: "bar"})) - assert.equal('["foo","bar"]', sprintf("%j", ["foo", "bar"])) - assert.equal("2e+0", sprintf("%e", 2)) - assert.equal("2", sprintf("%u", 2)) - assert.equal("4294967294", sprintf("%u", -2)) - assert.equal("2.2", sprintf("%f", 2.2)) - assert.equal("3.141592653589793", sprintf("%g", pi)) - assert.equal("10", sprintf("%o", 8)) - assert.equal("%s", sprintf("%s", "%s")) - assert.equal("ff", sprintf("%x", 255)) - assert.equal("FF", sprintf("%X", 255)) - assert.equal("Polly wants a cracker", sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants")) - assert.equal("Hello world!", sprintf("Hello %(who)s!", {"who": "world"})) - }) - - it("should return formated strings for complex placeholders", function() { - // sign - assert.equal("2", sprintf("%d", 2)) - assert.equal("-2", sprintf("%d", -2)) - assert.equal("+2", sprintf("%+d", 2)) - assert.equal("-2", sprintf("%+d", -2)) - assert.equal("2", sprintf("%i", 2)) - assert.equal("-2", sprintf("%i", -2)) - assert.equal("+2", sprintf("%+i", 2)) - assert.equal("-2", sprintf("%+i", -2)) - assert.equal("2.2", sprintf("%f", 2.2)) - assert.equal("-2.2", sprintf("%f", -2.2)) - assert.equal("+2.2", sprintf("%+f", 2.2)) - assert.equal("-2.2", sprintf("%+f", -2.2)) - assert.equal("-2.3", sprintf("%+.1f", -2.34)) - assert.equal("-0.0", sprintf("%+.1f", -0.01)) - assert.equal("3.14159", sprintf("%.6g", pi)) - assert.equal("3.14", sprintf("%.3g", pi)) - assert.equal("3", sprintf("%.1g", pi)) - assert.equal("-000000123", sprintf("%+010d", -123)) - assert.equal("______-123", sprintf("%+'_10d", -123)) - assert.equal("-234.34 123.2", sprintf("%f %f", -234.34, 123.2)) - - // padding - assert.equal("-0002", sprintf("%05d", -2)) - assert.equal("-0002", sprintf("%05i", -2)) - assert.equal(" <", sprintf("%5s", "<")) - assert.equal("0000<", sprintf("%05s", "<")) - assert.equal("____<", sprintf("%'_5s", "<")) - assert.equal("> ", sprintf("%-5s", ">")) - assert.equal(">0000", sprintf("%0-5s", ">")) - assert.equal(">____", sprintf("%'_-5s", ">")) - assert.equal("xxxxxx", sprintf("%5s", "xxxxxx")) - assert.equal("1234", sprintf("%02u", 1234)) - assert.equal(" -10.235", sprintf("%8.3f", -10.23456)) - assert.equal("-12.34 xxx", sprintf("%f %s", -12.34, "xxx")) - assert.equal('{\n "foo": "bar"\n}', sprintf("%2j", {foo: "bar"})) - assert.equal('[\n "foo",\n "bar"\n]', sprintf("%2j", ["foo", "bar"])) - - // precision - assert.equal("2.3", sprintf("%.1f", 2.345)) - assert.equal("xxxxx", sprintf("%5.5s", "xxxxxx")) - assert.equal(" x", sprintf("%5.1s", "xxxxxx")) - - }) - - it("should return formated strings for callbacks", function() { - assert.equal("foobar", sprintf("%s", function() { return "foobar" })) - assert.equal(Date.now(), sprintf("%s", Date.now)) // should pass... - }) -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/package.json deleted file mode 100644 index 928f0e43..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/argparse/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "argparse", - "description": "Very powerful CLI arguments parser. Native port of argparse - python's options parsing library", - "version": "1.0.3", - "keywords": [ - "cli", - "parser", - "argparse", - "option", - "args" - ], - "homepage": "https://github.com/nodeca/argparse", - "contributors": [ - { - "name": "Eugene Shkuropat" - }, - { - "name": "Paul Jacobson" - } - ], - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/nodeca/argparse.git" - }, - "scripts": { - "test": "make test" - }, - "dependencies": { - "lodash": ">= 3.2.0 < 4.0.0", - "sprintf-js": "~1.0.2" - }, - "devDependencies": { - "mocha": "*" - }, - "gitHead": "e46e471f113ba31074c0d0c156f93fd7a618b27c", - "bugs": { - "url": "https://github.com/nodeca/argparse/issues" - }, - "_id": "argparse@1.0.3", - "_shasum": "14389deeb0c28fc4cda9405b9f532a4e3785ce84", - "_from": "argparse@>=1.0.0 <1.1.0", - "_npmVersion": "2.14.7", - "_nodeVersion": "4.2.1", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "14389deeb0c28fc4cda9405b9f532a4e3785ce84", - "tarball": "http://registry.npmjs.org/argparse/-/argparse-1.0.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/CHANGELOG.md deleted file mode 100644 index 9594c214..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/CHANGELOG.md +++ /dev/null @@ -1,41 +0,0 @@ -0.1.5 / 2015-03-13 ------------------- - -- Fixed special chars handling (line breaks). -- Fixed demo permalink encode/decode. - - -0.1.4 / 2015-03-12 ------------------- - -- Allow `..` and `...` inside of link paths (#9). Useful for github links with - commit ranges. -- Added `.pretest()` method for speed optimizations. -- Autogenerate demo sample from fixtures. - - -0.1.3 / 2015-03-11 ------------------- - -- Maintenance release. Deps update. - - -0.1.2 / 2015-02-26 ------------------- - -- Fixed blockquoted links (some symbols exclusions), thanks to @MayhemYDG. -- Fixed demo permalinks, thanks to @MayhemYDG. - - -0.1.1 / 2015-02-22 ------------------- - -- Moved unicode data to external package. -- Demo permalink improvements. -- Docs update. - - -0.1.0 / 2015-02-12 ------------------- - -- First release. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/LICENSE deleted file mode 100644 index 67596f5f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2015 Vitaly Puzrin. - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/README.md deleted file mode 100644 index 8f1533bf..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/README.md +++ /dev/null @@ -1,170 +0,0 @@ -linkify-it -========== - -[![Build Status](https://img.shields.io/travis/markdown-it/linkify-it/master.svg?style=flat)](https://travis-ci.org/markdown-it/linkify-it) -[![NPM version](https://img.shields.io/npm/v/linkify-it.svg?style=flat)](https://www.npmjs.org/package/linkify-it) -[![Coverage Status](https://img.shields.io/coveralls/markdown-it/linkify-it/master.svg?style=flat)](https://coveralls.io/r/markdown-it/linkify-it?branch=master) -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/markdown-it/linkify-it) - -> Links recognition library with FULL unicode support. -> Focused on high quality link patterns detection in plain text. - -__[Demo](http://markdown-it.github.io/linkify-it/)__ - -Why it's awesome: - -- Full unicode support, _with astral characters_! -- International domains support. -- Allows rules extension & custom normalizers. - - -Install -------- - -```bash -npm install linkify-it --save -``` - -Browserification is also supported. - - -Usage examples --------------- - -##### Example 1 - -```js -var linkify = require('linkify-it')(); - -// Reload full tlds list & add uniffocial `.onion` domain. -linkify - .tlds(require('tlds')) // Reload with full tlds list - .tlds('.onion', true); // Add uniffocial `.onion` domain - .linkify.add('git:', 'http:'); // Add `git:` ptotocol as "alias" - .linkify.add('ftp:', null); // Disable `ftp:` ptotocol - -console.log(linkify.test('Site github.com!')); // true - -console.log(linkify.match('Site github.com!')); // [ { - // schema: "", - // index: 5, - // lastIndex: 15, - // raw: "github.com", - // text: "github.com", - // url: "http://github.com", - // } ] -``` - -##### Exmple 2. Add twitter mentions handler - -```js -linkify.add('@', { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.twitter) { - self.re.twitter = new RegExp( - '^([a-zA-Z0-9_]){1,15}(?!_)(?=$|' + self.re.src_ZPCcCf + ')' - ); - } - if (self.re.twitter.test(tail)) { - // Linkifier allows punctuation chars before prefix, - // but we additionally disable `@` ("@@mention" is invalid) - if (pos >= 2 && tail[pos - 2] === '@') { - return false; - } - return tail.match(self.re.twitter)[0].length; - } - return 0; - }, - normalize: function (match) { - match.url = 'https://twitter.com/' + match.url.replace(/^@/, ''); - } -}); -``` - - -API ---- - -__[API documentation](http://markdown-it.github.io/linkify-it/doc)__ - -### new LinkifyIt(schemas) - -Creates new linkifier instance with optional additional schemas. -Can be called without `new` keyword for convenience. - -By default understands: - -- `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links -- "fuzzy" links and emails (google.com, foo@bar.com). - -`schemas` is an object, where each key/value describes protocol/rule: - -- __key__ - link prefix (usually, protocol name with `:` at the end, `skype:` - for example). `linkify-it` makes shure that prefix is not preceeded with - alphanumeric char. -- __value__ - rule to check tail after link prefix - - _String_ - just alias to existing rule - - _Object_ - - _validate_ - validator function (should return matched length on success), - or `RegExp`. - - _normalize_ - optional function to normalize text & url of matched result - (for example, for twitter mentions). - - -### .test(text) - -Searches linkifiable pattern and returns `true` on success or `false` on fail. - - -### .pretest(text) - -Quick check if link MAY BE can exist. Can be used to optimize more expensive -`.test()` calls. Return `false` if link can not be found, `true` - if `.test()` -call needed to know exactly. - - -### .testSchemaAt(text, name, offset) - -Similar to `.test()` but checks only specific protocol tail exactly at given -position. Returns length of found pattern (0 on fail). - - -### .match(text) - -Returns `Array` of found link matches or null if nothing found. - -Each match has: - -- __schema__ - link schema, can be empty for fuzzy links, or `//` for - protocol-neutral links. -- __index__ - offset of matched text -- __lastIndex__ - index of next char after mathch end -- __raw__ - matched text -- __text__ - normalized text -- __url__ - link, generated from matched text - - -### .tlds(list[, keepOld]) - -Load (or merge) new tlds list. Those are user for fuzzy links (without prefix) -to avoid false positives. By default this algorythm used: - -- hostname with any 2-letter root zones are ok. -- biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф - are ok. -- encoded (`xn--...`) root zones are ok. - -If list is replaced, then exact match for 2-chars root zones will be checked. - - -### .add(schema, definition) - -Add new rule with `schema` prefix. For definition details see constructor -description. To disable existing rule use `.add(name, null)` - - -## License - -[MIT](https://github.com/markdown-it/linkify-it/blob/master/LICENSE) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/index.js deleted file mode 100644 index 5b0eb5d3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/index.js +++ /dev/null @@ -1,564 +0,0 @@ -'use strict'; - - -//////////////////////////////////////////////////////////////////////////////// -// Helpers - -// Merge objects -// -function assign(obj /*from1, from2, from3, ...*/) { - var sources = Array.prototype.slice.call(arguments, 1); - - sources.forEach(function (source) { - if (!source) { return; } - - Object.keys(source).forEach(function (key) { - obj[key] = source[key]; - }); - }); - - return obj; -} - -function _class(obj) { return Object.prototype.toString.call(obj); } -function isString(obj) { return _class(obj) === '[object String]'; } -function isObject(obj) { return _class(obj) === '[object Object]'; } -function isRegExp(obj) { return _class(obj) === '[object RegExp]'; } -function isFunction(obj) { return _class(obj) === '[object Function]'; } - - -function escapeRE (str) { return str.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&'); } - -//////////////////////////////////////////////////////////////////////////////// - - -var defaultSchemas = { - 'http:': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.http) { - // compile lazily, because "host"-containing variables can change on tlds update. - self.re.http = new RegExp( - '^\\/\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i' - ); - } - if (self.re.http.test(tail)) { - return tail.match(self.re.http)[0].length; - } - return 0; - } - }, - 'https:': 'http:', - 'ftp:': 'http:', - '//': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.no_http) { - // compile lazily, becayse "host"-containing variables can change on tlds update. - self.re.no_http = new RegExp( - '^' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i' - ); - } - - if (self.re.no_http.test(tail)) { - // should not be `://`, that protects from errors in protocol name - if (pos >= 3 && text[pos - 3] === ':') { return 0; } - return tail.match(self.re.no_http)[0].length; - } - return 0; - } - }, - 'mailto:': { - validate: function (text, pos, self) { - var tail = text.slice(pos); - - if (!self.re.mailto) { - self.re.mailto = new RegExp( - '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i' - ); - } - if (self.re.mailto.test(tail)) { - return tail.match(self.re.mailto)[0].length; - } - return 0; - } - } -}; - -// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead -var tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|'); - -//////////////////////////////////////////////////////////////////////////////// - -function resetScanCache(self) { - self.__index__ = -1; - self.__text_cache__ = ''; -} - -function createValidator(re) { - return function (text, pos) { - var tail = text.slice(pos); - - if (re.test(tail)) { - return tail.match(re)[0].length; - } - return 0; - }; -} - -function createNormalizer() { - return function (match, self) { - self.normalize(match); - }; -} - -// Schemas compiler. Build regexps. -// -function compile(self) { - - // Load & clone RE patterns. - var re = self.re = assign({}, require('./lib/re')); - - // Define dynamic patterns - var tlds = self.__tlds__.slice(); - - if (!self.__tlds_replaced__) { - tlds.push('[a-z]{2}'); - } - tlds.push(re.src_xn); - - re.src_tlds = tlds.join('|'); - - function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); } - - re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i'); - re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i'); - re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); - - // - // Compile each schema - // - - var aliases = []; - - self.__compiled__ = {}; // Reset compiled data - - function schemaError(name, val) { - throw new Error('(LinkifyIt) Invalid schema "' + name + '": ' + val); - } - - Object.keys(self.__schemas__).forEach(function (name) { - var val = self.__schemas__[name]; - - // skip disabled methods - if (val === null) { return; } - - var compiled = { validate: null, link: null }; - - self.__compiled__[name] = compiled; - - if (isObject(val)) { - if (isRegExp(val.validate)) { - compiled.validate = createValidator(val.validate); - } else if (isFunction(val.validate)) { - compiled.validate = val.validate; - } else { - schemaError(name, val); - } - - if (isFunction(val.normalize)) { - compiled.normalize = val.normalize; - } else if (!val.normalize) { - compiled.normalize = createNormalizer(); - } else { - schemaError(name, val); - } - - return; - } - - if (isString(val)) { - aliases.push(name); - return; - } - - schemaError(name, val); - }); - - // - // Compile postponed aliases - // - - aliases.forEach(function (alias) { - if (!self.__compiled__[self.__schemas__[alias]]) { - // Silently fail on missed schemas to avoid errons on disable. - // schemaError(alias, self.__schemas__[alias]); - return; - } - - self.__compiled__[alias].validate = - self.__compiled__[self.__schemas__[alias]].validate; - self.__compiled__[alias].normalize = - self.__compiled__[self.__schemas__[alias]].normalize; - }); - - // - // Fake record for guessed links - // - self.__compiled__[''] = { validate: null, normalize: createNormalizer() }; - - // - // Build schema condition - // - var slist = Object.keys(self.__compiled__) - .filter(function(name) { - // Filter disabled & fake schemas - return name.length > 0 && self.__compiled__[name]; - }) - .map(escapeRE) - .join('|'); - // (?!_) cause 1.5x slowdown - self.re.schema_test = RegExp('(^|(?!_)(?:>|' + re.src_ZPCcCf + '))(' + slist + ')', 'i'); - self.re.schema_search = RegExp('(^|(?!_)(?:>|' + re.src_ZPCcCf + '))(' + slist + ')', 'ig'); - - self.re.pretest = RegExp( - '(' + self.re.schema_test.source + ')|' + - '(' + self.re.host_fuzzy_test.source + ')|' + - '@', - 'i'); - - // - // Cleanup - // - - resetScanCache(self); -} - -/** - * class Match - * - * Match result. Single element of array, returned by [[LinkifyIt#match]] - **/ -function Match(self, shift) { - var start = self.__index__, - end = self.__last_index__, - text = self.__text_cache__.slice(start, end); - - /** - * Match#schema -> String - * - * Prefix (protocol) for matched string. - **/ - this.schema = self.__schema__.toLowerCase(); - /** - * Match#index -> Number - * - * First position of matched string. - **/ - this.index = start + shift; - /** - * Match#lastIndex -> Number - * - * Next position after matched string. - **/ - this.lastIndex = end + shift; - /** - * Match#raw -> String - * - * Matched string. - **/ - this.raw = text; - /** - * Match#text -> String - * - * Notmalized text of matched string. - **/ - this.text = text; - /** - * Match#url -> String - * - * Normalized url of matched string. - **/ - this.url = text; -} - -function createMatch(self, shift) { - var match = new Match(self, shift); - - self.__compiled__[match.schema].normalize(match, self); - - return match; -} - - -/** - * class LinkifyIt - **/ - -/** - * new LinkifyIt(schemas) - * - schemas (Object): Optional. Additional schemas to validate (prefix/validator) - * - * Creates new linkifier instance with optional additional schemas. - * Can be called without `new` keyword for convenience. - * - * By default understands: - * - * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links - * - "fuzzy" links and emails (example.com, foo@bar.com). - * - * `schemas` is an object, where each key/value describes protocol/rule: - * - * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:` - * for example). `linkify-it` makes shure that prefix is not preceeded with - * alphanumeric char and symbols. Only whitespaces and punctuation allowed. - * - __value__ - rule to check tail after link prefix - * - _String_ - just alias to existing rule - * - _Object_ - * - _validate_ - validator function (should return matched length on success), - * or `RegExp`. - * - _normalize_ - optional function to normalize text & url of matched result - * (for example, for @twitter mentions). - **/ -function LinkifyIt(schemas) { - if (!(this instanceof LinkifyIt)) { - return new LinkifyIt(schemas); - } - - // Cache last tested result. Used to skip repeating steps on next `match` call. - this.__index__ = -1; - this.__last_index__ = -1; // Next scan position - this.__schema__ = ''; - this.__text_cache__ = ''; - - this.__schemas__ = assign({}, defaultSchemas, schemas); - this.__compiled__ = {}; - - this.__tlds__ = tlds_default; - this.__tlds_replaced__ = false; - - this.re = {}; - - compile(this); -} - - -/** chainable - * LinkifyIt#add(schema, definition) - * - schema (String): rule name (fixed pattern prefix) - * - definition (String|RegExp|Object): schema definition - * - * Add new rule definition. See constructor description for details. - **/ -LinkifyIt.prototype.add = function add(schema, definition) { - this.__schemas__[schema] = definition; - compile(this); - return this; -}; - - -/** - * LinkifyIt#test(text) -> Boolean - * - * Searches linkifiable pattern and returns `true` on success or `false` on fail. - **/ -LinkifyIt.prototype.test = function test(text) { - // Reset scan cache - this.__text_cache__ = text; - this.__index__ = -1; - - if (!text.length) { return false; } - - var m, ml, me, len, shift, next, re, tld_pos, at_pos; - - // try to scan for link with schema - that's the most simple rule - if (this.re.schema_test.test(text)) { - re = this.re.schema_search; - re.lastIndex = 0; - while ((m = re.exec(text)) !== null) { - len = this.testSchemaAt(text, m[2], re.lastIndex); - if (len) { - this.__schema__ = m[2]; - this.__index__ = m.index + m[1].length; - this.__last_index__ = m.index + m[0].length + len; - break; - } - } - } - - if (this.__compiled__['http:']) { - // guess schemaless links - tld_pos = text.search(this.re.host_fuzzy_test); - if (tld_pos >= 0) { - // if tld is located after found link - no need to check fuzzy pattern - if (this.__index__ < 0 || tld_pos < this.__index__) { - if ((ml = text.match(this.re.link_fuzzy)) !== null) { - - shift = ml.index + ml[1].length; - - if (this.__index__ < 0 || shift < this.__index__) { - this.__schema__ = ''; - this.__index__ = shift; - this.__last_index__ = ml.index + ml[0].length; - } - } - } - } - } - - if (this.__compiled__['mailto:']) { - // guess schemaless emails - at_pos = text.indexOf('@'); - if (at_pos >= 0) { - // We can't skip this check, because this cases are possible: - // 192.168.1.1@gmail.com, my.in@example.com - if ((me = text.match(this.re.email_fuzzy)) !== null) { - - shift = me.index + me[1].length; - next = me.index + me[0].length; - - if (this.__index__ < 0 || shift < this.__index__ || - (shift === this.__index__ && next > this.__last_index__)) { - this.__schema__ = 'mailto:'; - this.__index__ = shift; - this.__last_index__ = next; - } - } - } - } - - return this.__index__ >= 0; -}; - - -/** - * LinkifyIt#pretest(text) -> Boolean - * - * Very quick check, that can give false positives. Returns true if link MAY BE - * can exists. Can be used for speed optimization, when you need to check that - * link NOT exists. - **/ -LinkifyIt.prototype.pretest = function pretest(text) { - return this.re.pretest.test(text); -}; - - -/** - * LinkifyIt#testSchemaAt(text, name, position) -> Number - * - text (String): text to scan - * - name (String): rule (schema) name - * - position (Number): text offset to check from - * - * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly - * at given position. Returns length of found pattern (0 on fail). - **/ -LinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) { - // If not supported schema check requested - terminate - if (!this.__compiled__[schema.toLowerCase()]) { - return 0; - } - return this.__compiled__[schema.toLowerCase()].validate(text, pos, this); -}; - - -/** - * LinkifyIt#match(text) -> Array|null - * - * Returns array of found link descriptions or `null` on fail. We strongly - * to use [[LinkifyIt#test]] first, for best speed. - * - * ##### Result match description - * - * - __schema__ - link schema, can be empty for fuzzy links, or `//` for - * protocol-neutral links. - * - __index__ - offset of matched text - * - __lastIndex__ - index of next char after mathch end - * - __raw__ - matched text - * - __text__ - normalized text - * - __url__ - link, generated from matched text - **/ -LinkifyIt.prototype.match = function match(text) { - var shift = 0, result = []; - - // Try to take previous element from cache, if .test() called before - if (this.__index__ >= 0 && this.__text_cache__ === text) { - result.push(createMatch(this, shift)); - shift = this.__last_index__; - } - - // Cut head if cache was used - var tail = shift ? text.slice(shift) : text; - - // Scan string until end reached - while (this.test(tail)) { - result.push(createMatch(this, shift)); - - tail = tail.slice(this.__last_index__); - shift += this.__last_index__; - } - - if (result.length) { - return result; - } - - return null; -}; - - -/** chainable - * LinkifyIt#tlds(list [, keepOld]) -> this - * - list (Array): list of tlds - * - keepOld (Boolean): merge with current list if `true` (`false` by default) - * - * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix) - * to avoid false positives. By default this algorythm used: - * - * - hostname with any 2-letter root zones are ok. - * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф - * are ok. - * - encoded (`xn--...`) root zones are ok. - * - * If list is replaced, then exact match for 2-chars root zones will be checked. - **/ -LinkifyIt.prototype.tlds = function tlds(list, keepOld) { - list = Array.isArray(list) ? list : [ list ]; - - if (!keepOld) { - this.__tlds__ = list.slice(); - this.__tlds_replaced__ = true; - compile(this); - return this; - } - - this.__tlds__ = this.__tlds__.concat(list) - .sort() - .filter(function(el, idx, arr) { - return el !== arr[idx - 1]; - }) - .reverse(); - - compile(this); - return this; -}; - -/** - * LinkifyIt#normalize(match) - * - * Default normalizer (if schema does not define it's own). - **/ -LinkifyIt.prototype.normalize = function normalize(match) { - - // Do minimal possible changes by default. Need to collect feedback prior - // to move forward https://github.com/markdown-it/linkify-it/issues/1 - - if (!match.schema) { match.url = 'http://' + match.url; } - - if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) { - match.url = 'mailto:' + match.url; - } -}; - - -module.exports = LinkifyIt; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/lib/re.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/lib/re.js deleted file mode 100644 index e2ed88eb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/lib/re.js +++ /dev/null @@ -1,143 +0,0 @@ -'use strict'; - -// Use direct extract instead of `regenerate` to reduse browserified size -var src_Any = exports.src_Any = require('uc.micro/properties/Any/regex').source; -var src_Cc = exports.src_Cc = require('uc.micro/categories/Cc/regex').source; -var src_Cf = exports.src_Cf = require('uc.micro/categories/Cf/regex').source; -var src_Z = exports.src_Z = require('uc.micro/categories/Z/regex').source; -var src_P = exports.src_P = require('uc.micro/categories/P/regex').source; - -// \p{\Z\P\Cc\CF} (white spaces + control + format + punctuation) -var src_ZPCcCf = exports.src_ZPCcCf = [ src_Z, src_P, src_Cc, src_Cf ].join('|'); - -// \p{\Z\Cc\CF} (white spaces + control + format) -var src_ZCcCf = exports.src_ZCcCf = [ src_Z, src_Cc, src_Cf ].join('|'); - -// All possible word characters (everything without punctuation, spaces & controls) -// Defined via punctuation & spaces to save space -// Should be something like \p{\L\N\S\M} (\w but without `_`) -var src_pseudo_letter = '(?:(?!' + src_ZPCcCf + ')' + src_Any + ')'; -// The same as abothe but without [0-9] -var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCcCf + ')' + src_Any + ')'; - -//////////////////////////////////////////////////////////////////////////////// - -var src_ip4 = exports.src_ip4 = - - '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; - -exports.src_auth = '(?:(?:(?!' + src_ZCcCf + ').)+@)?'; - -var src_port = exports.src_port = - - '(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?'; - -var src_host_terminator = exports.src_host_terminator = - - '(?=$|' + src_ZPCcCf + ')(?!-|_|:\\d|\\.-|\\.(?!$|' + src_ZPCcCf + '))'; - -var src_path = exports.src_path = - - '(?:' + - '[/?#]' + - '(?:' + - '(?!' + src_ZCcCf + '|[()[\\]{}.,"\'?!\\-]).|' + - '\\[(?:(?!' + src_ZCcCf + '|\\]).)*\\]|' + - '\\((?:(?!' + src_ZCcCf + '|[)]).)*\\)|' + - '\\{(?:(?!' + src_ZCcCf + '|[}]).)*\\}|' + - '\\"(?:(?!' + src_ZCcCf + '|["]).)+\\"|' + - "\\'(?:(?!" + src_ZCcCf + "|[']).)+\\'|" + - "\\'(?=" + src_pseudo_letter + ').|' + // allow `I'm_king` if no pair found - '\\.{2,3}[a-zA-Z0-9%]|' + // github has ... in commit range links. Restrict to - // english & percent-encoded only, until more examples found. - '\\.(?!' + src_ZCcCf + '|[.]).|' + - '\\-(?!' + src_ZCcCf + '|--(?:[^-]|$))(?:[-]+|.)|' + // `---` => long dash, terminate - '\\,(?!' + src_ZCcCf + ').|' + // allow `,,,` in paths - '\\!(?!' + src_ZCcCf + '|[!]).|' + - '\\?(?!' + src_ZCcCf + '|[?]).' + - ')+' + - '|\\/' + - ')?'; - -var src_email_name = exports.src_email_name = - - '[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+'; - -var src_xn = exports.src_xn = - - 'xn--[a-z0-9\\-]{1,59}'; - -// More to read about domain names -// http://serverfault.com/questions/638260/ - -var src_domain_root = exports.src_domain_root = - - // Can't have digits and dashes - '(?:' + - src_xn + - '|' + - src_pseudo_letter_non_d + '{1,63}' + - ')'; - -var src_domain = exports.src_domain = - - '(?:' + - src_xn + - '|' + - '(?:' + src_pseudo_letter + ')' + - '|' + - // don't allow `--` in domain names, because: - // - that can conflict with markdown — / – - // - nobody use those anyway - '(?:' + src_pseudo_letter + '(?:-(?!-)|' + src_pseudo_letter + '){0,61}' + src_pseudo_letter + ')' + - ')'; - -var src_host = exports.src_host = - - '(?:' + - src_ip4 + - '|' + - '(?:(?:(?:' + src_domain + ')\\.)*' + src_domain_root + ')' + - ')'; - -var tpl_host_fuzzy = exports.tpl_host_fuzzy = - - '(?:' + - src_ip4 + - '|' + - '(?:(?:(?:' + src_domain + ')\\.)+(?:%TLDS%))' + - ')'; - -exports.src_host_strict = - - src_host + src_host_terminator; - -var tpl_host_fuzzy_strict = exports.tpl_host_fuzzy_strict = - - tpl_host_fuzzy + src_host_terminator; - -exports.src_host_port_strict = - - src_host + src_port + src_host_terminator; - -var tpl_host_port_fuzzy_strict = exports.tpl_host_port_fuzzy_strict = - - tpl_host_fuzzy + src_port + src_host_terminator; - -//////////////////////////////////////////////////////////////////////////////// -// Main rules - -// Rude test fuzzy links by host, for quick deny -exports.tpl_host_fuzzy_test = - - 'localhost|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:' + src_ZPCcCf + '|$))'; - -exports.tpl_email_fuzzy = - - '(^|>|' + src_ZCcCf + ')(' + src_email_name + '@' + tpl_host_fuzzy_strict + ')'; - -exports.tpl_link_fuzzy = - // Fuzzy link can't be prepended with .:/\- and non punctuation. - // but can start with > (markdown blockquote) - '(^|(?![.:/\\-_@])(?:[$+<=>^`|]|' + src_ZPCcCf + '))' + - '((?![$+<=>^`|])' + tpl_host_port_fuzzy_strict + src_path + ')'; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/.npmignore deleted file mode 100644 index 84e96aea..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -coverage/ -demo/ -apidoc/ -*.log diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/CHANGELOG.md deleted file mode 100644 index 4ff5e8d8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/CHANGELOG.md +++ /dev/null @@ -1,10 +0,0 @@ -1.0.0 / 2015-03-10 ------------------- - -- Export all in index.js - - -0.1.0 / 2015-02-22 ------------------- - -- First release. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/Makefile deleted file mode 100644 index cf0bd92c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -NPM_PACKAGE := $(shell node -e 'process.stdout.write(require("./package.json").name)') -NPM_VERSION := $(shell node -e 'process.stdout.write(require("./package.json").version)') - -REMOTE_NAME ?= origin -REMOTE_REPO ?= $(shell git config --get remote.${REMOTE_NAME}.url) - -CURR_HEAD := $(firstword $(shell git show-ref --hash HEAD | cut -b -6) master) -GITHUB_PROJ := https://github.com//markdown-it/${NPM_PACKAGE} - - -refresh: - rm -rf properties - rm -rf categories - - mkdir -p properties/Any - cp node_modules/unicode-7.0.0/properties/Any/regex.js properties/Any/ - mkdir -p categories/Cc - cp node_modules/unicode-7.0.0/categories/Cc/regex.js categories/Cc/ - mkdir -p categories/Cf - cp node_modules/unicode-7.0.0/categories/Cf/regex.js categories/Cf/ - mkdir -p categories/Z - cp node_modules/unicode-7.0.0/categories/Z/regex.js categories/Z/ - mkdir -p categories/P - cp node_modules/unicode-7.0.0/categories/P/regex.js categories/P/ - - -publish: - @if test 0 -ne `git status --porcelain | wc -l` ; then \ - echo "Unclean working tree. Commit or stash changes first." >&2 ; \ - exit 128 ; \ - fi - @if test 0 -ne `git fetch ; git status | grep '^# Your branch' | wc -l` ; then \ - echo "Local/Remote history differs. Please push/pull changes." >&2 ; \ - exit 128 ; \ - fi - @if test 0 -ne `git tag -l ${NPM_VERSION} | wc -l` ; then \ - echo "Tag ${NPM_VERSION} exists. Update package.json" >&2 ; \ - exit 128 ; \ - fi - git tag ${NPM_VERSION} && git push origin ${NPM_VERSION} - npm publish ${GITHUB_PROJ}/tarball/${NPM_VERSION} - -.PHONY: publish -#.SILENT: help lint test todo diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/README.md deleted file mode 100644 index 763fe395..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# uc.micro - -[![NPM version](https://img.shields.io/npm/v/uc.micro.svg?style=flat)](https://www.npmjs.org/package/uc.micro) - -> Micro subset of unicode data files for [markdown-it](https://github.com/markdown-it) projects. - -Content of this repo is autogenerated from unicode package, maintained by [Mathias Bynens](https://github.com/mathiasbynens). -Curently from [unicode-7.0.0](https://github.com/mathiasbynens/unicode-7.0.0). - -That's just a proxy to reduce dependencies/install size. - -**This package content is ONLY for [markdown-it](https://github.com/markdown-it) projects needs. Don't ask to extend it!** - -## License - -[WTFPL](http://www.wtfpl.net/txt/copying/) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cc/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cc/regex.js deleted file mode 100644 index 99be991f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cc/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\0-\x1F\x7F-\x9F]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cf/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cf/regex.js deleted file mode 100644 index a47587c3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Cf/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/P/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/P/regex.js deleted file mode 100644 index 2e7d1082..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/P/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Z/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Z/regex.js deleted file mode 100644 index 76976a4d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/categories/Z/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/index.js deleted file mode 100644 index c1929bc1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/index.js +++ /dev/null @@ -1,6 +0,0 @@ - -module.exports.Any = require('./properties/Any/regex'); -module.exports.Cc = require('./categories/Cc/regex'); -module.exports.Cf = require('./categories/Cf/regex'); -module.exports.P = require('./categories/P/regex'); -module.exports.Z = require('./categories/Z/regex'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/package.json deleted file mode 100644 index dc42873b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "uc.micro", - "version": "1.0.0", - "description": "Micro subset of unicode data files for markdown-it projects.", - "repository": { - "type": "git", - "url": "git+https://github.com/markdown-it/uc.micro.git" - }, - "license": { - "type": "WTFPL", - "url": "http://www.wtfpl.net/txt/copying/" - }, - "main": "index.js", - "devDependencies": { - "unicode-7.0.0": "~0.1.5" - }, - "gitHead": "203bd5056107b9b27761fa8b21f88e01b7a90256", - "bugs": { - "url": "https://github.com/markdown-it/uc.micro/issues" - }, - "homepage": "https://github.com/markdown-it/uc.micro", - "_id": "uc.micro@1.0.0", - "scripts": {}, - "_shasum": "4c5a6dee941b515a5bd5cf5d05b121e0e49c5fb7", - "_from": "uc.micro@>=1.0.0 <2.0.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "4c5a6dee941b515a5bd5cf5d05b121e0e49c5fb7", - "tarball": "http://registry.npmjs.org/uc.micro/-/uc.micro-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/properties/Any/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/properties/Any/regex.js deleted file mode 100644 index 67c8b125..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/node_modules/uc.micro/properties/Any/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/package.json deleted file mode 100644 index 83451035..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/linkify-it/package.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "linkify-it", - "version": "0.1.5", - "description": "Links recognition library with FULL unicode support", - "keywords": [ - "linkify", - "linkifier", - "autolink", - "autolinker" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/markdown-it/linkify-it.git" - }, - "license": "MIT", - "scripts": { - "test": "make test" - }, - "dependencies": { - "uc.micro": "^1.0.0" - }, - "devDependencies": { - "ansi": "~0.3.0", - "autoprefixer-stylus": "~0.5.0", - "benchmark": "~1.0.0", - "browserify": "*", - "chai": "^2.0.0", - "coveralls": "~2.11.2", - "jade": "~1.9.2", - "eslint": "0.13.0", - "eslint-plugin-nodeca": "^1.0.0", - "istanbul": "*", - "mdurl": "^1.0.0", - "mocha": "*", - "ndoc": "^3.1.0", - "stylus": "~0.50.0", - "tlds": "^1.26.0" - }, - "gitHead": "ec7be2e7ccb89715e6c635ea3a16d8592499775a", - "bugs": { - "url": "https://github.com/markdown-it/linkify-it/issues" - }, - "homepage": "https://github.com/markdown-it/linkify-it", - "_id": "linkify-it@0.1.5", - "_shasum": "38c583d32fa93ed726da00c7af001078bfb6b945", - "_from": "linkify-it@>=0.1.2 <0.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "38c583d32fa93ed726da00c7af001078bfb6b945", - "tarball": "http://registry.npmjs.org/linkify-it/-/linkify-it-0.1.5.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-0.1.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/CHANGELOG.md deleted file mode 100644 index ed33c789..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/CHANGELOG.md +++ /dev/null @@ -1,16 +0,0 @@ -1.0.1 / 2015-09-15 ------------------- - -- Fixed closure compiler compatibility (#1). - - -1.0.0 / 2015-03-04 ------------------- - -- Added `.decode()`, `.parse()`, `.format()`. - - -0.0.1 / 2015-03-02 ------------------- - -- First release. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/LICENSE deleted file mode 100644 index 3b2c7bfb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/LICENSE +++ /dev/null @@ -1,45 +0,0 @@ -Copyright (c) 2015 Vitaly Puzrin, Alex Kocharin. - -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. - --------------------------------------------------------------------------------- - -.parse() is based on Joyent's node.js `url` code: - -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/README.md deleted file mode 100644 index 72aebef0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# mdurl - -[![Build Status](https://img.shields.io/travis/markdown-it/mdurl/master.svg?style=flat)](https://travis-ci.org/markdown-it/mdurl) -[![NPM version](https://img.shields.io/npm/v/mdurl.svg?style=flat)](https://www.npmjs.org/package/mdurl) - -> URL utilities for [markdown-it](https://github.com/markdown-it/markdown-it) parser. - - -## API - -### .encode(str [, exclude, keepEncoded]) -> String - -Percent-encode a string, avoiding double encoding. Don't touch `/a-zA-Z0-9/` + -excluded chars + `/%[a-fA-F0-9]{2}/` (if not disabled). Broken surrorates are -replaced with `U+FFFD`. - -Params: - -- __str__ - input string. -- __exclude__ - optional, `;/?:@&=+$,-_.!~*'()#`. Additional chars to keep intact - (except `/a-zA-Z0-9/`). -- __keepEncoded__ - optional, `true`. By default it skips already encoded sequences - (`/%[a-fA-F0-9]{2}/`). If set to `false`, `%` will be encoded. - - -### encode.defaultChars, encode.componentChars - -You can use these constants as second argument to `encode` function. - - - `encode.defaultChars` is the same exclude set as in the standard `encodeURI()` function - - `encode.componentChars` is the same exclude set as in the `encodeURIComponent()` function - -For example, `encode('something', encode.componentChars, true)` is roughly the equivalent of -the `encodeURIComponent()` function (except `encode()` doesn't throw). - - -### .decode(str [, exclude]) -> String - -Decode percent-encoded string. Invalid percent-encoded sequences (e.g. `%2G`) -are left as is. Invalid UTF-8 characters are replaced with `U+FFFD`. - - -Params: - -- __str__ - input string. -- __exclude__ - set of characters to leave encoded, optional, `;/?:@&=+$,#`. - - -### decode.defaultChars, decode.componentChars - -You can use these constants as second argument to `decode` function. - - - `decode.defaultChars` is the same exclude set as in the standard `decodeURI()` function - - `decode.componentChars` is the same exclude set as in the `decodeURIComponent()` function - -For example, `decode('something', decode.defaultChars)` has the same behavior as -`decodeURI('something')` on a correctly encoded input. - - -### .parse(url, slashesDenoteHost) -> urlObs - -Parse url string. Similar to node's [url.parse](http://nodejs.org/api/url.html#url_url_parse_urlstr_parsequerystring_slashesdenotehost), but without any -normalizations and query string parse. - - - __url__ - input url (string) - - __slashesDenoteHost__ - if url starts with `//`, expect a hostname after it. Optional, `false`. - -Result (hash): - -- protocol -- slashes -- auth -- port -- hostname -- hash -- search -- pathname - -Difference with node's `url`: - -1. No leading slash in paths, e.g. in `url.parse('http://foo?bar')` pathname is - ``, not `/` -2. Backslashes are not replaced with slashes, so `http:\\example.org\` is - treated like a relative path -3. Trailing colon is treated like a part of the path, i.e. in - `http://example.org:foo` pathname is `:foo` -4. Nothing is URL-encoded in the resulting object, (in joyent/node some chars - in auth and paths are encoded) -5. `url.parse()` does not have `parseQueryString` argument -6. Removed extraneous result properties: `host`, `path`, `query`, etc., - which can be constructed using other parts of the url. - - -### .format(urlObject) - -Format an object previously obtained with `.parse()` function. Similar to node's -[url.format](http://nodejs.org/api/url.html#url_url_format_urlobj). - - -## License - -[MIT](https://github.com/markdown-it/mdurl/blob/master/LICENSE) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/decode.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/decode.js deleted file mode 100644 index 189d7b9c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/decode.js +++ /dev/null @@ -1,122 +0,0 @@ - -'use strict'; - - -/* eslint-disable no-bitwise */ - -var decodeCache = {}; - -function getDecodeCache(exclude) { - var i, ch, cache = decodeCache[exclude]; - if (cache) { return cache; } - - cache = decodeCache[exclude] = []; - - for (i = 0; i < 128; i++) { - ch = String.fromCharCode(i); - cache.push(ch); - } - - for (i = 0; i < exclude.length; i++) { - ch = exclude.charCodeAt(i); - cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2); - } - - return cache; -} - - -// Decode percent-encoded string. -// -function decode(string, exclude) { - var cache; - - if (typeof exclude !== 'string') { - exclude = decode.defaultChars; - } - - cache = getDecodeCache(exclude); - - return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) { - var i, l, b1, b2, b3, b4, chr, - result = ''; - - for (i = 0, l = seq.length; i < l; i += 3) { - b1 = parseInt(seq.slice(i + 1, i + 3), 16); - - if (b1 < 0x80) { - result += cache[b1]; - continue; - } - - if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) { - // 110xxxxx 10xxxxxx - b2 = parseInt(seq.slice(i + 4, i + 6), 16); - - if ((b2 & 0xC0) === 0x80) { - chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F); - - if (chr < 0x80) { - result += '\ufffd\ufffd'; - } else { - result += String.fromCharCode(chr); - } - - i += 3; - continue; - } - } - - if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) { - // 1110xxxx 10xxxxxx 10xxxxxx - b2 = parseInt(seq.slice(i + 4, i + 6), 16); - b3 = parseInt(seq.slice(i + 7, i + 9), 16); - - if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) { - chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F); - - if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) { - result += '\ufffd\ufffd\ufffd'; - } else { - result += String.fromCharCode(chr); - } - - i += 6; - continue; - } - } - - if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) { - // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx - b2 = parseInt(seq.slice(i + 4, i + 6), 16); - b3 = parseInt(seq.slice(i + 7, i + 9), 16); - b4 = parseInt(seq.slice(i + 10, i + 12), 16); - - if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) { - chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F); - - if (chr < 0x10000 || chr > 0x10FFFF) { - result += '\ufffd\ufffd\ufffd\ufffd'; - } else { - chr -= 0x10000; - result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF)); - } - - i += 9; - continue; - } - } - - result += '\ufffd'; - } - - return result; - }); -} - - -decode.defaultChars = ';/?:@&=+$,#'; -decode.componentChars = ''; - - -module.exports = decode; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/encode.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/encode.js deleted file mode 100644 index 6dff4f96..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/encode.js +++ /dev/null @@ -1,98 +0,0 @@ - -'use strict'; - - -var encodeCache = {}; - - -// Create a lookup array where anything but characters in `chars` string -// and alphanumeric chars is percent-encoded. -// -function getEncodeCache(exclude) { - var i, ch, cache = encodeCache[exclude]; - if (cache) { return cache; } - - cache = encodeCache[exclude] = []; - - for (i = 0; i < 128; i++) { - ch = String.fromCharCode(i); - - if (/^[0-9a-z]$/i.test(ch)) { - // always allow unencoded alphanumeric characters - cache.push(ch); - } else { - cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2)); - } - } - - for (i = 0; i < exclude.length; i++) { - cache[exclude.charCodeAt(i)] = exclude[i]; - } - - return cache; -} - - -// Encode unsafe characters with percent-encoding, skipping already -// encoded sequences. -// -// - string - string to encode -// - exclude - list of characters to ignore (in addition to a-zA-Z0-9) -// - keepEscaped - don't encode '%' in a correct escape sequence (default: true) -// -function encode(string, exclude, keepEscaped) { - var i, l, code, nextCode, cache, - result = ''; - - if (typeof exclude !== 'string') { - // encode(string, keepEscaped) - keepEscaped = exclude; - exclude = encode.defaultChars; - } - - if (typeof keepEscaped === 'undefined') { - keepEscaped = true; - } - - cache = getEncodeCache(exclude); - - for (i = 0, l = string.length; i < l; i++) { - code = string.charCodeAt(i); - - if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) { - if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) { - result += string.slice(i, i + 3); - i += 2; - continue; - } - } - - if (code < 128) { - result += cache[code]; - continue; - } - - if (code >= 0xD800 && code <= 0xDFFF) { - if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) { - nextCode = string.charCodeAt(i + 1); - if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) { - result += encodeURIComponent(string[i] + string[i + 1]); - i++; - continue; - } - } - result += '%EF%BF%BD'; - continue; - } - - result += encodeURIComponent(string[i]); - } - - return result; -} - -encode.defaultChars = ";/?:@&=+$,-_.!~*'()#"; -encode.componentChars = "-_.!~*'()"; - - -module.exports = encode; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/format.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/format.js deleted file mode 100644 index c4eb9f4a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/format.js +++ /dev/null @@ -1,25 +0,0 @@ - -'use strict'; - - -module.exports = function format(url) { - var result = ''; - - result += url.protocol || ''; - result += url.slashes ? '//' : ''; - result += url.auth ? url.auth + '@' : ''; - - if (url.hostname && url.hostname.indexOf(':') !== -1) { - // ipv6 address - result += '[' + url.hostname + ']'; - } else { - result += url.hostname || ''; - } - - result += url.port ? ':' + url.port : ''; - result += url.pathname || ''; - result += url.search || ''; - result += url.hash || ''; - - return result; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/index.js deleted file mode 100644 index 194abff5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - - -module.exports.encode = require('./encode'); -module.exports.decode = require('./decode'); -module.exports.format = require('./format'); -module.exports.parse = require('./parse'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/package.json deleted file mode 100644 index f7796b38..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "mdurl", - "version": "1.0.1", - "description": "URL utilities for markdown-it", - "repository": { - "type": "git", - "url": "git+https://github.com/markdown-it/mdurl.git" - }, - "license": "MIT", - "scripts": { - "test": "make test" - }, - "devDependencies": { - "mocha": "*", - "eslint": "0.13.0", - "eslint-plugin-nodeca": "^1.0.0", - "istanbul": "*" - }, - "gitHead": "8bfd33610062a71155cc64254271555a49db8332", - "bugs": { - "url": "https://github.com/markdown-it/mdurl/issues" - }, - "homepage": "https://github.com/markdown-it/mdurl#readme", - "_id": "mdurl@1.0.1", - "_shasum": "fe85b2ec75a59037f2adfec100fd6c601761152e", - "_from": "mdurl@>=1.0.0 <1.1.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "fe85b2ec75a59037f2adfec100fd6c601761152e", - "tarball": "http://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/parse.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/parse.js deleted file mode 100644 index 6c33ac12..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/mdurl/parse.js +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -'use strict'; - -// -// Changes from joyent/node: -// -// 1. No leading slash in paths, -// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/` -// -// 2. Backslashes are not replaced with slashes, -// so `http:\\example.org\` is treated like a relative path -// -// 3. Trailing colon is treated like a part of the path, -// i.e. in `http://example.org:foo` pathname is `:foo` -// -// 4. Nothing is URL-encoded in the resulting object, -// (in joyent/node some chars in auth and paths are encoded) -// -// 5. `url.parse()` does not have `parseQueryString` argument -// -// 6. Removed extraneous result properties: `host`, `path`, `query`, etc., -// which can be constructed using other parts of the url. -// - - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.pathname = null; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // Special case for a simple path URL - simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = [ '<', '>', '"', '`', ' ', '\r', '\n', '\t' ], - - // RFC 2396: characters not allowed for various reasons. - unwise = [ '{', '}', '|', '\\', '^', '`' ].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = [ '\'' ].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape), - hostEndingChars = [ '/', '?', '#' ], - hostnameMaxLen = 255, - hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - /* eslint-disable no-script-url */ - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }; - /* eslint-enable no-script-url */ - -function urlParse(url, slashesDenoteHost) { - if (url && url instanceof Url) { return url; } - - var u = new Url(); - u.parse(url, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, slashesDenoteHost) { - var i, l, lowerProto, hec, slashes, - rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - if (!slashesDenoteHost && url.split('#').length === 1) { - // Try fast path regexp - var simplePath = simplePathPattern.exec(rest); - if (simplePath) { - this.pathname = simplePath[1]; - if (simplePath[2]) { - this.search = simplePath[2]; - } - return this; - } - } - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - lowerProto = proto.toLowerCase(); - this.protocol = proto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (i = 0; i < hostEndingChars.length; i++) { - hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { - hostEnd = hec; - } - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = auth; - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (i = 0; i < nonHostChars.length; i++) { - hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { - hostEnd = hec; - } - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) { - hostEnd = rest.length; - } - - if (rest[hostEnd - 1] === ':') { hostEnd--; } - var host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(host); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) { continue; } - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - } - } - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - rest = rest.slice(0, qm); - } - if (rest) { this.pathname = rest; } - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = ''; - } - - return this; -}; - -Url.prototype.parseHost = function(host) { - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) { this.hostname = host; } -}; - -module.exports = urlParse; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/.npmignore deleted file mode 100644 index 84e96aea..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -coverage/ -demo/ -apidoc/ -*.log diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/Makefile deleted file mode 100644 index cf0bd92c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -NPM_PACKAGE := $(shell node -e 'process.stdout.write(require("./package.json").name)') -NPM_VERSION := $(shell node -e 'process.stdout.write(require("./package.json").version)') - -REMOTE_NAME ?= origin -REMOTE_REPO ?= $(shell git config --get remote.${REMOTE_NAME}.url) - -CURR_HEAD := $(firstword $(shell git show-ref --hash HEAD | cut -b -6) master) -GITHUB_PROJ := https://github.com//markdown-it/${NPM_PACKAGE} - - -refresh: - rm -rf properties - rm -rf categories - - mkdir -p properties/Any - cp node_modules/unicode-7.0.0/properties/Any/regex.js properties/Any/ - mkdir -p categories/Cc - cp node_modules/unicode-7.0.0/categories/Cc/regex.js categories/Cc/ - mkdir -p categories/Cf - cp node_modules/unicode-7.0.0/categories/Cf/regex.js categories/Cf/ - mkdir -p categories/Z - cp node_modules/unicode-7.0.0/categories/Z/regex.js categories/Z/ - mkdir -p categories/P - cp node_modules/unicode-7.0.0/categories/P/regex.js categories/P/ - - -publish: - @if test 0 -ne `git status --porcelain | wc -l` ; then \ - echo "Unclean working tree. Commit or stash changes first." >&2 ; \ - exit 128 ; \ - fi - @if test 0 -ne `git fetch ; git status | grep '^# Your branch' | wc -l` ; then \ - echo "Local/Remote history differs. Please push/pull changes." >&2 ; \ - exit 128 ; \ - fi - @if test 0 -ne `git tag -l ${NPM_VERSION} | wc -l` ; then \ - echo "Tag ${NPM_VERSION} exists. Update package.json" >&2 ; \ - exit 128 ; \ - fi - git tag ${NPM_VERSION} && git push origin ${NPM_VERSION} - npm publish ${GITHUB_PROJ}/tarball/${NPM_VERSION} - -.PHONY: publish -#.SILENT: help lint test todo diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/README.md deleted file mode 100644 index 763fe395..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# uc.micro - -[![NPM version](https://img.shields.io/npm/v/uc.micro.svg?style=flat)](https://www.npmjs.org/package/uc.micro) - -> Micro subset of unicode data files for [markdown-it](https://github.com/markdown-it) projects. - -Content of this repo is autogenerated from unicode package, maintained by [Mathias Bynens](https://github.com/mathiasbynens). -Curently from [unicode-7.0.0](https://github.com/mathiasbynens/unicode-7.0.0). - -That's just a proxy to reduce dependencies/install size. - -**This package content is ONLY for [markdown-it](https://github.com/markdown-it) projects needs. Don't ask to extend it!** - -## License - -[WTFPL](http://www.wtfpl.net/txt/copying/) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.js deleted file mode 100644 index 99be991f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\0-\x1F\x7F-\x9F]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.js deleted file mode 100644 index a47587c3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.js deleted file mode 100644 index 2e7d1082..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[!-#%-\*,-/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDE38-\uDE3D]|\uD805[\uDCC6\uDDC1-\uDDC9\uDE41-\uDE43]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.js deleted file mode 100644 index 76976a4d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/index.js deleted file mode 100644 index d9d6e9eb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/index.js +++ /dev/null @@ -1,2 +0,0 @@ -// Dummy. Require files directly. -module.exports = null; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/package.json deleted file mode 100644 index 7f2cf544..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "uc.micro", - "version": "0.1.0", - "description": "Micro subset of unicode data files for markdown-it projects.", - "repository": { - "type": "git", - "url": "git+https://github.com/markdown-it/uc.micro.git" - }, - "license": { - "type": "WTFPL", - "url": "http://www.wtfpl.net/txt/copying/" - }, - "main": "index.js", - "devDependencies": { - "unicode-7.0.0": "~0.1.5" - }, - "gitHead": "5e4cdb61d0ddf610c167f11f0a5d1dc95abbde03", - "bugs": { - "url": "https://github.com/markdown-it/uc.micro/issues" - }, - "homepage": "https://github.com/markdown-it/uc.micro", - "_id": "uc.micro@0.1.0", - "scripts": {}, - "_shasum": "eda1121d1fdb96154ed6fde8247bbbdb833308ca", - "_from": "uc.micro@>=0.1.0 <0.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "eda1121d1fdb96154ed6fde8247bbbdb833308ca", - "tarball": "http://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.js deleted file mode 100644 index 67c8b125..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports=/[\0-\uD7FF\uDC00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF]/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/package.json deleted file mode 100644 index 2888a6af..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/markdown-it/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "markdown-it", - "version": "3.1.0", - "description": "Markdown-it - modern pluggable markdown parser.", - "keywords": [ - "markdown", - "parser", - "commonmark", - "markdown-it", - "markdown-it-plugin" - ], - "homepage": "https://github.com/markdown-it/markdown-it", - "repository": { - "type": "git", - "url": "git+https://github.com/markdown-it/markdown-it.git" - }, - "license": "MIT", - "main": "index.js", - "bin": { - "markdown-it": "bin/markdown-it.js" - }, - "scripts": { - "test": "make test" - }, - "dependencies": { - "argparse": "~ 1.0.0", - "linkify-it": "~ 0.1.2", - "mdurl": "~ 1.0.0", - "uc.micro": "~ 0.1.0" - }, - "devDependencies": { - "ansi": "~0.3.0", - "autoprefixer-stylus": "~0.5.0", - "benchmark": "~1.0.0", - "browserify": "*", - "chai": "~2.1.0", - "commonmark": "~0.18.1", - "coveralls": "~2.11.2", - "eslint": "0.13.0", - "eslint-plugin-nodeca": "^1.0.0", - "istanbul": "*", - "jade": "~1.9.2", - "markdown-it-abbr": "~ 0.1.0", - "markdown-it-deflist": "~ 0.1.0", - "markdown-it-emoji": "~ 0.1.3", - "markdown-it-footnote": "~ 0.1.0", - "markdown-it-for-inline": "~ 0.1.0", - "markdown-it-ins": "~ 0.1.0", - "markdown-it-mark": "~ 0.1.0", - "markdown-it-sub": "~ 0.1.0", - "markdown-it-sup": "~ 0.1.0", - "markdown-it-testgen": "~ 0.1.3", - "marked": "0.3.3", - "stylus": "~0.50.0", - "mocha": "*", - "uglify-js": "*" - }, - "gitHead": "329a35a9c96a9451f66febfdb00255aa06de29c7", - "bugs": { - "url": "https://github.com/markdown-it/markdown-it/issues" - }, - "_id": "markdown-it@3.1.0", - "_shasum": "20a71e8e67b1297c96ac47d00f7b6e690d6e0c36", - "_from": "markdown-it@>=3.0.3 <4.0.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - }, - "maintainers": [ - { - "name": "vitaly", - "email": "vitaly@rcdesign.ru" - } - ], - "dist": { - "shasum": "20a71e8e67b1297c96ac47d00f7b6e690d6e0c36", - "tarball": "http://registry.npmjs.org/markdown-it/-/markdown-it-3.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/History.md deleted file mode 100644 index 55c4af74..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/History.md +++ /dev/null @@ -1,40 +0,0 @@ - -0.1.4 / 2013-08-11 -================== - - * update fresh - -0.1.3 / 2013-07-08 -================== - - * Revert "Fix fd leak" - -0.1.2 / 2013-07-03 -================== - - * Fix fd leak - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Makefile deleted file mode 100644 index a9dcfd50..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec \ - --bail - -.PHONY: test \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Readme.md deleted file mode 100644 index ea7b2341..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/Readme.md +++ /dev/null @@ -1,128 +0,0 @@ -# send - - Send is Connect's `static()` extracted for generalized use, a streaming static file - server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. - -## Installation - - $ npm install send - -## Examples - - Small: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - send(req, req.url).pipe(res); -}).listen(3000); -``` - - Serving from a root directory with custom error-handling: - -```js -var http = require('http'); -var send = require('send'); -var url = require('url'); - -var app = http.createServer(function(req, res){ - // your custom error-handling logic: - function error(err) { - res.statusCode = err.status || 500; - res.end(err.message); - } - - // your custom directory handling logic: - function redirect() { - res.statusCode = 301; - res.setHeader('Location', req.url + '/'); - res.end('Redirecting to ' + req.url + '/'); - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, url.parse(req.url).pathname) - .root('/www/example.com/public') - .on('error', error) - .on('directory', redirect) - .pipe(res); -}).listen(3000); -``` - -## API - -### Events - - - `error` an error occurred `(err)` - - `directory` a directory was requested - - `file` a file was requested `(path, stat)` - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -### .root(dir) - - Serve files relative to `path`. Aliased as `.from(dir)`. - -### .index(path) - - By default send supports "index.html" files, to disable this - invoke `.index(false)` or to supply a new index pass a string. - -### .maxage(ms) - - Provide a max-age in milliseconds for http caching, defaults to 0. - -### .hidden(bool) - - Enable or disable transfer of hidden files, defaults to false. - -## Error-handling - - By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. - -## Caching - - It does _not_ perform internal caching, you should use a reverse proxy cache such - as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). - -## Debugging - - To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ make test -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/index.js deleted file mode 100644 index f17158d8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/send'); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/send.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/send.js deleted file mode 100644 index a3d94a69..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/send.js +++ /dev/null @@ -1,474 +0,0 @@ - -/** - * Module dependencies. - */ - -var debug = require('debug')('send') - , parseRange = require('range-parser') - , Stream = require('stream') - , mime = require('mime') - , fresh = require('fresh') - , path = require('path') - , http = require('http') - , fs = require('fs') - , basename = path.basename - , normalize = path.normalize - , join = path.join - , utils = require('./utils'); - -/** - * Expose `send`. - */ - -exports = module.exports = send; - -/** - * Expose mime module. - */ - -exports.mime = mime; - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @return {SendStream} - * @api public - */ - -function send(req, path, options) { - return new SendStream(req, path, options); -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * Events: - * - * - `error` an error occurred - * - `stream` file streaming has started - * - `end` streaming has completed - * - `directory` a directory was requested - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @api private - */ - -function SendStream(req, path, options) { - var self = this; - this.req = req; - this.path = path; - this.options = options || {}; - this.maxage(0); - this.hidden(false); - this.index('index.html'); -} - -/** - * Inherits from `Stream.prototype`. - */ - -SendStream.prototype.__proto__ = Stream.prototype; - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = function(val){ - debug('hidden %s', val); - this._hidden = val; - return this; -}; - -/** - * Set index `path`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = function(path){ - debug('index %s', path); - this._index = path; - return this; -}; - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = -SendStream.prototype.from = function(path){ - this._root = normalize(path); - return this; -}; - -/** - * Set max-age to `ms`. - * - * @param {Number} ms - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = function(ms){ - if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; - debug('max-age %d', ms); - this._maxage = ms; - return this; -}; - -/** - * Emit error with `status`. - * - * @param {Number} status - * @api private - */ - -SendStream.prototype.error = function(status, err){ - var res = this.res; - var msg = http.STATUS_CODES[status]; - err = err || new Error(msg); - err.status = status; - if (this.listeners('error').length) return this.emit('error', err); - res.statusCode = err.status; - res.end(msg); -}; - -/** - * Check if the pathname is potentially malicious. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isMalicious = function(){ - return !this._root && ~this.path.indexOf('..'); -}; - -/** - * Check if the pathname ends with "/". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasTrailingSlash = function(){ - return '/' == this.path[this.path.length - 1]; -}; - -/** - * Check if the basename leads with ".". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasLeadingDot = function(){ - return '.' == basename(this.path)[0]; -}; - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function(){ - return this.req.headers['if-none-match'] - || this.req.headers['if-modified-since']; -}; - -/** - * Strip content-* header fields. - * - * @api private - */ - -SendStream.prototype.removeContentHeaderFields = function(){ - var res = this.res; - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function(){ - var res = this.res; - debug('not modified'); - this.removeContentHeaderFields(); - res.statusCode = 304; - res.end(); -}; - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function(){ - var res = this.res; - return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; -}; - -/** - * Handle stat() error. - * - * @param {Error} err - * @api private - */ - -SendStream.prototype.onStatError = function(err){ - var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; - if (~notfound.indexOf(err.code)) return this.error(404, err); - this.error(500, err); -}; - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function(){ - return fresh(this.req.headers, this.res._headers); -}; - -/** - * Redirect to `path`. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.redirect = function(path){ - if (this.listeners('directory').length) return this.emit('directory'); - var res = this.res; - path += '/'; - res.statusCode = 301; - res.setHeader('Location', path); - res.end('Redirecting to ' + utils.escape(path)); -}; - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function(res){ - var self = this - , args = arguments - , path = this.path - , root = this._root; - - // references - this.res = res; - - // invalid request uri - path = utils.decode(path); - if (-1 == path) return this.error(400); - - // null byte(s) - if (~path.indexOf('\0')) return this.error(400); - - // join / normalize from optional root dir - if (root) path = normalize(join(this._root, path)); - - // ".." is malicious without "root" - if (this.isMalicious()) return this.error(403); - - // malicious path - if (root && 0 != path.indexOf(root)) return this.error(403); - - // hidden file support - if (!this._hidden && this.hasLeadingDot()) return this.error(404); - - // index file support - if (this._index && this.hasTrailingSlash()) path += this._index; - - debug('stat "%s"', path); - fs.stat(path, function(err, stat){ - if (err) return self.onStatError(err); - if (stat.isDirectory()) return self.redirect(self.path); - self.emit('file', path, stat); - self.send(path, stat); - }); - - return res; -}; - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function(path, stat){ - var options = this.options; - var len = stat.size; - var res = this.res; - var req = this.req; - var ranges = req.headers.range; - var offset = options.start || 0; - - // set header fields - this.setHeader(stat); - - // set content-type - this.type(path); - - // conditional GET support - if (this.isConditionalGET() - && this.isCachable() - && this.isFresh()) { - return this.notModified(); - } - - // adjust len to start/end options - len = Math.max(0, len - offset); - if (options.end !== undefined) { - var bytes = options.end - offset + 1; - if (len > bytes) len = bytes; - } - - // Range support - if (ranges) { - ranges = parseRange(len, ranges); - - // unsatisfiable - if (-1 == ranges) { - res.setHeader('Content-Range', 'bytes */' + stat.size); - return this.error(416); - } - - // valid (syntactically invalid ranges are treated as a regular response) - if (-2 != ranges) { - options.start = offset + ranges[0].start; - options.end = offset + ranges[0].end; - - // Content-Range - res.statusCode = 206; - res.setHeader('Content-Range', 'bytes ' - + ranges[0].start - + '-' - + ranges[0].end - + '/' - + len); - len = options.end - options.start + 1; - } - } - - // content-length - res.setHeader('Content-Length', len); - - // HEAD support - if ('HEAD' == req.method) return res.end(); - - this.stream(path, options); -}; - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function(path, options){ - // TODO: this is all lame, refactor meeee - var self = this; - var res = this.res; - var req = this.req; - - // pipe - var stream = fs.createReadStream(path, options); - this.emit('stream', stream); - stream.pipe(res); - - // socket closed, done with the fd - req.on('close', stream.destroy.bind(stream)); - - // error handling code-smell - stream.on('error', function(err){ - // no hope in responding - if (res._header) { - console.error(err.stack); - req.destroy(); - return; - } - - // 500 - err.status = 500; - self.emit('error', err); - }); - - // end - stream.on('end', function(){ - self.emit('end'); - }); -}; - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function(path){ - var res = this.res; - if (res.getHeader('Content-Type')) return; - var type = mime.lookup(path); - var charset = mime.charsets.lookup(type); - debug('content-type %s', type); - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); -}; - -/** - * Set reaponse header fields, most - * fields may be pre-defined. - * - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function(stat){ - var res = this.res; - if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); - if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); - if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); - if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); - if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/utils.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/utils.js deleted file mode 100644 index 950e5a2c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/lib/utils.js +++ /dev/null @@ -1,47 +0,0 @@ - -/** - * Return an ETag in the form of `"-"` - * from the given `stat`. - * - * @param {Object} stat - * @return {String} - * @api private - */ - -exports.etag = function(stat) { - return '"' + stat.size + '-' + Number(stat.mtime) + '"'; -}; - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -exports.decode = function(path){ - try { - return decodeURIComponent(path); - } catch (err) { - return -1; - } -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.jshintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.jshintrc deleted file mode 100644 index 299877f2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.jshintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "laxbreak": true -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.npmignore deleted file mode 100644 index 7e6163db..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -support -test -examples -example -*.sock -dist diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/History.md deleted file mode 100644 index 854c9711..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/History.md +++ /dev/null @@ -1,195 +0,0 @@ - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Makefile deleted file mode 100644 index 5cf4a596..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Makefile +++ /dev/null @@ -1,36 +0,0 @@ - -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# applications -NODE ?= $(shell which node) -NPM ?= $(NODE) $(shell which npm) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -all: dist/debug.js - -install: node_modules - -clean: - @rm -rf dist - -dist: - @mkdir -p $@ - -dist/debug.js: node_modules browser.js debug.js dist - @$(BROWSERIFY) \ - --standalone debug \ - . > $@ - -distclean: clean - @rm -rf node_modules - -node_modules: package.json - @NODE_ENV= $(NPM) install - @touch node_modules - -.PHONY: all install clean distclean diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Readme.md deleted file mode 100644 index b4f45e3c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/Readme.md +++ /dev/null @@ -1,188 +0,0 @@ -# debug - - tiny node.js debugging utility modelled after node core's debugging technique. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - - With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -#### Windows note - - On Windows the environment variable is set using the `set` command. - - ```cmd - set DEBUG=*,-not_this - ``` - -Then, run the program to be debugged as usual. - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Browser support - - Debug works in the browser as well, currently persisted by `localStorage`. Consider the situation shown below where you have `worker:a` and `worker:b`, and wish to debug both. Somewhere in the code on your page, include: - -```js -window.myDebug = require("debug"); -``` - - ("debug" is a global object in the browser so we give this object a different name.) When your page is open in the browser, type the following in the console: - -```js -myDebug.enable("worker:*") -``` - - Refresh the page. Debug output will continue to be sent to the console until it is disabled by typing `myDebug.disable()` in the console. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - -### stderr vs stdout - -You can set an alternative logging method per-namespace by overriding the `log` method on a per-namespace or globally: - -Example _stdout.js_: - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -### Save debug output to a file - -You can save all debug statements to a file by piping them. - -Example: - -```bash -$ DEBUG_FD=3 node your-app.js 3> whatever.log -``` - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - -## License - -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/bower.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/bower.json deleted file mode 100644 index 6af573ff..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "visionmedia-debug", - "main": "dist/debug.js", - "version": "2.2.0", - "homepage": "https://github.com/visionmedia/debug", - "authors": [ - "TJ Holowaychuk " - ], - "description": "visionmedia-debug", - "moduleType": [ - "amd", - "es6", - "globals", - "node" - ], - "keywords": [ - "visionmedia", - "debug" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/browser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/browser.js deleted file mode 100644 index 7c764522..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/browser.js +++ /dev/null @@ -1,168 +0,0 @@ - -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // is webkit? http://stackoverflow.com/a/16459606/376773 - return ('WebkitAppearance' in document.documentElement.style) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (window.console && (console.firebug || (console.exception && console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - return JSON.stringify(v); -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return args; - - var c = 'color: ' + this.color; - args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); - return args; -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage(){ - try { - return window.localStorage; - } catch (e) {} -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/component.json deleted file mode 100644 index ca106372..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.2.0", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "browser.js", - "scripts": [ - "browser.js", - "debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/debug.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/debug.js deleted file mode 100644 index 7571a860..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/debug.js +++ /dev/null @@ -1,197 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = debug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lowercased letter, i.e. "n". - */ - -exports.formatters = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function selectColor() { - return exports.colors[prevColor++ % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function debug(namespace) { - - // define the `disabled` version - function disabled() { - } - disabled.enabled = false; - - // define the `enabled` version - function enabled() { - - var self = enabled; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // add the `color` if not set - if (null == self.useColors) self.useColors = exports.useColors(); - if (null == self.color && self.useColors) self.color = selectColor(); - - var args = Array.prototype.slice.call(arguments); - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %o - args = ['%o'].concat(args); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - if ('function' === typeof exports.formatArgs) { - args = exports.formatArgs.apply(self, args); - } - var logFn = enabled.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - enabled.enabled = true; - - var fn = exports.enabled(namespace) ? enabled : disabled; - - fn.namespace = namespace; - - return fn; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - var split = (namespaces || '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node.js deleted file mode 100644 index 1d392a81..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - var debugColors = (process.env.DEBUG_COLORS || '').trim().toLowerCase(); - if (0 === debugColors.length) { - return tty.isatty(fd); - } else { - return '0' !== debugColors - && 'no' !== debugColors - && 'false' !== debugColors - && 'disabled' !== debugColors; - } -} - -/** - * Map %o to `util.inspect()`, since Node doesn't do that out of the box. - */ - -var inspect = (4 === util.inspect.length ? - // node <= 0.8.x - function (v, colors) { - return util.inspect(v, void 0, void 0, colors); - } : - // node > 0.8.x - function (v, colors) { - return util.inspect(v, { colors: colors }); - } -); - -exports.formatters.o = function(v) { - return inspect(v, this.useColors) - .replace(/\s*\n\s*/g, ' '); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - var name = this.namespace; - - if (useColors) { - var c = this.color; - - args[0] = ' \u001b[3' + c + ';1m' + name + ' ' - + '\u001b[0m' - + args[0] + '\u001b[3' + c + 'm' - + ' +' + exports.humanize(this.diff) + '\u001b[0m'; - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } - return args; -} - -/** - * Invokes `console.error()` with the specified arguments. - */ - -function log() { - return stream.write(util.format.apply(this, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/.npmignore deleted file mode 100644 index d1aa0ce4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules -test -History.md -Makefile -component.json diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/History.md deleted file mode 100644 index 32fdfc17..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/History.md +++ /dev/null @@ -1,66 +0,0 @@ - -0.7.1 / 2015-04-20 -================== - - * prevent extraordinary long inputs (@evilpacket) - * Fixed broken readme link - -0.7.0 / 2014-11-24 -================== - - * add time abbreviations, updated tests and readme for the new units - * fix example in the readme. - * add LICENSE file - -0.6.2 / 2013-12-05 -================== - - * Adding repository section to package.json to suppress warning from NPM. - -0.6.1 / 2013-05-10 -================== - - * fix singularization [visionmedia] - -0.6.0 / 2013-03-15 -================== - - * fix minutes - -0.5.1 / 2013-02-24 -================== - - * add component namespace - -0.5.0 / 2012-11-09 -================== - - * add short formatting as default and .long option - * add .license property to component.json - * add version to component.json - -0.4.0 / 2012-10-22 -================== - - * add rounding to fix crazy decimals - -0.3.0 / 2012-09-07 -================== - - * fix `ms()` [visionmedia] - -0.2.0 / 2012-09-03 -================== - - * add component.json [visionmedia] - * add days support [visionmedia] - * add hours support [visionmedia] - * add minutes support [visionmedia] - * add seconds support [visionmedia] - * add ms string support [visionmedia] - * refactor tests to facilitate ms(number) [visionmedia] - -0.1.0 / 2012-03-07 -================== - - * Initial release diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/LICENSE deleted file mode 100644 index 6c07561b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Guillermo Rauch - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/README.md deleted file mode 100644 index 9b4fd035..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# ms.js: miliseconds conversion utility - -```js -ms('2 days') // 172800000 -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2.5 hrs') // 9000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5s') // 5000 -ms('100') // 100 -``` - -```js -ms(60000) // "1m" -ms(2 * 60000) // "2m" -ms(ms('10 hours')) // "10h" -``` - -```js -ms(60000, { long: true }) // "1 minute" -ms(2 * 60000, { long: true }) // "2 minutes" -ms(ms('10 hours'), { long: true }) // "10 hours" -``` - -- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download). -- If a number is supplied to `ms`, a string with a unit is returned. -- If a string that contains the number is supplied, it returns it as -a number (e.g: it returns `100` for `'100'`). -- If you pass a string with a number and a valid unit, the number of -equivalent ms is returned. - -## License - -MIT diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/index.js deleted file mode 100644 index 4f927716..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/index.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} options - * @return {String|Number} - * @api public - */ - -module.exports = function(val, options){ - options = options || {}; - if ('string' == typeof val) return parse(val); - return options.long - ? long(val) - : short(val); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function parse(str) { - str = '' + str; - if (str.length > 10000) return; - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); - if (!match) return; - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - } -} - -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function short(ms) { - if (ms >= d) return Math.round(ms / d) + 'd'; - if (ms >= h) return Math.round(ms / h) + 'h'; - if (ms >= m) return Math.round(ms / m) + 'm'; - if (ms >= s) return Math.round(ms / s) + 's'; - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ - -function long(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} - -/** - * Pluralization helper. - */ - -function plural(ms, n, name) { - if (ms < n) return; - if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; - return Math.ceil(ms / n) + ' ' + name + 's'; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/package.json deleted file mode 100644 index 253335e6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/node_modules/ms/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "ms", - "version": "0.7.1", - "description": "Tiny ms conversion utility", - "repository": { - "type": "git", - "url": "git://github.com/guille/ms.js.git" - }, - "main": "./index", - "devDependencies": { - "mocha": "*", - "expect.js": "*", - "serve": "*" - }, - "component": { - "scripts": { - "ms/index.js": "index.js" - } - }, - "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909", - "bugs": { - "url": "https://github.com/guille/ms.js/issues" - }, - "homepage": "https://github.com/guille/ms.js", - "_id": "ms@0.7.1", - "scripts": {}, - "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098", - "_from": "ms@0.7.1", - "_npmVersion": "2.7.5", - "_nodeVersion": "0.12.2", - "_npmUser": { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - "maintainers": [ - { - "name": "rauchg", - "email": "rauchg@gmail.com" - } - ], - "dist": { - "shasum": "9cd13c03adbff25b65effde7ce864ee952017098", - "tarball": "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/package.json deleted file mode 100644 index 7e6d9fc5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/debug/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "debug", - "version": "2.2.0", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "description": "small debugging utility", - "keywords": [ - "debug", - "log", - "debugger" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io" - } - ], - "license": "MIT", - "dependencies": { - "ms": "0.7.1" - }, - "devDependencies": { - "browserify": "9.0.3", - "mocha": "*" - }, - "main": "./node.js", - "browser": "./browser.js", - "component": { - "scripts": { - "debug/index.js": "browser.js", - "debug/debug.js": "debug.js" - } - }, - "gitHead": "b38458422b5aa8aa6d286b10dfe427e8a67e2b35", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "homepage": "https://github.com/visionmedia/debug", - "_id": "debug@2.2.0", - "scripts": {}, - "_shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da", - "_from": "debug@*", - "_npmVersion": "2.7.4", - "_nodeVersion": "0.12.2", - "_npmUser": { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - } - ], - "dist": { - "shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da", - "tarball": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/.npmignore deleted file mode 100644 index 9daeafb9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/History.md deleted file mode 100644 index 60a2903f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/History.md +++ /dev/null @@ -1,5 +0,0 @@ - -0.2.0 / 2013-08-11 -================== - - * fix: return false for no-cache diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Makefile deleted file mode 100644 index 8e8640f2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Readme.md deleted file mode 100644 index 61366c57..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/Readme.md +++ /dev/null @@ -1,57 +0,0 @@ - -# node-fresh - - HTTP response freshness testing - -## fresh(req, res) - - Check freshness of `req` and `res` headers. - - When the cache is "fresh" __true__ is returned, - otherwise __false__ is returned to indicate that - the cache is now stale. - -## Example: - -```js -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'luna' }; -fresh(req, res); -// => false - -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'tobi' }; -fresh(req, res); -// => true -``` - -## Installation - -``` -$ npm install fresh -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -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. \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/index.js deleted file mode 100644 index 9c3f47d1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/index.js +++ /dev/null @@ -1,53 +0,0 @@ - -/** - * Expose `fresh()`. - */ - -module.exports = fresh; - -/** - * Check freshness of `req` and `res` headers. - * - * When the cache is "fresh" __true__ is returned, - * otherwise __false__ is returned to indicate that - * the cache is now stale. - * - * @param {Object} req - * @param {Object} res - * @return {Boolean} - * @api public - */ - -function fresh(req, res) { - // defaults - var etagMatches = true; - var notModified = true; - - // fields - var modifiedSince = req['if-modified-since']; - var noneMatch = req['if-none-match']; - var lastModified = res['last-modified']; - var etag = res['etag']; - var cc = req['cache-control']; - - // unconditional request - if (!modifiedSince && !noneMatch) return false; - - // check for no-cache cache request directive - if (cc && cc.indexOf('no-cache') !== -1) return false; - - // parse if-none-match - if (noneMatch) noneMatch = noneMatch.split(/ *, */); - - // if-none-match - if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; - - // if-modified-since - if (modifiedSince) { - modifiedSince = new Date(modifiedSince); - lastModified = new Date(lastModified); - notModified = lastModified <= modifiedSince; - } - - return !! (etagMatches && notModified); -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/package.json deleted file mode 100644 index 0fcb7e65..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/fresh/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "fresh", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "HTTP response freshness testing", - "version": "0.2.0", - "main": "index.js", - "repository": { - "type": "git", - "url": "git+https://github.com/visionmedia/node-fresh.git" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "bugs": { - "url": "https://github.com/visionmedia/node-fresh/issues" - }, - "_id": "fresh@0.2.0", - "dist": { - "shasum": "bfd9402cf3df12c4a4c310c79f99a3dde13d34a7", - "tarball": "http://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz" - }, - "_from": "fresh@0.2.0", - "_npmVersion": "1.3.4", - "_npmUser": { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "directories": {}, - "_shasum": "bfd9402cf3df12c4a4c310c79f99a3dde13d34a7", - "_resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/visionmedia/node-fresh#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/LICENSE deleted file mode 100644 index 451fc455..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/README.md deleted file mode 100644 index 6ca19bd1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file, if no mime type is found `application/octet-stream` is returned. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.default_type -Sets the mime type returned when `mime.lookup` fails to find the extension searched for. (Default is `application/octet-stream`.) - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/broofa/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/mime.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/mime.js deleted file mode 100644 index 48be0c5e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/mime.js +++ /dev/null @@ -1,114 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - if (process.env.DEBUG_MIME && this.types[exts]) { - console.warn(this._loading.replace(/.*\//, ''), 'changes "' + exts[i] + '" extension type from ' + - this.types[exts] + ' to ' + type); - } - - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - - this._loading = file; - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); - - this._loading = null; -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/\\]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); - return this.extensions[type]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -}; - -module.exports = mime; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/package.json deleted file mode 100644 index 328900db..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "git+https://github.com/broofa/node-mime.git", - "type": "git" - }, - "version": "1.2.11", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "_id": "mime@1.2.11", - "dist": { - "shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10", - "tarball": "http://registry.npmjs.org/mime/-/mime-1.2.11.tgz" - }, - "_from": "mime@>=1.2.9 <1.3.0", - "_npmVersion": "1.3.6", - "_npmUser": { - "name": "broofa", - "email": "robert@broofa.com" - }, - "maintainers": [ - { - "name": "broofa", - "email": "robert@broofa.com" - }, - { - "name": "bentomas", - "email": "benjamin@benjaminthomas.org" - } - ], - "directories": {}, - "_shasum": "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10", - "_resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/broofa/node-mime#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/test.js deleted file mode 100644 index 2cda1c7a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/test.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); -var path = require('path'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); // normal file -eq('text/plain', mime.lookup('TEXT.TXT')); // uppercase -eq('text/plain', mime.lookup('dir/text.txt')); // dir + file -eq('text/plain', mime.lookup('.text.txt')); // hidden file -eq('text/plain', mime.lookup('.txt')); // nameless -eq('text/plain', mime.lookup('txt')); // extension-only -eq('text/plain', mime.lookup('/txt')); // extension-less () -eq('text/plain', mime.lookup('\\txt')); // Windows, extension-less -eq('application/octet-stream', mime.lookup('text.nope')); // unrecognized -eq('fallback', mime.lookup('text.fallback', 'fallback')); // alternate default - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq('bin', mime.extension('application/octet-stream ')); -eq('html', mime.extension(' text/html; charset=UTF-8')); -eq('html', mime.extension('text/html; charset=UTF-8 ')); -eq('html', mime.extension('text/html; charset=UTF-8')); -eq('html', mime.extension('text/html ; charset=UTF-8')); -eq('html', mime.extension('text/html;charset=UTF-8')); -eq('html', mime.extension('text/Html;charset=UTF-8')); -eq(undefined, mime.extension('unrecognized')); - -// -// Test node.types lookups -// - -eq('application/font-woff', mime.lookup('file.woff')); -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); -eq('font/opentype', mime.lookup('file.otf')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -// -// Test for overlaps between mime.types and node.types -// - -var apacheTypes = new mime.Mime(), nodeTypes = new mime.Mime(); -apacheTypes.load(path.join(__dirname, 'types/mime.types')); -nodeTypes.load(path.join(__dirname, 'types/node.types')); - -var keys = [].concat(Object.keys(apacheTypes.types)) - .concat(Object.keys(nodeTypes.types)); -keys.sort(); -for (var i = 1; i < keys.length; i++) { - if (keys[i] == keys[i-1]) { - console.warn('Warning: ' + - 'node.types defines ' + keys[i] + '->' + nodeTypes.types[keys[i]] + - ', mime.types defines ' + keys[i] + '->' + apacheTypes.types[keys[i]]); - } -} - -console.log('\nOK'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/mime.types b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/mime.types deleted file mode 100644 index da8cd691..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1588 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -application/docbook+xml dbk -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -application/gml+xml gml -application/gpx+xml gpx -application/gxf gxf -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -application/jsonml+json jsonml -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink+xml metalink -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/omdoc+xml omdoc -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssdl+xml ssdl -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.formscentral.fcdt fcdt -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.dart dart -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.ds-keypoint kpxx -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -# application/vnd.hzn-3d-crossword -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -# application/vnd.innopath.wamp.notification -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.newsmessage+xml -# application/vnd.iptc.g2.packageitem+xml -# application/vnd.iptc.g2.planningitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -# application/vnd.ms-color.iccprofile -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -# application/vnd.ms-opentype -# application/vnd.ms-package.obfuscated-opentype -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -# application/vnd.ms-printing.printticket+xml -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.nitf ntf nitf -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -application/vnd.osgi.subsystem esa -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.rn-realmedia-vbr rmvb -application/vnd.route66.link66+xml link66 -# application/vnd.rs-274x -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -# application/x-amf -application/x-apple-diskimage dmg -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-blorb blb blorb -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cbr cbr cba cbt cbz cb7 -application/x-cdlink vcd -application/x-cfs-compressed cfs -application/x-chat chat -application/x-chess-pgn pgn -application/x-conference nsc -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-dgc-compressed dgc -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-envoy evy -application/x-eva eva -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/font-woff woff -# application/x-font-vfont -application/x-freearc arc -application/x-futuresplash spl -application/x-gca-compressed gca -application/x-glulx ulx -application/x-gnumeric gnumeric -application/x-gramps-xml gramps -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-install-instructions install -application/x-iso9660-image iso -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-lzh-compressed lzh lha -application/x-mie mie -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-shortcut lnk -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf wmz emf emz -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-nzb nzb -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-research-info-systems ris -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-sql sql -application/x-stuffit sit -application/x-stuffitx sitx -application/x-subrip srt -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-t3vm-image t3 -application/x-tads gam -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-tgif obj -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xliff+xml xlf -application/x-xpinstall xpi -application/x-xz xz -application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8 -# application/x400-bp -application/xaml+xml xaml -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xproc+xml xpl -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/isac -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -# audio/musepack -audio/ogg oga ogg spx -# audio/opus -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -audio/s3m s3m -audio/silk sil -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-caf caf -audio/x-flac flac -audio/x-matroska mka -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -# audio/x-tta -audio/x-wav wav -audio/xm xm -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/sgi sgi -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.ms-photo wdp -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-3ds 3ds -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-mrsid-image sid -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-tga tga -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -model/x3d+binary x3db x3dbz -model/x3d+vrml x3dv x3dvz -model/x3d+xml x3d x3dz -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/cache-manifest appcache -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-java-source java -text/x-opml opml -text/x-pascal p pas -text/x-nfo nfo -text/x-setext etx -text/x-sfv sfv -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-matroska mkv mk3d mks -video/x-mng mng -video/x-ms-asf asf asx -video/x-ms-vob vob -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -video/x-smv smv -x-conference/x-cooltalk ice diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/node.types b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/node.types deleted file mode 100644 index 55b2cf79..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/mime/types/node.types +++ /dev/null @@ -1,77 +0,0 @@ -# What: WebVTT -# Why: To allow formats intended for marking up external text track resources. -# http://dev.w3.org/html5/webvtt/ -# Added by: niftylettuce -text/vtt vtt - -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifes ('.manifest' extension) -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Lua file types -# Why: Googling around shows de-facto consensus on these -# Added by: creationix (Issue #45) -text/x-lua lua -application/x-lua-bytecode luac - -# What: Markdown files, as per http://daringfireball.net/projects/markdown/syntax -# Why: http://stackoverflow.com/questions/10701983/what-is-the-mime-type-for-markdown -# Added by: avoidwork -text/x-markdown markdown md mkd - -# What: ini files -# Why: because they're just text files -# Added by: Matthew Kastor -text/plain ini - -# What: DASH Adaptive Streaming manifest -# Why: https://developer.mozilla.org/en-US/docs/DASH_Adaptive_Streaming_for_HTML_5_Video -# Added by: eelcocramer -application/dash+xml mdp - -# What: OpenType font files - http://www.microsoft.com/typography/otspec/ -# Why: Browsers usually ignore the font MIME types and sniff the content, -# but Chrome, shows a warning if OpenType fonts aren't served with -# the `font/opentype` MIME type: http://i.imgur.com/8c5RN8M.png. -# Added by: alrra -font/opentype otf diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/.npmignore deleted file mode 100644 index 9daeafb9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/History.md deleted file mode 100644 index 82df7b1e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/History.md +++ /dev/null @@ -1,15 +0,0 @@ - -0.0.4 / 2012-06-17 -================== - - * changed: ret -1 for unsatisfiable and -2 when invalid - -0.0.3 / 2012-06-17 -================== - - * fix last-byte-pos default to len - 1 - -0.0.2 / 2012-06-14 -================== - - * add `.type` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Makefile deleted file mode 100644 index 8e8640f2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Readme.md deleted file mode 100644 index b2a67fe8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/Readme.md +++ /dev/null @@ -1,28 +0,0 @@ - -# node-range-parser - - Range header field parser. - -## Example: - -```js -assert(-1 == parse(200, 'bytes=500-20')); -assert(-2 == parse(200, 'bytes=malformed')); -parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); -parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); -parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); -parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); -parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); -parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); -parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); -parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); -parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); -``` - -## Installation - -``` -$ npm install range-parser -``` \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/index.js deleted file mode 100644 index 9b0f7a8e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Parse "Range" header `str` relative to the given file `size`. - * - * @param {Number} size - * @param {String} str - * @return {Array} - * @api public - */ - -module.exports = function(size, str){ - var valid = true; - var i = str.indexOf('='); - - if (-1 == i) return -2; - - var arr = str.slice(i + 1).split(',').map(function(range){ - var range = range.split('-') - , start = parseInt(range[0], 10) - , end = parseInt(range[1], 10); - - // -nnn - if (isNaN(start)) { - start = size - end; - end = size - 1; - // nnn- - } else if (isNaN(end)) { - end = size - 1; - } - - // limit last-byte-pos to current length - if (end > size - 1) end = size - 1; - - // invalid - if (isNaN(start) - || isNaN(end) - || start > end - || start < 0) valid = false; - - return { - start: start, - end: end - }; - }); - - arr.type = str.slice(0, i); - - return valid ? arr : -1; -}; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/package.json deleted file mode 100644 index e0533cb5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/node_modules/range-parser/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "range-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "Range header field string parser", - "version": "0.0.4", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "_npmUser": { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - "_id": "range-parser@0.0.4", - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.1.19", - "_nodeVersion": "v0.6.16", - "_defaultsLoaded": true, - "dist": { - "shasum": "c0427ffef51c10acba0782a46c9602e744ff620b", - "tarball": "http://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "directories": {}, - "_shasum": "c0427ffef51c10acba0782a46c9602e744ff620b", - "_resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz", - "_from": "range-parser@0.0.4", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/package.json deleted file mode 100644 index 557d28e1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/send/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "send", - "version": "0.1.4", - "description": "Better streaming static file server with Range and conditional-GET support", - "keywords": [ - "static", - "file", - "server" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": { - "debug": "*", - "mime": "~1.2.9", - "fresh": "0.2.0", - "range-parser": "0.0.4" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "supertest": "0.0.1", - "connect": "2.x" - }, - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/send.git" - }, - "main": "index", - "bugs": { - "url": "https://github.com/visionmedia/send/issues" - }, - "_id": "send@0.1.4", - "dist": { - "shasum": "be70d8d1be01de61821af13780b50345a4f71abd", - "tarball": "http://registry.npmjs.org/send/-/send-0.1.4.tgz" - }, - "_from": "send@>=0.1.0 <0.2.0", - "_npmVersion": "1.3.4", - "_npmUser": { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "directories": {}, - "_shasum": "be70d8d1be01de61821af13780b50345a4f71abd", - "_resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/visionmedia/send#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.npmignore deleted file mode 100644 index 39e9864f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -support -test -examples diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.travis.yml deleted file mode 100644 index 56eca033..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - 0.6 - -notifications: - irc: "irc.freenode.org#socket.io" diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/History.md deleted file mode 100644 index 6ae0ecc3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/History.md +++ /dev/null @@ -1,332 +0,0 @@ - -0.9.17 / 2014-05-22 -=================== - - * use static channels for remote syncing instead of subscribing/unsubscribing 5 channels for every connection - * Use destroy buffer size on websocket transport method as well - * http-polling : adding 'X-XSS-Protection : 0;' to headers necessary not only to jsonp-polling but http-polling - -0.9.16 / 2013-06-06 -=================== - - * transports: added tests for htmlfile escaping/unescaping - -0.9.15 / 2013-06-06 -=================== - - * transports: added escaping to htmlfile (fixes #1251) - -0.9.14 / 2013-03-29 -=================== - - * manager: fix memory leak with SSL [jpallen] - -0.9.13 / 2012-12-13 -=================== - - * package: fixed `base64id` requirement - -0.9.12 / 2012-12-13 -=================== - - * manager: fix for latest node which is returning a clone with `listeners` [viirya] - -0.9.11 / 2012-11-02 -=================== - - * package: move redis to optionalDependenices [3rd-Eden] - * bumped client - -0.9.10 / 2012-08-10 -=================== - - * Don't lowercase log messages - * Always set the HTTP response in case an error should be returned to the client - * Create or destroy the flash policy server on configuration change - * Honour configuration to disable flash policy server - * Add express 3.0 instructions on Readme.md - * Bump client - -0.9.9 / 2012-08-01 -================== - - * Fixed sync disconnect xhrs handling - * Put license text in its own file (#965) - * Add warning to .listen() to ease the migration to Express 3.x - * Restored compatibility with node 0.4.x - -0.9.8 / 2012-07-24 -================== - - * Bumped client. - -0.9.7 / 2012-07-24 -================== - - * Prevent crash when socket leaves a room twice. - * Corrects unsafe usage of for..in - * Fix for node 0.8 with `gzip compression` [vadimi] - * Update redis to support Node 0.8.x - * Made ID generation securely random - * Fix Redis Store race condition in manager onOpen unsubscribe callback - * Fix for EventEmitters always reusing the same Array instance for listeners - -0.9.6 / 2012-04-17 -================== - - * Fixed XSS in jsonp-polling. - -0.9.5 / 2012-04-05 -================== - - * Added test for polling and socket close. - * Ensure close upon request close. - * Fix disconnection reason being lost for polling transports. - * Ensure that polling transports work with Connection: close. - * Log disconnection reason. - -0.9.4 / 2012-04-01 -================== - - * Disconnecting from namespace improvement (#795) [DanielBaulig] - * Bumped client with polling reconnection loop (#438) - -0.9.3 / 2012-03-28 -================== - - * Fix "Syntax error" on FF Web Console with XHR Polling [mikito] - -0.9.2 / 2012-03-13 -================== - - * More sensible close `timeout default` (fixes disconnect issue) - -0.9.1-1 / 2012-03-02 -==================== - - * Bumped client with NPM dependency fix. - -0.9.1 / 2012-03-02 -================== - - * Changed heartbeat timeout and interval defaults (60 and 25 seconds) - * Make tests work both on 0.4 and 0.6 - * Updated client (improvements + bug fixes). - -0.9.0 / 2012-02-26 -================== - - * Make it possible to use a regexp to match the socket.io resource URL. - We need this because we have to prefix the socket.io URL with a variable ID. - * Supplemental fix to gavinuhma/authfix, it looks like the same Access-Control-Origin logic is needed in the http and xhr-polling transports - * Updated express dep for windows compatibility. - * Combine two substr calls into one in decodePayload to improve performance - * Minor documentation fix - * Minor. Conform to style of other files. - * Switching setting to 'match origin protocol' - * Revert "Fixes leaking Redis subscriptions for #663. The local flag was not getting passed through onClientDisconnect()." - * Revert "Handle leaked dispatch:[id] subscription." - * Merge pull request #667 from dshaw/patch/redis-disconnect - * Handle leaked dispatch:[id] subscription. - * Fixes leaking Redis subscriptions for #663. The local flag was not getting passed through onClientDisconnect(). - * Prevent memory leaking on uncompleted requests & add max post size limitation - * Fix for testcase - * Set Access-Control-Allow-Credentials true, regardless of cookie - * Remove assertvarnish from package as it breaks on 0.6 - * Correct irc channel - * Added proper return after reserved field error - * Fixes manager.js failure to close connection after transport error has happened - * Added implicit port 80 for origin checks. fixes #638 - * Fixed bug #432 in 0.8.7 - * Set Access-Control-Allow-Origin header to origin to enable withCredentials - * Adding configuration variable matchOriginProtocol - * Fixes location mismatch error in Safari. - * Use tty to detect if we should add colors or not by default. - * Updated the package location. - -0.8.7 / 2011-11-05 -================== - - * Fixed memory leaks in closed clients. - * Fixed memory leaks in namespaces. - * Fixed websocket handling for malformed requests from proxies. [einaros] - * Node 0.6 compatibility. [einaros] [3rd-Eden] - * Adapted tests and examples. - -0.8.6 / 2011-10-27 -================== - - * Added JSON decoding on jsonp-polling transport. - * Fixed README example. - * Major speed optimizations [3rd-Eden] [einaros] [visionmedia] - * Added decode/encode benchmarks [visionmedia] - * Added support for black-listing client sent events. - * Fixed logging options, closes #540 [3rd-Eden] - * Added vary header for gzip [3rd-Eden] - * Properly cleaned up async websocket / flashsocket tests, after patching node-websocket-client - * Patched to properly shut down when a finishClose call is made during connection establishment - * Added support for socket.io version on url and far-future Expires [3rd-Eden] [getify] - * Began IE10 compatibility [einaros] [tbranyen] - * Misc WebSocket fixes [einaros] - * Added UTF8 to respone headers for htmlfile [3rd-Eden] - -0.8.5 / 2011-10-07 -================== - - * Added websocket draft HyBi-16 support. [einaros] - * Fixed websocket continuation bugs. [einaros] - * Fixed flashsocket transport name. - * Fixed websocket tests. - * Ensured `parser#decodePayload` doesn't choke. - * Added http referrer verification to manager verifyOrigin. - * Added access control for cross domain xhr handshakes [3rd-Eden] - * Added support for automatic generation of socket.io files [3rd-Eden] - * Added websocket binary support [einaros] - * Added gzip support for socket.io.js [3rd-Eden] - * Expose socket.transport [3rd-Eden] - * Updated client. - -0.8.4 / 2011-09-06 -================== - - * Client build - -0.8.3 / 2011-09-03 -================== - - * Fixed `\n` parsing for non-JSON packets (fixes #479). - * Fixed parsing of certain unicode characters (fixes #451). - * Fixed transport message packet logging. - * Fixed emission of `error` event resulting in an uncaught exception if unhandled (fixes #476). - * Fixed; allow for falsy values as the configuration value of `log level` (fixes #491). - * Fixed repository URI in `package.json`. Fixes #504. - * Added text/plain content-type to handshake responses [einaros] - * Improved single byte writes [einaros] - * Updated socket.io-flashsocket default port from 843 to 10843 [3rd-Eden] - * Updated client. - -0.8.2 / 2011-08-29 -================== - - * Updated client. - -0.8.1 / 2011-08-29 -================== - - * Fixed utf8 bug in send framing in websocket [einaros] - * Fixed typo in docs [Znarkus] - * Fixed bug in send framing for over 64kB of data in websocket [einaros] - * Corrected ping handling in websocket transport [einaros] - -0.8.0 / 2011-08-28 -================== - - * Updated to work with two-level websocket versioning. [einaros] - * Added hybi07 support. [einaros] - * Added hybi10 support. [einaros] - * Added http referrer verification to manager.js verifyOrigin. [einaors] - -0.7.11 / 2011-08-27 -=================== - - * Updated socket.io-client. - -0.7.10 / 2011-08-27 -=================== - - * Updated socket.io-client. - -0.7.9 / 2011-08-12 -================== - - * Updated socket.io-client. - * Make sure we only do garbage collection when the server we receive is actually run. - -0.7.8 / 2011-08-08 -================== - - * Changed; make sure sio#listen passes options to both HTTP server and socket.io manager. - * Added docs for sio#listen. - * Added options parameter support for Manager constructor. - * Added memory leaks tests and test-leaks Makefile task. - * Removed auto npm-linking from make test. - * Make sure that you can disable heartbeats. [3rd-Eden] - * Fixed rooms memory leak [3rd-Eden] - * Send response once we got all POST data, not immediately [Pita] - * Fixed onLeave behavior with missing clientsk [3rd-Eden] - * Prevent duplicate references in rooms. - * Added alias for `to` to `in` and `in` to `to`. - * Fixed roomClients definition. - * Removed dependency on redis for installation without npm [3rd-Eden] - * Expose path and querystring in handshakeData [3rd-Eden] - -0.7.7 / 2011-07-12 -================== - - * Fixed double dispatch handling with emit to closed clients. - * Added test for emitting to closed clients to prevent regression. - * Fixed race condition in redis test. - * Changed Transport#end instrumentation. - * Leveraged $emit instead of emit internally. - * Made tests faster. - * Fixed double disconnect events. - * Fixed disconnect logic - * Simplified remote events handling in Socket. - * Increased testcase timeout. - * Fixed unknown room emitting (GH-291). [3rd-Eden] - * Fixed `address` in handshakeData. [3rd-Eden] - * Removed transports definition in chat example. - * Fixed room cleanup - * Fixed; make sure the client is cleaned up after booting. - * Make sure to mark the client as non-open if the connection is closed. - * Removed unneeded `buffer` declarations. - * Fixed; make sure to clear socket handlers and subscriptions upon transport close. - -0.7.6 / 2011-06-30 -================== - - * Fixed general dispatching when a client has closed. - -0.7.5 / 2011-06-30 -================== - - * Fixed dispatching to clients that are disconnected. - -0.7.4 / 2011-06-30 -================== - - * Fixed; only clear handlers if they were set. [level09] - -0.7.3 / 2011-06-30 -================== - - * Exposed handshake data to clients. - * Refactored dispatcher interface. - * Changed; Moved id generation method into the manager. - * Added sub-namespace authorization. [3rd-Eden] - * Changed; normalized SocketNamespace local eventing [dvv] - * Changed; Use packet.reason or default to 'packet' [3rd-Eden] - * Changed console.error to console.log. - * Fixed; bind both servers at the same time do that the test never times out. - * Added 304 support. - * Removed `Transport#name` for abstract interface. - * Changed; lazily require http and https module only when needed. [3rd-Eden] - -0.7.2 / 2011-06-22 -================== - - * Make sure to write a packet (of type `noop`) when closing a poll. - This solves a problem with cross-domain requests being flagged as aborted and - reconnection being triggered. - * Added `noop` message type. - -0.7.1 / 2011-06-21 -================== - - * Fixed cross-domain XHR. - * Added CORS test to xhr-polling suite. - -0.7.0 / 2010-06-21 -================== - - * http://socket.io/announcement.html diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/LICENSE deleted file mode 100644 index 0f4acd44..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2011 Guillermo Rauch - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Makefile deleted file mode 100644 index 832cba8b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Makefile +++ /dev/null @@ -1,31 +0,0 @@ - -ALL_TESTS = $(shell find test/ -name '*.test.js') -ALL_BENCH = $(shell find benchmarks -name '*.bench.js') - -run-tests: - @./node_modules/.bin/expresso \ - -t 3000 \ - -I support \ - --serial \ - $(TESTFLAGS) \ - $(TESTS) - -test: - @$(MAKE) NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests - -test-cov: - @TESTFLAGS=--cov $(MAKE) test - -test-leaks: - @ls test/leaks/* | xargs node --expose_debug_as=debug --expose_gc - -run-bench: - @node $(PROFILEFLAGS) benchmarks/runner.js - -bench: - @$(MAKE) BENCHMARKS="$(ALL_BENCH)" run-bench - -profile: - @PROFILEFLAGS='--prof --trace-opt --trace-bailout --trace-deopt' $(MAKE) bench - -.PHONY: test bench profile diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Readme.md deleted file mode 100644 index 41f21f68..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/Readme.md +++ /dev/null @@ -1,364 +0,0 @@ -# Socket.IO - -Socket.IO is a Node.JS project that makes WebSockets and realtime possible in -all browsers. It also enhances WebSockets by providing built-in multiplexing, -horizontal scalability, automatic JSON encoding/decoding, and more. - -## How to Install - -```bash -npm install socket.io -``` - -## How to use - -First, require `socket.io`: - -```js -var io = require('socket.io'); -``` - -Next, attach it to a HTTP/HTTPS server. If you're using the fantastic `express` -web framework: - -#### Express 3.x - -```js -var app = express() - , server = require('http').createServer(app) - , io = io.listen(server); - -server.listen(80); - -io.sockets.on('connection', function (socket) { - socket.emit('news', { hello: 'world' }); - socket.on('my other event', function (data) { - console.log(data); - }); -}); -``` - -#### Express 2.x - -```js -var app = express.createServer() - , io = io.listen(app); - -app.listen(80); - -io.sockets.on('connection', function (socket) { - socket.emit('news', { hello: 'world' }); - socket.on('my other event', function (data) { - console.log(data); - }); -}); -``` - -Finally, load it from the client side code: - -```html - - -``` - -For more thorough examples, look at the `examples/` directory. - -## Short recipes - -### Sending and receiving events. - -Socket.IO allows you to emit and receive custom events. -Besides `connect`, `message` and `disconnect`, you can emit custom events: - -```js -// note, io.listen() will create a http server for you -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - io.sockets.emit('this', { will: 'be received by everyone' }); - - socket.on('private message', function (from, msg) { - console.log('I received a private message by ', from, ' saying ', msg); - }); - - socket.on('disconnect', function () { - io.sockets.emit('user disconnected'); - }); -}); -``` - -### Storing data associated to a client - -Sometimes it's necessary to store data associated with a client that's -necessary for the duration of the session. - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - socket.on('set nickname', function (name) { - socket.set('nickname', name, function () { socket.emit('ready'); }); - }); - - socket.on('msg', function () { - socket.get('nickname', function (err, name) { - console.log('Chat message by ', name); - }); - }); -}); -``` - -#### Client side - -```html - -``` - -### Restricting yourself to a namespace - -If you have control over all the messages and events emitted for a particular -application, using the default `/` namespace works. - -If you want to leverage 3rd-party code, or produce code to share with others, -socket.io provides a way of namespacing a `socket`. - -This has the benefit of `multiplexing` a single connection. Instead of -socket.io using two `WebSocket` connections, it'll use one. - -The following example defines a socket that listens on '/chat' and one for -'/news': - -#### Server side - -```js -var io = require('socket.io').listen(80); - -var chat = io - .of('/chat') - .on('connection', function (socket) { - socket.emit('a message', { that: 'only', '/chat': 'will get' }); - chat.emit('a message', { everyone: 'in', '/chat': 'will get' }); - }); - -var news = io - .of('/news'); - .on('connection', function (socket) { - socket.emit('item', { news: 'item' }); - }); -``` - -#### Client side: - -```html - -``` - -### Sending volatile messages. - -Sometimes certain messages can be dropped. Let's say you have an app that -shows realtime tweets for the keyword `bieber`. - -If a certain client is not ready to receive messages (because of network slowness -or other issues, or because he's connected through long polling and is in the -middle of a request-response cycle), if he doesn't receive ALL the tweets related -to bieber your application won't suffer. - -In that case, you might want to send those messages as volatile messages. - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - var tweets = setInterval(function () { - getBieberTweet(function (tweet) { - socket.volatile.emit('bieber tweet', tweet); - }); - }, 100); - - socket.on('disconnect', function () { - clearInterval(tweets); - }); -}); -``` - -#### Client side - -In the client side, messages are received the same way whether they're volatile -or not. - -### Getting acknowledgements - -Sometimes, you might want to get a callback when the client confirmed the message -reception. - -To do this, simply pass a function as the last parameter of `.send` or `.emit`. -What's more, when you use `.emit`, the acknowledgement is done by you, which -means you can also pass data along: - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - socket.on('ferret', function (name, fn) { - fn('woot'); - }); -}); -``` - -#### Client side - -```html - -``` - -### Broadcasting messages - -To broadcast, simply add a `broadcast` flag to `emit` and `send` method calls. -Broadcasting means sending a message to everyone else except for the socket -that starts it. - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - socket.broadcast.emit('user connected'); - socket.broadcast.json.send({ a: 'message' }); -}); -``` - -### Rooms - -Sometimes you want to put certain sockets in the same room, so that it's easy -to broadcast to all of them together. - -Think of this as built-in channels for sockets. Sockets `join` and `leave` -rooms in each socket. - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - socket.join('justin bieber fans'); - socket.broadcast.to('justin bieber fans').emit('new fan'); - io.sockets.in('rammstein fans').emit('new non-fan'); -}); -``` - -### Using it just as a cross-browser WebSocket - -If you just want the WebSocket semantics, you can do that too. -Simply leverage `send` and listen on the `message` event: - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.sockets.on('connection', function (socket) { - socket.on('message', function () { }); - socket.on('disconnect', function () { }); -}); -``` - -#### Client side - -```html - -``` - -### Changing configuration - -Configuration in socket.io is TJ-style: - -#### Server side - -```js -var io = require('socket.io').listen(80); - -io.configure(function () { - io.set('transports', ['websocket', 'flashsocket', 'xhr-polling']); -}); - -io.configure('development', function () { - io.set('transports', ['websocket', 'xhr-polling']); - io.enable('log'); -}); -``` - -## License - -(The MIT License) - -Copyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/decode.bench.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/decode.bench.js deleted file mode 100644 index 4855d805..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/decode.bench.js +++ /dev/null @@ -1,64 +0,0 @@ - -/** - * Module dependencies. - */ - -var benchmark = require('benchmark') - , colors = require('colors') - , io = require('../') - , parser = io.parser - , suite = new benchmark.Suite('Decode packet'); - -suite.add('string', function () { - parser.decodePacket('4:::"2"'); -}); - -suite.add('event', function () { - parser.decodePacket('5:::{"name":"woot"}'); -}); - -suite.add('event+ack', function () { - parser.decodePacket('5:1+::{"name":"tobi"}'); -}); - -suite.add('event+data', function () { - parser.decodePacket('5:::{"name":"edwald","args":[{"a": "b"},2,"3"]}'); -}); - -suite.add('heartbeat', function () { - parser.decodePacket('2:::'); -}); - -suite.add('error', function () { - parser.decodePacket('7:::2+0'); -}); - -var payload = parser.encodePayload([ - parser.encodePacket({ type: 'message', data: '5', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: '53d', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) -]); - -suite.add('payload', function () { - parser.decodePayload(payload); -}); - -suite.on('cycle', function (bench, details) { - console.log('\n' + suite.name.grey, details.name.white.bold); - console.log([ - details.hz.toFixed(2).cyan + ' ops/sec'.grey - , details.count.toString().white + ' times executed'.grey - , 'benchmark took '.grey + details.times.elapsed.toString().white + ' sec.'.grey - , - ].join(', '.grey)); -}); - -if (!module.parent) { - suite.run(); -} else { - module.exports = suite; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/encode.bench.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/encode.bench.js deleted file mode 100644 index 5037702d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/encode.bench.js +++ /dev/null @@ -1,90 +0,0 @@ - -/** - * Module dependencies. - */ - -var benchmark = require('benchmark') - , colors = require('colors') - , io = require('../') - , parser = io.parser - , suite = new benchmark.Suite('Encode packet'); - -suite.add('string', function () { - parser.encodePacket({ - type: 'json' - , endpoint: '' - , data: '2' - }); -}); - -suite.add('event', function () { - parser.encodePacket({ - type: 'event' - , name: 'woot' - , endpoint: '' - , args: [] - }); -}); - -suite.add('event+ack', function () { - parser.encodePacket({ - type: 'json' - , id: 1 - , ack: 'data' - , endpoint: '' - , data: { a: 'b' } - }); -}); - -suite.add('event+data', function () { - parser.encodePacket({ - type: 'event' - , name: 'edwald' - , endpoint: '' - , args: [{a: 'b'}, 2, '3'] - }); -}); - -suite.add('heartbeat', function () { - parser.encodePacket({ - type: 'heartbeat' - , endpoint: '' - }) -}); - -suite.add('error', function () { - parser.encodePacket({ - type: 'error' - , reason: 'unauthorized' - , advice: 'reconnect' - , endpoint: '' - }) -}) - -suite.add('payload', function () { - parser.encodePayload([ - parser.encodePacket({ type: 'message', data: '5', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: '53d', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbazfoobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobarbaz', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: 'foobar', endpoint: '' }) - ]); -}); - -suite.on('cycle', function (bench, details) { - console.log('\n' + suite.name.grey, details.name.white.bold); - console.log([ - details.hz.toFixed(2).cyan + ' ops/sec'.grey - , details.count.toString().white + ' times executed'.grey - , 'benchmark took '.grey + details.times.elapsed.toString().white + ' sec.'.grey - , - ].join(', '.grey)); -}); - -if (!module.parent) { - suite.run(); -} else { - module.exports = suite; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/runner.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/runner.js deleted file mode 100644 index 81e55cae..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/benchmarks/runner.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Benchmark runner dependencies - */ - -var colors = require('colors') - , path = require('path'); - -/** - * Find all the benchmarks - */ - -var benchmarks_files = process.env.BENCHMARKS.split(' ') - , all = [].concat(benchmarks_files) - , first = all.shift() - , benchmarks = {}; - -// find the benchmarks and load them all in our obj -benchmarks_files.forEach(function (file) { - benchmarks[file] = require(path.join(__dirname, '..', file)); -}); - -// setup the complete listeners -benchmarks_files.forEach(function (file) { - var benchmark = benchmarks[file] - , next_file = all.shift() - , next = benchmarks[next_file]; - - /** - * Generate a oncomplete function for the tests, either we are done or we - * have more benchmarks to process. - */ - - function complete () { - if (!next) { - console.log( - '\n\nBenchmark completed in'.grey - , (Date.now() - start).toString().green + ' ms'.grey - ); - } else { - console.log('\nStarting benchmark '.grey + next_file.yellow); - next.run(); - } - } - - // attach the listener - benchmark.on('complete', complete); -}); - -/** - * Start the benchmark - */ - -var start = Date.now(); -console.log('Starting benchmark '.grey + first.yellow); -benchmarks[first].run(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/index.js deleted file mode 100644 index cc00c103..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -module.exports = require('./lib/socket.io'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/latest b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/latest deleted file mode 100755 index a1001932..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/latest +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -npm tag socket.io@0.9.16 latest diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/logger.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/logger.js deleted file mode 100644 index 49d02c98..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/logger.js +++ /dev/null @@ -1,97 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var util = require('./util') - , toArray = util.toArray; - -/** - * Log levels. - */ - -var levels = [ - 'error' - , 'warn' - , 'info' - , 'debug' -]; - -/** - * Colors for log levels. - */ - -var colors = [ - 31 - , 33 - , 36 - , 90 -]; - -/** - * Pads the nice output to the longest log level. - */ - -function pad (str) { - var max = 0; - - for (var i = 0, l = levels.length; i < l; i++) - max = Math.max(max, levels[i].length); - - if (str.length < max) - return str + new Array(max - str.length + 1).join(' '); - - return str; -}; - -/** - * Logger (console). - * - * @api public - */ - -var Logger = module.exports = function (opts) { - opts = opts || {} - this.colors = false !== opts.colors; - this.level = 3; - this.enabled = true; -}; - -/** - * Log method. - * - * @api public - */ - -Logger.prototype.log = function (type) { - var index = levels.indexOf(type); - - if (index > this.level || !this.enabled) - return this; - - console.log.apply( - console - , [this.colors - ? ' \033[' + colors[index] + 'm' + pad(type) + ' -\033[39m' - : type + ':' - ].concat(toArray(arguments).slice(1)) - ); - - return this; -}; - -/** - * Generate methods. - */ - -levels.forEach(function (name) { - Logger.prototype[name] = function () { - this.log.apply(this, [name].concat(toArray(arguments))); - }; -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/manager.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/manager.js deleted file mode 100644 index 17ed9e4e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/manager.js +++ /dev/null @@ -1,1042 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var fs = require('fs') - , url = require('url') - , tty = require('tty') - , crypto = require('crypto') - , util = require('./util') - , store = require('./store') - , client = require('socket.io-client') - , transports = require('./transports') - , Logger = require('./logger') - , Socket = require('./socket') - , MemoryStore = require('./stores/memory') - , SocketNamespace = require('./namespace') - , Static = require('./static') - , EventEmitter = process.EventEmitter; - -/** - * Export the constructor. - */ - -exports = module.exports = Manager; - -/** - * Default transports. - */ - -var defaultTransports = exports.defaultTransports = [ - 'websocket' - , 'htmlfile' - , 'xhr-polling' - , 'jsonp-polling' -]; - -/** - * Inherited defaults. - */ - -var parent = module.parent.exports - , protocol = parent.protocol - , jsonpolling_re = /^\d+$/; - -/** - * Manager constructor. - * - * @param {HTTPServer} server - * @param {Object} options, optional - * @api public - */ - -function Manager (server, options) { - this.server = server; - this.namespaces = {}; - this.sockets = this.of(''); - this.settings = { - origins: '*:*' - , log: true - , store: new MemoryStore - , logger: new Logger - , static: new Static(this) - , heartbeats: true - , resource: '/socket.io' - , transports: defaultTransports - , authorization: false - , blacklist: ['disconnect'] - , 'log level': 3 - , 'log colors': tty.isatty(process.stdout.fd) - , 'close timeout': 60 - , 'heartbeat interval': 25 - , 'heartbeat timeout': 60 - , 'polling duration': 20 - , 'flash policy server': true - , 'flash policy port': 10843 - , 'destroy upgrade': true - , 'destroy buffer size': 10E7 - , 'browser client': true - , 'browser client cache': true - , 'browser client minification': false - , 'browser client etag': false - , 'browser client expires': 315360000 - , 'browser client gzip': false - , 'browser client handler': false - , 'client store expiration': 15 - , 'match origin protocol': false - }; - - for (var i in options) { - if (options.hasOwnProperty(i)) { - this.settings[i] = options[i]; - } - } - - var self = this; - - // default error handler - server.on('error', function(err) { - self.log.warn('error raised: ' + err); - }); - - this.initStore(); - - this.on('set:store', function() { - self.initStore(); - }); - - // reset listeners - this.oldListeners = server.listeners('request').splice(0); - server.removeAllListeners('request'); - - server.on('request', function (req, res) { - self.handleRequest(req, res); - }); - - server.on('upgrade', function (req, socket, head) { - self.handleUpgrade(req, socket, head); - }); - - server.on('close', function () { - clearInterval(self.gc); - }); - - server.once('listening', function () { - self.gc = setInterval(self.garbageCollection.bind(self), 10000); - }); - - for (var i in transports) { - if (transports.hasOwnProperty(i)) { - if (transports[i].init) { - transports[i].init(this); - } - } - } - - // forward-compatibility with 1.0 - var self = this; - this.sockets.on('connection', function (conn) { - self.emit('connection', conn); - }); - - this.sequenceNumber = Date.now() | 0; - - this.log.info('socket.io started'); -}; - -Manager.prototype.__proto__ = EventEmitter.prototype - -/** - * Store accessor shortcut. - * - * @api public - */ - -Manager.prototype.__defineGetter__('store', function () { - var store = this.get('store'); - store.manager = this; - return store; -}); - -/** - * Logger accessor. - * - * @api public - */ - -Manager.prototype.__defineGetter__('log', function () { - var logger = this.get('logger'); - - logger.level = this.get('log level') || -1; - logger.colors = this.get('log colors'); - logger.enabled = this.enabled('log'); - - return logger; -}); - -/** - * Static accessor. - * - * @api public - */ - -Manager.prototype.__defineGetter__('static', function () { - return this.get('static'); -}); - -/** - * Get settings. - * - * @api public - */ - -Manager.prototype.get = function (key) { - return this.settings[key]; -}; - -/** - * Set settings - * - * @api public - */ - -Manager.prototype.set = function (key, value) { - if (arguments.length == 1) return this.get(key); - this.settings[key] = value; - this.emit('set:' + key, this.settings[key], key); - return this; -}; - -/** - * Enable a setting - * - * @api public - */ - -Manager.prototype.enable = function (key) { - this.settings[key] = true; - this.emit('set:' + key, this.settings[key], key); - return this; -}; - -/** - * Disable a setting - * - * @api public - */ - -Manager.prototype.disable = function (key) { - this.settings[key] = false; - this.emit('set:' + key, this.settings[key], key); - return this; -}; - -/** - * Checks if a setting is enabled - * - * @api public - */ - -Manager.prototype.enabled = function (key) { - return !!this.settings[key]; -}; - -/** - * Checks if a setting is disabled - * - * @api public - */ - -Manager.prototype.disabled = function (key) { - return !this.settings[key]; -}; - -/** - * Configure callbacks. - * - * @api public - */ - -Manager.prototype.configure = function (env, fn) { - if ('function' == typeof env) { - env.call(this); - } else if (env == (process.env.NODE_ENV || 'development')) { - fn.call(this); - } - - return this; -}; - -/** - * Initializes everything related to the message dispatcher. - * - * @api private - */ - -Manager.prototype.initStore = function () { - this.handshaken = {}; - this.connected = {}; - this.open = {}; - this.closed = {}; - this.rooms = {}; - this.roomClients = {}; - - var self = this; - - this.store.subscribe('handshake', function (id, data) { - self.onHandshake(id, data); - }); - - this.store.subscribe('connect', function (id) { - self.onConnect(id); - }); - - this.store.subscribe('open', function (id) { - self.onOpen(id); - }); - - this.store.subscribe('join', function (id, room) { - self.onJoin(id, room); - }); - - this.store.subscribe('leave', function (id, room) { - self.onLeave(id, room); - }); - - this.store.subscribe('close', function (id) { - self.onClose(id); - }); - - this.store.subscribe('dispatch', function (room, packet, volatile, exceptions) { - self.onDispatch(room, packet, volatile, exceptions); - }); - - this.store.subscribe('disconnect', function (id) { - self.onDisconnect(id); - }); - - // we need to do this in a pub/sub way since the client can POST the message - // over a different socket (ie: different Transport instance) - - //use persistent channel for these, don't add and remove 5 channels for every connection - //eg. for 10,000 concurrent users this creates 50,000 channels in redis, which kind of slows things down - //we only need 5 (extra) total channels at all times - this.store.subscribe('message-remote',function (id, packet) { - self.onClientMessage(id, packet); - }); - - this.store.subscribe('disconnect-remote', function (id, reason) { - self.onClientDisconnect(id, reason); - }); - - this.store.subscribe('dispatch-remote', function (id, packet, volatile) { - var transport = self.transports[id]; - if (transport) { - transport.onDispatch(packet, volatile); - } - - if (!volatile) { - self.onClientDispatch(id, packet); - } - }); - - this.store.subscribe('heartbeat-clear', function (id) { - var transport = self.transports[id]; - if (transport) { - transport.onHeartbeatClear(); - } - }); - - this.store.subscribe('disconnect-force', function (id) { - var transport = self.transports[id]; - if (transport) { - transport.onForcedDisconnect(); - } - }); -}; -/** - * Called when a client handshakes. - * - * @param text - */ - -Manager.prototype.onHandshake = function (id, data) { - this.handshaken[id] = data; -}; - -/** - * Called when a client connects (ie: transport first opens) - * - * @api private - */ - -Manager.prototype.onConnect = function (id) { - this.connected[id] = true; -}; - -/** - * Called when a client opens a request in a different node. - * - * @api private - */ - -Manager.prototype.onOpen = function (id) { - this.open[id] = true; - - if (this.closed[id]) { - var self = this; - - var transport = self.transports[id]; - if (self.closed[id] && self.closed[id].length && transport) { - - // if we have buffered messages that accumulate between calling - // onOpen an this async callback, send them if the transport is - // still open, otherwise leave them buffered - if (transport.open) { - transport.payload(self.closed[id]); - self.closed[id] = []; - } - } - } - - // clear the current transport - if (this.transports[id]) { - this.transports[id].discard(); - this.transports[id] = null; - } -}; - -/** - * Called when a message is sent to a namespace and/or room. - * - * @api private - */ - -Manager.prototype.onDispatch = function (room, packet, volatile, exceptions) { - if (this.rooms[room]) { - for (var i = 0, l = this.rooms[room].length; i < l; i++) { - var id = this.rooms[room][i]; - - if (!~exceptions.indexOf(id)) { - if (this.transports[id] && this.transports[id].open) { - this.transports[id].onDispatch(packet, volatile); - } else if (!volatile) { - this.onClientDispatch(id, packet); - } - } - } - } -}; - -/** - * Called when a client joins a nsp / room. - * - * @api private - */ - -Manager.prototype.onJoin = function (id, name) { - if (!this.roomClients[id]) { - this.roomClients[id] = {}; - } - - if (!this.rooms[name]) { - this.rooms[name] = []; - } - - if (!~this.rooms[name].indexOf(id)) { - this.rooms[name].push(id); - this.roomClients[id][name] = true; - } -}; - -/** - * Called when a client leaves a nsp / room. - * - * @param private - */ - -Manager.prototype.onLeave = function (id, room) { - if (this.rooms[room]) { - var index = this.rooms[room].indexOf(id); - - if (index >= 0) { - this.rooms[room].splice(index, 1); - } - - if (!this.rooms[room].length) { - delete this.rooms[room]; - } - - if (this.roomClients[id]) { - delete this.roomClients[id][room]; - } - } -}; - -/** - * Called when a client closes a request in different node. - * - * @api private - */ - -Manager.prototype.onClose = function (id) { - if (this.open[id]) { - delete this.open[id]; - } - - this.closed[id] = []; - - var self = this; -}; - -/** - * Dispatches a message for a closed client. - * - * @api private - */ - -Manager.prototype.onClientDispatch = function (id, packet) { - if (this.closed[id]) { - this.closed[id].push(packet); - } -}; - -/** - * Receives a message for a client. - * - * @api private - */ - -Manager.prototype.onClientMessage = function (id, packet) { - if (this.namespaces[packet.endpoint]) { - this.namespaces[packet.endpoint].handlePacket(id, packet); - } -}; - -/** - * Fired when a client disconnects (not triggered). - * - * @api private - */ - -Manager.prototype.onClientDisconnect = function (id, reason) { - for (var name in this.namespaces) { - if (this.namespaces.hasOwnProperty(name)) { - this.namespaces[name].handleDisconnect(id, reason, typeof this.roomClients[id] !== 'undefined' && - typeof this.roomClients[id][name] !== 'undefined'); - } - } - - this.onDisconnect(id); -}; - -/** - * Called when a client disconnects. - * - * @param text - */ - -Manager.prototype.onDisconnect = function (id) { - delete this.handshaken[id]; - - if (this.open[id]) { - delete this.open[id]; - } - - if (this.connected[id]) { - delete this.connected[id]; - } - - if (this.transports[id]) { - this.transports[id].discard(); - delete this.transports[id]; - } - - if (this.closed[id]) { - delete this.closed[id]; - } - - if (this.roomClients[id]) { - for (var room in this.roomClients[id]) { - if (this.roomClients[id].hasOwnProperty(room)) { - this.onLeave(id, room); - } - } - delete this.roomClients[id] - } - - this.store.destroyClient(id, this.get('client store expiration')); -}; - -/** - * Handles an HTTP request. - * - * @api private - */ - -Manager.prototype.handleRequest = function (req, res) { - var data = this.checkRequest(req); - - if (!data) { - for (var i = 0, l = this.oldListeners.length; i < l; i++) { - this.oldListeners[i].call(this.server, req, res); - } - - return; - } - - if (data.static || !data.transport && !data.protocol) { - if (data.static && this.enabled('browser client')) { - this.static.write(data.path, req, res); - } else { - res.writeHead(200); - res.end('Welcome to socket.io.'); - - this.log.info('unhandled socket.io url'); - } - - return; - } - - if (data.protocol != protocol) { - res.writeHead(500); - res.end('Protocol version not supported.'); - - this.log.info('client protocol version unsupported'); - } else { - if (data.id) { - this.handleHTTPRequest(data, req, res); - } else { - this.handleHandshake(data, req, res); - } - } -}; - -/** - * Handles an HTTP Upgrade. - * - * @api private - */ - -Manager.prototype.handleUpgrade = function (req, socket, head) { - var data = this.checkRequest(req) - , self = this; - - if (!data) { - if (this.enabled('destroy upgrade')) { - socket.end(); - this.log.debug('destroying non-socket.io upgrade'); - } - - return; - } - - req.head = head; - this.handleClient(data, req); - req.head = null; -}; - -/** - * Handles a normal handshaken HTTP request (eg: long-polling) - * - * @api private - */ - -Manager.prototype.handleHTTPRequest = function (data, req, res) { - req.res = res; - this.handleClient(data, req); -}; - -/** - * Intantiantes a new client. - * - * @api private - */ - -Manager.prototype.handleClient = function (data, req) { - var socket = req.socket - , store = this.store - , self = this; - - // handle sync disconnect xhrs - if (undefined != data.query.disconnect) { - if (this.transports[data.id] && this.transports[data.id].open) { - this.transports[data.id].onForcedDisconnect(); - } else { - this.store.publish('disconnect-force', data.id); - } - req.res.writeHead(200); - req.res.end(); - return; - } - - if (!~this.get('transports').indexOf(data.transport)) { - this.log.warn('unknown transport: "' + data.transport + '"'); - req.connection.end(); - return; - } - - var transport = new transports[data.transport](this, data, req) - , handshaken = this.handshaken[data.id]; - - if (transport.disconnected) { - // failed during transport setup - req.connection.end(); - return; - } - if (handshaken) { - if (transport.open) { - if (this.closed[data.id] && this.closed[data.id].length) { - transport.payload(this.closed[data.id]); - this.closed[data.id] = []; - } - - this.onOpen(data.id); - this.store.publish('open', data.id); - this.transports[data.id] = transport; - } - - if (!this.connected[data.id]) { - this.onConnect(data.id); - this.store.publish('connect', data.id); - - // flag as used - delete handshaken.issued; - this.onHandshake(data.id, handshaken); - this.store.publish('handshake', data.id, handshaken); - - // initialize the socket for all namespaces - for (var i in this.namespaces) { - if (this.namespaces.hasOwnProperty(i)) { - var socket = this.namespaces[i].socket(data.id, true); - - // echo back connect packet and fire connection event - if (i === '') { - this.namespaces[i].handlePacket(data.id, { type: 'connect' }); - } - } - } - } - } else { - if (transport.open) { - transport.error('client not handshaken', 'reconnect'); - } - - transport.discard(); - } -}; - -/** - * Generates a session id. - * - * @api private - */ - -Manager.prototype.generateId = function () { - var rand = new Buffer(15); // multiple of 3 for base64 - if (!rand.writeInt32BE) { - return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() - + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); - } - this.sequenceNumber = (this.sequenceNumber + 1) | 0; - rand.writeInt32BE(this.sequenceNumber, 11); - if (crypto.randomBytes) { - crypto.randomBytes(12).copy(rand); - } else { - // not secure for node 0.4 - [0, 4, 8].forEach(function(i) { - rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); - }); - } - return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); -}; - -/** - * Handles a handshake request. - * - * @api private - */ - -Manager.prototype.handleHandshake = function (data, req, res) { - var self = this - , origin = req.headers.origin - , headers = { - 'Content-Type': 'text/plain' - }; - - function writeErr (status, message) { - if (data.query.jsonp && jsonpolling_re.test(data.query.jsonp)) { - res.writeHead(200, { 'Content-Type': 'application/javascript' }); - res.end('io.j[' + data.query.jsonp + '](new Error("' + message + '"));'); - } else { - res.writeHead(status, headers); - res.end(message); - } - }; - - function error (err) { - writeErr(500, 'handshake error'); - self.log.warn('handshake error ' + err); - }; - - if (!this.verifyOrigin(req)) { - writeErr(403, 'handshake bad origin'); - return; - } - - var handshakeData = this.handshakeData(data); - - if (origin) { - // https://developer.mozilla.org/En/HTTP_Access_Control - headers['Access-Control-Allow-Origin'] = origin; - headers['Access-Control-Allow-Credentials'] = 'true'; - } - - this.authorize(handshakeData, function (err, authorized, newData) { - if (err) return error(err); - - if (authorized) { - var id = self.generateId() - , hs = [ - id - , self.enabled('heartbeats') ? self.get('heartbeat timeout') || '' : '' - , self.get('close timeout') || '' - , self.transports(data).join(',') - ].join(':'); - - if (data.query.jsonp && jsonpolling_re.test(data.query.jsonp)) { - hs = 'io.j[' + data.query.jsonp + '](' + JSON.stringify(hs) + ');'; - res.writeHead(200, { 'Content-Type': 'application/javascript' }); - } else { - res.writeHead(200, headers); - } - - self.onHandshake(id, newData || handshakeData); - self.store.publish('handshake', id, newData || handshakeData); - - res.end(hs); - - self.log.info('handshake authorized', id); - } else { - writeErr(403, 'handshake unauthorized'); - self.log.info('handshake unauthorized'); - } - }) -}; - -/** - * Gets normalized handshake data - * - * @api private - */ - -Manager.prototype.handshakeData = function (data) { - var connection = data.request.connection - , connectionAddress - , date = new Date; - - if (connection.remoteAddress) { - connectionAddress = { - address: connection.remoteAddress - , port: connection.remotePort - }; - } else if (connection.socket && connection.socket.remoteAddress) { - connectionAddress = { - address: connection.socket.remoteAddress - , port: connection.socket.remotePort - }; - } - - return { - headers: data.headers - , address: connectionAddress - , time: date.toString() - , query: data.query - , url: data.request.url - , xdomain: !!data.request.headers.origin - , secure: data.request.connection.secure - , issued: +date - }; -}; - -/** - * Verifies the origin of a request. - * - * @api private - */ - -Manager.prototype.verifyOrigin = function (request) { - var origin = request.headers.origin || request.headers.referer - , origins = this.get('origins'); - - if (origin === 'null') origin = '*'; - - if (origins.indexOf('*:*') !== -1) { - return true; - } - - if (origin) { - try { - var parts = url.parse(origin); - parts.port = parts.port || 80; - var ok = - ~origins.indexOf(parts.hostname + ':' + parts.port) || - ~origins.indexOf(parts.hostname + ':*') || - ~origins.indexOf('*:' + parts.port); - if (!ok) this.log.warn('illegal origin: ' + origin); - return ok; - } catch (ex) { - this.log.warn('error parsing origin'); - } - } - else { - this.log.warn('origin missing from handshake, yet required by config'); - } - return false; -}; - -/** - * Handles an incoming packet. - * - * @api private - */ - -Manager.prototype.handlePacket = function (sessid, packet) { - this.of(packet.endpoint || '').handlePacket(sessid, packet); -}; - -/** - * Performs authentication. - * - * @param Object client request data - * @api private - */ - -Manager.prototype.authorize = function (data, fn) { - if (this.get('authorization')) { - var self = this; - - this.get('authorization').call(this, data, function (err, authorized) { - self.log.debug('client ' + authorized ? 'authorized' : 'unauthorized'); - fn(err, authorized); - }); - } else { - this.log.debug('client authorized'); - fn(null, true); - } - - return this; -}; - -/** - * Retrieves the transports adviced to the user. - * - * @api private - */ - -Manager.prototype.transports = function (data) { - var transp = this.get('transports') - , ret = []; - - for (var i = 0, l = transp.length; i < l; i++) { - var transport = transp[i]; - - if (transport) { - if (!transport.checkClient || transport.checkClient(data)) { - ret.push(transport); - } - } - } - - return ret; -}; - -/** - * Checks whether a request is a socket.io one. - * - * @return {Object} a client request data object or `false` - * @api private - */ - -var regexp = /^\/([^\/]+)\/?([^\/]+)?\/?([^\/]+)?\/?$/ - -Manager.prototype.checkRequest = function (req) { - var resource = this.get('resource'); - - var match; - if (typeof resource === 'string') { - match = req.url.substr(0, resource.length); - if (match !== resource) match = null; - } else { - match = resource.exec(req.url); - if (match) match = match[0]; - } - - if (match) { - var uri = url.parse(req.url.substr(match.length), true) - , path = uri.pathname || '' - , pieces = path.match(regexp); - - // client request data - var data = { - query: uri.query || {} - , headers: req.headers - , request: req - , path: path - }; - - if (pieces) { - data.protocol = Number(pieces[1]); - data.transport = pieces[2]; - data.id = pieces[3]; - data.static = !!this.static.has(path); - }; - - return data; - } - - return false; -}; - -/** - * Declares a socket namespace - * - * @api public - */ - -Manager.prototype.of = function (nsp) { - if (this.namespaces[nsp]) { - return this.namespaces[nsp]; - } - - return this.namespaces[nsp] = new SocketNamespace(this, nsp); -}; - -/** - * Perform garbage collection on long living objects and properties that cannot - * be removed automatically. - * - * @api private - */ - -Manager.prototype.garbageCollection = function () { - // clean up unused handshakes - var ids = Object.keys(this.handshaken) - , i = ids.length - , now = Date.now() - , handshake; - - while (i--) { - handshake = this.handshaken[ids[i]]; - - if ('issued' in handshake && (now - handshake.issued) >= 3E4) { - this.onDisconnect(ids[i]); - } - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/namespace.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/namespace.js deleted file mode 100644 index 6e1e1c92..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/namespace.js +++ /dev/null @@ -1,355 +0,0 @@ -/** - * Module dependencies. - */ - -var Socket = require('./socket') - , EventEmitter = process.EventEmitter - , parser = require('./parser') - , util = require('./util'); - -/** - * Exports the constructor. - */ - -exports = module.exports = SocketNamespace; - -/** - * Constructor. - * - * @api public. - */ - -function SocketNamespace (mgr, name) { - this.manager = mgr; - this.name = name || ''; - this.sockets = {}; - this.auth = false; - this.setFlags(); -}; - -/** - * Inherits from EventEmitter. - */ - -SocketNamespace.prototype.__proto__ = EventEmitter.prototype; - -/** - * Copies emit since we override it. - * - * @api private - */ - -SocketNamespace.prototype.$emit = EventEmitter.prototype.emit; - -/** - * Retrieves all clients as Socket instances as an array. - * - * @api public - */ - -SocketNamespace.prototype.clients = function (room) { - var room = this.name + (room !== undefined ? - '/' + room : ''); - - if (!this.manager.rooms[room]) { - return []; - } - - return this.manager.rooms[room].map(function (id) { - return this.socket(id); - }, this); -}; - -/** - * Access logger interface. - * - * @api public - */ - -SocketNamespace.prototype.__defineGetter__('log', function () { - return this.manager.log; -}); - -/** - * Access store. - * - * @api public - */ - -SocketNamespace.prototype.__defineGetter__('store', function () { - return this.manager.store; -}); - -/** - * JSON message flag. - * - * @api public - */ - -SocketNamespace.prototype.__defineGetter__('json', function () { - this.flags.json = true; - return this; -}); - -/** - * Volatile message flag. - * - * @api public - */ - -SocketNamespace.prototype.__defineGetter__('volatile', function () { - this.flags.volatile = true; - return this; -}); - -/** - * Overrides the room to relay messages to (flag). - * - * @api public - */ - -SocketNamespace.prototype.in = SocketNamespace.prototype.to = function (room) { - this.flags.endpoint = this.name + (room ? '/' + room : ''); - return this; -}; - -/** - * Adds a session id we should prevent relaying messages to (flag). - * - * @api public - */ - -SocketNamespace.prototype.except = function (id) { - this.flags.exceptions.push(id); - return this; -}; - -/** - * Sets the default flags. - * - * @api private - */ - -SocketNamespace.prototype.setFlags = function () { - this.flags = { - endpoint: this.name - , exceptions: [] - }; - return this; -}; - -/** - * Sends out a packet. - * - * @api private - */ - -SocketNamespace.prototype.packet = function (packet) { - packet.endpoint = this.name; - - var store = this.store - , log = this.log - , volatile = this.flags.volatile - , exceptions = this.flags.exceptions - , packet = parser.encodePacket(packet); - - this.manager.onDispatch(this.flags.endpoint, packet, volatile, exceptions); - this.store.publish('dispatch', this.flags.endpoint, packet, volatile, exceptions); - - this.setFlags(); - - return this; -}; - -/** - * Sends to everyone. - * - * @api public - */ - -SocketNamespace.prototype.send = function (data) { - return this.packet({ - type: this.flags.json ? 'json' : 'message' - , data: data - }); -}; - -/** - * Emits to everyone (override). - * - * @api public - */ - -SocketNamespace.prototype.emit = function (name) { - if (name == 'newListener') { - return this.$emit.apply(this, arguments); - } - - return this.packet({ - type: 'event' - , name: name - , args: util.toArray(arguments).slice(1) - }); -}; - -/** - * Retrieves or creates a write-only socket for a client, unless specified. - * - * @param {Boolean} whether the socket will be readable when initialized - * @api public - */ - -SocketNamespace.prototype.socket = function (sid, readable) { - if (!this.sockets[sid]) { - this.sockets[sid] = new Socket(this.manager, sid, this, readable); - } - - return this.sockets[sid]; -}; - -/** - * Sets authorization for this namespace. - * - * @api public - */ - -SocketNamespace.prototype.authorization = function (fn) { - this.auth = fn; - return this; -}; - -/** - * Called when a socket disconnects entirely. - * - * @api private - */ - -SocketNamespace.prototype.handleDisconnect = function (sid, reason, raiseOnDisconnect) { - if (this.sockets[sid] && this.sockets[sid].readable) { - if (raiseOnDisconnect) this.sockets[sid].onDisconnect(reason); - delete this.sockets[sid]; - } -}; - -/** - * Performs authentication. - * - * @param Object client request data - * @api private - */ - -SocketNamespace.prototype.authorize = function (data, fn) { - if (this.auth) { - var self = this; - - this.auth.call(this, data, function (err, authorized) { - self.log.debug('client ' + - (authorized ? '' : 'un') + 'authorized for ' + self.name); - fn(err, authorized); - }); - } else { - this.log.debug('client authorized for ' + this.name); - fn(null, true); - } - - return this; -}; - -/** - * Handles a packet. - * - * @api private - */ - -SocketNamespace.prototype.handlePacket = function (sessid, packet) { - var socket = this.socket(sessid) - , dataAck = packet.ack == 'data' - , manager = this.manager - , self = this; - - function ack () { - self.log.debug('sending data ack packet'); - socket.packet({ - type: 'ack' - , args: util.toArray(arguments) - , ackId: packet.id - }); - }; - - function error (err) { - self.log.warn('handshake error ' + err + ' for ' + self.name); - socket.packet({ type: 'error', reason: err }); - }; - - function connect () { - self.manager.onJoin(sessid, self.name); - self.store.publish('join', sessid, self.name); - - // packet echo - socket.packet({ type: 'connect' }); - - // emit connection event - self.$emit('connection', socket); - }; - - switch (packet.type) { - case 'connect': - if (packet.endpoint == '') { - connect(); - } else { - var handshakeData = manager.handshaken[sessid]; - - this.authorize(handshakeData, function (err, authorized, newData) { - if (err) return error(err); - - if (authorized) { - manager.onHandshake(sessid, newData || handshakeData); - self.store.publish('handshake', sessid, newData || handshakeData); - connect(); - } else { - error('unauthorized'); - } - }); - } - break; - - case 'ack': - if (socket.acks[packet.ackId]) { - socket.acks[packet.ackId].apply(socket, packet.args); - } else { - this.log.info('unknown ack packet'); - } - break; - - case 'event': - // check if the emitted event is not blacklisted - if (-~manager.get('blacklist').indexOf(packet.name)) { - this.log.debug('ignoring blacklisted event `' + packet.name + '`'); - } else { - var params = [packet.name].concat(packet.args); - - if (dataAck) { - params.push(ack); - } - - socket.$emit.apply(socket, params); - } - break; - - case 'disconnect': - this.manager.onLeave(sessid, this.name); - this.store.publish('leave', sessid, this.name); - - socket.$emit('disconnect', packet.reason || 'packet'); - break; - - case 'json': - case 'message': - var params = ['message', packet.data]; - - if (dataAck) - params.push(ack); - - socket.$emit.apply(socket, params); - }; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/parser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/parser.js deleted file mode 100644 index d56b5500..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/parser.js +++ /dev/null @@ -1,249 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -/** - * Packet types. - */ - -var packets = exports.packets = { - 'disconnect': 0 - , 'connect': 1 - , 'heartbeat': 2 - , 'message': 3 - , 'json': 4 - , 'event': 5 - , 'ack': 6 - , 'error': 7 - , 'noop': 8 - } - , packetslist = Object.keys(packets); - -/** - * Errors reasons. - */ - -var reasons = exports.reasons = { - 'transport not supported': 0 - , 'client not handshaken': 1 - , 'unauthorized': 2 - } - , reasonslist = Object.keys(reasons); - -/** - * Errors advice. - */ - -var advice = exports.advice = { - 'reconnect': 0 - } - , advicelist = Object.keys(advice); - -/** - * Encodes a packet. - * - * @api private - */ - -exports.encodePacket = function (packet) { - var type = packets[packet.type] - , id = packet.id || '' - , endpoint = packet.endpoint || '' - , ack = packet.ack - , data = null; - - switch (packet.type) { - case 'message': - if (packet.data !== '') - data = packet.data; - break; - - case 'event': - var ev = { name: packet.name }; - - if (packet.args && packet.args.length) { - ev.args = packet.args; - } - - data = JSON.stringify(ev); - break; - - case 'json': - data = JSON.stringify(packet.data); - break; - - case 'ack': - data = packet.ackId - + (packet.args && packet.args.length - ? '+' + JSON.stringify(packet.args) : ''); - break; - - case 'connect': - if (packet.qs) - data = packet.qs; - break; - - case 'error': - var reason = packet.reason ? reasons[packet.reason] : '' - , adv = packet.advice ? advice[packet.advice] : '' - - if (reason !== '' || adv !== '') - data = reason + (adv !== '' ? ('+' + adv) : '') - - break; - } - - // construct packet with required fragments - var encoded = type + ':' + id + (ack == 'data' ? '+' : '') + ':' + endpoint; - - // data fragment is optional - if (data !== null && data !== undefined) - encoded += ':' + data; - - return encoded; -}; - -/** - * Encodes multiple messages (payload). - * - * @param {Array} messages - * @api private - */ - -exports.encodePayload = function (packets) { - var decoded = ''; - - if (packets.length == 1) - return packets[0]; - - for (var i = 0, l = packets.length; i < l; i++) { - var packet = packets[i]; - decoded += '\ufffd' + packet.length + '\ufffd' + packets[i] - } - - return decoded; -}; - -/** - * Decodes a packet - * - * @api private - */ - -var regexp = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/; - -/** - * Wrap the JSON.parse in a seperate function the crankshaft optimizer will - * only punish this function for the usage for try catch - * - * @api private - */ - -function parse (data) { - try { return JSON.parse(data) } - catch (e) { return false } -} - -exports.decodePacket = function (data) { - var pieces = data.match(regexp); - - if (!pieces) return {}; - - var id = pieces[2] || '' - , data = pieces[5] || '' - , packet = { - type: packetslist[pieces[1]] - , endpoint: pieces[4] || '' - }; - - // whether we need to acknowledge the packet - if (id) { - packet.id = id; - if (pieces[3]) - packet.ack = 'data'; - else - packet.ack = true; - } - - // handle different packet types - switch (packet.type) { - case 'message': - packet.data = data || ''; - break; - - case 'event': - pieces = parse(data); - if (pieces) { - packet.name = pieces.name; - packet.args = pieces.args; - } - - packet.args = packet.args || []; - break; - - case 'json': - packet.data = parse(data); - break; - - case 'connect': - packet.qs = data || ''; - break; - - case 'ack': - pieces = data.match(/^([0-9]+)(\+)?(.*)/); - if (pieces) { - packet.ackId = pieces[1]; - packet.args = []; - - if (pieces[3]) { - packet.args = parse(pieces[3]) || []; - } - } - break; - - case 'error': - pieces = data.split('+'); - packet.reason = reasonslist[pieces[0]] || ''; - packet.advice = advicelist[pieces[1]] || ''; - } - - return packet; -}; - -/** - * Decodes data payload. Detects multiple messages - * - * @return {Array} messages - * @api public - */ - -exports.decodePayload = function (data) { - if (undefined == data || null == data) { - return []; - } - - if (data[0] == '\ufffd') { - var ret = []; - - for (var i = 1, length = ''; i < data.length; i++) { - if (data[i] == '\ufffd') { - ret.push(exports.decodePacket(data.substr(i + 1, length))); - i += Number(length) + 1; - length = ''; - } else { - length += data[i]; - } - } - - return ret; - } else { - return [exports.decodePacket(data)]; - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.io.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.io.js deleted file mode 100644 index d9d1c1fd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.io.js +++ /dev/null @@ -1,143 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var client = require('socket.io-client'); - -/** - * Version. - */ - -exports.version = '0.9.16'; - -/** - * Supported protocol version. - */ - -exports.protocol = 1; - -/** - * Client that we serve. - */ - -exports.clientVersion = client.version; - -/** - * Attaches a manager - * - * @param {HTTPServer/Number} a HTTP/S server or a port number to listen on. - * @param {Object} opts to be passed to Manager and/or http server - * @param {Function} callback if a port is supplied - * @api public - */ - -exports.listen = function (server, options, fn) { - if ('function' == typeof server) { - console.warn('Socket.IO\'s `listen()` method expects an `http.Server` instance\n' - + 'as its first parameter. Are you migrating from Express 2.x to 3.x?\n' - + 'If so, check out the "Socket.IO compatibility" section at:\n' - + 'https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x'); - } - - if ('function' == typeof options) { - fn = options; - options = {}; - } - - if ('undefined' == typeof server) { - // create a server that listens on port 80 - server = 80; - } - - if ('number' == typeof server) { - // if a port number is passed - var port = server; - - if (options && options.key) - server = require('https').createServer(options); - else - server = require('http').createServer(); - - // default response - server.on('request', function (req, res) { - res.writeHead(200); - res.end('Welcome to socket.io.'); - }); - - server.listen(port, fn); - } - - // otherwise assume a http/s server - return new exports.Manager(server, options); -}; - -/** - * Manager constructor. - * - * @api public - */ - -exports.Manager = require('./manager'); - -/** - * Transport constructor. - * - * @api public - */ - -exports.Transport = require('./transport'); - -/** - * Socket constructor. - * - * @api public - */ - -exports.Socket = require('./socket'); - -/** - * Static constructor. - * - * @api public - */ - -exports.Static = require('./static'); - -/** - * Store constructor. - * - * @api public - */ - -exports.Store = require('./store'); - -/** - * Memory Store constructor. - * - * @api public - */ - -exports.MemoryStore = require('./stores/memory'); - -/** - * Redis Store constructor. - * - * @api public - */ - -exports.RedisStore = require('./stores/redis'); - -/** - * Parser. - * - * @api public - */ - -exports.parser = require('./parser'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.js deleted file mode 100644 index cd39635d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/socket.js +++ /dev/null @@ -1,369 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var parser = require('./parser') - , util = require('./util') - , EventEmitter = process.EventEmitter - -/** - * Export the constructor. - */ - -exports = module.exports = Socket; - -/** - * Default error event listener to prevent uncaught exceptions. - */ - -var defaultError = function () {}; - -/** - * Socket constructor. - * - * @param {Manager} manager instance - * @param {String} session id - * @param {Namespace} namespace the socket belongs to - * @param {Boolean} whether the - * @api public - */ - -function Socket (manager, id, nsp, readable) { - this.id = id; - this.namespace = nsp; - this.manager = manager; - this.disconnected = false; - this.ackPackets = 0; - this.acks = {}; - this.setFlags(); - this.readable = readable; - this.store = this.manager.store.client(this.id); - this.on('error', defaultError); -}; - -/** - * Inherits from EventEmitter. - */ - -Socket.prototype.__proto__ = EventEmitter.prototype; - -/** - * Accessor shortcut for the handshake data - * - * @api private - */ - -Socket.prototype.__defineGetter__('handshake', function () { - return this.manager.handshaken[this.id]; -}); - -/** - * Accessor shortcut for the transport type - * - * @api private - */ - -Socket.prototype.__defineGetter__('transport', function () { - return this.manager.transports[this.id].name; -}); - -/** - * Accessor shortcut for the logger. - * - * @api private - */ - -Socket.prototype.__defineGetter__('log', function () { - return this.manager.log; -}); - -/** - * JSON message flag. - * - * @api public - */ - -Socket.prototype.__defineGetter__('json', function () { - this.flags.json = true; - return this; -}); - -/** - * Volatile message flag. - * - * @api public - */ - -Socket.prototype.__defineGetter__('volatile', function () { - this.flags.volatile = true; - return this; -}); - -/** - * Broadcast message flag. - * - * @api public - */ - -Socket.prototype.__defineGetter__('broadcast', function () { - this.flags.broadcast = true; - return this; -}); - -/** - * Overrides the room to broadcast messages to (flag) - * - * @api public - */ - -Socket.prototype.to = Socket.prototype.in = function (room) { - this.flags.room = room; - return this; -}; - -/** - * Resets flags - * - * @api private - */ - -Socket.prototype.setFlags = function () { - this.flags = { - endpoint: this.namespace.name - , room: '' - }; - return this; -}; - -/** - * Triggered on disconnect - * - * @api private - */ - -Socket.prototype.onDisconnect = function (reason) { - if (!this.disconnected) { - this.$emit('disconnect', reason); - this.disconnected = true; - } -}; - -/** - * Joins a user to a room. - * - * @api public - */ - -Socket.prototype.join = function (name, fn) { - var nsp = this.namespace.name - , name = (nsp + '/') + name; - - this.manager.onJoin(this.id, name); - this.manager.store.publish('join', this.id, name); - - if (fn) { - this.log.warn('Client#join callback is deprecated'); - fn(); - } - - return this; -}; - -/** - * Un-joins a user from a room. - * - * @api public - */ - -Socket.prototype.leave = function (name, fn) { - var nsp = this.namespace.name - , name = (nsp + '/') + name; - - this.manager.onLeave(this.id, name); - this.manager.store.publish('leave', this.id, name); - - if (fn) { - this.log.warn('Client#leave callback is deprecated'); - fn(); - } - - return this; -}; - -/** - * Transmits a packet. - * - * @api private - */ - -Socket.prototype.packet = function (packet) { - if (this.flags.broadcast) { - this.log.debug('broadcasting packet'); - this.namespace.in(this.flags.room).except(this.id).packet(packet); - } else { - packet.endpoint = this.flags.endpoint; - packet = parser.encodePacket(packet); - - this.dispatch(packet, this.flags.volatile); - } - - this.setFlags(); - - return this; -}; - -/** - * Dispatches a packet - * - * @api private - */ - -Socket.prototype.dispatch = function (packet, volatile) { - if (this.manager.transports[this.id] && this.manager.transports[this.id].open) { - this.manager.transports[this.id].onDispatch(packet, volatile); - } else { - if (!volatile) { - this.manager.onClientDispatch(this.id, packet, volatile); - } - - this.manager.store.publish('dispatch-remote', this.id, packet, volatile); - } -}; - -/** - * Stores data for the client. - * - * @api public - */ - -Socket.prototype.set = function (key, value, fn) { - this.store.set(key, value, fn); - return this; -}; - -/** - * Retrieves data for the client - * - * @api public - */ - -Socket.prototype.get = function (key, fn) { - this.store.get(key, fn); - return this; -}; - -/** - * Checks data for the client - * - * @api public - */ - -Socket.prototype.has = function (key, fn) { - this.store.has(key, fn); - return this; -}; - -/** - * Deletes data for the client - * - * @api public - */ - -Socket.prototype.del = function (key, fn) { - this.store.del(key, fn); - return this; -}; - -/** - * Kicks client - * - * @api public - */ - -Socket.prototype.disconnect = function () { - if (!this.disconnected) { - this.log.info('booting client'); - - if ('' === this.namespace.name) { - if (this.manager.transports[this.id] && this.manager.transports[this.id].open) { - this.manager.transports[this.id].onForcedDisconnect(); - } else { - this.manager.onClientDisconnect(this.id); - this.manager.store.publish('disconnect-remote', this.id); - } - } else { - this.packet({type: 'disconnect'}); - this.manager.onLeave(this.id, this.namespace.name); - this.$emit('disconnect', 'booted'); - } - - } - - return this; -}; - -/** - * Send a message. - * - * @api public - */ - -Socket.prototype.send = function (data, fn) { - var packet = { - type: this.flags.json ? 'json' : 'message' - , data: data - }; - - if (fn) { - packet.id = ++this.ackPackets; - packet.ack = true; - this.acks[packet.id] = fn; - } - - return this.packet(packet); -}; - -/** - * Original emit function. - * - * @api private - */ - -Socket.prototype.$emit = EventEmitter.prototype.emit; - -/** - * Emit override for custom events. - * - * @api public - */ - -Socket.prototype.emit = function (ev) { - if (ev == 'newListener') { - return this.$emit.apply(this, arguments); - } - - var args = util.toArray(arguments).slice(1) - , lastArg = args[args.length - 1] - , packet = { - type: 'event' - , name: ev - }; - - if ('function' == typeof lastArg) { - packet.id = ++this.ackPackets; - packet.ack = lastArg.length ? 'data' : true; - this.acks[packet.id] = lastArg; - args = args.slice(0, args.length - 1); - } - - packet.args = args; - - return this.packet(packet); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/static.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/static.js deleted file mode 100644 index fe505937..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/static.js +++ /dev/null @@ -1,395 +0,0 @@ - -/*! -* socket.io-node -* Copyright(c) 2011 LearnBoost -* MIT Licensed -*/ - -/** - * Module dependencies. - */ - -var client = require('socket.io-client') - , cp = require('child_process') - , fs = require('fs') - , util = require('./util'); - -/** - * File type details. - * - * @api private - */ - -var mime = { - js: { - type: 'application/javascript' - , encoding: 'utf8' - , gzip: true - } - , swf: { - type: 'application/x-shockwave-flash' - , encoding: 'binary' - , gzip: false - } -}; - -/** - * Regexp for matching custom transport patterns. Users can configure their own - * socket.io bundle based on the url structure. Different transport names are - * concatinated using the `+` char. /socket.io/socket.io+websocket.js should - * create a bundle that only contains support for the websocket. - * - * @api private - */ - -var bundle = /\+((?:\+)?[\w\-]+)*(?:\.v\d+\.\d+\.\d+)?(?:\.js)$/ - , versioning = /\.v\d+\.\d+\.\d+(?:\.js)$/; - -/** - * Export the constructor - */ - -exports = module.exports = Static; - -/** - * Static constructor - * - * @api public - */ - -function Static (manager) { - this.manager = manager; - this.cache = {}; - this.paths = {}; - - this.init(); -} - -/** - * Initialize the Static by adding default file paths. - * - * @api public - */ - -Static.prototype.init = function () { - /** - * Generates a unique id based the supplied transports array - * - * @param {Array} transports The array with transport types - * @api private - */ - function id (transports) { - var id = transports.join('').split('').map(function (char) { - return ('' + char.charCodeAt(0)).split('').pop(); - }).reduce(function (char, id) { - return char +id; - }); - - return client.version + ':' + id; - } - - /** - * Generates a socket.io-client file based on the supplied transports. - * - * @param {Array} transports The array with transport types - * @param {Function} callback Callback for the static.write - * @api private - */ - - function build (transports, callback) { - client.builder(transports, { - minify: self.manager.enabled('browser client minification') - }, function (err, content) { - callback(err, content ? new Buffer(content) : null, id(transports)); - } - ); - } - - var self = this; - - // add our default static files - this.add('/static/flashsocket/WebSocketMain.swf', { - file: client.dist + '/WebSocketMain.swf' - }); - - this.add('/static/flashsocket/WebSocketMainInsecure.swf', { - file: client.dist + '/WebSocketMainInsecure.swf' - }); - - // generates dedicated build based on the available transports - this.add('/socket.io.js', function (path, callback) { - build(self.manager.get('transports'), callback); - }); - - this.add('/socket.io.v', { mime: mime.js }, function (path, callback) { - build(self.manager.get('transports'), callback); - }); - - // allow custom builds based on url paths - this.add('/socket.io+', { mime: mime.js }, function (path, callback) { - var available = self.manager.get('transports') - , matches = path.match(bundle) - , transports = []; - - if (!matches) return callback('No valid transports'); - - // make sure they valid transports - matches[0].split('.')[0].split('+').slice(1).forEach(function (transport) { - if (!!~available.indexOf(transport)) { - transports.push(transport); - } - }); - - if (!transports.length) return callback('No valid transports'); - build(transports, callback); - }); - - // clear cache when transports change - this.manager.on('set:transports', function (key, value) { - delete self.cache['/socket.io.js']; - Object.keys(self.cache).forEach(function (key) { - if (bundle.test(key)) { - delete self.cache[key]; - } - }); - }); -}; - -/** - * Gzip compress buffers. - * - * @param {Buffer} data The buffer that needs gzip compression - * @param {Function} callback - * @api public - */ - -Static.prototype.gzip = function (data, callback) { - var gzip = cp.spawn('gzip', ['-9', '-c', '-f', '-n']) - , encoding = Buffer.isBuffer(data) ? 'binary' : 'utf8' - , buffer = [] - , err; - - gzip.stdout.on('data', function (data) { - buffer.push(data); - }); - - gzip.stderr.on('data', function (data) { - err = data +''; - buffer.length = 0; - }); - - gzip.on('close', function () { - if (err) return callback(err); - - var size = 0 - , index = 0 - , i = buffer.length - , content; - - while (i--) { - size += buffer[i].length; - } - - content = new Buffer(size); - i = buffer.length; - - buffer.forEach(function (buffer) { - var length = buffer.length; - - buffer.copy(content, index, 0, length); - index += length; - }); - - buffer.length = 0; - callback(null, content); - }); - - gzip.stdin.end(data, encoding); -}; - -/** - * Is the path a static file? - * - * @param {String} path The path that needs to be checked - * @api public - */ - -Static.prototype.has = function (path) { - // fast case - if (this.paths[path]) return this.paths[path]; - - var keys = Object.keys(this.paths) - , i = keys.length; - - while (i--) { - if (-~path.indexOf(keys[i])) return this.paths[keys[i]]; - } - - return false; -}; - -/** - * Add new paths new paths that can be served using the static provider. - * - * @param {String} path The path to respond to - * @param {Options} options Options for writing out the response - * @param {Function} [callback] Optional callback if no options.file is - * supplied this would be called instead. - * @api public - */ - -Static.prototype.add = function (path, options, callback) { - var extension = /(?:\.(\w{1,4}))$/.exec(path); - - if (!callback && typeof options == 'function') { - callback = options; - options = {}; - } - - options.mime = options.mime || (extension ? mime[extension[1]] : false); - - if (callback) options.callback = callback; - if (!(options.file || options.callback) || !options.mime) return false; - - this.paths[path] = options; - - return true; -}; - -/** - * Writes a static response. - * - * @param {String} path The path for the static content - * @param {HTTPRequest} req The request object - * @param {HTTPResponse} res The response object - * @api public - */ - -Static.prototype.write = function (path, req, res) { - /** - * Write a response without throwing errors because can throw error if the - * response is no longer writable etc. - * - * @api private - */ - - function write (status, headers, content, encoding) { - try { - res.writeHead(status, headers || undefined); - - // only write content if it's not a HEAD request and we actually have - // some content to write (304's doesn't have content). - res.end( - req.method !== 'HEAD' && content ? content : '' - , encoding || undefined - ); - } catch (e) {} - } - - /** - * Answers requests depending on the request properties and the reply object. - * - * @param {Object} reply The details and content to reply the response with - * @api private - */ - - function answer (reply) { - var cached = req.headers['if-none-match'] === reply.etag; - if (cached && self.manager.enabled('browser client etag')) { - return write(304); - } - - var accept = req.headers['accept-encoding'] || '' - , gzip = !!~accept.toLowerCase().indexOf('gzip') - , mime = reply.mime - , versioned = reply.versioned - , headers = { - 'Content-Type': mime.type - }; - - // check if we can add a etag - if (self.manager.enabled('browser client etag') && reply.etag && !versioned) { - headers['Etag'] = reply.etag; - } - - // see if we need to set Expire headers because the path is versioned - if (versioned) { - var expires = self.manager.get('browser client expires'); - headers['Cache-Control'] = 'private, x-gzip-ok="", max-age=' + expires; - headers['Date'] = new Date().toUTCString(); - headers['Expires'] = new Date(Date.now() + (expires * 1000)).toUTCString(); - } - - if (gzip && reply.gzip) { - headers['Content-Length'] = reply.gzip.length; - headers['Content-Encoding'] = 'gzip'; - headers['Vary'] = 'Accept-Encoding'; - write(200, headers, reply.gzip.content, mime.encoding); - } else { - headers['Content-Length'] = reply.length; - write(200, headers, reply.content, mime.encoding); - } - - self.manager.log.debug('served static content ' + path); - } - - var self = this - , details; - - // most common case first - if (this.manager.enabled('browser client cache') && this.cache[path]) { - return answer(this.cache[path]); - } else if (this.manager.get('browser client handler')) { - return this.manager.get('browser client handler').call(this, req, res); - } else if ((details = this.has(path))) { - /** - * A small helper function that will let us deal with fs and dynamic files - * - * @param {Object} err Optional error - * @param {Buffer} content The data - * @api private - */ - - function ready (err, content, etag) { - if (err) { - self.manager.log.warn('Unable to serve file. ' + (err.message || err)); - return write(500, null, 'Error serving static ' + path); - } - - // store the result in the cache - var reply = self.cache[path] = { - content: content - , length: content.length - , mime: details.mime - , etag: etag || client.version - , versioned: versioning.test(path) - }; - - // check if gzip is enabled - if (details.mime.gzip && self.manager.enabled('browser client gzip')) { - self.gzip(content, function (err, content) { - if (!err) { - reply.gzip = { - content: content - , length: content.length - } - } - - answer(reply); - }); - } else { - answer(reply); - } - } - - if (details.file) { - fs.readFile(details.file, ready); - } else if(details.callback) { - details.callback.call(this, path, ready); - } else { - write(404, null, 'File handle not found'); - } - } else { - write(404, null, 'File not found'); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/store.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/store.js deleted file mode 100644 index 06c0389a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/store.js +++ /dev/null @@ -1,98 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Expose the constructor. - */ - -exports = module.exports = Store; - -/** - * Module dependencies. - */ - -var EventEmitter = process.EventEmitter; - -/** - * Store interface - * - * @api public - */ - -function Store (options) { - this.options = options; - this.clients = {}; -}; - -/** - * Inherit from EventEmitter. - */ - -Store.prototype.__proto__ = EventEmitter.prototype; - -/** - * Initializes a client store - * - * @param {String} id - * @api public - */ - -Store.prototype.client = function (id) { - if (!this.clients[id]) { - this.clients[id] = new (this.constructor.Client)(this, id); - } - - return this.clients[id]; -}; - -/** - * Destroys a client - * - * @api {String} sid - * @param {Number} number of seconds to expire client data - * @api private - */ - -Store.prototype.destroyClient = function (id, expiration) { - if (this.clients[id]) { - this.clients[id].destroy(expiration); - delete this.clients[id]; - } - - return this; -}; - -/** - * Destroys the store - * - * @param {Number} number of seconds to expire client data - * @api private - */ - -Store.prototype.destroy = function (clientExpiration) { - var keys = Object.keys(this.clients) - , count = keys.length; - - for (var i = 0, l = count; i < l; i++) { - this.destroyClient(keys[i], clientExpiration); - } - - this.clients = {}; - - return this; -}; - -/** - * Client. - * - * @api public - */ - -Store.Client = function (store, id) { - this.store = store; - this.id = id; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/memory.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/memory.js deleted file mode 100644 index 8b731a79..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/memory.js +++ /dev/null @@ -1,143 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , Store = require('../store'); - -/** - * Exports the constructor. - */ - -exports = module.exports = Memory; -Memory.Client = Client; - -/** - * Memory store - * - * @api public - */ - -function Memory (opts) { - Store.call(this, opts); -}; - -/** - * Inherits from Store. - */ - -Memory.prototype.__proto__ = Store.prototype; - -/** - * Publishes a message. - * - * @api private - */ - -Memory.prototype.publish = function () { }; - -/** - * Subscribes to a channel - * - * @api private - */ - -Memory.prototype.subscribe = function () { }; - -/** - * Unsubscribes - * - * @api private - */ - -Memory.prototype.unsubscribe = function () { }; - -/** - * Client constructor - * - * @api private - */ - -function Client () { - Store.Client.apply(this, arguments); - this.data = {}; -}; - -/** - * Inherits from Store.Client - */ - -Client.prototype.__proto__ = Store.Client; - -/** - * Gets a key - * - * @api public - */ - -Client.prototype.get = function (key, fn) { - fn(null, this.data[key] === undefined ? null : this.data[key]); - return this; -}; - -/** - * Sets a key - * - * @api public - */ - -Client.prototype.set = function (key, value, fn) { - this.data[key] = value; - fn && fn(null); - return this; -}; - -/** - * Has a key - * - * @api public - */ - -Client.prototype.has = function (key, fn) { - fn(null, key in this.data); -}; - -/** - * Deletes a key - * - * @api public - */ - -Client.prototype.del = function (key, fn) { - delete this.data[key]; - fn && fn(null); - return this; -}; - -/** - * Destroys the client. - * - * @param {Number} number of seconds to expire data - * @api private - */ - -Client.prototype.destroy = function (expiration) { - if ('number' != typeof expiration) { - this.data = {}; - } else { - var self = this; - - setTimeout(function () { - self.data = {}; - }, expiration * 1000); - } - - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/redis.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/redis.js deleted file mode 100644 index 8fea235f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/stores/redis.js +++ /dev/null @@ -1,269 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , Store = require('../store') - , assert = require('assert'); - -/** - * Exports the constructor. - */ - -exports = module.exports = Redis; -Redis.Client = Client; - -/** - * Redis store. - * Options: - * - nodeId (fn) gets an id that uniquely identifies this node - * - redis (fn) redis constructor, defaults to redis - * - redisPub (object) options to pass to the pub redis client - * - redisSub (object) options to pass to the sub redis client - * - redisClient (object) options to pass to the general redis client - * - pack (fn) custom packing, defaults to JSON or msgpack if installed - * - unpack (fn) custom packing, defaults to JSON or msgpack if installed - * - * @api public - */ - -function Redis (opts) { - opts = opts || {}; - - // node id to uniquely identify this node - var nodeId = opts.nodeId || function () { - // by default, we generate a random id - return Math.abs(Math.random() * Math.random() * Date.now() | 0); - }; - - this.nodeId = nodeId(); - - // packing / unpacking mechanism - if (opts.pack) { - this.pack = opts.pack; - this.unpack = opts.unpack; - } else { - try { - var msgpack = require('msgpack'); - this.pack = msgpack.pack; - this.unpack = msgpack.unpack; - } catch (e) { - this.pack = JSON.stringify; - this.unpack = JSON.parse; - } - } - - var redis = opts.redis || require('redis') - , RedisClient = redis.RedisClient; - - // initialize a pubsub client and a regular client - if (opts.redisPub instanceof RedisClient) { - this.pub = opts.redisPub; - } else { - opts.redisPub || (opts.redisPub = {}); - this.pub = redis.createClient(opts.redisPub.port, opts.redisPub.host, opts.redisPub); - } - if (opts.redisSub instanceof RedisClient) { - this.sub = opts.redisSub; - } else { - opts.redisSub || (opts.redisSub = {}); - this.sub = redis.createClient(opts.redisSub.port, opts.redisSub.host, opts.redisSub); - } - if (opts.redisClient instanceof RedisClient) { - this.cmd = opts.redisClient; - } else { - opts.redisClient || (opts.redisClient = {}); - this.cmd = redis.createClient(opts.redisClient.port, opts.redisClient.host, opts.redisClient); - } - - Store.call(this, opts); - - this.sub.setMaxListeners(0); - this.setMaxListeners(0); -}; - -/** - * Inherits from Store. - */ - -Redis.prototype.__proto__ = Store.prototype; - -/** - * Publishes a message. - * - * @api private - */ - -Redis.prototype.publish = function (name) { - var args = Array.prototype.slice.call(arguments, 1); - this.pub.publish(name, this.pack({ nodeId: this.nodeId, args: args })); - this.emit.apply(this, ['publish', name].concat(args)); -}; - -/** - * Subscribes to a channel - * - * @api private - */ - -Redis.prototype.subscribe = function (name, consumer, fn) { - this.sub.subscribe(name); - - if (consumer || fn) { - var self = this; - - self.sub.on('subscribe', function subscribe (ch) { - if (name == ch) { - function message (ch, msg) { - if (name == ch) { - msg = self.unpack(msg); - - // we check that the message consumed wasnt emitted by this node - if (self.nodeId != msg.nodeId) { - consumer.apply(null, msg.args); - } - } - }; - - self.sub.on('message', message); - - self.on('unsubscribe', function unsubscribe (ch) { - if (name == ch) { - self.sub.removeListener('message', message); - self.removeListener('unsubscribe', unsubscribe); - } - }); - - self.sub.removeListener('subscribe', subscribe); - - fn && fn(); - } - }); - } - - this.emit('subscribe', name, consumer, fn); -}; - -/** - * Unsubscribes - * - * @api private - */ - -Redis.prototype.unsubscribe = function (name, fn) { - this.sub.unsubscribe(name); - - if (fn) { - var client = this.sub; - - client.on('unsubscribe', function unsubscribe (ch) { - if (name == ch) { - fn(); - client.removeListener('unsubscribe', unsubscribe); - } - }); - } - - this.emit('unsubscribe', name, fn); -}; - -/** - * Destroys the store - * - * @api public - */ - -Redis.prototype.destroy = function () { - Store.prototype.destroy.call(this); - - this.pub.end(); - this.sub.end(); - this.cmd.end(); -}; - -/** - * Client constructor - * - * @api private - */ - -function Client (store, id) { - Store.Client.call(this, store, id); -}; - -/** - * Inherits from Store.Client - */ - -Client.prototype.__proto__ = Store.Client; - -/** - * Redis hash get - * - * @api private - */ - -Client.prototype.get = function (key, fn) { - this.store.cmd.hget(this.id, key, fn); - return this; -}; - -/** - * Redis hash set - * - * @api private - */ - -Client.prototype.set = function (key, value, fn) { - this.store.cmd.hset(this.id, key, value, fn); - return this; -}; - -/** - * Redis hash del - * - * @api private - */ - -Client.prototype.del = function (key, fn) { - this.store.cmd.hdel(this.id, key, fn); - return this; -}; - -/** - * Redis hash has - * - * @api private - */ - -Client.prototype.has = function (key, fn) { - this.store.cmd.hexists(this.id, key, function (err, has) { - if (err) return fn(err); - fn(null, !!has); - }); - return this; -}; - -/** - * Destroys client - * - * @param {Number} number of seconds to expire data - * @api private - */ - -Client.prototype.destroy = function (expiration) { - if ('number' != typeof expiration) { - this.store.cmd.del(this.id); - } else { - this.store.cmd.expire(this.id, expiration); - } - - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transport.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transport.js deleted file mode 100644 index e04d2aee..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transport.js +++ /dev/null @@ -1,516 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var parser = require('./parser'); - -/** - * Expose the constructor. - */ - -exports = module.exports = Transport; - -/** - * Transport constructor. - * - * @api public - */ - -function Transport (mng, data, req) { - this.manager = mng; - this.id = data.id; - this.disconnected = false; - this.drained = true; - this.handleRequest(req); -}; - -/** - * Access the logger. - * - * @api public - */ - -Transport.prototype.__defineGetter__('log', function () { - return this.manager.log; -}); - -/** - * Access the store. - * - * @api public - */ - -Transport.prototype.__defineGetter__('store', function () { - return this.manager.store; -}); - -/** - * Handles a request when it's set. - * - * @api private - */ - -Transport.prototype.handleRequest = function (req) { - this.log.debug('setting request', req.method, req.url); - this.req = req; - - if (req.method == 'GET') { - this.socket = req.socket; - this.open = true; - this.drained = true; - this.setHeartbeatInterval(); - - this.setHandlers(); - this.onSocketConnect(); - } -}; - -/** - * Called when a connection is first set. - * - * @api private - */ - -Transport.prototype.onSocketConnect = function () { }; - -/** - * Sets transport handlers - * - * @api private - */ - -Transport.prototype.setHandlers = function () { - var self = this; - - this.bound = { - end: this.onSocketEnd.bind(this) - , close: this.onSocketClose.bind(this) - , error: this.onSocketError.bind(this) - , drain: this.onSocketDrain.bind(this) - }; - - this.socket.on('end', this.bound.end); - this.socket.on('close', this.bound.close); - this.socket.on('error', this.bound.error); - this.socket.on('drain', this.bound.drain); - - this.handlersSet = true; -}; - -/** - * Removes transport handlers - * - * @api private - */ - -Transport.prototype.clearHandlers = function () { - if (this.handlersSet) { - this.socket.removeListener('end', this.bound.end); - this.socket.removeListener('close', this.bound.close); - this.socket.removeListener('error', this.bound.error); - this.socket.removeListener('drain', this.bound.drain); - } -}; - -/** - * Called when the connection dies - * - * @api private - */ - -Transport.prototype.onSocketEnd = function () { - this.end('socket end'); -}; - -/** - * Called when the connection dies - * - * @api private - */ - -Transport.prototype.onSocketClose = function (error) { - this.end(error ? 'socket error' : 'socket close'); -}; - -/** - * Called when the connection has an error. - * - * @api private - */ - -Transport.prototype.onSocketError = function (err) { - if (this.open) { - this.socket.destroy(); - this.onClose(); - } - - this.log.info('socket error ' + err.stack); -}; - -/** - * Called when the connection is drained. - * - * @api private - */ - -Transport.prototype.onSocketDrain = function () { - this.drained = true; -}; - -/** - * Called upon receiving a heartbeat packet. - * - * @api private - */ - -Transport.prototype.onHeartbeatClear = function () { - this.clearHeartbeatTimeout(); - this.setHeartbeatInterval(); -}; - -/** - * Called upon a forced disconnection. - * - * @api private - */ - -Transport.prototype.onForcedDisconnect = function () { - if (!this.disconnected) { - this.log.info('transport end by forced client disconnection'); - if (this.open) { - this.packet({ type: 'disconnect' }); - } - this.end('booted'); - } -}; - -/** - * Dispatches a packet. - * - * @api private - */ - -Transport.prototype.onDispatch = function (packet, volatile) { - if (volatile) { - this.writeVolatile(packet); - } else { - this.write(packet); - } -}; - -/** - * Sets the close timeout. - */ - -Transport.prototype.setCloseTimeout = function () { - if (!this.closeTimeout) { - var self = this; - - this.closeTimeout = setTimeout(function () { - self.log.debug('fired close timeout for client', self.id); - self.closeTimeout = null; - self.end('close timeout'); - }, this.manager.get('close timeout') * 1000); - - this.log.debug('set close timeout for client', this.id); - } -}; - -/** - * Clears the close timeout. - */ - -Transport.prototype.clearCloseTimeout = function () { - if (this.closeTimeout) { - clearTimeout(this.closeTimeout); - this.closeTimeout = null; - - this.log.debug('cleared close timeout for client', this.id); - } -}; - -/** - * Sets the heartbeat timeout - */ - -Transport.prototype.setHeartbeatTimeout = function () { - if (!this.heartbeatTimeout && this.manager.enabled('heartbeats')) { - var self = this; - - this.heartbeatTimeout = setTimeout(function () { - self.log.debug('fired heartbeat timeout for client', self.id); - self.heartbeatTimeout = null; - self.end('heartbeat timeout'); - }, this.manager.get('heartbeat timeout') * 1000); - - this.log.debug('set heartbeat timeout for client', this.id); - } -}; - -/** - * Clears the heartbeat timeout - * - * @param text - */ - -Transport.prototype.clearHeartbeatTimeout = function () { - if (this.heartbeatTimeout && this.manager.enabled('heartbeats')) { - clearTimeout(this.heartbeatTimeout); - this.heartbeatTimeout = null; - this.log.debug('cleared heartbeat timeout for client', this.id); - } -}; - -/** - * Sets the heartbeat interval. To be called when a connection opens and when - * a heartbeat is received. - * - * @api private - */ - -Transport.prototype.setHeartbeatInterval = function () { - if (!this.heartbeatInterval && this.manager.enabled('heartbeats')) { - var self = this; - - this.heartbeatInterval = setTimeout(function () { - self.heartbeat(); - self.heartbeatInterval = null; - }, this.manager.get('heartbeat interval') * 1000); - - this.log.debug('set heartbeat interval for client', this.id); - } -}; - -/** - * Clears all timeouts. - * - * @api private - */ - -Transport.prototype.clearTimeouts = function () { - this.clearCloseTimeout(); - this.clearHeartbeatTimeout(); - this.clearHeartbeatInterval(); -}; - -/** - * Sends a heartbeat - * - * @api private - */ - -Transport.prototype.heartbeat = function () { - if (this.open) { - this.log.debug('emitting heartbeat for client', this.id); - this.packet({ type: 'heartbeat' }); - this.setHeartbeatTimeout(); - } - - return this; -}; - -/** - * Handles a message. - * - * @param {Object} packet object - * @api private - */ - -Transport.prototype.onMessage = function (packet) { - var current = this.manager.transports[this.id]; - - if ('heartbeat' == packet.type) { - this.log.debug('got heartbeat packet'); - - if (current && current.open) { - current.onHeartbeatClear(); - } else { - this.store.publish('heartbeat-clear', this.id); - } - } else { - if ('disconnect' == packet.type && packet.endpoint == '') { - this.log.debug('got disconnection packet'); - - if (current) { - current.onForcedDisconnect(); - } else { - this.store.publish('disconnect-force', this.id); - } - - return; - } - - if (packet.id && packet.ack != 'data') { - this.log.debug('acknowledging packet automatically'); - - var ack = parser.encodePacket({ - type: 'ack' - , ackId: packet.id - , endpoint: packet.endpoint || '' - }); - - if (current && current.open) { - current.onDispatch(ack); - } else { - this.manager.onClientDispatch(this.id, ack); - this.store.publish('dispatch-remote', this.id, ack); - } - } - - // handle packet locally or publish it - if (current) { - this.manager.onClientMessage(this.id, packet); - } else { - this.store.publish('message-remote', this.id, packet); - } - } -}; - -/** - * Clears the heartbeat interval - * - * @api private - */ - -Transport.prototype.clearHeartbeatInterval = function () { - if (this.heartbeatInterval && this.manager.enabled('heartbeats')) { - clearTimeout(this.heartbeatInterval); - this.heartbeatInterval = null; - this.log.debug('cleared heartbeat interval for client', this.id); - } -}; - -/** - * Finishes the connection and makes sure client doesn't reopen - * - * @api private - */ - -Transport.prototype.disconnect = function (reason) { - this.packet({ type: 'disconnect' }); - this.end(reason); - - return this; -}; - -/** - * Closes the connection. - * - * @api private - */ - -Transport.prototype.close = function () { - if (this.open) { - this.doClose(); - this.onClose(); - } -}; - -/** - * Called upon a connection close. - * - * @api private - */ - -Transport.prototype.onClose = function () { - if (this.open) { - this.setCloseTimeout(); - this.clearHandlers(); - this.open = false; - this.manager.onClose(this.id); - this.store.publish('close', this.id); - } -}; - -/** - * Cleans up the connection, considers the client disconnected. - * - * @api private - */ - -Transport.prototype.end = function (reason) { - if (!this.disconnected) { - this.log.info('transport end (' + reason + ')'); - - var local = this.manager.transports[this.id]; - - this.close(); - this.clearTimeouts(); - this.disconnected = true; - - if (local) { - this.manager.onClientDisconnect(this.id, reason); - } - - this.store.publish('disconnect-remote', this.id, reason); - } -}; - -/** - * Signals that the transport should pause and buffer data. - * - * @api public - */ - -Transport.prototype.discard = function () { - this.log.debug('discarding transport'); - this.discarded = true; - this.clearTimeouts(); - this.clearHandlers(); - - return this; -}; - -/** - * Writes an error packet with the specified reason and advice. - * - * @param {Number} advice - * @param {Number} reason - * @api public - */ - -Transport.prototype.error = function (reason, advice) { - this.packet({ - type: 'error' - , reason: reason - , advice: advice - }); - - this.log.warn(reason, advice ? ('client should ' + advice) : ''); - this.end('error'); -}; - -/** - * Write a packet. - * - * @api public - */ - -Transport.prototype.packet = function (obj) { - return this.write(parser.encodePacket(obj)); -}; - -/** - * Writes a volatile message. - * - * @api private - */ - -Transport.prototype.writeVolatile = function (msg) { - if (this.open) { - if (this.drained) { - this.write(msg); - } else { - this.log.debug('ignoring volatile packet, buffer not drained'); - } - } else { - this.log.debug('ignoring volatile packet, transport not open'); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/flashsocket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/flashsocket.js deleted file mode 100644 index dc2d78b4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/flashsocket.js +++ /dev/null @@ -1,129 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ -var WebSocket = require('./websocket'); - -/** - * Export the constructor. - */ - -exports = module.exports = FlashSocket; - -/** - * The FlashSocket transport is just a proxy - * for WebSocket connections. - * - * @api public - */ - -function FlashSocket (mng, data, req) { - return WebSocket.call(this, mng, data, req); -} - -/** - * Inherits from WebSocket. - */ - -FlashSocket.prototype.__proto__ = WebSocket.prototype; - -/** - * Transport name - * - * @api public - */ - -FlashSocket.prototype.name = 'flashsocket'; - -/** - * Listens for new configuration changes of the Manager - * this way we can enable and disable the flash server. - * - * @param {Manager} Manager instance. - * @api private - */ - - -FlashSocket.init = function (manager) { - var server; - function create () { - - // Drop out immediately if the user has - // disabled the flash policy server - if (!manager.get('flash policy server')) { - return; - } - - server = require('policyfile').createServer({ - log: function(msg){ - manager.log.info(msg); - } - }, manager.get('origins')); - - server.on('close', function (e) { - server = null; - }); - - server.listen(manager.get('flash policy port'), manager.server); - - manager.flashPolicyServer = server; - } - - // listen for origin changes, so we can update the server - manager.on('set:origins', function (value, key) { - if (!server) return; - - // update the origins and compile a new response buffer - server.origins = Array.isArray(value) ? value : [value]; - server.compile(); - }); - - // destory the server and create a new server - manager.on('set:flash policy port', function (value, key) { - var transports = manager.get('transports'); - if (~transports.indexOf('flashsocket')) { - if (server) { - if (server.port === value) return; - // destroy the server and rebuild it on a new port - try { - server.close(); - } - catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ } - } - create(); - } - }); - - // create or destroy the server - manager.on('set:flash policy server', function (value, key) { - var transports = manager.get('transports'); - if (~transports.indexOf('flashsocket')) { - if (server && !value) { - // destroy the server - try { - server.close(); - } - catch (e) { /* ignore exception. could e.g. be that the server isn't started yet */ } - } - } else if (!server && value) { - // create the server - create(); - } - }); - - // only start the server - manager.on('set:transports', function (value, key){ - if (!server && ~manager.get('transports').indexOf('flashsocket')) { - create(); - } - }); - // check if we need to initialize at start - if (~manager.get('transports').indexOf('flashsocket')){ - create(); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/htmlfile.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/htmlfile.js deleted file mode 100644 index fce0c0ed..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/htmlfile.js +++ /dev/null @@ -1,83 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var HTTPTransport = require('./http'); - -/** - * Export the constructor. - */ - -exports = module.exports = HTMLFile; - -/** - * HTMLFile transport constructor. - * - * @api public - */ - -function HTMLFile (mng, data, req) { - HTTPTransport.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -HTMLFile.prototype.__proto__ = HTTPTransport.prototype; - -/** - * Transport name - * - * @api public - */ - -HTMLFile.prototype.name = 'htmlfile'; - -/** - * Handles the request. - * - * @api private - */ - -HTMLFile.prototype.handleRequest = function (req) { - HTTPTransport.prototype.handleRequest.call(this, req); - - if (req.method == 'GET') { - req.res.writeHead(200, { - 'Content-Type': 'text/html; charset=UTF-8' - , 'Connection': 'keep-alive' - , 'Transfer-Encoding': 'chunked' - }); - - req.res.write( - '' - + '' - + new Array(174).join(' ') - ); - } -}; - -/** - * Performs the write. - * - * @api private - */ - -HTMLFile.prototype.write = function (data) { - // escape all forward slashes. see GH-1251 - data = ''; - - if (this.response.write(data)) { - this.drained = true; - } - - this.log.debug(this.name + ' writing', data); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http-polling.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http-polling.js deleted file mode 100644 index 89b7e042..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http-polling.js +++ /dev/null @@ -1,147 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var HTTPTransport = require('./http'); - -/** - * Exports the constructor. - */ - -exports = module.exports = HTTPPolling; - -/** - * HTTP polling constructor. - * - * @api public. - */ - -function HTTPPolling (mng, data, req) { - HTTPTransport.call(this, mng, data, req); -}; - -/** - * Inherits from HTTPTransport. - * - * @api public. - */ - -HTTPPolling.prototype.__proto__ = HTTPTransport.prototype; - -/** - * Transport name - * - * @api public - */ - -HTTPPolling.prototype.name = 'httppolling'; - -/** - * Override setHandlers - * - * @api private - */ - -HTTPPolling.prototype.setHandlers = function () { - HTTPTransport.prototype.setHandlers.call(this); - this.socket.removeListener('end', this.bound.end); - this.socket.removeListener('close', this.bound.close); -}; - -/** - * Removes heartbeat timeouts for polling. - */ - -HTTPPolling.prototype.setHeartbeatInterval = function () { - return this; -}; - -/** - * Handles a request - * - * @api private - */ - -HTTPPolling.prototype.handleRequest = function (req) { - HTTPTransport.prototype.handleRequest.call(this, req); - - if (req.method == 'GET') { - var self = this; - - this.pollTimeout = setTimeout(function () { - self.packet({ type: 'noop' }); - self.log.debug(self.name + ' closed due to exceeded duration'); - }, this.manager.get('polling duration') * 1000); - - this.log.debug('setting poll timeout'); - } -}; - -/** - * Clears polling timeout - * - * @api private - */ - -HTTPPolling.prototype.clearPollTimeout = function () { - if (this.pollTimeout) { - clearTimeout(this.pollTimeout); - this.pollTimeout = null; - this.log.debug('clearing poll timeout'); - } - - return this; -}; - -/** - * Override clear timeouts to clear the poll timeout - * - * @api private - */ - -HTTPPolling.prototype.clearTimeouts = function () { - HTTPTransport.prototype.clearTimeouts.call(this); - - this.clearPollTimeout(); -}; - -/** - * doWrite to clear poll timeout - * - * @api private - */ - -HTTPPolling.prototype.doWrite = function () { - this.clearPollTimeout(); -}; - -/** - * Performs a write. - * - * @api private. - */ - -HTTPPolling.prototype.write = function (data, close) { - this.doWrite(data); - this.response.end(); - this.onClose(); -}; - -/** - * Override end. - * - * @api private - */ - -HTTPPolling.prototype.end = function (reason) { - this.clearPollTimeout(); - return HTTPTransport.prototype.end.call(this, reason); -}; - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http.js deleted file mode 100644 index fa94b597..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/http.js +++ /dev/null @@ -1,122 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var Transport = require('../transport') - , parser = require('../parser') - , qs = require('querystring'); - -/** - * Export the constructor. - */ - -exports = module.exports = HTTPTransport; - -/** - * HTTP interface constructor. For all non-websocket transports. - * - * @api public - */ - -function HTTPTransport (mng, data, req) { - Transport.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -HTTPTransport.prototype.__proto__ = Transport.prototype; - -/** - * Handles a request. - * - * @api private - */ - -HTTPTransport.prototype.handleRequest = function (req) { - - // Always set the response in case an error is returned to the client - this.response = req.res; - - if (req.method == 'POST') { - var buffer = '' - , res = req.res - , origin = req.headers.origin - , headers = { 'Content-Length': 1, 'Content-Type': 'text/plain; charset=UTF-8' } - , self = this; - - req.on('data', function (data) { - buffer += data; - - if (Buffer.byteLength(buffer) >= self.manager.get('destroy buffer size')) { - buffer = ''; - req.connection.destroy(); - } - }); - - req.on('end', function () { - res.writeHead(200, headers); - res.end('1'); - - self.onData(self.postEncoded ? qs.parse(buffer).d : buffer); - }); - - // prevent memory leaks for uncompleted requests - req.on('close', function () { - buffer = ''; - self.onClose(); - }); - - if (origin) { - // https://developer.mozilla.org/En/HTTP_Access_Control - headers['Access-Control-Allow-Origin'] = origin; - headers['Access-Control-Allow-Credentials'] = 'true'; - headers['X-XSS-Protection'] = '0'; - } - } else { - Transport.prototype.handleRequest.call(this, req); - } -}; - -/** - * Handles data payload. - * - * @api private - */ - -HTTPTransport.prototype.onData = function (data) { - var messages = parser.decodePayload(data); - this.log.debug(this.name + ' received data packet', data); - - for (var i = 0, l = messages.length; i < l; i++) { - this.onMessage(messages[i]); - } -}; - -/** - * Closes the request-response cycle - * - * @api private - */ - -HTTPTransport.prototype.doClose = function () { - this.response.end(); -}; - -/** - * Writes a payload of messages - * - * @api private - */ - -HTTPTransport.prototype.payload = function (msgs) { - this.write(parser.encodePayload(msgs)); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/index.js deleted file mode 100644 index b8655594..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/index.js +++ /dev/null @@ -1,12 +0,0 @@ - -/** - * Export transports. - */ - -module.exports = { - websocket: require('./websocket') - , flashsocket: require('./flashsocket') - , htmlfile: require('./htmlfile') - , 'xhr-polling': require('./xhr-polling') - , 'jsonp-polling': require('./jsonp-polling') -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/jsonp-polling.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/jsonp-polling.js deleted file mode 100644 index ad7d5aff..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/jsonp-polling.js +++ /dev/null @@ -1,97 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var HTTPPolling = require('./http-polling'); -var jsonpolling_re = /^\d+$/ - -/** - * Export the constructor. - */ - -exports = module.exports = JSONPPolling; - -/** - * JSON-P polling transport. - * - * @api public - */ - -function JSONPPolling (mng, data, req) { - HTTPPolling.call(this, mng, data, req); - - this.head = 'io.j[0]('; - this.foot = ');'; - - if (data.query.i && jsonpolling_re.test(data.query.i)) { - this.head = 'io.j[' + data.query.i + ']('; - } -}; - -/** - * Inherits from Transport. - */ - -JSONPPolling.prototype.__proto__ = HTTPPolling.prototype; - -/** - * Transport name - * - * @api public - */ - -JSONPPolling.prototype.name = 'jsonppolling'; - -/** - * Make sure POST are decoded. - */ - -JSONPPolling.prototype.postEncoded = true; - -/** - * Handles incoming data. - * Due to a bug in \n handling by browsers, we expect a JSONified string. - * - * @api private - */ - -JSONPPolling.prototype.onData = function (data) { - try { - data = JSON.parse(data); - } catch (e) { - this.error('parse', 'reconnect'); - return; - } - - HTTPPolling.prototype.onData.call(this, data); -}; - -/** - * Performs the write. - * - * @api private - */ - -JSONPPolling.prototype.doWrite = function (data) { - HTTPPolling.prototype.doWrite.call(this); - - var data = data === undefined - ? '' : this.head + JSON.stringify(data) + this.foot; - - this.response.writeHead(200, { - 'Content-Type': 'text/javascript; charset=UTF-8' - , 'Content-Length': Buffer.byteLength(data) - , 'Connection': 'Keep-Alive' - , 'X-XSS-Protection': '0' - }); - - this.response.write(data); - this.log.debug(this.name + ' writing', data); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket.js deleted file mode 100644 index 78a43043..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket.js +++ /dev/null @@ -1,36 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var protocolVersions = require('./websocket/'); - -/** - * Export the constructor. - */ - -exports = module.exports = WebSocket; - -/** - * HTTP interface constructor. Interface compatible with all transports that - * depend on request-response cycles. - * - * @api public - */ - -function WebSocket (mng, data, req) { - var transport - , version = req.headers['sec-websocket-version']; - if (typeof version !== 'undefined' && typeof protocolVersions[version] !== 'undefined') { - transport = new protocolVersions[version](mng, data, req); - } - else transport = new protocolVersions['default'](mng, data, req); - if (typeof this.name !== 'undefined') transport.name = this.name; - return transport; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/default.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/default.js deleted file mode 100644 index cf3b8afb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/default.js +++ /dev/null @@ -1,376 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var Transport = require('../../transport') - , EventEmitter = process.EventEmitter - , crypto = require('crypto') - , parser = require('../../parser'); - -/** - * Export the constructor. - */ - -exports = module.exports = WebSocket; - -/** - * HTTP interface constructor. Interface compatible with all transports that - * depend on request-response cycles. - * - * @api public - */ - -function WebSocket (mng, data, req) { - // parser - var self = this; - - this.parser = new Parser({maxBuffer: mng.get('destroy buffer size')}); - this.parser.on('data', function (packet) { - self.log.debug(self.name + ' received data packet', packet); - self.onMessage(parser.decodePacket(packet)); - }); - this.parser.on('close', function () { - self.end(); - }); - this.parser.on('error', function () { - self.end(); - }); - this.parser.on('kick', function (reason) { - self.log.warn(self.name + ' parser forced user kick: ' + reason); - self.onMessage({type: 'disconnect', endpoint: ''}); - self.end(); - }); - - Transport.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -WebSocket.prototype.__proto__ = Transport.prototype; - -/** - * Transport name - * - * @api public - */ - -WebSocket.prototype.name = 'websocket'; - -/** - * Websocket draft version - * - * @api public - */ - -WebSocket.prototype.protocolVersion = 'hixie-76'; - -/** - * Called when the socket connects. - * - * @api private - */ - -WebSocket.prototype.onSocketConnect = function () { - var self = this; - - this.socket.setNoDelay(true); - - this.buffer = true; - this.buffered = []; - - if (this.req.headers.upgrade !== 'WebSocket') { - this.log.warn(this.name + ' connection invalid'); - this.end(); - return; - } - - var origin = this.req.headers['origin'] - , waitingForNonce = false; - if(this.manager.settings['match origin protocol']){ - location = (origin.indexOf('https')>-1 ? 'wss' : 'ws') + '://' + this.req.headers.host + this.req.url; - }else if(this.socket.encrypted){ - location = 'wss://' + this.req.headers.host + this.req.url; - }else{ - location = 'ws://' + this.req.headers.host + this.req.url; - } - - if (this.req.headers['sec-websocket-key1']) { - // If we don't have the nonce yet, wait for it (HAProxy compatibility). - if (! (this.req.head && this.req.head.length >= 8)) { - waitingForNonce = true; - } - - var headers = [ - 'HTTP/1.1 101 WebSocket Protocol Handshake' - , 'Upgrade: WebSocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Origin: ' + origin - , 'Sec-WebSocket-Location: ' + location - ]; - - if (this.req.headers['sec-websocket-protocol']){ - headers.push('Sec-WebSocket-Protocol: ' - + this.req.headers['sec-websocket-protocol']); - } - } else { - var headers = [ - 'HTTP/1.1 101 Web Socket Protocol Handshake' - , 'Upgrade: WebSocket' - , 'Connection: Upgrade' - , 'WebSocket-Origin: ' + origin - , 'WebSocket-Location: ' + location - ]; - } - - try { - this.socket.write(headers.concat('', '').join('\r\n')); - this.socket.setTimeout(0); - this.socket.setNoDelay(true); - this.socket.setEncoding('utf8'); - } catch (e) { - this.end(); - return; - } - - if (waitingForNonce) { - this.socket.setEncoding('binary'); - } else if (this.proveReception(headers)) { - self.flush(); - } - - var headBuffer = ''; - - this.socket.on('data', function (data) { - if (waitingForNonce) { - headBuffer += data; - - if (headBuffer.length < 8) { - return; - } - - // Restore the connection to utf8 encoding after receiving the nonce - self.socket.setEncoding('utf8'); - waitingForNonce = false; - - // Stuff the nonce into the location where it's expected to be - self.req.head = headBuffer.substr(0, 8); - headBuffer = ''; - - if (self.proveReception(headers)) { - self.flush(); - } - - return; - } - - self.parser.add(data); - }); -}; - -/** - * Writes to the socket. - * - * @api private - */ - -WebSocket.prototype.write = function (data) { - if (this.open) { - this.drained = false; - - if (this.buffer) { - this.buffered.push(data); - return this; - } - - var length = Buffer.byteLength(data) - , buffer = new Buffer(2 + length); - - buffer.write('\x00', 'binary'); - buffer.write(data, 1, 'utf8'); - buffer.write('\xff', 1 + length, 'binary'); - - try { - if (this.socket.write(buffer)) { - this.drained = true; - } - } catch (e) { - this.end(); - } - - this.log.debug(this.name + ' writing', data); - } -}; - -/** - * Flushes the internal buffer - * - * @api private - */ - -WebSocket.prototype.flush = function () { - this.buffer = false; - - for (var i = 0, l = this.buffered.length; i < l; i++) { - this.write(this.buffered.splice(0, 1)[0]); - } -}; - -/** - * Finishes the handshake. - * - * @api private - */ - -WebSocket.prototype.proveReception = function (headers) { - var self = this - , k1 = this.req.headers['sec-websocket-key1'] - , k2 = this.req.headers['sec-websocket-key2']; - - if (k1 && k2){ - var md5 = crypto.createHash('md5'); - - [k1, k2].forEach(function (k) { - var n = parseInt(k.replace(/[^\d]/g, '')) - , spaces = k.replace(/[^ ]/g, '').length; - - if (spaces === 0 || n % spaces !== 0){ - self.log.warn('Invalid ' + self.name + ' key: "' + k + '".'); - self.end(); - return false; - } - - n /= spaces; - - md5.update(String.fromCharCode( - n >> 24 & 0xFF, - n >> 16 & 0xFF, - n >> 8 & 0xFF, - n & 0xFF)); - }); - - md5.update(this.req.head.toString('binary')); - - try { - this.socket.write(md5.digest('binary'), 'binary'); - } catch (e) { - this.end(); - } - } - - return true; -}; - -/** - * Writes a payload. - * - * @api private - */ - -WebSocket.prototype.payload = function (msgs) { - for (var i = 0, l = msgs.length; i < l; i++) { - this.write(msgs[i]); - } - - return this; -}; - -/** - * Closes the connection. - * - * @api private - */ - -WebSocket.prototype.doClose = function () { - this.socket.end(); -}; - -/** - * WebSocket parser - * - * @api public - */ - -function Parser (opts) { - this._maxBuffer = (opts && opts.maxBuffer) || 10E7; - this._dataLength = 0; - this.buffer = ''; - this.i = 0; -}; - -/** - * Inherits from EventEmitter. - */ - -Parser.prototype.__proto__ = EventEmitter.prototype; - -/** - * Adds data to the buffer. - * - * @api public - */ - -Parser.prototype.add = function (data) { - this._dataLength += data.length; - if(this._dataLength > this._maxBuffer) { - this.buffer = ''; //Clear buffer - this.emit('kick', 'max buffer size reached'); - return; - } - - this.buffer += data; - this.parse(); -}; - -/** - * Parses the buffer. - * - * @api private - */ - -Parser.prototype.parse = function () { - for (var i = this.i, chr, l = this.buffer.length; i < l; i++){ - chr = this.buffer[i]; - - if (this.buffer.length == 2 && this.buffer[1] == '\u0000') { - this.emit('close'); - this.buffer = ''; - this.i = 0; - return; - } - - if (i === 0){ - if (chr != '\u0000') - this.error('Bad framing. Expected null byte as first frame'); - else - continue; - } - - if (chr == '\ufffd'){ - this.emit('data', this.buffer.substr(1, i - 1)); - this.buffer = this.buffer.substr(i + 1); - this.i = 0; - return this.parse(); - } - } -}; - -/** - * Handles an error - * - * @api private - */ - -Parser.prototype.error = function (reason) { - this.buffer = ''; - this.i = 0; - this.emit('error', reason); - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js deleted file mode 100644 index 8f0759db..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js +++ /dev/null @@ -1,642 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var Transport = require('../../transport') - , EventEmitter = process.EventEmitter - , crypto = require('crypto') - , url = require('url') - , parser = require('../../parser') - , util = require('../../util'); - -/** - * Export the constructor. - */ - -exports = module.exports = WebSocket; -exports.Parser = Parser; - -/** - * HTTP interface constructor. Interface compatible with all transports that - * depend on request-response cycles. - * - * @api public - */ - -function WebSocket (mng, data, req) { - // parser - var self = this; - - this.manager = mng; - this.parser = new Parser({maxBuffer: mng.get('destroy buffer size')}); - this.parser.on('data', function (packet) { - self.onMessage(parser.decodePacket(packet)); - }); - this.parser.on('ping', function () { - // version 8 ping => pong - try { - self.socket.write('\u008a\u0000'); - } - catch (e) { - self.end(); - return; - } - }); - this.parser.on('close', function () { - self.end(); - }); - this.parser.on('error', function (reason) { - self.log.warn(self.name + ' parser error: ' + reason); - self.end(); - }); - this.parser.on('kick', function (reason) { - self.log.warn(self.name + ' parser forced user kick: ' + reason); - self.onMessage({type: 'disconnect', endpoint: ''}); - self.end(); - }); - - Transport.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -WebSocket.prototype.__proto__ = Transport.prototype; - -/** - * Transport name - * - * @api public - */ - -WebSocket.prototype.name = 'websocket'; - -/** - * Websocket draft version - * - * @api public - */ - -WebSocket.prototype.protocolVersion = '07-12'; - -/** - * Called when the socket connects. - * - * @api private - */ - -WebSocket.prototype.onSocketConnect = function () { - var self = this; - - if (typeof this.req.headers.upgrade === 'undefined' || - this.req.headers.upgrade.toLowerCase() !== 'websocket') { - this.log.warn(this.name + ' connection invalid'); - this.end(); - return; - } - - var origin = this.req.headers['sec-websocket-origin'] - , location = ((this.manager.settings['match origin protocol'] ? - origin.match(/^https/) : this.socket.encrypted) ? - 'wss' : 'ws') - + '://' + this.req.headers.host + this.req.url; - - if (!this.verifyOrigin(origin)) { - this.log.warn(this.name + ' connection invalid: origin mismatch'); - this.end(); - return; - } - - if (!this.req.headers['sec-websocket-key']) { - this.log.warn(this.name + ' connection invalid: received no key'); - this.end(); - return; - } - - // calc key - var key = this.req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - try { - this.socket.write(headers.concat('', '').join('\r\n')); - this.socket.setTimeout(0); - this.socket.setNoDelay(true); - } catch (e) { - this.end(); - return; - } - - this.socket.on('data', function (data) { - self.parser.add(data); - }); -}; - -/** - * Verifies the origin of a request. - * - * @api private - */ - -WebSocket.prototype.verifyOrigin = function (origin) { - var origins = this.manager.get('origins'); - - if (origin === 'null') origin = '*'; - - if (origins.indexOf('*:*') !== -1) { - return true; - } - - if (origin) { - try { - var parts = url.parse(origin); - parts.port = parts.port || 80; - var ok = - ~origins.indexOf(parts.hostname + ':' + parts.port) || - ~origins.indexOf(parts.hostname + ':*') || - ~origins.indexOf('*:' + parts.port); - if (!ok) this.log.warn('illegal origin: ' + origin); - return ok; - } catch (ex) { - this.log.warn('error parsing origin'); - } - } - else { - this.log.warn('origin missing from websocket call, yet required by config'); - } - return false; -}; - -/** - * Writes to the socket. - * - * @api private - */ - -WebSocket.prototype.write = function (data) { - if (this.open) { - var buf = this.frame(0x81, data); - try { - this.socket.write(buf, 'binary'); - } - catch (e) { - this.end(); - return; - } - this.log.debug(this.name + ' writing', data); - } -}; - -/** - * Writes a payload. - * - * @api private - */ - -WebSocket.prototype.payload = function (msgs) { - for (var i = 0, l = msgs.length; i < l; i++) { - this.write(msgs[i]); - } - - return this; -}; - -/** - * Frame server-to-client output as a text packet. - * - * @api private - */ - -WebSocket.prototype.frame = function (opcode, str) { - var dataBuffer = new Buffer(str) - , dataLength = dataBuffer.length - , startOffset = 2 - , secondByte = dataLength; - if (dataLength > 65536) { - startOffset = 10; - secondByte = 127; - } - else if (dataLength > 125) { - startOffset = 4; - secondByte = 126; - } - var outputBuffer = new Buffer(dataLength + startOffset); - outputBuffer[0] = opcode; - outputBuffer[1] = secondByte; - dataBuffer.copy(outputBuffer, startOffset); - switch (secondByte) { - case 126: - outputBuffer[2] = dataLength >>> 8; - outputBuffer[3] = dataLength % 256; - break; - case 127: - var l = dataLength; - for (var i = 1; i <= 8; ++i) { - outputBuffer[startOffset - i] = l & 0xff; - l >>>= 8; - } - } - return outputBuffer; -}; - -/** - * Closes the connection. - * - * @api private - */ - -WebSocket.prototype.doClose = function () { - this.socket.end(); -}; - -/** - * WebSocket parser - * - * @api public - */ - -function Parser (opts) { - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0 - }; - this.overflow = null; - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.currentMessage = ''; - this._maxBuffer = (opts && opts.maxBuffer) || 10E7; - this._dataLength = 0; - - var self = this; - this.opcodeHandlers = { - // text - '1': function(data) { - var finish = function(mask, data) { - self.currentMessage += self.unmask(mask, data); - if (self.state.lastFragment) { - self.emit('data', self.currentMessage); - self.currentMessage = ''; - } - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - if (util.unpack(data.slice(0, 4)) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported'); - return; - } - var lengthBytes = data.slice(4); // note: cap to 32 bit length - expectData(util.unpack(data)); - }); - } - }, - // binary - '2': function(data) { - var finish = function(mask, data) { - if (typeof self.currentMessage == 'string') self.currentMessage = []; // build a buffer list - self.currentMessage.push(self.unmask(mask, data, true)); - if (self.state.lastFragment) { - self.emit('binary', self.concatBuffers(self.currentMessage)); - self.currentMessage = ''; - } - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - if (util.unpack(data.slice(0, 4)) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported'); - return; - } - var lengthBytes = data.slice(4); // note: cap to 32 bit length - expectData(util.unpack(data)); - }); - } - }, - // close - '8': function(data) { - self.emit('close'); - self.reset(); - }, - // ping - '9': function(data) { - if (self.state.lastFragment == false) { - self.error('fragmented ping is not supported'); - return; - } - - var finish = function(mask, data) { - self.emit('ping', self.unmask(mask, data)); - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength == 0) { - finish(null, null); - } - else if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - expectData(util.unpack(data)); - }); - } - } - } - - this.expect('Opcode', 2, this.processPacket); -}; - -/** - * Inherits from EventEmitter. - */ - -Parser.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add new data to the parser. - * - * @api public - */ - -Parser.prototype.add = function(data) { - this._dataLength += data.length; - if (this._dataLength > this._maxBuffer) { - // Clear data - this.overflow = null; - this.expectBuffer = null; - // Kick client - this.emit('kick', 'max buffer size reached'); - return; - } - if (this.expectBuffer == null) { - this.addToOverflow(data); - return; - } - var toRead = Math.min(data.length, this.expectBuffer.length - this.expectOffset); - data.copy(this.expectBuffer, this.expectOffset, 0, toRead); - this.expectOffset += toRead; - if (toRead < data.length) { - // at this point the overflow buffer shouldn't at all exist - this.overflow = new Buffer(data.length - toRead); - data.copy(this.overflow, 0, toRead, toRead + this.overflow.length); - } - if (this.expectOffset == this.expectBuffer.length) { - var bufferForHandler = this.expectBuffer; - this.expectBuffer = null; - this.expectOffset = 0; - this.expectHandler.call(this, bufferForHandler); - } -} - -/** - * Adds a piece of data to the overflow. - * - * @api private - */ - -Parser.prototype.addToOverflow = function(data) { - if (this.overflow == null) this.overflow = data; - else { - var prevOverflow = this.overflow; - this.overflow = new Buffer(this.overflow.length + data.length); - prevOverflow.copy(this.overflow, 0); - data.copy(this.overflow, prevOverflow.length); - } -} - -/** - * Waits for a certain amount of bytes to be available, then fires a callback. - * - * @api private - */ - -Parser.prototype.expect = function(what, length, handler) { - if (length > this._maxBuffer) { - this.emit('kick', 'expected input larger than max buffer'); - return; - } - this.expectBuffer = new Buffer(length); - this.expectOffset = 0; - this.expectHandler = handler; - if (this.overflow != null) { - var toOverflow = this.overflow; - this.overflow = null; - this.add(toOverflow); - } -} - -/** - * Start processing a new packet. - * - * @api private - */ - -Parser.prototype.processPacket = function (data) { - if ((data[0] & 0x70) != 0) { - this.error('reserved fields must be empty'); - } - this.state.lastFragment = (data[0] & 0x80) == 0x80; - this.state.masked = (data[1] & 0x80) == 0x80; - var opcode = data[0] & 0xf; - if (opcode == 0) { - // continuation frame - this.state.opcode = this.state.activeFragmentedOperation; - if (!(this.state.opcode == 1 || this.state.opcode == 2)) { - this.error('continuation frame cannot follow current opcode') - return; - } - } - else { - this.state.opcode = opcode; - if (this.state.lastFragment === false) { - this.state.activeFragmentedOperation = opcode; - } - } - var handler = this.opcodeHandlers[this.state.opcode]; - if (typeof handler == 'undefined') this.error('no handler for opcode ' + this.state.opcode); - else handler(data); -} - -/** - * Endprocessing a packet. - * - * @api private - */ - -Parser.prototype.endPacket = function() { - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - if (this.state.lastFragment && this.state.opcode == this.state.activeFragmentedOperation) { - // end current fragmented operation - this.state.activeFragmentedOperation = null; - } - this.state.lastFragment = false; - this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; - this.state.masked = false; - this.expect('Opcode', 2, this.processPacket); -} - -/** - * Reset the parser state. - * - * @api private - */ - -Parser.prototype.reset = function() { - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0 - }; - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.overflow = null; - this.currentMessage = ''; -} - -/** - * Unmask received data. - * - * @api private - */ - -Parser.prototype.unmask = function (mask, buf, binary) { - if (mask != null) { - for (var i = 0, ll = buf.length; i < ll; i++) { - buf[i] ^= mask[i % 4]; - } - } - if (binary) return buf; - return buf != null ? buf.toString('utf8') : ''; -} - -/** - * Concatenates a list of buffers. - * - * @api private - */ - -Parser.prototype.concatBuffers = function(buffers) { - var length = 0; - for (var i = 0, l = buffers.length; i < l; ++i) { - length += buffers[i].length; - } - var mergedBuffer = new Buffer(length); - var offset = 0; - for (var i = 0, l = buffers.length; i < l; ++i) { - buffers[i].copy(mergedBuffer, offset); - offset += buffers[i].length; - } - return mergedBuffer; -} - -/** - * Handles an error - * - * @api private - */ - -Parser.prototype.error = function (reason) { - this.reset(); - this.emit('error', reason); - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-16.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-16.js deleted file mode 100644 index 2074fa16..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/hybi-16.js +++ /dev/null @@ -1,642 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var Transport = require('../../transport') - , EventEmitter = process.EventEmitter - , crypto = require('crypto') - , url = require('url') - , parser = require('../../parser') - , util = require('../../util'); - -/** - * Export the constructor. - */ - -exports = module.exports = WebSocket; -exports.Parser = Parser; - -/** - * HTTP interface constructor. Interface compatible with all transports that - * depend on request-response cycles. - * - * @api public - */ - -function WebSocket (mng, data, req) { - // parser - var self = this; - - this.manager = mng; - this.parser = new Parser({maxBuffer: mng.get('destroy buffer size')}); - this.parser.on('data', function (packet) { - self.onMessage(parser.decodePacket(packet)); - }); - this.parser.on('ping', function () { - // version 8 ping => pong - try { - self.socket.write('\u008a\u0000'); - } - catch (e) { - self.end(); - return; - } - }); - this.parser.on('close', function () { - self.end(); - }); - this.parser.on('error', function (reason) { - self.log.warn(self.name + ' parser error: ' + reason); - self.end(); - }); - this.parser.on('kick', function (reason) { - self.log.warn(self.name + ' parser forced user kick: ' + reason); - self.onMessage({type: 'disconnect', endpoint: ''}); - self.end(); - }); - - Transport.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -WebSocket.prototype.__proto__ = Transport.prototype; - -/** - * Transport name - * - * @api public - */ - -WebSocket.prototype.name = 'websocket'; - -/** - * Websocket draft version - * - * @api public - */ - -WebSocket.prototype.protocolVersion = '16'; - -/** - * Called when the socket connects. - * - * @api private - */ - -WebSocket.prototype.onSocketConnect = function () { - var self = this; - - if (typeof this.req.headers.upgrade === 'undefined' || - this.req.headers.upgrade.toLowerCase() !== 'websocket') { - this.log.warn(this.name + ' connection invalid'); - this.end(); - return; - } - - var origin = this.req.headers['origin'] || '' - , location = ((this.manager.settings['match origin protocol'] ? - origin.match(/^https/) : this.socket.encrypted) ? - 'wss' : 'ws') - + '://' + this.req.headers.host + this.req.url; - - if (!this.verifyOrigin(origin)) { - this.log.warn(this.name + ' connection invalid: origin mismatch'); - this.end(); - return; - } - - if (!this.req.headers['sec-websocket-key']) { - this.log.warn(this.name + ' connection invalid: received no key'); - this.end(); - return; - } - - // calc key - var key = this.req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - try { - this.socket.write(headers.concat('', '').join('\r\n')); - this.socket.setTimeout(0); - this.socket.setNoDelay(true); - } catch (e) { - this.end(); - return; - } - - this.socket.on('data', function (data) { - self.parser.add(data); - }); -}; - -/** - * Verifies the origin of a request. - * - * @api private - */ - -WebSocket.prototype.verifyOrigin = function (origin) { - var origins = this.manager.get('origins'); - - if (origin === 'null') origin = '*'; - - if (origins.indexOf('*:*') !== -1) { - return true; - } - - if (origin) { - try { - var parts = url.parse(origin); - parts.port = parts.port || 80; - var ok = - ~origins.indexOf(parts.hostname + ':' + parts.port) || - ~origins.indexOf(parts.hostname + ':*') || - ~origins.indexOf('*:' + parts.port); - if (!ok) this.log.warn('illegal origin: ' + origin); - return ok; - } catch (ex) { - this.log.warn('error parsing origin'); - } - } - else { - this.log.warn('origin missing from websocket call, yet required by config'); - } - return false; -}; - -/** - * Writes to the socket. - * - * @api private - */ - -WebSocket.prototype.write = function (data) { - if (this.open) { - var buf = this.frame(0x81, data); - try { - this.socket.write(buf, 'binary'); - } - catch (e) { - this.end(); - return; - } - this.log.debug(this.name + ' writing', data); - } -}; - -/** - * Writes a payload. - * - * @api private - */ - -WebSocket.prototype.payload = function (msgs) { - for (var i = 0, l = msgs.length; i < l; i++) { - this.write(msgs[i]); - } - - return this; -}; - -/** - * Frame server-to-client output as a text packet. - * - * @api private - */ - -WebSocket.prototype.frame = function (opcode, str) { - var dataBuffer = new Buffer(str) - , dataLength = dataBuffer.length - , startOffset = 2 - , secondByte = dataLength; - if (dataLength > 65536) { - startOffset = 10; - secondByte = 127; - } - else if (dataLength > 125) { - startOffset = 4; - secondByte = 126; - } - var outputBuffer = new Buffer(dataLength + startOffset); - outputBuffer[0] = opcode; - outputBuffer[1] = secondByte; - dataBuffer.copy(outputBuffer, startOffset); - switch (secondByte) { - case 126: - outputBuffer[2] = dataLength >>> 8; - outputBuffer[3] = dataLength % 256; - break; - case 127: - var l = dataLength; - for (var i = 1; i <= 8; ++i) { - outputBuffer[startOffset - i] = l & 0xff; - l >>>= 8; - } - } - return outputBuffer; -}; - -/** - * Closes the connection. - * - * @api private - */ - -WebSocket.prototype.doClose = function () { - this.socket.end(); -}; - -/** - * WebSocket parser - * - * @api public - */ - -function Parser (opts) { - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0 - }; - this.overflow = null; - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.currentMessage = ''; - this._maxBuffer = (opts && opts.maxBuffer) || 10E7; - this._dataLength = 0; - - var self = this; - this.opcodeHandlers = { - // text - '1': function(data) { - var finish = function(mask, data) { - self.currentMessage += self.unmask(mask, data); - if (self.state.lastFragment) { - self.emit('data', self.currentMessage); - self.currentMessage = ''; - } - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - if (util.unpack(data.slice(0, 4)) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported'); - return; - } - var lengthBytes = data.slice(4); // note: cap to 32 bit length - expectData(util.unpack(data)); - }); - } - }, - // binary - '2': function(data) { - var finish = function(mask, data) { - if (typeof self.currentMessage == 'string') self.currentMessage = []; // build a buffer list - self.currentMessage.push(self.unmask(mask, data, true)); - if (self.state.lastFragment) { - self.emit('binary', self.concatBuffers(self.currentMessage)); - self.currentMessage = ''; - } - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - if (util.unpack(data.slice(0, 4)) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported'); - return; - } - var lengthBytes = data.slice(4); // note: cap to 32 bit length - expectData(util.unpack(data)); - }); - } - }, - // close - '8': function(data) { - self.emit('close'); - self.reset(); - }, - // ping - '9': function(data) { - if (self.state.lastFragment == false) { - self.error('fragmented ping is not supported'); - return; - } - - var finish = function(mask, data) { - self.emit('ping', self.unmask(mask, data)); - self.endPacket(); - } - - var expectData = function(length) { - if (self.state.masked) { - self.expect('Mask', 4, function(data) { - var mask = data; - self.expect('Data', length, function(data) { - finish(mask, data); - }); - }); - } - else { - self.expect('Data', length, function(data) { - finish(null, data); - }); - } - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength == 0) { - finish(null, null); - } - else if (firstLength < 126) { - expectData(firstLength); - } - else if (firstLength == 126) { - self.expect('Length', 2, function(data) { - expectData(util.unpack(data)); - }); - } - else if (firstLength == 127) { - self.expect('Length', 8, function(data) { - expectData(util.unpack(data)); - }); - } - } - } - - this.expect('Opcode', 2, this.processPacket); -}; - -/** - * Inherits from EventEmitter. - */ - -Parser.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add new data to the parser. - * - * @api public - */ - -Parser.prototype.add = function(data) { - this._dataLength += data.length; - if (this._dataLength > this._maxBuffer) { - // Clear data - this.overflow = null; - this.expectBuffer = null; - // Kick client - this.emit('kick', 'max buffer size reached'); - return; - } - if (this.expectBuffer == null) { - this.addToOverflow(data); - return; - } - var toRead = Math.min(data.length, this.expectBuffer.length - this.expectOffset); - data.copy(this.expectBuffer, this.expectOffset, 0, toRead); - this.expectOffset += toRead; - if (toRead < data.length) { - // at this point the overflow buffer shouldn't at all exist - this.overflow = new Buffer(data.length - toRead); - data.copy(this.overflow, 0, toRead, toRead + this.overflow.length); - } - if (this.expectOffset == this.expectBuffer.length) { - var bufferForHandler = this.expectBuffer; - this.expectBuffer = null; - this.expectOffset = 0; - this.expectHandler.call(this, bufferForHandler); - } -} - -/** - * Adds a piece of data to the overflow. - * - * @api private - */ - -Parser.prototype.addToOverflow = function(data) { - if (this.overflow == null) this.overflow = data; - else { - var prevOverflow = this.overflow; - this.overflow = new Buffer(this.overflow.length + data.length); - prevOverflow.copy(this.overflow, 0); - data.copy(this.overflow, prevOverflow.length); - } -} - -/** - * Waits for a certain amount of bytes to be available, then fires a callback. - * - * @api private - */ - -Parser.prototype.expect = function(what, length, handler) { - if (length > this._maxBuffer) { - this.emit('kick', 'expected input larger than max buffer'); - return; - } - this.expectBuffer = new Buffer(length); - this.expectOffset = 0; - this.expectHandler = handler; - if (this.overflow != null) { - var toOverflow = this.overflow; - this.overflow = null; - this.add(toOverflow); - } -} - -/** - * Start processing a new packet. - * - * @api private - */ - -Parser.prototype.processPacket = function (data) { - if ((data[0] & 0x70) != 0) { - this.error('reserved fields must be empty'); - return; - } - this.state.lastFragment = (data[0] & 0x80) == 0x80; - this.state.masked = (data[1] & 0x80) == 0x80; - var opcode = data[0] & 0xf; - if (opcode == 0) { - // continuation frame - this.state.opcode = this.state.activeFragmentedOperation; - if (!(this.state.opcode == 1 || this.state.opcode == 2)) { - this.error('continuation frame cannot follow current opcode') - return; - } - } - else { - this.state.opcode = opcode; - if (this.state.lastFragment === false) { - this.state.activeFragmentedOperation = opcode; - } - } - var handler = this.opcodeHandlers[this.state.opcode]; - if (typeof handler == 'undefined') this.error('no handler for opcode ' + this.state.opcode); - else handler(data); -} - -/** - * Endprocessing a packet. - * - * @api private - */ - -Parser.prototype.endPacket = function() { - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - if (this.state.lastFragment && this.state.opcode == this.state.activeFragmentedOperation) { - // end current fragmented operation - this.state.activeFragmentedOperation = null; - } - this.state.lastFragment = false; - this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; - this.state.masked = false; - this.expect('Opcode', 2, this.processPacket); -} - -/** - * Reset the parser state. - * - * @api private - */ - -Parser.prototype.reset = function() { - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0 - }; - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.overflow = null; - this.currentMessage = ''; -} - -/** - * Unmask received data. - * - * @api private - */ - -Parser.prototype.unmask = function (mask, buf, binary) { - if (mask != null) { - for (var i = 0, ll = buf.length; i < ll; i++) { - buf[i] ^= mask[i % 4]; - } - } - if (binary) return buf; - return buf != null ? buf.toString('utf8') : ''; -} - -/** - * Concatenates a list of buffers. - * - * @api private - */ - -Parser.prototype.concatBuffers = function(buffers) { - var length = 0; - for (var i = 0, l = buffers.length; i < l; ++i) { - length += buffers[i].length; - } - var mergedBuffer = new Buffer(length); - var offset = 0; - for (var i = 0, l = buffers.length; i < l; ++i) { - buffers[i].copy(mergedBuffer, offset); - offset += buffers[i].length; - } - return mergedBuffer; -} - -/** - * Handles an error - * - * @api private - */ - -Parser.prototype.error = function (reason) { - this.reset(); - this.emit('error', reason); - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/index.js deleted file mode 100644 index 3a952b75..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/websocket/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -/** - * Export websocket versions. - */ - -module.exports = { - 7: require('./hybi-07-12'), - 8: require('./hybi-07-12'), - 13: require('./hybi-16'), - default: require('./default') -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/xhr-polling.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/xhr-polling.js deleted file mode 100644 index 1db5aeee..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/transports/xhr-polling.js +++ /dev/null @@ -1,69 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module requirements. - */ - -var HTTPPolling = require('./http-polling'); - -/** - * Export the constructor. - */ - -exports = module.exports = XHRPolling; - -/** - * Ajax polling transport. - * - * @api public - */ - -function XHRPolling (mng, data, req) { - HTTPPolling.call(this, mng, data, req); -}; - -/** - * Inherits from Transport. - */ - -XHRPolling.prototype.__proto__ = HTTPPolling.prototype; - -/** - * Transport name - * - * @api public - */ - -XHRPolling.prototype.name = 'xhr-polling'; - -/** - * Frames data prior to write. - * - * @api private - */ - -XHRPolling.prototype.doWrite = function (data) { - HTTPPolling.prototype.doWrite.call(this); - - var origin = this.req.headers.origin - , headers = { - 'Content-Type': 'text/plain; charset=UTF-8' - , 'Content-Length': data === undefined ? 0 : Buffer.byteLength(data) - , 'Connection': 'Keep-Alive' - }; - - if (origin) { - // https://developer.mozilla.org/En/HTTP_Access_Control - headers['Access-Control-Allow-Origin'] = origin; - headers['Access-Control-Allow-Credentials'] = 'true'; - } - - this.response.writeHead(200, headers); - this.response.write(data); - this.log.debug(this.name + ' writing', data); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/util.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/util.js deleted file mode 100644 index f7d9f2b4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/lib/util.js +++ /dev/null @@ -1,50 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -/** - * Converts an enumerable to an array. - * - * @api public - */ - -exports.toArray = function (enu) { - var arr = []; - - for (var i = 0, l = enu.length; i < l; i++) - arr.push(enu[i]); - - return arr; -}; - -/** - * Unpacks a buffer to a number. - * - * @api public - */ - -exports.unpack = function (buffer) { - var n = 0; - for (var i = 0; i < buffer.length; ++i) { - n = (i == 0) ? buffer[i] : (n * 256) + buffer[i]; - } - return n; -} - -/** - * Left pads a string. - * - * @api public - */ - -exports.padl = function (s,n,c) { - return new Array(1 + n - s.length).join(c) + s; -} - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/.npmignore deleted file mode 100644 index 39e9864f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -support -test -examples diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/README.md deleted file mode 100644 index b4361c15..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/README.md +++ /dev/null @@ -1,18 +0,0 @@ -base64id -======== - -Node.js module that generates a base64 id. - -Uses crypto.randomBytes when available, falls back to unsafe methods for node.js <= 0.4. - -To increase performance, random bytes are buffered to minimize the number of synchronous calls to crypto.randomBytes. - -## Installation - - $ npm install mongoose - -## Usage - - var base64id = require('base64id'); - - var id = base64id.generateId(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/lib/base64id.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/lib/base64id.js deleted file mode 100644 index f6881597..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/lib/base64id.js +++ /dev/null @@ -1,103 +0,0 @@ -/*! - * base64id v0.1.0 - */ - -/** - * Module dependencies - */ - -var crypto = require('crypto'); - -/** - * Constructor - */ - -var Base64Id = function() { }; - -/** - * Get random bytes - * - * Uses a buffer if available, falls back to crypto.randomBytes - */ - -Base64Id.prototype.getRandomBytes = function(bytes) { - - var BUFFER_SIZE = 4096 - var self = this; - - bytes = bytes || 12; - - if (bytes > BUFFER_SIZE) { - return crypto.randomBytes(bytes); - } - - var bytesInBuffer = parseInt(BUFFER_SIZE/bytes); - var threshold = parseInt(bytesInBuffer*0.85); - - if (!threshold) { - return crypto.randomBytes(bytes); - } - - if (this.bytesBufferIndex == null) { - this.bytesBufferIndex = -1; - } - - if (this.bytesBufferIndex == bytesInBuffer) { - this.bytesBuffer = null; - this.bytesBufferIndex = -1; - } - - // No buffered bytes available or index above threshold - if (this.bytesBufferIndex == -1 || this.bytesBufferIndex > threshold) { - - if (!this.isGeneratingBytes) { - this.isGeneratingBytes = true; - crypto.randomBytes(BUFFER_SIZE, function(err, bytes) { - self.bytesBuffer = bytes; - self.bytesBufferIndex = 0; - self.isGeneratingBytes = false; - }); - } - - // Fall back to sync call when no buffered bytes are available - if (this.bytesBufferIndex == -1) { - return crypto.randomBytes(bytes); - } - } - - var result = this.bytesBuffer.slice(bytes*this.bytesBufferIndex, bytes*(this.bytesBufferIndex+1)); - this.bytesBufferIndex++; - - return result; -} - -/** - * Generates a base64 id - * - * (Original version from socket.io ) - */ - -Base64Id.prototype.generateId = function () { - var rand = new Buffer(15); // multiple of 3 for base64 - if (!rand.writeInt32BE) { - return Math.abs(Math.random() * Math.random() * Date.now() | 0).toString() - + Math.abs(Math.random() * Math.random() * Date.now() | 0).toString(); - } - this.sequenceNumber = (this.sequenceNumber + 1) | 0; - rand.writeInt32BE(this.sequenceNumber, 11); - if (crypto.randomBytes) { - this.getRandomBytes(12).copy(rand); - } else { - // not secure for node 0.4 - [0, 4, 8].forEach(function(i) { - rand.writeInt32BE(Math.random() * Math.pow(2, 32) | 0, i); - }); - } - return rand.toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); -}; - -/** - * Export - */ - -exports = module.exports = new Base64Id(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/package.json deleted file mode 100644 index e4321f5b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/base64id/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "base64id", - "version": "0.1.0", - "description": "Generates a base64 id", - "author": { - "name": "Kristian Faeldt", - "email": "faeldt_kristian@cyberagent.co.jp" - }, - "repository": { - "type": "git", - "url": "git://github.com/faeldt/base64id.git" - }, - "main": "./lib/base64id.js", - "engines": { - "node": ">= 0.4.0" - }, - "_npmUser": { - "name": "faeldt_kristian", - "email": "faeldt_kristian@cyberagent.co.jp" - }, - "_id": "base64id@0.1.0", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "_engineSupported": true, - "_npmVersion": "1.1.16", - "_nodeVersion": "v0.6.15", - "_defaultsLoaded": true, - "dist": { - "shasum": "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f", - "tarball": "http://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" - }, - "maintainers": [ - { - "name": "faeldt_kristian", - "email": "faeldt_kristian@cyberagent.co.jp" - } - ], - "directories": {}, - "_shasum": "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f", - "_resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "_from": "base64id@0.1.0", - "bugs": { - "url": "https://github.com/faeldt/base64id/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/faeldt/base64id#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/LICENSE deleted file mode 100644 index bdb8f617..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Arnout Kazemier,3rd-Eden - -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. \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/Makefile deleted file mode 100644 index 1362d66a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -doc: - dox --title "FlashPolicyFileServer" lib/* > doc/index.html - -test: - expresso -I lib $(TESTFLAGS) tests/*.test.js - -.PHONY: test doc \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/README.md deleted file mode 100644 index 527921ee..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/README.md +++ /dev/null @@ -1,98 +0,0 @@ -## LOL, WUT? -It basically allows you to allow or disallow Flash Player sockets from accessing your site. - -## Installation - -```bash -npm install policyfile -``` -## Usage - -The server is based on the regular and know `net` and `http` server patterns. So it you can just listen -for all the events that a `net` based server emits etc. But there is one extra event, the `connect_failed` -event. This event is triggered when we are unable to listen on the supplied port number. - -### createServer -Creates a new server instance and accepts 2 optional arguments: - -- `options` **Object** Options to configure the server instance - - `log` **Boolean** Enable logging to STDOUT and STDERR (defaults to true) -- `origins` **Array** An Array of origins that are allowed by the server (defaults to *:*) - -```js -var pf = require('policyfile'); -pf.createServer(); -pf.listen(); -``` - -#### server.listen -Start listening on the server and it takes 3 optional arguments - -- `port` **Number** On which port number should we listen? (defaults to 843, which is the first port number the FlashPlayer checks) -- `server` **Server** A http server, if we are unable to accept requests or run the server we can also answer the policy requests inline over the supplied HTTP server. -- `callback` **Function** A callback function that is called when listening to the server was successful. - -```js -var pf = require('policyfile'); -pf.createServer(); -pf.listen(1337, function(){ - console.log(':3 yay') -}); -``` - -Changing port numbers can be handy if you do not want to run your server as root and have port 843 forward to a non root port number (aka a number above 1024). - -```js -var pf = require('policyfile') - , http = require('http'); - -server = http.createServer(function(q,r){r.writeHead(200);r.end('hello world')}); -server.listen(80); - -pf.createServer(); -pf.listen(1337, server, function(){ - console.log(':3 yay') -}); -``` - -Support for serving inline requests over a existing HTTP connection as the FlashPlayer will first check port 843, but if it's unable to get a response there it will send a policy file request over port 80, which is usually your http server. - -#### server.add -Adds more origins to the policy file you can add as many arguments as you like. - -```js -var pf = require('policyfile'); -pf.createServer(['google.com:80']); -pf.listen(); -pf.add('blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080'); // now has 3 origins -``` - -#### server.add -Adds more origins to the policy file you can add as many arguments as you like. - -```js -var pf = require('policyfile'); -pf.createServer(['blog.3rd-Eden.com:80', 'blog.3rd-Eden.com:8080']); -pf.listen(); -pf.remove('blog.3rd-Eden.com:8080'); // only contains the :80 version now -``` - -#### server.close -Shuts down the server - -```js -var pf = require('policyfile'); -pf.createServer(); -pf.listen(); -pf.close(); // OH NVM. -``` - -## API -http://3rd-eden.com/FlashPolicyFileServer/ - -## Examples -See https://github.com/3rd-Eden/FlashPolicyFileServer/tree/master/examples for examples - -## Licence - -MIT see LICENSE file in the repository \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/doc/index.html b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/doc/index.html deleted file mode 100644 index 743fcdaf..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/doc/index.html +++ /dev/null @@ -1,375 +0,0 @@ - - - FlashPolicyFileServer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

FlashPolicyFileServer

server

lib/server.js
-

Module dependencies and cached references. -

-
-
var slice = Array.prototype.slice
-  , net = require('net');
-
-

The server that does the Policy File severing

- -

Options

- -
  • log false or a function that can output log information, defaults to console.log?
- -

- -
  • param: Object options Options to customize the servers functionality.

  • param: Array origins The origins that are allowed on this server, defaults to *:*.

  • api: public

-
-
function Server(options, origins){
-  var me = this;
-  
-  this.origins = origins || ['*:*'];
-  this.port = 843;
-  this.log = console.log;
-  
-  // merge `this` with the options
-  Object.keys(options).forEach(function(key){
-    me[key] &amp;&amp; (me[key] = options[key])
-  });
-  
-  // create the net server
-  this.socket = net.createServer(function createServer(socket){
-    socket.on('error', function socketError(){ me.responder.call(me, socket) });
-    me.responder.call(me, socket);
-  });
-  
-  // Listen for errors as the port might be blocked because we do not have root priv.
-  this.socket.on('error', function serverError(err){
-    // Special and common case error handling
-    if (err.errno == 13){
-      me.log &amp;&amp; me.log(
-        'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' +
-        (
-          me.server
-          ? 'The Flash Policy file will now be served inline over the supplied HTTP server, Flash Policy files request will suffer.'
-          : 'No fallback server supplied.'
-        )
-      );
-      
-      me.socket.removeAllListeners();
-      delete me.socket;
-
-      me.emit('connect_failed', err);
-    } else {
-      me.log &amp;&amp; me.log('FlashPolicyFileServer received a error event:\n' + (err.message ? err.message : err));
-    }
-  });
-  
-  this.socket.on('timeout', function serverTimeout(){});
-  this.socket.on('close', function serverClosed(err){
-    err &amp;&amp; me.log &amp;&amp; me.log('Server closing due to an error: \n' + (err.message ? err.message : err));
-    
-    if (me.server){
-      // not online anymore
-      delete me.server.online;
-      
-      // Remove the inline policy listener if we close down
-      // but only when the server was `online` (see listen prototype)
-      if( me.server['@'] &amp;&amp; me.server.online){
-        me.server.removeListener('connection', me.server['@']);
-      }
-    }
-    me.log &amp;&amp; me.log('Shutting down FlashPolicyFileServer');
-  });
-  
-  // Compile the initial `buffer`
-  this.compile();
-}
-
-

Start listening for requests

- -

- -
  • param: Number port The port number it should be listening to.

  • param: Server server A HTTP server instance, this will be used to listen for inline requests

  • param: Function cb The callback needs to be called once server is ready

  • api: public

-
-
Server.prototype.listen = function listen(port, server, cb){
-  var me = this
-    , args = slice.call(arguments, 0)
-    , callback;
-  
-  // assign the correct vars, for flexible arguments
-  args.forEach(function args(arg){
-    var type = typeof arg;
-    
-    if (type === 'number') me.port = arg;
-    if (type === 'function') callback = arg;
-    if (type === 'object') me.server = arg;
-  });
-  
-  if (this.server){
-    
-    // no one in their right mind would ever create a `@` prototype, so Im just gonna store
-    // my function on the server, so I can remove it later again once the server(s) closes
-    this.server['@'] = function connection(socket){
-      socket.once('data', function requestData(data){
-        // if it's a Flash policy request, and we can write to the 
-        if (
-             data
-          &amp;&amp; data[0] === 60
-          &amp;&amp; data.toString() === '<policy-file-request/>\0'
-          &amp;&amp; socket
-          &amp;&amp; (socket.readyState === 'open' || socket.readyState === 'writeOnly')
-        ){
-          // send the buffer
-          socket.end(me.buffer);
-        }
-      });
-    };
-    // attach it
-    this.server.on('connection', this.server['@']);
-  }
-  
-  // We add a callback method, so we can set a flag for when the server is `enabled` or `online`.
-  // this flag is needed because if a error occurs and the we cannot boot up the server the
-  // fallback functionality should not be removed during the `close` event
-  this.socket.listen(this.port, function serverListening(){
-   me.socket.online = true;
-   
-   if (callback) callback(), callback = undefined;
-   
-  });
-  
-  return this;
-};
-
-

Adds a new origin to the Flash Policy File.

- -

- -
  • param: Arguments The origins that need to be added.

  • api: public

-
-
Server.prototype.add = function add(){
-  var args = slice.call(arguments, 0)
-    , i = args.length;
-  
-  // flag duplicates
-  while (i--){
-    if (this.origins.indexOf(args[i]) &gt;= 0){
-      args[i] = null;
-    }
-  }
-  
-  // Add all the arguments to the array
-  // but first we want to remove all `falsy` values from the args
-  Array.prototype.push.apply(
-    this.origins
-  , args.filter(function(value){ return !!value })
-  );
-  
-  this.compile();
-  return this;
-};
-
-

Removes a origin from the Flash Policy File.

- -

- -
  • param: String origin The origin that needs to be removed from the server

  • api: public

-
-
Server.prototype.remove = function remove(origin){
-  var position = this.origins.indexOf(origin);
-  
-  // only remove and recompile if we have a match
-  if (position &gt; 0){
-    this.origins.splice(position,1);
-    this.compile();
-  }
-  
-  return this;
-};
-
-

Closes and cleans up the server

- -
  • api: public

-
-
Server.prototype.close = function close(){
-  this.socket.removeAllListeners();
-  this.socket.close();
-  
-  return this;
-};
-
-

Proxy the event listener requests to the created Net server -

-
-
Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){
-  Server.prototype[key] = Server.prototype[key] || function (){
-    if (this.socket) this.socket[key].apply(this.socket, arguments);
-    return this;
-  };
-});
-
-

Creates a new server instance.

- -

- -
  • param: Object options A options object to override the default config

  • param: Array origins The origins that should be allowed by the server

  • api: public

-
-
exports.createServer = function createServer(options, origins){
-  origins = Array.isArray(origins) ? origins : (Array.isArray(options) ? options : false);
-  options = !Array.isArray(options) &amp;&amp; options ? options : {};
-  
-  return new Server(options, origins);
-};
-
-

Provide a hook to the original server, so it can be extended if needed. -

-
-
exports.Server = Server;
-
-

Module version -

-
-
exports.version = '0.0.2';
-
-
\ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js deleted file mode 100644 index b439449a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.fallback.js +++ /dev/null @@ -1,8 +0,0 @@ -var http = require('http') - , fspfs = require('../'); - -var server = http.createServer(function(q,r){ r.writeHead(200); r.end(':3') }) - , flash = fspfs.createServer(); - -server.listen(8080); -flash.listen(8081,server); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.js deleted file mode 100644 index 5e2290f7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/examples/basic.js +++ /dev/null @@ -1,5 +0,0 @@ -var http = require('http') - , fspfs = require('../'); - -var flash = fspfs.createServer(); -flash.listen(); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/index.js deleted file mode 100644 index 60cf2989..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/server.js'); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/lib/server.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/lib/server.js deleted file mode 100644 index a525772b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/lib/server.js +++ /dev/null @@ -1,289 +0,0 @@ -/** - * Module dependencies and cached references. - */ - -var slice = Array.prototype.slice - , net = require('net'); - -/** - * The server that does the Policy File severing - * - * Options: - * - `log` false or a function that can output log information, defaults to console.log? - * - * @param {Object} options Options to customize the servers functionality. - * @param {Array} origins The origins that are allowed on this server, defaults to `*:*`. - * @api public - */ - -function Server (options, origins) { - var me = this; - - this.origins = origins || ['*:*']; - this.port = 843; - this.log = console.log; - - // merge `this` with the options - Object.keys(options).forEach(function (key) { - me[key] && (me[key] = options[key]) - }); - - // create the net server - this.socket = net.createServer(function createServer (socket) { - socket.on('error', function socketError () { - me.responder.call(me, socket); - }); - - me.responder.call(me, socket); - }); - - // Listen for errors as the port might be blocked because we do not have root priv. - this.socket.on('error', function serverError (err) { - // Special and common case error handling - if (err.errno == 13) { - me.log && me.log( - 'Unable to listen to port `' + me.port + '` as your Node.js instance does not have root privileges. ' + - ( - me.server - ? 'The Flash Policy File requests will only be served inline over the supplied HTTP server. Inline serving is slower than a dedicated server instance.' - : 'No fallback server supplied, we will be unable to answer Flash Policy File requests.' - ) - ); - - me.emit('connect_failed', err); - me.socket.removeAllListeners(); - delete me.socket; - } else { - me.log && me.log('FlashPolicyFileServer received an error event:\n' + (err.message ? err.message : err)); - } - }); - - this.socket.on('timeout', function serverTimeout () {}); - this.socket.on('close', function serverClosed (err) { - err && me.log && me.log('Server closing due to an error: \n' + (err.message ? err.message : err)); - - if (me.server) { - // Remove the inline policy listener if we close down - // but only when the server was `online` (see listen prototype) - if (me.server['@'] && me.server.online) { - me.server.removeListener('connection', me.server['@']); - } - - // not online anymore - delete me.server.online; - } - }); - - // Compile the initial `buffer` - this.compile(); -} - -/** - * Start listening for requests - * - * @param {Number} port The port number it should be listening to. - * @param {Server} server A HTTP server instance, this will be used to listen for inline requests - * @param {Function} cb The callback needs to be called once server is ready - * @api public - */ - -Server.prototype.listen = function listen (port, server, cb){ - var me = this - , args = slice.call(arguments, 0) - , callback; - - // assign the correct vars, for flexible arguments - args.forEach(function args (arg){ - var type = typeof arg; - - if (type === 'number') me.port = arg; - if (type === 'function') callback = arg; - if (type === 'object') me.server = arg; - }); - - if (this.server) { - - // no one in their right mind would ever create a `@` prototype, so Im just gonna store - // my function on the server, so I can remove it later again once the server(s) closes - this.server['@'] = function connection (socket) { - socket.once('data', function requestData (data) { - // if it's a Flash policy request, and we can write to the - if ( - data - && data[0] === 60 - && data.toString() === '\0' - && socket - && (socket.readyState === 'open' || socket.readyState === 'writeOnly') - ){ - // send the buffer - try { - socket.end(me.buffer); - } catch (e) {} - } - }); - }; - - // attach it - this.server.on('connection', this.server['@']); - } - - // We add a callback method, so we can set a flag for when the server is `enabled` or `online`. - // this flag is needed because if a error occurs and the we cannot boot up the server the - // fallback functionality should not be removed during the `close` event - this.port >= 0 && this.socket.listen(this.port, function serverListening () { - me.socket.online = true; - if (callback) { - callback.call(me); - callback = undefined; - } - }); - - return this; -}; - -/** - * Responds to socket connects and writes the compile policy file. - * - * @param {net.Socket} socket The socket that needs to receive the message - * @api private - */ - -Server.prototype.responder = function responder (socket){ - if (socket && socket.readyState == 'open' && socket.end) { - try { - socket.end(this.buffer); - } catch (e) {} - } -}; - -/** - * Compiles the supplied origins to a Flash Policy File format and stores it in a Node.js Buffer - * this way it can be send over the wire without any performance loss. - * - * @api private - */ - -Server.prototype.compile = function compile (){ - var xml = [ - '' - , '' - , '' - ]; - - // add the allow access element - this.origins.forEach(function origin (origin){ - var parts = origin.split(':'); - xml.push(''); - }); - - xml.push(''); - - // store the result in a buffer so we don't have to re-generate it all the time - this.buffer = new Buffer(xml.join(''), 'utf8'); - - return this; -}; - -/** - * Adds a new origin to the Flash Policy File. - * - * @param {Arguments} The origins that need to be added. - * @api public - */ - -Server.prototype.add = function add(){ - var args = slice.call(arguments, 0) - , i = args.length; - - // flag duplicates - while (i--) { - if (this.origins.indexOf(args[i]) >= 0){ - args[i] = null; - } - } - - // Add all the arguments to the array - // but first we want to remove all `falsy` values from the args - Array.prototype.push.apply( - this.origins - , args.filter(function filter (value) { - return !!value; - }) - ); - - this.compile(); - return this; -}; - -/** - * Removes a origin from the Flash Policy File. - * - * @param {String} origin The origin that needs to be removed from the server - * @api public - */ - -Server.prototype.remove = function remove (origin){ - var position = this.origins.indexOf(origin); - - // only remove and recompile if we have a match - if (position > 0) { - this.origins.splice(position,1); - this.compile(); - } - - return this; -}; - -/** - * Closes and cleans up the server - * - * @api public - */ - -Server.prototype.close = function close () { - this.socket.removeAllListeners(); - this.socket.close(); - - return this; -}; - -/** - * Proxy the event listener requests to the created Net server - */ - -Object.keys(process.EventEmitter.prototype).forEach(function proxy (key){ - Server.prototype[key] = Server.prototype[key] || function () { - if (this.socket) { - this.socket[key].apply(this.socket, arguments); - } - - return this; - }; -}); - -/** - * Creates a new server instance. - * - * @param {Object} options A options object to override the default config - * @param {Array} origins The origins that should be allowed by the server - * @api public - */ - -exports.createServer = function createServer(options, origins){ - origins = Array.isArray(origins) ? origins : (Array.isArray(options) ? options : false); - options = !Array.isArray(options) && options ? options : {}; - - return new Server(options, origins); -}; - -/** - * Provide a hook to the original server, so it can be extended if needed. - */ - -exports.Server = Server; - -/** - * Module version - */ - -exports.version = '0.0.4'; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/package.json deleted file mode 100644 index 49a2a3e9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "policyfile", - "version": "0.0.4", - "author": { - "name": "Arnout Kazemier" - }, - "description": "Flash Socket Policy File Server. A server to respond to Flash Socket Policy requests, both inline and through a dedicated server instance.", - "main": "index", - "keywords": [ - "flash", - "socket", - "policy", - "file", - "server", - "Flash Socket Policy File Server", - "cross domain" - ], - "directories": { - "lib": "./lib" - }, - "maintainers": [ - { - "name": "Arnout Kazemier", - "email": "info@3rd-Eden.com", - "url": "http://blog.3rd-Eden.com" - } - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/3rd-Eden/FlashPolicyFileServer/blob/master/LICENSE" - } - ], - "repositories": [ - { - "type": "git", - "url": "git+https://github.com/3rd-Eden/FlashPolicyFileServer.git" - } - ], - "_id": "policyfile@0.0.4", - "dependencies": {}, - "devDependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.0.12", - "_nodeVersion": "v0.4.8", - "_defaultsLoaded": true, - "dist": { - "shasum": "d6b82ead98ae79ebe228e2daf5903311ec982e4d", - "tarball": "http://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz" - }, - "scripts": {}, - "_shasum": "d6b82ead98ae79ebe228e2daf5903311ec982e4d", - "_resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz", - "_from": "policyfile@0.0.4", - "repository": { - "type": "git", - "url": "git+https://github.com/3rd-Eden/FlashPolicyFileServer.git" - }, - "bugs": { - "url": "https://github.com/3rd-Eden/FlashPolicyFileServer/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/3rd-Eden/FlashPolicyFileServer#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt deleted file mode 100644 index 5883cd44..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.crt +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDXTCCAkWgAwIBAgIJAMUSOvlaeyQHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX -aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE2MDkzMjQ5WhcNMTMxMTE1MDkzMjQ5WjBF -MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 -ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEVwfPQQp4X -wtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+1FAE0c5o -exPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404WthquTqg -S7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy25IyBK3QJ -c+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWAQsqW+COL -0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABo1AwTjAdBgNVHQ4EFgQUDnV4d6mD -tOnluLoCjkUHTX/n4agwHwYDVR0jBBgwFoAUDnV4d6mDtOnluLoCjkUHTX/n4agw -DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAFwV4MQfTo+qMv9JMiyno -IEiqfOz4RgtmBqRnXUffcjS2dhc7/z+FPZnM79Kej8eLHoVfxCyWRHFlzm93vEdv -wxOCrD13EDOi08OOZfxWyIlCa6Bg8cMAKqQzd2OvQOWqlRWBTThBJIhWflU33izX -Qn5GdmYqhfpc+9ZHHGhvXNydtRQkdxVK2dZNzLBvBlLlRmtoClU7xm3A+/5dddeP -AQHEPtyFlUw49VYtZ3ru6KqPms7MKvcRhYLsy9rwSfuuniMlx4d0bDR7TOkw0QQS -A0N8MGQRQpzl4mw4jLzyM5d5QtuGBh2P6hPGa0YQxtI3RPT/p6ENzzBiAKXiSfzo -xw== ------END CERTIFICATE----- diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key deleted file mode 100644 index f31ff3d9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/ssl/ssl.private.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAz+LXZOjcQCJq3+ZKUFabj71oo/ex/XsBcFqtBThjjTw9CVEV -wfPQQp4XwtPiB204vnYXwQ1/R2NdTQqCZu47l79LssL/u2a5Y9+0NEU3nQA5qdt+ -1FAE0c5oexPimXOrR3GWfKz7PmZ2O0117IeCUUXPG5U8umhDe/4mDF4ZNJiKc404 -WthquTqgS7rLQZHhZ6D0EnGnOkzlmxJMYPNHSOY1/6ivdNUUcC87awNEA3lgfhy2 -5IyBK3QJc+aYKNTbt70Lery3bu2wWLFGtmNiGlQTS4JsxImRsECTI727ObS7/FWA -QsqW+COL0Sa5BuMFrFIpjPrEe0ih7vRRbdmXRwIDAQABAoIBAGe4+9VqZfJN+dsq -8Osyuz01uQ8OmC0sAWTIqUlQgENIyf9rCJsUBlYmwR5BT6Z69XP6QhHdpSK+TiAR -XUz0EqG9HYzcxHIBaACP7j6iRoQ8R4kbbiWKo0z3WqQGIOqFjvD/mKEuQdE5mEYw -eOUCG6BnX1WY2Yr8WKd2AA/tp0/Y4d8z04u9eodMpSTbHTzYMJb5SbBN1vo6FY7q -8zSuO0BMzXlAxUsCwHsk1GQHFr8Oh3zIR7bQGtMBouI+6Lhh7sjFYsfxJboqMTBV -IKaA216M6ggHG7MU1/jeKcMGDmEfqQLQoyWp29rMK6TklUgipME2L3UD7vTyAVzz -xbVOpZkCgYEA8CXW4sZBBrSSrLR5SB+Ubu9qNTggLowOsC/kVKB2WJ4+xooc5HQo -mFhq1v/WxPQoWIxdYsfg2odlL+JclK5Qcy6vXmRSdAQ5lK9gBDKxZSYc3NwAw2HA -zyHCTK+I0n8PBYQ+yGcrxu0WqTGnlLW+Otk4CejO34WlgHwbH9bbY5UCgYEA3ZvT -C4+OoMHXlmICSt29zUrYiL33IWsR3/MaONxTEDuvgkOSXXQOl/8Ebd6Nu+3WbsSN -bjiPC/JyL1YCVmijdvFpl4gjtgvfJifs4G+QHvO6YfsYoVANk4u6g6rUuBIOwNK4 -RwYxwDc0oysp+g7tPxoSgDHReEVKJNzGBe9NGGsCgYEA4O4QP4gCEA3B9BF2J5+s -n9uPVxmiyvZUK6Iv8zP4pThTBBMIzNIf09G9AHPQ7djikU2nioY8jXKTzC3xGTHM -GJZ5m6fLsu7iH+nDvSreDSeNkTBfZqGAvoGYQ8uGE+L+ZuRfCcXYsxIOT5s6o4c3 -Dle2rVFpsuKzCY00urW796ECgYBn3go75+xEwrYGQSer6WR1nTgCV29GVYXKPooy -zmmMOT1Yw80NSkEw0pFD4cTyqVYREsTrPU0mn1sPfrOXxnGfZSVFpcR/Je9QVfQ7 -eW7GYxwfom335aqHVj10SxRqteP+UoWWnHujCPz94VRKZMakBddYCIGSan+G6YdS -7sdmwwKBgBc2qj0wvGXDF2kCLwSGfWoMf8CS1+5fIiUIdT1e/+7MfDdbmLMIFVjF -QKS3zVViXCbrG5SY6wS9hxoc57f6E2A8vcaX6zy2xkZlGHQCpWRtEM5R01OWJQaH -HsHMmQZGUQVoDm1oRkDhrTFK4K3ukc3rAxzeTZ96utOQN8/KJsTv ------END RSA PRIVATE KEY----- diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js deleted file mode 100644 index 932b3c14..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/policyfile/tests/unit.test.js +++ /dev/null @@ -1,231 +0,0 @@ -var fspfs = require('../') - , fs = require('fs') - , http = require('http') - , https = require('https') - , net = require('net') - , should = require('should') - , assert = require('assert'); - -module.exports = { - // Library version should be Semver compatible - 'Library version': function(){ - fspfs.version.should.match(/^\d+\.\d+\.\d+$/); - } - - // Creating a server instace should not cause any problems - // either using the new Server or createServer method. -, 'Create Server instance': function(){ - var server = fspfs.createServer() - , server2 = new fspfs.Server({log:false}, ['blog.3rd-Eden.com:1337']); - - // server 2 options test - server2.log.should.be.false; - server2.origins.length.should.equal(1); - server2.origins[0].should.equal('blog.3rd-Eden.com:1337'); - - // server defaults - (typeof server.log).should.be.equal('function'); - server.origins.length.should.equal(1); - server.origins[0].should.equal('*:*'); - - // instance checking, sanity check - assert.ok(server instanceof fspfs.Server); - assert.ok(!!server.buffer); - - // more options testing - server = fspfs.createServer(['blog.3rd-Eden.com:80']); - server.origins.length.should.equal(1); - server.origins[0].should.equal('blog.3rd-Eden.com:80'); - - server = fspfs.createServer({log:false},['blog.3rd-Eden.com:80']); - server.log.should.be.false; - server.origins.length.should.equal(1); - server.origins[0].should.equal('blog.3rd-Eden.com:80'); - - } - -, 'Add origin': function(){ - var server = fspfs.createServer(); - server.add('google.com:80', 'blog.3rd-Eden.com:1337'); - - server.origins.length.should.equal(3); - server.origins.indexOf('google.com:80').should.be.above(0); - - // don't allow duplicates - server.add('google.com:80', 'google.com:80'); - - var i = server.origins.length - , count = 0; - - while(i--){ - if (server.origins[i] === 'google.com:80'){ - count++; - } - } - - count.should.equal(1); - } - -, 'Remove origin': function(){ - var server = fspfs.createServer(); - server.add('google.com:80', 'blog.3rd-Eden.com:1337'); - server.origins.length.should.equal(3); - - server.remove('google.com:80'); - server.origins.length.should.equal(2); - server.origins.indexOf('google.com:80').should.equal(-1); - } - -, 'Buffer': function(){ - var server = fspfs.createServer(); - - Buffer.isBuffer(server.buffer).should.be.true; - server.buffer.toString().indexOf('to-ports="*"').should.be.above(0); - server.buffer.toString().indexOf('domain="*"').should.be.above(0); - server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); - - // The buffers should be rebuild when new origins are added - server.add('google.com:80'); - server.buffer.toString().indexOf('to-ports="80"').should.be.above(0); - server.buffer.toString().indexOf('domain="google.com"').should.be.above(0); - - server.remove('google.com:80'); - server.buffer.toString().indexOf('to-ports="80"').should.equal(-1); - server.buffer.toString().indexOf('domain="google.com"').should.equal(-1); - } - -, 'Responder': function(){ - var server = fspfs.createServer() - , calls = 0 - // dummy socket to emulate a `real` socket - , dummySocket = { - readyState: 'open' - , end: function(buffer){ - calls++; - Buffer.isBuffer(buffer).should.be.true; - buffer.toString().should.equal(server.buffer.toString()); - } - }; - - server.responder(dummySocket); - calls.should.equal(1); - } - -, 'Event proxy': function(){ - var server = fspfs.createServer() - , calls = 0; - - Object.keys(process.EventEmitter.prototype).forEach(function proxy(key){ - assert.ok(!!server[key] && typeof server[key] === 'function'); - }); - - // test if it works by calling a none default event - server.on('pew', function(){ - calls++; - }); - - server.emit('pew'); - calls.should.equal(1); - } - -, 'inline response http': function(){ - var port = 1335 - , httpserver = http.createServer(function(q,r){r.writeHead(200);r.end(':3')}) - , server = fspfs.createServer(); - - httpserver.listen(port, function(){ - server.listen(port + 1, httpserver, function(){ - var client = net.createConnection(port); - client.write('\0'); - client.on('error', function(err){ - assert.ok(!err, err) - }); - client.on('data', function(data){ - - var response = data.toString(); - console.log(response); - - response.indexOf('to-ports="*"').should.be.above(0); - response.indexOf('domain="*"').should.be.above(0); - response.indexOf('domain="google.com"').should.equal(-1); - - // clean up - client.destroy(); - server.close(); - httpserver.close(); - }); - }); - }); - } - -, 'server response': function(){ - var port = 1340 - , server = fspfs.createServer(); - - server.listen(port, function(){ - var client = net.createConnection(port); - client.write('\0'); - client.on('error', function(err){ - assert.ok(!err, err) - }); - client.on('data', function(data){ - - var response = data.toString(); - - response.indexOf('to-ports="*"').should.be.above(0); - response.indexOf('domain="*"').should.be.above(0); - response.indexOf('domain="google.com"').should.equal(-1); - - // clean up - client.destroy(); - server.close(); - }); - }); - } - -, 'inline response https': function(){ - var port = 1345 - , ssl = { - key: fs.readFileSync(__dirname + '/ssl/ssl.private.key').toString() - , cert: fs.readFileSync(__dirname + '/ssl/ssl.crt').toString() - } - , httpserver = https.createServer(ssl, function(q,r){r.writeHead(200);r.end(':3')}) - , server = fspfs.createServer(); - - httpserver.listen(port, function(){ - server.listen(port + 1, httpserver, function(){ - var client = net.createConnection(port); - client.write('\0'); - client.on('error', function(err){ - assert.ok(!err, err) - }); - client.on('data', function(data){ - - var response = data.toString(); - - response.indexOf('to-ports="*"').should.be.above(0); - response.indexOf('domain="*"').should.be.above(0); - response.indexOf('domain="google.com"').should.equal(-1); - - // clean up - client.destroy(); - server.close(); - httpserver.close(); - }); - }); - }); - } - -, 'connect_failed': function(){ - var server = fspfs.createServer(); - - server.on('connect_failed', function(){ - assert.ok(true); - }); - - server.listen(function(){ - assert.ok(false, 'Run this test without root access'); - server.close(); - }); - } -}; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/README.md deleted file mode 100644 index 46e7018c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/README.md +++ /dev/null @@ -1,691 +0,0 @@ -redis - a node.js redis client -=========================== - -This is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from -experimental Redis server branches. - - -Install with: - - npm install redis - -Pieter Noordhuis has provided a binding to the official `hiredis` C library, which is non-blocking and fast. To use `hiredis`, do: - - npm install hiredis redis - -If `hiredis` is installed, `node_redis` will use it by default. Otherwise, a pure JavaScript parser will be used. - -If you use `hiredis`, be sure to rebuild it whenever you upgrade your version of node. There are mysterious failures that can -happen between node and native code modules after a node upgrade. - - -## Usage - -Simple example, included as `examples/simple.js`: - -```js - var redis = require("redis"), - client = redis.createClient(); - - // if you'd like to select database 3, instead of 0 (default), call - // client.select(3, function() { /* ... */ }); - - client.on("error", function (err) { - console.log("Error " + err); - }); - - client.set("string key", "string val", redis.print); - client.hset("hash key", "hashtest 1", "some value", redis.print); - client.hset(["hash key", "hashtest 2", "some other value"], redis.print); - client.hkeys("hash key", function (err, replies) { - console.log(replies.length + " replies:"); - replies.forEach(function (reply, i) { - console.log(" " + i + ": " + reply); - }); - client.quit(); - }); -``` - -This will display: - - mjr:~/work/node_redis (master)$ node example.js - Reply: OK - Reply: 0 - Reply: 0 - 2 replies: - 0: hashtest 1 - 1: hashtest 2 - mjr:~/work/node_redis (master)$ - - -## Performance - -Here are typical results of `multi_bench.js` which is similar to `redis-benchmark` from the Redis distribution. -It uses 50 concurrent connections with no pipelining. - -JavaScript parser: - - PING: 20000 ops 42283.30 ops/sec 0/5/1.182 - SET: 20000 ops 32948.93 ops/sec 1/7/1.515 - GET: 20000 ops 28694.40 ops/sec 0/9/1.740 - INCR: 20000 ops 39370.08 ops/sec 0/8/1.269 - LPUSH: 20000 ops 36429.87 ops/sec 0/8/1.370 - LRANGE (10 elements): 20000 ops 9891.20 ops/sec 1/9/5.048 - LRANGE (100 elements): 20000 ops 1384.56 ops/sec 10/91/36.072 - -hiredis parser: - - PING: 20000 ops 46189.38 ops/sec 1/4/1.082 - SET: 20000 ops 41237.11 ops/sec 0/6/1.210 - GET: 20000 ops 39682.54 ops/sec 1/7/1.257 - INCR: 20000 ops 40080.16 ops/sec 0/8/1.242 - LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212 - LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363 - LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287 - -The performance of `node_redis` improves dramatically with pipelining, which happens automatically in most normal programs. - - -### Sending Commands - -Each Redis command is exposed as a function on the `client` object. -All functions take either an `args` Array plus optional `callback` Function or -a variable number of individual arguments followed by an optional callback. -Here is an example of passing an array of arguments and a callback: - - client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {}); - -Here is that same call in the second style: - - client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {}); - -Note that in either form the `callback` is optional: - - client.set("some key", "some val"); - client.set(["some other key", "some val"]); - -If the key is missing, reply will be null (probably): - - client.get("missingkey", function(err, reply) { - // reply is null when the key is missing - console.log(reply); - }); - -For a list of Redis commands, see [Redis Command Reference](http://redis.io/commands) - -The commands can be specified in uppercase or lowercase for convenience. `client.get()` is the same as `client.GET()`. - -Minimal parsing is done on the replies. Commands that return a single line reply return JavaScript Strings, -integer replies return JavaScript Numbers, "bulk" replies return node Buffers, and "multi bulk" replies return a -JavaScript Array of node Buffers. `HGETALL` returns an Object with Buffers keyed by the hash keys. - -# API - -## Connection Events - -`client` will emit some events about the state of the connection to the Redis server. - -### "ready" - -`client` will emit `ready` a connection is established to the Redis server and the server reports -that it is ready to receive commands. Commands issued before the `ready` event are queued, -then replayed just before this event is emitted. - -### "connect" - -`client` will emit `connect` at the same time as it emits `ready` unless `client.options.no_ready_check` -is set. If this options is set, `connect` will be emitted when the stream is connected, and then -you are free to try to send commands. - -### "error" - -`client` will emit `error` when encountering an error connecting to the Redis server. - -Note that "error" is a special event type in node. If there are no listeners for an -"error" event, node will exit. This is usually what you want, but it can lead to some -cryptic error messages like this: - - mjr:~/work/node_redis (master)$ node example.js - - node.js:50 - throw e; - ^ - Error: ECONNREFUSED, Connection refused - at IOWatcher.callback (net:870:22) - at node.js:607:9 - -Not very useful in diagnosing the problem, but if your program isn't ready to handle this, -it is probably the right thing to just exit. - -`client` will also emit `error` if an exception is thrown inside of `node_redis` for whatever reason. -It would be nice to distinguish these two cases. - -### "end" - -`client` will emit `end` when an established Redis server connection has closed. - -### "drain" - -`client` will emit `drain` when the TCP connection to the Redis server has been buffering, but is now -writable. This event can be used to stream commands in to Redis and adapt to backpressure. Right now, -you need to check `client.command_queue.length` to decide when to reduce your send rate. Then you can -resume sending when you get `drain`. - -### "idle" - -`client` will emit `idle` when there are no outstanding commands that are awaiting a response. - -## redis.createClient(port, host, options) - -Create a new client connection. `port` defaults to `6379` and `host` defaults -to `127.0.0.1`. If you have `redis-server` running on the same computer as node, then the defaults for -port and host are probably fine. `options` in an object with the following possible properties: - -* `parser`: which Redis protocol reply parser to use. Defaults to `hiredis` if that module is installed. -This may also be set to `javascript`. -* `return_buffers`: defaults to `false`. If set to `true`, then all replies will be sent to callbacks as node Buffer -objects instead of JavaScript Strings. -* `detect_buffers`: default to `false`. If set to `true`, then replies will be sent to callbacks as node Buffer objects -if any of the input arguments to the original command were Buffer objects. -This option lets you switch between Buffers and Strings on a per-command basis, whereas `return_buffers` applies to -every command on a client. -* `socket_nodelay`: defaults to `true`. Whether to call setNoDelay() on the TCP stream, which disables the -Nagle algorithm on the underlying socket. Setting this option to `false` can result in additional throughput at the -cost of more latency. Most applications will want this set to `true`. -* `no_ready_check`: defaults to `false`. When a connection is established to the Redis server, the server might still -be loading the database from disk. While loading, the server not respond to any commands. To work around this, -`node_redis` has a "ready check" which sends the `INFO` command to the server. The response from the `INFO` command -indicates whether the server is ready for more commands. When ready, `node_redis` emits a `ready` event. -Setting `no_ready_check` to `true` will inhibit this check. -* `enable_offline_queue`: defaults to `true`. By default, if there is no active -connection to the redis server, commands are added to a queue and are executed -once the connection has been established. Setting `enable_offline_queue` to -`false` will disable this feature and the callback will be execute immediately -with an error, or an error will be thrown if no callback is specified. - -```js - var redis = require("redis"), - client = redis.createClient(null, null, {detect_buffers: true}); - - client.set("foo_rand000000000000", "OK"); - - // This will return a JavaScript String - client.get("foo_rand000000000000", function (err, reply) { - console.log(reply.toString()); // Will print `OK` - }); - - // This will return a Buffer since original key is specified as a Buffer - client.get(new Buffer("foo_rand000000000000"), function (err, reply) { - console.log(reply.toString()); // Will print `` - }); - client.end(); -``` - -`createClient()` returns a `RedisClient` object that is named `client` in all of the examples here. - -## client.auth(password, callback) - -When connecting to Redis servers that require authentication, the `AUTH` command must be sent as the -first command after connecting. This can be tricky to coordinate with reconnections, the ready check, -etc. To make this easier, `client.auth()` stashes `password` and will send it after each connection, -including reconnections. `callback` is invoked only once, after the response to the very first -`AUTH` command sent. -NOTE: Your call to `client.auth()` should not be inside the ready handler. If -you are doing this wrong, `client` will emit an error that looks -something like this `Error: Ready check failed: ERR operation not permitted`. - -## client.end() - -Forcibly close the connection to the Redis server. Note that this does not wait until all replies have been parsed. -If you want to exit cleanly, call `client.quit()` to send the `QUIT` command after you have handled all replies. - -This example closes the connection to the Redis server before the replies have been read. You probably don't -want to do this: - -```js - var redis = require("redis"), - client = redis.createClient(); - - client.set("foo_rand000000000000", "some fantastic value"); - client.get("foo_rand000000000000", function (err, reply) { - console.log(reply.toString()); - }); - client.end(); -``` - -`client.end()` is useful for timeout cases where something is stuck or taking too long and you want -to start over. - -## Friendlier hash commands - -Most Redis commands take a single String or an Array of Strings as arguments, and replies are sent back as a single String or an Array of Strings. -When dealing with hash values, there are a couple of useful exceptions to this. - -### client.hgetall(hash) - -The reply from an HGETALL command will be converted into a JavaScript Object by `node_redis`. That way you can interact -with the responses using JavaScript syntax. - -Example: - - client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234"); - client.hgetall("hosts", function (err, obj) { - console.dir(obj); - }); - -Output: - - { mjr: '1', another: '23', home: '1234' } - -### client.hmset(hash, obj, [callback]) - -Multiple values in a hash can be set by supplying an object: - - client.HMSET(key2, { - "0123456789": "abcdefghij", // NOTE: the key and value must both be strings - "some manner of key": "a type of value" - }); - -The properties and values of this Object will be set as keys and values in the Redis hash. - -### client.hmset(hash, key1, val1, ... keyn, valn, [callback]) - -Multiple values may also be set by supplying a list: - - client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value"); - - -## Publish / Subscribe - -Here is a simple example of the API for publish / subscribe. This program opens two -client connections, subscribes to a channel on one of them, and publishes to that -channel on the other: - -```js - var redis = require("redis"), - client1 = redis.createClient(), client2 = redis.createClient(), - msg_count = 0; - - client1.on("subscribe", function (channel, count) { - client2.publish("a nice channel", "I am sending a message."); - client2.publish("a nice channel", "I am sending a second message."); - client2.publish("a nice channel", "I am sending my last message."); - }); - - client1.on("message", function (channel, message) { - console.log("client1 channel " + channel + ": " + message); - msg_count += 1; - if (msg_count === 3) { - client1.unsubscribe(); - client1.end(); - client2.end(); - } - }); - - client1.incr("did a thing"); - client1.subscribe("a nice channel"); -``` - -When a client issues a `SUBSCRIBE` or `PSUBSCRIBE`, that connection is put into "pub/sub" mode. -At that point, only commands that modify the subscription set are valid. When the subscription -set is empty, the connection is put back into regular mode. - -If you need to send regular commands to Redis while in pub/sub mode, just open another connection. - -## Pub / Sub Events - -If a client has subscriptions active, it may emit these events: - -### "message" (channel, message) - -Client will emit `message` for every message received that matches an active subscription. -Listeners are passed the channel name as `channel` and the message Buffer as `message`. - -### "pmessage" (pattern, channel, message) - -Client will emit `pmessage` for every message received that matches an active subscription pattern. -Listeners are passed the original pattern used with `PSUBSCRIBE` as `pattern`, the sending channel -name as `channel`, and the message Buffer as `message`. - -### "subscribe" (channel, count) - -Client will emit `subscribe` in response to a `SUBSCRIBE` command. Listeners are passed the -channel name as `channel` and the new count of subscriptions for this client as `count`. - -### "psubscribe" (pattern, count) - -Client will emit `psubscribe` in response to a `PSUBSCRIBE` command. Listeners are passed the -original pattern as `pattern`, and the new count of subscriptions for this client as `count`. - -### "unsubscribe" (channel, count) - -Client will emit `unsubscribe` in response to a `UNSUBSCRIBE` command. Listeners are passed the -channel name as `channel` and the new count of subscriptions for this client as `count`. When -`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted. - -### "punsubscribe" (pattern, count) - -Client will emit `punsubscribe` in response to a `PUNSUBSCRIBE` command. Listeners are passed the -channel name as `channel` and the new count of subscriptions for this client as `count`. When -`count` is 0, this client has left pub/sub mode and no more pub/sub events will be emitted. - -## client.multi([commands]) - -`MULTI` commands are queued up until an `EXEC` is issued, and then all commands are run atomically by -Redis. The interface in `node_redis` is to return an individual `Multi` object by calling `client.multi()`. - -```js - var redis = require("./index"), - client = redis.createClient(), set_size = 20; - - client.sadd("bigset", "a member"); - client.sadd("bigset", "another member"); - - while (set_size > 0) { - client.sadd("bigset", "member " + set_size); - set_size -= 1; - } - - // multi chain with an individual callback - client.multi() - .scard("bigset") - .smembers("bigset") - .keys("*", function (err, replies) { - // NOTE: code in this callback is NOT atomic - // this only happens after the the .exec call finishes. - client.mget(replies, redis.print); - }) - .dbsize() - .exec(function (err, replies) { - console.log("MULTI got " + replies.length + " replies"); - replies.forEach(function (reply, index) { - console.log("Reply " + index + ": " + reply.toString()); - }); - }); -``` - -`client.multi()` is a constructor that returns a `Multi` object. `Multi` objects share all of the -same command methods as `client` objects do. Commands are queued up inside the `Multi` object -until `Multi.exec()` is invoked. - -You can either chain together `MULTI` commands as in the above example, or you can queue individual -commands while still sending regular client command as in this example: - -```js - var redis = require("redis"), - client = redis.createClient(), multi; - - // start a separate multi command queue - multi = client.multi(); - multi.incr("incr thing", redis.print); - multi.incr("incr other thing", redis.print); - - // runs immediately - client.mset("incr thing", 100, "incr other thing", 1, redis.print); - - // drains multi queue and runs atomically - multi.exec(function (err, replies) { - console.log(replies); // 101, 2 - }); - - // you can re-run the same transaction if you like - multi.exec(function (err, replies) { - console.log(replies); // 102, 3 - client.quit(); - }); -``` - -In addition to adding commands to the `MULTI` queue individually, you can also pass an array -of commands and arguments to the constructor: - -```js - var redis = require("redis"), - client = redis.createClient(), multi; - - client.multi([ - ["mget", "multifoo", "multibar", redis.print], - ["incr", "multifoo"], - ["incr", "multibar"] - ]).exec(function (err, replies) { - console.log(replies); - }); -``` - - -## Monitor mode - -Redis supports the `MONITOR` command, which lets you see all commands received by the Redis server -across all client connections, including from other client libraries and other computers. - -After you send the `MONITOR` command, no other commands are valid on that connection. `node_redis` -will emit a `monitor` event for every new monitor message that comes across. The callback for the -`monitor` event takes a timestamp from the Redis server and an array of command arguments. - -Here is a simple example: - -```js - var client = require("redis").createClient(), - util = require("util"); - - client.monitor(function (err, res) { - console.log("Entering monitoring mode."); - }); - - client.on("monitor", function (time, args) { - console.log(time + ": " + util.inspect(args)); - }); -``` - -# Extras - -Some other things you might like to know about. - -## client.server_info - -After the ready probe completes, the results from the INFO command are saved in the `client.server_info` -object. - -The `versions` key contains an array of the elements of the version string for easy comparison. - - > client.server_info.redis_version - '2.3.0' - > client.server_info.versions - [ 2, 3, 0 ] - -## redis.print() - -A handy callback function for displaying return values when testing. Example: - -```js - var redis = require("redis"), - client = redis.createClient(); - - client.on("connect", function () { - client.set("foo_rand000000000000", "some fantastic value", redis.print); - client.get("foo_rand000000000000", redis.print); - }); -``` - -This will print: - - Reply: OK - Reply: some fantastic value - -Note that this program will not exit cleanly because the client is still connected. - -## redis.debug_mode - -Boolean to enable debug mode and protocol tracing. - -```js - var redis = require("redis"), - client = redis.createClient(); - - redis.debug_mode = true; - - client.on("connect", function () { - client.set("foo_rand000000000000", "some fantastic value"); - }); -``` - -This will display: - - mjr:~/work/node_redis (master)$ node ~/example.js - send command: *3 - $3 - SET - $20 - foo_rand000000000000 - $20 - some fantastic value - - on_data: +OK - -`send command` is data sent into Redis and `on_data` is data received from Redis. - -## client.send_command(command_name, args, callback) - -Used internally to send commands to Redis. For convenience, nearly all commands that are published on the Redis -Wiki have been added to the `client` object. However, if I missed any, or if new commands are introduced before -this library is updated, you can use `send_command()` to send arbitrary commands to Redis. - -All commands are sent as multi-bulk commands. `args` can either be an Array of arguments, or omitted. - -## client.connected - -Boolean tracking the state of the connection to the Redis server. - -## client.command_queue.length - -The number of commands that have been sent to the Redis server but not yet replied to. You can use this to -enforce some kind of maximum queue depth for commands while connected. - -Don't mess with `client.command_queue` though unless you really know what you are doing. - -## client.offline_queue.length - -The number of commands that have been queued up for a future connection. You can use this to enforce -some kind of maximum queue depth for pre-connection commands. - -## client.retry_delay - -Current delay in milliseconds before a connection retry will be attempted. This starts at `250`. - -## client.retry_backoff - -Multiplier for future retry timeouts. This should be larger than 1 to add more time between retries. -Defaults to 1.7. The default initial connection retry is 250, so the second retry will be 425, followed by 723.5, etc. - -### Commands with Optional and Keyword arguments - -This applies to anything that uses an optional `[WITHSCORES]` or `[LIMIT offset count]` in the [redis.io/commands](http://redis.io/commands) documentation. - -Example: -```js -var args = [ 'myzset', 1, 'one', 2, 'two', 3, 'three', 99, 'ninety-nine' ]; -client.zadd(args, function (err, response) { - if (err) throw err; - console.log('added '+response+' items.'); - - // -Infinity and +Infinity also work - var args1 = [ 'myzset', '+inf', '-inf' ]; - client.zrevrangebyscore(args1, function (err, response) { - if (err) throw err; - console.log('example1', response); - // write your code here - }); - - var max = 3, min = 1, offset = 1, count = 2; - var args2 = [ 'myzset', max, min, 'WITHSCORES', 'LIMIT', offset, count ]; - client.zrevrangebyscore(args2, function (err, response) { - if (err) throw err; - console.log('example2', response); - // write your code here - }); -}); -``` - -## TODO - -Better tests for auth, disconnect/reconnect, and all combinations thereof. - -Stream large set/get values into and out of Redis. Otherwise the entire value must be in node's memory. - -Performance can be better for very large values. - -I think there are more performance improvements left in there for smaller values, especially for large lists of small values. - -## How to Contribute -- open a pull request and then wait for feedback (if - [DTrejo](http://github.com/dtrejo) does not get back to you within 2 days, - comment again with indignation!) - -## Contributors -Some people have have added features and fixed bugs in `node_redis` other than me. - -Ordered by date of first contribution. -[Auto-generated](http://github.com/dtrejo/node-authors) on Wed Jul 25 2012 19:14:59 GMT-0700 (PDT). - -- [Matt Ranney aka `mranney`](https://github.com/mranney) -- [Tim-Smart aka `tim-smart`](https://github.com/tim-smart) -- [Tj Holowaychuk aka `visionmedia`](https://github.com/visionmedia) -- [rick aka `technoweenie`](https://github.com/technoweenie) -- [Orion Henry aka `orionz`](https://github.com/orionz) -- [Aivo Paas aka `aivopaas`](https://github.com/aivopaas) -- [Hank Sims aka `hanksims`](https://github.com/hanksims) -- [Paul Carey aka `paulcarey`](https://github.com/paulcarey) -- [Pieter Noordhuis aka `pietern`](https://github.com/pietern) -- [nithesh aka `nithesh`](https://github.com/nithesh) -- [Andy Ray aka `andy2ray`](https://github.com/andy2ray) -- [unknown aka `unknowdna`](https://github.com/unknowdna) -- [Dave Hoover aka `redsquirrel`](https://github.com/redsquirrel) -- [Vladimir Dronnikov aka `dvv`](https://github.com/dvv) -- [Umair Siddique aka `umairsiddique`](https://github.com/umairsiddique) -- [Louis-Philippe Perron aka `lp`](https://github.com/lp) -- [Mark Dawson aka `markdaws`](https://github.com/markdaws) -- [Ian Babrou aka `bobrik`](https://github.com/bobrik) -- [Felix Geisendörfer aka `felixge`](https://github.com/felixge) -- [Jean-Hugues Pinson aka `undefined`](https://github.com/undefined) -- [Maksim Lin aka `maks`](https://github.com/maks) -- [Owen Smith aka `orls`](https://github.com/orls) -- [Zachary Scott aka `zzak`](https://github.com/zzak) -- [TEHEK Firefox aka `TEHEK`](https://github.com/TEHEK) -- [Isaac Z. Schlueter aka `isaacs`](https://github.com/isaacs) -- [David Trejo aka `DTrejo`](https://github.com/DTrejo) -- [Brian Noguchi aka `bnoguchi`](https://github.com/bnoguchi) -- [Philip Tellis aka `bluesmoon`](https://github.com/bluesmoon) -- [Marcus Westin aka `marcuswestin2`](https://github.com/marcuswestin2) -- [Jed Schmidt aka `jed`](https://github.com/jed) -- [Dave Peticolas aka `jdavisp3`](https://github.com/jdavisp3) -- [Trae Robrock aka `trobrock`](https://github.com/trobrock) -- [Shankar Karuppiah aka `shankar0306`](https://github.com/shankar0306) -- [Ignacio Burgueño aka `ignacio`](https://github.com/ignacio) - -Thanks. - -## LICENSE - "MIT License" - -Copyright (c) 2010 Matthew Ranney, http://ranney.com/ - -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. - -![spacer](http://ranney.com/1px.gif) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js deleted file mode 100644 index a504fbc0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/buffer_bench.js +++ /dev/null @@ -1,89 +0,0 @@ -var source = new Buffer(100), - dest = new Buffer(100), i, j, k, tmp, count = 1000000, bytes = 100; - -for (i = 99 ; i >= 0 ; i--) { - source[i] = 120; -} - -var str = "This is a nice String.", - buf = new Buffer("This is a lovely Buffer."); - -var start = new Date(); -for (i = count * 100; i > 0 ; i--) { - if (Buffer.isBuffer(str)) {} -} -var end = new Date(); -console.log("Buffer.isBuffer(str) " + (end - start) + " ms"); - -var start = new Date(); -for (i = count * 100; i > 0 ; i--) { - if (Buffer.isBuffer(buf)) {} -} -var end = new Date(); -console.log("Buffer.isBuffer(buf) " + (end - start) + " ms"); - -var start = new Date(); -for (i = count * 100; i > 0 ; i--) { - if (str instanceof Buffer) {} -} -var end = new Date(); -console.log("str instanceof Buffer " + (end - start) + " ms"); - -var start = new Date(); -for (i = count * 100; i > 0 ; i--) { - if (buf instanceof Buffer) {} -} -var end = new Date(); -console.log("buf instanceof Buffer " + (end - start) + " ms"); - -for (i = bytes ; i > 0 ; i --) { - var start = new Date(); - for (j = count ; j > 0; j--) { - tmp = source.toString("ascii", 0, bytes); - } - var end = new Date(); - console.log("toString() " + i + " bytes " + (end - start) + " ms"); -} - -for (i = bytes ; i > 0 ; i --) { - var start = new Date(); - for (j = count ; j > 0; j--) { - tmp = ""; - for (k = 0; k <= i ; k++) { - tmp += String.fromCharCode(source[k]); - } - } - var end = new Date(); - console.log("manual string " + i + " bytes " + (end - start) + " ms"); -} - -for (i = bytes ; i > 0 ; i--) { - var start = new Date(); - for (j = count ; j > 0 ; j--) { - for (k = i ; k > 0 ; k--) { - dest[k] = source[k]; - } - } - var end = new Date(); - console.log("Manual copy " + i + " bytes " + (end - start) + " ms"); -} - -for (i = bytes ; i > 0 ; i--) { - var start = new Date(); - for (j = count ; j > 0 ; j--) { - for (k = i ; k > 0 ; k--) { - dest[k] = 120; - } - } - var end = new Date(); - console.log("Direct assignment " + i + " bytes " + (end - start) + " ms"); -} - -for (i = bytes ; i > 0 ; i--) { - var start = new Date(); - for (j = count ; j > 0 ; j--) { - source.copy(dest, 0, 0, i); - } - var end = new Date(); - console.log("Buffer.copy() " + i + " bytes " + (end - start) + " ms"); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js deleted file mode 100644 index f1515b11..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/hiredis_parser.js +++ /dev/null @@ -1,38 +0,0 @@ -var Parser = require('../lib/parser/hiredis').Parser; -var assert = require('assert'); - -/* -This test makes sure that exceptions thrown inside of "reply" event handlers -are not trapped and mistakenly emitted as parse errors. -*/ -(function testExecuteDoesNotCatchReplyCallbackExceptions() { - var parser = new Parser(); - var replies = [{}]; - - parser.reader = { - feed: function() {}, - get: function() { - return replies.shift(); - } - }; - - var emittedError = false; - var caughtException = false; - - parser - .on('error', function() { - emittedError = true; - }) - .on('reply', function() { - throw new Error('bad'); - }); - - try { - parser.execute(); - } catch (err) { - caughtException = true; - } - - assert.equal(caughtException, true); - assert.equal(emittedError, false); -})(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js deleted file mode 100644 index 64b8f312..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/re_sub_test.js +++ /dev/null @@ -1,14 +0,0 @@ -var client = require('../index').createClient() - , client2 = require('../index').createClient() - , assert = require('assert'); - -client.once('subscribe', function (channel, count) { - client.unsubscribe('x'); - client.subscribe('x', function () { - client.quit(); - client2.quit(); - }); - client2.publish('x', 'hi'); -}); - -client.subscribe('x'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js deleted file mode 100644 index 7abdd516..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/reconnect_test.js +++ /dev/null @@ -1,29 +0,0 @@ -var redis = require("../index").createClient(null, null, { -// max_attempts: 4 -}); - -redis.on("error", function (err) { - console.log("Redis says: " + err); -}); - -redis.on("ready", function () { - console.log("Redis ready."); -}); - -redis.on("reconnecting", function (arg) { - console.log("Redis reconnecting: " + JSON.stringify(arg)); -}); -redis.on("connect", function () { - console.log("Redis connected."); -}); - -setInterval(function () { - var now = Date.now(); - redis.set("now", now, function (err, res) { - if (err) { - console.log(now + " Redis reply error: " + err); - } else { - console.log(now + " Redis reply: " + res); - } - }); -}, 100); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/codec.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/codec.js deleted file mode 100644 index 7d764f60..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/codec.js +++ /dev/null @@ -1,16 +0,0 @@ -var json = { - encode: JSON.stringify, - decode: JSON.parse -}; - -var MsgPack = require('node-msgpack'); -msgpack = { - encode: MsgPack.pack, - decode: function(str) { return MsgPack.unpack(new Buffer(str)); } -}; - -bison = require('bison'); - -module.exports = json; -//module.exports = msgpack; -//module.exports = bison; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js deleted file mode 100644 index 0acde7a6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/pub.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -var freemem = require('os').freemem; -var profiler = require('v8-profiler'); -var codec = require('../codec'); - -var sent = 0; - -var pub = require('redis').createClient(null, null, { - //command_queue_high_water: 5, - //command_queue_low_water: 1 -}) -.on('ready', function() { - this.emit('drain'); -}) -.on('drain', function() { - process.nextTick(exec); -}); - -var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; -console.log('Message payload length', payload.length); - -function exec() { - pub.publish('timeline', codec.encode({ foo: payload })); - ++sent; - if (!pub.should_buffer) { - process.nextTick(exec); - } -} - -profiler.takeSnapshot('s_0'); - -exec(); - -setInterval(function() { - profiler.takeSnapshot('s_' + sent); - console.error('sent', sent, 'free', freemem(), 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length); -}, 2000); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run deleted file mode 100755 index bd9ac392..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/run +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -node server.js & -node server.js & -node server.js & -node server.js & -node server.js & -node server.js & -node server.js & -node server.js & -node --debug pub.js diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js deleted file mode 100644 index 035e6b74..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/pubsub/server.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -var freemem = require('os').freemem; -var codec = require('../codec'); - -var id = Math.random(); -var recv = 0; - -var sub = require('redis').createClient() - .on('ready', function() { - this.subscribe('timeline'); - }) - .on('message', function(channel, message) { - var self = this; - if (message) { - message = codec.decode(message); - ++recv; - } - }); - -setInterval(function() { - console.error('id', id, 'received', recv, 'free', freemem()); -}, 2000); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js deleted file mode 100644 index 9caf1d0b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/pub.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -var freemem = require('os').freemem; -//var profiler = require('v8-profiler'); -var codec = require('../codec'); - -var sent = 0; - -var pub = require('redis').createClient(null, null, { - //command_queue_high_water: 5, - //command_queue_low_water: 1 -}) -.on('ready', function() { - this.del('timeline'); - this.emit('drain'); -}) -.on('drain', function() { - process.nextTick(exec); -}); - -var payload = '1'; for (var i = 0; i < 12; ++i) payload += payload; -console.log('Message payload length', payload.length); - -function exec() { - pub.rpush('timeline', codec.encode({ foo: payload })); - ++sent; - if (!pub.should_buffer) { - process.nextTick(exec); - } -} - -//profiler.takeSnapshot('s_0'); - -exec(); - -setInterval(function() { - //var ss = profiler.takeSnapshot('s_' + sent); - //console.error(ss.stringify()); - pub.llen('timeline', function(err, result) { - console.error('sent', sent, 'free', freemem(), - 'cmdqlen', pub.command_queue.length, 'offqlen', pub.offline_queue.length, - 'llen', result - ); - }); -}, 2000); - -/*setTimeout(function() { - process.exit(); -}, 30000);*/ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run deleted file mode 100755 index 8045ae80..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/run +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -node server.js & -#node server.js & -#node server.js & -#node server.js & -node --debug pub.js diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js deleted file mode 100644 index 9cbcdd9e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/rpushblpop/server.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -var freemem = require('os').freemem; -var codec = require('../codec'); - -var id = Math.random(); -var recv = 0; - -var cmd = require('redis').createClient(); -var sub = require('redis').createClient() - .on('ready', function() { - this.emit('timeline'); - }) - .on('timeline', function() { - var self = this; - this.blpop('timeline', 0, function(err, result) { - var message = result[1]; - if (message) { - message = codec.decode(message); - ++recv; - } - self.emit('timeline'); - }); - }); - -setInterval(function() { - cmd.llen('timeline', function(err, result) { - console.error('id', id, 'received', recv, 'free', freemem(), 'llen', result); - }); -}, 2000); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 deleted file mode 100644 index 29d7bf7c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/00 +++ /dev/null @@ -1,13 +0,0 @@ -# size JSON msgpack bison -26602 2151.0170848180414 -25542 ? 2842.589272665782 -24835 ? ? 7280.4538397469805 -6104 6985.234528557929 -5045 ? 7217.461392841478 -4341 ? ? 14261.406335354604 -4180 15864.633685636572 -4143 ? 12954.806235781925 -4141 ? ? 44650.70733912719 -75 114227.07313350472 -40 ? 30162.440062810834 -39 ? ? 119815.66013519121 diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot deleted file mode 100755 index 2563797c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/plot +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -gnuplot >size-rate.jpg << _EOF_ - -set terminal png nocrop enhanced font verdana 12 size 640,480 -set logscale x -set logscale y -set grid -set xlabel 'Serialized object size, octets' -set ylabel 'decode(encode(obj)) rate, 1/sec' -plot '00' using 1:2 title 'json' smooth bezier, '00' using 1:3 title 'msgpack' smooth bezier, '00' using 1:4 title 'bison' smooth bezier - -_EOF_ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/size-rate.png deleted file mode 100644 index c9c2bee6b076040ccf7e6bc337c307732c400463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6672 zcmb_gcT^KkyG}v^p$MTvXrUJokPcD;(wj5^r5FTh(xga{5<-_^Kn-960g+w=L3$7= z3Me3;NLN5QD1!9djsEWUefOOE&pqev*|R%4JM+HJJp0bfK5w$Qnf@snBn=1zI%Q~} zV+jI5upkh47ES@wKo}&)fCpJ~6Kh=(i3HT-<>irYL=Xr|B7#VujSV6i)Y}Wv@|+_P zQ6Mauh$YEjuqhxA8Ve#}NztT{XA%-XSM=;4&<}}3%E`%@nwq+~xkX1u=j7zn*47e< z#Qy&Ng@pyc#g?oregj|ed2#FF)+~v%F@+=5cT{a`kUoI`Zy;CT8ZD3_AeCbK=Q)Lw z(;t8W0u3a-Uj>mNl0ff=NGx|r(dJuNEJ+u1fDKqCgl{dTwl-XUl|Z|*Gnt1)k)DAz za2xkPAE)xB@aE`?*QK#6AS??D77d(OEQW~1kg#O@Xi^?(EE* zk7)_z5_GydHtiN8^X5S(R-w4)Bkdp5^J_1CUpo5a1bugab382tSo&X%)A=P;Q6ujz z*B?A;tK?!F5GE$s)a!%2MlU{I`_--$-PzZWypEhD4py5&9KJMrg+I5Lc^SLWcI9}R zWdlr^8espWd4Wefft|msbaPmlGF0YW#iw=0_AvLb`;J$B3&dZ?QrsQXc{b5p&+BOm z9y`x0mWM_p8F~m#ge-o#9Ndwwq)GV-p^N>wmtNe>ZO&(1#8ow^s=mBov@_cAqdg(^ z+V+%HUtdPSwI}Vr7)(?!?rjD79bUV-eDJV?8rx4%p|y2()kn{wF+8x8&Cegw<)pOl zq;!R%!UK^ab@obya%oq-9Cl?nwcTG_Pd6L;){=^Z@fBS~&`K3CpA3fx1+DU(@1uSy zL7XipFh&t2o=7rv@AKySf;SOq@)ix)kR-ha#rEFCJ+dn5s*h+5=Vg6=c_#~S#1-mJ z75eo|{H}N)YW3QxVXb}f%xOM?7zAAO%;|ideMe=k?}Km#Iw;(X{0BH!BHXaBnM3h#BMu6FMIW-tAIKOgBgw(SM}n4?E;w_Zv$ z#_fMdu}Me*1D1KqKKEEu7pp1=C4jW#y&Q#PHBO)XK%tFAA%C2l=m?sQoRNaVWgdIZ zV>@#-rvtxO!;%6d*)Y5ap#+b@gbM3@^SsIwok#)Q$d@i@|`hJ51JiM*Tx-%2gj2QT%>7ga!ME84X_Q$gDO{D9BR0V za4v|F{3X6($haJq{=lQ~EF;gonx-hpnwk64Wy1G&eDJY_ z<3UQ&J;S$Zj)GL}N+}{&tMVrxMK|-j>mh2=t+^>bgPC8#&Bv&~C*%GLH0nu!+np0# zN!W+$w8ezYliOZ1kfXyl(G4@r2U1_0=>5tpwtm@VA|-Ey#PcFB=Jk+C!t{l0?6ES#=VkTswjEzy|LHYi z+38=X6`Qw9zBj{;WRYZ6D>5z4)2ox{z&5T^5}d)`Di~fI^_|fXOgqP~MtqDHL}08@ zXgo`PhR6!r7X6R`b8uOx*SG6xDR0p9*$I2mA@D&cL~`=$X<#U7+dj&U5q#HjBFN2c zex%03zeRn$L3k^Q^vw5V{os&Zb#l^t`54nT&zvS7K$P!a*jw4;bI*x@55_fsp4%Sp zjLPnl#{E4rxOJu^p47a&yFH`%T6P}*x+@Yqm%6Ywu#xi$-#33ZP0pg>w!2i%Cl$=S zYd@3qkSZ8t{Wccxl?XDmqm|J>pbTipXlX+e{}mp+;6@PmK{X3T^&|ASwV&0T5;^1!4In#b~(~;>rN+g*6+LU9>N|F*jC?#yV7| z1l0|&WKaZjNDW&qNqY^PkZVmQbekR%*8Dn^YjIM_QjKtbbBwyrQx3KlcUHkwcrt6` zd5=^|gqQZ=jwZfD9!x+66G?O)K4+R8y2hpxD<$ z^S?)H#ef=TM<6$|lcf3rv>gJ_ts(AqD6~{jg?>ly85a{Bss>QKt02+tKWKAdU#_&( zEm083r>%X2IK++cQ%E+U?mq(sz6I|H)e+S&H(Z5?HkYH{f#G=CF-QOHE;)W8AK^mR z+smHPM>+r#QV1U}vKM}|`85Gzo2RafCLQqnS*Pi6S2h#Q4;1xOGvQ<^_=od-%o*$m z3u*zxY(#LGT>vv`BMx){jYWwAAEu96hDR}@(iXQb_mIYC7D<5g3sQL#+%t^WP{uzI zdHC0JR%Uy$TQk__#xW>6fXb}-UOnt>(n&1cvUXk7_U70#xMufn$v|RIHDlgahuGX! z=p`DNJKS69`8kyn@4_AQ<_5I<8%k3Wwp{9QYhotY3h$oPn=d|+oOqxi*B5nS@fZo5 zP7~wD;GH*V$fgz*_{La*%Xv7gh~K)fXVu6e?V)OmO48gIn~T4i5{~RCj&=6u!6GWb zo~mAgTe#N}o3ntGzUkGgi+!LQ=WW%|4=qk;tg2j#r%sH=7+erP`&T2iyH{z{dqk&sj%EoLhNqOf zQS%vDhjHb)v5(7pR2G$}-us3nI__voLFQ{O^nQ;;J`nq?+cbSdOB3VB5-b5fmC&X5 zzGau1Q(y3he3DkL;N&iK4&|E+a#?N-D1UdQ*-WWr#7M#$Uz*UeRd(on)(w9WC9XoH z_Ts&X3ucYy(89mV4e{bds|u5EIAtuJDqLkihHo*g^{zj1(Sfr2xDkbPRfgB31CQQ&%`r)>GG|w4o(Z*bX7?OQb=*?IE77vRLTySeTFYfa`z)%XCW~E~ zFU?(gM$kNU74b8P<$!rn&ijO4f|!yYd4X*9hNRwX4u#pHtTMN0*6#vnae|GEWE?DX zXP!x<V z+dCW?i@$aAjzDs?LJ24B*0B>q(Lc7GzDjnu0;`;>d+(K>;ZGxFnM`7R9-XC$>N{-Z zePulO)q%GFbEP$-6=>f`Re&*`_6wCWLICEnQ*r87Yrb24O;@G`cgGdmkJ%aGugQ8a zE{Bgp3@yCb*Ek=heOERbR2YuQN)#8M;trdEpL`S3$~QIDf<#Db`KY8pYu|z=G~UUh zMoH|IcI%*r+PFq|^~GBwNtM!J&kJSnSr~~&ye3M&m408i0jZlzetZWyMOY*TcF?Oy z_`Bz%K-LA+*O@-uZ_&WK3R)`Rnzm2>0$+S_p%;HleV-zqqvKSWukzwZ5L+yMKr-m9 zqrZ81w*YIR1D?F2EPxIC8HNn9l;Jsz*0b>oFNBxsoP)PKiTSY5ak$fEdg%_y0HRSA zv{cJr_A2qVcjp@IM3nMgp@|gao_4f&c>Aof-RbI)C=TYKlTIdgE%VwY@&Z7tE?ER-HPO6s(Y1p7z5Zfjepseg0afb!hOE zy}i^^#=2JK;ZkA7HdB-z+iQjXI|3#I`bcicLraX5N*?lPtmD%{vG((#X!%>Ni8V>m zutfo4__nmzSxYONgo!41db$;@ow)*?!l@Tr^v(0w_=}w!XPld+4eW2OB+3!;KFaaK zq|AOb%*Q9gvfcDVvbbfCC6fXf>>?bgK)e}F8C7)zbO<$Y!g1lK}d!an1Ac@gCMzo3gKAP_XOXWndj#xw`rbTM`Z>ZgV;W< zD|ulFAlkN(agVM_zjp6~NgyEdKXT~D4Y%SK%tICf-h!WB6Mwd~*~^0Xcl=VAz3`x?3QqfwsZf=H;|tn5;&!zdEFU#0;VJdhzn0S=<=mSRCNlJc^>xS-Z}e{xw4Zli%H8Ak-d6DN~!z zm3OR(K6@;Z-`Q!3y}w;7^xM#Lb+iVu?@Sb?nw%S>bJJj{@dk62Gh_!PJ7q--CPILp zg#xXS3Nbt5!Om0^)B`_7zVt-(1GjD=pe> zu!hjGf+Zy7_a?$if#BB#no?~l>=}z>r-1q zOR}S%Nh`&`uOW$6ojwL69cDr~#nfTVRF@nidT2v;MR%fos?uEkZj8-Xftw#a_ta0i zDQ^Ec!&nss9O0u(nnZ8rz{FzJ{dJE#E|#*BDV|r&3-{@ucIv@hV>H%9AH`(63%Sm6 z4rcm1oQMteW$mbd`mh$i%q`?f53(}7?d4#(xQHsX7xov`dhVng4~@-o89n^;FqUuf z>pN4~r6S_qvHw;;`5H7^pZ=Atu)XSqJ!a*&fOGDv8GD{|?$VvR14>jIzWYM8TD|XbppSj~(sVLWLq(L3ppI5X zH3c5s7;9LzZ$tkhl|I-N@hykLIWDa-@?ksZPoTKfk6y&TN%wJ@@30{6JuT!n&lu`9`PC&_ZSQ&6iWREb}x6ArJ0}5!0X_M4=y# zhphwArQ7HCUl?u8Cze1xc)qh0%tka?VPyYE^c*=Q+&vZp`Qcu0r;H&UPu{l97>mb8 z>+hnmPnB&kQn7gP!|TRU24@~y0V^$v5h1hK$-S%%UpYwO1V z?}Ag)yoOD6Y7u!QL~oINU?-`-nNMw%5*;Y{hXCDTLB}LCNK17k|I;bB3?&N-M?|ud zk_|q-dG2neRuS$%w5|Xw zU*JpJGtm9z3z^iM);h6X!);Bc*&SnwlPGC(p;I!W!r`&@Aon+$34f%YK#&r*74DDp zsw@f)v(bTRWAnavMq6X#shP;h4m%k_aW@ck26tNx2VzQ0G!r0iyE#=bMgkIeZ`$nl z^2T6fkvmKekAlKW3wFOJF1!Y&KCsJoCF;gJ6$ZEmk{EA(68$k`djZ7x@;l{J7lD-s z5QFYT-^36Q=xF?If!NuoP@K^3ma@} zyw}*H_tzug&Nw{0S(Yq#Q_emm#|lRrUT`p7;14HlXL_| z5HjWris3iy5Pmc>0TSW!r5Pxhk9*8C{B1iMYBjI_ClJwd7ym+%)nJ8_g>>FC&pR}6 zAgyavkIi}we1DI0*W0) z_N+rsUe~Y2fBN^H$PjvAKz`vFD1!nJ^kslz1+?{lB*DmH`2Q0C;U`S&!CTAI*Tb?hkO6eHBY9*d>TfQjkuh)_X^ zN)Iiz8dT1KP(lTu_$NEe?o=SC%lam;2-m*vA?K(6eV~+khL3gJ1V1-KnD7@}+T5*3 z?M^#RcUg`SsAXK6&?rI-m4_VK=zZ&s`cM<3nK2IE_2IKh@)&E5JY8_ZC7LKUVdScq zeyk(xb;s@e=V(9qxM14hdwou0eIjR(pAQPg5xX;7X}pK(2o!W_rU~}Xtrwg@anRt~ z;a0~|Yd#~x)pK%xh&aYKkWfvU_V}78ucu$YzQX19?Q^^AzpR+<ffXJpQWv*itUYIncYVgkvp-rxs)wS2ThfShdV~R@&V#RxdSD$){~fkoK$T7r-Y62H7q9^z-^>ez6agpH_NnHg;JjpL5#t%`ohD-#3Pd(I*GK zY?DX6>UE{xV!}$z@0gn~#3#=M7#)9ScTy%D{i;0iZA0{C>@enBTPO-2bC|iU6*r(k zwbll7r8K1T;)))o--JiTXwhr$tn4g~+*E$Kt~5}PyB6$WCO3#65rlO^uudtYyd{5sT3vAGc@{Jx{k3Tfrf6neyAQVVJi{G4SqaV%!HL~B|w>&ppSwHn1X-hb#E(w>gH!|nuq=@9gLe?e`> z@s5T6`=HiG8*z1=9cmN>S4K=T^&(a;VXYQNE1tJKq;j~xYIH6@(cy#2?A!P(wt;M_ zM;e;Bz#C~OHs)5l*kFE4F5?EooBk~dR6mkj?+X4`XmOrUeXS8zTs@s^My@l|HPflo H#^C-7XAtZ( diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js deleted file mode 100644 index 8e43cbc0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/stress/speed/speed.js +++ /dev/null @@ -1,84 +0,0 @@ -var msgpack = require('node-msgpack'); -var bison = require('bison'); -var codec = { - JSON: { - encode: JSON.stringify, - decode: JSON.parse - }, - msgpack: { - encode: msgpack.pack, - decode: msgpack.unpack - }, - bison: bison -}; - -var obj, l; - -var s = '0'; -for (var i = 0; i < 12; ++i) s += s; - -obj = { - foo: s, - arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], - rand: [], - a: s, - ccc: s, - b: s + s + s -}; -for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); -forObj(obj); - -obj = { - foo: s, - arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], - rand: [] -}; -for (i = 0; i < 100; ++i) obj.rand.push(Math.random()); -forObj(obj); - -obj = { - foo: s, - arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], - rand: [] -}; -forObj(obj); - -obj = { - arrrrrr: [{a:1,b:false,c:null,d:1.0}, 1111, 2222, 33333333], - rand: [] -}; -forObj(obj); - -function run(obj, codec) { - var t1 = Date.now(); - var n = 10000; - for (var i = 0; i < n; ++i) { - codec.decode(l = codec.encode(obj)); - } - var t2 = Date.now(); - //console.log('DONE', n*1000/(t2-t1), 'codecs/sec, length=', l.length); - return [n*1000/(t2-t1), l.length]; -} - -function series(obj, cname, n) { - var rate = 0; - var len = 0; - for (var i = 0; i < n; ++i) { - var r = run(obj, codec[cname]); - rate += r[0]; - len += r[1]; - } - rate /= n; - len /= n; - console.log(cname + ' ' + rate + ' ' + len); - return [rate, len]; -} - -function forObj(obj) { - var r = { - JSON: series(obj, 'JSON', 20), - msgpack: series(obj, 'msgpack', 20), - bison: series(obj, 'bison', 20) - }; - return r; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js deleted file mode 100644 index ad1f4132..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/benches/sub_quit_test.js +++ /dev/null @@ -1,18 +0,0 @@ -var client = require("redis").createClient(), - client2 = require("redis").createClient(); - -client.subscribe("something"); -client.on("subscribe", function (channel, count) { - console.log("Got sub: " + channel); - client.unsubscribe("something"); -}); - -client.on("unsubscribe", function (channel, count) { - console.log("Got unsub: " + channel + ", quitting"); - client.quit(); -}); - -// exercise unsub before sub -client2.unsubscribe("something"); -client2.subscribe("another thing"); -client2.quit(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/changelog.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/changelog.md deleted file mode 100644 index 4248288c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/changelog.md +++ /dev/null @@ -1,219 +0,0 @@ -Changelog -========= - -## v0.7.2 - April 29, 2012 - -Many contributed fixes. Thank you, contributors. - -* [GH-190] - pub/sub mode fix (Brian Noguchi) -* [GH-165] - parser selection fix (TEHEK) -* numerous documentation and examples updates -* auth errors emit Errors instead of Strings (David Trejo) - -## v0.7.1 - November 15, 2011 - -Fix regression in reconnect logic. - -Very much need automated tests for reconnection and queue logic. - -## v0.7.0 - November 14, 2011 - -Many contributed fixes. Thanks everybody. - -* [GH-127] - properly re-initialize parser on reconnect -* [GH-136] - handle passing undefined as callback (Ian Babrou) -* [GH-139] - properly handle exceptions thrown in pub/sub event handlers (Felix Geisendörfer) -* [GH-141] - detect closing state on stream error (Felix Geisendörfer) -* [GH-142] - re-select database on reconnection (Jean-Hugues Pinson) -* [GH-146] - add sort example (Maksim Lin) - -Some more goodies: - -* Fix bugs with node 0.6 -* Performance improvements -* New version of `multi_bench.js` that tests more realistic scenarios -* [GH-140] - support optional callback for subscribe commands -* Properly flush and error out command queue when connection fails -* Initial work on reconnection thresholds - -## v0.6.7 - July 30, 2011 - -(accidentally skipped v0.6.6) - -Fix and test for [GH-123] - -Passing an Array as as the last argument should expand as users -expect. The old behavior was to coerce the arguments into Strings, -which did surprising things with Arrays. - -## v0.6.5 - July 6, 2011 - -Contributed changes: - -* Support SlowBuffers (Umair Siddique) -* Add Multi to exports (Louis-Philippe Perron) -* Fix for drain event calculation (Vladimir Dronnikov) - -Thanks! - -## v0.6.4 - June 30, 2011 - -Fix bug with optional callbacks for hmset. - -## v0.6.2 - June 30, 2011 - -Bugs fixed: - -* authentication retry while server is loading db (danmaz74) [GH-101] -* command arguments processing issue with arrays - -New features: - -* Auto update of new commands from redis.io (Dave Hoover) -* Performance improvements and backpressure controls. -* Commands now return the true/false value from the underlying socket write(s). -* Implement command_queue high water and low water for more better control of queueing. - -See `examples/backpressure_drain.js` for more information. - -## v0.6.1 - June 29, 2011 - -Add support and tests for Redis scripting through EXEC command. - -Bug fix for monitor mode. (forddg) - -Auto update of new commands from redis.io (Dave Hoover) - -## v0.6.0 - April 21, 2011 - -Lots of bugs fixed. - -* connection error did not properly trigger reconnection logic [GH-85] -* client.hmget(key, [val1, val2]) was not expanding properly [GH-66] -* client.quit() while in pub/sub mode would throw an error [GH-87] -* client.multi(['hmset', 'key', {foo: 'bar'}]) fails [GH-92] -* unsubscribe before subscribe would make things very confused [GH-88] -* Add BRPOPLPUSH [GH-79] - -## v0.5.11 - April 7, 2011 - -Added DISCARD - -I originally didn't think DISCARD would do anything here because of the clever MULTI interface, but somebody -pointed out to me that DISCARD can be used to flush the WATCH set. - -## v0.5.10 - April 6, 2011 - -Added HVALS - -## v0.5.9 - March 14, 2011 - -Fix bug with empty Array arguments - Andy Ray - -## v0.5.8 - March 14, 2011 - -Add `MONITOR` command and special monitor command reply parsing. - -## v0.5.7 - February 27, 2011 - -Add magical auth command. - -Authentication is now remembered by the client and will be automatically sent to the server -on every connection, including any reconnections. - -## v0.5.6 - February 22, 2011 - -Fix bug in ready check with `return_buffers` set to `true`. - -Thanks to Dean Mao and Austin Chau. - -## v0.5.5 - February 16, 2011 - -Add probe for server readiness. - -When a Redis server starts up, it might take a while to load the dataset into memory. -During this time, the server will accept connections, but will return errors for all non-INFO -commands. Now node_redis will send an INFO command whenever it connects to a server. -If the info command indicates that the server is not ready, the client will keep trying until -the server is ready. Once it is ready, the client will emit a "ready" event as well as the -"connect" event. The client will queue up all commands sent before the server is ready, just -like it did before. When the server is ready, all offline/non-ready commands will be replayed. -This should be backward compatible with previous versions. - -To disable this ready check behavior, set `options.no_ready_check` when creating the client. - -As a side effect of this change, the key/val params from the info command are available as -`client.server_options`. Further, the version string is decomposed into individual elements -in `client.server_options.versions`. - -## v0.5.4 - February 11, 2011 - -Fix excess memory consumption from Queue backing store. - -Thanks to Gustaf Sjöberg. - -## v0.5.3 - February 5, 2011 - -Fix multi/exec error reply callback logic. - -Thanks to Stella Laurenzo. - -## v0.5.2 - January 18, 2011 - -Fix bug where unhandled error replies confuse the parser. - -## v0.5.1 - January 18, 2011 - -Fix bug where subscribe commands would not handle redis-server startup error properly. - -## v0.5.0 - December 29, 2010 - -Some bug fixes: - -* An important bug fix in reconnection logic. Previously, reply callbacks would be invoked twice after - a reconnect. -* Changed error callback argument to be an actual Error object. - -New feature: - -* Add friendly syntax for HMSET using an object. - -## v0.4.1 - December 8, 2010 - -Remove warning about missing hiredis. You probably do want it though. - -## v0.4.0 - December 5, 2010 - -Support for multiple response parsers and hiredis C library from Pieter Noordhuis. -Return Strings instead of Buffers by default. -Empty nested mb reply bug fix. - -## v0.3.9 - November 30, 2010 - -Fix parser bug on failed EXECs. - -## v0.3.8 - November 10, 2010 - -Fix for null MULTI response when WATCH condition fails. - -## v0.3.7 - November 9, 2010 - -Add "drain" and "idle" events. - -## v0.3.6 - November 3, 2010 - -Add all known Redis commands from Redis master, even ones that are coming in 2.2 and beyond. - -Send a friendlier "error" event message on stream errors like connection refused / reset. - -## v0.3.5 - October 21, 2010 - -A few bug fixes. - -* Fixed bug with `nil` multi-bulk reply lengths that showed up with `BLPOP` timeouts. -* Only emit `end` once when connection goes away. -* Fixed bug in `test.js` where driver finished before all tests completed. - -## unversioned wasteland - -See the git history for what happened before. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js deleted file mode 100755 index 99fdf4df..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/diff_multi_bench_output.js +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env node - -var colors = require('colors'), - fs = require('fs'), - _ = require('underscore'), - metrics = require('metrics'), - - // `node diff_multi_bench_output.js before.txt after.txt` - before = process.argv[2], - after = process.argv[3]; - -if (!before || !after) { - console.log('Please supply two file arguments:'); - var n = __filename; - n = n.substring(n.lastIndexOf('/', n.length)); - console.log(' ./' + n + ' multiBenchBefore.txt multiBenchAfter.txt'); - console.log('To generate multiBenchBefore.txt, run'); - console.log(' node multi_bench.js > multiBenchBefore.txt'); - console.log('Thank you for benchmarking responsibly.'); - return; -} - -var before_lines = fs.readFileSync(before, 'utf8').split('\n'), - after_lines = fs.readFileSync(after, 'utf8').split('\n'); - -console.log('Comparing before,', before.green, '(', before_lines.length, - 'lines)', 'to after,', after.green, '(', after_lines.length, 'lines)'); - -var total_ops = new metrics.Histogram.createUniformHistogram(); - -before_lines.forEach(function(b, i) { - var a = after_lines[i]; - if (!a || !b || !b.trim() || !a.trim()) { - // console.log('#ignored#', '>'+a+'<', '>'+b+'<'); - return; - } - - b_words = b.split(' ').filter(is_whitespace); - a_words = a.split(' ').filter(is_whitespace); - - var ops = - [b_words, a_words] - .map(function(words) { - // console.log(words); - return parseInt10(words.slice(-2, -1)); - }).filter(function(num) { - var isNaN = !num && num !== 0; - return !isNaN; - }); - if (ops.length != 2) return - - var delta = ops[1] - ops[0]; - - total_ops.update(delta); - - delta = humanize_diff(delta); - console.log( - // name of test - command_name(a_words) == command_name(b_words) - ? command_name(a_words) + ':' - : '404:', - // results of test - ops.join(' -> '), 'ops/sec (∆', delta, ')'); -}); - -console.log('Mean difference in ops/sec:', humanize_diff(total_ops.mean())); - -function is_whitespace(s) { - return !!s.trim(); -} - -function parseInt10(s) { - return parseInt(s, 10); -} - -// green if greater than 0, red otherwise -function humanize_diff(num) { - if (num > 0) { - return ('+' + num).green; - } - return ('' + num).red; -} - -function command_name(words) { - var line = words.join(' '); - return line.substr(0, line.indexOf(',')); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/auth.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/auth.js deleted file mode 100644 index 6c0a563c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/auth.js +++ /dev/null @@ -1,5 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(); - -// This command is magical. Client stashes the password and will issue on every connect. -client.auth("somepass"); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js deleted file mode 100644 index 3488ef4d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/backpressure_drain.js +++ /dev/null @@ -1,33 +0,0 @@ -var redis = require("../index"), - client = redis.createClient(null, null, { - command_queue_high_water: 5, - command_queue_low_water: 1 - }), - remaining_ops = 100000, paused = false; - -function op() { - if (remaining_ops <= 0) { - console.error("Finished."); - process.exit(0); - } - - remaining_ops--; - if (client.hset("test hash", "val " + remaining_ops, remaining_ops) === false) { - console.log("Pausing at " + remaining_ops); - paused = true; - } else { - process.nextTick(op); - } -} - -client.on("drain", function () { - if (paused) { - console.log("Resuming at " + remaining_ops); - paused = false; - process.nextTick(op); - } else { - console.log("Got drain while not paused at " + remaining_ops); - } -}); - -op(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/eval.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/eval.js deleted file mode 100644 index c1fbf8a5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/eval.js +++ /dev/null @@ -1,9 +0,0 @@ -var redis = require("./index"), - client = redis.createClient(); - -redis.debug_mode = true; - -client.eval("return 100.5", 0, function (err, res) { - console.dir(err); - console.dir(res); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/extend.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/extend.js deleted file mode 100644 index 488b8c2d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/extend.js +++ /dev/null @@ -1,24 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(); - -// Extend the RedisClient prototype to add a custom method -// This one converts the results from "INFO" into a JavaScript Object - -redis.RedisClient.prototype.parse_info = function (callback) { - this.info(function (err, res) { - var lines = res.toString().split("\r\n").sort(); - var obj = {}; - lines.forEach(function (line) { - var parts = line.split(':'); - if (parts[1]) { - obj[parts[0]] = parts[1]; - } - }); - callback(obj) - }); -}; - -client.parse_info(function (info) { - console.dir(info); - client.quit(); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/file.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/file.js deleted file mode 100644 index 4d2b5d1c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/file.js +++ /dev/null @@ -1,32 +0,0 @@ -// Read a file from disk, store it in Redis, then read it back from Redis. - -var redis = require("redis"), - client = redis.createClient(), - fs = require("fs"), - filename = "kids_in_cart.jpg"; - -// Get the file I use for testing like this: -// curl http://ranney.com/kids_in_cart.jpg -o kids_in_cart.jpg -// or just use your own file. - -// Read a file from fs, store it in Redis, get it back from Redis, write it back to fs. -fs.readFile(filename, function (err, data) { - if (err) throw err - console.log("Read " + data.length + " bytes from filesystem."); - - client.set(filename, data, redis.print); // set entire file - client.get(filename, function (err, reply) { // get entire file - if (err) { - console.log("Get error: " + err); - } else { - fs.writeFile("duplicate_" + filename, reply, function (err) { - if (err) { - console.log("Error on write: " + err) - } else { - console.log("File written."); - } - client.end(); - }); - } - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/mget.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/mget.js deleted file mode 100644 index 936740d3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/mget.js +++ /dev/null @@ -1,5 +0,0 @@ -var client = require("redis").createClient(); - -client.mget(["sessions started", "sessions started", "foo"], function (err, res) { - console.dir(res); -}); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/monitor.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/monitor.js deleted file mode 100644 index 2cb6a4e1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/monitor.js +++ /dev/null @@ -1,10 +0,0 @@ -var client = require("../index").createClient(), - util = require("util"); - -client.monitor(function (err, res) { - console.log("Entering monitoring mode."); -}); - -client.on("monitor", function (time, args) { - console.log(time + ": " + util.inspect(args)); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi.js deleted file mode 100644 index 35c08e18..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi.js +++ /dev/null @@ -1,46 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(), set_size = 20; - -client.sadd("bigset", "a member"); -client.sadd("bigset", "another member"); - -while (set_size > 0) { - client.sadd("bigset", "member " + set_size); - set_size -= 1; -} - -// multi chain with an individual callback -client.multi() - .scard("bigset") - .smembers("bigset") - .keys("*", function (err, replies) { - client.mget(replies, redis.print); - }) - .dbsize() - .exec(function (err, replies) { - console.log("MULTI got " + replies.length + " replies"); - replies.forEach(function (reply, index) { - console.log("Reply " + index + ": " + reply.toString()); - }); - }); - -client.mset("incr thing", 100, "incr other thing", 1, redis.print); - -// start a separate multi command queue -var multi = client.multi(); -multi.incr("incr thing", redis.print); -multi.incr("incr other thing", redis.print); - -// runs immediately -client.get("incr thing", redis.print); // 100 - -// drains multi queue and runs atomically -multi.exec(function (err, replies) { - console.log(replies); // 101, 2 -}); - -// you can re-run the same transaction if you like -multi.exec(function (err, replies) { - console.log(replies); // 102, 3 - client.quit(); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi2.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi2.js deleted file mode 100644 index 8be4d731..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/multi2.js +++ /dev/null @@ -1,29 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(), multi; - -// start a separate command queue for multi -multi = client.multi(); -multi.incr("incr thing", redis.print); -multi.incr("incr other thing", redis.print); - -// runs immediately -client.mset("incr thing", 100, "incr other thing", 1, redis.print); - -// drains multi queue and runs atomically -multi.exec(function (err, replies) { - console.log(replies); // 101, 2 -}); - -// you can re-run the same transaction if you like -multi.exec(function (err, replies) { - console.log(replies); // 102, 3 - client.quit(); -}); - -client.multi([ - ["mget", "multifoo", "multibar", redis.print], - ["incr", "multifoo"], - ["incr", "multibar"] -]).exec(function (err, replies) { - console.log(replies.toString()); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/psubscribe.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/psubscribe.js deleted file mode 100644 index c57117b8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/psubscribe.js +++ /dev/null @@ -1,33 +0,0 @@ -var redis = require("redis"), - client1 = redis.createClient(), - client2 = redis.createClient(), - client3 = redis.createClient(), - client4 = redis.createClient(), - msg_count = 0; - -redis.debug_mode = false; - -client1.on("psubscribe", function (pattern, count) { - console.log("client1 psubscribed to " + pattern + ", " + count + " total subscriptions"); - client2.publish("channeltwo", "Me!"); - client3.publish("channelthree", "Me too!"); - client4.publish("channelfour", "And me too!"); -}); - -client1.on("punsubscribe", function (pattern, count) { - console.log("client1 punsubscribed from " + pattern + ", " + count + " total subscriptions"); - client4.end(); - client3.end(); - client2.end(); - client1.end(); -}); - -client1.on("pmessage", function (pattern, channel, message) { - console.log("("+ pattern +")" + " client1 received message on " + channel + ": " + message); - msg_count += 1; - if (msg_count === 3) { - client1.punsubscribe(); - } -}); - -client1.psubscribe("channel*"); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/pub_sub.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/pub_sub.js deleted file mode 100644 index aa508d6c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/pub_sub.js +++ /dev/null @@ -1,41 +0,0 @@ -var redis = require("redis"), - client1 = redis.createClient(), msg_count = 0, - client2 = redis.createClient(); - -redis.debug_mode = false; - -// Most clients probably don't do much on "subscribe". This example uses it to coordinate things within one program. -client1.on("subscribe", function (channel, count) { - console.log("client1 subscribed to " + channel + ", " + count + " total subscriptions"); - if (count === 2) { - client2.publish("a nice channel", "I am sending a message."); - client2.publish("another one", "I am sending a second message."); - client2.publish("a nice channel", "I am sending my last message."); - } -}); - -client1.on("unsubscribe", function (channel, count) { - console.log("client1 unsubscribed from " + channel + ", " + count + " total subscriptions"); - if (count === 0) { - client2.end(); - client1.end(); - } -}); - -client1.on("message", function (channel, message) { - console.log("client1 channel " + channel + ": " + message); - msg_count += 1; - if (msg_count === 3) { - client1.unsubscribe(); - } -}); - -client1.on("ready", function () { - // if you need auth, do it here - client1.incr("did a thing"); - client1.subscribe("a nice channel", "another one"); -}); - -client2.on("ready", function () { - // if you need auth, do it here -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/simple.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/simple.js deleted file mode 100644 index f1f2e320..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/simple.js +++ /dev/null @@ -1,24 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(); - -client.on("error", function (err) { - console.log("error event - " + client.host + ":" + client.port + " - " + err); -}); - -client.set("string key", "string val", redis.print); -client.hset("hash key", "hashtest 1", "some value", redis.print); -client.hset(["hash key", "hashtest 2", "some other value"], redis.print); -client.hkeys("hash key", function (err, replies) { - if (err) { - return console.error("error response - " + err); - } - - console.log(replies.length + " replies:"); - replies.forEach(function (reply, i) { - console.log(" " + i + ": " + reply); - }); -}); - -client.quit(function (err, res) { - console.log("Exiting from quit command."); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/sort.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/sort.js deleted file mode 100644 index e7c6249e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/sort.js +++ /dev/null @@ -1,17 +0,0 @@ -var redis = require("redis"), - client = redis.createClient(); - -client.sadd("mylist", 1); -client.sadd("mylist", 2); -client.sadd("mylist", 3); - -client.set("weight_1", 5); -client.set("weight_2", 500); -client.set("weight_3", 1); - -client.set("object_1", "foo"); -client.set("object_2", "bar"); -client.set("object_3", "qux"); - -client.sort("mylist", "by", "weight_*", "get", "object_*", redis.print); -// Prints Reply: qux,foo,bar \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subqueries.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subqueries.js deleted file mode 100644 index 560db240..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subqueries.js +++ /dev/null @@ -1,15 +0,0 @@ -// Sending commands in response to other commands. -// This example runs "type" against every key in the database -// -var client = require("redis").createClient(); - -client.keys("*", function (err, keys) { - keys.forEach(function (key, pos) { - client.type(key, function (err, keytype) { - console.log(key + " is " + keytype); - if (pos === (keys.length - 1)) { - client.quit(); - } - }); - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subquery.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subquery.js deleted file mode 100644 index 861657e1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/subquery.js +++ /dev/null @@ -1,19 +0,0 @@ -var client = require("redis").createClient(); - -function print_results(obj) { - console.dir(obj); -} - -// build a map of all keys and their types -client.keys("*", function (err, all_keys) { - var key_types = {}; - - all_keys.forEach(function (key, pos) { // use second arg of forEach to get pos - client.type(key, function (err, type) { - key_types[key] = type; - if (pos === all_keys.length - 1) { // callbacks all run in order - print_results(key_types); - } - }); - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/unix_socket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/unix_socket.js deleted file mode 100644 index 4a5e0bb0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/unix_socket.js +++ /dev/null @@ -1,29 +0,0 @@ -var redis = require("redis"), - client = redis.createClient("/tmp/redis.sock"), - profiler = require("v8-profiler"); - -client.on("connect", function () { - console.log("Got Unix socket connection.") -}); - -client.on("error", function (err) { - console.log(err.message); -}); - -client.set("space chars", "space value"); - -setInterval(function () { - client.get("space chars"); -}, 100); - -function done() { - client.info(function (err, reply) { - console.log(reply.toString()); - client.quit(); - }); -} - -setTimeout(function () { - console.log("Taking snapshot."); - var snap = profiler.takeSnapshot(); -}, 5000); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/web_server.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/web_server.js deleted file mode 100644 index 9fd85923..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/examples/web_server.js +++ /dev/null @@ -1,31 +0,0 @@ -// A simple web server that generates dyanmic content based on responses from Redis - -var http = require("http"), server, - redis_client = require("redis").createClient(); - -server = http.createServer(function (request, response) { - response.writeHead(200, { - "Content-Type": "text/plain" - }); - - var redis_info, total_requests; - - redis_client.info(function (err, reply) { - redis_info = reply; // stash response in outer scope - }); - redis_client.incr("requests", function (err, reply) { - total_requests = reply; // stash response in outer scope - }); - redis_client.hincrby("ip", request.connection.remoteAddress, 1); - redis_client.hgetall("ip", function (err, reply) { - // This is the last reply, so all of the previous replies must have completed already - response.write("This page was generated after talking to redis.\n\n" + - "Redis info:\n" + redis_info + "\n" + - "Total requests: " + total_requests + "\n\n" + - "IP count: \n"); - Object.keys(reply).forEach(function (ip) { - response.write(" " + ip + ": " + reply[ip] + "\n"); - }); - response.end(); - }); -}).listen(80); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/generate_commands.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/generate_commands.js deleted file mode 100644 index e6949d3a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/generate_commands.js +++ /dev/null @@ -1,39 +0,0 @@ -var http = require("http"), - fs = require("fs"); - -function prettyCurrentTime() { - var date = new Date(); - return date.toLocaleString(); -} - -function write_file(commands, path) { - var file_contents, out_commands; - - console.log("Writing " + Object.keys(commands).length + " commands to " + path); - - file_contents = "// This file was generated by ./generate_commands.js on " + prettyCurrentTime() + "\n"; - - out_commands = Object.keys(commands).map(function (key) { - return key.toLowerCase(); - }); - - file_contents += "module.exports = " + JSON.stringify(out_commands, null, " ") + ";\n"; - - fs.writeFile(path, file_contents); -} - -http.get({host: "redis.io", path: "/commands.json"}, function (res) { - var body = ""; - - console.log("Response from redis.io/commands.json: " + res.statusCode); - - res.on('data', function (chunk) { - body += chunk; - }); - - res.on('end', function () { - write_file(JSON.parse(body), "lib/commands.js"); - }); -}).on('error', function (e) { - console.log("Error fetching command list from redis.io: " + e.message); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/index.js deleted file mode 100644 index 61cb4e91..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/index.js +++ /dev/null @@ -1,1113 +0,0 @@ -/*global Buffer require exports console setTimeout */ - -var net = require("net"), - util = require("./lib/util"), - Queue = require("./lib/queue"), - to_array = require("./lib/to_array"), - events = require("events"), - crypto = require("crypto"), - parsers = [], commands, - connection_id = 0, - default_port = 6379, - default_host = "127.0.0.1"; - -// can set this to true to enable for all connections -exports.debug_mode = false; - -// hiredis might not be installed -try { - require("./lib/parser/hiredis"); - parsers.push(require("./lib/parser/hiredis")); -} catch (err) { - if (exports.debug_mode) { - console.warn("hiredis parser not installed."); - } -} - -parsers.push(require("./lib/parser/javascript")); - -function RedisClient(stream, options) { - this.stream = stream; - this.options = options = options || {}; - - this.connection_id = ++connection_id; - this.connected = false; - this.ready = false; - this.connections = 0; - if (this.options.socket_nodelay === undefined) { - this.options.socket_nodelay = true; - } - this.should_buffer = false; - this.command_queue_high_water = this.options.command_queue_high_water || 1000; - this.command_queue_low_water = this.options.command_queue_low_water || 0; - this.max_attempts = null; - if (options.max_attempts && !isNaN(options.max_attempts) && options.max_attempts > 0) { - this.max_attempts = +options.max_attempts; - } - this.command_queue = new Queue(); // holds sent commands to de-pipeline them - this.offline_queue = new Queue(); // holds commands issued but not able to be sent - this.commands_sent = 0; - this.connect_timeout = false; - if (options.connect_timeout && !isNaN(options.connect_timeout) && options.connect_timeout > 0) { - this.connect_timeout = +options.connect_timeout; - } - - this.enable_offline_queue = true; - if (typeof this.options.enable_offline_queue === "boolean") { - this.enable_offline_queue = this.options.enable_offline_queue; - } - - this.initialize_retry_vars(); - this.pub_sub_mode = false; - this.subscription_set = {}; - this.monitoring = false; - this.closing = false; - this.server_info = {}; - this.auth_pass = null; - this.parser_module = null; - this.selected_db = null; // save the selected db here, used when reconnecting - - this.old_state = null; - - var self = this; - - this.stream.on("connect", function () { - self.on_connect(); - }); - - this.stream.on("data", function (buffer_from_socket) { - self.on_data(buffer_from_socket); - }); - - this.stream.on("error", function (msg) { - self.on_error(msg.message); - }); - - this.stream.on("close", function () { - self.connection_gone("close"); - }); - - this.stream.on("end", function () { - self.connection_gone("end"); - }); - - this.stream.on("drain", function () { - self.should_buffer = false; - self.emit("drain"); - }); - - events.EventEmitter.call(this); -} -util.inherits(RedisClient, events.EventEmitter); -exports.RedisClient = RedisClient; - -RedisClient.prototype.initialize_retry_vars = function () { - this.retry_timer = null; - this.retry_totaltime = 0; - this.retry_delay = 150; - this.retry_backoff = 1.7; - this.attempts = 1; -}; - -// flush offline_queue and command_queue, erroring any items with a callback first -RedisClient.prototype.flush_and_error = function (message) { - var command_obj; - while (this.offline_queue.length > 0) { - command_obj = this.offline_queue.shift(); - if (typeof command_obj.callback === "function") { - command_obj.callback(message); - } - } - this.offline_queue = new Queue(); - - while (this.command_queue.length > 0) { - command_obj = this.command_queue.shift(); - if (typeof command_obj.callback === "function") { - command_obj.callback(message); - } - } - this.command_queue = new Queue(); -}; - -RedisClient.prototype.on_error = function (msg) { - var message = "Redis connection to " + this.host + ":" + this.port + " failed - " + msg, - self = this, command_obj; - - if (this.closing) { - return; - } - - if (exports.debug_mode) { - console.warn(message); - } - - this.flush_and_error(message); - - this.connected = false; - this.ready = false; - - this.emit("error", new Error(message)); - // "error" events get turned into exceptions if they aren't listened for. If the user handled this error - // then we should try to reconnect. - this.connection_gone("error"); -}; - -RedisClient.prototype.do_auth = function () { - var self = this; - - if (exports.debug_mode) { - console.log("Sending auth to " + self.host + ":" + self.port + " id " + self.connection_id); - } - self.send_anyway = true; - self.send_command("auth", [this.auth_pass], function (err, res) { - if (err) { - if (err.toString().match("LOADING")) { - // if redis is still loading the db, it will not authenticate and everything else will fail - console.log("Redis still loading, trying to authenticate later"); - setTimeout(function () { - self.do_auth(); - }, 2000); // TODO - magic number alert - return; - } else { - return self.emit("error", new Error("Auth error: " + err.message)); - } - } - if (res.toString() !== "OK") { - return self.emit("error", new Error("Auth failed: " + res.toString())); - } - if (exports.debug_mode) { - console.log("Auth succeeded " + self.host + ":" + self.port + " id " + self.connection_id); - } - if (self.auth_callback) { - self.auth_callback(err, res); - self.auth_callback = null; - } - - // now we are really connected - self.emit("connect"); - if (self.options.no_ready_check) { - self.on_ready(); - } else { - self.ready_check(); - } - }); - self.send_anyway = false; -}; - -RedisClient.prototype.on_connect = function () { - if (exports.debug_mode) { - console.log("Stream connected " + this.host + ":" + this.port + " id " + this.connection_id); - } - var self = this; - - this.connected = true; - this.ready = false; - this.attempts = 0; - this.connections += 1; - this.command_queue = new Queue(); - this.emitted_end = false; - this.initialize_retry_vars(); - if (this.options.socket_nodelay) { - this.stream.setNoDelay(); - } - this.stream.setTimeout(0); - - this.init_parser(); - - if (this.auth_pass) { - this.do_auth(); - } else { - this.emit("connect"); - - if (this.options.no_ready_check) { - this.on_ready(); - } else { - this.ready_check(); - } - } -}; - -RedisClient.prototype.init_parser = function () { - var self = this; - - if (this.options.parser) { - if (! parsers.some(function (parser) { - if (parser.name === self.options.parser) { - self.parser_module = parser; - if (exports.debug_mode) { - console.log("Using parser module: " + self.parser_module.name); - } - return true; - } - })) { - throw new Error("Couldn't find named parser " + self.options.parser + " on this system"); - } - } else { - if (exports.debug_mode) { - console.log("Using default parser module: " + parsers[0].name); - } - this.parser_module = parsers[0]; - } - - this.parser_module.debug_mode = exports.debug_mode; - - // return_buffers sends back Buffers from parser to callback. detect_buffers sends back Buffers from parser, but - // converts to Strings if the input arguments are not Buffers. - this.reply_parser = new this.parser_module.Parser({ - return_buffers: self.options.return_buffers || self.options.detect_buffers || false - }); - - // "reply error" is an error sent back by Redis - this.reply_parser.on("reply error", function (reply) { - self.return_error(new Error(reply)); - }); - this.reply_parser.on("reply", function (reply) { - self.return_reply(reply); - }); - // "error" is bad. Somehow the parser got confused. It'll try to reset and continue. - this.reply_parser.on("error", function (err) { - self.emit("error", new Error("Redis reply parser error: " + err.stack)); - }); -}; - -RedisClient.prototype.on_ready = function () { - var self = this; - - this.ready = true; - - if (this.old_state !== null) { - this.monitoring = this.old_state.monitoring; - this.pub_sub_mode = this.old_state.pub_sub_mode; - this.selected_db = this.old_state.selected_db; - this.old_state = null; - } - - // magically restore any modal commands from a previous connection - if (this.selected_db !== null) { - this.send_command('select', [this.selected_db]); - } - if (this.pub_sub_mode === true) { - // only emit "ready" when all subscriptions were made again - var callback_count = 0; - var callback = function() { - callback_count--; - if (callback_count == 0) { - self.emit("ready"); - } - } - Object.keys(this.subscription_set).forEach(function (key) { - var parts = key.split(" "); - if (exports.debug_mode) { - console.warn("sending pub/sub on_ready " + parts[0] + ", " + parts[1]); - } - callback_count++; - self.send_command(parts[0] + "scribe", [parts[1]], callback); - }); - return; - } else if (this.monitoring) { - this.send_command("monitor"); - } else { - this.send_offline_queue(); - } - this.emit("ready"); -}; - -RedisClient.prototype.on_info_cmd = function (err, res) { - var self = this, obj = {}, lines, retry_time; - - if (err) { - return self.emit("error", new Error("Ready check failed: " + err.message)); - } - - lines = res.toString().split("\r\n"); - - lines.forEach(function (line) { - var parts = line.split(':'); - if (parts[1]) { - obj[parts[0]] = parts[1]; - } - }); - - obj.versions = []; - obj.redis_version.split('.').forEach(function (num) { - obj.versions.push(+num); - }); - - // expose info key/vals to users - this.server_info = obj; - - if (!obj.loading || (obj.loading && obj.loading === "0")) { - if (exports.debug_mode) { - console.log("Redis server ready."); - } - this.on_ready(); - } else { - retry_time = obj.loading_eta_seconds * 1000; - if (retry_time > 1000) { - retry_time = 1000; - } - if (exports.debug_mode) { - console.log("Redis server still loading, trying again in " + retry_time); - } - setTimeout(function () { - self.ready_check(); - }, retry_time); - } -}; - -RedisClient.prototype.ready_check = function () { - var self = this; - - if (exports.debug_mode) { - console.log("checking server ready state..."); - } - - this.send_anyway = true; // secret flag to send_command to send something even if not "ready" - this.info(function (err, res) { - self.on_info_cmd(err, res); - }); - this.send_anyway = false; -}; - -RedisClient.prototype.send_offline_queue = function () { - var command_obj, buffered_writes = 0; - - while (this.offline_queue.length > 0) { - command_obj = this.offline_queue.shift(); - if (exports.debug_mode) { - console.log("Sending offline command: " + command_obj.command); - } - buffered_writes += !this.send_command(command_obj.command, command_obj.args, command_obj.callback); - } - this.offline_queue = new Queue(); - // Even though items were shifted off, Queue backing store still uses memory until next add, so just get a new Queue - - if (!buffered_writes) { - this.should_buffer = false; - this.emit("drain"); - } -}; - -RedisClient.prototype.connection_gone = function (why) { - var self = this, message; - - // If a retry is already in progress, just let that happen - if (this.retry_timer) { - return; - } - - if (exports.debug_mode) { - console.warn("Redis connection is gone from " + why + " event."); - } - this.connected = false; - this.ready = false; - - if (this.old_state === null) { - var state = { - monitoring: this.monitoring, - pub_sub_mode: this.pub_sub_mode, - selected_db: this.selected_db - }; - this.old_state = state; - this.monitoring = false; - this.pub_sub_mode = false; - this.selected_db = null; - } - - // since we are collapsing end and close, users don't expect to be called twice - if (! this.emitted_end) { - this.emit("end"); - this.emitted_end = true; - } - - this.flush_and_error("Redis connection gone from " + why + " event."); - - // If this is a requested shutdown, then don't retry - if (this.closing) { - this.retry_timer = null; - if (exports.debug_mode) { - console.warn("connection ended from quit command, not retrying."); - } - return; - } - - this.retry_delay = Math.floor(this.retry_delay * this.retry_backoff); - - if (exports.debug_mode) { - console.log("Retry connection in " + this.current_retry_delay + " ms"); - } - - if (this.max_attempts && this.attempts >= this.max_attempts) { - this.retry_timer = null; - // TODO - some people need a "Redis is Broken mode" for future commands that errors immediately, and others - // want the program to exit. Right now, we just log, which doesn't really help in either case. - console.error("node_redis: Couldn't get Redis connection after " + this.max_attempts + " attempts."); - return; - } - - this.attempts += 1; - this.emit("reconnecting", { - delay: self.retry_delay, - attempt: self.attempts - }); - this.retry_timer = setTimeout(function () { - if (exports.debug_mode) { - console.log("Retrying connection..."); - } - - self.retry_totaltime += self.current_retry_delay; - - if (self.connect_timeout && self.retry_totaltime >= self.connect_timeout) { - self.retry_timer = null; - // TODO - engage Redis is Broken mode for future commands, or whatever - console.error("node_redis: Couldn't get Redis connection after " + self.retry_totaltime + "ms."); - return; - } - - self.stream.connect(self.port, self.host); - self.retry_timer = null; - }, this.retry_delay); -}; - -RedisClient.prototype.on_data = function (data) { - if (exports.debug_mode) { - console.log("net read " + this.host + ":" + this.port + " id " + this.connection_id + ": " + data.toString()); - } - - try { - this.reply_parser.execute(data); - } catch (err) { - // This is an unexpected parser problem, an exception that came from the parser code itself. - // Parser should emit "error" events if it notices things are out of whack. - // Callbacks that throw exceptions will land in return_reply(), below. - // TODO - it might be nice to have a different "error" event for different types of errors - this.emit("error", err); - } -}; - -RedisClient.prototype.return_error = function (err) { - var command_obj = this.command_queue.shift(), queue_len = this.command_queue.getLength(); - - if (this.pub_sub_mode === false && queue_len === 0) { - this.emit("idle"); - this.command_queue = new Queue(); - } - if (this.should_buffer && queue_len <= this.command_queue_low_water) { - this.emit("drain"); - this.should_buffer = false; - } - - if (command_obj && typeof command_obj.callback === "function") { - try { - command_obj.callback(err); - } catch (callback_err) { - // if a callback throws an exception, re-throw it on a new stack so the parser can keep going - process.nextTick(function () { - throw callback_err; - }); - } - } else { - console.log("node_redis: no callback to send error: " + err.message); - // this will probably not make it anywhere useful, but we might as well throw - process.nextTick(function () { - throw err; - }); - } -}; - -// if a callback throws an exception, re-throw it on a new stack so the parser can keep going. -// put this try/catch in its own function because V8 doesn't optimize this well yet. -function try_callback(callback, reply) { - try { - callback(null, reply); - } catch (err) { - process.nextTick(function () { - throw err; - }); - } -} - -// hgetall converts its replies to an Object. If the reply is empty, null is returned. -function reply_to_object(reply) { - var obj = {}, j, jl, key, val; - - if (reply.length === 0) { - return null; - } - - for (j = 0, jl = reply.length; j < jl; j += 2) { - key = reply[j].toString(); - val = reply[j + 1]; - obj[key] = val; - } - - return obj; -} - -function reply_to_strings(reply) { - var i; - - if (Buffer.isBuffer(reply)) { - return reply.toString(); - } - - if (Array.isArray(reply)) { - for (i = 0; i < reply.length; i++) { - reply[i] = reply[i].toString(); - } - return reply; - } - - return reply; -} - -RedisClient.prototype.return_reply = function (reply) { - var command_obj, obj, i, len, type, timestamp, argindex, args, queue_len; - - command_obj = this.command_queue.shift(), - queue_len = this.command_queue.getLength(); - - if (this.pub_sub_mode === false && queue_len === 0) { - this.emit("idle"); - this.command_queue = new Queue(); // explicitly reclaim storage from old Queue - } - if (this.should_buffer && queue_len <= this.command_queue_low_water) { - this.emit("drain"); - this.should_buffer = false; - } - - if (command_obj && !command_obj.sub_command) { - if (typeof command_obj.callback === "function") { - if (this.options.detect_buffers && command_obj.buffer_args === false) { - // If detect_buffers option was specified, then the reply from the parser will be Buffers. - // If this command did not use Buffer arguments, then convert the reply to Strings here. - reply = reply_to_strings(reply); - } - - // TODO - confusing and error-prone that hgetall is special cased in two places - if (reply && 'hgetall' === command_obj.command.toLowerCase()) { - reply = reply_to_object(reply); - } - - try_callback(command_obj.callback, reply); - } else if (exports.debug_mode) { - console.log("no callback for reply: " + (reply && reply.toString && reply.toString())); - } - } else if (this.pub_sub_mode || (command_obj && command_obj.sub_command)) { - if (Array.isArray(reply)) { - type = reply[0].toString(); - - if (type === "message") { - this.emit("message", reply[1].toString(), reply[2]); // channel, message - } else if (type === "pmessage") { - this.emit("pmessage", reply[1].toString(), reply[2].toString(), reply[3]); // pattern, channel, message - } else if (type === "subscribe" || type === "unsubscribe" || type === "psubscribe" || type === "punsubscribe") { - if (reply[2] === 0) { - this.pub_sub_mode = false; - if (this.debug_mode) { - console.log("All subscriptions removed, exiting pub/sub mode"); - } - } else { - this.pub_sub_mode = true; - } - // subscribe commands take an optional callback and also emit an event, but only the first response is included in the callback - // TODO - document this or fix it so it works in a more obvious way - if (command_obj && typeof command_obj.callback === "function") { - try_callback(command_obj.callback, reply[1].toString()); - } - this.emit(type, reply[1].toString(), reply[2]); // channel, count - } else { - throw new Error("subscriptions are active but got unknown reply type " + type); - } - } else if (! this.closing) { - throw new Error("subscriptions are active but got an invalid reply: " + reply); - } - } else if (this.monitoring) { - len = reply.indexOf(" "); - timestamp = reply.slice(0, len); - argindex = reply.indexOf('"'); - args = reply.slice(argindex + 1, -1).split('" "').map(function (elem) { - return elem.replace(/\\"/g, '"'); - }); - this.emit("monitor", timestamp, args); - } else { - throw new Error("node_redis command queue state error. If you can reproduce this, please report it."); - } -}; - -// This Command constructor is ever so slightly faster than using an object literal, but more importantly, using -// a named constructor helps it show up meaningfully in the V8 CPU profiler and in heap snapshots. -function Command(command, args, sub_command, buffer_args, callback) { - this.command = command; - this.args = args; - this.sub_command = sub_command; - this.buffer_args = buffer_args; - this.callback = callback; -} - -RedisClient.prototype.send_command = function (command, args, callback) { - var arg, this_args, command_obj, i, il, elem_count, buffer_args, stream = this.stream, command_str = "", buffered_writes = 0, last_arg_type; - - if (typeof command !== "string") { - throw new Error("First argument to send_command must be the command name string, not " + typeof command); - } - - if (Array.isArray(args)) { - if (typeof callback === "function") { - // probably the fastest way: - // client.command([arg1, arg2], cb); (straight passthrough) - // send_command(command, [arg1, arg2], cb); - } else if (! callback) { - // most people find this variable argument length form more convenient, but it uses arguments, which is slower - // client.command(arg1, arg2, cb); (wraps up arguments into an array) - // send_command(command, [arg1, arg2, cb]); - // client.command(arg1, arg2); (callback is optional) - // send_command(command, [arg1, arg2]); - // client.command(arg1, arg2, undefined); (callback is undefined) - // send_command(command, [arg1, arg2, undefined]); - last_arg_type = typeof args[args.length - 1]; - if (last_arg_type === "function" || last_arg_type === "undefined") { - callback = args.pop(); - } - } else { - throw new Error("send_command: last argument must be a callback or undefined"); - } - } else { - throw new Error("send_command: second argument must be an array"); - } - - // if the last argument is an array and command is sadd, expand it out: - // client.sadd(arg1, [arg2, arg3, arg4], cb); - // converts to: - // client.sadd(arg1, arg2, arg3, arg4, cb); - if ((command === 'sadd' || command === 'SADD') && args.length > 0 && Array.isArray(args[args.length - 1])) { - args = args.slice(0, -1).concat(args[args.length - 1]); - } - - buffer_args = false; - for (i = 0, il = args.length, arg; i < il; i += 1) { - if (Buffer.isBuffer(args[i])) { - buffer_args = true; - } - } - - command_obj = new Command(command, args, false, buffer_args, callback); - - if ((!this.ready && !this.send_anyway) || !stream.writable) { - if (exports.debug_mode) { - if (!stream.writable) { - console.log("send command: stream is not writeable."); - } - } - - if (this.enable_offline_queue) { - if (exports.debug_mode) { - console.log("Queueing " + command + " for next server connection."); - } - this.offline_queue.push(command_obj); - this.should_buffer = true; - } else { - var not_writeable_error = new Error('send_command: stream not writeable. enable_offline_queue is false'); - if (command_obj.callback) { - command_obj.callback(not_writeable_error); - } else { - throw not_writeable_error; - } - } - - return false; - } - - if (command === "subscribe" || command === "psubscribe" || command === "unsubscribe" || command === "punsubscribe") { - this.pub_sub_command(command_obj); - } else if (command === "monitor") { - this.monitoring = true; - } else if (command === "quit") { - this.closing = true; - } else if (this.pub_sub_mode === true) { - throw new Error("Connection in pub/sub mode, only pub/sub commands may be used"); - } - this.command_queue.push(command_obj); - this.commands_sent += 1; - - elem_count = args.length + 1; - - // Always use "Multi bulk commands", but if passed any Buffer args, then do multiple writes, one for each arg. - // This means that using Buffers in commands is going to be slower, so use Strings if you don't already have a Buffer. - - command_str = "*" + elem_count + "\r\n$" + command.length + "\r\n" + command + "\r\n"; - - if (! buffer_args) { // Build up a string and send entire command in one write - for (i = 0, il = args.length, arg; i < il; i += 1) { - arg = args[i]; - if (typeof arg !== "string") { - arg = String(arg); - } - command_str += "$" + Buffer.byteLength(arg) + "\r\n" + arg + "\r\n"; - } - if (exports.debug_mode) { - console.log("send " + this.host + ":" + this.port + " id " + this.connection_id + ": " + command_str); - } - buffered_writes += !stream.write(command_str); - } else { - if (exports.debug_mode) { - console.log("send command (" + command_str + ") has Buffer arguments"); - } - buffered_writes += !stream.write(command_str); - - for (i = 0, il = args.length, arg; i < il; i += 1) { - arg = args[i]; - if (!(Buffer.isBuffer(arg) || arg instanceof String)) { - arg = String(arg); - } - - if (Buffer.isBuffer(arg)) { - if (arg.length === 0) { - if (exports.debug_mode) { - console.log("send_command: using empty string for 0 length buffer"); - } - buffered_writes += !stream.write("$0\r\n\r\n"); - } else { - buffered_writes += !stream.write("$" + arg.length + "\r\n"); - buffered_writes += !stream.write(arg); - buffered_writes += !stream.write("\r\n"); - if (exports.debug_mode) { - console.log("send_command: buffer send " + arg.length + " bytes"); - } - } - } else { - if (exports.debug_mode) { - console.log("send_command: string send " + Buffer.byteLength(arg) + " bytes: " + arg); - } - buffered_writes += !stream.write("$" + Buffer.byteLength(arg) + "\r\n" + arg + "\r\n"); - } - } - } - if (exports.debug_mode) { - console.log("send_command buffered_writes: " + buffered_writes, " should_buffer: " + this.should_buffer); - } - if (buffered_writes || this.command_queue.getLength() >= this.command_queue_high_water) { - this.should_buffer = true; - } - return !this.should_buffer; -}; - -RedisClient.prototype.pub_sub_command = function (command_obj) { - var i, key, command, args; - - if (this.pub_sub_mode === false && exports.debug_mode) { - console.log("Entering pub/sub mode from " + command_obj.command); - } - this.pub_sub_mode = true; - command_obj.sub_command = true; - - command = command_obj.command; - args = command_obj.args; - if (command === "subscribe" || command === "psubscribe") { - if (command === "subscribe") { - key = "sub"; - } else { - key = "psub"; - } - for (i = 0; i < args.length; i++) { - this.subscription_set[key + " " + args[i]] = true; - } - } else { - if (command === "unsubscribe") { - key = "sub"; - } else { - key = "psub"; - } - for (i = 0; i < args.length; i++) { - delete this.subscription_set[key + " " + args[i]]; - } - } -}; - -RedisClient.prototype.end = function () { - this.stream._events = {}; - this.connected = false; - this.ready = false; - return this.stream.end(); -}; - -function Multi(client, args) { - this.client = client; - this.queue = [["MULTI"]]; - if (Array.isArray(args)) { - this.queue = this.queue.concat(args); - } -} - -exports.Multi = Multi; - -// take 2 arrays and return the union of their elements -function set_union(seta, setb) { - var obj = {}; - - seta.forEach(function (val) { - obj[val] = true; - }); - setb.forEach(function (val) { - obj[val] = true; - }); - return Object.keys(obj); -} - -// This static list of commands is updated from time to time. ./lib/commands.js can be updated with generate_commands.js -commands = set_union(["get", "set", "setnx", "setex", "append", "strlen", "del", "exists", "setbit", "getbit", "setrange", "getrange", "substr", - "incr", "decr", "mget", "rpush", "lpush", "rpushx", "lpushx", "linsert", "rpop", "lpop", "brpop", "brpoplpush", "blpop", "llen", "lindex", - "lset", "lrange", "ltrim", "lrem", "rpoplpush", "sadd", "srem", "smove", "sismember", "scard", "spop", "srandmember", "sinter", "sinterstore", - "sunion", "sunionstore", "sdiff", "sdiffstore", "smembers", "zadd", "zincrby", "zrem", "zremrangebyscore", "zremrangebyrank", "zunionstore", - "zinterstore", "zrange", "zrangebyscore", "zrevrangebyscore", "zcount", "zrevrange", "zcard", "zscore", "zrank", "zrevrank", "hset", "hsetnx", - "hget", "hmset", "hmget", "hincrby", "hdel", "hlen", "hkeys", "hvals", "hgetall", "hexists", "incrby", "decrby", "getset", "mset", "msetnx", - "randomkey", "select", "move", "rename", "renamenx", "expire", "expireat", "keys", "dbsize", "auth", "ping", "echo", "save", "bgsave", - "bgrewriteaof", "shutdown", "lastsave", "type", "multi", "exec", "discard", "sync", "flushdb", "flushall", "sort", "info", "monitor", "ttl", - "persist", "slaveof", "debug", "config", "subscribe", "unsubscribe", "psubscribe", "punsubscribe", "publish", "watch", "unwatch", "cluster", - "restore", "migrate", "dump", "object", "client", "eval", "evalsha"], require("./lib/commands")); - -commands.forEach(function (command) { - RedisClient.prototype[command] = function (args, callback) { - if (Array.isArray(args) && typeof callback === "function") { - return this.send_command(command, args, callback); - } else { - return this.send_command(command, to_array(arguments)); - } - }; - RedisClient.prototype[command.toUpperCase()] = RedisClient.prototype[command]; - - Multi.prototype[command] = function () { - this.queue.push([command].concat(to_array(arguments))); - return this; - }; - Multi.prototype[command.toUpperCase()] = Multi.prototype[command]; -}); - -// store db in this.select_db to restore it on reconnect -RedisClient.prototype.select = function (db, callback) { - var self = this; - - this.send_command('select', [db], function (err, res) { - if (err === null) { - self.selected_db = db; - } - if (typeof(callback) === 'function') { - callback(err, res); - } - }); -}; -RedisClient.prototype.SELECT = RedisClient.prototype.select; - -// Stash auth for connect and reconnect. Send immediately if already connected. -RedisClient.prototype.auth = function () { - var args = to_array(arguments); - this.auth_pass = args[0]; - this.auth_callback = args[1]; - if (exports.debug_mode) { - console.log("Saving auth as " + this.auth_pass); - } - - if (this.connected) { - this.send_command("auth", args); - } -}; -RedisClient.prototype.AUTH = RedisClient.prototype.auth; - -RedisClient.prototype.hmget = function (arg1, arg2, arg3) { - if (Array.isArray(arg2) && typeof arg3 === "function") { - return this.send_command("hmget", [arg1].concat(arg2), arg3); - } else if (Array.isArray(arg1) && typeof arg2 === "function") { - return this.send_command("hmget", arg1, arg2); - } else { - return this.send_command("hmget", to_array(arguments)); - } -}; -RedisClient.prototype.HMGET = RedisClient.prototype.hmget; - -RedisClient.prototype.hmset = function (args, callback) { - var tmp_args, tmp_keys, i, il, key; - - if (Array.isArray(args) && typeof callback === "function") { - return this.send_command("hmset", args, callback); - } - - args = to_array(arguments); - if (typeof args[args.length - 1] === "function") { - callback = args[args.length - 1]; - args.length -= 1; - } else { - callback = null; - } - - if (args.length === 2 && typeof args[0] === "string" && typeof args[1] === "object") { - // User does: client.hmset(key, {key1: val1, key2: val2}) - tmp_args = [ args[0] ]; - tmp_keys = Object.keys(args[1]); - for (i = 0, il = tmp_keys.length; i < il ; i++) { - key = tmp_keys[i]; - tmp_args.push(key); - if (typeof args[1][key] !== "string") { - var err = new Error("hmset expected value to be a string", key, ":", args[1][key]); - if (callback) return callback(err); - else throw err; - } - tmp_args.push(args[1][key]); - } - args = tmp_args; - } - - return this.send_command("hmset", args, callback); -}; -RedisClient.prototype.HMSET = RedisClient.prototype.hmset; - -Multi.prototype.hmset = function () { - var args = to_array(arguments), tmp_args; - if (args.length >= 2 && typeof args[0] === "string" && typeof args[1] === "object") { - tmp_args = [ "hmset", args[0] ]; - Object.keys(args[1]).map(function (key) { - tmp_args.push(key); - tmp_args.push(args[1][key]); - }); - if (args[2]) { - tmp_args.push(args[2]); - } - args = tmp_args; - } else { - args.unshift("hmset"); - } - - this.queue.push(args); - return this; -}; -Multi.prototype.HMSET = Multi.prototype.hmset; - -Multi.prototype.exec = function (callback) { - var self = this; - - // drain queue, callback will catch "QUEUED" or error - // TODO - get rid of all of these anonymous functions which are elegant but slow - this.queue.forEach(function (args, index) { - var command = args[0], obj; - if (typeof args[args.length - 1] === "function") { - args = args.slice(1, -1); - } else { - args = args.slice(1); - } - if (args.length === 1 && Array.isArray(args[0])) { - args = args[0]; - } - if (command.toLowerCase() === 'hmset' && typeof args[1] === 'object') { - obj = args.pop(); - Object.keys(obj).forEach(function (key) { - args.push(key); - args.push(obj[key]); - }); - } - this.client.send_command(command, args, function (err, reply) { - if (err) { - var cur = self.queue[index]; - if (typeof cur[cur.length - 1] === "function") { - cur[cur.length - 1](err); - } else { - throw new Error(err); - } - self.queue.splice(index, 1); - } - }); - }, this); - - // TODO - make this callback part of Multi.prototype instead of creating it each time - return this.client.send_command("EXEC", [], function (err, replies) { - if (err) { - if (callback) { - callback(new Error(err)); - return; - } else { - throw new Error(err); - } - } - - var i, il, j, jl, reply, args; - - if (replies) { - for (i = 1, il = self.queue.length; i < il; i += 1) { - reply = replies[i - 1]; - args = self.queue[i]; - - // TODO - confusing and error-prone that hgetall is special cased in two places - if (reply && args[0].toLowerCase() === "hgetall") { - replies[i - 1] = reply = reply_to_object(reply); - } - - if (typeof args[args.length - 1] === "function") { - args[args.length - 1](null, reply); - } - } - } - - if (callback) { - callback(null, replies); - } - }); -}; -Multi.prototype.EXEC = Multi.prototype.exec; - -RedisClient.prototype.multi = function (args) { - return new Multi(this, args); -}; -RedisClient.prototype.MULTI = function (args) { - return new Multi(this, args); -}; - - -// stash original eval method -var eval = RedisClient.prototype.eval; -// hook eval with an attempt to evalsha for cached scripts -RedisClient.prototype.eval = -RedisClient.prototype.EVAL = function () { - var self = this, - args = to_array(arguments), - callback; - - if (typeof args[args.length - 1] === "function") { - callback = args.pop(); - } - - // replace script source with sha value - var source = args[0]; - args[0] = crypto.createHash("sha1").update(source).digest("hex"); - - self.evalsha(args, function (err, reply) { - if (err && /NOSCRIPT/.test(err.message)) { - args[0] = source; - eval.call(self, args, callback); - - } else if (callback) { - callback(err, reply); - } - }); -}; - - -exports.createClient = function (port_arg, host_arg, options) { - var port = port_arg || default_port, - host = host_arg || default_host, - redis_client, net_client; - - net_client = net.createConnection(port, host); - - redis_client = new RedisClient(net_client, options); - - redis_client.port = port; - redis_client.host = host; - - return redis_client; -}; - -exports.print = function (err, reply) { - if (err) { - console.log("Error: " + err); - } else { - console.log("Reply: " + reply); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/commands.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/commands.js deleted file mode 100644 index f57cca96..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/commands.js +++ /dev/null @@ -1,147 +0,0 @@ -// This file was generated by ./generate_commands.js on Mon Aug 06 2012 15:04:06 GMT-0700 (PDT) -module.exports = [ - "append", - "auth", - "bgrewriteaof", - "bgsave", - "bitcount", - "bitop", - "blpop", - "brpop", - "brpoplpush", - "client kill", - "client list", - "config get", - "config set", - "config resetstat", - "dbsize", - "debug object", - "debug segfault", - "decr", - "decrby", - "del", - "discard", - "dump", - "echo", - "eval", - "evalsha", - "exec", - "exists", - "expire", - "expireat", - "flushall", - "flushdb", - "get", - "getbit", - "getrange", - "getset", - "hdel", - "hexists", - "hget", - "hgetall", - "hincrby", - "hincrbyfloat", - "hkeys", - "hlen", - "hmget", - "hmset", - "hset", - "hsetnx", - "hvals", - "incr", - "incrby", - "incrbyfloat", - "info", - "keys", - "lastsave", - "lindex", - "linsert", - "llen", - "lpop", - "lpush", - "lpushx", - "lrange", - "lrem", - "lset", - "ltrim", - "mget", - "migrate", - "monitor", - "move", - "mset", - "msetnx", - "multi", - "object", - "persist", - "pexpire", - "pexpireat", - "ping", - "psetex", - "psubscribe", - "pttl", - "publish", - "punsubscribe", - "quit", - "randomkey", - "rename", - "renamenx", - "restore", - "rpop", - "rpoplpush", - "rpush", - "rpushx", - "sadd", - "save", - "scard", - "script exists", - "script flush", - "script kill", - "script load", - "sdiff", - "sdiffstore", - "select", - "set", - "setbit", - "setex", - "setnx", - "setrange", - "shutdown", - "sinter", - "sinterstore", - "sismember", - "slaveof", - "slowlog", - "smembers", - "smove", - "sort", - "spop", - "srandmember", - "srem", - "strlen", - "subscribe", - "sunion", - "sunionstore", - "sync", - "time", - "ttl", - "type", - "unsubscribe", - "unwatch", - "watch", - "zadd", - "zcard", - "zcount", - "zincrby", - "zinterstore", - "zrange", - "zrangebyscore", - "zrank", - "zrem", - "zremrangebyrank", - "zremrangebyscore", - "zrevrange", - "zrevrangebyscore", - "zrevrank", - "zscore", - "zunionstore" -]; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js deleted file mode 100644 index cbb15ba3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/hiredis.js +++ /dev/null @@ -1,46 +0,0 @@ -/*global Buffer require exports console setTimeout */ - -var events = require("events"), - util = require("../util"), - hiredis = require("hiredis"); - -exports.debug_mode = false; -exports.name = "hiredis"; - -function HiredisReplyParser(options) { - this.name = exports.name; - this.options = options || {}; - this.reset(); - events.EventEmitter.call(this); -} - -util.inherits(HiredisReplyParser, events.EventEmitter); - -exports.Parser = HiredisReplyParser; - -HiredisReplyParser.prototype.reset = function () { - this.reader = new hiredis.Reader({ - return_buffers: this.options.return_buffers || false - }); -}; - -HiredisReplyParser.prototype.execute = function (data) { - var reply; - this.reader.feed(data); - while (true) { - try { - reply = this.reader.get(); - } catch (err) { - this.emit("error", err); - break; - } - - if (reply === undefined) break; - - if (reply && reply.constructor === Error) { - this.emit("reply error", reply); - } else { - this.emit("reply", reply); - } - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js deleted file mode 100644 index b8f5bc68..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/parser/javascript.js +++ /dev/null @@ -1,317 +0,0 @@ -/*global Buffer require exports console setTimeout */ - -// TODO - incorporate these V8 pro tips: -// pre-allocate Arrays if length is known in advance -// do not use delete -// use numbers for parser state - -var events = require("events"), - util = require("../util"); - -exports.debug_mode = false; -exports.name = "javascript"; - -function RedisReplyParser(options) { - this.name = exports.name; - this.options = options || {}; - this.reset(); - events.EventEmitter.call(this); -} - -util.inherits(RedisReplyParser, events.EventEmitter); - -exports.Parser = RedisReplyParser; - -// Buffer.toString() is quite slow for small strings -function small_toString(buf, len) { - var tmp = "", i; - - for (i = 0; i < len; i += 1) { - tmp += String.fromCharCode(buf[i]); - } - - return tmp; -} - -// Reset parser to it's original state. -RedisReplyParser.prototype.reset = function () { - this.return_buffer = new Buffer(16384); // for holding replies, might grow - this.return_string = ""; - this.tmp_string = ""; // for holding size fields - - this.multi_bulk_length = 0; - this.multi_bulk_replies = null; - this.multi_bulk_pos = 0; - this.multi_bulk_nested_length = 0; - this.multi_bulk_nested_replies = null; - - this.states = { - TYPE: 1, - SINGLE_LINE: 2, - MULTI_BULK_COUNT: 3, - INTEGER_LINE: 4, - BULK_LENGTH: 5, - ERROR_LINE: 6, - BULK_DATA: 7, - UNKNOWN_TYPE: 8, - FINAL_CR: 9, - FINAL_LF: 10, - MULTI_BULK_COUNT_LF: 11, - BULK_LF: 12 - }; - - this.state = this.states.TYPE; -}; - -RedisReplyParser.prototype.parser_error = function (message) { - this.emit("error", message); - this.reset(); -}; - -RedisReplyParser.prototype.execute = function (incoming_buf) { - var pos = 0, bd_tmp, bd_str, i, il, states = this.states; - //, state_times = {}, start_execute = new Date(), start_switch, end_switch, old_state; - //start_switch = new Date(); - - while (pos < incoming_buf.length) { - // old_state = this.state; - // console.log("execute: " + this.state + ", " + pos + "/" + incoming_buf.length + ", " + String.fromCharCode(incoming_buf[pos])); - - switch (this.state) { - case 1: // states.TYPE - this.type = incoming_buf[pos]; - pos += 1; - - switch (this.type) { - case 43: // + - this.state = states.SINGLE_LINE; - this.return_buffer.end = 0; - this.return_string = ""; - break; - case 42: // * - this.state = states.MULTI_BULK_COUNT; - this.tmp_string = ""; - break; - case 58: // : - this.state = states.INTEGER_LINE; - this.return_buffer.end = 0; - this.return_string = ""; - break; - case 36: // $ - this.state = states.BULK_LENGTH; - this.tmp_string = ""; - break; - case 45: // - - this.state = states.ERROR_LINE; - this.return_buffer.end = 0; - this.return_string = ""; - break; - default: - this.state = states.UNKNOWN_TYPE; - } - break; - case 4: // states.INTEGER_LINE - if (incoming_buf[pos] === 13) { - this.send_reply(+small_toString(this.return_buffer, this.return_buffer.end)); - this.state = states.FINAL_LF; - } else { - this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; - this.return_buffer.end += 1; - } - pos += 1; - break; - case 6: // states.ERROR_LINE - if (incoming_buf[pos] === 13) { - this.send_error(this.return_buffer.toString("ascii", 0, this.return_buffer.end)); - this.state = states.FINAL_LF; - } else { - this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; - this.return_buffer.end += 1; - } - pos += 1; - break; - case 2: // states.SINGLE_LINE - if (incoming_buf[pos] === 13) { - this.send_reply(this.return_string); - this.state = states.FINAL_LF; - } else { - this.return_string += String.fromCharCode(incoming_buf[pos]); - } - pos += 1; - break; - case 3: // states.MULTI_BULK_COUNT - if (incoming_buf[pos] === 13) { // \r - this.state = states.MULTI_BULK_COUNT_LF; - } else { - this.tmp_string += String.fromCharCode(incoming_buf[pos]); - } - pos += 1; - break; - case 11: // states.MULTI_BULK_COUNT_LF - if (incoming_buf[pos] === 10) { // \n - if (this.multi_bulk_length) { // nested multi-bulk - this.multi_bulk_nested_length = this.multi_bulk_length; - this.multi_bulk_nested_replies = this.multi_bulk_replies; - this.multi_bulk_nested_pos = this.multi_bulk_pos; - } - this.multi_bulk_length = +this.tmp_string; - this.multi_bulk_pos = 0; - this.state = states.TYPE; - if (this.multi_bulk_length < 0) { - this.send_reply(null); - this.multi_bulk_length = 0; - } else if (this.multi_bulk_length === 0) { - this.multi_bulk_pos = 0; - this.multi_bulk_replies = null; - this.send_reply([]); - } else { - this.multi_bulk_replies = new Array(this.multi_bulk_length); - } - } else { - this.parser_error(new Error("didn't see LF after NL reading multi bulk count")); - return; - } - pos += 1; - break; - case 5: // states.BULK_LENGTH - if (incoming_buf[pos] === 13) { // \r - this.state = states.BULK_LF; - } else { - this.tmp_string += String.fromCharCode(incoming_buf[pos]); - } - pos += 1; - break; - case 12: // states.BULK_LF - if (incoming_buf[pos] === 10) { // \n - this.bulk_length = +this.tmp_string; - if (this.bulk_length === -1) { - this.send_reply(null); - this.state = states.TYPE; - } else if (this.bulk_length === 0) { - this.send_reply(new Buffer("")); - this.state = states.FINAL_CR; - } else { - this.state = states.BULK_DATA; - if (this.bulk_length > this.return_buffer.length) { - if (exports.debug_mode) { - console.log("Growing return_buffer from " + this.return_buffer.length + " to " + this.bulk_length); - } - this.return_buffer = new Buffer(this.bulk_length); - } - this.return_buffer.end = 0; - } - } else { - this.parser_error(new Error("didn't see LF after NL while reading bulk length")); - return; - } - pos += 1; - break; - case 7: // states.BULK_DATA - this.return_buffer[this.return_buffer.end] = incoming_buf[pos]; - this.return_buffer.end += 1; - pos += 1; - if (this.return_buffer.end === this.bulk_length) { - bd_tmp = new Buffer(this.bulk_length); - // When the response is small, Buffer.copy() is a lot slower. - if (this.bulk_length > 10) { - this.return_buffer.copy(bd_tmp, 0, 0, this.bulk_length); - } else { - for (i = 0, il = this.bulk_length; i < il; i += 1) { - bd_tmp[i] = this.return_buffer[i]; - } - } - this.send_reply(bd_tmp); - this.state = states.FINAL_CR; - } - break; - case 9: // states.FINAL_CR - if (incoming_buf[pos] === 13) { // \r - this.state = states.FINAL_LF; - pos += 1; - } else { - this.parser_error(new Error("saw " + incoming_buf[pos] + " when expecting final CR")); - return; - } - break; - case 10: // states.FINAL_LF - if (incoming_buf[pos] === 10) { // \n - this.state = states.TYPE; - pos += 1; - } else { - this.parser_error(new Error("saw " + incoming_buf[pos] + " when expecting final LF")); - return; - } - break; - default: - this.parser_error(new Error("invalid state " + this.state)); - } - // end_switch = new Date(); - // if (state_times[old_state] === undefined) { - // state_times[old_state] = 0; - // } - // state_times[old_state] += (end_switch - start_switch); - // start_switch = end_switch; - } - // console.log("execute ran for " + (Date.now() - start_execute) + " ms, on " + incoming_buf.length + " Bytes. "); - // Object.keys(state_times).forEach(function (state) { - // console.log(" " + state + ": " + state_times[state]); - // }); -}; - -RedisReplyParser.prototype.send_error = function (reply) { - if (this.multi_bulk_length > 0 || this.multi_bulk_nested_length > 0) { - // TODO - can this happen? Seems like maybe not. - this.add_multi_bulk_reply(reply); - } else { - this.emit("reply error", reply); - } -}; - -RedisReplyParser.prototype.send_reply = function (reply) { - if (this.multi_bulk_length > 0 || this.multi_bulk_nested_length > 0) { - if (!this.options.return_buffers && Buffer.isBuffer(reply)) { - this.add_multi_bulk_reply(reply.toString("utf8")); - } else { - this.add_multi_bulk_reply(reply); - } - } else { - if (!this.options.return_buffers && Buffer.isBuffer(reply)) { - this.emit("reply", reply.toString("utf8")); - } else { - this.emit("reply", reply); - } - } -}; - -RedisReplyParser.prototype.add_multi_bulk_reply = function (reply) { - if (this.multi_bulk_replies) { - this.multi_bulk_replies[this.multi_bulk_pos] = reply; - this.multi_bulk_pos += 1; - if (this.multi_bulk_pos < this.multi_bulk_length) { - return; - } - } else { - this.multi_bulk_replies = reply; - } - - if (this.multi_bulk_nested_length > 0) { - this.multi_bulk_nested_replies[this.multi_bulk_nested_pos] = this.multi_bulk_replies; - this.multi_bulk_nested_pos += 1; - - this.multi_bulk_length = 0; - this.multi_bulk_replies = null; - this.multi_bulk_pos = 0; - - if (this.multi_bulk_nested_length === this.multi_bulk_nested_pos) { - this.emit("reply", this.multi_bulk_nested_replies); - this.multi_bulk_nested_length = 0; - this.multi_bulk_nested_pos = 0; - this.multi_bulk_nested_replies = null; - } - } else { - this.emit("reply", this.multi_bulk_replies); - this.multi_bulk_length = 0; - this.multi_bulk_replies = null; - this.multi_bulk_pos = 0; - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/queue.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/queue.js deleted file mode 100644 index 56254e1c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/queue.js +++ /dev/null @@ -1,61 +0,0 @@ -var to_array = require("./to_array"); - -// Queue class adapted from Tim Caswell's pattern library -// http://github.com/creationix/pattern/blob/master/lib/pattern/queue.js - -function Queue() { - this.tail = []; - this.head = []; - this.offset = 0; -} - -Queue.prototype.shift = function () { - if (this.offset === this.head.length) { - var tmp = this.head; - tmp.length = 0; - this.head = this.tail; - this.tail = tmp; - this.offset = 0; - if (this.head.length === 0) { - return; - } - } - return this.head[this.offset++]; // sorry, JSLint -}; - -Queue.prototype.push = function (item) { - return this.tail.push(item); -}; - -Queue.prototype.forEach = function (fn, thisv) { - var array = this.head.slice(this.offset), i, il; - - array.push.apply(array, this.tail); - - if (thisv) { - for (i = 0, il = array.length; i < il; i += 1) { - fn.call(thisv, array[i], i, array); - } - } else { - for (i = 0, il = array.length; i < il; i += 1) { - fn(array[i], i, array); - } - } - - return array; -}; - -Queue.prototype.getLength = function () { - return this.head.length - this.offset + this.tail.length; -}; - -Object.defineProperty(Queue.prototype, 'length', { - get: function () { - return this.getLength(); - } -}); - - -if(typeof module !== 'undefined' && module.exports) { - module.exports = Queue; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/to_array.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/to_array.js deleted file mode 100644 index 88a57e18..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/to_array.js +++ /dev/null @@ -1,12 +0,0 @@ -function to_array(args) { - var len = args.length, - arr = new Array(len), i; - - for (i = 0; i < len; i += 1) { - arr[i] = args[i]; - } - - return arr; -} - -module.exports = to_array; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/util.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/util.js deleted file mode 100644 index fc255ae9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/lib/util.js +++ /dev/null @@ -1,11 +0,0 @@ -// Support for very old versions of node where the module was called "sys". At some point, we should abandon this. - -var util; - -try { - util = require("util"); -} catch (err) { - util = require("sys"); -} - -module.exports = util; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/mem.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/mem.js deleted file mode 100644 index 5144ab28..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/mem.js +++ /dev/null @@ -1,11 +0,0 @@ -var client = require("redis").createClient(); - -client.set("foo", "barvalskdjlksdjflkdsjflksdjdflkdsjflksdjflksdj", function (err, res) { - if (err) { - console.log("Got an error, please adapt somehow."); - } else { - console.log("Got a result: " + res); - } -}); - -client.quit(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/multi_bench.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/multi_bench.js deleted file mode 100644 index 5be2e564..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/multi_bench.js +++ /dev/null @@ -1,225 +0,0 @@ -var redis = require("./index"), - metrics = require("metrics"), - num_clients = parseInt(process.argv[2], 10) || 5, - num_requests = 20000, - tests = [], - versions_logged = false, - client_options = { - return_buffers: false - }, - small_str, large_str, small_buf, large_buf; - -redis.debug_mode = false; - -function lpad(input, len, chr) { - var str = input.toString(); - chr = chr || " "; - - while (str.length < len) { - str = chr + str; - } - return str; -} - -metrics.Histogram.prototype.print_line = function () { - var obj = this.printObj(); - - return lpad(obj.min, 4) + "/" + lpad(obj.max, 4) + "/" + lpad(obj.mean.toFixed(2), 7) + "/" + lpad(obj.p95.toFixed(2), 7); -}; - -function Test(args) { - var self = this; - - this.args = args; - - this.callback = null; - this.clients = []; - this.clients_ready = 0; - this.commands_sent = 0; - this.commands_completed = 0; - this.max_pipeline = this.args.pipeline || num_requests; - this.client_options = args.client_options || client_options; - - this.connect_latency = new metrics.Histogram(); - this.ready_latency = new metrics.Histogram(); - this.command_latency = new metrics.Histogram(); -} - -Test.prototype.run = function (callback) { - var self = this, i; - - this.callback = callback; - - for (i = 0; i < num_clients ; i++) { - this.new_client(i); - } -}; - -Test.prototype.new_client = function (id) { - var self = this, new_client; - - new_client = redis.createClient(6379, "127.0.0.1", this.client_options); - new_client.create_time = Date.now(); - - new_client.on("connect", function () { - self.connect_latency.update(Date.now() - new_client.create_time); - }); - - new_client.on("ready", function () { - if (! versions_logged) { - console.log("Client count: " + num_clients + ", node version: " + process.versions.node + ", server version: " + - new_client.server_info.redis_version + ", parser: " + new_client.reply_parser.name); - versions_logged = true; - } - self.ready_latency.update(Date.now() - new_client.create_time); - self.clients_ready++; - if (self.clients_ready === self.clients.length) { - self.on_clients_ready(); - } - }); - - self.clients[id] = new_client; -}; - -Test.prototype.on_clients_ready = function () { - process.stdout.write(lpad(this.args.descr, 13) + ", " + lpad(this.args.pipeline, 5) + "/" + this.clients_ready + " "); - this.test_start = Date.now(); - - this.fill_pipeline(); -}; - -Test.prototype.fill_pipeline = function () { - var pipeline = this.commands_sent - this.commands_completed; - - while (this.commands_sent < num_requests && pipeline < this.max_pipeline) { - this.commands_sent++; - pipeline++; - this.send_next(); - } - - if (this.commands_completed === num_requests) { - this.print_stats(); - this.stop_clients(); - } -}; - -Test.prototype.stop_clients = function () { - var self = this; - - this.clients.forEach(function (client, pos) { - if (pos === self.clients.length - 1) { - client.quit(function (err, res) { - self.callback(); - }); - } else { - client.quit(); - } - }); -}; - -Test.prototype.send_next = function () { - var self = this, - cur_client = this.commands_sent % this.clients.length, - command_num = this.commands_sent, - start = Date.now(); - - this.clients[cur_client][this.args.command](this.args.args, function (err, res) { - if (err) { - throw err; - } - self.commands_completed++; - self.command_latency.update(Date.now() - start); - self.fill_pipeline(); - }); -}; - -Test.prototype.print_stats = function () { - var duration = Date.now() - this.test_start; - - console.log("min/max/avg/p95: " + this.command_latency.print_line() + " " + lpad(duration, 6) + "ms total, " + - lpad((num_requests / (duration / 1000)).toFixed(2), 8) + " ops/sec"); -}; - -small_str = "1234"; -small_buf = new Buffer(small_str); -large_str = (new Array(4097).join("-")); -large_buf = new Buffer(large_str); - -tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 1})); -tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 50})); -tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 200})); -tests.push(new Test({descr: "PING", command: "ping", args: [], pipeline: 20000})); - -tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 1})); -tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 50})); -tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 200})); -tests.push(new Test({descr: "SET small str", command: "set", args: ["foo_rand000000000000", small_str], pipeline: 20000})); - -tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 1})); -tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 50})); -tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 200})); -tests.push(new Test({descr: "SET small buf", command: "set", args: ["foo_rand000000000000", small_buf], pipeline: 20000})); - -tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 1})); -tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 50})); -tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 200})); -tests.push(new Test({descr: "GET small str", command: "get", args: ["foo_rand000000000000"], pipeline: 20000})); - -tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 1, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 50, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 200, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET small buf", command: "get", args: ["foo_rand000000000000"], pipeline: 20000, client_opts: { return_buffers: true} })); - -tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 1})); -tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 50})); -tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 200})); -tests.push(new Test({descr: "SET large str", command: "set", args: ["foo_rand000000000001", large_str], pipeline: 20000})); - -tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 1})); -tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 50})); -tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 200})); -tests.push(new Test({descr: "SET large buf", command: "set", args: ["foo_rand000000000001", large_buf], pipeline: 20000})); - -tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 1})); -tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 50})); -tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 200})); -tests.push(new Test({descr: "GET large str", command: "get", args: ["foo_rand000000000001"], pipeline: 20000})); - -tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 1, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 50, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 200, client_opts: { return_buffers: true} })); -tests.push(new Test({descr: "GET large buf", command: "get", args: ["foo_rand000000000001"], pipeline: 20000, client_opts: { return_buffers: true} })); - -tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 1})); -tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 50})); -tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 200})); -tests.push(new Test({descr: "INCR", command: "incr", args: ["counter_rand000000000000"], pipeline: 20000})); - -tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 1})); -tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 50})); -tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 200})); -tests.push(new Test({descr: "LPUSH", command: "lpush", args: ["mylist", small_str], pipeline: 20000})); - -tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 1})); -tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 50})); -tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 200})); -tests.push(new Test({descr: "LRANGE 10", command: "lrange", args: ["mylist", "0", "9"], pipeline: 20000})); - -tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 1})); -tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 50})); -tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 200})); -tests.push(new Test({descr: "LRANGE 100", command: "lrange", args: ["mylist", "0", "99"], pipeline: 20000})); - -function next() { - var test = tests.shift(); - if (test) { - test.run(function () { - next(); - }); - } else { - console.log("End of tests."); - process.exit(0); - } -} - -next(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/package.json deleted file mode 100644 index 35040090..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "redis", - "version": "0.7.3", - "description": "Redis client library", - "author": { - "name": "Matt Ranney", - "email": "mjr@ranney.com" - }, - "maintainers": [ - { - "name": "mjr", - "email": "mjr@ranney.com" - } - ], - "main": "./index.js", - "scripts": { - "test": "node ./test.js" - }, - "devDependencies": { - "metrics": ">=0.1.5" - }, - "repository": { - "type": "git", - "url": "git://github.com/mranney/node_redis.git" - }, - "_npmUser": { - "name": "mjr", - "email": "mjr@ranney.com" - }, - "_id": "redis@0.7.3", - "dependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "_engineSupported": true, - "_npmVersion": "1.1.21", - "_nodeVersion": "v0.8.1", - "_defaultsLoaded": true, - "dist": { - "shasum": "ee57b7a44d25ec1594e44365d8165fa7d1d4811a", - "tarball": "http://registry.npmjs.org/redis/-/redis-0.7.3.tgz" - }, - "directories": {}, - "_shasum": "ee57b7a44d25ec1594e44365d8165fa7d1d4811a", - "_resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz", - "_from": "redis@0.7.3" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/test.js deleted file mode 100644 index 0a03375e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/redis/test.js +++ /dev/null @@ -1,1618 +0,0 @@ -/*global require console setTimeout process Buffer */ -var redis = require("./index"), - client = redis.createClient(), - client2 = redis.createClient(), - client3 = redis.createClient(), - assert = require("assert"), - crypto = require("crypto"), - util = require("./lib/util"), - test_db_num = 15, // this DB will be flushed and used for testing - tests = {}, - connected = false, - ended = false, - next, cur_start, run_next_test, all_tests, all_start, test_count; - -// Set this to truthy to see the wire protocol and other debugging info -redis.debug_mode = process.argv[2]; - -function buffers_to_strings(arr) { - return arr.map(function (val) { - return val.toString(); - }); -} - -function require_number(expected, label) { - return function (err, results) { - assert.strictEqual(null, err, label + " expected " + expected + ", got error: " + err); - assert.strictEqual(expected, results, label + " " + expected + " !== " + results); - assert.strictEqual(typeof results, "number", label); - return true; - }; -} - -function require_number_any(label) { - return function (err, results) { - assert.strictEqual(null, err, label + " expected any number, got error: " + err); - assert.strictEqual(typeof results, "number", label + " " + results + " is not a number"); - return true; - }; -} - -function require_number_pos(label) { - return function (err, results) { - assert.strictEqual(null, err, label + " expected positive number, got error: " + err); - assert.strictEqual(true, (results > 0), label + " " + results + " is not a positive number"); - return true; - }; -} - -function require_string(str, label) { - return function (err, results) { - assert.strictEqual(null, err, label + " expected string '" + str + "', got error: " + err); - assert.equal(str, results, label + " " + str + " does not match " + results); - return true; - }; -} - -function require_null(label) { - return function (err, results) { - assert.strictEqual(null, err, label + " expected null, got error: " + err); - assert.strictEqual(null, results, label + ": " + results + " is not null"); - return true; - }; -} - -function require_error(label) { - return function (err, results) { - assert.notEqual(err, null, label + " err is null, but an error is expected here."); - return true; - }; -} - -function is_empty_array(obj) { - return Array.isArray(obj) && obj.length === 0; -} - -function last(name, fn) { - return function (err, results) { - fn(err, results); - next(name); - }; -} - -next = function next(name) { - console.log(" \x1b[33m" + (Date.now() - cur_start) + "\x1b[0m ms"); - run_next_test(); -}; - -// Tests are run in the order they are defined. So FLUSHDB should be stay first. - -tests.FLUSHDB = function () { - var name = "FLUSHDB"; - client.select(test_db_num, require_string("OK", name)); - client2.select(test_db_num, require_string("OK", name)); - client3.select(test_db_num, require_string("OK", name)); - client.mset("flush keys 1", "flush val 1", "flush keys 2", "flush val 2", require_string("OK", name)); - client.FLUSHDB(require_string("OK", name)); - client.dbsize(last(name, require_number(0, name))); -}; - -tests.MULTI_1 = function () { - var name = "MULTI_1", multi1, multi2; - - // Provoke an error at queue time - multi1 = client.multi(); - multi1.mset("multifoo", "10", "multibar", "20", require_string("OK", name)); - multi1.set("foo2", require_error(name)); - multi1.incr("multifoo", require_number(11, name)); - multi1.incr("multibar", require_number(21, name)); - multi1.exec(); - - // Confirm that the previous command, while containing an error, still worked. - multi2 = client.multi(); - multi2.incr("multibar", require_number(22, name)); - multi2.incr("multifoo", require_number(12, name)); - multi2.exec(function (err, replies) { - assert.strictEqual(22, replies[0]); - assert.strictEqual(12, replies[1]); - next(name); - }); -}; - -tests.MULTI_2 = function () { - var name = "MULTI_2"; - - // test nested multi-bulk replies - client.multi([ - ["mget", "multifoo", "multibar", function (err, res) { - assert.strictEqual(2, res.length, name); - assert.strictEqual("12", res[0].toString(), name); - assert.strictEqual("22", res[1].toString(), name); - }], - ["set", "foo2", require_error(name)], - ["incr", "multifoo", require_number(13, name)], - ["incr", "multibar", require_number(23, name)] - ]).exec(function (err, replies) { - assert.strictEqual(2, replies[0].length, name); - assert.strictEqual("12", replies[0][0].toString(), name); - assert.strictEqual("22", replies[0][1].toString(), name); - - assert.strictEqual("13", replies[1].toString()); - assert.strictEqual("23", replies[2].toString()); - next(name); - }); -}; - -tests.MULTI_3 = function () { - var name = "MULTI_3"; - - client.sadd("some set", "mem 1"); - client.sadd("some set", "mem 2"); - client.sadd("some set", "mem 3"); - client.sadd("some set", "mem 4"); - - // make sure empty mb reply works - client.del("some missing set"); - client.smembers("some missing set", function (err, reply) { - // make sure empty mb reply works - assert.strictEqual(true, is_empty_array(reply), name); - }); - - // test nested multi-bulk replies with empty mb elements. - client.multi([ - ["smembers", "some set"], - ["del", "some set"], - ["smembers", "some set"] - ]) - .scard("some set") - .exec(function (err, replies) { - assert.strictEqual(true, is_empty_array(replies[2]), name); - next(name); - }); -}; - -tests.MULTI_4 = function () { - var name = "MULTI_4"; - - client.multi() - .mset('some', '10', 'keys', '20') - .incr('some') - .incr('keys') - .mget('some', 'keys') - .exec(function (err, replies) { - assert.strictEqual(null, err); - assert.equal('OK', replies[0]); - assert.equal(11, replies[1]); - assert.equal(21, replies[2]); - assert.equal(11, replies[3][0].toString()); - assert.equal(21, replies[3][1].toString()); - next(name); - }); -}; - -tests.MULTI_5 = function () { - var name = "MULTI_5"; - - // test nested multi-bulk replies with nulls. - client.multi([ - ["mget", ["multifoo", "some", "random value", "keys"]], - ["incr", "multifoo"] - ]) - .exec(function (err, replies) { - assert.strictEqual(replies.length, 2, name); - assert.strictEqual(replies[0].length, 4, name); - next(name); - }); -}; - -tests.MULTI_6 = function () { - var name = "MULTI_6"; - - client.multi() - .hmset("multihash", "a", "foo", "b", 1) - .hmset("multihash", { - extra: "fancy", - things: "here" - }) - .hgetall("multihash") - .exec(function (err, replies) { - assert.strictEqual(null, err); - assert.equal("OK", replies[0]); - assert.equal(Object.keys(replies[2]).length, 4); - assert.equal("foo", replies[2].a); - assert.equal("1", replies[2].b); - assert.equal("fancy", replies[2].extra); - assert.equal("here", replies[2].things); - next(name); - }); -}; - -tests.EVAL_1 = function () { - var name = "EVAL_1"; - - if (client.server_info.versions[0] >= 2 && client.server_info.versions[1] >= 5) { - // test {EVAL - Lua integer -> Redis protocol type conversion} - client.eval("return 100.5", 0, require_number(100, name)); - // test {EVAL - Lua string -> Redis protocol type conversion} - client.eval("return 'hello world'", 0, require_string("hello world", name)); - // test {EVAL - Lua true boolean -> Redis protocol type conversion} - client.eval("return true", 0, require_number(1, name)); - // test {EVAL - Lua false boolean -> Redis protocol type conversion} - client.eval("return false", 0, require_null(name)); - // test {EVAL - Lua status code reply -> Redis protocol type conversion} - client.eval("return {ok='fine'}", 0, require_string("fine", name)); - // test {EVAL - Lua error reply -> Redis protocol type conversion} - client.eval("return {err='this is an error'}", 0, require_error(name)); - // test {EVAL - Lua table -> Redis protocol type conversion} - client.eval("return {1,2,3,'ciao',{1,2}}", 0, function (err, res) { - assert.strictEqual(5, res.length, name); - assert.strictEqual(1, res[0], name); - assert.strictEqual(2, res[1], name); - assert.strictEqual(3, res[2], name); - assert.strictEqual("ciao", res[3], name); - assert.strictEqual(2, res[4].length, name); - assert.strictEqual(1, res[4][0], name); - assert.strictEqual(2, res[4][1], name); - }); - // test {EVAL - Are the KEYS and ARGS arrays populated correctly?} - client.eval("return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "a", "b", "c", "d", function (err, res) { - assert.strictEqual(4, res.length, name); - assert.strictEqual("a", res[0], name); - assert.strictEqual("b", res[1], name); - assert.strictEqual("c", res[2], name); - assert.strictEqual("d", res[3], name); - }); - - // prepare sha sum for evalsha cache test - var source = "return redis.call('get', 'sha test')", - sha = crypto.createHash('sha1').update(source).digest('hex'); - - client.set("sha test", "eval get sha test", function (err, res) { - if (err) throw err; - // test {EVAL - is Lua able to call Redis API?} - client.eval(source, 0, function (err, res) { - require_string("eval get sha test", name)(err, res); - // test {EVALSHA - Can we call a SHA1 if already defined?} - client.evalsha(sha, 0, require_string("eval get sha test", name)); - // test {EVALSHA - Do we get an error on non defined SHA1?} - client.evalsha("ffffffffffffffffffffffffffffffffffffffff", 0, require_error(name)); - }); - }); - - // test {EVAL - Redis integer -> Lua type conversion} - client.set("incr key", 0, function (err, reply) { - if (err) throw err; - client.eval("local foo = redis.call('incr','incr key')\n" + "return {type(foo),foo}", 0, function (err, res) { - if (err) throw err; - assert.strictEqual(2, res.length, name); - assert.strictEqual("number", res[0], name); - assert.strictEqual(1, res[1], name); - }); - }); - - client.set("bulk reply key", "bulk reply value", function (err, res) { - // test {EVAL - Redis bulk -> Lua type conversion} - client.eval("local foo = redis.call('get','bulk reply key'); return {type(foo),foo}", 0, function (err, res) { - if (err) throw err; - assert.strictEqual(2, res.length, name); - assert.strictEqual("string", res[0], name); - assert.strictEqual("bulk reply value", res[1], name); - }); - }); - - // test {EVAL - Redis multi bulk -> Lua type conversion} - client.multi() - .del("mylist") - .rpush("mylist", "a") - .rpush("mylist", "b") - .rpush("mylist", "c") - .exec(function (err, replies) { - if (err) throw err; - client.eval("local foo = redis.call('lrange','mylist',0,-1); return {type(foo),foo[1],foo[2],foo[3],# foo}", 0, function (err, res) { - assert.strictEqual(5, res.length, name); - assert.strictEqual("table", res[0], name); - assert.strictEqual("a", res[1], name); - assert.strictEqual("b", res[2], name); - assert.strictEqual("c", res[3], name); - assert.strictEqual(3, res[4], name); - }); - }); - // test {EVAL - Redis status reply -> Lua type conversion} - client.eval("local foo = redis.call('set','mykey','myval'); return {type(foo),foo['ok']}", 0, function (err, res) { - if (err) throw err; - assert.strictEqual(2, res.length, name); - assert.strictEqual("table", res[0], name); - assert.strictEqual("OK", res[1], name); - }); - // test {EVAL - Redis error reply -> Lua type conversion} - client.set("error reply key", "error reply value", function (err, res) { - if (err) throw err; - client.eval("local foo = redis.pcall('incr','error reply key'); return {type(foo),foo['err']}", 0, function (err, res) { - if (err) throw err; - assert.strictEqual(2, res.length, name); - assert.strictEqual("table", res[0], name); - assert.strictEqual("ERR value is not an integer or out of range", res[1], name); - }); - }); - // test {EVAL - Redis nil bulk reply -> Lua type conversion} - client.del("nil reply key", function (err, res) { - if (err) throw err; - client.eval("local foo = redis.call('get','nil reply key'); return {type(foo),foo == false}", 0, function (err, res) { - if (err) throw err; - assert.strictEqual(2, res.length, name); - assert.strictEqual("boolean", res[0], name); - assert.strictEqual(1, res[1], name); - next(name); - }); - }); - } else { - console.log("Skipping " + name + " because server version isn't new enough."); - next(name); - } -}; - -tests.WATCH_MULTI = function () { - var name = 'WATCH_MULTI', multi; - - if (client.server_info.versions[0] >= 2 && client.server_info.versions[1] >= 1) { - client.watch(name); - client.incr(name); - multi = client.multi(); - multi.incr(name); - multi.exec(last(name, require_null(name))); - } else { - console.log("Skipping " + name + " because server version isn't new enough."); - next(name); - } -}; - -tests.detect_buffers = function () { - var name = "detect_buffers", detect_client = redis.createClient(null, null, {detect_buffers: true}); - - detect_client.on("ready", function () { - // single Buffer or String - detect_client.set("string key 1", "string value"); - detect_client.get("string key 1", require_string("string value", name)); - detect_client.get(new Buffer("string key 1"), function (err, reply) { - assert.strictEqual(null, err, name); - assert.strictEqual(true, Buffer.isBuffer(reply), name); - assert.strictEqual("", reply.inspect(), name); - }); - - detect_client.hmset("hash key 2", "key 1", "val 1", "key 2", "val 2"); - // array of Buffers or Strings - detect_client.hmget("hash key 2", "key 1", "key 2", function (err, reply) { - assert.strictEqual(null, err, name); - assert.strictEqual(true, Array.isArray(reply), name); - assert.strictEqual(2, reply.length, name); - assert.strictEqual("val 1", reply[0], name); - assert.strictEqual("val 2", reply[1], name); - }); - detect_client.hmget(new Buffer("hash key 2"), "key 1", "key 2", function (err, reply) { - assert.strictEqual(null, err, name); - assert.strictEqual(true, Array.isArray(reply)); - assert.strictEqual(2, reply.length, name); - assert.strictEqual(true, Buffer.isBuffer(reply[0])); - assert.strictEqual(true, Buffer.isBuffer(reply[1])); - assert.strictEqual("", reply[0].inspect(), name); - assert.strictEqual("", reply[1].inspect(), name); - }); - - // Object of Buffers or Strings - detect_client.hgetall("hash key 2", function (err, reply) { - assert.strictEqual(null, err, name); - assert.strictEqual("object", typeof reply, name); - assert.strictEqual(2, Object.keys(reply).length, name); - assert.strictEqual("val 1", reply["key 1"], name); - assert.strictEqual("val 2", reply["key 2"], name); - }); - detect_client.hgetall(new Buffer("hash key 2"), function (err, reply) { - assert.strictEqual(null, err, name); - assert.strictEqual("object", typeof reply, name); - assert.strictEqual(2, Object.keys(reply).length, name); - assert.strictEqual(true, Buffer.isBuffer(reply["key 1"])); - assert.strictEqual(true, Buffer.isBuffer(reply["key 2"])); - assert.strictEqual("", reply["key 1"].inspect(), name); - assert.strictEqual("", reply["key 2"].inspect(), name); - }); - - detect_client.quit(function (err, res) { - next(name); - }); - }); -}; - -tests.socket_nodelay = function () { - var name = "socket_nodelay", c1, c2, c3, ready_count = 0, quit_count = 0; - - c1 = redis.createClient(null, null, {socket_nodelay: true}); - c2 = redis.createClient(null, null, {socket_nodelay: false}); - c3 = redis.createClient(null, null); - - function quit_check() { - quit_count++; - - if (quit_count === 3) { - next(name); - } - } - - function run() { - assert.strictEqual(true, c1.options.socket_nodelay, name); - assert.strictEqual(false, c2.options.socket_nodelay, name); - assert.strictEqual(true, c3.options.socket_nodelay, name); - - c1.set(["set key 1", "set val"], require_string("OK", name)); - c1.set(["set key 2", "set val"], require_string("OK", name)); - c1.get(["set key 1"], require_string("set val", name)); - c1.get(["set key 2"], require_string("set val", name)); - - c2.set(["set key 3", "set val"], require_string("OK", name)); - c2.set(["set key 4", "set val"], require_string("OK", name)); - c2.get(["set key 3"], require_string("set val", name)); - c2.get(["set key 4"], require_string("set val", name)); - - c3.set(["set key 5", "set val"], require_string("OK", name)); - c3.set(["set key 6", "set val"], require_string("OK", name)); - c3.get(["set key 5"], require_string("set val", name)); - c3.get(["set key 6"], require_string("set val", name)); - - c1.quit(quit_check); - c2.quit(quit_check); - c3.quit(quit_check); - } - - function ready_check() { - ready_count++; - if (ready_count === 3) { - run(); - } - } - - c1.on("ready", ready_check); - c2.on("ready", ready_check); - c3.on("ready", ready_check); -}; - -tests.reconnect = function () { - var name = "reconnect"; - - client.set("recon 1", "one"); - client.set("recon 2", "two", function (err, res) { - // Do not do this in normal programs. This is to simulate the server closing on us. - // For orderly shutdown in normal programs, do client.quit() - client.stream.destroy(); - }); - - client.on("reconnecting", function on_recon(params) { - client.on("connect", function on_connect() { - client.select(test_db_num, require_string("OK", name)); - client.get("recon 1", require_string("one", name)); - client.get("recon 1", require_string("one", name)); - client.get("recon 2", require_string("two", name)); - client.get("recon 2", require_string("two", name)); - client.removeListener("connect", on_connect); - client.removeListener("reconnecting", on_recon); - next(name); - }); - }); -}; - -tests.idle = function () { - var name = "idle"; - - client.on("idle", function on_idle() { - client.removeListener("idle", on_idle); - next(name); - }); - - client.set("idle", "test"); -}; - -tests.HSET = function () { - var key = "test hash", - field1 = new Buffer("0123456789"), - value1 = new Buffer("abcdefghij"), - field2 = new Buffer(0), - value2 = new Buffer(0), - name = "HSET"; - - client.HSET(key, field1, value1, require_number(1, name)); - client.HGET(key, field1, require_string(value1.toString(), name)); - - // Empty value - client.HSET(key, field1, value2, require_number(0, name)); - client.HGET([key, field1], require_string("", name)); - - // Empty key, empty value - client.HSET([key, field2, value1], require_number(1, name)); - client.HSET(key, field2, value2, last(name, require_number(0, name))); -}; - -tests.HLEN = function () { - var key = "test hash", - field1 = new Buffer("0123456789"), - value1 = new Buffer("abcdefghij"), - field2 = new Buffer(0), - value2 = new Buffer(0), - name = "HSET", - timeout = 1000; - - client.HSET(key, field1, value1, function (err, results) { - client.HLEN(key, function (err, len) { - assert.ok(2 === +len); - next(name); - }); - }); -} - -tests.HMSET_BUFFER_AND_ARRAY = function () { - // Saving a buffer and an array to the same key should not error - var key = "test hash", - field1 = "buffer", - value1 = new Buffer("abcdefghij"), - field2 = "array", - value2 = ["array contents"], - name = "HSET"; - - client.HMSET(key, field1, value1, field2, value2, last(name, require_string("OK", name))); -}; - -// TODO - add test for HMSET with optional callbacks - -tests.HMGET = function () { - var key1 = "test hash 1", key2 = "test hash 2", name = "HMGET"; - - // redis-like hmset syntax - client.HMSET(key1, "0123456789", "abcdefghij", "some manner of key", "a type of value", require_string("OK", name)); - - // fancy hmset syntax - client.HMSET(key2, { - "0123456789": "abcdefghij", - "some manner of key": "a type of value" - }, require_string("OK", name)); - - client.HMGET(key1, "0123456789", "some manner of key", function (err, reply) { - assert.strictEqual("abcdefghij", reply[0].toString(), name); - assert.strictEqual("a type of value", reply[1].toString(), name); - }); - - client.HMGET(key2, "0123456789", "some manner of key", function (err, reply) { - assert.strictEqual("abcdefghij", reply[0].toString(), name); - assert.strictEqual("a type of value", reply[1].toString(), name); - }); - - client.HMGET(key1, ["0123456789"], function (err, reply) { - assert.strictEqual("abcdefghij", reply[0], name); - }); - - client.HMGET(key1, ["0123456789", "some manner of key"], function (err, reply) { - assert.strictEqual("abcdefghij", reply[0], name); - assert.strictEqual("a type of value", reply[1], name); - }); - - client.HMGET(key1, "missing thing", "another missing thing", function (err, reply) { - assert.strictEqual(null, reply[0], name); - assert.strictEqual(null, reply[1], name); - next(name); - }); -}; - -tests.HINCRBY = function () { - var name = "HINCRBY"; - client.hset("hash incr", "value", 10, require_number(1, name)); - client.HINCRBY("hash incr", "value", 1, require_number(11, name)); - client.HINCRBY("hash incr", "value 2", 1, last(name, require_number(1, name))); -}; - -tests.SUBSCRIBE = function () { - var client1 = client, msg_count = 0, name = "SUBSCRIBE"; - - client1.on("subscribe", function (channel, count) { - if (channel === "chan1") { - client2.publish("chan1", "message 1", require_number(1, name)); - client2.publish("chan2", "message 2", require_number(1, name)); - client2.publish("chan1", "message 3", require_number(1, name)); - } - }); - - client1.on("unsubscribe", function (channel, count) { - if (count === 0) { - // make sure this connection can go into and out of pub/sub mode - client1.incr("did a thing", last(name, require_number(2, name))); - } - }); - - client1.on("message", function (channel, message) { - msg_count += 1; - assert.strictEqual("message " + msg_count, message.toString()); - if (msg_count === 3) { - client1.unsubscribe("chan1", "chan2"); - } - }); - - client1.set("did a thing", 1, require_string("OK", name)); - client1.subscribe("chan1", "chan2", function (err, results) { - assert.strictEqual(null, err, "result sent back unexpected error: " + err); - assert.strictEqual("chan1", results.toString(), name); - }); -}; - -tests.SUB_UNSUB_SUB = function () { - var name = "SUB_UNSUB_SUB"; - client3.subscribe('chan3'); - client3.unsubscribe('chan3'); - client3.subscribe('chan3', function (err, results) { - assert.strictEqual(null, err, "unexpected error: " + err); - client2.publish('chan3', 'foo'); - }); - client3.on('message', function (channel, message) { - assert.strictEqual(channel, 'chan3'); - assert.strictEqual(message, 'foo'); - next(name); - }); -}; - -tests.SUBSCRIBE_QUIT = function () { - var name = "SUBSCRIBE_QUIT"; - client3.on("end", function () { - next(name); - }); - client3.on("subscribe", function (channel, count) { - client3.quit(); - }); - client3.subscribe("chan3"); -}; - -tests.SUBSCRIBE_CLOSE_RESUBSCRIBE = function () { - var name = "SUBSCRIBE_CLOSE_RESUBSCRIBE"; - var c1 = redis.createClient(); - var c2 = redis.createClient(); - var count = 0; - - /* Create two clients. c1 subscribes to two channels, c2 will publish to them. - c2 publishes the first message. - c1 gets the message and drops its connection. It must resubscribe itself. - When it resubscribes, c2 publishes the second message, on the same channel - c1 gets the message and drops its connection. It must resubscribe itself, again. - When it resubscribes, c2 publishes the third message, on the second channel - c1 gets the message and drops its connection. When it reconnects, the test ends. - */ - - c1.on("message", function(channel, message) { - if (channel === "chan1") { - assert.strictEqual(message, "hi on channel 1"); - c1.stream.end(); - - } else if (channel === "chan2") { - assert.strictEqual(message, "hi on channel 2"); - c1.stream.end(); - - } else { - c1.quit(); - c2.quit(); - assert.fail("test failed"); - } - }) - - c1.subscribe("chan1", "chan2"); - - c2.once("ready", function() { - console.log("c2 is ready"); - c1.on("ready", function(err, results) { - console.log("c1 is ready", count); - - count++; - if (count == 1) { - c2.publish("chan1", "hi on channel 1"); - return; - - } else if (count == 2) { - c2.publish("chan2", "hi on channel 2"); - - } else { - c1.quit(function() { - c2.quit(function() { - next(name); - }); - }); - } - }); - - c2.publish("chan1", "hi on channel 1"); - - }); -}; - -tests.EXISTS = function () { - var name = "EXISTS"; - client.del("foo", "foo2", require_number_any(name)); - client.set("foo", "bar", require_string("OK", name)); - client.EXISTS("foo", require_number(1, name)); - client.EXISTS("foo2", last(name, require_number(0, name))); -}; - -tests.DEL = function () { - var name = "DEL"; - client.DEL("delkey", require_number_any(name)); - client.set("delkey", "delvalue", require_string("OK", name)); - client.DEL("delkey", require_number(1, name)); - client.exists("delkey", require_number(0, name)); - client.DEL("delkey", require_number(0, name)); - client.mset("delkey", "delvalue", "delkey2", "delvalue2", require_string("OK", name)); - client.DEL("delkey", "delkey2", last(name, require_number(2, name))); -}; - -tests.TYPE = function () { - var name = "TYPE"; - client.set(["string key", "should be a string"], require_string("OK", name)); - client.rpush(["list key", "should be a list"], require_number_pos(name)); - client.sadd(["set key", "should be a set"], require_number_any(name)); - client.zadd(["zset key", "10.0", "should be a zset"], require_number_any(name)); - client.hset(["hash key", "hashtest", "should be a hash"], require_number_any(0, name)); - - client.TYPE(["string key"], require_string("string", name)); - client.TYPE(["list key"], require_string("list", name)); - client.TYPE(["set key"], require_string("set", name)); - client.TYPE(["zset key"], require_string("zset", name)); - client.TYPE("not here yet", require_string("none", name)); - client.TYPE(["hash key"], last(name, require_string("hash", name))); -}; - -tests.KEYS = function () { - var name = "KEYS"; - client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", name)); - client.KEYS(["test keys*"], function (err, results) { - assert.strictEqual(null, err, "result sent back unexpected error: " + err); - assert.strictEqual(2, results.length, name); - assert.strictEqual("test keys 1", results[0].toString(), name); - assert.strictEqual("test keys 2", results[1].toString(), name); - next(name); - }); -}; - -tests.MULTIBULK_ZERO_LENGTH = function () { - var name = "MULTIBULK_ZERO_LENGTH"; - client.KEYS(['users:*'], function (err, results) { - assert.strictEqual(null, err, 'error on empty multibulk reply'); - assert.strictEqual(true, is_empty_array(results), "not an empty array"); - next(name); - }); -}; - -tests.RANDOMKEY = function () { - var name = "RANDOMKEY"; - client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], require_string("OK", name)); - client.RANDOMKEY([], function (err, results) { - assert.strictEqual(null, err, name + " result sent back unexpected error: " + err); - assert.strictEqual(true, /\w+/.test(results), name); - next(name); - }); -}; - -tests.RENAME = function () { - var name = "RENAME"; - client.set(['foo', 'bar'], require_string("OK", name)); - client.RENAME(["foo", "new foo"], require_string("OK", name)); - client.exists(["foo"], require_number(0, name)); - client.exists(["new foo"], last(name, require_number(1, name))); -}; - -tests.RENAMENX = function () { - var name = "RENAMENX"; - client.set(['foo', 'bar'], require_string("OK", name)); - client.set(['foo2', 'bar2'], require_string("OK", name)); - client.RENAMENX(["foo", "foo2"], require_number(0, name)); - client.exists(["foo"], require_number(1, name)); - client.exists(["foo2"], require_number(1, name)); - client.del(["foo2"], require_number(1, name)); - client.RENAMENX(["foo", "foo2"], require_number(1, name)); - client.exists(["foo"], require_number(0, name)); - client.exists(["foo2"], last(name, require_number(1, name))); -}; - -tests.DBSIZE = function () { - var name = "DBSIZE"; - client.set(['foo', 'bar'], require_string("OK", name)); - client.DBSIZE([], last(name, require_number_pos("DBSIZE"))); -}; - -tests.GET = function () { - var name = "GET"; - client.set(["get key", "get val"], require_string("OK", name)); - client.GET(["get key"], last(name, require_string("get val", name))); -}; - -tests.SET = function () { - var name = "SET"; - client.SET(["set key", "set val"], require_string("OK", name)); - client.get(["set key"], last(name, require_string("set val", name))); -}; - -tests.GETSET = function () { - var name = "GETSET"; - client.set(["getset key", "getset val"], require_string("OK", name)); - client.GETSET(["getset key", "new getset val"], require_string("getset val", name)); - client.get(["getset key"], last(name, require_string("new getset val", name))); -}; - -tests.MGET = function () { - var name = "MGET"; - client.mset(["mget keys 1", "mget val 1", "mget keys 2", "mget val 2", "mget keys 3", "mget val 3"], require_string("OK", name)); - client.MGET("mget keys 1", "mget keys 2", "mget keys 3", function (err, results) { - assert.strictEqual(null, err, "result sent back unexpected error: " + err); - assert.strictEqual(3, results.length, name); - assert.strictEqual("mget val 1", results[0].toString(), name); - assert.strictEqual("mget val 2", results[1].toString(), name); - assert.strictEqual("mget val 3", results[2].toString(), name); - }); - client.MGET(["mget keys 1", "mget keys 2", "mget keys 3"], function (err, results) { - assert.strictEqual(null, err, "result sent back unexpected error: " + err); - assert.strictEqual(3, results.length, name); - assert.strictEqual("mget val 1", results[0].toString(), name); - assert.strictEqual("mget val 2", results[1].toString(), name); - assert.strictEqual("mget val 3", results[2].toString(), name); - }); - client.MGET(["mget keys 1", "some random shit", "mget keys 2", "mget keys 3"], function (err, results) { - assert.strictEqual(null, err, "result sent back unexpected error: " + err); - assert.strictEqual(4, results.length, name); - assert.strictEqual("mget val 1", results[0].toString(), name); - assert.strictEqual(null, results[1], name); - assert.strictEqual("mget val 2", results[2].toString(), name); - assert.strictEqual("mget val 3", results[3].toString(), name); - next(name); - }); -}; - -tests.SETNX = function () { - var name = "SETNX"; - client.set(["setnx key", "setnx value"], require_string("OK", name)); - client.SETNX(["setnx key", "new setnx value"], require_number(0, name)); - client.del(["setnx key"], require_number(1, name)); - client.exists(["setnx key"], require_number(0, name)); - client.SETNX(["setnx key", "new setnx value"], require_number(1, name)); - client.exists(["setnx key"], last(name, require_number(1, name))); -}; - -tests.SETEX = function () { - var name = "SETEX"; - client.SETEX(["setex key", "100", "setex val"], require_string("OK", name)); - client.exists(["setex key"], require_number(1, name)); - client.ttl(["setex key"], last(name, require_number_pos(name))); -}; - -tests.MSETNX = function () { - var name = "MSETNX"; - client.mset(["mset1", "val1", "mset2", "val2", "mset3", "val3"], require_string("OK", name)); - client.MSETNX(["mset3", "val3", "mset4", "val4"], require_number(0, name)); - client.del(["mset3"], require_number(1, name)); - client.MSETNX(["mset3", "val3", "mset4", "val4"], require_number(1, name)); - client.exists(["mset3"], require_number(1, name)); - client.exists(["mset4"], last(name, require_number(1, name))); -}; - -tests.HGETALL = function () { - var name = "HGETALL"; - client.hmset(["hosts", "mjr", "1", "another", "23", "home", "1234"], require_string("OK", name)); - client.HGETALL(["hosts"], function (err, obj) { - assert.strictEqual(null, err, name + " result sent back unexpected error: " + err); - assert.strictEqual(3, Object.keys(obj).length, name); - assert.strictEqual("1", obj.mjr.toString(), name); - assert.strictEqual("23", obj.another.toString(), name); - assert.strictEqual("1234", obj.home.toString(), name); - next(name); - }); -}; - -tests.HGETALL_NULL = function () { - var name = "HGETALL_NULL"; - - client.hgetall("missing", function (err, obj) { - assert.strictEqual(null, err); - assert.strictEqual(null, obj); - next(name); - }); -}; - -tests.UTF8 = function () { - var name = "UTF8", - utf8_sample = "ಠ_ಠ"; - - client.set(["utf8test", utf8_sample], require_string("OK", name)); - client.get(["utf8test"], function (err, obj) { - assert.strictEqual(null, err); - assert.strictEqual(utf8_sample, obj); - next(name); - }); -}; - -// Set tests were adapted from Brian Hammond's redis-node-client.js, which has a comprehensive test suite - -tests.SADD = function () { - var name = "SADD"; - - client.del('set0'); - client.SADD('set0', 'member0', require_number(1, name)); - client.sadd('set0', 'member0', last(name, require_number(0, name))); -}; - -tests.SADD2 = function () { - var name = "SADD2"; - - client.del("set0"); - client.sadd("set0", ["member0", "member1", "member2"], require_number(3, name)); - client.smembers("set0", function (err, res) { - assert.strictEqual(res.length, 3); - assert.strictEqual(res[0], "member0"); - assert.strictEqual(res[1], "member1"); - assert.strictEqual(res[2], "member2"); - }); - client.SADD("set1", ["member0", "member1", "member2"], require_number(3, name)); - client.smembers("set1", function (err, res) { - assert.strictEqual(res.length, 3); - assert.strictEqual(res[0], "member0"); - assert.strictEqual(res[1], "member1"); - assert.strictEqual(res[2], "member2"); - next(name); - }); -}; - -tests.SISMEMBER = function () { - var name = "SISMEMBER"; - - client.del('set0'); - client.sadd('set0', 'member0', require_number(1, name)); - client.sismember('set0', 'member0', require_number(1, name)); - client.sismember('set0', 'member1', last(name, require_number(0, name))); -}; - -tests.SCARD = function () { - var name = "SCARD"; - - client.del('set0'); - client.sadd('set0', 'member0', require_number(1, name)); - client.scard('set0', require_number(1, name)); - client.sadd('set0', 'member1', require_number(1, name)); - client.scard('set0', last(name, require_number(2, name))); -}; - -tests.SREM = function () { - var name = "SREM"; - - client.del('set0'); - client.sadd('set0', 'member0', require_number(1, name)); - client.srem('set0', 'foobar', require_number(0, name)); - client.srem('set0', 'member0', require_number(1, name)); - client.scard('set0', last(name, require_number(0, name))); -}; - -tests.SPOP = function () { - var name = "SPOP"; - - client.del('zzz'); - client.sadd('zzz', 'member0', require_number(1, name)); - client.scard('zzz', require_number(1, name)); - - client.spop('zzz', function (err, value) { - if (err) { - assert.fail(err); - } - assert.equal(value, 'member0', name); - }); - - client.scard('zzz', last(name, require_number(0, name))); -}; - -tests.SDIFF = function () { - var name = "SDIFF"; - - client.del('foo'); - client.sadd('foo', 'x', require_number(1, name)); - client.sadd('foo', 'a', require_number(1, name)); - client.sadd('foo', 'b', require_number(1, name)); - client.sadd('foo', 'c', require_number(1, name)); - - client.sadd('bar', 'c', require_number(1, name)); - - client.sadd('baz', 'a', require_number(1, name)); - client.sadd('baz', 'd', require_number(1, name)); - - client.sdiff('foo', 'bar', 'baz', function (err, values) { - if (err) { - assert.fail(err, name); - } - values.sort(); - assert.equal(values.length, 2, name); - assert.equal(values[0], 'b', name); - assert.equal(values[1], 'x', name); - next(name); - }); -}; - -tests.SDIFFSTORE = function () { - var name = "SDIFFSTORE"; - - client.del('foo'); - client.del('bar'); - client.del('baz'); - client.del('quux'); - - client.sadd('foo', 'x', require_number(1, name)); - client.sadd('foo', 'a', require_number(1, name)); - client.sadd('foo', 'b', require_number(1, name)); - client.sadd('foo', 'c', require_number(1, name)); - - client.sadd('bar', 'c', require_number(1, name)); - - client.sadd('baz', 'a', require_number(1, name)); - client.sadd('baz', 'd', require_number(1, name)); - - // NB: SDIFFSTORE returns the number of elements in the dstkey - - client.sdiffstore('quux', 'foo', 'bar', 'baz', require_number(2, name)); - - client.smembers('quux', function (err, values) { - if (err) { - assert.fail(err, name); - } - var members = buffers_to_strings(values).sort(); - - assert.deepEqual(members, [ 'b', 'x' ], name); - next(name); - }); -}; - -tests.SMEMBERS = function () { - var name = "SMEMBERS"; - - client.del('foo'); - client.sadd('foo', 'x', require_number(1, name)); - - client.smembers('foo', function (err, members) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(members), [ 'x' ], name); - }); - - client.sadd('foo', 'y', require_number(1, name)); - - client.smembers('foo', function (err, values) { - if (err) { - assert.fail(err, name); - } - assert.equal(values.length, 2, name); - var members = buffers_to_strings(values).sort(); - - assert.deepEqual(members, [ 'x', 'y' ], name); - next(name); - }); -}; - -tests.SMOVE = function () { - var name = "SMOVE"; - - client.del('foo'); - client.del('bar'); - - client.sadd('foo', 'x', require_number(1, name)); - client.smove('foo', 'bar', 'x', require_number(1, name)); - client.sismember('foo', 'x', require_number(0, name)); - client.sismember('bar', 'x', require_number(1, name)); - client.smove('foo', 'bar', 'x', last(name, require_number(0, name))); -}; - -tests.SINTER = function () { - var name = "SINTER"; - - client.del('sa'); - client.del('sb'); - client.del('sc'); - - client.sadd('sa', 'a', require_number(1, name)); - client.sadd('sa', 'b', require_number(1, name)); - client.sadd('sa', 'c', require_number(1, name)); - - client.sadd('sb', 'b', require_number(1, name)); - client.sadd('sb', 'c', require_number(1, name)); - client.sadd('sb', 'd', require_number(1, name)); - - client.sadd('sc', 'c', require_number(1, name)); - client.sadd('sc', 'd', require_number(1, name)); - client.sadd('sc', 'e', require_number(1, name)); - - client.sinter('sa', 'sb', function (err, intersection) { - if (err) { - assert.fail(err, name); - } - assert.equal(intersection.length, 2, name); - assert.deepEqual(buffers_to_strings(intersection).sort(), [ 'b', 'c' ], name); - }); - - client.sinter('sb', 'sc', function (err, intersection) { - if (err) { - assert.fail(err, name); - } - assert.equal(intersection.length, 2, name); - assert.deepEqual(buffers_to_strings(intersection).sort(), [ 'c', 'd' ], name); - }); - - client.sinter('sa', 'sc', function (err, intersection) { - if (err) { - assert.fail(err, name); - } - assert.equal(intersection.length, 1, name); - assert.equal(intersection[0], 'c', name); - }); - - // 3-way - - client.sinter('sa', 'sb', 'sc', function (err, intersection) { - if (err) { - assert.fail(err, name); - } - assert.equal(intersection.length, 1, name); - assert.equal(intersection[0], 'c', name); - next(name); - }); -}; - -tests.SINTERSTORE = function () { - var name = "SINTERSTORE"; - - client.del('sa'); - client.del('sb'); - client.del('sc'); - client.del('foo'); - - client.sadd('sa', 'a', require_number(1, name)); - client.sadd('sa', 'b', require_number(1, name)); - client.sadd('sa', 'c', require_number(1, name)); - - client.sadd('sb', 'b', require_number(1, name)); - client.sadd('sb', 'c', require_number(1, name)); - client.sadd('sb', 'd', require_number(1, name)); - - client.sadd('sc', 'c', require_number(1, name)); - client.sadd('sc', 'd', require_number(1, name)); - client.sadd('sc', 'e', require_number(1, name)); - - client.sinterstore('foo', 'sa', 'sb', 'sc', require_number(1, name)); - - client.smembers('foo', function (err, members) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(members), [ 'c' ], name); - next(name); - }); -}; - -tests.SUNION = function () { - var name = "SUNION"; - - client.del('sa'); - client.del('sb'); - client.del('sc'); - - client.sadd('sa', 'a', require_number(1, name)); - client.sadd('sa', 'b', require_number(1, name)); - client.sadd('sa', 'c', require_number(1, name)); - - client.sadd('sb', 'b', require_number(1, name)); - client.sadd('sb', 'c', require_number(1, name)); - client.sadd('sb', 'd', require_number(1, name)); - - client.sadd('sc', 'c', require_number(1, name)); - client.sadd('sc', 'd', require_number(1, name)); - client.sadd('sc', 'e', require_number(1, name)); - - client.sunion('sa', 'sb', 'sc', function (err, union) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(union).sort(), ['a', 'b', 'c', 'd', 'e'], name); - next(name); - }); -}; - -tests.SUNIONSTORE = function () { - var name = "SUNIONSTORE"; - - client.del('sa'); - client.del('sb'); - client.del('sc'); - client.del('foo'); - - client.sadd('sa', 'a', require_number(1, name)); - client.sadd('sa', 'b', require_number(1, name)); - client.sadd('sa', 'c', require_number(1, name)); - - client.sadd('sb', 'b', require_number(1, name)); - client.sadd('sb', 'c', require_number(1, name)); - client.sadd('sb', 'd', require_number(1, name)); - - client.sadd('sc', 'c', require_number(1, name)); - client.sadd('sc', 'd', require_number(1, name)); - client.sadd('sc', 'e', require_number(1, name)); - - client.sunionstore('foo', 'sa', 'sb', 'sc', function (err, cardinality) { - if (err) { - assert.fail(err, name); - } - assert.equal(cardinality, 5, name); - }); - - client.smembers('foo', function (err, members) { - if (err) { - assert.fail(err, name); - } - assert.equal(members.length, 5, name); - assert.deepEqual(buffers_to_strings(members).sort(), ['a', 'b', 'c', 'd', 'e'], name); - next(name); - }); -}; - -// SORT test adapted from Brian Hammond's redis-node-client.js, which has a comprehensive test suite - -tests.SORT = function () { - var name = "SORT"; - - client.del('y'); - client.del('x'); - - client.rpush('y', 'd', require_number(1, name)); - client.rpush('y', 'b', require_number(2, name)); - client.rpush('y', 'a', require_number(3, name)); - client.rpush('y', 'c', require_number(4, name)); - - client.rpush('x', '3', require_number(1, name)); - client.rpush('x', '9', require_number(2, name)); - client.rpush('x', '2', require_number(3, name)); - client.rpush('x', '4', require_number(4, name)); - - client.set('w3', '4', require_string("OK", name)); - client.set('w9', '5', require_string("OK", name)); - client.set('w2', '12', require_string("OK", name)); - client.set('w4', '6', require_string("OK", name)); - - client.set('o2', 'buz', require_string("OK", name)); - client.set('o3', 'foo', require_string("OK", name)); - client.set('o4', 'baz', require_string("OK", name)); - client.set('o9', 'bar', require_string("OK", name)); - - client.set('p2', 'qux', require_string("OK", name)); - client.set('p3', 'bux', require_string("OK", name)); - client.set('p4', 'lux', require_string("OK", name)); - client.set('p9', 'tux', require_string("OK", name)); - - // Now the data has been setup, we can test. - - // But first, test basic sorting. - - // y = [ d b a c ] - // sort y ascending = [ a b c d ] - // sort y descending = [ d c b a ] - - client.sort('y', 'asc', 'alpha', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), ['a', 'b', 'c', 'd'], name); - }); - - client.sort('y', 'desc', 'alpha', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), ['d', 'c', 'b', 'a'], name); - }); - - // Now try sorting numbers in a list. - // x = [ 3, 9, 2, 4 ] - - client.sort('x', 'asc', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), [2, 3, 4, 9], name); - }); - - client.sort('x', 'desc', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), [9, 4, 3, 2], name); - }); - - // Try sorting with a 'by' pattern. - - client.sort('x', 'by', 'w*', 'asc', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), [3, 9, 4, 2], name); - }); - - // Try sorting with a 'by' pattern and 1 'get' pattern. - - client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), ['foo', 'bar', 'baz', 'buz'], name); - }); - - // Try sorting with a 'by' pattern and 2 'get' patterns. - - client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', function (err, sorted) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(sorted), ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux'], name); - }); - - // Try sorting with a 'by' pattern and 2 'get' patterns. - // Instead of getting back the sorted set/list, store the values to a list. - // Then check that the values are there in the expected order. - - client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', 'store', 'bacon', function (err) { - if (err) { - assert.fail(err, name); - } - }); - - client.lrange('bacon', 0, -1, function (err, values) { - if (err) { - assert.fail(err, name); - } - assert.deepEqual(buffers_to_strings(values), ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux'], name); - next(name); - }); - - // TODO - sort by hash value -}; - -tests.MONITOR = function () { - var name = "MONITOR", responses = [], monitor_client; - - monitor_client = redis.createClient(); - monitor_client.monitor(function (err, res) { - client.mget("some", "keys", "foo", "bar"); - client.set("json", JSON.stringify({ - foo: "123", - bar: "sdflkdfsjk", - another: false - })); - }); - monitor_client.on("monitor", function (time, args) { - // skip monitor command for Redis <= 2.4.16 - if (args[0] === "monitor") return; - - responses.push(args); - if (responses.length === 2) { - assert.strictEqual(5, responses[0].length); - assert.strictEqual("mget", responses[0][0]); - assert.strictEqual("some", responses[0][1]); - assert.strictEqual("keys", responses[0][2]); - assert.strictEqual("foo", responses[0][3]); - assert.strictEqual("bar", responses[0][4]); - assert.strictEqual(3, responses[1].length); - assert.strictEqual("set", responses[1][0]); - assert.strictEqual("json", responses[1][1]); - assert.strictEqual('{"foo":"123","bar":"sdflkdfsjk","another":false}', responses[1][2]); - monitor_client.quit(function (err, res) { - next(name); - }); - } - }); -}; - -tests.BLPOP = function () { - var name = "BLPOP"; - - client.rpush("blocking list", "initial value", function (err, res) { - client2.BLPOP("blocking list", 0, function (err, res) { - assert.strictEqual("blocking list", res[0].toString()); - assert.strictEqual("initial value", res[1].toString()); - - client.rpush("blocking list", "wait for this value"); - }); - client2.BLPOP("blocking list", 0, function (err, res) { - assert.strictEqual("blocking list", res[0].toString()); - assert.strictEqual("wait for this value", res[1].toString()); - next(name); - }); - }); -}; - -tests.BLPOP_TIMEOUT = function () { - var name = "BLPOP_TIMEOUT"; - - // try to BLPOP the list again, which should be empty. This should timeout and return null. - client2.BLPOP("blocking list", 1, function (err, res) { - if (err) { - throw err; - } - - assert.strictEqual(res, null); - next(name); - }); -}; - -tests.EXPIRE = function () { - var name = "EXPIRE"; - client.set(['expiry key', 'bar'], require_string("OK", name)); - client.EXPIRE(["expiry key", "1"], require_number_pos(name)); - setTimeout(function () { - client.exists(["expiry key"], last(name, require_number(0, name))); - }, 2000); -}; - -tests.TTL = function () { - var name = "TTL"; - client.set(["ttl key", "ttl val"], require_string("OK", name)); - client.expire(["ttl key", "100"], require_number_pos(name)); - setTimeout(function () { - client.TTL(["ttl key"], last(name, require_number_pos(0, name))); - }, 500); -}; - -tests.OPTIONAL_CALLBACK = function () { - var name = "OPTIONAL_CALLBACK"; - client.del("op_cb1"); - client.set("op_cb1", "x"); - client.get("op_cb1", last(name, require_string("x", name))); -}; - -tests.OPTIONAL_CALLBACK_UNDEFINED = function () { - var name = "OPTIONAL_CALLBACK_UNDEFINED"; - client.del("op_cb2"); - client.set("op_cb2", "y", undefined); - client.get("op_cb2", last(name, require_string("y", name))); -}; - -tests.HMSET_THROWS_ON_NON_STRINGS = function () { - var name = "HMSET_THROWS_ON_NON_STRINGS"; - var hash = name; - var data = { "a": [ "this is not a string" ] }; - - client.hmset(hash, data, cb); - function cb(e, r) { - assert(e); // should be an error! - } - - // alternative way it throws - function thrower() { - client.hmset(hash, data); - } - assert.throws(thrower); - next(name); -}; - -tests.ENABLE_OFFLINE_QUEUE_TRUE = function () { - var name = "ENABLE_OFFLINE_QUEUE_TRUE"; - var cli = redis.createClient(9999, null, { - max_attempts: 1 - // default :) - // enable_offline_queue: true - }); - cli.on('error', function(e) { - // ignore, b/c expecting a "can't connect" error - }); - return setTimeout(function() { - cli.set(name, name, function(err, result) { - assert.ifError(err); - }); - - return setTimeout(function(){ - assert.strictEqual(cli.offline_queue.length, 1); - return next(name); - }, 25); - }, 50); -}; - -tests.ENABLE_OFFLINE_QUEUE_FALSE = function () { - var name = "ENABLE_OFFLINE_QUEUE_FALSE"; - var cli = redis.createClient(9999, null, { - max_attempts: 1, - enable_offline_queue: false - }); - cli.on('error', function() { - // ignore, see above - }); - assert.throws(function () { - cli.set(name, name) - }) - assert.doesNotThrow(function () { - cli.set(name, name, function (err) { - // should callback with an error - assert.ok(err); - setTimeout(function () { - next(name); - }, 50); - }); - }); -}; - -// TODO - need a better way to test auth, maybe auto-config a local Redis server or something. -// Yes, this is the real password. Please be nice, thanks. -tests.auth = function () { - var name = "AUTH", client4, ready_count = 0; - - client4 = redis.createClient(9006, "filefish.redistogo.com"); - client4.auth("664b1b6aaf134e1ec281945a8de702a9", function (err, res) { - assert.strictEqual(null, err, name); - assert.strictEqual("OK", res.toString(), name); - }); - - // test auth, then kill the connection so it'll auto-reconnect and auto-re-auth - client4.on("ready", function () { - ready_count++; - if (ready_count === 1) { - client4.stream.destroy(); - } else { - client4.quit(function (err, res) { - next(name); - }); - } - }); -}; - -all_tests = Object.keys(tests); -all_start = new Date(); -test_count = 0; - -run_next_test = function run_next_test() { - var test_name = all_tests.shift(); - if (typeof tests[test_name] === "function") { - util.print('- \x1b[1m' + test_name.toLowerCase() + '\x1b[0m:'); - cur_start = new Date(); - test_count += 1; - tests[test_name](); - } else { - console.log('\n completed \x1b[32m%d\x1b[0m tests in \x1b[33m%d\x1b[0m ms\n', test_count, new Date() - all_start); - client.quit(); - client2.quit(); - } -}; - -client.once("ready", function start_tests() { - console.log("Connected to " + client.host + ":" + client.port + ", Redis server version " + client.server_info.redis_version + "\n"); - console.log("Using reply parser " + client.reply_parser.name); - - run_next_test(); - - connected = true; -}); - -client.on('end', function () { - ended = true; -}); - -// Exit immediately on connection failure, which triggers "exit", below, which fails the test -client.on("error", function (err) { - console.error("client: " + err.stack); - process.exit(); -}); -client2.on("error", function (err) { - console.error("client2: " + err.stack); - process.exit(); -}); -client3.on("error", function (err) { - console.error("client3: " + err.stack); - process.exit(); -}); -client.on("reconnecting", function (params) { - console.log("reconnecting: " + util.inspect(params)); -}); - -process.on('uncaughtException', function (err) { - console.error("Uncaught exception: " + err.stack); - process.exit(1); -}); - -process.on('exit', function (code) { - assert.equal(true, connected); - assert.equal(true, ended); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/.npmignore deleted file mode 100644 index c27cb503..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/node_modules -support diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/History.md deleted file mode 100644 index 0867b2f3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/History.md +++ /dev/null @@ -1,237 +0,0 @@ - -0.9.16 / 2013-06-06 -=================== - - * transports: fix escaping for tests - -0.9.15 / 2013-06-06 -=================== - - * transports: added unescaping for escaped htmlfile - * skipped 12-14 to match socket.io server version - -0.9.11 / 2012-11-02 -=================== - - * Enable use of 'xhr' transport in Node.js - * Fix the problem with disconnecting xhr-polling users - * Add should to devDependencies - * Prefer XmlHttpRequest if CORS is available - * Make client compatible with AMD loaders. - -0.9.10 / 2012-08-10 -=================== - - * fix removeAllListeners to behave as expected. - * set withCredentials to true only if xdomain. - * socket: disable disconnect on unload by default. - -0.9.9 / 2012-08-01 -================== - - * socket: fixed disconnect xhr url and made it actually sync - * *: bump xmlhttprequest dep - -0.9.8 / 2012-07-24 -================== - - * Fixed build. - -0.9.7 / 2012-07-24 -================== - - * iOS websocket crash fix. - * Fixed potential `open` collision. - * Fixed disconnectSync. - -0.9.6 / 2012-04-17 -================== - - * Don't position the jsonp form off the screen (android fix). - -0.9.5 / 2012-04-05 -================== - - * Bumped version. - -0.9.4 / 2012-04-01 -================== - - * Fixes polling loop upon reconnect advice (fixes #438). - -0.9.3 / 2012-03-28 -================== - - * Fix XHR.check, which was throwing an error transparently and causing non-IE browsers to fall back to JSONP [mikito] - * Fixed forced disconnect on window close [zzzaaa] - -0.9.2 / 2012-03-13 -================== - - * Transport order set by "options" [zzzaaa] - -0.9.1-1 / 2012-03-02 -==================== - - * Fixed active-x-obfuscator NPM dependency. - -0.9.1 / 2012-03-02 -================== - - * Misc corrections. - * Added warning within Firefox about webworker test in test runner. - * Update ws dependency [einaros] - * Implemented client side heartbeat checks. [felixge] - * Improved Firewall support with ActiveX obfuscation. [felixge] - * Fixed error handling during connection process. [Outsideris] - -0.9.0 / 2012-02-26 -================== - - * Added DS_Store to gitignore. - * Updated depedencies. - * Bumped uglify - * Tweaking code so it doesn't throw an exception when used inside a WebWorker in Firefox - * Do not rely on Array.prototype.indexOf as it breaks with pages that use the Prototype.js library. - * Windows support landed - * Use @einaros ws module instead of the old crap one - * Fix for broken closeTimeout and 'IE + xhr' goes into infinite loop on disconnection - * Disabled reconnection on error if reconnect option is set to false - * Set withCredentials to true before xhr to fix authentication - * Clears the timeout from reconnection attempt when there is a successful or failed reconnection. - This fixes the issue of setTimeout's carrying over from previous reconnection - and changing (skipping) values of self.reconnectionDelay in the newer reconnection. - * Removed decoding of parameters when chunking the query string. - This was used later on to construct the url to post to the socket.io server - for connection and if we're adding custom parameters of our own to this url - (for example for OAuth authentication) they were being sent decoded, which is wrong. - -0.8.7 / 2011-11-05 -================== - - * Bumped client - -0.8.6 / 2011-10-27 -================== - - * Added WebWorker support. - * Fixed swfobject and web_socket.js to not assume window. - * Fixed CORS detection for webworker. - * Fix `defer` for webkit in a webworker. - * Fixed io.util.request to not rely on window. - * FIxed; use global instead of window and dont rely on document. - * Fixed; JSON-P handshake if CORS is not available. - * Made underlying Transport disconnection trigger immediate socket.io disconnect. - * Fixed warning when compressing with Google Closure Compiler. - * Fixed builder's uglify utf-8 support. - * Added workaround for loading indicator in FF jsonp-polling. [3rd-Eden] - * Fixed host discovery lookup. [holic] - * Fixed close timeout when disconnected/reconnecting. [jscharlach] - * Fixed jsonp-polling feature detection. - * Fixed jsonp-polling client POSTing of \n. - * Fixed test runner on IE6/7 - -0.8.5 / 2011-10-07 -================== - - * Bumped client - -0.8.4 / 2011-09-06 -================== - - * Corrected build - -0.8.3 / 2011-09-03 -================== - - * Fixed `\n` parsing for non-JSON packets. - * Fixed; make Socket.IO XHTML doctype compatible (fixes #460 from server) - * Fixed support for Node.JS running `socket.io-client`. - * Updated repository name in `package.json`. - * Added support for different policy file ports without having to port - forward 843 on the server side [3rd-Eden] - -0.8.2 / 2011-08-29 -================== - - * Fixed flashsocket detection. - -0.8.1 / 2011-08-29 -================== - - * Bump version. - -0.8.0 / 2011-08-28 -================== - - * Added MozWebSocket support (hybi-10 doesn't require API changes) [einaros]. - -0.7.11 / 2011-08-27 -=================== - - * Corrected previous release (missing build). - -0.7.10 / 2011-08-27 -=================== - - * Fix for failing fallback in websockets - -0.7.9 / 2011-08-12 -================== - - * Added check on `Socket#onConnect` to prevent double `connect` events on the main manager. - * Fixed socket namespace connect test. Remove broken alternative namespace connect test. - * Removed test handler for removed test. - * Bumped version to match `socket.io` server. - -0.7.5 / 2011-08-08 -================== - - * Added querystring support for `connect` [3rd-Eden] - * Added partial Node.JS transports support [3rd-Eden, josephg] - * Fixed builder test. - * Changed `util.inherit` to replicate Object.create / __proto__. - * Changed and cleaned up some acceptance tests. - * Fixed race condition with a test that could not be run multiple times. - * Added test for encoding a payload. - * Added the ability to override the transport to use in acceptance test [3rd-Eden] - * Fixed multiple connect packets [DanielBaulig] - * Fixed jsonp-polling over-buffering [3rd-Eden] - * Fixed ascii preservation in minified socket.io client [3rd-Eden] - * Fixed socket.io in situations where the page is not served through utf8. - * Fixed namespaces not reconnecting after disconnect [3rd-Eden] - * Fixed default port for secure connections. - -0.7.4 / 2011-07-12 -================== - - * Added `SocketNamespace#of` shortcut. [3rd-Eden] - * Fixed a IE payload decoding bug. [3rd-Eden] - * Honor document protocol, unless overriden. [dvv] - * Fixed new builder dependencies. [3rd-Eden] - -0.7.3 / 2011-06-30 -================== - - * Fixed; acks don't depend on arity. They're automatic for `.send` and - callback based for `.emit`. [dvv] - * Added support for sub-sockets authorization. [3rd-Eden] - * Added BC support for `new io.connect`. [fat] - * Fixed double `connect` events. [3rd-Eden] - * Fixed reconnection with jsonp-polling maintaining old sessionid. [franck34] - -0.7.2 / 2011-06-22 -================== - - * Added `noop` message type. - -0.7.1 / 2011-06-21 -================== - - * Bumped socket.io dependency version for acceptance tests. - -0.7.0 / 2011-06-21 -================== - - * http://socket.io/announcement.html - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/Makefile deleted file mode 100644 index f2d2f41a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/Makefile +++ /dev/null @@ -1,20 +0,0 @@ - -ALL_TESTS = $(shell find test/ -name '*.test.js') - -run-tests: - @./node_modules/.bin/expresso \ - -I lib \ - -I support \ - --serial \ - $(TESTS) - -test: - @$(MAKE) TESTS="$(ALL_TESTS)" run-tests - -test-acceptance: - @node support/test-runner/app $(TRANSPORT) - -build: - @node ./bin/builder.js - -.PHONY: test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/README.md deleted file mode 100644 index cdb7715a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/README.md +++ /dev/null @@ -1,246 +0,0 @@ -socket.io -========= - -#### Sockets for the rest of us - -The `socket.io` client is basically a simple HTTP Socket interface implementation. -It looks similar to WebSocket while providing additional features and -leveraging other transports when WebSocket is not supported by the user's -browser. - -```js -var socket = io.connect('http://domain.com'); -socket.on('connect', function () { - // socket connected -}); -socket.on('custom event', function () { - // server emitted a custom event -}); -socket.on('disconnect', function () { - // socket disconnected -}); -socket.send('hi there'); -``` - -### Recipes - -#### Utilizing namespaces (ie: multiple sockets) - -If you want to namespace all the messages and events emitted to a particular -endpoint, simply specify it as part of the `connect` uri: - -```js -var chat = io.connect('http://localhost/chat'); -chat.on('connect', function () { - // chat socket connected -}); - -var news = io.connect('/news'); // io.connect auto-detects host -news.on('connect', function () { - // news socket connected -}); -``` - -#### Emitting custom events - -To ease with the creation of applications, you can emit custom events outside -of the global `message` event. - -```js -var socket = io.connect(); -socket.emit('server custom event', { my: 'data' }); -``` - -#### Forcing disconnection - -```js -var socket = io.connect(); -socket.on('connect', function () { - socket.disconnect(); -}); -``` - -### Documentation - -#### io#connect - -```js -io.connect(uri, [options]); -``` - -##### Options: - -- *resource* - - socket.io - - The resource is what allows the `socket.io` server to identify incoming connections by `socket.io` clients. In other words, any HTTP server can implement socket.io and still serve other normal, non-realtime HTTP requests. - -- *transports* - -```js -['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling'] -``` - - A list of the transports to attempt to utilize (in order of preference). - -- *'connect timeout'* - -```js -5000 -``` - - The amount of milliseconds a transport has to create a connection before we consider it timed out. - -- *'try multiple transports'* - -```js -true -``` - - A boolean indicating if we should try other transports when the connectTimeout occurs. - -- *reconnect* - -```js -true -``` - - A boolean indicating if we should automatically reconnect if a connection is disconnected. - -- *'reconnection delay'* - -```js -500 -``` - - The amount of milliseconds before we try to connect to the server again. We are using a exponential back off algorithm for the following reconnections, on each reconnect attempt this value will get multiplied (500 > 1000 > 2000 > 4000 > 8000). - - -- *'max reconnection attempts'* - -```js -10 -``` - - The amount of attempts should we make using the current transport to connect to the server? After this we will do one final attempt, and re-try with all enabled transport methods before we give up. - -##### Properties: - -- *options* - - The passed in options combined with the defaults. - -- *connected* - - Whether the socket is connected or not. - -- *connecting* - - Whether the socket is connecting or not. - -- *reconnecting* - - Whether we are reconnecting or not. - -- *transport* - - The transport instance. - -##### Methods: - -- *connect(λ)* - - Establishes a connection. If λ is supplied as argument, it will be called once the connection is established. - -- *send(message)* - - A string of data to send. - -- *disconnect* - - Closes the connection. - -- *on(event, λ)* - - Adds a listener for the event *event*. - -- *once(event, λ)* - - Adds a one time listener for the event *event*. The listener is removed after the first time the event is fired. - -- *removeListener(event, λ)* - - Removes the listener λ for the event *event*. - -##### Events: - -- *connect* - - Fired when the connection is established and the handshake successful. - -- *connecting(transport_type)* - - Fired when a connection is attempted, passing the transport name. - -- *connect_failed* - - Fired when the connection timeout occurs after the last connection attempt. - This only fires if the `connectTimeout` option is set. - If the `tryTransportsOnConnectTimeout` option is set, this only fires once all - possible transports have been tried. - -- *message(message)* - - Fired when a message arrives from the server - -- *close* - - Fired when the connection is closed. Be careful with using this event, as some transports will fire it even under temporary, expected disconnections (such as XHR-Polling). - -- *disconnect* - - Fired when the connection is considered disconnected. - -- *reconnect(transport_type,reconnectionAttempts)* - - Fired when the connection has been re-established. This only fires if the `reconnect` option is set. - -- *reconnecting(reconnectionDelay,reconnectionAttempts)* - - Fired when a reconnection is attempted, passing the next delay for the next reconnection. - -- *reconnect_failed* - - Fired when all reconnection attempts have failed and we where unsuccessful in reconnecting to the server. - -### Contributors - -Guillermo Rauch <guillermo@learnboost.com> - -Arnout Kazemier <info@3rd-eden.com> - -### License - -(The MIT License) - -Copyright (c) 2010 LearnBoost <dev@learnboost.com> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js deleted file mode 100755 index 7383c75a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/bin/builder.js +++ /dev/null @@ -1,303 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var fs = require('fs') - , socket = require('../lib/io') - , uglify = require('uglify-js') - , activeXObfuscator = require('active-x-obfuscator'); - -/** - * License headers. - * - * @api private - */ - -var template = '/*! Socket.IO.%ext% build:' + socket.version + ', %type%. Copyright(c) 2011 LearnBoost MIT Licensed */\n' - , development = template.replace('%type%', 'development').replace('%ext%', 'js') - , production = template.replace('%type%', 'production').replace('%ext%', 'min.js'); - -/** - * If statements, these allows you to create serveride & client side compatible - * code using specially designed `if` statements that remove serverside - * designed code from the source files - * - * @api private - */ - -var starttagIF = '// if node' - , endtagIF = '// end node'; - -/** - * The modules that are required to create a base build of Socket.IO. - * - * @const - * @type {Array} - * @api private - */ - -var base = [ - 'io.js' - , 'util.js' - , 'events.js' - , 'json.js' - , 'parser.js' - , 'transport.js' - , 'socket.js' - , 'namespace.js' - ]; - -/** - * The available transports for Socket.IO. These are mapped as: - * - * - `key` the name of the transport - * - `value` the dependencies for the transport - * - * @const - * @type {Object} - * @api public - */ - -var baseTransports = { - 'websocket': ['transports/websocket.js'] - , 'flashsocket': [ - 'transports/websocket.js' - , 'transports/flashsocket.js' - , 'vendor/web-socket-js/swfobject.js' - , 'vendor/web-socket-js/web_socket.js' - ] - , 'htmlfile': ['transports/xhr.js', 'transports/htmlfile.js'] - /* FIXME: re-enable me once we have multi-part support - , 'xhr-multipart': ['transports/xhr.js', 'transports/xhr-multipart.js'] */ - , 'xhr-polling': ['transports/xhr.js', 'transports/xhr-polling.js'] - , 'jsonp-polling': [ - 'transports/xhr.js' - , 'transports/xhr-polling.js' - , 'transports/jsonp-polling.js' - ] -}; - -/** - * Wrappers for client-side usage. - * This enables usage in top-level browser window, client-side CommonJS systems and AMD loaders. - * If doing a node build for server-side client, this wrapper is NOT included. - * @api private - */ -var wrapperPre = "\nvar io = ('undefined' === typeof module ? {} : module.exports);\n(function() {\n"; - -var wrapperPost = "\nif (typeof define === \"function\" && define.amd) {" + - "\n define([], function () { return io; });" + - "\n}\n})();"; - - -/** - * Builds a custom Socket.IO distribution based on the transports that you - * need. You can configure the build to create development build or production - * build (minified). - * - * @param {Array} transports The transports that needs to be bundled. - * @param {Object} [options] Options to configure the building process. - * @param {Function} callback Last argument should always be the callback - * @callback {String|Boolean} err An optional argument, if it exists than an error - * occurred during the build process. - * @callback {String} result The result of the build process. - * @api public - */ - -var builder = module.exports = function () { - var transports, options, callback, error = null - , args = Array.prototype.slice.call(arguments, 0) - , settings = { - minify: true - , node: false - , custom: [] - }; - - // Fancy pancy argument support this makes any pattern possible mainly - // because we require only one of each type - args.forEach(function (arg) { - var type = Object.prototype.toString.call(arg) - .replace(/\[object\s(\w+)\]/gi , '$1' ).toLowerCase(); - - switch (type) { - case 'array': - return transports = arg; - case 'object': - return options = arg; - case 'function': - return callback = arg; - } - }); - - // Add defaults - options = options || {}; - transports = transports || Object.keys(baseTransports); - - // Merge the data - for(var option in options) { - settings[option] = options[option]; - } - - // Start creating a dependencies chain with all the required files for the - // custom Socket.IO bundle. - var files = []; - base.forEach(function (file) { - files.push(__dirname + '/../lib/' + file); - }); - - transports.forEach(function (transport) { - var dependencies = baseTransports[transport]; - if (!dependencies) { - error = 'Unsupported transport `' + transport + '` supplied as argument.'; - return; - } - - // Add the files to the files list, but only if they are not added before - dependencies.forEach(function (file) { - var path = __dirname + '/../lib/' + file; - if (!~files.indexOf(path)) files.push(path); - }) - }); - - // check to see if the files tree compilation generated any errors. - if (error) return callback(error); - - var results = {}; - files.forEach(function (file) { - fs.readFile(file, function (err, content) { - if (err) error = err; - results[file] = content; - - // check if we are done yet, or not.. Just by checking the size of the result - // object. - if (Object.keys(results).length !== files.length) return; - - // we are done, did we error? - if (error) return callback(error); - - // start with the license header - var code = development - , ignore = 0; - - // pre-wrapper for non-server-side builds - if (!settings.node) code += wrapperPre; - - // concatenate the file contents in order - files.forEach(function (file) { - code += results[file]; - }); - - // check if we need to add custom code - if (settings.custom.length) { - settings.custom.forEach(function (content) { - code += content; - }); - } - - // post-wrapper for non-server-side builds - if (!settings.node) { - code += wrapperPost; - } - - code = activeXObfuscator(code); - - // Search for conditional code blocks that need to be removed as they - // where designed for a server side env. but only if we don't want to - // make this build node compatible. - if (!settings.node) { - code = code.split('\n').filter(function (line) { - // check if there are tags in here - var start = line.indexOf(starttagIF) >= 0 - , end = line.indexOf(endtagIF) >= 0 - , ret = ignore; - - // ignore the current line - if (start) { - ignore++; - ret = ignore; - } - - // stop ignoring the next line - if (end) { - ignore--; - } - - return ret == 0; - }).join('\n'); - } - - // check if we need to process it any further - if (settings.minify) { - var ast = uglify.parser.parse(code); - ast = uglify.uglify.ast_mangle(ast); - ast = uglify.uglify.ast_squeeze(ast); - - code = production + uglify.uglify.gen_code(ast, { ascii_only: true }); - } - - callback(error, code); - }) - }) -}; - -/** - * Builder version is also the current client version - * this way we don't have to do another include for the - * clients version number and we can just include the builder. - * - * @type {String} - * @api public - */ - -builder.version = socket.version; - -/** - * A list of all build in transport types. - * - * @type {Object} - * @api public - */ - -builder.transports = baseTransports; - -/** - * Command line support, this allows us to generate builds without having - * to load it as module. - */ - -if (!module.parent){ - // the first 2 are `node` and the path to this file, we don't need them - var args = process.argv.slice(2); - - // build a development build - builder(args.length ? args : false, { minify:false }, function (err, content) { - if (err) return console.error(err); - - fs.write( - fs.openSync(__dirname + '/../dist/socket.io.js', 'w') - , content - , 0 - , 'utf8' - ); - console.log('Successfully generated the development build: socket.io.js'); - }); - - // and build a production build - builder(args.length ? args : false, function (err, content) { - if (err) return console.error(err); - - fs.write( - fs.openSync(__dirname + '/../dist/socket.io.min.js', 'w') - , content - , 0 - , 'utf8' - ); - console.log('Successfully generated the production build: socket.io.min.js'); - }); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/component.json deleted file mode 100644 index ebdf6422..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/component.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "bind", - "version": "0.0.1", - "description": "function binding utility", - "keywords": [ - "bind", - "utility" - ], - "dependencies": {}, - "scripts": [ - "index.js" - ], - "repo": "https://raw.github.com/component/bind" -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/index.js deleted file mode 100644 index 9808fc06..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-bind/index.js +++ /dev/null @@ -1,24 +0,0 @@ - -/** - * Slice reference. - */ - -var slice = [].slice; - -/** - * Bind `obj` to `fn`. - * - * @param {Object} obj - * @param {Function|String} fn or string - * @return {Function} - * @api public - */ - -module.exports = function(obj, fn){ - if ('string' == typeof fn) fn = obj[fn]; - if ('function' != typeof fn) throw new Error('bind() requires a function'); - var args = [].slice.call(arguments, 2); - return function(){ - return fn.apply(obj, args.concat(slice.call(arguments))); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/component.json deleted file mode 100644 index 0eec23b1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "emitter", - "description": "Event emitter", - "keywords": [ - "emitter", - "events" - ], - "version": "0.0.6", - "scripts": [ - "index.js" - ], - "repo": "https://raw.github.com/component/emitter" -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/index.js deleted file mode 100644 index 8cc74ae8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-emitter/index.js +++ /dev/null @@ -1,147 +0,0 @@ - -/** - * Expose `Emitter`. - */ - -module.exports = Emitter; - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks[event] = this._callbacks[event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - var self = this; - this._callbacks = this._callbacks || {}; - - function on() { - self.off(event, on); - fn.apply(this, arguments); - } - - fn._off = on; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = function(event, fn){ - this._callbacks = this._callbacks || {}; - var callbacks = this._callbacks[event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks[event]; - return this; - } - - // remove specific handler - var i = callbacks.indexOf(fn._off || fn); - if (~i) callbacks.splice(i, 1); - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks[event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks[event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/component.json deleted file mode 100644 index 6b35f453..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "json-fallback", - "repo": "component/json", - "description": "JSON parser / stringifier fallback", - "version": "0.0.1", - "keywords": [ - "json", - "fallback" - ], - "dependencies": {}, - "development": {}, - "scripts": [ - "index.js" - ] -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/index.js deleted file mode 100644 index 5a47ca6f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json-fallback/index.js +++ /dev/null @@ -1,486 +0,0 @@ -/* - json2.js - 2011-10-19 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, regexp: true */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -var JSON = {}; - -(function () { - 'use strict'; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) - ? this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' - : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' - ? c - : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 - ? '[]' - : gap - ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' - : '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 - ? '{}' - : gap - ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' - : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' - ? walk({'': j}, '') - : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); - -module.exports = JSON \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/component.json deleted file mode 100644 index da7097cf..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/component.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "json", - "repo": "component/json", - "description": "JSON parser / stringifier", - "version": "0.0.1", - "keywords": [ - "json" - ], - "dependencies": {}, - "development": {}, - "optional": { - "component/json-fallback": "*" - }, - "scripts": [ - "index.js" - ] -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/index.js deleted file mode 100644 index c05cc28c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/component-json/index.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = 'undefined' == typeof JSON - ? require('json-fallback') - : JSON; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/component.json deleted file mode 100644 index b90c1f27..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/component.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "engine.io", - "version": "0.4.0", - "dependencies": { - "component/emitter": "0.0.6", - "visionmedia/debug": "*" - }, - "main": "lib/index.js", - "scripts": [ - "lib/index.js", - "lib/parser.js", - "lib/socket.js", - "lib/transport.js", - "lib/emitter.js", - "lib/util.js", - "lib/transports/index.js", - "lib/transports/polling.js", - "lib/transports/polling-xhr.js", - "lib/transports/polling-jsonp.js", - "lib/transports/websocket.js", - "lib/transports/flashsocket.js" - ], - "repo": "https://raw.github.com/learnboost/engine.io-client" -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/emitter.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/emitter.js deleted file mode 100644 index 142a9bf6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/emitter.js +++ /dev/null @@ -1,52 +0,0 @@ - -/** - * Module dependencies. - */ - -var Emitter; - -try { - Emitter = require('emitter'); -} catch(e){ - Emitter = require('emitter-component'); -} - -/** - * Module exports. - */ - -module.exports = Emitter; - -/** - * Compatibility with `WebSocket#addEventListener`. - * - * @api public - */ - -Emitter.prototype.addEventListener = Emitter.prototype.on; - -/** - * Compatibility with `WebSocket#removeEventListener`. - * - * @api public - */ - -Emitter.prototype.removeEventListener = Emitter.prototype.off; - -/** - * Node-compatible `EventEmitter#removeListener` - * - * @api public - */ - -Emitter.prototype.removeListener = Emitter.prototype.off; - -/** - * Node-compatible `EventEmitter#removeAllListeners` - * - * @api public - */ - -Emitter.prototype.removeAllListeners = function(){ - this._callbacks = {}; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/index.js deleted file mode 100644 index d463b3fb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./socket'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/parser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/parser.js deleted file mode 100644 index 2c2928e8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/parser.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * Module dependencies. - */ - -var util = require('./util') - -/** - * Packet types. - */ - -var packets = exports.packets = { - open: 0 // non-ws - , close: 1 // non-ws - , ping: 2 - , pong: 3 - , message: 4 - , upgrade: 5 - , noop: 6 -}; - -var packetslist = util.keys(packets); - -/** - * Premade error packet. - */ - -var err = { type: 'error', data: 'parser error' } - -/** - * Encodes a packet. - * - * [ `:` ] - * - * Example: - * - * 5:hello world - * 3 - * 4 - * - * @api private - */ - -exports.encodePacket = function (packet) { - var encoded = packets[packet.type] - - // data fragment is optional - if (undefined !== packet.data) { - encoded += String(packet.data); - } - - return '' + encoded; -}; - -/** - * Decodes a packet. - * - * @return {Object} with `type` and `data` (if any) - * @api private - */ - -exports.decodePacket = function (data) { - var type = data.charAt(0); - - if (Number(type) != type || !packetslist[type]) { - return err; - } - - if (data.length > 1) { - return { type: packetslist[type], data: data.substring(1) }; - } else { - return { type: packetslist[type] }; - } -}; - -/** - * Encodes multiple messages (payload). - * - * :data - * - * Example: - * - * 11:hello world2:hi - * - * @param {Array} packets - * @api private - */ - -exports.encodePayload = function (packets) { - if (!packets.length) { - return '0:'; - } - - var encoded = '' - , message - - for (var i = 0, l = packets.length; i < l; i++) { - message = exports.encodePacket(packets[i]); - encoded += message.length + ':' + message; - } - - return encoded; -}; - -/* - * Decodes data when a payload is maybe expected. - * - * @param {String} data - * @return {Array} packets - * @api public - */ - -exports.decodePayload = function (data) { - if (data == '') { - // parser error - ignoring payload - return [err]; - } - - var packets = [] - , length = '' - , n, msg, packet - - for (var i = 0, l = data.length; i < l; i++) { - var chr = data.charAt(i) - - if (':' != chr) { - length += chr; - } else { - if ('' == length || (length != (n = Number(length)))) { - // parser error - ignoring payload - return [err]; - } - - msg = data.substr(i + 1, n); - - if (length != msg.length) { - // parser error - ignoring payload - return [err]; - } - - if (msg.length) { - packet = exports.decodePacket(msg); - - if (err.type == packet.type && err.data == packet.data) { - // parser error in individual packet - ignoring payload - return [err]; - } - - packets.push(packet); - } - - // advance cursor - i += n; - length = '' - } - } - - if (length != '') { - // parser error - ignoring payload - return [err]; - } - - return packets; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/socket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/socket.js deleted file mode 100644 index ad86283b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/socket.js +++ /dev/null @@ -1,492 +0,0 @@ -/** - * Module dependencies. - */ - -var util = require('./util') - , transports = require('./transports') - , Emitter = require('./emitter') - , debug = require('debug')('engine-client:socket'); - -/** - * Module exports. - */ - -module.exports = Socket; - -/** - * Global reference. - */ - -var global = 'undefined' != typeof window ? window : global; - -/** - * Socket constructor. - * - * @param {Object} options - * @api public - */ - -function Socket(opts){ - if (!(this instanceof Socket)) return new Socket(opts); - - if ('string' == typeof opts) { - var uri = util.parseUri(opts); - opts = arguments[1] || {}; - opts.host = uri.host; - opts.secure = uri.protocol == 'https' || uri.protocol == 'wss'; - opts.port = uri.port; - } - - opts = opts || {}; - this.secure = null != opts.secure ? opts.secure : (global.location && 'https:' == location.protocol); - this.host = opts.host || opts.hostname || (global.location ? location.hostname : 'localhost'); - this.port = opts.port || (global.location && location.port ? location.port : (this.secure ? 443 : 80)); - this.query = opts.query || {}; - this.query.uid = rnd(); - this.upgrade = false !== opts.upgrade; - this.resource = opts.resource || 'default'; - this.path = (opts.path || '/engine.io').replace(/\/$/, ''); - this.path += '/' + this.resource + '/'; - this.forceJSONP = !!opts.forceJSONP; - this.timestampParam = opts.timestampParam || 't'; - this.timestampRequests = !!opts.timestampRequests; - this.flashPath = opts.flashPath || ''; - this.transports = opts.transports || ['polling', 'websocket', 'flashsocket']; - this.readyState = ''; - this.writeBuffer = []; - this.policyPort = opts.policyPort || 843; - this.open(); - - Socket.sockets.push(this); - Socket.sockets.evs.emit('add', this); -}; - -/** - * Mix in `Emitter`. - */ - -Emitter(Socket.prototype); - -/** - * Protocol version. - * - * @api public - */ - -Socket.protocol = 1; - -/** - * Static EventEmitter. - */ - -Socket.sockets = []; -Socket.sockets.evs = new Emitter; - -/** - * Expose deps for legacy compatibility - * and standalone browser access. - */ - -Socket.Socket = Socket; -Socket.Transport = require('./transport'); -Socket.Emitter = require('./emitter'); -Socket.transports = require('./transports'); -Socket.util = require('./util'); -Socket.parser = require('./parser'); - -/** - * Creates transport of the given type. - * - * @param {String} transport name - * @return {Transport} - * @api private - */ - -Socket.prototype.createTransport = function (name) { - debug('creating transport "%s"', name); - var query = clone(this.query); - query.transport = name; - - if (this.id) { - query.sid = this.id; - } - - var transport = new transports[name]({ - host: this.host - , port: this.port - , secure: this.secure - , path: this.path - , query: query - , forceJSONP: this.forceJSONP - , timestampRequests: this.timestampRequests - , timestampParam: this.timestampParam - , flashPath: this.flashPath - , policyPort: this.policyPort - }); - - return transport; -}; - -function clone (obj) { - var o = {}; - for (var i in obj) { - if (obj.hasOwnProperty(i)) { - o[i] = obj[i]; - } - } - return o; -} - -/** - * Initializes transport to use and starts probe. - * - * @api private - */ - -Socket.prototype.open = function () { - this.readyState = 'opening'; - var transport = this.createTransport(this.transports[0]); - transport.open(); - this.setTransport(transport); -}; - -/** - * Sets the current transport. Disables the existing one (if any). - * - * @api private - */ - -Socket.prototype.setTransport = function (transport) { - var self = this; - - if (this.transport) { - debug('clearing existing transport'); - this.transport.removeAllListeners(); - } - - // set up transport - this.transport = transport; - - // set up transport listeners - transport - .on('drain', function () { - self.flush(); - }) - .on('packet', function (packet) { - self.onPacket(packet); - }) - .on('error', function (e) { - self.onError(e); - }) - .on('close', function () { - self.onClose('transport close'); - }); -}; - -/** - * Probes a transport. - * - * @param {String} transport name - * @api private - */ - -Socket.prototype.probe = function (name) { - debug('probing transport "%s"', name); - var transport = this.createTransport(name, { probe: 1 }) - , failed = false - , self = this; - - transport.once('open', function () { - if (failed) return; - - debug('probe transport "%s" opened', name); - transport.send([{ type: 'ping', data: 'probe' }]); - transport.once('packet', function (msg) { - if (failed) return; - if ('pong' == msg.type && 'probe' == msg.data) { - debug('probe transport "%s" pong', name); - self.upgrading = true; - self.emit('upgrading', transport); - - debug('pausing current transport "%s"', self.transport.name); - self.transport.pause(function () { - if (failed) return; - if ('closed' == self.readyState || 'closing' == self.readyState) { - return; - } - debug('changing transport and sending upgrade packet'); - transport.removeListener('error', onerror); - self.emit('upgrade', transport); - self.setTransport(transport); - transport.send([{ type: 'upgrade' }]); - transport = null; - self.upgrading = false; - self.flush(); - }); - } else { - debug('probe transport "%s" failed', name); - var err = new Error('probe error'); - err.transport = transport.name; - self.emit('error', err); - } - }); - }); - - transport.once('error', onerror); - function onerror(err) { - if (failed) return; - - // Any callback called by transport should be ignored since now - failed = true; - - var error = new Error('probe error: ' + err); - error.transport = transport.name; - - transport.close(); - transport = null; - - debug('probe transport "%s" failed because of error: %s', name, err); - - self.emit('error', error); - }; - - transport.open(); - - this.once('close', function () { - if (transport) { - debug('socket closed prematurely - aborting probe'); - failed = true; - transport.close(); - transport = null; - } - }); - - this.once('upgrading', function (to) { - if (transport && to.name != transport.name) { - debug('"%s" works - aborting "%s"', to.name, transport.name); - transport.close(); - transport = null; - } - }); -}; - -/** - * Called when connection is deemed open. - * - * @api public - */ - -Socket.prototype.onOpen = function () { - debug('socket open'); - this.readyState = 'open'; - this.emit('open'); - this.onopen && this.onopen.call(this); - this.flush(); - - // we check for `readyState` in case an `open` - // listener alreay closed the socket - if ('open' == this.readyState && this.upgrade && this.transport.pause) { - debug('starting upgrade probes'); - for (var i = 0, l = this.upgrades.length; i < l; i++) { - this.probe(this.upgrades[i]); - } - } -}; - -/** - * Handles a packet. - * - * @api private - */ - -Socket.prototype.onPacket = function (packet) { - if ('opening' == this.readyState || 'open' == this.readyState) { - debug('socket receive: type "%s", data "%s"', packet.type, packet.data); - - this.emit('packet', packet); - - // Socket is live - any packet counts - this.emit('heartbeat'); - - switch (packet.type) { - case 'open': - this.onHandshake(util.parseJSON(packet.data)); - break; - - case 'pong': - this.ping(); - break; - - case 'error': - var err = new Error('server error'); - err.code = packet.data; - this.emit('error', err); - break; - - case 'message': - this.emit('message', packet.data); - var event = { data: packet.data }; - event.toString = function () { - return packet.data; - }; - this.onmessage && this.onmessage.call(this, event); - break; - } - } else { - debug('packet received with socket readyState "%s"', this.readyState); - } -}; - -/** - * Called upon handshake completion. - * - * @param {Object} handshake obj - * @api private - */ - -Socket.prototype.onHandshake = function (data) { - this.emit('handshake', data); - this.id = data.sid; - this.transport.query.sid = data.sid; - this.upgrades = data.upgrades; - this.pingInterval = data.pingInterval; - this.pingTimeout = data.pingTimeout; - this.onOpen(); - this.ping(); - - // Prolong liveness of socket on heartbeat - this.removeListener('heartbeat', this.onHeartbeat); - this.on('heartbeat', this.onHeartbeat); -}; - -/** - * Resets ping timeout. - * - * @api private - */ - -Socket.prototype.onHeartbeat = function (timeout) { - clearTimeout(this.pingTimeoutTimer); - var self = this; - self.pingTimeoutTimer = setTimeout(function () { - if ('closed' == self.readyState) return; - self.onClose('ping timeout'); - }, timeout || (self.pingInterval + self.pingTimeout)); -}; - -/** - * Pings server every `this.pingInterval` and expects response - * within `this.pingTimeout` or closes connection. - * - * @api private - */ - -Socket.prototype.ping = function () { - var self = this; - clearTimeout(self.pingIntervalTimer); - self.pingIntervalTimer = setTimeout(function () { - debug('writing ping packet - expecting pong within %sms', self.pingTimeout); - self.sendPacket('ping'); - self.onHeartbeat(self.pingTimeout); - }, self.pingInterval); -}; - -/** - * Flush write buffers. - * - * @api private - */ - -Socket.prototype.flush = function () { - if ('closed' != this.readyState && this.transport.writable && - !this.upgrading && this.writeBuffer.length) { - debug('flushing %d packets in socket', this.writeBuffer.length); - this.transport.send(this.writeBuffer); - this.writeBuffer = []; - } -}; - -/** - * Sends a message. - * - * @param {String} message. - * @return {Socket} for chaining. - * @api public - */ - -Socket.prototype.write = -Socket.prototype.send = function (msg) { - this.sendPacket('message', msg); - return this; -}; - -/** - * Sends a packet. - * - * @param {String} packet type. - * @param {String} data. - * @api private - */ - -Socket.prototype.sendPacket = function (type, data) { - var packet = { type: type, data: data }; - this.emit('packetCreate', packet); - this.writeBuffer.push(packet); - this.flush(); -}; - -/** - * Closes the connection. - * - * @api private - */ - -Socket.prototype.close = function () { - if ('opening' == this.readyState || 'open' == this.readyState) { - this.onClose('forced close'); - debug('socket closing - telling transport to close'); - this.transport.close(); - this.transport.removeAllListeners(); - } - - return this; -}; - -/** - * Called upon transport error - * - * @api private - */ - -Socket.prototype.onError = function (err) { - this.emit('error', err); - this.onClose('transport error', err); -}; - -/** - * Called upon transport close. - * - * @api private - */ - -Socket.prototype.onClose = function (reason, desc) { - if ('closed' != this.readyState) { - debug('socket close with reason: "%s"', reason); - clearTimeout(this.pingIntervalTimer); - clearTimeout(this.pingTimeoutTimer); - this.readyState = 'closed'; - this.emit('close', reason, desc); - this.onclose && this.onclose.call(this); - this.id = null; - } -}; - -/** - * Generates a random uid. - * - * @api private - */ - -function rnd () { - return String(Math.random()).substr(5) + String(Math.random()).substr(5); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transport.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transport.js deleted file mode 100644 index 5760f84b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transport.js +++ /dev/null @@ -1,141 +0,0 @@ - -/** - * Module dependencies. - */ - -var util = require('./util') - , parser = require('./parser') - , Emitter = require('./emitter'); - -/** - * Module exports. - */ - -module.exports = Transport; - -/** - * Transport abstract constructor. - * - * @param {Object} options. - * @api private - */ - -function Transport (opts) { - this.path = opts.path; - this.host = opts.host; - this.port = opts.port; - this.secure = opts.secure; - this.query = opts.query; - this.timestampParam = opts.timestampParam; - this.timestampRequests = opts.timestampRequests; - this.readyState = ''; -}; - -/** - * Mix in `Emitter`. - */ - -Emitter(Transport.prototype); - -/** - * Emits an error. - * - * @param {String} str - * @return {Transport} for chaining - * @api public - */ - -Transport.prototype.onError = function (msg, desc) { - var err = new Error(msg); - err.type = 'TransportError'; - err.description = desc; - this.emit('error', err); - return this; -}; - -/** - * Opens the transport. - * - * @api public - */ - -Transport.prototype.open = function () { - if ('closed' == this.readyState || '' == this.readyState) { - this.readyState = 'opening'; - this.doOpen(); - } - - return this; -}; - -/** - * Closes the transport. - * - * @api private - */ - -Transport.prototype.close = function () { - if ('opening' == this.readyState || 'open' == this.readyState) { - this.doClose(); - this.onClose(); - } - - return this; -}; - -/** - * Sends multiple packets. - * - * @param {Array} packets - * @api private - */ - -Transport.prototype.send = function(packets){ - if ('open' == this.readyState) { - this.write(packets); - } else { - throw new Error('Transport not open'); - } -}; - -/** - * Called upon open - * - * @api private - */ - -Transport.prototype.onOpen = function () { - this.readyState = 'open'; - this.writable = true; - this.emit('open'); -}; - -/** - * Called with data. - * - * @param {String} data - * @api private - */ - -Transport.prototype.onData = function (data) { - this.onPacket(parser.decodePacket(data)); -}; - -/** - * Called with a decoded packet. - */ - -Transport.prototype.onPacket = function (packet) { - this.emit('packet', packet); -}; - -/** - * Called upon close. - * - * @api private - */ - -Transport.prototype.onClose = function () { - this.readyState = 'closed'; - this.emit('close'); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/flashsocket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/flashsocket.js deleted file mode 100644 index 9a5a1082..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/flashsocket.js +++ /dev/null @@ -1,254 +0,0 @@ - -/** - * Module dependencies. - */ - -var WS = require('./websocket') - , util = require('../util') - , debug = require('debug')('engine.io-client:flashsocket'); - -/** - * Module exports. - */ - -module.exports = FlashWS; - -/** - * Obfuscated key for Blue Coat. - */ - -var xobject = global[['Active'].concat('Object').join('X')]; - -/** - * FlashWS constructor. - * - * @api public - */ - -function FlashWS (options) { - WS.call(this, options); - this.flashPath = options.flashPath; - this.policyPort = options.policyPort; -}; - -/** - * Inherits from WebSocket. - */ - -util.inherits(FlashWS, WS); - -/** - * Transport name. - * - * @api public - */ - -FlashWS.prototype.name = 'flashsocket'; - -/** - * Opens the transport. - * - * @api public - */ - -FlashWS.prototype.doOpen = function () { - if (!this.check()) { - // let the probe timeout - return; - } - - // instrument websocketjs logging - function log (type) { - return function(){ - var str = Array.prototype.join.call(arguments, ' '); - debug('[websocketjs %s] %s', type, str); - }; - }; - - WEB_SOCKET_LOGGER = { log: log('debug'), error: log('error') }; - WEB_SOCKET_SUPPRESS_CROSS_DOMAIN_SWF_ERROR = true; - WEB_SOCKET_DISABLE_AUTO_INITIALIZATION = true; - - if ('undefined' == typeof WEB_SOCKET_SWF_LOCATION) { - WEB_SOCKET_SWF_LOCATION = this.flashPath + 'WebSocketMainInsecure.swf'; - } - - // dependencies - var deps = [this.flashPath + 'web_socket.js']; - - if ('undefined' == typeof swfobject) { - deps.unshift(this.flashPath + 'swfobject.js'); - } - - var self = this; - - load(deps, function () { - self.ready(function () { - WebSocket.__addTask(function () { - WS.prototype.doOpen.call(self); - }); - }); - }); -}; - -/** - * Override to prevent closing uninitialized flashsocket. - * - * @api private - */ - -FlashWS.prototype.doClose = function () { - if (!this.socket) return; - var self = this; - WebSocket.__addTask(function() { - WS.prototype.doClose.call(self); - }); -}; - -/** - * Writes to the Flash socket. - * - * @api private - */ - -FlashWS.prototype.write = function() { - var self = this, args = arguments; - WebSocket.__addTask(function () { - WS.prototype.write.apply(self, args); - }); -}; - -/** - * Called upon dependencies are loaded. - * - * @api private - */ - -FlashWS.prototype.ready = function (fn) { - if (typeof WebSocket == 'undefined' || - !('__initialize' in WebSocket) || !swfobject) { - return; - } - - if (swfobject.getFlashPlayerVersion().major < 10) { - return; - } - - function init () { - // Only start downloading the swf file when the checked that this browser - // actually supports it - if (!FlashWS.loaded) { - if (843 != self.policyPort) { - WebSocket.loadFlashPolicyFile('xmlsocket://' + self.host + ':' + self.policyPort); - } - - WebSocket.__initialize(); - FlashWS.loaded = true; - } - - fn.call(self); - } - - var self = this; - if (document.body) { - return init(); - } - - util.load(init); -}; - -/** - * Feature detection for flashsocket. - * - * @return {Boolean} whether this transport is available. - * @api public - */ - -FlashWS.prototype.check = function () { - if ('undefined' != typeof process) { - return false; - } - - if (typeof WebSocket != 'undefined' && !('__initialize' in WebSocket)) { - return false; - } - - if (xobject) { - var control = null; - try { - control = new xobject('ShockwaveFlash.ShockwaveFlash'); - } catch (e) { } - if (control) { - return true; - } - } else { - for (var i = 0, l = navigator.plugins.length; i < l; i++) { - for (var j = 0, m = navigator.plugins[i].length; j < m; j++) { - if (navigator.plugins[i][j].description == 'Shockwave Flash') { - return true; - } - } - } - } - - return false; -}; - -/** - * Lazy loading of scripts. - * Based on $script by Dustin Diaz - MIT - */ - -var scripts = {}; - -/** - * Injects a script. Keeps tracked of injected ones. - * - * @param {String} path - * @param {Function} callback - * @api private - */ - -function create (path, fn) { - if (scripts[path]) return fn(); - - var el = document.createElement('script'); - var loaded = false; - - debug('loading "%s"', path); - el.onload = el.onreadystatechange = function () { - if (loaded || scripts[path]) return; - var rs = el.readyState; - if (!rs || 'loaded' == rs || 'complete' == rs) { - debug('loaded "%s"', path); - el.onload = el.onreadystatechange = null; - loaded = true; - scripts[path] = true; - fn(); - } - }; - - el.async = 1; - el.src = path; - - var head = document.getElementsByTagName('head')[0]; - head.insertBefore(el, head.firstChild); -}; - -/** - * Loads scripts and fires a callback. - * - * @param {Array} paths - * @param {Function} callback - */ - -function load (arr, fn) { - function process (i) { - if (!arr[i]) return fn(); - create(arr[i], function () { - process(++i); - }); - }; - - process(0); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/index.js deleted file mode 100644 index 374620b0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/index.js +++ /dev/null @@ -1,62 +0,0 @@ - -/** - * Module dependencies - */ - -var XHR = require('./polling-xhr') - , JSONP = require('./polling-jsonp') - , websocket = require('./websocket') - , flashsocket = require('./flashsocket') - , util = require('../util'); - -/** - * Export transports. - */ - -exports.polling = polling; -exports.websocket = websocket; -exports.flashsocket = flashsocket; - -/** - * Global reference. - */ - -var global = 'undefined' != typeof window ? window : global; - -/** - * Polling transport polymorphic constructor. - * Decides on xhr vs jsonp based on feature detection. - * - * @api private - */ - -function polling (opts) { - var xhr - , xd = false - , isXProtocol = false; - - if (global.location) { - var isSSL = 'https:' == location.protocol; - var port = location.port; - - // some user agents have empty `location.port` - if (Number(port) != port) { - port = isSSL ? 443 : 80; - } - - xd = opts.host != location.hostname || port != opts.port; - isXProtocol = opts.secure != isSSL; - } - - xhr = util.request(xd); - /* See #7 at http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx */ - if (isXProtocol && global.XDomainRequest && xhr instanceof global.XDomainRequest) { - return new JSONP(opts); - } - - if (xhr && !opts.forceJSONP) { - return new XHR(opts); - } else { - return new JSONP(opts); - } -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling-jsonp.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling-jsonp.js deleted file mode 100644 index fde3e79e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/components/learnboost-engine.io-client/lib/transports/polling-jsonp.js +++ /dev/null @@ -1,221 +0,0 @@ - -/** - * Module requirements. - */ - -var Polling = require('./polling') - , util = require('../util'); - -/** - * Module exports. - */ - -module.exports = JSONPPolling; - -/** - * Global reference. - */ - -var global = 'undefined' != typeof window ? window : global; - -/** - * Cached regular expressions. - */ - -var rNewline = /\n/g; - -/** - * Global JSONP callbacks. - */ - -var callbacks; - -/** - * Callbacks count. - */ - -var index = 0; - -/** - * Noop. - */ - -function empty () { } - -/** - * JSONP Polling constructor. - * - * @param {Object} opts. - * @api public - */ - -function JSONPPolling (opts) { - Polling.call(this, opts); - - // define global callbacks array if not present - // we do this here (lazily) to avoid unneeded global pollution - if (!callbacks) { - // we need to consider multiple engines in the same page - if (!global.___eio) global.___eio = []; - callbacks = global.___eio; - } - - // callback identifier - this.index = callbacks.length; - - // add callback to jsonp global - var self = this; - callbacks.push(function (msg) { - self.onData(msg); - }); - - // append to query string - this.query.j = this.index; -}; - -/** - * Inherits from Polling. - */ - -util.inherits(JSONPPolling, Polling); - -/** - * Opens the socket. - * - * @api private - */ - -JSONPPolling.prototype.doOpen = function () { - var self = this; - util.defer(function () { - Polling.prototype.doOpen.call(self); - }); -}; - -/** - * Closes the socket - * - * @api private - */ - -JSONPPolling.prototype.doClose = function () { - if (this.script) { - this.script.parentNode.removeChild(this.script); - this.script = null; - } - - if (this.form) { - this.form.parentNode.removeChild(this.form); - this.form = null; - } - - Polling.prototype.doClose.call(this); -}; - -/** - * Starts a poll cycle. - * - * @api private - */ - -JSONPPolling.prototype.doPoll = function () { - var script = document.createElement('script'); - - if (this.script) { - this.script.parentNode.removeChild(this.script); - this.script = null; - } - - script.async = true; - script.src = this.uri(); - - var insertAt = document.getElementsByTagName('script')[0]; - insertAt.parentNode.insertBefore(script, insertAt); - this.script = script; - - if (util.ua.gecko) { - setTimeout(function () { - var iframe = document.createElement('iframe'); - document.body.appendChild(iframe); - document.body.removeChild(iframe); - }, 100); - } -}; - -/** - * Writes with a hidden iframe. - * - * @param {String} data to send - * @param {Function} called upon flush. - * @api private - */ - -JSONPPolling.prototype.doWrite = function (data, fn) { - var self = this; - - if (!this.form) { - var form = document.createElement('form') - , area = document.createElement('textarea') - , id = this.iframeId = 'eio_iframe_' + this.index - , iframe; - - form.className = 'socketio'; - form.style.position = 'absolute'; - form.style.top = '-1000px'; - form.style.left = '-1000px'; - form.target = id; - form.method = 'POST'; - form.setAttribute('accept-charset', 'utf-8'); - area.name = 'd'; - form.appendChild(area); - document.body.appendChild(form); - - this.form = form; - this.area = area; - } - - this.form.action = this.uri(); - - function complete () { - initIframe(); - fn(); - }; - - function initIframe () { - if (self.iframe) { - self.form.removeChild(self.iframe); - } - - try { - // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) - iframe = document.createElement(''; -html += '
'; -html += '
'; -html += '
Upload File
'; -html += '
Want to upload multiple files at once? Please upgrade to the latest Flash Player, then reload this page. For some reason our Flash based uploader did not load, so you are currently using our single file uploader.
'; -html += spacer(1,20) + '
'; -var url = zero_client.targetURL; -if (url.indexOf('?') > -1) url += '&'; else url += '?'; -url += 'format=jshtml&onafter=' + escape('window.parent.upload_basic_finish(response);'); -Debug.trace('upload', "Prepping basic upload: " + url); -html += '
'; -html += '
'; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('page_white_get.png', 'Upload', "upload_basic_go()") + '
'; -html += '
'; -html += ''; -html += '
'; -html += ''; -session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; -show_popup_dialog(528, 200, html); -} -function upload_basic_go() { -$('f_upload_basic').submit(); -$('d_upload_form').hide(); -$('d_upload_progress').show(); -} -function upload_basic_finish(response) { -Debug.trace('upload', "Basic upload complete: " + dumper(response)); -setTimeout( 'upload_basic_finish_2()', 100 ); -} -function upload_basic_finish_2() { -$('i_upload_basic').src = 'blank.html'; -setTimeout( 'upload_basic_finish_3()', 100 ); -} -function upload_basic_finish_3() { -hide_popup_dialog(); -delete session.progress; -show_progress_dialog( 0, 'Finishing Upload...', true ); -fire_callback( session.upload_callback ); -} -function upload_destroy() { -if (zero_client) { -zero_client.destroy(); -delete ZeroUpload.clients[ zero_client.id ]; -zero_client = null; -} -} -function prep_upload(dom_id, url, callback, types) { -session.upload_callback = callback; -if (url) { -if (url.indexOf('?') > -1) url += '&'; else url += '?'; -url += 'session=' + session.cookie.get('effect_session_id'); -} -upload_destroy(); -zero_client = new ZeroUpload.Client(); -if (url) zero_client.setURL( url ); -zero_client.setHandCursor( true ); -if (types) zero_client.setFileTypes( types[0], types[1] ); -zero_client.addEventListener( 'queueStart', uploadQueueStart ); -zero_client.addEventListener( 'fileStart', uploadFileStart ); -zero_client.addEventListener( 'progress', uploadProgress ); -zero_client.addEventListener( 'fileComplete', uploadFileComplete ); -zero_client.addEventListener( 'queueComplete', uploadQueueComplete ); -zero_client.addEventListener( 'error', uploadError ); -zero_client.addEventListener( 'debug', function(client, eventName, args) { -Debug.trace('upload', "Caught event: " + eventName); -} ); -if (dom_id) { -Debug.trace('upload', "Gluing ZeroUpload to: " + dom_id); -zero_client.glue( dom_id ); -} -} -Class.create( 'Debug', { -__static: { -enabled: false, -categories: { all: 1 }, -buffer: [], -max_rows: 5000, -win: null, -ie: !!navigator.userAgent.match(/MSIE/), -ie6: !!navigator.userAgent.match(/MSIE\D+6/), -init: function() { -Debug.enabled = true; -Debug.trace( 'debug', 'Debug log start' ); -var html = '

'; -if (Debug.ie) { -setTimeout( function() { -document.body.insertAdjacentHTML('beforeEnd', -'
' + html + '
' -); -}, 1000 ); -} -else { -var div = document.createElement('DIV'); -div.id = 'd_debug'; -div.setAttribute('id', 'd_debug'); -div.style.position = Debug.ie6 ? 'absolute' : 'fixed'; -div.style.zIndex = '101'; -div.style.left = '0px'; -div.style.top = '0px'; -div.style.width = '100%'; -div.innerHTML = html; -document.getElementsByTagName('body')[0].appendChild(div); -} -}, -show: function() { -if (!Debug.win || Debug.win.closed) { -Debug.trace('debug', "Opening debug window"); -Debug.win = window.open( '', 'DebugWindow', 'width=600,height=500,menubar=no,resizable=yes,scrollbars=yes,location=no,status=no,toolbar=no,directories=no' ); -if (!Debug.win) return alert("Failed to open window. Popup blocker maybe?"); -var doc = Debug.win.document; -doc.open(); -doc.writeln( 'Debug Log' ); -doc.writeln( '
' ); -doc.writeln( '
' ); -doc.writeln( '
' ); -doc.writeln( '' ); -doc.writeln( '' ); -doc.writeln( '
' ); -doc.writeln( '' ); -doc.close(); -} -Debug.win.focus(); -}, -console_execute: function() { -var cmd = Debug.win.document.getElementById('fe_command'); -if (cmd.value.length) { -Debug.trace( 'console', cmd.value ); -try { -Debug.trace( 'console', '' + eval(cmd.value) ); -} -catch (e) { -Debug.trace( 'error', 'JavaScript Interpreter Exception: ' + e.toString() ); -} -} -}, -get_time_stamp: function(now) { -var date = new Date( now * 1000 ); -var hh = date.getHours(); if (hh < 10) hh = "0" + hh; -var mi = date.getMinutes(); if (mi < 10) mi = "0" + mi; -var ss = date.getSeconds(); if (ss < 10) ss = "0" + ss; -var sss = '' + date.getMilliseconds(); while (sss.length < 3) sss = "0" + sss; -return '' + hh + ':' + mi + ':' + ss + '.' + sss; -}, -refresh_console: function() { -if (!Debug.win || Debug.win.closed) return; -var div = Debug.win.document.getElementById('d_debug_log'); -if (div) { -var row = null; -while ( row = Debug.buffer.shift() ) { -var time_stamp = Debug.get_time_stamp(row.time); -var msg = row.msg; -msg = msg.replace(/\t/g, "    "); -msg = msg.replace(//g, ">"); -msg = msg.replace(/\n/g, "
\n"); -var html = ''; -var sty = 'float:left; font-family: Consolas, Courier, mono; font-size: 12px; cursor:default; margin-right:10px; margin-bottom:1px; padding:2px;'; -html += '
' + time_stamp + '
'; -html += '
' + row.cat + '
'; -html += '
' + msg + '
'; -html += '
'; -var chunk = Debug.win.document.createElement('DIV'); -chunk.style['float'] = 'none'; -chunk.innerHTML = html; -div.appendChild(chunk); -} -var cmd = Debug.win.document.getElementById('fe_command'); -cmd.focus(); -} -Debug.dirty = 0; -Debug.win.scrollTo(0, 99999); -}, -hires_time_now: function() { -var now = new Date(); -return ( now.getTime() / 1000 ); -}, -trace: function(cat, msg) { -if (arguments.length == 1) { -msg = cat; -cat = 'debug'; -} -if (Debug.categories.all || Debug.categories[cat]) { -Debug.buffer.push({ cat: cat, msg: msg, time: Debug.hires_time_now() }); -if (Debug.buffer.length > Debug.max_rows) Debug.buffer.shift(); -if (!Debug.dirty) { -Debug.dirty = 1; -setTimeout( 'Debug.refresh_console();', 1 ); -} -} -} -} -} ); -var session = { -inited: false, -api_mod_cache: {}, -query: parseQueryString( ''+location.search ), -cookie: new CookieTree({ path: '/effect/' }), -storage: {}, -storage_dirty: false, -hooks: { -keys: {} -}, -username: '', -em_width: 11, -audioResourceMatch: /\.mp3$/i, -imageResourceMatch: /\.(jpe|jpeg|jpg|png|gif)$/i, -textResourceMatch: /\.xml$/i, -movieResourceMatch: /\.(flv|mp4|mp4v|mov|3gp|3g2)$/i, -imageResourceMatchString: '\.(jpe|jpeg|jpg|png|gif)$' -}; -session.debug = session.query.debug ? true : false; -var page_manager = null; -var preload_icons = []; -var preload_images = [ -'loading.gif', -'aquaprogressbar.gif', -'aquaprogressbar_bkgnd.gif' -]; -function get_base_url() { -return protocol + '://' + location.hostname + session.config.BaseURI; -} -function effect_init() { -if (session.inited) return; -session.inited = true; -assert( window.config, "Config not loaded" ); -session.config = window.config; -Debug.trace("Starting up"); -rendering_page = false; -preload(); -window.$R = {}; -for (var key in config.RegExpShortcuts) { -$R[key] = new RegExp( config.RegExpShortcuts[key] ); -} -ww_precalc_font("body", "effect_precalc_font_finish"); -page_manager = new Effect.PageManager( config.Pages.Page ); -var session_id = session.cookie.get('effect_session_id'); -if (session_id && session_id.match(/^login/)) { -do_session_recover(); -} -else { -show_default_login_status(); -Nav.init(); -} -Blog.search({ -stag: 'sidebar_docs', -limit: 20, -title_only: true, -sort_by: 'seq', -sort_dir: -1, -target: 'd_sidebar_documents', -outer_div_class: 'sidebar_blog_row', -title_class: 'sidebar_blog_title', -after: '' -}); -Blog.search({ -stag: 'sidebar_tutorials', -limit: 5, -title_only: true, -sort_by: 'seq', -sort_dir: -1, -target: 'd_sidebar_tutorials', -outer_div_class: 'sidebar_blog_row', -title_class: 'sidebar_blog_title', -after: '' -}); -Blog.search({ -stag: 'sidebar_plugins', -limit: 5, -title_only: true, -sort_by: 'seq', -sort_dir: -1, -target: 'd_sidebar_plugins', -outer_div_class: 'sidebar_blog_row', -title_class: 'sidebar_blog_title', -after: '' -}); -$('fe_search_bar').onkeydown = delay_onChange_input_text; -user_storage_idle(); -} -function effect_precalc_font_finish(width, height) { -session.em_width = width; -} -function preload() { -for (var idx = 0, len = preload_icons.length; idx < len; idx++) { -var url = images_uri + '/icons/' + preload_icons[idx] + '.gif'; -preload_icons[idx] = new Image(); -preload_icons[idx].src = url; -} -for (var idx = 0, len = preload_images.length; idx < len; idx++) { -var url = images_uri + '/' + preload_images[idx]; -preload_images[idx] = new Image(); -preload_images[idx].src = url; -} -} -function $P(id) { -if (!id) id = page_manager.current_page_id; -var page = page_manager.find(id); -assert( !!page, "Failed to locate page: " + id ); -return page; -} -function get_pref(name) { -if (!session.user || !session.user.Preferences) return alert("ASSERT FAILURE! Tried to lookup pref " + name + " and user is not yet loaded!"); -return session.user.Preferences[name]; -} -function get_bool_pref(name) { -return (get_pref(name) == 1); -} -function set_pref(name, value) { -session.user.Preferences[name] = value; -} -function set_bool_pref(name, value) { -set_pref(name, value ? '1' : '0'); -} -function save_prefs() { -var prefs_to_save = {}; -if (arguments.length) { -for (var idx = 0, len = arguments.length; idx < len; idx++) { -var key = arguments[idx]; -prefs_to_save[key] = get_pref(key); -} -} -else prefs_to_save = session.user.Preferences; -effect_api_mod_touch('user_get'); -effect_api_send('user_update', { -Username: session.username, -Preferences: prefs_to_save -}, 'save_prefs_2'); -} -function save_prefs_2(response) { -do_message('success', 'Preferences saved.'); -} - -function get_full_name(username) { -var user = session.users[username]; -if (!user) return username; -return user.FullName; -} -function get_buddy_icon_url(username, size) { -var mod = session.api_mod_cache.get_buddy_icon || 0; -if (!size) size = 32; -var url = '/effect/api/get_buddy_icon?username='+username + '&mod=' + mod + '&size=' + size; -return url; -} -function get_buddy_icon_display(username, show_icon, show_name) { -if ((typeof(show_icon) == 'undefined') && get_bool_pref('show_user_icons')) show_icon = 1; -if ((typeof(show_name) == 'undefined') && get_bool_pref('show_user_names')) show_name = 1; -var html = ''; -if (show_icon) html += ''; -if (show_icon && show_name) html += '
'; -if (show_name) html += username; -return html; -} -function do_session_recover() { -session.hooks.after_error = 'do_logout'; -effect_api_send('session_recover', {}, 'do_login_2', { _from_recover: 1 } ); -} -function require_login() { -if (session.user) return true; -Debug.trace('Page requires login, showing login page'); -session.nav_after_login = Nav.currentAnchor(); -setTimeout( function() { -Nav.go( 'Login' ); -}, 1 ); -return false; -} -function popup_window(url, name) { -if (!url) url = ''; -if (!name) name = ''; -var win = window.open(url, name); -if (!win) return alert('Failed to open popup window. If you have a popup blocker, please disable it for this website and try again.'); -return win; -} -function do_login_prompt() { -hide_popup_dialog(); -delete session.progress; -if (!session.temp_password) session.temp_password = ''; -if (!session.username) session.username = ''; -var temp_username = session.open_id || session.username || ''; -var html = ''; -html += '
'; -html += '
'; -html += '
Effect Developer Login
'; -html += '
'; -html += '
Effect Username  or  '+icon('openid', 'OpenID', 'popup_window(\'http://openid.net/\')', 'What is OpenID?')+'


'; -html += '
'; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "clear_login()") + ' ' + large_icon_button('check', 'Login', 'do_login()') + '
'; -html += '
'; -html += ''; -session.hooks.keys[ENTER_KEY] = 'do_login'; -session.hooks.keys[ESC_KEY] = 'clear_login'; -safe_focus( 'fe_username' ); -show_popup_dialog(450, 225, html); -} -function do_openid_reg(title, auto_login_button) { -hide_popup_dialog(); -delete session.progress; -if (!title) title = 'Register Account Using OpenID'; -if (typeof(auto_login_button) == 'undefined') auto_login_button = 1; -var html = ''; -html += '
'; -html += '
'; -html += '
'+title+'
'; -html += '
'; -html += '
'+icon('openid', 'Enter Your OpenID URL:')+'
'; -if (auto_login_button) html += '


'; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', title.match(/login/i) ? 'Login' : 'Register', 'do_openid_login()') + '
'; -html += '
'; -html += ''; -session.hooks.keys[ENTER_KEY] = 'do_openid_login'; -session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; -safe_focus( 'fe_username' ); -show_popup_dialog(450, 225, html); -} -function do_login_prompt_2() { -hide_popup_dialog(); -delete session.progress; -if (!session.temp_password) session.temp_password = ''; -if (!session.username) session.username = ''; -var html = ''; -html += '
'; -html += '
'; -html += '
Enter Your Password
'; -html += '
'; -html += '
Password:


'; -html += '
'; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "clear_login()") + ' ' + large_icon_button('check', 'Login', 'do_effect_login()') + '
'; -html += '
'; -html += ''; -session.hooks.keys[ENTER_KEY] = 'do_effect_login'; -session.hooks.keys[ESC_KEY] = 'clear_login'; -safe_focus( 'fe_lp_password' ); -show_popup_dialog(450, 225, html); -} -function clear_login() { -hide_popup_dialog(); -Nav.prev(); -} -function do_login() { -if ($('fe_username').value.match(/^\w+$/)) { -session.username = $('fe_username').value; -session.auto_login = $('fe_auto_login').checked; -do_login_prompt_2(); -return; -} -else { -do_openid_login(); -} -} -function do_openid_login() { -if (!$('fe_username').value) return; -session.openid_win = popup_window(''); -if (!session.openid_win) return; -session.open_id = $('fe_username').value; -session.auto_login = $('fe_auto_login') && $('fe_auto_login').checked; -hide_popup_dialog(); -show_progress_dialog(1, "Logging in..."); -session.hooks.before_error = 'close_openid_window'; -session.hooks.after_error = 'do_login_prompt'; -effect_api_send('openid_login', { -OpenID: session.open_id, -Infinite: session.auto_login ? 1 : 0 -}, 'do_openid_login_2'); -} -function close_openid_window() { -if (session.openid_win) { -session.openid_win.close(); -delete session.openid_win; -} -} -function do_openid_login_2(response) { -if (response.CheckURL) { -Debug.trace('openid', "Redirecting popup window to OpenID Check URL: " + response.CheckURL); -show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']); -session.openid_win.location = response.CheckURL; -session.openid_win.focus(); -} -} -function receive_openid_response(iframe_response) { -var response = deep_copy_object(iframe_response); -Debug.trace('openid', "Received OpenID Response: " + dumper(response)); -hide_popup_dialog(); -if (response.Code) { -close_openid_window(); -return do_error( response.Description ); -} -delete session.hooks.before_error; -delete session.hooks.after_error; -if (response.SessionID) { -session.cookie.set( 'effect_session_id', response.SessionID ); -session.cookie.save(); -} -switch (response.Action) { -case 'popup': -show_progress_dialog(1, "Waiting for popup window...", false, ['x', 'Cancel', 'do_login_prompt()']); -Debug.trace('openid', "Redirecting popup window to OpenID Setup URL: " + response.SetupURL); -session.openid_win.location = response.SetupURL; -session.openid_win.focus(); -break; -case 'login': -close_openid_window(); -do_login_2(response); -break; -case 'register': -if (!response.Info) response.Info = {}; -close_openid_window(); -Debug.trace('openid', 'Original OpenID: ' + response.OpenID_Login); -Debug.trace('openid', 'Clean OpenID: ' + response.OpenID_Unique); -Debug.trace('openid', 'Registration Info: ' + dumper(response.Info)); -session.prereg = response.Info; -session.prereg.open_id_login = response.OpenID_Login; -session.prereg.open_id = response.OpenID_Unique; -if (session.user) { -if (!session.user.OpenIDs) session.user.OpenIDs = {}; -if (!session.user.OpenIDs.OpenID) session.user.OpenIDs.OpenID = []; -var dupe = find_object( session.user.OpenIDs.OpenID, { Unique: session.prereg.open_id } ); -if (dupe) return do_error("That OpenID is already registered and attached to your account. No need to add it again."); -session.user.OpenIDs.OpenID.push({ -Login: session.prereg.open_id_login, -Unique: session.prereg.open_id -}); -setTimeout( function() { -Nav.go('MyAccount', true); -do_message('success', 'Added new OpenID URL to account.'); -}, 1 ); -} -else { -setTimeout( function() { Nav.go('CreateAccount', true); }, 1 ); -} -break; -} -} -function do_effect_login() { -var password = $('fe_lp_password').value; -session.auto_login = $('fe_auto_login').checked; -hide_popup_dialog(); -show_progress_dialog(1, "Logging in..."); -session.hooks.after_error = 'do_login_prompt'; -effect_api_send('user_login', { -Username: session.username, -Password: password, -Infinite: session.auto_login ? 1 : 0 -}, 'do_login_2'); -} -function do_logout() { -effect_api_send('user_logout', {}, 'do_logout_2'); -} -function do_logout_2(response) { -hide_popup_dialog(); -show_default_login_status(); -delete session.hooks.after_error; -delete session.cookie.tree.effect_session_id; -session.cookie.save(); -session.storage = {}; -session.storage_dirty = false; -delete session.user; -delete session.first_login; -var old_username = session.username; -session.username = ''; -if (Nav.inited) { -Nav.go('Main'); -if (old_username) $GR.growl('success', "Logged out of account: " + old_username); -} -else { -Nav.init(); -} -} -function do_login_2(response, tx) { -if (response.FirstLogin) session.first_login = 1; -if (response.User.UserStorage) { -Debug.trace('Recovering site storage blob: session.storage = ' + response.User.UserStorage + ';'); -try { -eval( 'session.storage = ' + response.User.UserStorage + ';' ); -} -catch (e) { -Debug.trace("SITE STORAGE RECOVERY FAILED: " + e); -session.storage = {}; -} -delete response.User.UserStorage; -session.storage_dirty = false; -} -session.user = response.User; -session.username = session.user.Username; -hide_popup_dialog(); -delete session.hooks.after_error; -update_header(); -if (!tx || !tx._from_recover) $GR.growl('success', "Logged in as: " + session.username); -if (session.nav_after_login) { -Nav.go( session.nav_after_login ); -delete session.nav_after_login; -} -else if (Nav.currentAnchor().match(/^Login/)) { -Nav.go('Home'); -} -else { -Nav.refresh(); -} -Nav.init(); -} -function user_storage_mark() { -Debug.trace("Marking user storage as dirty"); -session.storage_dirty = true; -} -function user_storage_idle() { -if (session.storage_dirty && !session.mouseIsDown) { -user_storage_save(); -session.storage_dirty = false; -} -setTimeout( 'user_storage_idle()', 5000 ); -} -function user_storage_save() { -if (session.user) { -Debug.trace("Committing user storage blob"); -effect_api_send('update_user_storage', { Data: serialize(session.storage) }, 'user_storage_save_finish', { _silent: 1 } ); -} -} -function user_storage_save_finish(response, tx) { -} -function show_default_login_status() { -$('d_sidebar_wrapper_recent_games').hide(); -$('d_login_status').innerHTML = '
' + -'
' + -large_icon_button('key', "Login", '#Home') + '' + spacer(1,1) + '' + -'' + large_icon_button('user_add.png', "Signup", '#CreateAccount') + '
' + -'
'; -$('d_tagline').innerHTML = -'Login' + ' | ' + -'Create Account'; -} -function update_header() { -var html = ''; -html += '
'; -html += ''; -html += ''; -html += ''; -html += ''+spacer(2,2)+''; -html += session.user.FullName + '
'; -html += spacer(1,5) + '
'; -html += 'My Home  |  '; -html += 'Logout'; -html += '
'; -$('d_login_status').innerHTML = html; -$('d_tagline').innerHTML = -'Welcome '+session.user.FirstName+'' + ' | ' + -'My Home' + ' | ' + -'Logout'; -effect_api_get( 'get_user_games', { limit:5, offset:0 }, 'receive_sidebar_recent_games', { } ); -} -function receive_sidebar_recent_games(response, tx) { -var html = ''; -if (response.Rows && response.Rows.Row) { -var games = always_array( response.Rows.Row ); -for (var idx = 0, len = games.length; idx < len; idx++) { -var game = games[idx]; -html += ''; -} -html += ''; -$('d_sidebar_recent_games').innerHTML = html; -$('d_sidebar_wrapper_recent_games').show(); -} -else { -$('d_sidebar_wrapper_recent_games').hide(); -} -} -function check_privilege(key) { -if (!session.user) return false; -if (session.user.Privileges.admin == 1) return true; -if (!key.toString().match(/^\//)) key = '/' + key; -var value = lookup_path(key, session.user.Privileges); -return( value && (value != 0) ); -} -function is_admin() { -return check_privilege('admin'); -} -function upgrade_flash_error() { -return alert("Sorry, file upload requires Adobe Flash Player 9 or higher."); -} -function cancel_user_image_manager() { -upload_destroy(); -hide_popup_dialog(); -delete session.hooks.keys[DELETE_KEY]; -} -function do_user_image_manager(callback) { -if (callback) session.uim_callback = callback; -else session.uim_callback = null; -session.temp_last_user_img = null; -session.temp_last_user_image_filename = ''; -var html = '
'; -html += '
Image Manager
'; -html += '
'; -html += ''; -html += '
'; -html += '
'; -html += ''; -html += ''; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', 'cancel_user_image_manager()') + ' ' + large_icon_button('bullet_upload.png', 'Upload Files...', 'upload_basic()', 'b_upload_user_image') + ' ' + large_icon_button('check', 'Choose', 'do_choose_user_image()', 'btn_choose_user_image', '', 'disabled') + '
'; -html += '
'; -session.hooks.keys[ENTER_KEY] = 'do_choose_user_image'; -session.hooks.keys[ESC_KEY] = 'cancel_user_image_manager'; -session.hooks.keys[DELETE_KEY] = 'do_delete_selected_user_image'; -show_popup_dialog(500, 300, html); -var self = this; -setTimeout( function() { -prep_upload('b_upload_user_image', '/effect/api/upload_user_image', [self, 'do_upload_user_image_2'], ['Image Files', '*.jpg;*.jpe;*.jpeg;*.gif;*.png']); -}, 1 ); -var args = { -limit: 50, -offset: 0, -random: Math.random() -}; -effect_api_get( 'user_images_get', args, 'uim_populate_images', { } ); -} -function do_upload_user_image_2() { -effect_api_mod_touch('user_images_get'); -effect_api_send('user_get', { -Username: session.username -}, [this, 'do_upload_user_image_3']); -} -function do_upload_user_image_3(response) { -if (response.User.LastUploadError) return do_error( "Failed to upload image: " + response.User.LastUploadError ); -do_user_image_manager( session.uim_callback ); -} -function uim_populate_images(response, tx) { -var html = ''; -var base_url = '/effect/api/view/users/' + session.username + '/images'; -if (response.Rows && response.Rows.Row) { -var imgs = always_array( response.Rows.Row ); -for (var idx = 0, len = imgs.length; idx < len; idx++) { -var img = imgs[idx]; -var class_name = ((img.Filename == session.temp_last_user_image_filename) ? 'choose_item_selected' : 'choose_item'); -html += ''; -} -} -else { -html = ''; -} -$('d_user_image_list').innerHTML = html; -} -function do_select_user_image(img, filename) { -if (session.temp_last_user_img) session.temp_last_user_img.className = 'choose_item'; -img.className = 'choose_item_selected'; -$('btn_choose_user_image').removeClass('disabled'); -session.temp_last_user_img = img; -session.temp_last_user_image_filename = filename; -} -function do_delete_selected_user_image() { -if (session.temp_last_user_image_filename) { -effect_api_send('user_image_delete', { Filename: session.temp_last_user_image_filename }, 'do_delete_selected_user_image_finish', {}); -} -} -function do_delete_selected_user_image_finish(response, tx) { -try { $('d_user_image_list').removeChild( session.temp_last_user_img ); } catch(e) {;} -session.temp_last_user_img = null; -session.temp_last_user_image_filename = null; -} -function do_choose_user_image() { -if (!session.temp_last_user_image_filename) return; -if (session.uim_callback) { -fire_callback( session.uim_callback, session.temp_last_user_image_filename ); -} -cancel_user_image_manager(); -} -function user_image_thumbnail(filename, width, height, attribs) { -var username = session.username; -if (filename.match(/^(\w+)\/(.+)$/)) { -username = RegExp.$1; -filename = RegExp.$2; -} -var url = '/effect/api/view/users/' + username + '/images/' + filename.replace(/\.(\w+)$/, '_thumb.jpg'); -return ''; -} -function get_user_display(username, full_name, base_url) { -if (!base_url) base_url = ''; -return icon('user', full_name || username, base_url + '#User/' + username); -} -function get_game_tab_bar(game_id, cur_page_name) { -return tab_bar([ -['#Game/' + game_id, 'Game', 'controller.png'], -['#GameDisplay/' + game_id, 'Display', 'monitor.png'], -['#GameAssets/' + game_id, 'Assets', 'folder_page_white.png'], -['#GameObjects/' + game_id, 'Objects', 'bricks.png'], -['#GameAudio/' + game_id, 'Audio', 'sound.gif'], -['#GameKeys/' + game_id, 'Keyboard', 'keyboard.png'], -['#GameLevels/' + game_id, 'Levels', 'world.png'], -['#GamePublisher/' + game_id, 'Publish', 'cd.png'] -], cur_page_name); -} -function get_user_tab_bar(cur_page_name) { -var tabs = [ -['#Home', 'My Home', 'house.png'] -]; -tabs.push( ['#MyAccount', 'Edit Account', 'user_edit.png'] ); -tabs.push( ['#ArticleEdit', 'Post Article', 'page_white_edit.png'] ); -if (config.ProEnabled) { -tabs.push( ['#UserPayments', 'Payments', 'money.png'] ); -} -tabs.push( ['#UserLog', 'Security Log', 'application_view_detail.png'] ); -return tab_bar(tabs, cur_page_name); -} -function get_admin_tab_bar(cur_page_name) { -var tabs = []; -tabs.push( ['#Admin', 'Admin', 'lock.png'] ); -tabs.push( ['#TicketSearch/bugs', 'Bug Tracker', 'bug.png'] ); -tabs.push( ['#TicketSearch/helpdesk', 'Help Desk', 'telephone.png'] ); -tabs.push( ['#AdminReport', 'Reports', 'chart_pie.png'] ); -return tab_bar(tabs, cur_page_name); -} -function get_string(path, args) { -assert(window.config, "get_string() called before config loaded"); -if (!args) args = {}; -args.config = config; -args.session = session; -args.query = session.query; -var value = lookup_path(path, config.Strings); -return (typeof(value) == 'string') ? substitute(value, args) : value; -} -function normalize_dir_path(path) { -if (!path.match(/^\//)) path = '/' + path; -if (!path.match(/\/$/)) path += '/'; -return path; -} -function textedit_window_save(storage_key, filename, content, callback) { -if (!callback) callback = null; -effect_api_mod_touch('textedit'); -if (storage_key.match(/^\/games\/([a-z0-9][a-z0-9\-]*[a-z0-9])\/assets(.+)$/)) { -var game_id = RegExp.$1; -var path = RegExp.$2; -show_progress_dialog(1, "Saving file..."); -effect_api_send('asset_save_file_contents', { -GameID: game_id, -Path: path, -Filename: filename, -Content: content -}, 'textedit_window_save_finish', { _mode: 'asset', _game_id: game_id, _filename: filename, _callback: callback } ); -} -else { -show_progress_dialog(1, "Saving data..."); -effect_api_send('admin_save_file_contents', { -Path: storage_key, -Filename: filename, -Content: content -}, 'textedit_window_save_finish', { _mode: 'admin', _storage_key: storage_key, _filename: filename, _callback: callback } ); -} -} -function textedit_window_save_finish(response, tx) { -hide_progress_dialog(); -if (tx._mode == 'asset') { -do_message('success', "Saved asset: \""+tx._filename+"\""); -show_glog_widget(); -} -else { -do_message('success', "Saved data: \""+tx._storage_key+'/'+tx._filename+"\""); -} -if (tx._callback) tx._callback(); -} -function do_buy(args) { -$P().hide(); -$('d_page_loading').show(); -effect_api_send('create_order', args, 'do_buy_redirect', { _buy_args: args } ); -} -function do_buy_redirect(response, tx) { -var args = tx._buy_args; -$('fe_gco_title').value = args.Title || ''; -$('fe_gco_desc').value = args.Desc || ''; -$('fe_gco_price').value = args.Price || ''; -$('fe_gco_after').value = args.After || ''; -$('fe_gco_unique_id').value = response.OrderID; -Debug.trace('payment', "Redirecting to Google Checkout"); -setTimeout( function() { $('BB_BuyButtonForm').submit(); }, 1 ); -} -function show_glog_widget(game_id) { -if (!game_id) game_id = session.glog_game_id; -if (!game_id) { -$('glog_widget').hide(); -return; -} -if (game_id != session.glog_game_id) { -$('glog_widget').hide(); -session.glog_game_id = game_id; -update_glog_widget(game_id); -} -else { -$('glog_widget').show(); -setTimeout( function() { update_glog_widget(game_id); }, 500 ); -} -} -function update_glog_widget(game_id) { -effect_api_get('game_get_log', { -id: game_id, -offset: 0, -limit: 1, -rand: Math.random() -}, 'receive_glog_data', { _game_id: game_id }); -} -function receive_glog_data(response, tx) { -var game_id = tx._game_id; -if (response && response.Rows && response.Rows.Row) { -var rows = always_array( response.Rows.Row ); -var row = rows[0]; -var html = ''; -html += '
'; -html += '
Latest Game Activity
'; -html += ''; -html += ''; -html += '
'; -html += '
'; -html += ''; -html += ''; -html += ''; -html += '
' + get_buddy_icon_display(row.Username, 1, 0) + ''; -html += '
' + icon( get_icon_for_glog_type(row.Type), ''+row.Message+'' ) + '
'; -html += '
' + get_relative_date(row.Date, true) + '
'; -html += '
'; -$('glog_widget').innerHTML = html; -$('glog_widget').show(); -} -} -function show_glog_post_dialog(game_id) { -hide_popup_dialog(); -delete session.progress; -var html = ''; -html += '
'; -html += '"; - second_cell = ""; - row = $("").attr("id", "s" + index).attr("class", "location_row").html(first_cell + second_cell); - $locationsDiv.append(row); - } - if (index === this.numSearchToDisplay) { - $locationsDiv.append(""); - return $locationsDiv.append(""); - } - }, this); - return this.geocoder.geocode({ - address: address - }, __bind(function(result, status) { - if (status !== "OK") { - $('.error_message').html(t("Search Address Failed")).fadeIn(); - return; - } - _.each(result, showResults); - $("#search_results").html($locationsDiv); - this.locationChange("search"); - this.searchResults = result; - return this.displaySearchLoc(); - }, this)); - }; - ClientsRequestView.prototype.mouseoverLocation = function(e) { - var $el, id, marker; - $el = $(e.currentTarget); - id = $el.attr("id").substring(1); - marker = this.markers[id]; - return marker.setAnimation(google.maps.Animation.BOUNCE); - }; - ClientsRequestView.prototype.mouseoutLocation = function(e) { - var $el, id, marker; - $el = $(e.currentTarget); - id = $el.attr("id").substring(1); - marker = this.markers[id]; - return marker.setAnimation(null); - }; - ClientsRequestView.prototype.searchLocation = function(e) { - e.preventDefault(); - $("#address").val($(e.currentTarget).html()); - return this.searchAddress(); - }; - ClientsRequestView.prototype.favoriteClick = function(e) { - var index, location; - e.preventDefault(); - $(".favorites").attr("href", ""); - index = $(e.currentTarget).removeAttr("href").attr("id"); - location = new google.maps.LatLng(USER.locations[index].latitude, USER.locations[index].longitude); - return this.panToLocation(location); - }; - ClientsRequestView.prototype.clickLocation = function(e) { - var id; - id = $(e.currentTarget).attr("id").substring(1); - return this.panToLocation(this.markers[id].getPosition()); - }; - ClientsRequestView.prototype.panToLocation = function(location) { - this.map.panTo(location); - this.map.setZoom(16); - return this.pickup_icon.setPosition(location); - }; - ClientsRequestView.prototype.locationLinkHandle = function(e) { - var panelName; - e.preventDefault(); - panelName = $(e.currentTarget).attr("id"); - return this.locationChange(panelName); - }; - ClientsRequestView.prototype.locationChange = function(type) { - $(".locations_link").attr("href", "").css("font-weight", "normal"); - switch (type) { - case "favorite": - $(".search_results").attr("href", ""); - $(".locations_link#favorite").removeAttr("href").css("font-weight", "bold"); - $("#search_results").hide(); - $("#favorite_results").fadeIn(); - return this.displayFavLoc(); - case "search": - $(".favorites").attr("href", ""); - $(".locations_link#search").removeAttr("href").css("font-weight", "bold"); - $("#favorite_results").hide(); - $("#search_results").fadeIn(); - return this.displaySearchLoc(); - } - }; - ClientsRequestView.prototype.rateTrip = function(e) { - var rating; - rating = $(e.currentTarget).attr("id"); - $(".stars").attr("src", "/web/img/star_inactive.png"); - return _(rating).times(function(index) { - return $(".stars#" + (index + 1)).attr("src", "/web/img/star_active.png"); - }); - }; - ClientsRequestView.prototype.pickupHandle = function(e) { - var $el, callback, message; - e.preventDefault(); - $el = $(e.currentTarget).find("span"); - switch ($el.html()) { - case t("Request Pickup"): - _.delay(this.requestRide, 3000); - $("#status_message").html(t("Sending pickup request...")); - $el.html(t("Cancel Pickup")).parent().attr("class", "button_red"); - this.pickup_icon.setDraggable(false); - this.map.panTo(this.pickup_icon.getPosition()); - return this.map.setZoom(18); - case t("Cancel Pickup"): - if (this.status === "ready") { - $el.html(t("Request Pickup")).parent().attr("class", "button_green"); - return this.pickup_icon.setDraggable(true); - } else { - callback = __bind(function(v, m, f) { - if (v) { - this.AskDispatch("PickupCanceledClient"); - return this.setStatus("ready"); - } - }, this); - message = t("Cancel Request Prompt"); - if (this.status === "arriving") { - message = 'Cancel Request Arrived Prompt'; - } - return $.prompt(message, { - buttons: { - Ok: true, - Cancel: false - }, - callback: callback - }); - } - } - }; - ClientsRequestView.prototype.requestRide = function() { - if ($("#pickupHandle").find("span").html() === t("Cancel Pickup")) { - this.AskDispatch("Pickup"); - return this.setStatus("searching"); - } - }; - ClientsRequestView.prototype.removeCabs = function() { - _.each(this.cabs, __bind(function(point) { - return point.setMap(null); - }, this)); - return this.cabs = []; - }; - ClientsRequestView.prototype.addToFavLoc = function(e) { - var $el, lat, lng, nickname; - e.preventDefault(); - $el = $(e.currentTarget); - $el.find(".error_message").html(""); - nickname = $el.find("#favLocNickname").val().toString(); - lat = $el.find("#pickupLat").val().toString(); - lng = $el.find("#pickupLng").val().toString(); - if (nickname.length < 3) { - $el.find(".error_message").html(t("Favorite Location Nickname Length Error")); - return; - } - this.ShowSpinner("submit"); - return $.ajax({ - type: 'POST', - url: API + "/locations", - dataType: 'json', - data: { - token: USER.token, - nickname: nickname, - latitude: lat, - longitude: lng - }, - success: __bind(function(data, textStatus, jqXHR) { - return $el.html(t("Favorite Location Save Succeeded")); - }, this), - error: __bind(function(jqXHR, textStatus, errorThrown) { - return $el.find(".error_message").html(t("Favorite Location Save Failed")); - }, this), - complete: __bind(function(data) { - return this.HideSpinner(); - }, this) - }); - }; - ClientsRequestView.prototype.showFavLoc = function(e) { - $(e.currentTarget).fadeOut(); - return $("#favLoc_form").fadeIn(); - }; - ClientsRequestView.prototype.selectInputText = function(e) { - e.currentTarget.focus(); - return e.currentTarget.select(); - }; - ClientsRequestView.prototype.displayFavLoc = function() { - var alphabet, bounds; - alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - this.removeMarkers(); - bounds = new google.maps.LatLngBounds(); - _.each(USER.locations, __bind(function(location, index) { - var marker; - marker = new google.maps.Marker({ - position: new google.maps.LatLng(location.latitude, location.longitude), - map: this.map, - title: t("Favorite Location Title", { - id: alphabet != null ? alphabet[index] : void 0 - }), - icon: "https://www.google.com/mapfiles/marker" + alphabet[index] + ".png" - }); - this.markers.push(marker); - bounds.extend(marker.getPosition()); - return google.maps.event.addListener(marker, 'click', __bind(function() { - return this.pickup_icon.setPosition(marker.getPosition()); - }, this)); - }, this)); - this.pickup_icon.setPosition(_.first(this.markers).getPosition()); - return this.map.fitBounds(bounds); - }; - ClientsRequestView.prototype.displaySearchLoc = function() { - var alphabet; - alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - this.removeMarkers(); - return _.each(this.searchResults, __bind(function(result, index) { - var marker; - if (index < this.numSearchToDisplay) { - marker = new google.maps.Marker({ - position: result.geometry.location, - map: this.map, - title: t("Search Location Title", { - id: alphabet != null ? alphabet[index] : void 0 - }), - icon: "https://www.google.com/mapfiles/marker" + alphabet[index] + ".png" - }); - this.markers.push(marker); - return this.panToLocation(result.geometry.location); - } - }, this)); - }; - ClientsRequestView.prototype.removeMarkers = function() { - _.each(this.markers, __bind(function(marker) { - return marker.setMap(null); - }, this)); - return this.markers = []; - }; - ClientsRequestView.prototype.AskDispatch = function(ask, options) { - var attrs, lowestETA, processData, showCab; - if (ask == null) { - ask = ""; - } - if (options == null) { - options = {}; - } - switch (ask) { - case "NearestCab": - attrs = { - latitude: this.pickup_icon.getPosition().lat(), - longitude: this.pickup_icon.getPosition().lng() - }; - lowestETA = 99999; - showCab = __bind(function(cab) { - var point; - point = new google.maps.Marker({ - position: new google.maps.LatLng(cab.latitude, cab.longitude), - map: this.map, - icon: this.cabMarker, - title: t("ETA Message", { - minutes: app.helpers.FormatSeconds(cab != null ? cab.eta : void 0, true) - }) - }); - if (cab.eta < lowestETA) { - lowestETA = cab.eta; - } - return this.cabs.push(point); - }, this); - processData = __bind(function(data, textStatus, jqXHR) { - if (this.status === "ready") { - this.removeCabs(); - if (data.sorry) { - $("#status_message").html(data.sorry).fadeIn(); - } else { - _.each(data.driverLocations, showCab); - $("#status_message").html(t("Nearest Cab Message", { - minutes: app.helpers.FormatSeconds(lowestETA, true) - })).fadeIn(); - } - if (Backbone.history.fragment === "!/request") { - return _.delay(this.showCabs, this.pollInterval); - } - } - }, this); - return this.AjaxCall(ask, processData, attrs); - case "StatusClient": - processData = __bind(function(data, textStatus, jqXHR) { - var bounds, cabLocation, locationSaved, point, userLocation; - if (data.messageType === "OK") { - switch (data.status) { - case "completed": - this.removeCabs(); - this.setStatus("rate"); - return this.fetchTripDetails(data.tripID); - case "open": - return this.setStatus("ready"); - case "begintrip": - this.setStatus("riding"); - cabLocation = new google.maps.LatLng(data.latitude, data.longitude); - this.removeCabs(); - this.pickup_icon.setMap(null); - point = new google.maps.Marker({ - position: cabLocation, - map: this.map, - icon: this.cabMarker - }); - this.cabs.push(point); - this.map.panTo(point.getPosition()); - $("#rideName").html(data.driverName); - $("#ridePhone").html(data.driverMobile); - $("#ride_address_wrapper").hide(); - if (Backbone.history.fragment === "!/request") { - return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); - } - break; - case "pending": - this.setStatus("searching"); - if (Backbone.history.fragment === "!/request") { - return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); - } - break; - case "accepted": - case "arrived": - if (data.status === "accepted") { - this.setStatus("waiting"); - $("#status_message").html(t("Arrival ETA Message", { - minutes: app.helpers.FormatSeconds(data.eta, true) - })); - } else { - this.setStatus("arriving"); - $("#status_message").html(t("Arriving Now Message")); - } - userLocation = new google.maps.LatLng(data.pickupLocation.latitude, data.pickupLocation.longitude); - cabLocation = new google.maps.LatLng(data.latitude, data.longitude); - this.pickup_icon.setPosition(userLocation); - this.removeCabs(); - $("#rideName").html(data.driverName); - $("#ridePhone").html(data.driverMobile); - if ($("#rideAddress").html() === "") { - locationSaved = false; - _.each(USER.locations, __bind(function(location) { - if (parseFloat(location.latitude) === parseFloat(data.pickupLocation.latitude) && parseFloat(location.longitude) === parseFloat(data.pickupLocation.longitude)) { - return locationSaved = true; - } - }, this)); - if (locationSaved) { - $("#addToFavButton").hide(); - } - $("#pickupLat").val(data.pickupLocation.latitude); - $("#pickupLng").val(data.pickupLocation.longitude); - this.geocoder.geocode({ - location: userLocation - }, __bind(function(result, status) { - $("#rideAddress").html(result[0].formatted_address); - return $("#favLocNickname").val("" + result[0].address_components[0].short_name + " " + result[0].address_components[1].short_name); - }, this)); - } - point = new google.maps.Marker({ - position: cabLocation, - map: this.map, - icon: this.cabMarker - }); - this.cabs.push(point); - bounds = bounds = new google.maps.LatLngBounds(); - bounds.extend(cabLocation); - bounds.extend(userLocation); - this.map.fitBounds(bounds); - if (Backbone.history.fragment === "!/request") { - return _.delay(this.AskDispatch, this.pollInterval, "StatusClient"); - } - } - } - }, this); - return this.AjaxCall(ask, processData); - case "Pickup": - attrs = { - latitude: this.pickup_icon.getPosition().lat(), - longitude: this.pickup_icon.getPosition().lng() - }; - processData = __bind(function(data, textStatus, jqXHR) { - if (data.messageType === "Error") { - return $("#status_message").html(data.description); - } else { - return this.AskDispatch("StatusClient"); - } - }, this); - return this.AjaxCall(ask, processData, attrs); - case "PickupCanceledClient": - processData = __bind(function(data, textStatus, jqXHR) { - if (data.messageType === "OK") { - return this.setStatus("ready"); - } else { - return $("#status_message").html(data.description); - } - }, this); - return this.AjaxCall(ask, processData, attrs); - case "RatingDriver": - attrs = { - rating: options.rating - }; - processData = __bind(function(data, textStatus, jqXHR) { - if (data.messageType === "OK") { - this.setStatus("init"); - } else { - $("status_message").html(t("Rating Driver Failed")); - } - return this.HideSpinner(); - }, this); - return this.AjaxCall(ask, processData, attrs); - case "Feedback": - attrs = { - message: options.message - }; - processData = __bind(function(data, textStatus, jqXHR) { - if (data.messageType === "OK") { - return alert("rated"); - } - }, this); - return this.AjaxCall(ask, processData, attrs); - } - }; - ClientsRequestView.prototype.AjaxCall = function(type, successCallback, attrs) { - if (attrs == null) { - attrs = {}; - } - _.extend(attrs, { - token: USER.token, - messageType: type, - app: "client", - version: "1.0.60", - device: "web" - }); - return $.ajax({ - type: 'POST', - url: DISPATCH + "/", - processData: false, - data: JSON.stringify(attrs), - success: successCallback, - dataType: 'json', - error: __bind(function(jqXHR, textStatus, errorThrown) { - $("#status_message").html(errorThrown); - return this.HideSpinner(); - }, this) - }); - }; - return ClientsRequestView; - })(); -}).call(this); -}, "views/clients/settings": function(exports, require, module) {(function() { - var clientsSettingsTemplate; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsSettingsTemplate = require('templates/clients/settings'); - exports.ClientsSettingsView = (function() { - __extends(ClientsSettingsView, UberView); - function ClientsSettingsView() { - this.render = __bind(this.render, this); - this.initialize = __bind(this.initialize, this); - ClientsSettingsView.__super__.constructor.apply(this, arguments); - } - ClientsSettingsView.prototype.id = 'settings_view'; - ClientsSettingsView.prototype.className = 'view_container'; - ClientsSettingsView.prototype.events = { - 'submit #profile_pic_form': 'processPicUpload', - 'click #submit_pic': 'processPicUpload', - 'click a.setting_change': "changeTab", - 'submit #edit_info_form': "submitInfo", - 'click #change_password': 'changePass' - }; - ClientsSettingsView.prototype.divs = { - 'info_div': "Information", - 'pic_div': "Picture" - }; - ClientsSettingsView.prototype.pageTitle = t("Settings") + " | " + t("Uber"); - ClientsSettingsView.prototype.tabTitle = { - 'info_div': t("Information"), - 'pic_div': t("Picture") - }; - ClientsSettingsView.prototype.initialize = function() { - return this.mixin(require('web-lib/mixins/i18n_phone_form').i18nPhoneForm); - }; - ClientsSettingsView.prototype.render = function(type) { - if (type == null) { - type = "info"; - } - this.RefreshUserInfo(__bind(function() { - var $el, alphabet; - this.delegateEvents(); - this.HideSpinner(); - alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - $el = $(this.el); - $(this.el).html(clientsSettingsTemplate({ - type: type - })); - $el.find("#" + type + "_div").show(); - $el.find("a[href='" + type + "_div']").parent().addClass("active"); - return document.title = "" + this.tabTitle[type + '_div'] + " " + this.pageTitle; - }, this)); - this.delegateEvents(); - return this; - }; - ClientsSettingsView.prototype.changeTab = function(e) { - var $eTarget, $el, div, link, pageDiv, _i, _j, _len, _len2, _ref, _ref2; - e.preventDefault(); - $eTarget = $(e.currentTarget); - this.ClearGlobalStatus(); - $el = $(this.el); - _ref = $el.find(".setting_change"); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - link = _ref[_i]; - $(link).parent().removeClass("active"); - } - $eTarget.parent().addClass("active"); - _ref2 = _.keys(this.divs); - for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { - div = _ref2[_j]; - $el.find("#" + div).hide(); - } - pageDiv = $eTarget.attr('href'); - $el.find("#" + pageDiv).show(); - Backbone.history.navigate("!/settings/" + (this.divs[pageDiv].toLowerCase().replace(" ", "-")), false); - document.title = "" + this.tabTitle[pageDiv] + " " + this.pageTitle; - if (pageDiv === "loc_div") { - try { - google.maps.event.trigger(this.map, 'resize'); - return this.map.fitBounds(this.bounds); - } catch (_e) {} - } - }; - ClientsSettingsView.prototype.submitInfo = function(e) { - var $e, attrs, client, options; - $('#global_status').find('.success_message').text(''); - $('#global_status').find('.error_message').text(''); - $('.error_message').text(''); - e.preventDefault(); - $e = $(e.currentTarget); - attrs = $e.serializeToJson(); - attrs['mobile_country_id'] = this.$('#mobile_country_id').val(); - if (attrs['password'] === '') { - delete attrs['password']; - } - options = { - success: __bind(function(response) { - this.ShowSuccess(t("Information Update Succeeded")); - return this.RefreshUserInfo(); - }, this), - error: __bind(function(model, data) { - var errors; - if (data.status === 406) { - errors = JSON.parse(data.responseText); - return _.each(_.keys(errors), function(field) { - return $("#" + field).parent().find('span.error_message').text(errors[field]); - }); - } else { - return this.ShowError(t("Information Update Failed")); - } - }, this), - type: "PUT" - }; - client = new app.models.client({ - id: USER.id - }); - return client.save(attrs, options); - }; - ClientsSettingsView.prototype.changePass = function(e) { - e.preventDefault(); - $(e.currentTarget).hide(); - return $("#password").show(); - }; - ClientsSettingsView.prototype.processPicUpload = function(e) { - e.preventDefault(); - this.ShowSpinner("submit"); - return $.ajaxFileUpload({ - url: API + '/user_pictures', - secureuri: false, - fileElementId: 'picture', - data: { - token: USER.token - }, - dataType: 'json', - complete: __bind(function(data, status) { - this.HideSpinner(); - if (status === 'success') { - this.ShowSuccess(t("Picture Update Succeeded")); - return this.RefreshUserInfo(__bind(function() { - return $("#settingsProfPic").attr("src", USER.picture_url + ("?" + (Math.floor(Math.random() * 1000)))); - }, this)); - } else { - if (data.error) { - return this.ShowError(data.error); - } else { - return this.ShowError("Picture Update Failed"); - } - } - }, this) - }); - }; - return ClientsSettingsView; - })(); -}).call(this); -}, "views/clients/sign_up": function(exports, require, module) {(function() { - var clientsSignUpTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - clientsSignUpTemplate = require('templates/clients/sign_up'); - exports.ClientsSignUpView = (function() { - __extends(ClientsSignUpView, UberView); - function ClientsSignUpView() { - ClientsSignUpView.__super__.constructor.apply(this, arguments); - } - ClientsSignUpView.prototype.id = 'signup_view'; - ClientsSignUpView.prototype.className = 'view_container'; - ClientsSignUpView.prototype.initialize = function() { - this.mixin(require('web-lib/mixins/i18n_phone_form').i18nPhoneForm); - return $('#location_country').live('change', function() { - if (!$('#mobile').val()) { - return $('#mobile_country').find("option[value=" + ($(this).val()) + "]").attr('selected', 'selected').end().trigger('change'); - } - }); - }; - ClientsSignUpView.prototype.events = { - 'submit form': 'signup', - 'click button': 'signup', - 'change #card_number': 'showCardType', - 'change #location_country': 'countryChange' - }; - ClientsSignUpView.prototype.render = function(invite) { - this.HideSpinner(); - $(this.el).html(clientsSignUpTemplate({ - invite: invite - })); - return this; - }; - ClientsSignUpView.prototype.signup = function(e) { - var $el, attrs, client, error_messages, options; - e.preventDefault(); - $el = $("form"); - $el.find('#terms_error').hide(); - if (!$el.find('#signup_terms input[type=checkbox]').attr('checked')) { - $('#spinner.submit').hide(); - $el.find('#terms_error').show(); - return; - } - error_messages = $el.find('.error_message').html(""); - attrs = { - first_name: $el.find('#first_name').val(), - last_name: $el.find('#last_name').val(), - email: $el.find('#email').val(), - password: $el.find('#password').val(), - location_country: $el.find('#location_country option:selected').attr('data-iso2'), - location: $el.find('#location').val(), - language: $el.find('#language').val(), - mobile_country: $el.find('#mobile_country option:selected').attr('data-iso2'), - mobile: $el.find('#mobile').val(), - card_number: $el.find('#card_number').val(), - card_expiration_month: $el.find('#card_expiration_month').val(), - card_expiration_year: $el.find('#card_expiration_year').val(), - card_code: $el.find('#card_code').val(), - use_case: $el.find('#use_case').val(), - promotion_code: $el.find('#promotion_code').val() - }; - options = { - statusCode: { - 200: function(response) { - $.cookie('token', response.token); - amplify.store('USERjson', response); - app.refreshMenu(); - return app.routers.clients.navigate('!/dashboard', true); - }, - 406: function(e) { - var error, errors, _i, _len, _ref, _results; - errors = JSON.parse(e.responseText); - _ref = _.keys(errors); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - error = _ref[_i]; - _results.push($('#' + error).parent().find('span').html($('#' + error).parent().find('span').html() + " " + errors[error])); - } - return _results; - } - }, - complete: __bind(function(response) { - return this.HideSpinner(); - }, this) - }; - client = new app.models.client; - $('.spinner#submit').show(); - return client.save(attrs, options); - }; - ClientsSignUpView.prototype.countryChange = function(e) { - var $e; - $e = $(e.currentTarget); - return $("#mobile_country").val($e.val()).trigger('change'); - }; - ClientsSignUpView.prototype.showCardType = function(e) { - var $el, reAmerica, reDiscover, reMaster, reVisa, validCard; - reVisa = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; - reMaster = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; - reAmerica = /^6011-?\d{4}-?\d{4}-?\d{4}$/; - reDiscover = /^3[4,7]\d{13}$/; - $el = $("#card_logos_signup"); - validCard = false; - if (e.currentTarget.value.match(reVisa)) { - $el.find("#overlay_left").css('width', "0px"); - return $el.find("#overlay_right").css('width', "75%"); - } else if (e.currentTarget.value.match(reMaster)) { - $el.find("#overlay_left").css('width', "25%"); - return $el.find("#overlay_right").css('width', "50%"); - } else if (e.currentTarget.value.match(reAmerica)) { - $el.find("#overlay_left").css('width', "75%"); - $el.find("#overlay_right").css('width', "0px"); - return console.log("amex"); - } else if (e.currentTarget.value.match(reDiscover)) { - $el.find("#overlay_left").css('width', "50%"); - return $el.find("#overlay_right").css('width', "25%"); - } else { - $el.find("#overlay_left").css('width', "0px"); - return $el.find("#overlay_right").css('width', "0px"); - } - }; - return ClientsSignUpView; - })(); -}).call(this); -}, "views/clients/trip_detail": function(exports, require, module) {(function() { - var clientsTripDetailTemplate; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsTripDetailTemplate = require('templates/clients/trip_detail'); - exports.TripDetailView = (function() { - __extends(TripDetailView, UberView); - function TripDetailView() { - this.resendReceipt = __bind(this.resendReceipt, this); - TripDetailView.__super__.constructor.apply(this, arguments); - } - TripDetailView.prototype.id = 'trip_detail_view'; - TripDetailView.prototype.className = 'view_container'; - TripDetailView.prototype.events = { - 'click a#fare_review': 'showFareReview', - 'click #fare_review_hide': 'hideFareReview', - 'submit #form_review_form': 'submitFareReview', - 'click #submit_fare_review': 'submitFareReview', - 'click .resendReceipt': 'resendReceipt' - }; - TripDetailView.prototype.render = function(id) { - if (id == null) { - id = 'invalid'; - } - this.ReadUserInfo(); - this.HideSpinner(); - this.model = new app.models.trip({ - id: id - }); - this.model.fetch({ - data: { - relationships: 'points,driver,city.country' - }, - dataType: 'json', - success: __bind(function() { - var trip; - trip = this.model; - $(this.el).html(clientsTripDetailTemplate({ - trip: trip - })); - this.RequireMaps(__bind(function() { - var bounds, endPos, map, myOptions, path, polyline, startPos; - bounds = new google.maps.LatLngBounds(); - path = []; - _.each(this.model.get('points'), __bind(function(point) { - path.push(new google.maps.LatLng(point.lat, point.lng)); - return bounds.extend(_.last(path)); - }, this)); - myOptions = { - zoom: 12, - center: path[0], - mapTypeId: google.maps.MapTypeId.ROADMAP, - zoomControl: false, - rotateControl: false, - panControl: false, - mapTypeControl: false, - scrollwheel: false - }; - map = new google.maps.Map(document.getElementById("trip_details_map"), myOptions); - map.fitBounds(bounds); - startPos = new google.maps.Marker({ - position: _.first(path), - map: map, - title: t("Trip started here"), - icon: 'https://uber-static.s3.amazonaws.com/marker_start.png' - }); - endPos = new google.maps.Marker({ - position: _.last(path), - map: map, - title: t("Trip ended here"), - icon: 'https://uber-static.s3.amazonaws.com/marker_end.png' - }); - startPos.setMap(map); - endPos.setMap(map); - polyline = new google.maps.Polyline({ - path: path, - strokeColor: '#003F87', - strokeOpacity: 1, - strokeWeight: 5 - }); - return polyline.setMap(map); - }, this)); - return this.HideSpinner(); - }, this) - }); - this.ShowSpinner('load'); - this.delegateEvents(); - return this; - }; - TripDetailView.prototype.showFareReview = function(e) { - e.preventDefault(); - $('#fare_review_box').slideDown(); - return $('#fare_review').hide(); - }; - TripDetailView.prototype.hideFareReview = function(e) { - e.preventDefault(); - $('#fare_review_box').slideUp(); - return $('#fare_review').show(); - }; - TripDetailView.prototype.submitFareReview = function(e) { - var attrs, errorMessage, id, options; - e.preventDefault(); - errorMessage = $(".error_message"); - errorMessage.hide(); - id = $("#tripid").val(); - this.model = new app.models.trip({ - id: id - }); - attrs = { - note: $('#form_review_message').val(), - note_type: 'client_fare_review' - }; - options = { - success: __bind(function(response) { - $(".success_message").fadeIn(); - return $("#fare_review_form_wrapper").slideUp(); - }, this), - error: __bind(function(error) { - return errorMessage.fadeIn(); - }, this) - }; - return this.model.save(attrs, options); - }; - TripDetailView.prototype.resendReceipt = function(e) { - var $e; - e.preventDefault(); - $e = $(e.currentTarget); - this.$(".resendReceiptSuccess").empty().show(); - this.$(".resentReceiptError").empty().show(); - e.preventDefault(); - $('#spinner').show(); - return $.ajax('/api/trips/func/resend_receipt', { - data: { - token: $.cookie('token'), - trip_id: this.model.id - }, - type: 'POST', - complete: __bind(function(xhr) { - var response; - response = JSON.parse(xhr.responseText); - $('#spinner').hide(); - switch (xhr.status) { - case 200: - this.$(".resendReceiptSuccess").html("Receipt has been emailed"); - return this.$(".resendReceiptSuccess").fadeOut(2000); - default: - this.$(".resendReceiptError").html("Receipt has failed to be emailed"); - return this.$(".resendReceiptError").fadeOut(2000); - } - }, this) - }); - }; - return TripDetailView; - })(); -}).call(this); -}, "views/shared/menu": function(exports, require, module) {(function() { - var menuTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - menuTemplate = require('templates/shared/menu'); - exports.SharedMenuView = (function() { - __extends(SharedMenuView, Backbone.View); - function SharedMenuView() { - SharedMenuView.__super__.constructor.apply(this, arguments); - } - SharedMenuView.prototype.id = 'menu_view'; - SharedMenuView.prototype.render = function() { - var type; - if ($.cookie('token') === null) { - type = 'guest'; - } else { - type = 'client'; - } - $(this.el).html(menuTemplate({ - type: type - })); - return this; - }; - return SharedMenuView; - })(); -}).call(this); -}, "web-lib/collections/countries": function(exports, require, module) {(function() { - var UberCollection; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - UberCollection = require('web-lib/uber_collection').UberCollection; - exports.CountriesCollection = (function() { - __extends(CountriesCollection, UberCollection); - function CountriesCollection() { - CountriesCollection.__super__.constructor.apply(this, arguments); - } - CountriesCollection.prototype.model = app.models.country; - CountriesCollection.prototype.url = '/countries'; - return CountriesCollection; - })(); -}).call(this); -}, "web-lib/collections/vehicle_types": function(exports, require, module) {(function() { - var UberCollection, vehicleType, _ref; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - UberCollection = require('web-lib/uber_collection').UberCollection; - vehicleType = (typeof app !== "undefined" && app !== null ? (_ref = app.models) != null ? _ref.vehicleType : void 0 : void 0) || require('models/vehicle_type').VehicleType; - exports.VehicleTypesCollection = (function() { - __extends(VehicleTypesCollection, UberCollection); - function VehicleTypesCollection() { - VehicleTypesCollection.__super__.constructor.apply(this, arguments); - } - VehicleTypesCollection.prototype.model = vehicleType; - VehicleTypesCollection.prototype.url = '/vehicle_types'; - VehicleTypesCollection.prototype.defaultColumns = ['id', 'created_at', 'updated_at', 'deleted_at', 'created_by_user_id', 'updated_by_user_id', 'city_id', 'type', 'make', 'model', 'capacity', 'minimum_year', 'actions']; - VehicleTypesCollection.prototype.tableColumns = function(cols) { - var actions, c, capacity, city_id, columnValues, created_at, created_by_user_id, deleted_at, headerRow, id, make, minimum_year, model, type, updated_at, updated_by_user_id, _i, _len; - id = { - sTitle: 'Id' - }; - created_at = { - sTitle: 'Created At (UTC)', - 'sType': 'string' - }; - updated_at = { - sTitle: 'Updated At (UTC)', - 'sType': 'string' - }; - deleted_at = { - sTitle: 'Deleted At (UTC)', - 'sType': 'string' - }; - created_by_user_id = { - sTitle: 'Created By' - }; - updated_by_user_id = { - sTitle: 'Updated By' - }; - city_id = { - sTitle: 'City' - }; - type = { - sTitle: 'Type' - }; - make = { - sTitle: 'Make' - }; - model = { - sTitle: 'Model' - }; - capacity = { - sTitle: 'Capacity' - }; - minimum_year = { - sTitle: 'Min. Year' - }; - actions = { - sTitle: 'Actions' - }; - columnValues = { - id: id, - created_at: created_at, - updated_at: updated_at, - deleted_at: deleted_at, - created_by_user_id: created_by_user_id, - updated_by_user_id: updated_by_user_id, - city_id: city_id, - type: type, - make: make, - model: model, - capacity: capacity, - minimum_year: minimum_year, - actions: actions - }; - headerRow = []; - for (_i = 0, _len = cols.length; _i < _len; _i++) { - c = cols[_i]; - if (columnValues[c]) { - headerRow.push(columnValues[c]); - } - } - return headerRow; - }; - return VehicleTypesCollection; - })(); -}).call(this); -}, "web-lib/helpers": function(exports, require, module) {(function() { - var __indexOf = Array.prototype.indexOf || function(item) { - for (var i = 0, l = this.length; i < l; i++) { - if (this[i] === item) return i; - } - return -1; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - exports.helpers = { - pin: function(num, color) { - if (color == null) { - color = 'FF0000'; - } - return ""; - }, - reverseGeocode: function(latitude, longitude) { - if (latitude && longitude) { - return "" + latitude + ", " + longitude + ""; - } else { - return ''; - } - }, - linkedName: function(model) { - var first_name, id, last_name, role, url; - role = model.role || model.get('role'); - id = model.id || model.get('id'); - first_name = model.first_name || model.get('first_name'); - last_name = model.last_name || model.get('last_name'); - url = "/" + role + "s/" + id; - return "" + first_name + " " + last_name + ""; - }, - linkedVehicle: function(vehicle, vehicleType) { - return " " + (vehicleType != null ? vehicleType.get('make') : void 0) + " " + (vehicleType != null ? vehicleType.get('model') : void 0) + " " + (vehicle.get('year')) + " "; - }, - linkedUserId: function(userType, userId) { - return "" + userType + " " + userId + ""; - }, - timeDelta: function(start, end) { - var delta; - if (typeof start === 'string') { - start = this.parseDate(start); - } - if (typeof end === 'string') { - end = this.parseDate(end); - } - if (end && start) { - delta = end.getTime() - start.getTime(); - return this.formatSeconds(delta / 1000); - } else { - return '00:00'; - } - }, - formatSeconds: function(s) { - var minutes, seconds; - s = Math.floor(s); - minutes = Math.floor(s / 60); - seconds = s - minutes * 60; - return "" + (this.leadingZero(minutes)) + ":" + (this.leadingZero(seconds)); - }, - formatCurrency: function(strValue, reverseSign, currency) { - var currency_locale, lc, mf; - if (reverseSign == null) { - reverseSign = false; - } - if (currency == null) { - currency = null; - } - strValue = String(strValue); - if (reverseSign) { - strValue = ~strValue.indexOf('-') ? strValue.split('-').join('') : ['-', strValue].join(''); - } - currency_locale = i18n.currencyToLocale[currency]; - try { - if (!(currency_locale != null) || currency_locale === i18n.locale) { - return i18n.jsworld.mf.format(strValue); - } else { - lc = new jsworld.Locale(POSIX_LC[currency_locale]); - mf = new jsworld.MonetaryFormatter(lc); - return mf.format(strValue); - } - } catch (error) { - i18n.log(error); - return strValue; - } - }, - formatTripFare: function(trip, type) { - var _ref, _ref2; - if (type == null) { - type = "fare"; - } - if (!trip.get('fare')) { - return 'n/a'; - } - if (((_ref = trip.get('fare_breakdown_local')) != null ? _ref.currency : void 0) != null) { - return app.helpers.formatCurrency(trip.get("" + type + "_local"), false, (_ref2 = trip.get('fare_breakdown_local')) != null ? _ref2.currency : void 0); - } else if (trip.get("" + type + "_string") != null) { - return trip.get("" + type + "_string"); - } else if (trip.get("" + type + "_local") != null) { - return trip.get("" + type + "_local"); - } else { - return 'n/a'; - } - }, - formatPhoneNumber: function(phoneNumber, countryCode) { - if (countryCode == null) { - countryCode = "+1"; - } - if (phoneNumber != null) { - phoneNumber = String(phoneNumber); - switch (countryCode) { - case '+1': - return countryCode + ' ' + phoneNumber.substring(0, 3) + '-' + phoneNumber.substring(3, 6) + '-' + phoneNumber.substring(6, 10); - case '+33': - return countryCode + ' ' + phoneNumber.substring(0, 1) + ' ' + phoneNumber.substring(1, 3) + ' ' + phoneNumber.substring(3, 5) + ' ' + phoneNumber.substring(5, 7) + ' ' + phoneNumber.substring(7, 9); - default: - countryCode + phoneNumber; - } - } - return "" + countryCode + " " + phoneNumber; - }, - parseDate: function(d, cityTime, tz) { - var city_filter, parsed, _ref; - if (cityTime == null) { - cityTime = true; - } - if (tz == null) { - tz = null; - } - if (((_ref = !d.substr(-6, 1)) === '+' || _ref === '-') || d.length === 19) { - d += '+00:00'; - } - if (/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/.test(d)) { - parsed = d.match(/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/); - d = new Date(); - d.setUTCFullYear(parsed[1]); - d.setUTCMonth(parsed[2] - 1); - d.setUTCDate(parsed[3]); - d.setUTCHours(parsed[4]); - d.setUTCMinutes(parsed[5]); - d.setUTCSeconds(parsed[6]); - } else { - d = Date.parse(d); - } - if (typeof d === 'number') { - d = new Date(d); - } - d = new timezoneJS.Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), 'Etc/UTC'); - if (tz) { - d.convertToTimezone(tz); - } else if (cityTime) { - city_filter = $.cookie('city_filter'); - if (city_filter) { - tz = $("#city_filter option[value=" + city_filter + "]").attr('data-timezone'); - if (tz) { - d.convertToTimezone(tz); - } - } - } - return d; - }, - dateToTimezone: function(d) { - var city_filter, tz; - d = new timezoneJS.Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), 'Etc/UTC'); - city_filter = $.cookie('city_filter'); - if (city_filter) { - tz = $("#city_filter option[value=" + city_filter + "]").attr('data-timezone'); - d.convertToTimezone(tz); - } - return d; - }, - fixAMPM: function(d, formatted) { - if (d.hours >= 12) { - return formatted.replace(/\b[AP]M\b/, 'PM'); - } else { - return formatted.replace(/\b[AP]M\b/, 'AM'); - } - }, - formatDate: function(d, time, timezone) { - var formatted; - if (time == null) { - time = true; - } - if (timezone == null) { - timezone = null; - } - d = this.parseDate(d, true, timezone); - formatted = time ? ("" + (i18n.jsworld.dtf.formatDate(d)) + " ") + this.formatTime(d, d.getTimezoneInfo()) : i18n.jsworld.dtf.formatDate(d); - return this.fixAMPM(d, formatted); - }, - formatDateLong: function(d, time, timezone) { - if (time == null) { - time = true; - } - if (timezone == null) { - timezone = null; - } - d = this.parseDate(d, true, timezone); - timezone = d.getTimezoneInfo().tzAbbr; - if (time) { - return (i18n.jsworld.dtf.formatDateTime(d)) + (" " + timezone); - } else { - return i18n.jsworld.dtf.formatDate(d); - } - }, - formatTimezoneJSDate: function(d) { - var day, hours, jsDate, minutes, month, year; - year = d.getFullYear(); - month = this.leadingZero(d.getMonth()); - day = this.leadingZero(d.getDate()); - hours = this.leadingZero(d.getHours()); - minutes = this.leadingZero(d.getMinutes()); - jsDate = new Date(year, month, day, hours, minutes, 0); - return jsDate.toDateString(); - }, - formatTime: function(d, timezone) { - var formatted; - if (timezone == null) { - timezone = null; - } - formatted = ("" + (i18n.jsworld.dtf.formatTime(d))) + (timezone != null ? " " + (timezone != null ? timezone.tzAbbr : void 0) : ""); - return this.fixAMPM(d, formatted); - }, - formatISODate: function(d) { - var pad; - pad = function(n) { - if (n < 10) { - return '0' + n; - } - return n; - }; - return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + 'Z'; - }, - formatExpDate: function(d) { - var month, year; - d = this.parseDate(d); - year = d.getFullYear(); - month = this.leadingZero(d.getMonth() + 1); - return "" + year + "-" + month; - }, - formatLatLng: function(lat, lng, precision) { - if (precision == null) { - precision = 8; - } - return parseFloat(lat).toFixed(precision) + ',' + parseFloat(lng).toFixed(precision); - }, - leadingZero: function(num) { - if (num < 10) { - return "0" + num; - } else { - return num; - } - }, - roundNumber: function(num, dec) { - return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec); - }, - notesToHTML: function(notes) { - var i, note, notesHTML, _i, _len; - notesHTML = ''; - i = 1; - if (notes) { - for (_i = 0, _len = notes.length; _i < _len; _i++) { - note = notes[_i]; - notesHTML += "" + note['userid'] + "     " + (this.formatDate(note['created_at'])) + "

" + note['note'] + "

"; - notesHTML += "
"; - } - } - return notesHTML.replace("'", '"e'); - }, - formatPhone: function(n) { - var parts, phone, regexObj; - n = "" + n; - regexObj = /^(?:\+?1[-. ]?)?(?:\(?([0-9]{3})\)?[-. ]?)?([0-9]{3})[-. ]?([0-9]{4})$/; - if (regexObj.test(n)) { - parts = n.match(regexObj); - phone = ""; - if (parts[1]) { - phone += "(" + parts[1] + ") "; - } - phone += "" + parts[2] + "-" + parts[3]; - } else { - phone = n; - } - return phone; - }, - usStates: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'], - onboardingPages: ['applied', 'ready_to_interview', 'pending_interview', 'interviewed', 'accepted', 'ready_to_onboard', 'pending_onboarding', 'active', 'waitlisted', 'rejected'], - driverBreadCrumb: function(loc, model) { - var onboardingPage, out, _i, _len, _ref; - out = "Drivers > "; - if (!(model != null)) { - out += ""; - } else { - out += "" + (this.onboardingUrlToName(model.get('driver_status'))) + ""; - out += " > " + (this.linkedName(model)) + " (" + (model.get('role')) + ") #" + (model.get('id')); - } - return out; - }, - onboardingUrlToName: function(url) { - return url != null ? url.replace(/_/g, " ").replace(/(^|\s)([a-z])/g, function(m, p1, p2) { - return p1 + p2.toUpperCase(); - }) : void 0; - }, - formatVehicle: function(vehicle) { - if (vehicle.get('make') && vehicle.get('model') && vehicle.get('license_plate')) { - return "" + (vehicle.get('make')) + " " + (vehicle.get('model')) + " (" + (vehicle.get('license_plate')) + ")"; - } - }, - docArbitraryFields: function(docName, cityDocs) { - var doc, field, out, _i, _j, _len, _len2, _ref; - out = ""; - for (_i = 0, _len = cityDocs.length; _i < _len; _i++) { - doc = cityDocs[_i]; - if (doc.name === docName && __indexOf.call(_.keys(doc), "metaFields") >= 0) { - _ref = doc.metaFields; - for (_j = 0, _len2 = _ref.length; _j < _len2; _j++) { - field = _ref[_j]; - out += "" + field.label + ":
"; - } - } - } - return out; - }, - capitaliseFirstLetter: function(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - }, - createDocUploadForm: function(docName, driverId, vehicleId, cityMeta, vehicleName, expirationRequired) { - var ddocs, expDropdowns, pdocs, vdocs; - if (driverId == null) { - driverId = "None"; - } - if (vehicleId == null) { - vehicleId = "None"; - } - if (cityMeta == null) { - cityMeta = []; - } - if (vehicleName == null) { - vehicleName = false; - } - if (expirationRequired == null) { - expirationRequired = false; - } - ddocs = cityMeta["driverRequiredDocs"] || []; - pdocs = cityMeta["partnerRequiredDocs"] || []; - vdocs = cityMeta["vehicleRequiredDocs"] || []; - expDropdowns = "Expiration Date:\n -\n"; - return " \n
\n \n \n \n\n
\n " + (vehicleName ? vehicleName : "") + " " + docName + "\n
\n\n
\n \n
\n\n
\n " + (expirationRequired ? expDropdowns : "") + "\n
\n\n
\n " + (app.helpers.docArbitraryFields(docName, _.union(ddocs, pdocs, vdocs))) + "\n
\n\n
\n \n
\n\n
\n"; - }, - countrySelector: function(name, options) { - var countries, countryCodePrefix, defaultOptions; - if (options == null) { - options = {}; - } - defaultOptions = { - selectedKey: 'telephone_code', - selectedValue: '+1', - silent: false - }; - _.extend(defaultOptions, options); - options = defaultOptions; - countries = new app.collections.countries(); - countries.fetch({ - data: { - limit: 300 - }, - success: function(countries) { - var $option, $select, country, selected, _i, _len, _ref; - selected = false; - _ref = countries.models || []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - country = _ref[_i]; - $select = $("select[name=" + name + "]"); - $option = $('').val(country.id).attr('data-iso2', country.get('iso2')).attr('data-prefix', country.get('telephone_code')).html(country.get('name')); - if (country.get(options.selectedKey) === options.selectedValue && !selected) { - selected = true; - $option.attr('selected', 'selected'); - } - $select.append($option); - } - if (selected && !options.silent) { - return $select.val(options.selected).trigger('change'); - } - } - }); - countryCodePrefix = options.countryCodePrefix ? "data-country-code-prefix='" + options.countryCodePrefix + "'" : ''; - return ""; - }, - missingDocsOnDriver: function(driver) { - var city, docsReq, documents, partnerDocs; - city = driver.get('city'); - documents = driver.get('documents'); - if ((city != null) && (documents != null)) { - docsReq = _.pluck(city != null ? city.get('meta')["driverRequiredDocs"] : void 0, "name"); - if (driver.get('role') === "partner") { - partnerDocs = _.pluck(city != null ? city.get('meta')["partnerRequiredDocs"] : void 0, "name"); - docsReq = _.union(docsReq, partnerDocs); - } - return _.reject(docsReq, __bind(function(doc) { - return __indexOf.call((documents != null ? documents.pluck("name") : void 0) || [], doc) >= 0; - }, this)); - } else { - return []; - } - } - }; -}).call(this); -}, "web-lib/i18n": function(exports, require, module) {(function() { - exports.i18n = { - defaultLocale: 'en_US', - cookieName: '_LOCALE_', - locales: { - 'en_US': "English (US)", - 'fr_FR': "Français" - }, - currencyToLocale: { - 'USD': 'en_US', - 'EUR': 'fr_FR' - }, - logglyKey: 'd2d5a9bc-7ebe-4538-a180-81e62c705b1b', - logglyHost: 'https://logs.loggly.com', - init: function() { - this.castor = new window.loggly({ - url: this.logglyHost + '/inputs/' + this.logglyKey + '?rt=1', - level: 'error' - }); - this.setLocale($.cookie(this.cookieName) || this.defaultLocale); - window.t = _.bind(this.t, this); - this.loadLocaleTranslations(this.locale); - if (!(this[this.defaultLocale] != null)) { - return this.loadLocaleTranslations(this.defaultLocale); - } - }, - loadLocaleTranslations: function(locale) { - var loadPaths, path, _i, _len, _results; - loadPaths = ['web-lib/translations/' + locale, 'web-lib/translations/' + locale.slice(0, 2), 'translations/' + locale, 'translations/' + locale.slice(0, 2)]; - _results = []; - for (_i = 0, _len = loadPaths.length; _i < _len; _i++) { - path = loadPaths[_i]; - locale = path.substring(path.lastIndexOf('/') + 1); - if (this[locale] == null) { - this[locale] = {}; - } - _results.push((function() { - try { - return _.extend(this[locale], require(path).translations); - } catch (error) { - - } - }).call(this)); - } - return _results; - }, - getLocale: function() { - return this.locale; - }, - setLocale: function(locale) { - var message, parts, _ref; - parts = locale.split('_'); - this.locale = parts[0].toLowerCase(); - if (parts.length > 1) { - this.locale += "_" + (parts[1].toUpperCase()); - } - if (this.locale) { - $.cookie(this.cookieName, this.locale, { - path: '/', - domain: '.uber.com' - }); - } - try { - ((_ref = this.jsworld) != null ? _ref : this.jsworld = {}).lc = new jsworld.Locale(POSIX_LC[this.locale]); - this.jsworld.mf = new jsworld.MonetaryFormatter(this.jsworld.lc); - this.jsworld.nf = new jsworld.NumericFormatter(this.jsworld.lc); - this.jsworld.dtf = new jsworld.DateTimeFormatter(this.jsworld.lc); - this.jsworld.np = new jsworld.NumericParser(this.jsworld.lc); - this.jsworld.mp = new jsworld.MonetaryParser(this.jsworld.lc); - return this.jsworld.dtp = new jsworld.DateTimeParser(this.jsworld.lc); - } catch (error) { - message = 'JsWorld error with locale: ' + this.locale; - return this.log({ - message: message, - error: error - }); - } - }, - getTemplate: function(id) { - var _ref, _ref2; - return ((_ref = this[this.locale]) != null ? _ref[id] : void 0) || ((_ref2 = this[this.locale.slice(0, 2)]) != null ? _ref2[id] : void 0); - }, - getTemplateDefault: function(id) { - var _ref, _ref2; - return ((_ref = this[this.defaultLocale]) != null ? _ref[id] : void 0) || ((_ref2 = this[this.defaultLocale.slice(0, 2)]) != null ? _ref2[id] : void 0); - }, - getTemplateOrDefault: function(id) { - return this.getTemplate(id) || this.getTemplateDefault(id); - }, - t: function(id, vars) { - var errStr, locale, template; - if (vars == null) { - vars = {}; - } - locale = this.getLocale(); - template = this.getTemplate(id); - if (template == null) { - if (/dev|test/.test(window.location.host)) { - template = "(?) " + id; - } else { - template = this.getTemplateDefault(id); - } - errStr = "Missing [" + locale + "] translation for [" + id + "] at [" + window.location.hash + "] - Default template is [" + template + "]"; - this.log({ - error: errStr, - locale: locale, - id: id, - defaultTemplate: template - }); - } - if (template) { - return _.template(template, vars); - } else { - return id; - } - }, - log: function(error) { - if (/dev/.test(window.location.host)) { - if ((typeof console !== "undefined" && console !== null ? console.log : void 0) != null) { - return console.log(error); - } - } else { - _.extend(error, { - host: window.location.host, - hash: window.location.hash - }); - return this.castor.error(JSON.stringify(error)); - } - } - }; -}).call(this); -}, "web-lib/mixins/i18n_phone_form": function(exports, require, module) {(function() { - exports.i18nPhoneForm = { - _events: { - 'change select[data-country-code-prefix]': 'setCountryCodePrefix' - }, - setCountryCodePrefix: function(e) { - var $el, prefix; - $el = $(e.currentTarget); - prefix = $el.find('option:selected').attr('data-prefix'); - return $("#" + ($el.attr('data-country-code-prefix'))).text(prefix); - } - }; -}).call(this); -}, "web-lib/models/country": function(exports, require, module) {(function() { - var UberModel; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - UberModel = require('web-lib/uber_model').UberModel; - exports.Country = (function() { - __extends(Country, UberModel); - function Country() { - Country.__super__.constructor.apply(this, arguments); - } - Country.prototype.url = function() { - if (this.id) { - return "/countries/" + this.id; - } else { - return '/countries'; - } - }; - return Country; - })(); -}).call(this); -}, "web-lib/models/vehicle_type": function(exports, require, module) {(function() { - var UberModel; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - UberModel = require('web-lib/uber_model').UberModel; - exports.VehicleType = (function() { - __extends(VehicleType, UberModel); - function VehicleType() { - this.toString = __bind(this.toString, this); - VehicleType.__super__.constructor.apply(this, arguments); - } - VehicleType.prototype.endpoint = 'vehicle_types'; - VehicleType.prototype.toTableRow = function(cols) { - var actions, c, capacity, city_id, columnValues, created_at, created_by_user_id, deleted_at, id, make, minimum_year, model, rows, type, updated_at, updated_by_user_id, _i, _len, _ref; - id = "" + (this.get('id')) + ""; - if (this.get('created_at')) { - created_at = app.helpers.formatDate(this.get('created_at')); - } - if (this.get('updated_at')) { - updated_at = app.helpers.formatDate(this.get('updated_at')); - } - if (this.get('deleted_at')) { - deleted_at = app.helpers.formatDate(this.get('deleted_at')); - } - created_by_user_id = "" + (this.get('created_by_user_id')) + ""; - updated_by_user_id = "" + (this.get('updated_by_user_id')) + ""; - city_id = (_ref = this.get('city')) != null ? _ref.get('display_name') : void 0; - type = this.get('type'); - make = this.get('make'); - model = this.get('model'); - capacity = this.get('capacity'); - minimum_year = this.get('minimum_year'); - actions = "Show"; - if (!this.get('deleted_at')) { - actions += " Edit"; - actions += " Delete"; - } - columnValues = { - id: id, - created_at: created_at, - updated_at: updated_at, - deleted_at: deleted_at, - created_by_user_id: created_by_user_id, - updated_by_user_id: updated_by_user_id, - city_id: city_id, - type: type, - make: make, - model: model, - capacity: capacity, - minimum_year: minimum_year, - actions: actions - }; - rows = []; - for (_i = 0, _len = cols.length; _i < _len; _i++) { - c = cols[_i]; - rows.push(columnValues[c] ? columnValues[c] : '-'); - } - return rows; - }; - VehicleType.prototype.toString = function() { - return this.get('make') + ' ' + this.get('model') + ' ' + this.get('type') + (" (" + (this.get('capacity')) + ")"); - }; - return VehicleType; - })(); -}).call(this); -}, "web-lib/templates/footer": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - var locale, title, _ref; - __out.push('\n\n\n\n\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "web-lib/translations/en": function(exports, require, module) {(function() { - exports.translations = { - "Info": "Info", - "Learn More": "Learn More", - "Pricing": "Pricing", - "FAQ": "FAQ", - "Support": "Support", - "Support & FAQ": "Support & FAQ", - "Contact Us": "Contact Us", - "Jobs": "Jobs", - "Phones": "Phones", - "Text Message": "Text Message", - "iPhone": "iPhone", - "Android": "Android", - "Drivers": "Drivers", - "Apply": "Apply", - "Sign In": "Sign In", - "Social": "Social", - "Twitter": "Twitter", - "Facebook": "Facebook", - "Blog": "Blog", - "Legal": "Legal", - "Company_Footer": "Company", - "Privacy Policy": "Privacy Policy", - "Terms": "Terms", - "Copyright © Uber Technologies, Inc.": "Copyright © Uber Technologies, Inc.", - "Language:": "Language:", - "Apply to Drive": "Apply to Drive", - "Expiration": "Expiration", - "Fare": "Fare", - "Driver": "Driver ", - "Dashboard": "Dashboard", - "Forgot Password": "Forgot Password", - "Trip Details": "Trip Details", - "Save": "Save", - "Cancel": "Cancel", - "Edit": "Edit", - "Password": "Password", - "First Name": "First Name", - "Last Name": "Last Name", - "Email Address": "Email Address", - "Submit": "Submit", - "Mobile Number": "Mobile Number", - "Zip Code": "Zip Code", - "Sign Out": "Sign Out", - "Confirm Email Message": "Attempting to confirm email...", - "Upload": "Upload", - "Rating": "Rating", - "Pickup Time": "Pickup Time", - "2011": "2011", - "2012": "2012", - "2013": "2013", - "2014": "2014", - "2015": "2015", - "2016": "2016", - "2017": "2017", - "2018": "2018", - "2019": "2019", - "2020": "2020", - "2021": "2021", - "2022": "2022", - "01": "01", - "02": "02", - "03": "03", - "04": "04", - "05": "05", - "06": "06", - "07": "07", - "08": "08", - "09": "09", - "10": "10", - "11": "11", - "12": "12" - }; -}).call(this); -}, "web-lib/translations/fr": function(exports, require, module) {(function() { - exports.translations = { - "Info": "Info", - "Learn More": "En Savoir Plus", - "Pricing": "Calcul du Prix", - "Support & FAQ": "Aide & FAQ", - "Contact Us": "Contactez Nous", - "Jobs": "Emplois", - "Phones": "Téléphones", - "Text Message": "SMS", - "iPhone": "iPhone", - "Android": "Android", - "Apply to Drive": "Candidature Chauffeur", - "Sign In": "Connexion", - "Social": "Contact", - "Twitter": "Twitter", - "Facebook": "Facebook", - "Blog": "Blog", - "Privacy Policy": "Protection des Données Personelles", - "Terms": "Conditions Générales", - "Copyright © Uber Technologies, Inc.": "© Uber, Inc.", - "Language:": "Langue:", - "Forgot Password": "Mot de passe oublié", - "Company_Footer": "À Propos d'Uber", - "Expiration": "Expiration", - "Fare": "Tarif", - "Driver": "Chauffeur", - "Drivers": "Chauffeurs", - "Dashboard": "Tableau de bord", - "Forgot Password": "Mot de passe oublié", - "Forgot Password?": "Mot de passe oublié?", - "Trip Details": "Détails de la course", - "Save": "Enregistrer", - "Cancel": "Annuler", - "Edit": "Modifier", - "Password": "Mot de passe", - "First Name": "Prénom", - "Last Name": "Nom", - "Email Address": "E-mail", - "Submit": "Soumettre", - "Mobile Number": "Téléphone Portable", - "Zip Code": "Code Postal", - "Sign Out": "Se déconnecter", - "Confirm Email Message": "E-mail de confirmation", - "Upload": "Télécharger", - "Rating": "Notation", - "Pickup Time": "Heure de prise en charge", - "2011": "2011", - "2012": "2012", - "2013": "2013", - "2014": "2014", - "2015": "2015", - "2016": "2016", - "2017": "2017", - "2018": "2018", - "2019": "2019", - "2020": "2020", - "2021": "2021", - "2022": "2022", - "01": "01", - "02": "02", - "03": "03", - "04": "04", - "05": "05", - "06": "06", - "07": "07", - "08": "08", - "09": "09", - "10": "10", - "11": "11", - "12": "12" - }; -}).call(this); -}, "web-lib/uber_collection": function(exports, require, module) {(function() { - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - exports.UberCollection = (function() { - __extends(UberCollection, Backbone.Collection); - function UberCollection() { - UberCollection.__super__.constructor.apply(this, arguments); - } - UberCollection.prototype.parse = function(data) { - var model, tmp, _i, _in, _len, _out; - _in = data.resources || data; - _out = []; - if (data.meta) { - this.meta = data.meta; - } - for (_i = 0, _len = _in.length; _i < _len; _i++) { - model = _in[_i]; - tmp = new this.model; - tmp.set(tmp.parse(model)); - _out.push(tmp); - } - return _out; - }; - UberCollection.prototype.isRenderable = function() { - if (this.models.length) { - return true; - } - }; - UberCollection.prototype.toTableRows = function(cols) { - var tableRows; - tableRows = []; - _.each(this.models, function(model) { - return tableRows.push(model.toTableRow(cols)); - }); - return tableRows; - }; - return UberCollection; - })(); -}).call(this); -}, "web-lib/uber_model": function(exports, require, module) {(function() { - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __indexOf = Array.prototype.indexOf || function(item) { - for (var i = 0, l = this.length; i < l; i++) { - if (this[i] === item) return i; - } - return -1; - }; - exports.UberModel = (function() { - __extends(UberModel, Backbone.Model); - function UberModel() { - this.refetch = __bind(this.refetch, this); - this.fetch = __bind(this.fetch, this); - this.save = __bind(this.save, this); - this.parse = __bind(this.parse, this); - UberModel.__super__.constructor.apply(this, arguments); - } - UberModel.prototype.endpoint = 'set_api_endpoint_in_subclass'; - UberModel.prototype.refetchOptions = {}; - UberModel.prototype.url = function(type) { - var endpoint_path; - endpoint_path = "/" + this.endpoint; - if (this.get('id')) { - return endpoint_path + ("/" + (this.get('id'))); - } else { - return endpoint_path; - } - }; - UberModel.prototype.isRenderable = function() { - var i, key, value, _ref; - i = 0; - _ref = this.attributes; - for (key in _ref) { - if (!__hasProp.call(_ref, key)) continue; - value = _ref[key]; - if (this.attributes.hasOwnProperty(key)) { - i += 1; - } - if (i > 1) { - return true; - } - } - return !(i === 1); - }; - UberModel.prototype.parse = function(response) { - var attrs, key, model, models, _i, _j, _k, _len, _len2, _len3, _ref, _ref2; - if (typeof response === 'object') { - _ref = _.intersection(_.keys(app.models), _.keys(response)); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - key = _ref[_i]; - if (response[key]) { - attrs = this.parse(response[key]); - if (typeof attrs === 'object') { - response[key] = new app.models[key](attrs); - } - } - } - _ref2 = _.intersection(_.keys(app.collections), _.keys(response)); - for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { - key = _ref2[_j]; - models = response[key]; - if (_.isArray(models)) { - response[key] = new app.collections[key]; - for (_k = 0, _len3 = models.length; _k < _len3; _k++) { - model = models[_k]; - attrs = app.collections[key].prototype.model.prototype.parse(model); - response[key].add(new response[key].model(attrs)); - } - } - } - } - return response; - }; - UberModel.prototype.save = function(attributes, options) { - var attr, _i, _j, _len, _len2, _ref, _ref2; - if (options == null) { - options = {}; - } - _ref = _.intersection(_.keys(app.models), _.keys(this.attributes)); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - attr = _ref[_i]; - if (typeof this.get(attr) === "object") { - this.unset(attr, { - silent: true - }); - } - } - _ref2 = _.intersection(_.keys(app.collections), _.keys(this.attributes)); - for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) { - attr = _ref2[_j]; - if (typeof this.get(attr) === "object") { - this.unset(attr, { - silent: true - }); - } - } - if ((options != null) && options.diff && (attributes != null) && attributes !== {}) { - attributes['id'] = this.get('id'); - attributes['token'] = this.get('token'); - this.clear({ - 'silent': true - }); - this.set(attributes, { - silent: true - }); - } - if (__indexOf.call(_.keys(options), "data") < 0 && __indexOf.call(_.keys(this.refetchOptions || {}), "data") >= 0) { - options.data = this.refetchOptions.data; - } - return Backbone.Model.prototype.save.call(this, attributes, options); - }; - UberModel.prototype.fetch = function(options) { - this.refetchOptions = options; - return Backbone.Model.prototype.fetch.call(this, options); - }; - UberModel.prototype.refetch = function() { - return this.fetch(this.refetchOptions); - }; - return UberModel; - })(); -}).call(this); -}, "web-lib/uber_router": function(exports, require, module) {(function() { - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - exports.UberRouter = (function() { - __extends(UberRouter, Backbone.Router); - function UberRouter() { - UberRouter.__super__.constructor.apply(this, arguments); - } - UberRouter.prototype.datePickers = function(format) { - if (format == null) { - format = "%Z-%m-%dT%H:%i:%s%:"; - } - $('.datepicker').AnyTime_noPicker(); - return $('.datepicker').AnyTime_picker({ - 'format': format, - 'formatUtcOffset': '%@' - }); - }; - UberRouter.prototype.autoGrowInput = function() { - return $('.editable input').autoGrowInput(); - }; - UberRouter.prototype.windowTitle = function(title) { - return $(document).attr('title', title); - }; - return UberRouter; - })(); -}).call(this); -}, "web-lib/uber_show_view": function(exports, require, module) {(function() { - var UberView; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - UberView = require('web-lib/uber_view').UberView; - exports.UberShowView = (function() { - __extends(UberShowView, UberView); - function UberShowView() { - UberShowView.__super__.constructor.apply(this, arguments); - } - UberShowView.prototype.view = 'show'; - UberShowView.prototype.events = { - 'click #edit': 'edit', - 'submit form': 'save', - 'click .cancel': 'cancel' - }; - UberShowView.prototype.errors = null; - UberShowView.prototype.showTemplate = null; - UberShowView.prototype.editTemplate = null; - UberShowView.prototype.initialize = function() { - if (this.init_hook) { - this.init_hook(); - } - _.bindAll(this, 'render'); - return this.model.bind('change', this.render); - }; - UberShowView.prototype.render = function() { - var $el; - $el = $(this.el); - this.selectView(); - if (this.view === 'show') { - $el.html(this.showTemplate({ - model: this.model - })); - } else if (this.view === 'edit') { - $el.html(this.editTemplate({ - model: this.model, - errors: this.errors || {}, - collections: this.collections || {} - })); - } else { - $el.html(this.newTemplate({ - model: this.model, - errors: this.errors || {}, - collections: this.collections || {} - })); - } - if (this.render_hook) { - this.render_hook(); - } - this.errors = null; - this.userIdsToLinkedNames(); - this.datePickers(); - return this.place(); - }; - UberShowView.prototype.selectView = function() { - var url; - if (this.options.urlRendering) { - url = window.location.hash; - if (url.match(/\/new/)) { - return this.view = 'new'; - } else if (url.match(/\/edit/)) { - return this.view = 'edit'; - } else { - return this.view = 'show'; - } - } - }; - UberShowView.prototype.edit = function(e) { - e.preventDefault(); - if (this.options.urlRendering) { - window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id') + '/edit'; - } else { - this.view = 'edit'; - } - return this.model.change(); - }; - UberShowView.prototype.save = function(e) { - var attributes, ele, form_attrs, _i, _len, _ref; - e.preventDefault(); - attributes = $(e.currentTarget).serializeToJson(); - form_attrs = {}; - _ref = $('input[type="radio"]'); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - ele = _ref[_i]; - if ($(ele).is(':checked')) { - form_attrs[$(ele).attr('name')] = $(ele).attr('value'); - } - } - attributes = _.extend(attributes, form_attrs); - if (this.relationships) { - attributes = _.extend(attributes, { - relationships: this.relationships - }); - } - if (this.filter_attributes != null) { - this.filter_attributes(attributes); - } - return this.model.save(attributes, { - silent: true, - success: __bind(function(model) { - if (this.options.urlRendering) { - window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id'); - } else { - this.view = 'show'; - } - return this.flash('success', "Uber save!"); - }, this), - statusCode: { - 406: __bind(function(xhr) { - this.errors = JSON.parse(xhr.responseText); - return this.flash('error', 'That was not Uber.'); - }, this) - }, - error: __bind(function(model, xhr) { - var code, message, responseJSON, responseText; - code = xhr.status; - responseText = xhr.responseText; - if (responseText) { - responseJSON = JSON.parse(responseText); - } - if (responseJSON && (typeof responseJSON === 'object') && (responseJSON.hasOwnProperty('error'))) { - message = responseJSON.error; - } - return this.flash('error', (code || 'Unknown') + ' error' + (': ' + message || '')); - }, this), - complete: __bind(function() { - return this.model.change(); - }, this) - }); - }; - UberShowView.prototype.cancel = function(e) { - e.preventDefault(); - if (this.options.urlRendering) { - window.location.hash = '#/' + this.model.endpoint + '/' + this.model.get('id'); - } else { - this.view = 'show'; - } - return this.model.fetch({ - silent: true, - complete: __bind(function() { - return this.model.change(); - }, this) - }); - }; - return UberShowView; - })(); -}).call(this); -}, "web-lib/uber_sync": function(exports, require, module) {(function() { - var methodType; - var __indexOf = Array.prototype.indexOf || function(item) { - for (var i = 0, l = this.length; i < l; i++) { - if (this[i] === item) return i; - } - return -1; - }; - methodType = { - create: 'POST', - update: 'PUT', - "delete": 'DELETE', - read: 'GET' - }; - exports.UberSync = function(method, model, options) { - var token; - options.type = methodType[method]; - options.url = _.isString(this.url) ? '/api' + this.url : '/api' + this.url(options.type); - options.data = _.extend({}, options.data); - if (__indexOf.call(_.keys(options.data), "city_id") < 0) { - if ($.cookie('city_filter')) { - _.extend(options.data, { - city_id: $.cookie('city_filter') - }); - } - } else { - delete options.data['city_id']; - } - if (options.type === 'POST' || options.type === 'PUT') { - _.extend(options.data, model.toJSON()); - } - token = $.cookie('token') ? $.cookie('token') : typeof USER !== "undefined" && USER !== null ? USER.get('token') : ""; - _.extend(options.data, { - token: token - }); - if (method === "delete") { - options.contentType = 'application/json'; - options.data = JSON.stringify(options.data); - } - return $.ajax(options); - }; -}).call(this); -}, "web-lib/uber_view": function(exports, require, module) {(function() { - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - exports.UberView = (function() { - __extends(UberView, Backbone.View); - function UberView() { - this.processDocumentUpload = __bind(this.processDocumentUpload, this); - UberView.__super__.constructor.apply(this, arguments); - } - UberView.prototype.className = 'view_container'; - UberView.prototype.hashId = function() { - return parseInt(location.hash.split('/')[2]); - }; - UberView.prototype.place = function(content) { - var $target; - $target = this.options.scope ? this.options.scope.find(this.options.selector) : $(this.options.selector); - $target[this.options.method || 'html'](content || this.el); - this.delegateEvents(); - $('#spinner').hide(); - return this; - }; - UberView.prototype.mixin = function(m, args) { - var events, self; - if (args == null) { - args = {}; - } - self = this; - events = m._events; - _.extend(this, m); - if (m.initialize) { - m.initialize(self, args); - } - return _.each(_.keys(events), function(key) { - var event, func, selector, split; - split = key.split(' '); - event = split[0]; - selector = split[1]; - func = events[key]; - return $(self.el).find(selector).live(event, function(e) { - return self[func](e); - }); - }); - }; - UberView.prototype.datePickers = function(format) { - if (format == null) { - format = "%Z-%m-%dT%H:%i:%s%:"; - } - $('.datepicker').AnyTime_noPicker(); - return $('.datepicker').AnyTime_picker({ - 'format': format, - 'formatUtcOffset': '%@' - }); - }; - UberView.prototype.dataTable = function(collection, selector, options, params, cols) { - var defaults; - if (selector == null) { - selector = 'table'; - } - if (options == null) { - options = {}; - } - if (params == null) { - params = {}; - } - if (cols == null) { - cols = []; - } - $(selector).empty(); - if (!cols.length) { - cols = collection.defaultColumns; - } - defaults = { - aoColumns: collection.tableColumns(cols), - bDestroy: true, - bSort: false, - bProcessing: true, - bFilter: false, - bServerSide: true, - bPaginate: true, - bScrollInfinite: true, - bScrollCollapse: true, - sScrollY: '600px', - iDisplayLength: 50, - fnServerData: function(source, data, callback) { - var defaultParams; - defaultParams = { - limit: data[4].value, - offset: data[3].value - }; - return collection.fetch({ - data: _.extend(defaultParams, params), - success: function() { - return callback({ - aaData: collection.toTableRows(cols), - iTotalRecords: collection.meta.count, - iTotalDisplayRecords: collection.meta.count - }); - }, - error: function() { - return new Error({ - message: 'Loading error.' - }); - } - }); - }, - fnRowCallback: function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { - $('[data-tooltip]', nRow).qtip({ - content: { - attr: 'data-tooltip' - }, - style: { - classes: "ui-tooltip-light ui-tooltip-rounded ui-tooltip-shadow" - } - }); - return nRow; - } - }; - return $(this.el).find(selector).dataTable(_.extend(defaults, options)); - }; - UberView.prototype.dataTableLocal = function(collection, selector, options, params, cols) { - var $dataTable, defaults; - if (selector == null) { - selector = 'table'; - } - if (options == null) { - options = {}; - } - if (params == null) { - params = {}; - } - if (cols == null) { - cols = []; - } - $(selector).empty(); - if (!cols.length || cols.length === 0) { - cols = collection.defaultColumns; - } - defaults = { - aaData: collection.toTableRows(cols), - aoColumns: collection.tableColumns(cols), - bDestroy: true, - bSort: false, - bProcessing: true, - bFilter: false, - bScrollInfinite: true, - bScrollCollapse: true, - sScrollY: '600px', - iDisplayLength: -1 - }; - $dataTable = $(this.el).find(selector).dataTable(_.extend(defaults, options)); - _.delay(__bind(function() { - if ($dataTable && $dataTable.length > 0) { - return $dataTable.fnAdjustColumnSizing(); - } - }, this), 1); - return $dataTable; - }; - UberView.prototype.reverseGeocode = function() { - var $el; - return ''; - $el = $(this.el); - return this.requireMaps(function() { - var geocoder; - geocoder = new google.maps.Geocoder(); - return $el.find('[data-point]').each(function() { - var $this, latLng, point; - $this = $(this); - point = JSON.parse($this.attr('data-point')); - latLng = new google.maps.LatLng(point.latitude, point.longitude); - return geocoder.geocode({ - latLng: latLng - }, function(data, status) { - if (status === google.maps.GeocoderStatus.OK) { - return $this.text(data[0].formatted_address); - } - }); - }); - }); - }; - UberView.prototype.userIdsToLinkedNames = function() { - var $el; - $el = $(this.el); - return $el.find('a[data-user-id][data-user-type]').each(function() { - var $this, user, userType; - $this = $(this); - userType = $this.attr('data-user-type') === 'user' ? 'client' : $this.attr('data-user-type'); - user = new app.models[userType]({ - id: $this.attr('data-user-id') - }); - return user.fetch({ - success: function(user) { - return $this.html(app.helpers.linkedName(user)).attr('href', "!/" + user.role + "s/" + user.id); - }, - error: function() { - if ($this.attr('data-user-type') === 'user') { - user = new app.models['driver']({ - id: $this.attr('data-user-id') - }); - return user.fetch({ - success: function(user) { - return $this.html(app.helpers.linkedName(user)).attr('href', "!/driver/" + user.id); - } - }); - } - } - }); - }); - }; - UberView.prototype.selectedCity = function() { - var $selected, city, cityFilter; - cityFilter = $.cookie('city_filter'); - $selected = $("#city_filter option[value=" + cityFilter + "]"); - if (city_filter && $selected.length) { - return city = { - lat: parseFloat($selected.attr('data-lat')), - lng: parseFloat($selected.attr('data-lng')), - timezone: $selected.attr('data-timezone') - }; - } else { - return city = { - lat: 37.775, - lng: -122.45, - timezone: 'Etc/UTC' - }; - } - }; - UberView.prototype.updateModel = function(e, success) { - var $el, attrs, model, self; - e.preventDefault(); - $el = $(e.currentTarget); - self = this; - model = new this.model.__proto__.constructor({ - id: this.model.id - }); - attrs = {}; - $el.find('[name]').each(function() { - var $this; - $this = $(this); - return attrs["" + ($this.attr('name'))] = $this.val(); - }); - self.model.set(attrs); - $el.find('span.error').text(''); - return model.save(attrs, { - complete: function(xhr) { - var response; - response = JSON.parse(xhr.responseText); - switch (xhr.status) { - case 200: - self.model = model; - $el.find('[name]').val(''); - if (success) { - return success(); - } - break; - case 406: - return _.each(response, function(error, field) { - return $el.find("[name=" + field + "]").parent().find('span.error').text(error); - }); - default: - return this.unanticipatedError(response); - } - } - }); - }; - UberView.prototype.autoUpdateModel = function(e) { - var $el, arg, model, self, val; - $el = $(e.currentTarget); - val = $el.val(); - self = this; - if (val !== this.model.get($el.attr('id'))) { - arg = {}; - arg[$el.attr('id')] = $el.is(':checkbox') ? $el.is(':checked') ? 1 : 0 : val; - $('.editable span').empty(); - this.model.set(arg); - model = new this.model.__proto__.constructor({ - id: this.model.id - }); - return model.save(arg, { - complete: function(xhr) { - var key, response, _i, _len, _ref, _results; - response = JSON.parse(xhr.responseText); - switch (xhr.status) { - case 200: - self.flash('success', 'Saved!'); - return $el.blur(); - case 406: - self.flash('error', 'That was not Uber.'); - _ref = _.keys(response); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - key = _ref[_i]; - _results.push($el.parent().find('span').html(response[key])); - } - return _results; - break; - default: - return self.unanticipatedError; - } - } - }); - } - }; - UberView.prototype.unanticipatedError = function(response) { - return self.flash('error', response); - }; - UberView.prototype.flash = function(type, text) { - var $banner; - $banner = $("." + type); - $banner.find('p').text(text).end().css('border', '1px solid #999').animate({ - top: 0 - }, 500); - return setTimeout(function() { - return $banner.animate({ - top: -$banner.outerHeight() - }, 500); - }, 3000); - }; - UberView.prototype.requireMaps = function(callback) { - if (typeof google !== 'undefined' && google.maps) { - return callback(); - } else { - return $.getScript("https://www.google.com/jsapi?key=" + CONFIG.googleJsApiKey, function() { - return google.load('maps', 3, { - callback: callback, - other_params: 'sensor=false&language=en' - }); - }); - } - }; - UberView.prototype.select_drop_down = function(model, key) { - var value; - value = model.get(key); - if (value) { - return $("select[id='" + key + "'] option[value='" + value + "']").attr('selected', 'selected'); - } - }; - UberView.prototype.processDocumentUpload = function(e) { - var $fi, $form, arbData, curDate, data, expDate, expM, expY, expiration, fileElementId, invalid; - e.preventDefault(); - $form = $(e.currentTarget); - $fi = $("input[type=file]", $form); - $(".validationError").removeClass("validationError"); - if (!$fi.val()) { - return $fi.addClass("validationError"); - } else { - fileElementId = $fi.attr('id'); - expY = $("select[name=expiration-year]", $form).val(); - expM = $("select[name=expiration-month]", $form).val(); - invalid = false; - if (expY && expM) { - expDate = new Date(expY, expM, 28); - curDate = new Date(); - if (expDate < curDate) { - invalid = true; - $(".expiration", $form).addClass("validationError"); - } - expiration = "" + expY + "-" + expM + "-28T23:59:59Z"; - } - arbData = {}; - $(".arbitraryField", $form).each(__bind(function(i, e) { - arbData[$(e).attr('name')] = $(e).val(); - if ($(e).val() === "") { - invalid = true; - return $(e).addClass("validationError"); - } - }, this)); - if (!invalid) { - data = { - token: $.cookie('token') || USER.get('token'), - name: $("input[name=fileName]", $form).val(), - meta: escape(JSON.stringify(arbData)), - user_id: $("input[name=driver_id]", $form).val(), - vehicle_id: $("input[name=vehicle_id]", $form).val() - }; - if (expiration) { - data['expiration'] = expiration; - } - $("#spinner").show(); - return $.ajaxFileUpload({ - url: '/api/documents', - secureuri: false, - fileElementId: fileElementId, - data: data, - complete: __bind(function(resp, status) { - var key, _i, _len, _ref, _results; - $("#spinner").hide(); - if (status === "success") { - if (this.model) { - this.model.refetch(); - } else { - USER.refetch(); - } - } - if (status === "error") { - _ref = _.keys(resp); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - key = _ref[_i]; - _results.push($("*[name=" + key + "]", $form).addClass("validationError")); - } - return _results; - } - }, this) - }); - } - } - }; - return UberView; - })(); -}).call(this); -}, "web-lib/views/footer": function(exports, require, module) {(function() { - var footerTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - footerTemplate = require('web-lib/templates/footer'); - exports.SharedFooterView = (function() { - __extends(SharedFooterView, Backbone.View); - function SharedFooterView() { - SharedFooterView.__super__.constructor.apply(this, arguments); - } - SharedFooterView.prototype.id = 'footer_view'; - SharedFooterView.prototype.events = { - 'click .language': 'intl_set_cookie_locale' - }; - SharedFooterView.prototype.render = function() { - $(this.el).html(footerTemplate()); - this.delegateEvents(); - return this; - }; - SharedFooterView.prototype.intl_set_cookie_locale = function(e) { - var _ref; - i18n.setLocale(e != null ? (_ref = e.srcElement) != null ? _ref.id : void 0 : void 0); - return location.reload(); - }; - return SharedFooterView; - })(); -}).call(this); -}}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js deleted file mode 100755 index 61307eeb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/embed-tokens.js +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/env node - -global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); -var fs = require("fs"); -var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js - jsp = uglify.parser, - pro = uglify.uglify; - -var code = fs.readFileSync("embed-tokens.js", "utf8").replace(/^#.*$/mg, ""); -var ast = jsp.parse(code, null, true); - -// trololo -function fooBar() {} - -console.log(sys.inspect(ast, null, null)); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js deleted file mode 100644 index 945960c2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto.js +++ /dev/null @@ -1,26 +0,0 @@ -function unique(arqw) { - var a = [], i, j - outer: for (i = 0; i < arqw.length; i++) { - for (j = 0; j < a.length; j++) { - if (a[j] == arqw[i]) { - continue outer - } - } - a[a.length] = arqw[i] - } - return a -} - - -function unique(arqw) { - var crap = [], i, j - outer: for (i = 0; i < arqw.length; i++) { - for (j = 0; j < crap.length; j++) { - if (crap[j] == arqw[i]) { - continue outer - } - } - crap[crap.length] = arqw[i] - } - return crap -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js deleted file mode 100644 index d13b2bc0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/goto2.js +++ /dev/null @@ -1,8 +0,0 @@ -function q(qooo) { - var a; - foo: for(;;) { - a++; - if (something) break foo; - return qooo; - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js deleted file mode 100644 index 4bf2b94d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/hoist.js +++ /dev/null @@ -1,33 +0,0 @@ -function foo(arg1, arg2, arg3, arg4, arg5, arg6) { - var a = 5; - { - var d = 10, mak = 20, buz = 30; - var q = buz * 2; - } - if (moo) { - var a, b, c; - } - for (var arg1 = 0, d = 20; arg1 < 10; ++arg1) - console.log(arg3); - for (var i in mak) {} - for (j in d) {} - var d; - - function test() { - - }; - - //test(); - - (function moo(first, second){ - console.log(first); - })(1); - - (function moo(first, second){ - console.log(moo()); - })(1); -} - - -var foo; -var bar; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js deleted file mode 100644 index c6a9d798..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument.js +++ /dev/null @@ -1,97 +0,0 @@ -// sample on how to use the parser and walker API to instrument some code - -var jsp = require("uglify-js").parser; -var pro = require("uglify-js").uglify; - -function instrument(code) { - var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want - // to have start/end tokens embedded in the - // statements - var w = pro.ast_walker(); - - // we're gonna need this to push elements that we're currently looking at, to avoid - // endless recursion. - var analyzing = []; - function do_stat() { - var ret; - if (this[0].start && analyzing.indexOf(this) < 0) { - // without the `analyzing' hack, w.walk(this) would re-enter here leading - // to infinite recursion - analyzing.push(this); - ret = [ "splice", // XXX: "block" is safer - [ [ "stat", - [ "call", [ "name", "trace" ], - [ [ "string", this[0].toString() ], - [ "num", this[0].start.line ], - [ "num", this[0].start.col ], - [ "num", this[0].end.line ], - [ "num", this[0].end.col ]]]], - w.walk(this) ]]; - analyzing.pop(this); - } - return ret; - }; - var new_ast = w.with_walkers({ - "stat" : do_stat, - "label" : do_stat, - "break" : do_stat, - "continue" : do_stat, - "debugger" : do_stat, - "var" : do_stat, - "const" : do_stat, - "return" : do_stat, - "throw" : do_stat, - "try" : do_stat, - "defun" : do_stat, - "if" : do_stat, - "while" : do_stat, - "do" : do_stat, - "for" : do_stat, - "for-in" : do_stat, - "switch" : do_stat, - "with" : do_stat - }, function(){ - return w.walk(ast); - }); - return pro.gen_code(new_ast, { beautify: true }); -} - - - - -////// test code follows. - -var code = instrument(test.toString()); -console.log(code); - -function test() { - // simple stats - a = 5; - c += a + b; - "foo"; - - // var - var foo = 5; - const bar = 6, baz = 7; - - // switch block. note we can't track case lines the same way. - switch ("foo") { - case "foo": - return 1; - case "bar": - return 2; - } - - // for/for in - for (var i = 0; i < 5; ++i) { - console.log("Hello " + i); - } - for (var i in [ 1, 2, 3]) { - console.log(i); - } - - // note however that the following is broken. I guess we - // should add the block brackets in this case... - for (var i = 0; i < 5; ++i) - console.log("foo"); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js deleted file mode 100644 index 6aee5f3f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/instrument2.js +++ /dev/null @@ -1,138 +0,0 @@ -// sample on how to use the parser and walker API to instrument some code - -var jsp = require("uglify-js").parser; -var pro = require("uglify-js").uglify; - -function instrument(code) { - var ast = jsp.parse(code, false, true); // true for the third arg specifies that we want - // to have start/end tokens embedded in the - // statements - var w = pro.ast_walker(); - - function trace (line, comment) { - var code = pro.gen_code(line, { beautify: true }); - var data = line[0] - - var args = [] - if (!comment) comment = "" - if (typeof data === "object") { - code = code.split(/\n/).shift() - args = [ [ "string", data.toString() ], - [ "string", code ], - [ "num", data.start.line ], - [ "num", data.start.col ], - [ "num", data.end.line ], - [ "num", data.end.col ]] - } else { - args = [ [ "string", data ], - [ "string", code ]] - - } - return [ "call", [ "name", "trace" ], args ]; - } - - // we're gonna need this to push elements that we're currently looking at, to avoid - // endless recursion. - var analyzing = []; - function do_stat() { - var ret; - if (this[0].start && analyzing.indexOf(this) < 0) { - // without the `analyzing' hack, w.walk(this) would re-enter here leading - // to infinite recursion - analyzing.push(this); - ret = [ "splice", - [ [ "stat", trace(this) ], - w.walk(this) ]]; - analyzing.pop(this); - } - return ret; - } - - function do_cond(c, t, f) { - return [ this[0], w.walk(c), - ["seq", trace(t), w.walk(t) ], - ["seq", trace(f), w.walk(f) ]]; - } - - function do_binary(c, l, r) { - if (c !== "&&" && c !== "||") { - return [this[0], c, w.walk(l), w.walk(r)]; - } - return [ this[0], c, - ["seq", trace(l), w.walk(l) ], - ["seq", trace(r), w.walk(r) ]]; - } - - var new_ast = w.with_walkers({ - "stat" : do_stat, - "label" : do_stat, - "break" : do_stat, - "continue" : do_stat, - "debugger" : do_stat, - "var" : do_stat, - "const" : do_stat, - "return" : do_stat, - "throw" : do_stat, - "try" : do_stat, - "defun" : do_stat, - "if" : do_stat, - "while" : do_stat, - "do" : do_stat, - "for" : do_stat, - "for-in" : do_stat, - "switch" : do_stat, - "with" : do_stat, - "conditional" : do_cond, - "binary" : do_binary - }, function(){ - return w.walk(ast); - }); - return pro.gen_code(new_ast, { beautify: true }); -} - - -////// test code follows. - -var code = instrument(test.toString()); -console.log(code); - -function test() { - // simple stats - a = 5; - c += a + b; - "foo"; - - // var - var foo = 5; - const bar = 6, baz = 7; - - // switch block. note we can't track case lines the same way. - switch ("foo") { - case "foo": - return 1; - case "bar": - return 2; - } - - // for/for in - for (var i = 0; i < 5; ++i) { - console.log("Hello " + i); - } - for (var i in [ 1, 2, 3]) { - console.log(i); - } - - for (var i = 0; i < 5; ++i) - console.log("foo"); - - for (var i = 0; i < 5; ++i) { - console.log("foo"); - } - - var k = plurp() ? 1 : 0; - var x = a ? doX(y) && goZoo("zoo") - : b ? blerg({ x: y }) - : null; - - var x = X || Y; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js deleted file mode 100644 index 2f4b7fe2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/liftvars.js +++ /dev/null @@ -1,8 +0,0 @@ -var UNUSED_VAR1 = 19; - -function main() { - var unused_var2 = 20; - alert(100); -} - -main(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js deleted file mode 100755 index f295fba8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/test.js +++ /dev/null @@ -1,30 +0,0 @@ -#! /usr/bin/env node - -global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); -var fs = require("fs"); -var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js - jsp = uglify.parser, - pro = uglify.uglify; - -var code = fs.readFileSync("hoist.js", "utf8"); -var ast = jsp.parse(code); - -ast = pro.ast_lift_variables(ast); - -var w = pro.ast_walker(); -ast = w.with_walkers({ - "function": function() { - var node = w.dive(this); // walk depth first - console.log(pro.gen_code(node, { beautify: true })); - return node; - }, - "name": function(name) { - return [ this[0], "X" ]; - } -}, function(){ - return w.walk(ast); -}); - -console.log(pro.gen_code(ast, { - beautify: true -})); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js deleted file mode 100644 index 0d5b7e0e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs.js +++ /dev/null @@ -1,3930 +0,0 @@ -/** - * @fileoverview - * - * JsWorld - * - *

Javascript library for localised formatting and parsing of: - *

    - *
  • Numbers - *
  • Dates and times - *
  • Currency - *
- * - *

The library classes are configured with standard POSIX locale definitions - * derived from Unicode's Common Locale Data Repository (CLDR). - * - *

Website: JsWorld - * - * @author Vladimir Dzhuvinov - * @version 2.5 (2011-12-23) - */ - - - -/** - * @namespace Namespace container for the JsWorld library objects. - */ -jsworld = {}; - - -/** - * @function - * - * @description Formats a JavaScript Date object as an ISO-8601 date/time - * string. - * - * @param {Date} [d] A valid JavaScript Date object. If undefined the - * current date/time will be used. - * @param {Boolean} [withTZ] Include timezone offset, default false. - * - * @returns {String} The date/time formatted as YYYY-MM-DD HH:MM:SS. - */ -jsworld.formatIsoDateTime = function(d, withTZ) { - - if (typeof d === "undefined") - d = new Date(); // now - - if (typeof withTZ === "undefined") - withTZ = false; - - var s = jsworld.formatIsoDate(d) + " " + jsworld.formatIsoTime(d); - - if (withTZ) { - - var diff = d.getHours() - d.getUTCHours(); - var hourDiff = Math.abs(diff); - - var minuteUTC = d.getUTCMinutes(); - var minute = d.getMinutes(); - - if (minute != minuteUTC && minuteUTC < 30 && diff < 0) - hourDiff--; - - if (minute != minuteUTC && minuteUTC > 30 && diff > 0) - hourDiff--; - - var minuteDiff; - if (minute != minuteUTC) - minuteDiff = ":30"; - else - minuteDiff = ":00"; - - var timezone; - if (hourDiff < 10) - timezone = "0" + hourDiff + minuteDiff; - - else - timezone = "" + hourDiff + minuteDiff; - - if (diff < 0) - timezone = "-" + timezone; - - else - timezone = "+" + timezone; - - s = s + timezone; - } - - return s; -}; - - -/** - * @function - * - * @description Formats a JavaScript Date object as an ISO-8601 date string. - * - * @param {Date} [d] A valid JavaScript Date object. If undefined the current - * date will be used. - * - * @returns {String} The date formatted as YYYY-MM-DD. - */ -jsworld.formatIsoDate = function(d) { - - if (typeof d === "undefined") - d = new Date(); // now - - var year = d.getFullYear(); - var month = d.getMonth() + 1; - var day = d.getDate(); - - return year + "-" + jsworld._zeroPad(month, 2) + "-" + jsworld._zeroPad(day, 2); -}; - - -/** - * @function - * - * @description Formats a JavaScript Date object as an ISO-8601 time string. - * - * @param {Date} [d] A valid JavaScript Date object. If undefined the current - * time will be used. - * - * @returns {String} The time formatted as HH:MM:SS. - */ -jsworld.formatIsoTime = function(d) { - - if (typeof d === "undefined") - d = new Date(); // now - - var hour = d.getHours(); - var minute = d.getMinutes(); - var second = d.getSeconds(); - - return jsworld._zeroPad(hour, 2) + ":" + jsworld._zeroPad(minute, 2) + ":" + jsworld._zeroPad(second, 2); -}; - - -/** - * @function - * - * @description Parses an ISO-8601 formatted date/time string to a JavaScript - * Date object. - * - * @param {String} isoDateTimeVal An ISO-8601 formatted date/time string. - * - *

Accepted formats: - * - *

    - *
  • YYYY-MM-DD HH:MM:SS - *
  • YYYYMMDD HHMMSS - *
  • YYYY-MM-DD HHMMSS - *
  • YYYYMMDD HH:MM:SS - *
- * - * @returns {Date} The corresponding Date object. - * - * @throws Error on a badly formatted date/time string or on a invalid date. - */ -jsworld.parseIsoDateTime = function(isoDateTimeVal) { - - if (typeof isoDateTimeVal != "string") - throw "Error: The parameter must be a string"; - - // First, try to match "YYYY-MM-DD HH:MM:SS" format - var matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/); - - // If unsuccessful, try to match "YYYYMMDD HHMMSS" format - if (matches === null) - matches = isoDateTimeVal.match(/^(\d\d\d\d)(\d\d)(\d\d)[T ](\d\d)(\d\d)(\d\d)/); - - // ... try to match "YYYY-MM-DD HHMMSS" format - if (matches === null) - matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d)(\d\d)(\d\d)/); - - // ... try to match "YYYYMMDD HH:MM:SS" format - if (matches === null) - matches = isoDateTimeVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/); - - // Report bad date/time string - if (matches === null) - throw "Error: Invalid ISO-8601 date/time string"; - - // Force base 10 parse int as some values may have leading zeros! - // (to avoid implicit octal base conversion) - var year = parseInt(matches[1], 10); - var month = parseInt(matches[2], 10); - var day = parseInt(matches[3], 10); - - var hour = parseInt(matches[4], 10); - var mins = parseInt(matches[5], 10); - var secs = parseInt(matches[6], 10); - - // Simple value range check, leap years not checked - // Note: the originial ISO time spec for leap hours (24:00:00) and seconds (00:00:60) is not supported - if (month < 1 || month > 12 || - day < 1 || day > 31 || - hour < 0 || hour > 23 || - mins < 0 || mins > 59 || - secs < 0 || secs > 59 ) - - throw "Error: Invalid ISO-8601 date/time value"; - - var d = new Date(year, month - 1, day, hour, mins, secs); - - // Check if the input date was valid - // (JS Date does automatic forward correction) - if (d.getDate() != day || d.getMonth() +1 != month) - throw "Error: Invalid date"; - - return d; -}; - - -/** - * @function - * - * @description Parses an ISO-8601 formatted date string to a JavaScript - * Date object. - * - * @param {String} isoDateVal An ISO-8601 formatted date string. - * - *

Accepted formats: - * - *

    - *
  • YYYY-MM-DD - *
  • YYYYMMDD - *
- * - * @returns {Date} The corresponding Date object. - * - * @throws Error on a badly formatted date string or on a invalid date. - */ -jsworld.parseIsoDate = function(isoDateVal) { - - if (typeof isoDateVal != "string") - throw "Error: The parameter must be a string"; - - // First, try to match "YYYY-MM-DD" format - var matches = isoDateVal.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/); - - // If unsuccessful, try to match "YYYYMMDD" format - if (matches === null) - matches = isoDateVal.match(/^(\d\d\d\d)(\d\d)(\d\d)/); - - // Report bad date/time string - if (matches === null) - throw "Error: Invalid ISO-8601 date string"; - - // Force base 10 parse int as some values may have leading zeros! - // (to avoid implicit octal base conversion) - var year = parseInt(matches[1], 10); - var month = parseInt(matches[2], 10); - var day = parseInt(matches[3], 10); - - // Simple value range check, leap years not checked - if (month < 1 || month > 12 || - day < 1 || day > 31 ) - - throw "Error: Invalid ISO-8601 date value"; - - var d = new Date(year, month - 1, day); - - // Check if the input date was valid - // (JS Date does automatic forward correction) - if (d.getDate() != day || d.getMonth() +1 != month) - throw "Error: Invalid date"; - - return d; -}; - - -/** - * @function - * - * @description Parses an ISO-8601 formatted time string to a JavaScript - * Date object. - * - * @param {String} isoTimeVal An ISO-8601 formatted time string. - * - *

Accepted formats: - * - *

    - *
  • HH:MM:SS - *
  • HHMMSS - *
- * - * @returns {Date} The corresponding Date object, with year, month and day set - * to zero. - * - * @throws Error on a badly formatted time string. - */ -jsworld.parseIsoTime = function(isoTimeVal) { - - if (typeof isoTimeVal != "string") - throw "Error: The parameter must be a string"; - - // First, try to match "HH:MM:SS" format - var matches = isoTimeVal.match(/^(\d\d):(\d\d):(\d\d)/); - - // If unsuccessful, try to match "HHMMSS" format - if (matches === null) - matches = isoTimeVal.match(/^(\d\d)(\d\d)(\d\d)/); - - // Report bad date/time string - if (matches === null) - throw "Error: Invalid ISO-8601 date/time string"; - - // Force base 10 parse int as some values may have leading zeros! - // (to avoid implicit octal base conversion) - var hour = parseInt(matches[1], 10); - var mins = parseInt(matches[2], 10); - var secs = parseInt(matches[3], 10); - - // Simple value range check, leap years not checked - if (hour < 0 || hour > 23 || - mins < 0 || mins > 59 || - secs < 0 || secs > 59 ) - - throw "Error: Invalid ISO-8601 time value"; - - return new Date(0, 0, 0, hour, mins, secs); -}; - - -/** - * @private - * - * @description Trims leading and trailing whitespace from a string. - * - *

Used non-regexp the method from http://blog.stevenlevithan.com/archives/faster-trim-javascript - * - * @param {String} str The string to trim. - * - * @returns {String} The trimmed string. - */ -jsworld._trim = function(str) { - - var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000'; - - for (var i = 0; i < str.length; i++) { - - if (whitespace.indexOf(str.charAt(i)) === -1) { - str = str.substring(i); - break; - } - } - - for (i = str.length - 1; i >= 0; i--) { - if (whitespace.indexOf(str.charAt(i)) === -1) { - str = str.substring(0, i + 1); - break; - } - } - - return whitespace.indexOf(str.charAt(0)) === -1 ? str : ''; -}; - - - -/** - * @private - * - * @description Returns true if the argument represents a decimal number. - * - * @param {Number|String} arg The argument to test. - * - * @returns {Boolean} true if the argument represents a decimal number, - * otherwise false. - */ -jsworld._isNumber = function(arg) { - - if (typeof arg == "number") - return true; - - if (typeof arg != "string") - return false; - - // ensure string - var s = arg + ""; - - return (/^-?(\d+|\d*\.\d+)$/).test(s); -}; - - -/** - * @private - * - * @description Returns true if the argument represents a decimal integer. - * - * @param {Number|String} arg The argument to test. - * - * @returns {Boolean} true if the argument represents an integer, otherwise - * false. - */ -jsworld._isInteger = function(arg) { - - if (typeof arg != "number" && typeof arg != "string") - return false; - - // convert to string - var s = arg + ""; - - return (/^-?\d+$/).test(s); -}; - - -/** - * @private - * - * @description Returns true if the argument represents a decimal float. - * - * @param {Number|String} arg The argument to test. - * - * @returns {Boolean} true if the argument represents a float, otherwise false. - */ -jsworld._isFloat = function(arg) { - - if (typeof arg != "number" && typeof arg != "string") - return false; - - // convert to string - var s = arg + ""; - - return (/^-?\.\d+?$/).test(s); -}; - - -/** - * @private - * - * @description Checks if the specified formatting option is contained - * within the options string. - * - * @param {String} option The option to search for. - * @param {String} optionsString The options string. - * - * @returns {Boolean} true if the flag is found, else false - */ -jsworld._hasOption = function(option, optionsString) { - - if (typeof option != "string" || typeof optionsString != "string") - return false; - - if (optionsString.indexOf(option) != -1) - return true; - else - return false; -}; - - -/** - * @private - * - * @description String replacement function. - * - * @param {String} s The string to work on. - * @param {String} target The string to search for. - * @param {String} replacement The replacement. - * - * @returns {String} The new string. - */ -jsworld._stringReplaceAll = function(s, target, replacement) { - - var out; - - if (target.length == 1 && replacement.length == 1) { - // simple char/char case somewhat faster - out = ""; - - for (var i = 0; i < s.length; i++) { - - if (s.charAt(i) == target.charAt(0)) - out = out + replacement.charAt(0); - else - out = out + s.charAt(i); - } - - return out; - } - else { - // longer target and replacement strings - out = s; - - var index = out.indexOf(target); - - while (index != -1) { - - out = out.replace(target, replacement); - - index = out.indexOf(target); - } - - return out; - } -}; - - -/** - * @private - * - * @description Tests if a string starts with the specified substring. - * - * @param {String} testedString The string to test. - * @param {String} sub The string to match. - * - * @returns {Boolean} true if the test succeeds. - */ -jsworld._stringStartsWith = function (testedString, sub) { - - if (testedString.length < sub.length) - return false; - - for (var i = 0; i < sub.length; i++) { - if (testedString.charAt(i) != sub.charAt(i)) - return false; - } - - return true; -}; - - -/** - * @private - * - * @description Gets the requested precision from an options string. - * - *

Example: ".3" returns 3 decimal places precision. - * - * @param {String} optionsString The options string. - * - * @returns {integer Number} The requested precision, -1 if not specified. - */ -jsworld._getPrecision = function (optionsString) { - - if (typeof optionsString != "string") - return -1; - - var m = optionsString.match(/\.(\d)/); - if (m) - return parseInt(m[1], 10); - else - return -1; -}; - - -/** - * @private - * - * @description Takes a decimal numeric amount (optionally as string) and - * returns its integer and fractional parts packed into an object. - * - * @param {Number|String} amount The amount, e.g. "123.45" or "-56.78" - * - * @returns {object} Parsed amount object with properties: - * {String} integer : the integer part - * {String} fraction : the fraction part - */ -jsworld._splitNumber = function (amount) { - - if (typeof amount == "number") - amount = amount + ""; - - var obj = {}; - - // remove negative sign - if (amount.charAt(0) == "-") - amount = amount.substring(1); - - // split amount into integer and decimal parts - var amountParts = amount.split("."); - if (!amountParts[1]) - amountParts[1] = ""; // we need "" instead of null - - obj.integer = amountParts[0]; - obj.fraction = amountParts[1]; - - return obj; -}; - - -/** - * @private - * - * @description Formats the integer part using the specified grouping - * and thousands separator. - * - * @param {String} intPart The integer part of the amount, as string. - * @param {String} grouping The grouping definition. - * @param {String} thousandsSep The thousands separator. - * - * @returns {String} The formatted integer part. - */ -jsworld._formatIntegerPart = function (intPart, grouping, thousandsSep) { - - // empty separator string? no grouping? - // -> return immediately with no formatting! - if (thousandsSep == "" || grouping == "-1") - return intPart; - - // turn the semicolon-separated string of integers into an array - var groupSizes = grouping.split(";"); - - // the formatted output string - var out = ""; - - // the intPart string position to process next, - // start at string end, e.g. "10000000 0) { - - // get next group size (if any, otherwise keep last) - if (groupSizes.length > 0) - size = parseInt(groupSizes.shift(), 10); - - // int parse error? - if (isNaN(size)) - throw "Error: Invalid grouping"; - - // size is -1? -> no more grouping, so just copy string remainder - if (size == -1) { - out = intPart.substring(0, pos) + out; - break; - } - - pos -= size; // move to next sep. char. position - - // position underrun? -> just copy string remainder - if (pos < 1) { - out = intPart.substring(0, pos + size) + out; - break; - } - - // extract group and apply sep. char. - out = thousandsSep + intPart.substring(pos, pos + size) + out; - } - - return out; -}; - - -/** - * @private - * - * @description Formats the fractional part to the specified decimal - * precision. - * - * @param {String} fracPart The fractional part of the amount - * @param {integer Number} precision The desired decimal precision - * - * @returns {String} The formatted fractional part. - */ -jsworld._formatFractionPart = function (fracPart, precision) { - - // append zeroes up to precision if necessary - for (var i=0; fracPart.length < precision; i++) - fracPart = fracPart + "0"; - - return fracPart; -}; - - -/** - * @private - * - * @desription Converts a number to string and pad it with leading zeroes if the - * string is shorter than length. - * - * @param {integer Number} number The number value subjected to selective padding. - * @param {integer Number} length If the number has fewer digits than this length - * apply padding. - * - * @returns {String} The formatted string. - */ -jsworld._zeroPad = function(number, length) { - - // ensure string - var s = number + ""; - - while (s.length < length) - s = "0" + s; - - return s; -}; - - -/** - * @private - * @description Converts a number to string and pads it with leading spaces if - * the string is shorter than length. - * - * @param {integer Number} number The number value subjected to selective padding. - * @param {integer Number} length If the number has fewer digits than this length - * apply padding. - * - * @returns {String} The formatted string. - */ -jsworld._spacePad = function(number, length) { - - // ensure string - var s = number + ""; - - while (s.length < length) - s = " " + s; - - return s; -}; - - - -/** - * @class - * Represents a POSIX-style locale with its numeric, monetary and date/time - * properties. Also provides a set of locale helper methods. - * - *

The locale properties follow the POSIX standards: - * - *

- * - * @public - * @constructor - * @description Creates a new locale object (POSIX-style) with the specified - * properties. - * - * @param {object} properties An object containing the raw locale properties: - * - * @param {String} properties.decimal_point - * - * A string containing the symbol that shall be used as the decimal - * delimiter (radix character) in numeric, non-monetary formatted - * quantities. This property cannot be omitted and cannot be set to the - * empty string. - * - * - * @param {String} properties.thousands_sep - * - * A string containing the symbol that shall be used as a separator for - * groups of digits to the left of the decimal delimiter in numeric, - * non-monetary formatted monetary quantities. - * - * - * @param {String} properties.grouping - * - * Defines the size of each group of digits in formatted non-monetary - * quantities. The operand is a sequence of integers separated by - * semicolons. Each integer specifies the number of digits in each group, - * with the initial integer defining the size of the group immediately - * preceding the decimal delimiter, and the following integers defining - * the preceding groups. If the last integer is not -1, then the size of - * the previous group (if any) shall be repeatedly used for the - * remainder of the digits. If the last integer is -1, then no further - * grouping shall be performed. - * - * - * @param {String} properties.int_curr_symbol - * - * The first three letters signify the ISO-4217 currency code, - * the fourth letter is the international symbol separation character - * (normally a space). - * - * - * @param {String} properties.currency_symbol - * - * The local shorthand currency symbol, e.g. "$" for the en_US locale - * - * - * @param {String} properties.mon_decimal_point - * - * The symbol to be used as the decimal delimiter (radix character) - * - * - * @param {String} properties.mon_thousands_sep - * - * The symbol to be used as a separator for groups of digits to the - * left of the decimal delimiter. - * - * - * @param {String} properties.mon_grouping - * - * A string that defines the size of each group of digits. The - * operand is a sequence of integers separated by semicolons (";"). - * Each integer specifies the number of digits in each group, with the - * initial integer defining the size of the group preceding the - * decimal delimiter, and the following integers defining the - * preceding groups. If the last integer is not -1, then the size of - * the previous group (if any) must be repeatedly used for the - * remainder of the digits. If the last integer is -1, then no - * further grouping is to be performed. - * - * - * @param {String} properties.positive_sign - * - * The string to indicate a non-negative monetary amount. - * - * - * @param {String} properties.negative_sign - * - * The string to indicate a negative monetary amount. - * - * - * @param {integer Number} properties.frac_digits - * - * An integer representing the number of fractional digits (those to - * the right of the decimal delimiter) to be written in a formatted - * monetary quantity using currency_symbol. - * - * - * @param {integer Number} properties.int_frac_digits - * - * An integer representing the number of fractional digits (those to - * the right of the decimal delimiter) to be written in a formatted - * monetary quantity using int_curr_symbol. - * - * - * @param {integer Number} properties.p_cs_precedes - * - * An integer set to 1 if the currency_symbol precedes the value for a - * monetary quantity with a non-negative value, and set to 0 if the - * symbol succeeds the value. - * - * - * @param {integer Number} properties.n_cs_precedes - * - * An integer set to 1 if the currency_symbol precedes the value for a - * monetary quantity with a negative value, and set to 0 if the symbol - * succeeds the value. - * - * - * @param {integer Number} properties.p_sep_by_space - * - * Set to a value indicating the separation of the currency_symbol, - * the sign string, and the value for a non-negative formatted monetary - * quantity: - * - *

0 No space separates the currency symbol and value.

- * - *

1 If the currency symbol and sign string are adjacent, a space - * separates them from the value; otherwise, a space separates - * the currency symbol from the value.

- * - *

2 If the currency symbol and sign string are adjacent, a space - * separates them; otherwise, a space separates the sign string - * from the value.

- * - * - * @param {integer Number} properties.n_sep_by_space - * - * Set to a value indicating the separation of the currency_symbol, - * the sign string, and the value for a negative formatted monetary - * quantity. Rules same as for p_sep_by_space. - * - * - * @param {integer Number} properties.p_sign_posn - * - * An integer set to a value indicating the positioning of the - * positive_sign for a monetary quantity with a non-negative value: - * - *

0 Parentheses enclose the quantity and the currency_symbol.

- * - *

1 The sign string precedes the quantity and the currency_symbol.

- * - *

2 The sign string succeeds the quantity and the currency_symbol.

- * - *

3 The sign string precedes the currency_symbol.

- * - *

4 The sign string succeeds the currency_symbol.

- * - * - * @param {integer Number} properties.n_sign_posn - * - * An integer set to a value indicating the positioning of the - * negative_sign for a negative formatted monetary quantity. Rules same - * as for p_sign_posn. - * - * - * @param {integer Number} properties.int_p_cs_precedes - * - * An integer set to 1 if the int_curr_symbol precedes the value for a - * monetary quantity with a non-negative value, and set to 0 if the - * symbol succeeds the value. - * - * - * @param {integer Number} properties.int_n_cs_precedes - * - * An integer set to 1 if the int_curr_symbol precedes the value for a - * monetary quantity with a negative value, and set to 0 if the symbol - * succeeds the value. - * - * - * @param {integer Number} properties.int_p_sep_by_space - * - * Set to a value indicating the separation of the int_curr_symbol, - * the sign string, and the value for a non-negative internationally - * formatted monetary quantity. Rules same as for p_sep_by_space. - * - * - * @param {integer Number} properties.int_n_sep_by_space - * - * Set to a value indicating the separation of the int_curr_symbol, - * the sign string, and the value for a negative internationally - * formatted monetary quantity. Rules same as for p_sep_by_space. - * - * - * @param {integer Number} properties.int_p_sign_posn - * - * An integer set to a value indicating the positioning of the - * positive_sign for a positive monetary quantity formatted with the - * international format. Rules same as for p_sign_posn. - * - * - * @param {integer Number} properties.int_n_sign_posn - * - * An integer set to a value indicating the positioning of the - * negative_sign for a negative monetary quantity formatted with the - * international format. Rules same as for p_sign_posn. - * - * - * @param {String[] | String} properties.abday - * - * The abbreviated weekday names, corresponding to the %a conversion - * specification. The property must be either an array of 7 strings or - * a string consisting of 7 semicolon-separated substrings, each - * surrounded by double-quotes. The first must be the abbreviated name - * of the day corresponding to Sunday, the second the abbreviated name - * of the day corresponding to Monday, and so on. - * - * - * @param {String[] | String} properties.day - * - * The full weekday names, corresponding to the %A conversion - * specification. The property must be either an array of 7 strings or - * a string consisting of 7 semicolon-separated substrings, each - * surrounded by double-quotes. The first must be the full name of the - * day corresponding to Sunday, the second the full name of the day - * corresponding to Monday, and so on. - * - * - * @param {String[] | String} properties.abmon - * - * The abbreviated month names, corresponding to the %b conversion - * specification. The property must be either an array of 12 strings or - * a string consisting of 12 semicolon-separated substrings, each - * surrounded by double-quotes. The first must be the abbreviated name - * of the first month of the year (January), the second the abbreviated - * name of the second month, and so on. - * - * - * @param {String[] | String} properties.mon - * - * The full month names, corresponding to the %B conversion - * specification. The property must be either an array of 12 strings or - * a string consisting of 12 semicolon-separated substrings, each - * surrounded by double-quotes. The first must be the full name of the - * first month of the year (January), the second the full name of the second - * month, and so on. - * - * - * @param {String} properties.d_fmt - * - * The appropriate date representation. The string may contain any - * combination of characters and conversion specifications (%). - * - * - * @param {String} properties.t_fmt - * - * The appropriate time representation. The string may contain any - * combination of characters and conversion specifications (%). - * - * - * @param {String} properties.d_t_fmt - * - * The appropriate date and time representation. The string may contain - * any combination of characters and conversion specifications (%). - * - * - * @param {String[] | String} properties.am_pm - * - * The appropriate representation of the ante-meridiem and post-meridiem - * strings, corresponding to the %p conversion specification. The property - * must be either an array of 2 strings or a string consisting of 2 - * semicolon-separated substrings, each surrounded by double-quotes. - * The first string must represent the ante-meridiem designation, the - * last string the post-meridiem designation. - * - * - * @throws @throws Error on a undefined or invalid locale property. - */ -jsworld.Locale = function(properties) { - - - /** - * @private - * - * @description Identifies the class for internal library purposes. - */ - this._className = "jsworld.Locale"; - - - /** - * @private - * - * @description Parses a day or month name definition list, which - * could be a ready JS array, e.g. ["Mon", "Tue", "Wed"...] or - * it could be a string formatted according to the classic POSIX - * definition e.g. "Mon";"Tue";"Wed";... - * - * @param {String[] | String} namesAn array or string defining - * the week/month names. - * @param {integer Number} expectedItems The number of expected list - * items, e.g. 7 for weekdays, 12 for months. - * - * @returns {String[]} The parsed (and checked) items. - * - * @throws Error on missing definition, unexpected item count or - * missing double-quotes. - */ - this._parseList = function(names, expectedItems) { - - var array = []; - - if (names == null) { - throw "Names not defined"; - } - else if (typeof names == "object") { - // we got a ready array - array = names; - } - else if (typeof names == "string") { - // we got the names in the classic POSIX form, do parse - array = names.split(";", expectedItems); - - for (var i = 0; i < array.length; i++) { - // check for and strip double quotes - if (array[i][0] == "\"" && array[i][array[i].length - 1] == "\"") - array[i] = array[i].slice(1, -1); - else - throw "Missing double quotes"; - } - } - else { - throw "Names must be an array or a string"; - } - - if (array.length != expectedItems) - throw "Expected " + expectedItems + " items, got " + array.length; - - return array; - }; - - - /** - * @private - * - * @description Validates a date/time format string, such as "H:%M:%S". - * Checks that the argument is of type "string" and is not empty. - * - * @param {String} formatString The format string. - * - * @returns {String} The validated string. - * - * @throws Error on null or empty string. - */ - this._validateFormatString = function(formatString) { - - if (typeof formatString == "string" && formatString.length > 0) - return formatString; - else - throw "Empty or no string"; - }; - - - // LC_NUMERIC - - if (properties == null || typeof properties != "object") - throw "Error: Invalid/missing locale properties"; - - - if (typeof properties.decimal_point != "string") - throw "Error: Invalid/missing decimal_point property"; - - this.decimal_point = properties.decimal_point; - - - if (typeof properties.thousands_sep != "string") - throw "Error: Invalid/missing thousands_sep property"; - - this.thousands_sep = properties.thousands_sep; - - - if (typeof properties.grouping != "string") - throw "Error: Invalid/missing grouping property"; - - this.grouping = properties.grouping; - - - // LC_MONETARY - - if (typeof properties.int_curr_symbol != "string") - throw "Error: Invalid/missing int_curr_symbol property"; - - if (! /[A-Za-z]{3}.?/.test(properties.int_curr_symbol)) - throw "Error: Invalid int_curr_symbol property"; - - this.int_curr_symbol = properties.int_curr_symbol; - - - if (typeof properties.currency_symbol != "string") - throw "Error: Invalid/missing currency_symbol property"; - - this.currency_symbol = properties.currency_symbol; - - - if (typeof properties.frac_digits != "number" && properties.frac_digits < 0) - throw "Error: Invalid/missing frac_digits property"; - - this.frac_digits = properties.frac_digits; - - - // may be empty string/null for currencies with no fractional part - if (properties.mon_decimal_point === null || properties.mon_decimal_point == "") { - - if (this.frac_digits > 0) - throw "Error: Undefined mon_decimal_point property"; - else - properties.mon_decimal_point = ""; - } - - if (typeof properties.mon_decimal_point != "string") - throw "Error: Invalid/missing mon_decimal_point property"; - - this.mon_decimal_point = properties.mon_decimal_point; - - - if (typeof properties.mon_thousands_sep != "string") - throw "Error: Invalid/missing mon_thousands_sep property"; - - this.mon_thousands_sep = properties.mon_thousands_sep; - - - if (typeof properties.mon_grouping != "string") - throw "Error: Invalid/missing mon_grouping property"; - - this.mon_grouping = properties.mon_grouping; - - - if (typeof properties.positive_sign != "string") - throw "Error: Invalid/missing positive_sign property"; - - this.positive_sign = properties.positive_sign; - - - if (typeof properties.negative_sign != "string") - throw "Error: Invalid/missing negative_sign property"; - - this.negative_sign = properties.negative_sign; - - - - if (properties.p_cs_precedes !== 0 && properties.p_cs_precedes !== 1) - throw "Error: Invalid/missing p_cs_precedes property, must be 0 or 1"; - - this.p_cs_precedes = properties.p_cs_precedes; - - - if (properties.n_cs_precedes !== 0 && properties.n_cs_precedes !== 1) - throw "Error: Invalid/missing n_cs_precedes, must be 0 or 1"; - - this.n_cs_precedes = properties.n_cs_precedes; - - - if (properties.p_sep_by_space !== 0 && - properties.p_sep_by_space !== 1 && - properties.p_sep_by_space !== 2) - throw "Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2"; - - this.p_sep_by_space = properties.p_sep_by_space; - - - if (properties.n_sep_by_space !== 0 && - properties.n_sep_by_space !== 1 && - properties.n_sep_by_space !== 2) - throw "Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2"; - - this.n_sep_by_space = properties.n_sep_by_space; - - - if (properties.p_sign_posn !== 0 && - properties.p_sign_posn !== 1 && - properties.p_sign_posn !== 2 && - properties.p_sign_posn !== 3 && - properties.p_sign_posn !== 4) - throw "Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.p_sign_posn = properties.p_sign_posn; - - - if (properties.n_sign_posn !== 0 && - properties.n_sign_posn !== 1 && - properties.n_sign_posn !== 2 && - properties.n_sign_posn !== 3 && - properties.n_sign_posn !== 4) - throw "Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.n_sign_posn = properties.n_sign_posn; - - - if (typeof properties.int_frac_digits != "number" && properties.int_frac_digits < 0) - throw "Error: Invalid/missing int_frac_digits property"; - - this.int_frac_digits = properties.int_frac_digits; - - - if (properties.int_p_cs_precedes !== 0 && properties.int_p_cs_precedes !== 1) - throw "Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1"; - - this.int_p_cs_precedes = properties.int_p_cs_precedes; - - - if (properties.int_n_cs_precedes !== 0 && properties.int_n_cs_precedes !== 1) - throw "Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1"; - - this.int_n_cs_precedes = properties.int_n_cs_precedes; - - - if (properties.int_p_sep_by_space !== 0 && - properties.int_p_sep_by_space !== 1 && - properties.int_p_sep_by_space !== 2) - throw "Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2"; - - this.int_p_sep_by_space = properties.int_p_sep_by_space; - - - if (properties.int_n_sep_by_space !== 0 && - properties.int_n_sep_by_space !== 1 && - properties.int_n_sep_by_space !== 2) - throw "Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2"; - - this.int_n_sep_by_space = properties.int_n_sep_by_space; - - - if (properties.int_p_sign_posn !== 0 && - properties.int_p_sign_posn !== 1 && - properties.int_p_sign_posn !== 2 && - properties.int_p_sign_posn !== 3 && - properties.int_p_sign_posn !== 4) - throw "Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.int_p_sign_posn = properties.int_p_sign_posn; - - - if (properties.int_n_sign_posn !== 0 && - properties.int_n_sign_posn !== 1 && - properties.int_n_sign_posn !== 2 && - properties.int_n_sign_posn !== 3 && - properties.int_n_sign_posn !== 4) - throw "Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.int_n_sign_posn = properties.int_n_sign_posn; - - - // LC_TIME - - if (properties == null || typeof properties != "object") - throw "Error: Invalid/missing time locale properties"; - - - // parse the supported POSIX LC_TIME properties - - // abday - try { - this.abday = this._parseList(properties.abday, 7); - } - catch (error) { - throw "Error: Invalid abday property: " + error; - } - - // day - try { - this.day = this._parseList(properties.day, 7); - } - catch (error) { - throw "Error: Invalid day property: " + error; - } - - // abmon - try { - this.abmon = this._parseList(properties.abmon, 12); - } catch (error) { - throw "Error: Invalid abmon property: " + error; - } - - // mon - try { - this.mon = this._parseList(properties.mon, 12); - } catch (error) { - throw "Error: Invalid mon property: " + error; - } - - // d_fmt - try { - this.d_fmt = this._validateFormatString(properties.d_fmt); - } catch (error) { - throw "Error: Invalid d_fmt property: " + error; - } - - // t_fmt - try { - this.t_fmt = this._validateFormatString(properties.t_fmt); - } catch (error) { - throw "Error: Invalid t_fmt property: " + error; - } - - // d_t_fmt - try { - this.d_t_fmt = this._validateFormatString(properties.d_t_fmt); - } catch (error) { - throw "Error: Invalid d_t_fmt property: " + error; - } - - // am_pm - try { - var am_pm_strings = this._parseList(properties.am_pm, 2); - this.am = am_pm_strings[0]; - this.pm = am_pm_strings[1]; - } catch (error) { - // ignore empty/null string errors - this.am = ""; - this.pm = ""; - } - - - /** - * @public - * - * @description Returns the abbreviated name of the specified weekday. - * - * @param {integer Number} [weekdayNum] An integer between 0 and 6. Zero - * corresponds to Sunday, one to Monday, etc. If omitted the - * method will return an array of all abbreviated weekday - * names. - * - * @returns {String | String[]} The abbreviated name of the specified weekday - * or an array of all abbreviated weekday names. - * - * @throws Error on invalid argument. - */ - this.getAbbreviatedWeekdayName = function(weekdayNum) { - - if (typeof weekdayNum == "undefined" || weekdayNum === null) - return this.abday; - - if (! jsworld._isInteger(weekdayNum) || weekdayNum < 0 || weekdayNum > 6) - throw "Error: Invalid weekday argument, must be an integer [0..6]"; - - return this.abday[weekdayNum]; - }; - - - /** - * @public - * - * @description Returns the name of the specified weekday. - * - * @param {integer Number} [weekdayNum] An integer between 0 and 6. Zero - * corresponds to Sunday, one to Monday, etc. If omitted the - * method will return an array of all weekday names. - * - * @returns {String | String[]} The name of the specified weekday or an - * array of all weekday names. - * - * @throws Error on invalid argument. - */ - this.getWeekdayName = function(weekdayNum) { - - if (typeof weekdayNum == "undefined" || weekdayNum === null) - return this.day; - - if (! jsworld._isInteger(weekdayNum) || weekdayNum < 0 || weekdayNum > 6) - throw "Error: Invalid weekday argument, must be an integer [0..6]"; - - return this.day[weekdayNum]; - }; - - - /** - * @public - * - * @description Returns the abbreviated name of the specified month. - * - * @param {integer Number} [monthNum] An integer between 0 and 11. Zero - * corresponds to January, one to February, etc. If omitted the - * method will return an array of all abbreviated month names. - * - * @returns {String | String[]} The abbreviated name of the specified month - * or an array of all abbreviated month names. - * - * @throws Error on invalid argument. - */ - this.getAbbreviatedMonthName = function(monthNum) { - - if (typeof monthNum == "undefined" || monthNum === null) - return this.abmon; - - if (! jsworld._isInteger(monthNum) || monthNum < 0 || monthNum > 11) - throw "Error: Invalid month argument, must be an integer [0..11]"; - - return this.abmon[monthNum]; - }; - - - /** - * @public - * - * @description Returns the name of the specified month. - * - * @param {integer Number} [monthNum] An integer between 0 and 11. Zero - * corresponds to January, one to February, etc. If omitted the - * method will return an array of all month names. - * - * @returns {String | String[]} The name of the specified month or an array - * of all month names. - * - * @throws Error on invalid argument. - */ - this.getMonthName = function(monthNum) { - - if (typeof monthNum == "undefined" || monthNum === null) - return this.mon; - - if (! jsworld._isInteger(monthNum) || monthNum < 0 || monthNum > 11) - throw "Error: Invalid month argument, must be an integer [0..11]"; - - return this.mon[monthNum]; - }; - - - - /** - * @public - * - * @description Gets the decimal delimiter (radix) character for - * numeric quantities. - * - * @returns {String} The radix character. - */ - this.getDecimalPoint = function() { - - return this.decimal_point; - }; - - - /** - * @public - * - * @description Gets the local shorthand currency symbol. - * - * @returns {String} The currency symbol. - */ - this.getCurrencySymbol = function() { - - return this.currency_symbol; - }; - - - /** - * @public - * - * @description Gets the internaltion currency symbol (ISO-4217 code). - * - * @returns {String} The international currency symbol. - */ - this.getIntCurrencySymbol = function() { - - return this.int_curr_symbol.substring(0,3); - }; - - - /** - * @public - * - * @description Gets the position of the local (shorthand) currency - * symbol relative to the amount. Assumes a non-negative amount. - * - * @returns {Boolean} True if the symbol precedes the amount, false if - * the symbol succeeds the amount. - */ - this.currencySymbolPrecedes = function() { - - if (this.p_cs_precedes == 1) - return true; - else - return false; - }; - - - /** - * @public - * - * @description Gets the position of the international (ISO-4217 code) - * currency symbol relative to the amount. Assumes a non-negative - * amount. - * - * @returns {Boolean} True if the symbol precedes the amount, false if - * the symbol succeeds the amount. - */ - this.intCurrencySymbolPrecedes = function() { - - if (this.int_p_cs_precedes == 1) - return true; - else - return false; - - }; - - - /** - * @public - * - * @description Gets the decimal delimiter (radix) for monetary - * quantities. - * - * @returns {String} The radix character. - */ - this.getMonetaryDecimalPoint = function() { - - return this.mon_decimal_point; - }; - - - /** - * @public - * - * @description Gets the number of fractional digits for local - * (shorthand) symbol formatting. - * - * @returns {integer Number} The number of fractional digits. - */ - this.getFractionalDigits = function() { - - return this.frac_digits; - }; - - - /** - * @public - * - * @description Gets the number of fractional digits for - * international (ISO-4217 code) formatting. - * - * @returns {integer Number} The number of fractional digits. - */ - this.getIntFractionalDigits = function() { - - return this.int_frac_digits; - }; -}; - - - -/** - * @class - * Class for localised formatting of numbers. - * - *

See: - * POSIX LC_NUMERIC. - * - * - * @public - * @constructor - * @description Creates a new numeric formatter for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_NUMERIC formatting properties. - * - * @throws Error on constructor failure. - */ -jsworld.NumericFormatter = function(locale) { - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance"; - - this.lc = locale; - - - /** - * @public - * - * @description Formats a decimal numeric value according to the preset - * locale. - * - * @param {Number|String} number The number to format. - * @param {String} [options] Options to modify the formatted output: - *

    - *
  • "^" suppress grouping - *
  • "+" force positive sign for positive amounts - *
  • "~" suppress positive/negative sign - *
  • ".n" specify decimal precision 'n' - *
- * - * @returns {String} The formatted number. - * - * @throws "Error: Invalid input" on bad input. - */ - this.format = function(number, options) { - - if (typeof number == "string") - number = jsworld._trim(number); - - if (! jsworld._isNumber(number)) - throw "Error: The input is not a number"; - - var floatAmount = parseFloat(number, 10); - - // get the required precision - var reqPrecision = jsworld._getPrecision(options); - - // round to required precision - if (reqPrecision != -1) - floatAmount = Math.round(floatAmount * Math.pow(10, reqPrecision)) / Math.pow(10, reqPrecision); - - - // convert the float number to string and parse into - // object with properties integer and fraction - var parsedAmount = jsworld._splitNumber(String(floatAmount)); - - // format integer part with grouping chars - var formattedIntegerPart; - - if (floatAmount === 0) - formattedIntegerPart = "0"; - else - formattedIntegerPart = jsworld._hasOption("^", options) ? - parsedAmount.integer : - jsworld._formatIntegerPart(parsedAmount.integer, - this.lc.grouping, - this.lc.thousands_sep); - - // format the fractional part - var formattedFractionPart = - reqPrecision != -1 ? - jsworld._formatFractionPart(parsedAmount.fraction, reqPrecision) : - parsedAmount.fraction; - - - // join the integer and fraction parts using the decimal_point property - var formattedAmount = - formattedFractionPart.length ? - formattedIntegerPart + this.lc.decimal_point + formattedFractionPart : - formattedIntegerPart; - - // prepend sign? - if (jsworld._hasOption("~", options) || floatAmount === 0) { - // suppress both '+' and '-' signs, i.e. return abs value - return formattedAmount; - } - else { - if (jsworld._hasOption("+", options) || floatAmount < 0) { - if (floatAmount > 0) - // force '+' sign for positive amounts - return "+" + formattedAmount; - else if (floatAmount < 0) - // prepend '-' sign - return "-" + formattedAmount; - else - // zero case - return formattedAmount; - } - else { - // positive amount with no '+' sign - return formattedAmount; - } - } - }; -}; - - -/** - * @class - * Class for localised formatting of dates and times. - * - *

See: - * POSIX LC_TIME. - * - * @public - * @constructor - * @description Creates a new date/time formatter for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_TIME formatting properties. - * - * @throws Error on constructor failure. - */ -jsworld.DateTimeFormatter = function(locale) { - - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance."; - - this.lc = locale; - - - /** - * @public - * - * @description Formats a date according to the preset locale. - * - * @param {Date|String} date A valid Date object instance or a string - * containing a valid ISO-8601 formatted date, e.g. "2010-31-03" - * or "2010-03-31 23:59:59". - * - * @returns {String} The formatted date - * - * @throws Error on invalid date argument - */ - this.formatDate = function(date) { - - var d = null; - - if (typeof date == "string") { - // assume ISO-8601 date string - try { - d = jsworld.parseIsoDate(date); - } catch (error) { - // try full ISO-8601 date/time string - d = jsworld.parseIsoDateTime(date); - } - } - else if (date !== null && typeof date == "object") { - // assume ready Date object - d = date; - } - else { - throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; - } - - return this._applyFormatting(d, this.lc.d_fmt); - }; - - - /** - * @public - * - * @description Formats a time according to the preset locale. - * - * @param {Date|String} date A valid Date object instance or a string - * containing a valid ISO-8601 formatted time, e.g. "23:59:59" - * or "2010-03-31 23:59:59". - * - * @returns {String} The formatted time. - * - * @throws Error on invalid date argument. - */ - this.formatTime = function(date) { - - var d = null; - - if (typeof date == "string") { - // assume ISO-8601 time string - try { - d = jsworld.parseIsoTime(date); - } catch (error) { - // try full ISO-8601 date/time string - d = jsworld.parseIsoDateTime(date); - } - } - else if (date !== null && typeof date == "object") { - // assume ready Date object - d = date; - } - else { - throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; - } - - return this._applyFormatting(d, this.lc.t_fmt); - }; - - - /** - * @public - * - * @description Formats a date/time value according to the preset - * locale. - * - * @param {Date|String} date A valid Date object instance or a string - * containing a valid ISO-8601 formatted date/time, e.g. - * "2010-03-31 23:59:59". - * - * @returns {String} The formatted time. - * - * @throws Error on invalid argument. - */ - this.formatDateTime = function(date) { - - var d = null; - - if (typeof date == "string") { - // assume ISO-8601 format - d = jsworld.parseIsoDateTime(date); - } - else if (date !== null && typeof date == "object") { - // assume ready Date object - d = date; - } - else { - throw "Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"; - } - - return this._applyFormatting(d, this.lc.d_t_fmt); - }; - - - /** - * @private - * - * @description Apples formatting to the Date object according to the - * format string. - * - * @param {Date} d A valid Date instance. - * @param {String} s The formatting string with '%' placeholders. - * - * @returns {String} The formatted string. - */ - this._applyFormatting = function(d, s) { - - s = s.replace(/%%/g, '%'); - s = s.replace(/%a/g, this.lc.abday[d.getDay()]); - s = s.replace(/%A/g, this.lc.day[d.getDay()]); - s = s.replace(/%b/g, this.lc.abmon[d.getMonth()]); - s = s.replace(/%B/g, this.lc.mon[d.getMonth()]); - s = s.replace(/%d/g, jsworld._zeroPad(d.getDate(), 2)); - s = s.replace(/%e/g, jsworld._spacePad(d.getDate(), 2)); - s = s.replace(/%F/g, d.getFullYear() + - "-" + - jsworld._zeroPad(d.getMonth()+1, 2) + - "-" + - jsworld._zeroPad(d.getDate(), 2)); - s = s.replace(/%h/g, this.lc.abmon[d.getMonth()]); // same as %b - s = s.replace(/%H/g, jsworld._zeroPad(d.getHours(), 2)); - s = s.replace(/%I/g, jsworld._zeroPad(this._hours12(d.getHours()), 2)); - s = s.replace(/%k/g, d.getHours()); - s = s.replace(/%l/g, this._hours12(d.getHours())); - s = s.replace(/%m/g, jsworld._zeroPad(d.getMonth()+1, 2)); - s = s.replace(/%n/g, "\n"); - s = s.replace(/%M/g, jsworld._zeroPad(d.getMinutes(), 2)); - s = s.replace(/%p/g, this._getAmPm(d.getHours())); - s = s.replace(/%P/g, this._getAmPm(d.getHours()).toLocaleLowerCase()); // safe? - s = s.replace(/%R/g, jsworld._zeroPad(d.getHours(), 2) + - ":" + - jsworld._zeroPad(d.getMinutes(), 2)); - s = s.replace(/%S/g, jsworld._zeroPad(d.getSeconds(), 2)); - s = s.replace(/%T/g, jsworld._zeroPad(d.getHours(), 2) + - ":" + - jsworld._zeroPad(d.getMinutes(), 2) + - ":" + - jsworld._zeroPad(d.getSeconds(), 2)); - s = s.replace(/%w/g, this.lc.day[d.getDay()]); - s = s.replace(/%y/g, new String(d.getFullYear()).substring(2)); - s = s.replace(/%Y/g, d.getFullYear()); - - s = s.replace(/%Z/g, ""); // to do: ignored until a reliable TMZ method found - - s = s.replace(/%[a-zA-Z]/g, ""); // ignore all other % sequences - - return s; - }; - - - /** - * @private - * - * @description Does 24 to 12 hour conversion. - * - * @param {integer Number} hour24 Hour [0..23]. - * - * @returns {integer Number} Corresponding hour [1..12]. - */ - this._hours12 = function(hour24) { - - if (hour24 === 0) - return 12; // 00h is 12AM - - else if (hour24 > 12) - return hour24 - 12; // 1PM to 11PM - - else - return hour24; // 1AM to 12PM - }; - - - /** - * @private - * - * @description Gets the appropriate localised AM or PM string depending - * on the day hour. Special cases: midnight is 12AM, noon is 12PM. - * - * @param {integer Number} hour24 Hour [0..23]. - * - * @returns {String} The corresponding localised AM or PM string. - */ - this._getAmPm = function(hour24) { - - if (hour24 < 12) - return this.lc.am; - else - return this.lc.pm; - }; -}; - - - -/** - * @class Class for localised formatting of currency amounts. - * - *

See: - * POSIX LC_MONETARY. - * - * @public - * @constructor - * @description Creates a new monetary formatter for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_MONETARY formatting properties. - * @param {String} [currencyCode] Set the currency explicitly by - * passing its international ISO-4217 code, e.g. "USD", "EUR", "GBP". - * Use this optional parameter to override the default local currency - * @param {String} [altIntSymbol] Non-local currencies are formatted - * with their international ISO-4217 code to prevent ambiguity. - * Use this optional argument to force a different symbol, such as the - * currency's shorthand sign. This is mostly useful when the shorthand - * sign is both internationally recognised and identifies the currency - * uniquely (e.g. the Euro sign). - * - * @throws Error on constructor failure. - */ -jsworld.MonetaryFormatter = function(locale, currencyCode, altIntSymbol) { - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance"; - - this.lc = locale; - - /** - * @private - * @description Lookup table to determine the fraction digits for a - * specific currency; most currencies subdivide at 1/100 (2 fractional - * digits), so we store only those that deviate from the default. - * - *

The data is from Unicode's CLDR version 1.7.0. The two currencies - * with non-decimal subunits (MGA and MRO) are marked as having no - * fractional digits as well as all currencies that have no subunits - * in circulation. - * - *

It is "hard-wired" for referential convenience and is only looked - * up when an overriding currencyCode parameter is supplied. - */ - this.currencyFractionDigits = { - "AFN" : 0, "ALL" : 0, "AMD" : 0, "BHD" : 3, "BIF" : 0, - "BYR" : 0, "CLF" : 0, "CLP" : 0, "COP" : 0, "CRC" : 0, - "DJF" : 0, "GNF" : 0, "GYD" : 0, "HUF" : 0, "IDR" : 0, - "IQD" : 0, "IRR" : 0, "ISK" : 0, "JOD" : 3, "JPY" : 0, - "KMF" : 0, "KRW" : 0, "KWD" : 3, "LAK" : 0, "LBP" : 0, - "LYD" : 3, "MGA" : 0, "MMK" : 0, "MNT" : 0, "MRO" : 0, - "MUR" : 0, "OMR" : 3, "PKR" : 0, "PYG" : 0, "RSD" : 0, - "RWF" : 0, "SLL" : 0, "SOS" : 0, "STD" : 0, "SYP" : 0, - "TND" : 3, "TWD" : 0, "TZS" : 0, "UGX" : 0, "UZS" : 0, - "VND" : 0, "VUV" : 0, "XAF" : 0, "XOF" : 0, "XPF" : 0, - "YER" : 0, "ZMK" : 0 - }; - - - // optional currencyCode argument? - if (typeof currencyCode == "string") { - // user wanted to override the local currency - this.currencyCode = currencyCode.toUpperCase(); - - // must override the frac digits too, for some - // currencies have 0, 2 or 3! - var numDigits = this.currencyFractionDigits[this.currencyCode]; - if (typeof numDigits != "number") - numDigits = 2; // default for most currencies - this.lc.frac_digits = numDigits; - this.lc.int_frac_digits = numDigits; - } - else { - // use local currency - this.currencyCode = this.lc.int_curr_symbol.substring(0,3).toUpperCase(); - } - - // extract intl. currency separator - this.intSep = this.lc.int_curr_symbol.charAt(3); - - // flag local or intl. sign formatting? - if (this.currencyCode == this.lc.int_curr_symbol.substring(0,3)) { - // currency matches the local one? -> - // formatting with local symbol and parameters - this.internationalFormatting = false; - this.curSym = this.lc.currency_symbol; - } - else { - // currency doesn't match the local -> - - // do we have an overriding currency symbol? - if (typeof altIntSymbol == "string") { - // -> force formatting with local parameters, using alt symbol - this.curSym = altIntSymbol; - this.internationalFormatting = false; - } - else { - // -> force formatting with intl. sign and parameters - this.internationalFormatting = true; - } - } - - - /** - * @public - * - * @description Gets the currency symbol used in formatting. - * - * @returns {String} The currency symbol. - */ - this.getCurrencySymbol = function() { - - return this.curSym; - }; - - - /** - * @public - * - * @description Gets the position of the currency symbol relative to - * the amount. Assumes a non-negative amount and local formatting. - * - * @param {String} intFlag Optional flag to force international - * formatting by passing the string "i". - * - * @returns {Boolean} True if the symbol precedes the amount, false if - * the symbol succeeds the amount. - */ - this.currencySymbolPrecedes = function(intFlag) { - - if (typeof intFlag == "string" && intFlag == "i") { - // international formatting was forced - if (this.lc.int_p_cs_precedes == 1) - return true; - else - return false; - - } - else { - // check whether local formatting is on or off - if (this.internationalFormatting) { - if (this.lc.int_p_cs_precedes == 1) - return true; - else - return false; - } - else { - if (this.lc.p_cs_precedes == 1) - return true; - else - return false; - } - } - }; - - - /** - * @public - * - * @description Gets the decimal delimiter (radix) used in formatting. - * - * @returns {String} The radix character. - */ - this.getDecimalPoint = function() { - - return this.lc.mon_decimal_point; - }; - - - /** - * @public - * - * @description Gets the number of fractional digits. Assumes local - * formatting. - * - * @param {String} intFlag Optional flag to force international - * formatting by passing the string "i". - * - * @returns {integer Number} The number of fractional digits. - */ - this.getFractionalDigits = function(intFlag) { - - if (typeof intFlag == "string" && intFlag == "i") { - // international formatting was forced - return this.lc.int_frac_digits; - } - else { - // check whether local formatting is on or off - if (this.internationalFormatting) - return this.lc.int_frac_digits; - else - return this.lc.frac_digits; - } - }; - - - /** - * @public - * - * @description Formats a monetary amount according to the preset - * locale. - * - *

-	 * For local currencies the native shorthand symbol will be used for
-	 * formatting.
-	 * Example:
-	 *        locale is en_US
-	 *        currency is USD
-	 *        -> the "$" symbol will be used, e.g. $123.45
-	 *        
-	 * For non-local currencies the international ISO-4217 code will be
-	 * used for formatting.
-	 * Example:
-	 *       locale is en_US (which has USD as currency)
-	 *       currency is EUR
-	 *       -> the ISO three-letter code will be used, e.g. EUR 123.45
-	 *
-	 * If the currency is non-local, but an alternative currency symbol was
-	 * provided, this will be used instead.
-	 * Example
-	 *       locale is en_US (which has USD as currency)
-	 *       currency is EUR
-	 *       an alternative symbol is provided - "€"
-	 *       -> the alternative symbol will be used, e.g. €123.45
-	 * 
- * - * @param {Number|String} amount The amount to format as currency. - * @param {String} [options] Options to modify the formatted output: - *
    - *
  • "^" suppress grouping - *
  • "!" suppress the currency symbol - *
  • "~" suppress the currency symbol and the sign (positive or negative) - *
  • "i" force international sign (ISO-4217 code) formatting - *
  • ".n" specify decimal precision - * - * @returns The formatted currency amount as string. - * - * @throws "Error: Invalid amount" on bad amount. - */ - this.format = function(amount, options) { - - // if the amount is passed as string, check that it parses to a float - var floatAmount; - - if (typeof amount == "string") { - amount = jsworld._trim(amount); - floatAmount = parseFloat(amount); - - if (typeof floatAmount != "number" || isNaN(floatAmount)) - throw "Error: Amount string not a number"; - } - else if (typeof amount == "number") { - floatAmount = amount; - } - else { - throw "Error: Amount not a number"; - } - - // get the required precision, ".n" option arg overrides default locale config - var reqPrecision = jsworld._getPrecision(options); - - if (reqPrecision == -1) { - if (this.internationalFormatting || jsworld._hasOption("i", options)) - reqPrecision = this.lc.int_frac_digits; - else - reqPrecision = this.lc.frac_digits; - } - - // round - floatAmount = Math.round(floatAmount * Math.pow(10, reqPrecision)) / Math.pow(10, reqPrecision); - - - // convert the float amount to string and parse into - // object with properties integer and fraction - var parsedAmount = jsworld._splitNumber(String(floatAmount)); - - // format integer part with grouping chars - var formattedIntegerPart; - - if (floatAmount === 0) - formattedIntegerPart = "0"; - else - formattedIntegerPart = jsworld._hasOption("^", options) ? - parsedAmount.integer : - jsworld._formatIntegerPart(parsedAmount.integer, - this.lc.mon_grouping, - this.lc.mon_thousands_sep); - - - // format the fractional part - var formattedFractionPart; - - if (reqPrecision == -1) { - // pad fraction with trailing zeros accoring to default locale [int_]frac_digits - if (this.internationalFormatting || jsworld._hasOption("i", options)) - formattedFractionPart = - jsworld._formatFractionPart(parsedAmount.fraction, this.lc.int_frac_digits); - else - formattedFractionPart = - jsworld._formatFractionPart(parsedAmount.fraction, this.lc.frac_digits); - } - else { - // pad fraction with trailing zeros according to optional format parameter - formattedFractionPart = - jsworld._formatFractionPart(parsedAmount.fraction, reqPrecision); - } - - - // join integer and decimal parts using the mon_decimal_point property - var quantity; - - if (this.lc.frac_digits > 0 || formattedFractionPart.length) - quantity = formattedIntegerPart + this.lc.mon_decimal_point + formattedFractionPart; - else - quantity = formattedIntegerPart; - - - // do final formatting with sign and symbol - if (jsworld._hasOption("~", options)) { - return quantity; - } - else { - var suppressSymbol = jsworld._hasOption("!", options) ? true : false; - - var sign = floatAmount < 0 ? "-" : "+"; - - if (this.internationalFormatting || jsworld._hasOption("i", options)) { - - // format with ISO-4217 code (suppressed or not) - if (suppressSymbol) - return this._formatAsInternationalCurrencyWithNoSym(sign, quantity); - else - return this._formatAsInternationalCurrency(sign, quantity); - } - else { - // format with local currency code (suppressed or not) - if (suppressSymbol) - return this._formatAsLocalCurrencyWithNoSym(sign, quantity); - else - return this._formatAsLocalCurrency(sign, quantity); - } - } - }; - - - /** - * @private - * - * @description Assembles the final string with sign, separator and symbol as local - * currency. - * - * @param {String} sign The amount sign: "+" or "-". - * @param {String} q The formatted quantity (unsigned). - * - * @returns {String} The final formatted string. - */ - this._formatAsLocalCurrency = function (sign, q) { - - // assemble final formatted amount by going over all possible value combinations of: - // sign {+,-} , sign position {0,1,2,3,4} , separator {0,1,2} , symbol position {0,1} - if (sign == "+") { - - // parentheses - if (this.lc.p_sign_posn === 0 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return "(" + q + this.curSym + ")"; - } - else if (this.lc.p_sign_posn === 0 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return "(" + this.curSym + q + ")"; - } - else if (this.lc.p_sign_posn === 0 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return "(" + q + " " + this.curSym + ")"; - } - else if (this.lc.p_sign_posn === 0 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return "(" + this.curSym + " " + q + ")"; - } - - // sign before q + sym - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + q + this.curSym; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + this.curSym + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + q + " " + this.curSym; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + this.curSym + " " + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + " " + q + this.curSym; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + this.curSym + q; - } - - // sign after q + sym - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.curSym + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.curSym + q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.curSym + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.curSym + " " + q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + this.curSym + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.curSym + q + " " + this.lc.positive_sign; - } - - // sign before sym - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign + this.curSym; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + this.curSym + q; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.lc.positive_sign + this.curSym; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + this.curSym + " " + q; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign + " " + this.curSym; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + this.curSym + q; - } - - // sign after symbol - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.curSym + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.curSym + this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.curSym + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.curSym + this.lc.positive_sign + " " + q; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + this.curSym + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.curSym + " " + this.lc.positive_sign + q; - } - - } - else if (sign == "-") { - - // parentheses enclose q + sym - if (this.lc.n_sign_posn === 0 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return "(" + q + this.curSym + ")"; - } - else if (this.lc.n_sign_posn === 0 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return "(" + this.curSym + q + ")"; - } - else if (this.lc.n_sign_posn === 0 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return "(" + q + " " + this.curSym + ")"; - } - else if (this.lc.n_sign_posn === 0 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return "(" + this.curSym + " " + q + ")"; - } - - // sign before q + sym - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + q + this.curSym; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + this.curSym + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + q + " " + this.curSym; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + this.curSym + " " + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + " " + q + this.curSym; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + this.curSym + q; - } - - // sign after q + sym - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.curSym + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.curSym + q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.curSym + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.curSym + " " + q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + this.curSym + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.curSym + q + " " + this.lc.negative_sign; - } - - // sign before sym - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign + this.curSym; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + this.curSym + q; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign + this.curSym; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + this.curSym + " " + q; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign + " " + this.curSym; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + this.curSym + q; - } - - // sign after symbol - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.curSym + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.curSym + this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.curSym + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.curSym + this.lc.negative_sign + " " + q; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + this.curSym + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.curSym + " " + this.lc.negative_sign + q; - } - } - - // throw error if we fall through - throw "Error: Invalid POSIX LC MONETARY definition"; - }; - - - /** - * @private - * - * @description Assembles the final string with sign, separator and ISO-4217 - * currency code. - * - * @param {String} sign The amount sign: "+" or "-". - * @param {String} q The formatted quantity (unsigned). - * - * @returns {String} The final formatted string. - */ - this._formatAsInternationalCurrency = function (sign, q) { - - // assemble the final formatted amount by going over all possible value combinations of: - // sign {+,-} , sign position {0,1,2,3,4} , separator {0,1,2} , symbol position {0,1} - - if (sign == "+") { - - // parentheses - if (this.lc.int_p_sign_posn === 0 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return "(" + q + this.currencyCode + ")"; - } - else if (this.lc.int_p_sign_posn === 0 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return "(" + this.currencyCode + q + ")"; - } - else if (this.lc.int_p_sign_posn === 0 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return "(" + q + this.intSep + this.currencyCode + ")"; - } - else if (this.lc.int_p_sign_posn === 0 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return "(" + this.currencyCode + this.intSep + q + ")"; - } - - // sign before q + sym - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + q + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.currencyCode + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + q + this.intSep + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.currencyCode + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + this.intSep + q + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + this.currencyCode + q; - } - - // sign after q + sym - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.currencyCode + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.currencyCode + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + this.intSep + q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.currencyCode + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + q + this.intSep + this.lc.positive_sign; - } - - // sign before sym - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.currencyCode + q; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.currencyCode + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign + this.intSep + this.currencyCode; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + this.currencyCode + q; - } - - // sign after symbol - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.currencyCode + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.currencyCode + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + this.lc.positive_sign + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.currencyCode + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.currencyCode + this.intSep + this.lc.positive_sign + q; - } - - } - else if (sign == "-") { - - // parentheses enclose q + sym - if (this.lc.int_n_sign_posn === 0 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return "(" + q + this.currencyCode + ")"; - } - else if (this.lc.int_n_sign_posn === 0 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return "(" + this.currencyCode + q + ")"; - } - else if (this.lc.int_n_sign_posn === 0 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return "(" + q + this.intSep + this.currencyCode + ")"; - } - else if (this.lc.int_n_sign_posn === 0 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return "(" + this.currencyCode + this.intSep + q + ")"; - } - - // sign before q + sym - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + q + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.currencyCode + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + q + this.intSep + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.currencyCode + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + this.intSep + q + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + this.currencyCode + q; - } - - // sign after q + sym - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.currencyCode + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.currencyCode + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + this.intSep + q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.currencyCode + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + q + this.intSep + this.lc.negative_sign; - } - - // sign before sym - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.currencyCode + q; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.currencyCode + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign + this.intSep + this.currencyCode; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + this.currencyCode + q; - } - - // sign after symbol - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.currencyCode + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.currencyCode + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + this.lc.negative_sign + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.currencyCode + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.currencyCode + this.intSep + this.lc.negative_sign + q; - } - } - - // throw error if we fall through - throw "Error: Invalid POSIX LC MONETARY definition"; - }; - - - /** - * @private - * - * @description Assembles the final string with sign and separator, but suppress the - * local currency symbol. - * - * @param {String} sign The amount sign: "+" or "-". - * @param {String} q The formatted quantity (unsigned). - * - * @returns {String} The final formatted string - */ - this._formatAsLocalCurrencyWithNoSym = function (sign, q) { - - // assemble the final formatted amount by going over all possible value combinations of: - // sign {+,-} , sign position {0,1,2,3,4} , separator {0,1,2} , symbol position {0,1} - - if (sign == "+") { - - // parentheses - if (this.lc.p_sign_posn === 0) { - return "(" + q + ")"; - } - - // sign before q + sym - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return this.lc.positive_sign + " " + q; - } - else if (this.lc.p_sign_posn === 1 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + q; - } - - // sign after q + sym - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 2 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return q + " " + this.lc.positive_sign; - } - - // sign before sym - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + q; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 3 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + q; - } - - // sign after symbol - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 0 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 0) { - return q + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 1 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + " " + q; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 0) { - return q + " " + this.lc.positive_sign; - } - else if (this.lc.p_sign_posn === 4 && this.lc.p_sep_by_space === 2 && this.lc.p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - - } - else if (sign == "-") { - - // parentheses enclose q + sym - if (this.lc.n_sign_posn === 0) { - return "(" + q + ")"; - } - - // sign before q + sym - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return this.lc.negative_sign + " " + q; - } - else if (this.lc.n_sign_posn === 1 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + q; - } - - // sign after q + sym - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 2 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return q + " " + this.lc.negative_sign; - } - - // sign before sym - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + q; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 3 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + q; - } - - // sign after symbol - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 0 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 1 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + " " + q; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 0) { - return q + " " + this.lc.negative_sign; - } - else if (this.lc.n_sign_posn === 4 && this.lc.n_sep_by_space === 2 && this.lc.n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - } - - // throw error if we fall through - throw "Error: Invalid POSIX LC MONETARY definition"; - }; - - - /** - * @private - * - * @description Assembles the final string with sign and separator, but suppress - * the ISO-4217 currency code. - * - * @param {String} sign The amount sign: "+" or "-". - * @param {String} q The formatted quantity (unsigned). - * - * @returns {String} The final formatted string. - */ - this._formatAsInternationalCurrencyWithNoSym = function (sign, q) { - - // assemble the final formatted amount by going over all possible value combinations of: - // sign {+,-} , sign position {0,1,2,3,4} , separator {0,1,2} , symbol position {0,1} - - if (sign == "+") { - - // parentheses - if (this.lc.int_p_sign_posn === 0) { - return "(" + q + ")"; - } - - // sign before q + sym - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return this.lc.positive_sign + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 1 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + q; - } - - // sign after q + sym - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 2 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return q + this.intSep + this.lc.positive_sign; - } - - // sign before sym - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 3 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + q; - } - - // sign after symbol - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 0) { - return q + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 0 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 1 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + this.intSep + q; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 0) { - return q + this.intSep + this.lc.positive_sign; - } - else if (this.lc.int_p_sign_posn === 4 && this.lc.int_p_sep_by_space === 2 && this.lc.int_p_cs_precedes === 1) { - return this.lc.positive_sign + q; - } - - } - else if (sign == "-") { - - // parentheses enclose q + sym - if (this.lc.int_n_sign_posn === 0) { - return "(" + q + ")"; - } - - // sign before q + sym - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return this.lc.negative_sign + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 1 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + q; - } - - // sign after q + sym - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 2 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return q + this.intSep + this.lc.negative_sign; - } - - // sign before sym - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 3 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + q; - } - - // sign after symbol - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 0) { - return q + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 0 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 1 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + this.intSep + q; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 0) { - return q + this.intSep + this.lc.negative_sign; - } - else if (this.lc.int_n_sign_posn === 4 && this.lc.int_n_sep_by_space === 2 && this.lc.int_n_cs_precedes === 1) { - return this.lc.negative_sign + q; - } - } - - // throw error if we fall through - throw "Error: Invalid POSIX LC_MONETARY definition"; - }; -}; - - -/** - * @class - * Class for parsing localised number strings. - * - * @public - * @constructor - * @description Creates a new numeric parser for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_NUMERIC formatting properties. - * - * @throws Error on constructor failure. - */ -jsworld.NumericParser = function(locale) { - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance"; - - this.lc = locale; - - - /** - * @public - * - * @description Parses a numeric string formatted according to the - * preset locale. Leading and trailing whitespace is ignored; the number - * may also be formatted without thousands separators. - * - * @param {String} formattedNumber The formatted number. - * - * @returns {Number} The parsed number. - * - * @throws Error on a parse exception. - */ - this.parse = function(formattedNumber) { - - if (typeof formattedNumber != "string") - throw "Parse error: Argument must be a string"; - - // trim whitespace - var s = jsworld._trim(formattedNumber); - - // remove any thousand separator symbols - s = jsworld._stringReplaceAll(formattedNumber, this.lc.thousands_sep, ""); - - // replace any local decimal point symbols with the symbol used - // in JavaScript "." - s = jsworld._stringReplaceAll(s, this.lc.decimal_point, "."); - - // test if the string represents a number - if (jsworld._isNumber(s)) - return parseFloat(s, 10); - else - throw "Parse error: Invalid number string"; - }; -}; - - -/** - * @class - * Class for parsing localised date and time strings. - * - * @public - * @constructor - * @description Creates a new date/time parser for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_TIME formatting properties. - * - * @throws Error on constructor failure. - */ -jsworld.DateTimeParser = function(locale) { - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance."; - - this.lc = locale; - - - /** - * @public - * - * @description Parses a time string formatted according to the - * POSIX LC_TIME t_fmt property of the preset locale. - * - * @param {String} formattedTime The formatted time. - * - * @returns {String} The parsed time in ISO-8601 format (HH:MM:SS), e.g. - * "23:59:59". - * - * @throws Error on a parse exception. - */ - this.parseTime = function(formattedTime) { - - if (typeof formattedTime != "string") - throw "Parse error: Argument must be a string"; - - var dt = this._extractTokens(this.lc.t_fmt, formattedTime); - - var timeDefined = false; - - if (dt.hour !== null && dt.minute !== null && dt.second !== null) { - timeDefined = true; - } - else if (dt.hourAmPm !== null && dt.am !== null && dt.minute !== null && dt.second !== null) { - if (dt.am) { - // AM [12(midnight), 1 .. 11] - if (dt.hourAmPm == 12) - dt.hour = 0; - else - dt.hour = parseInt(dt.hourAmPm, 10); - } - else { - // PM [12(noon), 1 .. 11] - if (dt.hourAmPm == 12) - dt.hour = 12; - else - dt.hour = parseInt(dt.hourAmPm, 10) + 12; - } - timeDefined = true; - } - - if (timeDefined) - return jsworld._zeroPad(dt.hour, 2) + - ":" + - jsworld._zeroPad(dt.minute, 2) + - ":" + - jsworld._zeroPad(dt.second, 2); - else - throw "Parse error: Invalid/ambiguous time string"; - }; - - - /** - * @public - * - * @description Parses a date string formatted according to the - * POSIX LC_TIME d_fmt property of the preset locale. - * - * @param {String} formattedDate The formatted date, must be valid. - * - * @returns {String} The parsed date in ISO-8601 format (YYYY-MM-DD), - * e.g. "2010-03-31". - * - * @throws Error on a parse exception. - */ - this.parseDate = function(formattedDate) { - - if (typeof formattedDate != "string") - throw "Parse error: Argument must be a string"; - - var dt = this._extractTokens(this.lc.d_fmt, formattedDate); - - var dateDefined = false; - - if (dt.year !== null && dt.month !== null && dt.day !== null) { - dateDefined = true; - } - - if (dateDefined) - return jsworld._zeroPad(dt.year, 4) + - "-" + - jsworld._zeroPad(dt.month, 2) + - "-" + - jsworld._zeroPad(dt.day, 2); - else - throw "Parse error: Invalid date string"; - }; - - - /** - * @public - * - * @description Parses a date/time string formatted according to the - * POSIX LC_TIME d_t_fmt property of the preset locale. - * - * @param {String} formattedDateTime The formatted date/time, must be - * valid. - * - * @returns {String} The parsed date/time in ISO-8601 format - * (YYYY-MM-DD HH:MM:SS), e.g. "2010-03-31 23:59:59". - * - * @throws Error on a parse exception. - */ - this.parseDateTime = function(formattedDateTime) { - - if (typeof formattedDateTime != "string") - throw "Parse error: Argument must be a string"; - - var dt = this._extractTokens(this.lc.d_t_fmt, formattedDateTime); - - var timeDefined = false; - var dateDefined = false; - - if (dt.hour !== null && dt.minute !== null && dt.second !== null) { - timeDefined = true; - } - else if (dt.hourAmPm !== null && dt.am !== null && dt.minute !== null && dt.second !== null) { - if (dt.am) { - // AM [12(midnight), 1 .. 11] - if (dt.hourAmPm == 12) - dt.hour = 0; - else - dt.hour = parseInt(dt.hourAmPm, 10); - } - else { - // PM [12(noon), 1 .. 11] - if (dt.hourAmPm == 12) - dt.hour = 12; - else - dt.hour = parseInt(dt.hourAmPm, 10) + 12; - } - timeDefined = true; - } - - if (dt.year !== null && dt.month !== null && dt.day !== null) { - dateDefined = true; - } - - if (dateDefined && timeDefined) - return jsworld._zeroPad(dt.year, 4) + - "-" + - jsworld._zeroPad(dt.month, 2) + - "-" + - jsworld._zeroPad(dt.day, 2) + - " " + - jsworld._zeroPad(dt.hour, 2) + - ":" + - jsworld._zeroPad(dt.minute, 2) + - ":" + - jsworld._zeroPad(dt.second, 2); - else - throw "Parse error: Invalid/ambiguous date/time string"; - }; - - - /** - * @private - * - * @description Parses a string according to the specified format - * specification. - * - * @param {String} fmtSpec The format specification, e.g. "%I:%M:%S %p". - * @param {String} s The string to parse. - * - * @returns {object} An object with set properties year, month, day, - * hour, minute and second if the corresponding values are - * found in the parsed string. - * - * @throws Error on a parse exception. - */ - this._extractTokens = function(fmtSpec, s) { - - // the return object containing the parsed date/time properties - var dt = { - // for date and date/time strings - "year" : null, - "month" : null, - "day" : null, - - // for time and date/time strings - "hour" : null, - "hourAmPm" : null, - "am" : null, - "minute" : null, - "second" : null, - - // used internally only - "weekday" : null - }; - - - // extract and process each token in the date/time spec - while (fmtSpec.length > 0) { - - // Do we have a valid "%\w" placeholder in stream? - if (fmtSpec.charAt(0) == "%" && fmtSpec.charAt(1) != "") { - - // get placeholder - var placeholder = fmtSpec.substring(0,2); - - if (placeholder == "%%") { - // escaped '%'' - s = s.substring(1); - } - else if (placeholder == "%a") { - // abbreviated weekday name - for (var i = 0; i < this.lc.abday.length; i++) { - - if (jsworld._stringStartsWith(s, this.lc.abday[i])) { - dt.weekday = i; - s = s.substring(this.lc.abday[i].length); - break; - } - } - - if (dt.weekday === null) - throw "Parse error: Unrecognised abbreviated weekday name (%a)"; - } - else if (placeholder == "%A") { - // weekday name - for (var i = 0; i < this.lc.day.length; i++) { - - if (jsworld._stringStartsWith(s, this.lc.day[i])) { - dt.weekday = i; - s = s.substring(this.lc.day[i].length); - break; - } - } - - if (dt.weekday === null) - throw "Parse error: Unrecognised weekday name (%A)"; - } - else if (placeholder == "%b" || placeholder == "%h") { - // abbreviated month name - for (var i = 0; i < this.lc.abmon.length; i++) { - - if (jsworld._stringStartsWith(s, this.lc.abmon[i])) { - dt.month = i + 1; - s = s.substring(this.lc.abmon[i].length); - break; - } - } - - if (dt.month === null) - throw "Parse error: Unrecognised abbreviated month name (%b)"; - } - else if (placeholder == "%B") { - // month name - for (var i = 0; i < this.lc.mon.length; i++) { - - if (jsworld._stringStartsWith(s, this.lc.mon[i])) { - dt.month = i + 1; - s = s.substring(this.lc.mon[i].length); - break; - } - } - - if (dt.month === null) - throw "Parse error: Unrecognised month name (%B)"; - } - else if (placeholder == "%d") { - // day of the month [01..31] - if (/^0[1-9]|[1-2][0-9]|3[0-1]/.test(s)) { - dt.day = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised day of the month (%d)"; - } - else if (placeholder == "%e") { - // day of the month [1..31] - - // Note: if %e is leading in fmt string -> space padded! - - var day = s.match(/^\s?(\d{1,2})/); - dt.day = parseInt(day, 10); - - if (isNaN(dt.day) || dt.day < 1 || dt.day > 31) - throw "Parse error: Unrecognised day of the month (%e)"; - - s = s.substring(day.length); - } - else if (placeholder == "%F") { - // equivalent to %Y-%m-%d (ISO-8601 date format) - - // year [nnnn] - if (/^\d\d\d\d/.test(s)) { - dt.year = parseInt(s.substring(0,4), 10); - s = s.substring(4); - } - else { - throw "Parse error: Unrecognised date (%F)"; - } - - // - - if (jsworld._stringStartsWith(s, "-")) - s = s.substring(1); - else - throw "Parse error: Unrecognised date (%F)"; - - // month [01..12] - if (/^0[1-9]|1[0-2]/.test(s)) { - dt.month = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised date (%F)"; - - // - - if (jsworld._stringStartsWith(s, "-")) - s = s.substring(1); - else - throw "Parse error: Unrecognised date (%F)"; - - // day of the month [01..31] - if (/^0[1-9]|[1-2][0-9]|3[0-1]/.test(s)) { - dt.day = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised date (%F)"; - } - else if (placeholder == "%H") { - // hour [00..23] - if (/^[0-1][0-9]|2[0-3]/.test(s)) { - dt.hour = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised hour (%H)"; - } - else if (placeholder == "%I") { - // hour [01..12] - if (/^0[1-9]|1[0-2]/.test(s)) { - dt.hourAmPm = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised hour (%I)"; - } - else if (placeholder == "%k") { - // hour [0..23] - var h = s.match(/^(\d{1,2})/); - dt.hour = parseInt(h, 10); - - if (isNaN(dt.hour) || dt.hour < 0 || dt.hour > 23) - throw "Parse error: Unrecognised hour (%k)"; - - s = s.substring(h.length); - } - else if (placeholder == "%l") { - // hour AM/PM [1..12] - var h = s.match(/^(\d{1,2})/); - dt.hourAmPm = parseInt(h, 10); - - if (isNaN(dt.hourAmPm) || dt.hourAmPm < 1 || dt.hourAmPm > 12) - throw "Parse error: Unrecognised hour (%l)"; - - s = s.substring(h.length); - } - else if (placeholder == "%m") { - // month [01..12] - if (/^0[1-9]|1[0-2]/.test(s)) { - dt.month = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised month (%m)"; - } - else if (placeholder == "%M") { - // minute [00..59] - if (/^[0-5][0-9]/.test(s)) { - dt.minute = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised minute (%M)"; - } - else if (placeholder == "%n") { - // new line - - if (s.charAt(0) == "\n") - s = s.substring(1); - else - throw "Parse error: Unrecognised new line (%n)"; - } - else if (placeholder == "%p") { - // locale's equivalent of AM/PM - if (jsworld._stringStartsWith(s, this.lc.am)) { - dt.am = true; - s = s.substring(this.lc.am.length); - } - else if (jsworld._stringStartsWith(s, this.lc.pm)) { - dt.am = false; - s = s.substring(this.lc.pm.length); - } - else - throw "Parse error: Unrecognised AM/PM value (%p)"; - } - else if (placeholder == "%P") { - // same as %p but forced lower case - if (jsworld._stringStartsWith(s, this.lc.am.toLowerCase())) { - dt.am = true; - s = s.substring(this.lc.am.length); - } - else if (jsworld._stringStartsWith(s, this.lc.pm.toLowerCase())) { - dt.am = false; - s = s.substring(this.lc.pm.length); - } - else - throw "Parse error: Unrecognised AM/PM value (%P)"; - } - else if (placeholder == "%R") { - // same as %H:%M - - // hour [00..23] - if (/^[0-1][0-9]|2[0-3]/.test(s)) { - dt.hour = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised time (%R)"; - - // : - if (jsworld._stringStartsWith(s, ":")) - s = s.substring(1); - else - throw "Parse error: Unrecognised time (%R)"; - - // minute [00..59] - if (/^[0-5][0-9]/.test(s)) { - dt.minute = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised time (%R)"; - - } - else if (placeholder == "%S") { - // second [00..59] - if (/^[0-5][0-9]/.test(s)) { - dt.second = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised second (%S)"; - } - else if (placeholder == "%T") { - // same as %H:%M:%S - - // hour [00..23] - if (/^[0-1][0-9]|2[0-3]/.test(s)) { - dt.hour = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised time (%T)"; - - // : - if (jsworld._stringStartsWith(s, ":")) - s = s.substring(1); - else - throw "Parse error: Unrecognised time (%T)"; - - // minute [00..59] - if (/^[0-5][0-9]/.test(s)) { - dt.minute = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised time (%T)"; - - // : - if (jsworld._stringStartsWith(s, ":")) - s = s.substring(1); - else - throw "Parse error: Unrecognised time (%T)"; - - // second [00..59] - if (/^[0-5][0-9]/.test(s)) { - dt.second = parseInt(s.substring(0,2), 10); - s = s.substring(2); - } - else - throw "Parse error: Unrecognised time (%T)"; - } - else if (placeholder == "%w") { - // weekday [0..6] - if (/^\d/.test(s)) { - dt.weekday = parseInt(s.substring(0,1), 10); - s = s.substring(1); - } - else - throw "Parse error: Unrecognised weekday number (%w)"; - } - else if (placeholder == "%y") { - // year [00..99] - if (/^\d\d/.test(s)) { - var year2digits = parseInt(s.substring(0,2), 10); - - // this conversion to year[nnnn] is arbitrary!!! - if (year2digits > 50) - dt.year = 1900 + year2digits; - else - dt.year = 2000 + year2digits; - - s = s.substring(2); - } - else - throw "Parse error: Unrecognised year (%y)"; - } - else if (placeholder == "%Y") { - // year [nnnn] - if (/^\d\d\d\d/.test(s)) { - dt.year = parseInt(s.substring(0,4), 10); - s = s.substring(4); - } - else - throw "Parse error: Unrecognised year (%Y)"; - } - - else if (placeholder == "%Z") { - // time-zone place holder is not supported - - if (fmtSpec.length === 0) - break; // ignore rest of fmt spec - } - - // remove the spec placeholder that was just parsed - fmtSpec = fmtSpec.substring(2); - } - else { - // If we don't have a placeholder, the chars - // at pos. 0 of format spec and parsed string must match - - // Note: Space chars treated 1:1 ! - - if (fmtSpec.charAt(0) != s.charAt(0)) - throw "Parse error: Unexpected symbol \"" + s.charAt(0) + "\" in date/time string"; - - fmtSpec = fmtSpec.substring(1); - s = s.substring(1); - } - } - - // parsing finished, return composite date/time object - return dt; - }; -}; - - -/** - * @class - * Class for parsing localised currency amount strings. - * - * @public - * @constructor - * @description Creates a new monetary parser for the specified locale. - * - * @param {jsworld.Locale} locale A locale object specifying the required - * POSIX LC_MONETARY formatting properties. - * - * @throws Error on constructor failure. - */ -jsworld.MonetaryParser = function(locale) { - - if (typeof locale != "object" || locale._className != "jsworld.Locale") - throw "Constructor error: You must provide a valid jsworld.Locale instance"; - - - this.lc = locale; - - - /** - * @public - * - * @description Parses a currency amount string formatted according to - * the preset locale. Leading and trailing whitespace is ignored; the - * amount may also be formatted without thousands separators. Both - * the local (shorthand) symbol and the ISO 4217 code are accepted to - * designate the currency in the formatted amount. - * - * @param {String} formattedCurrency The formatted currency amount. - * - * @returns {Number} The parsed amount. - * - * @throws Error on a parse exception. - */ - this.parse = function(formattedCurrency) { - - if (typeof formattedCurrency != "string") - throw "Parse error: Argument must be a string"; - - // Detect the format type and remove the currency symbol - var symbolType = this._detectCurrencySymbolType(formattedCurrency); - - var formatType, s; - - if (symbolType == "local") { - formatType = "local"; - s = formattedCurrency.replace(this.lc.getCurrencySymbol(), ""); - } - else if (symbolType == "int") { - formatType = "int"; - s = formattedCurrency.replace(this.lc.getIntCurrencySymbol(), ""); - } - else if (symbolType == "none") { - formatType = "local"; // assume local - s = formattedCurrency; - } - else - throw "Parse error: Internal assert failure"; - - // Remove any thousands separators - s = jsworld._stringReplaceAll(s, this.lc.mon_thousands_sep, ""); - - // Replace any local radix char with JavaScript's "." - s = s.replace(this.lc.mon_decimal_point, "."); - - // Remove all whitespaces - s = s.replace(/\s*/g, ""); - - // Remove any local non-negative sign - s = this._removeLocalNonNegativeSign(s, formatType); - - // Replace any local minus sign with JavaScript's "-" and put - // it in front of the amount if necessary - // (special parentheses rule checked too) - s = this._normaliseNegativeSign(s, formatType); - - // Finally, we should be left with a bare parsable decimal number - if (jsworld._isNumber(s)) - return parseFloat(s, 10); - else - throw "Parse error: Invalid currency amount string"; - }; - - - /** - * @private - * - * @description Tries to detect the symbol type used in the specified - * formatted currency string: local(shorthand), - * international (ISO-4217 code) or none. - * - * @param {String} formattedCurrency The the formatted currency string. - * - * @return {String} With possible values "local", "int" or "none". - */ - this._detectCurrencySymbolType = function(formattedCurrency) { - - // Check for whichever sign (int/local) is longer first - // to cover cases such as MOP/MOP$ and ZAR/R - - if (this.lc.getCurrencySymbol().length > this.lc.getIntCurrencySymbol().length) { - - if (formattedCurrency.indexOf(this.lc.getCurrencySymbol()) != -1) - return "local"; - else if (formattedCurrency.indexOf(this.lc.getIntCurrencySymbol()) != -1) - return "int"; - else - return "none"; - } - else { - if (formattedCurrency.indexOf(this.lc.getIntCurrencySymbol()) != -1) - return "int"; - else if (formattedCurrency.indexOf(this.lc.getCurrencySymbol()) != -1) - return "local"; - else - return "none"; - } - }; - - - /** - * @private - * - * @description Removes a local non-negative sign in a formatted - * currency string if it is found. This is done according to the - * locale properties p_sign_posn and int_p_sign_posn. - * - * @param {String} s The input string. - * @param {String} formatType With possible values "local" or "int". - * - * @returns {String} The processed string. - */ - this._removeLocalNonNegativeSign = function(s, formatType) { - - s = s.replace(this.lc.positive_sign, ""); - - // check for enclosing parentheses rule - if (((formatType == "local" && this.lc.p_sign_posn === 0) || - (formatType == "int" && this.lc.int_p_sign_posn === 0) ) && - /\(\d+\.?\d*\)/.test(s)) { - s = s.replace("(", ""); - s = s.replace(")", ""); - } - - return s; - }; - - - /** - * @private - * - * @description Replaces a local negative sign with the standard - * JavaScript minus ("-") sign placed in the correct position - * (preceding the amount). This is done according to the locale - * properties for negative sign symbol and relative position. - * - * @param {String} s The input string. - * @param {String} formatType With possible values "local" or "int". - * - * @returns {String} The processed string. - */ - this._normaliseNegativeSign = function(s, formatType) { - - // replace local negative symbol with JavaScript's "-" - s = s.replace(this.lc.negative_sign, "-"); - - // check for enclosing parentheses rule and replace them - // with negative sign before the amount - if ((formatType == "local" && this.lc.n_sign_posn === 0) || - (formatType == "int" && this.lc.int_n_sign_posn === 0) ) { - - if (/^\(\d+\.?\d*\)$/.test(s)) { - - s = s.replace("(", ""); - s = s.replace(")", ""); - return "-" + s; - } - } - - // check for rule negative sign succeeding the amount - if (formatType == "local" && this.lc.n_sign_posn == 2 || - formatType == "int" && this.lc.int_n_sign_posn == 2 ) { - - if (/^\d+\.?\d*-$/.test(s)) { - s = s.replace("-", ""); - return "-" + s; - } - } - - // check for rule cur. sym. succeeds and sign adjacent - if (formatType == "local" && this.lc.n_cs_precedes === 0 && this.lc.n_sign_posn == 3 || - formatType == "local" && this.lc.n_cs_precedes === 0 && this.lc.n_sign_posn == 4 || - formatType == "int" && this.lc.int_n_cs_precedes === 0 && this.lc.int_n_sign_posn == 3 || - formatType == "int" && this.lc.int_n_cs_precedes === 0 && this.lc.int_n_sign_posn == 4 ) { - - if (/^\d+\.?\d*-$/.test(s)) { - s = s.replace("-", ""); - return "-" + s; - } - } - - return s; - }; -}; - -// end-of-file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs2.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs2.js deleted file mode 100644 index 4e9f9672..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/tmp/uglify-hangs2.js +++ /dev/null @@ -1,166 +0,0 @@ -jsworld.Locale = function(properties) { - - // LC_NUMERIC - - - this.frac_digits = properties.frac_digits; - - - // may be empty string/null for currencies with no fractional part - if (properties.mon_decimal_point === null || properties.mon_decimal_point == "") { - - if (this.frac_digits > 0) - throw "Error: Undefined mon_decimal_point property"; - else - properties.mon_decimal_point = ""; - } - - if (typeof properties.mon_decimal_point != "string") - throw "Error: Invalid/missing mon_decimal_point property"; - - this.mon_decimal_point = properties.mon_decimal_point; - - - if (typeof properties.mon_thousands_sep != "string") - throw "Error: Invalid/missing mon_thousands_sep property"; - - this.mon_thousands_sep = properties.mon_thousands_sep; - - - if (typeof properties.mon_grouping != "string") - throw "Error: Invalid/missing mon_grouping property"; - - this.mon_grouping = properties.mon_grouping; - - - if (typeof properties.positive_sign != "string") - throw "Error: Invalid/missing positive_sign property"; - - this.positive_sign = properties.positive_sign; - - - if (typeof properties.negative_sign != "string") - throw "Error: Invalid/missing negative_sign property"; - - this.negative_sign = properties.negative_sign; - - - if (properties.p_cs_precedes !== 0 && properties.p_cs_precedes !== 1) - throw "Error: Invalid/missing p_cs_precedes property, must be 0 or 1"; - - this.p_cs_precedes = properties.p_cs_precedes; - - - if (properties.n_cs_precedes !== 0 && properties.n_cs_precedes !== 1) - throw "Error: Invalid/missing n_cs_precedes, must be 0 or 1"; - - this.n_cs_precedes = properties.n_cs_precedes; - - - if (properties.p_sep_by_space !== 0 && - properties.p_sep_by_space !== 1 && - properties.p_sep_by_space !== 2) - throw "Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2"; - - this.p_sep_by_space = properties.p_sep_by_space; - - - if (properties.n_sep_by_space !== 0 && - properties.n_sep_by_space !== 1 && - properties.n_sep_by_space !== 2) - throw "Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2"; - - this.n_sep_by_space = properties.n_sep_by_space; - - - if (properties.p_sign_posn !== 0 && - properties.p_sign_posn !== 1 && - properties.p_sign_posn !== 2 && - properties.p_sign_posn !== 3 && - properties.p_sign_posn !== 4) - throw "Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.p_sign_posn = properties.p_sign_posn; - - - if (properties.n_sign_posn !== 0 && - properties.n_sign_posn !== 1 && - properties.n_sign_posn !== 2 && - properties.n_sign_posn !== 3 && - properties.n_sign_posn !== 4) - throw "Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.n_sign_posn = properties.n_sign_posn; - - - if (typeof properties.int_frac_digits != "number" && properties.int_frac_digits < 0) - throw "Error: Invalid/missing int_frac_digits property"; - - this.int_frac_digits = properties.int_frac_digits; - - - if (properties.int_p_cs_precedes !== 0 && properties.int_p_cs_precedes !== 1) - throw "Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1"; - - this.int_p_cs_precedes = properties.int_p_cs_precedes; - - - if (properties.int_n_cs_precedes !== 0 && properties.int_n_cs_precedes !== 1) - throw "Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1"; - - this.int_n_cs_precedes = properties.int_n_cs_precedes; - - - if (properties.int_p_sep_by_space !== 0 && - properties.int_p_sep_by_space !== 1 && - properties.int_p_sep_by_space !== 2) - throw "Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2"; - - this.int_p_sep_by_space = properties.int_p_sep_by_space; - - - if (properties.int_n_sep_by_space !== 0 && - properties.int_n_sep_by_space !== 1 && - properties.int_n_sep_by_space !== 2) - throw "Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2"; - - this.int_n_sep_by_space = properties.int_n_sep_by_space; - - - if (properties.int_p_sign_posn !== 0 && - properties.int_p_sign_posn !== 1 && - properties.int_p_sign_posn !== 2 && - properties.int_p_sign_posn !== 3 && - properties.int_p_sign_posn !== 4) - throw "Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.int_p_sign_posn = properties.int_p_sign_posn; - - - if (properties.int_n_sign_posn !== 0 && - properties.int_n_sign_posn !== 1 && - properties.int_n_sign_posn !== 2 && - properties.int_n_sign_posn !== 3 && - properties.int_n_sign_posn !== 4) - throw "Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4"; - - this.int_n_sign_posn = properties.int_n_sign_posn; - - - // LC_TIME - - if (properties == null || typeof properties != "object") - throw "Error: Invalid/missing time locale properties"; - - - // parse the supported POSIX LC_TIME properties - - // abday - try { - this.abday = this._parseList(properties.abday, 7); - } - catch (error) { - throw "Error: Invalid abday property: " + error; - } - -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/uglify-js.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/uglify-js.js deleted file mode 100644 index 4305e232..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/uglify-js.js +++ /dev/null @@ -1,17 +0,0 @@ -//convienence function(src, [options]); -function uglify(orig_code, options){ - options || (options = {}); - var jsp = uglify.parser; - var pro = uglify.uglify; - - var ast = jsp.parse(orig_code, options.strict_semicolons); // parse code and get the initial AST - ast = pro.ast_mangle(ast, options.mangle_options); // get a new AST with mangled names - ast = pro.ast_squeeze(ast, options.squeeze_options); // get an AST with compression optimizations - var final_code = pro.gen_code(ast, options.gen_options); // compressed code here - return final_code; -}; - -uglify.parser = require("./lib/parse-js"); -uglify.uglify = require("./lib/process"); - -module.exports = uglify \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.npmignore deleted file mode 100644 index 1eba800f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.npmignore +++ /dev/null @@ -1,11 +0,0 @@ -npm-debug.log -node_modules -.*.swp -.lock-* -build - -bench -doc -examples -test - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.travis.yml deleted file mode 100644 index 97358668..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -npm_args: --ws:native -node_js: - - "0.8" - - "0.10" diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/History.md deleted file mode 100644 index 63cf0ea6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/History.md +++ /dev/null @@ -1,312 +0,0 @@ -v0.4.31 - September 23th, 2013 -===================== - -* Component support - -v0.4.30 - August 30th, 2013 -===================== - -* BufferedAmount could be undefined, default to 0 [TooTallNate] -* Support protocols as second argument and options as third [TooTallNate] -* Proper browserify shim [mcollina] -* Broadcasting example in README [stefanocudini] - -v0.4.29 - August 23th, 2013 -===================== -* Small clean up of the Node 0.11 support by using NAN from the NPM registry [kkoopa] -* Support for custom `Agent`'s through the options. [gramakri] & [TooTallNate] -* Support for custom headers through the options [3rd-Eden] -* Added a `gypfile` flag to the package.json for compiled module discovery [wolfeidau] - -v0.4.28 - August 16th, 2013 -===================== -* Node 0.11 support. [kkoopa] -* Authorization headers are sent when basic auth is used in the url [jcrugzz] -* Origin header will now include the port number [Jason Plum] -* Race condition fixed where data was received before the readyState was updated. [saschagehlich] - -v0.4.27 - June 27th, 2013 -===================== -* Frames are no longer masked in `wscat`. [slaskis] -* Don't retrain reference to large slab buffers. [jmatthewsr-msi] -* Don't use Buffer.byteLength for ArrayBuffer's. [Anthony Pesch] -* Fix browser field in package.json. [shtylman] -* Client-side certificate support & documentation improvements. [Lukas Berns] -* WebSocket readyState's is added to the prototype for spec compatiblity. [BallBearing] -* Use Object.defineProperty. [arlolra] -* Autodetect ArrayBuffers as binary when sending. [BallBearing] -* Check instanceof Buffer for binary data. [arlolra] -* Emit the close event before destroying the internal socket. [3rd-Eden] -* Don't setup multiply timeouts for one connection. [AndreasMadsen] -* Allow support for binding to ethereal port. [wpreul] -* Fix broken terminate reference. [3rd-Eden] -* Misc node 0.10 test fixes and documentation improvements. [3rd-Eden] -* Ensure ssl options are propagated to request. [einaros] -* Add 'Host' and 'Origin' to request header. [Lars-Magnus Skog] -* Subprotocol support. [kanaka] -* Honor ArrayBufferView's byteOffset when sending. [Anthony Pesch] -* Added target attribute for events. [arlolra] - -v0.4.26 - Skipped -===================== - -v0.4.25 - December 17th, 2012 -===================== -* Removed install.js. [shtylman] -* Added browser field to package.json. [shtylman] -* Support overwriting host header. [Raynos] -* Emit 'listening' also with custom http server. [sebiq] - -v0.4.24 - December 6th, 2012 -===================== -* Yet another intermediate release, to not delay minor features any longer. -* Native support installation issues further circumvented. [einaros] - -v0.4.23 - November 19th, 2012 -===================== -* Service release - last before major upgrade. -* Changes default host from 127.0.0.1 to 0.0.0.0. [einaros] - -v0.4.22 - October 3rd, 2012 -===================== -* clear failsafe cleanup timeout once cleanup is called [AndreasMadsen] -* added w3c compatible CloseEvent for onclose / addEventListener("close", ...). [einaros] -* fix the sub protocol header handler [sonnyp] -* fix unhandled exception if socket closes and 'error' is emitted [jmatthewsr-ms] - -v0.4.21 - July 14th, 2012 -===================== -* Emit error if server reponds with anything other than status code 101. [einaros] -* Added 'headers' event to server. [rauchg] -* path.exists moved to fs.exists. [blakmatrix] - -v0.4.20 - June 26th, 2012 -===================== -* node v0.8.0 compatibility release. - -v0.4.19 - June 19th, 2012 -===================== -* Change sender to merge buffers for relatively small payloads, may improve perf in some cases [einaros] -* Avoid EventEmitter for Receiver classes. As above this may improve perf. [einaros] -* Renamed fallback files from the somewhat misleading '*Windows'. [einaros] - -v0.4.18 - June 14th 2012 -===================== -* Fixed incorrect md5 digest encoding in Hixie handshake [nicokaiser] -* Added example of use with Express 3 [einaros] -* Change installation procedure to not require --ws:native to build native extensions. They will now build if a compiler is available. [einaros] - -v0.4.17 - June 13th 2012 -===================== -* Improve error handling during connection handshaking [einaros] -* Ensure that errors are caught also after connection teardown [nicokaiser] -* Update 'mocha' version to 1.1.0. [einaros] -* Stop showing 'undefined' for some error logs. [tricknotes] -* Update 'should' version to 0.6.3 [tricknotes] - -v0.4.16 - June 1st 2012 -===================== -* Build fix for Windows. [einaros] - -v0.4.15 - May 20th 2012 -===================== -* Enable fauxe streaming for hixie tansport. [einaros] -* Allow hixie sender to deal with buffers. [einaros/pigne] -* Allow error code 1011. [einaros] -* Fix framing for empty packets (empty pings and pongs might break). [einaros] -* Improve error and close handling, to avoid connections lingering in CLOSING state. [einaros] - -v0.4.14 - Apr 30th 2012 -===================== -* use node-gyp instead of node-waf [TooTallNate] -* remove old windows compatibility makefile, and silently fall back to native modules [einaros] -* ensure connection status [nicokaiser] -* websocket client updated to use port 443 by default for wss:// connections [einaros] -* support unix sockets [kschzt] - -v0.4.13 - Apr 12th 2012 -===================== - -* circumvent node 0.6+ related memory leak caused by Object.defineProperty [nicokaiser] -* improved error handling, improving stability in massive load use cases [nicokaiser] - -v0.4.12 - Mar 30th 2012 -===================== - -* various memory leak / possible memory leak cleanups [einaros] -* api documentation [nicokaiser] -* add option to disable client tracking [nicokaiser] - -v0.4.11 - Mar 24th 2012 -===================== - -* node v0.7 compatibillity release -* gyp support [TooTallNate] -* commander dependency update [jwueller] -* loadbalancer support [nicokaiser] - -v0.4.10 - Mar 22th 2012 -===================== - -* Final hixie close frame fixes. [nicokaiser] - -v0.4.9 - Mar 21st 2012 -===================== - -* Various hixie bugfixes (such as proper close frame handling). [einaros] - -v0.4.8 - Feb 29th 2012 -===================== - -* Allow verifyClient to run asynchronously [karlsequin] -* Various bugfixes and cleanups. [einaros] - -v0.4.7 - Feb 21st 2012 -===================== - -* Exposed bytesReceived from websocket client object, which makes it possible to implement bandwidth sampling. [einaros] -* Updated browser based file upload example to include and output per websocket channel bandwidth sampling. [einaros] -* Changed build scripts to check which architecture is currently in use. Required after the node.js changes to have prebuilt packages target ia32 by default. [einaros] - -v0.4.6 - Feb 9th 2012 -===================== - -* Added browser based file upload example. [einaros] -* Added server-to-browser status push example. [einaros] -* Exposed pause() and resume() on WebSocket object, to enable client stream shaping. [einaros] - -v0.4.5 - Feb 7th 2012 -===================== - -* Corrected regression bug in handling of connections with the initial frame delivered across both http upgrade head and a standalone packet. This would lead to a race condition, which in some cases could cause message corruption. [einaros] - -v0.4.4 - Feb 6th 2012 -===================== - -* Pass original request object to verifyClient, for cookie or authentication verifications. [einaros] -* Implemented addEventListener and slightly improved the emulation API by adding a MessageEvent with a readonly data attribute. [aslakhellesoy] -* Rewrite parts of hybi receiver to avoid stack overflows for large amounts of packets bundled in the same buffer / packet. [einaros] - -v0.4.3 - Feb 4th 2012 -===================== - -* Prioritized update: Corrected issue which would cause sockets to stay open longer than necessary, and resource leakage because of this. [einaros] - -v0.4.2 - Feb 4th 2012 -===================== - -* Breaking change: WebSocketServer's verifyOrigin option has been renamed to verifyClient. [einaros] -* verifyClient now receives { origin: 'origin header', secure: true/false }, where 'secure' will be true for ssl connections. [einaros] -* Split benchmark, in preparation for more thorough case. [einaros] -* Introduced hixie-76 draft support for server, since Safari (iPhone / iPad / OS X) and Opera still aren't updated to use Hybi. [einaros] -* Expose 'supports' object from WebSocket, to indicate e.g. the underlying transport's support for binary data. [einaros] -* Test and code cleanups. [einaros] - -v0.4.1 - Jan 25th 2012 -===================== - -* Use readline in wscat [tricknotes] -* Refactor _state away, in favor of the new _readyState [tricknotes] -* travis-ci integration [einaros] -* Fixed race condition in testsuite, causing a few tests to fail (without actually indicating errors) on travis [einaros] -* Expose pong event [paddybyers] -* Enabled running of WebSocketServer in noServer-mode, meaning that upgrades are passed in manually. [einaros] -* Reworked connection procedure for WebSocketServer, and cleaned up tests. [einaros] - -v0.4.0 - Jan 2nd 2012 -===================== - -* Windows compatibility [einaros] -* Windows compatible test script [einaros] - -v0.3.9 - Jan 1st 2012 -====================== - -* Improved protocol framing performance [einaros] -* WSS support [kazuyukitanimura] -* WSS tests [einaros] -* readyState exposed [justinlatimer, tricknotes] -* url property exposed [justinlatimer] -* Removed old 'state' property [einaros] -* Test cleanups [einaros] - -v0.3.8 - Dec 27th 2011 -====================== - -* Made it possible to listen on specific paths, which is especially good to have for precreated http servers [einaros] -* Extensive WebSocket / WebSocketServer cleanup, including changing all internal properties to unconfigurable, unenumerable properties [einaros] -* Receiver modifications to ensure even better performance with fragmented sends [einaros] -* Fixed issue in sender.js, which would cause SlowBuffer instances (such as returned from the crypto library's randomBytes) to be copied (and thus be dead slow) [einaros] -* Removed redundant buffer copy in sender.js, which should improve server performance [einaros] - -v0.3.7 - Dec 25nd 2011 -====================== - -* Added a browser based API which uses EventEmitters internally [3rd-Eden] -* Expose request information from upgrade event for websocket server clients [mmalecki] - -v0.3.6 - Dec 19th 2011 -====================== - -* Added option to let WebSocket.Server use an already existing http server [mmalecki] -* Migrating various option structures to use options.js module [einaros] -* Added a few more tests, options and handshake verifications to ensure that faulty connections are dealt with [einaros] -* Code cleanups in Sender and Receiver, to ensure even faster parsing [einaros] - -v0.3.5 - Dec 13th 2011 -====================== - -* Optimized Sender.js, Receiver.js and bufferutil.cc: - * Apply loop-unrolling-like small block copies rather than use node.js Buffer#copy() (which is slow). - * Mask blocks of data using combination of 32bit xor and loop-unrolling, instead of single bytes. - * Keep pre-made send buffer for small transfers. -* Leak fixes and code cleanups. - -v0.3.3 - Dec 12th 2011 -====================== - -* Compile fix for Linux. -* Rewrote parts of WebSocket.js, to avoid try/catch and thus avoid optimizer bailouts. - -v0.3.2 - Dec 11th 2011 -====================== - -* Further performance updates, including the additions of a native BufferUtil module, which deals with several of the cpu intensive WebSocket operations. - -v0.3.1 - Dec 8th 2011 -====================== - -* Service release, fixing broken tests. - -v0.3.0 - Dec 8th 2011 -====================== - -* Node.js v0.4.x compatibility. -* Code cleanups and efficiency improvements. -* WebSocket server added, although this will still mainly be a client library. -* WebSocket server certified to pass the Autobahn test suite. -* Protocol improvements and corrections - such as handling (redundant) masks for empty fragments. -* 'wscat' command line utility added, which can act as either client or server. - -v0.2.6 - Dec 3rd 2011 -====================== - -* Renamed to 'ws'. Big woop, right -- but easy-websocket really just doesn't cut it anymore! - -v0.2.5 - Dec 3rd 2011 -====================== - - * Rewrote much of the WebSocket parser, to ensure high speed for highly fragmented messages. - * Added a BufferPool, as a start to more efficiently deal with allocations for WebSocket connections. More work to come, in that area. - * Updated the Autobahn report, at http://einaros.github.com/easy-websocket, with comparisons against WebSocket-Node 1.0.2 and Chrome 16. - -v0.2.0 - Nov 25th 2011 -====================== - - * Major rework to make sure all the Autobahn test cases pass. Also updated the internal tests to cover more corner cases. - -v0.1.2 - Nov 14th 2011 -====================== - - * Back and forth, back and forth: now settled on keeping the api (event names, methods) closer to the websocket browser api. This will stick now. - * Started keeping this history record. Better late than never, right? diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/Makefile deleted file mode 100644 index 151aa2ba..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -ALL_TESTS = $(shell find test/ -name '*.test.js') -ALL_INTEGRATION = $(shell find test/ -name '*.integration.js') - -all: - node-gyp configure build - -clean: - node-gyp clean - -run-tests: - @./node_modules/.bin/mocha \ - -t 2000 \ - -s 2400 \ - $(TESTFLAGS) \ - $(TESTS) - -run-integrationtests: - @./node_modules/.bin/mocha \ - -t 5000 \ - -s 6000 \ - $(TESTFLAGS) \ - $(TESTS) - -test: - @$(MAKE) NODE_TLS_REJECT_UNAUTHORIZED=0 NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests - -integrationtest: - @$(MAKE) NODE_TLS_REJECT_UNAUTHORIZED=0 NODE_PATH=lib TESTS="$(ALL_INTEGRATION)" run-integrationtests - -benchmark: - @node bench/sender.benchmark.js - @node bench/parser.benchmark.js - -autobahn: - @NODE_PATH=lib node test/autobahn.js - -autobahn-server: - @NODE_PATH=lib node test/autobahn-server.js - -.PHONY: test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/README.md deleted file mode 100644 index cf1f1fb8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/README.md +++ /dev/null @@ -1,171 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/einaros/ws.png)](http://travis-ci.org/einaros/ws) - -# ws: a node.js websocket library # - -`ws` is a simple to use websocket implementation, up-to-date against RFC-6455, and [probably the fastest WebSocket library for node.js](http://web.archive.org/web/20130314230536/http://hobbycoding.posterous.com/the-fastest-websocket-module-for-nodejs). - -Passes the quite extensive Autobahn test suite. See http://einaros.github.com/ws for the full reports. - -Comes with a command line utility, `wscat`, which can either act as a server (--listen), or client (--connect); Use it to debug simple websocket services. - -## Protocol support ## - -* **Hixie draft 76** (Old and deprecated, but still in use by Safari and Opera. Added to ws version 0.4.2, but server only. Can be disabled by setting the `disableHixie` option to true.) -* **HyBi drafts 07-12** (Use the option `protocolVersion: 8`, or argument `-p 8` for wscat) -* **HyBi drafts 13-17** (Current default, alternatively option `protocolVersion: 13`, or argument `-p 13` for wscat) - -_See the echo.websocket.org example below for how to use the `protocolVersion` option._ - -## Usage ## - -### Installing ### - -`npm install ws` - -### Sending and receiving text data ### - -```js -var WebSocket = require('ws'); -var ws = new WebSocket('ws://www.host.com/path'); -ws.on('open', function() { - ws.send('something'); -}); -ws.on('message', function(data, flags) { - // flags.binary will be set if a binary data is received - // flags.masked will be set if the data was masked -}); -``` - -### Sending binary data ### - -```js -var WebSocket = require('ws'); -var ws = new WebSocket('ws://www.host.com/path'); -ws.on('open', function() { - var array = new Float32Array(5); - for (var i = 0; i < array.length; ++i) array[i] = i / 2; - ws.send(array, {binary: true, mask: true}); -}); -``` - -Setting `mask`, as done for the send options above, will cause the data to be masked according to the websocket protocol. The same option applies for text data. - -### Server example ### - -```js -var WebSocketServer = require('ws').Server - , wss = new WebSocketServer({port: 8080}); -wss.on('connection', function(ws) { - ws.on('message', function(message) { - console.log('received: %s', message); - }); - ws.send('something'); -}); -``` - -### Server sending broadcast data ### - -```js -var WebSocketServer = require('ws').Server - , wss = new WebSocketServer({port: 8080}); - -wss.broadcast = function(data) { - for(var i in this.clients) - this.clients[i].send(data); -}; -``` - -### Error handling best practices ### - -```js -// If the WebSocket is closed before the following send is attempted -ws.send('something'); - -// Errors (both immediate and async write errors) can be detected in an optional callback. -// The callback is also the only way of being notified that data has actually been sent. -ws.send('something', function(error) { - // if error is null, the send has been completed, - // otherwise the error object will indicate what failed. -}); - -// Immediate errors can also be handled with try/catch-blocks, but **note** -// that since sends are inherently asynchronous, socket write failures will *not* -// be captured when this technique is used. -try { - ws.send('something'); -} -catch (e) { - // handle error -} -``` - -### echo.websocket.org demo ### - -```js -var WebSocket = require('ws'); -var ws = new WebSocket('ws://echo.websocket.org/', {protocolVersion: 8, origin: 'http://websocket.org'}); -ws.on('open', function() { - console.log('connected'); - ws.send(Date.now().toString(), {mask: true}); -}); -ws.on('close', function() { - console.log('disconnected'); -}); -ws.on('message', function(data, flags) { - console.log('Roundtrip time: ' + (Date.now() - parseInt(data)) + 'ms', flags); - setTimeout(function() { - ws.send(Date.now().toString(), {mask: true}); - }, 500); -}); -``` - -### wscat against echo.websocket.org ### - - $ npm install -g ws - $ wscat -c ws://echo.websocket.org - connected (press CTRL+C to quit) - > hi there - < hi there - > are you a happy parrot? - < are you a happy parrot? - -### Other examples ### - -For a full example with a browser client communicating with a ws server, see the examples folder. - -Note that the usage together with Express 3.0 is quite different from Express 2.x. The difference is expressed in the two different serverstats-examples. - -Otherwise, see the test cases. - -### Running the tests ### - -`make test` - -## API Docs ## - -See the doc/ directory for Node.js-like docs for the ws classes. - -## License ## - -(The MIT License) - -Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/bin/wscat b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/bin/wscat deleted file mode 100755 index 7c66600d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/bin/wscat +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env node - -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var WebSocket = require('../') - , fs = require('fs') - , program = require('commander') - , util = require('util') - , events = require('events') - , readline = require('readline'); - -/** - * InputReader - processes console input - */ - -function Console() { - this.stdin = process.stdin; - this.stdout = process.stdout; - - this.readlineInterface = readline.createInterface(this.stdin, this.stdout); - - var self = this; - this.readlineInterface.on('line', function(data) { - self.emit('line', data); - }); - this.readlineInterface.on('close', function() { - self.emit('close'); - }); - - this._resetInput = function() { - self.clear(); - } -} -util.inherits(Console, events.EventEmitter); - -Console.Colors = { - Red: '\033[31m', - Green: '\033[32m', - Yellow: '\033[33m', - Blue: '\033[34m', - Default: '\033[39m' -}; - -Console.prototype.prompt = function() { - this.readlineInterface.prompt(); -} - -Console.prototype.print = function(msg, color) { - this.clear(); - color = color || Console.Colors.Default; - this.stdout.write(color + msg + Console.Colors.Default + '\n'); - this.prompt(); -} - -Console.prototype.clear = function() { - this.stdout.write('\033[2K\033[E'); -} - -Console.prototype.pause = function() { - this.stdin.on('keypress', this._resetInput); -} - -Console.prototype.resume = function() { - this.stdin.removeListener('keypress', this._resetInput); -} - -function appender(xs) { - xs = xs || []; - return function (x) { - xs.push(x); - return xs; - } -} - -function into(obj, kvals) { - kvals.forEach(function (kv) { - obj[kv[0]] = kv[1]; - }); - return obj; -} - -function splitOnce(sep, str) { // sep can be either String or RegExp - var tokens = str.split(sep); - return [tokens[0], str.replace(sep, '').substr(tokens[0].length)]; -} - -/** - * The actual application - */ - -var version = JSON.parse(fs.readFileSync(__dirname + '/../package.json', 'utf8')).version; -program - .version(version) - .usage('[options] ') - .option('-l, --listen ', 'listen on port') - .option('-c, --connect ', 'connect to a websocket server') - .option('-p, --protocol ', 'optional protocol version') - .option('-o, --origin ', 'optional origin') - .option('--host ', 'optional host') - .option('-s, --subprotocol ', 'optional subprotocol') - .option('-n, --no-check', 'Do not check for unauthorized certificates') - .option('-H, --header ', 'Set an HTTP header. Repeat to set multiple. (--connect only)', appender(), []) - .option('--auth ', 'Add basic HTTP authentication header. (--connect only)') - .parse(process.argv); - -if (program.listen && program.connect) { - console.error('\033[33merror: use either --listen or --connect\033[39m'); - process.exit(-1); -} -else if (program.listen) { - var wsConsole = new Console(); - wsConsole.pause(); - var options = {}; - if (program.protocol) options.protocolVersion = program.protocol; - if (program.origin) options.origin = program.origin; - if (program.subprotocol) options.protocol = program.subprotocol; - if (!program.check) options.rejectUnauthorized = program.check; - var ws = null; - var wss = new WebSocket.Server({port: program.listen}, function() { - wsConsole.print('listening on port ' + program.listen + ' (press CTRL+C to quit)', Console.Colors.Green); - wsConsole.clear(); - }); - wsConsole.on('close', function() { - if (ws) { - try { - ws.close(); - } - catch (e) {} - } - process.exit(0); - }); - wsConsole.on('line', function(data) { - if (ws) { - ws.send(data, {mask: false}); - wsConsole.prompt(); - } - }); - wss.on('connection', function(newClient) { - if (ws) { - // limit to one client - newClient.terminate(); - return; - }; - ws = newClient; - wsConsole.resume(); - wsConsole.prompt(); - wsConsole.print('client connected', Console.Colors.Green); - ws.on('close', function() { - wsConsole.print('disconnected', Console.Colors.Green); - wsConsole.clear(); - wsConsole.pause(); - ws = null; - }); - ws.on('error', function(code, description) { - wsConsole.print('error: ' + code + (description ? ' ' + description : ''), Console.Colors.Yellow); - }); - ws.on('message', function(data, flags) { - wsConsole.print('< ' + data, Console.Colors.Blue); - }); - }); - wss.on('error', function(error) { - wsConsole.print('error: ' + error.toString(), Console.Colors.Yellow); - process.exit(-1); - }); -} -else if (program.connect) { - var wsConsole = new Console(); - var options = {}; - if (program.protocol) options.protocolVersion = program.protocol; - if (program.origin) options.origin = program.origin; - if (program.subprotocol) options.protocol = program.subprotocol; - if (program.host) options.host = program.host; - if (!program.check) options.rejectUnauthorized = program.check; - var headers = into({}, (program.header || []).map(function (s) { - return splitOnce(':', s) - })); - if (program.auth) { - headers['Authorization'] = 'Basic ' + new Buffer(program.auth).toString('base64'); - } - options.headers = headers; - var ws = new WebSocket(program.connect, options); - ws.on('open', function() { - wsConsole.print('connected (press CTRL+C to quit)', Console.Colors.Green); - wsConsole.on('line', function(data) { - ws.send(data, {mask: true}); - wsConsole.prompt(); - }); - }); - ws.on('close', function() { - wsConsole.print('disconnected', Console.Colors.Green); - wsConsole.clear(); - process.exit(); - }); - ws.on('error', function(code, description) { - wsConsole.print('error: ' + code + (description ? ' ' + description : ''), Console.Colors.Yellow); - process.exit(-1); - }); - ws.on('message', function(data, flags) { - wsConsole.print('< ' + data, Console.Colors.Blue); - }); - wsConsole.on('close', function() { - if (ws) { - try { - ws.close(); - } - catch(e) {} - process.exit(); - } - }); -} -else { - console.error('\033[33merror: use either --listen or --connect\033[39m'); - process.exit(-1); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/binding.gyp b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/binding.gyp deleted file mode 100644 index 600f9d10..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/binding.gyp +++ /dev/null @@ -1,16 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'validation', - 'include_dirs': ["> $(depfile) -# Add extra rules as in (2). -# We remove slashes and replace spaces with new lines; -# remove blank lines; -# delete the first line and append a colon to the remaining lines. -sed -e 's|\\||' -e 'y| |\n|' $(depfile).raw |\ - grep -v '^$$' |\ - sed -e 1d -e 's|$$|:|' \ - >> $(depfile) -rm $(depfile).raw -endef - -# Command definitions: -# - cmd_foo is the actual command to run; -# - quiet_cmd_foo is the brief-output summary of the command. - -quiet_cmd_cc = CC($(TOOLSET)) $@ -cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $@ $< - -quiet_cmd_cxx = CXX($(TOOLSET)) $@ -cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< - -quiet_cmd_objc = CXX($(TOOLSET)) $@ -cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< - -quiet_cmd_objcxx = CXX($(TOOLSET)) $@ -cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< - -# Commands for precompiled header files. -quiet_cmd_pch_c = CXX($(TOOLSET)) $@ -cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< -quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ -cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) -c -o $@ $< -quiet_cmd_pch_m = CXX($(TOOLSET)) $@ -cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< -quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ -cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< - -# gyp-mac-tool is written next to the root Makefile by gyp. -# Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd -# already. -quiet_cmd_mac_tool = MACTOOL $(4) $< -cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" - -quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ -cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) - -quiet_cmd_infoplist = INFOPLIST $@ -cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" - -quiet_cmd_touch = TOUCH $@ -cmd_touch = touch $@ - -quiet_cmd_copy = COPY $@ -# send stderr to /dev/null to ignore messages when linking directories. -cmd_copy = rm -rf "$@" && cp -af "$<" "$@" - -quiet_cmd_alink = LIBTOOL-STATIC $@ -cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool $(GYP_LIBTOOLFLAGS) -static -o $@ $(filter %.o,$^) - -quiet_cmd_link = LINK($(TOOLSET)) $@ -cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) - -quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) - -quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ -cmd_solink_module = $(LINK.$(TOOLSET)) -bundle $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) - - -# Define an escape_quotes function to escape single quotes. -# This allows us to handle quotes properly as long as we always use -# use single quotes and escape_quotes. -escape_quotes = $(subst ','\'',$(1)) -# This comment is here just to include a ' to unconfuse syntax highlighting. -# Define an escape_vars function to escape '$' variable syntax. -# This allows us to read/write command lines with shell variables (e.g. -# $LD_LIBRARY_PATH), without triggering make substitution. -escape_vars = $(subst $$,$$$$,$(1)) -# Helper that expands to a shell command to echo a string exactly as it is in -# make. This uses printf instead of echo because printf's behaviour with respect -# to escape sequences is more portable than echo's across different shells -# (e.g., dash, bash). -exact_echo = printf '%s\n' '$(call escape_quotes,$(1))' - -# Helper to compare the command we're about to run against the command -# we logged the last time we ran the command. Produces an empty -# string (false) when the commands match. -# Tricky point: Make has no string-equality test function. -# The kernel uses the following, but it seems like it would have false -# positives, where one string reordered its arguments. -# arg_check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \ -# $(filter-out $(cmd_$@), $(cmd_$(1)))) -# We instead substitute each for the empty string into the other, and -# say they're equal if both substitutions produce the empty string. -# .d files contain ? instead of spaces, take that into account. -command_changed = $(or $(subst $(cmd_$(1)),,$(cmd_$(call replace_spaces,$@))),\ - $(subst $(cmd_$(call replace_spaces,$@)),,$(cmd_$(1)))) - -# Helper that is non-empty when a prerequisite changes. -# Normally make does this implicitly, but we force rules to always run -# so we can check their command lines. -# $? -- new prerequisites -# $| -- order-only dependencies -prereq_changed = $(filter-out FORCE_DO_CMD,$(filter-out $|,$?)) - -# Helper that executes all postbuilds until one fails. -define do_postbuilds - @E=0;\ - for p in $(POSTBUILDS); do\ - eval $$p;\ - E=$$?;\ - if [ $$E -ne 0 ]; then\ - break;\ - fi;\ - done;\ - if [ $$E -ne 0 ]; then\ - rm -rf "$@";\ - exit $$E;\ - fi -endef - -# do_cmd: run a command via the above cmd_foo names, if necessary. -# Should always run for a given target to handle command-line changes. -# Second argument, if non-zero, makes it do asm/C/C++ dependency munging. -# Third argument, if non-zero, makes it do POSTBUILDS processing. -# Note: We intentionally do NOT call dirx for depfile, since it contains ? for -# spaces already and dirx strips the ? characters. -define do_cmd -$(if $(or $(command_changed),$(prereq_changed)), - @$(call exact_echo, $($(quiet)cmd_$(1))) - @mkdir -p "$(call dirx,$@)" "$(dir $(depfile))" - $(if $(findstring flock,$(word 2,$(cmd_$1))), - @$(cmd_$(1)) - @echo " $(quiet_cmd_$(1)): Finished", - @$(cmd_$(1)) - ) - @$(call exact_echo,$(call escape_vars,cmd_$(call replace_spaces,$@) := $(cmd_$(1)))) > $(depfile) - @$(if $(2),$(fixup_dep)) - $(if $(and $(3), $(POSTBUILDS)), - $(call do_postbuilds) - ) -) -endef - -# Declare the "all" target first so it is the default, -# even though we don't have the deps yet. -.PHONY: all -all: - -# make looks for ways to re-generate included makefiles, but in our case, we -# don't have a direct way. Explicitly telling make that it has nothing to do -# for them makes it go faster. -%.d: ; - -# Use FORCE_DO_CMD to force a target to run. Should be coupled with -# do_cmd. -.PHONY: FORCE_DO_CMD -FORCE_DO_CMD: - -TOOLSET := target -# Suffix rules, putting all outputs into $(obj). -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(srcdir)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - -# Try building from generated source, too. -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj).$(TOOLSET)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - -$(obj).$(TOOLSET)/%.o: $(obj)/%.c FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cpp FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.cxx FORCE_DO_CMD - @$(call do_cmd,cxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.m FORCE_DO_CMD - @$(call do_cmd,objc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.mm FORCE_DO_CMD - @$(call do_cmd,objcxx,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.S FORCE_DO_CMD - @$(call do_cmd,cc,1) -$(obj).$(TOOLSET)/%.o: $(obj)/%.s FORCE_DO_CMD - @$(call do_cmd,cc,1) - - -ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ - $(findstring $(join ^,$(prefix)),\ - $(join ^,bufferutil.target.mk)))),) - include bufferutil.target.mk -endif -ifeq ($(strip $(foreach prefix,$(NO_LOAD),\ - $(findstring $(join ^,$(prefix)),\ - $(join ^,validation.target.mk)))),) - include validation.target.mk -endif - -quiet_cmd_regen_makefile = ACTION Regenerating $@ -cmd_regen_makefile = cd $(srcdir); /Users/david/.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py -fmake --ignore-environment "--toplevel-dir=." -I/Users/david/VSCode-Extensions/vscode-instant-markdown/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi -I/Users/david/.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/addon.gypi -I/Users/david/.node-gyp/4.1.2/include/node/common.gypi "--depth=." "-Goutput_dir=." "--generator-output=build" "-Dlibrary=shared_library" "-Dvisibility=default" "-Dnode_root_dir=/Users/david/.node-gyp/4.1.2" "-Dnode_gyp_dir=/Users/david/.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp" "-Dnode_lib_file=node.lib" "-Dmodule_root_dir=/Users/david/VSCode-Extensions/vscode-instant-markdown/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws" binding.gyp -Makefile: $(srcdir)/../../../../../../../../../../.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/addon.gypi $(srcdir)/../../../../../../../../../../.node-gyp/4.1.2/include/node/common.gypi $(srcdir)/build/config.gypi $(srcdir)/binding.gyp - $(call do_cmd,regen_makefile) - -# "all" is a concatenation of the "all" targets from all the included -# sub-makefiles. This is just here to clarify. -all: - -# Add in dependency-tracking rules. $(all_deps) is the list of every single -# target in our tree. Only consider the ones with .d (dependency) info: -d_files := $(wildcard $(foreach f,$(all_deps),$(depsdir)/$(f).d)) -ifneq ($(d_files),) - include $(d_files) -endif diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw deleted file mode 100644 index 8c2534d7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/Release/.deps/Release/obj.target/bufferutil/src/bufferutil.o.d.raw +++ /dev/null @@ -1,15 +0,0 @@ -Release/obj.target/bufferutil/src/bufferutil.o: ../src/bufferutil.cc \ - /Users/david/.node-gyp/4.1.2/include/node/v8.h \ - /Users/david/.node-gyp/4.1.2/include/node/v8-version.h \ - /Users/david/.node-gyp/4.1.2/include/node/v8config.h \ - /Users/david/.node-gyp/4.1.2/include/node/node.h \ - /Users/david/.node-gyp/4.1.2/include/node/node_version.h \ - /Users/david/.node-gyp/4.1.2/include/node/node_buffer.h \ - /Users/david/.node-gyp/4.1.2/include/node/node_object_wrap.h \ - ../node_modules/nan/nan.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv-errno.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv-version.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv-unix.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv-threadpool.h \ - /Users/david/.node-gyp/4.1.2/include/node/uv-darwin.h diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile deleted file mode 100644 index 5d26a451..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/binding.Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# This file is generated by gyp; do not edit. - -export builddir_name ?= ./build/. -.PHONY: all -all: - $(MAKE) validation bufferutil diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk deleted file mode 100644 index 036f3d49..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/bufferutil.target.mk +++ /dev/null @@ -1,165 +0,0 @@ -# This file is generated by gyp; do not edit. - -TOOLSET := target -TARGET := bufferutil -DEFS_Debug := \ - '-DNODE_GYP_MODULE_NAME=bufferutil' \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' \ - '-DDEBUG' \ - '-D_DEBUG' - -# Flags passed to all source files. -CFLAGS_Debug := \ - -O0 \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Debug := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Debug := \ - -std=gnu++0x \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Debug := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Debug := - -INCS_Debug := \ - -I/Users/david/.node-gyp/4.1.2/include/node \ - -I/Users/david/.node-gyp/4.1.2/src \ - -I/Users/david/.node-gyp/4.1.2/deps/uv/include \ - -I/Users/david/.node-gyp/4.1.2/deps/v8/include \ - -I$(srcdir)/node_modules/nan - -DEFS_Release := \ - '-DNODE_GYP_MODULE_NAME=bufferutil' \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' - -# Flags passed to all source files. -CFLAGS_Release := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Release := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Release := \ - -std=gnu++0x \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Release := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Release := - -INCS_Release := \ - -I/Users/david/.node-gyp/4.1.2/include/node \ - -I/Users/david/.node-gyp/4.1.2/src \ - -I/Users/david/.node-gyp/4.1.2/deps/uv/include \ - -I/Users/david/.node-gyp/4.1.2/deps/v8/include \ - -I$(srcdir)/node_modules/nan - -OBJS := \ - $(obj).target/$(TARGET)/src/bufferutil.o - -# Add to the list of files we specially track dependencies for. -all_deps += $(OBJS) - -# CFLAGS et al overrides must be target-local. -# See "Target-specific Variable Values" in the GNU Make manual. -$(OBJS): TOOLSET := $(TOOLSET) -$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) -$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) - -# Suffix rules, putting all outputs into $(obj). - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# Try building from generated source, too. - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# End of this set of suffix rules -### Rules for final target. -LDFLAGS_Debug := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Debug := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first - -LDFLAGS_Release := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Release := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first - -LIBS := - -$(builddir)/bufferutil.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(builddir)/bufferutil.node: LIBS := $(LIBS) -$(builddir)/bufferutil.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) -$(builddir)/bufferutil.node: TOOLSET := $(TOOLSET) -$(builddir)/bufferutil.node: $(OBJS) FORCE_DO_CMD - $(call do_cmd,solink_module) - -all_deps += $(builddir)/bufferutil.node -# Add target alias -.PHONY: bufferutil -bufferutil: $(builddir)/bufferutil.node - -# Short alias for building this executable. -.PHONY: bufferutil.node -bufferutil.node: $(builddir)/bufferutil.node - -# Add executable to "all" target. -.PHONY: all -all: $(builddir)/bufferutil.node - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi deleted file mode 100644 index 78225d26..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/config.gypi +++ /dev/null @@ -1,138 +0,0 @@ -# Do not edit. File was generated by node-gyp's "configure" step -{ - "target_defaults": { - "cflags": [], - "default_configuration": "Release", - "defines": [], - "include_dirs": [], - "libraries": [] - }, - "variables": { - "asan": 0, - "host_arch": "x64", - "icu_data_file": "icudt55l.dat", - "icu_data_in": "../../deps/icu/source/data/in/icudt55l.dat", - "icu_endianness": "l", - "icu_gyp_path": "tools/icu/icu-generic.gyp", - "icu_locales": "en,root", - "icu_path": "./deps/icu", - "icu_small": "true", - "icu_ver_major": "55", - "llvm_version": "3.6", - "node_byteorder": "little", - "node_install_npm": "true", - "node_prefix": "/", - "node_release_urlbase": "https://nodejs.org/download/release/", - "node_shared_http_parser": "false", - "node_shared_libuv": "false", - "node_shared_openssl": "false", - "node_shared_zlib": "false", - "node_tag": "", - "node_use_dtrace": "true", - "node_use_etw": "false", - "node_use_lttng": "false", - "node_use_openssl": "true", - "node_use_perfctr": "false", - "openssl_fips": "", - "openssl_no_asm": 0, - "python": "/usr/bin/python", - "target_arch": "x64", - "uv_parent_path": "/deps/uv/", - "uv_use_dtrace": "true", - "v8_enable_gdbjit": 0, - "v8_enable_i18n_support": 1, - "v8_no_strict_aliasing": 1, - "v8_optimized_debug": 0, - "v8_random_seed": 0, - "v8_use_snapshot": 1, - "want_separate_host_toolset": 0, - "nodedir": "/Users/david/.node-gyp/4.1.2", - "copy_dev_lib": "true", - "standalone_static_library": 1, - "save_dev": "", - "browser": "", - "viewer": "man", - "rollback": "true", - "usage": "", - "globalignorefile": "/Users/david/.nvm/v4.1.2/etc/npmignore", - "init_author_url": "", - "shell": "/bin/zsh", - "parseable": "", - "shrinkwrap": "true", - "init_license": "ISC", - "if_present": "", - "cache_max": "Infinity", - "init_author_email": "", - "sign_git_tag": "", - "cert": "", - "git_tag_version": "true", - "local_address": "", - "long": "", - "fetch_retries": "2", - "npat": "", - "registry": "https://registry.npmjs.org/", - "key": "", - "message": "%s", - "versions": "", - "globalconfig": "/Users/david/.nvm/v4.1.2/etc/npmrc", - "always_auth": "", - "spin": "true", - "cache_lock_retries": "10", - "cafile": "", - "heading": "npm", - "fetch_retry_mintimeout": "10000", - "proprietary_attribs": "true", - "access": "", - "json": "", - "description": "true", - "engine_strict": "", - "https_proxy": "", - "init_module": "/Users/david/.npm-init.js", - "userconfig": "/Users/david/.npmrc", - "node_version": "4.1.2", - "user": "501", - "editor": "vim", - "save": "", - "tag": "latest", - "global": "", - "optional": "true", - "bin_links": "true", - "force": "", - "searchopts": "", - "depth": "Infinity", - "rebuild_bundle": "true", - "searchsort": "name", - "unicode": "true", - "fetch_retry_maxtimeout": "60000", - "ca": "", - "save_prefix": "^", - "strict_ssl": "true", - "tag_version_prefix": "v", - "dev": "", - "fetch_retry_factor": "10", - "group": "20", - "save_exact": "", - "cache_lock_stale": "60000", - "version": "", - "cache_min": "10", - "cache": "/Users/david/.npm", - "searchexclude": "", - "color": "true", - "save_optional": "", - "user_agent": "npm/2.14.4 node/v4.1.2 darwin x64", - "ignore_scripts": "", - "cache_lock_wait": "10000", - "production": "", - "save_bundle": "", - "init_version": "1.0.0", - "umask": "0022", - "git": "git", - "init_author_name": "", - "scope": "", - "onload_script": "", - "tmp": "/var/folders/4s/zqprhwwn78vbpywp7ws69kv00000gn/T", - "unsafe_perm": "true", - "link": "", - "prefix": "/Users/david/.nvm/v4.1.2" - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool deleted file mode 100755 index 976c5987..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/gyp-mac-tool +++ /dev/null @@ -1,612 +0,0 @@ -#!/usr/bin/env python -# Generated by gyp. Do not edit. -# Copyright (c) 2012 Google Inc. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Utility functions to perform Xcode-style build steps. - -These functions are executed via gyp-mac-tool when using the Makefile generator. -""" - -import fcntl -import fnmatch -import glob -import json -import os -import plistlib -import re -import shutil -import string -import subprocess -import sys -import tempfile - - -def main(args): - executor = MacTool() - exit_code = executor.Dispatch(args) - if exit_code is not None: - sys.exit(exit_code) - - -class MacTool(object): - """This class performs all the Mac tooling steps. The methods can either be - executed directly, or dispatched from an argument list.""" - - def Dispatch(self, args): - """Dispatches a string command to a method.""" - if len(args) < 1: - raise Exception("Not enough arguments") - - method = "Exec%s" % self._CommandifyName(args[0]) - return getattr(self, method)(*args[1:]) - - def _CommandifyName(self, name_string): - """Transforms a tool name like copy-info-plist to CopyInfoPlist""" - return name_string.title().replace('-', '') - - def ExecCopyBundleResource(self, source, dest, convert_to_binary): - """Copies a resource file to the bundle/Resources directory, performing any - necessary compilation on each resource.""" - extension = os.path.splitext(source)[1].lower() - if os.path.isdir(source): - # Copy tree. - # TODO(thakis): This copies file attributes like mtime, while the - # single-file branch below doesn't. This should probably be changed to - # be consistent with the single-file branch. - if os.path.exists(dest): - shutil.rmtree(dest) - shutil.copytree(source, dest) - elif extension == '.xib': - return self._CopyXIBFile(source, dest) - elif extension == '.storyboard': - return self._CopyXIBFile(source, dest) - elif extension == '.strings': - self._CopyStringsFile(source, dest, convert_to_binary) - else: - shutil.copy(source, dest) - - def _CopyXIBFile(self, source, dest): - """Compiles a XIB file with ibtool into a binary plist in the bundle.""" - - # ibtool sometimes crashes with relative paths. See crbug.com/314728. - base = os.path.dirname(os.path.realpath(__file__)) - if os.path.relpath(source): - source = os.path.join(base, source) - if os.path.relpath(dest): - dest = os.path.join(base, dest) - - args = ['xcrun', 'ibtool', '--errors', '--warnings', '--notices', - '--output-format', 'human-readable-text', '--compile', dest, source] - ibtool_section_re = re.compile(r'/\*.*\*/') - ibtool_re = re.compile(r'.*note:.*is clipping its content') - ibtoolout = subprocess.Popen(args, stdout=subprocess.PIPE) - current_section_header = None - for line in ibtoolout.stdout: - if ibtool_section_re.match(line): - current_section_header = line - elif not ibtool_re.match(line): - if current_section_header: - sys.stdout.write(current_section_header) - current_section_header = None - sys.stdout.write(line) - return ibtoolout.returncode - - def _ConvertToBinary(self, dest): - subprocess.check_call([ - 'xcrun', 'plutil', '-convert', 'binary1', '-o', dest, dest]) - - def _CopyStringsFile(self, source, dest, convert_to_binary): - """Copies a .strings file using iconv to reconvert the input into UTF-16.""" - input_code = self._DetectInputEncoding(source) or "UTF-8" - - # Xcode's CpyCopyStringsFile / builtin-copyStrings seems to call - # CFPropertyListCreateFromXMLData() behind the scenes; at least it prints - # CFPropertyListCreateFromXMLData(): Old-style plist parser: missing - # semicolon in dictionary. - # on invalid files. Do the same kind of validation. - import CoreFoundation - s = open(source, 'rb').read() - d = CoreFoundation.CFDataCreate(None, s, len(s)) - _, error = CoreFoundation.CFPropertyListCreateFromXMLData(None, d, 0, None) - if error: - return - - fp = open(dest, 'wb') - fp.write(s.decode(input_code).encode('UTF-16')) - fp.close() - - if convert_to_binary == 'True': - self._ConvertToBinary(dest) - - def _DetectInputEncoding(self, file_name): - """Reads the first few bytes from file_name and tries to guess the text - encoding. Returns None as a guess if it can't detect it.""" - fp = open(file_name, 'rb') - try: - header = fp.read(3) - except e: - fp.close() - return None - fp.close() - if header.startswith("\xFE\xFF"): - return "UTF-16" - elif header.startswith("\xFF\xFE"): - return "UTF-16" - elif header.startswith("\xEF\xBB\xBF"): - return "UTF-8" - else: - return None - - def ExecCopyInfoPlist(self, source, dest, convert_to_binary, *keys): - """Copies the |source| Info.plist to the destination directory |dest|.""" - # Read the source Info.plist into memory. - fd = open(source, 'r') - lines = fd.read() - fd.close() - - # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild). - plist = plistlib.readPlistFromString(lines) - if keys: - plist = dict(plist.items() + json.loads(keys[0]).items()) - lines = plistlib.writePlistToString(plist) - - # Go through all the environment variables and replace them as variables in - # the file. - IDENT_RE = re.compile(r'[/\s]') - for key in os.environ: - if key.startswith('_'): - continue - evar = '${%s}' % key - evalue = os.environ[key] - lines = string.replace(lines, evar, evalue) - - # Xcode supports various suffices on environment variables, which are - # all undocumented. :rfc1034identifier is used in the standard project - # template these days, and :identifier was used earlier. They are used to - # convert non-url characters into things that look like valid urls -- - # except that the replacement character for :identifier, '_' isn't valid - # in a URL either -- oops, hence :rfc1034identifier was born. - evar = '${%s:identifier}' % key - evalue = IDENT_RE.sub('_', os.environ[key]) - lines = string.replace(lines, evar, evalue) - - evar = '${%s:rfc1034identifier}' % key - evalue = IDENT_RE.sub('-', os.environ[key]) - lines = string.replace(lines, evar, evalue) - - # Remove any keys with values that haven't been replaced. - lines = lines.split('\n') - for i in range(len(lines)): - if lines[i].strip().startswith("${"): - lines[i] = None - lines[i - 1] = None - lines = '\n'.join(filter(lambda x: x is not None, lines)) - - # Write out the file with variables replaced. - fd = open(dest, 'w') - fd.write(lines) - fd.close() - - # Now write out PkgInfo file now that the Info.plist file has been - # "compiled". - self._WritePkgInfo(dest) - - if convert_to_binary == 'True': - self._ConvertToBinary(dest) - - def _WritePkgInfo(self, info_plist): - """This writes the PkgInfo file from the data stored in Info.plist.""" - plist = plistlib.readPlist(info_plist) - if not plist: - return - - # Only create PkgInfo for executable types. - package_type = plist['CFBundlePackageType'] - if package_type != 'APPL': - return - - # The format of PkgInfo is eight characters, representing the bundle type - # and bundle signature, each four characters. If that is missing, four - # '?' characters are used instead. - signature_code = plist.get('CFBundleSignature', '????') - if len(signature_code) != 4: # Wrong length resets everything, too. - signature_code = '?' * 4 - - dest = os.path.join(os.path.dirname(info_plist), 'PkgInfo') - fp = open(dest, 'w') - fp.write('%s%s' % (package_type, signature_code)) - fp.close() - - def ExecFlock(self, lockfile, *cmd_list): - """Emulates the most basic behavior of Linux's flock(1).""" - # Rely on exception handling to report errors. - fd = os.open(lockfile, os.O_RDONLY|os.O_NOCTTY|os.O_CREAT, 0o666) - fcntl.flock(fd, fcntl.LOCK_EX) - return subprocess.call(cmd_list) - - def ExecFilterLibtool(self, *cmd_list): - """Calls libtool and filters out '/path/to/libtool: file: foo.o has no - symbols'.""" - libtool_re = re.compile(r'^.*libtool: file: .* has no symbols$') - libtool_re5 = re.compile( - r'^.*libtool: warning for library: ' + - r'.* the table of contents is empty ' + - r'\(no object file members in the library define global symbols\)$') - env = os.environ.copy() - # Ref: - # http://www.opensource.apple.com/source/cctools/cctools-809/misc/libtool.c - # The problem with this flag is that it resets the file mtime on the file to - # epoch=0, e.g. 1970-1-1 or 1969-12-31 depending on timezone. - env['ZERO_AR_DATE'] = '1' - libtoolout = subprocess.Popen(cmd_list, stderr=subprocess.PIPE, env=env) - _, err = libtoolout.communicate() - for line in err.splitlines(): - if not libtool_re.match(line) and not libtool_re5.match(line): - print >>sys.stderr, line - # Unconditionally touch the output .a file on the command line if present - # and the command succeeded. A bit hacky. - if not libtoolout.returncode: - for i in range(len(cmd_list) - 1): - if cmd_list[i] == "-o" and cmd_list[i+1].endswith('.a'): - os.utime(cmd_list[i+1], None) - break - return libtoolout.returncode - - def ExecPackageFramework(self, framework, version): - """Takes a path to Something.framework and the Current version of that and - sets up all the symlinks.""" - # Find the name of the binary based on the part before the ".framework". - binary = os.path.basename(framework).split('.')[0] - - CURRENT = 'Current' - RESOURCES = 'Resources' - VERSIONS = 'Versions' - - if not os.path.exists(os.path.join(framework, VERSIONS, version, binary)): - # Binary-less frameworks don't seem to contain symlinks (see e.g. - # chromium's out/Debug/org.chromium.Chromium.manifest/ bundle). - return - - # Move into the framework directory to set the symlinks correctly. - pwd = os.getcwd() - os.chdir(framework) - - # Set up the Current version. - self._Relink(version, os.path.join(VERSIONS, CURRENT)) - - # Set up the root symlinks. - self._Relink(os.path.join(VERSIONS, CURRENT, binary), binary) - self._Relink(os.path.join(VERSIONS, CURRENT, RESOURCES), RESOURCES) - - # Back to where we were before! - os.chdir(pwd) - - def _Relink(self, dest, link): - """Creates a symlink to |dest| named |link|. If |link| already exists, - it is overwritten.""" - if os.path.lexists(link): - os.remove(link) - os.symlink(dest, link) - - def ExecCompileXcassets(self, keys, *inputs): - """Compiles multiple .xcassets files into a single .car file. - - This invokes 'actool' to compile all the inputs .xcassets files. The - |keys| arguments is a json-encoded dictionary of extra arguments to - pass to 'actool' when the asset catalogs contains an application icon - or a launch image. - - Note that 'actool' does not create the Assets.car file if the asset - catalogs does not contains imageset. - """ - command_line = [ - 'xcrun', 'actool', '--output-format', 'human-readable-text', - '--compress-pngs', '--notices', '--warnings', '--errors', - ] - is_iphone_target = 'IPHONEOS_DEPLOYMENT_TARGET' in os.environ - if is_iphone_target: - platform = os.environ['CONFIGURATION'].split('-')[-1] - if platform not in ('iphoneos', 'iphonesimulator'): - platform = 'iphonesimulator' - command_line.extend([ - '--platform', platform, '--target-device', 'iphone', - '--target-device', 'ipad', '--minimum-deployment-target', - os.environ['IPHONEOS_DEPLOYMENT_TARGET'], '--compile', - os.path.abspath(os.environ['CONTENTS_FOLDER_PATH']), - ]) - else: - command_line.extend([ - '--platform', 'macosx', '--target-device', 'mac', - '--minimum-deployment-target', os.environ['MACOSX_DEPLOYMENT_TARGET'], - '--compile', - os.path.abspath(os.environ['UNLOCALIZED_RESOURCES_FOLDER_PATH']), - ]) - if keys: - keys = json.loads(keys) - for key, value in keys.iteritems(): - arg_name = '--' + key - if isinstance(value, bool): - if value: - command_line.append(arg_name) - elif isinstance(value, list): - for v in value: - command_line.append(arg_name) - command_line.append(str(v)) - else: - command_line.append(arg_name) - command_line.append(str(value)) - # Note: actool crashes if inputs path are relative, so use os.path.abspath - # to get absolute path name for inputs. - command_line.extend(map(os.path.abspath, inputs)) - subprocess.check_call(command_line) - - def ExecMergeInfoPlist(self, output, *inputs): - """Merge multiple .plist files into a single .plist file.""" - merged_plist = {} - for path in inputs: - plist = self._LoadPlistMaybeBinary(path) - self._MergePlist(merged_plist, plist) - plistlib.writePlist(merged_plist, output) - - def ExecCodeSignBundle(self, key, resource_rules, entitlements, provisioning): - """Code sign a bundle. - - This function tries to code sign an iOS bundle, following the same - algorithm as Xcode: - 1. copy ResourceRules.plist from the user or the SDK into the bundle, - 2. pick the provisioning profile that best match the bundle identifier, - and copy it into the bundle as embedded.mobileprovision, - 3. copy Entitlements.plist from user or SDK next to the bundle, - 4. code sign the bundle. - """ - resource_rules_path = self._InstallResourceRules(resource_rules) - substitutions, overrides = self._InstallProvisioningProfile( - provisioning, self._GetCFBundleIdentifier()) - entitlements_path = self._InstallEntitlements( - entitlements, substitutions, overrides) - subprocess.check_call([ - 'codesign', '--force', '--sign', key, '--resource-rules', - resource_rules_path, '--entitlements', entitlements_path, - os.path.join( - os.environ['TARGET_BUILD_DIR'], - os.environ['FULL_PRODUCT_NAME'])]) - - def _InstallResourceRules(self, resource_rules): - """Installs ResourceRules.plist from user or SDK into the bundle. - - Args: - resource_rules: string, optional, path to the ResourceRules.plist file - to use, default to "${SDKROOT}/ResourceRules.plist" - - Returns: - Path to the copy of ResourceRules.plist into the bundle. - """ - source_path = resource_rules - target_path = os.path.join( - os.environ['BUILT_PRODUCTS_DIR'], - os.environ['CONTENTS_FOLDER_PATH'], - 'ResourceRules.plist') - if not source_path: - source_path = os.path.join( - os.environ['SDKROOT'], 'ResourceRules.plist') - shutil.copy2(source_path, target_path) - return target_path - - def _InstallProvisioningProfile(self, profile, bundle_identifier): - """Installs embedded.mobileprovision into the bundle. - - Args: - profile: string, optional, short name of the .mobileprovision file - to use, if empty or the file is missing, the best file installed - will be used - bundle_identifier: string, value of CFBundleIdentifier from Info.plist - - Returns: - A tuple containing two dictionary: variables substitutions and values - to overrides when generating the entitlements file. - """ - source_path, provisioning_data, team_id = self._FindProvisioningProfile( - profile, bundle_identifier) - target_path = os.path.join( - os.environ['BUILT_PRODUCTS_DIR'], - os.environ['CONTENTS_FOLDER_PATH'], - 'embedded.mobileprovision') - shutil.copy2(source_path, target_path) - substitutions = self._GetSubstitutions(bundle_identifier, team_id + '.') - return substitutions, provisioning_data['Entitlements'] - - def _FindProvisioningProfile(self, profile, bundle_identifier): - """Finds the .mobileprovision file to use for signing the bundle. - - Checks all the installed provisioning profiles (or if the user specified - the PROVISIONING_PROFILE variable, only consult it) and select the most - specific that correspond to the bundle identifier. - - Args: - profile: string, optional, short name of the .mobileprovision file - to use, if empty or the file is missing, the best file installed - will be used - bundle_identifier: string, value of CFBundleIdentifier from Info.plist - - Returns: - A tuple of the path to the selected provisioning profile, the data of - the embedded plist in the provisioning profile and the team identifier - to use for code signing. - - Raises: - SystemExit: if no .mobileprovision can be used to sign the bundle. - """ - profiles_dir = os.path.join( - os.environ['HOME'], 'Library', 'MobileDevice', 'Provisioning Profiles') - if not os.path.isdir(profiles_dir): - print >>sys.stderr, ( - 'cannot find mobile provisioning for %s' % bundle_identifier) - sys.exit(1) - provisioning_profiles = None - if profile: - profile_path = os.path.join(profiles_dir, profile + '.mobileprovision') - if os.path.exists(profile_path): - provisioning_profiles = [profile_path] - if not provisioning_profiles: - provisioning_profiles = glob.glob( - os.path.join(profiles_dir, '*.mobileprovision')) - valid_provisioning_profiles = {} - for profile_path in provisioning_profiles: - profile_data = self._LoadProvisioningProfile(profile_path) - app_id_pattern = profile_data.get( - 'Entitlements', {}).get('application-identifier', '') - for team_identifier in profile_data.get('TeamIdentifier', []): - app_id = '%s.%s' % (team_identifier, bundle_identifier) - if fnmatch.fnmatch(app_id, app_id_pattern): - valid_provisioning_profiles[app_id_pattern] = ( - profile_path, profile_data, team_identifier) - if not valid_provisioning_profiles: - print >>sys.stderr, ( - 'cannot find mobile provisioning for %s' % bundle_identifier) - sys.exit(1) - # If the user has multiple provisioning profiles installed that can be - # used for ${bundle_identifier}, pick the most specific one (ie. the - # provisioning profile whose pattern is the longest). - selected_key = max(valid_provisioning_profiles, key=lambda v: len(v)) - return valid_provisioning_profiles[selected_key] - - def _LoadProvisioningProfile(self, profile_path): - """Extracts the plist embedded in a provisioning profile. - - Args: - profile_path: string, path to the .mobileprovision file - - Returns: - Content of the plist embedded in the provisioning profile as a dictionary. - """ - with tempfile.NamedTemporaryFile() as temp: - subprocess.check_call([ - 'security', 'cms', '-D', '-i', profile_path, '-o', temp.name]) - return self._LoadPlistMaybeBinary(temp.name) - - def _MergePlist(self, merged_plist, plist): - """Merge |plist| into |merged_plist|.""" - for key, value in plist.iteritems(): - if isinstance(value, dict): - merged_value = merged_plist.get(key, {}) - if isinstance(merged_value, dict): - self._MergePlist(merged_value, value) - merged_plist[key] = merged_value - else: - merged_plist[key] = value - else: - merged_plist[key] = value - - def _LoadPlistMaybeBinary(self, plist_path): - """Loads into a memory a plist possibly encoded in binary format. - - This is a wrapper around plistlib.readPlist that tries to convert the - plist to the XML format if it can't be parsed (assuming that it is in - the binary format). - - Args: - plist_path: string, path to a plist file, in XML or binary format - - Returns: - Content of the plist as a dictionary. - """ - try: - # First, try to read the file using plistlib that only supports XML, - # and if an exception is raised, convert a temporary copy to XML and - # load that copy. - return plistlib.readPlist(plist_path) - except: - pass - with tempfile.NamedTemporaryFile() as temp: - shutil.copy2(plist_path, temp.name) - subprocess.check_call(['plutil', '-convert', 'xml1', temp.name]) - return plistlib.readPlist(temp.name) - - def _GetSubstitutions(self, bundle_identifier, app_identifier_prefix): - """Constructs a dictionary of variable substitutions for Entitlements.plist. - - Args: - bundle_identifier: string, value of CFBundleIdentifier from Info.plist - app_identifier_prefix: string, value for AppIdentifierPrefix - - Returns: - Dictionary of substitutions to apply when generating Entitlements.plist. - """ - return { - 'CFBundleIdentifier': bundle_identifier, - 'AppIdentifierPrefix': app_identifier_prefix, - } - - def _GetCFBundleIdentifier(self): - """Extracts CFBundleIdentifier value from Info.plist in the bundle. - - Returns: - Value of CFBundleIdentifier in the Info.plist located in the bundle. - """ - info_plist_path = os.path.join( - os.environ['TARGET_BUILD_DIR'], - os.environ['INFOPLIST_PATH']) - info_plist_data = self._LoadPlistMaybeBinary(info_plist_path) - return info_plist_data['CFBundleIdentifier'] - - def _InstallEntitlements(self, entitlements, substitutions, overrides): - """Generates and install the ${BundleName}.xcent entitlements file. - - Expands variables "$(variable)" pattern in the source entitlements file, - add extra entitlements defined in the .mobileprovision file and the copy - the generated plist to "${BundlePath}.xcent". - - Args: - entitlements: string, optional, path to the Entitlements.plist template - to use, defaults to "${SDKROOT}/Entitlements.plist" - substitutions: dictionary, variable substitutions - overrides: dictionary, values to add to the entitlements - - Returns: - Path to the generated entitlements file. - """ - source_path = entitlements - target_path = os.path.join( - os.environ['BUILT_PRODUCTS_DIR'], - os.environ['PRODUCT_NAME'] + '.xcent') - if not source_path: - source_path = os.path.join( - os.environ['SDKROOT'], - 'Entitlements.plist') - shutil.copy2(source_path, target_path) - data = self._LoadPlistMaybeBinary(target_path) - data = self._ExpandVariables(data, substitutions) - if overrides: - for key in overrides: - if key not in data: - data[key] = overrides[key] - plistlib.writePlist(data, target_path) - return target_path - - def _ExpandVariables(self, data, substitutions): - """Expands variables "$(variable)" in data. - - Args: - data: object, can be either string, list or dictionary - substitutions: dictionary, variable substitutions to perform - - Returns: - Copy of data where each references to "$(variable)" has been replaced - by the corresponding value found in substitutions, or left intact if - the key was not found. - """ - if isinstance(data, str): - for key, value in substitutions.iteritems(): - data = data.replace('$(%s)' % key, value) - return data - if isinstance(data, list): - return [self._ExpandVariables(v, substitutions) for v in data] - if isinstance(data, dict): - return dict((k, self._ExpandVariables(data[k], - substitutions)) for k in data) - return data - -if __name__ == '__main__': - sys.exit(main(sys.argv[1:])) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk deleted file mode 100644 index c2f09c7b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build/validation.target.mk +++ /dev/null @@ -1,165 +0,0 @@ -# This file is generated by gyp; do not edit. - -TOOLSET := target -TARGET := validation -DEFS_Debug := \ - '-DNODE_GYP_MODULE_NAME=validation' \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' \ - '-DDEBUG' \ - '-D_DEBUG' - -# Flags passed to all source files. -CFLAGS_Debug := \ - -O0 \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Debug := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Debug := \ - -std=gnu++0x \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Debug := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Debug := - -INCS_Debug := \ - -I/Users/david/.node-gyp/4.1.2/include/node \ - -I/Users/david/.node-gyp/4.1.2/src \ - -I/Users/david/.node-gyp/4.1.2/deps/uv/include \ - -I/Users/david/.node-gyp/4.1.2/deps/v8/include \ - -I$(srcdir)/node_modules/nan - -DEFS_Release := \ - '-DNODE_GYP_MODULE_NAME=validation' \ - '-D_DARWIN_USE_64_BIT_INODE=1' \ - '-D_LARGEFILE_SOURCE' \ - '-D_FILE_OFFSET_BITS=64' \ - '-DBUILDING_NODE_EXTENSION' - -# Flags passed to all source files. -CFLAGS_Release := \ - -Os \ - -gdwarf-2 \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -Wall \ - -Wendif-labels \ - -W \ - -Wno-unused-parameter - -# Flags passed to only C files. -CFLAGS_C_Release := \ - -fno-strict-aliasing - -# Flags passed to only C++ files. -CFLAGS_CC_Release := \ - -std=gnu++0x \ - -fno-rtti \ - -fno-exceptions \ - -fno-threadsafe-statics \ - -fno-strict-aliasing - -# Flags passed to only ObjC files. -CFLAGS_OBJC_Release := - -# Flags passed to only ObjC++ files. -CFLAGS_OBJCC_Release := - -INCS_Release := \ - -I/Users/david/.node-gyp/4.1.2/include/node \ - -I/Users/david/.node-gyp/4.1.2/src \ - -I/Users/david/.node-gyp/4.1.2/deps/uv/include \ - -I/Users/david/.node-gyp/4.1.2/deps/v8/include \ - -I$(srcdir)/node_modules/nan - -OBJS := \ - $(obj).target/$(TARGET)/src/validation.o - -# Add to the list of files we specially track dependencies for. -all_deps += $(OBJS) - -# CFLAGS et al overrides must be target-local. -# See "Target-specific Variable Values" in the GNU Make manual. -$(OBJS): TOOLSET := $(TOOLSET) -$(OBJS): GYP_CFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) -$(OBJS): GYP_CXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_C_$(BUILDTYPE)) $(CFLAGS_OBJC_$(BUILDTYPE)) -$(OBJS): GYP_OBJCXXFLAGS := $(DEFS_$(BUILDTYPE)) $(INCS_$(BUILDTYPE)) $(CFLAGS_$(BUILDTYPE)) $(CFLAGS_CC_$(BUILDTYPE)) $(CFLAGS_OBJCC_$(BUILDTYPE)) - -# Suffix rules, putting all outputs into $(obj). - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(srcdir)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# Try building from generated source, too. - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj).$(TOOLSET)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -$(obj).$(TOOLSET)/$(TARGET)/%.o: $(obj)/%.cc FORCE_DO_CMD - @$(call do_cmd,cxx,1) - -# End of this set of suffix rules -### Rules for final target. -LDFLAGS_Debug := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Debug := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first - -LDFLAGS_Release := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first \ - -mmacosx-version-min=10.5 \ - -arch x86_64 \ - -L$(builddir) - -LIBTOOLFLAGS_Release := \ - -undefined dynamic_lookup \ - -Wl,-search_paths_first - -LIBS := - -$(builddir)/validation.node: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE)) -$(builddir)/validation.node: LIBS := $(LIBS) -$(builddir)/validation.node: GYP_LIBTOOLFLAGS := $(LIBTOOLFLAGS_$(BUILDTYPE)) -$(builddir)/validation.node: TOOLSET := $(TOOLSET) -$(builddir)/validation.node: $(OBJS) FORCE_DO_CMD - $(call do_cmd,solink_module) - -all_deps += $(builddir)/validation.node -# Add target alias -.PHONY: validation -validation: $(builddir)/validation.node - -# Short alias for building this executable. -.PHONY: validation.node -validation.node: $(builddir)/validation.node - -# Add executable to "all" target. -.PHONY: all -all: $(builddir)/validation.node - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/builderror.log b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/builderror.log deleted file mode 100644 index 61bed554..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/builderror.log +++ /dev/null @@ -1,114 +0,0 @@ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:337:54: error: too many arguments to function call, expected at most 2, have 4 - return v8::Signature::New(nan_isolate, receiver, argc, argv); - ~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~ -/Users/david/.node-gyp/4.1.2/include/node/v8.h:4675:3: note: 'New' declared here - static Local New( - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:409:19: error: no type named 'ExternalAsciiStringResource' in 'v8::String'; did you mean 'ExternalStringResource'? - v8::String::ExternalAsciiStringResource *resource) { - ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ - ExternalStringResource -/Users/david/.node-gyp/4.1.2/include/node/v8.h:2210:19: note: 'ExternalStringResource' declared here - class V8_EXPORT ExternalStringResource - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:408:36: error: redefinition of 'NanNew' - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:403:36: note: previous definition is here - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:427:3: error: redefinition of 'NanNew' - NanNew >( - ^ -../node_modules/nan/nan.h:420:3: note: previous definition is here - NanNew >( - ^ -../node_modules/nan/nan.h:444:36: error: redefinition of 'NanNew' - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:438:36: note: previous definition is here - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:456:36: error: redefinition of 'NanNew' - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:450:36: note: previous definition is here - NAN_INLINE v8::Local NanNew( - ^ -../node_modules/nan/nan.h:767:13: error: no member named 'smalloc' in namespace 'node' - , node::smalloc::FreeCallback callback - ~~~~~~^ -../node_modules/nan/nan.h:777:12: error: no matching function for call to 'New' - return node::Buffer::New(nan_isolate, data, size); - ^~~~~~~~~~~~~~~~~ -/Users/david/.node-gyp/4.1.2/include/node/node_buffer.h:31:40: note: candidate function not viable: no known conversion from 'uint32_t' (aka 'unsigned int') to 'enum encoding' for 3rd argument -NODE_EXTERN v8::MaybeLocal New(v8::Isolate* isolate, - ^ -/Users/david/.node-gyp/4.1.2/include/node/node_buffer.h:43:40: note: candidate function not viable: 2nd argument ('const char *') would lose const qualifier -NODE_EXTERN v8::MaybeLocal New(v8::Isolate* isolate, - ^ -/Users/david/.node-gyp/4.1.2/include/node/node_buffer.h:28:40: note: candidate function not viable: requires 2 arguments, but 3 were provided -NODE_EXTERN v8::MaybeLocal New(v8::Isolate* isolate, size_t length); - ^ -/Users/david/.node-gyp/4.1.2/include/node/node_buffer.h:36:40: note: candidate function not viable: requires 5 arguments, but 3 were provided -NODE_EXTERN v8::MaybeLocal New(v8::Isolate* isolate, - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:781:12: error: no viable conversion from 'v8::MaybeLocal' to 'v8::Local' - return node::Buffer::New(nan_isolate, size); - ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/Users/david/.node-gyp/4.1.2/include/node/v8.h:210:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'v8::MaybeLocal' to 'const v8::Local &' for 1st argument -class Local { - ^ -/Users/david/.node-gyp/4.1.2/include/node/v8.h:210:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'v8::MaybeLocal' to 'v8::Local &&' for 1st argument -class Local { - ^ -/Users/david/.node-gyp/4.1.2/include/node/v8.h:214:13: note: candidate template ignored: could not match 'Local' against 'MaybeLocal' - V8_INLINE Local(Local that) - ^ -/Users/david/.node-gyp/4.1.2/include/node/v8.h:326:13: note: candidate template ignored: could not match 'S *' against 'v8::MaybeLocal' - V8_INLINE Local(S* that) - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:788:26: error: no member named 'Use' in namespace 'node::Buffer' - return node::Buffer::Use(nan_isolate, data, size); - ~~~~~~~~~~~~~~^ -../node_modules/nan/nan.h:1728:12: error: no member named 'IsExternalAscii' in 'v8::String'; did you mean 'IsExternal'? - if (str->IsExternalAscii()) { - ^~~~~~~~~~~~~~~ - IsExternal -/Users/david/.node-gyp/4.1.2/include/node/v8.h:2174:8: note: 'IsExternal' declared here - bool IsExternal() const; - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:1729:23: error: no type named 'ExternalAsciiStringResource' in 'v8::String'; did you mean 'ExternalStringResource'? - const v8::String::ExternalAsciiStringResource* ext; - ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ - ExternalStringResource -/Users/david/.node-gyp/4.1.2/include/node/v8.h:2210:19: note: 'ExternalStringResource' declared here - class V8_EXPORT ExternalStringResource - ^ -In file included from ../src/bufferutil.cc:15: -../node_modules/nan/nan.h:1730:16: error: no member named 'GetExternalAsciiStringResource' in 'v8::String' - ext = str->GetExternalAsciiStringResource(); - ~~~ ^ -../node_modules/nan/nan.h:1731:11: error: assigning to 'const char *' from incompatible type 'const uint16_t *' (aka 'const unsigned short *') - *data = ext->data(); - ^ ~~~~~~~~~~~ -14 errors generated. -make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1 -gyp ERR! build error -gyp ERR! stack Error: `make` failed with exit code: 2 -gyp ERR! stack at ChildProcess.onExit (/Users/david/.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23) -gyp ERR! stack at emitTwo (events.js:87:13) -gyp ERR! stack at ChildProcess.emit (events.js:172:7) -gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) -gyp ERR! System Darwin 15.0.0 -gyp ERR! command "/Users/david/.nvm/v4.1.2/bin/node" "/Users/david/.nvm/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" -gyp ERR! cwd /Users/david/VSCode-Extensions/vscode-instant-markdown/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws -gyp ERR! node -v v4.1.2 -gyp ERR! node-gyp -v v3.0.3 -gyp ERR! not ok diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/index.js deleted file mode 100644 index 3423ff23..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/index.js +++ /dev/null @@ -1,26 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -module.exports = require('./lib/WebSocket'); -module.exports.Server = require('./lib/WebSocketServer'); -module.exports.Sender = require('./lib/Sender'); -module.exports.Receiver = require('./lib/Receiver'); - -module.exports.createServer = function (options, connectionListener) { - var server = new module.exports.Server(options); - if (typeof connectionListener === 'function') { - server.on('connection', connectionListener); - } - return server; -}; - -module.exports.connect = module.exports.createConnection = function (address, openListener) { - var client = new module.exports(address); - if (typeof openListener === 'function') { - client.on('open', openListener); - } - return client; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferPool.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferPool.js deleted file mode 100644 index faf8637c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferPool.js +++ /dev/null @@ -1,59 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var util = require('util'); - -function BufferPool(initialSize, growStrategy, shrinkStrategy) { - if (typeof initialSize === 'function') { - shrinkStrategy = growStrategy; - growStrategy = initialSize; - initialSize = 0; - } - else if (typeof initialSize === 'undefined') { - initialSize = 0; - } - this._growStrategy = (growStrategy || function(db, size) { - return db.used + size; - }).bind(null, this); - this._shrinkStrategy = (shrinkStrategy || function(db) { - return initialSize; - }).bind(null, this); - this._buffer = initialSize ? new Buffer(initialSize) : null; - this._offset = 0; - this._used = 0; - this._changeFactor = 0; - this.__defineGetter__('size', function(){ - return this._buffer == null ? 0 : this._buffer.length; - }); - this.__defineGetter__('used', function(){ - return this._used; - }); -} - -BufferPool.prototype.get = function(length) { - if (this._buffer == null || this._offset + length > this._buffer.length) { - var newBuf = new Buffer(this._growStrategy(length)); - this._buffer = newBuf; - this._offset = 0; - } - this._used += length; - var buf = this._buffer.slice(this._offset, this._offset + length); - this._offset += length; - return buf; -} - -BufferPool.prototype.reset = function(forceNewBuffer) { - var len = this._shrinkStrategy(); - if (len < this.size) this._changeFactor -= 1; - if (forceNewBuffer || this._changeFactor < -2) { - this._changeFactor = 0; - this._buffer = len ? new Buffer(len) : null; - } - this._offset = 0; - this._used = 0; -} - -module.exports = BufferPool; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.fallback.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.fallback.js deleted file mode 100644 index 508542c9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.fallback.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -module.exports.BufferUtil = { - merge: function(mergedBuffer, buffers) { - var offset = 0; - for (var i = 0, l = buffers.length; i < l; ++i) { - var buf = buffers[i]; - buf.copy(mergedBuffer, offset); - offset += buf.length; - } - }, - mask: function(source, mask, output, offset, length) { - var maskNum = mask.readUInt32LE(0, true); - var i = 0; - for (; i < length - 3; i += 4) { - var num = maskNum ^ source.readUInt32LE(i, true); - if (num < 0) num = 4294967296 + num; - output.writeUInt32LE(num, offset + i, true); - } - switch (length % 4) { - case 3: output[offset + i + 2] = source[i + 2] ^ mask[2]; - case 2: output[offset + i + 1] = source[i + 1] ^ mask[1]; - case 1: output[offset + i] = source[i] ^ mask[0]; - case 0:; - } - }, - unmask: function(data, mask) { - var maskNum = mask.readUInt32LE(0, true); - var length = data.length; - var i = 0; - for (; i < length - 3; i += 4) { - var num = maskNum ^ data.readUInt32LE(i, true); - if (num < 0) num = 4294967296 + num; - data.writeUInt32LE(num, i, true); - } - switch (length % 4) { - case 3: data[i + 2] = data[i + 2] ^ mask[2]; - case 2: data[i + 1] = data[i + 1] ^ mask[1]; - case 1: data[i] = data[i] ^ mask[0]; - case 0:; - } - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.js deleted file mode 100644 index 15d35b98..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/BufferUtil.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -try { - module.exports = require('../build/Release/bufferutil'); -} catch (e) { try { - module.exports = require('../build/default/bufferutil'); -} catch (e) { try { - module.exports = require('./BufferUtil.fallback'); -} catch (e) { - console.error('bufferutil.node seems to not have been built. Run npm install.'); - throw e; -}}} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/ErrorCodes.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/ErrorCodes.js deleted file mode 100644 index 55ebd529..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/ErrorCodes.js +++ /dev/null @@ -1,24 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -module.exports = { - isValidErrorCode: function(code) { - return (code >= 1000 && code <= 1011 && code != 1004 && code != 1005 && code != 1006) || - (code >= 3000 && code <= 4999); - }, - 1000: 'normal', - 1001: 'going away', - 1002: 'protocol error', - 1003: 'unsupported data', - 1004: 'reserved', - 1005: 'reserved for extensions', - 1006: 'reserved for extensions', - 1007: 'inconsistent or invalid data', - 1008: 'policy violation', - 1009: 'message too big', - 1010: 'extension handshake missing', - 1011: 'an unexpected condition prevented the request from being fulfilled', -}; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.hixie.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.hixie.js deleted file mode 100644 index a8e41c47..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.hixie.js +++ /dev/null @@ -1,180 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var util = require('util'); - -/** - * State constants - */ - -var EMPTY = 0 - , BODY = 1; -var BINARYLENGTH = 2 - , BINARYBODY = 3; - -/** - * Hixie Receiver implementation - */ - -function Receiver () { - this.state = EMPTY; - this.buffers = []; - this.messageEnd = -1; - this.spanLength = 0; - this.dead = false; - - this.onerror = function() {}; - this.ontext = function() {}; - this.onbinary = function() {}; - this.onclose = function() {}; - this.onping = function() {}; - this.onpong = function() {}; -} - -module.exports = Receiver; - -/** - * Add new data to the parser. - * - * @api public - */ - -Receiver.prototype.add = function(data) { - var self = this; - function doAdd() { - if (self.state === EMPTY) { - if (data.length == 2 && data[0] == 0xFF && data[1] == 0x00) { - self.reset(); - self.onclose(); - return; - } - if (data[0] === 0x80) { - self.messageEnd = 0; - self.state = BINARYLENGTH; - data = data.slice(1); - } else { - - if (data[0] !== 0x00) { - self.error('payload must start with 0x00 byte', true); - return; - } - data = data.slice(1); - self.state = BODY; - - } - } - if (self.state === BINARYLENGTH) { - var i = 0; - while ((i < data.length) && (data[i] & 0x80)) { - self.messageEnd = 128 * self.messageEnd + (data[i] & 0x7f); - ++i; - } - if (i < data.length) { - self.messageEnd = 128 * self.messageEnd + (data[i] & 0x7f); - self.state = BINARYBODY; - ++i; - } - if (i > 0) - data = data.slice(i); - } - if (self.state === BINARYBODY) { - var dataleft = self.messageEnd - self.spanLength; - if (data.length >= dataleft) { - // consume the whole buffer to finish the frame - self.buffers.push(data); - self.spanLength += dataleft; - self.messageEnd = dataleft; - return self.parse(); - } - // frame's not done even if we consume it all - self.buffers.push(data); - self.spanLength += data.length; - return; - } - self.buffers.push(data); - if ((self.messageEnd = bufferIndex(data, 0xFF)) != -1) { - self.spanLength += self.messageEnd; - return self.parse(); - } - else self.spanLength += data.length; - } - while(data) data = doAdd(); -}; - -/** - * Releases all resources used by the receiver. - * - * @api public - */ - -Receiver.prototype.cleanup = function() { - this.dead = true; - this.state = EMPTY; - this.buffers = []; -}; - -/** - * Process buffered data. - * - * @api public - */ - -Receiver.prototype.parse = function() { - var output = new Buffer(this.spanLength); - var outputIndex = 0; - for (var bi = 0, bl = this.buffers.length; bi < bl - 1; ++bi) { - var buffer = this.buffers[bi]; - buffer.copy(output, outputIndex); - outputIndex += buffer.length; - } - var lastBuffer = this.buffers[this.buffers.length - 1]; - if (this.messageEnd > 0) lastBuffer.copy(output, outputIndex, 0, this.messageEnd); - if (this.state !== BODY) --this.messageEnd; - var tail = null; - if (this.messageEnd < lastBuffer.length - 1) { - tail = lastBuffer.slice(this.messageEnd + 1); - } - this.reset(); - this.ontext(output.toString('utf8')); - return tail; -}; - -/** - * Handles an error - * - * @api private - */ - -Receiver.prototype.error = function (reason, terminate) { - this.reset(); - this.onerror(reason, terminate); - return this; -}; - -/** - * Reset parser state - * - * @api private - */ - -Receiver.prototype.reset = function (reason) { - if (this.dead) return; - this.state = EMPTY; - this.buffers = []; - this.messageEnd = -1; - this.spanLength = 0; -}; - -/** - * Internal api - */ - -function bufferIndex(buffer, byte) { - for (var i = 0, l = buffer.length; i < l; ++i) { - if (buffer[i] === byte) return i; - } - return -1; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.js deleted file mode 100644 index 004cd32c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Receiver.js +++ /dev/null @@ -1,585 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var util = require('util') - , Validation = require('./Validation').Validation - , ErrorCodes = require('./ErrorCodes') - , BufferPool = require('./BufferPool') - , bufferUtil = require('./BufferUtil').BufferUtil; - -/** - * HyBi Receiver implementation - */ - -function Receiver () { - // memory pool for fragmented messages - var fragmentedPoolPrevUsed = -1; - this.fragmentedBufferPool = new BufferPool(1024, function(db, length) { - return db.used + length; - }, function(db) { - return fragmentedPoolPrevUsed = fragmentedPoolPrevUsed >= 0 ? - (fragmentedPoolPrevUsed + db.used) / 2 : - db.used; - }); - - // memory pool for unfragmented messages - var unfragmentedPoolPrevUsed = -1; - this.unfragmentedBufferPool = new BufferPool(1024, function(db, length) { - return db.used + length; - }, function(db) { - return unfragmentedPoolPrevUsed = unfragmentedPoolPrevUsed >= 0 ? - (unfragmentedPoolPrevUsed + db.used) / 2 : - db.used; - }); - - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0, - fragmentedOperation: false - }; - this.overflow = []; - this.headerBuffer = new Buffer(10); - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.currentMessage = []; - this.expectHeader(2, this.processPacket); - this.dead = false; - - this.onerror = function() {}; - this.ontext = function() {}; - this.onbinary = function() {}; - this.onclose = function() {}; - this.onping = function() {}; - this.onpong = function() {}; -} - -module.exports = Receiver; - -/** - * Add new data to the parser. - * - * @api public - */ - -Receiver.prototype.add = function(data) { - var dataLength = data.length; - if (dataLength == 0) return; - if (this.expectBuffer == null) { - this.overflow.push(data); - return; - } - var toRead = Math.min(dataLength, this.expectBuffer.length - this.expectOffset); - fastCopy(toRead, data, this.expectBuffer, this.expectOffset); - this.expectOffset += toRead; - if (toRead < dataLength) { - this.overflow.push(data.slice(toRead)); - } - while (this.expectBuffer && this.expectOffset == this.expectBuffer.length) { - var bufferForHandler = this.expectBuffer; - this.expectBuffer = null; - this.expectOffset = 0; - this.expectHandler.call(this, bufferForHandler); - } -}; - -/** - * Releases all resources used by the receiver. - * - * @api public - */ - -Receiver.prototype.cleanup = function() { - this.dead = true; - this.overflow = null; - this.headerBuffer = null; - this.expectBuffer = null; - this.expectHandler = null; - this.unfragmentedBufferPool = null; - this.fragmentedBufferPool = null; - this.state = null; - this.currentMessage = null; - this.onerror = null; - this.ontext = null; - this.onbinary = null; - this.onclose = null; - this.onping = null; - this.onpong = null; -}; - -/** - * Waits for a certain amount of header bytes to be available, then fires a callback. - * - * @api private - */ - -Receiver.prototype.expectHeader = function(length, handler) { - if (length == 0) { - handler(null); - return; - } - this.expectBuffer = this.headerBuffer.slice(this.expectOffset, this.expectOffset + length); - this.expectHandler = handler; - var toRead = length; - while (toRead > 0 && this.overflow.length > 0) { - var fromOverflow = this.overflow.pop(); - if (toRead < fromOverflow.length) this.overflow.push(fromOverflow.slice(toRead)); - var read = Math.min(fromOverflow.length, toRead); - fastCopy(read, fromOverflow, this.expectBuffer, this.expectOffset); - this.expectOffset += read; - toRead -= read; - } -}; - -/** - * Waits for a certain amount of data bytes to be available, then fires a callback. - * - * @api private - */ - -Receiver.prototype.expectData = function(length, handler) { - if (length == 0) { - handler(null); - return; - } - this.expectBuffer = this.allocateFromPool(length, this.state.fragmentedOperation); - this.expectHandler = handler; - var toRead = length; - while (toRead > 0 && this.overflow.length > 0) { - var fromOverflow = this.overflow.pop(); - if (toRead < fromOverflow.length) this.overflow.push(fromOverflow.slice(toRead)); - var read = Math.min(fromOverflow.length, toRead); - fastCopy(read, fromOverflow, this.expectBuffer, this.expectOffset); - this.expectOffset += read; - toRead -= read; - } -}; - -/** - * Allocates memory from the buffer pool. - * - * @api private - */ - -Receiver.prototype.allocateFromPool = function(length, isFragmented) { - return (isFragmented ? this.fragmentedBufferPool : this.unfragmentedBufferPool).get(length); -}; - -/** - * Start processing a new packet. - * - * @api private - */ - -Receiver.prototype.processPacket = function (data) { - if ((data[0] & 0x70) != 0) { - this.error('reserved fields must be empty', 1002); - return; - } - this.state.lastFragment = (data[0] & 0x80) == 0x80; - this.state.masked = (data[1] & 0x80) == 0x80; - var opcode = data[0] & 0xf; - if (opcode === 0) { - // continuation frame - this.state.fragmentedOperation = true; - this.state.opcode = this.state.activeFragmentedOperation; - if (!(this.state.opcode == 1 || this.state.opcode == 2)) { - this.error('continuation frame cannot follow current opcode', 1002); - return; - } - } - else { - if (opcode < 3 && this.state.activeFragmentedOperation != null) { - this.error('data frames after the initial data frame must have opcode 0', 1002); - return; - } - this.state.opcode = opcode; - if (this.state.lastFragment === false) { - this.state.fragmentedOperation = true; - this.state.activeFragmentedOperation = opcode; - } - else this.state.fragmentedOperation = false; - } - var handler = opcodes[this.state.opcode]; - if (typeof handler == 'undefined') this.error('no handler for opcode ' + this.state.opcode, 1002); - else { - handler.start.call(this, data); - } -}; - -/** - * Endprocessing a packet. - * - * @api private - */ - -Receiver.prototype.endPacket = function() { - if (!this.state.fragmentedOperation) this.unfragmentedBufferPool.reset(true); - else if (this.state.lastFragment) this.fragmentedBufferPool.reset(false); - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - if (this.state.lastFragment && this.state.opcode === this.state.activeFragmentedOperation) { - // end current fragmented operation - this.state.activeFragmentedOperation = null; - } - this.state.lastFragment = false; - this.state.opcode = this.state.activeFragmentedOperation != null ? this.state.activeFragmentedOperation : 0; - this.state.masked = false; - this.expectHeader(2, this.processPacket); -}; - -/** - * Reset the parser state. - * - * @api private - */ - -Receiver.prototype.reset = function() { - if (this.dead) return; - this.state = { - activeFragmentedOperation: null, - lastFragment: false, - masked: false, - opcode: 0, - fragmentedOperation: false - }; - this.fragmentedBufferPool.reset(true); - this.unfragmentedBufferPool.reset(true); - this.expectOffset = 0; - this.expectBuffer = null; - this.expectHandler = null; - this.overflow = []; - this.currentMessage = []; -}; - -/** - * Unmask received data. - * - * @api private - */ - -Receiver.prototype.unmask = function (mask, buf, binary) { - if (mask != null && buf != null) bufferUtil.unmask(buf, mask); - if (binary) return buf; - return buf != null ? buf.toString('utf8') : ''; -}; - -/** - * Concatenates a list of buffers. - * - * @api private - */ - -Receiver.prototype.concatBuffers = function(buffers) { - var length = 0; - for (var i = 0, l = buffers.length; i < l; ++i) length += buffers[i].length; - var mergedBuffer = new Buffer(length); - bufferUtil.merge(mergedBuffer, buffers); - return mergedBuffer; -}; - -/** - * Handles an error - * - * @api private - */ - -Receiver.prototype.error = function (reason, protocolErrorCode) { - this.reset(); - this.onerror(reason, protocolErrorCode); - return this; -}; - -/** - * Buffer utilities - */ - -function readUInt16BE(start) { - return (this[start]<<8) + - this[start+1]; -} - -function readUInt32BE(start) { - return (this[start]<<24) + - (this[start+1]<<16) + - (this[start+2]<<8) + - this[start+3]; -} - -function fastCopy(length, srcBuffer, dstBuffer, dstOffset) { - switch (length) { - default: srcBuffer.copy(dstBuffer, dstOffset, 0, length); break; - case 16: dstBuffer[dstOffset+15] = srcBuffer[15]; - case 15: dstBuffer[dstOffset+14] = srcBuffer[14]; - case 14: dstBuffer[dstOffset+13] = srcBuffer[13]; - case 13: dstBuffer[dstOffset+12] = srcBuffer[12]; - case 12: dstBuffer[dstOffset+11] = srcBuffer[11]; - case 11: dstBuffer[dstOffset+10] = srcBuffer[10]; - case 10: dstBuffer[dstOffset+9] = srcBuffer[9]; - case 9: dstBuffer[dstOffset+8] = srcBuffer[8]; - case 8: dstBuffer[dstOffset+7] = srcBuffer[7]; - case 7: dstBuffer[dstOffset+6] = srcBuffer[6]; - case 6: dstBuffer[dstOffset+5] = srcBuffer[5]; - case 5: dstBuffer[dstOffset+4] = srcBuffer[4]; - case 4: dstBuffer[dstOffset+3] = srcBuffer[3]; - case 3: dstBuffer[dstOffset+2] = srcBuffer[2]; - case 2: dstBuffer[dstOffset+1] = srcBuffer[1]; - case 1: dstBuffer[dstOffset] = srcBuffer[0]; - } -} - -/** - * Opcode handlers - */ - -var opcodes = { - // text - '1': { - start: function(data) { - var self = this; - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - opcodes['1'].getData.call(self, firstLength); - } - else if (firstLength == 126) { - self.expectHeader(2, function(data) { - opcodes['1'].getData.call(self, readUInt16BE.call(data, 0)); - }); - } - else if (firstLength == 127) { - self.expectHeader(8, function(data) { - if (readUInt32BE.call(data, 0) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported', 1008); - return; - } - opcodes['1'].getData.call(self, readUInt32BE.call(data, 4)); - }); - } - }, - getData: function(length) { - var self = this; - if (self.state.masked) { - self.expectHeader(4, function(data) { - var mask = data; - self.expectData(length, function(data) { - opcodes['1'].finish.call(self, mask, data); - }); - }); - } - else { - self.expectData(length, function(data) { - opcodes['1'].finish.call(self, null, data); - }); - } - }, - finish: function(mask, data) { - var packet = this.unmask(mask, data, true); - if (packet != null) this.currentMessage.push(packet); - if (this.state.lastFragment) { - var messageBuffer = this.concatBuffers(this.currentMessage); - if (!Validation.isValidUTF8(messageBuffer)) { - this.error('invalid utf8 sequence', 1007); - return; - } - this.ontext(messageBuffer.toString('utf8'), {masked: this.state.masked, buffer: messageBuffer}); - this.currentMessage = []; - } - this.endPacket(); - } - }, - // binary - '2': { - start: function(data) { - var self = this; - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - opcodes['2'].getData.call(self, firstLength); - } - else if (firstLength == 126) { - self.expectHeader(2, function(data) { - opcodes['2'].getData.call(self, readUInt16BE.call(data, 0)); - }); - } - else if (firstLength == 127) { - self.expectHeader(8, function(data) { - if (readUInt32BE.call(data, 0) != 0) { - self.error('packets with length spanning more than 32 bit is currently not supported', 1008); - return; - } - opcodes['2'].getData.call(self, readUInt32BE.call(data, 4, true)); - }); - } - }, - getData: function(length) { - var self = this; - if (self.state.masked) { - self.expectHeader(4, function(data) { - var mask = data; - self.expectData(length, function(data) { - opcodes['2'].finish.call(self, mask, data); - }); - }); - } - else { - self.expectData(length, function(data) { - opcodes['2'].finish.call(self, null, data); - }); - } - }, - finish: function(mask, data) { - var packet = this.unmask(mask, data, true); - if (packet != null) this.currentMessage.push(packet); - if (this.state.lastFragment) { - var messageBuffer = this.concatBuffers(this.currentMessage); - this.onbinary(messageBuffer, {masked: this.state.masked, buffer: messageBuffer}); - this.currentMessage = []; - } - this.endPacket(); - } - }, - // close - '8': { - start: function(data) { - var self = this; - if (self.state.lastFragment == false) { - self.error('fragmented close is not supported', 1002); - return; - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - opcodes['8'].getData.call(self, firstLength); - } - else { - self.error('control frames cannot have more than 125 bytes of data', 1002); - } - }, - getData: function(length) { - var self = this; - if (self.state.masked) { - self.expectHeader(4, function(data) { - var mask = data; - self.expectData(length, function(data) { - opcodes['8'].finish.call(self, mask, data); - }); - }); - } - else { - self.expectData(length, function(data) { - opcodes['8'].finish.call(self, null, data); - }); - } - }, - finish: function(mask, data) { - var self = this; - data = self.unmask(mask, data, true); - if (data && data.length == 1) { - self.error('close packets with data must be at least two bytes long', 1002); - return; - } - var code = data && data.length > 1 ? readUInt16BE.call(data, 0) : 1000; - if (!ErrorCodes.isValidErrorCode(code)) { - self.error('invalid error code', 1002); - return; - } - var message = ''; - if (data && data.length > 2) { - var messageBuffer = data.slice(2); - if (!Validation.isValidUTF8(messageBuffer)) { - self.error('invalid utf8 sequence', 1007); - return; - } - message = messageBuffer.toString('utf8'); - } - this.onclose(code, message, {masked: self.state.masked}); - this.reset(); - }, - }, - // ping - '9': { - start: function(data) { - var self = this; - if (self.state.lastFragment == false) { - self.error('fragmented ping is not supported', 1002); - return; - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - opcodes['9'].getData.call(self, firstLength); - } - else { - self.error('control frames cannot have more than 125 bytes of data', 1002); - } - }, - getData: function(length) { - var self = this; - if (self.state.masked) { - self.expectHeader(4, function(data) { - var mask = data; - self.expectData(length, function(data) { - opcodes['9'].finish.call(self, mask, data); - }); - }); - } - else { - self.expectData(length, function(data) { - opcodes['9'].finish.call(self, null, data); - }); - } - }, - finish: function(mask, data) { - this.onping(this.unmask(mask, data, true), {masked: this.state.masked, binary: true}); - this.endPacket(); - } - }, - // pong - '10': { - start: function(data) { - var self = this; - if (self.state.lastFragment == false) { - self.error('fragmented pong is not supported', 1002); - return; - } - - // decode length - var firstLength = data[1] & 0x7f; - if (firstLength < 126) { - opcodes['10'].getData.call(self, firstLength); - } - else { - self.error('control frames cannot have more than 125 bytes of data', 1002); - } - }, - getData: function(length) { - var self = this; - if (this.state.masked) { - this.expectHeader(4, function(data) { - var mask = data; - self.expectData(length, function(data) { - opcodes['10'].finish.call(self, mask, data); - }); - }); - } - else { - this.expectData(length, function(data) { - opcodes['10'].finish.call(self, null, data); - }); - } - }, - finish: function(mask, data) { - this.onpong(this.unmask(mask, data, true), {masked: this.state.masked, binary: true}); - this.endPacket(); - } - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.hixie.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.hixie.js deleted file mode 100644 index c715dbdc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.hixie.js +++ /dev/null @@ -1,118 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var events = require('events') - , util = require('util') - , EventEmitter = events.EventEmitter; - -/** - * Hixie Sender implementation - */ - -function Sender(socket) { - this.socket = socket; - this.continuationFrame = false; - this.isClosed = false; -} - -module.exports = Sender; - -/** - * Inherits from EventEmitter. - */ - -util.inherits(Sender, events.EventEmitter); - -/** - * Frames and writes data. - * - * @api public - */ - -Sender.prototype.send = function(data, options, cb) { - if (this.isClosed) return; - - var isString = typeof data == 'string' - , length = isString ? Buffer.byteLength(data) : data.length - , lengthbytes = (length > 127) ? 2 : 1 // assume less than 2**14 bytes - , writeStartMarker = this.continuationFrame == false - , writeEndMarker = !options || !(typeof options.fin != 'undefined' && !options.fin) - , buffer = new Buffer((writeStartMarker ? ((options && options.binary) ? (1 + lengthbytes) : 1) : 0) + length + ((writeEndMarker && !(options && options.binary)) ? 1 : 0)) - , offset = writeStartMarker ? 1 : 0; - - if (writeStartMarker) { - if (options && options.binary) { - buffer.write('\x80', 'binary'); - // assume length less than 2**14 bytes - if (lengthbytes > 1) - buffer.write(String.fromCharCode(128+length/128), offset++, 'binary'); - buffer.write(String.fromCharCode(length&0x7f), offset++, 'binary'); - } else - buffer.write('\x00', 'binary'); - } - - if (isString) buffer.write(data, offset, 'utf8'); - else data.copy(buffer, offset, 0); - - if (writeEndMarker) { - if (options && options.binary) { - // sending binary, not writing end marker - } else - buffer.write('\xff', offset + length, 'binary'); - this.continuationFrame = false; - } - else this.continuationFrame = true; - - try { - this.socket.write(buffer, 'binary', cb); - } catch (e) { - this.error(e.toString()); - } -}; - -/** - * Sends a close instruction to the remote party. - * - * @api public - */ - -Sender.prototype.close = function(code, data, mask, cb) { - if (this.isClosed) return; - this.isClosed = true; - try { - if (this.continuationFrame) this.socket.write(new Buffer([0xff], 'binary')); - this.socket.write(new Buffer([0xff, 0x00]), 'binary', cb); - } catch (e) { - this.error(e.toString()); - } -}; - -/** - * Sends a ping message to the remote party. Not available for hixie. - * - * @api public - */ - -Sender.prototype.ping = function(data, options) {}; - -/** - * Sends a pong message to the remote party. Not available for hixie. - * - * @api public - */ - -Sender.prototype.pong = function(data, options) {}; - -/** - * Handles an error - * - * @api private - */ - -Sender.prototype.error = function (reason) { - this.emit('error', reason); - return this; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.js deleted file mode 100644 index bc6ea730..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Sender.js +++ /dev/null @@ -1,227 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var events = require('events') - , util = require('util') - , EventEmitter = events.EventEmitter - , ErrorCodes = require('./ErrorCodes') - , bufferUtil = require('./BufferUtil').BufferUtil; - -/** - * HyBi Sender implementation - */ - -function Sender(socket) { - this._socket = socket; - this.firstFragment = true; -} - -/** - * Inherits from EventEmitter. - */ - -util.inherits(Sender, events.EventEmitter); - -/** - * Sends a close instruction to the remote party. - * - * @api public - */ - -Sender.prototype.close = function(code, data, mask) { - if (typeof code !== 'undefined') { - if (typeof code !== 'number' || - !ErrorCodes.isValidErrorCode(code)) throw new Error('first argument must be a valid error code number'); - } - code = code || 1000; - var dataBuffer = new Buffer(2 + (data ? Buffer.byteLength(data) : 0)); - writeUInt16BE.call(dataBuffer, code, 0); - if (dataBuffer.length > 2) dataBuffer.write(data, 2); - this.frameAndSend(0x8, dataBuffer, true, mask); -}; - -/** - * Sends a ping message to the remote party. - * - * @api public - */ - -Sender.prototype.ping = function(data, options) { - var mask = options && options.mask; - this.frameAndSend(0x9, data || '', true, mask); -}; - -/** - * Sends a pong message to the remote party. - * - * @api public - */ - -Sender.prototype.pong = function(data, options) { - var mask = options && options.mask; - this.frameAndSend(0xa, data || '', true, mask); -}; - -/** - * Sends text or binary data to the remote party. - * - * @api public - */ - -Sender.prototype.send = function(data, options, cb) { - var finalFragment = options && options.fin === false ? false : true; - var mask = options && options.mask; - var opcode = options && options.binary ? 2 : 1; - if (this.firstFragment === false) opcode = 0; - else this.firstFragment = false; - if (finalFragment) this.firstFragment = true - this.frameAndSend(opcode, data, finalFragment, mask, cb); -}; - -/** - * Frames and sends a piece of data according to the HyBi WebSocket protocol. - * - * @api private - */ - -Sender.prototype.frameAndSend = function(opcode, data, finalFragment, maskData, cb) { - var canModifyData = false; - - if (!data) { - try { - this._socket.write(new Buffer([opcode | (finalFragment ? 0x80 : 0), 0 | (maskData ? 0x80 : 0)].concat(maskData ? [0, 0, 0, 0] : [])), 'binary', cb); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else this.emit('error', e); - } - return; - } - - if (!Buffer.isBuffer(data)) { - canModifyData = true; - if (data && (typeof data.byteLength !== 'undefined' || typeof data.buffer !== 'undefined')) { - data = getArrayBuffer(data); - } else { - data = new Buffer(data); - } - } - - var dataLength = data.length - , dataOffset = maskData ? 6 : 2 - , secondByte = dataLength; - - if (dataLength >= 65536) { - dataOffset += 8; - secondByte = 127; - } - else if (dataLength > 125) { - dataOffset += 2; - secondByte = 126; - } - - var mergeBuffers = dataLength < 32768 || (maskData && !canModifyData); - var totalLength = mergeBuffers ? dataLength + dataOffset : dataOffset; - var outputBuffer = new Buffer(totalLength); - outputBuffer[0] = finalFragment ? opcode | 0x80 : opcode; - - switch (secondByte) { - case 126: - writeUInt16BE.call(outputBuffer, dataLength, 2); - break; - case 127: - writeUInt32BE.call(outputBuffer, 0, 2); - writeUInt32BE.call(outputBuffer, dataLength, 6); - } - - if (maskData) { - outputBuffer[1] = secondByte | 0x80; - var mask = this._randomMask || (this._randomMask = getRandomMask()); - outputBuffer[dataOffset - 4] = mask[0]; - outputBuffer[dataOffset - 3] = mask[1]; - outputBuffer[dataOffset - 2] = mask[2]; - outputBuffer[dataOffset - 1] = mask[3]; - if (mergeBuffers) { - bufferUtil.mask(data, mask, outputBuffer, dataOffset, dataLength); - try { - this._socket.write(outputBuffer, 'binary', cb); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else this.emit('error', e); - } - } - else { - bufferUtil.mask(data, mask, data, 0, dataLength); - try { - this._socket.write(outputBuffer, 'binary'); - this._socket.write(data, 'binary', cb); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else this.emit('error', e); - } - } - } - else { - outputBuffer[1] = secondByte; - if (mergeBuffers) { - data.copy(outputBuffer, dataOffset); - try { - this._socket.write(outputBuffer, 'binary', cb); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else this.emit('error', e); - } - } - else { - try { - this._socket.write(outputBuffer, 'binary'); - this._socket.write(data, 'binary', cb); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else this.emit('error', e); - } - } - } -}; - -module.exports = Sender; - -function writeUInt16BE(value, offset) { - this[offset] = (value & 0xff00)>>8; - this[offset+1] = value & 0xff; -} - -function writeUInt32BE(value, offset) { - this[offset] = (value & 0xff000000)>>24; - this[offset+1] = (value & 0xff0000)>>16; - this[offset+2] = (value & 0xff00)>>8; - this[offset+3] = value & 0xff; -} - -function getArrayBuffer(data) { - // data is either an ArrayBuffer or ArrayBufferView. - var array = new Uint8Array(data.buffer || data) - , l = data.byteLength || data.length - , o = data.byteOffset || 0 - , buffer = new Buffer(l); - for (var i = 0; i < l; ++i) { - buffer[i] = array[o+i]; - } - return buffer; -} - -function getRandomMask() { - return new Buffer([ - ~~(Math.random() * 255), - ~~(Math.random() * 255), - ~~(Math.random() * 255), - ~~(Math.random() * 255) - ]); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.fallback.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.fallback.js deleted file mode 100644 index 2c7c4fd4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.fallback.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -module.exports.Validation = { - isValidUTF8: function(buffer) { - return true; - } -}; - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.js deleted file mode 100644 index 0f3109a0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/Validation.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -try { - module.exports = require('../build/Release/validation'); -} catch (e) { try { - module.exports = require('../build/default/validation'); -} catch (e) { try { - module.exports = require('./Validation.fallback'); -} catch (e) { - console.error('validation.node seems to not have been built. Run npm install.'); - throw e; -}}} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocket.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocket.js deleted file mode 100644 index 8c304ebb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocket.js +++ /dev/null @@ -1,794 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var util = require('util') - , events = require('events') - , http = require('http') - , https = require('https') - , crypto = require('crypto') - , url = require('url') - , stream = require('stream') - , Options = require('options') - , Sender = require('./Sender') - , Receiver = require('./Receiver') - , SenderHixie = require('./Sender.hixie') - , ReceiverHixie = require('./Receiver.hixie'); - -/** - * Constants - */ - -// Default protocol version - -var protocolVersion = 13; - -// Close timeout - -var closeTimeout = 30000; // Allow 5 seconds to terminate the connection cleanly - -/** - * WebSocket implementation - */ - -function WebSocket(address, protocols, options) { - - if (protocols && !Array.isArray(protocols) && 'object' == typeof protocols) { - // accept the "options" Object as the 2nd argument - options = protocols; - protocols = null; - } - if ('string' == typeof protocols) { - protocols = [ protocols ]; - } - if (!Array.isArray(protocols)) { - protocols = []; - } - // TODO: actually handle the `Sub-Protocols` part of the WebSocket client - - this._socket = null; - this.bytesReceived = 0; - this.readyState = null; - this.supports = {}; - - if (Array.isArray(address)) { - initAsServerClient.apply(this, address.concat(options)); - } else { - initAsClient.apply(this, [address, protocols, options]); - } -} - -/** - * Inherits from EventEmitter. - */ - -util.inherits(WebSocket, events.EventEmitter); - -/** - * Ready States - */ - -["CONNECTING", "OPEN", "CLOSING", "CLOSED"].forEach(function (state, index) { - WebSocket.prototype[state] = WebSocket[state] = index; -}); - -/** - * Gracefully closes the connection, after sending a description message to the server - * - * @param {Object} data to be sent to the server - * @api public - */ - -WebSocket.prototype.close = function(code, data) { - if (this.readyState == WebSocket.CLOSING || this.readyState == WebSocket.CLOSED) return; - if (this.readyState == WebSocket.CONNECTING) { - this.readyState = WebSocket.CLOSED; - return; - } - try { - this.readyState = WebSocket.CLOSING; - this._closeCode = code; - this._closeMessage = data; - var mask = !this._isServer; - this._sender.close(code, data, mask); - } - catch (e) { - this.emit('error', e); - } - finally { - this.terminate(); - } -} - -/** - * Pause the client stream - * - * @api public - */ - -WebSocket.prototype.pause = function() { - if (this.readyState != WebSocket.OPEN) throw new Error('not opened'); - return this._socket.pause(); -} - -/** - * Sends a ping - * - * @param {Object} data to be sent to the server - * @param {Object} Members - mask: boolean, binary: boolean - * @param {boolean} dontFailWhenClosed indicates whether or not to throw if the connection isnt open - * @api public - */ - -WebSocket.prototype.ping = function(data, options, dontFailWhenClosed) { - if (this.readyState != WebSocket.OPEN) { - if (dontFailWhenClosed === true) return; - throw new Error('not opened'); - } - options = options || {}; - if (typeof options.mask == 'undefined') options.mask = !this._isServer; - this._sender.ping(data, options); -} - -/** - * Sends a pong - * - * @param {Object} data to be sent to the server - * @param {Object} Members - mask: boolean, binary: boolean - * @param {boolean} dontFailWhenClosed indicates whether or not to throw if the connection isnt open - * @api public - */ - -WebSocket.prototype.pong = function(data, options, dontFailWhenClosed) { - if (this.readyState != WebSocket.OPEN) { - if (dontFailWhenClosed === true) return; - throw new Error('not opened'); - } - options = options || {}; - if (typeof options.mask == 'undefined') options.mask = !this._isServer; - this._sender.pong(data, options); -} - -/** - * Resume the client stream - * - * @api public - */ - -WebSocket.prototype.resume = function() { - if (this.readyState != WebSocket.OPEN) throw new Error('not opened'); - return this._socket.resume(); -} - -/** - * Sends a piece of data - * - * @param {Object} data to be sent to the server - * @param {Object} Members - mask: boolean, binary: boolean - * @param {function} Optional callback which is executed after the send completes - * @api public - */ - -WebSocket.prototype.send = function(data, options, cb) { - if (typeof options == 'function') { - cb = options; - options = {}; - } - if (this.readyState != WebSocket.OPEN) { - if (typeof cb == 'function') cb(new Error('not opened')); - else throw new Error('not opened'); - return; - } - if (!data) data = ''; - if (this._queue) { - var self = this; - this._queue.push(function() { self.send(data, options, cb); }); - return; - } - options = options || {}; - options.fin = true; - if (typeof options.binary == 'undefined') { - options.binary = (data instanceof ArrayBuffer || data instanceof Buffer || - data instanceof Uint8Array || - data instanceof Uint16Array || - data instanceof Uint32Array || - data instanceof Int8Array || - data instanceof Int16Array || - data instanceof Int32Array || - data instanceof Float32Array || - data instanceof Float64Array); - } - if (typeof options.mask == 'undefined') options.mask = !this._isServer; - var readable = typeof stream.Readable == 'function' ? stream.Readable : stream.Stream; - if (data instanceof readable) { - startQueue(this); - var self = this; - sendStream(this, data, options, function(error) { - process.nextTick(function() { executeQueueSends(self); }); - if (typeof cb == 'function') cb(error); - }); - } - else this._sender.send(data, options, cb); -} - -/** - * Streams data through calls to a user supplied function - * - * @param {Object} Members - mask: boolean, binary: boolean - * @param {function} 'function (error, send)' which is executed on successive ticks of which send is 'function (data, final)'. - * @api public - */ - -WebSocket.prototype.stream = function(options, cb) { - if (typeof options == 'function') { - cb = options; - options = {}; - } - var self = this; - if (typeof cb != 'function') throw new Error('callback must be provided'); - if (this.readyState != WebSocket.OPEN) { - if (typeof cb == 'function') cb(new Error('not opened')); - else throw new Error('not opened'); - return; - } - if (this._queue) { - this._queue.push(function() { self.stream(options, cb); }); - return; - } - options = options || {}; - if (typeof options.mask == 'undefined') options.mask = !this._isServer; - startQueue(this); - var send = function(data, final) { - try { - if (self.readyState != WebSocket.OPEN) throw new Error('not opened'); - options.fin = final === true; - self._sender.send(data, options); - if (!final) process.nextTick(cb.bind(null, null, send)); - else executeQueueSends(self); - } - catch (e) { - if (typeof cb == 'function') cb(e); - else { - delete self._queue; - self.emit('error', e); - } - } - } - process.nextTick(cb.bind(null, null, send)); -} - -/** - * Immediately shuts down the connection - * - * @api public - */ - -WebSocket.prototype.terminate = function() { - if (this.readyState == WebSocket.CLOSED) return; - if (this._socket) { - try { - // End the connection - this._socket.end(); - } - catch (e) { - // Socket error during end() call, so just destroy it right now - cleanupWebsocketResources.call(this, true); - return; - } - - // Add a timeout to ensure that the connection is completely - // cleaned up within 30 seconds, even if the clean close procedure - // fails for whatever reason - this._closeTimer = setTimeout(cleanupWebsocketResources.bind(this, true), closeTimeout); - } - else if (this.readyState == WebSocket.CONNECTING) { - cleanupWebsocketResources.call(this, true); - } -}; - -/** - * Expose bufferedAmount - * - * @api public - */ - -Object.defineProperty(WebSocket.prototype, 'bufferedAmount', { - get: function get() { - var amount = 0; - if (this._socket) { - amount = this._socket.bufferSize || 0; - } - return amount; - } -}); - -/** - * Emulates the W3C Browser based WebSocket interface using function members. - * - * @see http://dev.w3.org/html5/websockets/#the-websocket-interface - * @api public - */ - -['open', 'error', 'close', 'message'].forEach(function(method) { - Object.defineProperty(WebSocket.prototype, 'on' + method, { - /** - * Returns the current listener - * - * @returns {Mixed} the set function or undefined - * @api public - */ - - get: function get() { - var listener = this.listeners(method)[0]; - return listener ? (listener._listener ? listener._listener : listener) : undefined; - }, - - /** - * Start listening for events - * - * @param {Function} listener the listener - * @returns {Mixed} the set function or undefined - * @api public - */ - - set: function set(listener) { - this.removeAllListeners(method); - this.addEventListener(method, listener); - } - }); -}); - -/** - * Emulates the W3C Browser based WebSocket interface using addEventListener. - * - * @see https://developer.mozilla.org/en/DOM/element.addEventListener - * @see http://dev.w3.org/html5/websockets/#the-websocket-interface - * @api public - */ -WebSocket.prototype.addEventListener = function(method, listener) { - var target = this; - if (typeof listener === 'function') { - if (method === 'message') { - function onMessage (data, flags) { - listener.call(this, new MessageEvent(data, flags.binary ? 'Binary' : 'Text', target)); - } - // store a reference so we can return the original function from the addEventListener hook - onMessage._listener = listener; - this.on(method, onMessage); - } else if (method === 'close') { - function onClose (code, message) { - listener.call(this, new CloseEvent(code, message, target)); - } - // store a reference so we can return the original function from the addEventListener hook - onClose._listener = listener; - this.on(method, onClose); - } else if (method === 'error') { - function onError (event) { - event.target = target; - listener.call(this, event); - } - // store a reference so we can return the original function from the addEventListener hook - onError._listener = listener; - this.on(method, onError); - } else if (method === 'open') { - function onOpen () { - listener.call(this, new OpenEvent(target)); - } - // store a reference so we can return the original function from the addEventListener hook - onOpen._listener = listener; - this.on(method, onOpen); - } else { - this.on(method, listener); - } - } -} - -module.exports = WebSocket; - -/** - * W3C MessageEvent - * - * @see http://www.w3.org/TR/html5/comms.html - * @api private - */ - -function MessageEvent(dataArg, typeArg, target) { - this.data = dataArg; - this.type = typeArg; - this.target = target; -} - -/** - * W3C CloseEvent - * - * @see http://www.w3.org/TR/html5/comms.html - * @api private - */ - -function CloseEvent(code, reason, target) { - this.wasClean = (typeof code == 'undefined' || code == 1000); - this.code = code; - this.reason = reason; - this.target = target; -} - -/** - * W3C OpenEvent - * - * @see http://www.w3.org/TR/html5/comms.html - * @api private - */ - -function OpenEvent(target) { - this.target = target; -} - -/** - * Entirely private apis, - * which may or may not be bound to a sepcific WebSocket instance. - */ - -function initAsServerClient(req, socket, upgradeHead, options) { - options = new Options({ - protocolVersion: protocolVersion, - protocol: null - }).merge(options); - - // expose state properties - this.protocol = options.value.protocol; - this.protocolVersion = options.value.protocolVersion; - this.supports.binary = (this.protocolVersion != 'hixie-76'); - this.upgradeReq = req; - this.readyState = WebSocket.CONNECTING; - this._isServer = true; - - // establish connection - if (options.value.protocolVersion == 'hixie-76') establishConnection.call(this, ReceiverHixie, SenderHixie, socket, upgradeHead); - else establishConnection.call(this, Receiver, Sender, socket, upgradeHead); -} - -function initAsClient(address, protocols, options) { - options = new Options({ - origin: null, - protocolVersion: protocolVersion, - host: null, - headers: null, - protocol: null, - agent: null, - - // ssl-related options - pfx: null, - key: null, - passphrase: null, - cert: null, - ca: null, - ciphers: null, - rejectUnauthorized: null - }).merge(options); - if (options.value.protocolVersion != 8 && options.value.protocolVersion != 13) { - throw new Error('unsupported protocol version'); - } - - // verify url and establish http class - var serverUrl = url.parse(address); - var isUnixSocket = serverUrl.protocol === 'ws+unix:'; - if (!serverUrl.host && !isUnixSocket) throw new Error('invalid url'); - var isSecure = serverUrl.protocol === 'wss:' || serverUrl.protocol === 'https:'; - var httpObj = isSecure ? https : http; - var port = serverUrl.port || (isSecure ? 443 : 80); - var auth = serverUrl.auth; - - // expose state properties - this._isServer = false; - this.url = address; - this.protocolVersion = options.value.protocolVersion; - this.supports.binary = (this.protocolVersion != 'hixie-76'); - - // begin handshake - var key = new Buffer(options.value.protocolVersion + '-' + Date.now()).toString('base64'); - var shasum = crypto.createHash('sha1'); - shasum.update(key + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'); - var expectedServerKey = shasum.digest('base64'); - - var agent = options.value.agent; - - var headerHost = serverUrl.hostname; - // Append port number to Host and Origin header, only if specified in the url and non-default - if(serverUrl.port) { - if((isSecure && (port != 443)) || (!isSecure && (port != 80))){ - headerHost = headerHost + ':' + port; - } - } - - var requestOptions = { - port: port, - host: serverUrl.hostname, - headers: { - 'Connection': 'Upgrade', - 'Upgrade': 'websocket', - 'Host': headerHost, - 'Origin': headerHost, - 'Sec-WebSocket-Version': options.value.protocolVersion, - 'Sec-WebSocket-Key': key - } - }; - - // If we have basic auth. - if (auth) { - requestOptions.headers['Authorization'] = 'Basic ' + new Buffer(auth).toString('base64'); - } - - if (options.value.protocol) { - requestOptions.headers['Sec-WebSocket-Protocol'] = options.value.protocol; - } - - if (options.value.host) { - requestOptions.headers['Host'] = options.value.host; - } - - if (options.value.headers) { - for (var header in options.value.headers) { - if (options.value.headers.hasOwnProperty(header)) { - requestOptions.headers[header] = options.value.headers[header]; - } - } - } - - if (options.isDefinedAndNonNull('pfx') - || options.isDefinedAndNonNull('key') - || options.isDefinedAndNonNull('passphrase') - || options.isDefinedAndNonNull('cert') - || options.isDefinedAndNonNull('ca') - || options.isDefinedAndNonNull('ciphers') - || options.isDefinedAndNonNull('rejectUnauthorized')) { - - if (options.isDefinedAndNonNull('pfx')) requestOptions.pfx = options.value.pfx; - if (options.isDefinedAndNonNull('key')) requestOptions.key = options.value.key; - if (options.isDefinedAndNonNull('passphrase')) requestOptions.passphrase = options.value.passphrase; - if (options.isDefinedAndNonNull('cert')) requestOptions.cert = options.value.cert; - if (options.isDefinedAndNonNull('ca')) requestOptions.ca = options.value.ca; - if (options.isDefinedAndNonNull('ciphers')) requestOptions.ciphers = options.value.ciphers; - if (options.isDefinedAndNonNull('rejectUnauthorized')) requestOptions.rejectUnauthorized = options.value.rejectUnauthorized; - - if (!agent) { - // global agent ignores client side certificates - agent = new httpObj.Agent(requestOptions); - } - } - - requestOptions.path = serverUrl.path || '/'; - - if (agent) { - requestOptions.agent = agent; - } - - if (isUnixSocket) { - requestOptions.socketPath = serverUrl.pathname; - } - if (options.value.origin) { - if (options.value.protocolVersion < 13) requestOptions.headers['Sec-WebSocket-Origin'] = options.value.origin; - else requestOptions.headers['Origin'] = options.value.origin; - } - - var self = this; - var req = httpObj.request(requestOptions); - - req.on('error', function(error) { - self.emit('error', error); - cleanupWebsocketResources.call(this, error); - }); - - req.once('response', function(res) { - if (!self.emit('unexpected-response', req, res)) { - var error = new Error('unexpected server response (' + res.statusCode + ')'); - req.abort(); - self.emit('error', error); - } - cleanupWebsocketResources.call(this, error); - }); - - req.once('upgrade', function(res, socket, upgradeHead) { - if (self.readyState == WebSocket.CLOSED) { - // client closed before server accepted connection - self.emit('close'); - self.removeAllListeners(); - socket.end(); - return; - } - var serverKey = res.headers['sec-websocket-accept']; - if (typeof serverKey == 'undefined' || serverKey !== expectedServerKey) { - self.emit('error', 'invalid server key'); - self.removeAllListeners(); - socket.end(); - return; - } - - var serverProt = res.headers['sec-websocket-protocol']; - var protList = (options.value.protocol || "").split(/, */); - var protError = null; - if (!options.value.protocol && serverProt) { - protError = 'server sent a subprotocol even though none requested'; - } else if (options.value.protocol && !serverProt) { - protError = 'server sent no subprotocol even though requested'; - } else if (serverProt && protList.indexOf(serverProt) === -1) { - protError = 'server responded with an invalid protocol'; - } - if (protError) { - self.emit('error', protError); - self.removeAllListeners(); - socket.end(); - return; - } else if (serverProt) { - self.protocol = serverProt; - } - - establishConnection.call(self, Receiver, Sender, socket, upgradeHead); - - // perform cleanup on http resources - req.removeAllListeners(); - req = null; - agent = null; - }); - - req.end(); - this.readyState = WebSocket.CONNECTING; -} - -function establishConnection(ReceiverClass, SenderClass, socket, upgradeHead) { - this._socket = socket; - socket.setTimeout(0); - socket.setNoDelay(true); - var self = this; - this._receiver = new ReceiverClass(); - - // socket cleanup handlers - socket.on('end', cleanupWebsocketResources.bind(this)); - socket.on('close', cleanupWebsocketResources.bind(this)); - socket.on('error', cleanupWebsocketResources.bind(this)); - - // ensure that the upgradeHead is added to the receiver - function firstHandler(data) { - if (self.readyState != WebSocket.OPEN) return; - if (upgradeHead && upgradeHead.length > 0) { - self.bytesReceived += upgradeHead.length; - var head = upgradeHead; - upgradeHead = null; - self._receiver.add(head); - } - dataHandler = realHandler; - if (data) { - self.bytesReceived += data.length; - self._receiver.add(data); - } - } - // subsequent packets are pushed straight to the receiver - function realHandler(data) { - if (data) self.bytesReceived += data.length; - self._receiver.add(data); - } - var dataHandler = firstHandler; - // if data was passed along with the http upgrade, - // this will schedule a push of that on to the receiver. - // this has to be done on next tick, since the caller - // hasn't had a chance to set event handlers on this client - // object yet. - process.nextTick(firstHandler); - - // receiver event handlers - self._receiver.ontext = function (data, flags) { - flags = flags || {}; - self.emit('message', data, flags); - }; - self._receiver.onbinary = function (data, flags) { - flags = flags || {}; - flags.binary = true; - self.emit('message', data, flags); - }; - self._receiver.onping = function(data, flags) { - flags = flags || {}; - self.pong(data, {mask: !self._isServer, binary: flags.binary === true}, true); - self.emit('ping', data, flags); - }; - self._receiver.onpong = function(data, flags) { - self.emit('pong', data, flags); - }; - self._receiver.onclose = function(code, data, flags) { - flags = flags || {}; - self.close(code, data); - }; - self._receiver.onerror = function(reason, errorCode) { - // close the connection when the receiver reports a HyBi error code - self.close(typeof errorCode != 'undefined' ? errorCode : 1002, ''); - self.emit('error', reason, errorCode); - }; - - // finalize the client - this._sender = new SenderClass(socket); - this._sender.on('error', function(error) { - self.close(1002, ''); - self.emit('error', error); - }); - this.readyState = WebSocket.OPEN; - this.emit('open'); - - socket.on('data', dataHandler); -} - -function startQueue(instance) { - instance._queue = instance._queue || []; -} - -function executeQueueSends(instance) { - var queue = instance._queue; - if (typeof queue == 'undefined') return; - delete instance._queue; - for (var i = 0, l = queue.length; i < l; ++i) { - queue[i](); - } -} - -function sendStream(instance, stream, options, cb) { - stream.on('data', function(data) { - if (instance.readyState != WebSocket.OPEN) { - if (typeof cb == 'function') cb(new Error('not opened')); - else { - delete instance._queue; - instance.emit('error', new Error('not opened')); - } - return; - } - options.fin = false; - instance._sender.send(data, options); - }); - stream.on('end', function() { - if (instance.readyState != WebSocket.OPEN) { - if (typeof cb == 'function') cb(new Error('not opened')); - else { - delete instance._queue; - instance.emit('error', new Error('not opened')); - } - return; - } - options.fin = true; - instance._sender.send(null, options); - if (typeof cb == 'function') cb(null); - }); -} - -function cleanupWebsocketResources(error) { - if (this.readyState == WebSocket.CLOSED) return; - var emitClose = this.readyState != WebSocket.CONNECTING; - this.readyState = WebSocket.CLOSED; - - clearTimeout(this._closeTimer); - this._closeTimer = null; - if (emitClose) this.emit('close', this._closeCode || 1000, this._closeMessage || ''); - - if (this._socket) { - this._socket.removeAllListeners(); - // catch all socket error after removing all standard handlers - var socket = this._socket; - this._socket.on('error', function() { - try { socket.destroy(); } catch (e) {} - }); - try { - if (!error) this._socket.end(); - else this._socket.destroy(); - } - catch (e) { /* Ignore termination errors */ } - this._socket = null; - } - if (this._sender) { - this._sender.removeAllListeners(); - this._sender = null; - } - if (this._receiver) { - this._receiver.cleanup(); - this._receiver = null; - } - this.removeAllListeners(); - this.on('error', function() {}); // catch all errors after this - delete this._queue; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocketServer.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocketServer.js deleted file mode 100644 index 5cbd195b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/WebSocketServer.js +++ /dev/null @@ -1,465 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var util = require('util') - , events = require('events') - , http = require('http') - , crypto = require('crypto') - , Options = require('options') - , WebSocket = require('./WebSocket') - , tls = require('tls') - , url = require('url'); - -/** - * WebSocket Server implementation - */ - -function WebSocketServer(options, callback) { - options = new Options({ - host: '0.0.0.0', - port: null, - server: null, - verifyClient: null, - handleProtocols: null, - path: null, - noServer: false, - disableHixie: false, - clientTracking: true - }).merge(options); - - if (!options.isDefinedAndNonNull('port') && !options.isDefinedAndNonNull('server') && !options.value.noServer) { - throw new TypeError('`port` or a `server` must be provided'); - } - - var self = this; - - if (options.isDefinedAndNonNull('port')) { - this._server = http.createServer(function (req, res) { - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.end('Not implemented'); - }); - this._server.listen(options.value.port, options.value.host, callback); - this._closeServer = function() { if (self._server) self._server.close(); }; - } - else if (options.value.server) { - this._server = options.value.server; - if (options.value.path) { - // take note of the path, to avoid collisions when multiple websocket servers are - // listening on the same http server - if (this._server._webSocketPaths && options.value.server._webSocketPaths[options.value.path]) { - throw new Error('two instances of WebSocketServer cannot listen on the same http server path'); - } - if (typeof this._server._webSocketPaths !== 'object') { - this._server._webSocketPaths = {}; - } - this._server._webSocketPaths[options.value.path] = 1; - } - } - if (this._server) this._server.once('listening', function() { self.emit('listening'); }); - - if (typeof this._server != 'undefined') { - this._server.on('error', function(error) { - self.emit('error', error) - }); - this._server.on('upgrade', function(req, socket, upgradeHead) { - //copy upgradeHead to avoid retention of large slab buffers used in node core - var head = new Buffer(upgradeHead.length); - upgradeHead.copy(head); - - self.handleUpgrade(req, socket, head, function(client) { - self.emit('connection'+req.url, client); - self.emit('connection', client); - }); - }); - } - - this.options = options.value; - this.path = options.value.path; - this.clients = []; -} - -/** - * Inherits from EventEmitter. - */ - -util.inherits(WebSocketServer, events.EventEmitter); - -/** - * Immediately shuts down the connection. - * - * @api public - */ - -WebSocketServer.prototype.close = function() { - // terminate all associated clients - var error = null; - try { - for (var i = 0, l = this.clients.length; i < l; ++i) { - this.clients[i].terminate(); - } - } - catch (e) { - error = e; - } - - // remove path descriptor, if any - if (this.path && this._server._webSocketPaths) { - delete this._server._webSocketPaths[this.path]; - if (Object.keys(this._server._webSocketPaths).length == 0) { - delete this._server._webSocketPaths; - } - } - - // close the http server if it was internally created - try { - if (typeof this._closeServer !== 'undefined') { - this._closeServer(); - } - } - finally { - delete this._server; - } - if (error) throw error; -} - -/** - * Handle a HTTP Upgrade request. - * - * @api public - */ - -WebSocketServer.prototype.handleUpgrade = function(req, socket, upgradeHead, cb) { - // check for wrong path - if (this.options.path) { - var u = url.parse(req.url); - if (u && u.pathname !== this.options.path) return; - } - - if (typeof req.headers.upgrade === 'undefined' || req.headers.upgrade.toLowerCase() !== 'websocket') { - abortConnection(socket, 400, 'Bad Request'); - return; - } - - if (req.headers['sec-websocket-key1']) handleHixieUpgrade.apply(this, arguments); - else handleHybiUpgrade.apply(this, arguments); -} - -module.exports = WebSocketServer; - -/** - * Entirely private apis, - * which may or may not be bound to a sepcific WebSocket instance. - */ - -function handleHybiUpgrade(req, socket, upgradeHead, cb) { - // handle premature socket errors - var errorHandler = function() { - try { socket.destroy(); } catch (e) {} - } - socket.on('error', errorHandler); - - // verify key presence - if (!req.headers['sec-websocket-key']) { - abortConnection(socket, 400, 'Bad Request'); - return; - } - - // verify version - var version = parseInt(req.headers['sec-websocket-version']); - if ([8, 13].indexOf(version) === -1) { - abortConnection(socket, 400, 'Bad Request'); - return; - } - - // verify protocol - var protocols = req.headers['sec-websocket-protocol']; - - // verify client - var origin = version < 13 ? - req.headers['sec-websocket-origin'] : - req.headers['origin']; - - // handler to call when the connection sequence completes - var self = this; - var completeHybiUpgrade2 = function(protocol) { - - // calc key - var key = req.headers['sec-websocket-key']; - var shasum = crypto.createHash('sha1'); - shasum.update(key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); - key = shasum.digest('base64'); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: websocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Accept: ' + key - ]; - - if (typeof protocol != 'undefined') { - headers.push('Sec-WebSocket-Protocol: ' + protocol); - } - - // allows external modification/inspection of handshake headers - self.emit('headers', headers); - - socket.setTimeout(0); - socket.setNoDelay(true); - try { - socket.write(headers.concat('', '').join('\r\n')); - } - catch (e) { - // if the upgrade write fails, shut the connection down hard - try { socket.destroy(); } catch (e) {} - return; - } - - var client = new WebSocket([req, socket, upgradeHead], { - protocolVersion: version, - protocol: protocol - }); - - if (self.options.clientTracking) { - self.clients.push(client); - client.on('close', function() { - var index = self.clients.indexOf(client); - if (index != -1) { - self.clients.splice(index, 1); - } - }); - } - - // signal upgrade complete - socket.removeListener('error', errorHandler); - cb(client); - } - - // optionally call external protocol selection handler before - // calling completeHybiUpgrade2 - var completeHybiUpgrade1 = function() { - // choose from the sub-protocols - if (typeof self.options.handleProtocols == 'function') { - var protList = (protocols || "").split(/, */); - var callbackCalled = false; - var res = self.options.handleProtocols(protList, function(result, protocol) { - callbackCalled = true; - if (!result) abortConnection(socket, 404, 'Unauthorized') - else completeHybiUpgrade2(protocol); - }); - if (!callbackCalled) { - // the handleProtocols handler never called our callback - abortConnection(socket, 501, 'Could not process protocols'); - } - return; - } else { - if (typeof protocols !== 'undefined') { - completeHybiUpgrade2(protocols.split(/, */)[0]); - } - else { - completeHybiUpgrade2(); - } - } - } - - // optionally call external client verification handler - if (typeof this.options.verifyClient == 'function') { - var info = { - origin: origin, - secure: typeof req.connection.authorized !== 'undefined' || typeof req.connection.encrypted !== 'undefined', - req: req - }; - if (this.options.verifyClient.length == 2) { - this.options.verifyClient(info, function(result, code, name) { - if (typeof code === 'undefined') code = 401; - if (typeof name === 'undefined') name = http.STATUS_CODES[code]; - - if (!result) abortConnection(socket, code, name); - else completeHybiUpgrade1(); - }); - return; - } - else if (!this.options.verifyClient(info)) { - abortConnection(socket, 401, 'Unauthorized'); - return; - } - } - - completeHybiUpgrade1(); -} - -function handleHixieUpgrade(req, socket, upgradeHead, cb) { - // handle premature socket errors - var errorHandler = function() { - try { socket.destroy(); } catch (e) {} - } - socket.on('error', errorHandler); - - // bail if options prevent hixie - if (this.options.disableHixie) { - abortConnection(socket, 401, 'Hixie support disabled'); - return; - } - - // verify key presence - if (!req.headers['sec-websocket-key2']) { - abortConnection(socket, 400, 'Bad Request'); - return; - } - - var origin = req.headers['origin'] - , self = this; - - // setup handshake completion to run after client has been verified - var onClientVerified = function() { - var wshost; - if (!req.headers['x-forwarded-host']) - wshost = req.headers.host; - else - wshost = req.headers['x-forwarded-host']; - var location = ((req.headers['x-forwarded-proto'] === 'https' || socket.encrypted) ? 'wss' : 'ws') + '://' + wshost + req.url - , protocol = req.headers['sec-websocket-protocol']; - - // handshake completion code to run once nonce has been successfully retrieved - var completeHandshake = function(nonce, rest) { - // calculate key - var k1 = req.headers['sec-websocket-key1'] - , k2 = req.headers['sec-websocket-key2'] - , md5 = crypto.createHash('md5'); - - [k1, k2].forEach(function (k) { - var n = parseInt(k.replace(/[^\d]/g, '')) - , spaces = k.replace(/[^ ]/g, '').length; - if (spaces === 0 || n % spaces !== 0){ - abortConnection(socket, 400, 'Bad Request'); - return; - } - n /= spaces; - md5.update(String.fromCharCode( - n >> 24 & 0xFF, - n >> 16 & 0xFF, - n >> 8 & 0xFF, - n & 0xFF)); - }); - md5.update(nonce.toString('binary')); - - var headers = [ - 'HTTP/1.1 101 Switching Protocols' - , 'Upgrade: WebSocket' - , 'Connection: Upgrade' - , 'Sec-WebSocket-Location: ' + location - ]; - if (typeof protocol != 'undefined') headers.push('Sec-WebSocket-Protocol: ' + protocol); - if (typeof origin != 'undefined') headers.push('Sec-WebSocket-Origin: ' + origin); - - socket.setTimeout(0); - socket.setNoDelay(true); - try { - // merge header and hash buffer - var headerBuffer = new Buffer(headers.concat('', '').join('\r\n')); - var hashBuffer = new Buffer(md5.digest('binary'), 'binary'); - var handshakeBuffer = new Buffer(headerBuffer.length + hashBuffer.length); - headerBuffer.copy(handshakeBuffer, 0); - hashBuffer.copy(handshakeBuffer, headerBuffer.length); - - // do a single write, which - upon success - causes a new client websocket to be setup - socket.write(handshakeBuffer, 'binary', function(err) { - if (err) return; // do not create client if an error happens - var client = new WebSocket([req, socket, rest], { - protocolVersion: 'hixie-76', - protocol: protocol - }); - if (self.options.clientTracking) { - self.clients.push(client); - client.on('close', function() { - var index = self.clients.indexOf(client); - if (index != -1) { - self.clients.splice(index, 1); - } - }); - } - - // signal upgrade complete - socket.removeListener('error', errorHandler); - cb(client); - }); - } - catch (e) { - try { socket.destroy(); } catch (e) {} - return; - } - } - - // retrieve nonce - var nonceLength = 8; - if (upgradeHead && upgradeHead.length >= nonceLength) { - var nonce = upgradeHead.slice(0, nonceLength); - var rest = upgradeHead.length > nonceLength ? upgradeHead.slice(nonceLength) : null; - completeHandshake.call(self, nonce, rest); - } - else { - // nonce not present in upgradeHead, so we must wait for enough data - // data to arrive before continuing - var nonce = new Buffer(nonceLength); - upgradeHead.copy(nonce, 0); - var received = upgradeHead.length; - var rest = null; - var handler = function (data) { - var toRead = Math.min(data.length, nonceLength - received); - if (toRead === 0) return; - data.copy(nonce, received, 0, toRead); - received += toRead; - if (received == nonceLength) { - socket.removeListener('data', handler); - if (toRead < data.length) rest = data.slice(toRead); - completeHandshake.call(self, nonce, rest); - } - } - socket.on('data', handler); - } - } - - // verify client - if (typeof this.options.verifyClient == 'function') { - var info = { - origin: origin, - secure: typeof req.connection.authorized !== 'undefined' || typeof req.connection.encrypted !== 'undefined', - req: req - }; - if (this.options.verifyClient.length == 2) { - var self = this; - this.options.verifyClient(info, function(result, code, name) { - if (typeof code === 'undefined') code = 401; - if (typeof name === 'undefined') name = http.STATUS_CODES[code]; - - if (!result) abortConnection(socket, code, name); - else onClientVerified.apply(self); - }); - return; - } - else if (!this.options.verifyClient(info)) { - abortConnection(socket, 401, 'Unauthorized'); - return; - } - } - - // no client verification required - onClientVerified(); -} - -function abortConnection(socket, code, name) { - try { - var response = [ - 'HTTP/1.1 ' + code + ' ' + name, - 'Content-type: text/html' - ]; - socket.write(response.concat('', '').join('\r\n')); - } - catch (e) { /* ignore errors - we've aborted this connection */ } - finally { - // ensure that an early aborted connection is shut down completely - try { socket.destroy(); } catch (e) {} - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/browser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/browser.js deleted file mode 100644 index 8d3a755c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/lib/browser.js +++ /dev/null @@ -1,43 +0,0 @@ - -/** - * Module dependencies. - */ - -var global = (function() { return this; })(); - -/** - * WebSocket constructor. - */ - -var WebSocket = global.WebSocket || global.MozWebSocket; - -/** - * Module exports. - */ - -module.exports = WebSocket ? ws : null; - -/** - * WebSocket constructor. - * - * The third `opts` options object gets ignored in web browsers, since it's - * non-standard, and throws a TypeError if passed to the constructor. - * See: https://github.com/einaros/ws/issues/227 - * - * @param {String} uri - * @param {Array} protocols (optional) - * @param {Object) opts (optional) - * @api public - */ - -function ws(uri, protocols, opts) { - var instance; - if (protocols) { - instance = new WebSocket(uri, protocols); - } else { - instance = new WebSocket(uri); - } - return instance; -} - -if (WebSocket) ws.prototype = WebSocket.prototype; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/Readme.md deleted file mode 100644 index d1644012..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/Readme.md +++ /dev/null @@ -1,195 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineapple'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineapple - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .outputHelp() - - Output help information without exiting. - -## .help() - - Output help information and exit immediately. - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/index.js deleted file mode 100644 index 790a7519..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/index.js +++ /dev/null @@ -1,851 +0,0 @@ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var spawn = require('child_process').spawn; -var fs = require('fs'); -var exists = fs.existsSync; -var path = require('path'); -var dirname = path.dirname; -var basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description || ''; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this._execs = []; - this._args = []; - this._name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @param {String} [desc] - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name, desc){ - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - if (desc) cmd.description(desc); - if (desc) this.executables = true; - if (desc) this._execs[cmd._name] = true; - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - if (desc) return this; - return cmd; -}; - -/** - * Add an implicit `help [cmd]` subcommand - * which invokes `--help` for the given command. - * - * @api private - */ - -Command.prototype.addImplicitHelpCommand = function() { - this.command('help [cmd]', 'display help for [cmd]'); -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self._args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self._args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - this.parent.on(this._name, function(args, unknown){ - // Parse any so-far unknown options - unknown = unknown || []; - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - // Leftover arguments need to be pushed back. Fixes issue #56 - if (parsed.args.length) args = parsed.args.concat(args); - - self._args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self._args.length) { - args[self._args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to false - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => true - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null != val && fn) val = fn(val); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // implicit help - if (this.executables) this.addImplicitHelpCommand(); - - // store raw args - this.rawArgs = argv; - - // guess name - this._name = this._name || basename(argv[1]); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - var args = this.args = parsed.args; - - var result = this.parseArgs(this.args, parsed.unknown); - - // executable sub-commands - var name = result.args[0]; - if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); - - return result; -}; - -/** - * Execute a sub-command executable. - * - * @param {Array} argv - * @param {Array} args - * @param {Array} unknown - * @api private - */ - -Command.prototype.executeSubCommand = function(argv, args, unknown) { - args = args.concat(unknown); - - if (!args.length) this.help(); - if ('help' == args[0] && 1 == args.length) this.help(); - - // --help - if ('help' == args[0]) { - args[0] = args[1]; - args[1] = '--help'; - } - - // executable - var dir = dirname(argv[1]); - var bin = basename(argv[1]) + '-' + args[0]; - - // check for ./ first - var local = path.join(dir, bin); - - // run it - args = args.slice(1); - var proc = spawn(local, args, { stdio: 'inherit', customFds: [0, 1, 2] }); - proc.on('error', function(err){ - if (err.code == "ENOENT") { - console.error('\n %s(1) does not exist, try --help\n', bin); - } else if (err.code == "EACCES") { - console.error('\n %s(1) not executable. try chmod or run with root\n', bin); - } - }); - - this.runningCommand = proc; -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * This also normalizes equal sign and splits "--abc=def" into "--abc def". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg - , lastOpt - , index; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - i > 0 && (lastOpt = this.optionFor(args[i-1])); - - if (lastOpt && lastOpt.required) { - ret.push(arg); - } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { - ret.push(arg.slice(0, index), arg.slice(index + 1)); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || ('-' == arg[0] && '-' != arg)) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this._args.length ? ' ' + args : ''); - - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return pad(cmd._name - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args, 22) - + (cmd.description() - ? ' ' + cmd.description() - : ''); - }).join('\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this._name + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Output help information for this command - * - * @api public - */ - -Command.prototype.outputHelp = function(){ - process.stdout.write(this.helpInformation()); - this.emit('--help'); -}; - -/** - * Output help information and exit. - * - * @api public - */ - -Command.prototype.help = function(){ - this.outputHelp(); - process.exit(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - cmd.outputHelp(); - process.exit(0); - } - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json deleted file mode 100644 index ec8239f1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/commander/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "commander", - "version": "2.1.0", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/visionmedia/commander.js.git" - }, - "devDependencies": { - "should": ">= 0.0.1" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "engines": { - "node": ">= 0.6.x" - }, - "files": [ - "index.js" - ], - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "homepage": "https://github.com/visionmedia/commander.js", - "_id": "commander@2.1.0", - "dist": { - "shasum": "d121bbae860d9992a3d517ba96f56588e47c6781", - "tarball": "http://registry.npmjs.org/commander/-/commander-2.1.0.tgz" - }, - "_from": "commander@>=2.1.0 <2.2.0", - "_npmVersion": "1.3.14", - "_npmUser": { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - }, - "maintainers": [ - { - "name": "tjholowaychuk", - "email": "tj@vision-media.ca" - } - ], - "directories": {}, - "_shasum": "d121bbae860d9992a3d517ba96f56588e47c6781", - "_resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/.dntrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/.dntrc deleted file mode 100644 index 1c3e6243..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/.dntrc +++ /dev/null @@ -1,36 +0,0 @@ -## DNT config file -## see https://github.com/rvagg/dnt - -NODE_VERSIONS="\ - master \ - v0.11.13 \ - v0.11.10 \ - v0.11.9 \ - v0.11.8 \ - v0.11.7 \ - v0.11.6 \ - v0.11.5 \ - v0.11.4 \ - v0.10.26 \ - v0.10.25 \ - v0.10.24 \ - v0.10.23 \ - v0.10.22 \ - v0.10.21 \ - v0.10.20 \ - v0.10.19 \ - v0.10.18 \ - v0.8.26 \ - v0.8.25 \ - v0.8.24 \ - v0.8.23 \ - v0.8.22 \ -" -OUTPUT_PREFIX="nan-" -TEST_CMD="\ - cd /dnt/test/ && \ - npm install && \ - node_modules/.bin/node-gyp --nodedir /usr/src/node/ rebuild && \ - node_modules/.bin/tap --gc js/*-test.js; \ -" - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/LICENSE deleted file mode 100644 index d502e18a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/LICENSE +++ /dev/null @@ -1,46 +0,0 @@ -Copyright 2013, NAN contributors: - - Rod Vagg - - Benjamin Byholm - - Trevor Norris - - Nathan Rajlich - - Brett Lawson - - Ben Noordhuis -(the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/README.md deleted file mode 100644 index 7c8d6883..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/README.md +++ /dev/null @@ -1,947 +0,0 @@ -Native Abstractions for Node.js -=============================== - -**A header file filled with macro and utility goodness for making add-on development for Node.js easier across versions 0.8, 0.10 and 0.11, and eventually 0.12.** - -***Current version: 1.0.0*** *(See [nan.h](https://github.com/rvagg/nan/blob/master/nan.h) for complete ChangeLog)* - -[![NPM](https://nodei.co/npm/nan.png?downloads=true)](https://nodei.co/npm/nan/) [![NPM](https://nodei.co/npm-dl/nan.png?months=6)](https://nodei.co/npm/nan/) - -Thanks to the crazy changes in V8 (and some in Node core), keeping native addons compiling happily across versions, particularly 0.10 to 0.11/0.12, is a minor nightmare. The goal of this project is to store all logic necessary to develop native Node.js addons without having to inspect `NODE_MODULE_VERSION` and get yourself into a macro-tangle. - -This project also contains some helper utilities that make addon development a bit more pleasant. - - * **[News & Updates](#news)** - * **[Usage](#usage)** - * **[Example](#example)** - * **[API](#api)** - - -## News & Updates - -### May-2013: Major changes for V8 3.25 / Node 0.11.13 - -Node 0.11.11 and 0.11.12 were both broken releases for native add-ons, you simply can't properly compile against either of them for different reasons. But we now have a 0.11.13 release that jumps a couple of versions of V8 ahead and includes some more, major (traumatic) API changes. - -Because we are now nearing Node 0.12 and estimate that the version of V8 we are using in Node 0.11.13 will be close to the API we get for 0.12, we have taken the opportunity to not only *fix* NAN for 0.11.13 but make some major changes to improve the NAN API. - -We have **removed support for Node 0.11 versions prior to 0.11.13**, (although our tests are still passing for 0.11.10). As usual, our tests are run against (and pass) the last 5 versions of Node 0.8 and Node 0.10. We also include Node 0.11.13 obviously. - -The major change is something that [Benjamin Byholm](kkoopa) has put many hours in to. We now have a fantastic new `NanNew(args)` interface for creating new `Local`s, this replaces `NanNewLocal()` and much more. If you look in [./nan.h](nan.h) you'll see a large number of overloaded versions of this method. In general you should be able to `NanNew(arguments)` for any type you want to make a `Local` from. This includes `Persistent` types, so we now have a `Local NanNew(const Persistent arg)` to replace `NanPersistentToLocal()`. - -We also now have `NanUndefined()`, `NanNull()`, `NanTrue()` and `NanFalse()`. Mainly because of the new requirement for an `Isolate` argument for each of the native V8 versions of this. - -V8 has now introduced an `EscapableHandleScope` from which you `scope.Escape(Local value)` to *return* a value from a one scope to another. This replaces the standard `HandleScope` and `scope.Close(Local value)`, although `HandleScope` still exists for when you don't need to return a handle to the caller. For NAN we are exposing it as `NanEscapableScope()` and `NanEscapeScope()`, while `NanScope()` is still how you create a new scope that doesn't need to return handles. For older versions of Node/V8, it'll still map to the older `HandleScope` functionality. - -`NanFromV8String()` was deprecated and has now been removed. You should use `NanCString()` or `NanRawString()` instead. - -Because `node::MakeCallback()` now takes an `Isolate`, and because it doesn't exist in older versions of Node, we've introduced `NanMakeCallabck()`. You should *always* use this when calling a JavaScript function from C++. - -There's lots more, check out the Changelog in nan.h or look through [#86](https://github.com/rvagg/nan/pull/86) for all the gory details. - -### Dec-2013: NanCString and NanRawString - -Two new functions have been introduced to replace the functionality that's been provided by `NanFromV8String` until now. NanCString has sensible defaults so it's super easy to fetch a null-terminated c-style string out of a `v8::String`. `NanFromV8String` is still around and has defaults that allow you to pass a single handle to fetch a `char*` while `NanRawString` requires a little more attention to arguments. - -### Nov-2013: Node 0.11.9+ breaking V8 change - -The version of V8 that's shipping with Node 0.11.9+ has changed the signature for new `Local`s to: `v8::Local::New(isolate, value)`, i.e. introducing the `isolate` argument and therefore breaking all new `Local` declarations for previous versions. NAN 0.6+ now includes a `NanNewLocal(value)` that can be used in place to work around this incompatibility and maintain compatibility with 0.8->0.11.9+ (minus a few early 0.11 releases). - -For example, if you wanted to return a `null` on a callback you will have to change the argument from `v8::Local::New(v8::Null())` to `NanNewLocal(v8::Null())`. - -### Nov-2013: Change to binding.gyp `"include_dirs"` for NAN - -Inclusion of NAN in a project's binding.gyp is now greatly simplified. You can now just use `" -## Usage - -Simply add **NAN** as a dependency in the *package.json* of your Node addon: - -``` bash -$ npm install --save nan -``` - -Pull in the path to **NAN** in your *binding.gyp* so that you can use `#include ` in your *.cpp* files: - -``` python -"include_dirs" : [ - "` when compiling your addon. - - -## Example - -See **[LevelDOWN](https://github.com/rvagg/node-leveldown/pull/48)** for a full example of **NAN** in use. - -For a simpler example, see the **[async pi estimation example](https://github.com/rvagg/nan/tree/master/examples/async_pi_estimate)** in the examples directory for full code and an explanation of what this Monte Carlo Pi estimation example does. Below are just some parts of the full example that illustrate the use of **NAN**. - -Compare to the current 0.10 version of this example, found in the [node-addon-examples](https://github.com/rvagg/node-addon-examples/tree/master/9_async_work) repository and also a 0.11 version of the same found [here](https://github.com/kkoopa/node-addon-examples/tree/5c01f58fc993377a567812597e54a83af69686d7/9_async_work). - -Note that there is no embedded version sniffing going on here and also the async work is made much simpler, see below for details on the `NanAsyncWorker` class. - -```c++ -// addon.cc -#include -#include -// ... - -using v8::FunctionTemplate; -using v8::Handle; -using v8::Object; - -void InitAll(Handle exports) { - exports->Set(NanSymbol("calculateSync"), - NanNew(CalculateSync)->GetFunction()); - - exports->Set(NanSymbol("calculateAsync"), - NanNew(CalculateAsync)->GetFunction()); -} - -NODE_MODULE(addon, InitAll) -``` - -```c++ -// sync.h -#include -#include - -NAN_METHOD(CalculateSync); -``` - -```c++ -// sync.cc -#include -#include -#include "./sync.h" -// ... - -using v8::Number; - -// Simple synchronous access to the `Estimate()` function -NAN_METHOD(CalculateSync) { - NanScope(); - - // expect a number as the first argument - int points = args[0]->Uint32Value(); - double est = Estimate(points); - - NanReturnValue(NanNew(est)); -} -``` - -```c++ -// async.cc -#include -#include -#include "./async.h" - -// ... - -using v8::Function; -using v8::Local; -using v8::Null; -using v8::Number; -using v8::Value; - -class PiWorker : public NanAsyncWorker { - public: - PiWorker(NanCallback *callback, int points) - : NanAsyncWorker(callback), points(points) {} - ~PiWorker() {} - - // Executed inside the worker-thread. - // It is not safe to access V8, or V8 data structures - // here, so everything we need for input and output - // should go on `this`. - void Execute () { - estimate = Estimate(points); - } - - // Executed when the async work is complete - // this function will be run inside the main event loop - // so it is safe to use V8 again - void HandleOKCallback () { - NanScope(); - - Local argv[] = { - NanNew(NanNull()) - , NanNew(estimate) - }; - - callback->Call(2, argv); - }; - - private: - int points; - double estimate; -}; - -// Asynchronous access to the `Estimate()` function -NAN_METHOD(CalculateAsync) { - NanScope(); - - int points = args[0]->Uint32Value(); - NanCallback *callback = new NanCallback(args[1].As()); - - NanAsyncQueueWorker(new PiWorker(callback, points)); - NanReturnUndefined(); -} -``` - - -## API - - * NAN_METHOD - * NAN_GETTER - * NAN_SETTER - * NAN_PROPERTY_GETTER - * NAN_PROPERTY_SETTER - * NAN_PROPERTY_ENUMERATOR - * NAN_PROPERTY_DELETER - * NAN_PROPERTY_QUERY - * NAN_INDEX_GETTER - * NAN_INDEX_SETTER - * NAN_INDEX_ENUMERATOR - * NAN_INDEX_DELETER - * NAN_INDEX_QUERY - * NAN_WEAK_CALLBACK - * NAN_DEPRECATED - * NAN_INLINE - * NanNew - * NanUndefined - * NanNull - * NanTrue - * NanFalse - * NanReturnValue - * NanReturnUndefined - * NanReturnNull - * NanReturnEmptyString - * NanScope - * NanEscapableScope - * NanEscapeScope - * NanLocker - * NanUnlocker - * NanGetInternalFieldPointer - * NanSetInternalFieldPointer - * NanObjectWrapHandle - * NanSymbol - * NanGetPointerSafe - * NanSetPointerSafe - * NanRawString - * NanCString - * NanBooleanOptionValue - * NanUInt32OptionValue - * NanError, NanTypeError, NanRangeError - * NanThrowError, NanThrowTypeError, NanThrowRangeError, NanThrowError(Handle), NanThrowError(Handle, int) - * NanNewBufferHandle(char *, size_t, FreeCallback, void *), NanNewBufferHandle(char *, uint32_t), NanNewBufferHandle(uint32_t) - * NanBufferUse(char *, uint32_t) - * NanNewContextHandle - * NanGetCurrentContext - * NanHasInstance - * NanDisposePersistent - * NanAssignPersistent - * NanMakeWeakPersistent - * NanSetTemplate - * NanMakeCallback - * NanCompileScript - * NanRunScript - * NanAdjustExternalMemory - * NanAddGCEpilogueCallback - * NanAddGCPrologueCallback - * NanRemoveGCEpilogueCallback - * NanRemoveGCPrologueCallback - * NanGetHeapStatistics - * NanCallback - * NanAsyncWorker - * NanAsyncQueueWorker - - -### NAN_METHOD(methodname) - -Use `NAN_METHOD` to define your V8 accessible methods: - -```c++ -// .h: -class Foo : public node::ObjectWrap { - ... - - static NAN_METHOD(Bar); - static NAN_METHOD(Baz); -} - - -// .cc: -NAN_METHOD(Foo::Bar) { - ... -} - -NAN_METHOD(Foo::Baz) { - ... -} -``` - -The reason for this macro is because of the method signature change in 0.11: - -```c++ -// 0.10 and below: -Handle name(const Arguments& args) - -// 0.11 and above -void name(const FunctionCallbackInfo& args) -``` - -The introduction of `FunctionCallbackInfo` brings additional complications: - - -### NAN_GETTER(methodname) - -Use `NAN_GETTER` to declare your V8 accessible getters. You get a `Local` `property` and an appropriately typed `args` object that can act like the `args` argument to a `NAN_METHOD` call. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_GETTER`. - - -### NAN_SETTER(methodname) - -Use `NAN_SETTER` to declare your V8 accessible setters. Same as `NAN_GETTER` but you also get a `Local` `value` object to work with. - - -### NAN_PROPERTY_GETTER(cbname) -Use `NAN_PROPERTY_GETTER` to declare your V8 accessible property getters. You get a `Local` `property` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_GETTER`. - - -### NAN_PROPERTY_SETTER(cbname) -Use `NAN_PROPERTY_SETTER` to declare your V8 accessible property setters. Same as `NAN_PROPERTY_GETTER` but you also get a `Local` `value` object to work with. - - -### NAN_PROPERTY_ENUMERATOR(cbname) -Use `NAN_PROPERTY_ENUMERATOR` to declare your V8 accessible property enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_PROPERTY_GETTER` call. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_ENUMERATOR`. - - -### NAN_PROPERTY_DELETER(cbname) -Use `NAN_PROPERTY_DELETER` to declare your V8 accessible property deleters. Same as `NAN_PROPERTY_GETTER`. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_DELETER`. - - -### NAN_PROPERTY_QUERY(cbname) -Use `NAN_PROPERTY_QUERY` to declare your V8 accessible property queries. Same as `NAN_PROPERTY_GETTER`. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_PROPERTY_QUERY`. - - -### NAN_INDEX_GETTER(cbname) -Use `NAN_INDEX_GETTER` to declare your V8 accessible index getters. You get a `uint32_t` `index` and an appropriately typed `args` object that can act similar to the `args` argument to a `NAN_METHOD` call. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_GETTER`. - - -### NAN_INDEX_SETTER(cbname) -Use `NAN_INDEX_SETTER` to declare your V8 accessible index setters. Same as `NAN_INDEX_GETTER` but you also get a `Local` `value` object to work with. - - -### NAN_INDEX_ENUMERATOR(cbname) -Use `NAN_INDEX_ENUMERATOR` to declare your V8 accessible index enumerators. You get an appropriately typed `args` object like the `args` argument to a `NAN_INDEX_GETTER` call. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_ENUMERATOR`. - - -### NAN_INDEX_DELETER(cbname) -Use `NAN_INDEX_DELETER` to declare your V8 accessible index deleters. Same as `NAN_INDEX_GETTER`. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_DELETER`. - - -### NAN_INDEX_QUERY(cbname) -Use `NAN_INDEX_QUERY` to declare your V8 accessible index queries. Same as `NAN_INDEX_GETTER`. - -You can use `NanReturnNull()`, `NanReturnEmptyString()`, `NanReturnUndefined()` and `NanReturnValue()` in a `NAN_INDEX_QUERY`. - - -### NAN_WEAK_CALLBACK(cbname) - -Use `NAN_WEAK_CALLBACK` to define your V8 WeakReference callbacks. Do not use for declaration. There is an argument object `const _NanWeakCallbackData &data` allowing access to the weak object and the supplied parameter through its `GetValue` and `GetParameter` methods. - -```c++ -NAN_WEAK_CALLBACK(weakCallback) { - int *parameter = data.GetParameter(); - NanMakeCallback(NanGetCurrentContext()->Global(), data.GetValue(), 0, NULL); - if ((*parameter)++ == 0) { - data.Revive(); - } else { - delete parameter; - data.Dispose(); - } -} -``` - - -### NAN_DEPRECATED -Declares a function as deprecated. - -```c++ -static NAN_DEPRECATED NAN_METHOD(foo) { - ... -} -``` - - -### NAN_INLINE -Inlines a function. - -```c++ -NAN_INLINE int foo(int bar) { - ... -} -``` - - -### Local<T> NanNew<T>( ... ) - -Use `NanNew` to construct almost all v8 objects and make new local handles. - -```c++ -Local s = NanNew("value"); - -... - -Persistent o; - -... - -Local lo = NanNew(o); - -``` - - -### Handle<Primitive> NanUndefined() - -Use instead of `Undefined()` - - -### Handle<Primitive> NanNull() - -Use instead of `Null()` - - -### Handle<Primitive> NanTrue() - -Use instead of `True()` - - -### Handle<Primitive> NanFalse() - -Use instead of `False()` - - -### NanReturnValue(Handle<Value>) - -Use `NanReturnValue` when you want to return a value from your V8 accessible method: - -```c++ -NAN_METHOD(Foo::Bar) { - ... - - NanReturnValue(NanNew("FooBar!")); -} -``` - -No `return` statement required. - - -### NanReturnUndefined() - -Use `NanReturnUndefined` when you don't want to return anything from your V8 accessible method: - -```c++ -NAN_METHOD(Foo::Baz) { - ... - - NanReturnUndefined(); -} -``` - - -### NanReturnNull() - -Use `NanReturnNull` when you want to return `Null` from your V8 accessible method: - -```c++ -NAN_METHOD(Foo::Baz) { - ... - - NanReturnNull(); -} -``` - - -### NanReturnEmptyString() - -Use `NanReturnEmptyString` when you want to return an empty `String` from your V8 accessible method: - -```c++ -NAN_METHOD(Foo::Baz) { - ... - - NanReturnEmptyString(); -} -``` - - -### NanScope() - -The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanScope()` necessary, use it in place of `HandleScope scope`: - -```c++ -NAN_METHOD(Foo::Bar) { - NanScope(); - - NanReturnValue(NanNew("FooBar!")); -} -``` - - -### NanEscapableScope() - -The separation of handle scopes into escapable and inescapable scopes makes `NanEscapableScope()` necessary, use it in place of `HandleScope scope` when you later wish to `Close()` the scope: - -```c++ -Handle Foo::Bar() { - NanEscapableScope(); - - return NanEscapeScope(NanNew("FooBar!")); -} -``` - - -### Local<T> NanEscapeScope(Handle<T> value); -Use together with `NanEscapableScope` to escape the scope. Corresponds to `HandleScope::Close` or `EscapableHandleScope::Escape`. - - -### NanLocker() - -The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanLocker()` necessary, use it in place of `Locker locker`: - -```c++ -NAN_METHOD(Foo::Bar) { - NanLocker(); - ... - NanUnlocker(); -} -``` - - -### NanUnlocker() - -The introduction of `isolate` references for many V8 calls in Node 0.11 makes `NanUnlocker()` necessary, use it in place of `Unlocker unlocker`: - -```c++ -NAN_METHOD(Foo::Bar) { - NanLocker(); - ... - NanUnlocker(); -} -``` - - -### void * NanGetInternalFieldPointer(Handle<Object>, int) - -Gets a pointer to the internal field with at `index` from a V8 `Object` handle. - -```c++ -Local obj; -... -NanGetInternalFieldPointer(obj, 0); -``` - -### void NanSetInternalFieldPointer(Handle<Object>, int, void *) - -Sets the value of the internal field at `index` on a V8 `Object` handle. - -```c++ -static Persistent dataWrapperCtor; -... -Local wrapper = NanPersistentToLocal(dataWrapperCtor)->NewInstance(); -NanSetInternalFieldPointer(wrapper, 0, this); -``` - - -### Local<Object> NanObjectWrapHandle(Object) - -When you want to fetch the V8 object handle from a native object you've wrapped with Node's `ObjectWrap`, you should use `NanObjectWrapHandle`: - -```c++ -NanObjectWrapHandle(iterator)->Get(NanSymbol("end")) -``` - - -### String NanSymbol(char *) - -Use to create string symbol objects (i.e. `v8::String::NewSymbol(x)`), for getting and setting object properties, or names of objects. - -```c++ -bool foo = false; -if (obj->Has(NanSymbol("foo"))) - foo = optionsObj->Get(NanSymbol("foo"))->BooleanValue() -``` - - -### Type NanGetPointerSafe(Type *[, Type]) - -A helper for getting values from optional pointers. If the pointer is `NULL`, the function returns the optional default value, which defaults to `0`. Otherwise, the function returns the value the pointer points to. - -```c++ -char *plugh(uint32_t *optional) { - char res[] = "xyzzy"; - uint32_t param = NanGetPointerSafe(optional, 0x1337); - switch (param) { - ... - } - NanSetPointerSafe(optional, 0xDEADBEEF); -} -``` - - -### bool NanSetPointerSafe(Type *, Type) - -A helper for setting optional argument pointers. If the pointer is `NULL`, the function simply returns `false`. Otherwise, the value is assigned to the variable the pointer points to. - -```c++ -const char *plugh(size_t *outputsize) { - char res[] = "xyzzy"; - if !(NanSetPointerSafe(outputsize, strlen(res) + 1)) { - ... - } - - ... -} -``` - - -### void* NanRawString(Handle<Value>, enum Nan::Encoding, size_t *, void *, size_t, int) - -When you want to convert a V8 `String` to a `char*` buffer, use `NanRawString`. You have to supply an encoding as well as a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows setting `String::WriteOptions`. -Just remember that you'll end up with an object that you'll need to `delete[]` at some point unless you supply your own buffer: - -```c++ -size_t count; -void* decoded = NanRawString(args[1], Nan::BASE64, &count, NULL, 0, String::HINT_MANY_WRITES_EXPECTED); -char param_copy[count]; -memcpy(param_copy, decoded, count); -delete[] decoded; -``` - - -### char* NanCString(Handle<Value>, size_t *[, char *, size_t, int]) - -When you want to convert a V8 `String` to a null-terminated C `char*` use `NanCString`. The resulting `char*` will be UTF-8-encoded, and you need to supply a pointer to a variable that will be assigned the number of bytes in the returned string. It is also possible to supply a buffer and its length to the function in order not to have a new buffer allocated. The final argument allows optionally setting `String::WriteOptions`, which default to `v8::String::NO_OPTIONS`. -Just remember that you'll end up with an object that you'll need to `delete[]` at some point unless you supply your own buffer: - -```c++ -size_t count; -char* name = NanCString(args[0], &count); -``` - - -### bool NanBooleanOptionValue(Handle<Value>, Handle<String>[, bool]) - -When you have an "options" object that you need to fetch properties from, boolean options can be fetched with this pair. They check first if the object exists (`IsEmpty`), then if the object has the given property (`Has`) then they get and convert/coerce the property to a `bool`. - -The optional last parameter is the *default* value, which is `false` if left off: - -```c++ -// `foo` is false unless the user supplies a truthy value for it -bool foo = NanBooleanOptionValue(optionsObj, NanSymbol("foo")); -// `bar` is true unless the user supplies a falsy value for it -bool bar = NanBooleanOptionValueDefTrue(optionsObj, NanSymbol("bar"), true); -``` - - -### uint32_t NanUInt32OptionValue(Handle<Value>, Handle<String>, uint32_t) - -Similar to `NanBooleanOptionValue`, use `NanUInt32OptionValue` to fetch an integer option from your options object. Can be any kind of JavaScript `Number` and it will be coerced to an unsigned 32-bit integer. - -Requires all 3 arguments as a default is not optional: - -```c++ -uint32_t count = NanUInt32OptionValue(optionsObj, NanSymbol("count"), 1024); -``` - - -### NanError(message), NanTypeError(message), NanRangeError(message) - -For making `Error`, `TypeError` and `RangeError` objects. - -```c++ -Local res = NanError("you must supply a callback argument"); -``` - - -### NanThrowError(message), NanThrowTypeError(message), NanThrowRangeError(message), NanThrowError(Local<Value>), NanThrowError(Local<Value>, int) - -For throwing `Error`, `TypeError` and `RangeError` objects. You should `return` this call: - -```c++ -return NanThrowError("you must supply a callback argument"); -``` - -Can also handle any custom object you may want to throw. If used with the error code argument, it will add the supplied error code to the error object as a property called `code`. - - -### Local<Object> NanNewBufferHandle(char *, uint32_t), Local<Object> NanNewBufferHandle(uint32_t) - -The `Buffer` API has changed a little in Node 0.11, this helper provides consistent access to `Buffer` creation: - -```c++ -NanNewBufferHandle((char*)value.data(), value.size()); -``` - -Can also be used to initialize a `Buffer` with just a `size` argument. - -Can also be supplied with a `NanFreeCallback` and a hint for the garbage collector. - - -### Local<Object> NanBufferUse(char*, uint32_t) - -`Buffer::New(char*, uint32_t)` prior to 0.11 would make a copy of the data. -While it was possible to get around this, it required a shim by passing a -callback. So the new API `Buffer::Use(char*, uint32_t)` was introduced to remove -needing to use this shim. - -`NanBufferUse` uses the `char*` passed as the backing data, and will free the -memory automatically when the weak callback is called. Keep this in mind, as -careless use can lead to "double free or corruption" and other cryptic failures. - - -### bool NanHasInstance(Persistent<FunctionTemplate>&, Handle<Value>) - -Can be used to check the type of an object to determine it is of a particular class you have already defined and have a `Persistent` handle for. - - -### Local<Context> NanNewContextHandle([ExtensionConfiguration*, Handle<ObjectTemplate>, Handle<Value>]) -Creates a new `Local` handle. - -```c++ -Local ftmpl = NanNew(); -Local otmpl = ftmpl->InstanceTemplate(); -Local ctx = NanNewContextHandle(NULL, otmpl); -``` - - -### Local NanGetCurrentContext() - -Gets the current context. - -```c++ -Local ctx = NanGetCurrentContext(); -``` - - -### void NanDisposePersistent(Persistent<T> &) - -Use `NanDisposePersistent` to dispose a `Persistent` handle. - -```c++ -NanDisposePersistent(persistentHandle); -``` - - -### NanAssignPersistent(type, handle, object) - -Use `NanAssignPersistent` to assign a non-`Persistent` handle to a `Persistent` one. You can no longer just declare a `Persistent` handle and assign directly to it later, you have to `Reset` it in Node 0.11, so this makes it easier. - -In general it is now better to place anything you want to protect from V8's garbage collector as properties of a generic `Object` and then assign that to a `Persistent`. This works in older versions of Node also if you use `NanAssignPersistent`: - -```c++ -Persistent persistentHandle; - -... - -Local obj = NanNew(); -obj->Set(NanSymbol("key"), keyHandle); // where keyHandle might be a Local -NanAssignPersistent(Object, persistentHandle, obj) -``` - - -### NanMakeWeakPersistent(Handle<T> handle, P* parameter, _NanWeakCallbackInfo<T, P>::Callback callback) - -Creates a weak persistent handle with the supplied parameter and `NAN_WEAK_CALLBACK`. The callback has to be fully specialized to work on all versions of Node. - -```c++ -NAN_WEAK_CALLBACK(weakCallback) { - -... - -} - -Local func; - -... - -int *parameter = new int(0); -NanMakeWeakPersistent(func, parameter, &weakCallback); -``` - - -### NanSetTemplate(templ, name, value) - -Use to add properties on object and function templates. - - -### NanMakeCallback(target, func, argc, argv) - -Use instead of `node::MakeCallback` to call javascript functions. This is the only proper way of calling functions. - - -### NanCompileScript(Handle s [, const ScriptOrigin& origin]) - -Use to create new scripts bound to the current context. - - -### NanRunScript(script) - -Use to run both bound and unbound scripts. - - -### NanAdjustExternalMemory(int change_in_bytes) - -Simply does `AdjustAmountOfExternalAllocatedMemory` - - -### NanAddGCEpilogueCallback(GCEpilogueCallback callback, GCType gc_type_filter=kGCTypeAll) - -Simply does `AddGCEpilogueCallback` - - -### NanAddGCPrologueCallback(GCPrologueCallback callback, GCType gc_type_filter=kGCTypeAll) - -Simply does `AddGCPrologueCallback` - - -### NanRemoveGCEpilogueCallback(GCEpilogueCallback callback) - -Simply does `RemoveGCEpilogueCallback` - - -### NanRemoveGCPrologueCallback(GCPrologueCallback callback) - -Simply does `RemoveGCPrologueCallback` - - -### NanGetHeapStatistics(HeapStatistics *heap_statistics) - -Simply does `GetHeapStatistics` - - -### NanCallback - -Because of the difficulties imposed by the changes to `Persistent` handles in V8 in Node 0.11, creating `Persistent` versions of your `Handle` is annoyingly tricky. `NanCallback` makes it easier by taking your handle, making it persistent until the `NanCallback` is deleted and even providing a handy `Call()` method to fetch and execute the callback `Function`. - -```c++ -Local callbackHandle = args[0].As(); -NanCallback *callback = new NanCallback(callbackHandle); -// pass `callback` around and it's safe from GC until you: -delete callback; -``` - -You can execute the callback like so: - -```c++ -// no arguments: -callback->Call(0, NULL); - -// an error argument: -Handle argv[] = { - NanError(NanNew("fail!")) -}; -callback->Call(1, argv); - -// a success argument: -Handle argv[] = { - NanNull(), - NanNew("w00t!") -}; -callback->Call(2, argv); -``` - -`NanCallback` also has a `Local GetCallback()` method that you can use -to fetch a local handle to the underlying callback function, as well as a -`void SetFunction(Handle)` for setting the callback on the -`NanCallback`. Additionally a generic constructor is available for using -`NanCallback` without performing heap allocations. - - -### NanAsyncWorker - -`NanAsyncWorker` is an abstract class that you can subclass to have much of the annoying async queuing and handling taken care of for you. It can even store arbitrary V8 objects for you and have them persist while the async work is in progress. - -See a rough outline of the implementation: - -```c++ -class NanAsyncWorker { -public: - NanAsyncWorker (NanCallback *callback); - - // Clean up persistent handles and delete the *callback - virtual ~NanAsyncWorker (); - - // Check the `char *errmsg` property and call HandleOKCallback() - // or HandleErrorCallback depending on whether it has been set or not - virtual void WorkComplete (); - - // You must implement this to do some async work. If there is an - // error then allocate `errmsg` to a message and the callback will - // be passed that string in an Error object - virtual void Execute (); - - // Save a V8 object in a Persistent handle to protect it from GC - void SavePersistent(const char *key, Local &obj); - - // Fetch a stored V8 object (don't call from within `Execute()`) - Local GetFromPersistent(const char *key); - -protected: - // Set this if there is an error, otherwise it's NULL - const char *errmsg; - - // Default implementation calls the callback function with no arguments. - // Override this to return meaningful data - virtual void HandleOKCallback (); - - // Default implementation calls the callback function with an Error object - // wrapping the `errmsg` string - virtual void HandleErrorCallback (); -}; -``` - - -### NanAsyncQueueWorker(NanAsyncWorker *) - -`NanAsyncQueueWorker` will run a `NanAsyncWorker` asynchronously via libuv. Both the *execute* and *after_work* steps are taken care of for you—most of the logic for this is embedded in `NanAsyncWorker`. - -### Contributors - -NAN is only possible due to the excellent work of the following contributors: - -
'; -html += '
Post Game Log Message
'; -html += '
'; -html += ''; -html += '
Enter your log message here. Plain text only please.
'; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Message', "glog_post('"+game_id+"')") + '
'; -html += '
'; -html += ''; -session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; -safe_focus( 'fe_glog_body' ); -show_popup_dialog(500, 175, html); -} -function glog_post(game_id) { -var msg = trim( $('fe_glog_body').value ); -if (msg) { -hide_popup_dialog(); -effect_api_send('game_post_log', { -GameID: game_id, -Message: msg -}, [this, 'glog_post_finish'], { _game_id: game_id }); -} -} -function glog_post_finish(response, tx) { -show_glog_widget( tx._game_id ); -} -function hide_glog_widget() { -$('glog_widget').hide(); -} -function get_icon_for_glog_type(type) { -var icon = 'page_white.png'; -switch (type) { -case 'asset': icon = 'folder_page_white.png'; break; -case 'game': icon = 'controller.png'; break; -case 'member': icon = 'user'; break; -case 'comment': icon = 'comment.png'; break; -case 'level': icon = 'world.png'; break; -case 'sprite': icon = 'cog.png'; break; -case 'tile': icon = 'brick.png'; break; -case 'tileset': icon = 'color_swatch.png'; break; -case 'rev': icon = 'cd.png'; break; -case 'revision': icon = 'cd.png'; break; -case 'font': icon = 'style.png'; break; -case 'key': icon = 'keyboard.png'; break; -case 'audio': icon = 'sound'; break; -case 'payment': icon = 'money.png'; break; -case 'env': icon = 'weather.png'; break; -case 'environment': icon = 'weather.png'; break; -} -return icon; -} -function effect_load_script(url) { -Debug.trace('api', 'Loading script: ' + url); -load_script(url); -} -function effect_api_get_ie(cmd, params, userData) { -if (!session.api_state_ie) session.api_state_ie = {}; -var unique_id = get_unique_id(); -session.api_state_ie[unique_id] = userData; -params.format = 'js'; -params.onafter = 'effect_api_response_ie(' + unique_id + ', response);'; -var url = '/effect/api/' + cmd + composeQueryString(params); -Debug.trace('api', "Sending MSIE HTTP GET: " + url); -load_script(url); -} -function effect_api_response_ie(unique_id, tree) { -Debug.trace('api', "Got response from MSIE HTTP GET"); -var tx = session.api_state_ie[unique_id]; -delete session.api_state_ie[unique_id]; -if (tree.Code == 'session') { -do_logout_2(); -return; -} -if (tree.Code == 'access') { -do_notice("Access Denied", tree.Description, 'do_not_pass_go'); -return; -} -if (tree.Code != 0) { -if (tx._on_error) return fire_callback( tx._on_error, tree, tx ); -return do_error( tree.Description ); -} -if (tree.SessionID) { -if (tree.SessionID == '_DELETE_') { -delete session.cookie.tree.effect_session_id; -} -else { -session.cookie.set( 'effect_session_id', tree.SessionID ); -} -session.cookie.save(); -} -if (tx._api_callback) { -fire_callback( tx._api_callback, tree, tx ); -} -} -function effect_api_get(cmd, params, callback, userData) { -if (!userData) userData = {}; -userData._api_callback = callback; -if (!session.api_mod_cache[cmd] && session.username) session.api_mod_cache[cmd] = hires_time_now(); -if (!params.mod && session.api_mod_cache[cmd]) params.mod = session.api_mod_cache[cmd]; -if (ie) return effect_api_get_ie(cmd, params, userData); -var url = '/effect/api/' + cmd + composeQueryString(params); -Debug.trace('api', "Sending HTTP GET: " + url); -ajax.get( url, 'effect_api_response', userData ); -} -function effect_api_send(cmd, xml, callback, userData) { -if (!userData) userData = {}; -userData._api_callback = callback; -var data = compose_xml('EffectRequest', xml); -Debug.trace('api', "Sending API Command: " + cmd + ": " + data); -ajax.send({ -method: 'POST', -url: '/effect/api/' + cmd, -data: data, -headers: { 'Content-Type': 'text/xml' } -}, 'effect_api_response', userData); -} -function effect_api_response(tx) { -Debug.trace('api', "HTTP " + tx.response.code + ": " + tx.response.data); -if (tx.response.code == 999) { -if (tx.request._auto_retry) { -session.net_error = false; -show_progress_dialog(1, "Trying to reestablish connection..."); -session.net_error = true; -setTimeout( function() { ajax.send(tx.request); }, 1000 ); -return; -} -else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' ); -} -if (session.net_error) { -hide_progress_dialog(); -session.net_error = false; -} -if (tx.response.code != 200) { -if (tx._silent) return; -else return do_error( "HTTP ERROR: " + tx.response.code + ": " + tx.response.data + ' (URL: ' + tx.request.url + ')' ); -} -var tree = null; -if (!tx._raw) { -var parser = new XML({ -preserveAttributes: true, -text: tx.response.data -}); -if (parser.getLastError()) return do_error("XML PARSE ERROR: " + parser.getLastError()); -tree = parser.getTree(); -if (tree.Code == 'session') { -do_logout_2(); -return; -} -if (tree.Code == 'access') { -do_notice("Access Denied", tree.Description, 'do_not_pass_go'); -return; -} -if (tree.Code != 0) { -if (tx._on_error) return fire_callback( tx._on_error, tree, tx ); -return do_error( tree.Description ); -} -if (tree.SessionID) { -if (tree.SessionID == '_DELETE_') { -delete session.cookie.tree.effect_session_id; -} -else { -session.cookie.set( 'effect_session_id', tree.SessionID ); -} -session.cookie.save(); -} -} -if (tx._api_callback) { -fire_callback( tx._api_callback, tree, tx ); -} -} -function effect_api_mod_touch() { -for (var idx = 0, len = arguments.length; idx < len; idx++) { -session.api_mod_cache[ arguments[idx] ] = hires_time_now(); -} -} -function do_not_pass_go() { -Nav.go('Main'); -} -var Nav = { -loc: '', -old_loc: '', -inited: false, -nodes: [], -init: function() { -if (!this.inited) { -this.inited = true; -this.loc = 'init'; -this.monitor(); -} -}, -monitor: function() { -var parts = window.location.href.split(/\#/); -var anchor = parts[1]; -if (!anchor) anchor = 'Main'; -var full_anchor = '' + anchor; -var sub_anchor = ''; -anchor = anchor.replace(/\%7C/, '|'); -if (anchor.match(/\|(\w+)$/)) { -sub_anchor = RegExp.$1.toLowerCase(); -anchor = anchor.replace(/\|(\w+)$/, ''); -} -if ((anchor != this.loc) && !anchor.match(/^_/)) { -Debug.trace('nav', "Caught navigation anchor: " + full_anchor); -var page_name = ''; -var page_args = null; -if (full_anchor.match(/^\w+\?.+/)) { -parts = full_anchor.split(/\?/); -page_name = parts[0]; -page_args = parseQueryString( parts[1] ); -} -else if (full_anchor.match(/^(\w+)\/(.*)$/)) { -page_name = RegExp.$1; -page_args = RegExp.$2; -} -else { -parts = full_anchor.split(/\//); -page_name = parts[0]; -page_args = parts.slice(1); -} -Debug.trace('nav', "Calling page: " + page_name + ": " + serialize(page_args)); -hide_popup_dialog(); -var result = page_manager.click( page_name, page_args ); -if (result) { -if (window.pageTracker && (this.loc != 'init')) { -setTimeout( function() { pageTracker._trackPageview('/effect/' + anchor); }, 1000 ); -} -this.old_loc = this.loc; -if (this.old_loc == 'init') this.old_loc = 'Main'; -this.loc = anchor; -} -else { -this.go( this.loc ); -} -} -else if (sub_anchor != this.sub_anchor) { -Debug.trace('nav', "Caught sub-anchor: " + sub_anchor); -$P().gosub( sub_anchor ); -} -this.sub_anchor = sub_anchor; -setTimeout( 'Nav.monitor()', 100 ); -}, -go: function(anchor, force) { -anchor = anchor.replace(/^\#/, ''); -if (force) this.loc = 'init'; -window.location.href = '#' + anchor; -}, -prev: function() { -this.go( this.old_loc || 'Main' ); -}, -refresh: function() { -this.loc = 'refresh'; -}, -bar: function() { -var nodes = arguments; -var html = ''; -for (var idx = 0, len = nodes.length; idx < len; idx++) { -var node = nodes[idx]; -if (node) this.nodes[idx] = node; -else node = this.nodes[idx]; -if (node != '_ignore_') { -html += ''; -} -} -html += '
'; -$('d_nav_bar').innerHTML = html; -}, -title: function(name) { -if (name) document.title = name + ' | EffectGames.com'; -else document.title = 'EffectGames.com'; -}, -currentAnchor: function() { -var parts = window.location.href.split(/\#/); -var anchor = parts[1] || ''; -var sub_anchor = ''; -anchor = anchor.replace(/\%7C/, '|'); -if (anchor.match(/\|(\w+)$/)) { -sub_anchor = RegExp.$1.toLowerCase(); -anchor = anchor.replace(/\|(\w+)$/, ''); -} -return anchor; -} -}; -var Blog = { -edit_caption: '
*Bold*  |Italic|  {monospace}  [http://link]  Formatting Guide...
', -search: function(args) { -if (!args.mode) args.mode = 'and'; -if (!args.offset) args.offset = 0; -if (!args.limit) args.limit = 10; -if (!args.format) args.format = 'xml'; -var query_args = copy_object( args ); -delete query_args.callback; -effect_api_get( 'article_search', query_args, [this, 'search_response'], { _search_args: args } ); -}, -get_article_preview: function(row, args) { -var html = ''; -Debug.trace('blog', 'Row: ' + dumper(row)); -html += '
'; -var ext_article_url = 'http://' + location.hostname + '/effect/article.psp.html' + row.Path + '/' + row.ArticleID; -var article_url = '#Article' + row.Path + '/' + row.ArticleID; -html += ''; -if (!args.title_only) { -html += '
'; -html += row.Preview; -html += '  ' + (args.link_title || 'Read Full Story...') + ''; -html += '
'; -html += ''; -html += '
'; -var elem_class = args.footer_element_class || 'blog_preview_footer_element'; -if ((session.username == row.Username) || is_admin()) { -html += '
' + -icon('page_white_edit.png', "Edit", '#ArticleEdit?path=' + row.Path + '&id=' + row.ArticleID) + '
'; -} -html += '
' + get_user_display(row.Username) + '
'; -html += '
' + icon('calendar', get_short_date_time(row.Published)) + '
'; -html += '
' + icon('talk', row.Comments) + '
'; -if (0 && row.Tags) html += '
' + icon('note.png', make_tag_links(row.Tags, 3)) + '
'; -html += '
' + icon('facebook.png', 'Facebook', "window.open('http://www.facebook.com/sharer.php?u="+encodeURIComponent(ext_article_url)+'&t='+encodeURIComponent(row.Title)+"','sharer','toolbar=0,status=0,width=626,height=436')", "Share on Facebook") + '
'; -html += '
' + icon('twitter.png', 'Twitter', "window.open('http://twitter.com/home?status=Reading%20" + encodeURIComponent(row.Title) + "%3A%20" + encodeURIComponent(ext_article_url)+"')", "Share on Twitter") + '
'; -html += '
'; -html += '
'; -html += '
'; -} -html += '
'; -return html; -}, -search_response: function(response, tx) { -var args = tx._search_args; -if (args.callback) return fire_callback(args.callback, response, args); -var div = $(args.target); -assert(div, "Could not find target DIV: " + args.target); -var html = ''; -if (response.Rows && response.Rows.Row) { -var rows = always_array( response.Rows.Row ); -for (var idx = 0, len = rows.length; idx < len; idx++) { -var row = rows[idx]; -html += this.get_article_preview( row, args ); -} -if (args.more && (rows.length == args.limit)) { -html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '
'; -html += spacer(1,15) + '
'; -} -if (args.after) html += args.after; -} -else if (response.Code != 0) { -html = 'Search Error: ' . response.Code + ': ' + response.Description; -} -else { -html = args.none_found_msg || 'No articles found.'; -} -div.innerHTML = html; -}, -more: function(div, args) { -args.offset += args.limit; -Debug.trace('blog', "More Args: " + dumper(args)); -div.innerHTML = ''; -effect_api_get( 'article_search', args, [this, 'more_response'], { _search_args: args, _div: div } ); -}, -more_response: function(response, tx) { -var args = tx._search_args; -var button = tx._div; -var html = ''; -if (response.Rows && response.Rows.Row) { -var rows = always_array( response.Rows.Row ); -for (var idx = 0, len = rows.length; idx < len; idx++) { -var row = rows[idx]; -html += this.get_article_preview( row, args ); -} -if (args.more && (rows.length == args.limit)) { -html += large_icon_button('page_white_put.png', 'More...', "Blog.more(this, "+encode_object(args)+")") + '
'; -html += spacer(1,15) + '
'; -} -} -else if (response.Code != 0) { -html = 'Search Error: ' . response.Code + ': ' + response.Description; -} -else { -html = args.none_found_msg || 'No more articles found.'; -} -var div = document.createElement('div'); -div.innerHTML = html; -button.parentNode.replaceChild( div, button ); -} -}; -function make_tag_links(csv, max, base_url) { -if (!base_url) base_url = ''; -var tags = csv.split(/\,\s*/); -var append = ''; -if (max && (tags.length > max)) { -tags.length = max; -append = '...'; -} -var html = ''; -for (var idx = 0, len = tags.length; idx < len; idx++) { -html += ''+tags[idx]+''; -if (idx < len - 1) html += ', '; -} -html += append; -return html; -} -function get_url_friendly_title(title) { -title = title.toString().replace(/\W+/g, '_'); -if (title.length > 40) title = title.substring(0, 40); -title = title.replace(/^_+/, ''); -title = title.replace(/_+$/, ''); -return title; -} -function get_full_url(url) { -if (url.match(/^\#/)) { -var parts = window.location.href.split(/\#/); -url = parts[0] + url; -} -return url; -} -var Comments = { -comments_per_page: 10, -get: function(page_id) { -var html = ''; -html += '
'; -html += '
Comments'; -html += '
'; -html += '
'; -html += '
'; -setTimeout( function() { Comments.search({ page_id: page_id }); }, 1 ); -return html; -}, -search: function(args) { -if (!args.limit) args.limit = this.comments_per_page; -if (!args.offset) args.offset = 0; -assert(args.page_id, "Comments.search: No page_id specified"); -args.format = 'xml'; -this.last_search = args; -effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } ); -}, -research: function(offset) { -var args = this.last_search; -if (!args) return; -args.offset = offset; -effect_api_get( 'comments_get', args, [this, 'search_response'], { _search_args: args } ); -}, -search_response: function(response, tx) { -this.comments = []; -var args = tx._search_args; -if (args.callback) return fire_callback(args.callback, response, args); -var html = ''; -html += '
' + -large_icon_button( 'comment_edit.png', 'Post Comment...', "Comments.add('"+args.page_id+"')" ) + '
'; -if (args.page_id.match(/^Article\//)) { -html += '
' + icon('feed.png', 'RSS', '/effect/api/comment_feed/' + args.page_id + '.rss', 'Comments RSS Feed') + '
'; -} -if (response.Items && response.Items.Item && response.List && response.List.length) { -html += ''; -html += '
'; -var items = this.comments = always_array( response.Items.Item ); -for (var idx = 0, len = items.length; idx < len; idx++) { -var item = items[idx]; -var extra_classes = (args.highlight && (args.highlight == item.ID)) ? ' highlight' : ''; -html += '
'; -html += '
'; -if (item.Username) html += ''; -html += '' + item.Name.toString().toUpperCase() + ''; -if (item.Username) html += ''; -html += ', ' + get_short_date_time(item.Date) + '
'; -html += '
'; -html += this.get_comment_controls( args.page_id, item ); -html += '
'; -html += '
'; -html += '
' + item.Comment + '
'; -html += '
'; -html += ''; -if (item.LastReply && ((item.LastReply >= time_now() - (86400 * 7)) || (session.username && (session.username == item.Username)))) { -setTimeout( "Comments.show_replies('"+args.page_id+"','"+item.ID+"')", 1 ); -} -} -} -else { -} -$( 'd_comments_' + args.page_id ).innerHTML = html; -}, -get_control: function(icon, code, text, status_text) { -if (!icon.match(/\.\w+$/)) icon += '.gif'; -return '' + code_link(code, text, status_text) + ''; -}, -get_comment_controls: function(page_id, comment) { -var html = ''; -var spacer_txt = '  |  '; -if (session.user) { -html += this.get_control('comment', "Comments.reply('"+page_id+"','"+comment.ID+"')", 'Reply') + spacer_txt; -} -if (comment.Replies) { -if (comment._replies_visible) html += this.get_control('magnify_minus', "Comments.hide_replies('"+page_id+"','"+comment.ID+"')", 'Hide Replies'); -else html += this.get_control('magnify_plus', "Comments.show_replies('"+page_id+"','"+comment.ID+"')", 'Show Replies ('+comment.Replies+')'); -if (session.user) html += spacer_txt; -} -if (session.user) { -html += this.get_control( -'star', -"Comments.like('"+page_id+"','"+comment.ID+"')", -'Like' + (comment.Like ? (' ('+comment.Like+')') : ''), -comment.Like ? (comment.Like + ' ' + ((comment.Like == 1) ? 'person likes this' : 'people like this')) : 'I like this comment' -) + spacer_txt; -if (is_admin()) html += this.get_control('trash', "Comments._delete('"+page_id+"','"+comment.ID+"')", 'Delete') + spacer_txt; -html += this.get_control('warning', "Comments.report('"+page_id+"','"+comment.ID+"')", 'Report Abuse'); -} -return html; -}, -reply: function(page_id, comment_id) { -hide_popup_dialog(); -delete session.progress; -var comment = find_object( this.comments, { ID: comment_id } ); -var html = ''; -html += '
'; -html += '\n \n \n \n'); - }; - __out.push('\n\n'); - __out.push(require('templates/clients/modules/sub_header').call(this, { - heading: t("Ride Request") - })); - __out.push('\n\n\n
\n
\n
\n
\n \n \n \n \n
\n\n
'; -html += '
Reply to Comment by "'+comment.Name+'"
'; -html += '
'; -var name = this.get_name(); -html += '

Posted by: ' + name; -if (!session.user) html += ' → Create Account'; -html += '


'; -html += ''; -html += Blog.edit_caption; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Reply', "Comments.post_reply('"+page_id+"','"+comment_id+"')") + '
'; -html += '
'; -html += ''; -session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; -safe_focus( 'fe_comment_body' ); -show_popup_dialog(600, 300, html); -}, -post_reply: function(page_id, comment_id) { -var value = $('fe_comment_body').value; -if (!value) return; -hide_popup_dialog(); -show_progress_dialog(1, "Posting reply..."); -var name = this.get_name(); -effect_api_mod_touch('comment_replies_get'); -effect_api_send('comment_post_reply', { -PageID: page_id, -CommentID: comment_id, -Username: session.username || '', -Name: name, -Comment: value, -PageURL: location.href -}, [this, 'post_reply_finish'], { _page_id: page_id, _comment_id: comment_id } ); -}, -post_reply_finish: function(response, tx) { -hide_popup_dialog(); -var page_id = tx._page_id; -var comment_id = tx._comment_id; -var comment = find_object( this.comments, { ID: comment_id } ); -do_message('success', "Comment reply posted successfully."); -this.show_replies(page_id, comment_id); -if (!comment.Replies) comment.Replies = 1; else comment.Replies++; -$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); -}, -show_replies: function(page_id, comment_id) { -var comment = find_object( this.comments, { ID: comment_id } ); -if (!comment._replies_visible) { -$('d_comment_replies_' + comment_id).show().innerHTML = ''; -} -var args = { page_id: page_id, comment_id: comment_id, offset: 0, limit: 100 }; -effect_api_get( 'comment_replies_get', args, [this, 'receive_replies_response'], { _search_args: args } ); -}, -receive_replies_response: function(response, tx) { -var page_id = tx._search_args.page_id; -var comment_id = tx._search_args.comment_id; -var comment = find_object( this.comments, { ID: comment_id } ); -var html = ''; -var replies = always_array( response.Items.Item ); -for (var idx = 0, len = replies.length; idx < len; idx++) { -var reply = replies[idx]; -html += get_chat_balloon( -(reply.Username == session.username) ? 'blue' : 'grey', -reply.Username, -reply.Comment.replace(/^]*?>(.+)<\/div>$/i, '$1') -); -} -$('d_comment_replies_' + comment_id).innerHTML = html; -if (!comment._replies_visible) { -$('d_comment_replies_' + comment_id).hide(); -animate_div_visibility( 'd_comment_replies_' + comment_id, true ); -} -comment._replies_visible = true; -$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); -}, -hide_replies: function(page_id, comment_id) { -var comment = find_object( this.comments, { ID: comment_id } ); -if (comment._replies_visible) { -animate_div_visibility( 'd_comment_replies_' + comment_id, false ); -comment._replies_visible = false; -$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); -} -}, -like: function(page_id, comment_id) { -effect_api_mod_touch('comments_get'); -effect_api_send('comment_like', { -PageID: page_id, -CommentID: comment_id -}, [this, 'like_finish'], { _page_id: page_id, _comment_id: comment_id, _on_error: [this, 'like_error'] } ); -}, -like_error: function(response, tx) { -if (response.Code == 'comment_already_like') do_message('error', "You already like this comment."); -else do_error( response.Description ); -}, -like_finish: function(resopnse, tx) { -var page_id = tx._page_id; -var comment_id = tx._comment_id; -var comment = find_object( this.comments, { ID: comment_id } ); -do_message('success', "You now like this comment."); -if (!comment.Like) comment.Like = 1; else comment.Like++; -$('d_comment_controls_'+comment_id).innerHTML = this.get_comment_controls( page_id, comment ); -}, -add: function(page_id) { -hide_popup_dialog(); -delete session.progress; -var html = ''; -html += '
'; -html += '\n \n \n \n \n \n \n \n \n \n '); - }, this); - __out.push('\n\n
\n
'; -html += '
Post New Comment
'; -html += '
'; -var name = this.get_name(); -html += '

Posted by: ' + name; -if (!session.user) html += ' → Create Account'; -html += '


'; -html += ''; -html += Blog.edit_caption; -html += '
'; -html += '

'; -html += ''; -html += ''; -html += ''; -html += '
' + large_icon_button('x', 'Cancel', "hide_popup_dialog()") + ' ' + large_icon_button('check', 'Post Comment', "Comments.post('"+page_id+"')") + '
'; -html += '
'; -html += ''; -session.hooks.keys[ESC_KEY] = 'hide_popup_dialog'; -safe_focus( 'fe_comment_body' ); -show_popup_dialog(600, 300, html); -}, -report: function(page_id, comment_id) { -if (confirm('Are you sure you want to report this comment to the site administrators as abusive and/or spam?')) { -effect_api_send('comment_report_abuse', { -PageID: page_id, -CommentID: comment_id -}, [this, 'report_finish'], { _page_id: page_id, _comment_id: comment_id } ); -} -}, -report_finish: function(response, tx) { -do_message('success', 'Your abuse report has been received, and will be evaluated by the site administrators.'); -}, -_delete: function(page_id, comment_id) { -if (confirm('Are you sure you want to permanently delete this comment?')) { -effect_api_mod_touch('comments_get'); -effect_api_send('comment_delete', { -PageID: page_id, -CommentID: comment_id -}, [this, 'delete_finish'], { _page_id: page_id, _comment_id: comment_id } ); -} -}, -delete_finish: function(response, tx) { -do_message('success', 'The comment was deleted successfully.'); -var page_id = tx._page_id; -this.search({ page_id: page_id }); -}, -get_name: function() { -var name = '(Anonymous)'; -if (session.user) { -if (get_bool_pref('public_profile')) name = session.user.FullName; -else name = session.username; -} -return name; -}, -post: function(page_id) { -var value = $('fe_comment_body').value; -if (!value) return; -hide_popup_dialog(); -show_progress_dialog(1, "Posting comment..."); -var name = this.get_name(); -effect_api_mod_touch('comments_get'); -effect_api_send('comment_post', { -PageID: page_id, -Username: session.username || '', -Name: name, -Comment: value -}, [this, 'post_finish'], { _page_id: page_id } ); -}, -post_finish: function(response, tx) { -hide_popup_dialog(); -var comment_id = response.CommentID; -var page_id = tx._page_id; -this.search({ page_id: page_id, highlight: comment_id }); -} -}; -Class.create( 'Menu', { -id: '', -menu: null, -__construct: function(id) { -this.id = id; -}, -load: function() { -if (!this.menu) { -this.menu = $(this.id); -assert( !!this.menu, "Could not locate DOM element: " + this.id ); -} -}, -get_value: function() { -this.load(); -return this.menu.options[this.menu.selectedIndex].value; -}, -set_value: function(value, auto_add) { -value = str_value(value); -this.load(); -for (var idx = 0, len = this.menu.options.length; idx < len; idx++) { -if (this.menu.options[idx].value == value) { -this.menu.selectedIndex = idx; -return true; -} -} -if (auto_add) { -this.menu.options[this.menu.options.length] = new Option(value, value); -this.menu.selectedIndex = this.menu.options.length - 1; -return true; -} -return false; -}, -disable: function() { -this.load(); -this.menu.disabled = true; -this.menu.setAttribute( 'disabled', 'disabled' ); -}, -enable: function() { -this.load(); -this.menu.setAttribute( 'disabled', '' ); -this.menu.disabled = false; -}, -populate: function(items, sel_value) { -this.load(); -this.menu.options.length = 0; -for (var idx = 0, len = items.length; idx < len; idx++) { -var item = items[idx]; -var item_name = ''; -var item_value = ''; -if (isa_hash(item)) { -item_name = item.label; -item_value = item.data; -} -else if (isa_array(item)) { -item_name = item[0]; -item_value = item[1]; -} -else { -item_name = item_value = item; -} -this.menu.options[ this.menu.options.length ] = new Option( item_name, item_value ); -if (item_value == sel_value) this.menu.selectedIndex = idx; -} -} -} ); -Class.subclass( Menu, 'MultiMenu', { -__static: { -toggle_type: function(id) { -var menu = $(id); -assert(menu, "Could not find menu in DOM: " + id); -if (menu.disabled) return; -var obj = MenuManager.find(id); -assert(obj, "Could not find menu in MenuManager: " + id); -var div = $( 'd_inner_' + id ); -var ic = $( 'ic_' + id ); -var is_multiple = (ic.src.indexOf('contract') > -1); -obj.multi = !is_multiple; -var multiple_tag = !is_multiple ? -' multiple="multiple" size=5' : ''; -var items = []; -for (var idx = 0; idx < menu.options.length; idx++) { -var option = menu.options[idx]; -array_push( items, { -value: option.value, -text: option.text, -selected: option.selected -}); -} -var html = ''; -html += ''; -div.innerHTML = html; -ic.src = images_uri + '/menu_' + (is_multiple ? 'expand' : 'contract') + '.gif'; -obj.menu = null; -} -}, -attribs: null, -multi: false, -toggle: true, -__construct: function(id, attribs) { -this.id = id; -if (attribs) this.attribs = attribs; -}, -get_html: function(items, selected_csv, attribs) { -if (!items) items = []; -if (!selected_csv) selected_csv = ''; -if (attribs) this.attribs = attribs; -var selected = csv_to_hash(selected_csv); -this.menu = null; -if (num_keys(selected) > 1) this.multi = true; -var html = '
'; -html += ''; -html += ''; -html += ''; -if (this.toggle) html += ''; -html += '
' + spacer(1,1) + '
'+spacer(1,2)+'
'; -html += '
'; -return html; -}, -get_value: function() { -this.load(); -var value = ''; -for (var idx = 0; idx < this.menu.options.length; idx++) { -var option = this.menu.options[idx]; -if (option.selected && option.value.length) { -if (value.length > 0) value += ','; -value += option.value; -} -} -return value; -}, -set_value: function(value, auto_add) { -value = '' + value; -this.load(); -if (!value) { -value = ''; -for (var idx = 0; idx < this.menu.options.length; idx++) { -var option = this.menu.options[idx]; -option.selected = (option.value == value); -} -return; -} -var selected = csv_to_hash(value); -if ((num_keys(selected) > 1) && !this.multi) { -MultiMenu.toggle_type(this.id); -var self = this; -setTimeout( function() { -self.set_value(value, auto_add); -}, 1 ); -return; -} -for (var idx = 0; idx < this.menu.options.length; idx++) { -var option = this.menu.options[idx]; -option.selected = selected[option.value] ? true : false; -} -}, -populate: function(items, value) { -this.load(); -this.menu.options.length = 0; -if (!value) value = ''; -var selected = csv_to_hash(value); -for (var idx = 0, len = items.length; idx < len; idx++) { -var item = items[idx]; -var item_name = ''; -var item_value = ''; -if (isa_hash(item)) { -item_name = item.label; -item_value = item.data; -} -else if (isa_array(item)) { -item_name = item[0]; -item_value = item[1]; -} -else { -item_name = item_value = item; -} -var opt = new Option( item_name, item_value ); -this.menu.options[ this.menu.options.length ] = opt; -opt.selected = selected[item_value] ? true : false; -} -}, -collapse: function() { -if (this.multi) MultiMenu.toggle_type(this.id); -}, -expand: function() { -if (!this.multi) MultiMenu.toggle_type(this.id); -} -} ); -Class.create( 'MenuManager', { -__static: { -menus: {}, -register: function(menu) { -this.menus[ menu.id ] = menu; -return menu; -}, -find: function(id) { -return this.menus[id]; -} -} -} ); -Class.create( 'GrowlManager', { -lifetime: 10, -marginRight: 0, -marginTop: 0, -__construct: function() { -this.growls = []; -}, -growl: function(type, msg) { -if (find_object(this.growls, { type: type, msg: msg })) return; -var div = $(document.createElement('div')); -div.className = 'growl_message ' + type; -div.setOpacity(0.0); -div.innerHTML = '
' + msg + '
' + spacer(1,5) + '
'; -$('d_growl_wrapper').insertBefore( div, $('d_growl_top').nextSibling ); -var growl = { id:get_unique_id(), type: type, msg: msg, opacity:0.0, start:hires_time_now(), div:div }; -this.growls.push(growl); -this.handle_resize(); -this.animate(growl); -var self = this; -div.onclick = function() { -delete_object(self.growls, { id: growl.id }); -$('d_growl_wrapper').removeChild( div ); -}; -}, -animate: function(growl) { -if (growl.deleted) return; -var now = hires_time_now(); -var div = growl.div; -if (now - growl.start <= 0.5) { -div.setOpacity( tweenFrame(0.0, 1.0, (now - growl.start) * 2, 'EaseOut', 'Quadratic') ); -} -else if (now - growl.start <= this.lifetime) { -if (!growl._fully_opaque) { -div.setOpacity( 1.0 ); -growl._fully_opaque = true; -} -} -else if (now - growl.start <= this.lifetime + 1.0) { -div.setOpacity( tweenFrame(1.0, 0.0, (now - growl.start) - this.lifetime, 'EaseOut', 'Quadratic') ); -} -else { -delete_object(this.growls, { id: growl.id }); -$('d_growl_wrapper').removeChild( div ); -return; -} -var self = this; -setTimeout( function() { self.animate(growl); }, 33 ); -}, -handle_resize: function() { -var div = $('d_growl_wrapper'); -if (this.growls.length) { -var size = getInnerWindowSize(); -div.style.top = '' + (10 + this.marginTop) + 'px'; -div.style.left = '' + Math.floor((size.width - 310) - this.marginRight) + 'px'; -} -else { -div.style.left = '-2000px'; -} -} -} ); -window.$GR = new GrowlManager(); -if (window.addEventListener) { -window.addEventListener( "resize", function() { -$GR.handle_resize(); -}, false ); -} -else if (window.attachEvent && !ie6) { -window.attachEvent("onresize", function() { -$GR.handle_resize(); -}); -} -Class.create( 'Effect.Page', { -ID: '', -data: null, -active: false, -__construct: function(config) { -if (!config) return; -this.data = {}; -if (!config) config = {}; -for (var key in config) this[key] = config[key]; -this.div = $('page_' + this.ID); -assert(this.div, "Cannot find page div: page_" + this.ID); -}, -onInit: function() { -}, -onActivate: function() { -return true; -}, -onDeactivate: function() { -return true; -}, -show: function() { -this.div.show(); -}, -hide: function() { -this.div.hide(); -}, -gosub: function(anchor) { -} -} ); -Class.require( 'Effect.Page' ); -Class.create( 'Effect.PageManager', { -pages: null, -current_page_id: '', -on_demand: {}, -__construct: function(page_list) { -this.pages = []; -this.page_list = page_list; -for (var idx = 0, len = page_list.length; idx < len; idx++) { -Debug.trace( 'page', "Initializing page: " + page_list[idx].ID ); -if (Effect.Page[ page_list[idx].ID ]) { -var page = new Effect.Page[ page_list[idx].ID ]( page_list[idx] ); -page.onInit(); -this.pages.push(page); -} -else { -Debug.trace( 'page', 'Page ' + page_list[idx].ID + ' will be loaded on-demand' ); -} -} -}, -find: function(id) { -var page = find_object( this.pages, { ID: id } ); -if (!page) Debug.trace('PageManager', "Could not find page: " + id); -return page; -}, -notify_load: function(file, id) { -for (var idx = 0, len = this.page_list.length; idx < len; idx++) { -var page_config = this.page_list[idx]; -if (page_config.File == file) { -Debug.trace( 'page', "Initializing page on-demand: " + page_config.ID ); -var page = new Effect.Page[ page_config.ID ]( page_config ); -page.onInit(); -this.pages.push(page); -} -} -var self = this; -setTimeout( function() { -var result = self.activate(id, self.temp_args); -delete self.temp_args; -$('d_page_loading').hide(); -if (!result) { -$('page_'+id).hide(); -self.current_page_id = ''; -} -}, 1 ); -}, -activate: function(id, args) { -if (!find_object( this.pages, { ID: id } )) { -var page_config = find_object( this.page_list, { ID: id } ); -assert(!!page_config, "Page config not found: " + id ); -Debug.trace('page', "Loading file on-demand: " + page_config.File + " for page: " + id); -var url = '/effect/api/load_page/' + page_config.File + '?onafter=' + escape('page_manager.notify_load(\''+page_config.File+'\',\''+id+'\')'); -if (page_config.Requires) { -var files = page_config.Requires.split(/\,\s*/); -for (var idx = 0, len = files.length; idx < len; idx++) { -var filename = files[idx]; -if (!this.on_demand[filename]) { -Debug.trace('page', "Also loading file: " + filename); -url += '&file=' + filename; -this.on_demand[filename] = 1; -} -} -} -$('d_page_loading').show(); -this.temp_args = args; -load_script( url ); -return true; -} -$('page_'+id).show(); -var page = this.find(id); -page.active = true; -if (!args) args = []; -if (!isa_array(args)) args = [ args ]; -var result = page.onActivate.apply(page, args); -if (typeof(result) == 'boolean') return result; -else return alert("Page " + id + " onActivate did not return a boolean!"); -}, -deactivate: function(id, new_id) { -var page = this.find(id); -var result = page.onDeactivate(new_id); -if (result) { -$('page_'+id).hide(); -page.active = false; -} -return result; -}, -click: function(id, args) { -Debug.trace('page', "Switching pages to: " + id); -var old_id = this.current_page_id; -if (this.current_page_id) { -var result = this.deactivate( this.current_page_id, id ); -if (!result) return false; -} -this.current_page_id = id; -this.old_page_id = old_id; -window.scrollTo( 0, 0 ); -var result = this.activate(id, args); -if (!result) { -$('page_'+id).hide(); -this.current_page_id = ''; -} -return true; -} -} ); -Class.subclass( Effect.Page, "Effect.Page.Main", { -inited: false, -onActivate: function() { -Nav.bar( ['Main', 'EffectGames.com'] ); -Nav.title(''); -$('d_blog_news').innerHTML = loading_image(); -$('d_blog_community').innerHTML = loading_image(); -$('d_blog_featured').innerHTML = loading_image(); -Blog.search({ -stag: 'featured_game', -limit: 4, -full: 1, -callback: [this, 'receive_featured_games'] -}); -effect_api_get( 'get_site_info', { cat: 'pop_pub_games' }, [this, 'receive_pop_pub_games'], { } ); -Blog.search({ -stag: 'front_page', -limit: 5, -target: 'd_blog_news', -more: 1 -}); -Blog.search({ -path: '/community', -limit: 5, -target: 'd_blog_community', -more: 1 -}); -if (!this.inited) { -this.inited = true; -config.Strings.MainSlideshow.Slide = always_array( config.Strings.MainSlideshow.Slide ); -this.slide_idx = 0; -this.num_slides = config.Strings.MainSlideshow.Slide.length; -this.slide_div_num = 0; -this.slide_dir = 1; -this.bk_pos = -340; -this.bk_pos_target = -340; -this.slide_images = []; -for (var idx = 0, len = this.num_slides; idx < len; idx++) { -var url = images_uri + '/' + config.Strings.MainSlideshow.Slide[idx].Photo; -this.slide_images[idx] = new Image(); -this.slide_images[idx].src = png(url, true); -} -} -this.height_target = 470; -this.height_start = $('d_header').offsetHeight; -this.time_start = hires_time_now(); -this.duration = 0.75; -if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); -if (session.user) $('d_blurb_main').hide(); -else { -$('d_blurb_main').innerHTML = get_string('/Main/Blurb'); -$('d_blurb_main').show(); -} -return true; -}, -receive_pop_pub_games: function(response, tx) { -var html = ''; -if (response.Data && response.Data.Games && response.Data.Games.Game) { -var games = always_array( response.Data.Games.Game ); -for (var idx = 0, len = Math.min(games.length, 16); idx < len; idx++) { -var game = games[idx]; -html += '
' + -(game.Logo ? -user_image_thumbnail(game.Logo, 80, 60) : -'' -) + '
' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '
'; -} -html += '
'; -} -else { -html += 'No active public games found! Why not create a new one?'; -} -$('d_main_pop_pub_games').innerHTML = html; -}, -receive_featured_games: function(response, tx) { -var html = ''; -if (response.Rows && response.Rows.Row) { -html += ''; -var rows = always_array( response.Rows.Row ); -for (var idx = 0, len = rows.length; idx < len; idx++) { -var row = rows[idx]; -var image_url = row.Params.featured_image; -if (image_url && image_url.match(/^(\w+)\/(\w+\.\w+)$/)) { -image_url = '/effect/api/view/users/' + RegExp.$1 + '/images/' + RegExp.$2; -} -if (idx % 2 == 0) html += ''; -html += ''; -if (idx % 2 == 1) html += ''; -} -if (rows.length % 2 == 1) { -html += ''; -html += ''; -} -html += '
'; -html += ''; -html += ''; -html += ''; -html += ''; -html += ''; -html += '
'; -html += ''; -html += '' + spacer(10,1) + ''; -html += ''; -html += ''; -html += '' + spacer(15,1) + '
'; -html += spacer(1,20); -html += '
'; -} -$('d_blog_featured').innerHTML = html; -}, -animate_mhs: function() { -var now = hires_time_now(); -if (now - this.time_start >= this.duration) { -$('d_header').style.height = '' + this.height_target + 'px'; -$('d_shadow').style.height = '' + this.height_target + 'px'; -delete this.timer; -} -else { -var height = tweenFrame(this.height_start, this.height_target, (now - this.time_start) / this.duration, 'EaseOut', 'Circular'); -$('d_header').style.height = '' + height + 'px'; -$('d_shadow').style.height = '' + height + 'px'; -this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); -} -}, -onDeactivate: function() { -$('d_blog_news').innerHTML = ''; -$('d_blog_community').innerHTML = ''; -this.height_target = 75; -this.height_start = $('d_header').offsetHeight; -this.time_start = hires_time_now(); -if (!this.timer) this.timer = setTimeout( '$P("Main").animate_mhs()', 33 ); -return true; -}, -draw_slide: function() { -if (this.slide_timer) return; -var slide = config.Strings.MainSlideshow.Slide[ this.slide_idx ]; -this.old_photo = $('d_header_slideshow_photo_' + this.slide_div_num); -this.old_text = $('d_header_slideshow_text_' + this.slide_div_num); -this.slide_div_num = 1 - this.slide_div_num; -this.new_photo = $('d_header_slideshow_photo_' + this.slide_div_num); -this.new_text = $('d_header_slideshow_text_' + this.slide_div_num); -this.new_photo.style.backgroundImage = 'url('+png(images_uri+'/'+slide.Photo, true)+')'; -this.new_photo.setOpacity(0.0); -var html = ''; -html += slide.Text; -this.slide_width = this.new_text.offsetWidth; -this.new_text.innerHTML = html; -if (this.slide_dir == 1) this.new_text.style.left = '' + this.slide_width + 'px'; -else this.new_text.style.left = '-' + this.slide_width + 'px'; -this.slide_time_start = hires_time_now(); -this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 ); -}, -animate_mhs_slide: function() { -var now = hires_time_now(); -if (now - this.slide_time_start >= this.duration) { -this.new_text.style.left = '0px'; -this.old_text.style.left = '-' + this.slide_width + 'px'; -this.new_photo.setOpacity( 1.0 ); -this.old_photo.setOpacity( 0.0 ); -delete this.slide_timer; -this.bk_pos = this.bk_pos_target; -} -else { -var value = tweenFrame(0.0, 1.0, (now - this.slide_time_start) / this.duration, 'EaseOut', 'Circular'); -if (this.slide_dir == 1) { -this.new_text.style.left = '' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px'; -this.old_text.style.left = '-' + Math.floor( this.slide_width * value ) + 'px'; -} -else { -this.new_text.style.left = '-' + Math.floor( this.slide_width - (this.slide_width * value) ) + 'px'; -this.old_text.style.left = '' + Math.floor( this.slide_width * value ) + 'px'; -} -this.new_photo.setOpacity( value ); -this.old_photo.setOpacity( 1.0 - value ); -var bkp = Math.floor( this.bk_pos + ((this.bk_pos_target - this.bk_pos) * value) ); -$('d_header').style.backgroundPosition = '' + bkp + 'px 0px'; -this.slide_timer = setTimeout( '$P("Main").animate_mhs_slide()', 33 ); -} -}, -prev_slide: function() { -this.bk_pos_target += 200; -this.slide_idx--; -if (this.slide_idx < 0) this.slide_idx += this.num_slides; -this.slide_dir = -1; -this.draw_slide(); -}, -next_slide: function() { -this.bk_pos_target -= 200; -this.slide_idx++; -if (this.slide_idx >= this.num_slides) this.slide_idx -= this.num_slides; -this.slide_dir = 1; -this.draw_slide(); -} -} ); -Class.subclass( Effect.Page, "Effect.Page.PublicGameList", { -onActivate: function() { -Nav.bar( -['Main', 'EffectGames.com'], -['PublicGameList', "All Public Games"] -); -Nav.title( "List of All Public Game Projects" ); -effect_api_get( 'get_site_info', { cat: 'all_pub_games' }, [this, 'receive_all_pub_games'], { } ); -this.div.innerHTML = loading_image(); -return true; -}, -onDeactivate: function() { -this.div.innerHTML = ''; -return true; -}, -receive_all_pub_games: function(response, tx) { -var html = ''; -html += '

List of All Public Game Projects

'; -html += '
This is the complete list of public games currently being built by our users, presented in alphabetical order. Maybe they could use some help! Check out the game project pages and see (requires user account).
'; -if (response.Data && response.Data.Games && response.Data.Games.Game) { -var games = always_array( response.Data.Games.Game ); -for (var idx = 0, len = games.length; idx < len; idx++) { -var game = games[idx]; -html += '
' + -(game.Logo ? -user_image_thumbnail(game.Logo, 80, 60) : -'' -) + '
' + ww_fit_box(game.Title, 80, 2, session.em_width, 1) + '
'; -} -html += '
'; -} -else { -html += 'No public games found! Why not create a new one?'; -} -this.div.innerHTML = html; -} -} ); -Class.subclass( Effect.Page, "Effect.Page.Search", { -onActivate: function(args) { -if (!args) args = {}; -var search_text = args.q; -var start = args.s || 0; -if (!start) start = 0; -var title = 'Search results for "'+search_text+'"'; -Nav.bar( -['Main', 'EffectGames.com'], -['Search?q=' + escape(search_text), "Search Results"] -); -Nav.title( title ); -this.last_search_text = search_text; -$('d_article_search').innerHTML = loading_image(); -load_script( 'http://www.google.com/uds/GwebSearch?callback=receive_google_search_results&context=0&lstkp=0&rsz=large&hl=en&source=gsc&gss=.com&sig=&q='+escape(search_text)+'%20site%3Ahttp%3A%2F%2Fwww.effectgames.com%2F&key=notsupplied&v=1.0&start='+start+'&nocache=' + (new Date()).getTime() ); -$('h_article_search').innerHTML = title; -return true; -}, -onDeactivate: function(new_page) { -$('fe_search_bar').value = ''; -$('d_article_search').innerHTML = ''; -return true; -} -} ); -function do_search_bar() { -var search_text = $('fe_search_bar').value; -if (search_text.length) { -Nav.go('Search?q=' + escape(search_text)); -} -} -function receive_google_search_results(context, response) { -var html = ''; -html += '
Powered by
'; -if (response.results.length) { -for (var idx = 0, len = response.results.length; idx < len; idx++) { -var row = response.results[idx]; -var url = row.unescapedUrl.replace(/^.+article\.psp\.html/, '#Article'); -html += '
'; -html += ''; -html += '
' + row.content + '
'; -html += '
'; -} -} -else { -html += 'No results found.'; -} -if (response.cursor.pages) { -html += '
Page: '; -for (var idx = 0, len = response.cursor.pages.length; idx < len; idx++) { -html += ''; -var page = response.cursor.pages[idx]; -var url = '#Search?q=' + escape($P('Search').last_search_text) + '&s=' + page.start; -if (response.cursor.currentPageIndex != idx) html += ''; -else html += ''; -html += page.label; -if (response.cursor.currentPageIndex != idx) html += ''; -else html += ''; -html += ''; -} -html += '
'; -} -$('d_article_search').innerHTML = html; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js deleted file mode 100644 index 8b164a42..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/index.js +++ /dev/null @@ -1 +0,0 @@ -exports.ZeParser = require('./ZeParser').ZeParser; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json deleted file mode 100644 index b42447d2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "author": { - "name": "Peter van der Zee", - "url": "http://qfox.nl/" - }, - "name": "zeparser", - "description": "My JavaScript parser", - "version": "0.0.5", - "homepage": "https://github.com/qfox/ZeParser/", - "repository": { - "type": "git", - "url": "git://github.com/qfox/ZeParser.git" - }, - "main": "./index", - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "_npmUser": { - "name": "evilhackerdude", - "email": "evilhackerdude@gmail.com" - }, - "_id": "zeparser@0.0.5", - "_engineSupported": true, - "_npmVersion": "1.0.105", - "_nodeVersion": "v0.6.5", - "_defaultsLoaded": true, - "dist": { - "shasum": "03726561bc268f2e5444f54c665b7fd4a8c029e2", - "tarball": "http://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz" - }, - "maintainers": [ - { - "name": "felixge", - "email": "felix@debuggable.com" - }, - { - "name": "evilhackerdude", - "email": "evilhackerdude@gmail.com" - } - ], - "directories": {}, - "_shasum": "03726561bc268f2e5444f54c665b7fd4a8c029e2", - "_resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz", - "_from": "zeparser@0.0.5", - "bugs": { - "url": "https://github.com/qfox/ZeParser/issues" - }, - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html deleted file mode 100755 index 1ff5ff43..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-parser.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - Parser Test Suite Page - - - - (c) qfox.nl
- Parser test suite
-
Running...
- - - - - - - \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html deleted file mode 100755 index 0e0d1b1a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/test-tokenizer.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - Tokenizer Test Suite Page - - - - (c) qfox.nl
- - - - - - \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js deleted file mode 100644 index 8a4138be..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/active-x-obfuscator/node_modules/zeparser/tests.js +++ /dev/null @@ -1,478 +0,0 @@ -// tests for both the tokenizer and parser. Parser test results could be checked tighter. -// api: [input, token-output-count, ?regex-hints, desc] -// regex-hints are for tokenizer, will tell for each token whether it might parse regex or not (parser's job) -var Tests = [ - -["var abc;", 4, "Variable Declaration"], -["var abc = 5;", 8, "Variable Declaration, Assignment"], -["/* */", 1, "Block Comment"], -["/** **/", 1, "JSDoc-style Comment"], -["var f = function(){;};", 13, "Assignment, Function Expression"], -["hi; // moo", 4, "Trailing Line Comment"], -["hi; // moo\n;", 6, "Trailing Line Comment, Linefeed, `;`"], -["var varwithfunction;", 4, "Variable Declaration, Identifier Containing Reserved Words, `;`"], -["a + b;", 6, "Addition/Concatenation"], - -["'a'", 1, "Single-Quoted String"], -["'a';", 2, "Single-Quoted String, `;`"], // Taken from the parser test suite. - -["'a\\n'", 1, "Single-Quoted String With Escaped Linefeed"], -["'a\\n';", 2, "Single-Quoted String With Escaped Linefeed, `;`"], // Taken from the parser test suite. - -["\"a\"", 1, "Double-Quoted String"], -["\"a\";", 2, "Double-Quoted String, `;`"], // Taken from the parser test suite. - -["\"a\\n\"", 1, "Double-Quoted String With Escaped Linefeed"], -["\"a\\n\";", 2, "Double-Quoted String With Escaped Linefeed, `;`"], // Taken from the parser test suite. - -["500", 1, "Integer"], -["500;", 2, "Integer, `;`"], // Taken from the parser test suite. - -["500.", 1, "Double With Trailing Decimal Point"], -["500.;", 2, "Double With Trailing Decimal Point"], // Taken from the parser test suite. - -["500.432", 1, "Double With Decimal Component"], -["500.432;", 2, "Double With Decimal Component, `;`"], // Taken from the parser test suite. - -[".432432", 1, "Number, 0 < Double < 1"], -[".432432;", 2, "Number, 0 < Double < 1, `;`"], // Taken from the parser test suite. - -["(a,b,c)", 7, "Parentheses, Comma-separated identifiers"], -["(a,b,c);", 8, "Parentheses, Comma-separated identifiers, `;`"], // Taken from the parser test suite. - -["[1,2,abc]", 7, "Array literal"], -["[1,2,abc];", 8, "Array literal, `;`"], // Taken from the parser test suite. - -["{a:1,\"b\":2,c:c}", 13, "Object literal"], -["var o = {a:1,\"b\":2,c:c};", 20, "Assignment, Object Literal, `;`"], // Taken from the parser test suite. - -["var x;\nvar y;", 9, "2 Variable Declarations, Multiple lines"], -["var x;\nfunction n(){ }", 13, "Variable, Linefeed, Function Declaration"], -["var x;\nfunction n(abc){ }", 14, "Variable, Linefeed, Function Declaration With One Argument"], -["var x;\nfunction n(abc, def){ }", 17, "Variable, Linefeed, Function Declaration With Multiple Arguments"], -["function n(){ \"hello\"; }", 11, "Function Declaration, Body"], - -["/a/;", 2, [true, false], "RegExp Literal, `;`"], -["/a/b;", 2, [true, true], "RegExp Literal, Flags, `;`"], -["++x;", 3, "Unary Increment, Prefix, `;`"], -[" / /;", 3, [true, true, false], "RegExp, Leading Whitespace, `;`"], -["/ / / / /", 5, [true, false, false, false, true], "RegExp Containing One Space, Space, Division, Space, RegExp Containing One Space"], - -// Taken from the parser test suite. - -["\"var\";", 2, "Keyword String, `;`"], -["\"variable\";", 2, "String Beginning With Keyword, `;`"], -["\"somevariable\";", 2, "String Containing Keyword, `;`"], -["\"somevar\";", 2, "String Ending With Keyword, `;`"], - -["var varwithfunction;", 4, "Keywords should not be matched in identifiers"], - -["var o = {a:1};", 12, "Object Literal With Unquoted Property"], -["var o = {\"b\":2};", 12, "Object Literal With Quoted Property"], -["var o = {c:c};", 12, "Object Literal With Equivalent Property Name and Identifier"], - -["/a/ / /b/;", 6, [true, true, false, false, true, false], "RegExp, Division, RegExp, `;`"], -["a/b/c;", 6, "Triple Division (Identifier / Identifier / Identifier)"], - -["+function(){/regex/;};", 9, [false, false, false, false, false, true, false, false, false], "Unary `+` Operator, Function Expression Containing RegExp and Semicolon, `;`"], - -// Line Terminators. -["\r\n", 1, "CRLF Line Ending = 1 Linefeed"], -["\r", 1, "CR Line Ending = 1 Linefeed"], -["\n", 1, "LF Line Ending = 1 Linefeed"], -["\r\n\n\u2028\u2029\r", 5, "Various Line Terminators"], - -// Whitespace. -["a \t\u000b\u000c\u00a0\uFFFFb", 8, "Whitespace"], - -// Comments. -["//foo!@#^&$1234\nbar;", 4, "Line Comment, Linefeed, Identifier, `;`"], -["/* abcd!@#@$* { } && null*/;", 2, "Single-Line Block Comment, `;`"], -["/*foo\nbar*/;", 2, "Multi-Line Block Comment, `;`"], -["/*x*x*/;", 2, "Block Comment With Asterisks, `;`"], -["/**/;", 2, "Empty Comment, `;`"], - -// Identifiers. -["x;", 2, "Single-Character Identifier, `;`"], -["_x;", 2, "Identifier With Leading `_`, `;`"], -["xyz;", 2, "Identifier With Letters Only, `;`"], -["$x;", 2, "Identifier With Leading `$`, `;`"], -["x5;", 2, "Identifier With Number As Second Character, `;`"], -["x_y;", 2, "Identifier Containing `_`, `;`"], -["x+5;", 4, "Identifier, Binary `+` Operator, Identifier, `;`"], -["xyz123;", 2, "Alphanumeric Identifier, `;`"], -["x1y1z1;", 2, "Alternating Alphanumeric Identifier, `;`"], -["foo\\u00d8bar;", 2, "Identifier With Unicode Escape Sequence (`\\uXXXX`), `;`"], -["f\u00d8\u00d8bar;", 2, "Identifier With Embedded Unicode Character"], - -// Numbers. -["5;", 2, "Integer, `;`"], -["5.5;", 2, "Double, `;`"], -["0;", 2, "Integer Zero, `;`"], -["0.0;", 2, "Double Zero, `;`"], -["0.001;", 2, "0 < Decimalized Double < 1, `;`"], -["1.e2;", 2, "Integer With Decimal and Exponential Component (`e`), `;`"], -["1.e-2;", 2, "Integer With Decimal and Negative Exponential Component, `;`"], -["1.E2;", 2, "Integer With Decimal and Uppercase Exponential Component (`E`), `;`"], -["1.E-2;", 2, "Integer With Decimal and Uppercase Negative Exponential Component, `;`"], -[".5;", 2, "0 < Double < 1, `;`"], -[".5e3;", 2, "(0 < Double < 1) With Exponential Component"], -[".5e-3;", 2, "(0 < Double < 1) With Negative Exponential Component"], -["0.5e3;", 2, "(0 < Decimalized Double < 1) With Exponential Component"], -["55;", 2, "Two-Digit Integer, `;`"], -["123;", 2, "Three-Digit Integer, `;`"], -["55.55;", 2, "Two-Digit Double, `;`"], -["55.55e10;", 2, "Two-Digit Double With Exponential Component, `;`"], -["123.456;", 2, "Three-Digit Double, `;`"], -["1+e;", 4, "Additive Expression, `;`"], -["0x01;", 2, "Hexadecimal `1` With 1 Leading Zero, `;`"], -["0xcafe;", 2, "Hexadecimal `51966`, `;`"], -["0x12345678;", 2, "Hexadecimal `305419896`, `;`"], -["0x1234ABCD;", 2, "Hexadecimal `305441741` With Uppercase Letters, `;`"], -["0x0001;", 2, "Hexadecimal `1` with 3 Leading Zeros, `;`"], - -// Strings. -["\"foo\";", 2, "Multi-Character Double-Quoted String, `;`"], -["\"a\\n\";", 2, "Double-Quoted String Containing Linefeed, `;`"], -["\'foo\';", 2, "Single-Quoted String, `;`"], -["'a\\n';", 2, "Single-Quoted String Containing Linefeed, `;`"], -["\"x\";", 2, "Single-Character Double-Quoted String, `;`"], -["'';", 2, "Empty Single-Quoted String, `;`"], -["\"foo\\tbar\";", 2, "Double-Quoted String With Tab Character, `;`"], -["\"!@#$%^&*()_+{}[]\";", 2, "Double-Quoted String Containing Punctuators, `;`"], -["\"/*test*/\";", 2, "Double-Quoted String Containing Block Comment, `;`"], -["\"//test\";", 2, "Double-Quoted String Containing Line Comment, `;`"], -["\"\\\\\";", 2, "Double-Quoted String Containing Reverse Solidus, `;`"], -["\"\\u0001\";", 2, "Double-Quoted String Containing Numeric Unicode Escape Sequence, `;`"], -["\"\\uFEFF\";", 2, "Double-Quoted String Containing Alphanumeric Unicode Escape Sequence, `;`"], -["\"\\u10002\";", 2, "Double-Quoted String Containing 5-Digit Unicode Escape Sequence, `;`"], -["\"\\x55\";", 2, "Double-Quoted String Containing Hex Escape Sequence, `;`"], -["\"\\x55a\";", 2, "Double-Quoted String Containing Hex Escape Sequence and Additional Character, `;`"], -["\"a\\\\nb\";", 2, "Double-Quoted String Containing Escaped Linefeed, `;`"], -["\";\"", 1, "Double-Quoted String Containing `;`"], -["\"a\\\nb\";", 2, "Double-Quoted String Containing Reverse Solidus and Linefeed, `;`"], -["'\\\\'+ ''", 4, "Single-Quoted String Containing Reverse Solidus, `+`, Empty Single-Quoted String"], - -// `null`, `true`, and `false`. -["null;", 2, "`null`, `;`"], -["true;", 2, "`true`, `;`"], -["false;", 2, "`false`, `;`"], - -// RegExps -["/a/;", 2, [true, true], "Single-Character RegExp, `;`"], -["/abc/;", 2, [true, true], "Multi-Character RegExp, `;`"], -["/abc[a-z]*def/g;", 2, [true, true], "RegExp Containing Character Range and Quantifier, `;`"], -["/\\b/;", 2, [true, true], "RegExp Containing Control Character, `;`"], -["/[a-zA-Z]/;", 2, [true, true], "RegExp Containing Extended Character Range, `;`"], -["/foo(.*)/g;", 2, [true, false], "RegExp Containing Capturing Group and Quantifier, `;`"], - -// Array Literals. -["[];", 3, "Empty Array, `;`"], -["[\b\n\f\r\t\x20];", 9, "Array Containing Whitespace, `;`"], -["[1];", 4, "Array Containing 1 Element, `;`"], -["[1,2];", 6, "Array Containing 2 Elements, `;`"], -["[1,2,,];", 8, "Array Containing 2 Elisions, `;`"], -["[1,2,3];", 8, "Array Containing 3 Elements, `;`"], -["[1,2,3,,,];", 11, "Array Containing 3 Elisions, `;`"], - -// Object Literals. -["({x:5});", 8, "Object Literal Containing 1 Member; `;`"], -["({x:5,y:6});", 12, "Object Literal Containing 2 Members, `;`"], -["({x:5,});", 9, "Object Literal Containing 1 Member and Trailing Comma, `;`"], -["({if:5});", 8, "Object Literal Containing Reserved Word Property Name, `;`"], -["({ get x() {42;} });", 17, "Object Literal Containing Getter, `;`"], -["({ set y(a) {1;} });", 18, "Object Literal Containing Setter, `;`"], - -// Member Expressions. -["o.m;", 4, "Dot Member Accessor, `;`"], -["o['m'];", 5, "Square Bracket Member Accessor, `;`"], -["o['n']['m'];", 8, "Nested Square Bracket Member Accessor, `;`"], -["o.n.m;", 6, "Nested Dot Member Accessor, `;`"], -["o.if;", 4, "Dot Reserved Property Name Accessor, `;`"], - -// Function Calls. -["f();", 4, "Function Call Operator, `;`"], -["f(x);", 5, "Function Call Operator With 1 Argument, `;`"], -["f(x,y);", 7, "Function Call Operator With Multiple Arguments, `;`"], -["o.m();", 6, "Dot Member Accessor, Function Call, `;`"], -["o['m']();", 7, "Square Bracket Member Accessor, Function Call, `;`"], -["o.m(x);", 7, "Dot Member Accessor, Function Call With 1 Argument, `;`"], -["o['m'](x);", 8, "Square Bracket Member Accessor, Function Call With 1 Argument, `;`"], -["o.m(x,y);", 9, "Dot Member Accessor, Function Call With 2 Arguments, `;`"], -["o['m'](x,y);", 10, "Square Bracket Member Accessor, Function Call With 2 Arguments, `;`"], -["f(x)(y);", 8, "Nested Function Call With 1 Argument Each, `;`"], -["f().x;", 6, "Function Call, Dot Member Accessor, `;`"], - -// `eval` Function. -["eval('x');", 5, "`eval` Invocation With 1 Argument, `;`"], -["(eval)('x');", 7, "Direct `eval` Call Example, `;`"], -["(1,eval)('x');", 9, "Indirect `eval` Call Example, `;`"], -["eval(x,y);", 7, "`eval` Invocation With 2 Arguments, `;`"], - -// `new` Operator. -["new f();", 6, "`new` Operator, Function Call, `;`"], -["new o;", 4, "`new` Operator, Identifier, `;`"], -["new o.m;", 6, "`new` Operator, Dot Member Accessor, `;`"], -["new o.m(x);", 9, "`new` Operator, Dot Member Accessor, Function Call With 1 Argument, `;`"], -["new o.m(x,y);", 11, "``new` Operator, Dot Member Accessor, Function Call With 2 Arguments , `;`"], - -// Prefix and Postfix Increment. -["++x;", 3, "Prefix Increment, Identifier, `;`"], -["x++;", 3, "Identifier, Postfix Increment, `;`"], -["--x;", 3, "Prefix Decrement, Identifier, `;`"], -["x--;", 3, "Postfix Decrement, Identifier, `;`"], -["x ++;", 4, "Identifier, Space, Postfix Increment, `;`"], -["x /* comment */ ++;", 6, "Identifier, Block Comment, Postfix Increment, `;`"], -["++ /* comment */ x;", 6, "Prefix Increment, Block Comment, Identifier, `;`"], - -// Unary Operators. -["delete x;", 4, "`delete` Operator, Space, Identifier, `;`"], -["void x;", 4, "`void` Operator, Space, Identifier, `;`"], -["typeof x;", 4, "`typeof` Operator, Space, Identifier, `;`"], -["+x;", 3, "Unary `+` Operator, Identifier, `;`"], -["-x;", 3, "Unary Negation Operator, Identifier, `;`"], -["~x;", 3, "Bitwise NOT Operator, Identifier, `;`"], -["!x;", 3, "Logical NOT Operator, Identifier, `;`"], - -// Comma Operator. -["x, y;", 5, "Comma Operator"], - -// Miscellaneous. -["new Date++;", 5, "`new` Operator, Identifier, Postfix Increment, `;`"], -["+x++;", 4, "Unary `+`, Identifier, Postfix Increment, `;`"], - -// Expressions. -["1 * 2;", 6, "Integer, Multiplication, Integer, `;`"], -["1 / 2;", 6, "Integer, Division, Integer, `;`"], -["1 % 2;", 6, "Integer, Modulus, Integer, `;`"], -["1 + 2;", 6, "Integer, Addition, Integer, `;`"], -["1 - 2;", 6, "Integer, Subtraction, Integer, `;`"], -["1 << 2;", 6, "Integer, Bitwise Left Shift, Integer, `;`"], -["1 >>> 2;", 6, "Integer, Bitwise Zero-fill Right Shift, Integer, `;`"], -["1 >> 2;", 6, "Integer, Bitwise Sign-Propagating Right Shift, Integer, `;`"], -["1 * 2 + 3;", 10, "Order-of-Operations Expression, `;`"], -["(1+2)*3;", 8, "Parenthesized Additive Expression, Multiplication, `;`"], -["1*(2+3);", 8, "Multiplication, Parenthesized Additive Expression, `;`"], -["xy;", 4, "Greater-Than Relational Operator, `;`"], -["x<=y;", 4, "Less-Than-or-Equal-To Relational Operator, `;`"], -["x>=y;", 4, "Greater-Than-or-Equal-To Relational Operator, `;`"], -["x instanceof y;", 6, "`instanceof` Operator, `;`"], -["x in y;", 6, "`in` Operator, `;`"], -["x&y;", 4, "Bitwise AND Operator, `;`"], -["x^y;", 4, "Bitwise XOR Operator, `;`"], -["x|y;", 4, "Bitwise OR Operator, `;`"], -["x+y>>= y;", 6, "Bitwise Zero-Fill Right Shift Assignment, `;`"], -["x <<= y;", 6, "Bitwise Left Shift Assignment, `;`"], -["x += y;", 6, "Additive Assignment, `;`"], -["x -= y;", 6, "Subtractive Assignment, `;`"], -["x *= y;", 6, "Multiplicative Assignment, `;`"], -["x /= y;", 6, "Divisive Assignment, `;`"], -["x %= y;", 6, "Modulus Assignment, `;`"], -["x >>= y;", 6, "Bitwise Sign-Propagating Right Shift Assignment, `;`"], -["x &= y;", 6, "Bitwise AND Assignment, `;`"], -["x ^= y;", 6, "Bitwise XOR Assignment, `;`"], -["x |= y;", 6, "Bitwise OR Assignment, `;`"], - -// Blocks. -["{};", 3, "Empty Block, `;`"], -["{x;};", 5, "Block Containing 1 Identifier, `;`"], -["{x;y;};", 7, "Block Containing 2 Identifiers, `;`"], - -// Variable Declarations. -["var abc;", 4, "Variable Declaration"], -["var x,y;", 6, "Comma-Separated Variable Declarations, `;`"], -["var x=1,y=2;", 10, "Comma-Separated Variable Initializations, `;`"], -["var x,y=2;", 8, "Variable Declaration, Variable Initialization, `;`"], - -// Empty Statements. -[";", 1, "Empty Statement"], -["\n;", 2, "Linefeed, `;`"], - -// Expression Statements. -["x;", 2, "Identifier, `;`"], -["5;", 2, "Integer, `;`"], -["1+2;", 4, "Additive Statement, `;`"], - -// `if...else` Statements. -["if (c) x; else y;", 13, "Space-Delimited `if...else` Statement"], -["if (c) x;", 8, "Space-Delimited `if` Statement, `;`"], -["if (c) {} else {};", 14, "Empty Block-Delimited `if...else` Statement"], -["if (c1) if (c2) s1; else s2;", 19, "Nested `if...else` Statement Without Dangling `else`"], - -// `while` and `do...while` Loops. -["do s; while (e);", 11, "Space-Delimited `do...while` Loop"], -["do { s; } while (e);", 15, "Block-Delimited `do...while` Loop"], -["while (e) s;", 8, "Space-Delimited `while` Loop"], -["while (e) { s; };", 13, "Block-Delimited `while` Loop"], - -// `for` and `for...in` Loops. -["for (;;) ;", 8, "Infinite Space-Delimited `for` Loop"], -["for (;c;x++) x;", 12, "`for` Loop: Empty Initialization Condition; Space-Delimited Body"], -["for (i;i - - - -UglifyJS – a JavaScript parser/compressor/beautifier - - - - - - - - - - - - - -
- -
- -
-

UglifyJS – a JavaScript parser/compressor/beautifier

- - - - -
-

1 UglifyJS — a JavaScript parser/compressor/beautifier

-
- - -

-This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on NodeJS, but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the exports.* lines from UglifyJS sources). -

-

-The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in parse-js.js and it's a -port to JavaScript of the excellent parse-js Common Lisp library from Marijn Haverbeke. -

-

-( See cl-uglify-js if you're looking for the Common Lisp version of -UglifyJS. ) -

-

-The second part of this package, implemented in process.js, inspects and -manipulates the AST generated by the parser to provide the following: -

-
    -
  • ability to re-generate JavaScript code from the AST. Optionally - indented—you can use this if you want to “beautify” a program that has - been compressed, so that you can inspect the source. But you can also run - our code generator to print out an AST without any whitespace, so you - achieve compression as well. - -
  • -
  • shorten variable names (usually to single characters). Our mangler will - analyze the code and generate proper variable names, depending on scope - and usage, and is smart enough to deal with globals defined elsewhere, or - with eval() calls or with{} statements. In short, if eval() or - with{} are used in some scope, then all variables in that scope and any - variables in the parent scopes will remain unmangled, and any references - to such variables remain unmangled as well. - -
  • -
  • various small optimizations that may lead to faster code but certainly - lead to smaller code. Where possible, we do the following: - -
      -
    • foo["bar"] ==> foo.bar - -
    • -
    • remove block brackets {} - -
    • -
    • join consecutive var declarations: - var a = 10; var b = 20; ==> var a=10,b=20; - -
    • -
    • resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the - replacement if the result occupies less bytes; for example 1/3 would - translate to 0.333333333333, so in this case we don't replace it. - -
    • -
    • consecutive statements in blocks are merged into a sequence; in many - cases, this leaves blocks with a single statement, so then we can remove - the block brackets. - -
    • -
    • various optimizations for IF statements: - -
        -
      • if (foo) bar(); else baz(); ==> foo?bar():baz(); -
      • -
      • if (!foo) bar(); else baz(); ==> foo?baz():bar(); -
      • -
      • if (foo) bar(); ==> foo&&bar(); -
      • -
      • if (!foo) bar(); ==> foo||bar(); -
      • -
      • if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); -
      • -
      • if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - -
      • -
      - -
    • -
    • remove some unreachable code and warn about it (code that follows a - return, throw, break or continue statement, except - function/variable declarations). - -
    • -
    • act a limited version of a pre-processor (c.f. the pre-processor of - C/C++) to allow you to safely replace selected global symbols with - specified values. When combined with the optimisations above this can - make UglifyJS operate slightly more like a compilation process, in - that when certain symbols are replaced by constant values, entire code - blocks may be optimised away as unreachable. -
    • -
    - -
  • -
- - - -
- -
-

1.1 Unsafe transformations

-
- - -

-The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the ---unsafe flag. -

- -
- -
-

1.1.1 Calls involving the global Array constructor

-
- - -

-The following transformations occur: -

- - - -
new Array(1, 2, 3, 4)  => [1,2,3,4]
-Array(a, b, c)         => [a,b,c]
-new Array(5)           => Array(5)
-new Array(a)           => Array(a)
-
- - -

-These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. -

-

-UglifyJS does handle the case where Array is redefined locally, or even -globally but with a function or var declaration. Therefore, in the -following cases UglifyJS doesn't touch calls or instantiations of Array: -

- - - -
// case 1.  globally declared variable
-  var Array;
-  new Array(1, 2, 3);
-  Array(a, b);
-
-  // or (can be declared later)
-  new Array(1, 2, 3);
-  var Array;
-
-  // or (can be a function)
-  new Array(1, 2, 3);
-  function Array() { ... }
-
-// case 2.  declared in a function
-  (function(){
-    a = new Array(1, 2, 3);
-    b = Array(5, 6);
-    var Array;
-  })();
-
-  // or
-  (function(Array){
-    return Array(5, 6, 7);
-  })();
-
-  // or
-  (function(){
-    return new Array(1, 2, 3, 4);
-    function Array() { ... }
-  })();
-
-  // etc.
-
- - -
- -
- -
-

1.1.2 obj.toString() ==> obj+“”

-
- - -
-
- -
- -
-

1.2 Install (NPM)

-
- - -

-UglifyJS is now available through NPM — npm install uglify-js should do -the job. -

-
- -
- -
-

1.3 Install latest code from GitHub

-
- - - - - -
## clone the repository
-mkdir -p /where/you/wanna/put/it
-cd /where/you/wanna/put/it
-git clone git://github.com/mishoo/UglifyJS.git
-
-## make the module available to Node
-mkdir -p ~/.node_libraries/
-cd ~/.node_libraries/
-ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js
-
-## and if you want the CLI script too:
-mkdir -p ~/bin
-cd ~/bin
-ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs
-  # (then add ~/bin to your $PATH if it's not there already)
-
- - -
- -
- -
-

1.4 Usage

-
- - -

-There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: -

- - - -
uglifyjs [ options... ] [ filename ]
-
- - -

-filename should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. -

-

-Supported options: -

-
    -
  • -b or --beautify — output indented code; when passed, additional - options control the beautifier: - -
      -
    • -i N or --indent N — indentation level (number of spaces) - -
    • -
    • -q or --quote-keys — quote keys in literal objects (by default, - only keys that cannot be identifier names will be quotes). - -
    • -
    - -
  • -
  • --ascii — pass this argument to encode non-ASCII characters as - \uXXXX sequences. By default UglifyJS won't bother to do it and will - output Unicode characters instead. (the output is always encoded in UTF8, - but if you pass this option you'll only get ASCII). - -
  • -
  • -nm or --no-mangle — don't mangle names. - -
  • -
  • -nmf or --no-mangle-functions – in case you want to mangle variable - names, but not touch function names. - -
  • -
  • -ns or --no-squeeze — don't call ast_squeeze() (which does various - optimizations that result in smaller, less readable code). - -
  • -
  • -mt or --mangle-toplevel — mangle names in the toplevel scope too - (by default we don't do this). - -
  • -
  • --no-seqs — when ast_squeeze() is called (thus, unless you pass - --no-squeeze) it will reduce consecutive statements in blocks into a - sequence. For example, "a = 10; b = 20; foo();" will be written as - "a=10,b=20,foo();". In various occasions, this allows us to discard the - block brackets (since the block becomes a single statement). This is ON - by default because it seems safe and saves a few hundred bytes on some - libs that I tested it on, but pass --no-seqs to disable it. - -
  • -
  • --no-dead-code — by default, UglifyJS will remove code that is - obviously unreachable (code that follows a return, throw, break or - continue statement and is not a function/variable declaration). Pass - this option to disable this optimization. - -
  • -
  • -nc or --no-copyright — by default, uglifyjs will keep the initial - comment tokens in the generated code (assumed to be copyright information - etc.). If you pass this it will discard it. - -
  • -
  • -o filename or --output filename — put the result in filename. If - this isn't given, the result goes to standard output (or see next one). - -
  • -
  • --overwrite — if the code is read from a file (not from STDIN) and you - pass --overwrite then the output will be written in the same file. - -
  • -
  • --ast — pass this if you want to get the Abstract Syntax Tree instead - of JavaScript as output. Useful for debugging or learning more about the - internals. - -
  • -
  • -v or --verbose — output some notes on STDERR (for now just how long - each operation takes). - -
  • -
  • -d SYMBOL[=VALUE] or --define SYMBOL[=VALUE] — will replace - all instances of the specified symbol where used as an identifier - (except where symbol has properly declared by a var declaration or - use as function parameter or similar) with the specified value. This - argument may be specified multiple times to define multiple - symbols - if no value is specified the symbol will be replaced with - the value true, or you can specify a numeric value (such as - 1024), a quoted string value (such as ="object"= or - ='https://github.com'), or the name of another symbol or keyword (such as =null or document). - This allows you, for example, to assign meaningful names to key - constant values but discard the symbolic names in the uglified - version for brevity/efficiency, or when used wth care, allows - UglifyJS to operate as a form of conditional compilation - whereby defining appropriate values may, by dint of the constant - folding and dead code removal features above, remove entire - superfluous code blocks (e.g. completely remove instrumentation or - trace code for production use). - Where string values are being defined, the handling of quotes are - likely to be subject to the specifics of your command shell - environment, so you may need to experiment with quoting styles - depending on your platform, or you may find the option - --define-from-module more suitable for use. - -
  • -
  • -define-from-module SOMEMODULE — will load the named module (as - per the NodeJS require() function) and iterate all the exported - properties of the module defining them as symbol names to be defined - (as if by the --define option) per the name of each property - (i.e. without the module name prefix) and given the value of the - property. This is a much easier way to handle and document groups of - symbols to be defined rather than a large number of --define - options. - -
  • -
  • --unsafe — enable other additional optimizations that are known to be - unsafe in some contrived situations, but could still be generally useful. - For now only these: - -
      -
    • foo.toString() ==> foo+"" -
    • -
    • new Array(x,…) ==> [x,…] -
    • -
    • new Array(x) ==> Array(x) - -
    • -
    - -
  • -
  • --max-line-len (default 32K characters) — add a newline after around - 32K characters. I've seen both FF and Chrome croak when all the code was - on a single line of around 670K. Pass –max-line-len 0 to disable this - safety feature. - -
  • -
  • --reserved-names — some libraries rely on certain names to be used, as - pointed out in issue #92 and #81, so this option allow you to exclude such - names from the mangler. For example, to keep names require and $super - intact you'd specify –reserved-names "require,$super". - -
  • -
  • --inline-script – when you want to include the output literally in an - HTML <script> tag you can use this option to prevent </script from - showing up in the output. - -
  • -
  • --lift-vars – when you pass this, UglifyJS will apply the following - transformations (see the notes in API, ast_lift_variables): - -
      -
    • put all var declarations at the start of the scope -
    • -
    • make sure a variable is declared only once -
    • -
    • discard unused function arguments -
    • -
    • discard unused inner (named) functions -
    • -
    • finally, try to merge assignments into that one var declaration, if - possible. -
    • -
    - -
  • -
- - - -
- -
-

1.4.1 API

-
- - -

-To use the library from JavaScript, you'd do the following (example for -NodeJS): -

- - - -
var jsp = require("uglify-js").parser;
-var pro = require("uglify-js").uglify;
-
-var orig_code = "... JS code here";
-var ast = jsp.parse(orig_code); // parse code and get the initial AST
-ast = pro.ast_mangle(ast); // get a new AST with mangled names
-ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
-var final_code = pro.gen_code(ast); // compressed code here
-
- - -

-The above performs the full compression that is possible right now. As you -can see, there are a sequence of steps which you can apply. For example if -you want compressed output but for some reason you don't want to mangle -variable names, you would simply skip the line that calls -pro.ast_mangle(ast). -

-

-Some of these functions take optional arguments. Here's a description: -

-
    -
  • jsp.parse(code, strict_semicolons) – parses JS code and returns an AST. - strict_semicolons is optional and defaults to false. If you pass - true then the parser will throw an error when it expects a semicolon and - it doesn't find it. For most JS code you don't want that, but it's useful - if you want to strictly sanitize your code. - -
  • -
  • pro.ast_lift_variables(ast) – merge and move var declarations to the - scop of the scope; discard unused function arguments or variables; discard - unused (named) inner functions. It also tries to merge assignments - following the var declaration into it. - -

    - If your code is very hand-optimized concerning var declarations, this - lifting variable declarations might actually increase size. For me it - helps out. On jQuery it adds 865 bytes (243 after gzip). YMMV. Also - note that (since it's not enabled by default) this operation isn't yet - heavily tested (please report if you find issues!). -

    -

    - Note that although it might increase the image size (on jQuery it gains - 865 bytes, 243 after gzip) it's technically more correct: in certain - situations, dead code removal might drop variable declarations, which - would not happen if the variables are lifted in advance. -

    -

    - Here's an example of what it does: -

  • -
- - - - - -
function f(a, b, c, d, e) {
-    var q;
-    var w;
-    w = 10;
-    q = 20;
-    for (var i = 1; i < 10; ++i) {
-        var boo = foo(a);
-    }
-    for (var i = 0; i < 1; ++i) {
-        var boo = bar(c);
-    }
-    function foo(){ ... }
-    function bar(){ ... }
-    function baz(){ ... }
-}
-
-// transforms into ==>
-
-function f(a, b, c) {
-    var i, boo, w = 10, q = 20;
-    for (i = 1; i < 10; ++i) {
-        boo = foo(a);
-    }
-    for (i = 0; i < 1; ++i) {
-        boo = bar(c);
-    }
-    function foo() { ... }
-    function bar() { ... }
-}
-
- - -
    -
  • pro.ast_mangle(ast, options) – generates a new AST containing mangled - (compressed) variable and function names. It supports the following - options: - -
      -
    • toplevel – mangle toplevel names (by default we don't touch them). -
    • -
    • except – an array of names to exclude from compression. -
    • -
    • defines – an object with properties named after symbols to - replace (see the --define option for the script) and the values - representing the AST replacement value. - -
    • -
    - -
  • -
  • pro.ast_squeeze(ast, options) – employs further optimizations designed - to reduce the size of the code that gen_code would generate from the - AST. Returns a new AST. options can be a hash; the supported options - are: - -
      -
    • make_seqs (default true) which will cause consecutive statements in a - block to be merged using the "sequence" (comma) operator - -
    • -
    • dead_code (default true) which will remove unreachable code. - -
    • -
    - -
  • -
  • pro.gen_code(ast, options) – generates JS code from the AST. By - default it's minified, but using the options argument you can get nicely - formatted output. options is, well, optional :-) and if you pass it it - must be an object and supports the following properties (below you can see - the default values): - -
      -
    • beautify: false – pass true if you want indented output -
    • -
    • indent_start: 0 (only applies when beautify is true) – initial - indentation in spaces -
    • -
    • indent_level: 4 (only applies when beautify is true) -- - indentation level, in spaces (pass an even number) -
    • -
    • quote_keys: false – if you pass true it will quote all keys in - literal objects -
    • -
    • space_colon: false (only applies when beautify is true) – wether - to put a space before the colon in object literals -
    • -
    • ascii_only: false – pass true if you want to encode non-ASCII - characters as \uXXXX. -
    • -
    • inline_script: false – pass true to escape occurrences of - </script in strings -
    • -
    - -
  • -
- - -
- -
- -
-

1.4.2 Beautifier shortcoming – no more comments

-
- - -

-The beautifier can be used as a general purpose indentation tool. It's -useful when you want to make a minified file readable. One limitation, -though, is that it discards all comments, so you don't really want to use it -to reformat your code, unless you don't have, or don't care about, comments. -

-

-In fact it's not the beautifier who discards comments — they are dumped at -the parsing stage, when we build the initial AST. Comments don't really -make sense in the AST, and while we could add nodes for them, it would be -inconvenient because we'd have to add special rules to ignore them at all -the processing stages. -

-
- -
- -
-

1.4.3 Use as a code pre-processor

-
- - -

-The --define option can be used, particularly when combined with the -constant folding logic, as a form of pre-processor to enable or remove -particular constructions, such as might be used for instrumenting -development code, or to produce variations aimed at a specific -platform. -

-

-The code below illustrates the way this can be done, and how the -symbol replacement is performed. -

- - - -
CLAUSE1: if (typeof DEVMODE === 'undefined') {
-    DEVMODE = true;
-}
-
-CLAUSE2: function init() {
-    if (DEVMODE) {
-        console.log("init() called");
-    }
-    ....
-    DEVMODE &amp;&amp; console.log("init() complete");
-}
-
-CLAUSE3: function reportDeviceStatus(device) {
-    var DEVMODE = device.mode, DEVNAME = device.name;
-    if (DEVMODE === 'open') {
-        ....
-    }
-}
-
- - -

-When the above code is normally executed, the undeclared global -variable DEVMODE will be assigned the value true (see CLAUSE1) -and so the init() function (CLAUSE2) will write messages to the -console log when executed, but in CLAUSE3 a locally declared -variable will mask access to the DEVMODE global symbol. -

-

-If the above code is processed by UglifyJS with an argument of ---define DEVMODE=false then UglifyJS will replace DEVMODE with the -boolean constant value false within CLAUSE1 and CLAUSE2, but it -will leave CLAUSE3 as it stands because there DEVMODE resolves to -a validly declared variable. -

-

-And more so, the constant-folding features of UglifyJS will recognise -that the if condition of CLAUSE1 is thus always false, and so will -remove the test and body of CLAUSE1 altogether (including the -otherwise slightly problematical statement false = true; which it -will have formed by replacing DEVMODE in the body). Similarly, -within CLAUSE2 both calls to console.log() will be removed -altogether. -

-

-In this way you can mimic, to a limited degree, the functionality of -the C/C++ pre-processor to enable or completely remove blocks -depending on how certain symbols are defined - perhaps using UglifyJS -to generate different versions of source aimed at different -environments -

-

-It is recommmended (but not made mandatory) that symbols designed for -this purpose are given names consisting of UPPER_CASE_LETTERS to -distinguish them from other (normal) symbols and avoid the sort of -clash that CLAUSE3 above illustrates. -

-
-
- -
- -
-

1.5 Compression – how good is it?

-
- - -

-Here are updated statistics. (I also updated my Google Closure and YUI -installations). -

-

-We're still a lot better than YUI in terms of compression, though slightly -slower. We're still a lot faster than Closure, and compression after gzip -is comparable. -

- - -- - - - - - - - - - -
FileUglifyJSUglifyJS+gzipClosureClosure+gzipYUIYUI+gzip
jquery-1.6.2.js91001 (0:01.59)3189690678 (0:07.40)31979101527 (0:01.82)34646
paper.js142023 (0:01.65)43334134301 (0:07.42)42495173383 (0:01.58)48785
prototype.js88544 (0:01.09)2668086955 (0:06.97)2632692130 (0:00.79)28624
thelib-full.js (DynarchLIB)251939 (0:02.55)72535249911 (0:09.05)72696258869 (0:01.94)76584
- - -
- -
- -
-

1.6 Bugs?

-
- - -

-Unfortunately, for the time being there is no automated test suite. But I -ran the compressor manually on non-trivial code, and then I tested that the -generated code works as expected. A few hundred times. -

-

-DynarchLIB was started in times when there was no good JS minifier. -Therefore I was quite religious about trying to write short code manually, -and as such DL contains a lot of syntactic hacks1 such as “foo == bar ? a -= 10 : b = 20”, though the more readable version would clearly be to use -“if/else”. -

-

-Since the parser/compressor runs fine on DL and jQuery, I'm quite confident -that it's solid enough for production use. If you can identify any bugs, -I'd love to hear about them (use the Google Group or email me directly). -

-
- -
- -
-

1.7 Links

-
- - - - - -
- -
- -
-

1.8 License

-
- - -

-UglifyJS is released under the BSD license: -

- - - -
Copyright 2010 (c) Mihai Bazon <mihai.bazon@gmail.com>
-Based on parse-js (http://marijn.haverbeke.nl/parse-js/).
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-    * Redistributions of source code must retain the above
-      copyright notice, this list of conditions and the following
-      disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-      copyright notice, this list of conditions and the following
-      disclaimer in the documentation and/or other materials
-      provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
- - -
-

Footnotes:

-
-

1 I even reported a few bugs and suggested some fixes in the original - parse-js library, and Marijn pushed fixes literally in minutes. -

-
-
- -
-
-
- -
-

Date: 2011-12-09 14:59:08 EET

-

Author: Mihai Bazon

-

Org version 7.7 with Emacs version 23

-Validate XHTML 1.0 - -
- - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org deleted file mode 100644 index 4d01fdfd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/uglify-js/README.org +++ /dev/null @@ -1,574 +0,0 @@ -#+TITLE: UglifyJS -- a JavaScript parser/compressor/beautifier -#+KEYWORDS: javascript, js, parser, compiler, compressor, mangle, minify, minifier -#+DESCRIPTION: a JavaScript parser/compressor/beautifier in JavaScript -#+STYLE: -#+AUTHOR: Mihai Bazon -#+EMAIL: mihai.bazon@gmail.com - -* UglifyJS --- a JavaScript parser/compressor/beautifier - -This package implements a general-purpose JavaScript -parser/compressor/beautifier toolkit. It is developed on [[http://nodejs.org/][NodeJS]], but it -should work on any JavaScript platform supporting the CommonJS module system -(and if your platform of choice doesn't support CommonJS, you can easily -implement it, or discard the =exports.*= lines from UglifyJS sources). - -The tokenizer/parser generates an abstract syntax tree from JS code. You -can then traverse the AST to learn more about the code, or do various -manipulations on it. This part is implemented in [[../lib/parse-js.js][parse-js.js]] and it's a -port to JavaScript of the excellent [[http://marijn.haverbeke.nl/parse-js/][parse-js]] Common Lisp library from [[http://marijn.haverbeke.nl/][Marijn -Haverbeke]]. - -( See [[http://github.com/mishoo/cl-uglify-js][cl-uglify-js]] if you're looking for the Common Lisp version of -UglifyJS. ) - -The second part of this package, implemented in [[../lib/process.js][process.js]], inspects and -manipulates the AST generated by the parser to provide the following: - -- ability to re-generate JavaScript code from the AST. Optionally - indented---you can use this if you want to “beautify” a program that has - been compressed, so that you can inspect the source. But you can also run - our code generator to print out an AST without any whitespace, so you - achieve compression as well. - -- shorten variable names (usually to single characters). Our mangler will - analyze the code and generate proper variable names, depending on scope - and usage, and is smart enough to deal with globals defined elsewhere, or - with =eval()= calls or =with{}= statements. In short, if =eval()= or - =with{}= are used in some scope, then all variables in that scope and any - variables in the parent scopes will remain unmangled, and any references - to such variables remain unmangled as well. - -- various small optimizations that may lead to faster code but certainly - lead to smaller code. Where possible, we do the following: - - - foo["bar"] ==> foo.bar - - - remove block brackets ={}= - - - join consecutive var declarations: - var a = 10; var b = 20; ==> var a=10,b=20; - - - resolve simple constant expressions: 1 +2 * 3 ==> 7. We only do the - replacement if the result occupies less bytes; for example 1/3 would - translate to 0.333333333333, so in this case we don't replace it. - - - consecutive statements in blocks are merged into a sequence; in many - cases, this leaves blocks with a single statement, so then we can remove - the block brackets. - - - various optimizations for IF statements: - - - if (foo) bar(); else baz(); ==> foo?bar():baz(); - - if (!foo) bar(); else baz(); ==> foo?baz():bar(); - - if (foo) bar(); ==> foo&&bar(); - - if (!foo) bar(); ==> foo||bar(); - - if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); - - if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} - - - remove some unreachable code and warn about it (code that follows a - =return=, =throw=, =break= or =continue= statement, except - function/variable declarations). - - - act a limited version of a pre-processor (c.f. the pre-processor of - C/C++) to allow you to safely replace selected global symbols with - specified values. When combined with the optimisations above this can - make UglifyJS operate slightly more like a compilation process, in - that when certain symbols are replaced by constant values, entire code - blocks may be optimised away as unreachable. - -** <> - -The following transformations can in theory break code, although they're -probably safe in most practical cases. To enable them you need to pass the -=--unsafe= flag. - -*** Calls involving the global Array constructor - -The following transformations occur: - -#+BEGIN_SRC js -new Array(1, 2, 3, 4) => [1,2,3,4] -Array(a, b, c) => [a,b,c] -new Array(5) => Array(5) -new Array(a) => Array(a) -#+END_SRC - -These are all safe if the Array name isn't redefined. JavaScript does allow -one to globally redefine Array (and pretty much everything, in fact) but I -personally don't see why would anyone do that. - -UglifyJS does handle the case where Array is redefined locally, or even -globally but with a =function= or =var= declaration. Therefore, in the -following cases UglifyJS *doesn't touch* calls or instantiations of Array: - -#+BEGIN_SRC js -// case 1. globally declared variable - var Array; - new Array(1, 2, 3); - Array(a, b); - - // or (can be declared later) - new Array(1, 2, 3); - var Array; - - // or (can be a function) - new Array(1, 2, 3); - function Array() { ... } - -// case 2. declared in a function - (function(){ - a = new Array(1, 2, 3); - b = Array(5, 6); - var Array; - })(); - - // or - (function(Array){ - return Array(5, 6, 7); - })(); - - // or - (function(){ - return new Array(1, 2, 3, 4); - function Array() { ... } - })(); - - // etc. -#+END_SRC - -*** =obj.toString()= ==> =obj+“”= - -** Install (NPM) - -UglifyJS is now available through NPM --- =npm install uglify-js= should do -the job. - -** Install latest code from GitHub - -#+BEGIN_SRC sh -## clone the repository -mkdir -p /where/you/wanna/put/it -cd /where/you/wanna/put/it -git clone git://github.com/mishoo/UglifyJS.git - -## make the module available to Node -mkdir -p ~/.node_libraries/ -cd ~/.node_libraries/ -ln -s /where/you/wanna/put/it/UglifyJS/uglify-js.js - -## and if you want the CLI script too: -mkdir -p ~/bin -cd ~/bin -ln -s /where/you/wanna/put/it/UglifyJS/bin/uglifyjs - # (then add ~/bin to your $PATH if it's not there already) -#+END_SRC - -** Usage - -There is a command-line tool that exposes the functionality of this library -for your shell-scripting needs: - -#+BEGIN_SRC sh -uglifyjs [ options... ] [ filename ] -#+END_SRC - -=filename= should be the last argument and should name the file from which -to read the JavaScript code. If you don't specify it, it will read code -from STDIN. - -Supported options: - -- =-b= or =--beautify= --- output indented code; when passed, additional - options control the beautifier: - - - =-i N= or =--indent N= --- indentation level (number of spaces) - - - =-q= or =--quote-keys= --- quote keys in literal objects (by default, - only keys that cannot be identifier names will be quotes). - -- =--ascii= --- pass this argument to encode non-ASCII characters as - =\uXXXX= sequences. By default UglifyJS won't bother to do it and will - output Unicode characters instead. (the output is always encoded in UTF8, - but if you pass this option you'll only get ASCII). - -- =-nm= or =--no-mangle= --- don't mangle names. - -- =-nmf= or =--no-mangle-functions= -- in case you want to mangle variable - names, but not touch function names. - -- =-ns= or =--no-squeeze= --- don't call =ast_squeeze()= (which does various - optimizations that result in smaller, less readable code). - -- =-mt= or =--mangle-toplevel= --- mangle names in the toplevel scope too - (by default we don't do this). - -- =--no-seqs= --- when =ast_squeeze()= is called (thus, unless you pass - =--no-squeeze=) it will reduce consecutive statements in blocks into a - sequence. For example, "a = 10; b = 20; foo();" will be written as - "a=10,b=20,foo();". In various occasions, this allows us to discard the - block brackets (since the block becomes a single statement). This is ON - by default because it seems safe and saves a few hundred bytes on some - libs that I tested it on, but pass =--no-seqs= to disable it. - -- =--no-dead-code= --- by default, UglifyJS will remove code that is - obviously unreachable (code that follows a =return=, =throw=, =break= or - =continue= statement and is not a function/variable declaration). Pass - this option to disable this optimization. - -- =-nc= or =--no-copyright= --- by default, =uglifyjs= will keep the initial - comment tokens in the generated code (assumed to be copyright information - etc.). If you pass this it will discard it. - -- =-o filename= or =--output filename= --- put the result in =filename=. If - this isn't given, the result goes to standard output (or see next one). - -- =--overwrite= --- if the code is read from a file (not from STDIN) and you - pass =--overwrite= then the output will be written in the same file. - -- =--ast= --- pass this if you want to get the Abstract Syntax Tree instead - of JavaScript as output. Useful for debugging or learning more about the - internals. - -- =-v= or =--verbose= --- output some notes on STDERR (for now just how long - each operation takes). - -- =-d SYMBOL[=VALUE]= or =--define SYMBOL[=VALUE]= --- will replace - all instances of the specified symbol where used as an identifier - (except where symbol has properly declared by a var declaration or - use as function parameter or similar) with the specified value. This - argument may be specified multiple times to define multiple - symbols - if no value is specified the symbol will be replaced with - the value =true=, or you can specify a numeric value (such as - =1024=), a quoted string value (such as ="object"= or - ='https://github.com'=), or the name of another symbol or keyword - (such as =null= or =document=). - This allows you, for example, to assign meaningful names to key - constant values but discard the symbolic names in the uglified - version for brevity/efficiency, or when used wth care, allows - UglifyJS to operate as a form of *conditional compilation* - whereby defining appropriate values may, by dint of the constant - folding and dead code removal features above, remove entire - superfluous code blocks (e.g. completely remove instrumentation or - trace code for production use). - Where string values are being defined, the handling of quotes are - likely to be subject to the specifics of your command shell - environment, so you may need to experiment with quoting styles - depending on your platform, or you may find the option - =--define-from-module= more suitable for use. - -- =-define-from-module SOMEMODULE= --- will load the named module (as - per the NodeJS =require()= function) and iterate all the exported - properties of the module defining them as symbol names to be defined - (as if by the =--define= option) per the name of each property - (i.e. without the module name prefix) and given the value of the - property. This is a much easier way to handle and document groups of - symbols to be defined rather than a large number of =--define= - options. - -- =--unsafe= --- enable other additional optimizations that are known to be - unsafe in some contrived situations, but could still be generally useful. - For now only these: - - - foo.toString() ==> foo+"" - - new Array(x,...) ==> [x,...] - - new Array(x) ==> Array(x) - -- =--max-line-len= (default 32K characters) --- add a newline after around - 32K characters. I've seen both FF and Chrome croak when all the code was - on a single line of around 670K. Pass --max-line-len 0 to disable this - safety feature. - -- =--reserved-names= --- some libraries rely on certain names to be used, as - pointed out in issue #92 and #81, so this option allow you to exclude such - names from the mangler. For example, to keep names =require= and =$super= - intact you'd specify --reserved-names "require,$super". - -- =--inline-script= -- when you want to include the output literally in an - HTML = - - - */ - -(function() { - this.loggly = function(opts) { - this.user_agent = get_agent(); - this.browser_size = get_size(); - log_methods = {'error': 5, 'warn': 4, 'info': 3, 'debug': 2, 'log': 1}; - if (!opts.url) throw new Error("Please include a Loggly HTTP URL."); - if (!opts.level) { - this.level = log_methods['info']; - } else { - this.level = log_methods[opts.level]; - } - this.log = function(data) { - if (log_methods['log'] == this.level) { - opts.data = data; - janky(opts); - } - }; - this.debug = function(data) { - if (log_methods['debug'] >= this.level) { - opts.data = data; - janky(opts); - } - }; - this.info = function(data) { - if (log_methods['info'] >= this.level) { - opts.data = data; - janky(opts); - } - }; - this.warn = function(data) { - if (log_methods['warn'] >= this.level) { - opts.data = data; - janky(opts); - } - }; - this.error = function(data) { - if (log_methods['error'] >= this.level) { - opts.data = data; - janky(opts); - } - }; - }; - this.janky = function(opts) { - janky._form(function(iframe, form) { - form.setAttribute("action", opts.url); - form.setAttribute("method", "post"); - janky._input(iframe, form, opts.data); - form.submit(); - setTimeout(function(){ - document.body.removeChild(iframe); - }, 2000); - }); - }; - this.janky._form = function(cb) { - var iframe = document.createElement("iframe"); - document.body.appendChild(iframe); - iframe.style.display = "none"; - setTimeout(function() { - var form = iframe.contentWindow.document.createElement("form"); - iframe.contentWindow.document.body.appendChild(form); - cb(iframe, form); - }, 0); - }; - this.janky._input = function(iframe, form, data) { - var inp = iframe.contentWindow.document.createElement("input"); - inp.setAttribute("type", "hidden"); - inp.setAttribute("name", "source"); - inp.value = "castor " + data; - form.appendChild(inp); - }; - this.get_agent = function () { - return navigator.appCodeName + navigator.appName + navigator.appVersion; - }; - this.get_size = function () { - var width = 0; var height = 0; - if( typeof( window.innerWidth ) == 'number' ) { - width = window.innerWidth; height = window.innerHeight; - } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { - width = document.documentElement.clientWidth; height = document.documentElement.clientHeight; - } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { - width = document.body.clientWidth; height = document.body.clientHeight; - } - return {'height': height, 'width': width}; - }; -})(); - - -jsworld={};jsworld.formatIsoDateTime=function(a,b){if(typeof a==="undefined")a=new Date;if(typeof b==="undefined")b=false;var c=jsworld.formatIsoDate(a)+" "+jsworld.formatIsoTime(a);if(b){var d=a.getHours()-a.getUTCHours();var e=Math.abs(d);var f=a.getUTCMinutes();var g=a.getMinutes();if(g!=f&&f<30&&d<0)e--;if(g!=f&&f>30&&d>0)e--;var h;if(g!=f)h=":30";else h=":00";var i;if(e<10)i="0"+e+h;else i=""+e+h;if(d<0)i="-"+i;else i="+"+i;c=c+i}return c};jsworld.formatIsoDate=function(a){if(typeof a==="undefined")a=new Date;var b=a.getFullYear();var c=a.getMonth()+1;var d=a.getDate();return b+"-"+jsworld._zeroPad(c,2)+"-"+jsworld._zeroPad(d,2)};jsworld.formatIsoTime=function(a){if(typeof a==="undefined")a=new Date;var b=a.getHours();var c=a.getMinutes();var d=a.getSeconds();return jsworld._zeroPad(b,2)+":"+jsworld._zeroPad(c,2)+":"+jsworld._zeroPad(d,2)};jsworld.parseIsoDateTime=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)(\d\d)(\d\d)[T ](\d\d)(\d\d)(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d)(\d\d)(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)[T ](\d\d):(\d\d):(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date/time string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);var f=parseInt(b[4],10);var g=parseInt(b[5],10);var h=parseInt(b[6],10);if(d<1||d>12||e<1||e>31||f<0||f>23||g<0||g>59||h<0||h>59)throw"Error: Invalid ISO-8601 date/time value";var i=new Date(c,d-1,e,f,g,h);if(i.getDate()!=e||i.getMonth()+1!=d)throw"Error: Invalid date";return i};jsworld.parseIsoDate=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/);if(b===null)b=a.match(/^(\d\d\d\d)(\d\d)(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);if(d<1||d>12||e<1||e>31)throw"Error: Invalid ISO-8601 date value";var f=new Date(c,d-1,e);if(f.getDate()!=e||f.getMonth()+1!=d)throw"Error: Invalid date";return f};jsworld.parseIsoTime=function(a){if(typeof a!="string")throw"Error: The parameter must be a string";var b=a.match(/^(\d\d):(\d\d):(\d\d)/);if(b===null)b=a.match(/^(\d\d)(\d\d)(\d\d)/);if(b===null)throw"Error: Invalid ISO-8601 date/time string";var c=parseInt(b[1],10);var d=parseInt(b[2],10);var e=parseInt(b[3],10);if(c<0||c>23||d<0||d>59||e<0||e>59)throw"Error: Invalid ISO-8601 time value";return new Date(0,0,0,c,d,e)};jsworld._trim=function(a){var b=" \n\r\t\f \u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";for(var c=0;c=0;c--){if(b.indexOf(a.charAt(c))===-1){a=a.substring(0,c+1);break}}return b.indexOf(a.charAt(0))===-1?a:""};jsworld._isNumber=function(a){if(typeof a=="number")return true;if(typeof a!="string")return false;var b=a+"";return/^-?(\d+|\d*\.\d+)$/.test(b)};jsworld._isInteger=function(a){if(typeof a!="number"&&typeof a!="string")return false;var b=a+"";return/^-?\d+$/.test(b)};jsworld._isFloat=function(a){if(typeof a!="number"&&typeof a!="string")return false;var b=a+"";return/^-?\.\d+?$/.test(b)};jsworld._hasOption=function(a,b){if(typeof a!="string"||typeof b!="string")return false;if(b.indexOf(a)!=-1)return true;else return false};jsworld._stringReplaceAll=function(a,b,c){var d;if(b.length==1&&c.length==1){d="";for(var e=0;e0){if(d.length>0)g=parseInt(d.shift(),10);if(isNaN(g))throw"Error: Invalid grouping";if(g==-1){e=a.substring(0,f)+e;break}f-=g;if(f<1){e=a.substring(0,f+g)+e;break}e=c+a.substring(f,f+g)+e}return e};jsworld._formatFractionPart=function(a,b){for(var c=0;a.length0)return a;else throw"Empty or no string"};if(a==null||typeof a!="object")throw"Error: Invalid/missing locale properties";if(typeof a.decimal_point!="string")throw"Error: Invalid/missing decimal_point property";this.decimal_point=a.decimal_point;if(typeof a.thousands_sep!="string")throw"Error: Invalid/missing thousands_sep property";this.thousands_sep=a.thousands_sep;if(typeof a.grouping!="string")throw"Error: Invalid/missing grouping property";this.grouping=a.grouping;if(typeof a.int_curr_symbol!="string")throw"Error: Invalid/missing int_curr_symbol property";if(!/[A-Za-z]{3}.?/.test(a.int_curr_symbol))throw"Error: Invalid int_curr_symbol property";this.int_curr_symbol=a.int_curr_symbol;if(typeof a.currency_symbol!="string")throw"Error: Invalid/missing currency_symbol property";this.currency_symbol=a.currency_symbol;if(typeof a.frac_digits!="number"&&a.frac_digits<0)throw"Error: Invalid/missing frac_digits property";this.frac_digits=a.frac_digits;if(a.mon_decimal_point===null||a.mon_decimal_point==""){if(this.frac_digits>0)throw"Error: Undefined mon_decimal_point property";else a.mon_decimal_point=""}if(typeof a.mon_decimal_point!="string")throw"Error: Invalid/missing mon_decimal_point property";this.mon_decimal_point=a.mon_decimal_point;if(typeof a.mon_thousands_sep!="string")throw"Error: Invalid/missing mon_thousands_sep property";this.mon_thousands_sep=a.mon_thousands_sep;if(typeof a.mon_grouping!="string")throw"Error: Invalid/missing mon_grouping property";this.mon_grouping=a.mon_grouping;if(typeof a.positive_sign!="string")throw"Error: Invalid/missing positive_sign property";this.positive_sign=a.positive_sign;if(typeof a.negative_sign!="string")throw"Error: Invalid/missing negative_sign property";this.negative_sign=a.negative_sign;if(a.p_cs_precedes!==0&&a.p_cs_precedes!==1)throw"Error: Invalid/missing p_cs_precedes property, must be 0 or 1";this.p_cs_precedes=a.p_cs_precedes;if(a.n_cs_precedes!==0&&a.n_cs_precedes!==1)throw"Error: Invalid/missing n_cs_precedes, must be 0 or 1";this.n_cs_precedes=a.n_cs_precedes;if(a.p_sep_by_space!==0&&a.p_sep_by_space!==1&&a.p_sep_by_space!==2)throw"Error: Invalid/missing p_sep_by_space property, must be 0, 1 or 2";this.p_sep_by_space=a.p_sep_by_space;if(a.n_sep_by_space!==0&&a.n_sep_by_space!==1&&a.n_sep_by_space!==2)throw"Error: Invalid/missing n_sep_by_space property, must be 0, 1, or 2";this.n_sep_by_space=a.n_sep_by_space;if(a.p_sign_posn!==0&&a.p_sign_posn!==1&&a.p_sign_posn!==2&&a.p_sign_posn!==3&&a.p_sign_posn!==4)throw"Error: Invalid/missing p_sign_posn property, must be 0, 1, 2, 3 or 4";this.p_sign_posn=a.p_sign_posn;if(a.n_sign_posn!==0&&a.n_sign_posn!==1&&a.n_sign_posn!==2&&a.n_sign_posn!==3&&a.n_sign_posn!==4)throw"Error: Invalid/missing n_sign_posn property, must be 0, 1, 2, 3 or 4";this.n_sign_posn=a.n_sign_posn;if(typeof a.int_frac_digits!="number"&&a.int_frac_digits<0)throw"Error: Invalid/missing int_frac_digits property";this.int_frac_digits=a.int_frac_digits;if(a.int_p_cs_precedes!==0&&a.int_p_cs_precedes!==1)throw"Error: Invalid/missing int_p_cs_precedes property, must be 0 or 1";this.int_p_cs_precedes=a.int_p_cs_precedes;if(a.int_n_cs_precedes!==0&&a.int_n_cs_precedes!==1)throw"Error: Invalid/missing int_n_cs_precedes property, must be 0 or 1";this.int_n_cs_precedes=a.int_n_cs_precedes;if(a.int_p_sep_by_space!==0&&a.int_p_sep_by_space!==1&&a.int_p_sep_by_space!==2)throw"Error: Invalid/missing int_p_sep_by_spacev, must be 0, 1 or 2";this.int_p_sep_by_space=a.int_p_sep_by_space;if(a.int_n_sep_by_space!==0&&a.int_n_sep_by_space!==1&&a.int_n_sep_by_space!==2)throw"Error: Invalid/missing int_n_sep_by_space property, must be 0, 1, or 2";this.int_n_sep_by_space=a.int_n_sep_by_space;if(a.int_p_sign_posn!==0&&a.int_p_sign_posn!==1&&a.int_p_sign_posn!==2&&a.int_p_sign_posn!==3&&a.int_p_sign_posn!==4)throw"Error: Invalid/missing int_p_sign_posn property, must be 0, 1, 2, 3 or 4";this.int_p_sign_posn=a.int_p_sign_posn;if(a.int_n_sign_posn!==0&&a.int_n_sign_posn!==1&&a.int_n_sign_posn!==2&&a.int_n_sign_posn!==3&&a.int_n_sign_posn!==4)throw"Error: Invalid/missing int_n_sign_posn property, must be 0, 1, 2, 3 or 4";this.int_n_sign_posn=a.int_n_sign_posn;if(a==null||typeof a!="object")throw"Error: Invalid/missing time locale properties";try{this.abday=this._parseList(a.abday,7)}catch(b){throw"Error: Invalid abday property: "+b}try{this.day=this._parseList(a.day,7)}catch(b){throw"Error: Invalid day property: "+b}try{this.abmon=this._parseList(a.abmon,12)}catch(b){throw"Error: Invalid abmon property: "+b}try{this.mon=this._parseList(a.mon,12)}catch(b){throw"Error: Invalid mon property: "+b}try{this.d_fmt=this._validateFormatString(a.d_fmt)}catch(b){throw"Error: Invalid d_fmt property: "+b}try{this.t_fmt=this._validateFormatString(a.t_fmt)}catch(b){throw"Error: Invalid t_fmt property: "+b}try{this.d_t_fmt=this._validateFormatString(a.d_t_fmt)}catch(b){throw"Error: Invalid d_t_fmt property: "+b}try{var c=this._parseList(a.am_pm,2);this.am=c[0];this.pm=c[1]}catch(b){this.am="";this.pm=""}this.getAbbreviatedWeekdayName=function(a){if(typeof a=="undefined"||a===null)return this.abday;if(!jsworld._isInteger(a)||a<0||a>6)throw"Error: Invalid weekday argument, must be an integer [0..6]";return this.abday[a]};this.getWeekdayName=function(a){if(typeof a=="undefined"||a===null)return this.day;if(!jsworld._isInteger(a)||a<0||a>6)throw"Error: Invalid weekday argument, must be an integer [0..6]";return this.day[a]};this.getAbbreviatedMonthName=function(a){if(typeof a=="undefined"||a===null)return this.abmon;if(!jsworld._isInteger(a)||a<0||a>11)throw"Error: Invalid month argument, must be an integer [0..11]";return this.abmon[a]};this.getMonthName=function(a){if(typeof a=="undefined"||a===null)return this.mon;if(!jsworld._isInteger(a)||a<0||a>11)throw"Error: Invalid month argument, must be an integer [0..11]";return this.mon[a]};this.getDecimalPoint=function(){return this.decimal_point};this.getCurrencySymbol=function(){return this.currency_symbol};this.getIntCurrencySymbol=function(){return this.int_curr_symbol.substring(0,3)};this.currencySymbolPrecedes=function(){if(this.p_cs_precedes==1)return true;else return false};this.intCurrencySymbolPrecedes=function(){if(this.int_p_cs_precedes==1)return true;else return false};this.getMonetaryDecimalPoint=function(){return this.mon_decimal_point};this.getFractionalDigits=function(){return this.frac_digits};this.getIntFractionalDigits=function(){return this.int_frac_digits}};jsworld.NumericFormatter=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.format=function(a,b){if(typeof a=="string")a=jsworld._trim(a);if(!jsworld._isNumber(a))throw"Error: The input is not a number";var c=parseFloat(a,10);var d=jsworld._getPrecision(b);if(d!=-1)c=Math.round(c*Math.pow(10,d))/Math.pow(10,d);var e=jsworld._splitNumber(String(c));var f;if(c===0)f="0";else f=jsworld._hasOption("^",b)?e.integer:jsworld._formatIntegerPart(e.integer,this.lc.grouping,this.lc.thousands_sep);var g=d!=-1?jsworld._formatFractionPart(e.fraction,d):e.fraction;var h=g.length?f+this.lc.decimal_point+g:f;if(jsworld._hasOption("~",b)||c===0){return h}else{if(jsworld._hasOption("+",b)||c<0){if(c>0)return"+"+h;else if(c<0)return"-"+h;else return h}else{return h}}}};jsworld.DateTimeFormatter=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance.";this.lc=a;this.formatDate=function(a){var b=null;if(typeof a=="string"){try{b=jsworld.parseIsoDate(a)}catch(c){b=jsworld.parseIsoDateTime(a)}}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.d_fmt)};this.formatTime=function(a){var b=null;if(typeof a=="string"){try{b=jsworld.parseIsoTime(a)}catch(c){b=jsworld.parseIsoDateTime(a)}}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.t_fmt)};this.formatDateTime=function(a){var b=null;if(typeof a=="string"){b=jsworld.parseIsoDateTime(a)}else if(a!==null&&typeof a=="object"){b=a}else{throw"Error: Invalid date argument, must be a Date object or an ISO-8601 date/time string"}return this._applyFormatting(b,this.lc.d_t_fmt)};this._applyFormatting=function(a,b){b=b.replace(/%%/g,"%");b=b.replace(/%a/g,this.lc.abday[a.getDay()]);b=b.replace(/%A/g,this.lc.day[a.getDay()]);b=b.replace(/%b/g,this.lc.abmon[a.getMonth()]);b=b.replace(/%B/g,this.lc.mon[a.getMonth()]);b=b.replace(/%d/g,jsworld._zeroPad(a.getDate(),2));b=b.replace(/%e/g,jsworld._spacePad(a.getDate(),2));b=b.replace(/%F/g,a.getFullYear()+"-"+jsworld._zeroPad(a.getMonth()+1,2)+"-"+jsworld._zeroPad(a.getDate(),2));b=b.replace(/%h/g,this.lc.abmon[a.getMonth()]);b=b.replace(/%H/g,jsworld._zeroPad(a.getHours(),2));b=b.replace(/%I/g,jsworld._zeroPad(this._hours12(a.getHours()),2));b=b.replace(/%k/g,a.getHours());b=b.replace(/%l/g,this._hours12(a.getHours()));b=b.replace(/%m/g,jsworld._zeroPad(a.getMonth()+1,2));b=b.replace(/%n/g,"\n");b=b.replace(/%M/g,jsworld._zeroPad(a.getMinutes(),2));b=b.replace(/%p/g,this._getAmPm(a.getHours()));b=b.replace(/%P/g,this._getAmPm(a.getHours()).toLocaleLowerCase());b=b.replace(/%R/g,jsworld._zeroPad(a.getHours(),2)+":"+jsworld._zeroPad(a.getMinutes(),2));b=b.replace(/%S/g,jsworld._zeroPad(a.getSeconds(),2));b=b.replace(/%T/g,jsworld._zeroPad(a.getHours(),2)+":"+jsworld._zeroPad(a.getMinutes(),2)+":"+jsworld._zeroPad(a.getSeconds(),2));b=b.replace(/%w/g,this.lc.day[a.getDay()]);b=b.replace(/%y/g,(new String(a.getFullYear())).substring(2));b=b.replace(/%Y/g,a.getFullYear());b=b.replace(/%Z/g,"");b=b.replace(/%[a-zA-Z]/g,"");return b};this._hours12=function(a){if(a===0)return 12;else if(a>12)return a-12;else return a};this._getAmPm=function(a){if(a===0||a>12)return this.lc.pm;else return this.lc.am}};jsworld.MonetaryFormatter=function(a,b,c){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.currencyFractionDigits={AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:0,ISK:0,JOD:3,JPY:0,KMF:0,KRW:0,KWD:3,LAK:0,LBP:0,LYD:3,MGA:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TND:3,TWD:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0};if(typeof b=="string"){this.currencyCode=b.toUpperCase();var d=this.currencyFractionDigits[this.currencyCode];if(typeof d!="number")d=2;this.lc.frac_digits=d;this.lc.int_frac_digits=d}else{this.currencyCode=this.lc.int_curr_symbol.substring(0,3).toUpperCase()}this.intSep=this.lc.int_curr_symbol.charAt(3);if(this.currencyCode==this.lc.int_curr_symbol.substring(0,3)){this.internationalFormatting=false;this.curSym=this.lc.currency_symbol}else{if(typeof c=="string"){this.curSym=c;this.internationalFormatting=false}else{this.internationalFormatting=true}}this.getCurrencySymbol=function(){return this.curSym};this.currencySymbolPrecedes=function(a){if(typeof a=="string"&&a=="i"){if(this.lc.int_p_cs_precedes==1)return true;else return false}else{if(this.internationalFormatting){if(this.lc.int_p_cs_precedes==1)return true;else return false}else{if(this.lc.p_cs_precedes==1)return true;else return false}}};this.getDecimalPoint=function(){return this.lc.mon_decimal_point};this.getFractionalDigits=function(a){if(typeof a=="string"&&a=="i"){return this.lc.int_frac_digits}else{if(this.internationalFormatting)return this.lc.int_frac_digits;else return this.lc.frac_digits}};this.format=function(a,b){var c;if(typeof a=="string"){a=jsworld._trim(a);c=parseFloat(a);if(typeof c!="number"||isNaN(c))throw"Error: Amount string not a number"}else if(typeof a=="number"){c=a}else{throw"Error: Amount not a number"}var d=jsworld._getPrecision(b);if(d==-1){if(this.internationalFormatting||jsworld._hasOption("i",b))d=this.lc.int_frac_digits;else d=this.lc.frac_digits}c=Math.round(c*Math.pow(10,d))/Math.pow(10,d);var e=jsworld._splitNumber(String(c));var f;if(c===0)f="0";else f=jsworld._hasOption("^",b)?e.integer:jsworld._formatIntegerPart(e.integer,this.lc.mon_grouping,this.lc.mon_thousands_sep);var g;if(d==-1){if(this.internationalFormatting||jsworld._hasOption("i",b))g=jsworld._formatFractionPart(e.fraction,this.lc.int_frac_digits);else g=jsworld._formatFractionPart(e.fraction,this.lc.frac_digits)}else{g=jsworld._formatFractionPart(e.fraction,d)}var h;if(this.lc.frac_digits>0||g.length)h=f+this.lc.mon_decimal_point+g;else h=f;if(jsworld._hasOption("~",b)){return h}else{var i=jsworld._hasOption("!",b)?true:false;var j=c<0?"-":"+";if(this.internationalFormatting||jsworld._hasOption("i",b)){if(i)return this._formatAsInternationalCurrencyWithNoSym(j,h);else return this._formatAsInternationalCurrency(j,h)}else{if(i)return this._formatAsLocalCurrencyWithNoSym(j,h);else return this._formatAsLocalCurrency(j,h)}}};this._formatAsLocalCurrency=function(a,b){if(a=="+"){if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return"("+b+this.curSym+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return"("+this.curSym+b+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return"("+b+" "+this.curSym+")"}else if(this.lc.p_sign_posn===0&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return"("+this.curSym+" "+b+")"}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b+" "+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+" "+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+" "+b+this.curSym}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+this.curSym+b}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.curSym+b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.curSym+" "+b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.curSym+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.curSym+b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+this.curSym+" "+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign+" "+this.curSym}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+this.curSym+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.curSym+this.lc.positive_sign+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.curSym+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.curSym+this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.curSym+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.curSym+" "+this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return"("+b+this.curSym+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return"("+this.curSym+b+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return"("+b+" "+this.curSym+")"}else if(this.lc.n_sign_posn===0&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return"("+this.curSym+" "+b+")"}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b+" "+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+" "+b+this.curSym}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+this.curSym+b}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.curSym+b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.curSym+" "+b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.curSym+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.curSym+b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+this.curSym+" "+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign+" "+this.curSym}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+this.curSym+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.curSym+this.lc.negative_sign+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.curSym+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.curSym+this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.curSym+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.curSym+" "+this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsInternationalCurrency=function(a,b){if(a=="+"){if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return"("+b+this.currencyCode+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return"("+this.currencyCode+b+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return"("+b+this.intSep+this.currencyCode+")"}else if(this.lc.int_p_sign_posn===0&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return"("+this.currencyCode+this.intSep+b+")"}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b+this.intSep+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+this.intSep+b+this.currencyCode}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.currencyCode+b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.intSep+b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.currencyCode+b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign+this.intSep+this.currencyCode}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.currencyCode+this.intSep+this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return"("+b+this.currencyCode+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return"("+this.currencyCode+b+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return"("+b+this.intSep+this.currencyCode+")"}else if(this.lc.int_n_sign_posn===0&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return"("+this.currencyCode+this.intSep+b+")"}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b+this.intSep+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+this.intSep+b+this.currencyCode}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.currencyCode+b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.intSep+b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.currencyCode+b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.currencyCode+this.intSep+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign+this.intSep+this.currencyCode}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+this.currencyCode+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.currencyCode+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.currencyCode+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.currencyCode+this.intSep+this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsLocalCurrencyWithNoSym=function(a,b){if(a=="+"){if(this.lc.p_sign_posn===0){return"("+b+")"}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===1&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===2&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===3&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===0&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===1&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+" "+b}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===0){return b+" "+this.lc.positive_sign}else if(this.lc.p_sign_posn===4&&this.lc.p_sep_by_space===2&&this.lc.p_cs_precedes===1){return this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.n_sign_posn===0){return"("+b+")"}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===1&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===2&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===3&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===0&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===1&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+" "+b}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===0){return b+" "+this.lc.negative_sign}else if(this.lc.n_sign_posn===4&&this.lc.n_sep_by_space===2&&this.lc.n_cs_precedes===1){return this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC MONETARY definition"};this._formatAsInternationalCurrencyWithNoSym=function(a,b){if(a=="+"){if(this.lc.int_p_sign_posn===0){return"("+b+")"}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===1&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===2&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===3&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===0){return b+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===0&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===1&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+this.intSep+b}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===0){return b+this.intSep+this.lc.positive_sign}else if(this.lc.int_p_sign_posn===4&&this.lc.int_p_sep_by_space===2&&this.lc.int_p_cs_precedes===1){return this.lc.positive_sign+b}}else if(a=="-"){if(this.lc.int_n_sign_posn===0){return"("+b+")"}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===1&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===2&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===3&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===0){return b+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===0&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===1&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+this.intSep+b}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===0){return b+this.intSep+this.lc.negative_sign}else if(this.lc.int_n_sign_posn===4&&this.lc.int_n_sep_by_space===2&&this.lc.int_n_cs_precedes===1){return this.lc.negative_sign+b}}throw"Error: Invalid POSIX LC_MONETARY definition"}};jsworld.NumericParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.parse=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=jsworld._trim(a);b=jsworld._stringReplaceAll(a,this.lc.thousands_sep,"");b=jsworld._stringReplaceAll(b,this.lc.decimal_point,".");if(jsworld._isNumber(b))return parseFloat(b,10);else throw"Parse error: Invalid number string"}};jsworld.DateTimeParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance.";this.lc=a;this.parseTime=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.t_fmt,a);var c=false;if(b.hour!==null&&b.minute!==null&&b.second!==null){c=true}else if(b.hourAmPm!==null&&b.am!==null&&b.minute!==null&&b.second!==null){if(b.am){b.hour=parseInt(b.hourAmPm,10)}else{if(b.hourAmPm==12)b.hour=0;else b.hour=parseInt(b.hourAmPm,10)+12}c=true}if(c)return jsworld._zeroPad(b.hour,2)+":"+jsworld._zeroPad(b.minute,2)+":"+jsworld._zeroPad(b.second,2);else throw"Parse error: Invalid/ambiguous time string"};this.parseDate=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.d_fmt,a);var c=false;if(b.year!==null&&b.month!==null&&b.day!==null){c=true}if(c)return jsworld._zeroPad(b.year,4)+"-"+jsworld._zeroPad(b.month,2)+"-"+jsworld._zeroPad(b.day,2);else throw"Parse error: Invalid date string"};this.parseDateTime=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._extractTokens(this.lc.d_t_fmt,a);var c=false;var d=false;if(b.hour!==null&&b.minute!==null&&b.second!==null){c=true}else if(b.hourAmPm!==null&&b.am!==null&&b.minute!==null&&b.second!==null){if(b.am){b.hour=parseInt(b.hourAmPm,10)}else{if(b.hourAmPm==12)b.hour=0;else b.hour=parseInt(b.hourAmPm,10)+12}c=true}if(b.year!==null&&b.month!==null&&b.day!==null){d=true}if(d&&c)return jsworld._zeroPad(b.year,4)+"-"+jsworld._zeroPad(b.month,2)+"-"+jsworld._zeroPad(b.day,2)+" "+jsworld._zeroPad(b.hour,2)+":"+jsworld._zeroPad(b.minute,2)+":"+jsworld._zeroPad(b.second,2);else throw"Parse error: Invalid/ambiguous date/time string"};this._extractTokens=function(a,b){var c={year:null,month:null,day:null,hour:null,hourAmPm:null,am:null,minute:null,second:null,weekday:null};while(a.length>0){if(a.charAt(0)=="%"&&a.charAt(1)!=""){var d=a.substring(0,2);if(d=="%%"){b=b.substring(1)}else if(d=="%a"){for(var e=0;e31)throw"Parse error: Unrecognised day of the month (%e)";b=b.substring(f.length)}else if(d=="%F"){if(/^\d\d\d\d/.test(b)){c.year=parseInt(b.substring(0,4),10);b=b.substring(4)}else{throw"Parse error: Unrecognised date (%F)"}if(jsworld._stringStartsWith(b,"-"))b=b.substring(1);else throw"Parse error: Unrecognised date (%F)";if(/^0[1-9]|1[0-2]/.test(b)){c.month=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised date (%F)";if(jsworld._stringStartsWith(b,"-"))b=b.substring(1);else throw"Parse error: Unrecognised date (%F)";if(/^0[1-9]|[1-2][0-9]|3[0-1]/.test(b)){c.day=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised date (%F)"}else if(d=="%H"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised hour (%H)"}else if(d=="%I"){if(/^0[1-9]|1[0-2]/.test(b)){c.hourAmPm=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised hour (%I)"}else if(d=="%k"){var g=b.match(/^(\d{1,2})/);c.hour=parseInt(g,10);if(isNaN(c.hour)||c.hour<0||c.hour>23)throw"Parse error: Unrecognised hour (%k)";b=b.substring(g.length)}else if(d=="%l"){var g=b.match(/^(\d{1,2})/);c.hourAmPm=parseInt(g,10);if(isNaN(c.hourAmPm)||c.hourAmPm<1||c.hourAmPm>12)throw"Parse error: Unrecognised hour (%l)";b=b.substring(g.length)}else if(d=="%m"){if(/^0[1-9]|1[0-2]/.test(b)){c.month=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised month (%m)"}else if(d=="%M"){if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised minute (%M)"}else if(d=="%n"){if(b.charAt(0)=="\n")b=b.substring(1);else throw"Parse error: Unrecognised new line (%n)"}else if(d=="%p"){if(jsworld._stringStartsWith(b,this.lc.am)){c.am=true;b=b.substring(this.lc.am.length)}else if(jsworld._stringStartsWith(b,this.lc.pm)){c.am=false;b=b.substring(this.lc.pm.length)}else throw"Parse error: Unrecognised AM/PM value (%p)"}else if(d=="%P"){if(jsworld._stringStartsWith(b,this.lc.am.toLowerCase())){c.am=true;b=b.substring(this.lc.am.length)}else if(jsworld._stringStartsWith(b,this.lc.pm.toLowerCase())){c.am=false;b=b.substring(this.lc.pm.length)}else throw"Parse error: Unrecognised AM/PM value (%P)"}else if(d=="%R"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%R)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%R)";if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%R)"}else if(d=="%S"){if(/^[0-5][0-9]/.test(b)){c.second=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised second (%S)"}else if(d=="%T"){if(/^[0-1][0-9]|2[0-3]/.test(b)){c.hour=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%T)";if(/^[0-5][0-9]/.test(b)){c.minute=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)";if(jsworld._stringStartsWith(b,":"))b=b.substring(1);else throw"Parse error: Unrecognised time (%T)";if(/^[0-5][0-9]/.test(b)){c.second=parseInt(b.substring(0,2),10);b=b.substring(2)}else throw"Parse error: Unrecognised time (%T)"}else if(d=="%w"){if(/^\d/.test(b)){c.weekday=parseInt(b.substring(0,1),10);b=b.substring(1)}else throw"Parse error: Unrecognised weekday number (%w)"}else if(d=="%y"){if(/^\d\d/.test(b)){var h=parseInt(b.substring(0,2),10);if(h>50)c.year=1900+h;else c.year=2e3+h;b=b.substring(2)}else throw"Parse error: Unrecognised year (%y)"}else if(d=="%Y"){if(/^\d\d\d\d/.test(b)){c.year=parseInt(b.substring(0,4),10);b=b.substring(4)}else throw"Parse error: Unrecognised year (%Y)"}else if(d=="%Z"){if(a.length===0)break}a=a.substring(2)}else{if(a.charAt(0)!=b.charAt(0))throw'Parse error: Unexpected symbol "'+b.charAt(0)+'" in date/time string';a=a.substring(1);b=b.substring(1)}}return c}};jsworld.MonetaryParser=function(a){if(typeof a!="object"||a._className!="jsworld.Locale")throw"Constructor error: You must provide a valid jsworld.Locale instance";this.lc=a;this.parse=function(a){if(typeof a!="string")throw"Parse error: Argument must be a string";var b=this._detectCurrencySymbolType(a);var c,d;if(b=="local"){c="local";d=a.replace(this.lc.getCurrencySymbol(),"")}else if(b=="int"){c="int";d=a.replace(this.lc.getIntCurrencySymbol(),"")}else if(b=="none"){c="local";d=a}else throw"Parse error: Internal assert failure";d=jsworld._stringReplaceAll(d,this.lc.mon_thousands_sep,"");d=d.replace(this.lc.mon_decimal_point,".");d=d.replace(/\s*/g,"");d=this._removeLocalNonNegativeSign(d,c);d=this._normaliseNegativeSign(d,c);if(jsworld._isNumber(d))return parseFloat(d,10);else throw"Parse error: Invalid currency amount string"};this._detectCurrencySymbolType=function(a){if(this.lc.getCurrencySymbol().length>this.lc.getIntCurrencySymbol().length){if(a.indexOf(this.lc.getCurrencySymbol())!=-1)return"local";else if(a.indexOf(this.lc.getIntCurrencySymbol())!=-1)return"int";else return"none"}else{if(a.indexOf(this.lc.getIntCurrencySymbol())!=-1)return"int";else if(a.indexOf(this.lc.getCurrencySymbol())!=-1)return"local";else return"none"}};this._removeLocalNonNegativeSign=function(a,b){a=a.replace(this.lc.positive_sign,"");if((b=="local"&&this.lc.p_sign_posn===0||b=="int"&&this.lc.int_p_sign_posn===0)&&/\(\d+\.?\d*\)/.test(a)){a=a.replace("(","");a=a.replace(")","")}return a};this._normaliseNegativeSign=function(a,b){a=a.replace(this.lc.negative_sign,"-");if(b=="local"&&this.lc.n_sign_posn===0||b=="int"&&this.lc.int_n_sign_posn===0){if(/^\(\d+\.?\d*\)$/.test(a)){a=a.replace("(","");a=a.replace(")","");return"-"+a}}if(b=="local"&&this.lc.n_sign_posn==2||b=="int"&&this.lc.int_n_sign_posn==2){if(/^\d+\.?\d*-$/.test(a)){a=a.replace("-","");return"-"+a}}if(b=="local"&&this.lc.n_cs_precedes===0&&this.lc.n_sign_posn==3||b=="local"&&this.lc.n_cs_precedes===0&&this.lc.n_sign_posn==4||b=="int"&&this.lc.int_n_cs_precedes===0&&this.lc.int_n_sign_posn==3||b=="int"&&this.lc.int_n_cs_precedes===0&&this.lc.int_n_sign_posn==4){if(/^\d+\.?\d*-$/.test(a)){a=a.replace("-","");return"-"+a}}return a}} - - -if(typeof POSIX_LC == "undefined") var POSIX_LC = {}; - -POSIX_LC.en_US = { - "decimal_point" : ".", - "thousands_sep" : ",", - "grouping" : "3", - "abday" : ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"], - "day" : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], - "abmon" : ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"], - "mon" : ["January","February","March","April","May","June","July","August","September","October","November","December"], - "d_fmt" : "%m/%e/%y", - "t_fmt" : "%I:%M:%S %p", - "d_t_fmt" : "%B %e, %Y %I:%M:%S %p %Z", - "am_pm" : ["AM","PM"], - "int_curr_symbol" : "USD ", - "currency_symbol" : "\u0024", - "mon_decimal_point" : ".", - "mon_thousands_sep" : ",", - "mon_grouping" : "3", - "positive_sign" : "", - "negative_sign" : "-", - "int_frac_digits" : 2, - "frac_digits" : 2, - "p_cs_precedes" : 1, - "n_cs_precedes" : 1, - "p_sep_by_space" : 0, - "n_sep_by_space" : 0, - "p_sign_posn" : 1, - "n_sign_posn" : 1, - "int_p_cs_precedes" : 1, - "int_n_cs_precedes" : 1, - "int_p_sep_by_space" : 0, - "int_n_sep_by_space" : 0, - "int_p_sign_posn" : 1, - "int_n_sign_posn" : 1 -} - -if(typeof POSIX_LC == "undefined") var POSIX_LC = {}; - -POSIX_LC.fr_FR = { - "decimal_point" : ",", - "thousands_sep" : "\u00a0", - "grouping" : "3", - "abday" : ["dim.","lun.","mar.", - "mer.","jeu.","ven.", - "sam."], - "day" : ["dimanche","lundi","mardi", - "mercredi","jeudi","vendredi", - "samedi"], - "abmon" : ["janv.","f\u00e9vr.","mars", - "avr.","mai","juin", - "juil.","ao\u00fbt","sept.", - "oct.","nov.","d\u00e9c."], - "mon" : ["janvier","f\u00e9vrier","mars", - "avril","mai","juin", - "juillet","ao\u00fbt","septembre", - "octobre","novembre","d\u00e9cembre"], - "d_fmt" : "%d/%m/%y", - "t_fmt" : "%H:%M:%S", - "d_t_fmt" : "%e %B %Y %H:%M:%S %Z", - "am_pm" : ["AM","PM"], - "int_curr_symbol" : "EUR ", - "currency_symbol" : "\u20ac", - "mon_decimal_point" : ",", - "mon_thousands_sep" : "\u00a0", - "mon_grouping" : "3", - "positive_sign" : "", - "negative_sign" : "-", - "int_frac_digits" : 2, - "frac_digits" : 2, - "p_cs_precedes" : 0, - "n_cs_precedes" : 0, - "p_sep_by_space" : 1, - "n_sep_by_space" : 1, - "p_sign_posn" : 1, - "n_sign_posn" : 1, - "int_p_cs_precedes" : 0, - "int_n_cs_precedes" : 0, - "int_p_sep_by_space" : 1, - "int_n_sep_by_space" : 1, - "int_p_sign_posn" : 1, - "int_n_sign_posn" : 1 -}; - -/** https://github.com/csnover/js-iso8601 */(function(n,f){var u=n.parse,c=[1,4,5,6,7,10,11];n.parse=function(t){var i,o,a=0;if(o=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(var v=0,r;r=c[v];++v)o[r]=+o[r]||0;o[2]=(+o[2]||1)-1,o[3]=+o[3]||1,o[8]!=="Z"&&o[9]!==f&&(a=o[10]*60+o[11],o[9]==="+"&&(a=0-a)),i=n.UTC(o[1],o[2],o[3],o[4],o[5]+a,o[6],o[7])}else i=u?u(t):NaN;return i}})(Date) - -/*! - * geo-location-javascript v0.4.3 - * http://code.google.com/p/geo-location-javascript/ - * - * Copyright (c) 2009 Stan Wiechers - * Licensed under the MIT licenses. - * - * Revision: $Rev: 68 $: - * Author: $Author: whoisstan $: - * Date: $Date: 2010-02-15 13:42:19 +0100 (Mon, 15 Feb 2010) $: - */ -var geo_position_js=function() { - - var pub = {}; - var provider=null; - - pub.getCurrentPosition = function(successCallback,errorCallback,options) - { - provider.getCurrentPosition(successCallback, errorCallback,options); - } - - pub.init = function() - { - try - { - if (typeof(geo_position_js_simulator)!="undefined") - { - provider=geo_position_js_simulator; - } - else if (typeof(bondi)!="undefined" && typeof(bondi.geolocation)!="undefined") - { - provider=bondi.geolocation; - } - else if (typeof(navigator.geolocation)!="undefined") - { - provider=navigator.geolocation; - pub.getCurrentPosition = function(successCallback, errorCallback, options) - { - function _successCallback(p) - { - //for mozilla geode,it returns the coordinates slightly differently - if(typeof(p.latitude)!="undefined") - { - successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude,longitude:p.longitude}}); - } - else - { - successCallback(p); - } - } - provider.getCurrentPosition(_successCallback,errorCallback,options); - } - } - else if(typeof(window.google)!="undefined" && typeof(google.gears)!="undefined") - { - provider=google.gears.factory.create('beta.geolocation'); - } - else if ( typeof(Mojo) !="undefined" && typeof(Mojo.Service.Request)!="Mojo.Service.Request") - { - provider=true; - pub.getCurrentPosition = function(successCallback, errorCallback, options) - { - - parameters={}; - if(options) - { - //http://developer.palm.com/index.php?option=com_content&view=article&id=1673#GPS-getCurrentPosition - if (options.enableHighAccuracy && options.enableHighAccuracy==true) - { - parameters.accuracy=1; - } - if (options.maximumAge) - { - parameters.maximumAge=options.maximumAge; - } - if (options.responseTime) - { - if(options.responseTime<5) - { - parameters.responseTime=1; - } - else if (options.responseTime<20) - { - parameters.responseTime=2; - } - else - { - parameters.timeout=3; - } - } - } - - - r=new Mojo.Service.Request('palm://com.palm.location', { - method:"getCurrentPosition", - parameters:parameters, - onSuccess: function(p){successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude, longitude:p.longitude,heading:p.heading}});}, - onFailure: function(e){ - if (e.errorCode==1) - { - errorCallback({code:3,message:"Timeout"}); - } - else if (e.errorCode==2) - { - errorCallback({code:2,message:"Position Unavailable"}); - } - else - { - errorCallback({code:0,message:"Unknown Error: webOS-code"+errorCode}); - } - } - }); - } - - } - else if (typeof(device)!="undefined" && typeof(device.getServiceObject)!="undefined") - { - provider=device.getServiceObject("Service.Location", "ILocation"); - - //override default method implementation - pub.getCurrentPosition = function(successCallback, errorCallback, options) - { - function callback(transId, eventCode, result) { - if (eventCode == 4) - { - errorCallback({message:"Position unavailable", code:2}); - } - else - { - //no timestamp of location given? - successCallback({timestamp:null, coords: {latitude:result.ReturnValue.Latitude, longitude:result.ReturnValue.Longitude, altitude:result.ReturnValue.Altitude,heading:result.ReturnValue.Heading}}); - } - } - //location criteria - var criteria = new Object(); - criteria.LocationInformationClass = "BasicLocationInformation"; - //make the call - provider.ILocation.GetLocation(criteria,callback); - } - } - } - catch (e){ - alert("error="+e); - if(typeof(console)!="undefined") - { - console.log(e); - } - return false; - } - return provider!=null; - } - - - return pub; -}(); -// Couldn't get unminified version to work , go here for docs => https://github.com/iamnoah/writeCapture -(function(E,a){var j=a.document;function A(Q){var Z=j.createElement("div");j.body.insertBefore(Z,null);E.replaceWith(Z,'\n \n
\n
\n \n\n
\n
\n \n
\n

'); - __out.push(__sanitize(t('Invite Link'))); - __out.push(' '); - __out.push(__sanitize(USER.referral_url)); - __out.push('

\n\n \n\n
\n\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/clients/login": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - __out.push('
\n\t

'); - __out.push(__sanitize(t('Sign In'))); - __out.push('

\n\t
\n\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
\n\n
\n\n

'); - __out.push(__sanitize(t('Forgot Password?'))); - __out.push('

\n\n\t\t
\n\t
\n
\n\n
\n
\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/clients/modules/credit_card": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - var printCard; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - if (this.cards === "new") { - __out.push('\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n
\n
\n
\n'); - } else { - __out.push('\n '); - printCard = __bind(function(card, index) { - var exp, style; - __out.push('\n
\n '); - style = "background-position:-173px"; - __out.push('\n '); - if (card.get("card_type") === "Visa") { - style = "background-position:0px"; - } - __out.push('\n '); - if (card.get("card_type") === "MasterCard") { - style = "background-position:-42px"; - } - __out.push('\n '); - if (card.get("card_type") === "American Express") { - style = "background-position:-130px"; - } - __out.push('\n '); - if (card.get("card_type") === "Discover Card") { - style = "background-position:-85px"; - } - __out.push('\n
\n
\n ****'); - __out.push(__sanitize(card.get("card_number"))); - __out.push('\n \n '); - if (card.get("card_expiration")) { - __out.push('\n '); - __out.push(__sanitize(t('Expiry'))); - __out.push('\n '); - exp = card.get('card_expiration').split('-'); - __out.push('\n '); - __out.push(__sanitize("" + exp[0] + "-" + exp[1])); - __out.push('\n '); - } - __out.push('\n \n \n \n '); - if (card.get("default")) { - __out.push('\n ('); - __out.push(__sanitize(t('default card'))); - __out.push(')\n '); - } - __out.push('\n '); - if (this.cards.length > 1 && !card.get("default")) { - __out.push('\n '); - __out.push(__sanitize(t('make default'))); - __out.push('\n '); - } - __out.push('\n \n '); - __out.push(__sanitize(t('Edit'))); - __out.push('\n \n '); - if (this.cards.length > 1) { - __out.push('\n '); - __out.push(__sanitize(t('Delete'))); - __out.push('\n '); - } - __out.push('\n
\n '); - _.each(this.cards.models, printCard); - __out.push('\n
\n
\n\n'); - } - __out.push('\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/clients/modules/sub_header": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - __out.push('
\n
'); - __out.push(__sanitize(this.heading)); - __out.push('
\n
\n '); - if (window.USER.first_name) { - __out.push('\n '); - __out.push(__sanitize(t('Hello Greeting', { - name: USER.first_name - }))); - __out.push('\n '); - } - __out.push('\n
\n
\n
\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/clients/promotions": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - var promo, _i, _len, _ref; - __out.push(require('templates/clients/modules/sub_header').call(this, { - heading: t("Promotions") - })); - __out.push('\n\n
\n
\n
\n \n \n
\n
\n \n \n\n \n
\n '); - if (this.promos.length > 0) { - __out.push('\n
\n

'); - __out.push(__sanitize(t('Your Available Promotions'))); - __out.push('

\n \n \n\n \n \n \n \n \n \n \n \n '); - _ref = this.promos; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - promo = _ref[_i]; - __out.push('\n \n \n \n \n \n \n '); - } - __out.push('\n \n
'); - __out.push(__sanitize(t('Code'))); - __out.push(''); - __out.push(__sanitize(t('Details'))); - __out.push(''); - __out.push(__sanitize(t('Starts'))); - __out.push(''); - __out.push(__sanitize(t('Expires'))); - __out.push('
'); - __out.push(__sanitize(promo.code)); - __out.push(''); - __out.push(__sanitize(promo.description)); - __out.push(''); - __out.push(__sanitize(app.helpers.formatDate(promo.starts_at, true, "America/Los_Angeles"))); - __out.push(''); - __out.push(__sanitize(app.helpers.formatDate(promo.ends_at, true, "America/Los_Angeles"))); - __out.push('
\n
\n '); - } else { - __out.push('\n\n

'); - __out.push(__sanitize(t('No Active Promotions'))); - __out.push('

\n '); - } - __out.push('\n\n
\n
\n
\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/clients/request": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - var showFavoriteLocation; - showFavoriteLocation = function(location, index) { - var alphabet; - __out.push('\n '); - alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - __out.push('\n
\n '); - __out.push(__sanitize(location.nickname)); - return __out.push('\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

'); - __out.push(__sanitize(t('Driver Name:'))); - __out.push('

\n

\n
\n

'); - __out.push(__sanitize(t('Driver #:'))); - __out.push('

\n

\n
\n

'); - __out.push(__sanitize(t('Pickup Address:'))); - __out.push('

\n

\n
\n ');
-      __out.push(__sanitize(t('Add to Favorite Locations')));
-      __out.push('\n
\n
\n

\n '); - __out.push(__sanitize(t('Nickname:'))); - __out.push('\n \n \n \n \n
\n
\n
\n
\n

'); - __out.push(__sanitize(t('Your last trip'))); - __out.push('

\n
\n \n ');
-      __out.push(__sanitize(t('Star')));
-      __out.push('\n ');
-      __out.push(__sanitize(t('Star')));
-      __out.push('\n ');
-      __out.push(__sanitize(t('Star')));
-      __out.push('\n ');
-      __out.push(__sanitize(t('Star')));
-      __out.push('\n ');
-      __out.push(__sanitize(t('Star')));
-      __out.push('\n \n \n
\n \n
\n \n
\n \n
\n \n\n
\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "templates/shared/menu": function(exports, require, module) {module.exports = function(__obj) { - if (!__obj) __obj = {}; - var __out = [], __capture = function(callback) { - var out = __out, result; - __out = []; - callback.call(this); - result = __out.join(''); - __out = out; - return __safe(result); - }, __sanitize = function(value) { - if (value && value.ecoSafe) { - return value; - } else if (typeof value !== 'undefined' && value != null) { - return __escape(value); - } else { - return ''; - } - }, __safe, __objSafe = __obj.safe, __escape = __obj.escape; - __safe = __obj.safe = function(value) { - if (value && value.ecoSafe) { - return value; - } else { - if (!(typeof value !== 'undefined' && value != null)) value = ''; - var result = new String(value); - result.ecoSafe = true; - return result; - } - }; - if (!__escape) { - __escape = __obj.escape = function(value) { - return ('' + value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - }; - } - (function() { - (function() { - __out.push('\n'); - }).call(this); - - }).call(__obj); - __obj.safe = __objSafe, __obj.escape = __escape; - return __out.join(''); -}}, "translations/en": function(exports, require, module) {(function() { - exports.translations = { - "Uber": "Uber", - "Sign Up": "Sign Up", - "Ride Request": "Ride Request", - "Invite Friends": "Invite Friends", - "Promotions": "Promotions", - "Billing": "Billing", - "Settings": "Settings", - "Forgot Password?": "Forgot Password?", - "Password Recovery": "Password Recovery", - "Login": "Login", - "Trip Detail": "Trip Detail", - "Password Reset": "Password Reset", - "Confirm Email": "Confirm Email", - "Request Ride": "Request Ride", - "Credit Card Number": "Credit Card Number", - "month": "month", - "01-Jan": "01-Jan", - "02-Feb": "02-Feb", - "03-Mar": "03-Mar", - "04-Apr": "04-Apr", - "05-May": "05-May", - "06-Jun": "06-Jun", - "07-Jul": "07-Jul", - "08-Aug": "08-Aug", - "09-Sep": "09-Sep", - "10-Oct": "10-Oct", - "11-Nov": "11-Nov", - "12-Dec": "12-Dec", - "year": "year", - "CVV": "CVV", - "Category": "Category", - "personal": "personal", - "business": "business", - "Default Credit Card": "Default Credit Card", - "Add Credit Card": "Add Credit Card", - "Expiry": "Expiry", - "default card": "default card", - "make default": "make default", - "Edit": "Edit", - "Delete": "Delete", - "Expiry Month": "Expiry Month", - "Expiry Year": "Expiry Year", - "Unable to Verify Card": "Unable to verify card at this time. Please try again later.", - "Credit Card Update Succeeded": "Your card has been successfully updated!", - "Credit Card Update Failed": "We couldn't save your changes. Please try again in a few minutes.", - "Credit Card Delete Succeeded": "Your card has been deleted!", - "Credit Card Delete Failed": "We were unable to delete your card. Please try again later.", - "Credit Card Update Category Succeeded": "Successfully changed card category!", - "Credit Card Update Category Failed": "We couldn't change your card category. Please try again in a few minutes.", - "Credit Card Update Default Succeeded": "Successfully changed default card!", - "Credit Card Update Default Failed": "We couldn't change your default card. Please try again in a few minutes.", - "Hello Greeting": "Hello, <%= name %>", - "Card Ending in": "Card Ending in", - "Trip Map": "Trip Map", - "Amount": "Amount: <%= amount %>", - "Last Attempt to Bill": "Last Attempt to Bill: <%= date %>", - "Charge": "Charge", - "Uber Credit Balance Note": "Your account has an UberCredit balance of <%= amount %>. When billing for trips, we'll deplete your UberCredit balance before applying charges to your credit card.", - "Please Add Credit Card": "Please add a credit card to bill your outstanding charges.", - "Credit Cards": "Credit Cards", - "add a new credit card": "add a new credit card", - "Account Balance": "Account Balance", - "Arrears": "Arrears", - "Billing Succeeded": "Your card was successfully billed.", - "Confirm Email Succeeded": "Successfully confirmed email token, redirecting to log in page...", - "Confirm Email Failed": "Unable to confirm email. Please contact support@uber.com if this problem persists.", - "Email Already Confirmed": "Your email address has already been confirmed, redirecting to log in page...", - "Credit Card Added": "Credit Card Added", - "No Credit Card": "No Credit Card", - "Mobile Number Confirmed": "Mobile Number Confirmed", - "No Confirmed Mobile": "No Confirmed Mobile", - "E-mail Address Confirmed": "E-mail Address Confirmed", - "No Confirmed E-mail": "No Confirmed E-mail", - 'Reply to sign up text': 'Reply "GO" to the text message you received at sign up.', - "Resend text message": "Resend text message", - "Click sign up link": "Click the link in the email you received at sign up.", - "Resend email": "Resend email", - "Add a credit card to ride": "Add a credit card and you'll be ready to ride Uber.", - "Your Most Recent Trip": "Your Most Recent Trip", - "details": "details", - "Your Trip History ": "Your Trip History ", - "Status": "Status", - "Here's how it works:": "Here's how it works:", - "Show all trips": "Show all trips", - "Set your location:": "Set your location:", - "App search for address": "iPhone/Android app: fix the pin or search for an address", - "SMS text address": "SMS: text your address to UBRCAB (827222)", - "Confirm pickup request": "Confirm your pickup request", - "Uber sends ETA": "Uber will send you an ETA (usually within 5-10 minutes)", - "Car arrives": "When your car is arriving, Uber will inform you again.", - "Ride to destination": "Hop in the car and tell the driver your destination.", - "Thank your driver": "That’s it! Please thank your driver but remember that your tip is included and no cash is necessary.", - "Trip started here": "Trip started here", - "Trip ended here": "Trip ended here", - "Sending Email": "Sending email...", - "Resend Email Succeeded": "We just sent the email. Please click on the confirmation link you recieve.", - "Resend Email Failed": "There was an error sending the email. Please contact support if the problem persists.", - "Resend Text Succeeded": 'We just sent the text message. Please reply "GO" to the message you recieve. It may take a few minutes for the message to reach you phone.', - "Resend Text Failed": "There was an error sending the text message. Please contact support if the problem persists.", - "Password Reset Error": "There was an error processing your password reset request.", - "New Password": "New Password", - "Forgot Password": "Forgot Password", - "Forgot Password Error": "Your email address could not be found. Please make sure to use the same email address you used when you signed up.", - "Forgot Password Success": "Please check your email for a link to reset your password.", - "Forgot Password Enter Email": 'Enter your email address and Uber will send you a link to reset your password. If you remember your password, you can sign in here.', - "Invite friends": "Invite friends", - "Give $ Get $": "Give $10, Get $10", - "Give $ Get $ Description": "Every friend you invite to Uber gets $10 of Uber credit. After someone you’ve invited takes his/her first ride, you get $10 of Uber credits too!", - "What are you waiting for?": "So, what are you waiting for? Invite away!", - "Tweet": "Tweet", - "Invite Link": "Email or IM this link to your friends:", - "Email Address": "Email Address", - "Reset Password": "Reset Password", - "Enter Promotion Code": "If you have a promotion code, enter it here:", - "Your Active Promotions": "Your Active Promotions", - "Code": "Code", - "Details": "Details", - "Trips Remaining": "Trips Remaining", - "Expires": "Expires", - "No Active Promotions": "There are no active promotions on your account.", - "Your Available Promotions": "Your Available Promotions", - "Where do you want us to pick you up?": "Where do you want us to pick you up?", - "Address to search": "Address to search", - "Search": "Search", - "Driver Name:": "Driver Name:", - "Driver #:": "Driver #:", - "Pickup Address:": "Pickup Address:", - "Add to Favorite Locations": "Add to Favorite Locations", - "Star": "Star", - "Nickname:": "Nickname:", - "Add": "Add", - "Your last trip": "Your last trip", - "Please rate your driver:": "Please rate your driver:", - "Comments: (optional)": "Comments: (optional)", - "Rate Trip": "Rate Trip", - "Pickup time:": "Pickup time:", - "Miles:": "Miles:", - "Trip time:": "Trip time:", - "Fare:": "Fare:", - "Favorite Locations": "Favorite Locations", - "Search Results": "Search Results", - "You have no favorite locations saved.": "You have no favorite locations saved.", - "Loading...": "Loading...", - "Request Pickup": "Request Pickup", - "Cancel Pickup": "Cancel Pickup", - "Requesting Closest Driver": "Requesting the closest driver to pick you up...", - "En Route": "You are currently en route...", - "Rate Last Trip": "Please rate your trip to make another request", - "Rate Before Submitting": "Please rate your trip before submitting the form", - "Address too short": "Address too short", - "or did you mean": "or did you mean", - "Search Address Failed": "Unable to find the given address. Please enter another address close to your location.", - "Sending pickup request...": "Sending pickup request...", - "Cancel Request Prompt": "Are you sure you want to cancel your request?", - "Cancel Request Arrived Prompt": 'Are you sure you want to cancel your request? Your driver has arrived so there is a $10 cancellation fee. It may help to call your driver now', - "Favorite Location Nickname Length Error": "Nickname has to be atleast 3 characters", - "Favorite Location Save Succeeded": "Location Saved!", - "Favorite Location Save Failed": "Unable to save your location. Please try again later.", - "Favorite Location Title": "Favorite Location <%= id %>", - "Search Location Title": "Search Location <%= id %>", - "ETA Message": "ETA: Around <%= minutes %> Minutes", - "Nearest Cab Message": "The closest driver is approximately <%= minutes %> minute(s) away", - "Arrival ETA Message": "Your Uber will arrive in about <%= minutes %> minute(s)", - "Arriving Now Message": "Your Uber is arriving now...", - "Rating Driver Failed": "Unable to contact server. Please try again later or email support if this issue persists.", - "Account Information": "Account Information", - "Mobile Phone Information": "Mobile Phone Information", - "settings": "settings", - "Information": "Information", - "Picture": "Picture", - "Change password": "Change password", - "Your current Picture": "Your current Picture", - "Your Favorite Locations": "Your Favorite Locations", - "You have no favorite locations saved.": "You have no favorite locations saved.", - "Purpose of Mobile": "We send text messages to your mobile phone to tell you when your driver is arriving. You can also request trips using text messages.", - "Country": "Country", - "Mobile Number": "Mobile Number", - "Submit": "Submit", - "Favorite Location": "Favorite Location", - "No Approximate Address": "Could not find an approximate address", - "Address:": "Address:", - "Information Update Succeeded": "Your information has been updated!", - "Information Update Failed": "We couldn't update your information. Please try again in few minutes or contact support if the problem persists.", - "Location Delete Succeeded": "Location deleted!", - "Location Delete Failed": "We were unable to delete your favorite location. Please try again later or contact support of the issue persists.", - "Location Edit Succeeded": "Changes Saved!", - "Location Edit Failed": "We couldn't save your changes. Please try again in a few minutes.", - "Picture Update Succeeded": "Your picture has been updated!", - "Picture Update Failed": "We couldn't change your picture. Please try again in a few minutes.", - "Personal Information": "Personal Information", - "Mobile Phone Number": "Mobile Phone Number", - "Payment Information": "Payment Information", - "Purpose of Credit Card": "We keep your credit card on file so that your trip go as fast as possible. You will not be charged until you take a trip.", - "Your card will not be charged until you take a trip.": "Your card will not be charged until you take a trip.", - "Credit Card Number": "Credit Card Number", - "Expiration Date": "Expiration Date", - "Promotion Code": "Promotion Code", - "Enter Promo Here": "If you have a code for a promotion, invitation or group deal, you can enter it here.", - "Promotion Code Input Label": "Promotion, Invite or Groupon Code (optional)", - "Terms and Conditions": "Terms and Conditions", - "HELP": "HELP", - "STOP": "STOP", - "Legal Information": "Legal Information", - "Sign Up Agreement": "By signing up, I agree to the Uber <%= terms_link %> and <%= privacy_link %> and understand that Uber is a request tool, not a transportation carrier.", - "Sign Up Agreement Error": "You must agree to the Uber Terms and Conditions and Privacy Policy to continue.", - "Message and Data Rates Disclosure": "Message and Data Rates May Apply. Reply <%= help_string %> to 827-222 for help. Reply <%= stop_string %> to 827-222 to stop texts. For additional assistance, visit support.uber.com or call (866) 576-1039. Supported Carriers: AT&T, Sprint, Verizon, and T-Mobile.", - "I Agree": "I agree to the Terms & Conditions and Privacy Policy", - "Security Code": "Security Code", - "Type of Card": "Type of Card", - "Personal": "Personal", - "Business": "Business", - "Code": "Code", - "Zip or Postal Code": "Zip or Postal Code", - "Your Trip": "Your Trip", - "Trip Info": "Trip Info", - "Request a fare review": "Request a fare review", - "Fare Review Submitted": "Your fare review has been submitted. We'll get back to you soon about your request. Sorry for any inconvenience this may have caused!", - "Fair Price Consideration": "We're committed to delivering Uber service at a fair price. Before requesting a fare review, please consider:", - "Your Fare Calculation": "Your Fare Calculation", - "Charges": "Charges", - "Discounts": "Discounts", - "Total Charge": "Total Charge", - "Uber pricing information": "Uber pricing information", - "Uber Pricing Information Message": "<%= learn_link %> is published on our website.", - "GPS Point Capture Disclosure": "Due to a finite number of GPS point captures, corners on your trip map may appear cut off or rounded. These minor inaccuracies result in a shorter measured distance, which always results in a cheaper trip.", - "Fare Review Note": "Please elaborate on why this trip requires a fare review. Your comments below will help us better establish the correct price for your trip:", - "Fare Review Error": "There was an error submitting the review. Please ensure that you have a message.", - "Sign In": "Sign In" - }; -}).call(this); -}, "translations/fr": function(exports, require, module) {(function() { - exports.translations = { - "Uber": "Uber", - "Sign Up": "Inscription", - "Ride Request": "Passer une Commande", - "Invite Friends": "Inviter vos Amis", - "Promotions": "Promotions", - "Billing": "Paiement", - "Settings": "Paramètres", - "Forgot Password?": "Mot de passe oublié ?", - "Password Recovery": "Récupération du mot de passe", - "Login": "Connexion", - "Trip Detail": "Détail de la Course", - "Password Reset": "Réinitialisation du mot de passe", - "Confirm Email": "Confirmation de l’e-mail", - "Request Ride": "Passer une Commande", - "Credit Card Number": "Numéro de Carte de Crédit", - "month": "mois", - "01-Jan": "01-Jan", - "02-Feb": "02-Fév", - "03-Mar": "03-Mar", - "04-Apr": "04-Avr", - "05-May": "05-Mai", - "06-Jun": "06-Juin", - "07-Jul": "07-Jui", - "08-Aug": "08-Aoû", - "09-Sep": "09-Sep", - "10-Oct": "10-Oct", - "11-Nov": "11-Nov", - "12-Dec": "12-Déc", - "year": "année", - "CVV": "Code de Sécurité", - "Category": "Type", - "personal": "personnel", - "business": "entreprise", - "Default Credit Card": "Carte par Défaut", - "Add Credit Card": "Ajouter une Carte", - "Expiry": "Expire", - "default card": "carte par défaut", - "make default": "choisir par défaut", - "Edit": "Modifier", - "Delete": "Supprimer", - "Expiry Month": "Mois d’Expiration", - "Expiry Year": "Année d’Expiration", - "Unable to Verify Card": "Impossible de vérifier la carte pour le moment. Merci de réessayer un peu plus tard.", - "Credit Card Update Succeeded": "Votre carte a été mise à jour avec succès !", - "Credit Card Update Failed": "Nous ne pouvons enregistrer vos changements. Merci de réessayer dans quelques minutes.", - "Credit Card Delete Succeeded": "Votre carte a été supprimée !", - "Credit Card Delete Failed": "Nous n’avons pas été en mesure de supprimer votre carte. Merci de réessayer plus tard.", - "Credit Card Update Category Succeeded": "Changement de catégorie de carte réussi !", - "Credit Card Update Category Failed": "Nous ne pouvons pas changer la catégorie de votre carte. Merci de réessayer dans quelques minutes.", - "Credit Card Update Default Succeeded": "Carte par défaut changée avec succès !", - "Credit Card Update Default Failed": "Nous ne pouvons pas changer votre carte par défaut. Merci de réessayer dans quelques minutes.", - "Hello Greeting": "Bonjour, <%= name %>", - "Card Ending in": "La carte expire dans", - "Trip Map": "Carte des Courses", - "Amount": "Montant: <%= amount %>", - "Last Attempt to Bill": "Dernière tentative de prélèvement : <%= date %>", - "Charge": "Débit", - "Uber Credit Balance Note": "Votre compte a un solde de <%= amount %> UberCredits. Lorsque nous facturons des courses, nous réduirons votre solde d’UberCredits avant de prélever votre carte de crédit.", - "Please Add Credit Card": "Merci d’ajouter une carte de crédit pour que nous puissions vous facturer.", - "Credit Cards": "Cartes de crédit", - "add a new credit card": "Ajouter une nouvelle carte de crédit", - "Account Balance": "Solde du compte", - "Arrears": "Arriérés", - "Billing Succeeded": "Votre carte a été correctement débitée.", - "Confirm Email Succeeded": "L’adresse e-mail a bien été validée, vous êtes redirigé vers le tableau de bord...", - "Confirm Email Failed": "Impossible de confirmer l’adresse e-mail. Merci de contacter support@uber.com si le problème persiste.", - "Credit Card Added": "Carte de crédit ajoutée", - "No Credit Card": "Pas de carte de crédit", - "Mobile Number Confirmed": "Numéro de téléphone confirmé", - "No Confirmed Mobile": "Pas de numéro de téléphone confirmé", - "E-mail Address Confirmed": "Adresse e-mail confirmée", - "No Confirmed E-mail": "Pas d’adresse e-mail confirmée", - 'Reply to sign up text': 'Répondre "GO" au SMS que vous avez reçu à l’inscription.', - "Resend text message": "Renvoyer le SMS", - "Click sign up link": "Cliquez sur le lien contenu dans l’e-mail reçu à l’inscription.", - "Resend email": "Renvoyer l’e-mail", - "Add a credit card to ride": "Ajouter une carte de crédit et vous serez prêt à voyager avec Uber.", - "Your Most Recent Trip": "Votre course la plus récente", - "details": "détails", - "Your Trip History": "Historique de votre trajet", - "Status": "Statut", - "Here's how it works:": "Voici comment ça marche :", - "Show all trips": "Montrer toutes les courses", - "Set your location:": "Définir votre position :", - "App search for address": "Application iPhone/Android : positionner la punaise ou rechercher une adresse", - "SMS text address": "SMS : envoyez votre adresse à UBRCAB (827222)", - "Confirm pickup request": "Validez la commande", - "Uber sends ETA": "Uber envoie un temps d’attente estimé (habituellement entre 5 et 10 minutes)", - "Car arrives": "Lorsque votre voiture arrive, Uber vous en informera encore..", - "Ride to destination": "Montez dans la voiture et donnez votre destination au chauffeur.", - "Thank your driver": "C’est tout ! Remerciez le chauffeur mais souvenez-vous que les pourboires sont compris et qu’il n’est pas nécessaire d’avoir du liquide sur soi.", - "Trip started here": "La course a commencé ici.", - "Trip ended here": "La course s’est terminée ici.", - "Sending Email": "Envoi de l’e-mail...", - "Resend Email Succeeded": "Nous venons d’envoyer l’e-mail. Merci de cliquer sur le lien de confirmation que vous avez reçu.", - "Resend Email Failed": "Il y a eu un problème lors de l’envoi de l’email. Merci de contacter le support si le problème persiste.", - "Resend Text Succeeded": 'Nous venons d’envoyer le SMS. Merci de répondre "GO" au message que vous avez reçu. Il se peut que cela prenne quelques minutes pour que le message arrive sur votre téléphone.', - "Resend Text Failed": "Il y a eu un problème lors de l’envoi du SMS. Merci de contacter le support si le problème persiste.", - "Password Reset Error": "Il y a eu une error lors de la réinitialisation de votre mot de passe.", - "New Password:": "Nouveau mot de passe:", - "Forgot Password Error": "Votre nom d’utilisateur / adresse email ne peut être trouvé. Merci d’utiliser la même qu’à l’inscription.", - "Forgot Password Success": "Merci de consulter votre boîte mail pour suivre la demande de ‘réinitialisation de mot de passe.", - "Forgot Password Enter Email": "Merci de saisir votre adresse email et nous vous enverrons un lien vous permettant de réinitialiser votre mot de passe :", - "Invite friends": "Inviter vos amis", - "Give $ Get $": "Donnez $10, Recevez $10", - "Give $ Get $ Description": "Chaque ami que vous invitez à Uber recevra $10 de crédits Uber. Dès lors qu’une personne que vous aurez invité aura utilisé Uber pour la première, vous recevrez $10 de crédits Uber également !", - "What are you waiting for?": "N’attendez plus ! Lancez les invitations !", - "Tweet": "Tweeter", - "Invite Link": "Envoyez ce lien par email ou messagerie instantanée à vos amis :", - "Enter Promotion Code": "Si vous avez un code promo, saisissez-le ici:", - "Your Active Promotions": "Vos Codes Promos Actifs", - "Code": "Code", - "Details": "Détails", - "Trips Remaining": "Courses restantes", - "Expires": "Expire", - "No Active Promotions": "Vous n’avez pas de code promo actif.", - "Your Available Promotions": "Votres Promos Disponibles", - "Where do you want us to pick you up?": "Où souhaitez-vous que nous vous prenions en charge ?", - "Address to search": "Adresse à rechercher", - "Search": "Chercher", - "Driver Name:": "Nom du chauffeur:", - "Driver #:": "# Chauffeur:", - "Pickup Address:": "Lieu de prise en charge:", - "Add to Favorite Locations": "Ajoutez aux Lieux Favoris", - "Star": "Étoiles", - "Nickname:": "Pseudo", - "Add": "Ajouter", - "Your last trip": "Votre dernière course", - "Please rate your driver:": "Merci de noter votre chauffeur :", - "Comments: (optional)": "Commentaires: (optionnel)", - "Rate Trip": "Notez votre course", - "Pickup time:": "Heure de Prise en Charge :", - "Miles:": "Kilomètres :", - "Trip time:": "Temps de course :", - "Fare:": "Tarif :", - "Favorite Locations": "Lieux Favoris", - "Search Results": "Résultats", - "You have no favorite locations saved.": "Vous n’avez pas de lieux de prise en charge favoris.", - "Loading...": "Chargement...", - "Request Pickup": "Commander ici", - "Cancel Pickup": "Annuler", - "Requesting Closest Driver": "Nous demandons au chauffeur le plus proche de vous prendre en charge...", - "En Route": "Vous êtes actuellement en route...", - "Rate Last Trip": "Merci de noter votre précédent trajet pour faire une autre course.", - "Rate Before Submitting": "Merci de noter votre trajet avant de le valider.", - "Address too short": "L’adresse est trop courte", - "or did you mean": "ou vouliez-vous dire", - "Search Address Failed": "Impossible de trouver l’adresse spécifiée. Merci de saisir une autre adresse proche de l’endroit où vous vous trouvez.", - "Sending pickup request...": "Envoi de la demande de prise en charge...", - "Cancel Request Prompt": "Voulez-vous vraiment annuler votre demande ?", - "Cancel Request Arrived Prompt": 'Voulez-vous vraiment annuler votre demande ? Votre chauffeur est arrivé, vous serez donc facturé de $10 de frais d’annulation. Il pourrait être utile que vous appeliez votre chauffeur maintenant.', - "Favorite Location Nickname Length Error": "Le pseudo doit faire au moins 3 caractères de long", - "Favorite Location Save Succeeded": "Adresse enregistrée !", - "Favorite Location Save Failed": "Impossible d’enregistrer votre adresse. Merci de réessayer ultérieurement.", - "Favorite Location Title": "Adresse favorie <%= id %>", - "Search Location Title": "Recherche d’adresse <%= id %>", - "ETA Message": "Temps d’attente estimé: environ <%= minutes %> minutes", - "Nearest Cab Message": "Le chauffeur le plus proche sera là dans <%= minutes %> minute(s)", - "Arrival ETA Message": "Votre chauffeur arrivera dans <%= minutes %> minute(s)", - "Arriving Now Message": "Votre chauffeur est en approche...", - "Rating Driver Failed": "Impossible de contacter le serveur. Merci de réessayer ultérieurement ou de contacter le support si le problème persiste.", - "settings": "Paramètres", - "Information": "Information", - "Picture": "Photo", - "Change password": "Modifier votre mot de passe", - "Your current Picture": "Votre photo", - "Your Favorite Locations": "Vos lieux favoris", - "You have no favorite locations saved.": "Vous n’avez pas de lieu favori", - "Account Information": "Informations Personnelles", - "Mobile Phone Information": "Informations de Mobile", - "Change Your Password": "Changez votre mot de passe.", - "Country": "Pays", - "Language": "Langue", - "Favorite Location": "Lieu favori", - "No Approximate Address": "Impossible de trouver une adresse même approximative", - "Address:": "Adresse :", - "Information Update Succeeded": "Vos informations ont été mises à jour !", - "Information Update Failed": "Nous n’avons pas pu mettre à jour vos informations. Merci de réessayer dans quelques instants ou de contacter le support si le problème persiste.", - "Location Delete Succeeded": "Adresse supprimée !", - "Location Delete Failed": "Nous n’avons pas pu supprimée votre adresse favorie. Merci de réessayer plus tard ou de contacter le support si le problème persiste.", - "Location Edit Succeeded": "Modifications sauvegardées !", - "Location Edit Failed": "Nous n’avons pas pu sauvegarder vos modifications. Merci de réessayer dans quelques minutes.", - "Picture Update Succeeded": "Votre photo a été mise à jour !", - "Picture Update Failed": "Nous n’avons pas pu mettre à jour votre photo. Merci de réessayer dans quelques instants.", - "Personal Information": "Informations Personnelles", - "Mobile Phone Number": "Numéro de Téléphone Portable", - "Payment Information": "Informations de Facturation", - "Your card will not be charged until you take a trip.": "Votre carte ne sera pas débitée avant votre premier trajet.", - "Card Number": "Numéro de Carte", - "Promotion Code Input Label": "Code promo, code d’invitation ou “deal” acheté en ligne (optionnel)", - "Terms and Conditions": "Conditions Générales", - "HELP": "HELP", - "STOP": "STOP", - "Sign Up Agreement": "En souscrivant, j’accepte les <%= terms_link %> et <%= privacy_link %> et comprends qu’Uber est un outil de commande de chauffeur, et non un transporteur.", - "Sign Up Agreement Error": "Vous devez accepter les Conditions Générales d’utilisation d’Uber Terms and Conditions et la Politique de Confidentialité pour continuer.", - "Message and Data Rates Disclosure": "Les frais d’envoi de SMS et de consommation de données peuvent s’appliquer. Répondez <%= help_string %> au 827-222 pour obtenir de l’aide. Répondez <%= stop_string %> au 827-222 pour ne plus recevoir de SMS. Pour plus d’aide, visitez support.uber.com ou appelez le (866) 576-1039. Opérateurs supportés: AT&T, Sprint, Verizon, T-Mobile, Orange, SFR et Bouygues Telecom.", - "Zip/Postal Code": "Code Postal", - "Expiration Date": "Date D'expiration", - "Security Code": "Code de Sécurité", - "Type of Card": "Type", - "Personal": "Personnel", - "Business": "Entreprise", - "Promotion Code": "Code Promo", - "Legal Information": "Mentions Légales", - "I Agree": "J'accepte.", - "Your Trip": "Votre Course", - "Trip Info": "Informations de la Course", - "Request a fare review": "Demander un contrôle du tarif", - "Fare Review Submitted": "Votre demande de contrôle du tarif a été soumis. Nous reviendrons vers vous rapidement concernant cette demande. Nous nous excusons pour les dérangements éventuellement occasionnés !", - "Fair Price Consideration": "Nous nous engageons à proposer Uber à un tarif juste. Avant de demander un contrôle du tarif, merci de prendre en compte :", - "Your Fare Calculation": "Calcul du Prix", - "Charges": "Coûts", - "Discounts": "Réductions", - "Total Charge": "Coût total", - "Uber pricing information": "Information sur les prix d’Uber", - "Uber Pricing Information Message": "<%= learn_link %> est disponible sur notre site web.", - "GPS Point Capture Disclosure": "A cause d’un nombre limité de coordonnées GPS sauvegardées, les angles de votre trajet sur la carte peuvent apparaître coupés ou arrondis. Ces légères incohérences débouchent sur des distances mesurées plus courtes, ce qui implique toujours un prix du trajet moins élevé.", - "Fare Review Note": "Merci de nous expliquer pourquoi le tarif de cette course nécessite d’être contrôlé. Vos commentaires ci-dessous nous aideront à établir un prix plus juste si nécessaire :", - "Fare Review Error": "Il y a eu une erreur lors de l’envoi de la demande. Assurez-vous d’avoir bien ajouté une description à votre demande." - }; -}).call(this); -}, "views/clients/billing": function(exports, require, module) {(function() { - var clientsBillingTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - clientsBillingTemplate = require('templates/clients/billing'); - exports.ClientsBillingView = (function() { - __extends(ClientsBillingView, UberView); - function ClientsBillingView() { - ClientsBillingView.__super__.constructor.apply(this, arguments); - } - ClientsBillingView.prototype.id = 'billing_view'; - ClientsBillingView.prototype.className = 'view_container'; - ClientsBillingView.prototype.events = { - 'click a#add_card': 'addCard', - 'click .charge_arrear': 'chargeArrear' - }; - ClientsBillingView.prototype.render = function() { - this.RefreshUserInfo(__bind(function() { - var cards, newForm; - this.HideSpinner(); - $(this.el).html(clientsBillingTemplate()); - if (USER.payment_gateway.payment_profiles.length === 0) { - newForm = new app.views.clients.modules.creditcard; - $(this.el).find("#add_card_wrapper").html(newForm.render(0).el); - } else { - cards = new app.views.clients.modules.creditcard; - $("#cards").html(cards.render("all").el); - } - return this.delegateEvents(); - }, this)); - return this; - }; - ClientsBillingView.prototype.addCard = function(e) { - var newCard; - e.preventDefault(); - newCard = new app.views.clients.modules.creditcard; - $('#cards').append(newCard.render("new").el); - return $("a#add_card").hide(); - }; - ClientsBillingView.prototype.chargeArrear = function(e) { - var $el, arrearId, attrs, cardId, options, tryCharge; - e.preventDefault(); - $(".error_message").text(""); - $el = $(e.currentTarget); - arrearId = $el.attr('id'); - cardId = $el.parent().find('#card_to_charge').val(); - this.ShowSpinner('submit'); - tryCharge = new app.models.clientbills({ - id: arrearId - }); - attrs = { - payment_profile_id: cardId, - dataType: 'json' - }; - options = { - success: __bind(function(data, textStatus, jqXHR) { - $el.parent().find(".success_message").text(t("Billing Succeeded")); - $el.hide(); - return $el.parent().find('#card_to_charge').hide(); - }, this), - error: __bind(function(jqXHR, status, errorThrown) { - return $el.parent().find(".error_message").text(JSON.parse(status.responseText).error); - }, this), - complete: __bind(function() { - return this.HideSpinner(); - }, this) - }; - return tryCharge.save(attrs, options); - }; - return ClientsBillingView; - })(); -}).call(this); -}, "views/clients/confirm_email": function(exports, require, module) {(function() { - var clientsConfirmEmailTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - clientsConfirmEmailTemplate = require('templates/clients/confirm_email'); - exports.ClientsConfirmEmailView = (function() { - __extends(ClientsConfirmEmailView, UberView); - function ClientsConfirmEmailView() { - ClientsConfirmEmailView.__super__.constructor.apply(this, arguments); - } - ClientsConfirmEmailView.prototype.id = 'confirm_email_view'; - ClientsConfirmEmailView.prototype.className = 'view_container'; - ClientsConfirmEmailView.prototype.render = function(token) { - var attrs; - $(this.el).html(clientsConfirmEmailTemplate()); - attrs = { - data: { - email_token: token - }, - success: __bind(function(data, textStatus, jqXHR) { - var show_dashboard; - this.HideSpinner(); - show_dashboard = function() { - return app.routers.clients.navigate('!/dashboard', true); - }; - if (data.status === 'OK') { - $('.success_message').show(); - return _.delay(show_dashboard, 3000); - } else if (data.status === 'ALREADY_COMFIRMED') { - $('.already_confirmed_message').show(); - return _.delay(show_dashboard, 3000); - } else { - return $('.error_message').show(); - } - }, this), - error: __bind(function(e) { - this.HideSpinner(); - return $('.error_message').show(); - }, this), - complete: function(status) { - return $('#attempt_text').hide(); - }, - dataType: 'json', - type: 'PUT', - url: "" + API + "/users/self" - }; - $.ajax(attrs); - this.ShowSpinner('submit'); - return this; - }; - return ClientsConfirmEmailView; - })(); -}).call(this); -}, "views/clients/dashboard": function(exports, require, module) {(function() { - var clientsDashboardTemplate; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsDashboardTemplate = require('templates/clients/dashboard'); - exports.ClientsDashboardView = (function() { - var displayFirstTrip; - __extends(ClientsDashboardView, UberView); - function ClientsDashboardView() { - this.showAllTrips = __bind(this.showAllTrips, this); - this.render = __bind(this.render, this); - ClientsDashboardView.__super__.constructor.apply(this, arguments); - } - ClientsDashboardView.prototype.id = 'dashboard_view'; - ClientsDashboardView.prototype.className = 'view_container'; - ClientsDashboardView.prototype.events = { - 'click a.confirmation': 'confirmationClick', - 'click #resend_email': 'resendEmail', - 'click #resend_mobile': 'resendMobile', - 'click #show_all_trips': 'showAllTrips' - }; - ClientsDashboardView.prototype.render = function() { - var displayPage, downloadTrips; - this.HideSpinner(); - displayPage = __bind(function() { - $(this.el).html(clientsDashboardTemplate()); - this.confirmationsSetup(); - return this.RequireMaps(__bind(function() { - if (USER.trips.models[0]) { - if (!USER.trips.models[0].get("points")) { - return USER.trips.models[0].fetch({ - data: { - relationships: 'points' - }, - success: __bind(function() { - this.CacheData("USERtrips", USER.trips); - return displayFirstTrip(); - }, this) - }); - } else { - return displayFirstTrip(); - } - } - }, this)); - }, this); - downloadTrips = __bind(function() { - return this.DownloadUserTrips(displayPage, false, 10); - }, this); - this.RefreshUserInfo(downloadTrips); - return this; - }; - displayFirstTrip = __bind(function() { - var bounds, endPos, map, myOptions, path, polyline, startPos; - myOptions = { - zoom: 12, - mapTypeId: google.maps.MapTypeId.ROADMAP, - zoomControl: false, - rotateControl: false, - panControl: false, - mapTypeControl: false, - scrollwheel: false - }; - if (USER.trips.length === 10) { - $("#show_all_trips").show(); - } - if (USER.trips.length > 0) { - map = new google.maps.Map(document.getElementById("trip_details_map"), myOptions); - bounds = new google.maps.LatLngBounds(); - path = []; - _.each(USER.trips.models[0].get('points'), __bind(function(point) { - path.push(new google.maps.LatLng(point.lat, point.lng)); - return bounds.extend(_.last(path)); - }, this)); - map.fitBounds(bounds); - startPos = new google.maps.Marker({ - position: _.first(path), - map: map, - title: t('Trip started here'), - icon: 'https://uber-static.s3.amazonaws.com/marker_start.png' - }); - endPos = new google.maps.Marker({ - position: _.last(path), - map: map, - title: t('Trip ended here'), - icon: 'https://uber-static.s3.amazonaws.com/marker_end.png' - }); - polyline = new google.maps.Polyline({ - path: path, - strokeColor: '#003F87', - strokeOpacity: 1, - strokeWeight: 5 - }); - return polyline.setMap(map); - } - }, ClientsDashboardView); - ClientsDashboardView.prototype.confirmationsSetup = function() { - var blink, cardForm, element, _ref, _ref2, _ref3, _ref4, _ref5; - blink = function(element) { - var opacity; - opacity = 0.5; - if (element.css('opacity') === "0.5") { - opacity = 1.0; - } - return element.fadeTo(2000, opacity, function() { - return blink(element); - }); - }; - if (((_ref = window.USER) != null ? (_ref2 = _ref.payment_gateway) != null ? (_ref3 = _ref2.payment_profiles) != null ? _ref3.length : void 0 : void 0 : void 0) === 0) { - element = $('#confirmed_credit_card'); - cardForm = new app.views.clients.modules.creditcard; - $('#card.info').append(cardForm.render().el); - blink(element); - } - if (((_ref4 = window.USER) != null ? _ref4.confirm_email : void 0) === false) { - element = $('#confirmed_email'); - blink(element); - } - if ((((_ref5 = window.USER) != null ? _ref5.confirm_mobile : void 0) != null) === false) { - element = $('#confirmed_mobile'); - return blink(element); - } - }; - ClientsDashboardView.prototype.confirmationClick = function(e) { - e.preventDefault(); - $('.info').hide(); - $('#more_info').show(); - switch (e.currentTarget.id) { - case "card": - return $('#card.info').slideToggle(); - case "mobile": - return $('#mobile.info').slideToggle(); - case "email": - return $('#email.info').slideToggle(); - } - }; - ClientsDashboardView.prototype.resendEmail = function(e) { - var $el; - e.preventDefault(); - $el = $(e.currentTarget); - $el.removeAttr('href').prop({ - disabled: true - }); - $el.html(t("Sending Email")); - return $.ajax({ - type: 'GET', - url: API + '/users/request_confirm_email', - data: { - token: USER.token - }, - dataType: 'json', - success: __bind(function(data, textStatus, jqXHR) { - return $el.html(t("Resend Email Succeeded")); - }, this), - error: __bind(function(jqXHR, textStatus, errorThrown) { - return $el.html(t("Resend Email Failed")); - }, this) - }); - }; - ClientsDashboardView.prototype.resendMobile = function(e) { - var $el; - e.preventDefault(); - $el = $(e.currentTarget); - $el.removeAttr('href').prop({ - disabled: true - }); - $el.html("Sending message..."); - return $.ajax({ - type: 'GET', - url: API + '/users/request_confirm_mobile', - data: { - token: USER.token - }, - dataType: 'json', - success: __bind(function(data, textStatus, jqXHR) { - return $el.html(t("Resend Text Succeeded")); - }, this), - error: __bind(function(jqXHR, textStatus, errorThrown) { - return $el.html(t("Resend Text Failed")); - }, this) - }); - }; - ClientsDashboardView.prototype.showAllTrips = function(e) { - e.preventDefault(); - $(e.currentTarget).hide(); - return this.DownloadUserTrips(this.render, true, 1000); - }; - return ClientsDashboardView; - }).call(this); -}).call(this); -}, "views/clients/forgot_password": function(exports, require, module) {(function() { - var clientsForgotPasswordTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - clientsForgotPasswordTemplate = require('templates/clients/forgot_password'); - exports.ClientsForgotPasswordView = (function() { - __extends(ClientsForgotPasswordView, UberView); - function ClientsForgotPasswordView() { - ClientsForgotPasswordView.__super__.constructor.apply(this, arguments); - } - ClientsForgotPasswordView.prototype.id = 'forgotpassword_view'; - ClientsForgotPasswordView.prototype.className = 'view_container modal_view_container'; - ClientsForgotPasswordView.prototype.events = { - "submit #password_reset": "passwordReset", - "click #password_reset_submit": "passwordReset", - "submit #forgot_password": "forgotPassword", - "click #forgot_password_submit": "forgotPassword" - }; - ClientsForgotPasswordView.prototype.render = function(token) { - this.HideSpinner(); - $(this.el).html(clientsForgotPasswordTemplate({ - token: token - })); - this.delegateEvents(); - return this; - }; - ClientsForgotPasswordView.prototype.forgotPassword = function(e) { - var attrs; - e.preventDefault(); - $('.success_message').hide(); - $(".error_message").hide(); - attrs = { - data: { - login: $("#login").val() - }, - success: __bind(function(data, textStatus, jqXHR) { - this.HideSpinner(); - $('.success_message').show(); - return $("#forgot_password").hide(); - }, this), - error: __bind(function(e) { - this.HideSpinner(); - return $('.error_message').show(); - }, this), - dataType: 'json', - type: 'PUT', - url: "" + API + "/users/forgot_password" - }; - $.ajax(attrs); - return this.ShowSpinner('submit'); - }; - ClientsForgotPasswordView.prototype.passwordReset = function(e) { - var attrs; - e.preventDefault(); - attrs = { - data: { - email_token: $("#token").val(), - password: $("#password").val() - }, - success: __bind(function(data, textStatus, jqXHR) { - this.HideSpinner(); - $.cookie('token', data.token); - amplify.store('USERjson', data); - app.refreshMenu(); - return location.hash = '!/dashboard'; - }, this), - error: __bind(function(e) { - this.HideSpinner(); - return $('#error_reset').show(); - }, this), - dataType: 'json', - type: 'PUT', - url: "" + API + "/users/self" - }; - $.ajax(attrs); - return this.ShowSpinner('submit'); - }; - return ClientsForgotPasswordView; - })(); -}).call(this); -}, "views/clients/invite": function(exports, require, module) {(function() { - var clientsInviteTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsInviteTemplate = require('templates/clients/invite'); - exports.ClientsInviteView = (function() { - __extends(ClientsInviteView, UberView); - function ClientsInviteView() { - ClientsInviteView.__super__.constructor.apply(this, arguments); - } - ClientsInviteView.prototype.id = 'invite_view'; - ClientsInviteView.prototype.className = 'view_container'; - ClientsInviteView.prototype.render = function() { - this.ReadUserInfo(); - this.HideSpinner(); - $(this.el).html(clientsInviteTemplate()); - console.log(screen); - return this; - }; - return ClientsInviteView; - })(); -}).call(this); -}, "views/clients/login": function(exports, require, module) {(function() { - var clientsLoginTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsLoginTemplate = require('templates/clients/login'); - exports.ClientsLoginView = (function() { - __extends(ClientsLoginView, UberView); - function ClientsLoginView() { - ClientsLoginView.__super__.constructor.apply(this, arguments); - } - ClientsLoginView.prototype.id = 'login_view'; - ClientsLoginView.prototype.className = 'view_container modal_view_container'; - ClientsLoginView.prototype.events = { - 'submit form': 'authenticate', - 'click button': 'authenticate' - }; - ClientsLoginView.prototype.initialize = function() { - _.bindAll(this, 'render'); - return this.render(); - }; - ClientsLoginView.prototype.render = function() { - this.HideSpinner(); - $(this.el).html(clientsLoginTemplate()); - this.delegateEvents(); - return this.place(); - }; - ClientsLoginView.prototype.authenticate = function(e) { - e.preventDefault(); - return $.ajax({ - type: 'POST', - url: API + '/auth/web_login/client', - data: { - login: $("#login").val(), - password: $("#password").val() - }, - dataType: 'json', - success: function(data, textStatus, jqXHR) { - $.cookie('user', JSON.stringify(data)); - $.cookie('token', data.token); - amplify.store('USERjson', data); - $('header').html(app.views.shared.menu.render().el); - return app.routers.clients.navigate('!/dashboard', true); - }, - error: function(jqXHR, textStatus, errorThrown) { - $.cookie('user', null); - $.cookie('token', null); - if (jqXHR.status === 403) { - $.cookie('redirected_user', JSON.stringify(JSON.parse(jqXHR.responseText).error_obj), { - domain: '.uber.com' - }); - window.location = 'http://partners.uber.com/'; - } - return $('.error_message').html(JSON.parse(jqXHR.responseText).error).hide().fadeIn(); - } - }); - }; - return ClientsLoginView; - })(); -}).call(this); -}, "views/clients/modules/credit_card": function(exports, require, module) {(function() { - var creditCardTemplate; - var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - creditCardTemplate = require('templates/clients/modules/credit_card'); - exports.CreditCardView = (function() { - __extends(CreditCardView, UberView); - function CreditCardView() { - CreditCardView.__super__.constructor.apply(this, arguments); - } - CreditCardView.prototype.id = 'creditcard_view'; - CreditCardView.prototype.className = 'module_container'; - CreditCardView.prototype.events = { - 'submit #credit_card_form': 'processNewCard', - 'click #new_card': 'processNewCard', - 'change #card_number': 'showCardType', - 'click .edit_card_show': 'showEditCard', - 'click .edit_card': 'editCard', - 'click .delete_card': 'deleteCard', - 'click .make_default': 'makeDefault', - 'change .use_case': 'saveUseCase' - }; - CreditCardView.prototype.initialize = function() { - return app.collections.paymentprofiles.bind("refresh", __bind(function() { - return this.RefreshUserInfo(__bind(function() { - this.render("all"); - return this.HideSpinner(); - }, this)); - }, this)); - }; - CreditCardView.prototype.render = function(cards) { - if (cards == null) { - cards = "new"; - } - if (cards === "all") { - app.collections.paymentprofiles.reset(USER.payment_gateway.payment_profiles); - cards = app.collections.paymentprofiles; - } - $(this.el).html(creditCardTemplate({ - cards: cards - })); - return this; - }; - CreditCardView.prototype.processNewCard = function(e) { - var $el, attrs, model, options; - e.preventDefault(); - this.ClearGlobalStatus(); - $el = $("#credit_card_form"); - $el.find('.error_message').html(""); - attrs = { - card_number: $el.find('#card_number').val(), - card_code: $el.find('#card_code').val(), - card_expiration_month: $el.find('#card_expiration_month').val(), - card_expiration_year: $el.find('#card_expiration_year').val(), - use_case: $el.find('#use_case').val(), - "default": $el.find('#default_check').prop("checked") - }; - options = { - statusCode: { - 200: __bind(function(e) { - this.HideSpinner(); - $('#cc_form_wrapper').hide(); - app.collections.paymentprofiles.trigger("refresh"); - $(this.el).remove(); - $("a#add_card").show(); - return $('section').html(app.views.clients.billing.render().el); - }, this), - 406: __bind(function(e) { - var error, errors, _i, _len, _ref, _results; - this.HideSpinner(); - errors = JSON.parse(e.responseText); - _ref = _.keys(errors); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - error = _ref[_i]; - _results.push(error === "top_of_form" ? $("#top_of_form").html(errors[error]) : $("#credit_card_form").find("#" + error).parent().find(".error_message").html(errors[error])); - } - return _results; - }, this), - 420: __bind(function(e) { - this.HideSpinner(); - return $("#top_of_form").html(t("Unable to Verify Card")); - }, this) - } - }; - this.ShowSpinner("submit"); - model = new app.models.paymentprofile; - model.save(attrs, options); - return app.collections.paymentprofiles.add(model); - }; - CreditCardView.prototype.showCardType = function(e) { - var $el, reAmerica, reDiscover, reMaster, reVisa, validCard; - reVisa = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/; - reMaster = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/; - reAmerica = /^6011-?\d{4}-?\d{4}-?\d{4}$/; - reDiscover = /^3[4,7]\d{13}$/; - $el = $("#card_logos"); - validCard = false; - if (e.currentTarget.value.match(reVisa)) { - validCard = true; - } else if (e.currentTarget.value.match(reMaster)) { - $el.css('background-position', "-60px"); - validCard = true; - } else if (e.currentTarget.value.match(reAmerica)) { - $el.css('background-position', "-120px"); - validCard = true; - } else if (e.currentTarget.value.match(reDiscover)) { - $el.css('background-position', "-180px"); - validCard = true; - } - if (validCard) { - $el.css('width', "60px"); - return $el.css('margin-left', "180px"); - } else { - $el.css('width', "250px"); - return $el.css('margin-left', "80px"); - } - }; - CreditCardView.prototype.showEditCard = function(e) { - var $el, id; - e.preventDefault(); - $el = $(e.currentTarget); - if ($el.html() === t("Edit")) { - id = $el.html(t("Cancel")).parents("tr").attr("id").substring(1); - return $("#e" + id).show(); - } else { - id = $el.html(t("Edit")).parents("tr").attr("id").substring(1); - return $("#e" + id).hide(); - } - }; - CreditCardView.prototype.editCard = function(e) { - var $el, attrs, id, options; - e.preventDefault(); - this.ClearGlobalStatus(); - $el = $(e.currentTarget).parents("td"); - id = $el.parents("tr").attr("id").substring(1); - $el.attr('disabled', 'disabled'); - this.ShowSpinner('submit'); - attrs = { - card_expiration_month: $el.find('#card_expiration_month').val(), - card_expiration_year: $el.find('#card_expiration_year').val(), - card_code: $el.find('#card_code').val() - }; - options = { - success: __bind(function(response) { - this.HideSpinner(); - this.ShowSuccess(t("Credit Card Update Succeeded")); - $("#e" + id).hide(); - $("#d" + id).find(".edit_card_show").html(t("Edit")); - return app.collections.paymentprofiles.trigger("refresh"); - }, this), - error: __bind(function(e) { - this.HideSpinner(); - this.ShowError(t("Credit Card Update Failed")); - return $el.removeAttr('disabled'); - }, this) - }; - app.collections.paymentprofiles.models[id].set(attrs); - return app.collections.paymentprofiles.models[id].save({}, options); - }; - CreditCardView.prototype.deleteCard = function(e) { - var $el, id, options; - e.preventDefault(); - $el = $(e.currentTarget).parents("td"); - id = $el.parents("tr").attr("id").substring(1); - this.ClearGlobalStatus(); - this.ShowSpinner('submit'); - options = { - success: __bind(function(response) { - this.ShowSuccess(t("Credit Card Delete Succeeded")); - $("form").hide(); - app.collections.paymentprofiles.trigger("refresh"); - return $('section').html(app.views.clients.billing.render().el); - }, this), - error: __bind(function(xhr, e) { - this.HideSpinner(); - return this.ShowError(t("Credit Card Delete Failed")); - }, this) - }; - return app.collections.paymentprofiles.models[id].destroy(options); - }; - CreditCardView.prototype.saveUseCase = function(e) { - var $el, attrs, id, options, use_case; - this.ClearGlobalStatus(); - $el = $(e.currentTarget); - use_case = $el.val(); - id = $el.parents("tr").attr("id").substring(1); - attrs = { - use_case: use_case - }; - options = { - success: __bind(function(response) { - return this.ShowSuccess(t("Credit Card Update Category Succeeded")); - }, this), - error: __bind(function(e) { - return this.ShowError(t("Credit Card Update Category Failed")); - }, this) - }; - app.collections.paymentprofiles.models[id].set(attrs); - return app.collections.paymentprofiles.models[id].save({}, options); - }; - CreditCardView.prototype.makeDefault = function(e) { - var $el, attrs, id, options; - e.preventDefault(); - this.ClearGlobalStatus(); - $el = $(e.currentTarget).parents("td"); - id = $el.parents("tr").attr("id").substring(1); - attrs = { - "default": true - }; - options = { - success: __bind(function(response) { - this.ShowSuccess(t("Credit Card Update Default Succeeded")); - return app.collections.paymentprofiles.trigger("refresh"); - }, this), - error: __bind(function(e) { - return this.ShowError(t("Credit Card Update Default Failed")); - }, this) - }; - app.collections.paymentprofiles.models[id].set(attrs); - return app.collections.paymentprofiles.models[id].save({}, options); - }; - return CreditCardView; - })(); -}).call(this); -}, "views/clients/promotions": function(exports, require, module) {(function() { - var clientsPromotionsTemplate; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsPromotionsTemplate = require('templates/clients/promotions'); - exports.ClientsPromotionsView = (function() { - __extends(ClientsPromotionsView, UberView); - function ClientsPromotionsView() { - this.render = __bind(this.render, this); - ClientsPromotionsView.__super__.constructor.apply(this, arguments); - } - ClientsPromotionsView.prototype.id = 'promotions_view'; - ClientsPromotionsView.prototype.className = 'view_container'; - ClientsPromotionsView.prototype.events = { - 'submit form': 'submitPromo', - 'click button': 'submitPromo' - }; - ClientsPromotionsView.prototype.initialize = function() { - if (this.model) { - return this.RefreshUserInfo(this.render); - } - }; - ClientsPromotionsView.prototype.render = function() { - var renderTemplate; - this.ReadUserInfo(); - renderTemplate = __bind(function() { - $(this.el).html(clientsPromotionsTemplate({ - promos: window.USER.unexpired_client_promotions || [] - })); - return this.HideSpinner(); - }, this); - this.DownloadUserPromotions(renderTemplate); - return this; - }; - ClientsPromotionsView.prototype.submitPromo = function(e) { - var attrs, model, options, refreshTable; - e.preventDefault(); - this.ClearGlobalStatus(); - refreshTable = __bind(function() { - $('section').html(this.render().el); - return this.HideSpinner(); - }, this); - attrs = { - code: $('#code').val() - }; - options = { - success: __bind(function(response) { - this.HideSpinner(); - if (response.get('first_name')) { - return this.ShowSuccess("Your promotion has been applied in the form of an account credit. Click here to check your balance."); - } else { - this.ShowSuccess("Your promotion has successfully been applied"); - return this.RefreshUserInfo(this.render, true); - } - }, this), - statusCode: { - 400: __bind(function(e) { - this.ShowError(JSON.parse(e.responseText).error); - return this.HideSpinner(); - }, this) - } - }; - this.ShowSpinner("submit"); - model = new app.models.promotions; - return model.save(attrs, options); - }; - return ClientsPromotionsView; - })(); -}).call(this); -}, "views/clients/request": function(exports, require, module) {(function() { - var clientsRequestTemplate; - var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; - }; - clientsRequestTemplate = require('templates/clients/request'); - exports.ClientsRequestView = (function() { - __extends(ClientsRequestView, UberView); - function ClientsRequestView() { - this.AjaxCall = __bind(this.AjaxCall, this); - this.AskDispatch = __bind(this.AskDispatch, this); - this.removeMarkers = __bind(this.removeMarkers, this); - this.displaySearchLoc = __bind(this.displaySearchLoc, this); - this.displayFavLoc = __bind(this.displayFavLoc, this); - this.showFavLoc = __bind(this.showFavLoc, this); - this.addToFavLoc = __bind(this.addToFavLoc, this); - this.removeCabs = __bind(this.removeCabs, this); - this.requestRide = __bind(this.requestRide, this); - this.rateTrip = __bind(this.rateTrip, this); - this.locationChange = __bind(this.locationChange, this); - this.panToLocation = __bind(this.panToLocation, this); - this.clickLocation = __bind(this.clickLocation, this); - this.searchLocation = __bind(this.searchLocation, this); - this.mouseoutLocation = __bind(this.mouseoutLocation, this); - this.mouseoverLocation = __bind(this.mouseoverLocation, this); - this.fetchTripDetails = __bind(this.fetchTripDetails, this); - this.submitRating = __bind(this.submitRating, this); - this.setStatus = __bind(this.setStatus, this); - this.initialize = __bind(this.initialize, this); - ClientsRequestView.__super__.constructor.apply(this, arguments); - } - ClientsRequestView.prototype.id = 'request_view'; - ClientsRequestView.prototype.className = 'view_container'; - ClientsRequestView.prototype.pollInterval = 2 * 1000; - ClientsRequestView.prototype.events = { - "submit #search_form": "searchAddress", - "click .locations_link": "locationLinkHandle", - "mouseover .location_row": "mouseoverLocation", - "mouseout .location_row": "mouseoutLocation", - "click .location_row": "clickLocation", - "click #search_location": "searchLocation", - "click #pickupHandle": "pickupHandle", - "click .stars": "rateTrip", - "submit #rating_form": "submitRating", - "click #addToFavButton": "showFavLoc", - "click #favLocNickname": "selectInputText", - "submit #favLoc_form": "addToFavLoc" - }; - ClientsRequestView.prototype.status = ""; - ClientsRequestView.prototype.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker.png"; - ClientsRequestView.prototype.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker.png"; - ClientsRequestView.prototype.initialize = function() { - var displayCabs; - displayCabs = __bind(function() { - return this.AskDispatch("NearestCab"); - }, this); - this.showCabs = _.throttle(displayCabs, this.pollInterval); - return this.numSearchToDisplay = 1; - }; - ClientsRequestView.prototype.setStatus = function(status) { - var autocomplete; - if (this.status === status) { - return; - } - try { - google.maps.event.trigger(this.map, 'resize'); - } catch (_e) {} - switch (status) { - case "init": - this.AskDispatch("StatusClient"); - this.status = "init"; - return this.ShowSpinner("load"); - case "ready": - this.HideSpinner(); - $(".panel").hide(); - $("#top_bar").fadeIn(); - $("#location_panel").fadeIn(); - $("#location_panel_control").fadeIn(); - $("#pickupHandle").attr("class", "button_green").fadeIn().find("span").html(t("Request Pickup")); - this.pickup_icon.setDraggable(true); - this.map.panTo(this.pickup_icon.getPosition()); - this.showCabs(); - try { - this.pickup_icon.setMap(this.map); - this.displayFavLoc(); - autocomplete = new google.maps.places.Autocomplete(document.getElementById('address'), { - types: ['geocode'] - }); - autocomplete.bindTo('bounds', this.map); - } catch (_e) {} - return this.status = "ready"; - case "searching": - this.HideSpinner(); - this.removeMarkers(); - $(".panel").hide(); - $("#top_bar").fadeOut(); - $("#status_message").html(t("Requesting Closest Driver")); - $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); - this.pickup_icon.setDraggable(false); - this.pickup_icon.setMap(this.map); - return this.status = "searching"; - case "waiting": - this.HideSpinner(); - this.removeMarkers(); - $(".panel").hide(); - $("#top_bar").fadeOut(); - $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); - $("#waiting_riding").fadeIn(); - this.pickup_icon.setDraggable(false); - this.pickup_icon.setMap(this.map); - return this.status = "waiting"; - case "arriving": - this.HideSpinner(); - this.removeMarkers(); - $(".panel").hide(); - $("#top_bar").fadeOut(); - $("#pickupHandle").attr("class", "button_red").fadeIn().find("span").html(t("Cancel Pickup")); - $("#waiting_riding").fadeIn(); - this.pickup_icon.setDraggable(false); - this.pickup_icon.setMap(this.map); - return this.status = "arriving"; - case "riding": - this.HideSpinner(); - this.removeMarkers(); - $(".panel").hide(); - $("#top_bar").fadeOut(); - $("#pickupHandle").fadeIn().attr("class", "button_red").find("span").html(t("Cancel Pickup")); - $("#waiting_riding").fadeIn(); - this.pickup_icon.setDraggable(false); - this.status = "riding"; - return $("#status_message").html(t("En Route")); - case "rate": - this.HideSpinner(); - $(".panel").hide(); - $("#pickupHandle").fadeOut(); - $("#trip_completed_panel").fadeIn(); - $('#status_message').html(t("Rate Last Trip")); - return this.status = "rate"; - } - }; - ClientsRequestView.prototype.render = function() { - this.ReadUserInfo(); - this.HideSpinner(); - this.ShowSpinner("load"); - $(this.el).html(clientsRequestTemplate()); - this.cabs = []; - this.RequireMaps(__bind(function() { - var center, myOptions, streetViewPano; - center = new google.maps.LatLng(37.7749295, -122.4194155); - this.markers = []; - this.pickup_icon = new google.maps.Marker({ - position: center, - draggable: true, - clickable: true, - icon: this.pickupMarker - }); - this.geocoder = new google.maps.Geocoder(); - myOptions = { - zoom: 12, - center: center, - mapTypeId: google.maps.MapTypeId.ROADMAP, - rotateControl: false, - rotateControl: false, - panControl: false - }; - this.map = new google.maps.Map($(this.el).find("#map_wrapper_right")[0], myOptions); - if (this.status === "ready") { - this.pickup_icon.setMap(this.map); - } - if (geo_position_js.init()) { - geo_position_js.getCurrentPosition(__bind(function(data) { - var location; - location = new google.maps.LatLng(data.coords.latitude, data.coords.longitude); - this.pickup_icon.setPosition(location); - this.map.panTo(location); - return this.map.setZoom(16); - }, this)); - } - this.setStatus("init"); - streetViewPano = this.map.getStreetView(); - google.maps.event.addListener(streetViewPano, 'visible_changed', __bind(function() { - if (streetViewPano.getVisible()) { - this.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker_large.png"; - this.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker_large.png"; - } else { - this.pickupMarker = "https://uber-static.s3.amazonaws.com/pickup_marker.png"; - this.cabMarker = "https://uber-static.s3.amazonaws.com/cab_marker.png"; - } - this.pickup_icon.setIcon(this.pickupMarker); - return _.each(this.cabs, __bind(function(cab) { - return cab.setIcon(this.cabMarker); - }, this)); - }, this)); - if (this.status === "ready") { - return this.displayFavLoc(); - } - }, this)); - return this; - }; - ClientsRequestView.prototype.submitRating = function(e) { - var $el, message, rating; - e.preventDefault(); - $el = $(e.currentTarget); - rating = 0; - _(5).times(function(num) { - if ($el.find(".stars#" + (num + 1)).attr("src") === "/web/img/star_active.png") { - return rating = num + 1; - } - }); - if (rating === 0) { - $("#status_message").html("").html(t("Rate Before Submitting")); - } else { - this.ShowSpinner("submit"); - this.AskDispatch("RatingDriver", { - rating: rating - }); - } - message = $el.find("#comments").val().toString(); - if (message.length > 5) { - return this.AskDispatch("Feedback", { - message: message - }); - } - }; - ClientsRequestView.prototype.fetchTripDetails = function(id) { - var trip; - trip = new app.models.trip({ - id: id - }); - return trip.fetch({ - data: { - relationships: 'points,driver,city' - }, - dataType: 'json', - success: __bind(function() { - var bounds, endPos, path, polyline, startPos; - bounds = new google.maps.LatLngBounds(); - path = []; - _.each(trip.get('points'), __bind(function(point) { - path.push(new google.maps.LatLng(point.lat, point.lng)); - return bounds.extend(_.last(path)); - }, this)); - startPos = new google.maps.Marker({ - position: _.first(path), - map: this.map, - title: t("Trip started here"), - icon: 'https://uber-static.s3.amazonaws.com/carstart.png' - }); - endPos = new google.maps.Marker({ - position: _.last(path), - map: this.map, - title: t("Trip ended here"), - icon: 'https://uber-static.s3.amazonaws.com/carstop.png' - }); - polyline = new google.maps.Polyline({ - path: path, - strokeColor: '#003F87', - strokeOpacity: 1, - strokeWeight: 5 - }); - polyline.setMap(this.map); - this.map.fitBounds(bounds); - $("#tripTime").html(app.helpers.parseDateTime(trip.get('pickup_local_time'), trip.get('city.timezone'))); - $("#tripDist").html(app.helpers.RoundNumber(trip.get('distance'), 2)); - $("#tripDur").html(app.helpers.FormatSeconds(trip.get('duration'))); - return $("#tripFare").html(app.helpers.FormatCurrency(trip.get('fare'))); - }, this) - }); - }; - ClientsRequestView.prototype.searchAddress = function(e) { - var $locationsDiv, address, alphabet, bounds, showResults; - alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - try { - e.preventDefault(); - } catch (_e) {} - $('.error_message').html(""); - $locationsDiv = $("
"); - address = $('#address').val(); - bounds = new google.maps.LatLngBounds(); - if (address.length < 5) { - $('#status_message').html(t("Address too short")).fadeIn(); - return false; - } - showResults = __bind(function(address, index) { - var first_cell, row, second_cell; - if (index < this.numSearchToDisplay) { - first_cell = "
" + address.formatted_address + "
" + (t('or did you mean')) + "
" + address.formatted_address + "
- - - - - - -
Rod VaggGitHub/rvaggTwitter/@rvagg
Benjamin ByholmGitHub/kkoopa
Trevor NorrisGitHub/trevnorrisTwitter/@trevnorris
Nathan RajlichGitHub/TooTallNateTwitter/@TooTallNate
Brett LawsonGitHub/brett19Twitter/@brett19x
Ben NoordhuisGitHub/bnoordhuisTwitter/@bnoordhuis
- -Licence & copyright ------------------------ - -Copyright (c) 2014 NAN contributors (listed above). - -Native Abstractions for Node.js is licensed under an MIT +no-false-attribs license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/build/config.gypi b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/build/config.gypi deleted file mode 100644 index e085a500..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/build/config.gypi +++ /dev/null @@ -1,38 +0,0 @@ -# Do not edit. File was generated by node-gyp's "configure" step -{ - "target_defaults": { - "cflags": [], - "default_configuration": "Release", - "defines": [], - "include_dirs": [], - "libraries": [] - }, - "variables": { - "clang": 0, - "gcc_version": 47, - "host_arch": "x64", - "node_install_npm": "true", - "node_prefix": "", - "node_shared_cares": "false", - "node_shared_http_parser": "false", - "node_shared_libuv": "false", - "node_shared_openssl": "false", - "node_shared_v8": "false", - "node_shared_zlib": "false", - "node_tag": "", - "node_unsafe_optimizations": 0, - "node_use_dtrace": "false", - "node_use_etw": "false", - "node_use_openssl": "true", - "node_use_perfctr": "false", - "node_use_systemtap": "false", - "python": "/usr/bin/python", - "target_arch": "x64", - "v8_enable_gdbjit": 0, - "v8_no_strict_aliasing": 1, - "v8_use_snapshot": "true", - "nodedir": "/home/rvagg/.node-gyp/0.10.21", - "copy_dev_lib": "true", - "standalone_static_library": 1 - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/include_dirs.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/include_dirs.js deleted file mode 100644 index 4f1dfb41..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/include_dirs.js +++ /dev/null @@ -1 +0,0 @@ -console.log(require('path').relative('.', __dirname)); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/nan.h b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/nan.h deleted file mode 100644 index bc544f53..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/nan.h +++ /dev/null @@ -1,1910 +0,0 @@ -/********************************************************************************** - * NAN - Native Abstractions for Node.js - * - * Copyright (c) 2014 NAN contributors: - * - Rod Vagg - * - Benjamin Byholm - * - Trevor Norris - * - Nathan Rajlich - * - Brett Lawson - * - Ben Noordhuis - * - * MIT +no-false-attribs License - * - * Version 1.0.0 (current Node unstable: 0.11.13, Node stable: 0.10.28) - * - * ChangeLog: - * * 1.0.0 May 4 2014 - * - Heavy API changes for V8 3.25 / Node 0.11.13 - * - Use cpplint.py - * - Removed NanInitPersistent - * - Removed NanPersistentToLocal - * - Removed NanFromV8String - * - Removed NanMakeWeak - * - Removed NanNewLocal - * - Removed NAN_WEAK_CALLBACK_OBJECT - * - Removed NAN_WEAK_CALLBACK_DATA - * - Introduce NanNew, replaces NanNewLocal, NanPersistentToLocal, adds many overloaded typed versions - * - Introduce NanUndefined, NanNull, NanTrue and NanFalse - * - Introduce NanEscapableScope and NanEscapeScope - * - Introduce NanMakeWeakPersistent (requires a special callback to work on both old and new node) - * - Introduce NanMakeCallback for node::MakeCallback - * - Introduce NanSetTemplate - * - Introduce NanGetCurrentContext - * - Introduce NanCompileScript and NanRunScript - * - Introduce NanAdjustExternalMemory - * - Introduce NanAddGCEpilogueCallback, NanAddGCPrologueCallback, NanRemoveGCEpilogueCallback, NanRemoveGCPrologueCallback - * - Introduce NanGetHeapStatistics - * - Rename NanAsyncWorker#SavePersistent() to SaveToPersistent() - * - * * 0.8.0 Jan 9 2014 - * - NanDispose -> NanDisposePersistent, deprecate NanDispose - * - Extract _NAN_*_RETURN_TYPE, pull up NAN_*() - * - * * 0.7.1 Jan 9 2014 - * - Fixes to work against debug builds of Node - * - Safer NanPersistentToLocal (avoid reinterpret_cast) - * - Speed up common NanRawString case by only extracting flattened string when necessary - * - * * 0.7.0 Dec 17 2013 - * - New no-arg form of NanCallback() constructor. - * - NanCallback#Call takes Handle rather than Local - * - Removed deprecated NanCallback#Run method, use NanCallback#Call instead - * - Split off _NAN_*_ARGS_TYPE from _NAN_*_ARGS - * - Restore (unofficial) Node 0.6 compatibility at NanCallback#Call() - * - Introduce NanRawString() for char* (or appropriate void*) from v8::String - * (replacement for NanFromV8String) - * - Introduce NanCString() for null-terminated char* from v8::String - * - * * 0.6.0 Nov 21 2013 - * - Introduce NanNewLocal(v8::Handle value) for use in place of - * v8::Local::New(...) since v8 started requiring isolate in Node 0.11.9 - * - * * 0.5.2 Nov 16 2013 - * - Convert SavePersistent and GetFromPersistent in NanAsyncWorker from protected and public - * - * * 0.5.1 Nov 12 2013 - * - Use node::MakeCallback() instead of direct v8::Function::Call() - * - * * 0.5.0 Nov 11 2013 - * - Added @TooTallNate as collaborator - * - New, much simpler, "include_dirs" for binding.gyp - * - Added full range of NAN_INDEX_* macros to match NAN_PROPERTY_* macros - * - * * 0.4.4 Nov 2 2013 - * - Isolate argument from v8::Persistent::MakeWeak removed for 0.11.8+ - * - * * 0.4.3 Nov 2 2013 - * - Include node_object_wrap.h, removed from node.h for Node 0.11.8. - * - * * 0.4.2 Nov 2 2013 - * - Handle deprecation of v8::Persistent::Dispose(v8::Isolate* isolate)) for - * Node 0.11.8 release. - * - * * 0.4.1 Sep 16 2013 - * - Added explicit `#include ` as it was removed from node.h for v0.11.8 - * - * * 0.4.0 Sep 2 2013 - * - Added NAN_INLINE and NAN_DEPRECATED and made use of them - * - Added NanError, NanTypeError and NanRangeError - * - Cleaned up code - * - * * 0.3.2 Aug 30 2013 - * - Fix missing scope declaration in GetFromPersistent() and SaveToPersistent - * in NanAsyncWorker - * - * * 0.3.1 Aug 20 2013 - * - fix "not all control paths return a value" compile warning on some platforms - * - * * 0.3.0 Aug 19 2013 - * - Made NAN work with NPM - * - Lots of fixes to NanFromV8String, pulling in features from new Node core - * - Changed node::encoding to Nan::Encoding in NanFromV8String to unify the API - * - Added optional error number argument for NanThrowError() - * - Added NanInitPersistent() - * - Added NanReturnNull() and NanReturnEmptyString() - * - Added NanLocker and NanUnlocker - * - Added missing scopes - * - Made sure to clear disposed Persistent handles - * - Changed NanAsyncWorker to allocate error messages on the heap - * - Changed NanThrowError(Local) to NanThrowError(Handle) - * - Fixed leak in NanAsyncWorker when errmsg is used - * - * * 0.2.2 Aug 5 2013 - * - Fixed usage of undefined variable with node::BASE64 in NanFromV8String() - * - * * 0.2.1 Aug 5 2013 - * - Fixed 0.8 breakage, node::BUFFER encoding type not available in 0.8 for - * NanFromV8String() - * - * * 0.2.0 Aug 5 2013 - * - Added NAN_PROPERTY_GETTER, NAN_PROPERTY_SETTER, NAN_PROPERTY_ENUMERATOR, - * NAN_PROPERTY_DELETER, NAN_PROPERTY_QUERY - * - Extracted _NAN_METHOD_ARGS, _NAN_GETTER_ARGS, _NAN_SETTER_ARGS, - * _NAN_PROPERTY_GETTER_ARGS, _NAN_PROPERTY_SETTER_ARGS, - * _NAN_PROPERTY_ENUMERATOR_ARGS, _NAN_PROPERTY_DELETER_ARGS, - * _NAN_PROPERTY_QUERY_ARGS - * - Added NanGetInternalFieldPointer, NanSetInternalFieldPointer - * - Added NAN_WEAK_CALLBACK, NAN_WEAK_CALLBACK_OBJECT, - * NAN_WEAK_CALLBACK_DATA, NanMakeWeak - * - Renamed THROW_ERROR to _NAN_THROW_ERROR - * - Added NanNewBufferHandle(char*, size_t, node::smalloc::FreeCallback, void*) - * - Added NanBufferUse(char*, uint32_t) - * - Added NanNewContextHandle(v8::ExtensionConfiguration*, - * v8::Handle, v8::Handle) - * - Fixed broken NanCallback#GetFunction() - * - Added optional encoding and size arguments to NanFromV8String() - * - Added NanGetPointerSafe() and NanSetPointerSafe() - * - Added initial test suite (to be expanded) - * - Allow NanUInt32OptionValue to convert any Number object - * - * * 0.1.0 Jul 21 2013 - * - Added `NAN_GETTER`, `NAN_SETTER` - * - Added `NanThrowError` with single Local argument - * - Added `NanNewBufferHandle` with single uint32_t argument - * - Added `NanHasInstance(Persistent&, Handle)` - * - Added `Local NanCallback#GetFunction()` - * - Added `NanCallback#Call(int, Local[])` - * - Deprecated `NanCallback#Run(int, Local[])` in favour of Call - * - * See https://github.com/rvagg/nan for the latest update to this file - **********************************************************************************/ - -#ifndef NAN_H_ -#define NAN_H_ - -#include -#include -#include -#include -#include -#include - -#if defined(__GNUC__) && !defined(DEBUG) -# define NAN_INLINE inline __attribute__((always_inline)) -#elif defined(_MSC_VER) && !defined(DEBUG) -# define NAN_INLINE __forceinline -#else -# define NAN_INLINE inline -#endif - -#if defined(__GNUC__) && !V8_DISABLE_DEPRECATIONS -# define NAN_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) && !V8_DISABLE_DEPRECATIONS -# define NAN_DEPRECATED __declspec(deprecated) -#else -# define NAN_DEPRECATED -#endif - -// some generic helpers - -template NAN_INLINE bool NanSetPointerSafe( - T *var - , T val -) { - if (var) { - *var = val; - return true; - } else { - return false; - } -} - -template NAN_INLINE T NanGetPointerSafe( - T *var - , T fallback = reinterpret_cast(0) -) { - if (var) { - return *var; - } else { - return fallback; - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt, bool def -) { - if (def) { - return optionsObj.IsEmpty() - || !optionsObj->Has(opt) - || optionsObj->Get(opt)->BooleanValue(); - } else { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->BooleanValue(); - } -} - -NAN_INLINE bool NanBooleanOptionValue( - v8::Local optionsObj - , v8::Handle opt -) { - return NanBooleanOptionValue(optionsObj, opt, false); -} - -NAN_INLINE uint32_t NanUInt32OptionValue( - v8::Local optionsObj - , v8::Handle opt - , uint32_t def -) { - return !optionsObj.IsEmpty() - && optionsObj->Has(opt) - && optionsObj->Get(opt)->IsNumber() - ? optionsObj->Get(opt)->Uint32Value() - : def; -} - -#if (NODE_MODULE_VERSION > 0x000B) -// Node 0.11+ (0.11.3 and below won't compile with these) - -# define _NAN_METHOD_ARGS_TYPE const v8::FunctionCallbackInfo& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE void - -# define _NAN_GETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE void - -# define _NAN_SETTER_ARGS_TYPE const v8::PropertyCallbackInfo& -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE void - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_DELETER_ARGS \ - _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE void - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE void - -# define _NAN_INDEX_GETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE void - -# define _NAN_INDEX_SETTER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE void - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE void - -# define _NAN_INDEX_DELETER_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE void - -# define _NAN_INDEX_QUERY_ARGS_TYPE \ - const v8::PropertyCallbackInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE void - -typedef v8::FunctionCallback NanFunctionCallback; -static v8::Isolate* nan_isolate = v8::Isolate::GetCurrent(); - -# define NanUndefined() v8::Undefined(nan_isolate) -# define NanNull() v8::Null(nan_isolate) -# define NanTrue() v8::True(nan_isolate) -# define NanFalse() v8::False(nan_isolate) -# define NanAdjustExternalMemory(amount) \ - nan_isolate->AdjustAmountOfExternalAllocatedMemory(amount) -# define NanSetTemplate(templ, name, value) templ->Set(nan_isolate, name, value) -# define NanGetCurrentContext() nan_isolate->GetCurrentContext() -# define NanMakeCallback(target, func, argc, argv) \ - node::MakeCallback(nan_isolate, target, func, argc, argv) -# define NanGetInternalFieldPointer(object, index) \ - object->GetAlignedPointerFromInternalField(index) -# define NanSetInternalFieldPointer(object, index, value) \ - object->SetAlignedPointerInInternalField(index, value) - - template - NAN_INLINE v8::Local NanNew() { - return T::New(nan_isolate); - } - - template - NAN_INLINE v8::Local NanNew(P arg1) { - return T::New(nan_isolate, arg1); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(nan_isolate, receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(nan_isolate, callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg1) { - return v8::Local::New(nan_isolate, arg1); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg1) { - return v8::Local::New(nan_isolate, arg1); - } - - template - NAN_INLINE v8::Local NanNew(P arg1, int arg2) { - return T::New(nan_isolate, arg1, arg2); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(nan_isolate); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(nan_isolate, length); - } - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(nan_isolate, time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(nan_isolate, time).As(); - } - - typedef v8::UnboundScript NanUnboundScript; - typedef v8::Script NanBoundScript; - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::CompileUnbound(nan_isolate, &source); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::CompileUnbound(nan_isolate, &source); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(nan_isolate, resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(nan_isolate, resource); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New(nan_isolate, val).As(); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned(nan_isolate, val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned(nan_isolate, val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(nan_isolate, val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(nan_isolate, val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew( - char *arg - , int length) { - return v8::String::NewFromUtf8( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg - , int length) { - return v8::String::NewFromUtf8( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(char *arg) { - return v8::String::NewFromUtf8(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const char *arg) { - return v8::String::NewFromUtf8(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - return v8::String::NewFromOneByte( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - return v8::String::NewFromOneByte(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - return v8::String::NewFromOneByte(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg - , int length) { - return v8::String::NewFromTwoByte( - nan_isolate - , arg - , v8::String::kNormalString - , length); - } - template<> - NAN_INLINE v8::Local NanNew( - uint16_t *arg) { - return v8::String::NewFromTwoByte(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint16_t *arg) { - return v8::String::NewFromTwoByte(nan_isolate, arg); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(nan_isolate); - } - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - nan_isolate->AddGCEpilogueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::Isolate::GCEpilogueCallback callback) { - nan_isolate->RemoveGCEpilogueCallback(callback); - } - - NAN_INLINE void NanAddGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - nan_isolate->AddGCPrologueCallback(callback, gc_type_filter); - } - - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::Isolate::GCPrologueCallback callback) { - nan_isolate->RemoveGCPrologueCallback(callback); - } - - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - nan_isolate->GetHeapStatistics(heap_statistics); - } - -# define NanSymbol(value) NanNew(value) - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Reset(nan_isolate, obj); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , const v8::Persistent& obj) { - handle.Reset(nan_isolate, obj); - } - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)( - const v8::WeakCallbackData >& data); - _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) - : parameter(param), callback(cb) { - NanAssignPersistent(persistent, handle); - } - - ~_NanWeakCallbackInfo() { - persistent.Reset(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - NAN_INLINE P* GetParameter() const { return info_->parameter; } - NAN_INLINE void Revive() const { - info_->persistent.SetWeak(info_, info_->callback); - } - - NAN_INLINE void Dispose() const { - delete info_; - } - - private: - _NanWeakCallbackInfo* info_; - }; - -// do not use for declaration -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name( \ - const v8::WeakCallbackData > &data) { \ - _NanWeakCallbackData wcbd( \ - data.GetParameter()); \ - _Nan_Weak_Callback_ ## name(wcbd); \ - } \ - \ - template \ - NAN_INLINE void _Nan_Weak_Callback_ ## name( \ - const _NanWeakCallbackData &data) - -# define NanScope() v8::HandleScope scope(nan_isolate) -# define NanEscapableScope() v8::EscapableHandleScope scope(nan_isolate) -# define NanEscapeScope(val) scope.Escape(val) -# define NanLocker() v8::Locker locker(nan_isolate) -# define NanUnlocker() v8::Unlocker unlocker(nan_isolate) -# define NanReturnValue(value) return args.GetReturnValue().Set(value) -# define NanReturnUndefined() return -# define NanReturnNull() return args.GetReturnValue().SetNull() -# define NanReturnEmptyString() return args.GetReturnValue().SetEmptyString() - -# define NanObjectWrapHandle(obj) obj->handle() - -template -void NAN_INLINE NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.SetWeak(cbinfo, callback); -} - -# define _NAN_ERROR(fun, errmsg) fun(NanNew(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - nan_isolate->ThrowException(_NAN_ERROR(fun, errmsg)); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE void NanThrowError(v8::Handle error) { - NanScope(); - nan_isolate->ThrowException(error); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(NanNew(msg)); - v8::Local obj = err.As(); - obj->Set(NanSymbol("code"), NanNew(errorNumber)); - return err; - } - - NAN_INLINE void NanThrowError( - const char *msg - , const int errorNumber - ) { - NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE void NanThrowTypeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE void NanThrowRangeError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle - ) { - handle.Reset(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::smalloc::FreeCallback callback - , void *hint - ) { - return node::Buffer::New(nan_isolate, data, length, callback, hint); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { - return node::Buffer::New(nan_isolate, data, size); - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return node::Buffer::New(nan_isolate, size); - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return node::Buffer::Use(nan_isolate, data, size); - } - - NAN_INLINE bool NanHasInstance( - v8::Persistent& function_template - , v8::Handle value - ) { - return NanNew(function_template)->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - return v8::Local::New( - nan_isolate - , v8::Context::New(nan_isolate, extensions, tmpl, obj) - ); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - v8::ScriptCompiler::Source source(s, origin); - return v8::ScriptCompiler::Compile(nan_isolate, &source); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - v8::ScriptCompiler::Source source(s); - return v8::ScriptCompiler::Compile(nan_isolate, &source); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Local script - ) { - return script->BindToCurrentContext()->Run(); - } - - NAN_INLINE v8::Local NanRunScript( - v8::Local script - ) { - return script->Run(); - } - -#else -// Node 0.8 and 0.10 - -# define _NAN_METHOD_ARGS_TYPE const v8::Arguments& -# define _NAN_METHOD_ARGS _NAN_METHOD_ARGS_TYPE args -# define _NAN_METHOD_RETURN_TYPE v8::Handle - -# define _NAN_GETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_GETTER_ARGS _NAN_GETTER_ARGS_TYPE args -# define _NAN_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_SETTER_ARGS_TYPE const v8::AccessorInfo & -# define _NAN_SETTER_ARGS _NAN_SETTER_ARGS_TYPE args -# define _NAN_SETTER_RETURN_TYPE void - -# define _NAN_PROPERTY_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_GETTER_ARGS _NAN_PROPERTY_GETTER_ARGS_TYPE args -# define _NAN_PROPERTY_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_SETTER_ARGS _NAN_PROPERTY_SETTER_ARGS_TYPE args -# define _NAN_PROPERTY_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_ENUMERATOR_ARGS _NAN_PROPERTY_ENUMERATOR_ARGS_TYPE args -# define _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_DELETER_ARGS _NAN_PROPERTY_DELETER_ARGS_TYPE args -# define _NAN_PROPERTY_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_PROPERTY_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_PROPERTY_QUERY_ARGS _NAN_PROPERTY_QUERY_ARGS_TYPE args -# define _NAN_PROPERTY_QUERY_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_GETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_GETTER_ARGS _NAN_INDEX_GETTER_ARGS_TYPE args -# define _NAN_INDEX_GETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_SETTER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_SETTER_ARGS _NAN_INDEX_SETTER_ARGS_TYPE args -# define _NAN_INDEX_SETTER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_ENUMERATOR_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_ENUMERATOR_ARGS _NAN_INDEX_ENUMERATOR_ARGS_TYPE args -# define _NAN_INDEX_ENUMERATOR_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_DELETER_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_DELETER_ARGS _NAN_INDEX_DELETER_ARGS_TYPE args -# define _NAN_INDEX_DELETER_RETURN_TYPE v8::Handle - -# define _NAN_INDEX_QUERY_ARGS_TYPE const v8::AccessorInfo& -# define _NAN_INDEX_QUERY_ARGS _NAN_INDEX_QUERY_ARGS_TYPE args -# define _NAN_INDEX_QUERY_RETURN_TYPE v8::Handle - -typedef v8::InvocationCallback NanFunctionCallback; - -# define NanUndefined() v8::Undefined() -# define NanNull() v8::Null() -# define NanTrue() v8::True() -# define NanFalse() v8::False() -# define NanAdjustExternalMemory(amount) \ - v8::V8::AdjustAmountOfExternalAllocatedMemory(amount) -# define NanSetTemplate(templ, name, value) templ->Set(name, value) -# define NanGetCurrentContext() v8::Context::GetCurrent() -# if NODE_VERSION_AT_LEAST(0, 8, 0) -# define NanMakeCallback(target, func, argc, argv) \ - node::MakeCallback(target, func, argc, argv) -# else -# define NanMakeCallback(target, func, argc, argv) \ - do { \ - v8::TryCatch try_catch; \ - func->Call(target, argc, argv); \ - if (try_catch.HasCaught()) { \ - v8::FatalException(try_catch); \ - } \ - } while (0) -# endif - -# define NanSymbol(value) v8::String::NewSymbol(value) - - template - NAN_INLINE v8::Local NanNew() { - return v8::Local::New(T::New()); - } - - template - NAN_INLINE v8::Local NanNew(v8::Handle arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle receiver - , int argc - , v8::Handle argv[] = 0) { - return v8::Signature::New(receiver, argc, argv); - } - - template - NAN_INLINE v8::Local NanNew( - NanFunctionCallback callback - , v8::Handle data = v8::Handle() - , v8::Handle signature = v8::Handle()) { - return T::New(callback, data, signature); - } - - template - NAN_INLINE v8::Local NanNew(const v8::Persistent &arg) { - return v8::Local::New(arg); - } - - template - NAN_INLINE v8::Local NanNew(P arg) { - return v8::Local::New(T::New(arg)); - } - - template - NAN_INLINE v8::Local NanNew(P arg, int length) { - return v8::Local::New(T::New(arg, length)); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Handle pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template - NAN_INLINE v8::Local NanNew( - v8::Local pattern, v8::RegExp::Flags flags) { - return v8::RegExp::New(pattern, flags); - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::Array::New(); - } - - template<> - NAN_INLINE v8::Local NanNew(int length) { - return v8::Array::New(length); - } - - - template<> - NAN_INLINE v8::Local NanNew(double time) { - return v8::Date::New(time).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int time) { - return v8::Date::New(time).As(); - } - - typedef v8::Script NanUnboundScript; - typedef v8::Script NanBoundScript; - - template - NAN_INLINE v8::Local NanNew( - P s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::New(s, const_cast(&origin)); - } - - template<> - NAN_INLINE v8::Local NanNew( - v8::Local s - ) { - return v8::Script::New(s); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalStringResource *resource) { - return v8::String::NewExternal(resource); - } - - NAN_INLINE v8::Local NanNew( - v8::String::ExternalAsciiStringResource *resource) { - return v8::String::NewExternal(resource); - } - - template<> - NAN_INLINE v8::Local NanNew(bool value) { - return v8::BooleanObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Local value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local - NanNew >( - v8::Handle value) { - return v8::StringObject::New(value).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(double val) { - return v8::NumberObject::New(val).As(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Uint32::NewFromUnsigned(val)->ToUint32(); - } - - template<> - NAN_INLINE v8::Local NanNew(int32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew(uint32_t val) { - return v8::Int32::New(val)->ToInt32(); - } - - template<> - NAN_INLINE v8::Local NanNew( - uint8_t *arg - , int length) { - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg - , int length) { - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew(uint8_t *arg) { - int length = strlen(reinterpret_cast(arg)); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew( - const uint8_t *arg) { - int length = strlen(reinterpret_cast(arg)); - uint16_t *warg = new uint16_t[length]; - for (int i = 0; i < length; i++) { - warg[i] = arg[i]; - } - v8::Local retval = v8::String::New(warg, length); - delete[] warg; - return retval; - } - - template<> - NAN_INLINE v8::Local NanNew() { - return v8::String::Empty(); - } - - NAN_INLINE void NanAddGCEpilogueCallback( - v8::GCEpilogueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCEpilogueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCEpilogueCallback( - v8::GCEpilogueCallback callback) { - v8::V8::RemoveGCEpilogueCallback(callback); - } - NAN_INLINE void NanAddGCPrologueCallback( - v8::GCPrologueCallback callback - , v8::GCType gc_type_filter = v8::kGCTypeAll) { - v8::V8::AddGCPrologueCallback(callback, gc_type_filter); - } - NAN_INLINE void NanRemoveGCPrologueCallback( - v8::GCPrologueCallback callback) { - v8::V8::RemoveGCPrologueCallback(callback); - } - NAN_INLINE void NanGetHeapStatistics( - v8::HeapStatistics *heap_statistics) { - v8::V8::GetHeapStatistics(heap_statistics); - } - - template - NAN_INLINE void NanAssignPersistent( - v8::Persistent& handle - , v8::Handle obj) { - handle.Dispose(); - handle = v8::Persistent::New(obj); - } - - template - struct _NanWeakCallbackInfo { - typedef void (*Callback)(v8::Persistent object, void* parameter); - _NanWeakCallbackInfo(v8::Handle handle, P* param, Callback cb) : - parameter(param) - , callback(cb) - , persistent(v8::Persistent::New(handle)) { } - - ~_NanWeakCallbackInfo() { - persistent.Dispose(); - persistent.Clear(); - } - - P* const parameter; - Callback const callback; - v8::Persistent persistent; - }; - - template - class _NanWeakCallbackData { - public: - _NanWeakCallbackData(_NanWeakCallbackInfo *info) - : info_(info) { } - - NAN_INLINE v8::Local GetValue() const { - return NanNew(info_->persistent); - } - NAN_INLINE P* GetParameter() const { return info_->parameter; } - NAN_INLINE void Revive() const { - info_->persistent.MakeWeak(info_, info_->callback); - } - NAN_INLINE void Dispose() const { - delete info_; - } - - private: - _NanWeakCallbackInfo* info_; - }; - -# define NanGetInternalFieldPointer(object, index) \ - object->GetPointerFromInternalField(index) -# define NanSetInternalFieldPointer(object, index, value) \ - object->SetPointerInInternalField(index, value) - -// do not use for declaration -# define NAN_WEAK_CALLBACK(name) \ - template \ - static void name( \ - v8::Persistent object, void *data) { \ - _NanWeakCallbackData wcbd( \ - static_cast<_NanWeakCallbackInfo*>(data)); \ - _Nan_Weak_Callback_ ## name(wcbd); \ - } \ - \ - template \ - NAN_INLINE void _Nan_Weak_Callback_ ## name( \ - const _NanWeakCallbackData &data) - - template - NAN_INLINE void NanMakeWeakPersistent( - v8::Handle handle - , P* parameter - , typename _NanWeakCallbackInfo::Callback callback) { - _NanWeakCallbackInfo *cbinfo = - new _NanWeakCallbackInfo(handle, parameter, callback); - cbinfo->persistent.MakeWeak(cbinfo, callback); - } - -# define NanScope() v8::HandleScope scope -# define NanEscapableScope() v8::HandleScope scope -# define NanEscapeScope(val) scope.Close(val) -# define NanLocker() v8::Locker locker -# define NanUnlocker() v8::Unlocker unlocker -# define NanReturnValue(value) return scope.Close(value) -# define NanReturnUndefined() return v8::Undefined() -# define NanReturnNull() return v8::Null() -# define NanReturnEmptyString() return v8::String::Empty() -# define NanObjectWrapHandle(obj) v8::Local::New(obj->handle_) - -# define _NAN_ERROR(fun, errmsg) \ - fun(v8::String::New(errmsg)) - -# define _NAN_THROW_ERROR(fun, errmsg) \ - do { \ - NanScope(); \ - return v8::Local::New( \ - v8::ThrowException(_NAN_ERROR(fun, errmsg))); \ - } while (0); - - NAN_INLINE v8::Local NanError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError(const char* errmsg) { - _NAN_THROW_ERROR(v8::Exception::Error, errmsg); - } - - NAN_INLINE v8::Local NanThrowError( - v8::Handle error - ) { - NanScope(); - return v8::Local::New(v8::ThrowException(error)); - } - - NAN_INLINE v8::Local NanError( - const char *msg - , const int errorNumber - ) { - v8::Local err = v8::Exception::Error(v8::String::New(msg)); - v8::Local obj = err.As(); - obj->Set(v8::String::New("code"), v8::Int32::New(errorNumber)); - return err; - } - - NAN_INLINE v8::Local NanThrowError( - const char *msg - , const int errorNumber - ) { - return NanThrowError(NanError(msg, errorNumber)); - } - - NAN_INLINE v8::Local NanTypeError(const char* errmsg) { - return _NAN_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowTypeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::TypeError, errmsg); - } - - NAN_INLINE v8::Local NanRangeError( - const char* errmsg - ) { - return _NAN_ERROR(v8::Exception::RangeError, errmsg); - } - - NAN_INLINE v8::Local NanThrowRangeError( - const char* errmsg - ) { - _NAN_THROW_ERROR(v8::Exception::RangeError, errmsg); - } - - template - NAN_INLINE void NanDisposePersistent( - v8::Persistent &handle) { // NOLINT(runtime/references) - handle.Dispose(); - handle.Clear(); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - char *data - , size_t length - , node::Buffer::free_callback callback - , void *hint - ) { - return NanNew( - node::Buffer::New(data, length, callback, hint)->handle_); - } - - NAN_INLINE v8::Local NanNewBufferHandle ( - const char *data - , uint32_t size - ) { -#if NODE_MODULE_VERSION >= 0x000B - return NanNew(node::Buffer::New(data, size)->handle_); -#else - return NanNew( - node::Buffer::New(const_cast(data), size)->handle_); -#endif - } - - NAN_INLINE v8::Local NanNewBufferHandle (uint32_t size) { - return NanNew(node::Buffer::New(size)->handle_); - } - - NAN_INLINE void FreeData(char *data, void *hint) { - delete[] data; - } - - NAN_INLINE v8::Local NanBufferUse( - char* data - , uint32_t size - ) { - return NanNew( - node::Buffer::New(data, size, FreeData, NULL)->handle_); - } - - NAN_INLINE bool NanHasInstance( - v8::Persistent& function_template - , v8::Handle value - ) { - return function_template->HasInstance(value); - } - - NAN_INLINE v8::Local NanNewContextHandle( - v8::ExtensionConfiguration* extensions = NULL - , v8::Handle tmpl = v8::Handle() - , v8::Handle obj = v8::Handle() - ) { - v8::Persistent ctx = v8::Context::New(extensions, tmpl, obj); - v8::Local lctx = NanNew(ctx); - ctx.Dispose(); - return lctx; - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - , const v8::ScriptOrigin& origin - ) { - return v8::Script::Compile(s, const_cast(&origin)); - } - - NAN_INLINE v8::Local NanCompileScript( - v8::Local s - ) { - return v8::Script::Compile(s); - } - - NAN_INLINE v8::Local NanRunScript(v8::Local script) { - return script->Run(); - } - -#endif // NODE_MODULE_VERSION - -typedef void (*NanFreeCallback)(char *data, void *hint); - -#define NAN_METHOD(name) _NAN_METHOD_RETURN_TYPE name(_NAN_METHOD_ARGS) -#define NAN_GETTER(name) \ - _NAN_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_GETTER_ARGS) -#define NAN_SETTER(name) \ - _NAN_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_SETTER_ARGS) -#define NAN_PROPERTY_GETTER(name) \ - _NAN_PROPERTY_GETTER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_GETTER_ARGS) -#define NAN_PROPERTY_SETTER(name) \ - _NAN_PROPERTY_SETTER_RETURN_TYPE name( \ - v8::Local property \ - , v8::Local value \ - , _NAN_PROPERTY_SETTER_ARGS) -#define NAN_PROPERTY_ENUMERATOR(name) \ - _NAN_PROPERTY_ENUMERATOR_RETURN_TYPE name(_NAN_PROPERTY_ENUMERATOR_ARGS) -#define NAN_PROPERTY_DELETER(name) \ - _NAN_PROPERTY_DELETER_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_DELETER_ARGS) -#define NAN_PROPERTY_QUERY(name) \ - _NAN_PROPERTY_QUERY_RETURN_TYPE name( \ - v8::Local property \ - , _NAN_PROPERTY_QUERY_ARGS) -# define NAN_INDEX_GETTER(name) \ - _NAN_INDEX_GETTER_RETURN_TYPE name(uint32_t index, _NAN_INDEX_GETTER_ARGS) -#define NAN_INDEX_SETTER(name) \ - _NAN_INDEX_SETTER_RETURN_TYPE name( \ - uint32_t index \ - , v8::Local value \ - , _NAN_INDEX_SETTER_ARGS) -#define NAN_INDEX_ENUMERATOR(name) \ - _NAN_INDEX_ENUMERATOR_RETURN_TYPE name(_NAN_INDEX_ENUMERATOR_ARGS) -#define NAN_INDEX_DELETER(name) \ - _NAN_INDEX_DELETER_RETURN_TYPE name( \ - uint32_t index \ - , _NAN_INDEX_DELETER_ARGS) -#define NAN_INDEX_QUERY(name) \ - _NAN_INDEX_QUERY_RETURN_TYPE name(uint32_t index, _NAN_INDEX_QUERY_ARGS) - -class NanCallback { - public: - NanCallback() { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - } - - explicit NanCallback(const v8::Handle &fn) { - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(handle, obj); - SetFunction(fn); - } - - ~NanCallback() { - if (handle.IsEmpty()) return; - NanDisposePersistent(handle); - } - - NAN_INLINE void SetFunction(const v8::Handle &fn) { - NanScope(); - NanNew(handle)->Set(NanSymbol("callback"), fn); - } - - NAN_INLINE v8::Local GetFunction () { - return NanNew(handle)->Get(NanSymbol("callback")) - .As(); - } - - void Call(int argc, v8::Handle argv[]) { - NanScope(); -#if (NODE_MODULE_VERSION > 0x000B) // 0.11.12+ - v8::Local callback = NanNew(handle)-> - Get(NanSymbol("callback")).As(); - node::MakeCallback( - nan_isolate - , nan_isolate->GetCurrentContext()->Global() - , callback - , argc - , argv - ); -#else -#if NODE_VERSION_AT_LEAST(0, 8, 0) - v8::Local callback = NanNew(handle)-> - Get(NanSymbol("callback")).As(); - node::MakeCallback( - v8::Context::GetCurrent()->Global() - , callback - , argc - , argv - ); -#else - node::MakeCallback(handle, "callback", argc, argv); -#endif -#endif - } - - private: - v8::Persistent handle; -}; - -/* abstract */ class NanAsyncWorker { - public: - explicit NanAsyncWorker(NanCallback *callback) : callback(callback) { - request.data = this; - errmsg = NULL; - - NanScope(); - v8::Local obj = NanNew(); - NanAssignPersistent(persistentHandle, obj); - } - - virtual ~NanAsyncWorker() { - NanScope(); - - if (!persistentHandle.IsEmpty()) - NanDisposePersistent(persistentHandle); - if (callback) - delete callback; - if (errmsg) - delete errmsg; - } - - virtual void WorkComplete() { - NanScope(); - - if (errmsg == NULL) - HandleOKCallback(); - else - HandleErrorCallback(); - delete callback; - callback = NULL; - } - - NAN_INLINE void SaveToPersistent(const char *key, v8::Local &obj) { - v8::Local handle = NanNew(persistentHandle); - handle->Set(NanSymbol(key), obj); - } - - v8::Local GetFromPersistent(const char *key) { - NanEscapableScope(); - v8::Local handle = NanNew(persistentHandle); - return NanEscapeScope(handle->Get(NanSymbol(key)).As()); - } - - virtual void Execute() = 0; - - uv_work_t request; - - protected: - v8::Persistent persistentHandle; - NanCallback *callback; - const char *errmsg; - - virtual void HandleOKCallback() { - NanScope(); - - callback->Call(0, NULL); - } - - virtual void HandleErrorCallback() { - NanScope(); - - v8::Local argv[] = { - v8::Exception::Error(NanNew(errmsg)) - }; - callback->Call(1, argv); - } -}; - -NAN_INLINE void NanAsyncExecute (uv_work_t* req) { - NanAsyncWorker *worker = static_cast(req->data); - worker->Execute(); -} - -NAN_INLINE void NanAsyncExecuteComplete (uv_work_t* req) { - NanAsyncWorker* worker = static_cast(req->data); - worker->WorkComplete(); - delete worker; -} - -NAN_INLINE void NanAsyncQueueWorker (NanAsyncWorker* worker) { - uv_queue_work( - uv_default_loop() - , &worker->request - , NanAsyncExecute - , (uv_after_work_cb)NanAsyncExecuteComplete - ); -} - -//// Base 64 //// - -#define _nan_base64_encoded_size(size) ((size + 2 - ((size + 2) % 3)) / 3 * 4) - -// Doesn't check for padding at the end. Can be 1-2 bytes over. -NAN_INLINE size_t _nan_base64_decoded_size_fast(size_t size) { - size_t remainder = size % 4; - - size = (size / 4) * 3; - if (remainder) { - if (size == 0 && remainder == 1) { - // special case: 1-byte input cannot be decoded - size = 0; - } else { - // non-padded input, add 1 or 2 extra bytes - size += 1 + (remainder == 3); - } - } - - return size; -} - -template -NAN_INLINE size_t _nan_base64_decoded_size( - const T* src - , size_t size -) { - if (size == 0) - return 0; - - if (src[size - 1] == '=') - size--; - if (size > 0 && src[size - 1] == '=') - size--; - - return _nan_base64_decoded_size_fast(size); -} - -// supports regular and URL-safe base64 -static const int _nan_unbase64_table[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, 62, -1, 63 - , 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1 - , -1, 0, 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, -1, -1, -1, -1, 63 - , -1, 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, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - , -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -}; - -#define _nan_unbase64(x) _nan_unbase64_table[(uint8_t)(x)] - -template static size_t _nan_base64_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - char* dst = buf; - char* dstEnd = buf + len; - const T* srcEnd = src + srcLen; - - while (src < srcEnd && dst < dstEnd) { - ptrdiff_t remaining = srcEnd - src; - char a, b, c, d; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining == 0 || *src == '=') break; - a = _nan_unbase64(*src++); - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 1 || *src == '=') break; - b = _nan_unbase64(*src++); - - *dst++ = (a << 2) | ((b & 0x30) >> 4); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 2 || *src == '=') break; - c = _nan_unbase64(*src++); - - *dst++ = ((b & 0x0F) << 4) | ((c & 0x3C) >> 2); - if (dst == dstEnd) break; - - while (_nan_unbase64(*src) < 0 && src < srcEnd) src++, remaining--; - if (remaining <= 3 || *src == '=') break; - d = _nan_unbase64(*src++); - - *dst++ = ((c & 0x03) << 6) | (d & 0x3F); - } - - return dst - buf; -} - -//// HEX //// - -template unsigned _nan_hex2bin(T c) { - if (c >= '0' && c <= '9') return c - '0'; - if (c >= 'A' && c <= 'F') return 10 + (c - 'A'); - if (c >= 'a' && c <= 'f') return 10 + (c - 'a'); - return static_cast(-1); -} - -template static size_t _nan_hex_decode( - char* buf - , size_t len - , const T* src - , const size_t srcLen -) { - size_t i; - for (i = 0; i < len && i * 2 + 1 < srcLen; ++i) { - unsigned a = _nan_hex2bin(src[i * 2 + 0]); - unsigned b = _nan_hex2bin(src[i * 2 + 1]); - if (!~a || !~b) return i; - buf[i] = a * 16 + b; - } - - return i; -} - -static bool _NanGetExternalParts( - v8::Handle val - , const char** data - , size_t* len -) { - if (node::Buffer::HasInstance(val)) { - *data = node::Buffer::Data(val.As()); - *len = node::Buffer::Length(val.As()); - return true; - } - - assert(val->IsString()); - v8::Local str = NanNew(val.As()); - - if (str->IsExternalAscii()) { - const v8::String::ExternalAsciiStringResource* ext; - ext = str->GetExternalAsciiStringResource(); - *data = ext->data(); - *len = ext->length(); - return true; - - } else if (str->IsExternal()) { - const v8::String::ExternalStringResource* ext; - ext = str->GetExternalStringResource(); - *data = reinterpret_cast(ext->data()); - *len = ext->length(); - return true; - } - - return false; -} - -namespace Nan { - enum Encoding {ASCII, UTF8, BASE64, UCS2, BINARY, HEX, BUFFER}; -} - -NAN_INLINE void* NanRawString( - v8::Handle from - , enum Nan::Encoding encoding - , size_t *datalen - , void *buf - , size_t buflen - , int flags -) { - NanScope(); - - size_t sz_; - size_t term_len = !(flags & v8::String::NO_NULL_TERMINATION); - char *data = NULL; - size_t len; - bool is_extern = _NanGetExternalParts( - from - , const_cast(&data) - , &len); - - if (is_extern && !term_len) { - NanSetPointerSafe(datalen, len); - return data; - } - - v8::Local toStr = from->ToString(); - - char *to = static_cast(buf); - - switch (encoding) { - case Nan::ASCII: -#if NODE_MODULE_VERSION < 0x000C - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteAscii(to, 0, static_cast(sz_ + term_len), flags)); - return to; -#endif - case Nan::BINARY: - case Nan::BUFFER: - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } -#if NODE_MODULE_VERSION < 0x000C - { - uint16_t* twobytebuf = new uint16_t[sz_ + term_len]; - - size_t len = toStr->Write(twobytebuf, 0, - static_cast(sz_ + term_len), flags); - - for (size_t i = 0; i < sz_ + term_len && i < len + term_len; i++) { - unsigned char *b = reinterpret_cast(&twobytebuf[i]); - to[i] = *b; - } - - NanSetPointerSafe(datalen, len); - - delete[] twobytebuf; - return to; - } -#else - NanSetPointerSafe( - datalen, - toStr->WriteOneByte( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags)); - return to; -#endif - case Nan::UTF8: - sz_ = toStr->Utf8Length(); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , toStr->WriteUtf8(to, static_cast(sz_ + term_len) - , NULL, flags) - - term_len); - return to; - case Nan::BASE64: - { - v8::String::Value value(toStr); - sz_ = _nan_base64_decoded_size(*value, value.length()); - if (to == NULL) { - to = new char[sz_ + term_len]; - } else { - assert(buflen >= sz_ + term_len); - } - NanSetPointerSafe( - datalen - , _nan_base64_decode(to, sz_, *value, value.length())); - if (term_len) { - to[sz_] = '\0'; - } - return to; - } - case Nan::UCS2: - { - sz_ = toStr->Length(); - if (to == NULL) { - to = new char[(sz_ + term_len) * 2]; - } else { - assert(buflen >= (sz_ + term_len) * 2 && "too small buffer"); - } - - int bc = 2 * toStr->Write( - reinterpret_cast(to) - , 0 - , static_cast(sz_ + term_len) - , flags); - NanSetPointerSafe(datalen, bc); - return to; - } - case Nan::HEX: - { - v8::String::Value value(toStr); - sz_ = value.length(); - assert(!(sz_ & 1) && "bad hex data"); - if (to == NULL) { - to = new char[sz_ / 2 + term_len]; - } else { - assert(buflen >= sz_ / 2 + term_len && "too small buffer"); - } - NanSetPointerSafe( - datalen - , _nan_hex_decode(to, sz_ / 2, *value, value.length())); - } - if (term_len) { - to[sz_ / 2] = '\0'; - } - return to; - default: - assert(0 && "unknown encoding"); - } - return to; -} - -NAN_INLINE char* NanCString( - v8::Handle from - , size_t *datalen - , char *buf = NULL - , size_t buflen = 0 - , int flags = v8::String::NO_OPTIONS -) { - return static_cast( - NanRawString(from, Nan::UTF8, datalen, buf, buflen, flags) - ); -} - -#endif // NAN_H_ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/package.json deleted file mode 100644 index 4918de2f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/nan/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "nan", - "version": "1.0.0", - "description": "Native Abstractions for Node.js: C++ header for Node 0.8->0.12 compatibility", - "main": "include_dirs.js", - "repository": { - "type": "git", - "url": "git://github.com/rvagg/nan.git" - }, - "contributors": [ - { - "name": "Rod Vagg", - "email": "r@va.gg", - "url": "https://github.com/rvagg" - }, - { - "name": "Benjamin Byholm", - "email": "bbyholm@abo.fi", - "url": "https://github.com/kkoopa/" - }, - { - "name": "Trevor Norris", - "email": "trev.norris@gmail.com", - "url": "https://github.com/trevnorris" - }, - { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "https://github.com/TooTallNate" - }, - { - "name": "Brett Lawson", - "email": "brett19@gmail.com", - "url": "https://github.com/brett19" - }, - { - "name": "Ben Noordhuis", - "email": "info@bnoordhuis.nl", - "url": "https://github.com/bnoordhuis" - } - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/rvagg/nan/issues" - }, - "homepage": "https://github.com/rvagg/nan", - "_id": "nan@1.0.0", - "dist": { - "shasum": "ae24f8850818d662fcab5acf7f3b95bfaa2ccf38", - "tarball": "http://registry.npmjs.org/nan/-/nan-1.0.0.tgz" - }, - "_from": "nan@>=1.0.0 <1.1.0", - "_npmVersion": "1.4.3", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "directories": {}, - "_shasum": "ae24f8850818d662fcab5acf7f3b95bfaa2ccf38", - "_resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/.npmignore deleted file mode 100644 index 1b18fb39..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -npm-debug.log -node_modules -.*.swp -.lock-* -build/ - -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/Makefile deleted file mode 100644 index 7496b6fc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -ALL_TESTS = $(shell find test/ -name '*.test.js') - -run-tests: - @./node_modules/.bin/mocha \ - -t 2000 \ - $(TESTFLAGS) \ - $(TESTS) - -test: - @$(MAKE) NODE_PATH=lib TESTS="$(ALL_TESTS)" run-tests - -.PHONY: test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/README.md deleted file mode 100644 index 0dabc755..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# options.js # - -A very light-weight in-code option parsers for node.js. - -## Usage ## - -``` js -var Options = require("options"); - -// Create an Options object -function foo(options) { - var default_options = { - foo : "bar" - }; - - // Create an option object with default value - var opts = new Options(default_options); - - // Merge options - opts = opts.merge(options); - - // Reset to default value - opts.reset(); - - // Copy selected attributes out - var seled_att = opts.copy("foo"); - - // Read json options from a file. - opts.read("options.file"); // Sync - opts.read("options.file", function(err){ // Async - if(err){ // If error occurs - console.log("File error."); - }else{ - // No error - } - }); - - // Attributes defined or not - opts.isDefinedAndNonNull("foobar"); - opts.isDefined("foobar"); -} - -``` - - -## License ## - -(The MIT License) - -Copyright (c) 2012 Einar Otto Stangvik <einaros@gmail.com> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/lib/options.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/lib/options.js deleted file mode 100644 index 4fc45e90..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/lib/options.js +++ /dev/null @@ -1,86 +0,0 @@ -/*! - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -var fs = require('fs'); - -function Options(defaults) { - var internalValues = {}; - var values = this.value = {}; - Object.keys(defaults).forEach(function(key) { - internalValues[key] = defaults[key]; - Object.defineProperty(values, key, { - get: function() { return internalValues[key]; }, - configurable: false, - enumerable: true - }); - }); - this.reset = function() { - Object.keys(defaults).forEach(function(key) { - internalValues[key] = defaults[key]; - }); - return this; - }; - this.merge = function(options, required) { - options = options || {}; - if (Object.prototype.toString.call(required) === '[object Array]') { - var missing = []; - for (var i = 0, l = required.length; i < l; ++i) { - var key = required[i]; - if (!(key in options)) { - missing.push(key); - } - } - if (missing.length > 0) { - if (missing.length > 1) { - throw new Error('options ' + - missing.slice(0, missing.length - 1).join(', ') + ' and ' + - missing[missing.length - 1] + ' must be defined'); - } - else throw new Error('option ' + missing[0] + ' must be defined'); - } - } - Object.keys(options).forEach(function(key) { - if (key in internalValues) { - internalValues[key] = options[key]; - } - }); - return this; - }; - this.copy = function(keys) { - var obj = {}; - Object.keys(defaults).forEach(function(key) { - if (keys.indexOf(key) !== -1) { - obj[key] = values[key]; - } - }); - return obj; - }; - this.read = function(filename, cb) { - if (typeof cb == 'function') { - var self = this; - fs.readFile(filename, function(error, data) { - if (error) return cb(error); - var conf = JSON.parse(data); - self.merge(conf); - cb(); - }); - } - else { - var conf = JSON.parse(fs.readFileSync(filename)); - this.merge(conf); - } - return this; - }; - this.isDefined = function(key) { - return typeof values[key] != 'undefined'; - }; - this.isDefinedAndNonNull = function(key) { - return typeof values[key] != 'undefined' && values[key] !== null; - }; - Object.freeze(values); - Object.freeze(this); -} - -module.exports = Options; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json deleted file mode 100644 index 7a62d8e3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/options/package.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "author": { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com", - "url": "http://2x.io" - }, - "name": "options", - "description": "A very light-weight in-code option parsers for node.js.", - "version": "0.0.6", - "repository": { - "type": "git", - "url": "git://github.com/einaros/options.js.git" - }, - "main": "lib/options", - "scripts": { - "test": "make test" - }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "latest" - }, - "gitHead": "ff53d0a092c897cb95964232a96fe17da65c11af", - "bugs": { - "url": "https://github.com/einaros/options.js/issues" - }, - "homepage": "https://github.com/einaros/options.js", - "_id": "options@0.0.6", - "_shasum": "ec22d312806bb53e731773e7cdaefcf1c643128f", - "_from": "options@>=0.0.5", - "_npmVersion": "1.4.21", - "_npmUser": { - "name": "einaros", - "email": "einaros@gmail.com" - }, - "maintainers": [ - { - "name": "einaros", - "email": "einaros@gmail.com" - } - ], - "dist": { - "shasum": "ec22d312806bb53e731773e7cdaefcf1c643128f", - "tarball": "http://registry.npmjs.org/options/-/options-0.0.6.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/.npmignore deleted file mode 100644 index 6bfffbb7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -npm-debug.log -node_modules -.*.swp -.lock-* -build/ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/README.md deleted file mode 100644 index 55eb3c11..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# tinycolor # - -This is a no-fuzz, barebone, zero muppetry color module for node.js. \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/example.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/example.js deleted file mode 100644 index f7540468..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/example.js +++ /dev/null @@ -1,3 +0,0 @@ -require('./tinycolor'); -console.log('this should be red and have an underline!'.grey.underline); -console.log('this should have a blue background!'.bgBlue); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json deleted file mode 100644 index a2510a68..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/package.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "author": { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com", - "url": "http://2x.io" - }, - "name": "tinycolor", - "description": "a to-the-point color module for node", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/einaros/tinycolor.git" - }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": {}, - "devDependencies": {}, - "main": "tinycolor", - "_npmUser": { - "name": "einaros", - "email": "einaros@gmail.com" - }, - "_id": "tinycolor@0.0.1", - "_engineSupported": true, - "_npmVersion": "1.1.0-alpha-6", - "_nodeVersion": "v0.6.5", - "_defaultsLoaded": true, - "dist": { - "shasum": "320b5a52d83abb5978d81a3e887d4aefb15a6164", - "tarball": "http://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz" - }, - "maintainers": [ - { - "name": "einaros", - "email": "einaros@gmail.com" - } - ], - "directories": {}, - "_shasum": "320b5a52d83abb5978d81a3e887d4aefb15a6164", - "_resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz", - "_from": "tinycolor@>=0.0.0 <1.0.0", - "bugs": { - "url": "https://github.com/einaros/tinycolor/issues" - }, - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/einaros/tinycolor#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/tinycolor.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/tinycolor.js deleted file mode 100644 index 36e552c4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/node_modules/tinycolor/tinycolor.js +++ /dev/null @@ -1,31 +0,0 @@ -var styles = { - 'bold': ['\033[1m', '\033[22m'], - 'italic': ['\033[3m', '\033[23m'], - 'underline': ['\033[4m', '\033[24m'], - 'inverse': ['\033[7m', '\033[27m'], - 'black': ['\033[30m', '\033[39m'], - 'red': ['\033[31m', '\033[39m'], - 'green': ['\033[32m', '\033[39m'], - 'yellow': ['\033[33m', '\033[39m'], - 'blue': ['\033[34m', '\033[39m'], - 'magenta': ['\033[35m', '\033[39m'], - 'cyan': ['\033[36m', '\033[39m'], - 'white': ['\033[37m', '\033[39m'], - 'default': ['\033[39m', '\033[39m'], - 'grey': ['\033[90m', '\033[39m'], - 'bgBlack': ['\033[40m', '\033[49m'], - 'bgRed': ['\033[41m', '\033[49m'], - 'bgGreen': ['\033[42m', '\033[49m'], - 'bgYellow': ['\033[43m', '\033[49m'], - 'bgBlue': ['\033[44m', '\033[49m'], - 'bgMagenta': ['\033[45m', '\033[49m'], - 'bgCyan': ['\033[46m', '\033[49m'], - 'bgWhite': ['\033[47m', '\033[49m'], - 'bgDefault': ['\033[49m', '\033[49m'] -} -Object.keys(styles).forEach(function(style) { - Object.defineProperty(String.prototype, style, { - get: function() { return styles[style][0] + this + styles[style][1]; }, - enumerable: false - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json deleted file mode 100644 index dc3c9ada..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "author": { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com", - "url": "http://2x.io" - }, - "name": "ws", - "description": "simple to use, blazing fast and thoroughly tested websocket client, server and console for node.js, up-to-date against RFC-6455", - "version": "0.4.32", - "keywords": [ - "Hixie", - "HyBi", - "Push", - "RFC-6455", - "WebSocket", - "WebSockets", - "real-time" - ], - "repository": { - "type": "git", - "url": "git://github.com/einaros/ws.git" - }, - "bin": { - "wscat": "./bin/wscat" - }, - "scripts": { - "test": "make test", - "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)" - }, - "engines": { - "node": ">=0.4.0" - }, - "dependencies": { - "commander": "~2.1.0", - "nan": "~1.0.0", - "tinycolor": "0.x", - "options": ">=0.0.5" - }, - "devDependencies": { - "mocha": "1.12.0", - "should": "1.2.x", - "expect.js": "0.2.x", - "benchmark": "0.3.x", - "ansi": "latest" - }, - "browser": "./lib/browser.js", - "component": { - "scripts": { - "ws/index.js": "./lib/browser.js" - } - }, - "gypfile": true, - "bugs": { - "url": "https://github.com/einaros/ws/issues" - }, - "homepage": "https://github.com/einaros/ws", - "_id": "ws@0.4.32", - "_shasum": "787a6154414f3c99ed83c5772153b20feb0cec32", - "_from": "ws@>=0.4.0 <0.5.0", - "_npmVersion": "1.4.10", - "_npmUser": { - "name": "V1", - "email": "info@3rd-Eden.com" - }, - "maintainers": [ - { - "name": "einaros", - "email": "einaros@gmail.com" - }, - { - "name": "V1", - "email": "info@3rd-Eden.com" - } - ], - "dist": { - "shasum": "787a6154414f3c99ed83c5772153b20feb0cec32", - "tarball": "http://registry.npmjs.org/ws/-/ws-0.4.32.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/bufferutil.cc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/bufferutil.cc deleted file mode 100644 index 7f99bd6b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/bufferutil.cc +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "nan.h" - -using namespace v8; -using namespace node; - -class BufferUtil : public ObjectWrap -{ -public: - - static void Initialize(v8::Handle target) - { - NanScope(); - Local t = NanNew(New); - t->InstanceTemplate()->SetInternalFieldCount(1); - NODE_SET_METHOD(t, "unmask", BufferUtil::Unmask); - NODE_SET_METHOD(t, "mask", BufferUtil::Mask); - NODE_SET_METHOD(t, "merge", BufferUtil::Merge); - target->Set(NanSymbol("BufferUtil"), t->GetFunction()); - } - -protected: - - static NAN_METHOD(New) - { - NanScope(); - BufferUtil* bufferUtil = new BufferUtil(); - bufferUtil->Wrap(args.This()); - NanReturnValue(args.This()); - } - - static NAN_METHOD(Merge) - { - NanScope(); - Local bufferObj = args[0]->ToObject(); - char* buffer = Buffer::Data(bufferObj); - Local array = Local::Cast(args[1]); - unsigned int arrayLength = array->Length(); - size_t offset = 0; - unsigned int i; - for (i = 0; i < arrayLength; ++i) { - Local src = array->Get(i)->ToObject(); - size_t length = Buffer::Length(src); - memcpy(buffer + offset, Buffer::Data(src), length); - offset += length; - } - NanReturnValue(NanTrue()); - } - - static NAN_METHOD(Unmask) - { - NanScope(); - Local buffer_obj = args[0]->ToObject(); - size_t length = Buffer::Length(buffer_obj); - Local mask_obj = args[1]->ToObject(); - unsigned int *mask = (unsigned int*)Buffer::Data(mask_obj); - unsigned int* from = (unsigned int*)Buffer::Data(buffer_obj); - size_t len32 = length / 4; - unsigned int i; - for (i = 0; i < len32; ++i) *(from + i) ^= *mask; - from += i; - switch (length % 4) { - case 3: *((unsigned char*)from+2) = *((unsigned char*)from+2) ^ ((unsigned char*)mask)[2]; - case 2: *((unsigned char*)from+1) = *((unsigned char*)from+1) ^ ((unsigned char*)mask)[1]; - case 1: *((unsigned char*)from ) = *((unsigned char*)from ) ^ ((unsigned char*)mask)[0]; - case 0:; - } - NanReturnValue(NanTrue()); - } - - static NAN_METHOD(Mask) - { - NanScope(); - Local buffer_obj = args[0]->ToObject(); - Local mask_obj = args[1]->ToObject(); - unsigned int *mask = (unsigned int*)Buffer::Data(mask_obj); - Local output_obj = args[2]->ToObject(); - unsigned int dataOffset = args[3]->Int32Value(); - unsigned int length = args[4]->Int32Value(); - unsigned int* to = (unsigned int*)(Buffer::Data(output_obj) + dataOffset); - unsigned int* from = (unsigned int*)Buffer::Data(buffer_obj); - unsigned int len32 = length / 4; - unsigned int i; - for (i = 0; i < len32; ++i) *(to + i) = *(from + i) ^ *mask; - to += i; - from += i; - switch (length % 4) { - case 3: *((unsigned char*)to+2) = *((unsigned char*)from+2) ^ *((unsigned char*)mask+2); - case 2: *((unsigned char*)to+1) = *((unsigned char*)from+1) ^ *((unsigned char*)mask+1); - case 1: *((unsigned char*)to ) = *((unsigned char*)from ) ^ *((unsigned char*)mask); - case 0:; - } - NanReturnValue(NanTrue()); - } -}; - -extern "C" void init (Handle target) -{ - NanScope(); - BufferUtil::Initialize(target); -} - -NODE_MODULE(bufferutil, init) - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/validation.cc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/validation.cc deleted file mode 100644 index 0d9e242a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/src/validation.cc +++ /dev/null @@ -1,145 +0,0 @@ -/*! - * ws: a node.js websocket client - * Copyright(c) 2011 Einar Otto Stangvik - * MIT Licensed - */ - -#include -#include -#include -#include -#include -#include -#include -#include "nan.h" - -using namespace v8; -using namespace node; - -#define UNI_SUR_HIGH_START (uint32_t) 0xD800 -#define UNI_SUR_LOW_END (uint32_t) 0xDFFF -#define UNI_REPLACEMENT_CHAR (uint32_t) 0x0000FFFD -#define UNI_MAX_LEGAL_UTF32 (uint32_t) 0x0010FFFF - -static const uint8_t trailingBytesForUTF8[256] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 -}; - -static const uint32_t offsetsFromUTF8[6] = { - 0x00000000, 0x00003080, 0x000E2080, - 0x03C82080, 0xFA082080, 0x82082080 -}; - -static int isLegalUTF8(const uint8_t *source, const int length) -{ - uint8_t a; - const uint8_t *srcptr = source+length; - switch (length) { - default: return 0; - /* Everything else falls through when "true"... */ - /* RFC3629 makes 5 & 6 bytes UTF-8 illegal - case 6: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; - case 5: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; */ - case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; - case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; - case 2: if ((a = (*--srcptr)) > 0xBF) return 0; - switch (*source) { - /* no fall-through in this inner switch */ - case 0xE0: if (a < 0xA0) return 0; break; - case 0xED: if (a > 0x9F) return 0; break; - case 0xF0: if (a < 0x90) return 0; break; - case 0xF4: if (a > 0x8F) return 0; break; - default: if (a < 0x80) return 0; - } - - case 1: if (*source >= 0x80 && *source < 0xC2) return 0; - } - if (*source > 0xF4) return 0; - return 1; -} - -int is_valid_utf8 (size_t len, char *value) -{ - /* is the string valid UTF-8? */ - for (unsigned int i = 0; i < len; i++) { - uint32_t ch = 0; - uint8_t extrabytes = trailingBytesForUTF8[(uint8_t) value[i]]; - - if (extrabytes + i >= len) - return 0; - - if (isLegalUTF8 ((uint8_t *) (value + i), extrabytes + 1) == 0) return 0; - - switch (extrabytes) { - case 5 : ch += (uint8_t) value[i++]; ch <<= 6; - case 4 : ch += (uint8_t) value[i++]; ch <<= 6; - case 3 : ch += (uint8_t) value[i++]; ch <<= 6; - case 2 : ch += (uint8_t) value[i++]; ch <<= 6; - case 1 : ch += (uint8_t) value[i++]; ch <<= 6; - case 0 : ch += (uint8_t) value[i]; - } - - ch -= offsetsFromUTF8[extrabytes]; - - if (ch <= UNI_MAX_LEGAL_UTF32) { - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) - return 0; - } else { - return 0; - } - } - - return 1; -} - -class Validation : public ObjectWrap -{ -public: - - static void Initialize(v8::Handle target) - { - NanScope(); - Local t = NanNew(New); - t->InstanceTemplate()->SetInternalFieldCount(1); - NODE_SET_METHOD(t, "isValidUTF8", Validation::IsValidUTF8); - target->Set(NanSymbol("Validation"), t->GetFunction()); - } - -protected: - - static NAN_METHOD(New) - { - NanScope(); - Validation* validation = new Validation(); - validation->Wrap(args.This()); - NanReturnValue(args.This()); - } - - static NAN_METHOD(IsValidUTF8) - { - NanScope(); - if (!Buffer::HasInstance(args[0])) { - return NanThrowTypeError("First argument needs to be a buffer"); - } - Local buffer_obj = args[0]->ToObject(); - char *buffer_data = Buffer::Data(buffer_obj); - size_t buffer_length = Buffer::Length(buffer_obj); - NanReturnValue(is_valid_utf8(buffer_length, buffer_data) == 1 ? NanTrue() : NanFalse()); - } -}; - -extern "C" void init (Handle target) -{ - NanScope(); - Validation::Initialize(target); -} - -NODE_MODULE(validation, init) - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/README.md deleted file mode 100644 index 22aab8bd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-XMLHttpRequest # - -node-XMLHttpRequest is a wrapper for the built-in http client to emulate the -browser XMLHttpRequest object. - -This can be used with JS designed for browsers to improve reuse of code and -allow the use of existing libraries. - -Note: This library currently conforms to [XMLHttpRequest 1](http://www.w3.org/TR/XMLHttpRequest/). Version 2.0 will target [XMLHttpRequest Level 2](http://www.w3.org/TR/XMLHttpRequest2/). - -## Usage ## - -Here's how to include the module in your project and use as the browser-based -XHR object. - - var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; - var xhr = new XMLHttpRequest(); - -Note: use the lowercase string "xmlhttprequest" in your require(). On -case-sensitive systems (eg Linux) using uppercase letters won't work. - -## Versions ## - -Prior to 1.4.0 version numbers were arbitrary. From 1.4.0 on they conform to -the standard major.minor.bugfix. 1.x shouldn't necessarily be considered -stable just because it's above 0.x. - -Since the XMLHttpRequest API is stable this library's API is stable as -well. Major version numbers indicate significant core code changes. -Minor versions indicate minor core code changes or better conformity to -the W3C spec. - -## Supports ## - -* Async and synchronous requests -* GET, POST, PUT, and DELETE requests -* All spec methods (open, send, abort, getRequestHeader, - getAllRequestHeaders, event methods) -* Requests to all domains - -## Known Issues / Missing Features ## - -For a list of open issues or to report your own visit the [github issues -page](https://github.com/driverdan/node-XMLHttpRequest/issues). - -* Local file access may have unexpected results for non-UTF8 files -* Synchronous requests don't set headers properly -* Synchronous requests freeze node while waiting for response (But that's what you want, right? Stick with async!). -* Some events are missing, such as abort -* getRequestHeader is case-sensitive -* Cookies aren't persisted between requests -* Missing XML support -* Missing basic auth diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/autotest.watchr b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/autotest.watchr deleted file mode 100644 index 5324db6c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/autotest.watchr +++ /dev/null @@ -1,8 +0,0 @@ -def run_all_tests - puts `clear` - puts `node tests/test-constants.js` - puts `node tests/test-headers.js` - puts `node tests/test-request.js` -end -watch('.*.js') { run_all_tests } -run_all_tests diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/example/demo.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/example/demo.js deleted file mode 100644 index 4f333de9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/example/demo.js +++ /dev/null @@ -1,16 +0,0 @@ -var sys = require('util'); -var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; - -var xhr = new XMLHttpRequest(); - -xhr.onreadystatechange = function() { - sys.puts("State: " + this.readyState); - - if (this.readyState == 4) { - sys.puts("Complete.\nBody length: " + this.responseText.length); - sys.puts("Body:\n" + this.responseText); - } -}; - -xhr.open("GET", "http://driverdan.com"); -xhr.send(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/lib/XMLHttpRequest.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/lib/XMLHttpRequest.js deleted file mode 100644 index 214a2e3b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/lib/XMLHttpRequest.js +++ /dev/null @@ -1,548 +0,0 @@ -/** - * Wrapper for built-in http.js to emulate the browser XMLHttpRequest object. - * - * This can be used with JS designed for browsers to improve reuse of code and - * allow the use of existing libraries. - * - * Usage: include("XMLHttpRequest.js") and use XMLHttpRequest per W3C specs. - * - * @author Dan DeFelippi - * @contributor David Ellis - * @license MIT - */ - -var Url = require("url") - , spawn = require("child_process").spawn - , fs = require('fs'); - -exports.XMLHttpRequest = function() { - /** - * Private variables - */ - var self = this; - var http = require('http'); - var https = require('https'); - - // Holds http.js objects - var client; - var request; - var response; - - // Request settings - var settings = {}; - - // Set some default headers - var defaultHeaders = { - "User-Agent": "node-XMLHttpRequest", - "Accept": "*/*", - }; - - var headers = defaultHeaders; - - // These headers are not user setable. - // The following are allowed but banned in the spec: - // * user-agent - var forbiddenRequestHeaders = [ - "accept-charset", - "accept-encoding", - "access-control-request-headers", - "access-control-request-method", - "connection", - "content-length", - "content-transfer-encoding", - "cookie", - "cookie2", - "date", - "expect", - "host", - "keep-alive", - "origin", - "referer", - "te", - "trailer", - "transfer-encoding", - "upgrade", - "via" - ]; - - // These request methods are not allowed - var forbiddenRequestMethods = [ - "TRACE", - "TRACK", - "CONNECT" - ]; - - // Send flag - var sendFlag = false; - // Error flag, used when errors occur or abort is called - var errorFlag = false; - - // Event listeners - var listeners = {}; - - /** - * Constants - */ - - this.UNSENT = 0; - this.OPENED = 1; - this.HEADERS_RECEIVED = 2; - this.LOADING = 3; - this.DONE = 4; - - /** - * Public vars - */ - - // Current state - this.readyState = this.UNSENT; - - // default ready state change handler in case one is not set or is set late - this.onreadystatechange = null; - - // Result & response - this.responseText = ""; - this.responseXML = ""; - this.status = null; - this.statusText = null; - - /** - * Private methods - */ - - /** - * Check if the specified header is allowed. - * - * @param string header Header to validate - * @return boolean False if not allowed, otherwise true - */ - var isAllowedHttpHeader = function(header) { - return (header && forbiddenRequestHeaders.indexOf(header.toLowerCase()) === -1); - }; - - /** - * Check if the specified method is allowed. - * - * @param string method Request method to validate - * @return boolean False if not allowed, otherwise true - */ - var isAllowedHttpMethod = function(method) { - return (method && forbiddenRequestMethods.indexOf(method) === -1); - }; - - /** - * Public methods - */ - - /** - * Open the connection. Currently supports local server requests. - * - * @param string method Connection method (eg GET, POST) - * @param string url URL for the connection. - * @param boolean async Asynchronous connection. Default is true. - * @param string user Username for basic authentication (optional) - * @param string password Password for basic authentication (optional) - */ - this.open = function(method, url, async, user, password) { - this.abort(); - errorFlag = false; - - // Check for valid request method - if (!isAllowedHttpMethod(method)) { - throw "SecurityError: Request method not allowed"; - return; - } - - settings = { - "method": method, - "url": url.toString(), - "async": (typeof async !== "boolean" ? true : async), - "user": user || null, - "password": password || null - }; - - setState(this.OPENED); - }; - - /** - * Sets a header for the request. - * - * @param string header Header name - * @param string value Header value - */ - this.setRequestHeader = function(header, value) { - if (this.readyState != this.OPENED) { - throw "INVALID_STATE_ERR: setRequestHeader can only be called when state is OPEN"; - } - if (!isAllowedHttpHeader(header)) { - console.warn('Refused to set unsafe header "' + header + '"'); - return; - } - if (sendFlag) { - throw "INVALID_STATE_ERR: send flag is true"; - } - headers[header] = value; - }; - - /** - * Gets a header from the server response. - * - * @param string header Name of header to get. - * @return string Text of the header or null if it doesn't exist. - */ - this.getResponseHeader = function(header) { - if (typeof header === "string" - && this.readyState > this.OPENED - && response.headers[header.toLowerCase()] - && !errorFlag - ) { - return response.headers[header.toLowerCase()]; - } - - return null; - }; - - /** - * Gets all the response headers. - * - * @return string A string with all response headers separated by CR+LF - */ - this.getAllResponseHeaders = function() { - if (this.readyState < this.HEADERS_RECEIVED || errorFlag) { - return ""; - } - var result = ""; - - for (var i in response.headers) { - // Cookie headers are excluded - if (i !== "set-cookie" && i !== "set-cookie2") { - result += i + ": " + response.headers[i] + "\r\n"; - } - } - return result.substr(0, result.length - 2); - }; - - /** - * Gets a request header - * - * @param string name Name of header to get - * @return string Returns the request header or empty string if not set - */ - this.getRequestHeader = function(name) { - // @TODO Make this case insensitive - if (typeof name === "string" && headers[name]) { - return headers[name]; - } - - return ""; - } - - /** - * Sends the request to the server. - * - * @param string data Optional data to send as request body. - */ - this.send = function(data) { - if (this.readyState != this.OPENED) { - throw "INVALID_STATE_ERR: connection must be opened before send() is called"; - } - - if (sendFlag) { - throw "INVALID_STATE_ERR: send has already been called"; - } - - var ssl = false, local = false; - var url = Url.parse(settings.url); - - // Determine the server - switch (url.protocol) { - case 'https:': - ssl = true; - // SSL & non-SSL both need host, no break here. - case 'http:': - var host = url.hostname; - break; - - case 'file:': - local = true; - break; - - case undefined: - case '': - var host = "localhost"; - break; - - default: - throw "Protocol not supported."; - } - - // Load files off the local filesystem (file://) - if (local) { - if (settings.method !== "GET") { - throw "XMLHttpRequest: Only GET method is supported"; - } - - if (settings.async) { - fs.readFile(url.pathname, 'utf8', function(error, data) { - if (error) { - self.handleError(error); - } else { - self.status = 200; - self.responseText = data; - setState(self.DONE); - } - }); - } else { - try { - this.responseText = fs.readFileSync(url.pathname, 'utf8'); - this.status = 200; - setState(self.DONE); - } catch(e) { - this.handleError(e); - } - } - - return; - } - - // Default to port 80. If accessing localhost on another port be sure - // to use http://localhost:port/path - var port = url.port || (ssl ? 443 : 80); - // Add query string if one is used - var uri = url.pathname + (url.search ? url.search : ''); - - // Set the Host header or the server may reject the request - headers["Host"] = host; - if (!((ssl && port === 443) || port === 80)) { - headers["Host"] += ':' + url.port; - } - - // Set Basic Auth if necessary - if (settings.user) { - if (typeof settings.password == "undefined") { - settings.password = ""; - } - var authBuf = new Buffer(settings.user + ":" + settings.password); - headers["Authorization"] = "Basic " + authBuf.toString("base64"); - } - - // Set content length header - if (settings.method === "GET" || settings.method === "HEAD") { - data = null; - } else if (data) { - headers["Content-Length"] = Buffer.byteLength(data); - - if (!headers["Content-Type"]) { - headers["Content-Type"] = "text/plain;charset=UTF-8"; - } - } else if (settings.method === "POST") { - // For a post with no data set Content-Length: 0. - // This is required by buggy servers that don't meet the specs. - headers["Content-Length"] = 0; - } - - var options = { - host: host, - port: port, - path: uri, - method: settings.method, - headers: headers - }; - - // Reset error flag - errorFlag = false; - - // Handle async requests - if (settings.async) { - // Use the proper protocol - var doRequest = ssl ? https.request : http.request; - - // Request is being sent, set send flag - sendFlag = true; - - // As per spec, this is called here for historical reasons. - self.dispatchEvent("readystatechange"); - - // Create the request - request = doRequest(options, function(resp) { - response = resp; - response.setEncoding("utf8"); - - setState(self.HEADERS_RECEIVED); - self.status = response.statusCode; - - response.on('data', function(chunk) { - // Make sure there's some data - if (chunk) { - self.responseText += chunk; - } - // Don't emit state changes if the connection has been aborted. - if (sendFlag) { - setState(self.LOADING); - } - }); - - response.on('end', function() { - if (sendFlag) { - // Discard the 'end' event if the connection has been aborted - setState(self.DONE); - sendFlag = false; - } - }); - - response.on('error', function(error) { - self.handleError(error); - }); - }).on('error', function(error) { - self.handleError(error); - }); - - // Node 0.4 and later won't accept empty data. Make sure it's needed. - if (data) { - request.write(data); - } - - request.end(); - - self.dispatchEvent("loadstart"); - } else { // Synchronous - // Create a temporary file for communication with the other Node process - var syncFile = ".node-xmlhttprequest-sync-" + process.pid; - fs.writeFileSync(syncFile, "", "utf8"); - // The async request the other Node process executes - var execString = "var http = require('http'), https = require('https'), fs = require('fs');" - + "var doRequest = http" + (ssl ? "s" : "") + ".request;" - + "var options = " + JSON.stringify(options) + ";" - + "var responseText = '';" - + "var req = doRequest(options, function(response) {" - + "response.setEncoding('utf8');" - + "response.on('data', function(chunk) {" - + "responseText += chunk;" - + "});" - + "response.on('end', function() {" - + "fs.writeFileSync('" + syncFile + "', 'NODE-XMLHTTPREQUEST-STATUS:' + response.statusCode + ',' + responseText, 'utf8');" - + "});" - + "response.on('error', function(error) {" - + "fs.writeFileSync('" + syncFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');" - + "});" - + "}).on('error', function(error) {" - + "fs.writeFileSync('" + syncFile + "', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');" - + "});" - + (data ? "req.write('" + data.replace(/'/g, "\\'") + "');":"") - + "req.end();"; - // Start the other Node Process, executing this string - syncProc = spawn(process.argv[0], ["-e", execString]); - while((self.responseText = fs.readFileSync(syncFile, 'utf8')) == "") { - // Wait while the file is empty - } - // Kill the child process once the file has data - syncProc.stdin.end(); - // Remove the temporary file - fs.unlinkSync(syncFile); - if (self.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)) { - // If the file returned an error, handle it - var errorObj = self.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/, ""); - self.handleError(errorObj); - } else { - // If the file returned okay, parse its data and move to the DONE state - self.status = self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/, "$1"); - self.responseText = self.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/, "$1"); - setState(self.DONE); - } - } - }; - - /** - * Called when an error is encountered to deal with it. - */ - this.handleError = function(error) { - this.status = 503; - this.statusText = error; - this.responseText = error.stack; - errorFlag = true; - setState(this.DONE); - }; - - /** - * Aborts a request. - */ - this.abort = function() { - if (request) { - request.abort(); - request = null; - } - - headers = defaultHeaders; - this.responseText = ""; - this.responseXML = ""; - - errorFlag = true; - - if (this.readyState !== this.UNSENT - && (this.readyState !== this.OPENED || sendFlag) - && this.readyState !== this.DONE) { - sendFlag = false; - setState(this.DONE); - } - this.readyState = this.UNSENT; - }; - - /** - * Adds an event listener. Preferred method of binding to events. - */ - this.addEventListener = function(event, callback) { - if (!(event in listeners)) { - listeners[event] = []; - } - // Currently allows duplicate callbacks. Should it? - listeners[event].push(callback); - }; - - /** - * Remove an event callback that has already been bound. - * Only works on the matching funciton, cannot be a copy. - */ - this.removeEventListener = function(event, callback) { - if (event in listeners) { - // Filter will return a new array with the callback removed - listeners[event] = listeners[event].filter(function(ev) { - return ev !== callback; - }); - } - }; - - /** - * Dispatch any events, including both "on" methods and events attached using addEventListener. - */ - this.dispatchEvent = function(event) { - if (typeof self["on" + event] === "function") { - self["on" + event](); - } - if (event in listeners) { - for (var i = 0, len = listeners[event].length; i < len; i++) { - listeners[event][i].call(self); - } - } - }; - - /** - * Changes readyState and calls onreadystatechange. - * - * @param int state New state - */ - var setState = function(state) { - if (self.readyState !== state) { - self.readyState = state; - - if (settings.async || self.readyState < self.OPENED || self.readyState === self.DONE) { - self.dispatchEvent("readystatechange"); - } - - if (self.readyState === self.DONE && !errorFlag) { - self.dispatchEvent("load"); - // @TODO figure out InspectorInstrumentation::didLoadXHR(cookie) - self.dispatchEvent("loadend"); - } - } - }; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json deleted file mode 100644 index f87766e9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "xmlhttprequest", - "description": "XMLHttpRequest for Node", - "version": "1.4.2", - "author": { - "name": "Dan DeFelippi", - "url": "http://driverdan.com" - }, - "keywords": [ - "xhr", - "ajax" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://creativecommons.org/licenses/MIT/" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/driverdan/node-XMLHttpRequest.git" - }, - "bugs": { - "name": "http://github.com/driverdan/node-XMLHttpRequest/issues" - }, - "engines": { - "node": ">=0.4.0" - }, - "directories": { - "lib": "./lib", - "example": "./example" - }, - "main": "./lib/XMLHttpRequest.js", - "_npmUser": { - "name": "driverdan", - "email": "dan@driverdan.com" - }, - "_id": "xmlhttprequest@1.4.2", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "_engineSupported": true, - "_npmVersion": "1.1.24", - "_nodeVersion": "v0.6.19", - "_defaultsLoaded": true, - "dist": { - "shasum": "01453a1d9bed1e8f172f6495bbf4c8c426321500", - "tarball": "http://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz" - }, - "maintainers": [ - { - "name": "driverdan", - "email": "dan@driverdan.com" - } - ], - "_shasum": "01453a1d9bed1e8f172f6495bbf4c8c426321500", - "_resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz", - "_from": "xmlhttprequest@1.4.2" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-constants.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-constants.js deleted file mode 100644 index 372e46cc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-constants.js +++ /dev/null @@ -1,13 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , xhr = new XMLHttpRequest(); - -// Test constant values -assert.equal(0, xhr.UNSENT); -assert.equal(1, xhr.OPENED); -assert.equal(2, xhr.HEADERS_RECEIVED); -assert.equal(3, xhr.LOADING); -assert.equal(4, xhr.DONE); - -sys.puts("done"); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-events.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-events.js deleted file mode 100644 index c72f001d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-events.js +++ /dev/null @@ -1,50 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , http = require("http") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , xhr; - -// Test server -var server = http.createServer(function (req, res) { - var body = (req.method != "HEAD" ? "Hello World" : ""); - - res.writeHead(200, { - "Content-Type": "text/plain", - "Content-Length": Buffer.byteLength(body) - }); - // HEAD has no body - if (req.method != "HEAD") { - res.write(body); - } - res.end(); - assert.equal(onreadystatechange, true); - assert.equal(readystatechange, true); - assert.equal(removed, true); - sys.puts("done"); - this.close(); -}).listen(8000); - -xhr = new XMLHttpRequest(); - -// Track event calls -var onreadystatechange = false; -var readystatechange = false; -var removed = true; -var removedEvent = function() { - removed = false; -}; - -xhr.onreadystatechange = function() { - onreadystatechange = true; -}; - -xhr.addEventListener("readystatechange", function() { - readystatechange = true; -}); - -// This isn't perfect, won't guarantee it was added in the first place -xhr.addEventListener("readystatechange", removedEvent); -xhr.removeEventListener("readystatechange", removedEvent); - -xhr.open("GET", "http://localhost:8000"); -xhr.send(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-exceptions.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-exceptions.js deleted file mode 100644 index f1edd71f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-exceptions.js +++ /dev/null @@ -1,62 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , xhr = new XMLHttpRequest(); - -// Test request methods that aren't allowed -try { - xhr.open("TRACK", "http://localhost:8000/"); - console.log("ERROR: TRACK should have thrown exception"); -} catch(e) {} -try { - xhr.open("TRACE", "http://localhost:8000/"); - console.log("ERROR: TRACE should have thrown exception"); -} catch(e) {} -try { - xhr.open("CONNECT", "http://localhost:8000/"); - console.log("ERROR: CONNECT should have thrown exception"); -} catch(e) {} -// Test valid request method -try { - xhr.open("GET", "http://localhost:8000/"); -} catch(e) { - console.log("ERROR: Invalid exception for GET", e); -} - -// Test forbidden headers -var forbiddenRequestHeaders = [ - "accept-charset", - "accept-encoding", - "access-control-request-headers", - "access-control-request-method", - "connection", - "content-length", - "content-transfer-encoding", - "cookie", - "cookie2", - "date", - "expect", - "host", - "keep-alive", - "origin", - "referer", - "te", - "trailer", - "transfer-encoding", - "upgrade", - "user-agent", - "via" -]; - -for (var i in forbiddenRequestHeaders) { - try { - xhr.setRequestHeader(forbiddenRequestHeaders[i], "Test"); - console.log("ERROR: " + forbiddenRequestHeaders[i] + " should have thrown exception"); - } catch(e) { - } -} - -// Try valid header -xhr.setRequestHeader("X-Foobar", "Test"); - -console.log("Done"); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-headers.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-headers.js deleted file mode 100644 index 2ecb045d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-headers.js +++ /dev/null @@ -1,61 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , xhr = new XMLHttpRequest() - , http = require("http"); - -// Test server -var server = http.createServer(function (req, res) { - // Test setRequestHeader - assert.equal("Foobar", req.headers["x-test"]); - - var body = "Hello World"; - res.writeHead(200, { - "Content-Type": "text/plain", - "Content-Length": Buffer.byteLength(body), - // Set cookie headers to see if they're correctly suppressed - // Actual values don't matter - "Set-Cookie": "foo=bar", - "Set-Cookie2": "bar=baz", - "Connection": "close" - }); - res.write("Hello World"); - res.end(); - - this.close(); -}).listen(8000); - -xhr.onreadystatechange = function() { - if (this.readyState == 4) { - // Test getAllResponseHeaders() - var headers = "content-type: text/plain\r\ncontent-length: 11\r\nconnection: close"; - assert.equal(headers, this.getAllResponseHeaders()); - - // Test case insensitivity - assert.equal('text/plain', this.getResponseHeader('Content-Type')); - assert.equal('text/plain', this.getResponseHeader('Content-type')); - assert.equal('text/plain', this.getResponseHeader('content-Type')); - assert.equal('text/plain', this.getResponseHeader('content-type')); - - // Test aborted getAllResponseHeaders - this.abort(); - assert.equal("", this.getAllResponseHeaders()); - assert.equal(null, this.getResponseHeader("Connection")); - - sys.puts("done"); - } -}; - -assert.equal(null, xhr.getResponseHeader("Content-Type")); -try { - xhr.open("GET", "http://localhost:8000/"); - // Valid header - xhr.setRequestHeader("X-Test", "Foobar"); - // Invalid header - xhr.setRequestHeader("Content-Length", 0); - // Test getRequestHeader - assert.equal("Foobar", xhr.getRequestHeader("X-Test")); - xhr.send(); -} catch(e) { - console.log("ERROR: Exception raised", e); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-methods.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-methods.js deleted file mode 100644 index fa1b1bed..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-methods.js +++ /dev/null @@ -1,62 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , http = require("http") - , xhr; - -// Test server -var server = http.createServer(function (req, res) { - // Check request method and URL - assert.equal(methods[curMethod], req.method); - assert.equal("/" + methods[curMethod], req.url); - - var body = (req.method != "HEAD" ? "Hello World" : ""); - - res.writeHead(200, { - "Content-Type": "text/plain", - "Content-Length": Buffer.byteLength(body) - }); - // HEAD has no body - if (req.method != "HEAD") { - res.write(body); - } - res.end(); - - if (curMethod == methods.length - 1) { - this.close(); - sys.puts("done"); - } -}).listen(8000); - -// Test standard methods -var methods = ["GET", "POST", "HEAD", "PUT", "DELETE"]; -var curMethod = 0; - -function start(method) { - // Reset each time - xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (this.readyState == 4) { - if (method == "HEAD") { - assert.equal("", this.responseText); - } else { - assert.equal("Hello World", this.responseText); - } - - curMethod++; - - if (curMethod < methods.length) { - sys.puts("Testing " + methods[curMethod]); - start(methods[curMethod]); - } - } - }; - - var url = "http://localhost:8000/" + method; - xhr.open(method, url); - xhr.send(); -} - -sys.puts("Testing " + methods[curMethod]); -start(methods[curMethod]); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-protocols.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-protocols.js deleted file mode 100644 index cd4e1745..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/test-request-protocols.js +++ /dev/null @@ -1,34 +0,0 @@ -var sys = require("util") - , assert = require("assert") - , XMLHttpRequest = require("../lib/XMLHttpRequest").XMLHttpRequest - , xhr; - -xhr = new XMLHttpRequest(); - -xhr.onreadystatechange = function() { - if (this.readyState == 4) { - assert.equal("Hello World", this.responseText); - this.close(); - runSync(); - } -}; - -// Async -var url = "file://" + __dirname + "/testdata.txt"; -xhr.open("GET", url); -xhr.send(); - -// Sync -var runSync = function() { - xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (this.readyState == 4) { - assert.equal("Hello World", this.responseText); - this.close(); - sys.puts("done"); - } - }; - xhr.open("GET", url, false); - xhr.send(); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/testdata.txt b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/testdata.txt deleted file mode 100644 index 557db03d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/node_modules/xmlhttprequest/tests/testdata.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/package.json deleted file mode 100644 index 233a37ae..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "socket.io-client", - "description": "Socket.IO client for the browser and node.js", - "version": "0.9.16", - "main": "./lib/io.js", - "browserify": "./dist/socket.io.js", - "homepage": "http://socket.io", - "keywords": [ - "websocket", - "socket", - "realtime", - "socket.io", - "comet", - "ajax" - ], - "author": { - "name": "Guillermo Rauch", - "email": "guillermo@learnboost.com" - }, - "contributors": [ - { - "name": "Guillermo Rauch", - "email": "rauchg@gmail.com" - }, - { - "name": "Arnout Kazemier", - "email": "info@3rd-eden.com" - }, - { - "name": "Vladimir Dronnikov", - "email": "dronnikov@gmail.com" - }, - { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git+https://github.com/LearnBoost/socket.io-client.git" - }, - "dependencies": { - "uglify-js": "1.2.5", - "ws": "0.4.x", - "xmlhttprequest": "1.4.2", - "active-x-obfuscator": "0.0.1" - }, - "devDependencies": { - "expresso": "*", - "express": "2.5.x", - "jade": "*", - "stylus": "*", - "socket.io": "0.9.16", - "socket.io-client": "0.9.16", - "should": "*" - }, - "engines": { - "node": ">= 0.4.0" - }, - "_id": "socket.io-client@0.9.16", - "dist": { - "shasum": "4da7515c5e773041d1b423970415bcc430f35fc6", - "tarball": "http://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz" - }, - "_from": "socket.io-client@0.9.16", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - "maintainers": [ - { - "name": "rauchg", - "email": "rauchg@gmail.com" - } - ], - "directories": {}, - "_shasum": "4da7515c5e773041d1b423970415bcc430f35fc6", - "_resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", - "bugs": { - "url": "https://github.com/LearnBoost/socket.io-client/issues" - }, - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/events.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/events.test.js deleted file mode 100644 index 365c4223..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/events.test.js +++ /dev/null @@ -1,120 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -(function (module, io, should) { - - module.exports = { - - 'add listeners': function () { - var event = new io.EventEmitter - , calls = 0; - - event.on('test', function (a, b) { - ++calls; - a.should().eql('a'); - b.should().eql('b'); - }); - - event.emit('test', 'a', 'b'); - calls.should().eql(1); - event.on.should().eql(event.addListener); - }, - - 'remove listener': function () { - var event = new io.EventEmitter; - function empty () { } - - event.on('test', empty); - event.on('test:more', empty); - event.removeAllListeners('test'); - - event.listeners('test').should().eql([]); - event.listeners('test:more').should().eql([empty]); - }, - - 'remove all listeners with no arguments': function () { - var event = new io.EventEmitter; - function empty () { } - - event.on('test', empty); - event.on('test:more', empty); - event.removeAllListeners(); - - event.listeners('test').should().eql([]); - event.listeners('test:more').should().eql([]); - }, - - 'remove listeners functions': function () { - var event = new io.EventEmitter - , calls = 0; - - function one () { ++calls } - function two () { ++calls } - function three () { ++calls } - - event.on('one', one); - event.removeListener('one', one); - event.listeners('one').should().eql([]); - - event.on('two', two); - event.removeListener('two', one); - event.listeners('two').should().eql([two]); - - event.on('three', three); - event.on('three', two); - event.removeListener('three', three); - event.listeners('three').should().eql([two]); - }, - - 'number of arguments': function () { - var event = new io.EventEmitter - , number = []; - - event.on('test', function () { - number.push(arguments.length); - }); - - event.emit('test'); - event.emit('test', null); - event.emit('test', null, null); - event.emit('test', null, null, null); - event.emit('test', null, null, null, null); - event.emit('test', null, null, null, null, null); - - [0, 1, 2, 3, 4, 5].should().eql(number); - }, - - 'once': function () { - var event = new io.EventEmitter - , calls = 0; - - event.once('test', function (a, b) { - ++calls; - }); - - event.emit('test', 'a', 'b'); - event.emit('test', 'a', 'b'); - event.emit('test', 'a', 'b'); - - function removed () { - should().fail('not removed'); - }; - - event.once('test:removed', removed); - event.removeListener('test:removed', removed); - event.emit('test:removed'); - - calls.should().eql(1); - } - - }; - -})( - 'undefined' == typeof module ? module = {} : module - , 'undefined' == typeof io ? require('socket.io-client') : io - , 'undefined' == typeof should || !should.fail ? require('should') : should -); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/io.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/io.test.js deleted file mode 100644 index d9f0b09e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/io.test.js +++ /dev/null @@ -1,31 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -(function (module, io, should) { - - module.exports = { - - 'client version number': function () { - io.version.should().match(/([0-9]+)\.([0-9]+)\.([0-9]+)/); - }, - - 'socket.io protocol version': function () { - io.protocol.should().be.a('number'); - io.protocol.toString().should().match(/^\d+$/); - }, - - 'socket.io available transports': function () { - (io.transports.length > 0).should().be_true; - } - - }; - -})( - 'undefined' == typeof module ? module = {} : module - , 'undefined' == typeof io ? require('socket.io-client') : io - , 'undefined' == typeof should ? require('should') : should -); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.common.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.common.js deleted file mode 100644 index fa8d46ed..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.common.js +++ /dev/null @@ -1,102 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -var vm = require('vm') - , should = require('should'); - -/** - * Generates evn variables for the vm so we can `emulate` a browser. - * @returns {Object} evn variables - */ - -exports.env = function env () { - var details = { - location: { - port: 8080 - , host: 'www.example.org' - , hostname: 'www.example.org' - , href: 'http://www.example.org/example/' - , pathname: '/example/' - , protocol: 'http:' - , search: '' - , hash: '' - } - , console: { - log: function(){}, - info: function(){}, - warn: function(){}, - error: function(){} - } - , navigator: { - userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit' - + '/534.27 (KHTML, like Gecko) Chrome/12.0.716.0 Safari/534.27' - , appName: 'socket.io' - , platform: process.platform - , appVersion: process.version - , } - , name: 'socket.io' - , innerWidth: 1024 - , innerHeight: 768 - , length: 1 - , outerWidth: 1024 - , outerHeight: 768 - , pageXOffset: 0 - , pageYOffset: 0 - , screenX: 0 - , screenY: 0 - , screenLeft: 0 - , screenTop: 0 - , scrollX: 0 - , scrollY: 0 - , scrollTop: 0 - , scrollLeft: 0 - , screen: { - width: 0 - , height: 0 - } - }; - - // circular references - details.window = details.self = details.contentWindow = details; - - // callable methods - details.Image = details.scrollTo = details.scrollBy = details.scroll = - details.resizeTo = details.resizeBy = details.prompt = details.print = - details.open = details.moveTo = details.moveBy = details.focus = - details.createPopup = details.confirm = details.close = details.blur = - details.alert = details.clearTimeout = details.clearInterval = - details.setInterval = details.setTimeout = details.XMLHttpRequest = - details.getComputedStyle = details.trigger = details.dispatchEvent = - details.removeEventListener = details.addEventListener = function(){}; - - // frames - details.frames = [details]; - - // document - details.document = details; - details.document.domain = details.location.href; - - return details; -}; - -/** - * Executes a script in a browser like env and returns - * the result - * - * @param {String} contents The script content - * @returns {Object} The evaluated script. - */ - -exports.execute = function execute (contents) { - var env = exports.env() - , script = vm.createScript(contents); - - // run the script with `browser like` globals - script.runInNewContext(env); - - return env; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.test.js deleted file mode 100644 index 989e2bc5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/node/builder.test.js +++ /dev/null @@ -1,131 +0,0 @@ -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -/** - * Test dependencies. - */ - -var builder = require('../../bin/builder') - , common = require('./builder.common') - , should = require('should'); - -/** - * Tests. - */ - -module.exports = { - - 'version number': function () { - builder.version.should().match(/([0-9]+)\.([0-9]+)\.([0-9]+)/); - builder.version.should().equal(require('../../lib/io').version); - }, - - 'production build LOC': function () { - builder(function (err, result) { - should.strictEqual(err, null) - - var lines = result.split('\n'); - lines.length.should().be.below(5); - lines[0].should().match(/production/gi); - Buffer.byteLength(result).should().be.below(43000); - }); - }, - - 'development build LOC': function () { - builder({ minify: false }, function (err, result) { - should.strictEqual(err, null) - - var lines = result.split('\n'); - lines.length.should().be.above(5); - lines[0].should().match(/development/gi); - Buffer.byteLength(result).should().be.above(35000); - }); - }, - - 'default builds': function () { - builder(function (err, result) { - should.strictEqual(err, null); - - var io = common.execute(result).io - , transports = Object.keys(io.Transport) - , defaults = Object.keys(builder.transports); - - /* XHR transport is private, but still available */ - transports.length.should().be.equal(defaults.length + 1); - - defaults.forEach(function (transport) { - transports.indexOf(transport).should().be.above(-1); - }) - }); - }, - - 'custom build': function () { - builder(['websocket'], function (err, result) { - should.strictEqual(err, null); - - var io = common.execute(result).io - , transports = Object.keys(io.Transport); - - transports.should().have.length(1); - transports[0].should().eql('websocket'); - }); - }, - - 'custom code': function () { - var custom = 'var hello = "world";'; - builder({ custom: [custom], minify: false }, function (err, result) { - should.strictEqual(err, null); - - result.should().include.string(custom); - }); - }, - - 'node if': function () { - var custom = '// if node \nvar hello = "world";\n' - + '// end node\nvar pew = "pew";'; - - builder({ custom: [custom], minify: false }, function (err, result) { - should.strictEqual(err, null); - - result.should().not.include.string(custom); - result.should().not.include.string('// if node'); - result.should().not.include.string('// end node'); - result.should().not.include.string('"world"'); - - result.should().include.string('var pew = "pew"'); - }); - }, - - 'preserve the encoding during minification': function () { - builder(function (err, result) { - should.strictEqual(err, null); - - result.should().match(/(\\ufffd)/g); - }) - }, - - 'globals': function () { - builder(function (err, result) { - should.strictEqual(err, null); - - var io = common.execute(result) - , env = common.env() - , allowed = ['io', 'swfobject', 'WEB_SOCKET_DISABLE_AUTO_INITIALIZATION']; - - Array.prototype.push.apply(allowed, Object.keys(env)); - - Object.keys(io).forEach(function (global) { - var index = allowed.indexOf(global); - - // the global is not allowed! - if (!~index) { - throw new Error('Global leak: ' + global); - } - }); - }) - } - -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/parser.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/parser.test.js deleted file mode 100644 index 0022afb2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/parser.test.js +++ /dev/null @@ -1,360 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -(function (module, io, should) { - - var parser = io.parser; - - module.exports = { - - 'decoding error packet': function () { - parser.decodePacket('7:::').should().eql({ - type: 'error' - , reason: '' - , advice: '' - , endpoint: '' - }); - }, - - 'decoding error packet with reason': function () { - parser.decodePacket('7:::0').should().eql({ - type: 'error' - , reason: 'transport not supported' - , advice: '' - , endpoint: '' - }); - }, - - 'decoding error packet with reason and advice': function () { - parser.decodePacket('7:::2+0').should().eql({ - type: 'error' - , reason: 'unauthorized' - , advice: 'reconnect' - , endpoint: '' - }); - }, - - 'decoding error packet with endpoint': function () { - parser.decodePacket('7::/woot').should().eql({ - type: 'error' - , reason: '' - , advice: '' - , endpoint: '/woot' - }); - }, - - 'decoding ack packet': function () { - parser.decodePacket('6:::140').should().eql({ - type: 'ack' - , ackId: '140' - , endpoint: '' - , args: [] - }); - }, - - 'decoding ack packet with args': function () { - parser.decodePacket('6:::12+["woot","wa"]').should().eql({ - type: 'ack' - , ackId: '12' - , endpoint: '' - , args: ['woot', 'wa'] - }); - }, - - 'decoding ack packet with bad json': function () { - var thrown = false; - - try { - parser.decodePacket('6:::1+{"++]').should().eql({ - type: 'ack' - , ackId: '1' - , endpoint: '' - , args: [] - }); - } catch (e) { - thrown = true; - } - - thrown.should().be_false; - }, - - 'decoding json packet': function () { - parser.decodePacket('4:::"2"').should().eql({ - type: 'json' - , endpoint: '' - , data: '2' - }); - }, - - 'decoding json packet with message id and ack data': function () { - parser.decodePacket('4:1+::{"a":"b"}').should().eql({ - type: 'json' - , id: 1 - , ack: 'data' - , endpoint: '' - , data: { a: 'b' } - }); - }, - - 'decoding an event packet': function () { - parser.decodePacket('5:::{"name":"woot"}').should().eql({ - type: 'event' - , name: 'woot' - , endpoint: '' - , args: [] - }); - }, - - 'decoding an event packet with message id and ack': function () { - parser.decodePacket('5:1+::{"name":"tobi"}').should().eql({ - type: 'event' - , id: 1 - , ack: 'data' - , endpoint: '' - , name: 'tobi' - , args: [] - }); - }, - - 'decoding an event packet with data': function () { - parser.decodePacket('5:::{"name":"edwald","args":[{"a": "b"},2,"3"]}') - .should().eql({ - type: 'event' - , name: 'edwald' - , endpoint: '' - , args: [{a: 'b'}, 2, '3'] - }); - }, - - 'decoding a message packet': function () { - parser.decodePacket('3:::woot').should().eql({ - type: 'message' - , endpoint: '' - , data: 'woot' - }); - }, - - 'decoding a message packet with id and endpoint': function () { - parser.decodePacket('3:5:/tobi').should().eql({ - type: 'message' - , id: 5 - , ack: true - , endpoint: '/tobi' - , data: '' - }); - }, - - 'decoding a heartbeat packet': function () { - parser.decodePacket('2:::').should().eql({ - type: 'heartbeat' - , endpoint: '' - }); - }, - - 'decoding a connection packet': function () { - parser.decodePacket('1::/tobi').should().eql({ - type: 'connect' - , endpoint: '/tobi' - , qs: '' - }); - }, - - 'decoding a connection packet with query string': function () { - parser.decodePacket('1::/test:?test=1').should().eql({ - type: 'connect' - , endpoint: '/test' - , qs: '?test=1' - }); - }, - - 'decoding a disconnection packet': function () { - parser.decodePacket('0::/woot').should().eql({ - type: 'disconnect' - , endpoint: '/woot' - }); - }, - - 'encoding error packet': function () { - parser.encodePacket({ - type: 'error' - , reason: '' - , advice: '' - , endpoint: '' - }).should().eql('7::'); - }, - - 'encoding error packet with reason': function () { - parser.encodePacket({ - type: 'error' - , reason: 'transport not supported' - , advice: '' - , endpoint: '' - }).should().eql('7:::0'); - }, - - 'encoding error packet with reason and advice': function () { - parser.encodePacket({ - type: 'error' - , reason: 'unauthorized' - , advice: 'reconnect' - , endpoint: '' - }).should().eql('7:::2+0'); - }, - - 'encoding error packet with endpoint': function () { - parser.encodePacket({ - type: 'error' - , reason: '' - , advice: '' - , endpoint: '/woot' - }).should().eql('7::/woot'); - }, - - 'encoding ack packet': function () { - parser.encodePacket({ - type: 'ack' - , ackId: '140' - , endpoint: '' - , args: [] - }).should().eql('6:::140'); - }, - - 'encoding ack packet with args': function () { - parser.encodePacket({ - type: 'ack' - , ackId: '12' - , endpoint: '' - , args: ['woot', 'wa'] - }).should().eql('6:::12+["woot","wa"]'); - }, - - 'encoding json packet': function () { - parser.encodePacket({ - type: 'json' - , endpoint: '' - , data: '2' - }).should().eql('4:::"2"'); - }, - - 'encoding json packet with message id and ack data': function () { - parser.encodePacket({ - type: 'json' - , id: 1 - , ack: 'data' - , endpoint: '' - , data: { a: 'b' } - }).should().eql('4:1+::{"a":"b"}'); - }, - - 'encoding an event packet': function () { - parser.encodePacket({ - type: 'event' - , name: 'woot' - , endpoint: '' - , args: [] - }).should().eql('5:::{"name":"woot"}'); - }, - - 'encoding an event packet with message id and ack': function () { - parser.encodePacket({ - type: 'event' - , id: 1 - , ack: 'data' - , endpoint: '' - , name: 'tobi' - , args: [] - }).should().eql('5:1+::{"name":"tobi"}'); - }, - - 'encoding an event packet with data': function () { - parser.encodePacket({ - type: 'event' - , name: 'edwald' - , endpoint: '' - , args: [{a: 'b'}, 2, '3'] - }).should().eql('5:::{"name":"edwald","args":[{"a":"b"},2,"3"]}'); - }, - - 'encoding a message packet': function () { - parser.encodePacket({ - type: 'message' - , endpoint: '' - , data: 'woot' - }).should().eql('3:::woot'); - }, - - 'encoding a message packet with id and endpoint': function () { - parser.encodePacket({ - type: 'message' - , id: 5 - , ack: true - , endpoint: '/tobi' - , data: '' - }).should().eql('3:5:/tobi'); - }, - - 'encoding a heartbeat packet': function () { - parser.encodePacket({ - type: 'heartbeat' - , endpoint: '' - }).should().eql('2::'); - }, - - 'encoding a connection packet': function () { - parser.encodePacket({ - type: 'connect' - , endpoint: '/tobi' - , qs: '' - }).should().eql('1::/tobi'); - }, - - 'encoding a connection packet with query string': function () { - parser.encodePacket({ - type: 'connect' - , endpoint: '/test' - , qs: '?test=1' - }).should().eql('1::/test:?test=1'); - }, - - 'encoding a disconnection packet': function () { - parser.encodePacket({ - type: 'disconnect' - , endpoint: '/woot' - }).should().eql('0::/woot'); - }, - - 'test decoding a payload': function () { - parser.decodePayload('\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d' - + '\ufffd3\ufffd0::').should().eql([ - { type: 'message', data: '5', endpoint: '' } - , { type: 'message', data: '53d', endpoint: '' } - , { type: 'disconnect', endpoint: '' } - ]); - }, - - 'test encoding a payload': function () { - parser.encodePayload([ - parser.encodePacket({ type: 'message', data: '5', endpoint: '' }) - , parser.encodePacket({ type: 'message', data: '53d', endpoint: '' }) - ]).should().eql('\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d') - }, - - 'test decoding newline': function () { - parser.decodePacket('3:::\n').should().eql({ - type: 'message' - , endpoint: '' - , data: '\n' - }); - } - - }; - -})( - 'undefined' == typeof module ? module = {} : module - , 'undefined' == typeof io ? require('socket.io-client') : io - , 'undefined' == typeof should ? require('should') : should -); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/socket.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/socket.test.js deleted file mode 100644 index eae49564..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/socket.test.js +++ /dev/null @@ -1,422 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -(function (module, io, should) { - - if ('object' == typeof global) { - return module.exports = { '': function () {} }; - } - - module.exports = { - - 'test connecting the socket and disconnecting': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.disconnect(); - next(); - }); - }, - - 'test receiving messages': function (next) { - var socket = create() - , connected = false - , messages = 0; - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - connected = true; - }); - - socket.on('message', function (i) { - String(++messages).should().equal(i); - }); - - socket.on('disconnect', function (reason) { - connected.should().be_true; - messages.should().equal(3); - reason.should().eql('booted'); - next(); - }); - }, - - 'test sending messages': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.send('echo'); - - socket.on('message', function (msg) { - msg.should().equal('echo'); - socket.disconnect(); - next(); - }); - }); - }, - - 'test manual buffer flushing': function (next) { - var socket = create(); - - socket.socket.options['manualFlush'] = true; - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.socket.connected = false; - socket.send('buffered'); - socket.socket.onConnect(); - socket.socket.flushBuffer(); - - socket.on('message', function (msg) { - msg.should().equal('buffered'); - socket.disconnect(); - next(); - }); - }); - }, - - 'test automatic buffer flushing': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.socket.connected = false; - socket.send('buffered'); - socket.socket.onConnect(); - - socket.on('message', function (msg) { - msg.should().equal('buffered'); - socket.disconnect(); - next(); - }); - }); - }, - - 'test acks sent from client': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.on('message', function (msg) { - if ('tobi 2' == msg) { - socket.disconnect(); - next(); - } - }); - }); - }, - - 'test acks sent from server': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.send('ooo', function () { - socket.disconnect(); - next(); - }); - }); - }, - - 'test connecting to namespaces': function (next) { - var io = create() - , socket = io.socket - , namespaces = 2 - , connect = 0; - - function finish () { - socket.of('').disconnect(); - connect.should().equal(3); - next(); - } - - socket.on('connect', function(){ - connect++; - }); - - socket.of('/woot').on('connect', function () { - connect++; - }).on('message', function (msg) { - msg.should().equal('connected to woot'); - --namespaces || finish(); - }).on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.of('/chat').on('connect', function () { - connect++; - }).on('message', function (msg) { - msg.should().equal('connected to chat'); - --namespaces || finish(); - }).on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - }, - - 'test disconnecting from namespaces': function (next) { - var socket = create().socket - , namespaces = 2 - , disconnections = 0; - - function finish () { - socket.of('').disconnect(); - next(); - }; - - socket.of('/a').on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.of('/a').on('connect', function () { - socket.of('/a').disconnect(); - }); - - socket.of('/a').on('disconnect', function () { - --namespaces || finish(); - }); - - socket.of('/b').on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.of('/b').on('connect', function () { - socket.of('/b').disconnect(); - }); - - socket.of('/b').on('disconnect', function () { - --namespaces || finish(); - }); - }, - - 'test authorizing for namespaces': function (next) { - var socket = create().socket - - function finish () { - socket.of('').disconnect(); - next(); - }; - - socket.of('/a') - .on('connect_failed', function (msg) { - next(); - }) - .on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - }, - - 'test sending json from server': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('message', function (msg) { - msg.should().eql(3141592); - socket.disconnect(); - next(); - }); - }, - - 'test sending json from client': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.json.send([1, 2, 3]); - socket.on('message', function (msg) { - msg.should().equal('echo'); - socket.disconnect(); - next(); - }); - }, - - 'test emitting an event from server': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('woot', function () { - socket.disconnect(); - next(); - }); - }, - - 'test emitting an event to server': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.emit('woot'); - socket.on('echo', function () { - socket.disconnect(); - next(); - }) - }, - - 'test emitting multiple events at once to the server': function (next) { - var socket = create(); - - socket.on('connect', function () { - socket.emit('print', 'foo'); - socket.emit('print', 'bar'); - }); - - socket.on('done', function () { - socket.disconnect(); - next(); - }); - }, - - 'test emitting an event from server and sending back data': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('woot', function (a, fn) { - a.should().eql(1); - fn('test'); - - socket.on('done', function () { - socket.disconnect(); - next(); - }); - }); - }, - - 'test emitting an event to server and sending back data': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.emit('tobi', 1, 2, function (a) { - a.should().eql({ hello: 'world' }); - socket.disconnect(); - next(); - }); - }, - - 'test encoding a payload': function (next) { - var socket = create('/woot'); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('connect', function () { - socket.socket.setBuffer(true); - socket.send('ñ'); - socket.send('ñ'); - socket.send('ñ'); - socket.send('ñ'); - socket.socket.setBuffer(false); - }); - - socket.on('done', function () { - socket.disconnect(); - next(); - }); - }, - - 'test sending query strings to the server': function (next) { - var socket = create('?foo=bar'); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.on('message', function (data) { - data.query.foo.should().eql('bar'); - - socket.disconnect(); - next(); - }); - }, - - 'test sending newline': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.send('\n'); - - socket.on('done', function () { - socket.disconnect(); - next(); - }); - }, - - 'test sending unicode': function (next) { - var socket = create(); - - socket.on('error', function (msg) { - throw new Error(msg || 'Received an error'); - }); - - socket.json.send({ test: "☃" }); - - socket.on('done', function () { - socket.disconnect(); - next(); - }); - }, - - 'test webworker connection': function (next) { - if (!window.Worker) { - return next(); - } - - var worker = new Worker('/test/worker.js'); - worker.postMessage(uri()); - worker.onmessage = function (ev) { - if ('done!' == ev.data) return next(); - throw new Error('Unexpected message: ' + ev.data); - } - } - - }; - -})( - 'undefined' == typeof module ? module = {} : module - , 'undefined' == typeof io ? require('socket.io-client') : io - , 'undefined' == typeof should ? require('should-browser') : should -); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/util.test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/util.test.js deleted file mode 100644 index 30db5a63..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/util.test.js +++ /dev/null @@ -1,156 +0,0 @@ - -/*! - * socket.io-node - * Copyright(c) 2011 LearnBoost - * MIT Licensed - */ - -(function (module, io, should) { - - module.exports = { - - 'parse uri': function () { - var http = io.util.parseUri('http://google.com') - , https = io.util.parseUri('https://www.google.com:80') - , query = io.util.parseUri('google.com:8080/foo/bar?foo=bar'); - - http.protocol.should().eql('http'); - http.port.should().eql(''); - http.host.should().eql('google.com'); - https.protocol.should().eql('https'); - https.port.should().eql('80'); - https.host.should().eql('www.google.com'); - query.port.should().eql('8080'); - query.query.should().eql('foo=bar'); - query.path.should().eql('/foo/bar'); - query.relative.should().eql('/foo/bar?foo=bar'); - }, - - 'unique uri': function () { - var protocol = io.util.parseUri('http://google.com') - , noprotocol = io.util.parseUri('google.com') - , https = io.util.parseUri('https://google.com') - , path = io.util.parseUri('https://google.com/google.com/com/?foo=bar'); - - if ('object' == typeof window) { - io.util.uniqueUri(protocol).should().eql('http://google.com:3000'); - io.util.uniqueUri(noprotocol).should().eql('http://google.com:3000'); - } else { - io.util.uniqueUri(protocol).should().eql('http://google.com:80'); - io.util.uniqueUri(noprotocol).should().eql('http://google.com:80'); - } - - io.util.uniqueUri(https).should().eql('https://google.com:443'); - io.util.uniqueUri(path).should().eql('https://google.com:443'); - }, - - 'chunk query string': function () { - io.util.chunkQuery('foo=bar').should().be.a('object'); - io.util.chunkQuery('foo=bar').foo.should().eql('bar'); - }, - - 'merge query strings': function () { - var base = io.util.query('foo=bar', 'foo=baz') - , add = io.util.query('foo=bar', 'bar=foo') - - base.should().eql('?foo=baz'); - add.should().eql('?foo=bar&bar=foo'); - - io.util.query('','').should().eql(''); - io.util.query('foo=bar', '').should().eql('?foo=bar'); - io.util.query('', 'foo=bar').should().eql('?foo=bar'); - }, - - 'request': function () { - var type = typeof io.util.request(); - type.should().eql('object'); - }, - - 'is array': function () { - io.util.isArray([]).should().be_true; - io.util.isArray({}).should().be_false; - io.util.isArray('str').should().be_false; - io.util.isArray(new Date).should().be_false; - io.util.isArray(true).should().be_false; - io.util.isArray(arguments).should().be_false; - }, - - 'merge, deep merge': function () { - var start = { - foo: 'bar' - , bar: 'baz' - } - , duplicate = { - foo: 'foo' - , bar: 'bar' - } - , extra = { - ping: 'pong' - } - , deep = { - level1:{ - foo: 'bar' - , level2: { - foo: 'bar' - , level3:{ - foo: 'bar' - , rescursive: deep - } - } - } - } - // same structure, but changed names - , deeper = { - foo: 'bar' - , level1:{ - foo: 'baz' - , level2: { - foo: 'foo' - , level3:{ - foo: 'pewpew' - , rescursive: deep - } - } - } - }; - - io.util.merge(start, duplicate); - - start.foo.should().eql('foo'); - start.bar.should().eql('bar'); - - io.util.merge(start, extra); - start.ping.should().eql('pong'); - start.foo.should().eql('foo'); - - io.util.merge(deep, deeper); - - deep.foo.should().eql('bar'); - deep.level1.foo.should().eql('baz'); - deep.level1.level2.foo.should().eql('foo'); - deep.level1.level2.level3.foo.should().eql('pewpew'); - }, - - 'defer': function (next) { - var now = +new Date; - - io.util.defer(function () { - ((new Date - now) >= ( io.util.webkit ? 100 : 0 )).should().be_true(); - next(); - }) - }, - - 'indexOf': function () { - var data = ['socket', 2, 3, 4, 'socket', 5, 6, 7, 'io']; - io.util.indexOf(data, 'socket', 1).should().eql(4); - io.util.indexOf(data, 'socket').should().eql(0); - io.util.indexOf(data, 'waffles').should().eql(-1); - } - - }; - -})( - 'undefined' == typeof module ? module = {} : module - , 'undefined' == typeof io ? require('socket.io-client') : io - , 'undefined' == typeof should ? require('should') : should -); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/worker.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/worker.js deleted file mode 100644 index c5426326..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/node_modules/socket.io-client/test/worker.js +++ /dev/null @@ -1,20 +0,0 @@ -importScripts('/socket.io/socket.io.js'); - -self.onmessage = function (ev) { - var url = ev.data - , socket = io.connect(url); - - socket.on('done', function () { - self.postMessage('done!'); - }); - - socket.on('connect_failed', function () { - self.postMessage('connect failed'); - }); - - socket.on('error', function () { - self.postMessage('error'); - }); - - socket.send('woot'); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/package.json deleted file mode 100644 index 6ab7c26f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/node_modules/socket.io/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "socket.io", - "version": "0.9.17", - "description": "Real-time apps made cross-browser & easy with a WebSocket-like API", - "homepage": "http://socket.io", - "keywords": [ - "websocket", - "socket", - "realtime", - "socket.io", - "comet", - "ajax" - ], - "author": { - "name": "Guillermo Rauch", - "email": "guillermo@learnboost.com" - }, - "contributors": [ - { - "name": "Guillermo Rauch", - "email": "rauchg@gmail.com" - }, - { - "name": "Arnout Kazemier", - "email": "info@3rd-eden.com" - }, - { - "name": "Vladimir Dronnikov", - "email": "dronnikov@gmail.com" - }, - { - "name": "Einar Otto Stangvik", - "email": "einaros@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git+https://github.com/LearnBoost/socket.io.git" - }, - "dependencies": { - "socket.io-client": "0.9.16", - "policyfile": "0.0.4", - "base64id": "0.1.0", - "redis": "0.7.3" - }, - "devDependencies": { - "expresso": "0.9.2", - "should": "*", - "benchmark": "0.2.2", - "microtime": "0.1.3-1", - "colors": "0.5.1" - }, - "optionalDependencies": { - "redis": "0.7.3" - }, - "main": "index", - "engines": { - "node": ">= 0.4.0" - }, - "scripts": { - "test": "make test" - }, - "bugs": { - "url": "https://github.com/LearnBoost/socket.io/issues" - }, - "_id": "socket.io@0.9.17", - "_shasum": "ca389268fb2cd5df4b59218490a08c907581c9ec", - "_from": "socket.io@>=0.9.0 <0.10.0", - "_npmVersion": "1.4.7", - "_npmUser": { - "name": "rauchg", - "email": "rauchg@gmail.com" - }, - "maintainers": [ - { - "name": "rauchg", - "email": "rauchg@gmail.com" - } - ], - "dist": { - "shasum": "ca389268fb2cd5df4b59218490a08c907581c9ec", - "tarball": "http://registry.npmjs.org/socket.io/-/socket.io-0.9.17.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.17.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/package.json deleted file mode 100644 index 77d8e634..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/instant-markdown-d/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "author": { - "name": "Suan-Aik Yeo", - "email": "yeosuanaik@gmail.com" - }, - "name": "instant-markdown-d", - "description": "Instantly-updating Markdown Server", - "version": "0.1.0", - "engine": "node", - "main": "instant-markdown-d", - "preferGlobal": "true", - "bin": { - "instant-markdown-d": "./instant-markdown-d" - }, - "dependencies": { - "highlight.js": "^8.4.0", - "markdown-it": "^3.0.3", - "send": "~0.1.0", - "socket.io": "" - }, - "gitHead": "1511b8591e0a0e3aadd92db7bd6634b1ada8286d", - "_id": "instant-markdown-d@0.1.0", - "scripts": {}, - "_shasum": "da1ffd10443b6b72c14d896b53d2925507a570c6", - "_from": "instant-markdown-d@0.1.0", - "_npmVersion": "2.1.3", - "_nodeVersion": "0.10.32", - "_npmUser": { - "name": "suan", - "email": "yeosuanaik@gmail.com" - }, - "maintainers": [ - { - "name": "suan", - "email": "yeosuanaik@gmail.com" - } - ], - "dist": { - "shasum": "da1ffd10443b6b72c14d896b53d2925507a570c6", - "tarball": "http://registry.npmjs.org/instant-markdown-d/-/instant-markdown-d-0.1.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/instant-markdown-d/-/instant-markdown-d-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.eslintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.eslintrc deleted file mode 100644 index 6ebc5360..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.eslintrc +++ /dev/null @@ -1,45 +0,0 @@ -{ - "env": { - "node": true - }, - "rules": { - // 2-space indentation - "indent": [2, 2, {"SwitchCase": 1}], - // Disallow semi-colons, unless needed to disambiguate statement - "semi": [2, "never"], - // Require strings to use single quotes - "quotes": [2, "single"], - // Require curly braces for all control statements - "curly": 2, - // Disallow using variables and functions before they've been defined - "no-use-before-define": 2, - // Allow any case for variable naming - "camelcase": 0, - // Disallow unused variables, except as function arguments - "no-unused-vars": [2, {"args":"none"}], - // Allow leading underscores for method names - // REASON: we use underscores to denote private methods - "no-underscore-dangle": 0, - // Allow multi spaces around operators since they are - // used for alignment. This is not consistent in the - // code. - "no-multi-spaces": 0, - // Style rule is: most objects use { beforeColon: false, afterColon: true }, unless aligning which uses: - // - // { - // beforeColon : true, - // afterColon : true - // } - // - // eslint can't handle this, so the check is disabled. - "key-spacing": 0, - // Allow shadowing vars in outer scope (needs discussion) - "no-shadow": 0, - // Use if () { } - // ^ space - "space-after-keywords": [2, "always"], - // Use if () { } - // ^ space - "space-before-blocks": [2, "always"] - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.npmignore deleted file mode 100644 index 67fe11cc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -coverage -tests -node_modules -examples -release.sh -disabled.appveyor.yml diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.travis.yml deleted file mode 100644 index c24c59b5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: node_js -node_js: - - node - - io.js - - 0.12 - - 0.10 -sudo: false - -after_script: "npm run test-cov && cat ./coverage/lcov.info | codecov && cat ./coverage/lcov.info | coveralls" - -webhooks: - urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CHANGELOG.md deleted file mode 100644 index 7dc85ea1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CHANGELOG.md +++ /dev/null @@ -1,578 +0,0 @@ -## Change Log - -### v2.67.0 (2015/11/19) -- [#1913](https://github.com/request/request/pull/1913) Update http-signature to version 1.1.0 🚀 (@greenkeeperio-bot) - -### v2.66.0 (2015/11/18) -- [#1906](https://github.com/request/request/pull/1906) Update README URLs based on HTTP redirects (@ReadmeCritic) -- [#1905](https://github.com/request/request/pull/1905) Convert typed arrays into regular buffers (@simov) -- [#1902](https://github.com/request/request/pull/1902) node-uuid@1.4.7 breaks build 🚨 (@greenkeeperio-bot) -- [#1894](https://github.com/request/request/pull/1894) Fix tunneling after redirection from https (Original: #1881) (@simov, @falms) -- [#1893](https://github.com/request/request/pull/1893) Update eslint to version 1.9.0 🚀 (@greenkeeperio-bot) -- [#1852](https://github.com/request/request/pull/1852) Update eslint to version 1.7.3 🚀 (@simov, @greenkeeperio-bot, @paulomcnally, @michelsalib, @arbaaz, @vladimirich, @LoicMahieu, @JoshWillik, @jzaefferer, @ryanwholey, @djchie, @thisconnect, @mgenereu, @acroca, @Sebmaster, @Bloutiouf) -- [#1876](https://github.com/request/request/pull/1876) Implement loose matching for har mime types (@simov) -- [#1875](https://github.com/request/request/pull/1875) Update bluebird to version 3.0.2 🚀 (@simov, @greenkeeperio-bot) -- [#1871](https://github.com/request/request/pull/1871) Update browserify to version 12.0.1 🚀 (@greenkeeperio-bot) -- [#1866](https://github.com/request/request/pull/1866) Add missing quotes on x-token property in README (@miguelmota) -- [#1874](https://github.com/request/request/pull/1874) Fix typo in README.md (@gswalden) -- [#1860](https://github.com/request/request/pull/1860) Improve referer header tests and docs (@simov) -- [#1861](https://github.com/request/request/pull/1861) Remove redundant call to Stream constructor (@watson) -- [#1857](https://github.com/request/request/pull/1857) Fix Referer header to point to the original host name (@simov) -- [#1850](https://github.com/request/request/pull/1850) Update karma-coverage to version 0.5.3 🚀 (@greenkeeperio-bot) -- [#1847](https://github.com/request/request/pull/1847) Use node's latest version when building (@simov) -- [#1836](https://github.com/request/request/pull/1836) Tunnel: fix wrong property name (@Bloutiouf) -- [#1820](https://github.com/request/request/pull/1820) Set href as request.js uses it (@mgenereu) -- [#1840](https://github.com/request/request/pull/1840) Update http-signature to version 1.0.2 🚀 (@greenkeeperio-bot) -- [#1845](https://github.com/request/request/pull/1845) Update istanbul to version 0.4.0 🚀 (@greenkeeperio-bot) - -### v2.65.0 (2015/10/11) -- [#1833](https://github.com/request/request/pull/1833) Update aws-sign2 to version 0.6.0 🚀 (@greenkeeperio-bot) -- [#1811](https://github.com/request/request/pull/1811) Enable loose cookie parsing in tough-cookie (@Sebmaster) -- [#1830](https://github.com/request/request/pull/1830) Bring back tilde ranges for all dependencies (@simov) -- [#1821](https://github.com/request/request/pull/1821) Implement support for RFC 2617 MD5-sess algorithm. (@BigDSK) -- [#1828](https://github.com/request/request/pull/1828) Updated qs dependency to 5.2.0 (@acroca) -- [#1818](https://github.com/request/request/pull/1818) Extract `readResponseBody` method out of `onRequestResponse` (@pvoisin) -- [#1819](https://github.com/request/request/pull/1819) Run stringify once (@mgenereu) -- [#1814](https://github.com/request/request/pull/1814) Updated har-validator to version 2.0.2 (@greenkeeperio-bot) -- [#1807](https://github.com/request/request/pull/1807) Updated tough-cookie to version 2.1.0 (@greenkeeperio-bot) -- [#1800](https://github.com/request/request/pull/1800) Add caret ranges for devDependencies, except eslint (@simov) -- [#1799](https://github.com/request/request/pull/1799) Updated karma-browserify to version 4.4.0 (@greenkeeperio-bot) -- [#1797](https://github.com/request/request/pull/1797) Updated tape to version 4.2.0 (@greenkeeperio-bot) -- [#1788](https://github.com/request/request/pull/1788) Pinned all dependencies (@greenkeeperio-bot) - -### v2.64.0 (2015/09/25) -- [#1787](https://github.com/request/request/pull/1787) npm ignore examples, release.sh and disabled.appveyor.yml (@thisconnect) -- [#1775](https://github.com/request/request/pull/1775) Fix typo in README.md (@djchie) -- [#1776](https://github.com/request/request/pull/1776) Changed word 'conjuction' to read 'conjunction' in README.md (@ryanwholey) -- [#1785](https://github.com/request/request/pull/1785) Revert: Set default application/json content-type when using json option #1772 (@simov) - -### v2.63.0 (2015/09/21) -- [#1772](https://github.com/request/request/pull/1772) Set default application/json content-type when using json option (@jzaefferer) - -### v2.62.0 (2015/09/15) -- [#1768](https://github.com/request/request/pull/1768) Add node 4.0 to the list of build targets (@simov) -- [#1767](https://github.com/request/request/pull/1767) Query strings now cooperate with unix sockets (@JoshWillik) -- [#1750](https://github.com/request/request/pull/1750) Revert doc about installation of tough-cookie added in #884 (@LoicMahieu) -- [#1746](https://github.com/request/request/pull/1746) Missed comma in Readme (@vladimirich) -- [#1743](https://github.com/request/request/pull/1743) Fix options not being initialized in defaults method (@simov) - -### v2.61.0 (2015/08/19) -- [#1721](https://github.com/request/request/pull/1721) Minor fix in README.md (@arbaaz) -- [#1733](https://github.com/request/request/pull/1733) Avoid useless Buffer transformation (@michelsalib) -- [#1726](https://github.com/request/request/pull/1726) Update README.md (@paulomcnally) -- [#1715](https://github.com/request/request/pull/1715) Fix forever option in node > 0.10 #1709 (@calibr) -- [#1716](https://github.com/request/request/pull/1716) Do not create Buffer from Object in setContentLength(iojs v3.0 issue) (@calibr) -- [#1711](https://github.com/request/request/pull/1711) Add ability to detect connect timeouts (@kevinburke) -- [#1712](https://github.com/request/request/pull/1712) Set certificate expiration to August 2, 2018 (@kevinburke) -- [#1700](https://github.com/request/request/pull/1700) debug() when JSON.parse() on a response body fails (@phillipj) - -### v2.60.0 (2015/07/21) -- [#1687](https://github.com/request/request/pull/1687) Fix caseless bug - content-type not being set for multipart/form-data (@simov, @garymathews) - -### v2.59.0 (2015/07/20) -- [#1671](https://github.com/request/request/pull/1671) Add tests and docs for using the agent, agentClass, agentOptions and forever options. Forever option defaults to using http(s).Agent in node 0.12+ (@simov) -- [#1679](https://github.com/request/request/pull/1679) Fix - do not remove OAuth param when using OAuth realm (@simov, @jhalickman) -- [#1668](https://github.com/request/request/pull/1668) updated dependencies (@deamme) -- [#1656](https://github.com/request/request/pull/1656) Fix form method (@simov) -- [#1651](https://github.com/request/request/pull/1651) Preserve HEAD method when using followAllRedirects (@simov) -- [#1652](https://github.com/request/request/pull/1652) Update `encoding` option documentation in README.md (@daniel347x) -- [#1650](https://github.com/request/request/pull/1650) Allow content-type overriding when using the `form` option (@simov) -- [#1646](https://github.com/request/request/pull/1646) Clarify the nature of setting `ca` in `agentOptions` (@jeffcharles) - -### v2.58.0 (2015/06/16) -- [#1638](https://github.com/request/request/pull/1638) Use the `extend` module to deep extend in the defaults method (@simov) -- [#1631](https://github.com/request/request/pull/1631) Move tunnel logic into separate module (@simov) -- [#1634](https://github.com/request/request/pull/1634) Fix OAuth query transport_method (@simov) -- [#1603](https://github.com/request/request/pull/1603) Add codecov (@simov) - -### v2.57.0 (2015/05/31) -- [#1615](https://github.com/request/request/pull/1615) Replace '.client' with '.socket' as the former was deprecated in 2.2.0. (@ChALkeR) - -### v2.56.0 (2015/05/28) -- [#1610](https://github.com/request/request/pull/1610) Bump module dependencies (@simov) -- [#1600](https://github.com/request/request/pull/1600) Extract the querystring logic into separate module (@simov) -- [#1607](https://github.com/request/request/pull/1607) Re-generate certificates (@simov) -- [#1599](https://github.com/request/request/pull/1599) Move getProxyFromURI logic below the check for Invaild URI (#1595) (@simov) -- [#1598](https://github.com/request/request/pull/1598) Fix the way http verbs are defined in order to please intellisense IDEs (@simov, @flannelJesus) -- [#1591](https://github.com/request/request/pull/1591) A few minor fixes: (@simov) -- [#1584](https://github.com/request/request/pull/1584) Refactor test-default tests (according to comments in #1430) (@simov) -- [#1585](https://github.com/request/request/pull/1585) Fixing documentation regarding TLS options (#1583) (@mainakae) -- [#1574](https://github.com/request/request/pull/1574) Refresh the oauth_nonce on redirect (#1573) (@simov) -- [#1570](https://github.com/request/request/pull/1570) Discovered tests that weren't properly running (@seanstrom) -- [#1569](https://github.com/request/request/pull/1569) Fix pause before response arrives (@kevinoid) -- [#1558](https://github.com/request/request/pull/1558) Emit error instead of throw (@simov) -- [#1568](https://github.com/request/request/pull/1568) Fix stall when piping gzipped response (@kevinoid) -- [#1560](https://github.com/request/request/pull/1560) Update combined-stream (@apechimp) -- [#1543](https://github.com/request/request/pull/1543) Initial support for oauth_body_hash on json payloads (@simov, @aesopwolf) -- [#1541](https://github.com/request/request/pull/1541) Fix coveralls (@simov) -- [#1540](https://github.com/request/request/pull/1540) Fix recursive defaults for convenience methods (@simov) -- [#1536](https://github.com/request/request/pull/1536) More eslint style rules (@froatsnook) -- [#1533](https://github.com/request/request/pull/1533) Adding dependency status bar to README.md (@YasharF) -- [#1539](https://github.com/request/request/pull/1539) ensure the latest version of har-validator is included (@ahmadnassri) -- [#1516](https://github.com/request/request/pull/1516) forever+pool test (@devTristan) - -### v2.55.0 (2015/04/05) -- [#1520](https://github.com/request/request/pull/1520) Refactor defaults (@simov) -- [#1525](https://github.com/request/request/pull/1525) Delete request headers with undefined value. (@froatsnook) -- [#1521](https://github.com/request/request/pull/1521) Add promise tests (@simov) -- [#1518](https://github.com/request/request/pull/1518) Fix defaults (@simov) -- [#1515](https://github.com/request/request/pull/1515) Allow static invoking of convenience methods (@simov) -- [#1505](https://github.com/request/request/pull/1505) Fix multipart boundary extraction regexp (@simov) -- [#1510](https://github.com/request/request/pull/1510) Fix basic auth form data (@simov) - -### v2.54.0 (2015/03/24) -- [#1501](https://github.com/request/request/pull/1501) HTTP Archive 1.2 support (@ahmadnassri) -- [#1486](https://github.com/request/request/pull/1486) Add a test for the forever agent (@akshayp) -- [#1500](https://github.com/request/request/pull/1500) Adding handling for no auth method and null bearer (@philberg) -- [#1498](https://github.com/request/request/pull/1498) Add table of contents in readme (@simov) -- [#1477](https://github.com/request/request/pull/1477) Add support for qs options via qsOptions key (@simov) -- [#1496](https://github.com/request/request/pull/1496) Parameters encoded to base 64 should be decoded as UTF-8, not ASCII. (@albanm) -- [#1494](https://github.com/request/request/pull/1494) Update eslint (@froatsnook) -- [#1474](https://github.com/request/request/pull/1474) Require Colon in Basic Auth (@erykwalder) -- [#1481](https://github.com/request/request/pull/1481) Fix baseUrl and redirections. (@burningtree) -- [#1469](https://github.com/request/request/pull/1469) Feature/base url (@froatsnook) -- [#1459](https://github.com/request/request/pull/1459) Add option to time request/response cycle (including rollup of redirects) (@aaron-em) -- [#1468](https://github.com/request/request/pull/1468) Re-enable io.js/node 0.12 build (@simov, @mikeal, @BBB) -- [#1442](https://github.com/request/request/pull/1442) Fixed the issue with strictSSL tests on 0.12 & io.js by explicitly setting a cipher that matches the cert. (@BBB, @nicolasmccurdy, @demohi, @simov, @0x4139) -- [#1460](https://github.com/request/request/pull/1460) localAddress or proxy config is lost when redirecting (@simov, @0x4139) -- [#1453](https://github.com/request/request/pull/1453) Test on Node.js 0.12 and io.js with allowed failures (@nicolasmccurdy, @demohi) -- [#1426](https://github.com/request/request/pull/1426) Fixing tests to pass on io.js and node 0.12 (only test-https.js stiff failing) (@mikeal) -- [#1446](https://github.com/request/request/pull/1446) Missing HTTP referer header with redirects Fixes #1038 (@simov, @guimonz) -- [#1428](https://github.com/request/request/pull/1428) Deprecate Node v0.8.x (@nylen) -- [#1436](https://github.com/request/request/pull/1436) Add ability to set a requester without setting default options (@tikotzky) -- [#1435](https://github.com/request/request/pull/1435) dry up verb methods (@sethpollack) -- [#1423](https://github.com/request/request/pull/1423) Allow fully qualified multipart content-type header (@simov) -- [#1430](https://github.com/request/request/pull/1430) Fix recursive requester (@tikotzky) -- [#1429](https://github.com/request/request/pull/1429) Throw error when making HEAD request with a body (@tikotzky) -- [#1419](https://github.com/request/request/pull/1419) Add note that the project is broken in 0.12.x (@nylen) -- [#1413](https://github.com/request/request/pull/1413) Fix basic auth (@simov) -- [#1397](https://github.com/request/request/pull/1397) Improve pipe-from-file tests (@nylen) - -### v2.53.0 (2015/02/02) -- [#1396](https://github.com/request/request/pull/1396) Do not rfc3986 escape JSON bodies (@nylen, @simov) -- [#1392](https://github.com/request/request/pull/1392) Improve `timeout` option description (@watson) - -### v2.52.0 (2015/02/02) -- [#1383](https://github.com/request/request/pull/1383) Add missing HTTPS options that were not being passed to tunnel (@brichard19) (@nylen) -- [#1388](https://github.com/request/request/pull/1388) Upgrade mime-types package version (@roderickhsiao) -- [#1389](https://github.com/request/request/pull/1389) Revise Setup Tunnel Function (@seanstrom) -- [#1374](https://github.com/request/request/pull/1374) Allow explicitly disabling tunneling for proxied https destinations (@nylen) -- [#1376](https://github.com/request/request/pull/1376) Use karma-browserify for tests. Add browser test coverage reporter. (@eiriksm) -- [#1366](https://github.com/request/request/pull/1366) Refactor OAuth into separate module (@simov) -- [#1373](https://github.com/request/request/pull/1373) Rewrite tunnel test to be pure Node.js (@nylen) -- [#1371](https://github.com/request/request/pull/1371) Upgrade test reporter (@nylen) -- [#1360](https://github.com/request/request/pull/1360) Refactor basic, bearer, digest auth logic into separate class (@simov) -- [#1354](https://github.com/request/request/pull/1354) Remove circular dependency from debugging code (@nylen) -- [#1351](https://github.com/request/request/pull/1351) Move digest auth into private prototype method (@simov) -- [#1352](https://github.com/request/request/pull/1352) Update hawk dependency to ~2.3.0 (@mridgway) -- [#1353](https://github.com/request/request/pull/1353) Correct travis-ci badge (@dogancelik) -- [#1349](https://github.com/request/request/pull/1349) Make sure we return on errored browser requests. (@eiriksm) -- [#1346](https://github.com/request/request/pull/1346) getProxyFromURI Extraction Refactor (@seanstrom) -- [#1337](https://github.com/request/request/pull/1337) Standardize test ports on 6767 (@nylen) -- [#1341](https://github.com/request/request/pull/1341) Emit FormData error events as Request error events (@nylen, @rwky) -- [#1343](https://github.com/request/request/pull/1343) Clean up readme badges, and add Travis and Coveralls badges (@nylen) -- [#1345](https://github.com/request/request/pull/1345) Update README.md (@Aaron-Hartwig) -- [#1338](https://github.com/request/request/pull/1338) Always wait for server.close() callback in tests (@nylen) -- [#1342](https://github.com/request/request/pull/1342) Add mock https server and redo start of browser tests for this purpose. (@eiriksm) -- [#1339](https://github.com/request/request/pull/1339) Improve auth docs (@nylen) -- [#1335](https://github.com/request/request/pull/1335) Add support for OAuth plaintext signature method (@simov) -- [#1332](https://github.com/request/request/pull/1332) Add clean script to remove test-browser.js after the tests run (@seanstrom) -- [#1327](https://github.com/request/request/pull/1327) Fix errors generating coverage reports. (@nylen) -- [#1330](https://github.com/request/request/pull/1330) Return empty buffer upon empty response body and encoding is set to null (@seanstrom) -- [#1326](https://github.com/request/request/pull/1326) Use faster container-based infrastructure on Travis (@nylen) -- [#1315](https://github.com/request/request/pull/1315) Implement rfc3986 option (@simov, @nylen, @apoco, @DullReferenceException, @mmalecki, @oliamb, @cliffcrosland, @LewisJEllis, @eiriksm, @poislagarde) -- [#1314](https://github.com/request/request/pull/1314) Detect urlencoded form data header via regex (@simov) -- [#1317](https://github.com/request/request/pull/1317) Improve OAuth1.0 server side flow example (@simov) - -### v2.51.0 (2014/12/10) -- [#1310](https://github.com/request/request/pull/1310) Revert changes introduced in https://github.com/request/request/pull/1282 (@simov) - -### v2.50.0 (2014/12/09) -- [#1308](https://github.com/request/request/pull/1308) Add browser test to keep track of browserify compability. (@eiriksm) -- [#1299](https://github.com/request/request/pull/1299) Add optional support for jsonReviver (@poislagarde) -- [#1277](https://github.com/request/request/pull/1277) Add Coveralls configuration (@simov) -- [#1307](https://github.com/request/request/pull/1307) Upgrade form-data, add back browserify compability. Fixes #455. (@eiriksm) -- [#1305](https://github.com/request/request/pull/1305) Fix typo in README.md (@LewisJEllis) -- [#1288](https://github.com/request/request/pull/1288) Update README.md to explain custom file use case (@cliffcrosland) - -### v2.49.0 (2014/11/28) -- [#1295](https://github.com/request/request/pull/1295) fix(proxy): no-proxy false positive (@oliamb) -- [#1292](https://github.com/request/request/pull/1292) Upgrade `caseless` to 0.8.1 (@mmalecki) -- [#1276](https://github.com/request/request/pull/1276) Set transfer encoding for multipart/related to chunked by default (@simov) -- [#1275](https://github.com/request/request/pull/1275) Fix multipart content-type headers detection (@simov) -- [#1269](https://github.com/request/request/pull/1269) adds streams example for review (@tbuchok) -- [#1238](https://github.com/request/request/pull/1238) Add examples README.md (@simov) - -### v2.48.0 (2014/11/12) -- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2) -- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen) -- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen) -- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen) -- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos) -- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen) -- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel) -- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen) -- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem) -- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen) -- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov) -- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser) - -### v2.47.0 (2014/10/26) -- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen) -- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott) -- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen) -- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request) -- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen) -- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser) -- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen) -- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen) -- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru) -- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott) -- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov) -- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen) -- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov) - -### v2.46.0 (2014/10/23) -- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu) -- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger) -- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen) -- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen) -- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott) -- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott) -- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott) -- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott) -- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen) -- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen) -- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica) -- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen) -- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress) -- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom) -- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott) -- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom) -- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom) -- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic) -- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom) -- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W) -- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen) -- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen) -- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok) -- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott) -- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom) -- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay) -- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay) -- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen) -- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott) -- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott) -- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen) -- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund) -- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock) -- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey) -- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott) -- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom) -- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott) -- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott) - -### v2.45.0 (2014/10/06) -- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen) -- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe) -- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom) -- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott) -- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen) -- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott) -- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott) -- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott) -- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott) -- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott) -- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday) -- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott) -- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott) -- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott) -- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott) -- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott) -- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott) -- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky) -- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan) -- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom) -- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid) -- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb) -- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167) -- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket) -- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom) -- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica) - -### v2.43.0 (2014/09/18) -- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood) -- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot) -- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp) -- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON) -- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen) - -### v2.42.0 (2014/09/04) -- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs) - -### v2.41.0 (2014/09/04) -- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker) -- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg) -- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts) -- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom) -- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom) -- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen) -- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen) -- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky) -- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen) -- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink) -- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin) -- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway) -- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott) -- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal) -- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz, @mafintosh, @lalitkapoor, @stash, @bobyrizov) -- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott) -- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki) -- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal) -- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19) -- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm) -- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl, @hyjin) - -### v2.40.0 (2014/08/06) -- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja) -- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree) -- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna) - -### v2.39.0 (2014/07/24) -- [#976](https://github.com/request/request/pull/976) Update README.md (@pvoznenko) - -### v2.38.0 (2014/07/22) -- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked) -- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung) -- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx) -- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen) -- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid) -- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu) -- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy) -- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow) - -### v2.37.0 (2014/07/07) -- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson) -- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne) -- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid) -- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd) -- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm) -- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm) -- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone) -- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob) - -### v2.35.0 (2014/05/17) -- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla) -- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof) -- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor) -- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn) -- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv) -- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny) -- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700) -- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody) -- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil) -- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND) -- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw) -- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor) - -### v2.34.0 (2014/02/18) -- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi) -- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor) -- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival) -- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul) -- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo) -- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo) - -### v2.32.0 (2014/01/16) -- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash) -- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov) -- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash) -- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor) -- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh) - -### v2.31.0 (2014/01/08) -- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick) -- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish) -- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay) -- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx) -- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay) -- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki) - -### v2.30.0 (2013/12/13) -- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium) -- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi) -- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow) - -### v2.29.0 (2013/12/06) -- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris) - -### v2.28.0 (2013/12/04) -- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort) -- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@unsetbit) -- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub) -- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak) -- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin) -- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink) -- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario) -- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87) -- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87) -- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren) -- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong) -- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario) -- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar) -- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm) -- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl) - -### v2.27.0 (2013/08/15) -- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo) - -### v2.26.0 (2013/08/07) -- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander) -- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker) - -### v2.24.0 (2013/07/23) -- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath) -- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK) -- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko) - -### v2.23.0 (2013/07/23) -- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek) -- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone) - -### v2.22.0 (2013/07/05) -- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn) -- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy) -- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette) -- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz) -- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub) -- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality) - -### v2.21.0 (2013/04/30) -- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando) -- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva) -- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath) -- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi) -- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway421) -- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka) - -### v2.17.0 (2013/04/22) -- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway421) -- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway421) -- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun) -- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn) -- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen) -- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs) -- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1) -- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy) -- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins) -- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas) -- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH) -- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore) -- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs) -- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski) -- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin) -- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse) -- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya) -- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse) -- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn, @nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh) -- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann, @isaacs, @mscdex) -- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar) -- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack) -- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki) -- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf) -- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem) -- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen) -- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki) -- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki) -- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23) -- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro) -- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-) -- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan) -- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock) -- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy) -- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge) -- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge) -- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf) -- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall) -- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall) -- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins) -- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier) -- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman) -- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup) -- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf) -- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris) -- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo) -- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@strk) -- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs) -- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs) -- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex) -- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs) -- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1) -- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs) -- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas) -- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono, @timshadel, @naholyr, @nanodocumet, @TehShrike) -- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry) -- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek) -- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock) -- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin) -- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh) -- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike) -- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet) -- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr) -- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel) -- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel) -- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges, @polotek, @zephrax, @jeromegn) -- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1) -- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter) -- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn) -- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax) -- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek) -- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso) -- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom) -- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup) -- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@milewise) -- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs) -- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs) -- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs) -- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker) -- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay) -- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty) -- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63) -- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63) -- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack) -- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63) -- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes) -- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby) -- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou) -- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov) -- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes) -- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh) -- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace) -- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim) -- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy) -- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf) -- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson) -- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs) -- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom) -- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman) -- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden) -- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs) -- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@kkaefer) -- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr) -- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex) -- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs) -- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs) -- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough) -- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs) -- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup) -- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs, @aheckmann) -- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs) -- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs) -- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann) -- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod) -- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin) -- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort) -- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli) -- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers) \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CONTRIBUTING.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CONTRIBUTING.md deleted file mode 100644 index 06b1968d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/CONTRIBUTING.md +++ /dev/null @@ -1,44 +0,0 @@ -# This is an OPEN Open Source Project - ------------------------------------------ - -## What? - -Individuals making significant and valuable contributions are given -commit-access to the project to contribute as they see fit. This project is -more like an open wiki than a standard guarded open source project. - -## Rules - -There are a few basic ground-rules for contributors: - -1. **No `--force` pushes** or modifying the Git history in any way. -1. **Non-master branches** ought to be used for ongoing work. -1. **External API changes and significant modifications** ought to be subject - to an **internal pull-request** to solicit feedback from other contributors. -1. Internal pull-requests to solicit feedback are *encouraged* for any other - non-trivial contribution but left to the discretion of the contributor. -1. For significant changes wait a full 24 hours before merging so that active - contributors who are distributed throughout the world have a chance to weigh - in. -1. Contributors should attempt to adhere to the prevailing code-style. -1. Run `npm test` locally before submitting your PR, to catch any easy to miss - style & testing issues. To diagnose test failures, there are two ways to - run a single test file: - - `node_modules/.bin/taper tests/test-file.js` - run using the default - [`taper`](https://github.com/nylen/taper) test reporter. - - `node tests/test-file.js` - view the raw - [tap](https://testanything.org/) output. - - -## Releases - -Declaring formal releases remains the prerogative of the project maintainer. - -## Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be -subject to pull-requests or changes by contributors where you believe you have -something valuable to add or change. - ------------------------------------------ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/README.md deleted file mode 100644 index 77e30df5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/README.md +++ /dev/null @@ -1,1094 +0,0 @@ - -# Request - Simplified HTTP client - -[![npm package](https://nodei.co/npm/request.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/request/) - -[![Build status](https://img.shields.io/travis/request/request.svg?style=flat-square)](https://travis-ci.org/request/request) -[![Coverage](https://img.shields.io/codecov/c/github/request/request.svg?style=flat-square)](https://codecov.io/github/request/request?branch=master) -[![Coverage](https://img.shields.io/coveralls/request/request.svg?style=flat-square)](https://coveralls.io/r/request/request) -[![Dependency Status](https://img.shields.io/david/request/request.svg?style=flat-square)](https://david-dm.org/request/request) -[![Gitter](https://img.shields.io/badge/gitter-join_chat-blue.svg?style=flat-square)](https://gitter.im/request/request?utm_source=badge) - - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```js -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Show the HTML for the Google homepage. - } -}) -``` - - -## Table of contents - -- [Streaming](#streaming) -- [Forms](#forms) -- [HTTP Authentication](#http-authentication) -- [Custom HTTP Headers](#custom-http-headers) -- [OAuth Signing](#oauth-signing) -- [Proxies](#proxies) -- [Unix Domain Sockets](#unix-domain-sockets) -- [TLS/SSL Protocol](#tlsssl-protocol) -- [Support for HAR 1.2](#support-for-har-12) -- [**All Available Options**](#requestoptions-callback) - -Request also offers [convenience methods](#convenience-methods) like -`request.defaults` and `request.post`, and there are -lots of [usage examples](#examples) and several -[debugging techniques](#debugging). - - ---- - - -## Streaming - -You can stream any response to a file stream. - -```js -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```js -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```js -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](http://nodejs.org/api/http.html#http_http_incomingmessage). - -```js -request - .get('http://google.com/img.png') - .on('response', function(response) { - console.log(response.statusCode) // 200 - console.log(response.headers['content-type']) // 'image/png' - }) - .pipe(request.put('http://mysite.com/img.png')) -``` - -To easily handle errors when streaming requests, listen to the `error` event before piping: - -```js -request - .get('http://mysite.com/doodle.png') - .on('error', function(err) { - console.log(err) - }) - .pipe(fs.createWriteStream('doodle.png')) -``` - -Now let’s get fancy. - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```js -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```js -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -[back to top](#table-of-contents) - - ---- - - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - - -#### application/x-www-form-urlencoded (URL-Encoded Forms) - -URL-encoded forms are simple. - -```js -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -// or -request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ }) -``` - - -#### multipart/form-data (Multipart Form Uploads) - -For `multipart/form-data` we use the [form-data](https://github.com/form-data/form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option. - - -```js -var formData = { - // Pass a simple key-value pair - my_field: 'my_value', - // Pass data via Buffers - my_buffer: new Buffer([1, 2, 3]), - // Pass data via Streams - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), - // Pass multiple values /w an Array - attachments: [ - fs.createReadStream(__dirname + '/attachment1.jpg'), - fs.createReadStream(__dirname + '/attachment2.jpg') - ], - // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS} - // Use case: for some types of streams, you'll need to provide "file"-related information manually. - // See the `form-data` README for more information about options: https://github.com/form-data/form-data - custom_file: { - value: fs.createReadStream('/dev/urandom'), - options: { - filename: 'topsecret.jpg', - contentType: 'image/jpg' - } - } -}; -request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For advanced cases, you can access the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.) - -```js -// NOTE: Advanced use-case, for normal use see 'formData' usage above -var r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) {...}) -var form = r.form(); -form.append('my_field', 'my_value'); -form.append('my_buffer', new Buffer([1, 2, 3])); -form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'}); -``` -See the [form-data README](https://github.com/form-data/form-data) for more information & examples. - - -#### multipart/related - -Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options. - -```js - request({ - method: 'PUT', - preambleCRLF: true, - postambleCRLF: true, - uri: 'http://service.com/upload', - multipart: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' }, - { body: fs.createReadStream('image.png') } - ], - // alternatively pass an object containing additional options - multipart: { - chunked: false, - data: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' } - ] - } - }, - function (error, response, body) { - if (error) { - return console.error('upload failed:', error); - } - console.log('Upload successful! Server responded with:', body); - }) -``` - -[back to top](#table-of-contents) - - ---- - - -## HTTP Authentication - -```js -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -// or -request.get('http://some.server.com/').auth(null, null, true, 'bearerToken'); -// or -request.get('http://some.server.com/', { - 'auth': { - 'bearer': 'bearerToken' - } -}); -``` - -If passed as an option, `auth` should be a hash containing values: - -- `user` || `username` -- `pass` || `password` -- `sendImmediately` (optional) -- `bearer` (optional) - -The method form takes parameters -`auth(username, password, sendImmediately, bearer)`. - -`sendImmediately` defaults to `true`, which causes a basic or bearer -authentication header to be sent. If `sendImmediately` is `false`, then -`request` will retry with a proper authentication header after receiving a -`401` response from the server (which must contain a `WWW-Authenticate` header -indicating the required authentication method). - -Note that you can also specify basic authentication using the URL itself, as -detailed in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). Simply pass the -`user:password` before the host with an `@` sign: - -```js -var username = 'username', - password = 'password', - url = 'http://' + username + ':' + password + '@some.server.com'; - -request({url: url}, function (error, response, body) { - // Do more stuff with 'body' here -}); -``` - -Digest authentication is supported, but it only works with `sendImmediately` -set to `false`; otherwise `request` will send basic authentication on the -initial request, which will probably cause the request to fail. - -Bearer authentication is supported, and is activated when the `bearer` value is -available. The value may be either a `String` or a `Function` returning a -`String`. Using a function to supply the bearer token is particularly useful if -used in conjunction with `defaults` to allow a single function to supply the -last known token at the time of sending a request, or to compute one on the fly. - -[back to top](#table-of-contents) - - ---- - - -## Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```js -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/request/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -[back to top](#table-of-contents) - - ---- - - -## OAuth Signing - -[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The -default signing algorithm is -[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2): - -```js -// OAuth1.0 - 3-legged server side flow (Twitter example) -// step 1 -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - - // step 2 - var req_data = qs.parse(body) - var uri = 'https://api.twitter.com/oauth/authenticate' - + '?' + qs.stringify({oauth_token: req_data.oauth_token}) - // redirect the user to the authorize uri - - // step 3 - // after the user is redirected back to your server - var auth_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: auth_data.oauth_token - , token_secret: req_data.oauth_token_secret - , verifier: auth_data.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - // ready to make signed requests on behalf of the user - var perm_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_data.oauth_token - , token_secret: perm_data.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json' - , qs = - { screen_name: perm_data.screen_name - , user_id: perm_data.user_id - } - ; - request.get({url:url, oauth:oauth, qs:qs, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make -the following changes to the OAuth options object: -* Pass `signature_method : 'RSA-SHA1'` -* Instead of `consumer_secret`, specify a `private_key` string in - [PEM format](http://how2ssl.com/articles/working_with_pem_files/) - -For [PLAINTEXT signing](http://oauth.net/core/1.0/#anchor22), make -the following changes to the OAuth options object: -* Pass `signature_method : 'PLAINTEXT'` - -To send OAuth parameters via query params or in a post body as described in The -[Consumer Request Parameters](http://oauth.net/core/1.0/#consumer_req_param) -section of the oauth1 spec: -* Pass `transport_method : 'query'` or `transport_method : 'body'` in the OAuth - options object. -* `transport_method` defaults to `'header'` - -To use [Request Body Hash](https://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html) you can either -* Manually generate the body hash and pass it as a string `body_hash: '...'` -* Automatically generate the body hash by passing `body_hash: true` - -[back to top](#table-of-contents) - - ---- - - -## Proxies - -If you specify a `proxy` option, then the request (and any subsequent -redirects) will be sent via a connection to the proxy server. - -If your endpoint is an `https` url, and you are using a proxy, then -request will send a `CONNECT` request to the proxy server *first*, and -then use the supplied connection to connect to the endpoint. - -That is, first it will make a request like: - -``` -HTTP/1.1 CONNECT endpoint-server.com:80 -Host: proxy-server.com -User-Agent: whatever user agent you specify -``` - -and then the proxy server make a TCP connection to `endpoint-server` -on port `80`, and return a response that looks like: - -``` -HTTP/1.1 200 OK -``` - -At this point, the connection is left open, and the client is -communicating directly with the `endpoint-server.com` machine. - -See [the wikipedia page on HTTP Tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel) -for more information. - -By default, when proxying `http` traffic, request will simply make a -standard proxied `http` request. This is done by making the `url` -section of the initial line of the request a fully qualified url to -the endpoint. - -For example, it will make a single request that looks like: - -``` -HTTP/1.1 GET http://endpoint-server.com/some-url -Host: proxy-server.com -Other-Headers: all go here - -request body or whatever -``` - -Because a pure "http over http" tunnel offers no additional security -or other features, it is generally simpler to go with a -straightforward HTTP proxy in this case. However, if you would like -to force a tunneling proxy, you may set the `tunnel` option to `true`. - -You can also make a standard proxied `http` request by explicitly setting -`tunnel : false`, but **note that this will allow the proxy to see the traffic -to/from the destination server**. - -If you are using a tunneling proxy, you may set the -`proxyHeaderWhiteList` to share certain headers with the proxy. - -You can also set the `proxyHeaderExclusiveList` to share certain -headers only with the proxy and not with destination host. - -By default, this set is: - -``` -accept -accept-charset -accept-encoding -accept-language -accept-ranges -cache-control -content-encoding -content-language -content-length -content-location -content-md5 -content-range -content-type -connection -date -expect -max-forwards -pragma -proxy-authorization -referer -te -transfer-encoding -user-agent -via -``` - -Note that, when using a tunneling proxy, the `proxy-authorization` -header and any headers from custom `proxyHeaderExclusiveList` are -*never* sent to the endpoint server, but only to the proxy server. - - -### Controlling proxy behaviour using environment variables - -The following environment variables are respected by `request`: - - * `HTTP_PROXY` / `http_proxy` - * `HTTPS_PROXY` / `https_proxy` - * `NO_PROXY` / `no_proxy` - -When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request. - -`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables. - -Here's some examples of valid `no_proxy` values: - - * `google.com` - don't proxy HTTP/HTTPS requests to Google. - * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google. - * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo! - * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether. - -[back to top](#table-of-contents) - - ---- - - -## UNIX Domain Sockets - -`request` supports making requests to [UNIX Domain Sockets](https://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme: - -```js -/* Pattern */ 'http://unix:SOCKET:PATH' -/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path') -``` - -Note: The `SOCKET` path is assumed to be absolute to the root of the host file system. - -[back to top](#table-of-contents) - - ---- - - -## TLS/SSL Protocol - -TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be -set directly in `options` object, in the `agentOptions` property of the `options` object, or even in `https.globalAgent.options`. Keep in mind that, although `agentOptions` allows for a slightly wider range of configurations, the recommended way is via `options` object directly, as using `agentOptions` or `https.globalAgent.options` would not be applied in the same way in proxied environments (as data travels through a TLS connection instead of an http/https agent). - -```js -var fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , caFile = path.resolve(__dirname, 'ssl/ca.cert.pem') - , request = require('request'); - -var options = { - url: 'https://api.some-server.com/', - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - passphrase: 'password', - ca: fs.readFileSync(caFile) - } -}; - -request.get(options); -``` - -### Using `options.agentOptions` - -In the example below, we call an API requires client side SSL certificate -(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol: - -```js -var fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , request = require('request'); - -var options = { - url: 'https://api.some-server.com/', - agentOptions: { - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format: - // pfx: fs.readFileSync(pfxFilePath), - passphrase: 'password', - securityOptions: 'SSL_OP_NO_SSLv3' - } -}; - -request.get(options); -``` - -It is able to force using SSLv3 only by specifying `secureProtocol`: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - secureProtocol: 'SSLv3_method' - } -}); -``` - -It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs). -This can be useful, for example, when using self-signed certificates. -To require a different root certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`. -The certificate the domain presents must be signed by the root certificate specified: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - ca: fs.readFileSync('ca.cert.pem') - } -}); -``` - -[back to top](#table-of-contents) - - ---- - -## Support for HAR 1.2 - -The `options.har` property will override the values: `url`, `method`, `qs`, `headers`, `form`, `formData`, `body`, `json`, as well as construct multipart data and read files from disk when `request.postData.params[].fileName` is present without a matching `value`. - -a validation step will check if the HAR Request format matches the latest spec (v1.2) and will skip parsing if not matching. - -```js - var request = require('request') - request({ - // will be ignored - method: 'GET', - uri: 'http://www.google.com', - - // HTTP Archive Request Object - har: { - url: 'http://www.mockbin.com/har', - method: 'POST', - headers: [ - { - name: 'content-type', - value: 'application/x-www-form-urlencoded' - } - ], - postData: { - mimeType: 'application/x-www-form-urlencoded', - params: [ - { - name: 'foo', - value: 'bar' - }, - { - name: 'hello', - value: 'world' - } - ] - } - } - }) - - // a POST request will be sent to http://www.mockbin.com - // with body an application/x-www-form-urlencoded body: - // foo=bar&hello=world -``` - -[back to top](#table-of-contents) - - ---- - -## request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -- `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -- `baseUrl` - fully qualified uri string used as the base url. Most useful with `request.defaults`, for example when you want to do many requests to the same domain. If `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/api/end/point?test=true`. When `baseUrl` is given, `uri` must also be a string. -- `method` - http method (default: `"GET"`) -- `headers` - http headers (default: `{}`) - ---- - -- `qs` - object containing querystring values to be appended to the `uri` -- `qsParseOptions` - object containing options to pass to the [qs.parse](https://github.com/hapijs/qs#parsing-objects) method. Alternatively pass options to the [querystring.parse](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}` -- `qsStringifyOptions` - object containing options to pass to the [qs.stringify](https://github.com/hapijs/qs#stringifying) method. Alternatively pass options to the [querystring.stringify](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`. For example, to change the way arrays are converted to query strings using the `qs` module pass the `arrayFormat` option with one of `indices|brackets|repeat` -- `useQuerystring` - If true, use `querystring` to stringify and parse - querystrings, otherwise use `qs` (default: `false`). Set this option to - `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the - default `foo[0]=bar&foo[1]=baz`. - ---- - -- `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`, unless `json` is `true`. If `json` is `true`, then `body` must be a JSON-serializable object. -- `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above. -- `formData` - Data to pass for a `multipart/form-data` request. See - [Forms](#forms) section above. -- `multipart` - array of objects which contain their own headers and `body` - attributes. Sends a `multipart/related` request. See [Forms](#forms) section - above. - - Alternatively you can pass in an object `{chunked: false, data: []}` where - `chunked` is used to specify whether the request is sent in - [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) - In non-chunked requests, data items with body streams are not allowed. -- `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request. -- `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request. -- `json` - sets `body` to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -- `jsonReviver` - a [reviver function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) that will be passed to `JSON.parse()` when parsing a JSON response body. - ---- - -- `auth` - A hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above. -- `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -- `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -- `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -- `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. - ---- - -- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. -- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -- `maxRedirects` - the maximum number of redirects to follow (default: `10`) -- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). **Note:** if true, referer header set in the initial request is preserved during redirect chain. - ---- - -- `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). (**Note:** if you expect binary data, you should set `encoding: null`.) -- `gzip` - If `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below. -- `jar` - If `true`, remember cookies for future use (or define your custom cookie jar; see examples section) - ---- - -- `agent` - `http(s).Agent` instance to use -- `agentClass` - alternatively specify your agent's class name -- `agentOptions` - and pass its options. **Note:** for HTTPS see [tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback) and the [documentation above](#using-optionsagentoptions). -- `forever` - set to `true` to use the [forever-agent](https://github.com/request/forever-agent) **Note:** Defaults to `http(s).Agent({keepAlive:true})` in node 0.12+ -- `pool` - An object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as your options allow for it). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. **Note:** `pool` is used only when the `agent` option is not specified. - - A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`). - - Note that if you are sending multiple requests in a loop and creating - multiple new `pool` objects, `maxSockets` will not work as intended. To - work around this, either use [`request.defaults`](#requestdefaultsoptions) - with your pool options or create the pool object with the `maxSockets` - property outside of the loop. -- `timeout` - Integer containing the number of milliseconds to wait for a -server to send response headers (and start the response body) before aborting -the request. Note that if the underlying TCP connection cannot be established, -the OS-wide TCP connection timeout will overrule the `timeout` option ([the -default in Linux can be anywhere from 20-120 seconds][linux-timeout]). - -[linux-timeout]: http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout - ---- - -- `localAddress` - Local interface to bind for network connections. -- `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -- `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -- `tunnel` - controls the behavior of - [HTTP `CONNECT` tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling) - as follows: - - `undefined` (default) - `true` if the destination is `https`, `false` otherwise - - `true` - always tunnel to the destination by making a `CONNECT` request to - the proxy - - `false` - request the destination as a `GET` request. -- `proxyHeaderWhiteList` - A whitelist of headers to send to a - tunneling proxy. -- `proxyHeaderExclusiveList` - A whitelist of headers to send - exclusively to a tunneling proxy and not to destination. - ---- - -- `time` - If `true`, the request-response cycle (including all redirects) is timed at millisecond resolution, and the result provided on the response's `elapsedTime` property. -- `har` - A [HAR 1.2 Request Object](http://www.softwareishard.com/blog/har-12-spec/#request), will be processed from HAR format into options overwriting matching values *(see the [HAR 1.2 section](#support-for-har-1.2) for details)* - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -[back to top](#table-of-contents) - - ---- - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - - -### request.defaults(options) - -This method **returns a wrapper** around the normal request API that defaults -to whatever options you pass to it. - -**Note:** `request.defaults()` **does not** modify the global request API; -instead, it **returns a wrapper** that has your default settings applied to it. - -**Note:** You can call `.defaults()` on the wrapper that is returned from -`request.defaults` to add/override defaults that were previously defaulted. - -For example: -```js -//requests using baseRequest() will set the 'x-token' header -var baseRequest = request.defaults({ - headers: {'x-token': 'my-token'} -}) - -//requests using specialRequest() will include the 'x-token' header set in -//baseRequest and will also include the 'special' header -var specialRequest = baseRequest.defaults({ - headers: {special: 'special value'} -}) -``` - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```js -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```js -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```js -request.post(url) -``` - -### request.head - -Same as `request()`, but defaults to `method: "HEAD"`. - -```js -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```js -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```js -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```js -request.cookie('key1=value1') -``` -### request.jar() - -Function that creates a new cookie jar. - -```js -request.jar() -``` - -[back to top](#table-of-contents) - - ---- - - -## Debugging - -There are at least three ways to debug the operation of `request`: - -1. Launch the node process like `NODE_DEBUG=request node script.js` - (`lib,request,otherlib` works too). - -2. Set `require('request').debug = true` at any time (this does the same thing - as #1). - -3. Use the [request-debug module](https://github.com/request/request-debug) to - view request and response headers and bodies. - -[back to top](#table-of-contents) - - ---- - -## Timeouts - -Most requests to external servers should have a timeout attached, in case the -server is not responding in a timely manner. Without a timeout, your code may -have a socket open/consume resources for minutes or more. - -There are two main types of timeouts: **connection timeouts** and **read -timeouts**. A connect timeout occurs if the timeout is hit while your client is -attempting to establish a connection to a remote machine (corresponding to the -[connect() call][connect] on the socket). A read timeout occurs any time the -server is too slow to send back a part of the response. - -These two situations have widely different implications for what went wrong -with the request, so it's useful to be able to distinguish them. You can detect -timeout errors by checking `err.code` for an 'ETIMEDOUT' value. Further, you -can detect whether the timeout was a connection timeout by checking if the -`err.connect` property is set to `true`. - -```js -request.get('http://10.255.255.1', {timeout: 1500}, function(err) { - console.log(err.code === 'ETIMEDOUT'); - // Set to `true` if the timeout was a connection timeout, `false` or - // `undefined` otherwise. - console.log(err.connect === true); - process.exit(0); -}); -``` - -[connect]: http://linux.die.net/man/2/connect - -## Examples: - -```js - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -For backwards-compatibility, response compression is not supported by default. -To accept gzip-compressed responses, set the `gzip` option to `true`. Note -that the body data passed through `request` is automatically decompressed -while the response object is unmodified and will contain compressed data if -the server sent a compressed response. - -```js - var request = require('request') - request( - { method: 'GET' - , uri: 'http://www.google.com' - , gzip: true - } - , function (error, response, body) { - // body is the decompressed response body - console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity')) - console.log('the decoded data is: ' + body) - } - ).on('data', function(data) { - // decompressed data as it is received - console.log('decoded chunk: ' + data) - }) - .on('response', function(response) { - // unmodified http.IncomingMessage object - response.on('data', function(data) { - // compressed data as it is received - console.log('received ' + data.length + ' bytes of compressed data') - }) - }) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`). - -```js -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```js -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -OR - -```js -var j = request.jar(); -var cookie = request.cookie('key1=value1'); -var url = 'http://www.google.com'; -j.setCookie(cookie, url); -request({url: url, jar: j}, function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie store (such as a -[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore) -which supports saving to and restoring from JSON files), pass it as a parameter -to `request.jar()`: - -```js -var FileCookieStore = require('tough-cookie-filestore'); -// NOTE - currently the 'cookies.json' file must already exist! -var j = request.jar(new FileCookieStore('cookies.json')); -request = request.defaults({ jar : j }) -request('http://www.google.com', function() { - request('http://images.google.com') -}) -``` - -The cookie store must be a -[`tough-cookie`](https://github.com/SalesforceEng/tough-cookie) -store and it must support synchronous operations; see the -[`CookieStore` API docs](https://github.com/SalesforceEng/tough-cookie#cookiestore-api) -for details. - -To inspect your cookie jar after a request: - -```js -var j = request.jar() -request({url: 'http://www.google.com', jar: j}, function () { - var cookie_string = j.getCookieString(url); // "key1=value1; key2=value2; ..." - var cookies = j.getCookies(url); - // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...] -}) -``` - -[back to top](#table-of-contents) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/index.js deleted file mode 100755 index 4d0c748d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/index.js +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// 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. - -'use strict' - -var extend = require('extend') - , cookies = require('./lib/cookies') - , helpers = require('./lib/helpers') - -var isFunction = helpers.isFunction - , paramsHaveRequestBody = helpers.paramsHaveRequestBody - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - if (typeof options === 'function') { - callback = options - } - - var params = {} - if (typeof options === 'object') { - extend(params, options, {uri: uri}) - } else if (typeof uri === 'string') { - extend(params, {uri: uri}) - } else { - extend(params, uri) - } - - params.callback = callback - return params -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') { - throw new Error('undefined is not a valid uri or options object.') - } - - var params = initParams(uri, options, callback) - - if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { - throw new Error('HTTP HEAD requests MUST NOT include a request body.') - } - - return new request.Request(params) -} - -function verbFunc (verb) { - var method = verb === 'del' ? 'DELETE' : verb.toUpperCase() - return function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.method = method - return request(params, params.callback) - } -} - -// define like this to please codeintel/intellisense IDEs -request.get = verbFunc('get') -request.head = verbFunc('head') -request.post = verbFunc('post') -request.put = verbFunc('put') -request.patch = verbFunc('patch') -request.del = verbFunc('del') - -request.jar = function (store) { - return cookies.jar(store) -} - -request.cookie = function (str) { - return cookies.parse(str) -} - -function wrapRequestMethod (method, options, requester, verb) { - - return function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - - var target = {} - extend(true, target, options, params) - - target.pool = params.pool || options.pool - - if (verb) { - target.method = (verb === 'del' ? 'DELETE' : verb.toUpperCase()) - } - - if (isFunction(requester)) { - method = requester - } - - return method(target, target.callback) - } -} - -request.defaults = function (options, requester) { - var self = this - - options = options || {} - - if (typeof options === 'function') { - requester = options - options = {} - } - - var defaults = wrapRequestMethod(self, options, requester) - - var verbs = ['get', 'head', 'post', 'put', 'patch', 'del'] - verbs.forEach(function(verb) { - defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) - }) - - defaults.cookie = wrapRequestMethod(self.cookie, options, requester) - defaults.jar = self.jar - defaults.defaults = self.defaults - return defaults -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - extend(options, optionsArg) - } - if (agentOptions) { - options.agentOptions = agentOptions - } - - options.forever = true - return request.defaults(options) -} - -// Exports - -module.exports = request -request.Request = require('./request') -request.initParams = initParams - -// Backwards compatibility for request.debug -Object.defineProperty(request, 'debug', { - enumerable : true, - get : function() { - return request.Request.debug - }, - set : function(debug) { - request.Request.debug = debug - } -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/auth.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/auth.js deleted file mode 100644 index 1cb69521..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/auth.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict' - -var caseless = require('caseless') - , uuid = require('node-uuid') - , helpers = require('./helpers') - -var md5 = helpers.md5 - , toBase64 = helpers.toBase64 - - -function Auth (request) { - // define all public properties here - this.request = request - this.hasAuth = false - this.sentAuth = false - this.bearerToken = null - this.user = null - this.pass = null -} - -Auth.prototype.basic = function (user, pass, sendImmediately) { - var self = this - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - self.request.emit('error', new Error('auth() received invalid user or password')) - } - self.user = user - self.pass = pass - self.hasAuth = true - var header = user + ':' + (pass || '') - if (sendImmediately || typeof sendImmediately === 'undefined') { - var authHeader = 'Basic ' + toBase64(header) - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.bearer = function (bearer, sendImmediately) { - var self = this - self.bearerToken = bearer - self.hasAuth = true - if (sendImmediately || typeof sendImmediately === 'undefined') { - if (typeof bearer === 'function') { - bearer = bearer() - } - var authHeader = 'Bearer ' + (bearer || '') - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.digest = function (method, path, authHeader) { - // TODO: More complete implementation of RFC 2617. - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var self = this - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) { - break - } - challenge[match[1]] = match[2] || match[3] - } - - /** - * RFC 2617: handle both MD5 and MD5-sess algorithms. - * - * If the algorithm directive's value is "MD5" or unspecified, then HA1 is - * HA1=MD5(username:realm:password) - * If the algorithm directive's value is "MD5-sess", then HA1 is - * HA1=MD5(MD5(username:realm:password):nonce:cnonce) - */ - var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) { - var ha1 = md5(user + ':' + realm + ':' + pass) - if (algorithm && algorithm.toLowerCase() === 'md5-sess') { - return md5(ha1 + ':' + nonce + ':' + cnonce) - } else { - return ha1 - } - } - - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce) - var ha2 = md5(method + ':' + path) - var digestResponse = qop - ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) - : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self.user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (authValues[k]) { - if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.sentAuth = true - return authHeader -} - -Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { - var self = this - , request = self.request - - var authHeader - if (bearer === undefined && user === undefined) { - self.request.emit('error', new Error('no auth mechanism defined')) - } else if (bearer !== undefined) { - authHeader = self.bearer(bearer, sendImmediately) - } else { - authHeader = self.basic(user, pass, sendImmediately) - } - if (authHeader) { - request.setHeader('authorization', authHeader) - } -} - -Auth.prototype.onResponse = function (response) { - var self = this - , request = self.request - - if (!self.hasAuth || self.sentAuth) { return null } - - var c = caseless(response.headers) - - var authHeader = c.get('www-authenticate') - var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() - request.debug('reauth', authVerb) - - switch (authVerb) { - case 'basic': - return self.basic(self.user, self.pass, true) - - case 'bearer': - return self.bearer(self.bearerToken, true) - - case 'digest': - return self.digest(request.method, request.path, authHeader) - } -} - -exports.Auth = Auth diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/cookies.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/cookies.js deleted file mode 100644 index 412c07d6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/cookies.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -var tough = require('tough-cookie') - -var Cookie = tough.Cookie - , CookieJar = tough.CookieJar - - -exports.parse = function(str) { - if (str && str.uri) { - str = str.uri - } - if (typeof str !== 'string') { - throw new Error('The cookie function only accepts STRING as param') - } - return Cookie.parse(str, {loose: true}) -} - -// Adapt the sometimes-Async api of tough.CookieJar to our requirements -function RequestJar(store) { - var self = this - self._jar = new CookieJar(store, {looseMode: true}) -} -RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) { - var self = this - return self._jar.setCookieSync(cookieOrStr, uri, options || {}) -} -RequestJar.prototype.getCookieString = function(uri) { - var self = this - return self._jar.getCookieStringSync(uri) -} -RequestJar.prototype.getCookies = function(uri) { - var self = this - return self._jar.getCookiesSync(uri) -} - -exports.jar = function(store) { - return new RequestJar(store) -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/getProxyFromURI.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/getProxyFromURI.js deleted file mode 100644 index c2013a6e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/getProxyFromURI.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict' - -function formatHostname(hostname) { - // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' - return hostname.replace(/^\.*/, '.').toLowerCase() -} - -function parseNoProxyZone(zone) { - zone = zone.trim().toLowerCase() - - var zoneParts = zone.split(':', 2) - , zoneHost = formatHostname(zoneParts[0]) - , zonePort = zoneParts[1] - , hasPort = zone.indexOf(':') > -1 - - return {hostname: zoneHost, port: zonePort, hasPort: hasPort} -} - -function uriInNoProxy(uri, noProxy) { - var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') - , hostname = formatHostname(uri.hostname) - , noProxyList = noProxy.split(',') - - // iterate through the noProxyList until it finds a match. - return noProxyList.map(parseNoProxyZone).some(function(noProxyZone) { - var isMatchedAt = hostname.indexOf(noProxyZone.hostname) - , hostnameMatched = ( - isMatchedAt > -1 && - (isMatchedAt === hostname.length - noProxyZone.hostname.length) - ) - - if (noProxyZone.hasPort) { - return (port === noProxyZone.port) && hostnameMatched - } - - return hostnameMatched - }) -} - -function getProxyFromURI(uri) { - // Decide the proper request proxy to use based on the request URI object and the - // environmental variables (NO_PROXY, HTTP_PROXY, etc.) - // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) - - var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' - - // if the noProxy is a wildcard then return null - - if (noProxy === '*') { - return null - } - - // if the noProxy is not empty and the uri is found return null - - if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { - return null - } - - // Check for HTTP or HTTPS Proxy in environment Else default to null - - if (uri.protocol === 'http:') { - return process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - if (uri.protocol === 'https:') { - return process.env.HTTPS_PROXY || - process.env.https_proxy || - process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - // if none of that works, return null - // (What uri protocol are you using then?) - - return null -} - -module.exports = getProxyFromURI diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/har.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/har.js deleted file mode 100644 index ceb1cd10..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/har.js +++ /dev/null @@ -1,214 +0,0 @@ -'use strict' - -var fs = require('fs') -var qs = require('querystring') -var validate = require('har-validator') -var util = require('util') - -function Har (request) { - this.request = request -} - -Har.prototype.reducer = function (obj, pair) { - // new property ? - if (obj[pair.name] === undefined) { - obj[pair.name] = pair.value - return obj - } - - // existing? convert to array - var arr = [ - obj[pair.name], - pair.value - ] - - obj[pair.name] = arr - - return obj -} - -Har.prototype.prep = function (data) { - // construct utility properties - data.queryObj = {} - data.headersObj = {} - data.postData.jsonObj = false - data.postData.paramsObj = false - - // construct query objects - if (data.queryString && data.queryString.length) { - data.queryObj = data.queryString.reduce(this.reducer, {}) - } - - // construct headers objects - if (data.headers && data.headers.length) { - // loweCase header keys - data.headersObj = data.headers.reduceRight(function (headers, header) { - headers[header.name] = header.value - return headers - }, {}) - } - - // construct Cookie header - if (data.cookies && data.cookies.length) { - var cookies = data.cookies.map(function (cookie) { - return cookie.name + '=' + cookie.value - }) - - if (cookies.length) { - data.headersObj.cookie = cookies.join('; ') - } - } - - // prep body - function some (arr) { - return arr.some(function (type) { - return data.postData.mimeType.indexOf(type) === 0 - }) - } - - if (some([ - 'multipart/mixed', - 'multipart/related', - 'multipart/form-data', - 'multipart/alternative'])) { - - // reset values - data.postData.mimeType = 'multipart/form-data' - } - - else if (some([ - 'application/x-www-form-urlencoded'])) { - - if (!data.postData.params) { - data.postData.text = '' - } else { - data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) - - // always overwrite - data.postData.text = qs.stringify(data.postData.paramsObj) - } - } - - else if (some([ - 'text/json', - 'text/x-json', - 'application/json', - 'application/x-json'])) { - - data.postData.mimeType = 'application/json' - - if (data.postData.text) { - try { - data.postData.jsonObj = JSON.parse(data.postData.text) - } catch (e) { - this.request.debug(e) - - // force back to text/plain - data.postData.mimeType = 'text/plain' - } - } - } - - return data -} - -Har.prototype.options = function (options) { - // skip if no har property defined - if (!options.har) { - return options - } - - var har = util._extend({}, options.har) - - // only process the first entry - if (har.log && har.log.entries) { - har = har.log.entries[0] - } - - // add optional properties to make validation successful - har.url = har.url || options.url || options.uri || options.baseUrl || '/' - har.httpVersion = har.httpVersion || 'HTTP/1.1' - har.queryString = har.queryString || [] - har.headers = har.headers || [] - har.cookies = har.cookies || [] - har.postData = har.postData || {} - har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' - - har.bodySize = 0 - har.headersSize = 0 - har.postData.size = 0 - - if (!validate.request(har)) { - return options - } - - // clean up and get some utility properties - var req = this.prep(har) - - // construct new options - if (req.url) { - options.url = req.url - } - - if (req.method) { - options.method = req.method - } - - if (Object.keys(req.queryObj).length) { - options.qs = req.queryObj - } - - if (Object.keys(req.headersObj).length) { - options.headers = req.headersObj - } - - function test (type) { - return req.postData.mimeType.indexOf(type) === 0 - } - if (test('application/x-www-form-urlencoded')) { - options.form = req.postData.paramsObj - } - else if (test('application/json')) { - if (req.postData.jsonObj) { - options.body = req.postData.jsonObj - options.json = true - } - } - else if (test('multipart/form-data')) { - options.formData = {} - - req.postData.params.forEach(function (param) { - var attachment = {} - - if (!param.fileName && !param.fileName && !param.contentType) { - options.formData[param.name] = param.value - return - } - - // attempt to read from disk! - if (param.fileName && !param.value) { - attachment.value = fs.createReadStream(param.fileName) - } else if (param.value) { - attachment.value = param.value - } - - if (param.fileName) { - attachment.options = { - filename: param.fileName, - contentType: param.contentType ? param.contentType : null - } - } - - options.formData[param.name] = attachment - }) - } - else { - if (req.postData.text) { - options.body = req.postData.text - } - } - - return options -} - -exports.Har = Har diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/helpers.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/helpers.js deleted file mode 100644 index 5e859460..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/helpers.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict' - -var jsonSafeStringify = require('json-stringify-safe') - , crypto = require('crypto') - -function deferMethod() { - if (typeof setImmediate === 'undefined') { - return process.nextTick - } - - return setImmediate -} - -function isFunction(value) { - return typeof value === 'function' -} - -function paramsHaveRequestBody(params) { - return ( - params.body || - params.requestBodyStream || - (params.json && typeof params.json !== 'boolean') || - params.multipart - ) -} - -function safeStringify (obj) { - var ret - try { - ret = JSON.stringify(obj) - } catch (e) { - ret = jsonSafeStringify(obj) - } - return ret -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function isReadStream (rs) { - return rs.readable && rs.path && rs.mode -} - -function toBase64 (str) { - return (new Buffer(str || '', 'utf8')).toString('base64') -} - -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} - -function version () { - var numbers = process.version.replace('v', '').split('.') - return { - major: parseInt(numbers[0], 10), - minor: parseInt(numbers[1], 10), - patch: parseInt(numbers[2], 10) - } -} - -exports.isFunction = isFunction -exports.paramsHaveRequestBody = paramsHaveRequestBody -exports.safeStringify = safeStringify -exports.md5 = md5 -exports.isReadStream = isReadStream -exports.toBase64 = toBase64 -exports.copy = copy -exports.version = version -exports.defer = deferMethod() diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/multipart.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/multipart.js deleted file mode 100644 index 03618588..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/multipart.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict' - -var uuid = require('node-uuid') - , CombinedStream = require('combined-stream') - , isstream = require('isstream') - - -function Multipart (request) { - this.request = request - this.boundary = uuid() - this.chunked = false - this.body = null -} - -Multipart.prototype.isChunked = function (options) { - var self = this - , chunked = false - , parts = options.data || options - - if (!parts.forEach) { - self.request.emit('error', new Error('Argument error, options.multipart.')) - } - - if (options.chunked !== undefined) { - chunked = options.chunked - } - - if (self.request.getHeader('transfer-encoding') === 'chunked') { - chunked = true - } - - if (!chunked) { - parts.forEach(function (part) { - if (typeof part.body === 'undefined') { - self.request.emit('error', new Error('Body attribute missing in multipart.')) - } - if (isstream(part.body)) { - chunked = true - } - }) - } - - return chunked -} - -Multipart.prototype.setHeaders = function (chunked) { - var self = this - - if (chunked && !self.request.hasHeader('transfer-encoding')) { - self.request.setHeader('transfer-encoding', 'chunked') - } - - var header = self.request.getHeader('content-type') - - if (!header || header.indexOf('multipart') === -1) { - self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - if (header.indexOf('boundary') !== -1) { - self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') - } else { - self.request.setHeader('content-type', header + '; boundary=' + self.boundary) - } - } -} - -Multipart.prototype.build = function (parts, chunked) { - var self = this - var body = chunked ? new CombinedStream() : [] - - function add (part) { - return chunked ? body.append(part) : body.push(new Buffer(part)) - } - - if (self.request.preambleCRLF) { - add('\r\n') - } - - parts.forEach(function (part) { - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - if (key === 'body') { return } - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - add(preamble) - add(part.body) - add('\r\n') - }) - add('--' + self.boundary + '--') - - if (self.request.postambleCRLF) { - add('\r\n') - } - - return body -} - -Multipart.prototype.onRequest = function (options) { - var self = this - - var chunked = self.isChunked(options) - , parts = options.data || options - - self.setHeaders(chunked) - self.chunked = chunked - self.body = self.build(parts, chunked) -} - -exports.Multipart = Multipart diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/oauth.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/oauth.js deleted file mode 100644 index c24209b8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/oauth.js +++ /dev/null @@ -1,147 +0,0 @@ -'use strict' - -var url = require('url') - , qs = require('qs') - , caseless = require('caseless') - , uuid = require('node-uuid') - , oauth = require('oauth-sign') - , crypto = require('crypto') - - -function OAuth (request) { - this.request = request - this.params = null -} - -OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) { - var oa = {} - for (var i in _oauth) { - oa['oauth_' + i] = _oauth[i] - } - if (!oa.oauth_version) { - oa.oauth_version = '1.0' - } - if (!oa.oauth_timestamp) { - oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - } - if (!oa.oauth_nonce) { - oa.oauth_nonce = uuid().replace(/-/g, '') - } - if (!oa.oauth_signature_method) { - oa.oauth_signature_method = 'HMAC-SHA1' - } - - var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key - delete oa.oauth_consumer_secret - delete oa.oauth_private_key - - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - - var realm = oa.oauth_realm - delete oa.oauth_realm - delete oa.oauth_transport_method - - var baseurl = uri.protocol + '//' + uri.host + uri.pathname - var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&')) - - oa.oauth_signature = oauth.sign( - oa.oauth_signature_method, - method, - baseurl, - params, - consumer_secret_or_private_key, - token_secret) - - if (realm) { - oa.realm = realm - } - - return oa -} - -OAuth.prototype.buildBodyHash = function(_oauth, body) { - if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) { - this.request.emit('error', new Error('oauth: ' + _oauth.signature_method + - ' signature_method not supported with body_hash signing.')) - } - - var shasum = crypto.createHash('sha1') - shasum.update(body || '') - var sha1 = shasum.digest('hex') - - return new Buffer(sha1).toString('base64') -} - -OAuth.prototype.concatParams = function (oa, sep, wrap) { - wrap = wrap || '' - - var params = Object.keys(oa).filter(function (i) { - return i !== 'realm' && i !== 'oauth_signature' - }).sort() - - if (oa.realm) { - params.splice(0, 0, 'realm') - } - params.push('oauth_signature') - - return params.map(function (i) { - return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap - }).join(sep) -} - -OAuth.prototype.onRequest = function (_oauth) { - var self = this - self.params = _oauth - - var uri = self.request.uri || {} - , method = self.request.method || '' - , headers = caseless(self.request.headers) - , body = self.request.body || '' - , qsLib = self.request.qsLib || qs - - var form - , query - , contentType = headers.get('content-type') || '' - , formContentType = 'application/x-www-form-urlencoded' - , transport = _oauth.transport_method || 'header' - - if (contentType.slice(0, formContentType.length) === formContentType) { - contentType = formContentType - form = body - } - if (uri.query) { - query = uri.query - } - if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) { - self.request.emit('error', new Error('oauth: transport_method of body requires POST ' + - 'and content-type ' + formContentType)) - } - - if (!form && typeof _oauth.body_hash === 'boolean') { - _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString()) - } - - var oa = self.buildParams(_oauth, uri, method, query, form, qsLib) - - switch (transport) { - case 'header': - self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"')) - break - - case 'query': - var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&') - self.request.uri = url.parse(href) - self.request.path = self.request.uri.path - break - - case 'body': - self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&') - break - - default: - self.request.emit('error', new Error('oauth: transport_method invalid')) - } -} - -exports.OAuth = OAuth diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/querystring.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/querystring.js deleted file mode 100644 index baf5e802..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/querystring.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict' - -var qs = require('qs') - , querystring = require('querystring') - - -function Querystring (request) { - this.request = request - this.lib = null - this.useQuerystring = null - this.parseOptions = null - this.stringifyOptions = null -} - -Querystring.prototype.init = function (options) { - if (this.lib) {return} - - this.useQuerystring = options.useQuerystring - this.lib = (this.useQuerystring ? querystring : qs) - - this.parseOptions = options.qsParseOptions || {} - this.stringifyOptions = options.qsStringifyOptions || {} -} - -Querystring.prototype.stringify = function (obj) { - return (this.useQuerystring) - ? this.rfc3986(this.lib.stringify(obj, - this.stringifyOptions.sep || null, - this.stringifyOptions.eq || null, - this.stringifyOptions)) - : this.lib.stringify(obj, this.stringifyOptions) -} - -Querystring.prototype.parse = function (str) { - return (this.useQuerystring) - ? this.lib.parse(str, - this.parseOptions.sep || null, - this.parseOptions.eq || null, - this.parseOptions) - : this.lib.parse(str, this.parseOptions) -} - -Querystring.prototype.rfc3986 = function (str) { - return str.replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -Querystring.prototype.unescape = querystring.unescape - -exports.Querystring = Querystring diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/redirect.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/redirect.js deleted file mode 100644 index 040dfe0e..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/redirect.js +++ /dev/null @@ -1,153 +0,0 @@ -'use strict' - -var url = require('url') -var isUrl = /^https?:/ - -function Redirect (request) { - this.request = request - this.followRedirect = true - this.followRedirects = true - this.followAllRedirects = false - this.allowRedirect = function () {return true} - this.maxRedirects = 10 - this.redirects = [] - this.redirectsFollowed = 0 - this.removeRefererHeader = false -} - -Redirect.prototype.onRequest = function (options) { - var self = this - - if (options.maxRedirects !== undefined) { - self.maxRedirects = options.maxRedirects - } - if (typeof options.followRedirect === 'function') { - self.allowRedirect = options.followRedirect - } - if (options.followRedirect !== undefined) { - self.followRedirects = !!options.followRedirect - } - if (options.followAllRedirects !== undefined) { - self.followAllRedirects = options.followAllRedirects - } - if (self.followRedirects || self.followAllRedirects) { - self.redirects = self.redirects || [] - } - if (options.removeRefererHeader !== undefined) { - self.removeRefererHeader = options.removeRefererHeader - } -} - -Redirect.prototype.redirectTo = function (response) { - var self = this - , request = self.request - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { - var location = response.caseless.get('location') - request.debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirects) { - switch (request.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode === 401) { - var authHeader = request._auth.onResponse(response) - if (authHeader) { - request.setHeader('authorization', authHeader) - redirectTo = request.uri - } - } - return redirectTo -} - -Redirect.prototype.onResponse = function (response) { - var self = this - , request = self.request - - var redirectTo = self.redirectTo(response) - if (!redirectTo || !self.allowRedirect.call(request, response)) { - return false - } - - request.debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - // response.resume should be defined, but check anyway before calling. Workaround for browserify. - if (response.resume) { - response.resume() - } - - if (self.redirectsFollowed >= self.maxRedirects) { - request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) - return false - } - self.redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(request.uri.href, redirectTo) - } - - var uriPrev = request.uri - request.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (request.uri.protocol !== uriPrev.protocol) { - delete request.agent - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && request.method !== 'HEAD' - && response.statusCode !== 401 && response.statusCode !== 307) { - request.method = 'GET' - } - // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete request.src - delete request.req - delete request._started - if (response.statusCode !== 401 && response.statusCode !== 307) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete request.body - delete request._form - if (request.headers) { - request.removeHeader('host') - request.removeHeader('content-type') - request.removeHeader('content-length') - if (request.uri.hostname !== request.originalHost.split(':')[0]) { - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of curl: - // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 - request.removeHeader('authorization') - } - } - } - - if (!self.removeRefererHeader) { - request.setHeader('referer', uriPrev.href) - } - - request.emit('redirect') - - request.init() - - return true -} - -exports.Redirect = Redirect diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/tunnel.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/tunnel.js deleted file mode 100644 index 918aec69..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/lib/tunnel.js +++ /dev/null @@ -1,178 +0,0 @@ -'use strict' - -var url = require('url') - , tunnel = require('tunnel-agent') - -var defaultProxyHeaderWhiteList = [ - 'accept', - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept-ranges', - 'cache-control', - 'content-encoding', - 'content-language', - 'content-length', - 'content-location', - 'content-md5', - 'content-range', - 'content-type', - 'connection', - 'date', - 'expect', - 'max-forwards', - 'pragma', - 'referer', - 'te', - 'transfer-encoding', - 'user-agent', - 'via' -] - -var defaultProxyHeaderExclusiveList = [ - 'proxy-authorization' -] - -function constructProxyHost(uriObject) { - var port = uriObject.port - , protocol = uriObject.protocol - , proxyHost = uriObject.hostname + ':' - - if (port) { - proxyHost += port - } else if (protocol === 'https:') { - proxyHost += '443' - } else { - proxyHost += '80' - } - - return proxyHost -} - -function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) { - var whiteList = proxyHeaderWhiteList - .reduce(function (set, header) { - set[header.toLowerCase()] = true - return set - }, {}) - - return Object.keys(headers) - .filter(function (header) { - return whiteList[header.toLowerCase()] - }) - .reduce(function (set, header) { - set[header] = headers[header] - return set - }, {}) -} - -function constructTunnelOptions (request, proxyHeaders) { - var proxy = request.proxy - - var tunnelOptions = { - proxy : { - host : proxy.hostname, - port : +proxy.port, - proxyAuth : proxy.auth, - headers : proxyHeaders - }, - headers : request.headers, - ca : request.ca, - cert : request.cert, - key : request.key, - passphrase : request.passphrase, - pfx : request.pfx, - ciphers : request.ciphers, - rejectUnauthorized : request.rejectUnauthorized, - secureOptions : request.secureOptions, - secureProtocol : request.secureProtocol - } - - return tunnelOptions -} - -function constructTunnelFnName(uri, proxy) { - var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') - var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') - return [uriProtocol, proxyProtocol].join('Over') -} - -function getTunnelFn(request) { - var uri = request.uri - var proxy = request.proxy - var tunnelFnName = constructTunnelFnName(uri, proxy) - return tunnel[tunnelFnName] -} - - -function Tunnel (request) { - this.request = request - this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList - this.proxyHeaderExclusiveList = [] - if (typeof request.tunnel !== 'undefined') { - this.tunnelOverride = request.tunnel - } -} - -Tunnel.prototype.isEnabled = function () { - var self = this - , request = self.request - // Tunnel HTTPS by default. Allow the user to override this setting. - - // If self.tunnelOverride is set (the user specified a value), use it. - if (typeof self.tunnelOverride !== 'undefined') { - return self.tunnelOverride - } - - // If the destination is HTTPS, tunnel. - if (request.uri.protocol === 'https:') { - return true - } - - // Otherwise, do not use tunnel. - return false -} - -Tunnel.prototype.setup = function (options) { - var self = this - , request = self.request - - options = options || {} - - if (typeof request.proxy === 'string') { - request.proxy = url.parse(request.proxy) - } - - if (!request.proxy || !request.tunnel) { - return false - } - - // Setup Proxy Header Exclusive List and White List - if (options.proxyHeaderWhiteList) { - self.proxyHeaderWhiteList = options.proxyHeaderWhiteList - } - if (options.proxyHeaderExclusiveList) { - self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList - } - - var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) - var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - - // Setup Proxy Headers and Proxy Headers Host - // Only send the Proxy White Listed Header names - var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) - proxyHeaders.host = constructProxyHost(request.uri) - - proxyHeaderExclusiveList.forEach(request.removeHeader, request) - - // Set Agent from Tunnel Data - var tunnelFn = getTunnelFn(request) - var tunnelOptions = constructTunnelOptions(request, proxyHeaders) - request.agent = tunnelFn(tunnelOptions) - - return true -} - -Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList -Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList -exports.Tunnel = Tunnel diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/har-validator b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/har-validator deleted file mode 100755 index fd7cc0d3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/har-validator +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env node - -'use strict' - -var chalk = require('chalk') -var cmd = require('commander') -var fs = require('fs') -var path = require('path') -var pkg = require('../package.json') -var Promise = require('pinkie-promise') -var validate = require('..') -var ValidationError = require('../lib/error') - -cmd - .version(pkg.version) - .usage('[options] ') - .option('-s, --schema [name]', 'validate schema name (log, request, response, etc ...)') - .parse(process.argv) - -if (!cmd.args.length) { - cmd.help() -} - -cmd.args.map(function (fileName) { - var file = chalk.yellow.italic(path.basename(fileName)) - - new Promise(function (resolve, reject) { - fs.readFile(fileName, function (err, data) { - return err === null ? resolve(data) : reject(err) - }) - }) - - .then(JSON.parse) - - .then(cmd.schema ? validate[cmd.schema] : validate) - - .then(function (data) { - console.log('%s [%s] is valid', chalk.green('✓'), file) - }) - - .catch(function (err) { - if (err instanceof SyntaxError) { - return console.error('%s [%s] failed to read JSON: %s', chalk.red('✖'), file, chalk.red(err.message)) - } - - if (err instanceof ValidationError) { - err.errors.forEach(function (details) { - console.error('%s [%s] failed validation: (%s: %s) %s', chalk.red('✖'), file, chalk.cyan.italic(details.field), chalk.magenta.italic(details.value), chalk.red(details.message)) - }) - - return - } - - console.error('%s [%s] an unknown error has occured: %s', chalk.red('✖'), file, chalk.red(err.message)) - }) -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/uuid b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/uuid deleted file mode 100755 index f732e991..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/.bin/uuid +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); -var uuid = require(path.join(__dirname, '..')); - -var arg = process.argv[2]; - -if ('--help' === arg) { - console.log('\n USAGE: uuid [version] [options]\n\n'); - console.log(' options:\n'); - console.log(' --help Display this message and exit\n'); - process.exit(0); -} - -if (null == arg) { - console.log(uuid()); - process.exit(0); -} - -if ('v1' !== arg && 'v4' !== arg) { - console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"'); - process.exit(1); -} - -console.log(uuid[arg]()); -process.exit(0); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/README.md deleted file mode 100644 index 763564e0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/README.md +++ /dev/null @@ -1,4 +0,0 @@ -aws-sign -======== - -AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/index.js deleted file mode 100644 index ac720930..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/index.js +++ /dev/null @@ -1,212 +0,0 @@ - -/*! - * Copyright 2010 LearnBoost - * - * 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. - */ - -/** - * Module dependencies. - */ - -var crypto = require('crypto') - , parse = require('url').parse - ; - -/** - * Valid keys. - */ - -var keys = - [ 'acl' - , 'location' - , 'logging' - , 'notification' - , 'partNumber' - , 'policy' - , 'requestPayment' - , 'torrent' - , 'uploadId' - , 'uploads' - , 'versionId' - , 'versioning' - , 'versions' - , 'website' - ] - -/** - * Return an "Authorization" header value with the given `options` - * in the form of "AWS :" - * - * @param {Object} options - * @return {String} - * @api private - */ - -function authorization (options) { - return 'AWS ' + options.key + ':' + sign(options) -} - -module.exports = authorization -module.exports.authorization = authorization - -/** - * Simple HMAC-SHA1 Wrapper - * - * @param {Object} options - * @return {String} - * @api private - */ - -function hmacSha1 (options) { - return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') -} - -module.exports.hmacSha1 = hmacSha1 - -/** - * Create a base64 sha1 HMAC for `options`. - * - * @param {Object} options - * @return {String} - * @api private - */ - -function sign (options) { - options.message = stringToSign(options) - return hmacSha1(options) -} -module.exports.sign = sign - -/** - * Create a base64 sha1 HMAC for `options`. - * - * Specifically to be used with S3 presigned URLs - * - * @param {Object} options - * @return {String} - * @api private - */ - -function signQuery (options) { - options.message = queryStringToSign(options) - return hmacSha1(options) -} -module.exports.signQuery= signQuery - -/** - * Return a string for sign() with the given `options`. - * - * Spec: - * - * \n - * \n - * \n - * \n - * [headers\n] - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function stringToSign (options) { - var headers = options.amazonHeaders || '' - if (headers) headers += '\n' - var r = - [ options.verb - , options.md5 - , options.contentType - , options.date ? options.date.toUTCString() : '' - , headers + options.resource - ] - return r.join('\n') -} -module.exports.queryStringToSign = stringToSign - -/** - * Return a string for sign() with the given `options`, but is meant exclusively - * for S3 presigned URLs - * - * Spec: - * - * \n - * - * - * @param {Object} options - * @return {String} - * @api private - */ - -function queryStringToSign (options){ - return 'GET\n\n\n' + options.date + '\n' + options.resource -} -module.exports.queryStringToSign = queryStringToSign - -/** - * Perform the following: - * - * - ignore non-amazon headers - * - lowercase fields - * - sort lexicographically - * - trim whitespace between ":" - * - join with newline - * - * @param {Object} headers - * @return {String} - * @api private - */ - -function canonicalizeHeaders (headers) { - var buf = [] - , fields = Object.keys(headers) - ; - for (var i = 0, len = fields.length; i < len; ++i) { - var field = fields[i] - , val = headers[field] - , field = field.toLowerCase() - ; - if (0 !== field.indexOf('x-amz')) continue - buf.push(field + ':' + val) - } - return buf.sort().join('\n') -} -module.exports.canonicalizeHeaders = canonicalizeHeaders - -/** - * Perform the following: - * - * - ignore non sub-resources - * - sort lexicographically - * - * @param {String} resource - * @return {String} - * @api private - */ - -function canonicalizeResource (resource) { - var url = parse(resource, true) - , path = url.pathname - , buf = [] - ; - - Object.keys(url.query).forEach(function(key){ - if (!~keys.indexOf(key)) return - var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) - buf.push(key + val) - }) - - return path + (buf.length ? '?' + buf.sort().join('&') : '') -} -module.exports.canonicalizeResource = canonicalizeResource diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/package.json deleted file mode 100644 index 0fe40d0b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/aws-sign2/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "aws-sign2", - "description": "AWS signing. Originally pulled from LearnBoost/knox, maintained as vendor in request, now a standalone module.", - "version": "0.6.0", - "repository": { - "url": "git+https://github.com/mikeal/aws-sign.git" - }, - "license": "Apache-2.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "gitHead": "8554bdb41268fa295eb1ee300f4adaa9f7f07fec", - "bugs": { - "url": "https://github.com/mikeal/aws-sign/issues" - }, - "homepage": "https://github.com/mikeal/aws-sign#readme", - "_id": "aws-sign2@0.6.0", - "scripts": {}, - "_shasum": "14342dd38dbcc94d0e5b87d763cd63612c0e794f", - "_from": "aws-sign2@>=0.6.0 <0.7.0", - "_npmVersion": "2.14.4", - "_nodeVersion": "4.1.2", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - } - ], - "dist": { - "shasum": "14342dd38dbcc94d0e5b87d763cd63612c0e794f", - "tarball": "http://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.jshintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.jshintrc deleted file mode 100644 index c8ef3ca4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.npmignore deleted file mode 100644 index 40b878db..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.travis.yml deleted file mode 100644 index 81c08141..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js -before_install: - - curl --location http://git.io/1OcIZA | bash -s -node_js: - - 0.8 - - 0.10 - - 0.11 -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/LICENSE.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/LICENSE.md deleted file mode 100644 index ccb24797..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright (c) 2014 bl contributors ----------------------------------- - -*bl contributors listed at * - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/README.md deleted file mode 100644 index 4d87866a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/README.md +++ /dev/null @@ -1,200 +0,0 @@ -# bl *(BufferList)* - -[![Build Status](https://travis-ci.org/rvagg/bl.svg?branch=master)](https://travis-ci.org/rvagg/bl) - -**A Node.js Buffer list collector, reader and streamer thingy.** - -[![NPM](https://nodei.co/npm/bl.png?downloads=true&downloadRank=true)](https://nodei.co/npm/bl/) -[![NPM](https://nodei.co/npm-dl/bl.png?months=6&height=3)](https://nodei.co/npm/bl/) - -**bl** is a storage object for collections of Node Buffers, exposing them with the main Buffer readable API. Also works as a duplex stream so you can collect buffers from a stream that emits them and emit buffers to a stream that consumes them! - -The original buffers are kept intact and copies are only done as necessary. Any reads that require the use of a single original buffer will return a slice of that buffer only (which references the same memory as the original buffer). Reads that span buffers perform concatenation as required and return the results transparently. - -```js -const BufferList = require('bl') - -var bl = new BufferList() -bl.append(new Buffer('abcd')) -bl.append(new Buffer('efg')) -bl.append('hi') // bl will also accept & convert Strings -bl.append(new Buffer('j')) -bl.append(new Buffer([ 0x3, 0x4 ])) - -console.log(bl.length) // 12 - -console.log(bl.slice(0, 10).toString('ascii')) // 'abcdefghij' -console.log(bl.slice(3, 10).toString('ascii')) // 'defghij' -console.log(bl.slice(3, 6).toString('ascii')) // 'def' -console.log(bl.slice(3, 8).toString('ascii')) // 'defgh' -console.log(bl.slice(5, 10).toString('ascii')) // 'fghij' - -// or just use toString! -console.log(bl.toString()) // 'abcdefghij\u0003\u0004' -console.log(bl.toString('ascii', 3, 8)) // 'defgh' -console.log(bl.toString('ascii', 5, 10)) // 'fghij' - -// other standard Buffer readables -console.log(bl.readUInt16BE(10)) // 0x0304 -console.log(bl.readUInt16LE(10)) // 0x0403 -``` - -Give it a callback in the constructor and use it just like **[concat-stream](https://github.com/maxogden/node-concat-stream)**: - -```js -const bl = require('bl') - , fs = require('fs') - -fs.createReadStream('README.md') - .pipe(bl(function (err, data) { // note 'new' isn't strictly required - // `data` is a complete Buffer object containing the full data - console.log(data.toString()) - })) -``` - -Note that when you use the *callback* method like this, the resulting `data` parameter is a concatenation of all `Buffer` objects in the list. If you want to avoid the overhead of this concatenation (in cases of extreme performance consciousness), then avoid the *callback* method and just listen to `'end'` instead, like a standard Stream. - -Or to fetch a URL using [hyperquest](https://github.com/substack/hyperquest) (should work with [request](http://github.com/mikeal/request) and even plain Node http too!): -```js -const hyperquest = require('hyperquest') - , bl = require('bl') - , url = 'https://raw.github.com/rvagg/bl/master/README.md' - -hyperquest(url).pipe(bl(function (err, data) { - console.log(data.toString()) -})) -``` - -Or, use it as a readable stream to recompose a list of Buffers to an output source: - -```js -const BufferList = require('bl') - , fs = require('fs') - -var bl = new BufferList() -bl.append(new Buffer('abcd')) -bl.append(new Buffer('efg')) -bl.append(new Buffer('hi')) -bl.append(new Buffer('j')) - -bl.pipe(fs.createWriteStream('gibberish.txt')) -``` - -## API - - * new BufferList([ callback ]) - * bl.length - * bl.append(buffer) - * bl.get(index) - * bl.slice([ start[, end ] ]) - * bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) - * bl.duplicate() - * bl.consume(bytes) - * bl.toString([encoding, [ start, [ end ]]]) - * bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - * Streams - --------------------------------------------------------- - -### new BufferList([ callback | buffer | buffer array ]) -The constructor takes an optional callback, if supplied, the callback will be called with an error argument followed by a reference to the **bl** instance, when `bl.end()` is called (i.e. from a piped stream). This is a convenient method of collecting the entire contents of a stream, particularly when the stream is *chunky*, such as a network stream. - -Normally, no arguments are required for the constructor, but you can initialise the list by passing in a single `Buffer` object or an array of `Buffer` object. - -`new` is not strictly required, if you don't instantiate a new object, it will be done automatically for you so you can create a new instance simply with: - -```js -var bl = require('bl') -var myinstance = bl() - -// equivilant to: - -var BufferList = require('bl') -var myinstance = new BufferList() -``` - --------------------------------------------------------- - -### bl.length -Get the length of the list in bytes. This is the sum of the lengths of all of the buffers contained in the list, minus any initial offset for a semi-consumed buffer at the beginning. Should accurately represent the total number of bytes that can be read from the list. - --------------------------------------------------------- - -### bl.append(buffer) -`append(buffer)` adds an additional buffer or BufferList to the internal list. - --------------------------------------------------------- - -### bl.get(index) -`get()` will return the byte at the specified index. - --------------------------------------------------------- - -### bl.slice([ start, [ end ] ]) -`slice()` returns a new `Buffer` object containing the bytes within the range specified. Both `start` and `end` are optional and will default to the beginning and end of the list respectively. - -If the requested range spans a single internal buffer then a slice of that buffer will be returned which shares the original memory range of that Buffer. If the range spans multiple buffers then copy operations will likely occur to give you a uniform Buffer. - --------------------------------------------------------- - -### bl.copy(dest, [ destStart, [ srcStart [, srcEnd ] ] ]) -`copy()` copies the content of the list in the `dest` buffer, starting from `destStart` and containing the bytes within the range specified with `srcStart` to `srcEnd`. `destStart`, `start` and `end` are optional and will default to the beginning of the `dest` buffer, and the beginning and end of the list respectively. - --------------------------------------------------------- - -### bl.duplicate() -`duplicate()` performs a **shallow-copy** of the list. The internal Buffers remains the same, so if you change the underlying Buffers, the change will be reflected in both the original and the duplicate. This method is needed if you want to call `consume()` or `pipe()` and still keep the original list.Example: - -```js -var bl = new BufferList() - -bl.append('hello') -bl.append(' world') -bl.append('\n') - -bl.duplicate().pipe(process.stdout, { end: false }) - -console.log(bl.toString()) -``` - --------------------------------------------------------- - -### bl.consume(bytes) -`consume()` will shift bytes *off the start of the list*. The number of bytes consumed don't need to line up with the sizes of the internal Buffers—initial offsets will be calculated accordingly in order to give you a consistent view of the data. - --------------------------------------------------------- - -### bl.toString([encoding, [ start, [ end ]]]) -`toString()` will return a string representation of the buffer. The optional `start` and `end` arguments are passed on to `slice()`, while the `encoding` is passed on to `toString()` of the resulting Buffer. See the [Buffer#toString()](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) documentation for more information. - --------------------------------------------------------- - -### bl.readDoubleBE(), bl.readDoubleLE(), bl.readFloatBE(), bl.readFloatLE(), bl.readInt32BE(), bl.readInt32LE(), bl.readUInt32BE(), bl.readUInt32LE(), bl.readInt16BE(), bl.readInt16LE(), bl.readUInt16BE(), bl.readUInt16LE(), bl.readInt8(), bl.readUInt8() - -All of the standard byte-reading methods of the `Buffer` interface are implemented and will operate across internal Buffer boundaries transparently. - -See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. - --------------------------------------------------------- - -### Streams -**bl** is a Node **[Duplex Stream](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_duplex)**, so it can be read from and written to like a standard Node stream. You can also `pipe()` to and from a **bl** instance. - --------------------------------------------------------- - -## Contributors - -**bl** is brought to you by the following hackers: - - * [Rod Vagg](https://github.com/rvagg) - * [Matteo Collina](https://github.com/mcollina) - * [Jarett Cruger](https://github.com/jcrugzz) - -======= - - -## License & copyright - -Copyright (c) 2013-2014 bl contributors (listed above). - -bl is licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/bl.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/bl.js deleted file mode 100644 index 7a2f9978..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/bl.js +++ /dev/null @@ -1,216 +0,0 @@ -var DuplexStream = require('readable-stream/duplex') - , util = require('util') - -function BufferList (callback) { - if (!(this instanceof BufferList)) - return new BufferList(callback) - - this._bufs = [] - this.length = 0 - - if (typeof callback == 'function') { - this._callback = callback - - var piper = function (err) { - if (this._callback) { - this._callback(err) - this._callback = null - } - }.bind(this) - - this.on('pipe', function (src) { - src.on('error', piper) - }) - this.on('unpipe', function (src) { - src.removeListener('error', piper) - }) - } - else if (Buffer.isBuffer(callback)) - this.append(callback) - else if (Array.isArray(callback)) { - callback.forEach(function (b) { - Buffer.isBuffer(b) && this.append(b) - }.bind(this)) - } - - DuplexStream.call(this) -} - -util.inherits(BufferList, DuplexStream) - -BufferList.prototype._offset = function (offset) { - var tot = 0, i = 0, _t - for (; i < this._bufs.length; i++) { - _t = tot + this._bufs[i].length - if (offset < _t) - return [ i, offset - tot ] - tot = _t - } -} - -BufferList.prototype.append = function (buf) { - var isBuffer = Buffer.isBuffer(buf) || - buf instanceof BufferList - - this._bufs.push(isBuffer ? buf : new Buffer(buf)) - this.length += buf.length - return this -} - -BufferList.prototype._write = function (buf, encoding, callback) { - this.append(buf) - if (callback) - callback() -} - -BufferList.prototype._read = function (size) { - if (!this.length) - return this.push(null) - size = Math.min(size, this.length) - this.push(this.slice(0, size)) - this.consume(size) -} - -BufferList.prototype.end = function (chunk) { - DuplexStream.prototype.end.call(this, chunk) - - if (this._callback) { - this._callback(null, this.slice()) - this._callback = null - } -} - -BufferList.prototype.get = function (index) { - return this.slice(index, index + 1)[0] -} - -BufferList.prototype.slice = function (start, end) { - return this.copy(null, 0, start, end) -} - -BufferList.prototype.copy = function (dst, dstStart, srcStart, srcEnd) { - if (typeof srcStart != 'number' || srcStart < 0) - srcStart = 0 - if (typeof srcEnd != 'number' || srcEnd > this.length) - srcEnd = this.length - if (srcStart >= this.length) - return dst || new Buffer(0) - if (srcEnd <= 0) - return dst || new Buffer(0) - - var copy = !!dst - , off = this._offset(srcStart) - , len = srcEnd - srcStart - , bytes = len - , bufoff = (copy && dstStart) || 0 - , start = off[1] - , l - , i - - // copy/slice everything - if (srcStart === 0 && srcEnd == this.length) { - if (!copy) // slice, just return a full concat - return Buffer.concat(this._bufs) - - // copy, need to copy individual buffers - for (i = 0; i < this._bufs.length; i++) { - this._bufs[i].copy(dst, bufoff) - bufoff += this._bufs[i].length - } - - return dst - } - - // easy, cheap case where it's a subset of one of the buffers - if (bytes <= this._bufs[off[0]].length - start) { - return copy - ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) - : this._bufs[off[0]].slice(start, start + bytes) - } - - if (!copy) // a slice, we need something to copy in to - dst = new Buffer(len) - - for (i = off[0]; i < this._bufs.length; i++) { - l = this._bufs[i].length - start - - if (bytes > l) { - this._bufs[i].copy(dst, bufoff, start) - } else { - this._bufs[i].copy(dst, bufoff, start, start + bytes) - break - } - - bufoff += l - bytes -= l - - if (start) - start = 0 - } - - return dst -} - -BufferList.prototype.toString = function (encoding, start, end) { - return this.slice(start, end).toString(encoding) -} - -BufferList.prototype.consume = function (bytes) { - while (this._bufs.length) { - if (bytes > this._bufs[0].length) { - bytes -= this._bufs[0].length - this.length -= this._bufs[0].length - this._bufs.shift() - } else { - this._bufs[0] = this._bufs[0].slice(bytes) - this.length -= bytes - break - } - } - return this -} - -BufferList.prototype.duplicate = function () { - var i = 0 - , copy = new BufferList() - - for (; i < this._bufs.length; i++) - copy.append(this._bufs[i]) - - return copy -} - -BufferList.prototype.destroy = function () { - this._bufs.length = 0; - this.length = 0; - this.push(null); -} - -;(function () { - var methods = { - 'readDoubleBE' : 8 - , 'readDoubleLE' : 8 - , 'readFloatBE' : 4 - , 'readFloatLE' : 4 - , 'readInt32BE' : 4 - , 'readInt32LE' : 4 - , 'readUInt32BE' : 4 - , 'readUInt32LE' : 4 - , 'readInt16BE' : 2 - , 'readInt16LE' : 2 - , 'readUInt16BE' : 2 - , 'readUInt16LE' : 2 - , 'readInt8' : 1 - , 'readUInt8' : 1 - } - - for (var m in methods) { - (function (m) { - BufferList.prototype[m] = function (offset) { - return this.slice(offset, offset + methods[m])[m](0) - } - }(m)) - } -}()) - -module.exports = BufferList diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml deleted file mode 100644 index cfe1c943..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.travis.yml +++ /dev/null @@ -1,50 +0,0 @@ -sudo: false -language: node_js -before_install: - - npm install -g npm@2 - - npm install -g npm -notifications: - email: false -matrix: - include: - - node_js: '0.8' - env: TASK=test - - node_js: '0.10' - env: TASK=test - - node_js: '0.11' - env: TASK=test - - node_js: '0.12' - env: TASK=test - - node_js: 1 - env: TASK=test - - node_js: 2 - env: TASK=test - - node_js: 3 - env: TASK=test - - node_js: 4 - env: TASK=test - - node_js: 5 - env: TASK=test - - node_js: node - env: TASK=test - - node_js: node - env: TASK=browser BROWSER_NAME=opera BROWSER_VERSION="11..latest" - - node_js: node - env: TASK=browser BROWSER_NAME=ie BROWSER_VERSION="9..latest" - - node_js: node - env: TASK=browser BROWSER_NAME=chrome BROWSER_VERSION="41..beta" - - node_js: node - env: TASK=browser BROWSER_NAME=firefox BROWSER_VERSION="36..latest" - - node_js: node - env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="['6.1', '7.1', '8.2']" - - node_js: node - env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="['6.1', '7.1', '8.2']" - - node_js: node - env: TASK=browser BROWSER_NAME=safari BROWSER_VERSION="5..latest" - - node_js: node - env: TASK=browser BROWSER_NAME=android BROWSER_VERSION="4.0..latest" -script: "npm run $TASK" -env: - global: - - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= - - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml deleted file mode 100644 index 96d9cfbd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/.zuul.yml +++ /dev/null @@ -1 +0,0 @@ -ui: tape diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md deleted file mode 100644 index f9fb5205..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) - - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - - -[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) - -```bash -npm install --save readable-stream -``` - -***Node-core streams for userland*** - -This package is a mirror of the Streams2 and Streams3 implementations in -Node-core, including [documentation](doc/stream.markdown). - -If you want to guarantee a stable streams base, regardless of what version of -Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). - -As of version 2.0.0 **readable-stream** uses semantic versioning. - -# Streams WG Team Members - -* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> - - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B -* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> - - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 -* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> - - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D -* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> -* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> -* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown deleted file mode 100644 index f84543a2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/stream.markdown +++ /dev/null @@ -1,1696 +0,0 @@ -# Stream - - Stability: 2 - Stable - -A stream is an abstract interface implemented by various objects in -Node.js. For example a [request to an HTTP -server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage) is a stream, as is -[stdout][]. Streams are readable, writable, or both. All streams are -instances of [EventEmitter][] - -You can load the Stream base classes by doing `require('stream')`. -There are base classes provided for [Readable][] streams, [Writable][] -streams, [Duplex][] streams, and [Transform][] streams. - -This document is split up into 3 sections. The first explains the -parts of the API that you need to be aware of to use streams in your -programs. If you never implement a streaming API yourself, you can -stop there. - -The second section explains the parts of the API that you need to use -if you implement your own custom streams yourself. The API is -designed to make this easy for you to do. - -The third section goes into more depth about how streams work, -including some of the internal mechanisms and functions that you -should probably not modify unless you definitely know what you are -doing. - - -## API for Stream Consumers - - - -Streams can be either [Readable][], [Writable][], or both ([Duplex][]). - -All streams are EventEmitters, but they also have other custom methods -and properties depending on whether they are Readable, Writable, or -Duplex. - -If a stream is both Readable and Writable, then it implements all of -the methods and events below. So, a [Duplex][] or [Transform][] stream is -fully described by this API, though their implementation may be -somewhat different. - -It is not necessary to implement Stream interfaces in order to consume -streams in your programs. If you **are** implementing streaming -interfaces in your own program, please also refer to -[API for Stream Implementors][] below. - -Almost all Node.js programs, no matter how simple, use Streams in some -way. Here is an example of using Streams in an Node.js program: - -```javascript -var http = require('http'); - -var server = http.createServer(function (req, res) { - // req is an http.IncomingMessage, which is a Readable Stream - // res is an http.ServerResponse, which is a Writable Stream - - var body = ''; - // we want to get the data as utf8 strings - // If you don't set an encoding, then you'll get Buffer objects - req.setEncoding('utf8'); - - // Readable streams emit 'data' events once a listener is added - req.on('data', function (chunk) { - body += chunk; - }); - - // the end event tells you that you have entire body - req.on('end', function () { - try { - var data = JSON.parse(body); - } catch (er) { - // uh oh! bad json! - res.statusCode = 400; - return res.end('error: ' + er.message); - } - - // write back something interesting to the user: - res.write(typeof data); - res.end(); - }); -}); - -server.listen(1337); - -// $ curl localhost:1337 -d '{}' -// object -// $ curl localhost:1337 -d '"foo"' -// string -// $ curl localhost:1337 -d 'not json' -// error: Unexpected token o -``` - -### Class: stream.Readable - - - -The Readable stream interface is the abstraction for a *source* of -data that you are reading from. In other words, data comes *out* of a -Readable stream. - -A Readable stream will not start emitting data until you indicate that -you are ready to receive it. - -Readable streams have two "modes": a **flowing mode** and a **paused -mode**. When in flowing mode, data is read from the underlying system -and provided to your program as fast as possible. In paused mode, you -must explicitly call `stream.read()` to get chunks of data out. -Streams start out in paused mode. - -**Note**: If no data event handlers are attached, and there are no -[`pipe()`][] destinations, and the stream is switched into flowing -mode, then data will be lost. - -You can switch to flowing mode by doing any of the following: - -* Adding a [`'data'` event][] handler to listen for data. -* Calling the [`resume()`][] method to explicitly open the flow. -* Calling the [`pipe()`][] method to send the data to a [Writable][]. - -You can switch back to paused mode by doing either of the following: - -* If there are no pipe destinations, by calling the [`pause()`][] - method. -* If there are pipe destinations, by removing any [`'data'` event][] - handlers, and removing all pipe destinations by calling the - [`unpipe()`][] method. - -Note that, for backwards compatibility reasons, removing `'data'` -event handlers will **not** automatically pause the stream. Also, if -there are piped destinations, then calling `pause()` will not -guarantee that the stream will *remain* paused once those -destinations drain and ask for more data. - -Examples of readable streams include: - -* [http responses, on the client](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage) -* [http requests, on the server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_http_incomingmessage) -* [fs read streams](https://iojs.org/dist/v5.0.0/doc/api/fs.html#fs_class_fs_readstream) -* [zlib streams][] -* [crypto streams][] -* [tcp sockets][] -* [child process stdout and stderr][] -* [process.stdin][] - -#### Event: 'readable' - -When a chunk of data can be read from the stream, it will emit a -`'readable'` event. - -In some cases, listening for a `'readable'` event will cause some data -to be read into the internal buffer from the underlying system, if it -hadn't already. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('readable', function() { - // there is some data to read now -}); -``` - -Once the internal buffer is drained, a `readable` event will fire -again when more data is available. - -The `readable` event is not emitted in the "flowing" mode with the -sole exception of the last one, on end-of-stream. - -The 'readable' event indicates that the stream has new information: -either new data is available or the end of the stream has been reached. -In the former case, `.read()` will return that data. In the latter case, -`.read()` will return null. For instance, in the following example, `foo.txt` -is an empty file: - -```javascript -var fs = require('fs'); -var rr = fs.createReadStream('foo.txt'); -rr.on('readable', function() { - console.log('readable:', rr.read()); -}); -rr.on('end', function() { - console.log('end'); -}); -``` - -The output of running this script is: - -``` -bash-3.2$ node test.js -readable: null -end -``` - -#### Event: 'data' - -* `chunk` {Buffer | String} The chunk of data. - -Attaching a `data` event listener to a stream that has not been -explicitly paused will switch the stream into flowing mode. Data will -then be passed as soon as it is available. - -If you just want to get all the data out of the stream as fast as -possible, this is the best way to do so. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('data', function(chunk) { - console.log('got %d bytes of data', chunk.length); -}); -``` - -#### Event: 'end' - -This event fires when there will be no more data to read. - -Note that the `end` event **will not fire** unless the data is -completely consumed. This can be done by switching into flowing mode, -or by calling `read()` repeatedly until you get to the end. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('data', function(chunk) { - console.log('got %d bytes of data', chunk.length); -}); -readable.on('end', function() { - console.log('there will be no more data.'); -}); -``` - -#### Event: 'close' - -Emitted when the stream and any of its underlying resources (a file -descriptor, for example) have been closed. The event indicates that -no more events will be emitted, and no further computation will occur. - -Not all streams will emit the 'close' event. - -#### Event: 'error' - -* {Error Object} - -Emitted if there was an error receiving data. - -#### readable.read([size]) - -* `size` {Number} Optional argument to specify how much data to read. -* Return {String | Buffer | null} - -The `read()` method pulls some data out of the internal buffer and -returns it. If there is no data available, then it will return -`null`. - -If you pass in a `size` argument, then it will return that many -bytes. If `size` bytes are not available, then it will return `null`, -unless we've ended, in which case it will return the data remaining -in the buffer. - -If you do not specify a `size` argument, then it will return all the -data in the internal buffer. - -This method should only be called in paused mode. In flowing mode, -this method is called automatically until the internal buffer is -drained. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('readable', function() { - var chunk; - while (null !== (chunk = readable.read())) { - console.log('got %d bytes of data', chunk.length); - } -}); -``` - -If this method returns a data chunk, then it will also trigger the -emission of a [`'data'` event][]. - -Note that calling `readable.read([size])` after the `end` event has been -triggered will return `null`. No runtime error will be raised. - -#### readable.setEncoding(encoding) - -* `encoding` {String} The encoding to use. -* Return: `this` - -Call this function to cause the stream to return strings of the -specified encoding instead of Buffer objects. For example, if you do -`readable.setEncoding('utf8')`, then the output data will be -interpreted as UTF-8 data, and returned as strings. If you do -`readable.setEncoding('hex')`, then the data will be encoded in -hexadecimal string format. - -This properly handles multi-byte characters that would otherwise be -potentially mangled if you simply pulled the Buffers directly and -called `buf.toString(encoding)` on them. If you want to read the data -as strings, always use this method. - -```javascript -var readable = getReadableStreamSomehow(); -readable.setEncoding('utf8'); -readable.on('data', function(chunk) { - assert.equal(typeof chunk, 'string'); - console.log('got %d characters of string data', chunk.length); -}); -``` - -#### readable.resume() - -* Return: `this` - -This method will cause the readable stream to resume emitting `data` -events. - -This method will switch the stream into flowing mode. If you do *not* -want to consume the data from a stream, but you *do* want to get to -its `end` event, you can call [`readable.resume()`][] to open the flow of -data. - -```javascript -var readable = getReadableStreamSomehow(); -readable.resume(); -readable.on('end', function() { - console.log('got to the end, but did not read anything'); -}); -``` - -#### readable.pause() - -* Return: `this` - -This method will cause a stream in flowing mode to stop emitting -`data` events, switching out of flowing mode. Any data that becomes -available will remain in the internal buffer. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('data', function(chunk) { - console.log('got %d bytes of data', chunk.length); - readable.pause(); - console.log('there will be no more data for 1 second'); - setTimeout(function() { - console.log('now data will start flowing again'); - readable.resume(); - }, 1000); -}); -``` - -#### readable.isPaused() - -* Return: `Boolean` - -This method returns whether or not the `readable` has been **explicitly** -paused by client code (using `readable.pause()` without a corresponding -`readable.resume()`). - -```javascript -var readable = new stream.Readable - -readable.isPaused() // === false -readable.pause() -readable.isPaused() // === true -readable.resume() -readable.isPaused() // === false -``` - -#### readable.pipe(destination[, options]) - -* `destination` {[Writable][] Stream} The destination for writing data -* `options` {Object} Pipe options - * `end` {Boolean} End the writer when the reader ends. Default = `true` - -This method pulls all the data out of a readable stream, and writes it -to the supplied destination, automatically managing the flow so that -the destination is not overwhelmed by a fast readable stream. - -Multiple destinations can be piped to safely. - -```javascript -var readable = getReadableStreamSomehow(); -var writable = fs.createWriteStream('file.txt'); -// All the data from readable goes into 'file.txt' -readable.pipe(writable); -``` - -This function returns the destination stream, so you can set up pipe -chains like so: - -```javascript -var r = fs.createReadStream('file.txt'); -var z = zlib.createGzip(); -var w = fs.createWriteStream('file.txt.gz'); -r.pipe(z).pipe(w); -``` - -For example, emulating the Unix `cat` command: - -```javascript -process.stdin.pipe(process.stdout); -``` - -By default [`end()`][] is called on the destination when the source stream -emits `end`, so that `destination` is no longer writable. Pass `{ end: -false }` as `options` to keep the destination stream open. - -This keeps `writer` open so that "Goodbye" can be written at the -end. - -```javascript -reader.pipe(writer, { end: false }); -reader.on('end', function() { - writer.end('Goodbye\n'); -}); -``` - -Note that `process.stderr` and `process.stdout` are never closed until -the process exits, regardless of the specified options. - -#### readable.unpipe([destination]) - -* `destination` {[Writable][] Stream} Optional specific stream to unpipe - -This method will remove the hooks set up for a previous `pipe()` call. - -If the destination is not specified, then all pipes are removed. - -If the destination is specified, but no pipe is set up for it, then -this is a no-op. - -```javascript -var readable = getReadableStreamSomehow(); -var writable = fs.createWriteStream('file.txt'); -// All the data from readable goes into 'file.txt', -// but only for the first second -readable.pipe(writable); -setTimeout(function() { - console.log('stop writing to file.txt'); - readable.unpipe(writable); - console.log('manually close the file stream'); - writable.end(); -}, 1000); -``` - -#### readable.unshift(chunk) - -* `chunk` {Buffer | String} Chunk of data to unshift onto the read queue - -This is useful in certain cases where a stream is being consumed by a -parser, which needs to "un-consume" some data that it has -optimistically pulled out of the source, so that the stream can be -passed on to some other party. - -Note that `stream.unshift(chunk)` cannot be called after the `end` event -has been triggered; a runtime error will be raised. - -If you find that you must often call `stream.unshift(chunk)` in your -programs, consider implementing a [Transform][] stream instead. (See API -for Stream Implementors, below.) - -```javascript -// Pull off a header delimited by \n\n -// use unshift() if we get too much -// Call the callback with (error, header, stream) -var StringDecoder = require('string_decoder').StringDecoder; -function parseHeader(stream, callback) { - stream.on('error', callback); - stream.on('readable', onReadable); - var decoder = new StringDecoder('utf8'); - var header = ''; - function onReadable() { - var chunk; - while (null !== (chunk = stream.read())) { - var str = decoder.write(chunk); - if (str.match(/\n\n/)) { - // found the header boundary - var split = str.split(/\n\n/); - header += split.shift(); - var remaining = split.join('\n\n'); - var buf = new Buffer(remaining, 'utf8'); - if (buf.length) - stream.unshift(buf); - stream.removeListener('error', callback); - stream.removeListener('readable', onReadable); - // now the body of the message can be read from the stream. - callback(null, header, stream); - } else { - // still reading the header. - header += str; - } - } - } -} -``` -Note that, unlike `stream.push(chunk)`, `stream.unshift(chunk)` will not -end the reading process by resetting the internal reading state of the -stream. This can cause unexpected results if `unshift` is called during a -read (i.e. from within a `_read` implementation on a custom stream). Following -the call to `unshift` with an immediate `stream.push('')` will reset the -reading state appropriately, however it is best to simply avoid calling -`unshift` while in the process of performing a read. - -#### readable.wrap(stream) - -* `stream` {Stream} An "old style" readable stream - -Versions of Node.js prior to v0.10 had streams that did not implement the -entire Streams API as it is today. (See "Compatibility" below for -more information.) - -If you are using an older Node.js library that emits `'data'` events and -has a [`pause()`][] method that is advisory only, then you can use the -`wrap()` method to create a [Readable][] stream that uses the old stream -as its data source. - -You will very rarely ever need to call this function, but it exists -as a convenience for interacting with old Node.js programs and libraries. - -For example: - -```javascript -var OldReader = require('./old-api-module.js').OldReader; -var oreader = new OldReader; -var Readable = require('stream').Readable; -var myReader = new Readable().wrap(oreader); - -myReader.on('readable', function() { - myReader.read(); // etc. -}); -``` - - -### Class: stream.Writable - - - -The Writable stream interface is an abstraction for a *destination* -that you are writing data *to*. - -Examples of writable streams include: - -* [http requests, on the client](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_class_http_clientrequest) -* [http responses, on the server](https://iojs.org/dist/v5.0.0/doc/api/http.html#http_class_http_serverresponse) -* [fs write streams](https://iojs.org/dist/v5.0.0/doc/api/fs.html#fs_class_fs_writestream) -* [zlib streams][] -* [crypto streams][] -* [tcp sockets][] -* [child process stdin](https://iojs.org/dist/v5.0.0/doc/api/child_process.html#child_process_child_stdin) -* [process.stdout][], [process.stderr][] - -#### writable.write(chunk[, encoding][, callback]) - -* `chunk` {String | Buffer} The data to write -* `encoding` {String} The encoding, if `chunk` is a String -* `callback` {Function} Callback for when this chunk of data is flushed -* Returns: {Boolean} True if the data was handled completely. - -This method writes some data to the underlying system, and calls the -supplied callback once the data has been fully handled. - -The return value indicates if you should continue writing right now. -If the data had to be buffered internally, then it will return -`false`. Otherwise, it will return `true`. - -This return value is strictly advisory. You MAY continue to write, -even if it returns `false`. However, writes will be buffered in -memory, so it is best not to do this excessively. Instead, wait for -the `drain` event before writing more data. - -#### Event: 'drain' - -If a [`writable.write(chunk)`][] call returns false, then the `drain` -event will indicate when it is appropriate to begin writing more data -to the stream. - -```javascript -// Write the data to the supplied writable stream one million times. -// Be attentive to back-pressure. -function writeOneMillionTimes(writer, data, encoding, callback) { - var i = 1000000; - write(); - function write() { - var ok = true; - do { - i -= 1; - if (i === 0) { - // last time! - writer.write(data, encoding, callback); - } else { - // see if we should continue, or wait - // don't pass the callback, because we're not done yet. - ok = writer.write(data, encoding); - } - } while (i > 0 && ok); - if (i > 0) { - // had to stop early! - // write some more once it drains - writer.once('drain', write); - } - } -} -``` - -#### writable.cork() - -Forces buffering of all writes. - -Buffered data will be flushed either at `.uncork()` or at `.end()` call. - -#### writable.uncork() - -Flush all data, buffered since `.cork()` call. - -#### writable.setDefaultEncoding(encoding) - -* `encoding` {String} The new default encoding - -Sets the default encoding for a writable stream. - -#### writable.end([chunk][, encoding][, callback]) - -* `chunk` {String | Buffer} Optional data to write -* `encoding` {String} The encoding, if `chunk` is a String -* `callback` {Function} Optional callback for when the stream is finished - -Call this method when no more data will be written to the stream. If -supplied, the callback is attached as a listener on the `finish` event. - -Calling [`write()`][] after calling [`end()`][] will raise an error. - -```javascript -// write 'hello, ' and then end with 'world!' -var file = fs.createWriteStream('example.txt'); -file.write('hello, '); -file.end('world!'); -// writing more now is not allowed! -``` - -#### Event: 'finish' - -When the [`end()`][] method has been called, and all data has been flushed -to the underlying system, this event is emitted. - -```javascript -var writer = getWritableStreamSomehow(); -for (var i = 0; i < 100; i ++) { - writer.write('hello, #' + i + '!\n'); -} -writer.end('this is the end\n'); -writer.on('finish', function() { - console.error('all writes are now complete.'); -}); -``` - -#### Event: 'pipe' - -* `src` {[Readable][] Stream} source stream that is piping to this writable - -This is emitted whenever the `pipe()` method is called on a readable -stream, adding this writable to its set of destinations. - -```javascript -var writer = getWritableStreamSomehow(); -var reader = getReadableStreamSomehow(); -writer.on('pipe', function(src) { - console.error('something is piping into the writer'); - assert.equal(src, reader); -}); -reader.pipe(writer); -``` - -#### Event: 'unpipe' - -* `src` {[Readable][] Stream} The source stream that [unpiped][] this writable - -This is emitted whenever the [`unpipe()`][] method is called on a -readable stream, removing this writable from its set of destinations. - -```javascript -var writer = getWritableStreamSomehow(); -var reader = getReadableStreamSomehow(); -writer.on('unpipe', function(src) { - console.error('something has stopped piping into the writer'); - assert.equal(src, reader); -}); -reader.pipe(writer); -reader.unpipe(writer); -``` - -#### Event: 'error' - -* {Error object} - -Emitted if there was an error when writing or piping data. - -### Class: stream.Duplex - -Duplex streams are streams that implement both the [Readable][] and -[Writable][] interfaces. See above for usage. - -Examples of Duplex streams include: - -* [tcp sockets][] -* [zlib streams][] -* [crypto streams][] - - -### Class: stream.Transform - -Transform streams are [Duplex][] streams where the output is in some way -computed from the input. They implement both the [Readable][] and -[Writable][] interfaces. See above for usage. - -Examples of Transform streams include: - -* [zlib streams][] -* [crypto streams][] - - -## API for Stream Implementors - - - -To implement any sort of stream, the pattern is the same: - -1. Extend the appropriate parent class in your own subclass. (The - [`util.inherits`][] method is particularly helpful for this.) -2. Call the appropriate parent class constructor in your constructor, - to be sure that the internal mechanisms are set up properly. -2. Implement one or more specific methods, as detailed below. - -The class to extend and the method(s) to implement depend on the sort -of stream class you are writing: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Use-case

-
-

Class

-
-

Method(s) to implement

-
-

Reading only

-
-

[Readable](#stream_class_stream_readable_1)

-
-

[_read][]

-
-

Writing only

-
-

[Writable](#stream_class_stream_writable_1)

-
-

[_write][], _writev

-
-

Reading and writing

-
-

[Duplex](#stream_class_stream_duplex_1)

-
-

[_read][], [_write][], _writev

-
-

Operate on written data, then read the result

-
-

[Transform](#stream_class_stream_transform_1)

-
-

_transform, _flush

-
- -In your implementation code, it is very important to never call the -methods described in [API for Stream Consumers][] above. Otherwise, you -can potentially cause adverse side effects in programs that consume -your streaming interfaces. - -### Class: stream.Readable - - - -`stream.Readable` is an abstract class designed to be extended with an -underlying implementation of the [`_read(size)`][] method. - -Please see above under [API for Stream Consumers][] for how to consume -streams in your programs. What follows is an explanation of how to -implement Readable streams in your programs. - -#### Example: A Counting Stream - - - -This is a basic example of a Readable stream. It emits the numerals -from 1 to 1,000,000 in ascending order, and then ends. - -```javascript -var Readable = require('stream').Readable; -var util = require('util'); -util.inherits(Counter, Readable); - -function Counter(opt) { - Readable.call(this, opt); - this._max = 1000000; - this._index = 1; -} - -Counter.prototype._read = function() { - var i = this._index++; - if (i > this._max) - this.push(null); - else { - var str = '' + i; - var buf = new Buffer(str, 'ascii'); - this.push(buf); - } -}; -``` - -#### Example: SimpleProtocol v1 (Sub-optimal) - -This is similar to the `parseHeader` function described above, but -implemented as a custom stream. Also, note that this implementation -does not convert the incoming data to a string. - -However, this would be better implemented as a [Transform][] stream. See -below for a better implementation. - -```javascript -// A parser for a simple data protocol. -// The "header" is a JSON object, followed by 2 \n characters, and -// then a message body. -// -// NOTE: This can be done more simply as a Transform stream! -// Using Readable directly for this is sub-optimal. See the -// alternative example below under the Transform section. - -var Readable = require('stream').Readable; -var util = require('util'); - -util.inherits(SimpleProtocol, Readable); - -function SimpleProtocol(source, options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(source, options); - - Readable.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - - // source is a readable stream, such as a socket or file - this._source = source; - - var self = this; - source.on('end', function() { - self.push(null); - }); - - // give it a kick whenever the source is readable - // read(0) will not consume any bytes - source.on('readable', function() { - self.read(0); - }); - - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._read = function(n) { - if (!this._inBody) { - var chunk = this._source.read(); - - // if the source doesn't have data, we don't have data yet. - if (chunk === null) - return this.push(''); - - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - this.push(''); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // now, because we got some extra data, unshift the rest - // back into the read queue so that our consumer will see it. - var b = chunk.slice(split); - this.unshift(b); - // calling unshift by itself does not reset the reading state - // of the stream; since we're inside _read, doing an additional - // push('') will reset the state appropriately. - this.push(''); - - // and let them know that we are done parsing the header. - this.emit('header', this.header); - } - } else { - // from there on, just provide the data to our consumer. - // careful not to push(null), since that would indicate EOF. - var chunk = this._source.read(); - if (chunk) this.push(chunk); - } -}; - -// Usage: -// var parser = new SimpleProtocol(source); -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - - -#### new stream.Readable([options]) - -* `options` {Object} - * `highWaterMark` {Number} The maximum number of bytes to store in - the internal buffer before ceasing to read from the underlying - resource. Default=16kb, or 16 for `objectMode` streams - * `encoding` {String} If specified, then buffers will be decoded to - strings using the specified encoding. Default=null - * `objectMode` {Boolean} Whether this stream should behave - as a stream of objects. Meaning that stream.read(n) returns - a single value instead of a Buffer of size n. Default=false - -In classes that extend the Readable class, make sure to call the -Readable constructor so that the buffering settings can be properly -initialized. - -#### readable.\_read(size) - -* `size` {Number} Number of bytes to read asynchronously - -Note: **Implement this method, but do NOT call it directly.** - -This method is prefixed with an underscore because it is internal to the -class that defines it and should only be called by the internal Readable -class methods. All Readable stream implementations must provide a _read -method to fetch data from the underlying resource. - -When _read is called, if data is available from the resource, `_read` should -start pushing that data into the read queue by calling `this.push(dataChunk)`. -`_read` should continue reading from the resource and pushing data until push -returns false, at which point it should stop reading from the resource. Only -when _read is called again after it has stopped should it start reading -more data from the resource and pushing that data onto the queue. - -Note: once the `_read()` method is called, it will not be called again until -the `push` method is called. - -The `size` argument is advisory. Implementations where a "read" is a -single call that returns data can use this to know how much data to -fetch. Implementations where that is not relevant, such as TCP or -TLS, may ignore this argument, and simply provide data whenever it -becomes available. There is no need, for example to "wait" until -`size` bytes are available before calling [`stream.push(chunk)`][]. - -#### readable.push(chunk[, encoding]) - -* `chunk` {Buffer | null | String} Chunk of data to push into the read queue -* `encoding` {String} Encoding of String chunks. Must be a valid - Buffer encoding, such as `'utf8'` or `'ascii'` -* return {Boolean} Whether or not more pushes should be performed - -Note: **This method should be called by Readable implementors, NOT -by consumers of Readable streams.** - -If a value other than null is passed, The `push()` method adds a chunk of data -into the queue for subsequent stream processors to consume. If `null` is -passed, it signals the end of the stream (EOF), after which no more data -can be written. - -The data added with `push` can be pulled out by calling the `read()` method -when the `'readable'`event fires. - -This API is designed to be as flexible as possible. For example, -you may be wrapping a lower-level source which has some sort of -pause/resume mechanism, and a data callback. In those cases, you -could wrap the low-level source object by doing something like this: - -```javascript -// source is an object with readStop() and readStart() methods, -// and an `ondata` member that gets called when it has data, and -// an `onend` member that gets called when the data is over. - -util.inherits(SourceWrapper, Readable); - -function SourceWrapper(options) { - Readable.call(this, options); - - this._source = getLowlevelSourceObject(); - var self = this; - - // Every time there's data, we push it into the internal buffer. - this._source.ondata = function(chunk) { - // if push() returns false, then we need to stop reading from source - if (!self.push(chunk)) - self._source.readStop(); - }; - - // When the source ends, we push the EOF-signaling `null` chunk - this._source.onend = function() { - self.push(null); - }; -} - -// _read will be called when the stream wants to pull more data in -// the advisory size argument is ignored in this case. -SourceWrapper.prototype._read = function(size) { - this._source.readStart(); -}; -``` - - -### Class: stream.Writable - - - -`stream.Writable` is an abstract class designed to be extended with an -underlying implementation of the [`_write(chunk, encoding, callback)`][] method. - -Please see above under [API for Stream Consumers][] for how to consume -writable streams in your programs. What follows is an explanation of -how to implement Writable streams in your programs. - -#### new stream.Writable([options]) - -* `options` {Object} - * `highWaterMark` {Number} Buffer level when [`write()`][] starts - returning false. Default=16kb, or 16 for `objectMode` streams - * `decodeStrings` {Boolean} Whether or not to decode strings into - Buffers before passing them to [`_write()`][]. Default=true - * `objectMode` {Boolean} Whether or not the `write(anyObj)` is - a valid operation. If set you can write arbitrary data instead - of only `Buffer` / `String` data. Default=false - -In classes that extend the Writable class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### writable.\_write(chunk, encoding, callback) - -* `chunk` {Buffer | String} The chunk to be written. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunk. - -All Writable stream implementations must provide a [`_write()`][] -method to send data to the underlying resource. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Writable -class methods only. - -Call the callback using the standard `callback(error)` pattern to -signal that the write completed successfully or with an error. - -If the `decodeStrings` flag is set in the constructor options, then -`chunk` may be a string rather than a Buffer, and `encoding` will -indicate the sort of string that it is. This is to support -implementations that have an optimized handling for certain string -data encodings. If you do not explicitly set the `decodeStrings` -option to `false`, then you can safely ignore the `encoding` argument, -and assume that `chunk` will always be a Buffer. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### writable.\_writev(chunks, callback) - -* `chunks` {Array} The chunks to be written. Each chunk has following - format: `{ chunk: ..., encoding: ... }`. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunks. - -Note: **This function MUST NOT be called directly.** It may be -implemented by child classes, and called by the internal Writable -class methods only. - -This function is completely optional to implement. In most cases it is -unnecessary. If implemented, it will be called with all the chunks -that are buffered in the write queue. - - -### Class: stream.Duplex - - - -A "duplex" stream is one that is both Readable and Writable, such as a -TCP socket connection. - -Note that `stream.Duplex` is an abstract class designed to be extended -with an underlying implementation of the `_read(size)` and -[`_write(chunk, encoding, callback)`][] methods as you would with a -Readable or Writable stream class. - -Since JavaScript doesn't have multiple prototypal inheritance, this -class prototypally inherits from Readable, and then parasitically from -Writable. It is thus up to the user to implement both the lowlevel -`_read(n)` method as well as the lowlevel -[`_write(chunk, encoding, callback)`][] method on extension duplex classes. - -#### new stream.Duplex(options) - -* `options` {Object} Passed to both Writable and Readable - constructors. Also has the following fields: - * `allowHalfOpen` {Boolean} Default=true. If set to `false`, then - the stream will automatically end the readable side when the - writable side ends and vice versa. - * `readableObjectMode` {Boolean} Default=false. Sets `objectMode` - for readable side of the stream. Has no effect if `objectMode` - is `true`. - * `writableObjectMode` {Boolean} Default=false. Sets `objectMode` - for writable side of the stream. Has no effect if `objectMode` - is `true`. - -In classes that extend the Duplex class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - - -### Class: stream.Transform - -A "transform" stream is a duplex stream where the output is causally -connected in some way to the input, such as a [zlib][] stream or a -[crypto][] stream. - -There is no requirement that the output be the same size as the input, -the same number of chunks, or arrive at the same time. For example, a -Hash stream will only ever have a single chunk of output which is -provided when the input is ended. A zlib stream will produce output -that is either much smaller or much larger than its input. - -Rather than implement the [`_read()`][] and [`_write()`][] methods, Transform -classes must implement the `_transform()` method, and may optionally -also implement the `_flush()` method. (See below.) - -#### new stream.Transform([options]) - -* `options` {Object} Passed to both Writable and Readable - constructors. - -In classes that extend the Transform class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### transform.\_transform(chunk, encoding, callback) - -* `chunk` {Buffer | String} The chunk to be transformed. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument and data) when you are done processing the supplied chunk. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Transform -class methods only. - -All Transform stream implementations must provide a `_transform` -method to accept input and produce output. - -`_transform` should do whatever has to be done in this specific -Transform class, to handle the bytes being written, and pass them off -to the readable portion of the interface. Do asynchronous I/O, -process things, and so on. - -Call `transform.push(outputChunk)` 0 or more times to generate output -from this input chunk, depending on how much data you want to output -as a result of this chunk. - -Call the callback function only when the current chunk is completely -consumed. Note that there may or may not be output as a result of any -particular input chunk. If you supply a second argument to the callback -it will be passed to the push method. In other words the following are -equivalent: - -```javascript -transform.prototype._transform = function (data, encoding, callback) { - this.push(data); - callback(); -}; - -transform.prototype._transform = function (data, encoding, callback) { - callback(null, data); -}; -``` - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### transform.\_flush(callback) - -* `callback` {Function} Call this function (optionally with an error - argument) when you are done flushing any remaining data. - -Note: **This function MUST NOT be called directly.** It MAY be implemented -by child classes, and if so, will be called by the internal Transform -class methods only. - -In some cases, your transform operation may need to emit a bit more -data at the end of the stream. For example, a `Zlib` compression -stream will store up some internal state so that it can optimally -compress the output. At the end, however, it needs to do the best it -can with what is left, so that the data will be complete. - -In those cases, you can implement a `_flush` method, which will be -called at the very end, after all the written data is consumed, but -before emitting `end` to signal the end of the readable side. Just -like with `_transform`, call `transform.push(chunk)` zero or more -times, as appropriate, and call `callback` when the flush operation is -complete. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### Events: 'finish' and 'end' - -The [`finish`][] and [`end`][] events are from the parent Writable -and Readable classes respectively. The `finish` event is fired after -`.end()` is called and all chunks have been processed by `_transform`, -`end` is fired after all data has been output which is after the callback -in `_flush` has been called. - -#### Example: `SimpleProtocol` parser v2 - -The example above of a simple protocol parser can be implemented -simply by using the higher level [Transform][] stream class, similar to -the `parseHeader` and `SimpleProtocol v1` examples above. - -In this example, rather than providing the input as an argument, it -would be piped into the parser, which is a more idiomatic Node.js stream -approach. - -```javascript -var util = require('util'); -var Transform = require('stream').Transform; -util.inherits(SimpleProtocol, Transform); - -function SimpleProtocol(options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(options); - - Transform.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._transform = function(chunk, encoding, done) { - if (!this._inBody) { - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // and let them know that we are done parsing the header. - this.emit('header', this.header); - - // now, because we got some extra data, emit this first. - this.push(chunk.slice(split)); - } - } else { - // from there on, just provide the data to our consumer as-is. - this.push(chunk); - } - done(); -}; - -// Usage: -// var parser = new SimpleProtocol(); -// source.pipe(parser) -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - - -### Class: stream.PassThrough - -This is a trivial implementation of a [Transform][] stream that simply -passes the input bytes across to the output. Its purpose is mainly -for examples and testing, but there are occasionally use cases where -it can come in handy as a building block for novel sorts of streams. - - -## Simplified Constructor API - - - -In simple cases there is now the added benefit of being able to construct a stream without inheritance. - -This can be done by passing the appropriate methods as constructor options: - -Examples: - -### Readable -```javascript -var readable = new stream.Readable({ - read: function(n) { - // sets this._read under the hood - } -}); -``` - -### Writable -```javascript -var writable = new stream.Writable({ - write: function(chunk, encoding, next) { - // sets this._write under the hood - } -}); - -// or - -var writable = new stream.Writable({ - writev: function(chunks, next) { - // sets this._writev under the hood - } -}); -``` - -### Duplex -```javascript -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - }, - write: function(chunk, encoding, next) { - // sets this._write under the hood - } -}); - -// or - -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - }, - writev: function(chunks, next) { - // sets this._writev under the hood - } -}); -``` - -### Transform -```javascript -var transform = new stream.Transform({ - transform: function(chunk, encoding, next) { - // sets this._transform under the hood - }, - flush: function(done) { - // sets this._flush under the hood - } -}); -``` - -## Streams: Under the Hood - - - -### Buffering - - - -Both Writable and Readable streams will buffer data on an internal -object which can be retrieved from `_writableState.getBuffer()` or -`_readableState.buffer`, respectively. - -The amount of data that will potentially be buffered depends on the -`highWaterMark` option which is passed into the constructor. - -Buffering in Readable streams happens when the implementation calls -[`stream.push(chunk)`][]. If the consumer of the Stream does not call -`stream.read()`, then the data will sit in the internal queue until it -is consumed. - -Buffering in Writable streams happens when the user calls -[`stream.write(chunk)`][] repeatedly, even when `write()` returns `false`. - -The purpose of streams, especially with the `pipe()` method, is to -limit the buffering of data to acceptable levels, so that sources and -destinations of varying speed will not overwhelm the available memory. - -### `stream.read(0)` - -There are some cases where you want to trigger a refresh of the -underlying readable stream mechanisms, without actually consuming any -data. In that case, you can call `stream.read(0)`, which will always -return null. - -If the internal read buffer is below the `highWaterMark`, and the -stream is not currently reading, then calling `read(0)` will trigger -a low-level `_read` call. - -There is almost never a need to do this. However, you will see some -cases in Node.js's internals where this is done, particularly in the -Readable stream class internals. - -### `stream.push('')` - -Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an -interesting side effect. Because it *is* a call to -[`stream.push()`][], it will end the `reading` process. However, it -does *not* add any data to the readable buffer, so there's nothing for -a user to consume. - -Very rarely, there are cases where you have no data to provide now, -but the consumer of your stream (or, perhaps, another bit of your own -code) will know when to check again, by calling `stream.read(0)`. In -those cases, you *may* call `stream.push('')`. - -So far, the only use case for this functionality is in the -[tls.CryptoStream][] class, which is deprecated in Node.js/io.js v1.0. If you -find that you have to use `stream.push('')`, please consider another -approach, because it almost certainly indicates that something is -horribly wrong. - -### Compatibility with Older Node.js Versions - - - -In versions of Node.js prior to v0.10, the Readable stream interface was -simpler, but also less powerful and less useful. - -* Rather than waiting for you to call the `read()` method, `'data'` - events would start emitting immediately. If you needed to do some - I/O to decide how to handle data, then you had to store the chunks - in some kind of buffer so that they would not be lost. -* The [`pause()`][] method was advisory, rather than guaranteed. This - meant that you still had to be prepared to receive `'data'` events - even when the stream was in a paused state. - -In Node.js v0.10, the Readable class described below was added. -For backwards compatibility with older Node.js programs, Readable streams -switch into "flowing mode" when a `'data'` event handler is added, or -when the [`resume()`][] method is called. The effect is that, even if -you are not using the new `read()` method and `'readable'` event, you -no longer have to worry about losing `'data'` chunks. - -Most programs will continue to function normally. However, this -introduces an edge case in the following conditions: - -* No [`'data'` event][] handler is added. -* The [`resume()`][] method is never called. -* The stream is not piped to any writable destination. - -For example, consider the following code: - -```javascript -// WARNING! BROKEN! -net.createServer(function(socket) { - - // we add an 'end' method, but never consume the data - socket.on('end', function() { - // It will never get here. - socket.end('I got your message (but didnt read it)\n'); - }); - -}).listen(1337); -``` - -In versions of Node.js prior to v0.10, the incoming message data would be -simply discarded. However, in Node.js v0.10 and beyond, -the socket will remain paused forever. - -The workaround in this situation is to call the `resume()` method to -start the flow of data: - -```javascript -// Workaround -net.createServer(function(socket) { - - socket.on('end', function() { - socket.end('I got your message (but didnt read it)\n'); - }); - - // start the flow of data, discarding it. - socket.resume(); - -}).listen(1337); -``` - -In addition to new Readable streams switching into flowing mode, -pre-v0.10 style streams can be wrapped in a Readable class using the -`wrap()` method. - - -### Object Mode - - - -Normally, Streams operate on Strings and Buffers exclusively. - -Streams that are in **object mode** can emit generic JavaScript values -other than Buffers and Strings. - -A Readable stream in object mode will always return a single item from -a call to `stream.read(size)`, regardless of what the size argument -is. - -A Writable stream in object mode will always ignore the `encoding` -argument to `stream.write(data, encoding)`. - -The special value `null` still retains its special value for object -mode streams. That is, for object mode readable streams, `null` as a -return value from `stream.read()` indicates that there is no more -data, and [`stream.push(null)`][] will signal the end of stream data -(`EOF`). - -No streams in Node.js core are object mode streams. This pattern is only -used by userland streaming libraries. - -You should set `objectMode` in your stream child class constructor on -the options object. Setting `objectMode` mid-stream is not safe. - -For Duplex streams `objectMode` can be set exclusively for readable or -writable side with `readableObjectMode` and `writableObjectMode` -respectively. These options can be used to implement parsers and -serializers with Transform streams. - -```javascript -var util = require('util'); -var StringDecoder = require('string_decoder').StringDecoder; -var Transform = require('stream').Transform; -util.inherits(JSONParseStream, Transform); - -// Gets \n-delimited JSON string data, and emits the parsed objects -function JSONParseStream() { - if (!(this instanceof JSONParseStream)) - return new JSONParseStream(); - - Transform.call(this, { readableObjectMode : true }); - - this._buffer = ''; - this._decoder = new StringDecoder('utf8'); -} - -JSONParseStream.prototype._transform = function(chunk, encoding, cb) { - this._buffer += this._decoder.write(chunk); - // split on newlines - var lines = this._buffer.split(/\r?\n/); - // keep the last partial line buffered - this._buffer = lines.pop(); - for (var l = 0; l < lines.length; l++) { - var line = lines[l]; - try { - var obj = JSON.parse(line); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; - -JSONParseStream.prototype._flush = function(cb) { - // Just handle any leftover - var rem = this._buffer.trim(); - if (rem) { - try { - var obj = JSON.parse(rem); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; -``` - - -[EventEmitter]: https://iojs.org/dist/v5.0.0/doc/api/events.html#events_class_events_eventemitter -[Object mode]: #stream_object_mode -[`stream.push(chunk)`]: #stream_readable_push_chunk_encoding -[`stream.push(null)`]: #stream_readable_push_chunk_encoding -[`stream.push()`]: #stream_readable_push_chunk_encoding -[`unpipe()`]: #stream_readable_unpipe_destination -[unpiped]: #stream_readable_unpipe_destination -[tcp sockets]: https://iojs.org/dist/v5.0.0/doc/api/net.html#net_class_net_socket -[zlib streams]: zlib.html -[zlib]: zlib.html -[crypto streams]: crypto.html -[crypto]: crypto.html -[tls.CryptoStream]: https://iojs.org/dist/v5.0.0/doc/api/tls.html#tls_class_cryptostream -[process.stdin]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdin -[stdout]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdout -[process.stdout]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stdout -[process.stderr]: https://iojs.org/dist/v5.0.0/doc/api/process.html#process_process_stderr -[child process stdout and stderr]: https://iojs.org/dist/v5.0.0/doc/api/child_process.html#child_process_child_stdout -[API for Stream Consumers]: #stream_api_for_stream_consumers -[API for Stream Implementors]: #stream_api_for_stream_implementors -[Readable]: #stream_class_stream_readable -[Writable]: #stream_class_stream_writable -[Duplex]: #stream_class_stream_duplex -[Transform]: #stream_class_stream_transform -[`end`]: #stream_event_end -[`finish`]: #stream_event_finish -[`_read(size)`]: #stream_readable_read_size_1 -[`_read()`]: #stream_readable_read_size_1 -[_read]: #stream_readable_read_size_1 -[`writable.write(chunk)`]: #stream_writable_write_chunk_encoding_callback -[`write(chunk, encoding, callback)`]: #stream_writable_write_chunk_encoding_callback -[`write()`]: #stream_writable_write_chunk_encoding_callback -[`stream.write(chunk)`]: #stream_writable_write_chunk_encoding_callback -[`_write(chunk, encoding, callback)`]: #stream_writable_write_chunk_encoding_callback_1 -[`_write()`]: #stream_writable_write_chunk_encoding_callback_1 -[_write]: #stream_writable_write_chunk_encoding_callback_1 -[`util.inherits`]: https://iojs.org/dist/v5.0.0/doc/api/util.html#util_util_inherits_constructor_superconstructor -[`end()`]: #stream_writable_end_chunk_encoding_callback -[`'data'` event]: #stream_event_data -[`resume()`]: #stream_readable_resume -[`readable.resume()`]: #stream_readable_resume -[`pause()`]: #stream_readable_pause -[`unpipe()`]: #stream_readable_unpipe_destination -[`pipe()`]: #stream_readable_pipe_destination_options diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md deleted file mode 100644 index 83275f19..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +++ /dev/null @@ -1,60 +0,0 @@ -# streams WG Meeting 2015-01-30 - -## Links - -* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg -* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 -* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ - -## Agenda - -Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. - -* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) -* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) -* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) -* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) - -## Minutes - -### adopt a charter - -* group: +1's all around - -### What versioning scheme should be adopted? -* group: +1’s 3.0.0 -* domenic+group: pulling in patches from other sources where appropriate -* mikeal: version independently, suggesting versions for io.js -* mikeal+domenic: work with TC to notify in advance of changes -simpler stream creation - -### streamline creation of streams -* sam: streamline creation of streams -* domenic: nice simple solution posted - but, we lose the opportunity to change the model - may not be backwards incompatible (double check keys) - - **action item:** domenic will check - -### remove implicit flowing of streams on(‘data’) -* add isFlowing / isPaused -* mikeal: worrying that we’re documenting polyfill methods – confuses users -* domenic: more reflective API is probably good, with warning labels for users -* new section for mad scientists (reflective stream access) -* calvin: name the “third state” -* mikeal: maybe borrow the name from whatwg? -* domenic: we’re missing the “third state” -* consensus: kind of difficult to name the third state -* mikeal: figure out differences in states / compat -* mathias: always flow on data – eliminates third state - * explore what it breaks - -**action items:** -* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) -* ask rod/build for infrastructure -* **chris**: explore the “flow on data” approach -* add isPaused/isFlowing -* add new docs section -* move isPaused to that section - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index 69558af0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,82 +0,0 @@ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index bddfdd01..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,27 +0,0 @@ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 90068ea2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,973 +0,0 @@ -'use strict'; - -module.exports = Readable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events'); - -/**/ -var EElistenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - - - -/**/ -var Stream; -(function (){try{ - Stream = require('st' + 'ream'); -}catch(_){}finally{ - if (!Stream) - Stream = require('events').EventEmitter; -}}()) -/**/ - -var Buffer = require('buffer').Buffer; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - - - -/**/ -var debugUtil = require('util'); -var debug; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) - this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - var Duplex = require('./_stream_duplex'); - - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') - this._read = options.read; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -Readable.prototype.isPaused = function() { - return this._readableState.flowing === false; -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - if (!addToFront) - state.reading = false; - - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) - state.buffer.unshift(chunk); - else - state.buffer.push(chunk); - - if (state.needReadable) - emitReadable(stream); - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = computeNewHighWaterMark(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else { - return state.length; - } - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) - endReadable(this); - else - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } - - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) - endReadable(this); - - if (ret !== null) - this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!(Buffer.isBuffer(chunk)) && - typeof chunk !== 'string' && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) - processNextTick(emitReadable_, stream); - else - emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - processNextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && - (!dest._writableState || dest._writableState.needDrain)) - ondrain(); - } - - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - if (state.pipesCount === 1 && - state.pipes[0] === dest && - src.listenerCount('data') === 1 && - !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) - state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) - stream.read(0); -} - -Readable.prototype.pause = function() { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - debug('wrapped data'); - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }; }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else if (list.length === 1) - ret = list[0]; - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 3675d18d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,197 +0,0 @@ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') - this._transform = options.transform; - - if (typeof options.flush === 'function') - this._flush = options.flush; - } - - this.once('prefinish', function() { - if (typeof this._flush === 'function') - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 23a2ba29..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,527 +0,0 @@ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -module.exports = Writable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - - - -/**/ -var Stream; -(function (){try{ - Stream = require('st' + 'ream'); -}catch(_){}finally{ - if (!Stream) - Stream = require('events').EventEmitter; -}}()) -/**/ - -var Buffer = require('buffer').Buffer; - -util.inherits(Writable, Stream); - -function nop() {} - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -function WritableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) - this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function (){try { -Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function() { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + - 'instead.') -}); -}catch(_){}}()); - - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') - this._write = options.write; - - if (typeof options.writev === 'function') - this._writev = options.writev; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - - if (!(Buffer.isBuffer(chunk)) && - typeof chunk !== 'string' && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = nop; - - if (state.ended) - writeAfterEnd(this, cb); - else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function() { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function() { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && - !state.corked && - !state.finished && - !state.bufferProcessing && - state.bufferedRequest) - clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') - encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', -'ucs2', 'ucs-2','utf16le', 'utf-16le', 'raw'] -.indexOf((encoding + '').toLowerCase()) > -1)) - throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) - stream._writev(chunk, state.onwrite); - else - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) - processNextTick(cb, er); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && - !state.corked && - !state.bufferProcessing && - state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - processNextTick(afterWrite, stream, state, finished, cb); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var buffer = []; - var cbs = []; - while (entry) { - cbs.push(entry.callback); - buffer.push(entry); - entry = entry.next; - } - - // count the one we are adding, as well. - // TODO(isaacs) clean this up - state.pendingcb++; - state.lastBufferedRequest = null; - doWrite(stream, state, true, state.length, buffer, '', function(err) { - for (var i = 0; i < cbs.length; i++) { - state.pendingcb--; - cbs[i](err); - } - }); - - // Clear buffer - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) - state.lastBufferedRequest = null; - } - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) - this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(state) { - return (state.ending && - state.length === 0 && - state.bufferedRequest === null && - !state.finished && - !state.writing); -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - processNextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE deleted file mode 100644 index d8d7f943..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright Node.js contributors. All rights reserved. - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b414..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c05..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js deleted file mode 100644 index ff4c851c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json deleted file mode 100644 index ddd227e6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "name": "core-util-is", - "version": "1.0.2", - "description": "The `util.is*` functions introduced in Node v0.12.", - "main": "lib/util.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is.git" - }, - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "scripts": { - "test": "tap test.js" - }, - "devDependencies": { - "tap": "^2.3.0" - }, - "gitHead": "a177da234df5638b363ddc15fa324619a38577c8", - "homepage": "https://github.com/isaacs/core-util-is#readme", - "_id": "core-util-is@1.0.2", - "_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "_from": "core-util-is@>=1.0.0 <1.1.0", - "_npmVersion": "3.3.2", - "_nodeVersion": "4.0.0", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "dist": { - "shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "tarball": "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js deleted file mode 100644 index 1a490c65..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js +++ /dev/null @@ -1,68 +0,0 @@ -var assert = require('tap'); - -var t = require('./lib/util'); - -assert.equal(t.isArray([]), true); -assert.equal(t.isArray({}), false); - -assert.equal(t.isBoolean(null), false); -assert.equal(t.isBoolean(true), true); -assert.equal(t.isBoolean(false), true); - -assert.equal(t.isNull(null), true); -assert.equal(t.isNull(undefined), false); -assert.equal(t.isNull(false), false); -assert.equal(t.isNull(), false); - -assert.equal(t.isNullOrUndefined(null), true); -assert.equal(t.isNullOrUndefined(undefined), true); -assert.equal(t.isNullOrUndefined(false), false); -assert.equal(t.isNullOrUndefined(), true); - -assert.equal(t.isNumber(null), false); -assert.equal(t.isNumber('1'), false); -assert.equal(t.isNumber(1), true); - -assert.equal(t.isString(null), false); -assert.equal(t.isString('1'), true); -assert.equal(t.isString(1), false); - -assert.equal(t.isSymbol(null), false); -assert.equal(t.isSymbol('1'), false); -assert.equal(t.isSymbol(1), false); -assert.equal(t.isSymbol(Symbol()), true); - -assert.equal(t.isUndefined(null), false); -assert.equal(t.isUndefined(undefined), true); -assert.equal(t.isUndefined(false), false); -assert.equal(t.isUndefined(), true); - -assert.equal(t.isRegExp(null), false); -assert.equal(t.isRegExp('1'), false); -assert.equal(t.isRegExp(new RegExp()), true); - -assert.equal(t.isObject({}), true); -assert.equal(t.isObject([]), true); -assert.equal(t.isObject(new RegExp()), true); -assert.equal(t.isObject(new Date()), true); - -assert.equal(t.isDate(null), false); -assert.equal(t.isDate('1'), false); -assert.equal(t.isDate(new Date()), true); - -assert.equal(t.isError(null), false); -assert.equal(t.isError({ err: true }), false); -assert.equal(t.isError(new Error()), true); - -assert.equal(t.isFunction(null), false); -assert.equal(t.isFunction({ }), false); -assert.equal(t.isFunction(function() {}), true); - -assert.equal(t.isPrimitive(null), true); -assert.equal(t.isPrimitive(''), true); -assert.equal(t.isPrimitive(0), true); -assert.equal(t.isPrimitive(new Date()), false); - -assert.equal(t.isBuffer(null), false); -assert.equal(t.isBuffer({}), false); -assert.equal(t.isBuffer(new Buffer(0)), true); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md deleted file mode 100644 index b1c56658..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/README.md +++ /dev/null @@ -1,42 +0,0 @@ -Browser-friendly inheritance fully compatible with standard node.js -[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). - -This package exports standard `inherits` from node.js `util` module in -node environment, but also provides alternative browser-friendly -implementation through [browser -field](https://gist.github.com/shtylman/4339901). Alternative -implementation is a literal copy of standard one located in standalone -module to avoid requiring of `util`. It also has a shim for old -browsers with no `Object.create` support. - -While keeping you sure you are using standard `inherits` -implementation in node.js environment, it allows bundlers such as -[browserify](https://github.com/substack/node-browserify) to not -include full `util` package to your client code if all you need is -just `inherits` function. It worth, because browser shim for `util` -package is large and `inherits` is often the single function you need -from it. - -It's recommended to use this package instead of -`require('util').inherits` for any code that has chances to be used -not only in node.js but in browser too. - -## usage - -```js -var inherits = require('inherits'); -// then use exactly as the standard one -``` - -## note on version ~1.0 - -Version ~1.0 had completely different motivation and is not compatible -neither with 2.0 nor with standard node.js `inherits`. - -If you are using version ~1.0 and planning to switch to ~2.0, be -careful: - -* new version uses `super_` instead of `super` for referencing - superclass -* new version overwrites current prototype while old one preserves any - existing fields on it diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js deleted file mode 100644 index 29f5e24f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('util').inherits diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js deleted file mode 100644 index c1e78a75..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/inherits_browser.js +++ /dev/null @@ -1,23 +0,0 @@ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json deleted file mode 100644 index 93d50784..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "inherits", - "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", - "version": "2.0.1", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented", - "inherits", - "browser", - "browserify" - ], - "main": "./inherits.js", - "browser": "./inherits_browser.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/inherits.git" - }, - "license": "ISC", - "scripts": { - "test": "node test" - }, - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "_id": "inherits@2.0.1", - "dist": { - "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "_from": "inherits@>=2.0.1 <2.1.0", - "_npmVersion": "1.3.8", - "_npmUser": { - "name": "isaacs", - "email": "i@izs.me" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - } - ], - "directories": {}, - "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1", - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "readme": "ERROR: No README data found!", - "homepage": "https://github.com/isaacs/inherits#readme" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js deleted file mode 100644 index fc53012d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/inherits/test.js +++ /dev/null @@ -1,25 +0,0 @@ -var inherits = require('./inherits.js') -var assert = require('assert') - -function test(c) { - assert(c.constructor === Child) - assert(c.constructor.super_ === Parent) - assert(Object.getPrototypeOf(c) === Child.prototype) - assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype) - assert(c instanceof Child) - assert(c instanceof Parent) -} - -function Child() { - Parent.call(this) - test(this) -} - -function Parent() {} - -inherits(Child, Parent) - -var c = new Child -test(c) - -console.log('ok') diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md deleted file mode 100644 index 052a62b8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/README.md +++ /dev/null @@ -1,54 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -## Usage - -```js -var isArray = require('isarray'); - -console.log(isArray([])); // => true -console.log(isArray({})); // => false -``` - -## Installation - -With [npm](http://npmjs.org) do - -```bash -$ npm install isarray -``` - -Then bundle for the browser with -[browserify](https://github.com/substack/browserify). - -With [component](http://component.io) do - -```bash -$ component install juliangruber/isarray -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js deleted file mode 100644 index ec58596a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/build/build.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (require.modules.hasOwnProperty(path)) return path; - } - - if (require.aliases.hasOwnProperty(index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!require.modules.hasOwnProperty(from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return require.modules.hasOwnProperty(localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("isarray/index.js", function(exports, require, module){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -}); -require.alias("isarray/index.js", "isarray/index.js"); - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json deleted file mode 100644 index 9e31b683..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js deleted file mode 100644 index 5f5ad45d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/index.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json deleted file mode 100644 index 19228ab6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/isarray/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "0.0.1", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "*" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "_id": "isarray@0.0.1", - "dist": { - "shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "tarball": "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "_from": "isarray@0.0.1", - "_npmVersion": "1.2.18", - "_npmUser": { - "name": "juliangruber", - "email": "julian@juliangruber.com" - }, - "maintainers": [ - { - "name": "juliangruber", - "email": "julian@juliangruber.com" - } - ], - "directories": {}, - "_shasum": "8a18acfca9a8f4177e09abfc6038939b05d1eedf", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - }, - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml deleted file mode 100644 index 5ac98855..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" - - "0.12" - - "iojs" diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js deleted file mode 100644 index 049521ca..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -module.exports = nextTick; - -function nextTick(fn) { - var args = new Array(arguments.length - 1); - var i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - process.nextTick(function afterTick() { - fn.apply(null, args); - }); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md deleted file mode 100644 index c67e3532..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/license.md +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2015 Calvin Metcalf - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json deleted file mode 100644 index 087586e8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "process-nextick-args", - "version": "1.0.3", - "description": "process.nextTick but always with args", - "main": "index.js", - "scripts": { - "test": "node test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/calvinmetcalf/process-nextick-args.git" - }, - "author": "", - "license": "MIT", - "bugs": { - "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" - }, - "homepage": "https://github.com/calvinmetcalf/process-nextick-args", - "devDependencies": { - "tap": "~0.2.6" - }, - "gitHead": "e855846a69662b9489f1ad3dde1ebf2ccc4370b8", - "_id": "process-nextick-args@1.0.3", - "_shasum": "e272eed825d5e9f4ea74d8d73b1fe311c3beb630", - "_from": "process-nextick-args@>=1.0.0 <1.1.0", - "_npmVersion": "2.9.0", - "_nodeVersion": "2.5.0", - "_npmUser": { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" - }, - "dist": { - "shasum": "e272eed825d5e9f4ea74d8d73b1fe311c3beb630", - "tarball": "http://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" - }, - "maintainers": [ - { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md deleted file mode 100644 index 78e7cfae..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -process-nextick-args -===== - -[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) - -```bash -npm install --save process-nextick-args -``` - -Always be able to pass arguments to process.nextTick, no matter the platform - -```js -var nextTick = require('process-nextick-args'); - -nextTick(function (a, b, c) { - console.log(a, b, c); -}, 'step', 3, 'profit'); -``` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js deleted file mode 100644 index ef157215..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/process-nextick-args/test.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require("tap").test; -var nextTick = require('./'); - -test('should work', function (t) { - t.plan(5); - nextTick(function (a) { - t.ok(a); - nextTick(function (thing) { - t.equals(thing, 7); - }, 7); - }, true); - nextTick(function (a, b, c) { - t.equals(a, 'step'); - t.equals(b, 3); - t.equals(c, 'profit'); - }, 'step', 3, 'profit'); -}); - -test('correct number of arguments', function (t) { - t.plan(1); - nextTick(function () { - t.equals(2, arguments.length, 'correct number'); - }, 1, 2); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54fb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/index.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json deleted file mode 100644 index 0364d54b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/string_decoder/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "string_decoder", - "version": "0.10.31", - "description": "The string_decoder module from Node core", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tap": "~0.4.8" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "_id": "string_decoder@0.10.31", - "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "_from": "string_decoder@>=0.10.0 <0.11.0", - "_npmVersion": "1.4.23", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "substack", - "email": "mail@substack.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md deleted file mode 100644 index acc86753..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/History.md +++ /dev/null @@ -1,16 +0,0 @@ - -1.0.2 / 2015-10-07 -================== - - * use try/catch when checking `localStorage` (#3, @kumavis) - -1.0.1 / 2014-11-25 -================== - - * browser: use `console.warn()` for deprecation calls - * browser: more jsdocs - -1.0.0 / 2014-04-30 -================== - - * initial commit diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE deleted file mode 100644 index 6a60e8c2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md deleted file mode 100644 index 75622fa7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/README.md +++ /dev/null @@ -1,53 +0,0 @@ -util-deprecate -============== -### The Node.js `util.deprecate()` function with browser support - -In Node.js, this module simply re-exports the `util.deprecate()` function. - -In the web browser (i.e. via browserify), a browser-specific implementation -of the `util.deprecate()` function is used. - - -## API - -A `deprecate()` function is the only thing exposed by this module. - -``` javascript -// setup: -exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead'); - - -// users see: -foo(); -// foo() is deprecated, use bar() instead -foo(); -foo(); -``` - - -## License - -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js deleted file mode 100644 index 549ae2f0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/browser.js +++ /dev/null @@ -1,67 +0,0 @@ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js deleted file mode 100644 index 5e6fcff5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/node.js +++ /dev/null @@ -1,6 +0,0 @@ - -/** - * For Node.js, simply re-export the core `util.deprecate` function. - */ - -module.exports = require('util').deprecate; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json deleted file mode 100644 index ae0c70f6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/node_modules/util-deprecate/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "util-deprecate", - "version": "1.0.2", - "description": "The Node.js `util.deprecate()` function with browser support", - "main": "node.js", - "browser": "browser.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git://github.com/TooTallNate/util-deprecate.git" - }, - "keywords": [ - "util", - "deprecate", - "browserify", - "browser", - "node" - ], - "author": { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://n8.io/" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/TooTallNate/util-deprecate/issues" - }, - "homepage": "https://github.com/TooTallNate/util-deprecate", - "gitHead": "475fb6857cd23fafff20c1be846c1350abf8e6d4", - "_id": "util-deprecate@1.0.2", - "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "_from": "util-deprecate@>=1.0.1 <1.1.0", - "_npmVersion": "2.14.4", - "_nodeVersion": "4.1.2", - "_npmUser": { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - "maintainers": [ - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - } - ], - "dist": { - "shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "tarball": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json deleted file mode 100644 index 248dbac4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "readable-stream", - "version": "2.0.4", - "description": "Streams3, a user-land copy of the stream library from iojs v2.x", - "main": "readable.js", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "process-nextick-args": "~1.0.0", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "devDependencies": { - "tap": "~0.2.6", - "tape": "~4.0.0", - "zuul": "~3.0.0" - }, - "scripts": { - "test": "tap test/parallel/*.js", - "browser": "npm run write-zuul && zuul -- test/browser.js", - "write-zuul": "printf \"ui: tape\nbrowsers:\n - name: $BROWSER_NAME\n version: $BROWSER_VERSION\n\">.zuul.yml" - }, - "repository": { - "type": "git", - "url": "git://github.com/nodejs/readable-stream.git" - }, - "keywords": [ - "readable", - "stream", - "pipe" - ], - "browser": { - "util": false - }, - "license": "MIT", - "gitHead": "f2a4f4a659bacbe742a494b7d2aede64fab0d4f9", - "bugs": { - "url": "https://github.com/nodejs/readable-stream/issues" - }, - "homepage": "https://github.com/nodejs/readable-stream#readme", - "_id": "readable-stream@2.0.4", - "_shasum": "2523ef27ffa339d7ba9da8603f2d0599d06edbd8", - "_from": "readable-stream@>=2.0.0 <2.1.0", - "_npmVersion": "2.14.4", - "_nodeVersion": "4.1.1", - "_npmUser": { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" - }, - "dist": { - "shasum": "2523ef27ffa339d7ba9da8603f2d0599d06edbd8", - "tarball": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - { - "name": "tootallnate", - "email": "nathan@tootallnate.net" - }, - { - "name": "rvagg", - "email": "rod@vagg.org" - }, - { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js deleted file mode 100644 index 6222a579..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,12 +0,0 @@ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/package.json deleted file mode 100644 index 15138470..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "bl", - "version": "1.0.0", - "description": "Buffer List: collect buffers and access with a standard readable Buffer interface, streamable too!", - "main": "bl.js", - "scripts": { - "test": "node test/test.js | faucet", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/bl.git" - }, - "homepage": "https://github.com/rvagg/bl", - "authors": [ - "Rod Vagg (https://github.com/rvagg)", - "Matteo Collina (https://github.com/mcollina)", - "Jarett Cruger (https://github.com/jcrugzz)" - ], - "keywords": [ - "buffer", - "buffers", - "stream", - "awesomesauce" - ], - "license": "MIT", - "dependencies": { - "readable-stream": "~2.0.0" - }, - "devDependencies": { - "tape": "~2.12.3", - "hash_file": "~0.1.1", - "faucet": "~0.0.1", - "brtapsauce": "~0.3.0" - }, - "gitHead": "1794938be6697a6d1e02cd942a4eea59b353347a", - "bugs": { - "url": "https://github.com/rvagg/bl/issues" - }, - "_id": "bl@1.0.0", - "_shasum": "ada9a8a89a6d7ac60862f7dec7db207873e0c3f5", - "_from": "bl@>=1.0.0 <1.1.0", - "_npmVersion": "2.9.0", - "_nodeVersion": "2.0.1-nightly20150618d2e4e03444", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "ada9a8a89a6d7ac60862f7dec7db207873e0c3f5", - "tarball": "http://registry.npmjs.org/bl/-/bl-1.0.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/basic-test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/basic-test.js deleted file mode 100644 index 75116a30..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/basic-test.js +++ /dev/null @@ -1,541 +0,0 @@ -var tape = require('tape') - , crypto = require('crypto') - , fs = require('fs') - , hash = require('hash_file') - , BufferList = require('../') - - , encodings = - ('hex utf8 utf-8 ascii binary base64' - + (process.browser ? '' : ' ucs2 ucs-2 utf16le utf-16le')).split(' ') - -tape('single bytes from single buffer', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - - t.equal(bl.length, 4) - - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - - t.end() -}) - -tape('single bytes from multiple buffers', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.get(0), 97) - t.equal(bl.get(1), 98) - t.equal(bl.get(2), 99) - t.equal(bl.get(3), 100) - t.equal(bl.get(4), 101) - t.equal(bl.get(5), 102) - t.equal(bl.get(6), 103) - t.equal(bl.get(7), 104) - t.equal(bl.get(8), 105) - t.equal(bl.get(9), 106) - t.end() -}) - -tape('multi bytes from single buffer', function (t) { - var bl = new BufferList() - bl.append(new Buffer('abcd')) - - t.equal(bl.length, 4) - - t.equal(bl.slice(0, 4).toString('ascii'), 'abcd') - t.equal(bl.slice(0, 3).toString('ascii'), 'abc') - t.equal(bl.slice(1, 4).toString('ascii'), 'bcd') - - t.end() -}) - -tape('multiple bytes from multiple buffers', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -tape('multiple bytes from multiple buffer lists', function (t) { - var bl = new BufferList() - - bl.append(new BufferList([new Buffer('abcd'), new Buffer('efg')])) - bl.append(new BufferList([new Buffer('hi'), new Buffer('j')])) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - t.equal(bl.slice(3, 10).toString('ascii'), 'defghij') - t.equal(bl.slice(3, 6).toString('ascii'), 'def') - t.equal(bl.slice(3, 8).toString('ascii'), 'defgh') - t.equal(bl.slice(5, 10).toString('ascii'), 'fghij') - - t.end() -}) - -tape('consuming from multiple buffers', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.length, 10) - - t.equal(bl.slice(0, 10).toString('ascii'), 'abcdefghij') - - bl.consume(3) - t.equal(bl.length, 7) - t.equal(bl.slice(0, 7).toString('ascii'), 'defghij') - - bl.consume(2) - t.equal(bl.length, 5) - t.equal(bl.slice(0, 5).toString('ascii'), 'fghij') - - bl.consume(1) - t.equal(bl.length, 4) - t.equal(bl.slice(0, 4).toString('ascii'), 'ghij') - - bl.consume(1) - t.equal(bl.length, 3) - t.equal(bl.slice(0, 3).toString('ascii'), 'hij') - - bl.consume(2) - t.equal(bl.length, 1) - t.equal(bl.slice(0, 1).toString('ascii'), 'j') - - t.end() -}) - -tape('test readUInt8 / readInt8', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt8(2), 0x3) - t.equal(bl.readInt8(2), 0x3) - t.equal(bl.readUInt8(3), 0x4) - t.equal(bl.readInt8(3), 0x4) - t.equal(bl.readUInt8(4), 0x23) - t.equal(bl.readInt8(4), 0x23) - t.equal(bl.readUInt8(5), 0x42) - t.equal(bl.readInt8(5), 0x42) - t.end() -}) - -tape('test readUInt16LE / readUInt16BE / readInt16LE / readInt16BE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt16BE(2), 0x0304) - t.equal(bl.readUInt16LE(2), 0x0403) - t.equal(bl.readInt16BE(2), 0x0304) - t.equal(bl.readInt16LE(2), 0x0403) - t.equal(bl.readUInt16BE(3), 0x0423) - t.equal(bl.readUInt16LE(3), 0x2304) - t.equal(bl.readInt16BE(3), 0x0423) - t.equal(bl.readInt16LE(3), 0x2304) - t.equal(bl.readUInt16BE(4), 0x2342) - t.equal(bl.readUInt16LE(4), 0x4223) - t.equal(bl.readInt16BE(4), 0x2342) - t.equal(bl.readInt16LE(4), 0x4223) - t.end() -}) - -tape('test readUInt32LE / readUInt32BE / readInt32LE / readInt32BE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x3 - buf2[2] = 0x4 - buf3[0] = 0x23 - buf3[1] = 0x42 - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readUInt32BE(2), 0x03042342) - t.equal(bl.readUInt32LE(2), 0x42230403) - t.equal(bl.readInt32BE(2), 0x03042342) - t.equal(bl.readInt32LE(2), 0x42230403) - t.end() -}) - -tape('test readFloatLE / readFloatBE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(3) - , bl = new BufferList() - - buf2[1] = 0x00 - buf2[2] = 0x00 - buf3[0] = 0x80 - buf3[1] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readFloatLE(2), 0x01) - t.end() -}) - -tape('test readDoubleLE / readDoubleBE', function (t) { - var buf1 = new Buffer(1) - , buf2 = new Buffer(3) - , buf3 = new Buffer(10) - , bl = new BufferList() - - buf2[1] = 0x55 - buf2[2] = 0x55 - buf3[0] = 0x55 - buf3[1] = 0x55 - buf3[2] = 0x55 - buf3[3] = 0x55 - buf3[4] = 0xd5 - buf3[5] = 0x3f - - bl.append(buf1) - bl.append(buf2) - bl.append(buf3) - - t.equal(bl.readDoubleLE(2), 0.3333333333333333) - t.end() -}) - -tape('test toString', function (t) { - var bl = new BufferList() - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - - t.equal(bl.toString('ascii', 0, 10), 'abcdefghij') - t.equal(bl.toString('ascii', 3, 10), 'defghij') - t.equal(bl.toString('ascii', 3, 6), 'def') - t.equal(bl.toString('ascii', 3, 8), 'defgh') - t.equal(bl.toString('ascii', 5, 10), 'fghij') - - t.end() -}) - -tape('test toString encoding', function (t) { - var bl = new BufferList() - , b = new Buffer('abcdefghij\xff\x00') - - bl.append(new Buffer('abcd')) - bl.append(new Buffer('efg')) - bl.append(new Buffer('hi')) - bl.append(new Buffer('j')) - bl.append(new Buffer('\xff\x00')) - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc), enc) - }) - - t.end() -}) - -!process.browser && tape('test stream', function (t) { - var random = crypto.randomBytes(65534) - , rndhash = hash(random, 'md5') - , md5sum = crypto.createHash('md5') - , bl = new BufferList(function (err, buf) { - t.ok(Buffer.isBuffer(buf)) - t.ok(err === null) - t.equal(rndhash, hash(bl.slice(), 'md5')) - t.equal(rndhash, hash(buf, 'md5')) - - bl.pipe(fs.createWriteStream('/tmp/bl_test_rnd_out.dat')) - .on('close', function () { - var s = fs.createReadStream('/tmp/bl_test_rnd_out.dat') - s.on('data', md5sum.update.bind(md5sum)) - s.on('end', function() { - t.equal(rndhash, md5sum.digest('hex'), 'woohoo! correct hash!') - t.end() - }) - }) - - }) - - fs.writeFileSync('/tmp/bl_test_rnd.dat', random) - fs.createReadStream('/tmp/bl_test_rnd.dat').pipe(bl) -}) - -tape('instantiation with Buffer', function (t) { - var buf = crypto.randomBytes(1024) - , buf2 = crypto.randomBytes(1024) - , b = BufferList(buf) - - t.equal(buf.toString('hex'), b.slice().toString('hex'), 'same buffer') - b = BufferList([ buf, buf2 ]) - t.equal(b.slice().toString('hex'), Buffer.concat([ buf, buf2 ]).toString('hex'), 'same buffer') - t.end() -}) - -tape('test String appendage', function (t) { - var bl = new BufferList() - , b = new Buffer('abcdefghij\xff\x00') - - bl.append('abcd') - bl.append('efg') - bl.append('hi') - bl.append('j') - bl.append('\xff\x00') - - encodings.forEach(function (enc) { - t.equal(bl.toString(enc), b.toString(enc)) - }) - - t.end() -}) - -tape('write nothing, should get empty buffer', function (t) { - t.plan(3) - BufferList(function (err, data) { - t.notOk(err, 'no error') - t.ok(Buffer.isBuffer(data), 'got a buffer') - t.equal(0, data.length, 'got a zero-length buffer') - t.end() - }).end() -}) - -tape('unicode string', function (t) { - t.plan(2) - var inp1 = '\u2600' - , inp2 = '\u2603' - , exp = inp1 + ' and ' + inp2 - , bl = BufferList() - bl.write(inp1) - bl.write(' and ') - bl.write(inp2) - t.equal(exp, bl.toString()) - t.equal(new Buffer(exp).toString('hex'), bl.toString('hex')) -}) - -tape('should emit finish', function (t) { - var source = BufferList() - , dest = BufferList() - - source.write('hello') - source.pipe(dest) - - dest.on('finish', function () { - t.equal(dest.toString('utf8'), 'hello') - t.end() - }) -}) - -tape('basic copy', function (t) { - var buf = crypto.randomBytes(1024) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy after many appends', function (t) { - var buf = crypto.randomBytes(512) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.append(buf) - b.copy(buf2) - t.equal(b.slice().toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy at a precise position', function (t) { - var buf = crypto.randomBytes(1004) - , buf2 = new Buffer(1024) - , b = BufferList(buf) - - b.copy(buf2, 20) - t.equal(b.slice().toString('hex'), buf2.slice(20).toString('hex'), 'same buffer') - t.end() -}) - -tape('copy starting from a precise location', function (t) { - var buf = crypto.randomBytes(10) - , buf2 = new Buffer(5) - , b = BufferList(buf) - - b.copy(buf2, 0, 5) - t.equal(b.slice(5).toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy in an interval', function (t) { - var rnd = crypto.randomBytes(10) - , b = BufferList(rnd) // put the random bytes there - , actual = new Buffer(3) - , expected = new Buffer(3) - - rnd.copy(expected, 0, 5, 8) - b.copy(actual, 0, 5, 8) - - t.equal(actual.toString('hex'), expected.toString('hex'), 'same buffer') - t.end() -}) - -tape('copy an interval between two buffers', function (t) { - var buf = crypto.randomBytes(10) - , buf2 = new Buffer(10) - , b = BufferList(buf) - - b.append(buf) - b.copy(buf2, 0, 5, 15) - - t.equal(b.slice(5, 15).toString('hex'), buf2.toString('hex'), 'same buffer') - t.end() -}) - -tape('duplicate', function (t) { - t.plan(2) - - var bl = new BufferList('abcdefghij\xff\x00') - , dup = bl.duplicate() - - t.equal(bl.prototype, dup.prototype) - t.equal(bl.toString('hex'), dup.toString('hex')) -}) - -tape('destroy no pipe', function (t) { - t.plan(2) - - var bl = new BufferList('alsdkfja;lsdkfja;lsdk') - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) -}) - -!process.browser && tape('destroy with pipe before read end', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .pipe(bl) - - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - -}) - -!process.browser && tape('destroy with pipe before read end with race', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .pipe(bl) - - setTimeout(function () { - bl.destroy() - setTimeout(function () { - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - }, 500) - }, 500) -}) - -!process.browser && tape('destroy with pipe after read end', function (t) { - t.plan(2) - - var bl = new BufferList() - fs.createReadStream(__dirname + '/sauce.js') - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.destroy() - - t.equal(bl._bufs.length, 0) - t.equal(bl.length, 0) - } -}) - -!process.browser && tape('destroy with pipe while writing to a destination', function (t) { - t.plan(4) - - var bl = new BufferList() - , ds = new BufferList() - - fs.createReadStream(__dirname + '/sauce.js') - .on('end', onEnd) - .pipe(bl) - - function onEnd () { - bl.pipe(ds) - - setTimeout(function () { - bl.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - - ds.destroy() - - t.equals(bl._bufs.length, 0) - t.equals(bl.length, 0) - - }, 100) - } -}) - -!process.browser && tape('handle error', function (t) { - t.plan(2) - fs.createReadStream('/does/not/exist').pipe(BufferList(function (err, data) { - t.ok(err instanceof Error, 'has error') - t.notOk(data, 'no data') - })) -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/sauce.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/sauce.js deleted file mode 100644 index a6d28625..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/sauce.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node - -const user = process.env.SAUCE_USER - , key = process.env.SAUCE_KEY - , path = require('path') - , brtapsauce = require('brtapsauce') - , testFile = path.join(__dirname, 'basic-test.js') - - , capabilities = [ - { browserName: 'chrome' , platform: 'Windows XP', version: '' } - , { browserName: 'firefox' , platform: 'Windows 8' , version: '' } - , { browserName: 'firefox' , platform: 'Windows XP', version: '4' } - , { browserName: 'internet explorer' , platform: 'Windows 8' , version: '10' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '9' } - , { browserName: 'internet explorer' , platform: 'Windows 7' , version: '8' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '7' } - , { browserName: 'internet explorer' , platform: 'Windows XP', version: '6' } - , { browserName: 'safari' , platform: 'Windows 7' , version: '5' } - , { browserName: 'safari' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '' } - , { browserName: 'opera' , platform: 'Windows 7' , version: '11' } - , { browserName: 'ipad' , platform: 'OS X 10.8' , version: '6' } - , { browserName: 'android' , platform: 'Linux' , version: '4.0', 'device-type': 'tablet' } - ] - -if (!user) - throw new Error('Must set a SAUCE_USER env var') -if (!key) - throw new Error('Must set a SAUCE_KEY env var') - -brtapsauce({ - name : 'Traversty' - , user : user - , key : key - , brsrc : testFile - , capabilities : capabilities - , options : { timeout: 60 * 6 } -}) \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/test.js deleted file mode 100644 index aa9b4877..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/bl/test/test.js +++ /dev/null @@ -1,9 +0,0 @@ -require('./basic-test') - -if (!process.env.SAUCE_KEY || !process.env.SAUCE_USER) - return console.log('SAUCE_KEY and/or SAUCE_USER not set, not running sauce tests') - -if (!/v0\.10/.test(process.version)) - return console.log('Not Node v0.10.x, not running sauce tests') - -require('./sauce.js') \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/LICENSE deleted file mode 100644 index 61789f4a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -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: -You must give any other recipients of the Work or Derivative Works a copy of this License; and -You must cause any modified files to carry prominent notices stating that You changed the files; and -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 -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/README.md deleted file mode 100644 index e5077a21..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/README.md +++ /dev/null @@ -1,45 +0,0 @@ -## Caseless -- wrap an object to set and get property with caseless semantics but also preserve caseing. - -This library is incredibly useful when working with HTTP headers. It allows you to get/set/check for headers in a caseless manner while also preserving the caseing of headers the first time they are set. - -## Usage - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'asdf') -c.get('a-header') === 'asdf' -``` - -## has(key) - -Has takes a name and if it finds a matching header will return that header name with the preserved caseing it was set with. - -```javascript -c.has('a-header') === 'a-Header' -``` - -## set(key, value[, clobber=true]) - -Set is fairly straight forward except that if the header exists and clobber is disabled it will add `','+value` to the existing header. - -```javascript -c.set('a-Header', 'fdas') -c.set('a-HEADER', 'more', false) -c.get('a-header') === 'fdsa,more' -``` - -## swap(key) - -Swaps the casing of a header with the new one that is passed in. - -```javascript -var headers = {} - , c = caseless(headers) - ; -c.set('a-Header', 'fdas') -c.swap('a-HEADER') -c.has('a-header') === 'a-HEADER' -headers === {'a-HEADER': 'fdas'} -``` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/index.js deleted file mode 100644 index d86a70ec..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/index.js +++ /dev/null @@ -1,66 +0,0 @@ -function Caseless (dict) { - this.dict = dict || {} -} -Caseless.prototype.set = function (name, value, clobber) { - if (typeof name === 'object') { - for (var i in name) { - this.set(i, name[i], value) - } - } else { - if (typeof clobber === 'undefined') clobber = true - var has = this.has(name) - - if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value - else this.dict[has || name] = value - return has - } -} -Caseless.prototype.has = function (name) { - var keys = Object.keys(this.dict) - , name = name.toLowerCase() - ; - for (var i=0;i=0.11.0 <0.12.0", - "_npmVersion": "2.8.3", - "_nodeVersion": "1.8.1", - "_npmUser": { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - } - ], - "dist": { - "shasum": "715b96ea9841593cc33067923f5ec60ebda4f7d7", - "tarball": "http://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/test.js deleted file mode 100644 index 084bbaf5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/caseless/test.js +++ /dev/null @@ -1,40 +0,0 @@ -var tape = require('tape') - , caseless = require('./') - ; - -tape('set get has', function (t) { - var headers = {} - , c = caseless(headers) - ; - t.plan(17) - c.set('a-Header', 'asdf') - t.equal(c.get('a-header'), 'asdf') - t.equal(c.has('a-header'), 'a-Header') - t.ok(!c.has('nothing')) - // old bug where we used the wrong regex - t.ok(!c.has('a-hea')) - c.set('a-header', 'fdsa') - t.equal(c.get('a-header'), 'fdsa') - t.equal(c.get('a-Header'), 'fdsa') - c.set('a-HEADER', 'more', false) - t.equal(c.get('a-header'), 'fdsa,more') - - t.deepEqual(headers, {'a-Header': 'fdsa,more'}) - c.swap('a-HEADER') - t.deepEqual(headers, {'a-HEADER': 'fdsa,more'}) - - c.set('deleteme', 'foobar') - t.ok(c.has('deleteme')) - t.ok(c.del('deleteme')) - t.notOk(c.has('deleteme')) - t.notOk(c.has('idonotexist')) - t.ok(c.del('idonotexist')) - - c.set('tva', 'test1') - c.set('tva-header', 'test2') - t.equal(c.has('tva'), 'tva') - t.notOk(c.has('header')) - - t.equal(c.get('tva'), 'test1') - -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/License b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/Readme.md deleted file mode 100644 index 3a9e025f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -**NB** Currently `combined-stream` works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with `combined-stream`. - -- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. - -- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/lib/combined_stream.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 6b5c21b6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,188 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 9daeafb9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md deleted file mode 100644 index aca36f9f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,141 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index b38fc85f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,107 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json deleted file mode 100644 index 8ac66b81..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "contributors": [ - { - "name": "Mike Atkins", - "email": "apeherder@gmail.com" - } - ], - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "license": "MIT", - "version": "1.0.0", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "scripts": { - "test": "make test" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "gitHead": "07a9dc99fb8f1a488160026b9ad77493f766fb84", - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "_id": "delayed-stream@1.0.0", - "_shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619", - "_from": "delayed-stream@>=1.0.0 <1.1.0", - "_npmVersion": "2.8.3", - "_nodeVersion": "1.6.4", - "_npmUser": { - "name": "apechimp", - "email": "apeherder@gmail.com" - }, - "dist": { - "shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619", - "tarball": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "maintainers": [ - { - "name": "felixge", - "email": "felix@debuggable.com" - }, - { - "name": "apechimp", - "email": "apeherder@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/package.json deleted file mode 100644 index e0cd160f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/combined-stream/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "1.0.5", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.8" - }, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "devDependencies": { - "far": "~0.0.7" - }, - "license": "MIT", - "gitHead": "cfc7b815d090a109bcedb5bb0f6713148d55a6b7", - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "_id": "combined-stream@1.0.5", - "_shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "_from": "combined-stream@>=1.0.5 <1.1.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "alexindigo", - "email": "iam@alexindigo.com" - }, - "dist": { - "shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "tarball": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "maintainers": [ - { - "name": "felixge", - "email": "felix@debuggable.com" - }, - { - "name": "celer", - "email": "dtyree77@gmail.com" - }, - { - "name": "alexindigo", - "email": "iam@alexindigo.com" - }, - { - "name": "apechimp", - "email": "apeherder@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.eslintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.eslintrc deleted file mode 100644 index d49f1735..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.eslintrc +++ /dev/null @@ -1,192 +0,0 @@ -{ - "env": { - "browser": false, - "node": true, - "amd": false, - "mocha": false, - "jasmine": false - }, - - "rules": { - "accessor-pairs": [2, { getWithoutSet: false, setWithoutGet: true }], - "array-bracket-spacing": [2, "never", { - "singleValue": false, - "objectsInArrays": false, - "arraysInArrays": false - }], - "block-scoped-var": [0], - "brace-style": [2, "1tbs", { "allowSingleLine": true }], - "camelcase": [2], - "comma-dangle": [2, "never"], - "comma-spacing": [2], - "comma-style": [2, "last"], - "complexity": [2, 15], - "computed-property-spacing": [2, "never"], - "consistent-return": [2], - "consistent-this": [0, "that"], - "constructor-super": [2], - "curly": [2, "all"], - "default-case": [2], - "dot-notation": [2, { "allowKeywords": true }], - "eol-last": [2], - "eqeqeq": [2], - "func-names": [0], - "func-style": [2, "expression"], - "generator-star-spacing": [2, { "before": false, "after": true }], - "global-strict": [0, "never"], - "guard-for-in": [0], - "handle-callback-err": [0], - "key-spacing": [2, { "beforeColon": false, "afterColon": true }], - "linebreak-style": [2, "unix"], - "lines-around-comment": [2, { - "beforeBlockComment": false, - "afterBlockComment": false, - "beforeLineComment": false, - "beforeLineComment": false, - "allowBlockStart": true, - "allowBlockEnd": true - }], - "quotes": [2, "single", "avoid-escape"], - "max-depth": [1, 4], - "max-len": [0, 80, 4], - "max-nested-callbacks": [2, 2], - "max-params": [2, 2], - "max-statements": [2, 21], - "new-parens": [2], - "new-cap": [2], - "newline-after-var": [0], - "no-alert": [2], - "no-array-constructor": [2], - "no-bitwise": [0], - "no-caller": [2], - "no-catch-shadow": [2], - "no-cond-assign": [2], - "no-console": [2], - "no-constant-condition": [2], - "no-continue": [2], - "no-control-regex": [2], - "no-debugger": [2], - "no-delete-var": [2], - "no-div-regex": [0], - "no-dupe-args": [2], - "no-dupe-keys": [2], - "no-duplicate-case": [2], - "no-else-return": [0], - "no-empty": [2], - "no-empty-character-class": [2], - "no-empty-label": [2], - "no-eq-null": [0], - "no-eval": [2], - "no-ex-assign": [2], - "no-extend-native": [2], - "no-extra-bind": [2], - "no-extra-boolean-cast": [2], - "no-extra-parens": [0], - "no-extra-semi": [2], - "no-fallthrough": [2], - "no-floating-decimal": [2], - "no-func-assign": [2], - "no-implied-eval": [2], - "no-inline-comments": [0], - "no-inner-declarations": [2, "functions"], - "no-invalid-regexp": [2], - "no-irregular-whitespace": [2], - "no-iterator": [2], - "no-label-var": [2], - "no-labels": [2], - "no-lone-blocks": [2], - "no-lonely-if": [2], - "no-loop-func": [2], - "no-mixed-requires": [0, false], - "no-mixed-spaces-and-tabs": [2, false], - "no-multi-spaces": [2], - "no-multi-str": [2], - "no-multiple-empty-lines": [2, {"max": 1}], - "no-native-reassign": [2], - "no-negated-in-lhs": [2], - "no-nested-ternary": [0], - "no-new": [2], - "no-new-func": [2], - "no-new-object": [2], - "no-new-require": [0], - "no-new-wrappers": [2], - "no-obj-calls": [2], - "no-octal": [2], - "no-octal-escape": [2], - "no-param-reassign": [2], - "no-path-concat": [0], - "no-plusplus": [0], - "no-process-env": [0], - "no-process-exit": [2], - "no-proto": [2], - "no-redeclare": [2], - "no-regex-spaces": [2], - "no-reserved-keys": [2], - "no-restricted-modules": [0], - "no-return-assign": [2, "always"], - "no-script-url": [2], - "no-self-compare": [0], - "no-sequences": [2], - "no-shadow": [2], - "no-shadow-restricted-names": [2], - "no-space-before-semi": [2], - "no-spaced-func": [2], - "no-sparse-arrays": [2], - "no-sync": [0], - "no-ternary": [0], - "no-this-before-super": [2], - "no-throw-literal": [2], - "no-trailing-spaces": [2, { "skipBlankLines": false }], - "no-undef": [2], - "no-undef-init": [2], - "no-undefined": [0], - "no-underscore-dangle": [2], - "no-unexpected-multiline": [2], - "no-unneeded-ternary": [2], - "no-unreachable": [2], - "no-unused-expressions": [2], - "no-unused-vars": [2, { "vars": "all", "args": "after-used" }], - "no-use-before-define": [2], - "no-void": [0], - "no-warning-comments": [0, { "terms": ["todo", "fixme", "xxx"], "location": "start" }], - "no-with": [2], - "no-wrap-func": [2], - "object-curly-spacing": [2, "always"], - "object-shorthand": [2, "never"], - "one-var": [0], - "operator-assignment": [0, "always"], - "operator-linebreak": [2, "none"], - "padded-blocks": [0], - "prefer-const": [0], - "quote-props": [0], - "radix": [0], - "semi": [2], - "semi-spacing": [2, { "before": false, "after": true }], - "sort-vars": [0], - "space-after-keywords": [2, "always"], - "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }], - "space-before-blocks": [0, "always"], - "space-in-brackets": [0, "never", { - "singleValue": true, - "arraysInArrays": false, - "arraysInObjects": false, - "objectsInArrays": true, - "objectsInObjects": true, - "propertyName": false - }], - "space-in-parens": [2, "never"], - "space-infix-ops": [2], - "space-return-throw-case": [2], - "space-unary-ops": [2, { "words": true, "nonwords": false }], - "spaced-comment": [2, "always"], - "spaced-line-comment": [0, "always"], - "strict": [2, "global"], - "use-isnan": [2], - "valid-jsdoc": [0], - "valid-typeof": [2], - "vars-on-top": [0], - "wrap-iife": [2], - "wrap-regex": [2], - "yoda": [2, "never", { "exceptRange": true, "onlyEquality": false }] - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.jscs.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.jscs.json deleted file mode 100644 index 7e84b282..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.jscs.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "additionalRules": [], - - "requireSemicolons": true, - - "disallowMultipleSpaces": true, - - "disallowIdentifierNames": [], - - "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], - - "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], - - "disallowSpaceAfterKeywords": [], - - "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, - "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, - "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, - - "requireSpaceBetweenArguments": true, - - "disallowSpacesInsideParentheses": true, - - "disallowSpacesInsideArrayBrackets": true, - - "disallowQuotedKeysInObjects": "allButReserved", - - "disallowSpaceAfterObjectKeys": true, - - "requireCommaBeforeLineBreak": true, - - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], - "requireSpaceAfterPrefixUnaryOperators": [], - - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "requireSpaceBeforePostfixUnaryOperators": [], - - "disallowSpaceBeforeBinaryOperators": [], - "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - - "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - "disallowSpaceAfterBinaryOperators": [], - - "disallowImplicitTypeConversion": ["binary", "string"], - - "disallowKeywords": ["with", "eval"], - - "requireKeywordsOnNewLine": [], - "disallowKeywordsOnNewLine": ["else"], - - "requireLineFeedAtFileEnd": true, - - "disallowTrailingWhitespace": true, - - "disallowTrailingComma": true, - - "excludeFiles": ["node_modules/**", "vendor/**"], - - "disallowMultipleLineStrings": true, - - "requireDotNotation": true, - - "requireParenthesesAroundIIFE": true, - - "validateLineBreaks": "LF", - - "validateQuoteMarks": { - "escape": true, - "mark": "'" - }, - - "disallowOperatorBeforeLineBreak": [], - - "requireSpaceBeforeKeywords": [ - "do", - "for", - "if", - "else", - "switch", - "case", - "try", - "catch", - "finally", - "while", - "with", - "return" - ], - - "validateAlignedFunctionParameters": { - "lineBreakAfterOpeningBraces": true, - "lineBreakBeforeClosingBraces": true - }, - - "requirePaddingNewLinesBeforeExport": true, - - "validateNewlineAfterArrayElements": { - "maximum": 6 - }, - - "requirePaddingNewLinesAfterUseStrict": true -} - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.npmignore deleted file mode 100644 index 30d74d25..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.travis.yml deleted file mode 100644 index ebef6449..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/.travis.yml +++ /dev/null @@ -1,44 +0,0 @@ -language: node_js -node_js: - - "iojs-v2.3" - - "iojs-v2.2" - - "iojs-v2.1" - - "iojs-v2.0" - - "iojs-v1.8" - - "iojs-v1.7" - - "iojs-v1.6" - - "iojs-v1.5" - - "iojs-v1.4" - - "iojs-v1.3" - - "iojs-v1.2" - - "iojs-v1.1" - - "iojs-v1.0" - - "0.12" - - "0.11" - - "0.10" - - "0.9" - - "0.8" - - "0.6" - - "0.4" -before_install: - - '[ "${TRAVIS_NODE_VERSION}" = "0.6" ] || npm install -g npm@1.4.28 && npm install -g npm' -sudo: false -matrix: - fast_finish: true - allow_failures: - - node_js: "iojs-v2.2" - - node_js: "iojs-v2.1" - - node_js: "iojs-v2.0" - - node_js: "iojs-v1.7" - - node_js: "iojs-v1.6" - - node_js: "iojs-v1.5" - - node_js: "iojs-v1.4" - - node_js: "iojs-v1.3" - - node_js: "iojs-v1.2" - - node_js: "iojs-v1.1" - - node_js: "iojs-v1.0" - - node_js: "0.11" - - node_js: "0.9" - - node_js: "0.8" - - node_js: "0.6" - - node_js: "0.4" diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/CHANGELOG.md deleted file mode 100644 index ee0cfd6a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/CHANGELOG.md +++ /dev/null @@ -1,69 +0,0 @@ -3.0.0 / 2015-07-01 -================== - * [Possible breaking change] Use global "strict" directive (#32) - * [Tests] `int` is an ES3 reserved word - * [Tests] Test up to `io.js` `v2.3` - * [Tests] Add `npm run eslint` - * [Dev Deps] Update `covert`, `jscs` - -2.0.1 / 2015-04-25 -================== - * Use an inline `isArray` check, for ES3 browsers. (#27) - * Some old browsers fail when an identifier is `toString` - * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds - * Add license info to package.json (#25) - * Update `tape`, `jscs` - * Adding a CHANGELOG - -2.0.0 / 2014-10-01 -================== - * Increase code coverage to 100%; run code coverage as part of tests - * Add `npm run lint`; Run linter as part of tests - * Remove nodeType and setInterval checks in isPlainObject - * Updating `tape`, `jscs`, `covert` - * General style and README cleanup - -1.3.0 / 2014-06-20 -================== - * Add component.json for browser support (#18) - * Use SVG for badges in README (#16) - * Updating `tape`, `covert` - * Updating travis-ci to work with multiple node versions - * Fix `deep === false` bug (returning target as {}) (#14) - * Fixing constructor checks in isPlainObject - * Adding additional test coverage - * Adding `npm run coverage` - * Add LICENSE (#13) - * Adding a warning about `false`, per #11 - * General style and whitespace cleanup - -1.2.1 / 2013-09-14 -================== - * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8 - * Updating `tape` - -1.2.0 / 2013-09-02 -================== - * Updating the README: add badges - * Adding a missing variable reference. - * Using `tape` instead of `buster` for tests; add more tests (#7) - * Adding node 0.10 to Travis CI (#6) - * Enabling "npm test" and cleaning up package.json (#5) - * Add Travis CI. - -1.1.3 / 2012-12-06 -================== - * Added unit tests. - * Ensure extend function is named. (Looks nicer in a stack trace.) - * README cleanup. - -1.1.1 / 2012-11-07 -================== - * README cleanup. - * Added installation instructions. - * Added a missing semicolon - -1.0.0 / 2012-04-08 -================== - * Initial commit - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/LICENSE deleted file mode 100644 index e16d6a56..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Stefan Thomas - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/README.md deleted file mode 100644 index 632fb0f9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/README.md +++ /dev/null @@ -1,62 +0,0 @@ -[![Build Status][travis-svg]][travis-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] - -# extend() for Node.js [![Version Badge][npm-version-png]][npm-url] - -`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true. - -## Installation - -This package is available on [npm][npm-url] as: `extend` - -``` sh -npm install extend -``` - -## Usage - -**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)** - -*Extend one object with one or more others, returning the modified object.* - -Keep in mind that the target object will be modified, and will be returned from extend(). - -If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). -Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over. -Warning: passing `false` as the first argument is not supported. - -### Arguments - -* `deep` *Boolean* (optional) -If set, the merge becomes recursive (i.e. deep copy). -* `target` *Object* -The object to extend. -* `object1` *Object* -The object that will be merged into the first. -* `objectN` *Object* (Optional) -More objects to merge into the first. - -## License - -`node-extend` is licensed under the [MIT License][mit-license-url]. - -## Acknowledgements - -All credit to the jQuery authors for perfecting this amazing utility. - -Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb]. - -[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg -[travis-url]: https://travis-ci.org/justmoon/node-extend -[npm-url]: https://npmjs.org/package/extend -[mit-license-url]: http://opensource.org/licenses/MIT -[github-justmoon]: https://github.com/justmoon -[github-insin]: https://github.com/insin -[github-ljharb]: https://github.com/ljharb -[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg -[deps-svg]: https://david-dm.org/justmoon/node-extend.svg -[deps-url]: https://david-dm.org/justmoon/node-extend -[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg -[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/component.json deleted file mode 100644 index 1500a2f3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/component.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "extend", - "author": "Stefan Thomas (http://www.justmoon.net)", - "version": "3.0.0", - "description": "Port of jQuery.extend for node.js and the browser.", - "scripts": [ - "index.js" - ], - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "keywords": [ - "extend", - "clone", - "merge" - ], - "repository" : { - "type": "git", - "url": "https://github.com/justmoon/node-extend.git" - }, - "dependencies": { - }, - "devDependencies": { - "tape" : "~3.0.0", - "covert": "~0.4.0", - "jscs": "~1.6.2" - } -} - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/index.js deleted file mode 100644 index f5ec75d5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/index.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict'; - -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var hasOwnConstructor = hasOwn.call(obj, 'constructor'); - var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) {/**/} - - return typeof key === 'undefined' || hasOwn.call(obj, key); -}; - -module.exports = function extend() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0], - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target !== copy) { - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - target[name] = copy; - } - } - } - } - } - - // Return the modified object - return target; -}; - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/package.json deleted file mode 100644 index c8c7cac9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/extend/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "extend", - "author": { - "name": "Stefan Thomas", - "email": "justmoon@members.fsf.org", - "url": "http://www.justmoon.net" - }, - "version": "3.0.0", - "description": "Port of jQuery.extend for node.js and the browser", - "main": "index", - "scripts": { - "test": "npm run lint && node test/index.js && npm run coverage-quiet", - "coverage": "covert test/index.js", - "coverage-quiet": "covert test/index.js --quiet", - "lint": "npm run jscs && npm run eslint", - "jscs": "jscs *.js */*.js", - "eslint": "eslint *.js */*.js" - }, - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "keywords": [ - "extend", - "clone", - "merge" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/justmoon/node-extend.git" - }, - "dependencies": {}, - "devDependencies": { - "tape": "^4.0.0", - "covert": "^1.1.0", - "jscs": "^1.13.1", - "eslint": "^0.24.0" - }, - "license": "MIT", - "gitHead": "148e7270cab2e9413af2cd0cab147070d755ed6d", - "bugs": { - "url": "https://github.com/justmoon/node-extend/issues" - }, - "homepage": "https://github.com/justmoon/node-extend#readme", - "_id": "extend@3.0.0", - "_shasum": "5a474353b9f3353ddd8176dfd37b91c83a46f1d4", - "_from": "extend@>=3.0.0 <3.1.0", - "_npmVersion": "2.11.3", - "_nodeVersion": "2.3.1", - "_npmUser": { - "name": "ljharb", - "email": "ljharb@gmail.com" - }, - "dist": { - "shasum": "5a474353b9f3353ddd8176dfd37b91c83a46f1d4", - "tarball": "http://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "maintainers": [ - { - "name": "justmoon", - "email": "justmoon@members.fsf.org" - }, - { - "name": "ljharb", - "email": "ljharb@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b6634..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/index.js deleted file mode 100644 index 416c7abd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/index.js +++ /dev/null @@ -1,138 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function getConnectionName(host, port) { - var name = '' - if (typeof host === 'string') { - name = host + ':' + port - } else { - // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name. - name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':') - } - return name -} - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = getConnectionName(host, port) - - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = getConnectionName(host, port) - - if (typeof host !== 'string') { - var options = host - port = options.port - host = options.host - } - - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/package.json deleted file mode 100644 index f57036b5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/forever-agent/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "forever-agent", - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "version": "0.6.1", - "license": "Apache-2.0", - "repository": { - "url": "git+https://github.com/mikeal/forever-agent.git" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "gitHead": "1b3b6163f2b3c2c4122bbfa288c1325c0df9871d", - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "homepage": "https://github.com/mikeal/forever-agent", - "_id": "forever-agent@0.6.1", - "scripts": {}, - "_shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91", - "_from": "forever-agent@>=0.6.1 <0.7.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - } - ], - "dist": { - "shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91", - "tarball": "http://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/License b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/License deleted file mode 100644 index c7ff12a2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - 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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/Readme.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/Readme.md deleted file mode 100644 index 49277323..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/Readme.md +++ /dev/null @@ -1,210 +0,0 @@ -# Form-Data [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) [![Build Status](https://img.shields.io/travis/form-data/form-data/master.svg)](https://travis-ci.org/form-data/form-data) [![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## License - -Form-Data is licensed under the MIT license. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/browser.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/browser.js deleted file mode 100644 index 1e7717d5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/browser.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = FormData; \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/form_data.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/form_data.js deleted file mode 100644 index 524f392b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,374 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime-types'); -var async = require('async'); - -module.exports = FormData; -function FormData() { - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} -util.inherits(FormData, CombinedStream); - -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData.prototype.append = function(field, value, options) { - options = (typeof options === 'string') - ? { filename: options } - : options || {}; - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') value = ''+value; - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(field, value, options); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - next(null, value.end+1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - next(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - next(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header != null) { - return options.header; - } - - var contents = ''; - var headers = { - 'Content-Disposition': ['form-data', 'name="' + field + '"'], - 'Content-Type': [] - }; - - // fs- and request- streams have path property - // or use custom filename and/or contentType - // TODO: Use request's response mime-type - if (options.filename || value.path) { - headers['Content-Disposition'].push( - 'filename="' + path.basename(options.filename || value.path) + '"' - ); - headers['Content-Type'].push( - options.contentType || - mime.lookup(options.filename || value.path) || - FormData.DEFAULT_CONTENT_TYPE - ); - // http response has not - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - headers['Content-Disposition'].push( - 'filename="' + path.basename(value.client._httpMessage.path) + '"' - ); - headers['Content-Type'].push( - options.contentType || - value.headers['content-type'] || - FormData.DEFAULT_CONTENT_TYPE - ); - } else if (Buffer.isBuffer(value)) { - headers['Content-Type'].push( - options.contentType || - FormData.DEFAULT_CONTENT_TYPE - ); - } else if (options.contentType) { - headers['Content-Type'].push(options.contentType); - } - - for (var prop in headers) { - if (headers[prop].length) { - contents += prop + ': ' + headers[prop].join('; ') + FormData.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; - -FormData.prototype._multiPartFooter = function(field, value, options) { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (var header in userHeaders) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - - return formHeaders; -} - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -} - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function(debug) { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/felixge/node-form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrivers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - - var request - , options - , defaults = { - method : 'post' - }; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - params = parseUrl(params); - - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - } - else // use custom params - { - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - - // TODO: Add chunked encoding when no length (if err) - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (this.error) return; - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -/* - * Santa's little helpers - */ - -// populates missing values -function populate(dst, src) { - for (var prop in src) { - if (!dst[prop]) dst[prop] = src[prop]; - } - return dst; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md deleted file mode 100644 index 8b4d8c22..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/CHANGELOG.md +++ /dev/null @@ -1,113 +0,0 @@ -# v1.5.0 - -- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) (#892) -- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. (#873) -- `auto` now accepts an optional `concurrency` argument to limit the number of running tasks (#637) -- Added `queue#workersList()`, to retrieve the list of currently running tasks. (#891) -- Various code simplifications (#896, #904) -- Various doc fixes :scroll: (#890, #894, #903, #905, #912) - -# v1.4.2 - -- Ensure coverage files don't get published on npm (#879) - -# v1.4.1 - -- Add in overlooked `detectLimit` method (#866) -- Removed unnecessary files from npm releases (#861) -- Removed usage of a reserved word to prevent :boom: in older environments (#870) - -# v1.4.0 - -- `asyncify` now supports promises (#840) -- Added `Limit` versions of `filter` and `reject` (#836) -- Add `Limit` versions of `detect`, `some` and `every` (#828, #829) -- `some`, `every` and `detect` now short circuit early (#828, #829) -- Improve detection of the global object (#804), enabling use in WebWorkers -- `whilst` now called with arguments from iterator (#823) -- `during` now gets called with arguments from iterator (#824) -- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) - - -# v1.3.0 - -New Features: -- Added `constant` -- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. (#671, #806) -- Added `during` and `doDuring`, which are like `whilst` with an async truth test. (#800) -- `retry` now accepts an `interval` parameter to specify a delay between retries. (#793) -- `async` should work better in Web Workers due to better `root` detection (#804) -- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` (#642) -- Various internal updates (#786, #801, #802, #803) -- Various doc fixes (#790, #794) - -Bug Fixes: -- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783) - - -# v1.2.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) - - -# v1.2.0 - -New Features: - -- Added `timesLimit` (#743) -- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772) - -Bug Fixes: - -- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777) - - -# v1.1.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) - - -# v1.1.0 - -New Features: - -- `cargo` now supports all of the same methods and event callbacks as `queue`. -- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769) -- Optimized `map`, `eachOf`, and `waterfall` families of functions -- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667). -- The callback is now optional for the composed results of `compose` and `seq`. (#618) -- Reduced file size by 4kb, (minified version by 1kb) -- Added code coverage through `nyc` and `coveralls` (#768) - -Bug Fixes: - -- `forever` will no longer stack overflow with a synchronous iterator (#622) -- `eachLimit` and other limit functions will stop iterating once an error occurs (#754) -- Always pass `null` in callbacks when there is no error (#439) -- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668) -- `each` and family will properly handle an empty array (#578) -- `eachSeries` and family will finish if the underlying array is modified during execution (#557) -- `queue` will throw if a non-function is passed to `q.push()` (#593) -- Doc fixes (#629, #766) - - -# v1.0.0 - -No known breaking changes, we are simply complying with semver from here on out. - -Changes: - -- Start using a changelog! -- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321) -- Detect deadlocks in `auto` (#663) -- Better support for require.js (#527) -- Throw if queue created with concurrency `0` (#714) -- Fix unneeded iteration in `queue.resume()` (#758) -- Guard against timer mocking overriding `setImmediate` (#609 #611) -- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729) -- Use single noop function internally (#546) -- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/LICENSE deleted file mode 100644 index 8f296985..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2014 Caolan McMahon - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/README.md deleted file mode 100644 index 071d069b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/README.md +++ /dev/null @@ -1,1791 +0,0 @@ -# Async.js - -[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) -[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async) -[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) -[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - - -Async is a utility module which provides straight-forward, powerful functions -for working with asynchronous JavaScript. Although originally designed for -use with [Node.js](http://nodejs.org) and installable via `npm install async`, -it can also be used directly in the browser. - -Async is also installable via: - -- [bower](http://bower.io/): `bower install async` -- [component](https://github.com/component/component): `component install - caolan/async` -- [jam](http://jamjs.org/): `jam install async` -- [spm](http://spmjs.io/): `spm install async` - -Async provides around 20 functions that include the usual 'functional' -suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns -for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these -functions assume you follow the Node.js convention of providing a single -callback as the last argument of your `async` function. - - -## Quick Examples - -```javascript -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); - -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); - -async.parallel([ - function(){ ... }, - function(){ ... } -], callback); - -async.series([ - function(){ ... }, - function(){ ... } -]); -``` - -There are many more functions available so take a look at the docs below for a -full list. This module aims to be comprehensive, so if you feel anything is -missing please create a GitHub issue for it. - -## Common Pitfalls [(StackOverflow)](http://stackoverflow.com/questions/tagged/async.js) -### Synchronous iteration functions - -If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.setImmediate` to start a new call stack on the next tick of the event loop. - -This can also arise by accident if you callback early in certain cases: - -```js -async.eachSeries(hugeArray, function iterator(item, callback) { - if (inCache(item)) { - callback(null, cache[item]); // if many items are cached, you'll overflow - } else { - doSomeIO(item, callback); - } -}, function done() { - //... -}); -``` - -Just change it to: - -```js -async.eachSeries(hugeArray, function iterator(item, callback) { - if (inCache(item)) { - async.setImmediate(function () { - callback(null, cache[item]); - }); - } else { - doSomeIO(item, callback); - //... -``` - -Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral. - -If JavaScript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works. - - -### Multiple callbacks - -Make sure to always `return` when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases. - -```js -async.waterfall([ - function (callback) { - getSomething(options, function (err, result) { - if (err) { - callback(new Error("failed getting something:" + err.message)); - // we should return here - } - // since we did not return, this callback still will be called and - // `processData` will be called twice - callback(null, result); - }); - }, - processData -], done) -``` - -It is always good practice to `return callback(err, result)` whenever a callback call is not the last statement of a function. - - -### Binding a context to an iterator - -This section is really about `bind`, not about `async`. If you are wondering how to -make `async` execute your iterators in a given context, or are confused as to why -a method of another library isn't working as an iterator, study this example: - -```js -// Here is a simple object with an (unnecessarily roundabout) squaring method -var AsyncSquaringLibrary = { - squareExponent: 2, - square: function(number, callback){ - var result = Math.pow(number, this.squareExponent); - setTimeout(function(){ - callback(null, result); - }, 200); - } -}; - -async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ - // result is [NaN, NaN, NaN] - // This fails because the `this.squareExponent` expression in the square - // function is not evaluated in the context of AsyncSquaringLibrary, and is - // therefore undefined. -}); - -async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ - // result is [1, 4, 9] - // With the help of bind we can attach a context to the iterator before - // passing it to async. Now the square function will be executed in its - // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` - // will be as expected. -}); -``` - -## Download - -The source is available for download from -[GitHub](https://github.com/caolan/async/blob/master/lib/async.js). -Alternatively, you can install using Node Package Manager (`npm`): - - npm install async - -As well as using Bower: - - bower install async - -__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed - -## In the Browser - -So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. - -Usage: - -```html - - -``` - -## Documentation - -Some functions are also available in the following forms: -* `Series` - the same as `` but runs only a single async operation at a time -* `Limit` - the same as `` but runs a maximum of `limit` async operations at a time - -### Collections - -* [`each`](#each), `eachSeries`, `eachLimit` -* [`forEachOf`](#forEachOf), `forEachOfSeries`, `forEachOfLimit` -* [`map`](#map), `mapSeries`, `mapLimit` -* [`filter`](#filter), `filterSeries`, `filterLimit` -* [`reject`](#reject), `rejectSeries`, `rejectLimit` -* [`reduce`](#reduce), [`reduceRight`](#reduceRight) -* [`detect`](#detect), `detectSeries`, `detectLimit` -* [`sortBy`](#sortBy) -* [`some`](#some), `someLimit` -* [`every`](#every), `everyLimit` -* [`concat`](#concat), `concatSeries` - -### Control Flow - -* [`series`](#seriestasks-callback) -* [`parallel`](#parallel), `parallelLimit` -* [`whilst`](#whilst), [`doWhilst`](#doWhilst) -* [`until`](#until), [`doUntil`](#doUntil) -* [`during`](#during), [`doDuring`](#doDuring) -* [`forever`](#forever) -* [`waterfall`](#waterfall) -* [`compose`](#compose) -* [`seq`](#seq) -* [`applyEach`](#applyEach), `applyEachSeries` -* [`queue`](#queue), [`priorityQueue`](#priorityQueue) -* [`cargo`](#cargo) -* [`auto`](#auto) -* [`retry`](#retry) -* [`iterator`](#iterator) -* [`times`](#times), `timesSeries`, `timesLimit` - -### Utils - -* [`apply`](#apply) -* [`nextTick`](#nextTick) -* [`memoize`](#memoize) -* [`unmemoize`](#unmemoize) -* [`ensureAsync`](#ensureAsync) -* [`constant`](#constant) -* [`asyncify`](#asyncify) -* [`wrapSync`](#wrapSync) -* [`log`](#log) -* [`dir`](#dir) -* [`noConflict`](#noConflict) - -## Collections - - - -### each(arr, iterator, [callback]) - -Applies the function `iterator` to each item in `arr`, in parallel. -The `iterator` is called with an item from the list, and a callback for when it -has finished. If the `iterator` passes an error to its `callback`, the main -`callback` (for the `each` function) is immediately called with the error. - -Note, that since this function applies `iterator` to each item in parallel, -there is no guarantee that the iterator functions will complete in order. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err)` which must be called once it has - completed. If no error has occurred, the `callback` should be run without - arguments or with an explicit `null` argument. The array index is not passed - to the iterator. If you need the index, use [`forEachOf`](#forEachOf). -* `callback(err)` - *Optional* A callback which is called when all `iterator` functions - have finished, or an error occurs. - -__Examples__ - - -```js -// assuming openFiles is an array of file names and saveFile is a function -// to save the modified contents of that file: - -async.each(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error -}); -``` - -```js -// assuming openFiles is an array of file names - -async.each(openFiles, function(file, callback) { - - // Perform operation on file here. - console.log('Processing file ' + file); - - if( file.length > 32 ) { - console.log('This file name is too long'); - callback('File name too long'); - } else { - // Do work to process file here - console.log('File processed'); - callback(); - } -}, function(err){ - // if any of the file processing produced an error, err would equal that error - if( err ) { - // One of the iterations produced an error. - // All processing will now stop. - console.log('A file failed to process'); - } else { - console.log('All files have been processed successfully'); - } -}); -``` - -__Related__ - -* eachSeries(arr, iterator, [callback]) -* eachLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - - - -### forEachOf(obj, iterator, [callback]) - -Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator. - -__Arguments__ - -* `obj` - An object or array to iterate over. -* `iterator(item, key, callback)` - A function to apply to each item in `obj`. -The `key` is the item's key, or index in the case of an array. The iterator is -passed a `callback(err)` which must be called once it has completed. If no -error has occurred, the callback should be run without arguments or with an -explicit `null` argument. -* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs. - -__Example__ - -```js -var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; -var configs = {}; - -async.forEachOf(obj, function (value, key, callback) { - fs.readFile(__dirname + value, "utf8", function (err, data) { - if (err) return callback(err); - try { - configs[key] = JSON.parse(data); - } catch (e) { - return callback(e); - } - callback(); - }) -}, function (err) { - if (err) console.error(err.message); - // configs is now a map of JSON data - doSomethingWith(configs); -}) -``` - -__Related__ - -* forEachOfSeries(obj, iterator, [callback]) -* forEachOfLimit(obj, limit, iterator, [callback]) - ---------------------------------------- - - -### map(arr, iterator, [callback]) - -Produces a new array of values by mapping each value in `arr` through -the `iterator` function. The `iterator` is called with an item from `arr` and a -callback for when it has finished processing. Each of these callback takes 2 arguments: -an `error`, and the transformed item from `arr`. If `iterator` passes an error to its -callback, the main `callback` (for the `map` function) is immediately called with the error. - -Note, that since this function applies the `iterator` to each item in parallel, -there is no guarantee that the `iterator` functions will complete in order. -However, the results array will be in the same order as the original `arr`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, transformed)` which must be called once - it has completed with an error (which can be `null`) and a transformed item. -* `callback(err, results)` - *Optional* A callback which is called when all `iterator` - functions have finished, or an error occurs. Results is an array of the - transformed items from the `arr`. - -__Example__ - -```js -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); -``` - -__Related__ -* mapSeries(arr, iterator, [callback]) -* mapLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - - -### filter(arr, iterator, [callback]) - -__Alias:__ `select` - -Returns a new array of all the values in `arr` which pass an async truth test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. This operation is -performed in parallel, but the results array will be in the same order as the -original. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The `iterator` is passed a `callback(truthValue)`, which must be called with a - boolean argument once it has completed. -* `callback(results)` - *Optional* A callback which is called after all the `iterator` - functions have finished. - -__Example__ - -```js -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); -``` - -__Related__ - -* filterSeries(arr, iterator, [callback]) -* filterLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### reject(arr, iterator, [callback]) - -The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. - -__Related__ - -* rejectSeries(arr, iterator, [callback]) -* rejectLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### reduce(arr, memo, iterator, [callback]) - -__Aliases:__ `inject`, `foldl` - -Reduces `arr` into a single value using an async `iterator` to return -each successive step. `memo` is the initial state of the reduction. -This function only operates in series. - -For performance reasons, it may make sense to split a call to this function into -a parallel map, and then use the normal `Array.prototype.reduce` on the results. -This function is for situations where each step in the reduction needs to be async; -if you can get the data before reducing it, then it's probably a good idea to do so. - -__Arguments__ - -* `arr` - An array to iterate over. -* `memo` - The initial state of the reduction. -* `iterator(memo, item, callback)` - A function applied to each item in the - array to produce the next step in the reduction. The `iterator` is passed a - `callback(err, reduction)` which accepts an optional error as its first - argument, and the state of the reduction as the second. If an error is - passed to the callback, the reduction is stopped and the main `callback` is - immediately called with the error. -* `callback(err, result)` - *Optional* A callback which is called after all the `iterator` - functions have finished. Result is the reduced value. - -__Example__ - -```js -async.reduce([1,2,3], 0, function(memo, item, callback){ - // pointless async: - process.nextTick(function(){ - callback(null, memo + item) - }); -}, function(err, result){ - // result is now equal to the last value of memo, which is 6 -}); -``` - ---------------------------------------- - - -### reduceRight(arr, memo, iterator, [callback]) - -__Alias:__ `foldr` - -Same as [`reduce`](#reduce), only operates on `arr` in reverse order. - - ---------------------------------------- - - -### detect(arr, iterator, [callback]) - -Returns the first value in `arr` that passes an async truth test. The -`iterator` is applied in parallel, meaning the first iterator to return `true` will -fire the detect `callback` with that result. That means the result might not be -the first item in the original `arr` (in terms of order) that passes the test. - -If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The iterator is passed a `callback(truthValue)` which must be called with a - boolean argument once it has completed. **Note: this callback does not take an error as its first argument.** -* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns - `true`, or after all the `iterator` functions have finished. Result will be - the first item in the array that passes the truth test (iterator) or the - value `undefined` if none passed. **Note: this callback does not take an error as its first argument.** - -__Example__ - -```js -async.detect(['file1','file2','file3'], fs.exists, function(result){ - // result now equals the first file in the list that exists -}); -``` - -__Related__ - -* detectSeries(arr, iterator, [callback]) -* detectLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### sortBy(arr, iterator, [callback]) - -Sorts a list by the results of running each `arr` value through an async `iterator`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, sortValue)` which must be called once it - has completed with an error (which can be `null`) and a value to use as the sort - criteria. -* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is the items from - the original `arr` sorted by the values returned by the `iterator` calls. - -__Example__ - -```js -async.sortBy(['file1','file2','file3'], function(file, callback){ - fs.stat(file, function(err, stats){ - callback(err, stats.mtime); - }); -}, function(err, results){ - // results is now the original array of files sorted by - // modified date -}); -``` - -__Sort Order__ - -By modifying the callback parameter the sorting order can be influenced: - -```js -//ascending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(null, x); -}, function(err,result){ - //result callback -} ); - -//descending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(null, x*-1); //<- x*-1 instead of x, turns the order around -}, function(err,result){ - //result callback -} ); -``` - ---------------------------------------- - - -### some(arr, iterator, [callback]) - -__Alias:__ `any` - -Returns `true` if at least one element in the `arr` satisfies an async test. -_The callback for each iterator call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. Once any iterator -call returns `true`, the main `callback` is immediately called. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a `callback(truthValue)`` which must be - called with a boolean argument once it has completed. -* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns - `true`, or after all the iterator functions have finished. Result will be - either `true` or `false` depending on the values of the async tests. - - **Note: the callbacks do not take an error as their first argument.** -__Example__ - -```js -async.some(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then at least one of the files exists -}); -``` - -__Related__ - -* someLimit(arr, limit, iterator, callback) - ---------------------------------------- - - -### every(arr, iterator, [callback]) - -__Alias:__ `all` - -Returns `true` if every element in `arr` satisfies an async test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a `callback(truthValue)` which must be - called with a boolean argument once it has completed. -* `callback(result)` - *Optional* A callback which is called after all the `iterator` - functions have finished. Result will be either `true` or `false` depending on - the values of the async tests. - - **Note: the callbacks do not take an error as their first argument.** - -__Example__ - -```js -async.every(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then every file exists -}); -``` - -__Related__ - -* everyLimit(arr, limit, iterator, callback) - ---------------------------------------- - - -### concat(arr, iterator, [callback]) - -Applies `iterator` to each item in `arr`, concatenating the results. Returns the -concatenated list. The `iterator`s are called in parallel, and the results are -concatenated as they return. There is no guarantee that the results array will -be returned in the original order of `arr` passed to the `iterator` function. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, results)` which must be called once it - has completed with an error (which can be `null`) and an array of results. -* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is an array containing - the concatenated results of the `iterator` function. - -__Example__ - -```js -async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ - // files is now a list of filenames that exist in the 3 directories -}); -``` - -__Related__ - -* concatSeries(arr, iterator, [callback]) - - -## Control Flow - - -### series(tasks, [callback]) - -Run the functions in the `tasks` array in series, each one running once the previous -function has completed. If any functions in the series pass an error to its -callback, no more functions are run, and `callback` is immediately called with the value of the error. -Otherwise, `callback` receives an array of results when `tasks` have completed. - -It is also possible to use an object instead of an array. Each property will be -run as a function, and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`series`](#series). - -**Note** that while many implementations preserve the order of object properties, the -[ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) -explicitly states that - -> The mechanics and order of enumerating the properties is not specified. - -So if you rely on the order in which your series of functions are executed, and want -this to work on all platforms, consider using an array. - -__Arguments__ - -* `tasks` - An array or object containing functions to run, each function is passed - a `callback(err, result)` it must call on completion with an error `err` (which can - be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the `task` callbacks. - -__Example__ - -```js -async.series([ - function(callback){ - // do some stuff ... - callback(null, 'one'); - }, - function(callback){ - // do some more stuff ... - callback(null, 'two'); - } -], -// optional callback -function(err, results){ - // results is now equal to ['one', 'two'] -}); - - -// an example using an object instead of an array -async.series({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equal to: {one: 1, two: 2} -}); -``` - ---------------------------------------- - - -### parallel(tasks, [callback]) - -Run the `tasks` array of functions in parallel, without waiting until the previous -function has completed. If any of the functions pass an error to its -callback, the main `callback` is immediately called with the value of the error. -Once the `tasks` have completed, the results are passed to the final `callback` as an -array. - -**Note:** `parallel` is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded. - -It is also possible to use an object instead of an array. Each property will be -run as a function and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`parallel`](#parallel). - - -__Arguments__ - -* `tasks` - An array or object containing functions to run. Each function is passed - a `callback(err, result)` which it must call on completion with an error `err` - (which can be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the task callbacks. - -__Example__ - -```js -async.parallel([ - function(callback){ - setTimeout(function(){ - callback(null, 'one'); - }, 200); - }, - function(callback){ - setTimeout(function(){ - callback(null, 'two'); - }, 100); - } -], -// optional callback -function(err, results){ - // the results array will equal ['one','two'] even though - // the second function had a shorter timeout. -}); - - -// an example using an object instead of an array -async.parallel({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equals to: {one: 1, two: 2} -}); -``` - -__Related__ - -* parallelLimit(tasks, limit, [callback]) - ---------------------------------------- - - -### whilst(test, fn, callback) - -Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, -or an error occurs. - -__Arguments__ - -* `test()` - synchronous truth test to perform before each execution of `fn`. -* `fn(callback)` - A function which is called each time `test` passes. The function is - passed a `callback(err)`, which must be called once it has completed with an - optional `err` argument. -* `callback(err)` - A callback which is called after the test fails and repeated - execution of `fn` has stopped. - -__Example__ - -```js -var count = 0; - -async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } -); -``` - ---------------------------------------- - - -### doWhilst(fn, test, callback) - -The post-check version of [`whilst`](#whilst). To reflect the difference in -the order of operations, the arguments `test` and `fn` are switched. - -`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. - ---------------------------------------- - - -### until(test, fn, callback) - -Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, -or an error occurs. - -The inverse of [`whilst`](#whilst). - ---------------------------------------- - - -### doUntil(fn, test, callback) - -Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. - ---------------------------------------- - - -### during(test, fn, callback) - -Like [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error. - -__Example__ - -```js -var count = 0; - -async.during( - function (callback) { - return callback(null, count < 5); - }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } -); -``` - ---------------------------------------- - - -### doDuring(fn, test, callback) - -The post-check version of [`during`](#during). To reflect the difference in -the order of operations, the arguments `test` and `fn` are switched. - -Also a version of [`doWhilst`](#doWhilst) with asynchronous `test` function. - ---------------------------------------- - - -### forever(fn, [errback]) - -Calls the asynchronous function `fn` with a callback parameter that allows it to -call itself again, in series, indefinitely. - -If an error is passed to the callback then `errback` is called with the -error, and execution stops, otherwise it will never be called. - -```js -async.forever( - function(next) { - // next is suitable for passing to things that need a callback(err [, whatever]); - // it will result in this function being called again. - }, - function(err) { - // if next is called with a value in its first parameter, it will appear - // in here as 'err', and execution will stop. - } -); -``` - ---------------------------------------- - - -### waterfall(tasks, [callback]) - -Runs the `tasks` array of functions in series, each passing their results to the next in -the array. However, if any of the `tasks` pass an error to their own callback, the -next function is not executed, and the main `callback` is immediately called with -the error. - -__Arguments__ - -* `tasks` - An array of functions to run, each function is passed a - `callback(err, result1, result2, ...)` it must call on completion. The first - argument is an error (which can be `null`) and any further arguments will be - passed as arguments in order to the next task. -* `callback(err, [results])` - An optional callback to run once all the functions - have completed. This will be passed the results of the last task's callback. - - - -__Example__ - -```js -async.waterfall([ - function(callback) { - callback(null, 'one', 'two'); - }, - function(arg1, arg2, callback) { - // arg1 now equals 'one' and arg2 now equals 'two' - callback(null, 'three'); - }, - function(arg1, callback) { - // arg1 now equals 'three' - callback(null, 'done'); - } -], function (err, result) { - // result now equals 'done' -}); -``` - ---------------------------------------- - -### compose(fn1, fn2...) - -Creates a function which is a composition of the passed asynchronous -functions. Each function consumes the return value of the function that -follows. Composing functions `f()`, `g()`, and `h()` would produce the result of -`f(g(h()))`, only this version uses callbacks to obtain the return values. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* `functions...` - the asynchronous functions to compose - - -__Example__ - -```js -function add1(n, callback) { - setTimeout(function () { - callback(null, n + 1); - }, 10); -} - -function mul3(n, callback) { - setTimeout(function () { - callback(null, n * 3); - }, 10); -} - -var add1mul3 = async.compose(mul3, add1); - -add1mul3(4, function (err, result) { - // result now equals 15 -}); -``` - ---------------------------------------- - -### seq(fn1, fn2...) - -Version of the compose function that is more natural to read. -Each function consumes the return value of the previous function. -It is the equivalent of [`compose`](#compose) with the arguments reversed. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* `functions...` - the asynchronous functions to compose - - -__Example__ - -```js -// Requires lodash (or underscore), express3 and dresende's orm2. -// Part of an app, that fetches cats of the logged user. -// This example uses `seq` function to avoid overnesting and error -// handling clutter. -app.get('/cats', function(request, response) { - var User = request.models.User; - async.seq( - _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) - function(user, fn) { - user.getCats(fn); // 'getCats' has signature (callback(err, data)) - } - )(req.session.user_id, function (err, cats) { - if (err) { - console.error(err); - response.json({ status: 'error', message: err.message }); - } else { - response.json({ status: 'ok', message: 'Cats found', data: cats }); - } - }); -}); -``` - ---------------------------------------- - -### applyEach(fns, args..., callback) - -Applies the provided arguments to each function in the array, calling -`callback` after all functions have completed. If you only provide the first -argument, then it will return a function which lets you pass in the -arguments as if it were a single function call. - -__Arguments__ - -* `fns` - the asynchronous functions to all call with the same arguments -* `args...` - any number of separate arguments to pass to the function -* `callback` - the final argument should be the callback, called when all - functions have completed processing - - -__Example__ - -```js -async.applyEach([enableSearch, updateSchema], 'bucket', callback); - -// partial application example: -async.each( - buckets, - async.applyEach([enableSearch, updateSchema]), - callback -); -``` - -__Related__ - -* applyEachSeries(tasks, args..., [callback]) - ---------------------------------------- - - -### queue(worker, [concurrency]) - -Creates a `queue` object with the specified `concurrency`. Tasks added to the -`queue` are processed in parallel (up to the `concurrency` limit). If all -`worker`s are in progress, the task is queued until one becomes available. -Once a `worker` completes a `task`, that `task`'s callback is called. - -__Arguments__ - -* `worker(task, callback)` - An asynchronous function for processing a queued - task, which must call its `callback(err)` argument when finished, with an - optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`. -* `concurrency` - An `integer` for determining how many `worker` functions should be - run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown. - -__Queue objects__ - -The `queue` object returned by this function has the following properties and -methods: - -* `length()` - a function returning the number of items waiting to be processed. -* `started` - a function returning whether or not any items have been pushed and processed by the queue -* `running()` - a function returning the number of items currently being processed. -* `workersList()` - a function returning the array of items currently being processed. -* `idle()` - a function returning false if there are items waiting or being processed, or true if not. -* `concurrency` - an integer for determining how many `worker` functions should be - run in parallel. This property can be changed after a `queue` is created to - alter the concurrency on-the-fly. -* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once - the `worker` has finished processing the task. Instead of a single task, a `tasks` array - can be submitted. The respective callback is used for every task in the list. -* `unshift(task, [callback])` - add a new task to the front of the `queue`. -* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, - and further tasks will be queued. -* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. -* `paused` - a boolean for determining whether the queue is in a paused state -* `pause()` - a function that pauses the processing of tasks until `resume()` is called. -* `resume()` - a function that resumes the processing of queued tasks when the queue is paused. -* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle. - -__Example__ - -```js -// create a queue object with concurrency 2 - -var q = async.queue(function (task, callback) { - console.log('hello ' + task.name); - callback(); -}, 2); - - -// assign a callback -q.drain = function() { - console.log('all items have been processed'); -} - -// add some items to the queue - -q.push({name: 'foo'}, function (err) { - console.log('finished processing foo'); -}); -q.push({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); - -// add some items to the queue (batch-wise) - -q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { - console.log('finished processing item'); -}); - -// add some items to the front of the queue - -q.unshift({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); -``` - - ---------------------------------------- - - -### priorityQueue(worker, concurrency) - -The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects: - -* `push(task, priority, [callback])` - `priority` should be a number. If an array of - `tasks` is given, all tasks will be assigned the same priority. -* The `unshift` method was removed. - ---------------------------------------- - - -### cargo(worker, [payload]) - -Creates a `cargo` object with the specified payload. Tasks added to the -cargo will be processed altogether (up to the `payload` limit). If the -`worker` is in progress, the task is queued until it becomes available. Once -the `worker` has completed some tasks, each callback of those tasks is called. -Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work. - -While [queue](#queue) passes only one task to one of a group of workers -at a time, cargo passes an array of tasks to a single worker, repeating -when the worker is finished. - -__Arguments__ - -* `worker(tasks, callback)` - An asynchronous function for processing an array of - queued tasks, which must call its `callback(err)` argument when finished, with - an optional `err` argument. -* `payload` - An optional `integer` for determining how many tasks should be - processed per round; if omitted, the default is unlimited. - -__Cargo objects__ - -The `cargo` object returned by this function has the following properties and -methods: - -* `length()` - A function returning the number of items waiting to be processed. -* `payload` - An `integer` for determining how many tasks should be - process per round. This property can be changed after a `cargo` is created to - alter the payload on-the-fly. -* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called - once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` - can be submitted. The respective callback is used for every task in the list. -* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. -* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. -* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue) - -__Example__ - -```js -// create a cargo object with payload 2 - -var cargo = async.cargo(function (tasks, callback) { - for(var i=0; i -### auto(tasks, [concurrency], [callback]) - -Determines the best order for running the functions in `tasks`, based on their requirements. Each function can optionally depend on other functions being completed first, and each function is run as soon as its requirements are satisfied. - -If any of the functions pass an error to their callback, the `auto` sequence will stop. Further tasks will not execute (so any other functions depending on it will not run), and the main `callback` is immediately called with the error. Functions also receive an object containing the results of functions which have completed so far. - -Note, all functions are called with a `results` object as a second argument, -so it is unsafe to pass functions in the `tasks` object which cannot handle the -extra argument. - -For example, this snippet of code: - -```js -async.auto({ - readData: async.apply(fs.readFile, 'data.txt', 'utf-8') -}, callback); -``` - -will have the effect of calling `readFile` with the results object as the last -argument, which will fail: - -```js -fs.readFile('data.txt', 'utf-8', cb, {}); -``` - -Instead, wrap the call to `readFile` in a function which does not forward the -`results` object: - -```js -async.auto({ - readData: function(cb, results){ - fs.readFile('data.txt', 'utf-8', cb); - } -}, callback); -``` - -__Arguments__ - -* `tasks` - An object. Each of its properties is either a function or an array of - requirements, with the function itself the last item in the array. The object's key - of a property serves as the name of the task defined by that property, - i.e. can be used when specifying requirements for other tasks. - The function receives two arguments: (1) a `callback(err, result)` which must be - called when finished, passing an `error` (which can be `null`) and the result of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions. -* `concurrency` - An optional `integer` for determining the maximum number of tasks that can be run in parallel. By default, as many as possible. -* `callback(err, results)` - An optional callback which is called when all the - tasks have been completed. It receives the `err` argument if any `tasks` - pass an error to their callback. Results are always returned; however, if - an error occurs, no further `tasks` will be performed, and the results - object will only contain partial results. - - -__Example__ - -```js -async.auto({ - get_data: function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - make_folder: function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - }, - write_file: ['get_data', 'make_folder', function(callback, results){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - callback(null, 'filename'); - }], - email_link: ['write_file', function(callback, results){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - // results.write_file contains the filename returned by write_file. - callback(null, {'file':results.write_file, 'email':'user@example.com'}); - }] -}, function(err, results) { - console.log('err = ', err); - console.log('results = ', results); -}); -``` - -This is a fairly trivial example, but to do this using the basic parallel and -series functions would look like this: - -```js -async.parallel([ - function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - } -], -function(err, results){ - async.series([ - function(callback){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - results.push('filename'); - callback(null); - }, - function(callback){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - callback(null, {'file':results.pop(), 'email':'user@example.com'}); - } - ]); -}); -``` - -For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding -new tasks much easier (and the code more readable). - - ---------------------------------------- - - -### retry([opts = {times: 5, interval: 0}| 5], task, [callback]) - -Attempts to get a successful response from `task` no more than `times` times before -returning an error. If the task is successful, the `callback` will be passed the result -of the successful task. If all attempts fail, the callback will be passed the error and -result (if any) of the final attempt. - -__Arguments__ - -* `opts` - Can be either an object with `times` and `interval` or a number. `times` is how many attempts should be made before giving up. `interval` is how long to wait inbetween attempts. Defaults to {times: 5, interval: 0} - * if a number is passed in it sets `times` only (with `interval` defaulting to 0). -* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)` - which must be called when finished, passing `err` (which can be `null`) and the `result` of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions (if nested inside another control flow). -* `callback(err, results)` - An optional callback which is called when the - task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`. - -The [`retry`](#retry) function can be used as a stand-alone control flow by passing a -callback, as shown below: - -```js -async.retry(3, apiMethod, function(err, result) { - // do something with the result -}); -``` - -```js -async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { - // do something with the result -}); -``` - -It can also be embedded within other control flow functions to retry individual methods -that are not as reliable, like this: - -```js -async.auto({ - users: api.getUsers.bind(api), - payments: async.retry(3, api.getPayments.bind(api)) -}, function(err, results) { - // do something with the results -}); -``` - - ---------------------------------------- - - -### iterator(tasks) - -Creates an iterator function which calls the next function in the `tasks` array, -returning a continuation to call the next one after that. It's also possible to -“peek” at the next iterator with `iterator.next()`. - -This function is used internally by the `async` module, but can be useful when -you want to manually control the flow of functions in series. - -__Arguments__ - -* `tasks` - An array of functions to run. - -__Example__ - -```js -var iterator = async.iterator([ - function(){ sys.p('one'); }, - function(){ sys.p('two'); }, - function(){ sys.p('three'); } -]); - -node> var iterator2 = iterator(); -'one' -node> var iterator3 = iterator2(); -'two' -node> iterator3(); -'three' -node> var nextfn = iterator2.next(); -node> nextfn(); -'three' -``` - ---------------------------------------- - - -### apply(function, arguments..) - -Creates a continuation function with some arguments already applied. - -Useful as a shorthand when combined with other control flow functions. Any arguments -passed to the returned function are added to the arguments originally passed -to apply. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to automatically apply when the - continuation is called. - -__Example__ - -```js -// using apply - -async.parallel([ - async.apply(fs.writeFile, 'testfile1', 'test1'), - async.apply(fs.writeFile, 'testfile2', 'test2'), -]); - - -// the same process without using apply - -async.parallel([ - function(callback){ - fs.writeFile('testfile1', 'test1', callback); - }, - function(callback){ - fs.writeFile('testfile2', 'test2', callback); - } -]); -``` - -It's possible to pass any number of additional arguments when calling the -continuation: - -```js -node> var fn = async.apply(sys.puts, 'one'); -node> fn('two', 'three'); -one -two -three -``` - ---------------------------------------- - - -### nextTick(callback), setImmediate(callback) - -Calls `callback` on a later loop around the event loop. In Node.js this just -calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` -if available, otherwise `setTimeout(callback, 0)`, which means other higher priority -events may precede the execution of `callback`. - -This is used internally for browser-compatibility purposes. - -__Arguments__ - -* `callback` - The function to call on a later loop around the event loop. - -__Example__ - -```js -var call_order = []; -async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two'] -}); -call_order.push('one') -``` - - -### times(n, iterator, [callback]) - -Calls the `iterator` function `n` times, and accumulates results in the same manner -you would use with [`map`](#map). - -__Arguments__ - -* `n` - The number of times to run the function. -* `iterator` - The function to call `n` times. -* `callback` - see [`map`](#map) - -__Example__ - -```js -// Pretend this is some complicated async factory -var createUser = function(id, callback) { - callback(null, { - id: 'user' + id - }) -} -// generate 5 users -async.times(5, function(n, next){ - createUser(n, function(err, user) { - next(err, user) - }) -}, function(err, users) { - // we should now have 5 users -}); -``` - -__Related__ - -* timesSeries(n, iterator, [callback]) -* timesLimit(n, limit, iterator, [callback]) - - -## Utils - - -### memoize(fn, [hasher]) - -Caches the results of an `async` function. When creating a hash to store function -results against, the callback is omitted from the hash and an optional hash -function can be used. - -If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function. - -The cache of results is exposed as the `memo` property of the function returned -by `memoize`. - -__Arguments__ - -* `fn` - The function to proxy and cache results from. -* `hasher` - An optional function for generating a custom hash for storing - results. It has all the arguments applied to it apart from the callback, and - must be synchronous. - -__Example__ - -```js -var slow_fn = function (name, callback) { - // do something - callback(null, result); -}; -var fn = async.memoize(slow_fn); - -// fn can now be used as if it were slow_fn -fn('some name', function () { - // callback -}); -``` - - -### unmemoize(fn) - -Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized -form. Handy for testing. - -__Arguments__ - -* `fn` - the memoized function - ---------------------------------------- - - -### ensureAsync(fn) - -Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained. - -__Arguments__ - -* `fn` - an async function, one that expects a node-style callback as its last argument - -Returns a wrapped function with the exact same call signature as the function passed in. - -__Example__ - -```js -function sometimesAsync(arg, callback) { - if (cache[arg]) { - return callback(null, cache[arg]); // this would be synchronous!! - } else { - doSomeIO(arg, callback); // this IO would be asynchronous - } -} - -// this has a risk of stack overflows if many results are cached in a row -async.mapSeries(args, sometimesAsync, done); - -// this will defer sometimesAsync's callback if necessary, -// preventing stack overflows -async.mapSeries(args, async.ensureAsync(sometimesAsync), done); - -``` - ---------------------------------------- - - -### constant(values...) - -Returns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`. - -__Example__ - -```js -async.waterfall([ - async.constant(42), - function (value, next) { - // value === 42 - }, - //... -], callback); - -async.waterfall([ - async.constant(filename, "utf8"), - fs.readFile, - function (fileData, next) { - //... - } - //... -], callback); - -async.auto({ - hostname: async.constant("https://server.net/"), - port: findFreePort, - launchServer: ["hostname", "port", function (cb, options) { - startServer(options, cb); - }], - //... -}, callback); - -``` - ---------------------------------------- - - - -### asyncify(func) - -__Alias:__ `wrapSync` - -Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback. - -__Example__ - -```js -async.waterfall([ - async.apply(fs.readFile, filename, "utf8"), - async.asyncify(JSON.parse), - function (data, next) { - // data is the result of parsing the text. - // If there was a parsing error, it would have been caught. - } -], callback) -``` - ---------------------------------------- - - -### log(function, arguments) - -Logs the result of an `async` function to the `console`. Only works in Node.js or -in browsers that support `console.log` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.log` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); -}; -``` -```js -node> async.log(hello, 'world'); -'hello world' -``` - ---------------------------------------- - - -### dir(function, arguments) - -Logs the result of an `async` function to the `console` using `console.dir` to -display the properties of the resulting object. Only works in Node.js or -in browsers that support `console.dir` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.dir` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); -}; -``` -```js -node> async.dir(hello, 'world'); -{hello: 'world'} -``` - ---------------------------------------- - - -### noConflict() - -Changes the value of `async` back to its original value, returning a reference to the -`async` object. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js deleted file mode 100644 index 88893440..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/form-data/node_modules/async/dist/async.js +++ /dev/null @@ -1,1260 +0,0 @@ -/*! - * async - * https://github.com/caolan/async - * - * Copyright 2010-2014 Caolan McMahon - * Released under the MIT license - */ -(function () { - - var async = {}; - function noop() {} - function identity(v) { - return v; - } - function toBool(v) { - return !!v; - } - function notId(v) { - return !v; - } - - // global on the server, window in the browser - var previous_async; - - // Establish the root object, `window` (`self`) in the browser, `global` - // on the server, or `this` in some virtual machines. We use `self` - // instead of `window` for `WebWorker` support. - var root = typeof self === 'object' && self.self === self && self || - typeof global === 'object' && global.global === global && global || - this; - - if (root != null) { - previous_async = root.async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - function only_once(fn) { - return function() { - if (fn === null) throw new Error("Callback was already called."); - fn.apply(this, arguments); - fn = null; - }; - } - - function _once(fn) { - return function() { - if (fn === null) return; - fn.apply(this, arguments); - fn = null; - }; - } - - //// cross-browser compatiblity functions //// - - var _toString = Object.prototype.toString; - - var _isArray = Array.isArray || function (obj) { - return _toString.call(obj) === '[object Array]'; - }; - - // Ported from underscore.js isObject - var _isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; - - function _isArrayLike(arr) { - return _isArray(arr) || ( - // has a positive integer length property - typeof arr.length === "number" && - arr.length >= 0 && - arr.length % 1 === 0 - ); - } - - function _arrayEach(arr, iterator) { - var index = -1, - length = arr.length; - - while (++index < length) { - iterator(arr[index], index, arr); - } - } - - function _map(arr, iterator) { - var index = -1, - length = arr.length, - result = Array(length); - - while (++index < length) { - result[index] = iterator(arr[index], index, arr); - } - return result; - } - - function _range(count) { - return _map(Array(count), function (v, i) { return i; }); - } - - function _reduce(arr, iterator, memo) { - _arrayEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - } - - function _forEachOf(object, iterator) { - _arrayEach(_keys(object), function (key) { - iterator(object[key], key); - }); - } - - function _indexOf(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) return i; - } - return -1; - } - - var _keys = Object.keys || function (obj) { - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - function _keyIterator(coll) { - var i = -1; - var len; - var keys; - if (_isArrayLike(coll)) { - len = coll.length; - return function next() { - i++; - return i < len ? i : null; - }; - } else { - keys = _keys(coll); - len = keys.length; - return function next() { - i++; - return i < len ? keys[i] : null; - }; - } - } - - // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html) - // This accumulates the arguments passed into an array, after a given index. - // From underscore.js (https://github.com/jashkenas/underscore/pull/2140). - function _restParam(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0); - var rest = Array(length); - for (var index = 0; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - } - // Currently unused but handle cases outside of the switch statement: - // var args = Array(startIndex + 1); - // for (index = 0; index < startIndex; index++) { - // args[index] = arguments[index]; - // } - // args[startIndex] = rest; - // return func.apply(this, args); - }; - } - - function _withoutIndex(iterator) { - return function (value, index, callback) { - return iterator(value, callback); - }; - } - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - - // capture the global reference to guard against fakeTimer mocks - var _setImmediate = typeof setImmediate === 'function' && setImmediate; - - var _delay = _setImmediate ? function(fn) { - // not a direct alias for IE10 compatibility - _setImmediate(fn); - } : function(fn) { - setTimeout(fn, 0); - }; - - if (typeof process === 'object' && typeof process.nextTick === 'function') { - async.nextTick = process.nextTick; - } else { - async.nextTick = _delay; - } - async.setImmediate = _setImmediate ? _delay : async.nextTick; - - - async.forEach = - async.each = function (arr, iterator, callback) { - return async.eachOf(arr, _withoutIndex(iterator), callback); - }; - - async.forEachSeries = - async.eachSeries = function (arr, iterator, callback) { - return async.eachOfSeries(arr, _withoutIndex(iterator), callback); - }; - - - async.forEachLimit = - async.eachLimit = function (arr, limit, iterator, callback) { - return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback); - }; - - async.forEachOf = - async.eachOf = function (object, iterator, callback) { - callback = _once(callback || noop); - object = object || []; - - var iter = _keyIterator(object); - var key, completed = 0; - - while ((key = iter()) != null) { - completed += 1; - iterator(object[key], key, only_once(done)); - } - - if (completed === 0) callback(null); - - function done(err) { - completed--; - if (err) { - callback(err); - } - // Check key is null in case iterator isn't exhausted - // and done resolved synchronously. - else if (key === null && completed <= 0) { - callback(null); - } - } - }; - - async.forEachOfSeries = - async.eachOfSeries = function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - var key = nextKey(); - function iterate() { - var sync = true; - if (key === null) { - return callback(null); - } - iterator(obj[key], key, only_once(function (err) { - if (err) { - callback(err); - } - else { - key = nextKey(); - if (key === null) { - return callback(null); - } else { - if (sync) { - async.setImmediate(iterate); - } else { - iterate(); - } - } - } - })); - sync = false; - } - iterate(); - }; - - - - async.forEachOfLimit = - async.eachOfLimit = function (obj, limit, iterator, callback) { - _eachOfLimit(limit)(obj, iterator, callback); - }; - - function _eachOfLimit(limit) { - - return function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - if (limit <= 0) { - return callback(null); - } - var done = false; - var running = 0; - var errored = false; - - (function replenish () { - if (done && running <= 0) { - return callback(null); - } - - while (running < limit && !errored) { - var key = nextKey(); - if (key === null) { - done = true; - if (running <= 0) { - callback(null); - } - return; - } - running += 1; - iterator(obj[key], key, only_once(function (err) { - running -= 1; - if (err) { - callback(err); - errored = true; - } - else { - replenish(); - } - })); - } - })(); - }; - } - - - function doParallel(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOf, obj, iterator, callback); - }; - } - function doParallelLimit(fn) { - return function (obj, limit, iterator, callback) { - return fn(_eachOfLimit(limit), obj, iterator, callback); - }; - } - function doSeries(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOfSeries, obj, iterator, callback); - }; - } - - function _asyncMap(eachfn, arr, iterator, callback) { - callback = _once(callback || noop); - arr = arr || []; - var results = _isArrayLike(arr) ? [] : {}; - eachfn(arr, function (value, index, callback) { - iterator(value, function (err, v) { - results[index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - async.mapLimit = doParallelLimit(_asyncMap); - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.inject = - async.foldl = - async.reduce = function (arr, memo, iterator, callback) { - async.eachOfSeries(arr, function (x, i, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - - async.foldr = - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, identity).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - - async.transform = function (arr, memo, iterator, callback) { - if (arguments.length === 3) { - callback = iterator; - iterator = memo; - memo = _isArray(arr) ? [] : {}; - } - - async.eachOf(arr, function(v, k, cb) { - iterator(memo, v, k, cb); - }, function(err) { - callback(err, memo); - }); - }; - - function _filter(eachfn, arr, iterator, callback) { - var results = []; - eachfn(arr, function (x, index, callback) { - iterator(x, function (v) { - if (v) { - results.push({index: index, value: x}); - } - callback(); - }); - }, function () { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - } - - async.select = - async.filter = doParallel(_filter); - - async.selectLimit = - async.filterLimit = doParallelLimit(_filter); - - async.selectSeries = - async.filterSeries = doSeries(_filter); - - function _reject(eachfn, arr, iterator, callback) { - _filter(eachfn, arr, function(value, cb) { - iterator(value, function(v) { - cb(!v); - }); - }, callback); - } - async.reject = doParallel(_reject); - async.rejectLimit = doParallelLimit(_reject); - async.rejectSeries = doSeries(_reject); - - function _createTester(eachfn, check, getResult) { - return function(arr, limit, iterator, cb) { - function done() { - if (cb) cb(getResult(false, void 0)); - } - function iteratee(x, _, callback) { - if (!cb) return callback(); - iterator(x, function (v) { - if (cb && check(v)) { - cb(getResult(true, x)); - cb = iterator = false; - } - callback(); - }); - } - if (arguments.length > 3) { - eachfn(arr, limit, iteratee, done); - } else { - cb = iterator; - iterator = limit; - eachfn(arr, iteratee, done); - } - }; - } - - async.any = - async.some = _createTester(async.eachOf, toBool, identity); - - async.someLimit = _createTester(async.eachOfLimit, toBool, identity); - - async.all = - async.every = _createTester(async.eachOf, notId, notId); - - async.everyLimit = _createTester(async.eachOfLimit, notId, notId); - - function _findGetResult(v, x) { - return x; - } - async.detect = _createTester(async.eachOf, identity, _findGetResult); - async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult); - async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult); - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - callback(null, _map(results.sort(comparator), function (x) { - return x.value; - })); - } - - }); - - function comparator(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - } - }; - - async.auto = function (tasks, concurrency, callback) { - if (!callback) { - // concurrency is optional, shift the args. - callback = concurrency; - concurrency = null; - } - callback = _once(callback || noop); - var keys = _keys(tasks); - var remainingTasks = keys.length; - if (!remainingTasks) { - return callback(null); - } - if (!concurrency) { - concurrency = remainingTasks; - } - - var results = {}; - var runningTasks = 0; - - var listeners = []; - function addListener(fn) { - listeners.unshift(fn); - } - function removeListener(fn) { - var idx = _indexOf(listeners, fn); - if (idx >= 0) listeners.splice(idx, 1); - } - function taskComplete() { - remainingTasks--; - _arrayEach(listeners.slice(0), function (fn) { - fn(); - }); - } - - addListener(function () { - if (!remainingTasks) { - callback(null, results); - } - }); - - _arrayEach(keys, function (k) { - var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; - var taskCallback = _restParam(function(err, args) { - runningTasks--; - if (args.length <= 1) { - args = args[0]; - } - if (err) { - var safeResults = {}; - _forEachOf(results, function(val, rkey) { - safeResults[rkey] = val; - }); - safeResults[k] = args; - callback(err, safeResults); - } - else { - results[k] = args; - async.setImmediate(taskComplete); - } - }); - var requires = task.slice(0, task.length - 1); - // prevent dead-locks - var len = requires.length; - var dep; - while (len--) { - if (!(dep = tasks[requires[len]])) { - throw new Error('Has inexistant dependency'); - } - if (_isArray(dep) && _indexOf(dep, k) >= 0) { - throw new Error('Has cyclic dependencies'); - } - } - function ready() { - return runningTasks < concurrency && _reduce(requires, function (a, x) { - return (a && results.hasOwnProperty(x)); - }, true) && !results.hasOwnProperty(k); - } - if (ready()) { - runningTasks++; - task[task.length - 1](taskCallback, results); - } - else { - addListener(listener); - } - function listener() { - if (ready()) { - runningTasks++; - removeListener(listener); - task[task.length - 1](taskCallback, results); - } - } - }); - }; - - - - async.retry = function(times, task, callback) { - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var attempts = []; - - var opts = { - times: DEFAULT_TIMES, - interval: DEFAULT_INTERVAL - }; - - function parseTimes(acc, t){ - if(typeof t === 'number'){ - acc.times = parseInt(t, 10) || DEFAULT_TIMES; - } else if(typeof t === 'object'){ - acc.times = parseInt(t.times, 10) || DEFAULT_TIMES; - acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL; - } else { - throw new Error('Unsupported argument type for \'times\': ' + typeof t); - } - } - - var length = arguments.length; - if (length < 1 || length > 3) { - throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)'); - } else if (length <= 2 && typeof times === 'function') { - callback = task; - task = times; - } - if (typeof times !== 'function') { - parseTimes(opts, times); - } - opts.callback = callback; - opts.task = task; - - function wrappedTask(wrappedCallback, wrappedResults) { - function retryAttempt(task, finalAttempt) { - return function(seriesCallback) { - task(function(err, result){ - seriesCallback(!err || finalAttempt, {err: err, result: result}); - }, wrappedResults); - }; - } - - function retryInterval(interval){ - return function(seriesCallback){ - setTimeout(function(){ - seriesCallback(null); - }, interval); - }; - } - - while (opts.times) { - - var finalAttempt = !(opts.times-=1); - attempts.push(retryAttempt(opts.task, finalAttempt)); - if(!finalAttempt && opts.interval > 0){ - attempts.push(retryInterval(opts.interval)); - } - } - - async.series(attempts, function(done, data){ - data = data[data.length - 1]; - (wrappedCallback || opts.callback)(data.err, data.result); - }); - } - - // If a callback is passed, run this as a controll flow - return opts.callback ? wrappedTask() : wrappedTask; - }; - - async.waterfall = function (tasks, callback) { - callback = _once(callback || noop); - if (!_isArray(tasks)) { - var err = new Error('First argument to waterfall must be an array of functions'); - return callback(err); - } - if (!tasks.length) { - return callback(); - } - function wrapIterator(iterator) { - return _restParam(function (err, args) { - if (err) { - callback.apply(null, [err].concat(args)); - } - else { - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - ensureAsync(iterator).apply(null, args); - } - }); - } - wrapIterator(async.iterator(tasks))(); - }; - - function _parallel(eachfn, tasks, callback) { - callback = callback || noop; - var results = _isArrayLike(tasks) ? [] : {}; - - eachfn(tasks, function (task, key, callback) { - task(_restParam(function (err, args) { - if (args.length <= 1) { - args = args[0]; - } - results[key] = args; - callback(err); - })); - }, function (err) { - callback(err, results); - }); - } - - async.parallel = function (tasks, callback) { - _parallel(async.eachOf, tasks, callback); - }; - - async.parallelLimit = function(tasks, limit, callback) { - _parallel(_eachOfLimit(limit), tasks, callback); - }; - - async.series = function(tasks, callback) { - _parallel(async.eachOfSeries, tasks, callback); - }; - - async.iterator = function (tasks) { - function makeCallback(index) { - function fn() { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - } - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - } - return makeCallback(0); - }; - - async.apply = _restParam(function (fn, args) { - return _restParam(function (callArgs) { - return fn.apply( - null, args.concat(callArgs) - ); - }); - }); - - function _concat(eachfn, arr, fn, callback) { - var result = []; - eachfn(arr, function (x, index, cb) { - fn(x, function (err, y) { - result = result.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, result); - }); - } - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - callback = callback || noop; - if (test()) { - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else if (test.apply(this, args)) { - iterator(next); - } else { - callback(null); - } - }); - iterator(next); - } else { - callback(null); - } - }; - - async.doWhilst = function (iterator, test, callback) { - var calls = 0; - return async.whilst(function() { - return ++calls <= 1 || test.apply(this, arguments); - }, iterator, callback); - }; - - async.until = function (test, iterator, callback) { - return async.whilst(function() { - return !test.apply(this, arguments); - }, iterator, callback); - }; - - async.doUntil = function (iterator, test, callback) { - return async.doWhilst(iterator, function() { - return !test.apply(this, arguments); - }, callback); - }; - - async.during = function (test, iterator, callback) { - callback = callback || noop; - - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else { - args.push(check); - test.apply(this, args); - } - }); - - var check = function(err, truth) { - if (err) { - callback(err); - } else if (truth) { - iterator(next); - } else { - callback(null); - } - }; - - test(check); - }; - - async.doDuring = function (iterator, test, callback) { - var calls = 0; - async.during(function(next) { - if (calls++ < 1) { - next(null, true); - } else { - test.apply(this, arguments); - } - }, iterator, callback); - }; - - function _queue(worker, concurrency, payload) { - if (concurrency == null) { - concurrency = 1; - } - else if(concurrency === 0) { - throw new Error('Concurrency must not be zero'); - } - function _insert(q, data, pos, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - callback: callback || noop - }; - - if (pos) { - q.tasks.unshift(item); - } else { - q.tasks.push(item); - } - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - }); - async.setImmediate(q.process); - } - function _next(q, tasks) { - return function(){ - workers -= 1; - - var removed = false; - var args = arguments; - _arrayEach(tasks, function (task) { - _arrayEach(workersList, function (worker, index) { - if (worker === task && !removed) { - workersList.splice(index, 1); - removed = true; - } - }); - - task.callback.apply(task, args); - }); - if (q.tasks.length + workers === 0) { - q.drain(); - } - q.process(); - }; - } - - var workers = 0; - var workersList = []; - var q = { - tasks: [], - concurrency: concurrency, - payload: payload, - saturated: noop, - empty: noop, - drain: noop, - started: false, - paused: false, - push: function (data, callback) { - _insert(q, data, false, callback); - }, - kill: function () { - q.drain = noop; - q.tasks = []; - }, - unshift: function (data, callback) { - _insert(q, data, true, callback); - }, - process: function () { - if (!q.paused && workers < q.concurrency && q.tasks.length) { - while(workers < q.concurrency && q.tasks.length){ - var tasks = q.payload ? - q.tasks.splice(0, q.payload) : - q.tasks.splice(0, q.tasks.length); - - var data = _map(tasks, function (task) { - return task.data; - }); - - if (q.tasks.length === 0) { - q.empty(); - } - workers += 1; - workersList.push(tasks[0]); - var cb = only_once(_next(q, tasks)); - worker(data, cb); - } - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - }, - workersList: function () { - return workersList; - }, - idle: function() { - return q.tasks.length + workers === 0; - }, - pause: function () { - q.paused = true; - }, - resume: function () { - if (q.paused === false) { return; } - q.paused = false; - var resumeCount = Math.min(q.concurrency, q.tasks.length); - // Need to call q.process once per concurrent - // worker to preserve full concurrency after pause - for (var w = 1; w <= resumeCount; w++) { - async.setImmediate(q.process); - } - } - }; - return q; - } - - async.queue = function (worker, concurrency) { - var q = _queue(function (items, cb) { - worker(items[0], cb); - }, concurrency, 1); - - return q; - }; - - async.priorityQueue = function (worker, concurrency) { - - function _compareTasks(a, b){ - return a.priority - b.priority; - } - - function _binarySearch(sequence, item, compare) { - var beg = -1, - end = sequence.length - 1; - while (beg < end) { - var mid = beg + ((end - beg + 1) >>> 1); - if (compare(item, sequence[mid]) >= 0) { - beg = mid; - } else { - end = mid - 1; - } - } - return beg; - } - - function _insert(q, data, priority, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - priority: priority, - callback: typeof callback === 'function' ? callback : noop - }; - - q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - async.setImmediate(q.process); - }); - } - - // Start with a normal queue - var q = async.queue(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function (data, priority, callback) { - _insert(q, data, priority, callback); - }; - - // Remove unshift function - delete q.unshift; - - return q; - }; - - async.cargo = function (worker, payload) { - return _queue(worker, 1, payload); - }; - - function _console_fn(name) { - return _restParam(function (fn, args) { - fn.apply(null, args.concat([_restParam(function (err, args) { - if (typeof console === 'object') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _arrayEach(args, function (x) { - console[name](x); - }); - } - } - })])); - }); - } - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - var queues = {}; - hasher = hasher || identity; - var memoized = _restParam(function memoized(args) { - var callback = args.pop(); - var key = hasher.apply(null, args); - if (key in memo) { - async.setImmediate(function () { - callback.apply(null, memo[key]); - }); - } - else if (key in queues) { - queues[key].push(callback); - } - else { - queues[key] = [callback]; - fn.apply(null, args.concat([_restParam(function (args) { - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })])); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - - function _times(mapper) { - return function (count, iterator, callback) { - mapper(_range(count), iterator, callback); - }; - } - - async.times = _times(async.map); - async.timesSeries = _times(async.mapSeries); - async.timesLimit = function (count, limit, iterator, callback) { - return async.mapLimit(_range(count), limit, iterator, callback); - }; - - async.seq = function (/* functions... */) { - var fns = arguments; - return _restParam(function (args) { - var that = this; - - var callback = args[args.length - 1]; - if (typeof callback == 'function') { - args.pop(); - } else { - callback = noop; - } - - async.reduce(fns, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([_restParam(function (err, nextargs) { - cb(err, nextargs); - })])); - }, - function (err, results) { - callback.apply(that, [err].concat(results)); - }); - }); - }; - - async.compose = function (/* functions... */) { - return async.seq.apply(null, Array.prototype.reverse.call(arguments)); - }; - - - function _applyEach(eachfn) { - return _restParam(function(fns, args) { - var go = _restParam(function(args) { - var that = this; - var callback = args.pop(); - return eachfn(fns, function (fn, _, cb) { - fn.apply(that, args.concat([cb])); - }, - callback); - }); - if (args.length) { - return go.apply(this, args); - } - else { - return go; - } - }); - } - - async.applyEach = _applyEach(async.eachOf); - async.applyEachSeries = _applyEach(async.eachOfSeries); - - - async.forever = function (fn, callback) { - var done = only_once(callback || noop); - var task = ensureAsync(fn); - function next(err) { - if (err) { - return done(err); - } - task(next); - } - next(); - }; - - function ensureAsync(fn) { - return _restParam(function (args) { - var callback = args.pop(); - args.push(function () { - var innerArgs = arguments; - if (sync) { - async.setImmediate(function () { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - }); - var sync = true; - fn.apply(this, args); - sync = false; - }); - } - - async.ensureAsync = ensureAsync; - - async.constant = _restParam(function(values) { - var args = [null].concat(values); - return function (callback) { - return callback.apply(this, args); - }; - }); - - async.wrapSync = - async.asyncify = function asyncify(func) { - return _restParam(function (args) { - var callback = args.pop(); - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if (_isObject(result) && typeof result.then === "function") { - result.then(function(value) { - callback(null, value); - })["catch"](function(err) { - callback(err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); - }; - - // Node.js - if (typeof module === 'object' && module.exports) { - module.exports = async; - } - // AMD / RequireJS - else if (typeof define === 'function' && define.amd) { - define([], function () { - return async; - }); - } - // included directly via '); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); -}); - -describe('escapeHtml()', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml(''); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml(' - - \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js deleted file mode 100644 index 664c1b45..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/example.js +++ /dev/null @@ -1,3 +0,0 @@ -var BigInteger = require('./'); -var a = new BigInteger('91823918239182398123'); -console.log(a.bitLength()); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js deleted file mode 100644 index e32fe13d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/index.js +++ /dev/null @@ -1,1358 +0,0 @@ -(function(){ - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - var inBrowser = typeof navigator !== "undefined"; - if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+this.DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // Copyright (c) 2005-2009 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Extended JavaScript BN functions, required for RSA private ops. - - // Version 1.1: new BigInteger("0", 10) returns "proper" zero - // Version 1.2: square() API, isProbablePrime fix - - // (public) - function bnClone() { var r = nbi(); this.copyTo(r); return r; } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - - // (public) return value as short (assumes DB>=16) - function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) alternate constructor - function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; - } - - function bnEquals(a) { return(this.compareTo(a)==0); } - function bnMin(a) { return(this.compareTo(a)<0)?this:a; } - function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - - // (protected) r = this op a (bitwise) - function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); - } - - // (public) this & a - function op_and(x,y) { return x&y; } - function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - - // (public) this | a - function op_or(x,y) { return x|y; } - function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - - // (public) this ^ a - function op_xor(x,y) { return x^y; } - function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - - // (public) this & ~a - function op_andnot(x,y) { return x&~y; } - function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - - // (public) ~this - function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; - } - - // (public) this << n - function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; - } - - // (public) this >> n - function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; - } - - // return index of lowest 1-bit in x, x < 2^31 - function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; - } - - // (public) returns index of lowest 1-bit (or -1 if none) - function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; - } - - // return number of 1 bits in x - function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; - } - - // (public) return number of set bits - function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; - } - - // (public) true iff nth bit is set - function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); - } - - // (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - // (public) this + a - function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - - // (public) this - a - function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - - // (public) this * a - function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - - // (public) this^2 - function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - - // (public) this / a - function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - - // (public) this % a - function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - - // (public) [this/a,this%a] - function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // A "null" reducer - function NullExp() {} - function nNop(x) { return x; } - function nMulTo(x,y,r) { x.multiplyTo(y,r); } - function nSqrTo(x,r) { x.squareTo(r); } - - NullExp.prototype.convert = nNop; - NullExp.prototype.revert = nNop; - NullExp.prototype.mulTo = nMulTo; - NullExp.prototype.sqrTo = nSqrTo; - - // (public) this^e - function bnPow(e) { return this.exp(e,new NullExp()); } - - // (protected) r = lower n words of "this * a", a.t <= n - // "this" should be the larger one if appropriate. - function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); - } - - // (protected) r = "this * a" without lower n words, n > 0 - // "this" should be the larger one if appropriate. - function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); - } - - // Barrett modular reduction - function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; - } - - function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } - } - - function barrettRevert(x) { return x; } - - // x = x mod m (HAC 14.42) - function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = x^2 mod m; x != r - function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = x*y mod m; x,y != r - function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Barrett.prototype.convert = barrettConvert; - Barrett.prototype.revert = barrettRevert; - Barrett.prototype.reduce = barrettReduce; - Barrett.prototype.mulTo = barrettMulTo; - Barrett.prototype.sqrTo = barrettSqrTo; - - // (public) this^e % m (HAC 14.85) - function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; - } - - // (protected) this % n, n < 2^26 - function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; - } - - // (public) 1/this % m (HAC 14.61) - function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; - } - - var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; - var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - - // (public) test primality with certainty >= 1-.5^t - function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); - } - - // (protected) true if probably prime (HAC 4.24, Miller-Rabin) - function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; - } - - // protected - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.fromNumber = bnpFromNumber; - BigInteger.prototype.bitwiseTo = bnpBitwiseTo; - BigInteger.prototype.changeBit = bnpChangeBit; - BigInteger.prototype.addTo = bnpAddTo; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; - BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; - BigInteger.prototype.modInt = bnpModInt; - BigInteger.prototype.millerRabin = bnpMillerRabin; - - // public - BigInteger.prototype.clone = bnClone; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.byteValue = bnByteValue; - BigInteger.prototype.shortValue = bnShortValue; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.toByteArray = bnToByteArray; - BigInteger.prototype.equals = bnEquals; - BigInteger.prototype.min = bnMin; - BigInteger.prototype.max = bnMax; - BigInteger.prototype.and = bnAnd; - BigInteger.prototype.or = bnOr; - BigInteger.prototype.xor = bnXor; - BigInteger.prototype.andNot = bnAndNot; - BigInteger.prototype.not = bnNot; - BigInteger.prototype.shiftLeft = bnShiftLeft; - BigInteger.prototype.shiftRight = bnShiftRight; - BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; - BigInteger.prototype.bitCount = bnBitCount; - BigInteger.prototype.testBit = bnTestBit; - BigInteger.prototype.setBit = bnSetBit; - BigInteger.prototype.clearBit = bnClearBit; - BigInteger.prototype.flipBit = bnFlipBit; - BigInteger.prototype.add = bnAdd; - BigInteger.prototype.subtract = bnSubtract; - BigInteger.prototype.multiply = bnMultiply; - BigInteger.prototype.divide = bnDivide; - BigInteger.prototype.remainder = bnRemainder; - BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; - BigInteger.prototype.modPow = bnModPow; - BigInteger.prototype.modInverse = bnModInverse; - BigInteger.prototype.pow = bnPow; - BigInteger.prototype.gcd = bnGCD; - BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - - // JSBN-specific extension - BigInteger.prototype.square = bnSquare; - - // Expose the Barrett function - BigInteger.prototype.Barrett = Barrett - - // BigInteger interfaces not implemented in jsbn: - - // BigInteger(int signum, byte[] magnitude) - // double doubleValue() - // float floatValue() - // int hashCode() - // long longValue() - // static BigInteger valueOf(long val) - - // Random number generator - requires a PRNG backend, e.g. prng4.js - - // For best results, put code like - // - // in your main HTML document. - - var rng_state; - var rng_pool; - var rng_pptr; - - // Mix in a 32-bit integer into the pool - function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; - } - - // Mix in the current time (w/milliseconds) into the pool - function rng_seed_time() { - rng_seed_int(new Date().getTime()); - } - - // Initialize the pool with junk if needed. - if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(typeof window !== "undefined" && window.crypto) { - if (window.crypto.getRandomValues) { - // Use webcrypto if available - var ua = new Uint8Array(32); - window.crypto.getRandomValues(ua); - for(t = 0; t < 32; ++t) - rng_pool[rng_pptr++] = ua[t]; - } - else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); - } - - function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); - } - - function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); - } - - function SecureRandom() {} - - SecureRandom.prototype.nextBytes = rng_get_bytes; - - // prng4.js - uses Arcfour as a PRNG - - function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); - } - - // Initialize arcfour context from key, an array of ints, each from [0..255] - function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; - } - - function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; - } - - Arcfour.prototype.init = ARC4init; - Arcfour.prototype.next = ARC4next; - - // Plug in your RNG constructor here - function prng_newstate() { - return new Arcfour(); - } - - // Pool size must be a multiple of 4 and greater than 32. - // An array of bytes the size of the pool will be passed to init() - var rng_psize = 256; - - if (typeof exports !== 'undefined') { - exports = module.exports = { - BigInteger: BigInteger, - SecureRandom: SecureRandom, - }; - } else { - this.BigInteger = BigInteger; - this.SecureRandom = SecureRandom; - } - -}).call(this); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json deleted file mode 100644 index ffac6c28..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/jsbn/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "jsbn", - "version": "0.1.0", - "description": "The jsbn library is a fast, portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.", - "main": "index.js", - "scripts": { - "test": "mocha test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/andyperlitch/jsbn.git" - }, - "keywords": [ - "biginteger", - "bignumber", - "big", - "integer" - ], - "author": { - "name": "Tom Wu" - }, - "license": "BSD", - "gitHead": "148a967b112806e63ddeeed78ee7938eef74c84a", - "bugs": { - "url": "https://github.com/andyperlitch/jsbn/issues" - }, - "homepage": "https://github.com/andyperlitch/jsbn", - "_id": "jsbn@0.1.0", - "_shasum": "650987da0dd74f4ebf5a11377a2aa2d273e97dfd", - "_from": "jsbn@>=0.1.0 <0.2.0", - "_npmVersion": "2.7.4", - "_nodeVersion": "0.12.2", - "_npmUser": { - "name": "andyperlitch", - "email": "andyperlitch@gmail.com" - }, - "dist": { - "shasum": "650987da0dd74f4ebf5a11377a2aa2d273e97dfd", - "tarball": "http://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "maintainers": [ - { - "name": "andyperlitch", - "email": "andyperlitch@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/.npmignore deleted file mode 100644 index 7d98dcbd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.eslintrc -.travis.yml -bower.json -test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md deleted file mode 100644 index 77c69bd5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/CHANGELOG.md +++ /dev/null @@ -1,128 +0,0 @@ -TweetNaCl.js Changelog -====================== - - -v0.13.2 -------- - -* Fixed undefined variable bug in fast version of Poly1305. No worries, this - bug was *never* triggered. - -* Specified CC0 public domain dedication. - -* Updated development dependencies. - - -v0.13.1 -------- - -* Exclude `crypto` and `buffer` modules from browserify builds. - - -v0.13.0 -------- - -* Made `nacl-fast` the default version in NPM package. Now - `require("tweetnacl")` will use fast version; to get the original version, - use `require("tweetnacl/nacl.js")`. - -* Cleanup temporary array after generating random bytes. - - -v0.12.2 -------- - -* Improved performance of curve operations, making `nacl.scalarMult`, `nacl.box`, - `nacl.sign` and related functions up to 3x faster in `nacl-fast` version. - - -v0.12.1 -------- - -* Significantly improved performance of Salsa20 (~1.5x faster) and - Poly1305 (~3.5x faster) in `nacl-fast` version. - - -v0.12.0 -------- - -* Instead of using the given secret key directly, TweetNaCl.js now copies it to - a new array in `nacl.box.keyPair.fromSecretKey` and - `nacl.sign.keyPair.fromSecretKey`. - - -v0.11.2 -------- - -* Added new constant: `nacl.sign.seedLength`. - - -v0.11.1 -------- - -* Even faster hash for both short and long inputs (in `nacl-fast`). - - -v0.11.0 -------- - -* Implement `nacl.sign.keyPair.fromSeed` to enable creation of sign key pairs - deterministically from a 32-byte seed. (It behaves like - [libsodium's](http://doc.libsodium.org/public-key_cryptography/public-key_signatures.html) - `crypto_sign_seed_keypair`: the seed becomes a secret part of the secret key.) - -* Fast version now has an improved hash implementation that is 2x-5x faster. - -* Fixed benchmarks, which may have produced incorrect measurements. - - -v0.10.1 -------- - -* Exported undocumented `nacl.lowlevel.crypto_core_hsalsa20`. - - -v0.10.0 -------- - -* **Signature API breaking change!** `nacl.sign` and `nacl.sign.open` now deal - with signed messages, and new `nacl.sign.detached` and - `nacl.sign.detached.verify` are available. - - Previously, `nacl.sign` returned a signature, and `nacl.sign.open` accepted a - message and "detached" signature. This was unlike NaCl's API, which dealt with - signed messages (concatenation of signature and message). - - The new API is: - - nacl.sign(message, secretKey) -> signedMessage - nacl.sign.open(signedMessage, publicKey) -> message | null - - Since detached signatures are common, two new API functions were introduced: - - nacl.sign.detached(message, secretKey) -> signature - nacl.sign.detached.verify(message, signature, publicKey) -> true | false - - (Note that it's `verify`, not `open`, and it returns a boolean value, unlike - `open`, which returns an "unsigned" message.) - -* NPM package now comes without `test` directory to keep it small. - - -v0.9.2 ------- - -* Improved documentation. -* Fast version: increased theoretical message size limit from 2^32-1 to 2^52 - bytes in Poly1305 (and thus, secretbox and box). However this has no impact - in practice since JavaScript arrays or ArrayBuffers are limited to 32-bit - indexes, and most implementations won't allocate more than a gigabyte or so. - (Obviously, there are no tests for the correctness of implementation.) Also, - it's not recommended to use messages that large without splitting them into - smaller packets anyway. - - -v0.9.1 ------- - -* Initial release diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md deleted file mode 100644 index c40721d5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/README.md +++ /dev/null @@ -1,463 +0,0 @@ -TweetNaCl.js -============ - -Port of [TweetNaCl](http://tweetnacl.cr.yp.to) / [NaCl](http://nacl.cr.yp.to/) -to JavaScript for modern browsers and Node.js. Public domain. - -[![Build Status](https://travis-ci.org/dchest/tweetnacl-js.svg?branch=master) -](https://travis-ci.org/dchest/tweetnacl-js) - -[Demo](https://dchest.github.io/tweetnacl-js/) - -**:warning: Beta version. The library is stable and API is frozen, however -it has not been independently reviewed. If you can help reviewing it, please -[contact me](mailto:dmitry@codingrobots.com).** - -Documentation -============= - -* [Overview](#overview) -* [Installation](#installation) -* [Usage](#usage) - * [Public-key authenticated encryption (box)](#public-key-authenticated-encryption-box) - * [Secret-key authenticated encryption (secretbox)](#secret-key-authenticated-encryption-secretbox) - * [Scalar multiplication](#scalar-multiplication) - * [Signatures](#signatures) - * [Hashing](#hashing) - * [Random bytes generation](#random-bytes-generation) - * [Constant-time comparison](#constant-time-comparison) - * [Utilities](#utilities) -* [Examples](#examples) -* [System requirements](#system-requirements) -* [Development and testing](#development-and-testing) -* [Contributors](#contributors) -* [Who uses it](#who-uses-it) - - -Overview --------- - -The primary goal of this project is to produce a translation of TweetNaCl to -JavaScript which is as close as possible to the original C implementation, plus -a thin layer of idiomatic high-level API on top of it. - -There are two versions, you can use either of them: - -* `nacl.js` is the port of TweetNaCl with minimum differences from the - original + high-level API. - -* `nacl-fast.js` is like `nacl.js`, but with some functions replaced with - faster versions. - - -Installation ------------- - -You can install TweetNaCl.is via a package manager: - -[Bower](http://bower.io): - - $ bower install tweetnacl - -[NPM](https://www.npmjs.org/): - - $ npm install tweetnacl - -or [download source code](https://github.com/dchest/tweetnacl-js/releases). - - -Usage ------- - -All API functions accept and return bytes as `Uint8Array`s. If you need to -encode or decode strings, use functions from `nacl.util` namespace. - -### Public-key authenticated encryption (box) - -Implements *curve25519-xsalsa20-poly1305*. - -#### nacl.box.keyPair() - -Generates a new random key pair for box and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 32-byte secret key - } - - -#### nacl.box.keyPair.fromSecretKey(secretKey) - -Returns a key pair for box with public key corresponding to the given secret -key. - -#### nacl.box(message, nonce, theirPublicKey, mySecretKey) - -Encrypt and authenticates message using peer's public key, our secret key, and -the given nonce, which must be unique for each distinct message for a key pair. - -Returns an encrypted and authenticated message, which is -`nacl.box.overheadLength` longer than the original message. - -#### nacl.box.open(box, nonce, theirPublicKey, mySecretKey) - -Authenticates and decrypts the given box with peer's public key, our secret -key, and the given nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.box.before(theirPublicKey, mySecretKey) - -Returns a precomputed shared key which can be used in `nacl.box.after` and -`nacl.box.open.after`. - -#### nacl.box.after(message, nonce, sharedKey) - -Same as `nacl.box`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.open.after(box, nonce, sharedKey) - -Same as `nacl.box.open`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.publicKeyLength = 32 - -Length of public key in bytes. - -#### nacl.box.secretKeyLength = 32 - -Length of secret key in bytes. - -#### nacl.box.sharedKeyLength = 32 - -Length of precomputed shared key in bytes. - -#### nacl.box.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.box.overheadLength = 16 - -Length of overhead added to box compared to original message. - - -### Secret-key authenticated encryption (secretbox) - -Implements *xsalsa20-poly1305*. - -#### nacl.secretbox(message, nonce, key) - -Encrypt and authenticates message using the key and the nonce. The nonce must -be unique for each distinct message for this key. - -Returns an encrypted and authenticated message, which is -`nacl.secretbox.overheadLength` longer than the original message. - -#### nacl.secretbox.open(box, nonce, key) - -Authenticates and decrypts the given secret box using the key and the nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.secretbox.keyLength = 32 - -Length of key in bytes. - -#### nacl.secretbox.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.secretbox.overheadLength = 16 - -Length of overhead added to secret box compared to original message. - - -### Scalar multiplication - -Implements *curve25519*. - -#### nacl.scalarMult(n, p) - -Multiplies an integer `n` by a group element `p` and returns the resulting -group element. - -#### nacl.scalarMult.base(n) - -Multiplies an integer `n` by a standard group element and returns the resulting -group element. - -#### nacl.scalarMult.scalarLength = 32 - -Length of scalar in bytes. - -#### nacl.scalarMult.groupElementLength = 32 - -Length of group element in bytes. - - -### Signatures - -Implements [ed25519](http://ed25519.cr.yp.to). - -#### nacl.sign.keyPair() - -Generates new random key pair for signing and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 64-byte secret key - } - -#### nacl.sign.keyPair.fromSecretKey(secretKey) - -Returns a signing key pair with public key corresponding to the given -64-byte secret key. The secret key must have been generated by -`nacl.sign.keyPair` or `nacl.sign.keyPair.fromSeed`. - -#### nacl.sign.keyPair.fromSeed(seed) - -Returns a new signing key pair generated deterministically from a 32-byte seed. -The seed must contain enough entropy to be secure. This method is not -recommended for general use: instead, use `nacl.sign.keyPair` to generate a new -key pair from a random seed. - -#### nacl.sign(message, secretKey) - -Signs the message using the secret key and returns a signed message. - -#### nacl.sign.open(signedMessage, publicKey) - -Verifies the signed message and returns the message without signature. - -Returns `null` if verification failed. - -#### nacl.sign.detached(message, secretKey) - -Signs the message using the secret key and returns a signature. - -#### nacl.sign.detached.verify(message, signature, publicKey) - -Verifies the signature for the message and returns `true` if verification -succeeded or `false` if it failed. - -#### nacl.sign.publicKeyLength = 32 - -Length of signing public key in bytes. - -#### nacl.sign.secretKeyLength = 64 - -Length of signing secret key in bytes. - -#### nacl.sign.seedLength = 32 - -Length of seed for `nacl.sign.keyPair.fromSeed` in bytes. - -#### nacl.sign.signatureLength = 64 - -Length of signature in bytes. - - -### Hashing - -Implements *SHA-512*. - -#### nacl.hash(message) - -Returns SHA-512 hash of the message. - -#### nacl.hash.hashLength = 64 - -Length of hash in bytes. - - -### Random bytes generation - -#### nacl.randomBytes(length) - -Returns a `Uint8Array` of the given length containing random bytes of -cryptographic quality. - -**Implementation note** - -TweetNaCl.js uses the following methods to generate random bytes, -depending on the platform it runs on: - -* `window.crypto.getRandomValues` (WebCrypto standard) -* `window.msCrypto.getRandomValues` (Internet Explorer 11) -* `crypto.randomBytes` (Node.js) - -Note that browsers are required to throw `QuotaExceededError` exception if -requested `length` is more than 65536, so do not ask for more than 65536 bytes -in *one call* (multiple calls to get as many bytes as you like are okay: -browsers can generate infinite amount of random bytes without any bad -consequences). - -If the platform doesn't provide a suitable PRNG, the following functions, -which require random numbers, will throw exception: - -* `nacl.randomBytes` -* `nacl.box.keyPair` -* `nacl.sign.keyPair` - -Other functions are deterministic and will continue working. - -If a platform you are targeting doesn't implement secure random number -generator, but you somehow have a cryptographically-strong source of entropy -(not `Math.random`!), and you know what you are doing, you can plug it into -TweetNaCl.js like this: - - nacl.setPRNG(function(x, n) { - // ... copy n random bytes into x ... - }); - -Note that `nacl.setPRNG` *completely replaces* internal random byte generator -with the one provided. - - -### Constant-time comparison - -#### nacl.verify(x, y) - -Compares `x` and `y` in constant time and returns `true` if their lengths are -non-zero and equal, and their contents are equal. - -Returns `false` if either of the arguments has zero length, or arguments have -different lengths, or their contents differ. - - -### Utilities - -Encoding/decoding functions are provided for convenience. They are correct, -however their performance and wide compatibility with uncommon runtimes is not -something that is considered important compared to the simplicity and size of -implementation. You can use third-party libraries if you need to. - -#### nacl.util.decodeUTF8(string) - -Decodes string and returns `Uint8Array` of bytes. - -#### nacl.util.encodeUTF8(array) - -Encodes `Uint8Array` or `Array` of bytes into string. - -#### nacl.util.decodeBase64(string) - -Decodes Base-64 encoded string and returns `Uint8Array` of bytes. - -#### nacl.util.encodeBase64(array) - -Encodes `Uint8Array` or `Array` of bytes into string using Base-64 encoding. - - -System requirements -------------------- - -TweetNaCl.js supports modern browsers that have a cryptographically secure -pseudorandom number generator and typed arrays, including the latest versions -of: - -* Chrome -* Firefox -* Safari (Mac, iOS) -* Internet Explorer 11 - -Other systems: - -* Node.js (we test on 0.10 and later) - - -Development and testing ------------------------- - -Install NPM modules needed for development: - - $ npm install - -To build minified versions: - - $ npm run build - -Tests use minified version, so make sure to rebuild it every time you change -`nacl.js` or `nacl-fast.js`. - -### Testing - -To run tests in Node.js: - - $ npm test - -By default all tests described here work on `nacl.min.js`. To test other -versions, set environment variable `NACL_SRC` to the file name you want to test. -For example, the following command will test fast minified version: - - $ NACL_SRC=nacl-fast.min.js npm test - -To run full suite of tests in Node.js, including comparing outputs of -JavaScript port to outputs of the original C version: - - $ npm run testall - -To prepare tests for browsers: - - $ npm run browser - -and then open `test/browser/test.html` (or `test/browser/test-fast.html`) to -run them. - -To run headless browser tests with `testling`: - - $ npm run testling - -(If you get `Error: spawn ENOENT`, install *xvfb*: `sudo apt-get install xvfb`.) - -### Benchmarking - -To run benchmarks in Node.js: - - $ npm run bench - $ NACL_SRC=nacl-fast.min.js npm run bench - -To run benchmarks in a browser, open `test/benchmark/bench.html` (or -`test/benchmark/bench-fast.html`). - - -Contributors ------------- - -JavaScript port: - - * [Dmitry Chestnykh](http://github.com/dchest) (ported xsalsa20, poly1305, curve25519) - * [Devi Mandiri](https://github.com/devi) (ported curve25519, ed25519, sha512) - -Original authors of [NaCl](http://nacl.cr.yp.to), [TweetNaCl](http://tweetnacl.cr.yp.to) -and [Poly1305-donna](https://github.com/floodyberry/poly1305-donna) -(who are *not* responsible for any errors in this implementation): - - * [Daniel J. Bernstein](http://cr.yp.to/djb.html) - * Wesley Janssen - * [Tanja Lange](http://hyperelliptic.org/tanja) - * [Peter Schwabe](http://www.cryptojedi.org/users/peter/) - * [Matthew Dempsky](https://github.com/mdempsky) - * [Andrew Moon](https://github.com/floodyberry) - -Contributors have dedicated their work to the public domain. - -This software is distributed without any warranty. - - -Third-party libraries based on TweetNaCl.js -------------------------------------------- - -* [forward-secrecy](https://github.com/alax/forward-secrecy) — Axolotl ratchet implementation -* [nacl-stream](https://github.com/dchest/nacl-stream-js) - streaming encryption -* [tweetnacl-auth-js](https://github.com/dchest/tweetnacl-auth-js) — implementation of [`crypto_auth`](http://nacl.cr.yp.to/auth.html) - - -Who uses it ------------ - -Some notable users of TweetNaCl.js: - -* [miniLock](http://minilock.io/) -* [Stellar](https://www.stellar.org/) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js deleted file mode 100644 index 6c499584..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.js +++ /dev/null @@ -1,2418 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (g[9] >>> ((2 * 8) - 1)) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.util = {}; - -nacl.util.decodeUTF8 = function(s) { - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; -}; - -nacl.util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); -}; - -nacl.util.encodeBase64 = function(arr) { - if (typeof btoa === 'undefined') { - return (new Buffer(arr)).toString('base64'); - } else { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - } -}; - -nacl.util.decodeBase64 = function(s) { - if (typeof atob === 'undefined') { - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - } else { - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - } -}; - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto; - if (typeof window !== 'undefined') { - // Browser. - if (window.crypto && window.crypto.getRandomValues) { - crypto = window.crypto; // Standard - } else if (window.msCrypto && window.msCrypto.getRandomValues) { - crypto = window.msCrypto; // Internet Explorer 11+ - } - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - crypto.getRandomValues(v); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (window.nacl = window.nacl || {})); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js deleted file mode 100644 index 7072c2af..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl-fast.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(r){"use strict";function t(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function n(r,t,n,e,o){var i,h=0;for(i=0;o>i;i++)h|=r[t+i]^n[e+i];return(1&h-1>>>8)-1}function e(r,t,e,o){return n(r,t,e,o,16)}function o(r,t,e,o){return n(r,t,e,o,32)}function i(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,u=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,c=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,g=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,v=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,b=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,d=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,_=i,U=h,E=a,x=f,M=s,m=u,B=c,S=y,K=l,T=w,Y=p,k=g,L=v,C=b,R=d,z=A,P=0;20>P;P+=2)o=_+L|0,M^=o<<7|o>>>25,o=M+_|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,_^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,C^=o<<9|o>>>23,o=C+T|0,U^=o<<13|o>>>19,o=U+C|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=z+k|0,x^=o<<7|o>>>25,o=x+z|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,z^=o<<18|o>>>14,o=_+x|0,U^=o<<7|o>>>25,o=U+_|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,_^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=z+R|0,L^=o<<7|o>>>25,o=L+z|0,C^=o<<9|o>>>23,o=C+L|0,R^=o<<13|o>>>19,o=R+C|0,z^=o<<18|o>>>14;_=_+i|0,U=U+h|0,E=E+a|0,x=x+f|0,M=M+s|0,m=m+u|0,B=B+c|0,S=S+y|0,K=K+l|0,T=T+w|0,Y=Y+p|0,k=k+g|0,L=L+v|0,C=C+b|0,R=R+d|0,z=z+A|0,r[0]=_>>>0&255,r[1]=_>>>8&255,r[2]=_>>>16&255,r[3]=_>>>24&255,r[4]=U>>>0&255,r[5]=U>>>8&255,r[6]=U>>>16&255,r[7]=U>>>24&255,r[8]=E>>>0&255,r[9]=E>>>8&255,r[10]=E>>>16&255,r[11]=E>>>24&255,r[12]=x>>>0&255,r[13]=x>>>8&255,r[14]=x>>>16&255,r[15]=x>>>24&255,r[16]=M>>>0&255,r[17]=M>>>8&255,r[18]=M>>>16&255,r[19]=M>>>24&255,r[20]=m>>>0&255,r[21]=m>>>8&255,r[22]=m>>>16&255,r[23]=m>>>24&255,r[24]=B>>>0&255,r[25]=B>>>8&255,r[26]=B>>>16&255,r[27]=B>>>24&255,r[28]=S>>>0&255,r[29]=S>>>8&255,r[30]=S>>>16&255,r[31]=S>>>24&255,r[32]=K>>>0&255,r[33]=K>>>8&255,r[34]=K>>>16&255,r[35]=K>>>24&255,r[36]=T>>>0&255,r[37]=T>>>8&255,r[38]=T>>>16&255,r[39]=T>>>24&255,r[40]=Y>>>0&255,r[41]=Y>>>8&255,r[42]=Y>>>16&255,r[43]=Y>>>24&255,r[44]=k>>>0&255,r[45]=k>>>8&255,r[46]=k>>>16&255,r[47]=k>>>24&255,r[48]=L>>>0&255,r[49]=L>>>8&255,r[50]=L>>>16&255,r[51]=L>>>24&255,r[52]=C>>>0&255,r[53]=C>>>8&255,r[54]=C>>>16&255,r[55]=C>>>24&255,r[56]=R>>>0&255,r[57]=R>>>8&255,r[58]=R>>>16&255,r[59]=R>>>24&255,r[60]=z>>>0&255,r[61]=z>>>8&255,r[62]=z>>>16&255,r[63]=z>>>24&255}function h(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,u=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,c=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,g=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,v=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,b=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,d=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,_=i,U=h,E=a,x=f,M=s,m=u,B=c,S=y,K=l,T=w,Y=p,k=g,L=v,C=b,R=d,z=A,P=0;20>P;P+=2)o=_+L|0,M^=o<<7|o>>>25,o=M+_|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,_^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,C^=o<<9|o>>>23,o=C+T|0,U^=o<<13|o>>>19,o=U+C|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=z+k|0,x^=o<<7|o>>>25,o=x+z|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,z^=o<<18|o>>>14,o=_+x|0,U^=o<<7|o>>>25,o=U+_|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,_^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=z+R|0,L^=o<<7|o>>>25,o=L+z|0,C^=o<<9|o>>>23,o=C+L|0,R^=o<<13|o>>>19,o=R+C|0,z^=o<<18|o>>>14;r[0]=_>>>0&255,r[1]=_>>>8&255,r[2]=_>>>16&255,r[3]=_>>>24&255,r[4]=m>>>0&255,r[5]=m>>>8&255,r[6]=m>>>16&255,r[7]=m>>>24&255,r[8]=Y>>>0&255,r[9]=Y>>>8&255,r[10]=Y>>>16&255,r[11]=Y>>>24&255,r[12]=z>>>0&255,r[13]=z>>>8&255,r[14]=z>>>16&255,r[15]=z>>>24&255,r[16]=B>>>0&255,r[17]=B>>>8&255,r[18]=B>>>16&255,r[19]=B>>>24&255,r[20]=S>>>0&255,r[21]=S>>>8&255,r[22]=S>>>16&255,r[23]=S>>>24&255,r[24]=K>>>0&255,r[25]=K>>>8&255,r[26]=K>>>16&255,r[27]=K>>>24&255,r[28]=T>>>0&255,r[29]=T>>>8&255,r[30]=T>>>16&255,r[31]=T>>>24&255}function a(r,t,n,e){i(r,t,n,e)}function f(r,t,n,e){h(r,t,n,e)}function s(r,t,n,e,o,i,h){var f,s,u=new Uint8Array(16),c=new Uint8Array(64);for(s=0;16>s;s++)u[s]=0;for(s=0;8>s;s++)u[s]=i[s];for(;o>=64;){for(a(c,u,h,cr),s=0;64>s;s++)r[t+s]=n[e+s]^c[s];for(f=1,s=8;16>s;s++)f=f+(255&u[s])|0,u[s]=255&f,f>>>=8;o-=64,t+=64,e+=64}if(o>0)for(a(c,u,h,cr),s=0;o>s;s++)r[t+s]=n[e+s]^c[s];return 0}function u(r,t,n,e,o){var i,h,f=new Uint8Array(16),s=new Uint8Array(64);for(h=0;16>h;h++)f[h]=0;for(h=0;8>h;h++)f[h]=e[h];for(;n>=64;){for(a(s,f,o,cr),h=0;64>h;h++)r[t+h]=s[h];for(i=1,h=8;16>h;h++)i=i+(255&f[h])|0,f[h]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(a(s,f,o,cr),h=0;n>h;h++)r[t+h]=s[h];return 0}function c(r,t,n,e,o){var i=new Uint8Array(32);f(i,e,o,cr);for(var h=new Uint8Array(8),a=0;8>a;a++)h[a]=e[a+16];return u(r,t,n,h,i)}function y(r,t,n,e,o,i,h){var a=new Uint8Array(32);f(a,i,h,cr);for(var u=new Uint8Array(8),c=0;8>c;c++)u[c]=i[c+16];return s(r,t,n,e,o,u,a)}function l(r,t,n,e,o,i){var h=new yr(i);return h.update(n,e,o),h.finish(r,t),0}function w(r,t,n,o,i,h){var a=new Uint8Array(16);return l(a,0,n,o,i,h),e(r,t,a,0)}function p(r,t,n,e,o){var i;if(32>n)return-1;for(y(r,0,t,0,n,e,o),l(r,16,r,32,n-32,r),i=0;16>i;i++)r[i]=0;return 0}function g(r,t,n,e,o){var i,h=new Uint8Array(32);if(32>n)return-1;if(c(h,0,32,e,o),0!==w(t,16,t,32,n-32,h))return-1;for(y(r,0,t,0,n,e,o),i=0;32>i;i++)r[i]=0;return 0}function v(r,t){var n;for(n=0;16>n;n++)r[n]=0|t[n]}function b(r){var t,n,e=1;for(t=0;16>t;t++)n=r[t]+e+65535,e=Math.floor(n/65536),r[t]=n-65536*e;r[0]+=e-1+37*(e-1)}function d(r,t,n){for(var e,o=~(n-1),i=0;16>i;i++)e=o&(r[i]^t[i]),r[i]^=e,t[i]^=e}function A(r,t){var n,e,o,i=$(),h=$();for(n=0;16>n;n++)h[n]=t[n];for(b(h),b(h),b(h),e=0;2>e;e++){for(i[0]=h[0]-65517,n=1;15>n;n++)i[n]=h[n]-65535-(i[n-1]>>16&1),i[n-1]&=65535;i[15]=h[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,d(h,i,1-o)}for(n=0;16>n;n++)r[2*n]=255&h[n],r[2*n+1]=h[n]>>8}function _(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return A(n,r),A(e,t),o(n,0,e,0)}function U(r){var t=new Uint8Array(32);return A(t,r),1&t[0]}function E(r,t){var n;for(n=0;16>n;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function x(r,t,n){for(var e=0;16>e;e++)r[e]=t[e]+n[e]}function M(r,t,n){for(var e=0;16>e;e++)r[e]=t[e]-n[e]}function m(r,t,n){var e,o,i=0,h=0,a=0,f=0,s=0,u=0,c=0,y=0,l=0,w=0,p=0,g=0,v=0,b=0,d=0,A=0,_=0,U=0,E=0,x=0,M=0,m=0,B=0,S=0,K=0,T=0,Y=0,k=0,L=0,C=0,R=0,z=n[0],P=n[1],O=n[2],N=n[3],F=n[4],I=n[5],j=n[6],G=n[7],Z=n[8],V=n[9],q=n[10],X=n[11],D=n[12],H=n[13],J=n[14],Q=n[15];e=t[0],i+=e*z,h+=e*P,a+=e*O,f+=e*N,s+=e*F,u+=e*I,c+=e*j,y+=e*G,l+=e*Z,w+=e*V,p+=e*q,g+=e*X,v+=e*D,b+=e*H,d+=e*J,A+=e*Q,e=t[1],h+=e*z,a+=e*P,f+=e*O,s+=e*N,u+=e*F,c+=e*I,y+=e*j,l+=e*G,w+=e*Z,p+=e*V,g+=e*q,v+=e*X,b+=e*D,d+=e*H,A+=e*J,_+=e*Q,e=t[2],a+=e*z,f+=e*P,s+=e*O,u+=e*N,c+=e*F,y+=e*I,l+=e*j,w+=e*G,p+=e*Z,g+=e*V,v+=e*q,b+=e*X,d+=e*D,A+=e*H,_+=e*J,U+=e*Q,e=t[3],f+=e*z,s+=e*P,u+=e*O,c+=e*N,y+=e*F,l+=e*I,w+=e*j,p+=e*G,g+=e*Z,v+=e*V,b+=e*q,d+=e*X,A+=e*D,_+=e*H,U+=e*J,E+=e*Q,e=t[4],s+=e*z,u+=e*P,c+=e*O,y+=e*N,l+=e*F,w+=e*I,p+=e*j,g+=e*G,v+=e*Z,b+=e*V,d+=e*q,A+=e*X,_+=e*D,U+=e*H,E+=e*J,x+=e*Q,e=t[5],u+=e*z,c+=e*P,y+=e*O,l+=e*N,w+=e*F,p+=e*I,g+=e*j,v+=e*G,b+=e*Z,d+=e*V,A+=e*q,_+=e*X,U+=e*D,E+=e*H,x+=e*J,M+=e*Q,e=t[6],c+=e*z,y+=e*P,l+=e*O,w+=e*N,p+=e*F,g+=e*I,v+=e*j,b+=e*G,d+=e*Z,A+=e*V,_+=e*q,U+=e*X,E+=e*D,x+=e*H,M+=e*J,m+=e*Q,e=t[7],y+=e*z,l+=e*P,w+=e*O,p+=e*N,g+=e*F,v+=e*I,b+=e*j,d+=e*G,A+=e*Z,_+=e*V,U+=e*q,E+=e*X,x+=e*D,M+=e*H,m+=e*J,B+=e*Q,e=t[8],l+=e*z,w+=e*P,p+=e*O,g+=e*N,v+=e*F,b+=e*I,d+=e*j,A+=e*G,_+=e*Z,U+=e*V,E+=e*q,x+=e*X,M+=e*D,m+=e*H,B+=e*J,S+=e*Q,e=t[9],w+=e*z,p+=e*P,g+=e*O,v+=e*N,b+=e*F,d+=e*I,A+=e*j,_+=e*G,U+=e*Z,E+=e*V,x+=e*q,M+=e*X,m+=e*D,B+=e*H,S+=e*J,K+=e*Q,e=t[10],p+=e*z,g+=e*P,v+=e*O,b+=e*N,d+=e*F,A+=e*I,_+=e*j,U+=e*G,E+=e*Z,x+=e*V,M+=e*q,m+=e*X,B+=e*D,S+=e*H,K+=e*J,T+=e*Q,e=t[11],g+=e*z,v+=e*P,b+=e*O,d+=e*N,A+=e*F,_+=e*I,U+=e*j,E+=e*G,x+=e*Z,M+=e*V,m+=e*q,B+=e*X,S+=e*D,K+=e*H,T+=e*J,Y+=e*Q,e=t[12],v+=e*z,b+=e*P,d+=e*O,A+=e*N,_+=e*F,U+=e*I,E+=e*j,x+=e*G,M+=e*Z,m+=e*V,B+=e*q,S+=e*X,K+=e*D,T+=e*H,Y+=e*J,k+=e*Q,e=t[13],b+=e*z,d+=e*P,A+=e*O,_+=e*N,U+=e*F,E+=e*I,x+=e*j,M+=e*G,m+=e*Z,B+=e*V,S+=e*q,K+=e*X,T+=e*D,Y+=e*H,k+=e*J,L+=e*Q,e=t[14],d+=e*z,A+=e*P,_+=e*O,U+=e*N,E+=e*F,x+=e*I,M+=e*j,m+=e*G,B+=e*Z,S+=e*V,K+=e*q,T+=e*X,Y+=e*D,k+=e*H,L+=e*J,C+=e*Q,e=t[15],A+=e*z,_+=e*P,U+=e*O,E+=e*N,x+=e*F,M+=e*I,m+=e*j,B+=e*G,S+=e*Z,K+=e*V,T+=e*q,Y+=e*X,k+=e*D,L+=e*H,C+=e*J,R+=e*Q,i+=38*_,h+=38*U,a+=38*E,f+=38*x,s+=38*M,u+=38*m,c+=38*B,y+=38*S,l+=38*K,w+=38*T,p+=38*Y,g+=38*k,v+=38*L,b+=38*C,d+=38*R,o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=d+o+65535,o=Math.floor(e/65536),d=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=d+o+65535,o=Math.floor(e/65536),d=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),r[0]=i,r[1]=h,r[2]=a,r[3]=f,r[4]=s,r[5]=u,r[6]=c,r[7]=y,r[8]=l,r[9]=w,r[10]=p,r[11]=g,r[12]=v,r[13]=b,r[14]=d,r[15]=A}function B(r,t){m(r,t,t)}function S(r,t){var n,e=$();for(n=0;16>n;n++)e[n]=t[n];for(n=253;n>=0;n--)B(e,e),2!==n&&4!==n&&m(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function K(r,t){var n,e=$();for(n=0;16>n;n++)e[n]=t[n];for(n=250;n>=0;n--)B(e,e),1!==n&&m(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function T(r,t,n){var e,o,i=new Uint8Array(32),h=new Float64Array(80),a=$(),f=$(),s=$(),u=$(),c=$(),y=$();for(o=0;31>o;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,E(h,n),o=0;16>o;o++)f[o]=h[o],u[o]=a[o]=s[o]=0;for(a[0]=u[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,d(a,f,e),d(s,u,e),x(c,a,s),M(a,a,s),x(s,f,u),M(f,f,u),B(u,c),B(y,a),m(a,s,a),m(s,f,c),x(c,a,s),M(a,a,s),B(f,a),M(s,u,y),m(a,s,ir),x(a,a,u),m(s,s,a),m(a,u,y),m(u,f,h),B(f,c),d(a,f,e),d(s,u,e);for(o=0;16>o;o++)h[o+16]=a[o],h[o+32]=s[o],h[o+48]=f[o],h[o+64]=u[o];var l=h.subarray(32),w=h.subarray(16);return S(l,l),m(w,w,l),A(r,w),0}function Y(r,t){return T(r,t,nr)}function k(r,t){return rr(t,32),Y(r,t)}function L(r,t,n){var e=new Uint8Array(32);return T(e,n,t),f(r,tr,e,cr)}function C(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),lr(r,t,n,e,h)}function R(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),wr(r,t,n,e,h)}function z(r,t,n,e){for(var o,i,h,a,f,s,u,c,y,l,w,p,g,v,b,d,A,_,U,E,x,M,m,B,S,K,T=new Int32Array(16),Y=new Int32Array(16),k=r[0],L=r[1],C=r[2],R=r[3],z=r[4],P=r[5],O=r[6],N=r[7],F=t[0],I=t[1],j=t[2],G=t[3],Z=t[4],V=t[5],q=t[6],X=t[7],D=0;e>=128;){for(U=0;16>U;U++)E=8*U+D,T[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],Y[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;80>U;U++)if(o=k,i=L,h=C,a=R,f=z,s=P,u=O,c=N,y=F,l=I,w=j,p=G,g=Z,v=V,b=q,d=X,x=N,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(z>>>14|Z<<18)^(z>>>18|Z<<14)^(Z>>>9|z<<23),M=(Z>>>14|z<<18)^(Z>>>18|z<<14)^(z>>>9|Z<<23),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=z&P^~z&O,M=Z&V^~Z&q,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=pr[2*U],M=pr[2*U+1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=T[U%16],M=Y[U%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,A=65535&S|K<<16,_=65535&m|B<<16,x=A,M=_,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(k>>>28|F<<4)^(F>>>2|k<<30)^(F>>>7|k<<25),M=(F>>>28|k<<4)^(k>>>2|F<<30)^(k>>>7|F<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=k&L^k&C^L&C,M=F&I^F&j^I&j,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,c=65535&S|K<<16,d=65535&m|B<<16,x=a,M=p,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=A,M=_,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,a=65535&S|K<<16,p=65535&m|B<<16,L=o,C=i,R=h,z=a,P=f,O=s,N=u,k=c,I=y,j=l,G=w,Z=p,V=g,q=v,X=b,F=d,U%16===15)for(E=0;16>E;E++)x=T[E],M=Y[E],m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=T[(E+9)%16],M=Y[(E+9)%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+1)%16],_=Y[(E+1)%16],x=(A>>>1|_<<31)^(A>>>8|_<<24)^A>>>7,M=(_>>>1|A<<31)^(_>>>8|A<<24)^(_>>>7|A<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+14)%16],_=Y[(E+14)%16],x=(A>>>19|_<<13)^(_>>>29|A<<3)^A>>>6,M=(_>>>19|A<<13)^(A>>>29|_<<3)^(_>>>6|A<<26),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,T[E]=65535&S|K<<16,Y[E]=65535&m|B<<16;x=k,M=F,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[0],M=t[0],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[0]=k=65535&S|K<<16,t[0]=F=65535&m|B<<16,x=L,M=I,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[1],M=t[1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[1]=L=65535&S|K<<16,t[1]=I=65535&m|B<<16,x=C,M=j,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[2],M=t[2],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[2]=C=65535&S|K<<16,t[2]=j=65535&m|B<<16,x=R,M=G,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[3],M=t[3],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[3]=R=65535&S|K<<16,t[3]=G=65535&m|B<<16,x=z,M=Z,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[4],M=t[4],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[4]=z=65535&S|K<<16,t[4]=Z=65535&m|B<<16,x=P,M=V,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[5],M=t[5],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[5]=P=65535&S|K<<16,t[5]=V=65535&m|B<<16,x=O,M=q,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[6],M=t[6],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[6]=O=65535&S|K<<16,t[6]=q=65535&m|B<<16,x=N,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[7],M=t[7],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[7]=N=65535&S|K<<16,t[7]=X=65535&m|B<<16,D+=128,e-=128}return e}function P(r,n,e){var o,i=new Int32Array(8),h=new Int32Array(8),a=new Uint8Array(256),f=e;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,z(i,h,n,e),e%=128,o=0;e>o;o++)a[o]=n[f-e+o];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,t(a,e-8,f/536870912|0,f<<3),z(i,h,a,e),o=0;8>o;o++)t(r,8*o,i[o],h[o]);return 0}function O(r,t){var n=$(),e=$(),o=$(),i=$(),h=$(),a=$(),f=$(),s=$(),u=$();M(n,r[1],r[0]),M(u,t[1],t[0]),m(n,n,u),x(e,r[0],r[1]),x(u,t[0],t[1]),m(e,e,u),m(o,r[3],t[3]),m(o,o,ar),m(i,r[2],t[2]),x(i,i,i),M(h,e,n),M(a,i,o),x(f,i,o),x(s,e,n),m(r[0],h,a),m(r[1],s,f),m(r[2],f,a),m(r[3],h,s)}function N(r,t,n){var e;for(e=0;4>e;e++)d(r[e],t[e],n)}function F(r,t){var n=$(),e=$(),o=$();S(o,t[2]),m(n,t[0],o),m(e,t[1],o),A(r,e),r[31]^=U(n)<<7}function I(r,t,n){var e,o;for(v(r[0],er),v(r[1],or),v(r[2],or),v(r[3],er),o=255;o>=0;--o)e=n[o/8|0]>>(7&o)&1,N(r,t,e),O(t,r),O(r,r),N(r,t,e)}function j(r,t){var n=[$(),$(),$(),$()];v(n[0],fr),v(n[1],sr),v(n[2],or),m(n[3],fr,sr),I(r,n,t)}function G(r,t,n){var e,o=new Uint8Array(64),i=[$(),$(),$(),$()];for(n||rr(t,32),P(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,j(i,o),F(r,i),e=0;32>e;e++)t[e+32]=r[e];return 0}function Z(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;i>o;++o)t[o]+=n-16*t[e]*gr[o-(e-32)],n=t[o]+128>>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;32>o;o++)t[o]+=n-(t[31]>>4)*gr[o],n=t[o]>>8,t[o]&=255;for(o=0;32>o;o++)t[o]-=n*gr[o];for(e=0;32>e;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function V(r){var t,n=new Float64Array(64);for(t=0;64>t;t++)n[t]=r[t];for(t=0;64>t;t++)r[t]=0;Z(r,n)}function q(r,t,n,e){var o,i,h=new Uint8Array(64),a=new Uint8Array(64),f=new Uint8Array(64),s=new Float64Array(64),u=[$(),$(),$(),$()];P(h,e,32),h[0]&=248,h[31]&=127,h[31]|=64;var c=n+64;for(o=0;n>o;o++)r[64+o]=t[o];for(o=0;32>o;o++)r[32+o]=h[32+o];for(P(f,r.subarray(32),n+32),V(f),j(u,f),F(r,u),o=32;64>o;o++)r[o]=e[o];for(P(a,r,n+64),V(a),o=0;64>o;o++)s[o]=0;for(o=0;32>o;o++)s[o]=f[o];for(o=0;32>o;o++)for(i=0;32>i;i++)s[o+i]+=a[o]*h[i];return Z(r.subarray(32),s),c}function X(r,t){var n=$(),e=$(),o=$(),i=$(),h=$(),a=$(),f=$();return v(r[2],or),E(r[1],t),B(o,r[1]),m(i,o,hr),M(o,o,r[2]),x(i,r[2],i),B(h,i),B(a,h),m(f,a,h),m(n,f,o),m(n,n,i),K(n,n),m(n,n,o),m(n,n,i),m(n,n,i),m(r[0],n,i),B(e,r[0]),m(e,e,i),_(e,o)&&m(r[0],r[0],ur),B(e,r[0]),m(e,e,i),_(e,o)?-1:(U(r[0])===t[31]>>7&&M(r[0],er,r[0]),m(r[3],r[0],r[1]),0)}function D(r,t,n,e){var i,h,a=new Uint8Array(32),f=new Uint8Array(64),s=[$(),$(),$(),$()],u=[$(),$(),$(),$()];if(h=-1,64>n)return-1;if(X(u,e))return-1;for(i=0;n>i;i++)r[i]=t[i];for(i=0;32>i;i++)r[i+32]=e[i];if(P(f,r,n),V(f),I(s,u,f),j(u,t.subarray(32)),O(s,u),F(a,s),n-=64,o(t,0,a,0)){for(i=0;n>i;i++)r[i]=0;return-1}for(i=0;n>i;i++)r[i]=t[i+64];return h=n}function H(r,t){if(r.length!==vr)throw new Error("bad key size");if(t.length!==br)throw new Error("bad nonce size")}function J(r,t){if(r.length!==Er)throw new Error("bad public key size");if(t.length!==xr)throw new Error("bad secret key size")}function Q(){var r,t;for(t=0;t>>13|n<<3),e=255&r[4]|(255&r[5])<<8,this.r[2]=7939&(n>>>10|e<<6),o=255&r[6]|(255&r[7])<<8,this.r[3]=8191&(e>>>7|o<<9),i=255&r[8]|(255&r[9])<<8,this.r[4]=255&(o>>>4|i<<12),this.r[5]=i>>>1&8190,h=255&r[10]|(255&r[11])<<8,this.r[6]=8191&(i>>>14|h<<2),a=255&r[12]|(255&r[13])<<8,this.r[7]=8065&(h>>>11|a<<5),f=255&r[14]|(255&r[15])<<8,this.r[8]=8191&(a>>>8|f<<8),this.r[9]=f>>>5&127,this.pad[0]=255&r[16]|(255&r[17])<<8,this.pad[1]=255&r[18]|(255&r[19])<<8,this.pad[2]=255&r[20]|(255&r[21])<<8,this.pad[3]=255&r[22]|(255&r[23])<<8,this.pad[4]=255&r[24]|(255&r[25])<<8,this.pad[5]=255&r[26]|(255&r[27])<<8,this.pad[6]=255&r[28]|(255&r[29])<<8,this.pad[7]=255&r[30]|(255&r[31])<<8};yr.prototype.blocks=function(r,t,n){for(var e,o,i,h,a,f,s,u,c,y,l,w,p,g,v,b,d,A,_,U=this.fin?0:2048,E=this.h[0],x=this.h[1],M=this.h[2],m=this.h[3],B=this.h[4],S=this.h[5],K=this.h[6],T=this.h[7],Y=this.h[8],k=this.h[9],L=this.r[0],C=this.r[1],R=this.r[2],z=this.r[3],P=this.r[4],O=this.r[5],N=this.r[6],F=this.r[7],I=this.r[8],j=this.r[9];n>=16;)e=255&r[t+0]|(255&r[t+1])<<8,E+=8191&e,o=255&r[t+2]|(255&r[t+3])<<8,x+=8191&(e>>>13|o<<3),i=255&r[t+4]|(255&r[t+5])<<8,M+=8191&(o>>>10|i<<6),h=255&r[t+6]|(255&r[t+7])<<8,m+=8191&(i>>>7|h<<9),a=255&r[t+8]|(255&r[t+9])<<8,B+=8191&(h>>>4|a<<12),S+=a>>>1&8191,f=255&r[t+10]|(255&r[t+11])<<8,K+=8191&(a>>>14|f<<2),s=255&r[t+12]|(255&r[t+13])<<8,T+=8191&(f>>>11|s<<5),u=255&r[t+14]|(255&r[t+15])<<8,Y+=8191&(s>>>8|u<<8),k+=u>>>5|U,c=0,y=c,y+=E*L,y+=5*x*j,y+=5*M*I,y+=5*m*F,y+=5*B*N,c=y>>>13,y&=8191,y+=5*S*O,y+=5*K*P,y+=5*T*z,y+=5*Y*R,y+=5*k*C,c+=y>>>13,y&=8191,l=c,l+=E*C,l+=x*L,l+=5*M*j,l+=5*m*I,l+=5*B*F,c=l>>>13,l&=8191,l+=5*S*N,l+=5*K*O,l+=5*T*P,l+=5*Y*z,l+=5*k*R,c+=l>>>13,l&=8191,w=c,w+=E*R,w+=x*C,w+=M*L,w+=5*m*j,w+=5*B*I,c=w>>>13,w&=8191,w+=5*S*F,w+=5*K*N,w+=5*T*O,w+=5*Y*P,w+=5*k*z,c+=w>>>13,w&=8191,p=c,p+=E*z,p+=x*R,p+=M*C,p+=m*L,p+=5*B*j,c=p>>>13,p&=8191,p+=5*S*I,p+=5*K*F,p+=5*T*N,p+=5*Y*O,p+=5*k*P,c+=p>>>13,p&=8191,g=c,g+=E*P,g+=x*z,g+=M*R,g+=m*C,g+=B*L,c=g>>>13,g&=8191,g+=5*S*j,g+=5*K*I,g+=5*T*F,g+=5*Y*N,g+=5*k*O,c+=g>>>13,g&=8191,v=c,v+=E*O,v+=x*P,v+=M*z,v+=m*R,v+=B*C,c=v>>>13,v&=8191,v+=S*L,v+=5*K*j,v+=5*T*I,v+=5*Y*F,v+=5*k*N,c+=v>>>13,v&=8191,b=c,b+=E*N,b+=x*O,b+=M*P,b+=m*z,b+=B*R,c=b>>>13,b&=8191,b+=S*C,b+=K*L,b+=5*T*j,b+=5*Y*I,b+=5*k*F,c+=b>>>13,b&=8191,d=c,d+=E*F,d+=x*N,d+=M*O,d+=m*P,d+=B*z,c=d>>>13,d&=8191,d+=S*R,d+=K*C,d+=T*L,d+=5*Y*j,d+=5*k*I,c+=d>>>13,d&=8191,A=c,A+=E*I,A+=x*F,A+=M*N,A+=m*O,A+=B*P,c=A>>>13,A&=8191,A+=S*z,A+=K*R,A+=T*C,A+=Y*L,A+=5*k*j,c+=A>>>13,A&=8191,_=c,_+=E*j,_+=x*I,_+=M*F,_+=m*N,_+=B*O,c=_>>>13,_&=8191,_+=S*P,_+=K*z,_+=T*R,_+=Y*C,_+=k*L,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+y|0,y=8191&c,c>>>=13,l+=c,E=y,x=l,M=w,m=p,B=g,S=v,K=b,T=d,Y=A,k=_,t+=16,n-=16;this.h[0]=E,this.h[1]=x,this.h[2]=M,this.h[3]=m,this.h[4]=B,this.h[5]=S,this.h[6]=K,this.h[7]=T,this.h[8]=Y,this.h[9]=k},yr.prototype.finish=function(r,t){var n,e,o,i,h=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;16>i;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;10>i;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,h[0]=this.h[0]+5,n=h[0]>>>13,h[0]&=8191,i=1;10>i;i++)h[i]=this.h[i]+n,n=h[i]>>>13,h[i]&=8191;for(h[9]-=8192,e=(h[9]>>>15)-1,i=0;10>i;i++)h[i]&=e;for(e=~e,i=0;10>i;i++)this.h[i]=this.h[i]&e|h[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;8>i;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;r[t+0]=this.h[0]>>>0&255,r[t+1]=this.h[0]>>>8&255,r[t+2]=this.h[1]>>>0&255,r[t+3]=this.h[1]>>>8&255,r[t+4]=this.h[2]>>>0&255,r[t+5]=this.h[2]>>>8&255,r[t+6]=this.h[3]>>>0&255,r[t+7]=this.h[3]>>>8&255,r[t+8]=this.h[4]>>>0&255,r[t+9]=this.h[4]>>>8&255,r[t+10]=this.h[5]>>>0&255,r[t+11]=this.h[5]>>>8&255,r[t+12]=this.h[6]>>>0&255,r[t+13]=this.h[6]>>>8&255,r[t+14]=this.h[7]>>>0&255,r[t+15]=this.h[7]>>>8&255},yr.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;o>e;e++)this.buffer[this.leftover+e]=r[t+e];if(n-=o,t+=o,this.leftover+=o,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(n>=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;n>e;e++)this.buffer[this.leftover+e]=r[t+e];this.leftover+=n}};var lr=p,wr=g,pr=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],gr=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),vr=32,br=24,dr=32,Ar=16,_r=32,Ur=32,Er=32,xr=32,Mr=32,mr=br,Br=dr,Sr=Ar,Kr=64,Tr=32,Yr=64,kr=32,Lr=64;r.lowlevel={crypto_core_hsalsa20:f,crypto_stream_xor:y,crypto_stream:c,crypto_stream_salsa20_xor:s,crypto_stream_salsa20:u,crypto_onetimeauth:l,crypto_onetimeauth_verify:w,crypto_verify_16:e,crypto_verify_32:o,crypto_secretbox:p,crypto_secretbox_open:g,crypto_scalarmult:T,crypto_scalarmult_base:Y,crypto_box_beforenm:L,crypto_box_afternm:lr,crypto_box:C,crypto_box_open:R,crypto_box_keypair:k,crypto_hash:P,crypto_sign:q,crypto_sign_keypair:G,crypto_sign_open:D,crypto_secretbox_KEYBYTES:vr,crypto_secretbox_NONCEBYTES:br,crypto_secretbox_ZEROBYTES:dr,crypto_secretbox_BOXZEROBYTES:Ar,crypto_scalarmult_BYTES:_r,crypto_scalarmult_SCALARBYTES:Ur,crypto_box_PUBLICKEYBYTES:Er,crypto_box_SECRETKEYBYTES:xr,crypto_box_BEFORENMBYTES:Mr,crypto_box_NONCEBYTES:mr,crypto_box_ZEROBYTES:Br,crypto_box_BOXZEROBYTES:Sr,crypto_sign_BYTES:Kr,crypto_sign_PUBLICKEYBYTES:Tr,crypto_sign_SECRETKEYBYTES:Yr,crypto_sign_SEEDBYTES:kr,crypto_hash_BYTES:Lr},r.util={},r.util.decodeUTF8=function(r){var t,n=unescape(encodeURIComponent(r)),e=new Uint8Array(n.length);for(t=0;tt;t++)n.push(String.fromCharCode(r[t]));return btoa(n.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var t,n=atob(r),e=new Uint8Array(n.length);for(t=0;te)return null;for(var o=new Uint8Array(e),i=0;ie;e++)o[e]=t[e];for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Tr),t=new Uint8Array(Yr);return G(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(Q(r),r.length!==Yr)throw new Error("bad secret key size");for(var t=new Uint8Array(Tr),n=0;ne;e++)n[e]=r[e];return G(t,n,!0),{publicKey:t,secretKey:n}},r.sign.publicKeyLength=Tr,r.sign.secretKeyLength=Yr,r.sign.seedLength=kr,r.sign.signatureLength=Kr,r.hash=function(r){Q(r);var t=new Uint8Array(Lr);return P(t,r,r.length),t},r.hash.hashLength=Lr,r.verify=function(r,t){return Q(r,t),0===r.length||0===t.length?!1:r.length!==t.length?!1:0===n(r,0,t,0,r.length)?!0:!1},r.setPRNG=function(r){rr=r},function(){var t;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?t=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(t=window.msCrypto),t&&r.setPRNG(function(r,n){var e,o=new Uint8Array(n);for(t.getRandomValues(o),e=0;n>e;e++)r[e]=o[e];W(o)})):"undefined"!=typeof require&&(t=require("crypto"),t&&r.setPRNG(function(r,n){var e,o=t.randomBytes(n);for(e=0;n>e;e++)r[e]=o[e];W(o)}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js deleted file mode 100644 index b8edbbee..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.js +++ /dev/null @@ -1,1205 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; }; -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function L32(x, c) { return (x << c) | (x >>> (32 - c)); } - -function ld32(x, i) { - var u = x[i+3] & 0xff; - u = (u<<8)|(x[i+2] & 0xff); - u = (u<<8)|(x[i+1] & 0xff); - return (u<<8)|(x[i+0] & 0xff); -} - -function dl64(x, i) { - var h = (x[i] << 24) | (x[i+1] << 16) | (x[i+2] << 8) | x[i+3]; - var l = (x[i+4] << 24) | (x[i+5] << 16) | (x[i+6] << 8) | x[i+7]; - return new u64(h, l); -} - -function st32(x, j, u) { - var i; - for (i = 0; i < 4; i++) { x[j+i] = u & 255; u >>>= 8; } -} - -function ts64(x, i, u) { - x[i] = (u.hi >> 24) & 0xff; - x[i+1] = (u.hi >> 16) & 0xff; - x[i+2] = (u.hi >> 8) & 0xff; - x[i+3] = u.hi & 0xff; - x[i+4] = (u.lo >> 24) & 0xff; - x[i+5] = (u.lo >> 16) & 0xff; - x[i+6] = (u.lo >> 8) & 0xff; - x[i+7] = u.lo & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core(out,inp,k,c,h) { - var w = new Uint32Array(16), x = new Uint32Array(16), - y = new Uint32Array(16), t = new Uint32Array(4); - var i, j, m; - - for (i = 0; i < 4; i++) { - x[5*i] = ld32(c, 4*i); - x[1+i] = ld32(k, 4*i); - x[6+i] = ld32(inp, 4*i); - x[11+i] = ld32(k, 16+4*i); - } - - for (i = 0; i < 16; i++) y[i] = x[i]; - - for (i = 0; i < 20; i++) { - for (j = 0; j < 4; j++) { - for (m = 0; m < 4; m++) t[m] = x[(5*j+4*m)%16]; - t[1] ^= L32((t[0]+t[3])|0, 7); - t[2] ^= L32((t[1]+t[0])|0, 9); - t[3] ^= L32((t[2]+t[1])|0,13); - t[0] ^= L32((t[3]+t[2])|0,18); - for (m = 0; m < 4; m++) w[4*j+(j+m)%4] = t[m]; - } - for (m = 0; m < 16; m++) x[m] = w[m]; - } - - if (h) { - for (i = 0; i < 16; i++) x[i] = (x[i] + y[i]) | 0; - for (i = 0; i < 4; i++) { - x[5*i] = (x[5*i] - ld32(c, 4*i)) | 0; - x[6+i] = (x[6+i] - ld32(inp, 4*i)) | 0; - } - for (i = 0; i < 4; i++) { - st32(out,4*i,x[5*i]); - st32(out,16+4*i,x[6+i]); - } - } else { - for (i = 0; i < 16; i++) st32(out, 4 * i, (x[i] + y[i]) | 0); - } -} - -function crypto_core_salsa20(out,inp,k,c) { - core(out,inp,k,c,false); - return 0; -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core(out,inp,k,c,true); - return 0; -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - if (!b) return 0; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - if (m) mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,d,n,k) { - return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k); -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s); -} - -function add1305(h, c) { - var j, u = 0; - for (j = 0; j < 17; j++) { - u = (u + ((h[j] + c[j]) | 0)) | 0; - h[j] = u & 255; - u >>>= 8; - } -} - -var minusp = new Uint32Array([ - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 -]); - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s, i, j, u; - var x = new Uint32Array(17), r = new Uint32Array(17), - h = new Uint32Array(17), c = new Uint32Array(17), - g = new Uint32Array(17); - for (j = 0; j < 17; j++) r[j]=h[j]=0; - for (j = 0; j < 16; j++) r[j]=k[j]; - r[3]&=15; - r[4]&=252; - r[7]&=15; - r[8]&=252; - r[11]&=15; - r[12]&=252; - r[15]&=15; - - while (n > 0) { - for (j = 0; j < 17; j++) c[j] = 0; - for (j = 0; (j < 16) && (j < n); ++j) c[j] = m[mpos+j]; - c[j] = 1; - mpos += j; n -= j; - add1305(h,c); - for (i = 0; i < 17; i++) { - x[i] = 0; - for (j = 0; j < 17; j++) x[i] = (x[i] + (h[j] * ((j <= i) ? r[i - j] : ((320 * r[i + 17 - j])|0))) | 0) | 0; - } - for (i = 0; i < 17; i++) h[i] = x[i]; - u = 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u & 3; - u = (5 * (u >>> 2)) | 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u; - } - - for (j = 0; j < 17; j++) g[j] = h[j]; - add1305(h,minusp); - s = (-(h[16] >>> 7) | 0); - for (j = 0; j < 17; j++) h[j] ^= s & (g[j] ^ h[j]); - - for (j = 0; j < 16; j++) c[j] = k[j + 16]; - c[16] = 0; - add1305(h,c); - for (j = 0; j < 16; j++) out[outpos+j] = h[j]; - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var c; - var i; - for (i = 0; i < 16; i++) { - o[i] += 65536; - c = Math.floor(o[i] / 65536); - o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0); - o[i] -= (c * 65536); - } -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0; -} - -function Z(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0; -} - -function M(o, a, b) { - var i, j, t = new Float64Array(31); - for (i = 0; i < 31; i++) t[i] = 0; - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - t[i+j] += a[i] * b[j]; - } - } - for (i = 0; i < 15; i++) { - t[i] += 38 * t[i+16]; - } - for (i = 0; i < 16; i++) o[i] = t[i]; - car25519(o); - car25519(o); -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -function add64() { - var a = 0, b = 0, c = 0, d = 0, m16 = 65535, l, h, i; - for (i = 0; i < arguments.length; i++) { - l = arguments[i].lo; - h = arguments[i].hi; - a += (l & m16); b += (l >>> 16); - c += (h & m16); d += (h >>> 16); - } - - b += (a >>> 16); - c += (b >>> 16); - d += (c >>> 16); - - return new u64((c & m16) | (d << 16), (a & m16) | (b << 16)); -} - -function shr64(x, c) { - return new u64((x.hi >>> c), (x.lo >>> c) | (x.hi << (32 - c))); -} - -function xor64() { - var l = 0, h = 0, i; - for (i = 0; i < arguments.length; i++) { - l ^= arguments[i].lo; - h ^= arguments[i].hi; - } - return new u64(h, l); -} - -function R(x, c) { - var h, l, c1 = 32 - c; - if (c < 32) { - h = (x.hi >>> c) | (x.lo << c1); - l = (x.lo >>> c) | (x.hi << c1); - } else if (c < 64) { - h = (x.lo >>> c) | (x.hi << c1); - l = (x.hi >>> c) | (x.lo << c1); - } - return new u64(h, l); -} - -function Ch(x, y, z) { - var h = (x.hi & y.hi) ^ (~x.hi & z.hi), - l = (x.lo & y.lo) ^ (~x.lo & z.lo); - return new u64(h, l); -} - -function Maj(x, y, z) { - var h = (x.hi & y.hi) ^ (x.hi & z.hi) ^ (y.hi & z.hi), - l = (x.lo & y.lo) ^ (x.lo & z.lo) ^ (y.lo & z.lo); - return new u64(h, l); -} - -function Sigma0(x) { return xor64(R(x,28), R(x,34), R(x,39)); } -function Sigma1(x) { return xor64(R(x,14), R(x,18), R(x,41)); } -function sigma0(x) { return xor64(R(x, 1), R(x, 8), shr64(x,7)); } -function sigma1(x) { return xor64(R(x,19), R(x,61), shr64(x,6)); } - -var K = [ - new u64(0x428a2f98, 0xd728ae22), new u64(0x71374491, 0x23ef65cd), - new u64(0xb5c0fbcf, 0xec4d3b2f), new u64(0xe9b5dba5, 0x8189dbbc), - new u64(0x3956c25b, 0xf348b538), new u64(0x59f111f1, 0xb605d019), - new u64(0x923f82a4, 0xaf194f9b), new u64(0xab1c5ed5, 0xda6d8118), - new u64(0xd807aa98, 0xa3030242), new u64(0x12835b01, 0x45706fbe), - new u64(0x243185be, 0x4ee4b28c), new u64(0x550c7dc3, 0xd5ffb4e2), - new u64(0x72be5d74, 0xf27b896f), new u64(0x80deb1fe, 0x3b1696b1), - new u64(0x9bdc06a7, 0x25c71235), new u64(0xc19bf174, 0xcf692694), - new u64(0xe49b69c1, 0x9ef14ad2), new u64(0xefbe4786, 0x384f25e3), - new u64(0x0fc19dc6, 0x8b8cd5b5), new u64(0x240ca1cc, 0x77ac9c65), - new u64(0x2de92c6f, 0x592b0275), new u64(0x4a7484aa, 0x6ea6e483), - new u64(0x5cb0a9dc, 0xbd41fbd4), new u64(0x76f988da, 0x831153b5), - new u64(0x983e5152, 0xee66dfab), new u64(0xa831c66d, 0x2db43210), - new u64(0xb00327c8, 0x98fb213f), new u64(0xbf597fc7, 0xbeef0ee4), - new u64(0xc6e00bf3, 0x3da88fc2), new u64(0xd5a79147, 0x930aa725), - new u64(0x06ca6351, 0xe003826f), new u64(0x14292967, 0x0a0e6e70), - new u64(0x27b70a85, 0x46d22ffc), new u64(0x2e1b2138, 0x5c26c926), - new u64(0x4d2c6dfc, 0x5ac42aed), new u64(0x53380d13, 0x9d95b3df), - new u64(0x650a7354, 0x8baf63de), new u64(0x766a0abb, 0x3c77b2a8), - new u64(0x81c2c92e, 0x47edaee6), new u64(0x92722c85, 0x1482353b), - new u64(0xa2bfe8a1, 0x4cf10364), new u64(0xa81a664b, 0xbc423001), - new u64(0xc24b8b70, 0xd0f89791), new u64(0xc76c51a3, 0x0654be30), - new u64(0xd192e819, 0xd6ef5218), new u64(0xd6990624, 0x5565a910), - new u64(0xf40e3585, 0x5771202a), new u64(0x106aa070, 0x32bbd1b8), - new u64(0x19a4c116, 0xb8d2d0c8), new u64(0x1e376c08, 0x5141ab53), - new u64(0x2748774c, 0xdf8eeb99), new u64(0x34b0bcb5, 0xe19b48a8), - new u64(0x391c0cb3, 0xc5c95a63), new u64(0x4ed8aa4a, 0xe3418acb), - new u64(0x5b9cca4f, 0x7763e373), new u64(0x682e6ff3, 0xd6b2b8a3), - new u64(0x748f82ee, 0x5defb2fc), new u64(0x78a5636f, 0x43172f60), - new u64(0x84c87814, 0xa1f0ab72), new u64(0x8cc70208, 0x1a6439ec), - new u64(0x90befffa, 0x23631e28), new u64(0xa4506ceb, 0xde82bde9), - new u64(0xbef9a3f7, 0xb2c67915), new u64(0xc67178f2, 0xe372532b), - new u64(0xca273ece, 0xea26619c), new u64(0xd186b8c7, 0x21c0c207), - new u64(0xeada7dd6, 0xcde0eb1e), new u64(0xf57d4f7f, 0xee6ed178), - new u64(0x06f067aa, 0x72176fba), new u64(0x0a637dc5, 0xa2c898a6), - new u64(0x113f9804, 0xbef90dae), new u64(0x1b710b35, 0x131c471b), - new u64(0x28db77f5, 0x23047d84), new u64(0x32caab7b, 0x40c72493), - new u64(0x3c9ebe0a, 0x15c9bebc), new u64(0x431d67c4, 0x9c100d4c), - new u64(0x4cc5d4be, 0xcb3e42b6), new u64(0x597f299c, 0xfc657e2a), - new u64(0x5fcb6fab, 0x3ad6faec), new u64(0x6c44198c, 0x4a475817) -]; - -function crypto_hashblocks(x, m, n) { - var z = [], b = [], a = [], w = [], t, i, j; - - for (i = 0; i < 8; i++) z[i] = a[i] = dl64(x, 8*i); - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) w[i] = dl64(m, 8*i+pos); - for (i = 0; i < 80; i++) { - for (j = 0; j < 8; j++) b[j] = a[j]; - t = add64(a[7], Sigma1(a[4]), Ch(a[4], a[5], a[6]), K[i], w[i%16]); - b[7] = add64(t, Sigma0(a[0]), Maj(a[0], a[1], a[2])); - b[3] = add64(b[3], t); - for (j = 0; j < 8; j++) a[(j+1)%8] = b[j]; - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - w[j] = add64(w[j], w[(j+9)%16], sigma0(w[(j+1)%16]), sigma1(w[(j+14)%16])); - } - } - } - - for (i = 0; i < 8; i++) { - a[i] = add64(a[i], z[i]); - z[i] = a[i]; - } - - pos += 128; - n -= 128; - } - - for (i = 0; i < 8; i++) ts64(x, 8*i, z[i]); - return n; -} - -var iv = new Uint8Array([ - 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, - 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, - 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, - 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, - 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, - 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, - 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, - 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 -]); - -function crypto_hash(out, m, n) { - var h = new Uint8Array(64), x = new Uint8Array(256); - var i, b = n; - - for (i = 0; i < 64; i++) h[i] = iv[i]; - - crypto_hashblocks(h, m, n); - n %= 128; - - for (i = 0; i < 256; i++) x[i] = 0; - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, new u64((b / 0x20000000) | 0, b << 3)); - crypto_hashblocks(h, x, n); - - for (i = 0; i < 64; i++) out[i] = h[i]; - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.util = {}; - -nacl.util.decodeUTF8 = function(s) { - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; -}; - -nacl.util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); -}; - -nacl.util.encodeBase64 = function(arr) { - if (typeof btoa === 'undefined') { - return (new Buffer(arr)).toString('base64'); - } else { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - } -}; - -nacl.util.decodeBase64 = function(s) { - if (typeof atob === 'undefined') { - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - } else { - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - } -}; - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto; - if (typeof window !== 'undefined') { - // Browser. - if (window.crypto && window.crypto.getRandomValues) { - crypto = window.crypto; // Standard - } else if (window.msCrypto && window.msCrypto.getRandomValues) { - crypto = window.msCrypto; // Internet Explorer 11+ - } - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - crypto.getRandomValues(v); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (window.nacl = window.nacl || {})); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js deleted file mode 100644 index 95d86950..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/nacl.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new lr(e,t)}function o(r,n,e){var t;for(t=0;4>t;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;o>i;i++)a|=r[n+i]^e[t+i];return(1&a-1>>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),s=new Uint32Array(16),l=new Uint32Array(16),h=new Uint32Array(4);for(u=0;4>u;u++)s[5*u]=e(a,4*u),s[1+u]=e(i,4*u),s[6+u]=e(t,4*u),s[11+u]=e(i,16+4*u);for(u=0;16>u;u++)l[u]=s[u];for(u=0;20>u;u++){for(c=0;4>c;c++){for(w=0;4>w;w++)h[w]=s[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;4>w;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;16>w;w++)s[w]=y[w]}if(f){for(u=0;16>u;u++)s[u]=s[u]+l[u]|0;for(u=0;4>u;u++)s[5*u]=s[5*u]-e(a,4*u)|0,s[6+u]=s[6+u]-e(t,4*u)|0;for(u=0;4>u;u++)o(r,4*u,s[5*u]),o(r,16+4*u,s[6+u])}else for(u=0;16>u;u++)o(r,4*u,s[u]+l[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function s(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;16>u;u++)c[u]=0;for(u=0;8>u;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Br),u=0;64>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;16>u;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Br),u=0;o>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];return 0}function l(r,n,e,t,o){return s(r,n,null,0,e,t,o)}function h(r,n,e,t,o){var i=new Uint8Array(32);return y(i,t,o,Br),l(r,n,e,t.subarray(16),i)}function g(r,n,e,t,o,i,a){var f=new Uint8Array(32);return y(f,i,a,Br),s(r,n,e,t,o,i.subarray(16),f)}function p(r,n){var e,t=0;for(e=0;17>e;e++)t=t+(r[e]+n[e]|0)|0,r[e]=255&t,t>>>=8}function v(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),s=new Uint32Array(17),l=new Uint32Array(17),h=new Uint32Array(17);for(u=0;17>u;u++)y[u]=s[u]=0;for(u=0;16>u;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;17>u;u++)l[u]=0;for(u=0;16>u&&o>u;++u)l[u]=e[t+u];for(l[u]=1,t+=u,o-=u,p(s,l),f=0;17>f;f++)for(w[f]=0,u=0;17>u;u++)w[f]=w[f]+s[u]*(f>=u?y[f-u]:320*y[f+17-u]|0)|0|0;for(f=0;17>f;f++)s[f]=w[f];for(c=0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;for(c=c+s[16]|0,s[16]=3&c,c=5*(c>>>2)|0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;c=c+s[16]|0,s[16]=c}for(u=0;17>u;u++)h[u]=s[u];for(p(s,Sr),a=0|-(s[16]>>>7),u=0;17>u;u++)s[u]^=a&(h[u]^s[u]);for(u=0;16>u;u++)l[u]=i[u+16];for(l[16]=0,p(s,l),u=0;16>u;u++)r[n+u]=s[u];return 0}function b(r,n,e,t,o,i){var a=new Uint8Array(16);return v(a,0,e,t,o,i),f(r,n,a,0)}function A(r,n,e,t,o){var i;if(32>e)return-1;for(g(r,0,n,0,e,t,o),v(r,16,r,32,e-32,r),i=0;16>i;i++)r[i]=0;return 0}function U(r,n,e,t,o){var i,a=new Uint8Array(32);if(32>e)return-1;if(h(a,0,32,t,o),0!==b(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;32>i;i++)r[i]=0;return 0}function _(r,n){var e;for(e=0;16>e;e++)r[e]=0|n[e]}function d(r){var n,e;for(e=0;16>e;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(15>e?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function E(r,n,e){for(var t,o=~(e-1),i=0;16>i;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hr(),a=hr();for(e=0;16>e;e++)a[e]=n[e];for(d(a),d(a),d(a),t=0;2>t;t++){for(i[0]=a[0]-65517,e=1;15>e;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(a,i,1-o)}for(e=0;16>e;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;16>e;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;31>t;t++)i[t]=0;for(t=0;16>t;t++)for(o=0;16>o;o++)i[t+o]+=n[t]*e[o];for(t=0;15>t;t++)i[t]+=38*i[t+16];for(t=0;16>t;t++)r[t]=i[t];d(r),d(r)}function L(r,n){Y(r,n,n)}function C(r,n){var e,t=hr();for(e=0;16>e;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function R(r,n){var e,t=hr();for(e=0;16>e;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function k(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hr(),u=hr(),c=hr(),w=hr(),y=hr(),s=hr();for(o=0;31>o;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;16>o;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,E(f,u,t),E(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(s,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,s),Y(f,c,Ur),K(f,f,w),Y(c,c,f),Y(f,w,s),Y(w,u,a),L(u,y),E(f,u,t),E(c,w,t);for(o=0;16>o;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var l=a.subarray(32),h=a.subarray(16);return C(l,l),Y(h,h,l),x(r,h),0}function z(r,n){return k(r,n,vr)}function P(r,n){return gr(n,32),z(r,n)}function O(r,n,e){var t=new Uint8Array(32);return k(t,e,n),y(r,pr,t,Br)}function F(r,n,e,t,o,i){var a=new Uint8Array(32);return O(a,o,i),Kr(r,n,e,t,a)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return O(a,o,i),Tr(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new lr(i&f|a<<16,t&f|o<<16)}function j(r,n){return new lr(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function G(){var r,n=0,e=0;for(r=0;rn?(e=r.hi>>>n|r.lo<>>n|r.hi<n&&(e=r.lo>>>n|r.hi<>>n|r.lo<a;a++)u[a]=w[a]=t(r,8*a);for(var s=0;e>=128;){for(a=0;16>a;a++)y[a]=t(n,8*a+s);for(a=0;80>a;a++){for(f=0;8>f;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),Z(w[4],w[5],w[6]),Yr[a],y[a%16]),c[7]=M(o,q(w[0]),V(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;8>f;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;16>f;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;8>a;a++)w[a]=M(w[a],u[a]),u[a]=w[a];s+=128,e-=128}for(a=0;8>a;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;64>t;t++)o[t]=Lr[t];for(J(o,n,e),e%=128,t=0;256>t;t++)a[t]=0;for(t=0;e>t;t++)a[t]=n[f-e+t];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,i(a,e-8,new lr(f/536870912|0,f<<3)),J(o,a,e),t=0;64>t;t++)r[t]=o[t];return 0}function W(r,n){var e=hr(),t=hr(),o=hr(),i=hr(),a=hr(),f=hr(),u=hr(),c=hr(),w=hr();T(e,r[1],r[0]),T(w,n[1],n[0]),Y(e,e,w),K(t,r[0],r[1]),K(w,n[0],n[1]),Y(t,t,w),Y(o,r[3],n[3]),Y(o,o,dr),Y(i,r[2],n[2]),K(i,i,i),T(a,t,e),T(f,i,o),K(u,i,o),K(c,t,e),Y(r[0],a,f),Y(r[1],c,u),Y(r[2],u,f),Y(r[3],a,c)}function $(r,n,e){var t;for(t=0;4>t;t++)E(r[t],n[t],e)}function rr(r,n){var e=hr(),t=hr(),o=hr();C(o,n[2]),Y(e,n[0],o),Y(t,n[1],o),x(r,t),r[31]^=B(e)<<7}function nr(r,n,e){var t,o;for(_(r[0],br),_(r[1],Ar),_(r[2],Ar),_(r[3],br),o=255;o>=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function er(r,n){var e=[hr(),hr(),hr(),hr()];_(e[0],Er),_(e[1],xr),_(e[2],Ar),Y(e[3],Er,xr),nr(r,e,n)}function tr(r,n,e){var t,o=new Uint8Array(64),i=[hr(),hr(),hr(),hr()];for(e||gr(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,er(i,o),rr(r,i),t=0;32>t;t++)n[t+32]=r[t];return 0}function or(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;i>o;++o)n[o]+=e-16*n[t]*Cr[o-(t-32)],e=n[o]+128>>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;32>o;o++)n[o]+=e-(n[31]>>4)*Cr[o],e=n[o]>>8,n[o]&=255;for(o=0;32>o;o++)n[o]-=e*Cr[o];for(t=0;32>t;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function ir(r){var n,e=new Float64Array(64);for(n=0;64>n;n++)e[n]=r[n];for(n=0;64>n;n++)r[n]=0;or(r,e)}function ar(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hr(),hr(),hr(),hr()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;e>o;o++)r[64+o]=n[o];for(o=0;32>o;o++)r[32+o]=a[32+o];for(Q(u,r.subarray(32),e+32),ir(u),er(w,u),rr(r,w),o=32;64>o;o++)r[o]=t[o];for(Q(f,r,e+64),ir(f),o=0;64>o;o++)c[o]=0;for(o=0;32>o;o++)c[o]=u[o];for(o=0;32>o;o++)for(i=0;32>i;i++)c[o+i]+=f[o]*a[i];return or(r.subarray(32),c),y}function fr(r,n){var e=hr(),t=hr(),o=hr(),i=hr(),a=hr(),f=hr(),u=hr();return _(r[2],Ar),S(r[1],n),L(o,r[1]),Y(i,o,_r),T(o,o,r[2]),K(i,r[2],i),L(a,i),L(f,a),Y(u,f,a),Y(e,u,o),Y(e,e,i),R(e,e),Y(e,e,o),Y(e,e,i),Y(e,e,i),Y(r[0],e,i),L(t,r[0]),Y(t,t,i),m(t,o)&&Y(r[0],r[0],mr),L(t,r[0]),Y(t,t,i),m(t,o)?-1:(B(r[0])===n[31]>>7&&T(r[0],br,r[0]),Y(r[3],r[0],r[1]),0)}function ur(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hr(),hr(),hr(),hr()],w=[hr(),hr(),hr(),hr()];if(i=-1,64>e)return-1;if(fr(w,t))return-1;for(o=0;e>o;o++)r[o]=n[o];for(o=0;32>o;o++)r[o+32]=t[o];if(Q(f,r,e),ir(f),nr(c,w,f),er(w,n.subarray(32)),W(c,w),rr(a,c),e-=64,u(n,0,a,0)){for(o=0;e>o;o++)r[o]=0;return-1}for(o=0;e>o;o++)r[o]=n[o+64];return i=e}function cr(r,n){if(r.length!==Rr)throw new Error("bad key size");if(n.length!==kr)throw new Error("bad nonce size")}function wr(r,n){if(r.length!==Nr)throw new Error("bad public key size");if(n.length!==Mr)throw new Error("bad secret key size")}function yr(){var r,n;for(n=0;nn;n++)e.push(String.fromCharCode(r[n]));return btoa(e.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var n,e=atob(r),t=new Uint8Array(e.length);for(n=0;nt)return null;for(var o=new Uint8Array(t),i=0;it;t++)o[t]=n[t];for(t=0;t=0},r.sign.keyPair=function(){var r=new Uint8Array(qr),n=new Uint8Array(Xr);return tr(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(yr(r),r.length!==Xr)throw new Error("bad secret key size");for(var n=new Uint8Array(qr),e=0;et;t++)e[t]=r[t];return tr(n,e,!0),{publicKey:n,secretKey:e}},r.sign.publicKeyLength=qr,r.sign.secretKeyLength=Xr,r.sign.seedLength=Dr,r.sign.signatureLength=Vr,r.hash=function(r){yr(r);var n=new Uint8Array(Hr);return Q(n,r,r.length),n},r.hash.hashLength=Hr,r.verify=function(r,n){return yr(r,n),0===r.length||0===n.length?!1:r.length!==n.length?!1:0===a(r,0,n,0,r.length)?!0:!1},r.setPRNG=function(r){gr=r},function(){var n;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?n=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(n=window.msCrypto),n&&r.setPRNG(function(r,e){var t,o=new Uint8Array(e);for(n.getRandomValues(o),t=0;e>t;t++)r[t]=o[t];sr(o)})):"undefined"!=typeof require&&(n=require("crypto"),n&&r.setPRNG(function(r,e){var t,o=n.randomBytes(e);for(t=0;e>t;t++)r[t]=o[t];sr(o)}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json deleted file mode 100644 index c897d3b7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/node_modules/tweetnacl/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "tweetnacl", - "version": "0.13.2", - "description": "Port of TweetNaCl cryptographic library to JavaScript", - "main": "nacl-fast.js", - "directories": { - "test": "test" - }, - "scripts": { - "build": "uglifyjs nacl.js -c -m -o nacl.min.js && uglifyjs nacl-fast.js -c -m -o nacl-fast.min.js", - "test": "tape test/*.js | faucet", - "testall": "make -C test/c && tape test/*.js test/c/*.js | faucet", - "browser": "browserify test/browser/init.js test/*.js | uglifyjs -c -m -o test/browser/_bundle.js 2>/dev/null", - "browser-quick": "browserify test/browser/init.js test/*.quick.js | uglifyjs -c -m -o test/browser/_bundle-quick.js 2>/dev/null", - "testling": "browserify test/browser/testling_init.js test/*.js | testling | faucet", - "firefox": "browserify test/browser/testling_init.js test/*.js | testling -x firefox | faucet", - "chrome": "browserify test/browser/testling_init.js test/*.js | testling -x google-chrome | faucet", - "bench": "node test/benchmark/bench.js", - "lint": "eslint nacl.js nacl-fast.js test/*.js test/benchmark/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "chrome/22..latest", - "firefox/16..latest", - "safari/latest", - "opera/11.0..latest", - "iphone/6..latest", - "ipad/6..latest", - "android-browser/latest" - ] - }, - "repository": { - "type": "git", - "url": "git+https://github.com/dchest/tweetnacl-js.git" - }, - "keywords": [ - "crypto", - "cryptography", - "curve25519", - "ed25519", - "encrypt", - "hash", - "key", - "nacl", - "poly1305", - "public", - "salsa20", - "signatures" - ], - "author": { - "name": "TweetNaCl-js contributors" - }, - "license": "CC0-1.0", - "bugs": { - "url": "https://github.com/dchest/tweetnacl-js/issues" - }, - "homepage": "https://dchest.github.io/tweetnacl-js", - "devDependencies": { - "browserify": "^10.1.3", - "eslint": "^1.4.3", - "faucet": "0.0.1", - "tap-browser-color": "^0.1.2", - "tape": "^4.0.0", - "testling": "^1.7.1", - "uglify-js": "^2.4.21" - }, - "browser": { - "buffer": false, - "crypto": false - }, - "gitHead": "f093f0c34fbab5caf51f3ed9a48149c37041abb3", - "_id": "tweetnacl@0.13.2", - "_shasum": "453161770469d45cd266c36404e2bc99a8fa9944", - "_from": "tweetnacl@>=0.13.0 <1.0.0", - "_npmVersion": "2.12.1", - "_nodeVersion": "0.12.7", - "_npmUser": { - "name": "dchest", - "email": "dmitry@codingrobots.com" - }, - "dist": { - "shasum": "453161770469d45cd266c36404e2bc99a8fa9944", - "tarball": "http://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz" - }, - "maintainers": [ - { - "name": "dchest", - "email": "dmitry@codingrobots.com" - } - ], - "_resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json deleted file mode 100644 index eba284e4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/node_modules/sshpk/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "sshpk", - "version": "1.7.1", - "description": "A library for finding and using SSH public keys", - "main": "lib/index.js", - "scripts": { - "test": "tape test/*.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/arekinath/node-sshpk.git" - }, - "author": { - "name": "Joyent, Inc" - }, - "contributors": [ - { - "name": "Dave Eddy", - "email": "dave@daveeddy.com" - }, - { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - { - "name": "Alex Wilson", - "email": "alex@cooperi.net" - } - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/arekinath/node-sshpk/issues" - }, - "engines": { - "node": ">=0.8.0" - }, - "directories": { - "bin": "./bin", - "lib": "./lib" - }, - "homepage": "https://github.com/arekinath/node-sshpk#readme", - "dependencies": { - "asn1": ">=0.2.3 <0.3.0", - "assert-plus": ">=0.2.0 <0.3.0", - "dashdash": ">=1.10.1 <2.0.0", - "jsbn": ">=0.1.0 <0.2.0", - "tweetnacl": ">=0.13.0 <1.0.0", - "jodid25519": ">=1.0.0 <2.0.0", - "ecc-jsbn": ">=0.0.1 <1.0.0" - }, - "optionalDependencies": { - "jsbn": ">=0.1.0 <0.2.0", - "tweetnacl": ">=0.13.0 <1.0.0", - "jodid25519": ">=1.0.0 <2.0.0", - "ecc-jsbn": ">=0.0.1 <1.0.0" - }, - "devDependencies": { - "tape": ">=3.5.0 <4.0.0", - "benchmark": ">=1.0.0 <2.0.0", - "sinon": ">=1.17.2 <2.0.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv" - }, - "gitHead": "71dd768e94d6214a0b8e1196ca78297b582c6fb0", - "_id": "sshpk@1.7.1", - "_shasum": "565e386c42a77e6062fbd14c0472ff21cd53398c", - "_from": "sshpk@>=1.7.0 <2.0.0", - "_npmVersion": "2.14.4", - "_nodeVersion": "0.12.7", - "_npmUser": { - "name": "arekinath", - "email": "alex@cooperi.net" - }, - "dist": { - "shasum": "565e386c42a77e6062fbd14c0472ff21cd53398c", - "tarball": "http://registry.npmjs.org/sshpk/-/sshpk-1.7.1.tgz" - }, - "maintainers": [ - { - "name": "arekinath", - "email": "alex@cooperi.net" - } - ], - "_resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/package.json deleted file mode 100644 index 3d20cb8b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/http-signature/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "http-signature", - "description": "Reference implementation of Joyent's HTTP Signature scheme.", - "version": "1.1.0", - "license": "MIT", - "author": { - "name": "Joyent, Inc" - }, - "contributors": [ - { - "name": "Mark Cavage", - "email": "mcavage@gmail.com" - }, - { - "name": "David I. Lehn", - "email": "dil@lehn.org" - }, - { - "name": "Patrick Mooney", - "email": "patrick.f.mooney@gmail.com" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/joyent/node-http-signature.git" - }, - "homepage": "https://github.com/joyent/node-http-signature/", - "bugs": { - "url": "https://github.com/joyent/node-http-signature/issues" - }, - "keywords": [ - "https", - "request" - ], - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - }, - "main": "lib/index.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "assert-plus": "^0.1.5", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "devDependencies": { - "node-uuid": "^1.4.1", - "tap": "0.4.2" - }, - "gitHead": "162c2f0144b0645a57517d6d91fafcde3840cde2", - "_id": "http-signature@1.1.0", - "_shasum": "5d2d7e9b6ef49980ad5b128d8e4ef09a31c90d95", - "_from": "http-signature@>=1.1.0 <1.2.0", - "_npmVersion": "2.14.4", - "_nodeVersion": "0.12.7", - "_npmUser": { - "name": "arekinath", - "email": "alex@cooperi.net" - }, - "dist": { - "shasum": "5d2d7e9b6ef49980ad5b128d8e4ef09a31c90d95", - "tarball": "http://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz" - }, - "maintainers": [ - { - "name": "arekinath", - "email": "alex@cooperi.net" - }, - { - "name": "mcavage", - "email": "mcavage@gmail.com" - }, - { - "name": "pfmooney", - "email": "patrick.f.mooney@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/LICENSE.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/LICENSE.md deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/LICENSE.md +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/README.md deleted file mode 100644 index 27528639..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# is-typedarray [![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) - -Detect whether or not an object is a -[Typed Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays). - -## Usage - -[![NPM](https://nodei.co/npm/is-typedarray.png)](https://nodei.co/npm/is-typedarray/) - -### isTypedArray(array) - -Returns `true` when array is a Typed Array, and `false` when it is not. - -## License - -MIT. See [LICENSE.md](http://github.com/hughsk/is-typedarray/blob/master/LICENSE.md) for details. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/index.js deleted file mode 100644 index 58596036..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/index.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = isTypedArray -isTypedArray.strict = isStrictTypedArray -isTypedArray.loose = isLooseTypedArray - -var toString = Object.prototype.toString -var names = { - '[object Int8Array]': true - , '[object Int16Array]': true - , '[object Int32Array]': true - , '[object Uint8Array]': true - , '[object Uint8ClampedArray]': true - , '[object Uint16Array]': true - , '[object Uint32Array]': true - , '[object Float32Array]': true - , '[object Float64Array]': true -} - -function isTypedArray(arr) { - return ( - isStrictTypedArray(arr) - || isLooseTypedArray(arr) - ) -} - -function isStrictTypedArray(arr) { - return ( - arr instanceof Int8Array - || arr instanceof Int16Array - || arr instanceof Int32Array - || arr instanceof Uint8Array - || arr instanceof Uint8ClampedArray - || arr instanceof Uint16Array - || arr instanceof Uint32Array - || arr instanceof Float32Array - || arr instanceof Float64Array - ) -} - -function isLooseTypedArray(arr) { - return names[toString.call(arr)] -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/package.json deleted file mode 100644 index 861ef4f7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "is-typedarray", - "version": "1.0.0", - "description": "Detect whether or not an object is a Typed Array", - "main": "index.js", - "scripts": { - "test": "node test" - }, - "author": { - "name": "Hugh Kennedy", - "email": "hughskennedy@gmail.com", - "url": "http://hughsk.io/" - }, - "license": "MIT", - "dependencies": {}, - "devDependencies": { - "tape": "^2.13.1" - }, - "repository": { - "type": "git", - "url": "git://github.com/hughsk/is-typedarray.git" - }, - "keywords": [ - "typed", - "array", - "detect", - "is", - "util" - ], - "bugs": { - "url": "https://github.com/hughsk/is-typedarray/issues" - }, - "homepage": "https://github.com/hughsk/is-typedarray", - "gitHead": "0617cfa871686cf541af62b144f130488f44f6fe", - "_id": "is-typedarray@1.0.0", - "_shasum": "e479c80858df0c1b11ddda6940f96011fcda4a9a", - "_from": "is-typedarray@>=1.0.0 <1.1.0", - "_npmVersion": "2.7.5", - "_nodeVersion": "0.10.36", - "_npmUser": { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - }, - "dist": { - "shasum": "e479c80858df0c1b11ddda6940f96011fcda4a9a", - "tarball": "http://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "maintainers": [ - { - "name": "hughsk", - "email": "hughskennedy@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/test.js deleted file mode 100644 index b0c176fa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/is-typedarray/test.js +++ /dev/null @@ -1,34 +0,0 @@ -var test = require('tape') -var ista = require('./') - -test('strict', function(t) { - t.ok(ista.strict(new Int8Array), 'Int8Array') - t.ok(ista.strict(new Int16Array), 'Int16Array') - t.ok(ista.strict(new Int32Array), 'Int32Array') - t.ok(ista.strict(new Uint8Array), 'Uint8Array') - t.ok(ista.strict(new Uint16Array), 'Uint16Array') - t.ok(ista.strict(new Uint32Array), 'Uint32Array') - t.ok(ista.strict(new Float32Array), 'Float32Array') - t.ok(ista.strict(new Float64Array), 'Float64Array') - - t.ok(!ista.strict(new Array), 'Array') - t.ok(!ista.strict([]), '[]') - - t.end() -}) - -test('loose', function(t) { - t.ok(ista.loose(new Int8Array), 'Int8Array') - t.ok(ista.loose(new Int16Array), 'Int16Array') - t.ok(ista.loose(new Int32Array), 'Int32Array') - t.ok(ista.loose(new Uint8Array), 'Uint8Array') - t.ok(ista.loose(new Uint16Array), 'Uint16Array') - t.ok(ista.loose(new Uint32Array), 'Uint32Array') - t.ok(ista.loose(new Float32Array), 'Float32Array') - t.ok(ista.loose(new Float64Array), 'Float64Array') - - t.ok(!ista.loose(new Array), 'Array') - t.ok(!ista.loose([]), '[]') - - t.end() -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.jshintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.jshintrc deleted file mode 100644 index c8ef3ca4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ ] - , "bitwise": false - , "camelcase": false - , "curly": false - , "eqeqeq": false - , "forin": false - , "immed": false - , "latedef": false - , "noarg": true - , "noempty": true - , "nonew": true - , "plusplus": false - , "quotmark": true - , "regexp": false - , "undef": true - , "unused": true - , "strict": false - , "trailing": true - , "maxlen": 120 - , "asi": true - , "boss": true - , "debug": true - , "eqnull": true - , "esnext": true - , "evil": true - , "expr": true - , "funcscope": false - , "globalstrict": false - , "iterator": false - , "lastsemic": true - , "laxbreak": true - , "laxcomma": true - , "loopfunc": true - , "multistr": false - , "onecase": false - , "proto": false - , "regexdash": false - , "scripturl": true - , "smarttabs": false - , "shadow": false - , "sub": true - , "supernew": false - , "validthis": true - , "browser": true - , "couch": false - , "devel": false - , "dojo": false - , "mootools": false - , "node": true - , "nonstandard": true - , "prototypejs": false - , "rhino": false - , "worker": true - , "wsh": false - , "nomen": false - , "onevar": false - , "passfail": false -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.npmignore deleted file mode 100644 index aa1ec1ea..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -*.tgz diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.travis.yml deleted file mode 100644 index 1fec2ab9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" -branches: - only: - - master -notifications: - email: - - rod@vagg.org -script: npm test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/LICENSE.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/LICENSE.md deleted file mode 100644 index 43f7153f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/LICENSE.md +++ /dev/null @@ -1,11 +0,0 @@ -The MIT License (MIT) -===================== - -Copyright (c) 2015 Rod Vagg ---------------------------- - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/README.md deleted file mode 100644 index 06770e82..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# isStream - -[![Build Status](https://secure.travis-ci.org/rvagg/isstream.png)](http://travis-ci.org/rvagg/isstream) - -**Test if an object is a `Stream`** - -[![NPM](https://nodei.co/npm/isstream.svg)](https://nodei.co/npm/isstream/) - -The missing `Stream.isStream(obj)`: determine if an object is standard Node.js `Stream`. Works for Node-core `Stream` objects (for 0.8, 0.10, 0.11, and in theory, older and newer versions) and all versions of **[readable-stream](https://github.com/isaacs/readable-stream)**. - -## Usage: - -```js -var isStream = require('isstream') -var Stream = require('stream') - -isStream(new Stream()) // true - -isStream({}) // false - -isStream(new Stream.Readable()) // true -isStream(new Stream.Writable()) // true -isStream(new Stream.Duplex()) // true -isStream(new Stream.Transform()) // true -isStream(new Stream.PassThrough()) // true -``` - -## But wait! There's more! - -You can also test for `isReadable(obj)`, `isWritable(obj)` and `isDuplex(obj)` to test for implementations of Streams2 (and Streams3) base classes. - -```js -var isReadable = require('isstream').isReadable -var isWritable = require('isstream').isWritable -var isDuplex = require('isstream').isDuplex -var Stream = require('stream') - -isReadable(new Stream()) // false -isWritable(new Stream()) // false -isDuplex(new Stream()) // false - -isReadable(new Stream.Readable()) // true -isReadable(new Stream.Writable()) // false -isReadable(new Stream.Duplex()) // true -isReadable(new Stream.Transform()) // true -isReadable(new Stream.PassThrough()) // true - -isWritable(new Stream.Readable()) // false -isWritable(new Stream.Writable()) // true -isWritable(new Stream.Duplex()) // true -isWritable(new Stream.Transform()) // true -isWritable(new Stream.PassThrough()) // true - -isDuplex(new Stream.Readable()) // false -isDuplex(new Stream.Writable()) // false -isDuplex(new Stream.Duplex()) // true -isDuplex(new Stream.Transform()) // true -isDuplex(new Stream.PassThrough()) // true -``` - -*Reminder: when implementing your own streams, please [use **readable-stream** rather than core streams](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).* - - -## License - -**isStream** is Copyright (c) 2015 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE.md file for more details. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/isstream.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/isstream.js deleted file mode 100644 index a1d104a7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/isstream.js +++ /dev/null @@ -1,27 +0,0 @@ -var stream = require('stream') - - -function isStream (obj) { - return obj instanceof stream.Stream -} - - -function isReadable (obj) { - return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object' -} - - -function isWritable (obj) { - return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object' -} - - -function isDuplex (obj) { - return isReadable(obj) && isWritable(obj) -} - - -module.exports = isStream -module.exports.isReadable = isReadable -module.exports.isWritable = isWritable -module.exports.isDuplex = isDuplex diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/package.json deleted file mode 100644 index 85cb14c9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "isstream", - "version": "0.1.2", - "description": "Determine if an object is a Stream", - "main": "isstream.js", - "scripts": { - "test": "tar --xform 's/^package/readable-stream-1.0/' -zxf readable-stream-1.0.*.tgz && tar --xform 's/^package/readable-stream-1.1/' -zxf readable-stream-1.1.*.tgz && node test.js; rm -rf readable-stream-1.?/" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/isstream.git" - }, - "keywords": [ - "stream", - "type", - "streams", - "readable-stream", - "hippo" - ], - "devDependencies": { - "tape": "~2.12.3", - "core-util-is": "~1.0.0", - "isarray": "0.0.1", - "string_decoder": "~0.10.x", - "inherits": "~2.0.1" - }, - "author": { - "name": "Rod Vagg", - "email": "rod@vagg.org" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/rvagg/isstream/issues" - }, - "homepage": "https://github.com/rvagg/isstream", - "gitHead": "cd39cba6da939b4fc9110825203adc506422c3dc", - "_id": "isstream@0.1.2", - "_shasum": "47e63f7af55afa6f92e1500e690eb8b8529c099a", - "_from": "isstream@>=0.1.2 <0.2.0", - "_npmVersion": "2.6.1", - "_nodeVersion": "1.4.3", - "_npmUser": { - "name": "rvagg", - "email": "rod@vagg.org" - }, - "maintainers": [ - { - "name": "rvagg", - "email": "rod@vagg.org" - } - ], - "dist": { - "shasum": "47e63f7af55afa6f92e1500e690eb8b8529c099a", - "tarball": "http://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/test.js deleted file mode 100644 index 8c950c55..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/isstream/test.js +++ /dev/null @@ -1,168 +0,0 @@ -var tape = require('tape') - , EE = require('events').EventEmitter - , util = require('util') - - - , isStream = require('./') - , isReadable = require('./').isReadable - , isWritable = require('./').isWritable - , isDuplex = require('./').isDuplex - - , CoreStreams = require('stream') - , ReadableStream10 = require('./readable-stream-1.0/') - , ReadableStream11 = require('./readable-stream-1.1/') - - -function test (pass, type, stream) { - tape('isStream(' + type + ')', function (t) { - t.plan(1) - t.ok(pass === isStream(stream), type) - }) -} - - -function testReadable (pass, type, stream) { - tape('isReadable(' + type + ')', function (t) { - t.plan(1) - t.ok(pass === isReadable(stream), type) - }) -} - - -function testWritable (pass, type, stream) { - tape('isWritable(' + type + ')', function (t) { - t.plan(1) - t.ok(pass === isWritable(stream), type) - }) -} - - -function testDuplex (pass, type, stream) { - tape('isDuplex(' + type + ')', function (t) { - t.plan(1) - t.ok(pass === isDuplex(stream), type) - }) -} - - -[ undefined, null, '', true, false, 0, 1, 1.0, 'string', {}, function foo () {} ].forEach(function (o) { - test(false, 'non-stream / primitive: ' + (JSON.stringify(o) || (o && o.toString()) || o), o) -}) - - -test(false, 'fake stream obj', { pipe: function () {} }) - - -;(function () { - - // looks like a stream! - - function Stream () { - EE.call(this) - } - util.inherits(Stream, EE) - Stream.prototype.pipe = function () {} - Stream.Stream = Stream - - test(false, 'fake stream "new Stream()"', new Stream()) - -}()) - - -test(true, 'CoreStreams.Stream', new (CoreStreams.Stream)()) -test(true, 'CoreStreams.Readable', new (CoreStreams.Readable)()) -test(true, 'CoreStreams.Writable', new (CoreStreams.Writable)()) -test(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) -test(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) -test(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) - -test(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) -test(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) -test(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) -test(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) -test(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) - -test(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) -test(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) -test(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) -test(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) -test(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) - - -testReadable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) -testReadable(true, 'CoreStreams.Readable', new (CoreStreams.Readable)()) -testReadable(false, 'CoreStreams.Writable', new (CoreStreams.Writable)()) -testReadable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) -testReadable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) -testReadable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) - -testReadable(true, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) -testReadable(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) -testReadable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) -testReadable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) -testReadable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) - -testReadable(true, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) -testReadable(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) -testReadable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) -testReadable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) -testReadable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) - - -testWritable(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) -testWritable(false, 'CoreStreams.Readable', new (CoreStreams.Readable)()) -testWritable(true, 'CoreStreams.Writable', new (CoreStreams.Writable)()) -testWritable(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) -testWritable(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) -testWritable(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) - -testWritable(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) -testWritable(true, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) -testWritable(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) -testWritable(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) -testWritable(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) - -testWritable(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) -testWritable(true, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) -testWritable(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) -testWritable(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) -testWritable(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) - - -testDuplex(false, 'CoreStreams.Stream', new (CoreStreams.Stream)()) -testDuplex(false, 'CoreStreams.Readable', new (CoreStreams.Readable)()) -testDuplex(false, 'CoreStreams.Writable', new (CoreStreams.Writable)()) -testDuplex(true, 'CoreStreams.Duplex', new (CoreStreams.Duplex)()) -testDuplex(true, 'CoreStreams.Transform', new (CoreStreams.Transform)()) -testDuplex(true, 'CoreStreams.PassThrough', new (CoreStreams.PassThrough)()) - -testDuplex(false, 'ReadableStream10.Readable', new (ReadableStream10.Readable)()) -testDuplex(false, 'ReadableStream10.Writable', new (ReadableStream10.Writable)()) -testDuplex(true, 'ReadableStream10.Duplex', new (ReadableStream10.Duplex)()) -testDuplex(true, 'ReadableStream10.Transform', new (ReadableStream10.Transform)()) -testDuplex(true, 'ReadableStream10.PassThrough', new (ReadableStream10.PassThrough)()) - -testDuplex(false, 'ReadableStream11.Readable', new (ReadableStream11.Readable)()) -testDuplex(false, 'ReadableStream11.Writable', new (ReadableStream11.Writable)()) -testDuplex(true, 'ReadableStream11.Duplex', new (ReadableStream11.Duplex)()) -testDuplex(true, 'ReadableStream11.Transform', new (ReadableStream11.Transform)()) -testDuplex(true, 'ReadableStream11.PassThrough', new (ReadableStream11.PassThrough)()) - - -;[ CoreStreams, ReadableStream10, ReadableStream11 ].forEach(function (p) { - [ 'Stream', 'Readable', 'Writable', 'Duplex', 'Transform', 'PassThrough' ].forEach(function (k) { - if (!p[k]) - return - - function SubStream () { - p[k].call(this) - } - util.inherits(SubStream, p[k]) - - test(true, 'Stream subclass: ' + p.name + '.' + k, new SubStream()) - - }) -}) - - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/.npmignore deleted file mode 100644 index 17d6b367..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/*.tgz diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md deleted file mode 100644 index 42bcb60a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -## Unreleased -- Fixes stringify to only take ancestors into account when checking - circularity. - It previously assumed every visited object was circular which led to [false - positives][issue9]. - Uses the tiny serializer I wrote for [Must.js][must] a year and a half ago. -- Fixes calling the `replacer` function in the proper context (`thisArg`). -- Fixes calling the `cycleReplacer` function in the proper context (`thisArg`). -- Speeds serializing by a factor of - Big-O(h-my-god-it-linearly-searched-every-object) it had ever seen. Searching - only the ancestors for a circular references speeds up things considerably. - -[must]: https://github.com/moll/js-must -[issue9]: https://github.com/isaacs/json-stringify-safe/issues/9 diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/Makefile b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/Makefile deleted file mode 100644 index 36088c72..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -NODE_OPTS = -TEST_OPTS = - -love: - @echo "Feel like makin' love." - -test: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot $(TEST_OPTS) - -spec: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec $(TEST_OPTS) - -autotest: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot --watch $(TEST_OPTS) - -autospec: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec --watch $(TEST_OPTS) - -pack: - @file=$$(npm pack); echo "$$file"; tar tf "$$file" - -publish: - npm publish - -tag: - git tag "v$$(node -e 'console.log(require("./package").version)')" - -clean: - rm -f *.tgz - npm prune --production - -.PHONY: love -.PHONY: test spec autotest autospec -.PHONY: pack publish tag -.PHONY: clean diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/README.md deleted file mode 100644 index a11f302a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# json-stringify-safe - -Like JSON.stringify, but doesn't throw on circular references. - -## Usage - -Takes the same arguments as `JSON.stringify`. - -```javascript -var stringify = require('json-stringify-safe'); -var circularObj = {}; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; -console.log(stringify(circularObj, null, 2)); -``` - -Output: - -```json -{ - "circularRef": "[Circular]", - "list": [ - "[Circular]", - "[Circular]" - ] -} -``` - -## Details - -``` -stringify(obj, serializer, indent, decycler) -``` - -The first three arguments are the same as to JSON.stringify. The last -is an argument that's only used when the object has been seen already. - -The default `decycler` function returns the string `'[Circular]'`. -If, for example, you pass in `function(k,v){}` (return nothing) then it -will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`, -then cyclical objects will always be represented as `{"foo":"bar"}` in -the result. - -``` -stringify.getSerialize(serializer, decycler) -``` - -Returns a serializer that can be used elsewhere. This is the actual -function that's passed to JSON.stringify. - -**Note** that the function returned from `getSerialize` is stateful for now, so -do **not** use it more than once. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/package.json deleted file mode 100644 index ccd55b00..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "json-stringify-safe", - "version": "5.0.1", - "description": "Like JSON.stringify, but doesn't blow up on circular refs.", - "keywords": [ - "json", - "stringify", - "circular", - "safe" - ], - "homepage": "https://github.com/isaacs/json-stringify-safe", - "bugs": { - "url": "https://github.com/isaacs/json-stringify-safe/issues" - }, - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "contributors": [ - { - "name": "Andri Möll", - "email": "andri@dot.ee", - "url": "http://themoll.com" - } - ], - "license": "ISC", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/json-stringify-safe.git" - }, - "main": "stringify.js", - "scripts": { - "test": "node test.js" - }, - "devDependencies": { - "mocha": ">= 2.1.0 < 3", - "must": ">= 0.12 < 0.13", - "sinon": ">= 1.12.2 < 2" - }, - "gitHead": "3890dceab3ad14f8701e38ca74f38276abc76de5", - "_id": "json-stringify-safe@5.0.1", - "_shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb", - "_from": "json-stringify-safe@>=5.0.1 <5.1.0", - "_npmVersion": "2.10.0", - "_nodeVersion": "2.0.1", - "_npmUser": { - "name": "isaacs", - "email": "isaacs@npmjs.com" - }, - "dist": { - "shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb", - "tarball": "http://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "maintainers": [ - { - "name": "isaacs", - "email": "i@izs.me" - }, - { - "name": "moll", - "email": "andri@dot.ee" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/stringify.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/stringify.js deleted file mode 100644 index 124a4521..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/stringify.js +++ /dev/null @@ -1,27 +0,0 @@ -exports = module.exports = stringify -exports.getSerialize = serializer - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) -} - -function serializer(replacer, cycleReplacer) { - var stack = [], keys = [] - - if (cycleReplacer == null) cycleReplacer = function(key, value) { - if (stack[0] === value) return "[Circular ~]" - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this) - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) - } - else stack.push(value) - - return replacer == null ? value : replacer.call(this, key, value) - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts deleted file mode 100644 index 2544e586..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/mocha.opts +++ /dev/null @@ -1,2 +0,0 @@ ---recursive ---require must diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js deleted file mode 100644 index 5b325831..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/json-stringify-safe/test/stringify_test.js +++ /dev/null @@ -1,246 +0,0 @@ -var Sinon = require("sinon") -var stringify = require("..") -function jsonify(obj) { return JSON.stringify(obj, null, 2) } - -describe("Stringify", function() { - it("must stringify circular objects", function() { - var obj = {name: "Alice"} - obj.self = obj - var json = stringify(obj, null, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - }) - - it("must stringify circular objects with intermediaries", function() { - var obj = {name: "Alice"} - obj.identity = {self: obj} - var json = stringify(obj, null, 2) - json.must.eql(jsonify({name: "Alice", identity: {self: "[Circular ~]"}})) - }) - - it("must stringify circular objects deeper", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - obj.child.self = obj.child - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - child: {name: "Bob", self: "[Circular ~.child]"} - })) - }) - - it("must stringify circular objects deeper with intermediaries", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - obj.child.identity = {self: obj.child} - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - child: {name: "Bob", identity: {self: "[Circular ~.child]"}} - })) - }) - - it("must stringify circular objects in an array", function() { - var obj = {name: "Alice"} - obj.self = [obj, obj] - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", self: ["[Circular ~]", "[Circular ~]"] - })) - }) - - it("must stringify circular objects deeper in an array", function() { - var obj = {name: "Alice", children: [{name: "Bob"}, {name: "Eve"}]} - obj.children[0].self = obj.children[0] - obj.children[1].self = obj.children[1] - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - children: [ - {name: "Bob", self: "[Circular ~.children.0]"}, - {name: "Eve", self: "[Circular ~.children.1]"} - ] - })) - }) - - it("must stringify circular arrays", function() { - var obj = [] - obj.push(obj) - obj.push(obj) - var json = stringify(obj, null, 2) - json.must.eql(jsonify(["[Circular ~]", "[Circular ~]"])) - }) - - it("must stringify circular arrays with intermediaries", function() { - var obj = [] - obj.push({name: "Alice", self: obj}) - obj.push({name: "Bob", self: obj}) - - stringify(obj, null, 2).must.eql(jsonify([ - {name: "Alice", self: "[Circular ~]"}, - {name: "Bob", self: "[Circular ~]"} - ])) - }) - - it("must stringify repeated objects in objects", function() { - var obj = {} - var alice = {name: "Alice"} - obj.alice1 = alice - obj.alice2 = alice - - stringify(obj, null, 2).must.eql(jsonify({ - alice1: {name: "Alice"}, - alice2: {name: "Alice"} - })) - }) - - it("must stringify repeated objects in arrays", function() { - var alice = {name: "Alice"} - var obj = [alice, alice] - var json = stringify(obj, null, 2) - json.must.eql(jsonify([{name: "Alice"}, {name: "Alice"}])) - }) - - it("must call given decycler and use its output", function() { - var obj = {} - obj.a = obj - obj.b = obj - - var decycle = Sinon.spy(function() { return decycle.callCount }) - var json = stringify(obj, null, 2, decycle) - json.must.eql(jsonify({a: 1, b: 2}, null, 2)) - - decycle.callCount.must.equal(2) - decycle.thisValues[0].must.equal(obj) - decycle.args[0][0].must.equal("a") - decycle.args[0][1].must.equal(obj) - decycle.thisValues[1].must.equal(obj) - decycle.args[1][0].must.equal("b") - decycle.args[1][1].must.equal(obj) - }) - - it("must call replacer and use its output", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - - var replacer = Sinon.spy(bangString) - var json = stringify(obj, replacer, 2) - json.must.eql(jsonify({name: "Alice!", child: {name: "Bob!"}})) - - replacer.callCount.must.equal(4) - replacer.args[0][0].must.equal("") - replacer.args[0][1].must.equal(obj) - replacer.thisValues[1].must.equal(obj) - replacer.args[1][0].must.equal("name") - replacer.args[1][1].must.equal("Alice") - replacer.thisValues[2].must.equal(obj) - replacer.args[2][0].must.equal("child") - replacer.args[2][1].must.equal(obj.child) - replacer.thisValues[3].must.equal(obj.child) - replacer.args[3][0].must.equal("name") - replacer.args[3][1].must.equal("Bob") - }) - - it("must call replacer after describing circular references", function() { - var obj = {name: "Alice"} - obj.self = obj - - var replacer = Sinon.spy(bangString) - var json = stringify(obj, replacer, 2) - json.must.eql(jsonify({name: "Alice!", self: "[Circular ~]!"})) - - replacer.callCount.must.equal(3) - replacer.args[0][0].must.equal("") - replacer.args[0][1].must.equal(obj) - replacer.thisValues[1].must.equal(obj) - replacer.args[1][0].must.equal("name") - replacer.args[1][1].must.equal("Alice") - replacer.thisValues[2].must.equal(obj) - replacer.args[2][0].must.equal("self") - replacer.args[2][1].must.equal("[Circular ~]") - }) - - it("must call given decycler and use its output for nested objects", - function() { - var obj = {} - obj.a = obj - obj.b = {self: obj} - - var decycle = Sinon.spy(function() { return decycle.callCount }) - var json = stringify(obj, null, 2, decycle) - json.must.eql(jsonify({a: 1, b: {self: 2}})) - - decycle.callCount.must.equal(2) - decycle.args[0][0].must.equal("a") - decycle.args[0][1].must.equal(obj) - decycle.args[1][0].must.equal("self") - decycle.args[1][1].must.equal(obj) - }) - - it("must use decycler's output when it returned null", function() { - var obj = {a: "b"} - obj.self = obj - obj.selves = [obj, obj] - - function decycle() { return null } - stringify(obj, null, 2, decycle).must.eql(jsonify({ - a: "b", - self: null, - selves: [null, null] - })) - }) - - it("must use decycler's output when it returned undefined", function() { - var obj = {a: "b"} - obj.self = obj - obj.selves = [obj, obj] - - function decycle() {} - stringify(obj, null, 2, decycle).must.eql(jsonify({ - a: "b", - selves: [null, null] - })) - }) - - it("must throw given a decycler that returns a cycle", function() { - var obj = {} - obj.self = obj - var err - function identity(key, value) { return value } - try { stringify(obj, null, 2, identity) } catch (ex) { err = ex } - err.must.be.an.instanceof(TypeError) - }) - - describe(".getSerialize", function() { - it("must stringify circular objects", function() { - var obj = {a: "b"} - obj.circularRef = obj - obj.list = [obj, obj] - - var json = JSON.stringify(obj, stringify.getSerialize(), 2) - json.must.eql(jsonify({ - "a": "b", - "circularRef": "[Circular ~]", - "list": ["[Circular ~]", "[Circular ~]"] - })) - }) - - // This is the behavior as of Mar 3, 2015. - // The serializer function keeps state inside the returned function and - // so far I'm not sure how to not do that. JSON.stringify's replacer is not - // called _after_ serialization. - xit("must return a function that could be called twice", function() { - var obj = {name: "Alice"} - obj.self = obj - - var json - var serializer = stringify.getSerialize() - - json = JSON.stringify(obj, serializer, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - - json = JSON.stringify(obj, serializer, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - }) - }) -}) - -function bangString(key, value) { - return typeof value == "string" ? value + "!" : value -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/HISTORY.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/HISTORY.md deleted file mode 100644 index 64241d97..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,177 +0,0 @@ -2.1.8 / 2015-11-30 -================== - - * deps: mime-db@~1.20.0 - - Add new mime types - -2.1.7 / 2015-09-20 -================== - - * deps: mime-db@~1.19.0 - - Add new mime types - -2.1.6 / 2015-09-03 -================== - - * deps: mime-db@~1.18.0 - - Add new mime types - -2.1.5 / 2015-08-20 -================== - - * deps: mime-db@~1.17.0 - - Add new mime types - -2.1.4 / 2015-07-30 -================== - - * deps: mime-db@~1.16.0 - - Add new mime types - -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/LICENSE deleted file mode 100644 index 06166077..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/README.md deleted file mode 100644 index e26295d0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/node/v/mime-types.svg -[node-version-url]: http://nodejs.org/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/index.js deleted file mode 100644 index f7008b24..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/ -var textTypeRegExp = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && textTypeRegExp.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType(str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup(path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps(extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType(type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' - && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md deleted file mode 100644 index c7f8b5a3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/HISTORY.md +++ /dev/null @@ -1,287 +0,0 @@ -1.20.0 / 2015-11-10 -=================== - - * Add `application/cdni` - * Add `application/csvm+json` - * Add `application/rfc+xml` - * Add `application/vnd.3gpp.access-transfer-events+xml` - * Add `application/vnd.3gpp.srvcc-ext+xml` - * Add `application/vnd.ms-windows.wsd.oob` - * Add `application/vnd.oxli.countgraph` - * Add `application/vnd.pagerduty+json` - * Add `text/x-suse-ymp` - -1.19.0 / 2015-09-17 -=================== - - * Add `application/vnd.3gpp-prose-pc3ch+xml` - * Add `application/vnd.3gpp.srvcc-info+xml` - * Add `application/vnd.apple.pkpass` - * Add `application/vnd.drive+json` - -1.18.0 / 2015-09-03 -=================== - - * Add `application/pkcs12` - * Add `application/vnd.3gpp-prose+xml` - * Add `application/vnd.3gpp.mid-call+xml` - * Add `application/vnd.3gpp.state-and-event-info+xml` - * Add `application/vnd.anki` - * Add `application/vnd.firemonkeys.cloudcell` - * Add `application/vnd.openblox.game+xml` - * Add `application/vnd.openblox.game-binary` - -1.17.0 / 2015-08-13 -=================== - - * Add `application/x-msdos-program` - * Add `audio/g711-0` - * Add `image/vnd.mozilla.apng` - * Add extension `.exe` to `application/x-msdos-program` - -1.16.0 / 2015-07-29 -=================== - - * Add `application/vnd.uri-map` - -1.15.0 / 2015-07-13 -=================== - - * Add `application/x-httpd-php` - -1.14.0 / 2015-06-25 -=================== - - * Add `application/scim+json` - * Add `application/vnd.3gpp.ussd+xml` - * Add `application/vnd.biopax.rdf+xml` - * Add `text/x-processing` - -1.13.0 / 2015-06-07 -=================== - - * Add nginx as a source - * Add `application/x-cocoa` - * Add `application/x-java-archive-diff` - * Add `application/x-makeself` - * Add `application/x-perl` - * Add `application/x-pilot` - * Add `application/x-redhat-package-manager` - * Add `application/x-sea` - * Add `audio/x-m4a` - * Add `audio/x-realaudio` - * Add `image/x-jng` - * Add `text/mathml` - -1.12.0 / 2015-06-05 -=================== - - * Add `application/bdoc` - * Add `application/vnd.hyperdrive+json` - * Add `application/x-bdoc` - * Add extension `.rtf` to `text/rtf` - -1.11.0 / 2015-05-31 -=================== - - * Add `audio/wav` - * Add `audio/wave` - * Add extension `.litcoffee` to `text/coffeescript` - * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` - * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` - -1.10.0 / 2015-05-19 -=================== - - * Add `application/vnd.balsamiq.bmpr` - * Add `application/vnd.microsoft.portable-executable` - * Add `application/x-ns-proxy-autoconfig` - -1.9.1 / 2015-04-19 -================== - - * Remove `.json` extension from `application/manifest+json` - - This is causing bugs downstream - -1.9.0 / 2015-04-19 -================== - - * Add `application/manifest+json` - * Add `application/vnd.micro+json` - * Add `image/vnd.zbrush.pcx` - * Add `image/x-ms-bmp` - -1.8.0 / 2015-03-13 -================== - - * Add `application/vnd.citationstyles.style+xml` - * Add `application/vnd.fastcopy-disk-image` - * Add `application/vnd.gov.sk.xmldatacontainer+xml` - * Add extension `.jsonld` to `application/ld+json` - -1.7.0 / 2015-02-08 -================== - - * Add `application/vnd.gerber` - * Add `application/vnd.msa-disk-image` - -1.6.1 / 2015-02-05 -================== - - * Community extensions ownership transferred from `node-mime` - -1.6.0 / 2015-01-29 -================== - - * Add `application/jose` - * Add `application/jose+json` - * Add `application/json-seq` - * Add `application/jwk+json` - * Add `application/jwk-set+json` - * Add `application/jwt` - * Add `application/rdap+json` - * Add `application/vnd.gov.sk.e-form+xml` - * Add `application/vnd.ims.imsccv1p3` - -1.5.0 / 2014-12-30 -================== - - * Add `application/vnd.oracle.resource+json` - * Fix various invalid MIME type entries - - `application/mbox+xml` - - `application/oscp-response` - - `application/vwg-multiplexed` - - `audio/g721` - -1.4.0 / 2014-12-21 -================== - - * Add `application/vnd.ims.imsccv1p2` - * Fix various invalid MIME type entries - - `application/vnd-acucobol` - - `application/vnd-curl` - - `application/vnd-dart` - - `application/vnd-dxr` - - `application/vnd-fdf` - - `application/vnd-mif` - - `application/vnd-sema` - - `application/vnd-wap-wmlc` - - `application/vnd.adobe.flash-movie` - - `application/vnd.dece-zip` - - `application/vnd.dvb_service` - - `application/vnd.micrografx-igx` - - `application/vnd.sealed-doc` - - `application/vnd.sealed-eml` - - `application/vnd.sealed-mht` - - `application/vnd.sealed-ppt` - - `application/vnd.sealed-tiff` - - `application/vnd.sealed-xls` - - `application/vnd.sealedmedia.softseal-html` - - `application/vnd.sealedmedia.softseal-pdf` - - `application/vnd.wap-slc` - - `application/vnd.wap-wbxml` - - `audio/vnd.sealedmedia.softseal-mpeg` - - `image/vnd-djvu` - - `image/vnd-svf` - - `image/vnd-wap-wbmp` - - `image/vnd.sealed-png` - - `image/vnd.sealedmedia.softseal-gif` - - `image/vnd.sealedmedia.softseal-jpg` - - `model/vnd-dwf` - - `model/vnd.parasolid.transmit-binary` - - `model/vnd.parasolid.transmit-text` - - `text/vnd-a` - - `text/vnd-curl` - - `text/vnd.wap-wml` - * Remove example template MIME types - - `application/example` - - `audio/example` - - `image/example` - - `message/example` - - `model/example` - - `multipart/example` - - `text/example` - - `video/example` - -1.3.1 / 2014-12-16 -================== - - * Fix missing extensions - - `application/json5` - - `text/hjson` - -1.3.0 / 2014-12-07 -================== - - * Add `application/a2l` - * Add `application/aml` - * Add `application/atfx` - * Add `application/atxml` - * Add `application/cdfx+xml` - * Add `application/dii` - * Add `application/json5` - * Add `application/lxf` - * Add `application/mf4` - * Add `application/vnd.apache.thrift.compact` - * Add `application/vnd.apache.thrift.json` - * Add `application/vnd.coffeescript` - * Add `application/vnd.enphase.envoy` - * Add `application/vnd.ims.imsccv1p1` - * Add `text/csv-schema` - * Add `text/hjson` - * Add `text/markdown` - * Add `text/yaml` - -1.2.0 / 2014-11-09 -================== - - * Add `application/cea` - * Add `application/dit` - * Add `application/vnd.gov.sk.e-form+zip` - * Add `application/vnd.tmd.mediaflex.api+xml` - * Type `application/epub+zip` is now IANA-registered - -1.1.2 / 2014-10-23 -================== - - * Rebuild database for `application/x-www-form-urlencoded` change - -1.1.1 / 2014-10-20 -================== - - * Mark `application/x-www-form-urlencoded` as compressible. - -1.1.0 / 2014-09-28 -================== - - * Add `application/font-woff2` - -1.0.3 / 2014-09-25 -================== - - * Fix engine requirement in package - -1.0.2 / 2014-09-25 -================== - - * Add `application/coap-group+json` - * Add `application/dcd` - * Add `application/vnd.apache.thrift.binary` - * Add `image/vnd.tencent.tap` - * Mark all JSON-derived types as compressible - * Update `text/vtt` data - -1.0.1 / 2014-08-30 -================== - - * Fix extension ordering - -1.0.0 / 2014-08-30 -================== - - * Add `application/atf` - * Add `application/merge-patch+json` - * Add `multipart/x-mixed-replace` - * Add `source: 'apache'` metadata - * Add `source: 'iana'` metadata - * Remove badly-assumed charset data diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE deleted file mode 100644 index a7ae8ee9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2014 Jonathan Ong me@jongleberry.com - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md deleted file mode 100644 index 164cca03..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# mime-db - -[![NPM Version][npm-version-image]][npm-url] -[![NPM Downloads][npm-downloads-image]][npm-url] -[![Node.js Version][node-image]][node-url] -[![Build Status][travis-image]][travis-url] -[![Coverage Status][coveralls-image]][coveralls-url] - -This is a database of all mime types. -It consists of a single, public JSON file and does not include any logic, -allowing it to remain as un-opinionated as possible with an API. -It aggregates data from the following sources: - -- http://www.iana.org/assignments/media-types/media-types.xhtml -- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types - -## Installation - -```bash -npm install mime-db -``` - -### Database Download - -If you're crazy enough to use this in the browser, you can just grab the -JSON file using [RawGit](https://rawgit.com/). It is recommended to replace -`master` with [a release tag](https://github.com/jshttp/mime-db/tags) as the -JSON format may change in the future. - -``` -https://cdn.rawgit.com/jshttp/mime-db/master/db.json -``` - -## Usage - -```js -var db = require('mime-db'); - -// grab data on .js files -var data = db['application/javascript']; -``` - -## Data Structure - -The JSON file is a map lookup for lowercased mime types. -Each mime type has the following properties: - -- `.source` - where the mime type is defined. - If not set, it's probably a custom media type. - - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) - - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) - - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) -- `.extensions[]` - known extensions associated with this mime type. -- `.compressible` - whether a file of this type is can be gzipped. -- `.charset` - the default charset associated with this type, if any. - -If unknown, every property could be `undefined`. - -## Contributing - -To edit the database, only make PRs against `src/custom.json` or -`src/custom-suffix.json`. - -To update the build, run `npm run build`. - -## Adding Custom Media Types - -The best way to get new media types included in this library is to register -them with the IANA. The community registration procedure is outlined in -[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types -registered with the IANA are automatically pulled into this library. - -[npm-version-image]: https://img.shields.io/npm/v/mime-db.svg -[npm-downloads-image]: https://img.shields.io/npm/dm/mime-db.svg -[npm-url]: https://npmjs.org/package/mime-db -[travis-image]: https://img.shields.io/travis/jshttp/mime-db/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-db -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-db/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master -[node-image]: https://img.shields.io/node/v/mime-db.svg -[node-url]: http://nodejs.org/download/ diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json deleted file mode 100644 index 123e7f95..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/db.json +++ /dev/null @@ -1,6504 +0,0 @@ -{ - "application/1d-interleaved-parityfec": { - "source": "iana" - }, - "application/3gpdash-qoe-report+xml": { - "source": "iana" - }, - "application/3gpp-ims+xml": { - "source": "iana" - }, - "application/a2l": { - "source": "iana" - }, - "application/activemessage": { - "source": "iana" - }, - "application/alto-costmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-costmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/alto-directory+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcost+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointcostparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointprop+json": { - "source": "iana", - "compressible": true - }, - "application/alto-endpointpropparams+json": { - "source": "iana", - "compressible": true - }, - "application/alto-error+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmap+json": { - "source": "iana", - "compressible": true - }, - "application/alto-networkmapfilter+json": { - "source": "iana", - "compressible": true - }, - "application/aml": { - "source": "iana" - }, - "application/andrew-inset": { - "source": "iana", - "extensions": ["ez"] - }, - "application/applefile": { - "source": "iana" - }, - "application/applixware": { - "source": "apache", - "extensions": ["aw"] - }, - "application/atf": { - "source": "iana" - }, - "application/atfx": { - "source": "iana" - }, - "application/atom+xml": { - "source": "iana", - "compressible": true, - "extensions": ["atom"] - }, - "application/atomcat+xml": { - "source": "iana", - "extensions": ["atomcat"] - }, - "application/atomdeleted+xml": { - "source": "iana" - }, - "application/atomicmail": { - "source": "iana" - }, - "application/atomsvc+xml": { - "source": "iana", - "extensions": ["atomsvc"] - }, - "application/atxml": { - "source": "iana" - }, - "application/auth-policy+xml": { - "source": "iana" - }, - "application/bacnet-xdd+zip": { - "source": "iana" - }, - "application/batch-smtp": { - "source": "iana" - }, - "application/bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/beep+xml": { - "source": "iana" - }, - "application/calendar+json": { - "source": "iana", - "compressible": true - }, - "application/calendar+xml": { - "source": "iana" - }, - "application/call-completion": { - "source": "iana" - }, - "application/cals-1840": { - "source": "iana" - }, - "application/cbor": { - "source": "iana" - }, - "application/ccmp+xml": { - "source": "iana" - }, - "application/ccxml+xml": { - "source": "iana", - "extensions": ["ccxml"] - }, - "application/cdfx+xml": { - "source": "iana" - }, - "application/cdmi-capability": { - "source": "iana", - "extensions": ["cdmia"] - }, - "application/cdmi-container": { - "source": "iana", - "extensions": ["cdmic"] - }, - "application/cdmi-domain": { - "source": "iana", - "extensions": ["cdmid"] - }, - "application/cdmi-object": { - "source": "iana", - "extensions": ["cdmio"] - }, - "application/cdmi-queue": { - "source": "iana", - "extensions": ["cdmiq"] - }, - "application/cdni": { - "source": "iana" - }, - "application/cea": { - "source": "iana" - }, - "application/cea-2018+xml": { - "source": "iana" - }, - "application/cellml+xml": { - "source": "iana" - }, - "application/cfw": { - "source": "iana" - }, - "application/cms": { - "source": "iana" - }, - "application/cnrp+xml": { - "source": "iana" - }, - "application/coap-group+json": { - "source": "iana", - "compressible": true - }, - "application/commonground": { - "source": "iana" - }, - "application/conference-info+xml": { - "source": "iana" - }, - "application/cpl+xml": { - "source": "iana" - }, - "application/csrattrs": { - "source": "iana" - }, - "application/csta+xml": { - "source": "iana" - }, - "application/cstadata+xml": { - "source": "iana" - }, - "application/csvm+json": { - "source": "iana", - "compressible": true - }, - "application/cu-seeme": { - "source": "apache", - "extensions": ["cu"] - }, - "application/cybercash": { - "source": "iana" - }, - "application/dart": { - "compressible": true - }, - "application/dash+xml": { - "source": "iana", - "extensions": ["mdp"] - }, - "application/dashdelta": { - "source": "iana" - }, - "application/davmount+xml": { - "source": "iana", - "extensions": ["davmount"] - }, - "application/dca-rft": { - "source": "iana" - }, - "application/dcd": { - "source": "iana" - }, - "application/dec-dx": { - "source": "iana" - }, - "application/dialog-info+xml": { - "source": "iana" - }, - "application/dicom": { - "source": "iana" - }, - "application/dii": { - "source": "iana" - }, - "application/dit": { - "source": "iana" - }, - "application/dns": { - "source": "iana" - }, - "application/docbook+xml": { - "source": "apache", - "extensions": ["dbk"] - }, - "application/dskpp+xml": { - "source": "iana" - }, - "application/dssc+der": { - "source": "iana", - "extensions": ["dssc"] - }, - "application/dssc+xml": { - "source": "iana", - "extensions": ["xdssc"] - }, - "application/dvcs": { - "source": "iana" - }, - "application/ecmascript": { - "source": "iana", - "compressible": true, - "extensions": ["ecma"] - }, - "application/edi-consent": { - "source": "iana" - }, - "application/edi-x12": { - "source": "iana", - "compressible": false - }, - "application/edifact": { - "source": "iana", - "compressible": false - }, - "application/emma+xml": { - "source": "iana", - "extensions": ["emma"] - }, - "application/emotionml+xml": { - "source": "iana" - }, - "application/encaprtp": { - "source": "iana" - }, - "application/epp+xml": { - "source": "iana" - }, - "application/epub+zip": { - "source": "iana", - "extensions": ["epub"] - }, - "application/eshop": { - "source": "iana" - }, - "application/exi": { - "source": "iana", - "extensions": ["exi"] - }, - "application/fastinfoset": { - "source": "iana" - }, - "application/fastsoap": { - "source": "iana" - }, - "application/fdt+xml": { - "source": "iana" - }, - "application/fits": { - "source": "iana" - }, - "application/font-sfnt": { - "source": "iana" - }, - "application/font-tdpfr": { - "source": "iana", - "extensions": ["pfr"] - }, - "application/font-woff": { - "source": "iana", - "compressible": false, - "extensions": ["woff"] - }, - "application/font-woff2": { - "compressible": false, - "extensions": ["woff2"] - }, - "application/framework-attributes+xml": { - "source": "iana" - }, - "application/gml+xml": { - "source": "apache", - "extensions": ["gml"] - }, - "application/gpx+xml": { - "source": "apache", - "extensions": ["gpx"] - }, - "application/gxf": { - "source": "apache", - "extensions": ["gxf"] - }, - "application/gzip": { - "source": "iana", - "compressible": false - }, - "application/h224": { - "source": "iana" - }, - "application/held+xml": { - "source": "iana" - }, - "application/http": { - "source": "iana" - }, - "application/hyperstudio": { - "source": "iana", - "extensions": ["stk"] - }, - "application/ibe-key-request+xml": { - "source": "iana" - }, - "application/ibe-pkg-reply+xml": { - "source": "iana" - }, - "application/ibe-pp-data": { - "source": "iana" - }, - "application/iges": { - "source": "iana" - }, - "application/im-iscomposing+xml": { - "source": "iana" - }, - "application/index": { - "source": "iana" - }, - "application/index.cmd": { - "source": "iana" - }, - "application/index.obj": { - "source": "iana" - }, - "application/index.response": { - "source": "iana" - }, - "application/index.vnd": { - "source": "iana" - }, - "application/inkml+xml": { - "source": "iana", - "extensions": ["ink","inkml"] - }, - "application/iotp": { - "source": "iana" - }, - "application/ipfix": { - "source": "iana", - "extensions": ["ipfix"] - }, - "application/ipp": { - "source": "iana" - }, - "application/isup": { - "source": "iana" - }, - "application/its+xml": { - "source": "iana" - }, - "application/java-archive": { - "source": "apache", - "compressible": false, - "extensions": ["jar","war","ear"] - }, - "application/java-serialized-object": { - "source": "apache", - "compressible": false, - "extensions": ["ser"] - }, - "application/java-vm": { - "source": "apache", - "compressible": false, - "extensions": ["class"] - }, - "application/javascript": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["js"] - }, - "application/jose": { - "source": "iana" - }, - "application/jose+json": { - "source": "iana", - "compressible": true - }, - "application/jrd+json": { - "source": "iana", - "compressible": true - }, - "application/json": { - "source": "iana", - "charset": "UTF-8", - "compressible": true, - "extensions": ["json","map"] - }, - "application/json-patch+json": { - "source": "iana", - "compressible": true - }, - "application/json-seq": { - "source": "iana" - }, - "application/json5": { - "extensions": ["json5"] - }, - "application/jsonml+json": { - "source": "apache", - "compressible": true, - "extensions": ["jsonml"] - }, - "application/jwk+json": { - "source": "iana", - "compressible": true - }, - "application/jwk-set+json": { - "source": "iana", - "compressible": true - }, - "application/jwt": { - "source": "iana" - }, - "application/kpml-request+xml": { - "source": "iana" - }, - "application/kpml-response+xml": { - "source": "iana" - }, - "application/ld+json": { - "source": "iana", - "compressible": true, - "extensions": ["jsonld"] - }, - "application/link-format": { - "source": "iana" - }, - "application/load-control+xml": { - "source": "iana" - }, - "application/lost+xml": { - "source": "iana", - "extensions": ["lostxml"] - }, - "application/lostsync+xml": { - "source": "iana" - }, - "application/lxf": { - "source": "iana" - }, - "application/mac-binhex40": { - "source": "iana", - "extensions": ["hqx"] - }, - "application/mac-compactpro": { - "source": "apache", - "extensions": ["cpt"] - }, - "application/macwriteii": { - "source": "iana" - }, - "application/mads+xml": { - "source": "iana", - "extensions": ["mads"] - }, - "application/manifest+json": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["webmanifest"] - }, - "application/marc": { - "source": "iana", - "extensions": ["mrc"] - }, - "application/marcxml+xml": { - "source": "iana", - "extensions": ["mrcx"] - }, - "application/mathematica": { - "source": "iana", - "extensions": ["ma","nb","mb"] - }, - "application/mathml+xml": { - "source": "iana", - "extensions": ["mathml"] - }, - "application/mathml-content+xml": { - "source": "iana" - }, - "application/mathml-presentation+xml": { - "source": "iana" - }, - "application/mbms-associated-procedure-description+xml": { - "source": "iana" - }, - "application/mbms-deregister+xml": { - "source": "iana" - }, - "application/mbms-envelope+xml": { - "source": "iana" - }, - "application/mbms-msk+xml": { - "source": "iana" - }, - "application/mbms-msk-response+xml": { - "source": "iana" - }, - "application/mbms-protection-description+xml": { - "source": "iana" - }, - "application/mbms-reception-report+xml": { - "source": "iana" - }, - "application/mbms-register+xml": { - "source": "iana" - }, - "application/mbms-register-response+xml": { - "source": "iana" - }, - "application/mbms-schedule+xml": { - "source": "iana" - }, - "application/mbms-user-service-description+xml": { - "source": "iana" - }, - "application/mbox": { - "source": "iana", - "extensions": ["mbox"] - }, - "application/media-policy-dataset+xml": { - "source": "iana" - }, - "application/media_control+xml": { - "source": "iana" - }, - "application/mediaservercontrol+xml": { - "source": "iana", - "extensions": ["mscml"] - }, - "application/merge-patch+json": { - "source": "iana", - "compressible": true - }, - "application/metalink+xml": { - "source": "apache", - "extensions": ["metalink"] - }, - "application/metalink4+xml": { - "source": "iana", - "extensions": ["meta4"] - }, - "application/mets+xml": { - "source": "iana", - "extensions": ["mets"] - }, - "application/mf4": { - "source": "iana" - }, - "application/mikey": { - "source": "iana" - }, - "application/mods+xml": { - "source": "iana", - "extensions": ["mods"] - }, - "application/moss-keys": { - "source": "iana" - }, - "application/moss-signature": { - "source": "iana" - }, - "application/mosskey-data": { - "source": "iana" - }, - "application/mosskey-request": { - "source": "iana" - }, - "application/mp21": { - "source": "iana", - "extensions": ["m21","mp21"] - }, - "application/mp4": { - "source": "iana", - "extensions": ["mp4s","m4p"] - }, - "application/mpeg4-generic": { - "source": "iana" - }, - "application/mpeg4-iod": { - "source": "iana" - }, - "application/mpeg4-iod-xmt": { - "source": "iana" - }, - "application/mrb-consumer+xml": { - "source": "iana" - }, - "application/mrb-publish+xml": { - "source": "iana" - }, - "application/msc-ivr+xml": { - "source": "iana" - }, - "application/msc-mixer+xml": { - "source": "iana" - }, - "application/msword": { - "source": "iana", - "compressible": false, - "extensions": ["doc","dot"] - }, - "application/mxf": { - "source": "iana", - "extensions": ["mxf"] - }, - "application/nasdata": { - "source": "iana" - }, - "application/news-checkgroups": { - "source": "iana" - }, - "application/news-groupinfo": { - "source": "iana" - }, - "application/news-transmission": { - "source": "iana" - }, - "application/nlsml+xml": { - "source": "iana" - }, - "application/nss": { - "source": "iana" - }, - "application/ocsp-request": { - "source": "iana" - }, - "application/ocsp-response": { - "source": "iana" - }, - "application/octet-stream": { - "source": "iana", - "compressible": false, - "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] - }, - "application/oda": { - "source": "iana", - "extensions": ["oda"] - }, - "application/odx": { - "source": "iana" - }, - "application/oebps-package+xml": { - "source": "iana", - "extensions": ["opf"] - }, - "application/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["ogx"] - }, - "application/omdoc+xml": { - "source": "apache", - "extensions": ["omdoc"] - }, - "application/onenote": { - "source": "apache", - "extensions": ["onetoc","onetoc2","onetmp","onepkg"] - }, - "application/oxps": { - "source": "iana", - "extensions": ["oxps"] - }, - "application/p2p-overlay+xml": { - "source": "iana" - }, - "application/parityfec": { - "source": "iana" - }, - "application/patch-ops-error+xml": { - "source": "iana", - "extensions": ["xer"] - }, - "application/pdf": { - "source": "iana", - "compressible": false, - "extensions": ["pdf"] - }, - "application/pdx": { - "source": "iana" - }, - "application/pgp-encrypted": { - "source": "iana", - "compressible": false, - "extensions": ["pgp"] - }, - "application/pgp-keys": { - "source": "iana" - }, - "application/pgp-signature": { - "source": "iana", - "extensions": ["asc","sig"] - }, - "application/pics-rules": { - "source": "apache", - "extensions": ["prf"] - }, - "application/pidf+xml": { - "source": "iana" - }, - "application/pidf-diff+xml": { - "source": "iana" - }, - "application/pkcs10": { - "source": "iana", - "extensions": ["p10"] - }, - "application/pkcs12": { - "source": "iana" - }, - "application/pkcs7-mime": { - "source": "iana", - "extensions": ["p7m","p7c"] - }, - "application/pkcs7-signature": { - "source": "iana", - "extensions": ["p7s"] - }, - "application/pkcs8": { - "source": "iana", - "extensions": ["p8"] - }, - "application/pkix-attr-cert": { - "source": "iana", - "extensions": ["ac"] - }, - "application/pkix-cert": { - "source": "iana", - "extensions": ["cer"] - }, - "application/pkix-crl": { - "source": "iana", - "extensions": ["crl"] - }, - "application/pkix-pkipath": { - "source": "iana", - "extensions": ["pkipath"] - }, - "application/pkixcmp": { - "source": "iana", - "extensions": ["pki"] - }, - "application/pls+xml": { - "source": "iana", - "extensions": ["pls"] - }, - "application/poc-settings+xml": { - "source": "iana" - }, - "application/postscript": { - "source": "iana", - "compressible": true, - "extensions": ["ai","eps","ps"] - }, - "application/provenance+xml": { - "source": "iana" - }, - "application/prs.alvestrand.titrax-sheet": { - "source": "iana" - }, - "application/prs.cww": { - "source": "iana", - "extensions": ["cww"] - }, - "application/prs.hpub+zip": { - "source": "iana" - }, - "application/prs.nprend": { - "source": "iana" - }, - "application/prs.plucker": { - "source": "iana" - }, - "application/prs.rdf-xml-crypt": { - "source": "iana" - }, - "application/prs.xsf+xml": { - "source": "iana" - }, - "application/pskc+xml": { - "source": "iana", - "extensions": ["pskcxml"] - }, - "application/qsig": { - "source": "iana" - }, - "application/raptorfec": { - "source": "iana" - }, - "application/rdap+json": { - "source": "iana", - "compressible": true - }, - "application/rdf+xml": { - "source": "iana", - "compressible": true, - "extensions": ["rdf"] - }, - "application/reginfo+xml": { - "source": "iana", - "extensions": ["rif"] - }, - "application/relax-ng-compact-syntax": { - "source": "iana", - "extensions": ["rnc"] - }, - "application/remote-printing": { - "source": "iana" - }, - "application/reputon+json": { - "source": "iana", - "compressible": true - }, - "application/resource-lists+xml": { - "source": "iana", - "extensions": ["rl"] - }, - "application/resource-lists-diff+xml": { - "source": "iana", - "extensions": ["rld"] - }, - "application/rfc+xml": { - "source": "iana" - }, - "application/riscos": { - "source": "iana" - }, - "application/rlmi+xml": { - "source": "iana" - }, - "application/rls-services+xml": { - "source": "iana", - "extensions": ["rs"] - }, - "application/rpki-ghostbusters": { - "source": "iana", - "extensions": ["gbr"] - }, - "application/rpki-manifest": { - "source": "iana", - "extensions": ["mft"] - }, - "application/rpki-roa": { - "source": "iana", - "extensions": ["roa"] - }, - "application/rpki-updown": { - "source": "iana" - }, - "application/rsd+xml": { - "source": "apache", - "extensions": ["rsd"] - }, - "application/rss+xml": { - "source": "apache", - "compressible": true, - "extensions": ["rss"] - }, - "application/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "application/rtploopback": { - "source": "iana" - }, - "application/rtx": { - "source": "iana" - }, - "application/samlassertion+xml": { - "source": "iana" - }, - "application/samlmetadata+xml": { - "source": "iana" - }, - "application/sbml+xml": { - "source": "iana", - "extensions": ["sbml"] - }, - "application/scaip+xml": { - "source": "iana" - }, - "application/scim+json": { - "source": "iana", - "compressible": true - }, - "application/scvp-cv-request": { - "source": "iana", - "extensions": ["scq"] - }, - "application/scvp-cv-response": { - "source": "iana", - "extensions": ["scs"] - }, - "application/scvp-vp-request": { - "source": "iana", - "extensions": ["spq"] - }, - "application/scvp-vp-response": { - "source": "iana", - "extensions": ["spp"] - }, - "application/sdp": { - "source": "iana", - "extensions": ["sdp"] - }, - "application/sep+xml": { - "source": "iana" - }, - "application/sep-exi": { - "source": "iana" - }, - "application/session-info": { - "source": "iana" - }, - "application/set-payment": { - "source": "iana" - }, - "application/set-payment-initiation": { - "source": "iana", - "extensions": ["setpay"] - }, - "application/set-registration": { - "source": "iana" - }, - "application/set-registration-initiation": { - "source": "iana", - "extensions": ["setreg"] - }, - "application/sgml": { - "source": "iana" - }, - "application/sgml-open-catalog": { - "source": "iana" - }, - "application/shf+xml": { - "source": "iana", - "extensions": ["shf"] - }, - "application/sieve": { - "source": "iana" - }, - "application/simple-filter+xml": { - "source": "iana" - }, - "application/simple-message-summary": { - "source": "iana" - }, - "application/simplesymbolcontainer": { - "source": "iana" - }, - "application/slate": { - "source": "iana" - }, - "application/smil": { - "source": "iana" - }, - "application/smil+xml": { - "source": "iana", - "extensions": ["smi","smil"] - }, - "application/smpte336m": { - "source": "iana" - }, - "application/soap+fastinfoset": { - "source": "iana" - }, - "application/soap+xml": { - "source": "iana", - "compressible": true - }, - "application/sparql-query": { - "source": "iana", - "extensions": ["rq"] - }, - "application/sparql-results+xml": { - "source": "iana", - "extensions": ["srx"] - }, - "application/spirits-event+xml": { - "source": "iana" - }, - "application/sql": { - "source": "iana" - }, - "application/srgs": { - "source": "iana", - "extensions": ["gram"] - }, - "application/srgs+xml": { - "source": "iana", - "extensions": ["grxml"] - }, - "application/sru+xml": { - "source": "iana", - "extensions": ["sru"] - }, - "application/ssdl+xml": { - "source": "apache", - "extensions": ["ssdl"] - }, - "application/ssml+xml": { - "source": "iana", - "extensions": ["ssml"] - }, - "application/tamp-apex-update": { - "source": "iana" - }, - "application/tamp-apex-update-confirm": { - "source": "iana" - }, - "application/tamp-community-update": { - "source": "iana" - }, - "application/tamp-community-update-confirm": { - "source": "iana" - }, - "application/tamp-error": { - "source": "iana" - }, - "application/tamp-sequence-adjust": { - "source": "iana" - }, - "application/tamp-sequence-adjust-confirm": { - "source": "iana" - }, - "application/tamp-status-query": { - "source": "iana" - }, - "application/tamp-status-response": { - "source": "iana" - }, - "application/tamp-update": { - "source": "iana" - }, - "application/tamp-update-confirm": { - "source": "iana" - }, - "application/tar": { - "compressible": true - }, - "application/tei+xml": { - "source": "iana", - "extensions": ["tei","teicorpus"] - }, - "application/thraud+xml": { - "source": "iana", - "extensions": ["tfi"] - }, - "application/timestamp-query": { - "source": "iana" - }, - "application/timestamp-reply": { - "source": "iana" - }, - "application/timestamped-data": { - "source": "iana", - "extensions": ["tsd"] - }, - "application/ttml+xml": { - "source": "iana" - }, - "application/tve-trigger": { - "source": "iana" - }, - "application/ulpfec": { - "source": "iana" - }, - "application/urc-grpsheet+xml": { - "source": "iana" - }, - "application/urc-ressheet+xml": { - "source": "iana" - }, - "application/urc-targetdesc+xml": { - "source": "iana" - }, - "application/urc-uisocketdesc+xml": { - "source": "iana" - }, - "application/vcard+json": { - "source": "iana", - "compressible": true - }, - "application/vcard+xml": { - "source": "iana" - }, - "application/vemmi": { - "source": "iana" - }, - "application/vividence.scriptfile": { - "source": "apache" - }, - "application/vnd.3gpp-prose+xml": { - "source": "iana" - }, - "application/vnd.3gpp-prose-pc3ch+xml": { - "source": "iana" - }, - "application/vnd.3gpp.access-transfer-events+xml": { - "source": "iana" - }, - "application/vnd.3gpp.bsf+xml": { - "source": "iana" - }, - "application/vnd.3gpp.mid-call+xml": { - "source": "iana" - }, - "application/vnd.3gpp.pic-bw-large": { - "source": "iana", - "extensions": ["plb"] - }, - "application/vnd.3gpp.pic-bw-small": { - "source": "iana", - "extensions": ["psb"] - }, - "application/vnd.3gpp.pic-bw-var": { - "source": "iana", - "extensions": ["pvb"] - }, - "application/vnd.3gpp.sms": { - "source": "iana" - }, - "application/vnd.3gpp.srvcc-ext+xml": { - "source": "iana" - }, - "application/vnd.3gpp.srvcc-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.state-and-event-info+xml": { - "source": "iana" - }, - "application/vnd.3gpp.ussd+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.bcmcsinfo+xml": { - "source": "iana" - }, - "application/vnd.3gpp2.sms": { - "source": "iana" - }, - "application/vnd.3gpp2.tcap": { - "source": "iana", - "extensions": ["tcap"] - }, - "application/vnd.3m.post-it-notes": { - "source": "iana", - "extensions": ["pwn"] - }, - "application/vnd.accpac.simply.aso": { - "source": "iana", - "extensions": ["aso"] - }, - "application/vnd.accpac.simply.imp": { - "source": "iana", - "extensions": ["imp"] - }, - "application/vnd.acucobol": { - "source": "iana", - "extensions": ["acu"] - }, - "application/vnd.acucorp": { - "source": "iana", - "extensions": ["atc","acutc"] - }, - "application/vnd.adobe.air-application-installer-package+zip": { - "source": "apache", - "extensions": ["air"] - }, - "application/vnd.adobe.flash.movie": { - "source": "iana" - }, - "application/vnd.adobe.formscentral.fcdt": { - "source": "iana", - "extensions": ["fcdt"] - }, - "application/vnd.adobe.fxp": { - "source": "iana", - "extensions": ["fxp","fxpl"] - }, - "application/vnd.adobe.partial-upload": { - "source": "iana" - }, - "application/vnd.adobe.xdp+xml": { - "source": "iana", - "extensions": ["xdp"] - }, - "application/vnd.adobe.xfdf": { - "source": "iana", - "extensions": ["xfdf"] - }, - "application/vnd.aether.imp": { - "source": "iana" - }, - "application/vnd.ah-barcode": { - "source": "iana" - }, - "application/vnd.ahead.space": { - "source": "iana", - "extensions": ["ahead"] - }, - "application/vnd.airzip.filesecure.azf": { - "source": "iana", - "extensions": ["azf"] - }, - "application/vnd.airzip.filesecure.azs": { - "source": "iana", - "extensions": ["azs"] - }, - "application/vnd.amazon.ebook": { - "source": "apache", - "extensions": ["azw"] - }, - "application/vnd.americandynamics.acc": { - "source": "iana", - "extensions": ["acc"] - }, - "application/vnd.amiga.ami": { - "source": "iana", - "extensions": ["ami"] - }, - "application/vnd.amundsen.maze+xml": { - "source": "iana" - }, - "application/vnd.android.package-archive": { - "source": "apache", - "compressible": false, - "extensions": ["apk"] - }, - "application/vnd.anki": { - "source": "iana" - }, - "application/vnd.anser-web-certificate-issue-initiation": { - "source": "iana", - "extensions": ["cii"] - }, - "application/vnd.anser-web-funds-transfer-initiation": { - "source": "apache", - "extensions": ["fti"] - }, - "application/vnd.antix.game-component": { - "source": "iana", - "extensions": ["atx"] - }, - "application/vnd.apache.thrift.binary": { - "source": "iana" - }, - "application/vnd.apache.thrift.compact": { - "source": "iana" - }, - "application/vnd.apache.thrift.json": { - "source": "iana" - }, - "application/vnd.api+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.apple.installer+xml": { - "source": "iana", - "extensions": ["mpkg"] - }, - "application/vnd.apple.mpegurl": { - "source": "iana", - "extensions": ["m3u8"] - }, - "application/vnd.apple.pkpass": { - "compressible": false, - "extensions": ["pkpass"] - }, - "application/vnd.arastra.swi": { - "source": "iana" - }, - "application/vnd.aristanetworks.swi": { - "source": "iana", - "extensions": ["swi"] - }, - "application/vnd.artsquare": { - "source": "iana" - }, - "application/vnd.astraea-software.iota": { - "source": "iana", - "extensions": ["iota"] - }, - "application/vnd.audiograph": { - "source": "iana", - "extensions": ["aep"] - }, - "application/vnd.autopackage": { - "source": "iana" - }, - "application/vnd.avistar+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmml+xml": { - "source": "iana" - }, - "application/vnd.balsamiq.bmpr": { - "source": "iana" - }, - "application/vnd.bekitzur-stech+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.biopax.rdf+xml": { - "source": "iana" - }, - "application/vnd.blueice.multipass": { - "source": "iana", - "extensions": ["mpm"] - }, - "application/vnd.bluetooth.ep.oob": { - "source": "iana" - }, - "application/vnd.bluetooth.le.oob": { - "source": "iana" - }, - "application/vnd.bmi": { - "source": "iana", - "extensions": ["bmi"] - }, - "application/vnd.businessobjects": { - "source": "iana", - "extensions": ["rep"] - }, - "application/vnd.cab-jscript": { - "source": "iana" - }, - "application/vnd.canon-cpdl": { - "source": "iana" - }, - "application/vnd.canon-lips": { - "source": "iana" - }, - "application/vnd.cendio.thinlinc.clientconf": { - "source": "iana" - }, - "application/vnd.century-systems.tcp_stream": { - "source": "iana" - }, - "application/vnd.chemdraw+xml": { - "source": "iana", - "extensions": ["cdxml"] - }, - "application/vnd.chipnuts.karaoke-mmd": { - "source": "iana", - "extensions": ["mmd"] - }, - "application/vnd.cinderella": { - "source": "iana", - "extensions": ["cdy"] - }, - "application/vnd.cirpack.isdn-ext": { - "source": "iana" - }, - "application/vnd.citationstyles.style+xml": { - "source": "iana" - }, - "application/vnd.claymore": { - "source": "iana", - "extensions": ["cla"] - }, - "application/vnd.cloanto.rp9": { - "source": "iana", - "extensions": ["rp9"] - }, - "application/vnd.clonk.c4group": { - "source": "iana", - "extensions": ["c4g","c4d","c4f","c4p","c4u"] - }, - "application/vnd.cluetrust.cartomobile-config": { - "source": "iana", - "extensions": ["c11amc"] - }, - "application/vnd.cluetrust.cartomobile-config-pkg": { - "source": "iana", - "extensions": ["c11amz"] - }, - "application/vnd.coffeescript": { - "source": "iana" - }, - "application/vnd.collection+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.doc+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.collection.next+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.commerce-battelle": { - "source": "iana" - }, - "application/vnd.commonspace": { - "source": "iana", - "extensions": ["csp"] - }, - "application/vnd.contact.cmsg": { - "source": "iana", - "extensions": ["cdbcmsg"] - }, - "application/vnd.cosmocaller": { - "source": "iana", - "extensions": ["cmc"] - }, - "application/vnd.crick.clicker": { - "source": "iana", - "extensions": ["clkx"] - }, - "application/vnd.crick.clicker.keyboard": { - "source": "iana", - "extensions": ["clkk"] - }, - "application/vnd.crick.clicker.palette": { - "source": "iana", - "extensions": ["clkp"] - }, - "application/vnd.crick.clicker.template": { - "source": "iana", - "extensions": ["clkt"] - }, - "application/vnd.crick.clicker.wordbank": { - "source": "iana", - "extensions": ["clkw"] - }, - "application/vnd.criticaltools.wbs+xml": { - "source": "iana", - "extensions": ["wbs"] - }, - "application/vnd.ctc-posml": { - "source": "iana", - "extensions": ["pml"] - }, - "application/vnd.ctct.ws+xml": { - "source": "iana" - }, - "application/vnd.cups-pdf": { - "source": "iana" - }, - "application/vnd.cups-postscript": { - "source": "iana" - }, - "application/vnd.cups-ppd": { - "source": "iana", - "extensions": ["ppd"] - }, - "application/vnd.cups-raster": { - "source": "iana" - }, - "application/vnd.cups-raw": { - "source": "iana" - }, - "application/vnd.curl": { - "source": "iana" - }, - "application/vnd.curl.car": { - "source": "apache", - "extensions": ["car"] - }, - "application/vnd.curl.pcurl": { - "source": "apache", - "extensions": ["pcurl"] - }, - "application/vnd.cyan.dean.root+xml": { - "source": "iana" - }, - "application/vnd.cybank": { - "source": "iana" - }, - "application/vnd.dart": { - "source": "iana", - "compressible": true, - "extensions": ["dart"] - }, - "application/vnd.data-vision.rdz": { - "source": "iana", - "extensions": ["rdz"] - }, - "application/vnd.debian.binary-package": { - "source": "iana" - }, - "application/vnd.dece.data": { - "source": "iana", - "extensions": ["uvf","uvvf","uvd","uvvd"] - }, - "application/vnd.dece.ttml+xml": { - "source": "iana", - "extensions": ["uvt","uvvt"] - }, - "application/vnd.dece.unspecified": { - "source": "iana", - "extensions": ["uvx","uvvx"] - }, - "application/vnd.dece.zip": { - "source": "iana", - "extensions": ["uvz","uvvz"] - }, - "application/vnd.denovo.fcselayout-link": { - "source": "iana", - "extensions": ["fe_launch"] - }, - "application/vnd.desmume-movie": { - "source": "iana" - }, - "application/vnd.dir-bi.plate-dl-nosuffix": { - "source": "iana" - }, - "application/vnd.dm.delegation+xml": { - "source": "iana" - }, - "application/vnd.dna": { - "source": "iana", - "extensions": ["dna"] - }, - "application/vnd.document+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.dolby.mlp": { - "source": "apache", - "extensions": ["mlp"] - }, - "application/vnd.dolby.mobile.1": { - "source": "iana" - }, - "application/vnd.dolby.mobile.2": { - "source": "iana" - }, - "application/vnd.doremir.scorecloud-binary-document": { - "source": "iana" - }, - "application/vnd.dpgraph": { - "source": "iana", - "extensions": ["dpg"] - }, - "application/vnd.dreamfactory": { - "source": "iana", - "extensions": ["dfac"] - }, - "application/vnd.drive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ds-keypoint": { - "source": "apache", - "extensions": ["kpxx"] - }, - "application/vnd.dtg.local": { - "source": "iana" - }, - "application/vnd.dtg.local.flash": { - "source": "iana" - }, - "application/vnd.dtg.local.html": { - "source": "iana" - }, - "application/vnd.dvb.ait": { - "source": "iana", - "extensions": ["ait"] - }, - "application/vnd.dvb.dvbj": { - "source": "iana" - }, - "application/vnd.dvb.esgcontainer": { - "source": "iana" - }, - "application/vnd.dvb.ipdcdftnotifaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgaccess2": { - "source": "iana" - }, - "application/vnd.dvb.ipdcesgpdd": { - "source": "iana" - }, - "application/vnd.dvb.ipdcroaming": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-base": { - "source": "iana" - }, - "application/vnd.dvb.iptv.alfec-enhancement": { - "source": "iana" - }, - "application/vnd.dvb.notif-aggregate-root+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-container+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-generic+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-msglist+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-request+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-ia-registration-response+xml": { - "source": "iana" - }, - "application/vnd.dvb.notif-init+xml": { - "source": "iana" - }, - "application/vnd.dvb.pfr": { - "source": "iana" - }, - "application/vnd.dvb.service": { - "source": "iana", - "extensions": ["svc"] - }, - "application/vnd.dxr": { - "source": "iana" - }, - "application/vnd.dynageo": { - "source": "iana", - "extensions": ["geo"] - }, - "application/vnd.dzr": { - "source": "iana" - }, - "application/vnd.easykaraoke.cdgdownload": { - "source": "iana" - }, - "application/vnd.ecdis-update": { - "source": "iana" - }, - "application/vnd.ecowin.chart": { - "source": "iana", - "extensions": ["mag"] - }, - "application/vnd.ecowin.filerequest": { - "source": "iana" - }, - "application/vnd.ecowin.fileupdate": { - "source": "iana" - }, - "application/vnd.ecowin.series": { - "source": "iana" - }, - "application/vnd.ecowin.seriesrequest": { - "source": "iana" - }, - "application/vnd.ecowin.seriesupdate": { - "source": "iana" - }, - "application/vnd.emclient.accessrequest+xml": { - "source": "iana" - }, - "application/vnd.enliven": { - "source": "iana", - "extensions": ["nml"] - }, - "application/vnd.enphase.envoy": { - "source": "iana" - }, - "application/vnd.eprints.data+xml": { - "source": "iana" - }, - "application/vnd.epson.esf": { - "source": "iana", - "extensions": ["esf"] - }, - "application/vnd.epson.msf": { - "source": "iana", - "extensions": ["msf"] - }, - "application/vnd.epson.quickanime": { - "source": "iana", - "extensions": ["qam"] - }, - "application/vnd.epson.salt": { - "source": "iana", - "extensions": ["slt"] - }, - "application/vnd.epson.ssf": { - "source": "iana", - "extensions": ["ssf"] - }, - "application/vnd.ericsson.quickcall": { - "source": "iana" - }, - "application/vnd.eszigno3+xml": { - "source": "iana", - "extensions": ["es3","et3"] - }, - "application/vnd.etsi.aoc+xml": { - "source": "iana" - }, - "application/vnd.etsi.asic-e+zip": { - "source": "iana" - }, - "application/vnd.etsi.asic-s+zip": { - "source": "iana" - }, - "application/vnd.etsi.cug+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvcommand+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvdiscovery+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-bc+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-cod+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsad-npvr+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvservice+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvsync+xml": { - "source": "iana" - }, - "application/vnd.etsi.iptvueprofile+xml": { - "source": "iana" - }, - "application/vnd.etsi.mcid+xml": { - "source": "iana" - }, - "application/vnd.etsi.mheg5": { - "source": "iana" - }, - "application/vnd.etsi.overload-control-policy-dataset+xml": { - "source": "iana" - }, - "application/vnd.etsi.pstn+xml": { - "source": "iana" - }, - "application/vnd.etsi.sci+xml": { - "source": "iana" - }, - "application/vnd.etsi.simservs+xml": { - "source": "iana" - }, - "application/vnd.etsi.timestamp-token": { - "source": "iana" - }, - "application/vnd.etsi.tsl+xml": { - "source": "iana" - }, - "application/vnd.etsi.tsl.der": { - "source": "iana" - }, - "application/vnd.eudora.data": { - "source": "iana" - }, - "application/vnd.ezpix-album": { - "source": "iana", - "extensions": ["ez2"] - }, - "application/vnd.ezpix-package": { - "source": "iana", - "extensions": ["ez3"] - }, - "application/vnd.f-secure.mobile": { - "source": "iana" - }, - "application/vnd.fastcopy-disk-image": { - "source": "iana" - }, - "application/vnd.fdf": { - "source": "iana", - "extensions": ["fdf"] - }, - "application/vnd.fdsn.mseed": { - "source": "iana", - "extensions": ["mseed"] - }, - "application/vnd.fdsn.seed": { - "source": "iana", - "extensions": ["seed","dataless"] - }, - "application/vnd.ffsns": { - "source": "iana" - }, - "application/vnd.fints": { - "source": "iana" - }, - "application/vnd.firemonkeys.cloudcell": { - "source": "iana" - }, - "application/vnd.flographit": { - "source": "iana", - "extensions": ["gph"] - }, - "application/vnd.fluxtime.clip": { - "source": "iana", - "extensions": ["ftc"] - }, - "application/vnd.font-fontforge-sfd": { - "source": "iana" - }, - "application/vnd.framemaker": { - "source": "iana", - "extensions": ["fm","frame","maker","book"] - }, - "application/vnd.frogans.fnc": { - "source": "iana", - "extensions": ["fnc"] - }, - "application/vnd.frogans.ltf": { - "source": "iana", - "extensions": ["ltf"] - }, - "application/vnd.fsc.weblaunch": { - "source": "iana", - "extensions": ["fsc"] - }, - "application/vnd.fujitsu.oasys": { - "source": "iana", - "extensions": ["oas"] - }, - "application/vnd.fujitsu.oasys2": { - "source": "iana", - "extensions": ["oa2"] - }, - "application/vnd.fujitsu.oasys3": { - "source": "iana", - "extensions": ["oa3"] - }, - "application/vnd.fujitsu.oasysgp": { - "source": "iana", - "extensions": ["fg5"] - }, - "application/vnd.fujitsu.oasysprs": { - "source": "iana", - "extensions": ["bh2"] - }, - "application/vnd.fujixerox.art-ex": { - "source": "iana" - }, - "application/vnd.fujixerox.art4": { - "source": "iana" - }, - "application/vnd.fujixerox.ddd": { - "source": "iana", - "extensions": ["ddd"] - }, - "application/vnd.fujixerox.docuworks": { - "source": "iana", - "extensions": ["xdw"] - }, - "application/vnd.fujixerox.docuworks.binder": { - "source": "iana", - "extensions": ["xbd"] - }, - "application/vnd.fujixerox.docuworks.container": { - "source": "iana" - }, - "application/vnd.fujixerox.hbpl": { - "source": "iana" - }, - "application/vnd.fut-misnet": { - "source": "iana" - }, - "application/vnd.fuzzysheet": { - "source": "iana", - "extensions": ["fzs"] - }, - "application/vnd.genomatix.tuxedo": { - "source": "iana", - "extensions": ["txd"] - }, - "application/vnd.geo+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.geocube+xml": { - "source": "iana" - }, - "application/vnd.geogebra.file": { - "source": "iana", - "extensions": ["ggb"] - }, - "application/vnd.geogebra.tool": { - "source": "iana", - "extensions": ["ggt"] - }, - "application/vnd.geometry-explorer": { - "source": "iana", - "extensions": ["gex","gre"] - }, - "application/vnd.geonext": { - "source": "iana", - "extensions": ["gxt"] - }, - "application/vnd.geoplan": { - "source": "iana", - "extensions": ["g2w"] - }, - "application/vnd.geospace": { - "source": "iana", - "extensions": ["g3w"] - }, - "application/vnd.gerber": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt": { - "source": "iana" - }, - "application/vnd.globalplatform.card-content-mgt-response": { - "source": "iana" - }, - "application/vnd.gmx": { - "source": "iana", - "extensions": ["gmx"] - }, - "application/vnd.google-earth.kml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["kml"] - }, - "application/vnd.google-earth.kmz": { - "source": "iana", - "compressible": false, - "extensions": ["kmz"] - }, - "application/vnd.gov.sk.e-form+xml": { - "source": "iana" - }, - "application/vnd.gov.sk.e-form+zip": { - "source": "iana" - }, - "application/vnd.gov.sk.xmldatacontainer+xml": { - "source": "iana" - }, - "application/vnd.grafeq": { - "source": "iana", - "extensions": ["gqf","gqs"] - }, - "application/vnd.gridmp": { - "source": "iana" - }, - "application/vnd.groove-account": { - "source": "iana", - "extensions": ["gac"] - }, - "application/vnd.groove-help": { - "source": "iana", - "extensions": ["ghf"] - }, - "application/vnd.groove-identity-message": { - "source": "iana", - "extensions": ["gim"] - }, - "application/vnd.groove-injector": { - "source": "iana", - "extensions": ["grv"] - }, - "application/vnd.groove-tool-message": { - "source": "iana", - "extensions": ["gtm"] - }, - "application/vnd.groove-tool-template": { - "source": "iana", - "extensions": ["tpl"] - }, - "application/vnd.groove-vcard": { - "source": "iana", - "extensions": ["vcg"] - }, - "application/vnd.hal+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hal+xml": { - "source": "iana", - "extensions": ["hal"] - }, - "application/vnd.handheld-entertainment+xml": { - "source": "iana", - "extensions": ["zmm"] - }, - "application/vnd.hbci": { - "source": "iana", - "extensions": ["hbci"] - }, - "application/vnd.hcl-bireports": { - "source": "iana" - }, - "application/vnd.heroku+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hhe.lesson-player": { - "source": "iana", - "extensions": ["les"] - }, - "application/vnd.hp-hpgl": { - "source": "iana", - "extensions": ["hpgl"] - }, - "application/vnd.hp-hpid": { - "source": "iana", - "extensions": ["hpid"] - }, - "application/vnd.hp-hps": { - "source": "iana", - "extensions": ["hps"] - }, - "application/vnd.hp-jlyt": { - "source": "iana", - "extensions": ["jlt"] - }, - "application/vnd.hp-pcl": { - "source": "iana", - "extensions": ["pcl"] - }, - "application/vnd.hp-pclxl": { - "source": "iana", - "extensions": ["pclxl"] - }, - "application/vnd.httphone": { - "source": "iana" - }, - "application/vnd.hydrostatix.sof-data": { - "source": "iana", - "extensions": ["sfd-hdstx"] - }, - "application/vnd.hyperdrive+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.hzn-3d-crossword": { - "source": "iana" - }, - "application/vnd.ibm.afplinedata": { - "source": "iana" - }, - "application/vnd.ibm.electronic-media": { - "source": "iana" - }, - "application/vnd.ibm.minipay": { - "source": "iana", - "extensions": ["mpy"] - }, - "application/vnd.ibm.modcap": { - "source": "iana", - "extensions": ["afp","listafp","list3820"] - }, - "application/vnd.ibm.rights-management": { - "source": "iana", - "extensions": ["irm"] - }, - "application/vnd.ibm.secure-container": { - "source": "iana", - "extensions": ["sc"] - }, - "application/vnd.iccprofile": { - "source": "iana", - "extensions": ["icc","icm"] - }, - "application/vnd.ieee.1905": { - "source": "iana" - }, - "application/vnd.igloader": { - "source": "iana", - "extensions": ["igl"] - }, - "application/vnd.immervision-ivp": { - "source": "iana", - "extensions": ["ivp"] - }, - "application/vnd.immervision-ivu": { - "source": "iana", - "extensions": ["ivu"] - }, - "application/vnd.ims.imsccv1p1": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p2": { - "source": "iana" - }, - "application/vnd.ims.imsccv1p3": { - "source": "iana" - }, - "application/vnd.ims.lis.v2.result+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolconsumerprofile+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolproxy.id+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.ims.lti.v2.toolsettings.simple+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.informedcontrol.rms+xml": { - "source": "iana" - }, - "application/vnd.informix-visionary": { - "source": "iana" - }, - "application/vnd.infotech.project": { - "source": "iana" - }, - "application/vnd.infotech.project+xml": { - "source": "iana" - }, - "application/vnd.innopath.wamp.notification": { - "source": "iana" - }, - "application/vnd.insors.igm": { - "source": "iana", - "extensions": ["igm"] - }, - "application/vnd.intercon.formnet": { - "source": "iana", - "extensions": ["xpw","xpx"] - }, - "application/vnd.intergeo": { - "source": "iana", - "extensions": ["i2g"] - }, - "application/vnd.intertrust.digibox": { - "source": "iana" - }, - "application/vnd.intertrust.nncp": { - "source": "iana" - }, - "application/vnd.intu.qbo": { - "source": "iana", - "extensions": ["qbo"] - }, - "application/vnd.intu.qfx": { - "source": "iana", - "extensions": ["qfx"] - }, - "application/vnd.iptc.g2.catalogitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.conceptitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.knowledgeitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.newsmessage+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.packageitem+xml": { - "source": "iana" - }, - "application/vnd.iptc.g2.planningitem+xml": { - "source": "iana" - }, - "application/vnd.ipunplugged.rcprofile": { - "source": "iana", - "extensions": ["rcprofile"] - }, - "application/vnd.irepository.package+xml": { - "source": "iana", - "extensions": ["irp"] - }, - "application/vnd.is-xpr": { - "source": "iana", - "extensions": ["xpr"] - }, - "application/vnd.isac.fcs": { - "source": "iana", - "extensions": ["fcs"] - }, - "application/vnd.jam": { - "source": "iana", - "extensions": ["jam"] - }, - "application/vnd.japannet-directory-service": { - "source": "iana" - }, - "application/vnd.japannet-jpnstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-payment-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-registration": { - "source": "iana" - }, - "application/vnd.japannet-registration-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-setstore-wakeup": { - "source": "iana" - }, - "application/vnd.japannet-verification": { - "source": "iana" - }, - "application/vnd.japannet-verification-wakeup": { - "source": "iana" - }, - "application/vnd.jcp.javame.midlet-rms": { - "source": "iana", - "extensions": ["rms"] - }, - "application/vnd.jisp": { - "source": "iana", - "extensions": ["jisp"] - }, - "application/vnd.joost.joda-archive": { - "source": "iana", - "extensions": ["joda"] - }, - "application/vnd.jsk.isdn-ngn": { - "source": "iana" - }, - "application/vnd.kahootz": { - "source": "iana", - "extensions": ["ktz","ktr"] - }, - "application/vnd.kde.karbon": { - "source": "iana", - "extensions": ["karbon"] - }, - "application/vnd.kde.kchart": { - "source": "iana", - "extensions": ["chrt"] - }, - "application/vnd.kde.kformula": { - "source": "iana", - "extensions": ["kfo"] - }, - "application/vnd.kde.kivio": { - "source": "iana", - "extensions": ["flw"] - }, - "application/vnd.kde.kontour": { - "source": "iana", - "extensions": ["kon"] - }, - "application/vnd.kde.kpresenter": { - "source": "iana", - "extensions": ["kpr","kpt"] - }, - "application/vnd.kde.kspread": { - "source": "iana", - "extensions": ["ksp"] - }, - "application/vnd.kde.kword": { - "source": "iana", - "extensions": ["kwd","kwt"] - }, - "application/vnd.kenameaapp": { - "source": "iana", - "extensions": ["htke"] - }, - "application/vnd.kidspiration": { - "source": "iana", - "extensions": ["kia"] - }, - "application/vnd.kinar": { - "source": "iana", - "extensions": ["kne","knp"] - }, - "application/vnd.koan": { - "source": "iana", - "extensions": ["skp","skd","skt","skm"] - }, - "application/vnd.kodak-descriptor": { - "source": "iana", - "extensions": ["sse"] - }, - "application/vnd.las.las+xml": { - "source": "iana", - "extensions": ["lasxml"] - }, - "application/vnd.liberty-request+xml": { - "source": "iana" - }, - "application/vnd.llamagraphics.life-balance.desktop": { - "source": "iana", - "extensions": ["lbd"] - }, - "application/vnd.llamagraphics.life-balance.exchange+xml": { - "source": "iana", - "extensions": ["lbe"] - }, - "application/vnd.lotus-1-2-3": { - "source": "iana", - "extensions": ["123"] - }, - "application/vnd.lotus-approach": { - "source": "iana", - "extensions": ["apr"] - }, - "application/vnd.lotus-freelance": { - "source": "iana", - "extensions": ["pre"] - }, - "application/vnd.lotus-notes": { - "source": "iana", - "extensions": ["nsf"] - }, - "application/vnd.lotus-organizer": { - "source": "iana", - "extensions": ["org"] - }, - "application/vnd.lotus-screencam": { - "source": "iana", - "extensions": ["scm"] - }, - "application/vnd.lotus-wordpro": { - "source": "iana", - "extensions": ["lwp"] - }, - "application/vnd.macports.portpkg": { - "source": "iana", - "extensions": ["portpkg"] - }, - "application/vnd.marlin.drm.actiontoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.conftoken+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.license+xml": { - "source": "iana" - }, - "application/vnd.marlin.drm.mdcf": { - "source": "iana" - }, - "application/vnd.mason+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.maxmind.maxmind-db": { - "source": "iana" - }, - "application/vnd.mcd": { - "source": "iana", - "extensions": ["mcd"] - }, - "application/vnd.medcalcdata": { - "source": "iana", - "extensions": ["mc1"] - }, - "application/vnd.mediastation.cdkey": { - "source": "iana", - "extensions": ["cdkey"] - }, - "application/vnd.meridian-slingshot": { - "source": "iana" - }, - "application/vnd.mfer": { - "source": "iana", - "extensions": ["mwf"] - }, - "application/vnd.mfmp": { - "source": "iana", - "extensions": ["mfm"] - }, - "application/vnd.micro+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.micrografx.flo": { - "source": "iana", - "extensions": ["flo"] - }, - "application/vnd.micrografx.igx": { - "source": "iana", - "extensions": ["igx"] - }, - "application/vnd.microsoft.portable-executable": { - "source": "iana" - }, - "application/vnd.miele+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.mif": { - "source": "iana", - "extensions": ["mif"] - }, - "application/vnd.minisoft-hp3000-save": { - "source": "iana" - }, - "application/vnd.mitsubishi.misty-guard.trustweb": { - "source": "iana" - }, - "application/vnd.mobius.daf": { - "source": "iana", - "extensions": ["daf"] - }, - "application/vnd.mobius.dis": { - "source": "iana", - "extensions": ["dis"] - }, - "application/vnd.mobius.mbk": { - "source": "iana", - "extensions": ["mbk"] - }, - "application/vnd.mobius.mqy": { - "source": "iana", - "extensions": ["mqy"] - }, - "application/vnd.mobius.msl": { - "source": "iana", - "extensions": ["msl"] - }, - "application/vnd.mobius.plc": { - "source": "iana", - "extensions": ["plc"] - }, - "application/vnd.mobius.txf": { - "source": "iana", - "extensions": ["txf"] - }, - "application/vnd.mophun.application": { - "source": "iana", - "extensions": ["mpn"] - }, - "application/vnd.mophun.certificate": { - "source": "iana", - "extensions": ["mpc"] - }, - "application/vnd.motorola.flexsuite": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.adsi": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.fis": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.gotap": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.kmr": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.ttc": { - "source": "iana" - }, - "application/vnd.motorola.flexsuite.wem": { - "source": "iana" - }, - "application/vnd.motorola.iprm": { - "source": "iana" - }, - "application/vnd.mozilla.xul+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xul"] - }, - "application/vnd.ms-3mfdocument": { - "source": "iana" - }, - "application/vnd.ms-artgalry": { - "source": "iana", - "extensions": ["cil"] - }, - "application/vnd.ms-asf": { - "source": "iana" - }, - "application/vnd.ms-cab-compressed": { - "source": "iana", - "extensions": ["cab"] - }, - "application/vnd.ms-color.iccprofile": { - "source": "apache" - }, - "application/vnd.ms-excel": { - "source": "iana", - "compressible": false, - "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] - }, - "application/vnd.ms-excel.addin.macroenabled.12": { - "source": "iana", - "extensions": ["xlam"] - }, - "application/vnd.ms-excel.sheet.binary.macroenabled.12": { - "source": "iana", - "extensions": ["xlsb"] - }, - "application/vnd.ms-excel.sheet.macroenabled.12": { - "source": "iana", - "extensions": ["xlsm"] - }, - "application/vnd.ms-excel.template.macroenabled.12": { - "source": "iana", - "extensions": ["xltm"] - }, - "application/vnd.ms-fontobject": { - "source": "iana", - "compressible": true, - "extensions": ["eot"] - }, - "application/vnd.ms-htmlhelp": { - "source": "iana", - "extensions": ["chm"] - }, - "application/vnd.ms-ims": { - "source": "iana", - "extensions": ["ims"] - }, - "application/vnd.ms-lrm": { - "source": "iana", - "extensions": ["lrm"] - }, - "application/vnd.ms-office.activex+xml": { - "source": "iana" - }, - "application/vnd.ms-officetheme": { - "source": "iana", - "extensions": ["thmx"] - }, - "application/vnd.ms-opentype": { - "source": "apache", - "compressible": true - }, - "application/vnd.ms-package.obfuscated-opentype": { - "source": "apache" - }, - "application/vnd.ms-pki.seccat": { - "source": "apache", - "extensions": ["cat"] - }, - "application/vnd.ms-pki.stl": { - "source": "apache", - "extensions": ["stl"] - }, - "application/vnd.ms-playready.initiator+xml": { - "source": "iana" - }, - "application/vnd.ms-powerpoint": { - "source": "iana", - "compressible": false, - "extensions": ["ppt","pps","pot"] - }, - "application/vnd.ms-powerpoint.addin.macroenabled.12": { - "source": "iana", - "extensions": ["ppam"] - }, - "application/vnd.ms-powerpoint.presentation.macroenabled.12": { - "source": "iana", - "extensions": ["pptm"] - }, - "application/vnd.ms-powerpoint.slide.macroenabled.12": { - "source": "iana", - "extensions": ["sldm"] - }, - "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { - "source": "iana", - "extensions": ["ppsm"] - }, - "application/vnd.ms-powerpoint.template.macroenabled.12": { - "source": "iana", - "extensions": ["potm"] - }, - "application/vnd.ms-printing.printticket+xml": { - "source": "apache" - }, - "application/vnd.ms-project": { - "source": "iana", - "extensions": ["mpp","mpt"] - }, - "application/vnd.ms-tnef": { - "source": "iana" - }, - "application/vnd.ms-windows.printerpairing": { - "source": "iana" - }, - "application/vnd.ms-windows.wsd.oob": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.lic-resp": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-chlg-req": { - "source": "iana" - }, - "application/vnd.ms-wmdrm.meter-resp": { - "source": "iana" - }, - "application/vnd.ms-word.document.macroenabled.12": { - "source": "iana", - "extensions": ["docm"] - }, - "application/vnd.ms-word.template.macroenabled.12": { - "source": "iana", - "extensions": ["dotm"] - }, - "application/vnd.ms-works": { - "source": "iana", - "extensions": ["wps","wks","wcm","wdb"] - }, - "application/vnd.ms-wpl": { - "source": "iana", - "extensions": ["wpl"] - }, - "application/vnd.ms-xpsdocument": { - "source": "iana", - "compressible": false, - "extensions": ["xps"] - }, - "application/vnd.msa-disk-image": { - "source": "iana" - }, - "application/vnd.mseq": { - "source": "iana", - "extensions": ["mseq"] - }, - "application/vnd.msign": { - "source": "iana" - }, - "application/vnd.multiad.creator": { - "source": "iana" - }, - "application/vnd.multiad.creator.cif": { - "source": "iana" - }, - "application/vnd.music-niff": { - "source": "iana" - }, - "application/vnd.musician": { - "source": "iana", - "extensions": ["mus"] - }, - "application/vnd.muvee.style": { - "source": "iana", - "extensions": ["msty"] - }, - "application/vnd.mynfc": { - "source": "iana", - "extensions": ["taglet"] - }, - "application/vnd.ncd.control": { - "source": "iana" - }, - "application/vnd.ncd.reference": { - "source": "iana" - }, - "application/vnd.nervana": { - "source": "iana" - }, - "application/vnd.netfpx": { - "source": "iana" - }, - "application/vnd.neurolanguage.nlu": { - "source": "iana", - "extensions": ["nlu"] - }, - "application/vnd.nintendo.nitro.rom": { - "source": "iana" - }, - "application/vnd.nintendo.snes.rom": { - "source": "iana" - }, - "application/vnd.nitf": { - "source": "iana", - "extensions": ["ntf","nitf"] - }, - "application/vnd.noblenet-directory": { - "source": "iana", - "extensions": ["nnd"] - }, - "application/vnd.noblenet-sealer": { - "source": "iana", - "extensions": ["nns"] - }, - "application/vnd.noblenet-web": { - "source": "iana", - "extensions": ["nnw"] - }, - "application/vnd.nokia.catalogs": { - "source": "iana" - }, - "application/vnd.nokia.conml+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.conml+xml": { - "source": "iana" - }, - "application/vnd.nokia.iptv.config+xml": { - "source": "iana" - }, - "application/vnd.nokia.isds-radio-presets": { - "source": "iana" - }, - "application/vnd.nokia.landmark+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.landmark+xml": { - "source": "iana" - }, - "application/vnd.nokia.landmarkcollection+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.ac+xml": { - "source": "iana" - }, - "application/vnd.nokia.n-gage.data": { - "source": "iana", - "extensions": ["ngdat"] - }, - "application/vnd.nokia.n-gage.symbian.install": { - "source": "iana", - "extensions": ["n-gage"] - }, - "application/vnd.nokia.ncd": { - "source": "iana" - }, - "application/vnd.nokia.pcd+wbxml": { - "source": "iana" - }, - "application/vnd.nokia.pcd+xml": { - "source": "iana" - }, - "application/vnd.nokia.radio-preset": { - "source": "iana", - "extensions": ["rpst"] - }, - "application/vnd.nokia.radio-presets": { - "source": "iana", - "extensions": ["rpss"] - }, - "application/vnd.novadigm.edm": { - "source": "iana", - "extensions": ["edm"] - }, - "application/vnd.novadigm.edx": { - "source": "iana", - "extensions": ["edx"] - }, - "application/vnd.novadigm.ext": { - "source": "iana", - "extensions": ["ext"] - }, - "application/vnd.ntt-local.content-share": { - "source": "iana" - }, - "application/vnd.ntt-local.file-transfer": { - "source": "iana" - }, - "application/vnd.ntt-local.ogw_remote-access": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_remote": { - "source": "iana" - }, - "application/vnd.ntt-local.sip-ta_tcp_stream": { - "source": "iana" - }, - "application/vnd.oasis.opendocument.chart": { - "source": "iana", - "extensions": ["odc"] - }, - "application/vnd.oasis.opendocument.chart-template": { - "source": "iana", - "extensions": ["otc"] - }, - "application/vnd.oasis.opendocument.database": { - "source": "iana", - "extensions": ["odb"] - }, - "application/vnd.oasis.opendocument.formula": { - "source": "iana", - "extensions": ["odf"] - }, - "application/vnd.oasis.opendocument.formula-template": { - "source": "iana", - "extensions": ["odft"] - }, - "application/vnd.oasis.opendocument.graphics": { - "source": "iana", - "compressible": false, - "extensions": ["odg"] - }, - "application/vnd.oasis.opendocument.graphics-template": { - "source": "iana", - "extensions": ["otg"] - }, - "application/vnd.oasis.opendocument.image": { - "source": "iana", - "extensions": ["odi"] - }, - "application/vnd.oasis.opendocument.image-template": { - "source": "iana", - "extensions": ["oti"] - }, - "application/vnd.oasis.opendocument.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["odp"] - }, - "application/vnd.oasis.opendocument.presentation-template": { - "source": "iana", - "extensions": ["otp"] - }, - "application/vnd.oasis.opendocument.spreadsheet": { - "source": "iana", - "compressible": false, - "extensions": ["ods"] - }, - "application/vnd.oasis.opendocument.spreadsheet-template": { - "source": "iana", - "extensions": ["ots"] - }, - "application/vnd.oasis.opendocument.text": { - "source": "iana", - "compressible": false, - "extensions": ["odt"] - }, - "application/vnd.oasis.opendocument.text-master": { - "source": "iana", - "extensions": ["odm"] - }, - "application/vnd.oasis.opendocument.text-template": { - "source": "iana", - "extensions": ["ott"] - }, - "application/vnd.oasis.opendocument.text-web": { - "source": "iana", - "extensions": ["oth"] - }, - "application/vnd.obn": { - "source": "iana" - }, - "application/vnd.oftn.l10n+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.oipf.contentaccessdownload+xml": { - "source": "iana" - }, - "application/vnd.oipf.contentaccessstreaming+xml": { - "source": "iana" - }, - "application/vnd.oipf.cspg-hexbinary": { - "source": "iana" - }, - "application/vnd.oipf.dae.svg+xml": { - "source": "iana" - }, - "application/vnd.oipf.dae.xhtml+xml": { - "source": "iana" - }, - "application/vnd.oipf.mippvcontrolmessage+xml": { - "source": "iana" - }, - "application/vnd.oipf.pae.gem": { - "source": "iana" - }, - "application/vnd.oipf.spdiscovery+xml": { - "source": "iana" - }, - "application/vnd.oipf.spdlist+xml": { - "source": "iana" - }, - "application/vnd.oipf.ueprofile+xml": { - "source": "iana" - }, - "application/vnd.oipf.userprofile+xml": { - "source": "iana" - }, - "application/vnd.olpc-sugar": { - "source": "iana", - "extensions": ["xo"] - }, - "application/vnd.oma-scws-config": { - "source": "iana" - }, - "application/vnd.oma-scws-http-request": { - "source": "iana" - }, - "application/vnd.oma-scws-http-response": { - "source": "iana" - }, - "application/vnd.oma.bcast.associated-procedure-parameter+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.drm-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.imd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.ltkm": { - "source": "iana" - }, - "application/vnd.oma.bcast.notification+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.provisioningtrigger": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgboot": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdd+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sgdu": { - "source": "iana" - }, - "application/vnd.oma.bcast.simple-symbol-container": { - "source": "iana" - }, - "application/vnd.oma.bcast.smartcard-trigger+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.sprov+xml": { - "source": "iana" - }, - "application/vnd.oma.bcast.stkm": { - "source": "iana" - }, - "application/vnd.oma.cab-address-book+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-feature-handler+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-pcc+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-subs-invite+xml": { - "source": "iana" - }, - "application/vnd.oma.cab-user-prefs+xml": { - "source": "iana" - }, - "application/vnd.oma.dcd": { - "source": "iana" - }, - "application/vnd.oma.dcdc": { - "source": "iana" - }, - "application/vnd.oma.dd2+xml": { - "source": "iana", - "extensions": ["dd2"] - }, - "application/vnd.oma.drm.risd+xml": { - "source": "iana" - }, - "application/vnd.oma.group-usage-list+xml": { - "source": "iana" - }, - "application/vnd.oma.pal+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.detailed-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.final-report+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.groups+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.invocation-descriptor+xml": { - "source": "iana" - }, - "application/vnd.oma.poc.optimized-progress-report+xml": { - "source": "iana" - }, - "application/vnd.oma.push": { - "source": "iana" - }, - "application/vnd.oma.scidm.messages+xml": { - "source": "iana" - }, - "application/vnd.oma.xcap-directory+xml": { - "source": "iana" - }, - "application/vnd.omads-email+xml": { - "source": "iana" - }, - "application/vnd.omads-file+xml": { - "source": "iana" - }, - "application/vnd.omads-folder+xml": { - "source": "iana" - }, - "application/vnd.omaloc-supl-init": { - "source": "iana" - }, - "application/vnd.openblox.game+xml": { - "source": "iana" - }, - "application/vnd.openblox.game-binary": { - "source": "iana" - }, - "application/vnd.openeye.oeb": { - "source": "iana" - }, - "application/vnd.openofficeorg.extension": { - "source": "apache", - "extensions": ["oxt"] - }, - "application/vnd.openxmlformats-officedocument.custom-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawing+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.extended-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation": { - "source": "iana", - "compressible": false, - "extensions": ["pptx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide": { - "source": "iana", - "extensions": ["sldx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { - "source": "iana", - "extensions": ["ppsx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.template": { - "source": "apache", - "extensions": ["potx"] - }, - "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { - "source": "iana", - "compressible": false, - "extensions": ["xlsx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { - "source": "apache", - "extensions": ["xltx"] - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.theme+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.themeoverride+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.vmldrawing": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml-template": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { - "source": "iana", - "compressible": false, - "extensions": ["docx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { - "source": "apache", - "extensions": ["dotx"] - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.core-properties+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { - "source": "iana" - }, - "application/vnd.openxmlformats-package.relationships+xml": { - "source": "iana" - }, - "application/vnd.oracle.resource+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.orange.indata": { - "source": "iana" - }, - "application/vnd.osa.netdeploy": { - "source": "iana" - }, - "application/vnd.osgeo.mapguide.package": { - "source": "iana", - "extensions": ["mgp"] - }, - "application/vnd.osgi.bundle": { - "source": "iana" - }, - "application/vnd.osgi.dp": { - "source": "iana", - "extensions": ["dp"] - }, - "application/vnd.osgi.subsystem": { - "source": "iana", - "extensions": ["esa"] - }, - "application/vnd.otps.ct-kip+xml": { - "source": "iana" - }, - "application/vnd.oxli.countgraph": { - "source": "iana" - }, - "application/vnd.pagerduty+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.palm": { - "source": "iana", - "extensions": ["pdb","pqa","oprc"] - }, - "application/vnd.panoply": { - "source": "iana" - }, - "application/vnd.paos+xml": { - "source": "iana" - }, - "application/vnd.paos.xml": { - "source": "apache" - }, - "application/vnd.pawaafile": { - "source": "iana", - "extensions": ["paw"] - }, - "application/vnd.pcos": { - "source": "iana" - }, - "application/vnd.pg.format": { - "source": "iana", - "extensions": ["str"] - }, - "application/vnd.pg.osasli": { - "source": "iana", - "extensions": ["ei6"] - }, - "application/vnd.piaccess.application-licence": { - "source": "iana" - }, - "application/vnd.picsel": { - "source": "iana", - "extensions": ["efif"] - }, - "application/vnd.pmi.widget": { - "source": "iana", - "extensions": ["wg"] - }, - "application/vnd.poc.group-advertisement+xml": { - "source": "iana" - }, - "application/vnd.pocketlearn": { - "source": "iana", - "extensions": ["plf"] - }, - "application/vnd.powerbuilder6": { - "source": "iana", - "extensions": ["pbd"] - }, - "application/vnd.powerbuilder6-s": { - "source": "iana" - }, - "application/vnd.powerbuilder7": { - "source": "iana" - }, - "application/vnd.powerbuilder7-s": { - "source": "iana" - }, - "application/vnd.powerbuilder75": { - "source": "iana" - }, - "application/vnd.powerbuilder75-s": { - "source": "iana" - }, - "application/vnd.preminet": { - "source": "iana" - }, - "application/vnd.previewsystems.box": { - "source": "iana", - "extensions": ["box"] - }, - "application/vnd.proteus.magazine": { - "source": "iana", - "extensions": ["mgz"] - }, - "application/vnd.publishare-delta-tree": { - "source": "iana", - "extensions": ["qps"] - }, - "application/vnd.pvi.ptid1": { - "source": "iana", - "extensions": ["ptid"] - }, - "application/vnd.pwg-multiplexed": { - "source": "iana" - }, - "application/vnd.pwg-xhtml-print+xml": { - "source": "iana" - }, - "application/vnd.qualcomm.brew-app-res": { - "source": "iana" - }, - "application/vnd.quark.quarkxpress": { - "source": "iana", - "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] - }, - "application/vnd.quobject-quoxdocument": { - "source": "iana" - }, - "application/vnd.radisys.moml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-conn+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-audit-stream+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-conf+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-base+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-detect+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-group+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-speech+xml": { - "source": "iana" - }, - "application/vnd.radisys.msml-dialog-transform+xml": { - "source": "iana" - }, - "application/vnd.rainstor.data": { - "source": "iana" - }, - "application/vnd.rapid": { - "source": "iana" - }, - "application/vnd.realvnc.bed": { - "source": "iana", - "extensions": ["bed"] - }, - "application/vnd.recordare.musicxml": { - "source": "iana", - "extensions": ["mxl"] - }, - "application/vnd.recordare.musicxml+xml": { - "source": "iana", - "extensions": ["musicxml"] - }, - "application/vnd.renlearn.rlprint": { - "source": "iana" - }, - "application/vnd.rig.cryptonote": { - "source": "iana", - "extensions": ["cryptonote"] - }, - "application/vnd.rim.cod": { - "source": "apache", - "extensions": ["cod"] - }, - "application/vnd.rn-realmedia": { - "source": "apache", - "extensions": ["rm"] - }, - "application/vnd.rn-realmedia-vbr": { - "source": "apache", - "extensions": ["rmvb"] - }, - "application/vnd.route66.link66+xml": { - "source": "iana", - "extensions": ["link66"] - }, - "application/vnd.rs-274x": { - "source": "iana" - }, - "application/vnd.ruckus.download": { - "source": "iana" - }, - "application/vnd.s3sms": { - "source": "iana" - }, - "application/vnd.sailingtracker.track": { - "source": "iana", - "extensions": ["st"] - }, - "application/vnd.sbm.cid": { - "source": "iana" - }, - "application/vnd.sbm.mid2": { - "source": "iana" - }, - "application/vnd.scribus": { - "source": "iana" - }, - "application/vnd.sealed.3df": { - "source": "iana" - }, - "application/vnd.sealed.csf": { - "source": "iana" - }, - "application/vnd.sealed.doc": { - "source": "iana" - }, - "application/vnd.sealed.eml": { - "source": "iana" - }, - "application/vnd.sealed.mht": { - "source": "iana" - }, - "application/vnd.sealed.net": { - "source": "iana" - }, - "application/vnd.sealed.ppt": { - "source": "iana" - }, - "application/vnd.sealed.tiff": { - "source": "iana" - }, - "application/vnd.sealed.xls": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.html": { - "source": "iana" - }, - "application/vnd.sealedmedia.softseal.pdf": { - "source": "iana" - }, - "application/vnd.seemail": { - "source": "iana", - "extensions": ["see"] - }, - "application/vnd.sema": { - "source": "iana", - "extensions": ["sema"] - }, - "application/vnd.semd": { - "source": "iana", - "extensions": ["semd"] - }, - "application/vnd.semf": { - "source": "iana", - "extensions": ["semf"] - }, - "application/vnd.shana.informed.formdata": { - "source": "iana", - "extensions": ["ifm"] - }, - "application/vnd.shana.informed.formtemplate": { - "source": "iana", - "extensions": ["itp"] - }, - "application/vnd.shana.informed.interchange": { - "source": "iana", - "extensions": ["iif"] - }, - "application/vnd.shana.informed.package": { - "source": "iana", - "extensions": ["ipk"] - }, - "application/vnd.simtech-mindmapper": { - "source": "iana", - "extensions": ["twd","twds"] - }, - "application/vnd.siren+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.smaf": { - "source": "iana", - "extensions": ["mmf"] - }, - "application/vnd.smart.notebook": { - "source": "iana" - }, - "application/vnd.smart.teacher": { - "source": "iana", - "extensions": ["teacher"] - }, - "application/vnd.software602.filler.form+xml": { - "source": "iana" - }, - "application/vnd.software602.filler.form-xml-zip": { - "source": "iana" - }, - "application/vnd.solent.sdkm+xml": { - "source": "iana", - "extensions": ["sdkm","sdkd"] - }, - "application/vnd.spotfire.dxp": { - "source": "iana", - "extensions": ["dxp"] - }, - "application/vnd.spotfire.sfs": { - "source": "iana", - "extensions": ["sfs"] - }, - "application/vnd.sss-cod": { - "source": "iana" - }, - "application/vnd.sss-dtf": { - "source": "iana" - }, - "application/vnd.sss-ntf": { - "source": "iana" - }, - "application/vnd.stardivision.calc": { - "source": "apache", - "extensions": ["sdc"] - }, - "application/vnd.stardivision.draw": { - "source": "apache", - "extensions": ["sda"] - }, - "application/vnd.stardivision.impress": { - "source": "apache", - "extensions": ["sdd"] - }, - "application/vnd.stardivision.math": { - "source": "apache", - "extensions": ["smf"] - }, - "application/vnd.stardivision.writer": { - "source": "apache", - "extensions": ["sdw","vor"] - }, - "application/vnd.stardivision.writer-global": { - "source": "apache", - "extensions": ["sgl"] - }, - "application/vnd.stepmania.package": { - "source": "iana", - "extensions": ["smzip"] - }, - "application/vnd.stepmania.stepchart": { - "source": "iana", - "extensions": ["sm"] - }, - "application/vnd.street-stream": { - "source": "iana" - }, - "application/vnd.sun.wadl+xml": { - "source": "iana" - }, - "application/vnd.sun.xml.calc": { - "source": "apache", - "extensions": ["sxc"] - }, - "application/vnd.sun.xml.calc.template": { - "source": "apache", - "extensions": ["stc"] - }, - "application/vnd.sun.xml.draw": { - "source": "apache", - "extensions": ["sxd"] - }, - "application/vnd.sun.xml.draw.template": { - "source": "apache", - "extensions": ["std"] - }, - "application/vnd.sun.xml.impress": { - "source": "apache", - "extensions": ["sxi"] - }, - "application/vnd.sun.xml.impress.template": { - "source": "apache", - "extensions": ["sti"] - }, - "application/vnd.sun.xml.math": { - "source": "apache", - "extensions": ["sxm"] - }, - "application/vnd.sun.xml.writer": { - "source": "apache", - "extensions": ["sxw"] - }, - "application/vnd.sun.xml.writer.global": { - "source": "apache", - "extensions": ["sxg"] - }, - "application/vnd.sun.xml.writer.template": { - "source": "apache", - "extensions": ["stw"] - }, - "application/vnd.sus-calendar": { - "source": "iana", - "extensions": ["sus","susp"] - }, - "application/vnd.svd": { - "source": "iana", - "extensions": ["svd"] - }, - "application/vnd.swiftview-ics": { - "source": "iana" - }, - "application/vnd.symbian.install": { - "source": "apache", - "extensions": ["sis","sisx"] - }, - "application/vnd.syncml+xml": { - "source": "iana", - "extensions": ["xsm"] - }, - "application/vnd.syncml.dm+wbxml": { - "source": "iana", - "extensions": ["bdm"] - }, - "application/vnd.syncml.dm+xml": { - "source": "iana", - "extensions": ["xdm"] - }, - "application/vnd.syncml.dm.notification": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmddf+xml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+wbxml": { - "source": "iana" - }, - "application/vnd.syncml.dmtnds+xml": { - "source": "iana" - }, - "application/vnd.syncml.ds.notification": { - "source": "iana" - }, - "application/vnd.tao.intent-module-archive": { - "source": "iana", - "extensions": ["tao"] - }, - "application/vnd.tcpdump.pcap": { - "source": "iana", - "extensions": ["pcap","cap","dmp"] - }, - "application/vnd.tmd.mediaflex.api+xml": { - "source": "iana" - }, - "application/vnd.tmobile-livetv": { - "source": "iana", - "extensions": ["tmo"] - }, - "application/vnd.trid.tpt": { - "source": "iana", - "extensions": ["tpt"] - }, - "application/vnd.triscape.mxs": { - "source": "iana", - "extensions": ["mxs"] - }, - "application/vnd.trueapp": { - "source": "iana", - "extensions": ["tra"] - }, - "application/vnd.truedoc": { - "source": "iana" - }, - "application/vnd.ubisoft.webplayer": { - "source": "iana" - }, - "application/vnd.ufdl": { - "source": "iana", - "extensions": ["ufd","ufdl"] - }, - "application/vnd.uiq.theme": { - "source": "iana", - "extensions": ["utz"] - }, - "application/vnd.umajin": { - "source": "iana", - "extensions": ["umj"] - }, - "application/vnd.unity": { - "source": "iana", - "extensions": ["unityweb"] - }, - "application/vnd.uoml+xml": { - "source": "iana", - "extensions": ["uoml"] - }, - "application/vnd.uplanet.alert": { - "source": "iana" - }, - "application/vnd.uplanet.alert-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice": { - "source": "iana" - }, - "application/vnd.uplanet.bearer-choice-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop": { - "source": "iana" - }, - "application/vnd.uplanet.cacheop-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.channel": { - "source": "iana" - }, - "application/vnd.uplanet.channel-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.list": { - "source": "iana" - }, - "application/vnd.uplanet.list-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd": { - "source": "iana" - }, - "application/vnd.uplanet.listcmd-wbxml": { - "source": "iana" - }, - "application/vnd.uplanet.signal": { - "source": "iana" - }, - "application/vnd.uri-map": { - "source": "iana" - }, - "application/vnd.valve.source.material": { - "source": "iana" - }, - "application/vnd.vcx": { - "source": "iana", - "extensions": ["vcx"] - }, - "application/vnd.vd-study": { - "source": "iana" - }, - "application/vnd.vectorworks": { - "source": "iana" - }, - "application/vnd.verimatrix.vcas": { - "source": "iana" - }, - "application/vnd.vidsoft.vidconference": { - "source": "iana" - }, - "application/vnd.visio": { - "source": "iana", - "extensions": ["vsd","vst","vss","vsw"] - }, - "application/vnd.visionary": { - "source": "iana", - "extensions": ["vis"] - }, - "application/vnd.vividence.scriptfile": { - "source": "iana" - }, - "application/vnd.vsf": { - "source": "iana", - "extensions": ["vsf"] - }, - "application/vnd.wap.sic": { - "source": "iana" - }, - "application/vnd.wap.slc": { - "source": "iana" - }, - "application/vnd.wap.wbxml": { - "source": "iana", - "extensions": ["wbxml"] - }, - "application/vnd.wap.wmlc": { - "source": "iana", - "extensions": ["wmlc"] - }, - "application/vnd.wap.wmlscriptc": { - "source": "iana", - "extensions": ["wmlsc"] - }, - "application/vnd.webturbo": { - "source": "iana", - "extensions": ["wtb"] - }, - "application/vnd.wfa.p2p": { - "source": "iana" - }, - "application/vnd.wfa.wsc": { - "source": "iana" - }, - "application/vnd.windows.devicepairing": { - "source": "iana" - }, - "application/vnd.wmc": { - "source": "iana" - }, - "application/vnd.wmf.bootstrap": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica": { - "source": "iana" - }, - "application/vnd.wolfram.mathematica.package": { - "source": "iana" - }, - "application/vnd.wolfram.player": { - "source": "iana", - "extensions": ["nbp"] - }, - "application/vnd.wordperfect": { - "source": "iana", - "extensions": ["wpd"] - }, - "application/vnd.wqd": { - "source": "iana", - "extensions": ["wqd"] - }, - "application/vnd.wrq-hp3000-labelled": { - "source": "iana" - }, - "application/vnd.wt.stf": { - "source": "iana", - "extensions": ["stf"] - }, - "application/vnd.wv.csp+wbxml": { - "source": "iana" - }, - "application/vnd.wv.csp+xml": { - "source": "iana" - }, - "application/vnd.wv.ssp+xml": { - "source": "iana" - }, - "application/vnd.xacml+json": { - "source": "iana", - "compressible": true - }, - "application/vnd.xara": { - "source": "iana", - "extensions": ["xar"] - }, - "application/vnd.xfdl": { - "source": "iana", - "extensions": ["xfdl"] - }, - "application/vnd.xfdl.webform": { - "source": "iana" - }, - "application/vnd.xmi+xml": { - "source": "iana" - }, - "application/vnd.xmpie.cpkg": { - "source": "iana" - }, - "application/vnd.xmpie.dpkg": { - "source": "iana" - }, - "application/vnd.xmpie.plan": { - "source": "iana" - }, - "application/vnd.xmpie.ppkg": { - "source": "iana" - }, - "application/vnd.xmpie.xlim": { - "source": "iana" - }, - "application/vnd.yamaha.hv-dic": { - "source": "iana", - "extensions": ["hvd"] - }, - "application/vnd.yamaha.hv-script": { - "source": "iana", - "extensions": ["hvs"] - }, - "application/vnd.yamaha.hv-voice": { - "source": "iana", - "extensions": ["hvp"] - }, - "application/vnd.yamaha.openscoreformat": { - "source": "iana", - "extensions": ["osf"] - }, - "application/vnd.yamaha.openscoreformat.osfpvg+xml": { - "source": "iana", - "extensions": ["osfpvg"] - }, - "application/vnd.yamaha.remote-setup": { - "source": "iana" - }, - "application/vnd.yamaha.smaf-audio": { - "source": "iana", - "extensions": ["saf"] - }, - "application/vnd.yamaha.smaf-phrase": { - "source": "iana", - "extensions": ["spf"] - }, - "application/vnd.yamaha.through-ngn": { - "source": "iana" - }, - "application/vnd.yamaha.tunnel-udpencap": { - "source": "iana" - }, - "application/vnd.yaoweme": { - "source": "iana" - }, - "application/vnd.yellowriver-custom-menu": { - "source": "iana", - "extensions": ["cmp"] - }, - "application/vnd.zul": { - "source": "iana", - "extensions": ["zir","zirz"] - }, - "application/vnd.zzazz.deck+xml": { - "source": "iana", - "extensions": ["zaz"] - }, - "application/voicexml+xml": { - "source": "iana", - "extensions": ["vxml"] - }, - "application/vq-rtcpxr": { - "source": "iana" - }, - "application/watcherinfo+xml": { - "source": "iana" - }, - "application/whoispp-query": { - "source": "iana" - }, - "application/whoispp-response": { - "source": "iana" - }, - "application/widget": { - "source": "iana", - "extensions": ["wgt"] - }, - "application/winhlp": { - "source": "apache", - "extensions": ["hlp"] - }, - "application/wita": { - "source": "iana" - }, - "application/wordperfect5.1": { - "source": "iana" - }, - "application/wsdl+xml": { - "source": "iana", - "extensions": ["wsdl"] - }, - "application/wspolicy+xml": { - "source": "iana", - "extensions": ["wspolicy"] - }, - "application/x-7z-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["7z"] - }, - "application/x-abiword": { - "source": "apache", - "extensions": ["abw"] - }, - "application/x-ace-compressed": { - "source": "apache", - "extensions": ["ace"] - }, - "application/x-amf": { - "source": "apache" - }, - "application/x-apple-diskimage": { - "source": "apache", - "extensions": ["dmg"] - }, - "application/x-authorware-bin": { - "source": "apache", - "extensions": ["aab","x32","u32","vox"] - }, - "application/x-authorware-map": { - "source": "apache", - "extensions": ["aam"] - }, - "application/x-authorware-seg": { - "source": "apache", - "extensions": ["aas"] - }, - "application/x-bcpio": { - "source": "apache", - "extensions": ["bcpio"] - }, - "application/x-bdoc": { - "compressible": false, - "extensions": ["bdoc"] - }, - "application/x-bittorrent": { - "source": "apache", - "extensions": ["torrent"] - }, - "application/x-blorb": { - "source": "apache", - "extensions": ["blb","blorb"] - }, - "application/x-bzip": { - "source": "apache", - "compressible": false, - "extensions": ["bz"] - }, - "application/x-bzip2": { - "source": "apache", - "compressible": false, - "extensions": ["bz2","boz"] - }, - "application/x-cbr": { - "source": "apache", - "extensions": ["cbr","cba","cbt","cbz","cb7"] - }, - "application/x-cdlink": { - "source": "apache", - "extensions": ["vcd"] - }, - "application/x-cfs-compressed": { - "source": "apache", - "extensions": ["cfs"] - }, - "application/x-chat": { - "source": "apache", - "extensions": ["chat"] - }, - "application/x-chess-pgn": { - "source": "apache", - "extensions": ["pgn"] - }, - "application/x-chrome-extension": { - "extensions": ["crx"] - }, - "application/x-cocoa": { - "source": "nginx", - "extensions": ["cco"] - }, - "application/x-compress": { - "source": "apache" - }, - "application/x-conference": { - "source": "apache", - "extensions": ["nsc"] - }, - "application/x-cpio": { - "source": "apache", - "extensions": ["cpio"] - }, - "application/x-csh": { - "source": "apache", - "extensions": ["csh"] - }, - "application/x-deb": { - "compressible": false - }, - "application/x-debian-package": { - "source": "apache", - "extensions": ["deb","udeb"] - }, - "application/x-dgc-compressed": { - "source": "apache", - "extensions": ["dgc"] - }, - "application/x-director": { - "source": "apache", - "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] - }, - "application/x-doom": { - "source": "apache", - "extensions": ["wad"] - }, - "application/x-dtbncx+xml": { - "source": "apache", - "extensions": ["ncx"] - }, - "application/x-dtbook+xml": { - "source": "apache", - "extensions": ["dtb"] - }, - "application/x-dtbresource+xml": { - "source": "apache", - "extensions": ["res"] - }, - "application/x-dvi": { - "source": "apache", - "compressible": false, - "extensions": ["dvi"] - }, - "application/x-envoy": { - "source": "apache", - "extensions": ["evy"] - }, - "application/x-eva": { - "source": "apache", - "extensions": ["eva"] - }, - "application/x-font-bdf": { - "source": "apache", - "extensions": ["bdf"] - }, - "application/x-font-dos": { - "source": "apache" - }, - "application/x-font-framemaker": { - "source": "apache" - }, - "application/x-font-ghostscript": { - "source": "apache", - "extensions": ["gsf"] - }, - "application/x-font-libgrx": { - "source": "apache" - }, - "application/x-font-linux-psf": { - "source": "apache", - "extensions": ["psf"] - }, - "application/x-font-otf": { - "source": "apache", - "compressible": true, - "extensions": ["otf"] - }, - "application/x-font-pcf": { - "source": "apache", - "extensions": ["pcf"] - }, - "application/x-font-snf": { - "source": "apache", - "extensions": ["snf"] - }, - "application/x-font-speedo": { - "source": "apache" - }, - "application/x-font-sunos-news": { - "source": "apache" - }, - "application/x-font-ttf": { - "source": "apache", - "compressible": true, - "extensions": ["ttf","ttc"] - }, - "application/x-font-type1": { - "source": "apache", - "extensions": ["pfa","pfb","pfm","afm"] - }, - "application/x-font-vfont": { - "source": "apache" - }, - "application/x-freearc": { - "source": "apache", - "extensions": ["arc"] - }, - "application/x-futuresplash": { - "source": "apache", - "extensions": ["spl"] - }, - "application/x-gca-compressed": { - "source": "apache", - "extensions": ["gca"] - }, - "application/x-glulx": { - "source": "apache", - "extensions": ["ulx"] - }, - "application/x-gnumeric": { - "source": "apache", - "extensions": ["gnumeric"] - }, - "application/x-gramps-xml": { - "source": "apache", - "extensions": ["gramps"] - }, - "application/x-gtar": { - "source": "apache", - "extensions": ["gtar"] - }, - "application/x-gzip": { - "source": "apache" - }, - "application/x-hdf": { - "source": "apache", - "extensions": ["hdf"] - }, - "application/x-httpd-php": { - "compressible": true, - "extensions": ["php"] - }, - "application/x-install-instructions": { - "source": "apache", - "extensions": ["install"] - }, - "application/x-iso9660-image": { - "source": "apache", - "extensions": ["iso"] - }, - "application/x-java-archive-diff": { - "source": "nginx", - "extensions": ["jardiff"] - }, - "application/x-java-jnlp-file": { - "source": "apache", - "compressible": false, - "extensions": ["jnlp"] - }, - "application/x-javascript": { - "compressible": true - }, - "application/x-latex": { - "source": "apache", - "compressible": false, - "extensions": ["latex"] - }, - "application/x-lua-bytecode": { - "extensions": ["luac"] - }, - "application/x-lzh-compressed": { - "source": "apache", - "extensions": ["lzh","lha"] - }, - "application/x-makeself": { - "source": "nginx", - "extensions": ["run"] - }, - "application/x-mie": { - "source": "apache", - "extensions": ["mie"] - }, - "application/x-mobipocket-ebook": { - "source": "apache", - "extensions": ["prc","mobi"] - }, - "application/x-mpegurl": { - "compressible": false - }, - "application/x-ms-application": { - "source": "apache", - "extensions": ["application"] - }, - "application/x-ms-shortcut": { - "source": "apache", - "extensions": ["lnk"] - }, - "application/x-ms-wmd": { - "source": "apache", - "extensions": ["wmd"] - }, - "application/x-ms-wmz": { - "source": "apache", - "extensions": ["wmz"] - }, - "application/x-ms-xbap": { - "source": "apache", - "extensions": ["xbap"] - }, - "application/x-msaccess": { - "source": "apache", - "extensions": ["mdb"] - }, - "application/x-msbinder": { - "source": "apache", - "extensions": ["obd"] - }, - "application/x-mscardfile": { - "source": "apache", - "extensions": ["crd"] - }, - "application/x-msclip": { - "source": "apache", - "extensions": ["clp"] - }, - "application/x-msdos-program": { - "extensions": ["exe"] - }, - "application/x-msdownload": { - "source": "apache", - "extensions": ["exe","dll","com","bat","msi"] - }, - "application/x-msmediaview": { - "source": "apache", - "extensions": ["mvb","m13","m14"] - }, - "application/x-msmetafile": { - "source": "apache", - "extensions": ["wmf","wmz","emf","emz"] - }, - "application/x-msmoney": { - "source": "apache", - "extensions": ["mny"] - }, - "application/x-mspublisher": { - "source": "apache", - "extensions": ["pub"] - }, - "application/x-msschedule": { - "source": "apache", - "extensions": ["scd"] - }, - "application/x-msterminal": { - "source": "apache", - "extensions": ["trm"] - }, - "application/x-mswrite": { - "source": "apache", - "extensions": ["wri"] - }, - "application/x-netcdf": { - "source": "apache", - "extensions": ["nc","cdf"] - }, - "application/x-ns-proxy-autoconfig": { - "compressible": true, - "extensions": ["pac"] - }, - "application/x-nzb": { - "source": "apache", - "extensions": ["nzb"] - }, - "application/x-perl": { - "source": "nginx", - "extensions": ["pl","pm"] - }, - "application/x-pilot": { - "source": "nginx", - "extensions": ["prc","pdb"] - }, - "application/x-pkcs12": { - "source": "apache", - "compressible": false, - "extensions": ["p12","pfx"] - }, - "application/x-pkcs7-certificates": { - "source": "apache", - "extensions": ["p7b","spc"] - }, - "application/x-pkcs7-certreqresp": { - "source": "apache", - "extensions": ["p7r"] - }, - "application/x-rar-compressed": { - "source": "apache", - "compressible": false, - "extensions": ["rar"] - }, - "application/x-redhat-package-manager": { - "source": "nginx", - "extensions": ["rpm"] - }, - "application/x-research-info-systems": { - "source": "apache", - "extensions": ["ris"] - }, - "application/x-sea": { - "source": "nginx", - "extensions": ["sea"] - }, - "application/x-sh": { - "source": "apache", - "compressible": true, - "extensions": ["sh"] - }, - "application/x-shar": { - "source": "apache", - "extensions": ["shar"] - }, - "application/x-shockwave-flash": { - "source": "apache", - "compressible": false, - "extensions": ["swf"] - }, - "application/x-silverlight-app": { - "source": "apache", - "extensions": ["xap"] - }, - "application/x-sql": { - "source": "apache", - "extensions": ["sql"] - }, - "application/x-stuffit": { - "source": "apache", - "compressible": false, - "extensions": ["sit"] - }, - "application/x-stuffitx": { - "source": "apache", - "extensions": ["sitx"] - }, - "application/x-subrip": { - "source": "apache", - "extensions": ["srt"] - }, - "application/x-sv4cpio": { - "source": "apache", - "extensions": ["sv4cpio"] - }, - "application/x-sv4crc": { - "source": "apache", - "extensions": ["sv4crc"] - }, - "application/x-t3vm-image": { - "source": "apache", - "extensions": ["t3"] - }, - "application/x-tads": { - "source": "apache", - "extensions": ["gam"] - }, - "application/x-tar": { - "source": "apache", - "compressible": true, - "extensions": ["tar"] - }, - "application/x-tcl": { - "source": "apache", - "extensions": ["tcl","tk"] - }, - "application/x-tex": { - "source": "apache", - "extensions": ["tex"] - }, - "application/x-tex-tfm": { - "source": "apache", - "extensions": ["tfm"] - }, - "application/x-texinfo": { - "source": "apache", - "extensions": ["texinfo","texi"] - }, - "application/x-tgif": { - "source": "apache", - "extensions": ["obj"] - }, - "application/x-ustar": { - "source": "apache", - "extensions": ["ustar"] - }, - "application/x-wais-source": { - "source": "apache", - "extensions": ["src"] - }, - "application/x-web-app-manifest+json": { - "compressible": true, - "extensions": ["webapp"] - }, - "application/x-www-form-urlencoded": { - "source": "iana", - "compressible": true - }, - "application/x-x509-ca-cert": { - "source": "apache", - "extensions": ["der","crt","pem"] - }, - "application/x-xfig": { - "source": "apache", - "extensions": ["fig"] - }, - "application/x-xliff+xml": { - "source": "apache", - "extensions": ["xlf"] - }, - "application/x-xpinstall": { - "source": "apache", - "compressible": false, - "extensions": ["xpi"] - }, - "application/x-xz": { - "source": "apache", - "extensions": ["xz"] - }, - "application/x-zmachine": { - "source": "apache", - "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] - }, - "application/x400-bp": { - "source": "iana" - }, - "application/xacml+xml": { - "source": "iana" - }, - "application/xaml+xml": { - "source": "apache", - "extensions": ["xaml"] - }, - "application/xcap-att+xml": { - "source": "iana" - }, - "application/xcap-caps+xml": { - "source": "iana" - }, - "application/xcap-diff+xml": { - "source": "iana", - "extensions": ["xdf"] - }, - "application/xcap-el+xml": { - "source": "iana" - }, - "application/xcap-error+xml": { - "source": "iana" - }, - "application/xcap-ns+xml": { - "source": "iana" - }, - "application/xcon-conference-info+xml": { - "source": "iana" - }, - "application/xcon-conference-info-diff+xml": { - "source": "iana" - }, - "application/xenc+xml": { - "source": "iana", - "extensions": ["xenc"] - }, - "application/xhtml+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xhtml","xht"] - }, - "application/xhtml-voice+xml": { - "source": "apache" - }, - "application/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml","xsl","xsd"] - }, - "application/xml-dtd": { - "source": "iana", - "compressible": true, - "extensions": ["dtd"] - }, - "application/xml-external-parsed-entity": { - "source": "iana" - }, - "application/xml-patch+xml": { - "source": "iana" - }, - "application/xmpp+xml": { - "source": "iana" - }, - "application/xop+xml": { - "source": "iana", - "compressible": true, - "extensions": ["xop"] - }, - "application/xproc+xml": { - "source": "apache", - "extensions": ["xpl"] - }, - "application/xslt+xml": { - "source": "iana", - "extensions": ["xslt"] - }, - "application/xspf+xml": { - "source": "apache", - "extensions": ["xspf"] - }, - "application/xv+xml": { - "source": "iana", - "extensions": ["mxml","xhvml","xvml","xvm"] - }, - "application/yang": { - "source": "iana", - "extensions": ["yang"] - }, - "application/yin+xml": { - "source": "iana", - "extensions": ["yin"] - }, - "application/zip": { - "source": "iana", - "compressible": false, - "extensions": ["zip"] - }, - "application/zlib": { - "source": "iana" - }, - "audio/1d-interleaved-parityfec": { - "source": "iana" - }, - "audio/32kadpcm": { - "source": "iana" - }, - "audio/3gpp": { - "source": "iana" - }, - "audio/3gpp2": { - "source": "iana" - }, - "audio/ac3": { - "source": "iana" - }, - "audio/adpcm": { - "source": "apache", - "extensions": ["adp"] - }, - "audio/amr": { - "source": "iana" - }, - "audio/amr-wb": { - "source": "iana" - }, - "audio/amr-wb+": { - "source": "iana" - }, - "audio/aptx": { - "source": "iana" - }, - "audio/asc": { - "source": "iana" - }, - "audio/atrac-advanced-lossless": { - "source": "iana" - }, - "audio/atrac-x": { - "source": "iana" - }, - "audio/atrac3": { - "source": "iana" - }, - "audio/basic": { - "source": "iana", - "compressible": false, - "extensions": ["au","snd"] - }, - "audio/bv16": { - "source": "iana" - }, - "audio/bv32": { - "source": "iana" - }, - "audio/clearmode": { - "source": "iana" - }, - "audio/cn": { - "source": "iana" - }, - "audio/dat12": { - "source": "iana" - }, - "audio/dls": { - "source": "iana" - }, - "audio/dsr-es201108": { - "source": "iana" - }, - "audio/dsr-es202050": { - "source": "iana" - }, - "audio/dsr-es202211": { - "source": "iana" - }, - "audio/dsr-es202212": { - "source": "iana" - }, - "audio/dv": { - "source": "iana" - }, - "audio/dvi4": { - "source": "iana" - }, - "audio/eac3": { - "source": "iana" - }, - "audio/encaprtp": { - "source": "iana" - }, - "audio/evrc": { - "source": "iana" - }, - "audio/evrc-qcp": { - "source": "iana" - }, - "audio/evrc0": { - "source": "iana" - }, - "audio/evrc1": { - "source": "iana" - }, - "audio/evrcb": { - "source": "iana" - }, - "audio/evrcb0": { - "source": "iana" - }, - "audio/evrcb1": { - "source": "iana" - }, - "audio/evrcnw": { - "source": "iana" - }, - "audio/evrcnw0": { - "source": "iana" - }, - "audio/evrcnw1": { - "source": "iana" - }, - "audio/evrcwb": { - "source": "iana" - }, - "audio/evrcwb0": { - "source": "iana" - }, - "audio/evrcwb1": { - "source": "iana" - }, - "audio/fwdred": { - "source": "iana" - }, - "audio/g711-0": { - "source": "iana" - }, - "audio/g719": { - "source": "iana" - }, - "audio/g722": { - "source": "iana" - }, - "audio/g7221": { - "source": "iana" - }, - "audio/g723": { - "source": "iana" - }, - "audio/g726-16": { - "source": "iana" - }, - "audio/g726-24": { - "source": "iana" - }, - "audio/g726-32": { - "source": "iana" - }, - "audio/g726-40": { - "source": "iana" - }, - "audio/g728": { - "source": "iana" - }, - "audio/g729": { - "source": "iana" - }, - "audio/g7291": { - "source": "iana" - }, - "audio/g729d": { - "source": "iana" - }, - "audio/g729e": { - "source": "iana" - }, - "audio/gsm": { - "source": "iana" - }, - "audio/gsm-efr": { - "source": "iana" - }, - "audio/gsm-hr-08": { - "source": "iana" - }, - "audio/ilbc": { - "source": "iana" - }, - "audio/ip-mr_v2.5": { - "source": "iana" - }, - "audio/isac": { - "source": "apache" - }, - "audio/l16": { - "source": "iana" - }, - "audio/l20": { - "source": "iana" - }, - "audio/l24": { - "source": "iana", - "compressible": false - }, - "audio/l8": { - "source": "iana" - }, - "audio/lpc": { - "source": "iana" - }, - "audio/midi": { - "source": "apache", - "extensions": ["mid","midi","kar","rmi"] - }, - "audio/mobile-xmf": { - "source": "iana" - }, - "audio/mp4": { - "source": "iana", - "compressible": false, - "extensions": ["mp4a","m4a"] - }, - "audio/mp4a-latm": { - "source": "iana" - }, - "audio/mpa": { - "source": "iana" - }, - "audio/mpa-robust": { - "source": "iana" - }, - "audio/mpeg": { - "source": "iana", - "compressible": false, - "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] - }, - "audio/mpeg4-generic": { - "source": "iana" - }, - "audio/musepack": { - "source": "apache" - }, - "audio/ogg": { - "source": "iana", - "compressible": false, - "extensions": ["oga","ogg","spx"] - }, - "audio/opus": { - "source": "iana" - }, - "audio/parityfec": { - "source": "iana" - }, - "audio/pcma": { - "source": "iana" - }, - "audio/pcma-wb": { - "source": "iana" - }, - "audio/pcmu": { - "source": "iana" - }, - "audio/pcmu-wb": { - "source": "iana" - }, - "audio/prs.sid": { - "source": "iana" - }, - "audio/qcelp": { - "source": "iana" - }, - "audio/raptorfec": { - "source": "iana" - }, - "audio/red": { - "source": "iana" - }, - "audio/rtp-enc-aescm128": { - "source": "iana" - }, - "audio/rtp-midi": { - "source": "iana" - }, - "audio/rtploopback": { - "source": "iana" - }, - "audio/rtx": { - "source": "iana" - }, - "audio/s3m": { - "source": "apache", - "extensions": ["s3m"] - }, - "audio/silk": { - "source": "apache", - "extensions": ["sil"] - }, - "audio/smv": { - "source": "iana" - }, - "audio/smv-qcp": { - "source": "iana" - }, - "audio/smv0": { - "source": "iana" - }, - "audio/sp-midi": { - "source": "iana" - }, - "audio/speex": { - "source": "iana" - }, - "audio/t140c": { - "source": "iana" - }, - "audio/t38": { - "source": "iana" - }, - "audio/telephone-event": { - "source": "iana" - }, - "audio/tone": { - "source": "iana" - }, - "audio/uemclip": { - "source": "iana" - }, - "audio/ulpfec": { - "source": "iana" - }, - "audio/vdvi": { - "source": "iana" - }, - "audio/vmr-wb": { - "source": "iana" - }, - "audio/vnd.3gpp.iufp": { - "source": "iana" - }, - "audio/vnd.4sb": { - "source": "iana" - }, - "audio/vnd.audiokoz": { - "source": "iana" - }, - "audio/vnd.celp": { - "source": "iana" - }, - "audio/vnd.cisco.nse": { - "source": "iana" - }, - "audio/vnd.cmles.radio-events": { - "source": "iana" - }, - "audio/vnd.cns.anp1": { - "source": "iana" - }, - "audio/vnd.cns.inf1": { - "source": "iana" - }, - "audio/vnd.dece.audio": { - "source": "iana", - "extensions": ["uva","uvva"] - }, - "audio/vnd.digital-winds": { - "source": "iana", - "extensions": ["eol"] - }, - "audio/vnd.dlna.adts": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.1": { - "source": "iana" - }, - "audio/vnd.dolby.heaac.2": { - "source": "iana" - }, - "audio/vnd.dolby.mlp": { - "source": "iana" - }, - "audio/vnd.dolby.mps": { - "source": "iana" - }, - "audio/vnd.dolby.pl2": { - "source": "iana" - }, - "audio/vnd.dolby.pl2x": { - "source": "iana" - }, - "audio/vnd.dolby.pl2z": { - "source": "iana" - }, - "audio/vnd.dolby.pulse.1": { - "source": "iana" - }, - "audio/vnd.dra": { - "source": "iana", - "extensions": ["dra"] - }, - "audio/vnd.dts": { - "source": "iana", - "extensions": ["dts"] - }, - "audio/vnd.dts.hd": { - "source": "iana", - "extensions": ["dtshd"] - }, - "audio/vnd.dvb.file": { - "source": "iana" - }, - "audio/vnd.everad.plj": { - "source": "iana" - }, - "audio/vnd.hns.audio": { - "source": "iana" - }, - "audio/vnd.lucent.voice": { - "source": "iana", - "extensions": ["lvp"] - }, - "audio/vnd.ms-playready.media.pya": { - "source": "iana", - "extensions": ["pya"] - }, - "audio/vnd.nokia.mobile-xmf": { - "source": "iana" - }, - "audio/vnd.nortel.vbk": { - "source": "iana" - }, - "audio/vnd.nuera.ecelp4800": { - "source": "iana", - "extensions": ["ecelp4800"] - }, - "audio/vnd.nuera.ecelp7470": { - "source": "iana", - "extensions": ["ecelp7470"] - }, - "audio/vnd.nuera.ecelp9600": { - "source": "iana", - "extensions": ["ecelp9600"] - }, - "audio/vnd.octel.sbc": { - "source": "iana" - }, - "audio/vnd.qcelp": { - "source": "iana" - }, - "audio/vnd.rhetorex.32kadpcm": { - "source": "iana" - }, - "audio/vnd.rip": { - "source": "iana", - "extensions": ["rip"] - }, - "audio/vnd.rn-realaudio": { - "compressible": false - }, - "audio/vnd.sealedmedia.softseal.mpeg": { - "source": "iana" - }, - "audio/vnd.vmx.cvsd": { - "source": "iana" - }, - "audio/vnd.wave": { - "compressible": false - }, - "audio/vorbis": { - "source": "iana", - "compressible": false - }, - "audio/vorbis-config": { - "source": "iana" - }, - "audio/wav": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/wave": { - "compressible": false, - "extensions": ["wav"] - }, - "audio/webm": { - "source": "apache", - "compressible": false, - "extensions": ["weba"] - }, - "audio/x-aac": { - "source": "apache", - "compressible": false, - "extensions": ["aac"] - }, - "audio/x-aiff": { - "source": "apache", - "extensions": ["aif","aiff","aifc"] - }, - "audio/x-caf": { - "source": "apache", - "compressible": false, - "extensions": ["caf"] - }, - "audio/x-flac": { - "source": "apache", - "extensions": ["flac"] - }, - "audio/x-m4a": { - "source": "nginx", - "extensions": ["m4a"] - }, - "audio/x-matroska": { - "source": "apache", - "extensions": ["mka"] - }, - "audio/x-mpegurl": { - "source": "apache", - "extensions": ["m3u"] - }, - "audio/x-ms-wax": { - "source": "apache", - "extensions": ["wax"] - }, - "audio/x-ms-wma": { - "source": "apache", - "extensions": ["wma"] - }, - "audio/x-pn-realaudio": { - "source": "apache", - "extensions": ["ram","ra"] - }, - "audio/x-pn-realaudio-plugin": { - "source": "apache", - "extensions": ["rmp"] - }, - "audio/x-realaudio": { - "source": "nginx", - "extensions": ["ra"] - }, - "audio/x-tta": { - "source": "apache" - }, - "audio/x-wav": { - "source": "apache", - "extensions": ["wav"] - }, - "audio/xm": { - "source": "apache", - "extensions": ["xm"] - }, - "chemical/x-cdx": { - "source": "apache", - "extensions": ["cdx"] - }, - "chemical/x-cif": { - "source": "apache", - "extensions": ["cif"] - }, - "chemical/x-cmdf": { - "source": "apache", - "extensions": ["cmdf"] - }, - "chemical/x-cml": { - "source": "apache", - "extensions": ["cml"] - }, - "chemical/x-csml": { - "source": "apache", - "extensions": ["csml"] - }, - "chemical/x-pdb": { - "source": "apache" - }, - "chemical/x-xyz": { - "source": "apache", - "extensions": ["xyz"] - }, - "font/opentype": { - "compressible": true, - "extensions": ["otf"] - }, - "image/bmp": { - "source": "apache", - "compressible": true, - "extensions": ["bmp"] - }, - "image/cgm": { - "source": "iana", - "extensions": ["cgm"] - }, - "image/fits": { - "source": "iana" - }, - "image/g3fax": { - "source": "iana", - "extensions": ["g3"] - }, - "image/gif": { - "source": "iana", - "compressible": false, - "extensions": ["gif"] - }, - "image/ief": { - "source": "iana", - "extensions": ["ief"] - }, - "image/jp2": { - "source": "iana" - }, - "image/jpeg": { - "source": "iana", - "compressible": false, - "extensions": ["jpeg","jpg","jpe"] - }, - "image/jpm": { - "source": "iana" - }, - "image/jpx": { - "source": "iana" - }, - "image/ktx": { - "source": "iana", - "extensions": ["ktx"] - }, - "image/naplps": { - "source": "iana" - }, - "image/pjpeg": { - "compressible": false - }, - "image/png": { - "source": "iana", - "compressible": false, - "extensions": ["png"] - }, - "image/prs.btif": { - "source": "iana", - "extensions": ["btif"] - }, - "image/prs.pti": { - "source": "iana" - }, - "image/pwg-raster": { - "source": "iana" - }, - "image/sgi": { - "source": "apache", - "extensions": ["sgi"] - }, - "image/svg+xml": { - "source": "iana", - "compressible": true, - "extensions": ["svg","svgz"] - }, - "image/t38": { - "source": "iana" - }, - "image/tiff": { - "source": "iana", - "compressible": false, - "extensions": ["tiff","tif"] - }, - "image/tiff-fx": { - "source": "iana" - }, - "image/vnd.adobe.photoshop": { - "source": "iana", - "compressible": true, - "extensions": ["psd"] - }, - "image/vnd.airzip.accelerator.azv": { - "source": "iana" - }, - "image/vnd.cns.inf2": { - "source": "iana" - }, - "image/vnd.dece.graphic": { - "source": "iana", - "extensions": ["uvi","uvvi","uvg","uvvg"] - }, - "image/vnd.djvu": { - "source": "iana", - "extensions": ["djvu","djv"] - }, - "image/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "image/vnd.dwg": { - "source": "iana", - "extensions": ["dwg"] - }, - "image/vnd.dxf": { - "source": "iana", - "extensions": ["dxf"] - }, - "image/vnd.fastbidsheet": { - "source": "iana", - "extensions": ["fbs"] - }, - "image/vnd.fpx": { - "source": "iana", - "extensions": ["fpx"] - }, - "image/vnd.fst": { - "source": "iana", - "extensions": ["fst"] - }, - "image/vnd.fujixerox.edmics-mmr": { - "source": "iana", - "extensions": ["mmr"] - }, - "image/vnd.fujixerox.edmics-rlc": { - "source": "iana", - "extensions": ["rlc"] - }, - "image/vnd.globalgraphics.pgb": { - "source": "iana" - }, - "image/vnd.microsoft.icon": { - "source": "iana" - }, - "image/vnd.mix": { - "source": "iana" - }, - "image/vnd.mozilla.apng": { - "source": "iana" - }, - "image/vnd.ms-modi": { - "source": "iana", - "extensions": ["mdi"] - }, - "image/vnd.ms-photo": { - "source": "apache", - "extensions": ["wdp"] - }, - "image/vnd.net-fpx": { - "source": "iana", - "extensions": ["npx"] - }, - "image/vnd.radiance": { - "source": "iana" - }, - "image/vnd.sealed.png": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.gif": { - "source": "iana" - }, - "image/vnd.sealedmedia.softseal.jpg": { - "source": "iana" - }, - "image/vnd.svf": { - "source": "iana" - }, - "image/vnd.tencent.tap": { - "source": "iana" - }, - "image/vnd.valve.source.texture": { - "source": "iana" - }, - "image/vnd.wap.wbmp": { - "source": "iana", - "extensions": ["wbmp"] - }, - "image/vnd.xiff": { - "source": "iana", - "extensions": ["xif"] - }, - "image/vnd.zbrush.pcx": { - "source": "iana" - }, - "image/webp": { - "source": "apache", - "extensions": ["webp"] - }, - "image/x-3ds": { - "source": "apache", - "extensions": ["3ds"] - }, - "image/x-cmu-raster": { - "source": "apache", - "extensions": ["ras"] - }, - "image/x-cmx": { - "source": "apache", - "extensions": ["cmx"] - }, - "image/x-freehand": { - "source": "apache", - "extensions": ["fh","fhc","fh4","fh5","fh7"] - }, - "image/x-icon": { - "source": "apache", - "compressible": true, - "extensions": ["ico"] - }, - "image/x-jng": { - "source": "nginx", - "extensions": ["jng"] - }, - "image/x-mrsid-image": { - "source": "apache", - "extensions": ["sid"] - }, - "image/x-ms-bmp": { - "source": "nginx", - "compressible": true, - "extensions": ["bmp"] - }, - "image/x-pcx": { - "source": "apache", - "extensions": ["pcx"] - }, - "image/x-pict": { - "source": "apache", - "extensions": ["pic","pct"] - }, - "image/x-portable-anymap": { - "source": "apache", - "extensions": ["pnm"] - }, - "image/x-portable-bitmap": { - "source": "apache", - "extensions": ["pbm"] - }, - "image/x-portable-graymap": { - "source": "apache", - "extensions": ["pgm"] - }, - "image/x-portable-pixmap": { - "source": "apache", - "extensions": ["ppm"] - }, - "image/x-rgb": { - "source": "apache", - "extensions": ["rgb"] - }, - "image/x-tga": { - "source": "apache", - "extensions": ["tga"] - }, - "image/x-xbitmap": { - "source": "apache", - "extensions": ["xbm"] - }, - "image/x-xcf": { - "compressible": false - }, - "image/x-xpixmap": { - "source": "apache", - "extensions": ["xpm"] - }, - "image/x-xwindowdump": { - "source": "apache", - "extensions": ["xwd"] - }, - "message/cpim": { - "source": "iana" - }, - "message/delivery-status": { - "source": "iana" - }, - "message/disposition-notification": { - "source": "iana" - }, - "message/external-body": { - "source": "iana" - }, - "message/feedback-report": { - "source": "iana" - }, - "message/global": { - "source": "iana" - }, - "message/global-delivery-status": { - "source": "iana" - }, - "message/global-disposition-notification": { - "source": "iana" - }, - "message/global-headers": { - "source": "iana" - }, - "message/http": { - "source": "iana", - "compressible": false - }, - "message/imdn+xml": { - "source": "iana", - "compressible": true - }, - "message/news": { - "source": "iana" - }, - "message/partial": { - "source": "iana", - "compressible": false - }, - "message/rfc822": { - "source": "iana", - "compressible": true, - "extensions": ["eml","mime"] - }, - "message/s-http": { - "source": "iana" - }, - "message/sip": { - "source": "iana" - }, - "message/sipfrag": { - "source": "iana" - }, - "message/tracking-status": { - "source": "iana" - }, - "message/vnd.si.simp": { - "source": "iana" - }, - "message/vnd.wfa.wsc": { - "source": "iana" - }, - "model/iges": { - "source": "iana", - "compressible": false, - "extensions": ["igs","iges"] - }, - "model/mesh": { - "source": "iana", - "compressible": false, - "extensions": ["msh","mesh","silo"] - }, - "model/vnd.collada+xml": { - "source": "iana", - "extensions": ["dae"] - }, - "model/vnd.dwf": { - "source": "iana", - "extensions": ["dwf"] - }, - "model/vnd.flatland.3dml": { - "source": "iana" - }, - "model/vnd.gdl": { - "source": "iana", - "extensions": ["gdl"] - }, - "model/vnd.gs-gdl": { - "source": "apache" - }, - "model/vnd.gs.gdl": { - "source": "iana" - }, - "model/vnd.gtw": { - "source": "iana", - "extensions": ["gtw"] - }, - "model/vnd.moml+xml": { - "source": "iana" - }, - "model/vnd.mts": { - "source": "iana", - "extensions": ["mts"] - }, - "model/vnd.opengex": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.binary": { - "source": "iana" - }, - "model/vnd.parasolid.transmit.text": { - "source": "iana" - }, - "model/vnd.valve.source.compiled-map": { - "source": "iana" - }, - "model/vnd.vtu": { - "source": "iana", - "extensions": ["vtu"] - }, - "model/vrml": { - "source": "iana", - "compressible": false, - "extensions": ["wrl","vrml"] - }, - "model/x3d+binary": { - "source": "apache", - "compressible": false, - "extensions": ["x3db","x3dbz"] - }, - "model/x3d+fastinfoset": { - "source": "iana" - }, - "model/x3d+vrml": { - "source": "apache", - "compressible": false, - "extensions": ["x3dv","x3dvz"] - }, - "model/x3d+xml": { - "source": "iana", - "compressible": true, - "extensions": ["x3d","x3dz"] - }, - "model/x3d-vrml": { - "source": "iana" - }, - "multipart/alternative": { - "source": "iana", - "compressible": false - }, - "multipart/appledouble": { - "source": "iana" - }, - "multipart/byteranges": { - "source": "iana" - }, - "multipart/digest": { - "source": "iana" - }, - "multipart/encrypted": { - "source": "iana", - "compressible": false - }, - "multipart/form-data": { - "source": "iana", - "compressible": false - }, - "multipart/header-set": { - "source": "iana" - }, - "multipart/mixed": { - "source": "iana", - "compressible": false - }, - "multipart/parallel": { - "source": "iana" - }, - "multipart/related": { - "source": "iana", - "compressible": false - }, - "multipart/report": { - "source": "iana" - }, - "multipart/signed": { - "source": "iana", - "compressible": false - }, - "multipart/voice-message": { - "source": "iana" - }, - "multipart/x-mixed-replace": { - "source": "iana" - }, - "text/1d-interleaved-parityfec": { - "source": "iana" - }, - "text/cache-manifest": { - "source": "iana", - "compressible": true, - "extensions": ["appcache","manifest"] - }, - "text/calendar": { - "source": "iana", - "extensions": ["ics","ifb"] - }, - "text/calender": { - "compressible": true - }, - "text/cmd": { - "compressible": true - }, - "text/coffeescript": { - "extensions": ["coffee","litcoffee"] - }, - "text/css": { - "source": "iana", - "compressible": true, - "extensions": ["css"] - }, - "text/csv": { - "source": "iana", - "compressible": true, - "extensions": ["csv"] - }, - "text/csv-schema": { - "source": "iana" - }, - "text/directory": { - "source": "iana" - }, - "text/dns": { - "source": "iana" - }, - "text/ecmascript": { - "source": "iana" - }, - "text/encaprtp": { - "source": "iana" - }, - "text/enriched": { - "source": "iana" - }, - "text/fwdred": { - "source": "iana" - }, - "text/grammar-ref-list": { - "source": "iana" - }, - "text/hjson": { - "extensions": ["hjson"] - }, - "text/html": { - "source": "iana", - "compressible": true, - "extensions": ["html","htm","shtml"] - }, - "text/jade": { - "extensions": ["jade"] - }, - "text/javascript": { - "source": "iana", - "compressible": true - }, - "text/jcr-cnd": { - "source": "iana" - }, - "text/jsx": { - "compressible": true, - "extensions": ["jsx"] - }, - "text/less": { - "extensions": ["less"] - }, - "text/markdown": { - "source": "iana" - }, - "text/mathml": { - "source": "nginx", - "extensions": ["mml"] - }, - "text/mizar": { - "source": "iana" - }, - "text/n3": { - "source": "iana", - "compressible": true, - "extensions": ["n3"] - }, - "text/parameters": { - "source": "iana" - }, - "text/parityfec": { - "source": "iana" - }, - "text/plain": { - "source": "iana", - "compressible": true, - "extensions": ["txt","text","conf","def","list","log","in","ini"] - }, - "text/provenance-notation": { - "source": "iana" - }, - "text/prs.fallenstein.rst": { - "source": "iana" - }, - "text/prs.lines.tag": { - "source": "iana", - "extensions": ["dsc"] - }, - "text/raptorfec": { - "source": "iana" - }, - "text/red": { - "source": "iana" - }, - "text/rfc822-headers": { - "source": "iana" - }, - "text/richtext": { - "source": "iana", - "compressible": true, - "extensions": ["rtx"] - }, - "text/rtf": { - "source": "iana", - "compressible": true, - "extensions": ["rtf"] - }, - "text/rtp-enc-aescm128": { - "source": "iana" - }, - "text/rtploopback": { - "source": "iana" - }, - "text/rtx": { - "source": "iana" - }, - "text/sgml": { - "source": "iana", - "extensions": ["sgml","sgm"] - }, - "text/stylus": { - "extensions": ["stylus","styl"] - }, - "text/t140": { - "source": "iana" - }, - "text/tab-separated-values": { - "source": "iana", - "compressible": true, - "extensions": ["tsv"] - }, - "text/troff": { - "source": "iana", - "extensions": ["t","tr","roff","man","me","ms"] - }, - "text/turtle": { - "source": "iana", - "extensions": ["ttl"] - }, - "text/ulpfec": { - "source": "iana" - }, - "text/uri-list": { - "source": "iana", - "compressible": true, - "extensions": ["uri","uris","urls"] - }, - "text/vcard": { - "source": "iana", - "compressible": true, - "extensions": ["vcard"] - }, - "text/vnd.a": { - "source": "iana" - }, - "text/vnd.abc": { - "source": "iana" - }, - "text/vnd.curl": { - "source": "iana", - "extensions": ["curl"] - }, - "text/vnd.curl.dcurl": { - "source": "apache", - "extensions": ["dcurl"] - }, - "text/vnd.curl.mcurl": { - "source": "apache", - "extensions": ["mcurl"] - }, - "text/vnd.curl.scurl": { - "source": "apache", - "extensions": ["scurl"] - }, - "text/vnd.debian.copyright": { - "source": "iana" - }, - "text/vnd.dmclientscript": { - "source": "iana" - }, - "text/vnd.dvb.subtitle": { - "source": "iana", - "extensions": ["sub"] - }, - "text/vnd.esmertec.theme-descriptor": { - "source": "iana" - }, - "text/vnd.fly": { - "source": "iana", - "extensions": ["fly"] - }, - "text/vnd.fmi.flexstor": { - "source": "iana", - "extensions": ["flx"] - }, - "text/vnd.graphviz": { - "source": "iana", - "extensions": ["gv"] - }, - "text/vnd.in3d.3dml": { - "source": "iana", - "extensions": ["3dml"] - }, - "text/vnd.in3d.spot": { - "source": "iana", - "extensions": ["spot"] - }, - "text/vnd.iptc.newsml": { - "source": "iana" - }, - "text/vnd.iptc.nitf": { - "source": "iana" - }, - "text/vnd.latex-z": { - "source": "iana" - }, - "text/vnd.motorola.reflex": { - "source": "iana" - }, - "text/vnd.ms-mediapackage": { - "source": "iana" - }, - "text/vnd.net2phone.commcenter.command": { - "source": "iana" - }, - "text/vnd.radisys.msml-basic-layout": { - "source": "iana" - }, - "text/vnd.si.uricatalogue": { - "source": "iana" - }, - "text/vnd.sun.j2me.app-descriptor": { - "source": "iana", - "extensions": ["jad"] - }, - "text/vnd.trolltech.linguist": { - "source": "iana" - }, - "text/vnd.wap.si": { - "source": "iana" - }, - "text/vnd.wap.sl": { - "source": "iana" - }, - "text/vnd.wap.wml": { - "source": "iana", - "extensions": ["wml"] - }, - "text/vnd.wap.wmlscript": { - "source": "iana", - "extensions": ["wmls"] - }, - "text/vtt": { - "charset": "UTF-8", - "compressible": true, - "extensions": ["vtt"] - }, - "text/x-asm": { - "source": "apache", - "extensions": ["s","asm"] - }, - "text/x-c": { - "source": "apache", - "extensions": ["c","cc","cxx","cpp","h","hh","dic"] - }, - "text/x-component": { - "source": "nginx", - "extensions": ["htc"] - }, - "text/x-fortran": { - "source": "apache", - "extensions": ["f","for","f77","f90"] - }, - "text/x-gwt-rpc": { - "compressible": true - }, - "text/x-handlebars-template": { - "extensions": ["hbs"] - }, - "text/x-java-source": { - "source": "apache", - "extensions": ["java"] - }, - "text/x-jquery-tmpl": { - "compressible": true - }, - "text/x-lua": { - "extensions": ["lua"] - }, - "text/x-markdown": { - "compressible": true, - "extensions": ["markdown","md","mkd"] - }, - "text/x-nfo": { - "source": "apache", - "extensions": ["nfo"] - }, - "text/x-opml": { - "source": "apache", - "extensions": ["opml"] - }, - "text/x-pascal": { - "source": "apache", - "extensions": ["p","pas"] - }, - "text/x-processing": { - "compressible": true, - "extensions": ["pde"] - }, - "text/x-sass": { - "extensions": ["sass"] - }, - "text/x-scss": { - "extensions": ["scss"] - }, - "text/x-setext": { - "source": "apache", - "extensions": ["etx"] - }, - "text/x-sfv": { - "source": "apache", - "extensions": ["sfv"] - }, - "text/x-suse-ymp": { - "compressible": true, - "extensions": ["ymp"] - }, - "text/x-uuencode": { - "source": "apache", - "extensions": ["uu"] - }, - "text/x-vcalendar": { - "source": "apache", - "extensions": ["vcs"] - }, - "text/x-vcard": { - "source": "apache", - "extensions": ["vcf"] - }, - "text/xml": { - "source": "iana", - "compressible": true, - "extensions": ["xml"] - }, - "text/xml-external-parsed-entity": { - "source": "iana" - }, - "text/yaml": { - "extensions": ["yaml","yml"] - }, - "video/1d-interleaved-parityfec": { - "source": "apache" - }, - "video/3gpp": { - "source": "apache", - "extensions": ["3gp","3gpp"] - }, - "video/3gpp-tt": { - "source": "apache" - }, - "video/3gpp2": { - "source": "apache", - "extensions": ["3g2"] - }, - "video/bmpeg": { - "source": "apache" - }, - "video/bt656": { - "source": "apache" - }, - "video/celb": { - "source": "apache" - }, - "video/dv": { - "source": "apache" - }, - "video/h261": { - "source": "apache", - "extensions": ["h261"] - }, - "video/h263": { - "source": "apache", - "extensions": ["h263"] - }, - "video/h263-1998": { - "source": "apache" - }, - "video/h263-2000": { - "source": "apache" - }, - "video/h264": { - "source": "apache", - "extensions": ["h264"] - }, - "video/h264-rcdo": { - "source": "apache" - }, - "video/h264-svc": { - "source": "apache" - }, - "video/jpeg": { - "source": "apache", - "extensions": ["jpgv"] - }, - "video/jpeg2000": { - "source": "apache" - }, - "video/jpm": { - "source": "apache", - "extensions": ["jpm","jpgm"] - }, - "video/mj2": { - "source": "apache", - "extensions": ["mj2","mjp2"] - }, - "video/mp1s": { - "source": "apache" - }, - "video/mp2p": { - "source": "apache" - }, - "video/mp2t": { - "source": "apache", - "extensions": ["ts"] - }, - "video/mp4": { - "source": "apache", - "compressible": false, - "extensions": ["mp4","mp4v","mpg4"] - }, - "video/mp4v-es": { - "source": "apache" - }, - "video/mpeg": { - "source": "apache", - "compressible": false, - "extensions": ["mpeg","mpg","mpe","m1v","m2v"] - }, - "video/mpeg4-generic": { - "source": "apache" - }, - "video/mpv": { - "source": "apache" - }, - "video/nv": { - "source": "apache" - }, - "video/ogg": { - "source": "apache", - "compressible": false, - "extensions": ["ogv"] - }, - "video/parityfec": { - "source": "apache" - }, - "video/pointer": { - "source": "apache" - }, - "video/quicktime": { - "source": "apache", - "compressible": false, - "extensions": ["qt","mov"] - }, - "video/raw": { - "source": "apache" - }, - "video/rtp-enc-aescm128": { - "source": "apache" - }, - "video/rtx": { - "source": "apache" - }, - "video/smpte292m": { - "source": "apache" - }, - "video/ulpfec": { - "source": "apache" - }, - "video/vc1": { - "source": "apache" - }, - "video/vnd.cctv": { - "source": "apache" - }, - "video/vnd.dece.hd": { - "source": "apache", - "extensions": ["uvh","uvvh"] - }, - "video/vnd.dece.mobile": { - "source": "apache", - "extensions": ["uvm","uvvm"] - }, - "video/vnd.dece.mp4": { - "source": "apache" - }, - "video/vnd.dece.pd": { - "source": "apache", - "extensions": ["uvp","uvvp"] - }, - "video/vnd.dece.sd": { - "source": "apache", - "extensions": ["uvs","uvvs"] - }, - "video/vnd.dece.video": { - "source": "apache", - "extensions": ["uvv","uvvv"] - }, - "video/vnd.directv.mpeg": { - "source": "apache" - }, - "video/vnd.directv.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dlna.mpeg-tts": { - "source": "apache" - }, - "video/vnd.dvb.file": { - "source": "apache", - "extensions": ["dvb"] - }, - "video/vnd.fvt": { - "source": "apache", - "extensions": ["fvt"] - }, - "video/vnd.hns.video": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.1dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-1010": { - "source": "apache" - }, - "video/vnd.iptvforum.2dparityfec-2005": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsavc": { - "source": "apache" - }, - "video/vnd.iptvforum.ttsmpeg2": { - "source": "apache" - }, - "video/vnd.motorola.video": { - "source": "apache" - }, - "video/vnd.motorola.videop": { - "source": "apache" - }, - "video/vnd.mpegurl": { - "source": "apache", - "extensions": ["mxu","m4u"] - }, - "video/vnd.ms-playready.media.pyv": { - "source": "apache", - "extensions": ["pyv"] - }, - "video/vnd.nokia.interleaved-multimedia": { - "source": "apache" - }, - "video/vnd.nokia.videovoip": { - "source": "apache" - }, - "video/vnd.objectvideo": { - "source": "apache" - }, - "video/vnd.sealed.mpeg1": { - "source": "apache" - }, - "video/vnd.sealed.mpeg4": { - "source": "apache" - }, - "video/vnd.sealed.swf": { - "source": "apache" - }, - "video/vnd.sealedmedia.softseal.mov": { - "source": "apache" - }, - "video/vnd.uvvu.mp4": { - "source": "apache", - "extensions": ["uvu","uvvu"] - }, - "video/vnd.vivo": { - "source": "apache", - "extensions": ["viv"] - }, - "video/webm": { - "source": "apache", - "compressible": false, - "extensions": ["webm"] - }, - "video/x-f4v": { - "source": "apache", - "extensions": ["f4v"] - }, - "video/x-fli": { - "source": "apache", - "extensions": ["fli"] - }, - "video/x-flv": { - "source": "apache", - "compressible": false, - "extensions": ["flv"] - }, - "video/x-m4v": { - "source": "apache", - "extensions": ["m4v"] - }, - "video/x-matroska": { - "source": "apache", - "compressible": false, - "extensions": ["mkv","mk3d","mks"] - }, - "video/x-mng": { - "source": "apache", - "extensions": ["mng"] - }, - "video/x-ms-asf": { - "source": "apache", - "extensions": ["asf","asx"] - }, - "video/x-ms-vob": { - "source": "apache", - "extensions": ["vob"] - }, - "video/x-ms-wm": { - "source": "apache", - "extensions": ["wm"] - }, - "video/x-ms-wmv": { - "source": "apache", - "compressible": false, - "extensions": ["wmv"] - }, - "video/x-ms-wmx": { - "source": "apache", - "extensions": ["wmx"] - }, - "video/x-ms-wvx": { - "source": "apache", - "extensions": ["wvx"] - }, - "video/x-msvideo": { - "source": "apache", - "extensions": ["avi"] - }, - "video/x-sgi-movie": { - "source": "apache", - "extensions": ["movie"] - }, - "video/x-smv": { - "source": "apache", - "extensions": ["smv"] - }, - "x-conference/x-cooltalk": { - "source": "apache", - "extensions": ["ice"] - }, - "x-shader/x-fragment": { - "compressible": true - }, - "x-shader/x-vertex": { - "compressible": true - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js deleted file mode 100644 index 551031f6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/index.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed - */ - -/** - * Module exports. - */ - -module.exports = require('./db.json') diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json deleted file mode 100644 index 9c2119a5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/node_modules/mime-db/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "name": "mime-db", - "description": "Media Type Database", - "version": "1.20.0", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - }, - { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "db", - "type", - "types", - "database", - "charset", - "charsets" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/mime-db.git" - }, - "devDependencies": { - "bluebird": "2.10.0", - "co": "4.6.0", - "cogent": "1.0.1", - "csv-parse": "1.0.0", - "gnode": "0.1.1", - "istanbul": "0.4.0", - "mocha": "1.21.5", - "raw-body": "2.1.4", - "stream-to-array": "2.2.0" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "README.md", - "db.json", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "build": "node scripts/build", - "fetch": "gnode scripts/fetch-apache && gnode scripts/fetch-iana && gnode scripts/fetch-nginx", - "test": "mocha --reporter spec --bail --check-leaks test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", - "update": "npm run fetch && npm run build" - }, - "gitHead": "20c99312645c05ab8466701ede01bd5cd3ac7bc4", - "bugs": { - "url": "https://github.com/jshttp/mime-db/issues" - }, - "homepage": "https://github.com/jshttp/mime-db", - "_id": "mime-db@1.20.0", - "_shasum": "496f90fd01fe0e031c8823ec3aa9450ffda18ed8", - "_from": "mime-db@>=1.20.0 <1.21.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "496f90fd01fe0e031c8823ec3aa9450ffda18ed8", - "tarball": "http://registry.npmjs.org/mime-db/-/mime-db-1.20.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.20.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/package.json deleted file mode 100644 index ffd49249..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/mime-types/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "mime-types", - "description": "The ultimate javascript content-type utility.", - "version": "2.1.8", - "contributors": [ - { - "name": "Douglas Christopher Wilson", - "email": "doug@somethingdoug.com" - }, - { - "name": "Jeremiah Senkpiel", - "email": "fishrock123@rocketmail.com", - "url": "https://searchbeam.jit.su" - }, - { - "name": "Jonathan Ong", - "email": "me@jongleberry.com", - "url": "http://jongleberry.com" - } - ], - "license": "MIT", - "keywords": [ - "mime", - "types" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/mime-types.git" - }, - "dependencies": { - "mime-db": "~1.20.0" - }, - "devDependencies": { - "istanbul": "0.4.1", - "mocha": "~1.21.5" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "engines": { - "node": ">= 0.6" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "gitHead": "100876a23fab896d8cf0d904fc9778dbdfc1695b", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "homepage": "https://github.com/jshttp/mime-types", - "_id": "mime-types@2.1.8", - "_shasum": "faf57823de04bc7cbff4ee82c6b63946e812ae72", - "_from": "mime-types@>=2.1.7 <2.2.0", - "_npmVersion": "1.4.28", - "_npmUser": { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - }, - "maintainers": [ - { - "name": "jongleberry", - "email": "jonathanrichardong@gmail.com" - }, - { - "name": "fishrock123", - "email": "fishrock123@rocketmail.com" - }, - { - "name": "dougwilson", - "email": "doug@somethingdoug.com" - } - ], - "dist": { - "shasum": "faf57823de04bc7cbff4ee82c6b63946e812ae72", - "tarball": "http://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/.npmignore deleted file mode 100644 index 88861393..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -.DS_Store -.nyc_output -coverage diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/LICENSE.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/LICENSE.md deleted file mode 100644 index 652609b3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2010-2012 Robert Kieffer - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/README.md deleted file mode 100644 index 5cd85550..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/README.md +++ /dev/null @@ -1,254 +0,0 @@ -# node-uuid - -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS. - -Features: - -* Generate RFC4122 version 1 or version 4 UUIDs -* Runs in node.js and all browsers. -* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid'). -* Cryptographically strong random # generation - * `crypto.randomBytes(n)` in node.js - * `window.crypto.getRandomValues(ta)` in [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues#Browser_Compatibility) -* 1.1K minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! ) -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html) -* Comes with a Command Line Interface for generating uuids on the command line - -## Getting Started - -Install it in your browser: - -```html - -``` - -Or in node.js: - -``` -npm install node-uuid -``` - -```javascript -var uuid = require('node-uuid'); -``` - -Then create some ids ... - -```javascript -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the node-uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -### uuid.BufferClass - -The class of container created when generating binary uuid data if no buffer argument is specified. This is expected to go away, with no replacement API. - -## Command Line Interface - -To use the executable, it's probably best to install this library globally. - -`npm install -g node-uuid` - -Usage: - -``` -USAGE: uuid [version] [options] - - -options: - ---help Display this message and exit -``` - -`version` must be an RFC4122 version that is supported by this library, which is currently version 1 and version 4 (denoted by "v1" and "v4", respectively). `version` defaults to version 4 when not supplied. - -### Examples - -``` -> uuid -3a91f950-dec8-4688-ba14-5b7bbfc7a563 -``` - -``` -> uuid v1 -9d0b43e0-7696-11e3-964b-250efa37a98e -``` - -``` -> uuid v4 -6790ac7c-24ac-4f98-8464-42f6d98a53ae -``` - -## Testing - -In node.js - -``` -npm test -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 1.4.6 - -* Properly detect node crypto and whatwg crypto -* Workaround phantomjs/browserify bug -* Explicit check for `window` rather implicit this-global -* Issue warning if Math.random() is being used -* "use strict"; -* A few jshint / stylistic updates (=== and such) - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbbe..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.sh b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.sh deleted file mode 100755 index d870a0cb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include -#include -#include -#include - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efbe..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bin/uuid b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bin/uuid deleted file mode 100755 index f732e991..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bin/uuid +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); -var uuid = require(path.join(__dirname, '..')); - -var arg = process.argv[2]; - -if ('--help' === arg) { - console.log('\n USAGE: uuid [version] [options]\n\n'); - console.log(' options:\n'); - console.log(' --help Display this message and exit\n'); - process.exit(0); -} - -if (null == arg) { - console.log(uuid()); - process.exit(0); -} - -if ('v1' !== arg && 'v4' !== arg) { - console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"'); - process.exit(1); -} - -console.log(uuid[arg]()); -process.exit(0); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bower.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bower.json deleted file mode 100644 index c0925e19..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/bower.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "node-uuid", - "version": "1.4.7", - "homepage": "https://github.com/broofa/node-uuid", - "authors": [ - "Robert Kieffer " - ], - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "main": "uuid.js", - "keywords": [ - "uuid", - "gid", - "rfc4122" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/component.json deleted file mode 100644 index 3ff46336..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/component.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "node-uuid", - "repo": "broofa/node-uuid", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "version": "1.4.7", - "author": "Robert Kieffer ", - "contributors": [ - { - "name": "Christoph Tavan ", - "github": "https://github.com/ctavan" - } - ], - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "dependencies": {}, - "development": {}, - "main": "uuid.js", - "scripts": [ - "uuid.js" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/package.json deleted file mode 100644 index 473b25a8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "bin": { - "uuid": "./bin/uuid" - }, - "bugs": { - "url": "https://github.com/broofa/node-uuid/issues" - }, - "contributors": [ - { - "name": "AJ ONeal", - "email": "coolaj86@gmail.com" - }, - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - } - ], - "dependencies": {}, - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "devDependencies": { - "nyc": "^2.2.0" - }, - "directories": {}, - "homepage": "https://github.com/broofa/node-uuid", - "installable": true, - "keywords": [ - "guid", - "rfc4122", - "uuid" - ], - "lib": ".", - "licenses": [ - { - "type": "MIT", - "url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md" - } - ], - "main": "./uuid.js", - "maintainers": [ - { - "name": "broofa", - "email": "robert@broofa.com" - }, - { - "name": "coolaj86", - "email": "coolaj86@gmail.com" - } - ], - "name": "node-uuid", - "optionalDependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/broofa/node-uuid.git" - }, - "scripts": { - "coverage": "nyc npm test && nyc report", - "test": "node test/test.js" - }, - "url": "http://github.com/broofa/node-uuid", - "version": "1.4.7", - "gitHead": "309512573ec1c60143c257157479a20f7f1f51cd", - "_id": "node-uuid@1.4.7", - "_shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f", - "_from": "node-uuid@>=1.4.7 <1.5.0", - "_npmVersion": "3.3.6", - "_nodeVersion": "5.0.0", - "_npmUser": { - "name": "coolaj86", - "email": "coolaj86@gmail.com" - }, - "dist": { - "shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f", - "tarball": "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/compare_v1.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/compare_v1.js deleted file mode 100644 index 05af8221..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/compare_v1.js +++ /dev/null @@ -1,63 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../uuid'), - uuidjs = require('uuid-js'), - libuuid = require('uuid').generate, - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.html b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.html deleted file mode 100644 index d80326ec..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.js deleted file mode 100644 index 5f1113d8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/test/test.js +++ /dev/null @@ -1,231 +0,0 @@ -if (!this.uuid) { - // node.js - uuid = require('../uuid'); - if (!/_rb/.test(uuid._rng.toString())) { - throw new Error("should use crypto for node.js"); - } -} - -// -// x-platform log/assert shims -// - -function _log(msg, type) { - type = type || 'log'; - - if (typeof(document) != 'undefined') { - document.write('
' + msg.replace(/\n/g, '
') + '
'); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/uuid.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/uuid.js deleted file mode 100644 index 89c5b8fb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,272 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -/*global window, require, define */ -(function(_window) { - 'use strict'; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng, _mathRNG, _nodeRNG, _whatwgRNG, _previousRoot; - - function setupBrowser() { - // Allow for MSIE11 msCrypto - var _crypto = _window.crypto || _window.msCrypto; - - if (!_rng && _crypto && _crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - try { - var _rnds8 = new Uint8Array(16); - _whatwgRNG = _rng = function whatwgRNG() { - _crypto.getRandomValues(_rnds8); - return _rnds8; - }; - _rng(); - } catch(e) {} - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _mathRNG = _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) { r = Math.random() * 0x100000000; } - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - if ('undefined' !== typeof console && console.warn) { - console.warn("[SECURITY] node-uuid: crypto not usable, falling back to insecure Math.random()"); - } - } - } - - function setupNode() { - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if ('function' === typeof require) { - try { - var _rb = require('crypto').randomBytes; - _nodeRNG = _rng = _rb && function() {return _rb(16);}; - _rng(); - } catch(e) {} - } - } - - if (_window) { - setupBrowser(); - } else { - setupNode(); - } - - // Buffer class to use - var BufferClass = ('function' === typeof Buffer) ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = (options.clockseq != null) ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = (options.msecs != null) ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = (options.nsecs != null) ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) === 'string') { - buf = (options === 'binary') ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - uuid._rng = _rng; - uuid._mathRNG = _mathRNG; - uuid._nodeRNG = _nodeRNG; - uuid._whatwgRNG = _whatwgRNG; - - if (('undefined' !== typeof module) && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - - - } else { - // Publish as global (in browsers) - _previousRoot = _window.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _window.uuid = _previousRoot; - return uuid; - }; - - _window.uuid = uuid; - } -})('undefined' !== typeof window ? window : null); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/index.js deleted file mode 100644 index a587541d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,134 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rsa (key, body) { - return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64'); -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -// Maps object to bi-dimensional array -// Converts { foo: 'A', bar: [ 'b', 'B' ]} to -// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ] -function map (obj) { - var key, val, arr = [] - for (key in obj) { - val = obj[key] - if (Array.isArray(val)) - for (var i = 0; i < val.length; i++) - arr.push([key, val[i]]) - else if (typeof val === "object") - for (var prop in val) - arr.push([key + '[' + prop + ']', val[prop]]); - else - arr.push([key, val]) - } - return arr -} - -// Compare function for sort -function compare (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -function generateBase (httpMethod, base_uri, params) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - // Parameter normalization - // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - var normalized = map(params) - // 1. First, the name and value of each parameter are encoded - .map(function (p) { - return [ rfc3986(p[0]), rfc3986(p[1] || '') ] - }) - // 2. The parameters are sorted by name, using ascending byte value - // ordering. If two or more parameters share the same name, they - // are sorted by their value. - .sort(function (a, b) { - return compare(a[0], b[0]) || compare(a[1], b[1]) - }) - // 3. The name of each parameter is concatenated to its corresponding - // value using an "=" character (ASCII code 61) as a separator, even - // if the value is empty. - .map(function (p) { return p.join('=') }) - // 4. The sorted name/value pairs are concatenated together into a - // single string by using an "&" character (ASCII code 38) as - // separator. - .join('&') - - var base = [ - rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), - rfc3986(base_uri), - rfc3986(normalized) - ].join('&') - - return base -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -function rsasign (httpMethod, base_uri, params, private_key, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = private_key || '' - - return rsa(key, base) -} - -function plaintext (consumer_secret, token_secret) { - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return key -} - -function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) { - var method - var skipArgs = 1 - - switch (signMethod) { - case 'RSA-SHA1': - method = rsasign - break - case 'HMAC-SHA1': - method = hmacsign - break - case 'PLAINTEXT': - method = plaintext - skipArgs = 4 - break - default: - throw new Error("Signature method not supported: " + signMethod) - } - - return method.apply(null, [].slice.call(arguments, skipArgs)) -} - -exports.hmacsign = hmacsign -exports.rsasign = rsasign -exports.plaintext = plaintext -exports.sign = sign -exports.rfc3986 = rfc3986 diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/package.json deleted file mode 100644 index eeaaa68d..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "oauth-sign", - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "version": "0.8.0", - "license": "Apache-2.0", - "repository": { - "url": "git+https://github.com/mikeal/oauth-sign.git" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "scripts": { - "test": "node test.js" - }, - "gitHead": "e1f2b42ff039901ce977f8e81918767d97d496b5", - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "homepage": "https://github.com/mikeal/oauth-sign#readme", - "_id": "oauth-sign@0.8.0", - "_shasum": "938fdc875765ba527137d8aec9d178e24debc553", - "_from": "oauth-sign@>=0.8.0 <0.9.0", - "_npmVersion": "2.10.1", - "_nodeVersion": "0.12.4", - "_npmUser": { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - } - ], - "dist": { - "shasum": "938fdc875765ba527137d8aec9d178e24debc553", - "tarball": "http://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/test.js deleted file mode 100644 index a8847270..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,89 +0,0 @@ -var oauth = require('./index') - , hmacsign = oauth.hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter 私のさえずりを設定する' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - -// handle objects in params (useful for Wordpress REST API) -var upsign = hmacsign('POST', 'http://wordpress.com/wp-json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , filter: { number: "-1" } - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('YrJFBdwnjuIitGpKrxLUplcuuUQ=') -assert.equal(upsign, 'YrJFBdwnjuIitGpKrxLUplcuuUQ=') - -// example in rfc5849 -var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q') -params.oauth_consumer_key = '9djdj82h48djs9d2' -params.oauth_token = 'kkk9d7dh3k39sjv7' -params.oauth_nonce = '7d8f3e4a' -params.oauth_signature_method = 'HMAC-SHA1' -params.oauth_timestamp = '137131201' - -var rfc5849sign = hmacsign('POST', 'http://example.com/request', - params, "j49sk3j29djd", "dh893hdasih9") - -console.log(rfc5849sign) -console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=') -assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=') - - -// PLAINTEXT - -var plainSign = oauth.sign('PLAINTEXT', 'GET', 'http://dummy.com', {}, 'consumer_secret', 'token_secret') -console.log(plainSign) -assert.equal(plainSign, 'consumer_secret&token_secret') - -plainSign = oauth.plaintext('consumer_secret', 'token_secret') -console.log(plainSign) -assert.equal(plainSign, 'consumer_secret&token_secret') diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.eslintignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.eslintignore deleted file mode 100644 index 1521c8b7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.npmignore deleted file mode 100644 index 7e1574dc..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.travis.yml deleted file mode 100644 index 335fded1..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js - -node_js: - - 0.10 - - 4.0 - - 4 - -sudo: false diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CHANGELOG.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CHANGELOG.md deleted file mode 100644 index e43b1ace..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,99 +0,0 @@ - -## [**5.1.0**](https://github.com/hapijs/qs/issues?milestone=29&state=open) -- [**#117**](https://github.com/hapijs/qs/issues/117) make URI encoding stringified results optional -- [**#106**](https://github.com/hapijs/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify - -## [**5.0.0**](https://github.com/hapijs/qs/issues?milestone=28&state=closed) -- [**#114**](https://github.com/hapijs/qs/issues/114) default allowDots to false -- [**#100**](https://github.com/hapijs/qs/issues/100) include dist to npm - -## [**4.0.0**](https://github.com/hapijs/qs/issues?milestone=26&state=closed) -- [**#98**](https://github.com/hapijs/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional - -## [**3.1.0**](https://github.com/hapijs/qs/issues?milestone=24&state=closed) -- [**#89**](https://github.com/hapijs/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/hapijs/qs/issues?milestone=23&state=closed) -- [**#80**](https://github.com/hapijs/qs/issues/80) qs.parse silently drops properties -- [**#77**](https://github.com/hapijs/qs/issues/77) Perf boost -- [**#60**](https://github.com/hapijs/qs/issues/60) Add explicit option to disable array parsing -- [**#74**](https://github.com/hapijs/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/hapijs/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/hapijs/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/hapijs/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/hapijs/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/hapijs/qs/issues/85) No equal sign -- [**#84**](https://github.com/hapijs/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/hapijs/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/hapijs/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/hapijs/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/hapijs/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CONTRIBUTING.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CONTRIBUTING.md deleted file mode 100644 index 89283615..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md). diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/LICENSE deleted file mode 100644 index d4569487..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/README.md deleted file mode 100644 index 3c61db31..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/README.md +++ /dev/null @@ -1,331 +0,0 @@ -# qs - -A querystring parsing and stringifying library with some added security. - -[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs) - -Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var Qs = require('qs'); - -var obj = Qs.parse('a=c'); // { a: 'c' } -var str = Qs.stringify(obj); // 'a=c' -``` - -### Parsing Objects - -```javascript -Qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -{ - foo: { - bar: 'baz' - } -} -``` - -When using the `plainObjects` option the parsed value is returned as a plain object, created via `Object.create(null)` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: - -```javascript -Qs.parse('a.hasOwnProperty=b', { plainObjects: true }); -// { a: { hasOwnProperty: 'b' } } -``` - -By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. *WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. Always be careful with this option. - -```javascript -Qs.parse('a.hasOwnProperty=b', { allowPrototypes: true }); -// { a: { hasOwnProperty: 'b' } } -``` - -URI encoded strings work too: - -```javascript -Qs.parse('a%5Bb%5D=c'); -// { a: { b: 'c' } } -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -{ - foo: { - bar: { - baz: 'foobarbaz' - } - } -} -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -{ - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -} -``` - -This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`: - -```javascript -Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } } -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -Qs.parse('a=b&c=d', { parameterLimit: 1 }); -// { a: 'b' } -``` - -An optional delimiter can also be passed: - -```javascript -Qs.parse('a=b;c=d', { delimiter: ';' }); -// { a: 'b', c: 'd' } -``` - -Delimiters can be a regular expression too: - -```javascript -Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -// { a: 'b', c: 'd', e: 'f' } -``` - -Option `allowDots` can be used to enable dot notation: - -```javascript -Qs.parse('a.b=c', { allowDots: true }); -// { a: { b: 'c' } } -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -Qs.parse('a[]=b&a[]=c'); -// { a: ['b', 'c'] } -``` - -You may specify an index as well: - -```javascript -Qs.parse('a[1]=c&a[0]=b'); -// { a: ['b', 'c'] } -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -Qs.parse('a[1]=b&a[15]=c'); -// { a: ['b', 'c'] } -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -Qs.parse('a[]=&a[]=b'); -// { a: ['', 'b'] } -Qs.parse('a[0]=b&a[1]=&a[2]=c'); -// { a: ['b', '', 'c'] } -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -Qs.parse('a[100]=b'); -// { a: { '100': 'b' } } -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -Qs.parse('a[1]=b', { arrayLimit: 0 }); -// { a: { '1': 'b' } } -``` - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -Qs.parse('a[]=b', { parseArrays: false }); -// { a: { '0': 'b' } } -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -Qs.parse('a[0]=b&a[b]=c'); -// { a: { '0': 'b', b: 'c' } } -``` - -You can also create arrays of objects: - -```javascript -Qs.parse('a[][b]=c'); -// { a: [{ b: 'c' }] } -``` - -### Stringifying - -```javascript -Qs.stringify(object, [options]); -``` - -When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: - -```javascript -Qs.stringify({ a: 'b' }); -// 'a=b' -Qs.stringify({ a: { b: 'c' } }); -// 'a%5Bb%5D=c' -``` - -This encoding can be disabled by setting the `encode` option to `false`: - -```javascript -Qs.stringify({ a: { b: 'c' } }, { encode: false }); -// 'a[b]=c' -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array - -```javascript -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -Qs.stringify({ a: '' }); -// 'a=' -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -Qs.stringify({ a: null, b: undefined }); -// 'a=' -``` - -The delimiter may be overridden with stringify as well: - -```javascript -Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }); -// 'a=b;c=d' -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you -pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -Qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }) -// 'a=b&c=d&e[f]=123&e[g][0]=4' -Qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }) -// 'a=b&e=f' -Qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }) -// 'a[0]=b&a[2]=d' -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -Qs.stringify({ a: null, b: '' }); -// 'a=&b=' -``` - -Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. - -```javascript -Qs.parse('a&b=') -// { a: '', b: '' } -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -Qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -// 'a&b=' -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -Qs.parse('a&b=', { strictNullHandling: true }); -// { a: null, b: '' } - -``` - -To completely skip rendering keys with `null` values, use the `skipNulls` flag: - -```javascript -qs.stringify({ a: 'b', c: null}, { skipNulls: true }) -// 'a=b' -``` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/bower.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/bower.json deleted file mode 100644 index 53a70d0c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "qs", - "main": "dist/qs.js", - "version": "5.1.0", - "homepage": "https://github.com/hapijs/qs", - "authors": [ - "Nathan LaFreniere " - ], - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/component.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/component.json deleted file mode 100644 index 1a1f72c7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "qs", - "repository": "hapijs/qs", - "description": "query-string parser / stringifier with nesting support", - "version": "5.1.0", - "keywords": ["querystring", "query", "parser"], - "main": "lib/index.js", - "scripts": [ - "lib/index.js", - "lib/parse.js", - "lib/stringify.js", - "lib/utils.js" - ], - "license": "BSD-3-Clause" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/dist/qs.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/dist/qs.js deleted file mode 100644 index b72e9768..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/dist/qs.js +++ /dev/null @@ -1,544 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o= 0 && - (options.parseArrays && - index <= options.arrayLimit)) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // Transform dot notation to bracket notation - - if (options.allowDots) { - key = key.replace(/\.([^\.\[]+)/g, '[$1]'); - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1])) { - - if (!options.allowPrototypes) { - return; - } - } - - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) { - - if (!options.allowPrototypes) { - continue; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : internals.allowDots; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj, options); - } - - return Utils.compact(obj); -}; - -},{"./utils":4}],3:[function(require,module,exports){ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - arrayPrefixGenerators: { - brackets: function (prefix, key) { - - return prefix + '[]'; - }, - indices: function (prefix, key) { - - return prefix + '[' + key + ']'; - }, - repeat: function (prefix, key) { - - return prefix; - } - }, - strictNullHandling: false, - skipNulls: false, - encode: true -}; - - -internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter) { - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } - else if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - if (strictNullHandling) { - return encode ? Utils.encode(prefix) : prefix; - } - - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - if (encode) { - return [Utils.encode(prefix) + '=' + Utils.encode(obj)]; - } - return [prefix + '=' + obj]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys = Array.isArray(filter) ? filter : Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (skipNulls && - obj[key] === null) { - - continue; - } - - if (Array.isArray(obj)) { - values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encode, filter)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, skipNulls, encode, filter)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : internals.skipNulls; - var encode = typeof options.encode === 'boolean' ? options.encode : internals.encode; - var objKeys; - var filter; - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } - else if (Array.isArray(options.filter)) { - objKeys = filter = options.filter; - } - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var arrayFormat; - if (options.arrayFormat in internals.arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } - else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } - else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (skipNulls && - obj[key] === null) { - - continue; - } - - keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter)); - } - - return keys.join(delimiter); -}; - -},{"./utils":4}],4:[function(require,module,exports){ -// Load modules - - -// Declare internals - -var internals = {}; -internals.hexTable = new Array(256); -for (var h = 0; h < 256; ++h) { - internals.hexTable[h] = '%' + ((h < 16 ? '0' : '') + h.toString(16)).toUpperCase(); -} - - -exports.arrayToObject = function (source, options) { - - var obj = options.plainObjects ? Object.create(null) : {}; - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source, options) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else if (typeof target === 'object') { - target[source] = true; - } - else { - target = [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target, options); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!Object.prototype.hasOwnProperty.call(target, key)) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value, options); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -exports.encode = function (str) { - - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - if (typeof str !== 'string') { - str = '' + str; - } - - var out = ''; - for (var i = 0, il = str.length; i < il; ++i) { - var c = str.charCodeAt(i); - - if (c === 0x2D || // - - c === 0x2E || // . - c === 0x5F || // _ - c === 0x7E || // ~ - (c >= 0x30 && c <= 0x39) || // 0-9 - (c >= 0x41 && c <= 0x5A) || // a-z - (c >= 0x61 && c <= 0x7A)) { // A-Z - - out += str[i]; - continue; - } - - if (c < 0x80) { - out += internals.hexTable[c]; - continue; - } - - if (c < 0x800) { - out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - ++i; - c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF)); - out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/index.js deleted file mode 100644 index 0e094933..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load modules - -var Stringify = require('./stringify'); -var Parse = require('./parse'); - - -// Declare internals - -var internals = {}; - - -module.exports = { - stringify: Stringify, - parse: Parse -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/parse.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/parse.js deleted file mode 100644 index 4a2137ef..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,187 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - depth: 5, - arrayLimit: 20, - parameterLimit: 1000, - strictNullHandling: false, - plainObjects: false, - allowPrototypes: false, - allowDots: false -}; - - -internals.parseValues = function (str, options) { - - var obj = {}; - var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); - - for (var i = 0, il = parts.length; i < il; ++i) { - var part = parts[i]; - var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; - - if (pos === -1) { - obj[Utils.decode(part)] = ''; - - if (options.strictNullHandling) { - obj[Utils.decode(part)] = null; - } - } - else { - var key = Utils.decode(part.slice(0, pos)); - var val = Utils.decode(part.slice(pos + 1)); - - if (!Object.prototype.hasOwnProperty.call(obj, key)) { - obj[key] = val; - } - else { - obj[key] = [].concat(obj[key]).concat(val); - } - } - } - - return obj; -}; - - -internals.parseObject = function (chain, val, options) { - - if (!chain.length) { - return val; - } - - var root = chain.shift(); - - var obj; - if (root === '[]') { - obj = []; - obj = obj.concat(internals.parseObject(chain, val, options)); - } - else { - obj = options.plainObjects ? Object.create(null) : {}; - var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root; - var index = parseInt(cleanRoot, 10); - var indexString = '' + index; - if (!isNaN(index) && - root !== cleanRoot && - indexString === cleanRoot && - index >= 0 && - (options.parseArrays && - index <= options.arrayLimit)) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // Transform dot notation to bracket notation - - if (options.allowDots) { - key = key.replace(/\.([^\.\[]+)/g, '[$1]'); - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - // If we aren't using plain objects, optionally prefix keys - // that would overwrite object prototype properties - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1])) { - - if (!options.allowPrototypes) { - return; - } - } - - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - if (!options.plainObjects && - Object.prototype.hasOwnProperty(segment[1].replace(/\[|\]/g, ''))) { - - if (!options.allowPrototypes) { - continue; - } - } - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : internals.allowDots; - options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : internals.plainObjects; - options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : internals.allowPrototypes; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return options.plainObjects ? Object.create(null) : {}; - } - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = options.plainObjects ? Object.create(null) : {}; - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj, options); - } - - return Utils.compact(obj); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/stringify.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/stringify.js deleted file mode 100644 index d05aa875..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,154 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - arrayPrefixGenerators: { - brackets: function (prefix, key) { - - return prefix + '[]'; - }, - indices: function (prefix, key) { - - return prefix + '[' + key + ']'; - }, - repeat: function (prefix, key) { - - return prefix; - } - }, - strictNullHandling: false, - skipNulls: false, - encode: true -}; - - -internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort) { - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } - else if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - if (strictNullHandling) { - return encode ? Utils.encode(prefix) : prefix; - } - - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - if (encode) { - return [Utils.encode(prefix) + '=' + Utils.encode(obj)]; - } - return [prefix + '=' + obj]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys; - if (Array.isArray(filter)) { - objKeys = filter; - } else { - var keys = Object.keys(obj); - objKeys = sort ? keys.sort(sort) : keys; - } - - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (skipNulls && - obj[key] === null) { - - continue; - } - - if (Array.isArray(obj)) { - values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, skipNulls, encode, filter)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, skipNulls, encode, filter)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : internals.skipNulls; - var encode = typeof options.encode === 'boolean' ? options.encode : internals.encode; - var sort = typeof options.sort === 'function' ? options.sort : null; - var objKeys; - var filter; - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } - else if (Array.isArray(options.filter)) { - objKeys = filter = options.filter; - } - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var arrayFormat; - if (options.arrayFormat in internals.arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } - else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } - else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - - if (sort) { - objKeys.sort(sort); - } - - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (skipNulls && - obj[key] === null) { - - continue; - } - - keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, skipNulls, encode, filter, sort)); - } - - return keys.join(delimiter); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/utils.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/utils.js deleted file mode 100644 index 88f31473..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,190 +0,0 @@ -// Load modules - - -// Declare internals - -var internals = {}; -internals.hexTable = new Array(256); -for (var h = 0; h < 256; ++h) { - internals.hexTable[h] = '%' + ((h < 16 ? '0' : '') + h.toString(16)).toUpperCase(); -} - - -exports.arrayToObject = function (source, options) { - - var obj = options.plainObjects ? Object.create(null) : {}; - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source, options) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else if (typeof target === 'object') { - target[source] = true; - } - else { - target = [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target, options); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!Object.prototype.hasOwnProperty.call(target, key)) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value, options); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -exports.encode = function (str) { - - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - if (typeof str !== 'string') { - str = '' + str; - } - - var out = ''; - for (var i = 0, il = str.length; i < il; ++i) { - var c = str.charCodeAt(i); - - if (c === 0x2D || // - - c === 0x2E || // . - c === 0x5F || // _ - c === 0x7E || // ~ - (c >= 0x30 && c <= 0x39) || // 0-9 - (c >= 0x41 && c <= 0x5A) || // a-z - (c >= 0x61 && c <= 0x7A)) { // A-Z - - out += str[i]; - continue; - } - - if (c < 0x80) { - out += internals.hexTable[c]; - continue; - } - - if (c < 0x800) { - out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - ++i; - c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF)); - out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/package.json deleted file mode 100644 index 7e60df70..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "qs", - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "homepage": "https://github.com/hapijs/qs", - "version": "5.2.0", - "repository": { - "type": "git", - "url": "git+https://github.com/hapijs/qs.git" - }, - "main": "lib/index.js", - "keywords": [ - "querystring", - "qs" - ], - "engines": ">=0.10.40", - "dependencies": {}, - "devDependencies": { - "browserify": "^10.2.1", - "code": "1.x.x", - "lab": "5.x.x" - }, - "scripts": { - "test": "lab -a code -t 100 -L", - "test-tap": "lab -a code -r tap -o tests.tap", - "test-cov-html": "lab -a code -r html -o coverage.html", - "dist": "browserify --standalone Qs lib/index.js > dist/qs.js" - }, - "license": "BSD-3-Clause", - "gitHead": "a341cdf2fadba5ede1ce6c95c7051f6f31f37b81", - "bugs": { - "url": "https://github.com/hapijs/qs/issues" - }, - "_id": "qs@5.2.0", - "_shasum": "a9f31142af468cb72b25b30136ba2456834916be", - "_from": "qs@>=5.2.0 <5.3.0", - "_npmVersion": "3.3.5", - "_nodeVersion": "0.10.40", - "_npmUser": { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - "dist": { - "shasum": "a9f31142af468cb72b25b30136ba2456834916be", - "tarball": "http://registry.npmjs.org/qs/-/qs-5.2.0.tgz" - }, - "maintainers": [ - { - "name": "nlf", - "email": "quitlahok@gmail.com" - }, - { - "name": "hueniverse", - "email": "eran@hueniverse.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/parse.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/parse.js deleted file mode 100644 index 679f1974..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/parse.js +++ /dev/null @@ -1,478 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('parse()', function () { - - it('parses a simple string', function (done) { - - expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }); - expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }); - expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }); - expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }); - expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }); - expect(Qs.parse('foo', { strictNullHandling: true })).to.deep.equal({ foo: null }); - expect(Qs.parse('foo' )).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=')).to.deep.equal({ foo: '' }); - expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }); - expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }); - expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }); - expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }); - expect(Qs.parse('foo2=bar2&baz2=')).to.deep.equal({ foo2: 'bar2', baz2: '' }); - expect(Qs.parse('foo=bar&baz', { strictNullHandling: true })).to.deep.equal({ foo: 'bar', baz: null }); - expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }); - expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({ - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }); - done(); - }); - - it('allows enabling dot notation', function (done) { - - expect(Qs.parse('a.b=c')).to.deep.equal({ 'a.b': 'c' }); - expect(Qs.parse('a.b=c', { allowDots: true })).to.deep.equal({ a: { b: 'c' } }); - done(); - }); - - it('parses a single nested string', function (done) { - - expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }); - done(); - }); - - it('parses a double nested string', function (done) { - - expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }); - done(); - }); - - it('defaults to a depth of 5', function (done) { - - expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }); - done(); - }); - - it('only parses one level when depth = 1', function (done) { - - expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }); - expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }); - done(); - }); - - it('parses a simple array', function (done) { - - expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses an explicit array', function (done) { - - expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }); - expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - done(); - }); - - it('parses a mix of simple and explicit arrays', function (done) { - - expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); - - it('parses a nested array', function (done) { - - expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }); - expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }); - done(); - }); - - it('allows to specify array indices', function (done) { - - expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }); - expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }); - expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }); - done(); - }); - - it('limits specific array indices to 20', function (done) { - - expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }); - expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }); - done(); - }); - - it('supports keys that begin with a number', function (done) { - - expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }); - done(); - }); - - it('supports encoded = signs', function (done) { - - expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }); - done(); - }); - - it('is ok with url encoded strings', function (done) { - - expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }); - expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }); - done(); - }); - - it('allows brackets in the value', function (done) { - - expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }); - expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }); - done(); - }); - - it('allows empty values', function (done) { - - expect(Qs.parse('')).to.deep.equal({}); - expect(Qs.parse(null)).to.deep.equal({}); - expect(Qs.parse(undefined)).to.deep.equal({}); - done(); - }); - - it('transforms arrays to objects', function (done) { - - expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - expect(Qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c')).to.deep.equal({ a: { '0': 'b', t: 'u', c: true } }); - expect(Qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y')).to.deep.equal({ a: { '0': 'b', '1': 'c', x: 'y' } }); - done(); - }); - - it('transforms arrays to objects (dot notation)', function (done) { - - expect(Qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true })).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); - expect(Qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true })).to.deep.equal({ foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); - expect(Qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true })).to.deep.equal({ foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true })).to.deep.equal({ foo: [{ baz: ['15'], bar: '2' }] }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true })).to.deep.equal({ foo: [{ baz: ['15', '16'], bar: '2' }] }); - expect(Qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true })).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true })).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }); - expect(Qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true })).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }); - expect(Qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true })).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }); - expect(Qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true })).to.deep.equal({ foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); - done(); - }); - - it('can add keys to objects', function (done) { - - expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }); - done(); - }); - - it('correctly prunes undefined values when converting an array to an object', function (done) { - - expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }); - done(); - }); - - it('supports malformed uri characters', function (done) { - - expect(Qs.parse('{%:%}', { strictNullHandling: true })).to.deep.equal({ '{%:%}': null }); - expect(Qs.parse('{%:%}=')).to.deep.equal({ '{%:%}': '' }); - expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }); - done(); - }); - - it('doesn\'t produce empty keys', function (done) { - - expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }); - done(); - }); - - it('cannot access Object prototype', function (done) { - - Qs.parse('constructor[prototype][bad]=bad'); - Qs.parse('bad[constructor][prototype][bad]=bad'); - expect(typeof Object.prototype.bad).to.equal('undefined'); - done(); - }); - - it('parses arrays of objects', function (done) { - - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - done(); - }); - - it('allows for empty strings in arrays', function (done) { - - expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }); - expect(Qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true })).to.deep.equal({ a: ['b', null, 'c', ''] }); - expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true })).to.deep.equal({ a: ['b', '', 'c', null] }); - expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }); - done(); - }); - - it('compacts sparse arrays', function (done) { - - expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }); - done(); - }); - - it('parses semi-parsed strings', function (done) { - - expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }); - expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }); - done(); - }); - - it('parses buffers correctly', function (done) { - - var b = new Buffer('test'); - expect(Qs.parse({ a: b })).to.deep.equal({ a: b }); - done(); - }); - - it('continues parsing when no parent is found', function (done) { - - expect(Qs.parse('[]=&a=b')).to.deep.equal({ '0': '', a: 'b' }); - expect(Qs.parse('[]&a=b', { strictNullHandling: true })).to.deep.equal({ '0': null, a: 'b' }); - expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }); - done(); - }); - - it('does not error when parsing a very long array', function (done) { - - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str += '&' + str; - } - - expect(function () { - - Qs.parse(str); - }).to.not.throw(); - - done(); - }); - - it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) { - - Object.prototype.crash = ''; - Array.prototype.crash = ''; - expect(Qs.parse.bind(null, 'a=b')).to.not.throw(); - expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }); - expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw(); - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }); - delete Object.prototype.crash; - delete Array.prototype.crash; - done(); - }); - - it('parses a string with an alternative string delimiter', function (done) { - - expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('parses a string with an alternative RegExp delimiter', function (done) { - - expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not use non-splittable objects as delimiters', function (done) { - - expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding parameter limit', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }); - done(); - }); - - it('allows setting the parameter limit to Infinity', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('allows overriding array limit', function (done) { - - expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }); - expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }); - expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('allows disabling array parsing', function (done) { - - expect(Qs.parse('a[0]=b&a[1]=c', { parseArrays: false })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }); - done(); - }); - - it('parses an object', function (done) { - - var input = { - 'user[name]': { 'pop[bob]': 3 }, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': 3 }, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object in dot notation', function (done) { - - var input = { - 'user.name': { 'pop[bob]': 3 }, - 'user.email.': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': 3 }, - 'email': null - } - }; - - var result = Qs.parse(input, { allowDots: true }); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('parses an object and not child values', function (done) { - - var input = { - 'user[name]': { 'pop[bob]': { 'test': 3 } }, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': { 'pop[bob]': { 'test': 3 } }, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected); - done(); - }); - - it('does not blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - expect(result).to.deep.equal({ a: 'b', c: 'd' }); - done(); - }); - - it('does not crash when parsing circular references', function (done) { - - var a = {}; - a.b = a; - - var parsed; - - expect(function () { - - parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }).to.not.throw(); - - expect(parsed).to.contain('foo'); - expect(parsed.foo).to.contain('bar', 'baz'); - expect(parsed.foo.bar).to.equal('baz'); - expect(parsed.foo.baz).to.deep.equal(a); - done(); - }); - - it('parses plain objects correctly', function (done) { - - var a = Object.create(null); - a.b = 'c'; - - expect(Qs.parse(a)).to.deep.equal({ b: 'c' }); - var result = Qs.parse({ a: a }); - expect(result).to.contain('a'); - expect(result.a).to.deep.equal(a); - done(); - }); - - it('parses dates correctly', function (done) { - - var now = new Date(); - expect(Qs.parse({ a: now })).to.deep.equal({ a: now }); - done(); - }); - - it('parses regular expressions correctly', function (done) { - - var re = /^test$/; - expect(Qs.parse({ a: re })).to.deep.equal({ a: re }); - done(); - }); - - it('can allow overwriting prototype properties', function (done) { - - expect(Qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true })).to.deep.equal({ a: { hasOwnProperty: 'b' } }, { prototype: false }); - expect(Qs.parse('hasOwnProperty=b', { allowPrototypes: true })).to.deep.equal({ hasOwnProperty: 'b' }, { prototype: false }); - done(); - }); - - it('can return plain objects', function (done) { - - var expected = Object.create(null); - expected.a = Object.create(null); - expected.a.b = 'c'; - expected.a.hasOwnProperty = 'd'; - expect(Qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true })).to.deep.equal(expected); - expect(Qs.parse(null, { plainObjects: true })).to.deep.equal(Object.create(null)); - var expectedArray = Object.create(null); - expectedArray.a = Object.create(null); - expectedArray.a['0'] = 'b'; - expectedArray.a.c = 'd'; - expect(Qs.parse('a[]=b&a[c]=d', { plainObjects: true })).to.deep.equal(expectedArray); - done(); - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/stringify.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/stringify.js deleted file mode 100644 index 53139ff9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,293 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('stringify()', function () { - - it('stringifies a querystring object', function (done) { - - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 })).to.equal('a=1'); - expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2'); - expect(Qs.stringify({ a: 'A_Z' })).to.equal('a=A_Z'); - expect(Qs.stringify({ a: '€' })).to.equal('a=%E2%82%AC'); - expect(Qs.stringify({ a: '' })).to.equal('a=%EE%80%80'); - expect(Qs.stringify({ a: 'א' })).to.equal('a=%D7%90'); - expect(Qs.stringify({ a: '𐐷' })).to.equal('a=%F0%90%90%B7'); - done(); - }); - - it('stringifies a nested object', function (done) { - - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - done(); - }); - - it('stringifies an array value', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d'); - done(); - }); - - it('omits nulls when asked', function (done) { - - expect(Qs.stringify({ a: 'b', c: null }, { skipNulls: true })).to.equal('a=b'); - done(); - }); - - - it('omits nested nulls when asked', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('omits array indices when asked', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d'); - done(); - }); - - it('stringifies a nested array value', function (done) { - - expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - done(); - }); - - it('stringifies an object inside an array', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c'); - expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1'); - done(); - }); - - it('does not omit object keys when indices = false', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('uses indices notation for arrays when indices=true', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { indices: true })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat is specified', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat=indices', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses repeat notation for arrays when no arrayFormat=repeat', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })).to.equal('a=b&a=c'); - done(); - }); - - it('uses brackets notation for arrays when no arrayFormat=brackets', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })).to.equal('a%5B%5D=b&a%5B%5D=c'); - done(); - }); - - it('stringifies a complicated object', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e'); - done(); - }); - - it('stringifies an empty value', function (done) { - - expect(Qs.stringify({ a: '' })).to.equal('a='); - expect(Qs.stringify({ a: null }, { strictNullHandling: true })).to.equal('a'); - - expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b='); - expect(Qs.stringify({ a: null, b: '' }, { strictNullHandling: true })).to.equal('a&b='); - - expect(Qs.stringify({ a: { b: '' } })).to.equal('a%5Bb%5D='); - expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: true })).to.equal('a%5Bb%5D'); - expect(Qs.stringify({ a: { b: null } }, { strictNullHandling: false })).to.equal('a%5Bb%5D='); - - done(); - }); - - it('stringifies an empty object', function (done) { - - var obj = Object.create(null); - obj.a = 'b'; - expect(Qs.stringify(obj)).to.equal('a=b'); - done(); - }); - - it('returns an empty string for invalid input', function (done) { - - expect(Qs.stringify(undefined)).to.equal(''); - expect(Qs.stringify(false)).to.equal(''); - expect(Qs.stringify(null)).to.equal(''); - expect(Qs.stringify('')).to.equal(''); - done(); - }); - - it('stringifies an object with an empty object as a child', function (done) { - - var obj = { - a: Object.create(null) - }; - - obj.a.b = 'c'; - expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('drops keys with a value of undefined', function (done) { - - expect(Qs.stringify({ a: undefined })).to.equal(''); - - expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true })).to.equal('a%5Bc%5D'); - expect(Qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false })).to.equal('a%5Bc%5D='); - expect(Qs.stringify({ a: { b: undefined, c: '' } })).to.equal('a%5Bc%5D='); - done(); - }); - - it('url encodes values', function (done) { - - expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c'); - done(); - }); - - it('stringifies a date', function (done) { - - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - expect(Qs.stringify({ a: now })).to.equal(str); - done(); - }); - - it('stringifies the weird object from qs', function (done) { - - expect(Qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - done(); - }); - - it('skips properties that are part of the object prototype', function (done) { - - Object.prototype.crash = 'test'; - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - delete Object.prototype.crash; - done(); - }); - - it('stringifies boolean values', function (done) { - - expect(Qs.stringify({ a: true })).to.equal('a=true'); - expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true'); - expect(Qs.stringify({ b: false })).to.equal('b=false'); - expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false'); - done(); - }); - - it('stringifies buffer values', function (done) { - - expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test'); - expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test'); - done(); - }); - - it('stringifies an object using an alternative delimiter', function (done) { - - expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d'); - done(); - }); - - it('doesn\'t blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.stringify({ a: 'b', c: 'd' }); - global.Buffer = tempBuffer; - expect(result).to.equal('a=b&c=d'); - done(); - }); - - it('selects properties when filter=array', function (done) { - - expect(Qs.stringify({ a: 'b' }, { filter: ['a'] })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 }, { filter: [] })).to.equal(''); - expect(Qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2] })).to.equal('a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3'); - done(); - - }); - - it('supports custom representations when filter=function', function (done) { - - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - - calls++; - if (calls === 1) { - expect(prefix).to.be.empty(); - expect(value).to.equal(obj); - } - else if (prefix === 'c') { - return; - } - else if (value instanceof Date) { - expect(prefix).to.equal('e[f]'); - return value.getTime(); - } - return value; - }; - - expect(Qs.stringify(obj, { filter: filterFunc })).to.equal('a=b&e%5Bf%5D=1257894000000'); - expect(calls).to.equal(5); - done(); - - }); - - it('can disable uri encoding', function (done) { - - expect(Qs.stringify({ a: 'b' }, { encode: false })).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } }, { encode: false })).to.equal('a[b]=c'); - expect(Qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false })).to.equal('a=b&c'); - done(); - }); - - it('can sort the keys', function (done) { - - var sort = function alphabeticalSort (a, b) { - - return a.localeCompare(b); - }; - - expect(Qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort : sort })).to.equal('a=c&b=f&z=y'); - expect(Qs.stringify({ a: 'c', z: { j: 'a', i:'b' }, b : 'f' }, { sort : sort })).to.equal('a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); - done(); - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/utils.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/utils.js deleted file mode 100644 index a9a6b520..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/qs/test/utils.js +++ /dev/null @@ -1,28 +0,0 @@ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Utils = require('../lib/utils'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('merge()', function () { - - it('can merge two objects with the same key', function (done) { - - expect(Utils.merge({ a: 'b' }, { a: 'c' })).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); -}); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.npmignore deleted file mode 100644 index 7dccd970..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.travis.yml deleted file mode 100644 index f1d0f13c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/LICENSE.txt b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/LICENSE.txt deleted file mode 100644 index ab861acd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Michael Hart (michael.hart.au@gmail.com) - -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/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/README.md deleted file mode 100644 index 32fc9825..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Decode streams into strings The Right Way(tm) - -```javascript -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) -``` - -No need to deal with `setEncoding()` weirdness, just compose streams -like they were supposed to be! - -Handles input and output encoding: - -```javascript -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) -``` - -Also deals with `base64` output correctly by aligning each emitted data -chunk so that there are no dangling `=` characters: - -```javascript -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) -``` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/example.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/example.js deleted file mode 100644 index f82b85ed..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/example.js +++ /dev/null @@ -1,27 +0,0 @@ -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) - -utf8Stream.pipe(process.stdout) - -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) - -hex64Stream.pipe(process.stdout) - -// Deals with base64 correctly by aligning chunks -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/package.json deleted file mode 100644 index 39474baa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "stringstream", - "version": "0.0.5", - "description": "Encode and decode streams into string streams", - "author": { - "name": "Michael Hart", - "email": "michael.hart.au@gmail.com", - "url": "http://github.com/mhart" - }, - "main": "stringstream.js", - "keywords": [ - "string", - "stream", - "base64", - "gzip" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/mhart/StringStream.git" - }, - "license": "MIT", - "gitHead": "1efe3bf507bf3a1161f8473908b60e881d41422b", - "bugs": { - "url": "https://github.com/mhart/StringStream/issues" - }, - "homepage": "https://github.com/mhart/StringStream#readme", - "_id": "stringstream@0.0.5", - "scripts": {}, - "_shasum": "4e484cd4de5a0bbbee18e46307710a8a81621878", - "_from": "stringstream@>=0.0.4 <0.1.0", - "_npmVersion": "2.14.8", - "_nodeVersion": "4.2.1", - "_npmUser": { - "name": "hichaelmart", - "email": "michael.hart.au@gmail.com" - }, - "maintainers": [ - { - "name": "hichaelmart", - "email": "michael.hart.au@gmail.com" - } - ], - "dist": { - "shasum": "4e484cd4de5a0bbbee18e46307710a8a81621878", - "tarball": "http://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/stringstream.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/stringstream.js deleted file mode 100644 index 4ece1275..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/stringstream/stringstream.js +++ /dev/null @@ -1,102 +0,0 @@ -var util = require('util') -var Stream = require('stream') -var StringDecoder = require('string_decoder').StringDecoder - -module.exports = StringStream -module.exports.AlignedStringDecoder = AlignedStringDecoder - -function StringStream(from, to) { - if (!(this instanceof StringStream)) return new StringStream(from, to) - - Stream.call(this) - - if (from == null) from = 'utf8' - - this.readable = this.writable = true - this.paused = false - this.toEncoding = (to == null ? from : to) - this.fromEncoding = (to == null ? '' : from) - this.decoder = new AlignedStringDecoder(this.toEncoding) -} -util.inherits(StringStream, Stream) - -StringStream.prototype.write = function(data) { - if (!this.writable) { - var err = new Error('stream not writable') - err.code = 'EPIPE' - this.emit('error', err) - return false - } - if (this.fromEncoding) { - if (Buffer.isBuffer(data)) data = data.toString() - data = new Buffer(data, this.fromEncoding) - } - var string = this.decoder.write(data) - if (string.length) this.emit('data', string) - return !this.paused -} - -StringStream.prototype.flush = function() { - if (this.decoder.flush) { - var string = this.decoder.flush() - if (string.length) this.emit('data', string) - } -} - -StringStream.prototype.end = function() { - if (!this.writable && !this.readable) return - this.flush() - this.emit('end') - this.writable = this.readable = false - this.destroy() -} - -StringStream.prototype.destroy = function() { - this.decoder = null - this.writable = this.readable = false - this.emit('close') -} - -StringStream.prototype.pause = function() { - this.paused = true -} - -StringStream.prototype.resume = function () { - if (this.paused) this.emit('drain') - this.paused = false -} - -function AlignedStringDecoder(encoding) { - StringDecoder.call(this, encoding) - - switch (this.encoding) { - case 'base64': - this.write = alignedWrite - this.alignedBuffer = new Buffer(3) - this.alignedBytes = 0 - break - } -} -util.inherits(AlignedStringDecoder, StringDecoder) - -AlignedStringDecoder.prototype.flush = function() { - if (!this.alignedBuffer || !this.alignedBytes) return '' - var leftover = this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes) - this.alignedBytes = 0 - return leftover -} - -function alignedWrite(buffer) { - var rem = (this.alignedBytes + buffer.length) % this.alignedBuffer.length - if (!rem && !this.alignedBytes) return buffer.toString(this.encoding) - - var returnBuffer = new Buffer(this.alignedBytes + buffer.length - rem) - - this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes) - buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length - rem) - - buffer.copy(this.alignedBuffer, 0, buffer.length - rem, buffer.length) - this.alignedBytes = rem - - return returnBuffer.toString(this.encoding) -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 1bc286fb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2015, Salesforce.com, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -=== - -The following exceptions apply: - -=== - -`public_suffix_list.dat` was obtained from - via -. The license for this file is MPL/2.0. The header of -that file reads as follows: - - // This Source Code Form is subject to the terms of the Mozilla Public - // License, v. 2.0. If a copy of the MPL was not distributed with this - // file, You can obtain one at http://mozilla.org/MPL/2.0/. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/README.md deleted file mode 100644 index 9899dbf6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,492 +0,0 @@ -[RFC6265](https://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -[![Build Status](https://travis-ci.org/SalesforceEng/tough-cookie.png?branch=master)](https://travis-ci.org/SalesforceEng/tough-cookie) - -[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie) -![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9) - -# Synopsis - -``` javascript -var tough = require('tough-cookie'); -var Cookie = tough.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new tough.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -## tough - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -**Note**: prior to 1.0.x, several of these functions took a `strict` parameter. This has since been removed from the API as it was no longer necessary. - -### `parseDate(string)` - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. - -### `formatDate(date)` - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -### `canonicalDomain(str)` - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -### `domainMatch(str,domStr[,canonicalize=true])` - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -### `defaultPath(path)` - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -### `pathMatch(reqPath,cookiePath)` - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -### `parse(cookieString[, options])` - -alias for `Cookie.parse(cookieString[, options])` - -### `fromJSON(string)` - -alias for `Cookie.fromJSON(string)` - -### `getPublicSuffix(hostname)` - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -### `cookieCompare(a,b)` - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence: - -* Longest `.path` -* oldest `.creation` (which has a 1ms precision, same as `Date`) -* lowest `.creationIndex` (to get beyond the 1ms precision) - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -**Note**: Since JavaScript's `Date` is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the `now` option to `.setCookie()`. The `.creationIndex` property is a per-process global counter, assigned during construction with `new Cookie()`. This preserves the spirit of the RFC sorting: older cookies go first. This works great for `MemoryCookieStore`, since `Set-Cookie` headers are parsed in order, but may not be so great for distributed systems. Sophisticated `Store`s may wish to set this to some other _logical clock_ such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then `A.creationIndex < B.creationIndex`. If you want to alter the global counter, which you probably _shouldn't_ do, it's stored in `Cookie.cookiesCreated`. - -### `permuteDomain(domain)` - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - -### `permutePath(path)` - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - - -## Cookie - -Exported via `tough.Cookie`. - -### `Cookie.parse(cookieString[, options])` - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. - -The options parameter is not required and currently has only one property: - - * _loose_ - boolean - if `true` enable parsing of key-less cookies like `=abc` and `=`, which are not RFC-compliant. - -If options is not an object, it is ignored, which means you can use `Array#map` with it. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -### Properties - -Cookie object properties: - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - * _creation_ - `Date` - when this cookie was constructed - * _creationIndex_ - number - set at construction, used to provide greater sort precision (please see `cookieCompare(a,b)` for a full explanation) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _creation_ - `Date` - **modified** from construction to when the cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -### `Cookie([{properties}])` - -Receives an options object that can contain any of the above Cookie properties, uses the default for unspecified properties. - -### `.toString()` - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -### `.cookieString()` - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -### `.setExpires(String)` - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -### `.setMaxAge(number)` - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -### `.expiryTime([now=Date.now()])` - -### `.expiryDate([now=Date.now()])` - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.creation` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -### `.TTL([now=Date.now()])` - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -### `.canonicalizedDoman()` - -### `.cdomain()` - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -### `.toJSON()` - -For convenience in using `JSON.serialize(cookie)`. Returns a plain-old `Object` that can be JSON-serialized. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are exported in ISO format (`.toISOString()`). - -**NOTE**: Custom `Cookie` properties will be discarded. In tough-cookie 1.x, since there was no `.toJSON` method explicitly defined, all enumerable properties were captured. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -### `Cookie.fromJSON(strOrObj)` - -Does the reverse of `cookie.toJSON()`. If passed a string, will `JSON.parse()` that first. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are parsed via `Date.parse()`, not the tough-cookie `parseDate`, since it's JavaScript/JSON-y timestamps being handled at this layer. - -Returns `null` upon JSON parsing error. - -### `.clone()` - -Does a deep clone of this cookie, exactly implemented as `Cookie.fromJSON(cookie.toJSON())`. - -### `.validate()` - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - - -## CookieJar - -Exported via `tough.CookieJar`. - -### `CookieJar([store],[options])` - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - -The `options` object can be omitted and can have the following properties: - - * _rejectPublicSuffixes_ - boolean - default `true` - reject cookies with domains like "com" and "co.uk" - * _looseMode_ - boolean - default `false` - accept malformed cookies like `bar` and `=bar`, which have an implied empty name. - This is not in the standard, but is used sometimes on the web and is accepted by (most) browsers. - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -### `.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))` - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.creation`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. `Store` errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -### `.setCookieSync(cookieOrString, currentUrl, [{options}])` - -Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookies(currentUrl, [{options},] cb(err,cookies))` - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the underlying store (the default `MemoryCookieStore` supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -### `.getCookiesSync(currentUrl, [{options}])` - -Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookieString(...)` - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -### `.getCookieStringSync(...)` - -Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getSetCookieStrings(...)` - -Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`. - -### `.getSetCookieStringsSync(...)` - -Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.serialize(cb(err,serializedObject))` - -Serialize the Jar if the underlying store supports `.getAllCookies`. - -**NOTE**: Custom `Cookie` properties will be discarded. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -See [Serialization Format]. - -### `.serializeSync()` - -Sync version of .serialize - -### `.toJSON()` - -Alias of .serializeSync() for the convenience of `JSON.stringify(cookiejar)`. - -### `CookieJar.deserialize(serialized, [store], cb(err,object))` - -A new Jar is created and the serialized Cookies are added to the underlying store. Each `Cookie` is added via `store.putCookie` in the order in which they appear in the serialization. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. - -As a convenience, if `serialized` is a string, it is passed through `JSON.parse` first. If that throws an error, this is passed to the callback. - -### `CookieJar.deserializeSync(serialized, [store])` - -Sync version of `.deserialize`. _Note_ that the `store` must be synchronous for this to work. - -### `CookieJar.fromJSON(string)` - -Alias of `.deserializeSync` to provide consistency with `Cookie.fromJSON()`. - -### `.clone([store,]cb(err,newJar))` - -Produces a deep clone of this jar. Modifications to the original won't affect the clone, and vice versa. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. Transferring between store types is supported so long as the source implements `.getAllCookies()` and the destination implements `.putCookie()`. - -### `.cloneSync([store])` - -Synchronous version of `.clone`, returning a new `CookieJar` instance. - -The `store` argument is optional, but must be a _synchronous_ `Store` instance if specified. If not passed, a new instance of `MemoryCookieStore` is used. - -The _source_ and _destination_ must both be synchronous `Store`s. If one or both stores are asynchronous, use `.clone` instead. Recall that `MemoryCookieStore` supports both synchronous and asynchronous API calls. - -## Store - -Base class for CookieJar stores. Available as `tough.Store`. - -## Store API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`. - -Stores are asynchronous by default, but if `store.synchronous` is set to `true`, then the `*Sync` methods on the of the containing `CookieJar` can be used (however, the continuation-passing style - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -### `store.findCookie(domain, path, key, cb(err,cookie))` - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -### `store.findCookies(domain, path, cb(err,cookies))` - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -### `store.putCookie(cookie, cb(err))` - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -### `store.updateCookie(oldCookie, newCookie, cb(err))` - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects (to the precision possible via JavaScript's clock). Both `.creation` and `.creationIndex` are guaranteed to be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are selected for automatic deletion (e.g., least-recently-used, which is up to the store to implement). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -### `store.removeCookie(domain, path, key, cb(err))` - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -### `store.removeCookies(domain, path, cb(err))` - -Removes matching cookies from the store. The `path` parameter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -### `store.getAllCookies(cb(err, cookies))` - -Produces an `Array` of all cookies during `jar.serialize()`. The items in the array can be true `Cookie` objects or generic `Object`s with the [Serialization Format] data structure. - -Cookies SHOULD be returned in creation order to preserve sorting via `compareCookies()`. For reference, `MemoryCookieStore` will sort by `.creationIndex` since it uses true `Cookie` objects internally. If you don't return the cookies in creation order, they'll still be sorted by creation time, but this only has a precision of 1ms. See `compareCookies` for more detail. - -Pass an error if retrieval fails. - -## MemoryCookieStore - -Inherits from `Store`. - -A just-in-memory CookieJar synchronous store implementation, used by default. Despite being a synchronous implementation, it's usable with both the synchronous and asynchronous forms of the `CookieJar` API. - -# Serialization Format - -**NOTE**: if you want to have custom `Cookie` properties serialized, add the property name to `Cookie.serializableProperties`. - -```js - { - // The version of tough-cookie that serialized this jar. - version: 'tough-cookie@1.x.y', - - // add the store type, to make humans happy: - storeType: 'MemoryCookieStore', - - // CookieJar configuration: - rejectPublicSuffixes: true, - // ... future items go here - - // Gets filled from jar.store.getAllCookies(): - cookies: [ - { - key: 'string', - value: 'string', - // ... - /* other Cookie.serializableProperties go here */ - } - ] - } -``` - -# Copyright and License - -(tl;dr: BSD-3-Clause with some MPL/2.0) - -```text - Copyright (c) 2015, Salesforce.com, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. Neither the name of Salesforce.com nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -``` - -Portions may be licensed under different licenses (in particular `public_suffix_list.dat` is MPL/2.0); please read that file and the LICENSE file for full details. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/cookie.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 0afe4a2a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,1342 +0,0 @@ -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -'use strict'; -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); -var Store = require('./store').Store; -var MemoryCookieStore = require('./memstore').MemoryCookieStore; -var pathMatch = require('./pathMatch').pathMatch; -var VERSION = require('../package.json').version; - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'+$'); - -var CONTROL_CHARS = /[\x00-\x1F]/; - -// Double quotes are part of the value (see: S4.1.1). -// '\r', '\n' and '\0' should be treated as a terminator in the "relaxed" mode -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60) -// '=' and ';' are attribute/values separators -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L64) -var COOKIE_PAIR = /^(([^=;]+))\s*=\s*(("?)[^\n\r\0]*\3)/ - -// Used to parse non-RFC-compliant cookies like '=abc' when given the `loose` -// option in Cookie.parse: -var LOOSE_COOKIE_PAIR = /^((?:=)?([^=;]*)\s*=\s*)?(("?)[^\n\r\0]*\3)/; - -// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -var DAY_OF_MONTH = /^(\d{1,2})[^\d]*$/; -var TIME = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/; -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i; - -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, - jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^(\d{2}|\d{4})$/; // 2 to 4 digits - -var MAX_TIME = 2147483647000; // 31-bit max -var MIN_TIME = 0; // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str) { - if (!str) { - return; - } - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) { - return; - } - - var hour = null; - var minutes = null; - var seconds = null; - var day = null; - var month = null; - var year = null; - - for (var i=0; i 23 || minutes > 59 || seconds > 59) { - return; - } - - continue; - } - } - - /* 2.2. If the found-day-of-month flag is not set and the date-token matches - * the day-of-month production, set the found-day-of- month flag and set - * the day-of-month-value to the number denoted by the date-token. Skip - * the remaining sub-steps and continue to the next date-token. - */ - if (day === null) { - result = DAY_OF_MONTH.exec(token); - if (result) { - day = parseInt(result, 10); - /* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ - if(day < 1 || day > 31) { - return; - } - continue; - } - } - - /* 2.3. If the found-month flag is not set and the date-token matches the - * month production, set the found-month flag and set the month-value to - * the month denoted by the date-token. Skip the remaining sub-steps and - * continue to the next date-token. - */ - if (month === null) { - result = MONTH.exec(token); - if (result) { - month = MONTH_TO_NUM[result[1].toLowerCase()]; - continue; - } - } - - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. - */ - if (year === null) { - result = YEAR.exec(token); - if (result) { - year = parseInt(result[0], 10); - /* From S5.1.1: - * 3. If the year-value is greater than or equal to 70 and less - * than or equal to 99, increment the year-value by 1900. - * 4. If the year-value is greater than or equal to 0 and less - * than or equal to 69, increment the year-value by 2000. - */ - if (70 <= year && year <= 99) { - year += 1900; - } else if (0 <= year && year <= 69) { - year += 2000; - } - - if (year < 1601) { - return; // 5. ... the year-value is less than 1601 - } - } - } - } - - if (seconds === null || day === null || month === null || year === null) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, - } - - return new Date(Date.UTC(year, month, day, hour, minutes, seconds)); -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) { - return null; - } - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) { - str = punycode.toASCII(str); - } - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) { - return null; - } - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) { - return true; - } - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) { - return false; - } - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) { - return false; // it's a non-match (-1) or prefix (0) - } - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) { // it's not a suffix - return false; - } - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') { - return false; - } - - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") { - return "/"; - } - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") { - return path; - } - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) { - return "/"; - } - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - - -function parse(str, options) { - if (!options || typeof options !== 'object') { - options = {}; - } - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRe = options.loose ? LOOSE_COOKIE_PAIR : COOKIE_PAIR; - var result = pairRe.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) { - return; - } - - var c = new Cookie(); - if (result[1]) { - c.key = result[2].trim(); - } else { - c.key = ''; - } - c.value = result[3].trim(); - if (CONTROL_CHARS.test(c.key) || CONTROL_CHARS.test(c.value)) { - return; - } - - if (firstSemi === -1) { - return c; - } - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) { - return c; - } - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - var av_sep = av.indexOf('='); - var av_key, av_value; - - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - - if (av_value) { - av_value = av_value.trim(); - } - - switch(av_key) { - case 'expires': // S5.2.1 - if (av_value) { - var exp = parseDate(av_value); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp) { - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - c.expires = exp; - } - } - break; - - case 'max-age': // S5.2.2 - if (av_value) { - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (/^-?[0-9]+$/.test(av_value)) { - var delta = parseInt(av_value, 10); - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - } - } - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (av_value) { - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./, ''); - if (domain) { - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - } - } - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - c.path = av_value && av_value[0] === "/" ? av_value : null; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - return c; -} - -// avoid the V8 deoptimization monster! -function jsonParse(str) { - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return e; - } - return obj; -} - -function fromJSON(str) { - if (!str) { - return null; - } - - var obj; - if (typeof str === 'string') { - obj = jsonParse(str); - if (obj instanceof Error) { - return null; - } - } else { - // assume it's an Object - obj = str; - } - - var c = new Cookie(); - for (var i=0; i 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) { - break; - } - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - -function getCookieContext(url) { - if (url instanceof Object) { - return url; - } - // NOTE: decodeURI will throw on malformed URIs (see GH-32). - // Therefore, we will just skip decoding for such URIs. - try { - url = decodeURI(url); - } - catch(err) { - // Silently swallow error - } - - return urlParse(url); -} - -function Cookie(options) { - options = options || {}; - - Object.keys(options).forEach(function(prop) { - if (Cookie.prototype.hasOwnProperty(prop) && - Cookie.prototype[prop] !== options[prop] && - prop.substr(0,1) !== '_') - { - this[prop] = options[prop]; - } - }, this); - - this.creation = this.creation || new Date(); - - // used to break creation ties in cookieCompare(): - Object.defineProperty(this, 'creationIndex', { - configurable: false, - enumerable: false, // important for assert.deepEqual checks - writable: true, - value: ++Cookie.cookiesCreated - }); -} - -Cookie.cookiesCreated = 0; // incremented each time a cookie is created - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set -Object.defineProperty(Cookie.prototype, 'creationIndex', { - configurable: true, - enumerable: false, - writable: true, - value: 0 -}); - -Cookie.serializableProperties = Object.keys(Cookie.prototype) - .filter(function(prop) { - return !( - Cookie.prototype[prop] instanceof Function || - prop === 'creationIndex' || - prop.substr(0,1) === '_' - ); - }); - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.toJSON = function() { - var obj = {}; - - var props = Cookie.serializableProperties; - for (var i=0; i suffixLen) { - var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.'); - return converted ? punycode.toUnicode(publicSuffix) : publicSuffix; - } - - return null; -}; - -// The following generated structure is used under the MPL version 2.0 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mp.br":true,"mus.br":true,"net.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"ac.cy":true,"biz.cy":true,"com.cy":true,"ekloges.cy":true,"gov.cy":true,"ltd.cy":true,"name.cy":true,"net.cy":true,"org.cy":true,"parliament.cy":true,"press.cy":true,"pro.cy":true,"tm.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"net.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"co.gl":true,"com.gl":true,"edu.gl":true,"net.gl":true,"org.gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"il":true,"ac.il":true,"co.il":true,"gov.il":true,"idf.il":true,"k12.il":true,"muni.il":true,"net.il":true,"org.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"hitoyoshi.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kashima.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kosa.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"kesennuma.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"ac.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"co.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"teledata.mz":false,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"gov.ng":true,"mil.ng":true,"mobi.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"gov.pl":true,"ap.gov.pl":true,"ic.gov.pl":true,"is.gov.pl":true,"us.gov.pl":true,"kmpsp.gov.pl":true,"kppsp.gov.pl":true,"kwpsp.gov.pl":true,"psp.gov.pl":true,"wskr.gov.pl":true,"kwp.gov.pl":true,"mw.gov.pl":true,"ug.gov.pl":true,"um.gov.pl":true,"umig.gov.pl":true,"ugim.gov.pl":true,"upow.gov.pl":true,"uw.gov.pl":true,"starostwo.gov.pl":true,"pa.gov.pl":true,"po.gov.pl":true,"psse.gov.pl":true,"pup.gov.pl":true,"rzgw.gov.pl":true,"sa.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"wsa.gov.pl":true,"sko.gov.pl":true,"uzs.gov.pl":true,"wiih.gov.pl":true,"winb.gov.pl":true,"pinb.gov.pl":true,"wios.gov.pl":true,"witd.gov.pl":true,"wzmiuw.gov.pl":true,"piw.gov.pl":true,"wiw.gov.pl":true,"griw.gov.pl":true,"wif.gov.pl":true,"oum.gov.pl":true,"sdn.gov.pl":true,"zp.gov.pl":true,"uppo.gov.pl":true,"mup.gov.pl":true,"wuoz.gov.pl":true,"konsulat.gov.pl":true,"oirm.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"adygeya.su":true,"arkhangelsk.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"dagestan.su":true,"grozny.su":true,"ivanovo.su":true,"kalmykia.su":true,"kaluga.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"lenug.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"togliatti.su":true,"troitsk.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tp":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--y9a3aq":true,"xn--54b7fta0cc":true,"xn--90ais":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--qxam":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbtx2b":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--d1alf":true,"xn--l1acc":true,"xn--mix891f":true,"xn--mix082f":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--mgbai9azgqp6j":true,"xn--mgbai9a5eva00b":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--mgbpl2fh":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"ac.za":true,"agrica.za":true,"alt.za":true,"co.za":true,"edu.za":true,"gov.za":true,"grondar.za":true,"law.za":true,"mil.za":true,"net.za":true,"ngo.za":true,"nis.za":true,"nom.za":true,"org.za":true,"school.za":true,"tm.za":true,"web.za":true,"*.zm":true,"*.zw":true,"aaa":true,"aarp":true,"abarth":true,"abb":true,"abbott":true,"abbvie":true,"abc":true,"able":true,"abogado":true,"abudhabi":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"adac":true,"ads":true,"adult":true,"aeg":true,"aetna":true,"afamilycompany":true,"afl":true,"africa":true,"africamagic":true,"agakhan":true,"agency":true,"aig":true,"aigo":true,"airbus":true,"airforce":true,"airtel":true,"akdn":true,"alfaromeo":true,"alibaba":true,"alipay":true,"allfinanz":true,"allstate":true,"ally":true,"alsace":true,"alstom":true,"americanexpress":true,"americanfamily":true,"amex":true,"amfam":true,"amica":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"anz":true,"aol":true,"apartments":true,"app":true,"apple":true,"aquarelle":true,"aramco":true,"archi":true,"army":true,"arte":true,"asda":true,"associates":true,"athleta":true,"attorney":true,"auction":true,"audi":true,"audible":true,"audio":true,"auspost":true,"author":true,"auto":true,"autos":true,"avianca":true,"aws":true,"axa":true,"azure":true,"baby":true,"baidu":true,"banamex":true,"bananarepublic":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"barefoot":true,"bargains":true,"basketball":true,"bauhaus":true,"bayern":true,"bbc":true,"bbt":true,"bbva":true,"bcg":true,"bcn":true,"beats":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bestbuy":true,"bet":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"blanco":true,"blockbuster":true,"blog":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"boehringer":true,"bofa":true,"bom":true,"bond":true,"boo":true,"book":true,"booking":true,"boots":true,"bosch":true,"bostik":true,"bot":true,"boutique":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"bugatti":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"calvinklein":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"capitalone":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"case":true,"caseih":true,"cash":true,"casino":true,"catering":true,"cba":true,"cbn":true,"cbre":true,"cbs":true,"ceb":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"chanel":true,"channel":true,"chase":true,"chat":true,"cheap":true,"chintai":true,"chloe":true,"christmas":true,"chrome":true,"chrysler":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citadel":true,"citi":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clothing":true,"cloud":true,"club":true,"clubmed":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"comcast":true,"commbank":true,"community":true,"company":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cookingchannel":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dds":true,"deal":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"deloitte":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"dhl":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"discover":true,"dish":true,"dnp":true,"docs":true,"dodge":true,"dog":true,"doha":true,"domains":true,"doosan":true,"dot":true,"download":true,"drive":true,"dstv":true,"dtv":true,"dubai":true,"duck":true,"dunlop":true,"duns":true,"dupont":true,"durban":true,"dvag":true,"dwg":true,"earth":true,"eat":true,"edeka":true,"education":true,"email":true,"emerck":true,"emerson":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epost":true,"epson":true,"equipment":true,"ericsson":true,"erni":true,"esq":true,"estate":true,"esurance":true,"etisalat":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"extraspace":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"farmers":true,"fashion":true,"fast":true,"fedex":true,"feedback":true,"ferrari":true,"ferrero":true,"fiat":true,"fidelity":true,"fido":true,"film":true,"final":true,"finance":true,"financial":true,"fire":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"flir":true,"florist":true,"flowers":true,"flsmidth":true,"fly":true,"foo":true,"foodnetwork":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"fox":true,"fresenius":true,"frl":true,"frogans":true,"frontdoor":true,"frontier":true,"ftr":true,"fujitsu":true,"fujixerox":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallo":true,"gallup":true,"game":true,"games":true,"gap":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"george":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glade":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmo":true,"gmx":true,"godaddy":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goodhands":true,"goodyear":true,"goog":true,"google":true,"gop":true,"got":true,"gotv":true,"grainger":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"group":true,"guardian":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hamburg":true,"hangout":true,"haus":true,"hbo":true,"hdfc":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hgtv":true,"hiphop":true,"hisamitsu":true,"hitachi":true,"hiv":true,"hkt":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homegoods":true,"homes":true,"homesense":true,"honda":true,"honeywell":true,"horse":true,"host":true,"hosting":true,"hot":true,"hoteles":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"htc":true,"hughes":true,"hyatt":true,"hyundai":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ieee":true,"ifm":true,"iinet":true,"ikano":true,"imamat":true,"imdb":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"intel":true,"international":true,"intuit":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ismaili":true,"ist":true,"istanbul":true,"itau":true,"itv":true,"iveco":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jcp":true,"jeep":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"jnj":true,"joburg":true,"jot":true,"joy":true,"jpmorgan":true,"jprs":true,"juegos":true,"juniper":true,"kaufen":true,"kddi":true,"kerryhotels":true,"kerrylogistics":true,"kerryproperties":true,"kfh":true,"kia":true,"kim":true,"kinder":true,"kindle":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kosher":true,"kpmg":true,"kpn":true,"krd":true,"kred":true,"kuokgroup":true,"kyknet":true,"kyoto":true,"lacaixa":true,"ladbrokes":true,"lamborghini":true,"lancaster":true,"lancia":true,"lancome":true,"land":true,"landrover":true,"lanxess":true,"lasalle":true,"lat":true,"latino":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"lefrak":true,"legal":true,"lego":true,"lexus":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"lilly":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"lipsy":true,"live":true,"living":true,"lixil":true,"loan":true,"loans":true,"locker":true,"locus":true,"loft":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"lpl":true,"lplfinancial":true,"ltd":true,"ltda":true,"lundbeck":true,"lupin":true,"luxe":true,"luxury":true,"macys":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"market":true,"marketing":true,"markets":true,"marriott":true,"marshalls":true,"maserati":true,"mattel":true,"mba":true,"mcd":true,"mcdonalds":true,"mckinsey":true,"med":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"metlife":true,"miami":true,"microsoft":true,"mini":true,"mint":true,"mit":true,"mitsubishi":true,"mlb":true,"mls":true,"mma":true,"mnet":true,"mobily":true,"moda":true,"moe":true,"moi":true,"mom":true,"monash":true,"money":true,"monster":true,"montblanc":true,"mopar":true,"mormon":true,"mortgage":true,"moscow":true,"moto":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"msd":true,"mtn":true,"mtpc":true,"mtr":true,"multichoice":true,"mutual":true,"mutuelle":true,"mzansimagic":true,"nab":true,"nadex":true,"nagoya":true,"naspers":true,"nationwide":true,"natura":true,"navy":true,"nba":true,"nec":true,"netbank":true,"netflix":true,"network":true,"neustar":true,"new":true,"newholland":true,"news":true,"next":true,"nextdirect":true,"nexus":true,"nfl":true,"ngo":true,"nhk":true,"nico":true,"nike":true,"nikon":true,"ninja":true,"nissan":true,"nokia":true,"northwesternmutual":true,"norton":true,"now":true,"nowruz":true,"nowtv":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"observer":true,"off":true,"office":true,"okinawa":true,"olayan":true,"olayangroup":true,"oldnavy":true,"ollo":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"onyourside":true,"ooo":true,"open":true,"oracle":true,"orange":true,"organic":true,"orientexpress":true,"osaka":true,"otsuka":true,"ott":true,"ovh":true,"page":true,"pamperedchef":true,"panasonic":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"pay":true,"payu":true,"pccw":true,"pet":true,"pfizer":true,"pharmacy":true,"philips":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"ping":true,"pink":true,"pioneer":true,"pizza":true,"place":true,"play":true,"playstation":true,"plumbing":true,"plus":true,"pnc":true,"pohl":true,"poker":true,"politie":true,"porn":true,"pramerica":true,"praxi":true,"press":true,"prime":true,"prod":true,"productions":true,"prof":true,"progressive":true,"promo":true,"properties":true,"property":true,"protection":true,"pru":true,"prudential":true,"pub":true,"qpon":true,"quebec":true,"quest":true,"qvc":true,"racing":true,"raid":true,"read":true,"realestate":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rexroth":true,"rich":true,"richardli":true,"ricoh":true,"rightathome":true,"ril":true,"rio":true,"rip":true,"rocher":true,"rocks":true,"rodeo":true,"rogers":true,"room":true,"rsvp":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsclub":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"save":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schaeffler":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scjohnson":true,"scor":true,"scot":true,"seat":true,"secure":true,"security":true,"seek":true,"sener":true,"services":true,"ses":true,"seven":true,"sew":true,"sex":true,"sexy":true,"sfr":true,"shangrila":true,"sharp":true,"shaw":true,"shell":true,"shia":true,"shiksha":true,"shoes":true,"shouji":true,"show":true,"showtime":true,"shriram":true,"silk":true,"sina":true,"singles":true,"site":true,"ski":true,"skin":true,"sky":true,"skype":true,"sling":true,"smart":true,"smile":true,"sncf":true,"soccer":true,"social":true,"softbank":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"srl":true,"srt":true,"stada":true,"staples":true,"star":true,"starhub":true,"statebank":true,"statefarm":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"store":true,"studio":true,"study":true,"style":true,"sucks":true,"supersport":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiftcover":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"talk":true,"taobao":true,"target":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"tdk":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"teva":true,"thd":true,"theater":true,"theatre":true,"theguardian":true,"tiaa":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tjmaxx":true,"tjx":true,"tkmaxx":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"total":true,"tours":true,"town":true,"toyota":true,"toys":true,"trade":true,"trading":true,"training":true,"travelchannel":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tube":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubank":true,"ubs":true,"uconnect":true,"university":true,"uno":true,"uol":true,"ups":true,"vacations":true,"vana":true,"vanguard":true,"vegas":true,"ventures":true,"verisign":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"vig":true,"viking":true,"villas":true,"vin":true,"vip":true,"virgin":true,"visa":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vivo":true,"vlaanderen":true,"vodka":true,"volkswagen":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walmart":true,"walter":true,"wang":true,"wanggou":true,"warman":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"weber":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wine":true,"winners":true,"wme":true,"wolterskluwer":true,"woodside":true,"work":true,"works":true,"world":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xfinity":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3oq18vl8pn36a":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--4gq48lf9j":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5su34j936bgsg":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fct429k":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--fzys8d69uvgm":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgba7c0bbn0a":true,"xn--mgbaakc7dvf":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbca7dzdo":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--w4r85el8fhu5dnra":true,"xn--w4rs40l":true,"xn--xhq521b":true,"xn--zfr164b":true,"xperia":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"you":true,"youtube":true,"yun":true,"zappos":true,"zara":true,"zero":true,"zip":true,"zippo":true,"zone":true,"zuerich":true,"cloudfront.net":true,"ap-northeast-1.compute.amazonaws.com":true,"ap-southeast-1.compute.amazonaws.com":true,"ap-southeast-2.compute.amazonaws.com":true,"cn-north-1.compute.amazonaws.cn":true,"compute.amazonaws.cn":true,"compute.amazonaws.com":true,"compute-1.amazonaws.com":true,"eu-west-1.compute.amazonaws.com":true,"eu-central-1.compute.amazonaws.com":true,"sa-east-1.compute.amazonaws.com":true,"us-east-1.amazonaws.com":true,"us-gov-west-1.compute.amazonaws.com":true,"us-west-1.compute.amazonaws.com":true,"us-west-2.compute.amazonaws.com":true,"z-1.compute-1.amazonaws.com":true,"z-2.compute-1.amazonaws.com":true,"elasticbeanstalk.com":true,"elb.amazonaws.com":true,"s3.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-external-1.amazonaws.com":true,"s3-external-2.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-eu-central-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3.cn-north-1.amazonaws.com.cn":true,"s3.eu-central-1.amazonaws.com":true,"betainabox.com":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"c.cdn77.org":true,"cdn77-ssl.net":true,"r.cdn77.net":true,"rsc.cdn77.org":true,"ssl.origin.cdn77-secure.org":true,"co.nl":true,"co.no":true,"*.platform.sh":true,"cupcake.is":true,"dreamhosters.com":true,"duckdns.org":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"eu.org":true,"al.eu.org":true,"asso.eu.org":true,"at.eu.org":true,"au.eu.org":true,"be.eu.org":true,"bg.eu.org":true,"ca.eu.org":true,"cd.eu.org":true,"ch.eu.org":true,"cn.eu.org":true,"cy.eu.org":true,"cz.eu.org":true,"de.eu.org":true,"dk.eu.org":true,"edu.eu.org":true,"ee.eu.org":true,"es.eu.org":true,"fi.eu.org":true,"fr.eu.org":true,"gr.eu.org":true,"hr.eu.org":true,"hu.eu.org":true,"ie.eu.org":true,"il.eu.org":true,"in.eu.org":true,"int.eu.org":true,"is.eu.org":true,"it.eu.org":true,"jp.eu.org":true,"kr.eu.org":true,"lt.eu.org":true,"lu.eu.org":true,"lv.eu.org":true,"mc.eu.org":true,"me.eu.org":true,"mk.eu.org":true,"mt.eu.org":true,"my.eu.org":true,"net.eu.org":true,"ng.eu.org":true,"nl.eu.org":true,"no.eu.org":true,"nz.eu.org":true,"paris.eu.org":true,"pl.eu.org":true,"pt.eu.org":true,"q-a.eu.org":true,"ro.eu.org":true,"ru.eu.org":true,"se.eu.org":true,"si.eu.org":true,"sk.eu.org":true,"tr.eu.org":true,"uk.eu.org":true,"us.eu.org":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"firebaseapp.com":true,"flynnhub.com":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"ro.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.al":true,"blogspot.am":true,"blogspot.ba":true,"blogspot.be":true,"blogspot.bg":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.cl":true,"blogspot.co.at":true,"blogspot.co.id":true,"blogspot.co.il":true,"blogspot.co.ke":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.co.za":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.by":true,"blogspot.com.co":true,"blogspot.com.cy":true,"blogspot.com.ee":true,"blogspot.com.eg":true,"blogspot.com.es":true,"blogspot.com.mt":true,"blogspot.com.ng":true,"blogspot.com.tr":true,"blogspot.com.uy":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hr":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.is":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.li":true,"blogspot.lt":true,"blogspot.lu":true,"blogspot.md":true,"blogspot.mk":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.my":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pe":true,"blogspot.pt":true,"blogspot.qa":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.rs":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.si":true,"blogspot.sk":true,"blogspot.sn":true,"blogspot.td":true,"blogspot.tw":true,"blogspot.ug":true,"blogspot.vn":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"withgoogle.com":true,"withyoutube.com":true,"herokuapp.com":true,"herokussl.com":true,"iki.fi":true,"biz.at":true,"info.at":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"bmoattachments.org":true,"4u.com":true,"nfshost.com":true,"nyc.mn":true,"nid.io":true,"operaunite.com":true,"outsystemscloud.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pantheon.io":true,"gotpantheon.com":true,"priv.at":true,"qa2.com":true,"rhcloud.com":true,"sandcats.io":true,"biz.ua":true,"co.ua":true,"pp.ua":true,"sinaapp.com":true,"vipsinaapp.com":true,"1kapp.com":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"yolasite.com":true,"za.net":true,"za.org":true}); - -// END of automatically generated file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/store.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/store.js deleted file mode 100644 index bce52925..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/lib/store.js +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -'use strict'; -/*jshint unused:false */ - -function Store() { -} -exports.Store = Store; - -// Stores may be synchronous, but are still required to use a -// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync" -// API that converts from synchronous-callbacks to imperative style. -Store.prototype.synchronous = false; - -Store.prototype.findCookie = function(domain, path, key, cb) { - throw new Error('findCookie is not implemented'); -}; - -Store.prototype.findCookies = function(domain, path, cb) { - throw new Error('findCookies is not implemented'); -}; - -Store.prototype.putCookie = function(cookie, cb) { - throw new Error('putCookie is not implemented'); -}; - -Store.prototype.updateCookie = function(oldCookie, newCookie, cb) { - // recommended default implementation: - // return this.putCookie(newCookie, cb); - throw new Error('updateCookie is not implemented'); -}; - -Store.prototype.removeCookie = function(domain, path, key, cb) { - throw new Error('removeCookie is not implemented'); -}; - -Store.prototype.removeCookies = function(domain, path, cb) { - throw new Error('removeCookies is not implemented'); -}; - -Store.prototype.getAllCookies = function(cb) { - throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)'); -}; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/package.json deleted file mode 100644 index 5fd5510a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "author": { - "name": "Jeremy Stashewsky", - "email": "jstashewsky@salesforce.com" - }, - "contributors": [ - { - "name": "Alexander Savin" - }, - { - "name": "Ian Livingstone" - }, - { - "name": "Ivan Nikulin" - }, - { - "name": "Lalit Kapoor" - }, - { - "name": "Sam Thompson" - }, - { - "name": "Sebastian Mayr" - } - ], - "license": "BSD-3-Clause", - "name": "tough-cookie", - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "version": "2.2.1", - "homepage": "https://github.com/SalesforceEng/tough-cookie", - "repository": { - "type": "git", - "url": "git://github.com/SalesforceEng/tough-cookie.git" - }, - "bugs": { - "url": "https://github.com/SalesforceEng/tough-cookie/issues" - }, - "main": "./lib/cookie", - "files": [ - "lib" - ], - "scripts": { - "suffixup": "curl -o public_suffix_list.dat https://publicsuffix.org/list/public_suffix_list.dat && ./generate-pubsuffix.js", - "test": "vows test/*_test.js" - }, - "engines": { - "node": ">=0.10.0" - }, - "devDependencies": { - "async": "^1.4.2", - "vows": "^0.8.1" - }, - "gitHead": "f1055655ea56c85bd384aaf7d5b740b916700b6f", - "_id": "tough-cookie@2.2.1", - "_shasum": "3b0516b799e70e8164436a1446e7e5877fda118e", - "_from": "tough-cookie@>=2.2.0 <2.3.0", - "_npmVersion": "2.11.2", - "_nodeVersion": "0.12.5", - "_npmUser": { - "name": "jstash", - "email": "jstash@gmail.com" - }, - "dist": { - "shasum": "3b0516b799e70e8164436a1446e7e5877fda118e", - "tarball": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz" - }, - "maintainers": [ - { - "name": "jstash", - "email": "jeremy@goinstant.com" - }, - { - "name": "goinstant", - "email": "services@goinstant.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/.jshintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/.jshintrc deleted file mode 100644 index 4c1c8d49..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/.jshintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "node": true, - "asi": true, - "laxcomma": true -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d56..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/index.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/index.js deleted file mode 100644 index da516ec4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,241 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, options) { - var self = this - - // Legacy API: addRequest(req, host, port, path) - if (typeof options === 'string') { - options = { - host: options, - port: arguments[2], - path: arguments[3] - }; - } - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: options.host, port: options.port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createConnection({host: options.host, port: options.port, request: req}) -} - -TunnelingAgent.prototype.createConnection = function createConnection(pending) { - var self = this - - self.createSocket(pending, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - pending.request.onSocket(socket) - - function onFree() { - self.emit('free', socket, pending.host, pending.port) - } - - function onCloseOrRemove(err) { - self.removeSocket(socket) - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createConnection(pending) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - self.sockets[self.sockets.indexOf(socket)] = secureSocket - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/package.json deleted file mode 100644 index 25495e05..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com", - "url": "http://www.futurealoof.com" - }, - "name": "tunnel-agent", - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "version": "0.4.1", - "repository": { - "url": "git+https://github.com/mikeal/tunnel-agent.git" - }, - "main": "index.js", - "dependencies": {}, - "devDependencies": {}, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "gitHead": "912a7a6d00e10ec76baf9c9369de280fa5badef3", - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "homepage": "https://github.com/mikeal/tunnel-agent#readme", - "_id": "tunnel-agent@0.4.1", - "scripts": {}, - "_shasum": "bbeecff4d679ce753db9462761a88dfcec3c5ab3", - "_from": "tunnel-agent@>=0.4.1 <0.5.0", - "_npmVersion": "2.11.2", - "_nodeVersion": "0.12.5", - "_npmUser": { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - }, - "dist": { - "shasum": "bbeecff4d679ce753db9462761a88dfcec3c5ab3", - "tarball": "http://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - { - "name": "fredkschott", - "email": "fkschott@gmail.com" - }, - { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/package.json deleted file mode 100644 index 5e89b3ff..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.67.0", - "author": { - "name": "Mikeal Rogers", - "email": "mikeal.rogers@gmail.com" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/request/request.git" - }, - "bugs": { - "url": "http://github.com/request/request/issues" - }, - "license": "Apache-2.0", - "engines": { - "node": ">=0.8.0" - }, - "main": "index.js", - "dependencies": { - "bl": "~1.0.0", - "caseless": "~0.11.0", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~1.0.0-rc3", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "node-uuid": "~1.4.7", - "qs": "~5.2.0", - "tunnel-agent": "~0.4.1", - "tough-cookie": "~2.2.0", - "http-signature": "~1.1.0", - "oauth-sign": "~0.8.0", - "hawk": "~3.1.0", - "aws-sign2": "~0.6.0", - "stringstream": "~0.0.4", - "combined-stream": "~1.0.5", - "isstream": "~0.1.2", - "is-typedarray": "~1.0.0", - "har-validator": "~2.0.2" - }, - "scripts": { - "test": "npm run lint && npm run test-ci && npm run test-browser", - "test-ci": "taper tests/test-*.js", - "test-cov": "istanbul cover tape tests/test-*.js", - "test-browser": "node tests/browser/start.js", - "lint": "eslint lib/ *.js tests/ && echo Lint passed." - }, - "devDependencies": { - "browserify-istanbul": "^0.1.5", - "browserify": "^12.0.1", - "buffer-equal": "^0.0.1", - "codecov.io": "^0.1.6", - "coveralls": "^2.11.4", - "eslint": "1.9.0", - "function-bind": "^1.0.2", - "istanbul": "^0.4.0", - "karma-browserify": "^4.4.0", - "karma": "^0.13.10", - "karma-cli": "^0.1.1", - "karma-coverage": "^0.5.3", - "karma-phantomjs-launcher": "^0.1.4", - "karma-tap": "^1.0.3", - "rimraf": "^2.2.8", - "server-destroy": "^1.0.1", - "tape": "^4.2.0", - "taper": "^0.4.0", - "bluebird": "^3.0.2" - }, - "gitHead": "76f0655befbe8b37fa246bdca1107cbf57798d9a", - "homepage": "https://github.com/request/request#readme", - "_id": "request@2.67.0", - "_shasum": "8af74780e2bf11ea0ae9aa965c11f11afd272742", - "_from": "request@>=2.67.0 <3.0.0", - "_npmVersion": "3.3.12", - "_nodeVersion": "5.0.0", - "_npmUser": { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - }, - "dist": { - "shasum": "8af74780e2bf11ea0ae9aa965c11f11afd272742", - "tarball": "http://registry.npmjs.org/request/-/request-2.67.0.tgz" - }, - "maintainers": [ - { - "name": "mikeal", - "email": "mikeal.rogers@gmail.com" - }, - { - "name": "nylen", - "email": "jnylen@gmail.com" - }, - { - "name": "fredkschott", - "email": "fkschott@gmail.com" - }, - { - "name": "simov", - "email": "simeonvelichkov@gmail.com" - } - ], - "directories": {}, - "_resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/request.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/request.js deleted file mode 100644 index 19c1b92f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/request/request.js +++ /dev/null @@ -1,1395 +0,0 @@ -'use strict' - -var http = require('http') - , https = require('https') - , url = require('url') - , util = require('util') - , stream = require('stream') - , zlib = require('zlib') - , bl = require('bl') - , hawk = require('hawk') - , aws = require('aws-sign2') - , httpSignature = require('http-signature') - , mime = require('mime-types') - , stringstream = require('stringstream') - , caseless = require('caseless') - , ForeverAgent = require('forever-agent') - , FormData = require('form-data') - , isTypedArray = require('is-typedarray').strict - , helpers = require('./lib/helpers') - , cookies = require('./lib/cookies') - , getProxyFromURI = require('./lib/getProxyFromURI') - , Querystring = require('./lib/querystring').Querystring - , Har = require('./lib/har').Har - , Auth = require('./lib/auth').Auth - , OAuth = require('./lib/oauth').OAuth - , Multipart = require('./lib/multipart').Multipart - , Redirect = require('./lib/redirect').Redirect - , Tunnel = require('./lib/tunnel').Tunnel - -var safeStringify = helpers.safeStringify - , isReadStream = helpers.isReadStream - , toBase64 = helpers.toBase64 - , defer = helpers.defer - , copy = helpers.copy - , version = helpers.version - , globalCookieJar = cookies.jar() - - -var globalPool = {} - -function filterForNonReserved(reserved, options) { - // Filter out properties that are not reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var notReserved = (reserved.indexOf(i) === -1) - if (notReserved) { - object[i] = options[i] - } - } - return object -} - -function filterOutReservedFunctions(reserved, options) { - // Filter out properties that are functions and are reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var isReserved = !(reserved.indexOf(i) === -1) - var isFunction = (typeof options[i] === 'function') - if (!(isReserved && isFunction)) { - object[i] = options[i] - } - } - return object - -} - -// Function for properly handling a connection error -function connectionErrorHandler(error) { - var socket = this - if (socket.res) { - if (socket.res.request) { - socket.res.request.emit('error', error) - } else { - socket.res.emit('error', error) - } - } else { - socket._httpMessage.emit('error', error) - } -} - -// Return a simpler request object to allow serialization -function requestToJSON() { - var self = this - return { - uri: self.uri, - method: self.method, - headers: self.headers - } -} - -// Return a simpler response object to allow serialization -function responseToJSON() { - var self = this - return { - statusCode: self.statusCode, - body: self.body, - headers: self.headers, - request: requestToJSON.call(self.request) - } -} - -function Request (options) { - // if given the method property in options, set property explicitMethod to true - - // extend the Request instance with any non-reserved properties - // remove any reserved functions from the options object - // set Request instance to be readable and writable - // call init - - var self = this - - // start with HAR, then override with additional options - if (options.har) { - self._har = new Har(self) - options = self._har.options(options) - } - - stream.Stream.call(self) - var reserved = Object.keys(Request.prototype) - var nonReserved = filterForNonReserved(reserved, options) - - util._extend(self, nonReserved) - options = filterOutReservedFunctions(reserved, options) - - self.readable = true - self.writable = true - if (options.method) { - self.explicitMethod = true - } - self._qs = new Querystring(self) - self._auth = new Auth(self) - self._oauth = new OAuth(self) - self._multipart = new Multipart(self) - self._redirect = new Redirect(self) - self._tunnel = new Tunnel(self) - self.init(options) -} - -util.inherits(Request, stream.Stream) - -// Debugging -Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) -function debug() { - if (Request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} -Request.prototype.debug = debug - -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) { - options = {} - } - self.headers = self.headers ? copy(self.headers) : {} - - // Delete headers with value undefined since they break - // ClientRequest.OutgoingMessage.setHeader in node 0.12 - for (var headerName in self.headers) { - if (typeof self.headers[headerName] === 'undefined') { - delete self.headers[headerName] - } - } - - caseless.httpify(self, self.headers) - - if (!self.method) { - self.method = options.method || 'GET' - } - if (!self.localAddress) { - self.localAddress = options.localAddress - } - - self._qs.init(options) - - debug(options) - if (!self.pool && self.pool !== false) { - self.pool = globalPool - } - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) { - return // Print a warning maybe? - } - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - // People use this property instead all the time, so support it - if (!self.uri && self.url) { - self.uri = self.url - delete self.url - } - - // If there's a baseUrl, then use it as the base URL (i.e. uri must be - // specified as a relative path and is appended to baseUrl). - if (self.baseUrl) { - if (typeof self.baseUrl !== 'string') { - return self.emit('error', new Error('options.baseUrl must be a string')) - } - - if (typeof self.uri !== 'string') { - return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) - } - - if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { - return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) - } - - // Handle all cases to make sure that there's only one slash between - // baseUrl and uri. - var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 - var uriStartsWithSlash = self.uri.indexOf('/') === 0 - - if (baseUrlEndsWithSlash && uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri.slice(1) - } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri - } else if (self.uri === '') { - self.uri = self.baseUrl - } else { - self.uri = self.baseUrl + '/' + self.uri - } - delete self.baseUrl - } - - // A URI is needed by this point, emit error if we haven't been able to get one - if (!self.uri) { - return self.emit('error', new Error('options.uri is a required argument')) - } - - // If a string URI/URL was given, parse it into a URL object - if (typeof self.uri === 'string') { - self.uri = url.parse(self.uri) - } - - // Some URL objects are not from a URL parsed string and need href added - if (!self.uri.href) { - self.uri.href = url.format(self.uri) - } - - // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme - if (self.uri.protocol === 'unix:') { - return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) - } - - // Support Unix Sockets - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { - // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - // This error was fatal - self.abort() - return self.emit('error', new Error(message)) - } - - if (!self.hasOwnProperty('proxy')) { - self.proxy = getProxyFromURI(self.uri) - } - - self.tunnel = self._tunnel.isEnabled() - if (self.proxy) { - self._tunnel.setup(options) - } - - self._redirect.onRequest(options) - - self.setHost = false - if (!self.hasHeader('host')) { - var hostHeaderName = self.originalHostHeaderName || 'host' - self.setHeader(hostHeaderName, self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) { - self.setHeader(hostHeaderName, self.getHeader('host') + (':' + self.uri.port) ) - } - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol === 'http:') {self.uri.port = 80} - else if (self.uri.protocol === 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - if (options.form) { - self.form(options.form) - } - - if (options.formData) { - var formData = options.formData - var requestForm = self.form() - var appendFormValue = function (key, value) { - if (value.hasOwnProperty('value') && value.hasOwnProperty('options')) { - requestForm.append(key, value.value, value.options) - } else { - requestForm.append(key, value) - } - } - for (var formKey in formData) { - if (formData.hasOwnProperty(formKey)) { - var formValue = formData[formKey] - if (formValue instanceof Array) { - for (var j = 0; j < formValue.length; j++) { - appendFormValue(formKey, formValue[j]) - } - } else { - appendFormValue(formKey, formValue) - } - } - } - } - - if (options.qs) { - self.qs(options.qs) - } - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || '') - } - - if (self.path.length === 0) { - self.path = '/' - } - - // Auth must happen last in case signing is dependent on other headers - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { - options.auth.user = options.auth.username - } - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { - options.auth.pass = options.auth.password - } - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately, - options.auth.bearer - ) - } - - if (self.gzip && !self.hasHeader('accept-encoding')) { - self.setHeader('accept-encoding', 'gzip') - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)}) - self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) - } - - if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { - var proxyAuthPieces = self.proxy.auth.split(':').map(function(item) {return self._qs.unescape(item)}) - var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) - self.setHeader('proxy-authorization', authHeader) - } - - if (self.proxy && !self.tunnel) { - self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - } - - if (options.json) { - self.json(options.json) - } - if (options.multipart) { - self.multipart(options.multipart) - } - - if (options.time) { - self.timing = true - self.elapsedTime = self.elapsedTime || 0 - } - - function setContentLength () { - if (isTypedArray(self.body)) { - self.body = new Buffer(self.body) - } - - if (!self.hasHeader('content-length')) { - var length - if (typeof self.body === 'string') { - length = Buffer.byteLength(self.body) - } - else if (Array.isArray(self.body)) { - length = self.body.reduce(function (a, b) {return a + b.length}, 0) - } - else { - length = self.body.length - } - - if (length) { - self.setHeader('content-length', length) - } else { - self.emit('error', new Error('Argument error, options.body.')) - } - } - } - if (self.body) { - setContentLength() - } - - if (options.oauth) { - self.oauth(options.oauth) - } else if (self._oauth.params && self.hasHeader('authorization')) { - self.oauth(self._oauth.params) - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) { - return self.emit('error', new Error('Invalid protocol: ' + protocol)) - } - - if (options.ca) { - self.ca = options.ca - } - - if (!self.agent) { - if (options.agentOptions) { - self.agentOptions = options.agentOptions - } - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - var v = version() - // use ForeverAgent in node 0.10- only - if (v.major === 0 && v.minor <= 10) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - self.agentOptions = self.agentOptions || {} - self.agentOptions.keepAlive = true - } - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getNewAgent() - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) { - self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) - } - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', mime.lookup(src.path)) - } - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') - // }) - }) - - defer(function () { - if (self._aborted) { - return - } - - var end = function () { - if (self._form) { - if (!self._auth.hasAuth) { - self._form.pipe(self) - } - else if (self._auth.hasAuth && self._auth.sentAuth) { - self._form.pipe(self) - } - } - if (self._multipart && self._multipart.chunked) { - self._multipart.body.pipe(self) - } - if (self.body) { - setContentLength() - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self._auth.hasAuth && !self._auth.sentAuth) { - self.end() - return - } - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - } - - if (self._form && !self.hasHeader('content-length')) { - // Before ending the request, we had to compute the length of the whole form, asyncly - self.setHeader(self._form.getHeaders(), true) - self._form.getLength(function (err, length) { - if (!err) { - self.setHeader('content-length', length) - } - end() - }) - } else { - end() - } - - self.ntick = true - }) - -} - -Request.prototype.getNewAgent = function () { - var self = this - var Agent = self.agentClass - var options = {} - if (self.agentOptions) { - for (var i in self.agentOptions) { - options[i] = self.agentOptions[i] - } - } - if (self.ca) { - options.ca = self.ca - } - if (self.ciphers) { - options.ciphers = self.ciphers - } - if (self.secureProtocol) { - options.secureProtocol = self.secureProtocol - } - if (self.secureOptions) { - options.secureOptions = self.secureOptions - } - if (typeof self.rejectUnauthorized !== 'undefined') { - options.rejectUnauthorized = self.rejectUnauthorized - } - - if (self.cert && self.key) { - options.key = self.key - options.cert = self.cert - } - - if (self.pfx) { - options.pfx = self.pfx - } - - if (self.passphrase) { - options.passphrase = self.passphrase - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== self.httpModule.Agent) { - poolKey += Agent.name - } - - // ca option is only relevant if proxy or destination are https - var proxy = self.proxy - if (typeof proxy === 'string') { - proxy = url.parse(proxy) - } - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - - if (isHttps) { - if (options.ca) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) { - poolKey += ':' - } - poolKey += options.rejectUnauthorized - } - - if (options.cert) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - } - - if (options.pfx) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.pfx.toString('ascii') - } - - if (options.ciphers) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureProtocol - } - - if (options.secureOptions) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureOptions - } - } - - if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return self.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = self.uri.protocol + poolKey - - // generate a new agent for this setting if none yet exists - if (!self.pool[poolKey]) { - self.pool[poolKey] = new Agent(options) - // properly set maxSockets on new agents - if (self.pool.maxSockets) { - self.pool[poolKey].maxSockets = self.pool.maxSockets - } - } - - return self.pool[poolKey] -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) { - return - } - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - - self.req = self.httpModule.request(reqOptions) - - if (self.timing) { - self.startTime = new Date().getTime() - } - - if (self.timeout && !self.timeoutTimer) { - var timeout = self.timeout < 0 ? 0 : self.timeout - // Set a timeout in memory - this block will throw if the server takes more - // than `timeout` to write the HTTP status and headers (corresponding to - // the on('response') event on the client). NB: this measures wall-clock - // time, not the time between bytes sent by the server. - self.timeoutTimer = setTimeout(function () { - var connectTimeout = self.req.socket && self.req.socket.readable === false - self.abort() - var e = new Error('ETIMEDOUT') - e.code = 'ETIMEDOUT' - e.connect = connectTimeout - self.emit('error', e) - }, timeout) - - if (self.req.setTimeout) { // only works on node 0.6+ - // Set an additional timeout on the socket, via the `setsockopt` syscall. - // This timeout sets the amount of time to wait *between* bytes sent - // from the server, and may or may not correspond to the wall-clock time - // elapsed from the start of the request. - // - // In particular, it's useful for erroring if the server fails to send - // data halfway through streaming a response. - self.req.setTimeout(timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error('ESOCKETTIMEDOUT') - e.code = 'ESOCKETTIMEDOUT' - e.connect = false - self.emit('error', e) - } - }) - } - } - - self.req.on('response', self.onRequestResponse.bind(self)) - self.req.on('error', self.onRequestError.bind(self)) - self.req.on('drain', function() { - self.emit('drain') - }) - self.req.on('socket', function(socket) { - self.emit('socket', socket) - }) - - self.on('end', function() { - if ( self.req.connection ) { - self.req.connection.removeListener('error', connectionErrorHandler) - } - }) - self.emit('request', self.req) -} - -Request.prototype.onRequestError = function (error) { - var self = this - if (self._aborted) { - return - } - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) -} - -Request.prototype.onRequestResponse = function (response) { - var self = this - debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - if (self.timing) { - self.elapsedTime += (new Date().getTime() - self.startTime) - debug('elapsed time', self.elapsedTime) - response.elapsedTime = self.elapsedTime - } - debug('response end', self.uri.href, response.statusCode, response.headers) - }) - - // The check on response.connection is a workaround for browserify. - if (response.connection && response.connection.listeners('error').indexOf(connectionErrorHandler) === -1) { - response.connection.setMaxListeners(0) - response.connection.once('error', connectionErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - - self.response = response - response.request = self - response.toJSON = responseToJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && (!response.hasOwnProperty('socket') || - !response.socket.authorized)) { - debug('strict ssl error', self.uri.href) - var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' - self.emit('error', new Error('SSL Error: ' + sslErr)) - return - } - - // Save the original host before any redirect (if it changes, we need to - // remove any authorization headers). Also remember the case of the header - // name because lots of broken servers expect Host instead of host and we - // want the caller to be able to specify this. - self.originalHost = self.getHeader('host') - if (!self.originalHostHeaderName) { - self.originalHostHeaderName = self.hasHeader('host') - } - if (self.setHost) { - self.removeHeader('host') - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar - var addCookie = function (cookie) { - //set the cookie if it's domain in the href's domain. - try { - targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) - } catch (e) { - self.emit('error', e) - } - } - - response.caseless = caseless(response.headers) - - if (response.caseless.has('set-cookie') && (!self._disableCookies)) { - var headerName = response.caseless.has('set-cookie') - if (Array.isArray(response.headers[headerName])) { - response.headers[headerName].forEach(addCookie) - } else { - addCookie(response.headers[headerName]) - } - } - - if (self._redirect.onResponse(response)) { - return // Ignore the rest of the response - } else { - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) { - self.response.emit('end') - } - }) - - response.on('end', function () { - self._ended = true - }) - - var responseContent - if (self.gzip) { - var contentEncoding = response.headers['content-encoding'] || 'identity' - contentEncoding = contentEncoding.trim().toLowerCase() - - if (contentEncoding === 'gzip') { - responseContent = zlib.createGunzip() - response.pipe(responseContent) - } else { - // Since previous versions didn't check for Content-Encoding header, - // ignore any invalid values to preserve backwards-compatibility - if (contentEncoding !== 'identity') { - debug('ignoring unrecognized Content-Encoding ' + contentEncoding) - } - responseContent = response - } - } else { - responseContent = response - } - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') - } else if (responseContent.setEncoding) { - responseContent.setEncoding(self.encoding) - } else { - // Should only occur on node pre-v0.9.4 (joyent/node@9b5abe5) with - // zlib streams. - // If/When support for 0.9.4 is dropped, this should be unnecessary. - responseContent = responseContent.pipe(stringstream(self.encoding)) - } - } - - if (self._paused) { - responseContent.pause() - } - - self.responseContent = responseContent - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - responseContent.on('data', function (chunk) { - self._destdata = true - self.emit('data', chunk) - }) - responseContent.on('end', function (chunk) { - self.emit('end', chunk) - }) - responseContent.on('error', function (error) { - self.emit('error', error) - }) - responseContent.on('close', function () {self.emit('close')}) - - if (self.callback) { - self.readResponseBody(response) - } - //if no callback - else { - self.on('end', function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response) - }) - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.readResponseBody = function (response) { - var self = this - debug('reading response\'s body') - var buffer = bl() - , strings = [] - - self.on('data', function (chunk) { - if (Buffer.isBuffer(chunk)) { - buffer.append(chunk) - } else { - strings.push(chunk) - } - }) - self.on('end', function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length) { - debug('has body', self.uri.href, buffer.length) - if (self.encoding === null) { - // response.body = buffer - // can't move to this until https://github.com/rvagg/bl/issues/13 - response.body = buffer.slice() - } else { - response.body = buffer.toString(self.encoding) - } - } else if (strings.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { - strings[0] = strings[0].substring(1) - } - response.body = strings.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body, self._jsonReviver) - } catch (e) { - debug('invalid JSON received', self.uri.href) - } - } - debug('emitting complete', self.uri.href) - if (typeof response.body === 'undefined' && !self._json) { - response.body = self.encoding === null ? new Buffer(0) : '' - } - self.emit('complete', response, response.body) - }) -} - -Request.prototype.abort = function () { - var self = this - self._aborted = true - - if (self.req) { - self.req.abort() - } - else if (self.response) { - self.response.abort() - } - - self.emit('abort') -} - -Request.prototype.pipeDest = function (dest) { - var self = this - var response = self.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (response.caseless.has('content-type')) { - var ctname = response.caseless.has('content-type') - if (dest.setHeader) { - dest.setHeader(ctname, response.headers[ctname]) - } - else { - dest.headers[ctname] = response.headers[ctname] - } - } - - if (response.caseless.has('content-length')) { - var clname = response.caseless.has('content-length') - if (dest.setHeader) { - dest.setHeader(clname, response.headers[clname]) - } else { - dest.headers[clname] = response.headers[clname] - } - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - // If the response content is being decoded, the Content-Encoding header - // of the response doesn't represent the piped content, so don't pass it. - if (!self.gzip || i !== 'content-encoding') { - dest.setHeader(i, response.headers[i]) - } - } - dest.statusCode = response.statusCode - } - if (self.pipefilter) { - self.pipefilter(response, dest) - } -} - -Request.prototype.qs = function (q, clobber) { - var self = this - var base - if (!clobber && self.uri.query) { - base = self._qs.parse(self.uri.query) - } else { - base = {} - } - - for (var i in q) { - base[i] = q[i] - } - - var qs = self._qs.stringify(base) - - if (qs === '') { - return self - } - - self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) - self.url = self.uri - self.path = self.uri.path - - if (self.uri.host === 'unix') { - self.enableUnixSocket() - } - - return self -} -Request.prototype.form = function (form) { - var self = this - if (form) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.setHeader('content-type', 'application/x-www-form-urlencoded') - } - self.body = (typeof form === 'string') - ? self._qs.rfc3986(form.toString('utf8')) - : self._qs.stringify(form).toString('utf8') - return self - } - // create form-data object - self._form = new FormData() - self._form.on('error', function(err) { - err.message = 'form-data: ' + err.message - self.emit('error', err) - self.abort() - }) - return self._form -} -Request.prototype.multipart = function (multipart) { - var self = this - - self._multipart.onRequest(multipart) - - if (!self._multipart.chunked) { - self.body = self._multipart.body - } - - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) { - self.setHeader('accept', 'application/json') - } - - self._json = true - if (typeof val === 'boolean') { - if (self.body !== undefined) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.body = safeStringify(self.body) - } else { - self.body = self._qs.rfc3986(self.body) - } - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - } else { - self.body = safeStringify(val) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - - if (typeof self.jsonReviver === 'function') { - self._jsonReviver = self.jsonReviver - } - - return self -} -Request.prototype.getHeader = function (name, headers) { - var self = this - var result, re, match - if (!headers) { - headers = self.headers - } - Object.keys(headers).forEach(function (key) { - if (key.length !== name.length) { - return - } - re = new RegExp(name, 'i') - match = key.match(re) - if (match) { - result = headers[key] - } - }) - return result -} -Request.prototype.enableUnixSocket = function () { - // Get the socket & request paths from the URL - var unixParts = this.uri.path.split(':') - , host = unixParts[0] - , path = unixParts[1] - // Apply unix properties to request - this.socketPath = host - this.uri.pathname = path - this.uri.path = path - this.uri.host = host - this.uri.hostname = host - this.uri.isUnix = true -} - - -Request.prototype.auth = function (user, pass, sendImmediately, bearer) { - var self = this - - self._auth.onRequest(user, pass, sendImmediately, bearer) - - return self -} -Request.prototype.aws = function (opts, now) { - var self = this - - if (!now) { - self._aws = opts - return self - } - var date = new Date() - self.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: self.method.toUpperCase() - , date: date - , contentType: self.getHeader('content-type') || '' - , md5: self.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(self.headers) - } - var path = self.uri.path - if (opts.bucket && path) { - auth.resource = '/' + opts.bucket + path - } else if (opts.bucket && !path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && path) { - auth.resource = path - } else if (!opts.bucket && !path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - self.setHeader('authorization', aws.authorization(auth)) - - return self -} -Request.prototype.httpSignature = function (opts) { - var self = this - httpSignature.signRequest({ - getHeader: function(header) { - return self.getHeader(header, self.headers) - }, - setHeader: function(header, value) { - self.setHeader(header, value) - }, - method: self.method, - path: self.path - }, opts) - debug('httpSignature authorization', self.getHeader('authorization')) - - return self -} -Request.prototype.hawk = function (opts) { - var self = this - self.setHeader('Authorization', hawk.client.header(self.uri, self.method, opts).field) -} -Request.prototype.oauth = function (_oauth) { - var self = this - - self._oauth.onRequest(_oauth) - - return self -} - -Request.prototype.jar = function (jar) { - var self = this - var cookies - - if (self._redirect.redirectsFollowed === 0) { - self.originalCookieHeader = self.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - self._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar - var urihref = self.uri.href - //fetch cookie in the Specified host - if (targetCookieJar) { - cookies = targetCookieJar.getCookieString(urihref) - } - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (self.originalCookieHeader) { - // Don't overwrite existing Cookie header - self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) - } else { - self.setHeader('cookie', cookies) - } - } - self._jar = jar - return self -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - var self = this - - if (self.response) { - if (self._destdata) { - self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) - } else if (self._ended) { - self.emit('error', new Error('You cannot pipe after the response has been ended.')) - } else { - stream.Stream.prototype.pipe.call(self, dest, opts) - self.pipeDest(dest) - return dest - } - } else { - self.dests.push(dest) - stream.Stream.prototype.pipe.call(self, dest, opts) - return dest - } -} -Request.prototype.write = function () { - var self = this - if (self._aborted) {return} - - if (!self._started) { - self.start() - } - return self.req.write.apply(self.req, arguments) -} -Request.prototype.end = function (chunk) { - var self = this - if (self._aborted) {return} - - if (chunk) { - self.write(chunk) - } - if (!self._started) { - self.start() - } - self.req.end() -} -Request.prototype.pause = function () { - var self = this - if (!self.responseContent) { - self._paused = true - } else { - self.responseContent.pause.apply(self.responseContent, arguments) - } -} -Request.prototype.resume = function () { - var self = this - if (!self.responseContent) { - self._paused = false - } else { - self.responseContent.resume.apply(self.responseContent, arguments) - } -} -Request.prototype.destroy = function () { - var self = this - if (!self._ended) { - self.end() - } else if (self.response) { - self.response.destroy() - } -} - -Request.defaultProxyHeaderWhiteList = - Tunnel.defaultProxyHeaderWhiteList.slice() - -Request.defaultProxyHeaderExclusiveList = - Tunnel.defaultProxyHeaderExclusiveList.slice() - -// Exports - -Request.prototype.toJSON = requestToJSON -module.exports = Request diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.documentup.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.documentup.json deleted file mode 100644 index 57fe3011..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.documentup.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ShellJS", - "twitter": [ - "r2r" - ] -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.jshintrc b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.jshintrc deleted file mode 100644 index a80c559a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.jshintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "loopfunc": true, - "sub": true, - "undef": true, - "unused": true, - "node": true -} \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.npmignore b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.npmignore deleted file mode 100644 index 6b20c38a..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -tmp/ \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.travis.yml b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.travis.yml deleted file mode 100644 index 1b3280a5..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.11" - - "0.12" - diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/LICENSE b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/LICENSE deleted file mode 100644 index 1b35ee9f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2012, Artur Adib -All rights reserved. - -You may use this project under the terms of the New BSD license as follows: - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Artur Adib nor the - names of the contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/README.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/README.md deleted file mode 100644 index d08d13e8..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/README.md +++ /dev/null @@ -1,579 +0,0 @@ -# ShellJS - Unix shell commands for Node.js [![Build Status](https://secure.travis-ci.org/arturadib/shelljs.png)](http://travis-ci.org/arturadib/shelljs) - -ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands. You can also install it globally so you can run it from outside Node projects - say goodbye to those gnarly Bash scripts! - -The project is [unit-tested](http://travis-ci.org/arturadib/shelljs) and battled-tested in projects like: - -+ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader -+ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger -+ [JSHint](http://jshint.com) - Most popular JavaScript linter -+ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers -+ [Yeoman](http://yeoman.io/) - Web application stack and development tool -+ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation - -and [many more](https://npmjs.org/browse/depended/shelljs). - -Connect with [@r2r](http://twitter.com/r2r) on Twitter for questions, suggestions, etc. - -## Installing - -Via npm: - -```bash -$ npm install [-g] shelljs -``` - -If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to -run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder: - -```bash -$ shjs my_script -``` - -You can also just copy `shell.js` into your project's directory, and `require()` accordingly. - - -## Examples - -### JavaScript - -```javascript -require('shelljs/global'); - -if (!which('git')) { - echo('Sorry, this script requires git'); - exit(1); -} - -// Copy files to release dir -mkdir('-p', 'out/Release'); -cp('-R', 'stuff/*', 'out/Release'); - -// Replace macros in each .js file -cd('lib'); -ls('*.js').forEach(function(file) { - sed('-i', 'BUILD_VERSION', 'v0.1.2', file); - sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file); - sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); -}); -cd('..'); - -// Run external tool synchronously -if (exec('git commit -am "Auto-commit"').code !== 0) { - echo('Error: Git commit failed'); - exit(1); -} -``` - -### CoffeeScript - -```coffeescript -require 'shelljs/global' - -if not which 'git' - echo 'Sorry, this script requires git' - exit 1 - -# Copy files to release dir -mkdir '-p', 'out/Release' -cp '-R', 'stuff/*', 'out/Release' - -# Replace macros in each .js file -cd 'lib' -for file in ls '*.js' - sed '-i', 'BUILD_VERSION', 'v0.1.2', file - sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file - sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file -cd '..' - -# Run external tool synchronously -if (exec 'git commit -am "Auto-commit"').code != 0 - echo 'Error: Git commit failed' - exit 1 -``` - -## Global vs. Local - -The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`. - -Example: - -```javascript -var shell = require('shelljs'); -shell.echo('hello world'); -``` - -## Make tool - -A convenience script `shelljs/make` is also provided to mimic the behavior of a Unix Makefile. In this case all shell objects are global, and command line arguments will cause the script to execute only the corresponding function in the global `target` object. To avoid redundant calls, target functions are executed only once per script. - -Example (CoffeeScript): - -```coffeescript -require 'shelljs/make' - -target.all = -> - target.bundle() - target.docs() - -target.bundle = -> - cd __dirname - mkdir 'build' - cd 'lib' - (cat '*.js').to '../build/output.js' - -target.docs = -> - cd __dirname - mkdir 'docs' - cd 'lib' - for file in ls '*.js' - text = grep '//@', file # extract special comments - text.replace '//@', '' # remove comment tags - text.to 'docs/my_docs.md' -``` - -To run the target `all`, call the above script without arguments: `$ node make`. To run the target `docs`: `$ node make docs`. - -You can also pass arguments to your targets by using the `--` separator. For example, to pass `arg1` and `arg2` to a target `bundle`, do `$ node make bundle -- arg1 arg2`: - -```javascript -require('shelljs/make'); - -target.bundle = function(argsArray) { - // argsArray = ['arg1', 'arg2'] - /* ... */ -} -``` - - - - - -## Command reference - - -All commands run synchronously, unless otherwise stated. - - -### cd('dir') -Changes to directory `dir` for the duration of the script - - -### pwd() -Returns the current directory. - - -### ls([options ,] path [,path ...]) -### ls([options ,] path_array) -Available options: - -+ `-R`: recursive -+ `-A`: all files (include files beginning with `.`, except for `.` and `..`) - -Examples: - -```javascript -ls('projs/*.js'); -ls('-R', '/users/me', '/tmp'); -ls('-R', ['/users/me', '/tmp']); // same as above -``` - -Returns array of files in the given path, or in current directory if no path provided. - - -### find(path [,path ...]) -### find(path_array) -Examples: - -```javascript -find('src', 'lib'); -find(['src', 'lib']); // same as above -find('.').filter(function(file) { return file.match(/\.js$/); }); -``` - -Returns array of all files (however deep) in the given paths. - -The main difference from `ls('-R', path)` is that the resulting file names -include the base directories, e.g. `lib/resources/file1` instead of just `file1`. - - -### cp([options ,] source [,source ...], dest) -### cp([options ,] source_array, dest) -Available options: - -+ `-f`: force -+ `-r, -R`: recursive - -Examples: - -```javascript -cp('file1', 'dir1'); -cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); -cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above -``` - -Copies files. The wildcard `*` is accepted. - - -### rm([options ,] file [, file ...]) -### rm([options ,] file_array) -Available options: - -+ `-f`: force -+ `-r, -R`: recursive - -Examples: - -```javascript -rm('-rf', '/tmp/*'); -rm('some_file.txt', 'another_file.txt'); -rm(['some_file.txt', 'another_file.txt']); // same as above -``` - -Removes files. The wildcard `*` is accepted. - - -### mv(source [, source ...], dest') -### mv(source_array, dest') -Available options: - -+ `f`: force - -Examples: - -```javascript -mv('-f', 'file', 'dir/'); -mv('file1', 'file2', 'dir/'); -mv(['file1', 'file2'], 'dir/'); // same as above -``` - -Moves files. The wildcard `*` is accepted. - - -### mkdir([options ,] dir [, dir ...]) -### mkdir([options ,] dir_array) -Available options: - -+ `p`: full path (will create intermediate dirs if necessary) - -Examples: - -```javascript -mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); -mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above -``` - -Creates directories. - - -### test(expression) -Available expression primaries: - -+ `'-b', 'path'`: true if path is a block device -+ `'-c', 'path'`: true if path is a character device -+ `'-d', 'path'`: true if path is a directory -+ `'-e', 'path'`: true if path exists -+ `'-f', 'path'`: true if path is a regular file -+ `'-L', 'path'`: true if path is a symbolic link -+ `'-p', 'path'`: true if path is a pipe (FIFO) -+ `'-S', 'path'`: true if path is a socket - -Examples: - -```javascript -if (test('-d', path)) { /* do something with dir */ }; -if (!test('-f', path)) continue; // skip if it's a regular file -``` - -Evaluates expression using the available primaries and returns corresponding value. - - -### cat(file [, file ...]) -### cat(file_array) - -Examples: - -```javascript -var str = cat('file*.txt'); -var str = cat('file1', 'file2'); -var str = cat(['file1', 'file2']); // same as above -``` - -Returns a string containing the given file, or a concatenated string -containing the files if more than one file is given (a new line character is -introduced between each file). Wildcard `*` accepted. - - -### 'string'.to(file) - -Examples: - -```javascript -cat('input.txt').to('output.txt'); -``` - -Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as -those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ - - -### 'string'.toEnd(file) - -Examples: - -```javascript -cat('input.txt').toEnd('output.txt'); -``` - -Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as -those returned by `cat`, `grep`, etc). - - -### sed([options ,] search_regex, replacement, file) -Available options: - -+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ - -Examples: - -```javascript -sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); -sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); -``` - -Reads an input string from `file` and performs a JavaScript `replace()` on the input -using the given search regex and replacement string or function. Returns the new string after replacement. - - -### grep([options ,] regex_filter, file [, file ...]) -### grep([options ,] regex_filter, file_array) -Available options: - -+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria. - -Examples: - -```javascript -grep('-v', 'GLOBAL_VARIABLE', '*.js'); -grep('GLOBAL_VARIABLE', '*.js'); -``` - -Reads input string from given files and returns a string containing all lines of the -file that match the given `regex_filter`. Wildcard `*` accepted. - - -### which(command) - -Examples: - -```javascript -var nodeExec = which('node'); -``` - -Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. -Returns string containing the absolute path to the command. - - -### echo(string [,string ...]) - -Examples: - -```javascript -echo('hello world'); -var str = echo('hello world'); -``` - -Prints string to stdout, and returns string with additional utility methods -like `.to()`. - - -### pushd([options,] [dir | '-N' | '+N']) - -Available options: - -+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. - -Arguments: - -+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. -+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. - -Examples: - -```javascript -// process.cwd() === '/usr' -pushd('/etc'); // Returns /etc /usr -pushd('+1'); // Returns /usr /etc -``` - -Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. - -### popd([options,] ['-N' | '+N']) - -Available options: - -+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. - -Arguments: - -+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. -+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. - -Examples: - -```javascript -echo(process.cwd()); // '/usr' -pushd('/etc'); // '/etc /usr' -echo(process.cwd()); // '/etc' -popd(); // '/usr' -echo(process.cwd()); // '/usr' -``` - -When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. - -### dirs([options | '+N' | '-N']) - -Available options: - -+ `-c`: Clears the directory stack by deleting all of the elements. - -Arguments: - -+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. -+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. - -Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. - -See also: pushd, popd - - -### ln(options, source, dest) -### ln(source, dest) -Available options: - -+ `s`: symlink -+ `f`: force - -Examples: - -```javascript -ln('file', 'newlink'); -ln('-sf', 'file', 'existing'); -``` - -Links source to dest. Use -f to force the link, should dest already exist. - - -### exit(code) -Exits the current process with the given exit code. - -### env['VAR_NAME'] -Object containing environment variables (both getter and setter). Shortcut to process.env. - -### exec(command [, options] [, callback]) -Available options (all `false` by default): - -+ `async`: Asynchronous execution. Defaults to true if a callback is provided. -+ `silent`: Do not echo program output to console. - -Examples: - -```javascript -var version = exec('node --version', {silent:true}).output; - -var child = exec('some_long_running_process', {async:true}); -child.stdout.on('data', function(data) { - /* ... do something with data ... */ -}); - -exec('some_long_running_process', function(code, output) { - console.log('Exit code:', code); - console.log('Program output:', output); -}); -``` - -Executes the given `command` _synchronously_, unless otherwise specified. -When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's -`output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and -the `callback` gets the arguments `(code, output)`. - -**Note:** For long-lived processes, it's best to run `exec()` asynchronously as -the current synchronous implementation uses a lot of CPU. This should be getting -fixed soon. - - -### chmod(octal_mode || octal_string, file) -### chmod(symbolic_mode, file) - -Available options: - -+ `-v`: output a diagnostic for every file processed -+ `-c`: like verbose but report only when a change is made -+ `-R`: change files and directories recursively - -Examples: - -```javascript -chmod(755, '/Users/brandon'); -chmod('755', '/Users/brandon'); // same as above -chmod('u+x', '/Users/brandon'); -``` - -Alters the permissions of a file or directory by either specifying the -absolute permissions in octal form or expressing the changes in symbols. -This command tries to mimic the POSIX behavior as much as possible. -Notable exceptions: - -+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is - given to the umask. -+ There is no "quiet" option since default behavior is to run silent. - - -## Non-Unix commands - - -### tempdir() - -Examples: - -```javascript -var tmp = tempdir(); // "/tmp" for most *nix platforms -``` - -Searches and returns string containing a writeable, platform-dependent temporary directory. -Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). - - -### error() -Tests if error occurred in the last command. Returns `null` if no error occurred, -otherwise returns string explaining the error - - -## Configuration - - -### config.silent -Example: - -```javascript -var sh = require('shelljs'); -var silentState = sh.config.silent; // save old silent state -sh.config.silent = true; -/* ... */ -sh.config.silent = silentState; // restore old silent state -``` - -Suppresses all command output if `true`, except for `echo()` calls. -Default is `false`. - -### config.fatal -Example: - -```javascript -require('shelljs/global'); -config.fatal = true; -cp('this_file_does_not_exist', '/dev/null'); // dies here -/* more commands... */ -``` - -If `true` the script will die on errors. Default is `false`. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/RELEASE.md b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/RELEASE.md deleted file mode 100644 index 69ef3fbb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/RELEASE.md +++ /dev/null @@ -1,9 +0,0 @@ -# Release steps - -* Ensure master passes CI tests -* Bump version in package.json. Any breaking change or new feature should bump minor (or even major). Non-breaking changes or fixes can just bump patch. -* Update README manually if the changes are not documented in-code. If so, run `scripts/generate-docs.js` -* Commit -* `$ git tag ` (see `git tag -l` for latest) -* `$ git push origin master --tags` -* `$ npm publish .` diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/bin/shjs b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/bin/shjs deleted file mode 100755 index d239a7ad..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/bin/shjs +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -if (process.argv.length < 3) { - console.log('ShellJS: missing argument (script name)'); - console.log(); - process.exit(1); -} - -var args, - scriptName = process.argv[2]; -env['NODE_PATH'] = __dirname + '/../..'; - -if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) { - if (test('-f', scriptName + '.js')) - scriptName += '.js'; - if (test('-f', scriptName + '.coffee')) - scriptName += '.coffee'; -} - -if (!test('-f', scriptName)) { - console.log('ShellJS: script not found ('+scriptName+')'); - console.log(); - process.exit(1); -} - -args = process.argv.slice(3); - -for (var i = 0, l = args.length; i < l; i++) { - if (args[i][0] !== "-"){ - args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words - } -} - -if (scriptName.match(/\.coffee$/)) { - // - // CoffeeScript - // - if (which('coffee')) { - exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true }); - } else { - console.log('ShellJS: CoffeeScript interpreter not found'); - console.log(); - process.exit(1); - } -} else { - // - // JavaScript - // - exec('node ' + scriptName + ' ' + args.join(' '), { async: true }); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/global.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/global.js deleted file mode 100644 index 97f0033c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/global.js +++ /dev/null @@ -1,3 +0,0 @@ -var shell = require('./shell.js'); -for (var cmd in shell) - global[cmd] = shell[cmd]; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/make.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/make.js deleted file mode 100644 index f78b4cfd..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/make.js +++ /dev/null @@ -1,56 +0,0 @@ -require('./global'); - -global.config.fatal = true; -global.target = {}; - -var args = process.argv.slice(2), - targetArgs, - dashesLoc = args.indexOf('--'); - -// split args, everything after -- if only for targets -if (dashesLoc > -1) { - targetArgs = args.slice(dashesLoc + 1, args.length); - args = args.slice(0, dashesLoc); -} - -// This ensures we only execute the script targets after the entire script has -// been evaluated -setTimeout(function() { - var t; - - if (args.length === 1 && args[0] === '--help') { - console.log('Available targets:'); - for (t in global.target) - console.log(' ' + t); - return; - } - - // Wrap targets to prevent duplicate execution - for (t in global.target) { - (function(t, oldTarget){ - - // Wrap it - global.target[t] = function() { - if (oldTarget.done) - return; - oldTarget.done = true; - return oldTarget.apply(oldTarget, arguments); - }; - - })(t, global.target[t]); - } - - // Execute desired targets - if (args.length > 0) { - args.forEach(function(arg) { - if (arg in global.target) - global.target[arg](targetArgs); - else { - console.log('no such target: ' + arg); - } - }); - } else if ('all' in global.target) { - global.target.all(targetArgs); - } - -}, 0); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/package.json deleted file mode 100644 index 5aaead4c..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "shelljs", - "version": "0.5.3", - "author": { - "name": "Artur Adib", - "email": "arturadib@gmail.com" - }, - "description": "Portable Unix shell commands for Node.js", - "keywords": [ - "unix", - "shell", - "makefile", - "make", - "jake", - "synchronous" - ], - "repository": { - "type": "git", - "url": "git://github.com/arturadib/shelljs.git" - }, - "license": "BSD*", - "homepage": "http://github.com/arturadib/shelljs", - "main": "./shell.js", - "scripts": { - "test": "node scripts/run-tests" - }, - "bin": { - "shjs": "./bin/shjs" - }, - "dependencies": {}, - "devDependencies": { - "jshint": "~2.1.11" - }, - "optionalDependencies": {}, - "engines": { - "node": ">=0.8.0" - }, - "gitHead": "22d0975040b9b8234755dc6e692d6869436e8485", - "bugs": { - "url": "https://github.com/arturadib/shelljs/issues" - }, - "_id": "shelljs@0.5.3", - "_shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113", - "_from": "shelljs@*", - "_npmVersion": "2.5.1", - "_nodeVersion": "1.2.0", - "_npmUser": { - "name": "artur", - "email": "arturadib@gmail.com" - }, - "maintainers": [ - { - "name": "artur", - "email": "arturadib@gmail.com" - } - ], - "dist": { - "shasum": "c54982b996c76ef0c1e6b59fbdc5825f5b713113", - "tarball": "http://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/generate-docs.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/generate-docs.js deleted file mode 100755 index 532fed9f..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/generate-docs.js +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -echo('Appending docs to README.md'); - -cd(__dirname + '/..'); - -// Extract docs from shell.js -var docs = grep('//@', 'shell.js'); - -docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) { - var file = path.match('.js$') ? path : path+'.js'; - return grep('//@', file); -}); - -// Remove '//@' -docs = docs.replace(/\/\/\@ ?/g, ''); -// Append docs to README -sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md'); - -echo('All done.'); diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/run-tests.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/run-tests.js deleted file mode 100755 index f9d31e06..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/scripts/run-tests.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node -require('../global'); - -var path = require('path'); - -var failed = false; - -// -// Lint -// -JSHINT_BIN = './node_modules/jshint/bin/jshint'; -cd(__dirname + '/..'); - -if (!test('-f', JSHINT_BIN)) { - echo('JSHint not found. Run `npm install` in the root dir first.'); - exit(1); -} - -if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) { - failed = true; - echo('*** JSHINT FAILED! (return code != 0)'); - echo(); -} else { - echo('All JSHint tests passed'); - echo(); -} - -// -// Unit tests -// -cd(__dirname + '/../test'); -ls('*.js').forEach(function(file) { - echo('Running test:', file); - if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit) - failed = true; - echo('*** TEST FAILED! (missing exit code "123")'); - echo(); - } -}); - -if (failed) { - echo(); - echo('*******************************************************'); - echo('WARNING: Some tests did not pass!'); - echo('*******************************************************'); - exit(1); -} else { - echo(); - echo('All tests passed.'); -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/shell.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/shell.js deleted file mode 100644 index bdeb5597..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/shell.js +++ /dev/null @@ -1,159 +0,0 @@ -// -// ShellJS -// Unix shell commands on top of Node's API -// -// Copyright (c) 2012 Artur Adib -// http://github.com/arturadib/shelljs -// - -var common = require('./src/common'); - - -//@ -//@ All commands run synchronously, unless otherwise stated. -//@ - -//@include ./src/cd -var _cd = require('./src/cd'); -exports.cd = common.wrap('cd', _cd); - -//@include ./src/pwd -var _pwd = require('./src/pwd'); -exports.pwd = common.wrap('pwd', _pwd); - -//@include ./src/ls -var _ls = require('./src/ls'); -exports.ls = common.wrap('ls', _ls); - -//@include ./src/find -var _find = require('./src/find'); -exports.find = common.wrap('find', _find); - -//@include ./src/cp -var _cp = require('./src/cp'); -exports.cp = common.wrap('cp', _cp); - -//@include ./src/rm -var _rm = require('./src/rm'); -exports.rm = common.wrap('rm', _rm); - -//@include ./src/mv -var _mv = require('./src/mv'); -exports.mv = common.wrap('mv', _mv); - -//@include ./src/mkdir -var _mkdir = require('./src/mkdir'); -exports.mkdir = common.wrap('mkdir', _mkdir); - -//@include ./src/test -var _test = require('./src/test'); -exports.test = common.wrap('test', _test); - -//@include ./src/cat -var _cat = require('./src/cat'); -exports.cat = common.wrap('cat', _cat); - -//@include ./src/to -var _to = require('./src/to'); -String.prototype.to = common.wrap('to', _to); - -//@include ./src/toEnd -var _toEnd = require('./src/toEnd'); -String.prototype.toEnd = common.wrap('toEnd', _toEnd); - -//@include ./src/sed -var _sed = require('./src/sed'); -exports.sed = common.wrap('sed', _sed); - -//@include ./src/grep -var _grep = require('./src/grep'); -exports.grep = common.wrap('grep', _grep); - -//@include ./src/which -var _which = require('./src/which'); -exports.which = common.wrap('which', _which); - -//@include ./src/echo -var _echo = require('./src/echo'); -exports.echo = _echo; // don't common.wrap() as it could parse '-options' - -//@include ./src/dirs -var _dirs = require('./src/dirs').dirs; -exports.dirs = common.wrap("dirs", _dirs); -var _pushd = require('./src/dirs').pushd; -exports.pushd = common.wrap('pushd', _pushd); -var _popd = require('./src/dirs').popd; -exports.popd = common.wrap("popd", _popd); - -//@include ./src/ln -var _ln = require('./src/ln'); -exports.ln = common.wrap('ln', _ln); - -//@ -//@ ### exit(code) -//@ Exits the current process with the given exit code. -exports.exit = process.exit; - -//@ -//@ ### env['VAR_NAME'] -//@ Object containing environment variables (both getter and setter). Shortcut to process.env. -exports.env = process.env; - -//@include ./src/exec -var _exec = require('./src/exec'); -exports.exec = common.wrap('exec', _exec, {notUnix:true}); - -//@include ./src/chmod -var _chmod = require('./src/chmod'); -exports.chmod = common.wrap('chmod', _chmod); - - - -//@ -//@ ## Non-Unix commands -//@ - -//@include ./src/tempdir -var _tempDir = require('./src/tempdir'); -exports.tempdir = common.wrap('tempdir', _tempDir); - - -//@include ./src/error -var _error = require('./src/error'); -exports.error = _error; - - - -//@ -//@ ## Configuration -//@ - -exports.config = common.config; - -//@ -//@ ### config.silent -//@ Example: -//@ -//@ ```javascript -//@ var sh = require('shelljs'); -//@ var silentState = sh.config.silent; // save old silent state -//@ sh.config.silent = true; -//@ /* ... */ -//@ sh.config.silent = silentState; // restore old silent state -//@ ``` -//@ -//@ Suppresses all command output if `true`, except for `echo()` calls. -//@ Default is `false`. - -//@ -//@ ### config.fatal -//@ Example: -//@ -//@ ```javascript -//@ require('shelljs/global'); -//@ config.fatal = true; -//@ cp('this_file_does_not_exist', '/dev/null'); // dies here -//@ /* more commands... */ -//@ ``` -//@ -//@ If `true` the script will die on errors. Default is `false`. diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cat.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cat.js deleted file mode 100644 index f6f4d254..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cat.js +++ /dev/null @@ -1,43 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### cat(file [, file ...]) -//@ ### cat(file_array) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var str = cat('file*.txt'); -//@ var str = cat('file1', 'file2'); -//@ var str = cat(['file1', 'file2']); // same as above -//@ ``` -//@ -//@ Returns a string containing the given file, or a concatenated string -//@ containing the files if more than one file is given (a new line character is -//@ introduced between each file). Wildcard `*` accepted. -function _cat(options, files) { - var cat = ''; - - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 1); - // if it's array leave it as it is - - files = common.expand(files); - - files.forEach(function(file) { - if (!fs.existsSync(file)) - common.error('no such file or directory: ' + file); - - cat += fs.readFileSync(file, 'utf8') + '\n'; - }); - - if (cat[cat.length-1] === '\n') - cat = cat.substring(0, cat.length-1); - - return common.ShellString(cat); -} -module.exports = _cat; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cd.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cd.js deleted file mode 100644 index 230f4326..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/cd.js +++ /dev/null @@ -1,19 +0,0 @@ -var fs = require('fs'); -var common = require('./common'); - -//@ -//@ ### cd('dir') -//@ Changes to directory `dir` for the duration of the script -function _cd(options, dir) { - if (!dir) - common.error('directory not specified'); - - if (!fs.existsSync(dir)) - common.error('no such file or directory: ' + dir); - - if (!fs.statSync(dir).isDirectory()) - common.error('not a directory: ' + dir); - - process.chdir(dir); -} -module.exports = _cd; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/chmod.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/chmod.js deleted file mode 100644 index f2888930..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/chmod.js +++ /dev/null @@ -1,208 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -var PERMS = (function (base) { - return { - OTHER_EXEC : base.EXEC, - OTHER_WRITE : base.WRITE, - OTHER_READ : base.READ, - - GROUP_EXEC : base.EXEC << 3, - GROUP_WRITE : base.WRITE << 3, - GROUP_READ : base.READ << 3, - - OWNER_EXEC : base.EXEC << 6, - OWNER_WRITE : base.WRITE << 6, - OWNER_READ : base.READ << 6, - - // Literal octal numbers are apparently not allowed in "strict" javascript. Using parseInt is - // the preferred way, else a jshint warning is thrown. - STICKY : parseInt('01000', 8), - SETGID : parseInt('02000', 8), - SETUID : parseInt('04000', 8), - - TYPE_MASK : parseInt('0770000', 8) - }; -})({ - EXEC : 1, - WRITE : 2, - READ : 4 -}); - -//@ -//@ ### chmod(octal_mode || octal_string, file) -//@ ### chmod(symbolic_mode, file) -//@ -//@ Available options: -//@ -//@ + `-v`: output a diagnostic for every file processed//@ -//@ + `-c`: like verbose but report only when a change is made//@ -//@ + `-R`: change files and directories recursively//@ -//@ -//@ Examples: -//@ -//@ ```javascript -//@ chmod(755, '/Users/brandon'); -//@ chmod('755', '/Users/brandon'); // same as above -//@ chmod('u+x', '/Users/brandon'); -//@ ``` -//@ -//@ Alters the permissions of a file or directory by either specifying the -//@ absolute permissions in octal form or expressing the changes in symbols. -//@ This command tries to mimic the POSIX behavior as much as possible. -//@ Notable exceptions: -//@ -//@ + In symbolic modes, 'a-r' and '-r' are identical. No consideration is -//@ given to the umask. -//@ + There is no "quiet" option since default behavior is to run silent. -function _chmod(options, mode, filePattern) { - if (!filePattern) { - if (options.length > 0 && options.charAt(0) === '-') { - // Special case where the specified file permissions started with - to subtract perms, which - // get picked up by the option parser as command flags. - // If we are down by one argument and options starts with -, shift everything over. - filePattern = mode; - mode = options; - options = ''; - } - else { - common.error('You must specify a file.'); - } - } - - options = common.parseOptions(options, { - 'R': 'recursive', - 'c': 'changes', - 'v': 'verbose' - }); - - if (typeof filePattern === 'string') { - filePattern = [ filePattern ]; - } - - var files; - - if (options.recursive) { - files = []; - common.expand(filePattern).forEach(function addFile(expandedFile) { - var stat = fs.lstatSync(expandedFile); - - if (!stat.isSymbolicLink()) { - files.push(expandedFile); - - if (stat.isDirectory()) { // intentionally does not follow symlinks. - fs.readdirSync(expandedFile).forEach(function (child) { - addFile(expandedFile + '/' + child); - }); - } - } - }); - } - else { - files = common.expand(filePattern); - } - - files.forEach(function innerChmod(file) { - file = path.resolve(file); - if (!fs.existsSync(file)) { - common.error('File not found: ' + file); - } - - // When recursing, don't follow symlinks. - if (options.recursive && fs.lstatSync(file).isSymbolicLink()) { - return; - } - - var perms = fs.statSync(file).mode; - var type = perms & PERMS.TYPE_MASK; - - var newPerms = perms; - - if (isNaN(parseInt(mode, 8))) { - // parse options - mode.split(',').forEach(function (symbolicMode) { - /*jshint regexdash:true */ - var pattern = /([ugoa]*)([=\+-])([rwxXst]*)/i; - var matches = pattern.exec(symbolicMode); - - if (matches) { - var applyTo = matches[1]; - var operator = matches[2]; - var change = matches[3]; - - var changeOwner = applyTo.indexOf('u') != -1 || applyTo === 'a' || applyTo === ''; - var changeGroup = applyTo.indexOf('g') != -1 || applyTo === 'a' || applyTo === ''; - var changeOther = applyTo.indexOf('o') != -1 || applyTo === 'a' || applyTo === ''; - - var changeRead = change.indexOf('r') != -1; - var changeWrite = change.indexOf('w') != -1; - var changeExec = change.indexOf('x') != -1; - var changeSticky = change.indexOf('t') != -1; - var changeSetuid = change.indexOf('s') != -1; - - var mask = 0; - if (changeOwner) { - mask |= (changeRead ? PERMS.OWNER_READ : 0) + (changeWrite ? PERMS.OWNER_WRITE : 0) + (changeExec ? PERMS.OWNER_EXEC : 0) + (changeSetuid ? PERMS.SETUID : 0); - } - if (changeGroup) { - mask |= (changeRead ? PERMS.GROUP_READ : 0) + (changeWrite ? PERMS.GROUP_WRITE : 0) + (changeExec ? PERMS.GROUP_EXEC : 0) + (changeSetuid ? PERMS.SETGID : 0); - } - if (changeOther) { - mask |= (changeRead ? PERMS.OTHER_READ : 0) + (changeWrite ? PERMS.OTHER_WRITE : 0) + (changeExec ? PERMS.OTHER_EXEC : 0); - } - - // Sticky bit is special - it's not tied to user, group or other. - if (changeSticky) { - mask |= PERMS.STICKY; - } - - switch (operator) { - case '+': - newPerms |= mask; - break; - - case '-': - newPerms &= ~mask; - break; - - case '=': - newPerms = type + mask; - - // According to POSIX, when using = to explicitly set the permissions, setuid and setgid can never be cleared. - if (fs.statSync(file).isDirectory()) { - newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; - } - break; - } - - if (options.verbose) { - log(file + ' -> ' + newPerms.toString(8)); - } - - if (perms != newPerms) { - if (!options.verbose && options.changes) { - log(file + ' -> ' + newPerms.toString(8)); - } - fs.chmodSync(file, newPerms); - } - } - else { - common.error('Invalid symbolic mode change: ' + symbolicMode); - } - }); - } - else { - // they gave us a full number - newPerms = type + parseInt(mode, 8); - - // POSIX rules are that setuid and setgid can only be added using numeric form, but not cleared. - if (fs.statSync(file).isDirectory()) { - newPerms |= (PERMS.SETUID + PERMS.SETGID) & perms; - } - - fs.chmodSync(file, newPerms); - } - }); -} -module.exports = _chmod; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/common.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/common.js deleted file mode 100644 index d8c23129..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/common.js +++ /dev/null @@ -1,203 +0,0 @@ -var os = require('os'); -var fs = require('fs'); -var _ls = require('./ls'); - -// Module globals -var config = { - silent: false, - fatal: false -}; -exports.config = config; - -var state = { - error: null, - currentCmd: 'shell.js', - tempDir: null -}; -exports.state = state; - -var platform = os.type().match(/^Win/) ? 'win' : 'unix'; -exports.platform = platform; - -function log() { - if (!config.silent) - console.log.apply(this, arguments); -} -exports.log = log; - -// Shows error message. Throws unless _continue or config.fatal are true -function error(msg, _continue) { - if (state.error === null) - state.error = ''; - state.error += state.currentCmd + ': ' + msg + '\n'; - - if (msg.length > 0) - log(state.error); - - if (config.fatal) - process.exit(1); - - if (!_continue) - throw ''; -} -exports.error = error; - -// In the future, when Proxies are default, we can add methods like `.to()` to primitive strings. -// For now, this is a dummy function to bookmark places we need such strings -function ShellString(str) { - return str; -} -exports.ShellString = ShellString; - -// Returns {'alice': true, 'bob': false} when passed a dictionary, e.g.: -// parseOptions('-a', {'a':'alice', 'b':'bob'}); -function parseOptions(str, map) { - if (!map) - error('parseOptions() internal error: no map given'); - - // All options are false by default - var options = {}; - for (var letter in map) - options[map[letter]] = false; - - if (!str) - return options; // defaults - - if (typeof str !== 'string') - error('parseOptions() internal error: wrong str'); - - // e.g. match[1] = 'Rf' for str = '-Rf' - var match = str.match(/^\-(.+)/); - if (!match) - return options; - - // e.g. chars = ['R', 'f'] - var chars = match[1].split(''); - - chars.forEach(function(c) { - if (c in map) - options[map[c]] = true; - else - error('option not recognized: '+c); - }); - - return options; -} -exports.parseOptions = parseOptions; - -// Expands wildcards with matching (ie. existing) file names. -// For example: -// expand(['file*.js']) = ['file1.js', 'file2.js', ...] -// (if the files 'file1.js', 'file2.js', etc, exist in the current dir) -function expand(list) { - var expanded = []; - list.forEach(function(listEl) { - // Wildcard present on directory names ? - if(listEl.search(/\*[^\/]*\//) > -1 || listEl.search(/\*\*[^\/]*\//) > -1) { - var match = listEl.match(/^([^*]+\/|)(.*)/); - var root = match[1]; - var rest = match[2]; - var restRegex = rest.replace(/\*\*/g, ".*").replace(/\*/g, "[^\\/]*"); - restRegex = new RegExp(restRegex); - - _ls('-R', root).filter(function (e) { - return restRegex.test(e); - }).forEach(function(file) { - expanded.push(file); - }); - } - // Wildcard present on file names ? - else if (listEl.search(/\*/) > -1) { - _ls('', listEl).forEach(function(file) { - expanded.push(file); - }); - } else { - expanded.push(listEl); - } - }); - return expanded; -} -exports.expand = expand; - -// Normalizes _unlinkSync() across platforms to match Unix behavior, i.e. -// file can be unlinked even if it's read-only, see https://github.com/joyent/node/issues/3006 -function unlinkSync(file) { - try { - fs.unlinkSync(file); - } catch(e) { - // Try to override file permission - if (e.code === 'EPERM') { - fs.chmodSync(file, '0666'); - fs.unlinkSync(file); - } else { - throw e; - } - } -} -exports.unlinkSync = unlinkSync; - -// e.g. 'shelljs_a5f185d0443ca...' -function randomFileName() { - function randomHash(count) { - if (count === 1) - return parseInt(16*Math.random(), 10).toString(16); - else { - var hash = ''; - for (var i=0; i and/or '); - } else if (arguments.length > 3) { - sources = [].slice.call(arguments, 1, arguments.length - 1); - dest = arguments[arguments.length - 1]; - } else if (typeof sources === 'string') { - sources = [sources]; - } else if ('length' in sources) { - sources = sources; // no-op for array - } else { - common.error('invalid arguments'); - } - - var exists = fs.existsSync(dest), - stats = exists && fs.statSync(dest); - - // Dest is not existing dir, but multiple sources given - if ((!exists || !stats.isDirectory()) && sources.length > 1) - common.error('dest is not a directory (too many sources)'); - - // Dest is an existing file, but no -f given - if (exists && stats.isFile() && !options.force) - common.error('dest file already exists: ' + dest); - - if (options.recursive) { - // Recursive allows the shortcut syntax "sourcedir/" for "sourcedir/*" - // (see Github issue #15) - sources.forEach(function(src, i) { - if (src[src.length - 1] === '/') - sources[i] += '*'; - }); - - // Create dest - try { - fs.mkdirSync(dest, parseInt('0777', 8)); - } catch (e) { - // like Unix's cp, keep going even if we can't create dest dir - } - } - - sources = common.expand(sources); - - sources.forEach(function(src) { - if (!fs.existsSync(src)) { - common.error('no such file or directory: '+src, true); - return; // skip file - } - - // If here, src exists - if (fs.statSync(src).isDirectory()) { - if (!options.recursive) { - // Non-Recursive - common.log(src + ' is a directory (not copied)'); - } else { - // Recursive - // 'cp /a/source dest' should create 'source' in 'dest' - var newDest = path.join(dest, path.basename(src)), - checkDir = fs.statSync(src); - try { - fs.mkdirSync(newDest, checkDir.mode); - } catch (e) { - //if the directory already exists, that's okay - if (e.code !== 'EEXIST') { - common.error('dest file no such file or directory: ' + newDest, true); - throw e; - } - } - - cpdirSyncRecursive(src, newDest, {force: options.force}); - } - return; // done with dir - } - - // If here, src is a file - - // When copying to '/path/dir': - // thisDest = '/path/dir/file1' - var thisDest = dest; - if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) - thisDest = path.normalize(dest + '/' + path.basename(src)); - - if (fs.existsSync(thisDest) && !options.force) { - common.error('dest file already exists: ' + thisDest, true); - return; // skip file - } - - copyFileSync(src, thisDest); - }); // forEach(src) -} -module.exports = _cp; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/dirs.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/dirs.js deleted file mode 100644 index 58fae8b3..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/dirs.js +++ /dev/null @@ -1,191 +0,0 @@ -var common = require('./common'); -var _cd = require('./cd'); -var path = require('path'); - -// Pushd/popd/dirs internals -var _dirStack = []; - -function _isStackIndex(index) { - return (/^[\-+]\d+$/).test(index); -} - -function _parseStackIndex(index) { - if (_isStackIndex(index)) { - if (Math.abs(index) < _dirStack.length + 1) { // +1 for pwd - return (/^-/).test(index) ? Number(index) - 1 : Number(index); - } else { - common.error(index + ': directory stack index out of range'); - } - } else { - common.error(index + ': invalid number'); - } -} - -function _actualDirStack() { - return [process.cwd()].concat(_dirStack); -} - -//@ -//@ ### pushd([options,] [dir | '-N' | '+N']) -//@ -//@ Available options: -//@ -//@ + `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. -//@ -//@ Arguments: -//@ -//@ + `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. -//@ + `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -//@ + `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ // process.cwd() === '/usr' -//@ pushd('/etc'); // Returns /etc /usr -//@ pushd('+1'); // Returns /usr /etc -//@ ``` -//@ -//@ Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. -function _pushd(options, dir) { - if (_isStackIndex(options)) { - dir = options; - options = ''; - } - - options = common.parseOptions(options, { - 'n' : 'no-cd' - }); - - var dirs = _actualDirStack(); - - if (dir === '+0') { - return dirs; // +0 is a noop - } else if (!dir) { - if (dirs.length > 1) { - dirs = dirs.splice(1, 1).concat(dirs); - } else { - return common.error('no other directory'); - } - } else if (_isStackIndex(dir)) { - var n = _parseStackIndex(dir); - dirs = dirs.slice(n).concat(dirs.slice(0, n)); - } else { - if (options['no-cd']) { - dirs.splice(1, 0, dir); - } else { - dirs.unshift(dir); - } - } - - if (options['no-cd']) { - dirs = dirs.slice(1); - } else { - dir = path.resolve(dirs.shift()); - _cd('', dir); - } - - _dirStack = dirs; - return _dirs(''); -} -exports.pushd = _pushd; - -//@ -//@ ### popd([options,] ['-N' | '+N']) -//@ -//@ Available options: -//@ -//@ + `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. -//@ -//@ Arguments: -//@ -//@ + `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. -//@ + `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ echo(process.cwd()); // '/usr' -//@ pushd('/etc'); // '/etc /usr' -//@ echo(process.cwd()); // '/etc' -//@ popd(); // '/usr' -//@ echo(process.cwd()); // '/usr' -//@ ``` -//@ -//@ When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. -function _popd(options, index) { - if (_isStackIndex(options)) { - index = options; - options = ''; - } - - options = common.parseOptions(options, { - 'n' : 'no-cd' - }); - - if (!_dirStack.length) { - return common.error('directory stack empty'); - } - - index = _parseStackIndex(index || '+0'); - - if (options['no-cd'] || index > 0 || _dirStack.length + index === 0) { - index = index > 0 ? index - 1 : index; - _dirStack.splice(index, 1); - } else { - var dir = path.resolve(_dirStack.shift()); - _cd('', dir); - } - - return _dirs(''); -} -exports.popd = _popd; - -//@ -//@ ### dirs([options | '+N' | '-N']) -//@ -//@ Available options: -//@ -//@ + `-c`: Clears the directory stack by deleting all of the elements. -//@ -//@ Arguments: -//@ -//@ + `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. -//@ + `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. -//@ -//@ Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. -//@ -//@ See also: pushd, popd -function _dirs(options, index) { - if (_isStackIndex(options)) { - index = options; - options = ''; - } - - options = common.parseOptions(options, { - 'c' : 'clear' - }); - - if (options['clear']) { - _dirStack = []; - return _dirStack; - } - - var stack = _actualDirStack(); - - if (index) { - index = _parseStackIndex(index); - - if (index < 0) { - index = stack.length + index; - } - - common.log(stack[index]); - return stack[index]; - } - - common.log(stack.join(' ')); - - return stack; -} -exports.dirs = _dirs; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/echo.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/echo.js deleted file mode 100644 index 760ea840..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/echo.js +++ /dev/null @@ -1,20 +0,0 @@ -var common = require('./common'); - -//@ -//@ ### echo(string [,string ...]) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ echo('hello world'); -//@ var str = echo('hello world'); -//@ ``` -//@ -//@ Prints string to stdout, and returns string with additional utility methods -//@ like `.to()`. -function _echo() { - var messages = [].slice.call(arguments, 0); - console.log.apply(this, messages); - return common.ShellString(messages.join(' ')); -} -module.exports = _echo; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/error.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/error.js deleted file mode 100644 index cca3efb6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/error.js +++ /dev/null @@ -1,10 +0,0 @@ -var common = require('./common'); - -//@ -//@ ### error() -//@ Tests if error occurred in the last command. Returns `null` if no error occurred, -//@ otherwise returns string explaining the error -function error() { - return common.state.error; -}; -module.exports = error; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/exec.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/exec.js deleted file mode 100644 index d259a9f2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/exec.js +++ /dev/null @@ -1,216 +0,0 @@ -var common = require('./common'); -var _tempDir = require('./tempdir'); -var _pwd = require('./pwd'); -var path = require('path'); -var fs = require('fs'); -var child = require('child_process'); - -// Hack to run child_process.exec() synchronously (sync avoids callback hell) -// Uses a custom wait loop that checks for a flag file, created when the child process is done. -// (Can't do a wait loop that checks for internal Node variables/messages as -// Node is single-threaded; callbacks and other internal state changes are done in the -// event loop). -function execSync(cmd, opts) { - var tempDir = _tempDir(); - var stdoutFile = path.resolve(tempDir+'/'+common.randomFileName()), - codeFile = path.resolve(tempDir+'/'+common.randomFileName()), - scriptFile = path.resolve(tempDir+'/'+common.randomFileName()), - sleepFile = path.resolve(tempDir+'/'+common.randomFileName()); - - var options = common.extend({ - silent: common.config.silent - }, opts); - - var previousStdoutContent = ''; - // Echoes stdout changes from running process, if not silent - function updateStdout() { - if (options.silent || !fs.existsSync(stdoutFile)) - return; - - var stdoutContent = fs.readFileSync(stdoutFile, 'utf8'); - // No changes since last time? - if (stdoutContent.length <= previousStdoutContent.length) - return; - - process.stdout.write(stdoutContent.substr(previousStdoutContent.length)); - previousStdoutContent = stdoutContent; - } - - function escape(str) { - return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0"); - } - - if (fs.existsSync(scriptFile)) common.unlinkSync(scriptFile); - if (fs.existsSync(stdoutFile)) common.unlinkSync(stdoutFile); - if (fs.existsSync(codeFile)) common.unlinkSync(codeFile); - - var execCommand = '"'+process.execPath+'" '+scriptFile; - var execOptions = { - env: process.env, - cwd: _pwd(), - maxBuffer: 20*1024*1024 - }; - - if (typeof child.execSync === 'function') { - var script = [ - "var child = require('child_process')", - " , fs = require('fs');", - "var childProcess = child.exec('"+escape(cmd)+"', {env: process.env, maxBuffer: 20*1024*1024}, function(err) {", - " fs.writeFileSync('"+escape(codeFile)+"', err ? err.code.toString() : '0');", - "});", - "var stdoutStream = fs.createWriteStream('"+escape(stdoutFile)+"');", - "childProcess.stdout.pipe(stdoutStream, {end: false});", - "childProcess.stderr.pipe(stdoutStream, {end: false});", - "childProcess.stdout.pipe(process.stdout);", - "childProcess.stderr.pipe(process.stderr);", - "var stdoutEnded = false, stderrEnded = false;", - "function tryClosing(){ if(stdoutEnded && stderrEnded){ stdoutStream.end(); } }", - "childProcess.stdout.on('end', function(){ stdoutEnded = true; tryClosing(); });", - "childProcess.stderr.on('end', function(){ stderrEnded = true; tryClosing(); });" - ].join('\n'); - - fs.writeFileSync(scriptFile, script); - - if (options.silent) { - execOptions.stdio = 'ignore'; - } else { - execOptions.stdio = [0, 1, 2]; - } - - // Welcome to the future - child.execSync(execCommand, execOptions); - } else { - cmd += ' > '+stdoutFile+' 2>&1'; // works on both win/unix - - var script = [ - "var child = require('child_process')", - " , fs = require('fs');", - "var childProcess = child.exec('"+escape(cmd)+"', {env: process.env, maxBuffer: 20*1024*1024}, function(err) {", - " fs.writeFileSync('"+escape(codeFile)+"', err ? err.code.toString() : '0');", - "});" - ].join('\n'); - - fs.writeFileSync(scriptFile, script); - - child.exec(execCommand, execOptions); - - // The wait loop - // sleepFile is used as a dummy I/O op to mitigate unnecessary CPU usage - // (tried many I/O sync ops, writeFileSync() seems to be only one that is effective in reducing - // CPU usage, though apparently not so much on Windows) - while (!fs.existsSync(codeFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } - while (!fs.existsSync(stdoutFile)) { updateStdout(); fs.writeFileSync(sleepFile, 'a'); } - } - - // At this point codeFile exists, but it's not necessarily flushed yet. - // Keep reading it until it is. - var code = parseInt('', 10); - while (isNaN(code)) { - code = parseInt(fs.readFileSync(codeFile, 'utf8'), 10); - } - - var stdout = fs.readFileSync(stdoutFile, 'utf8'); - - // No biggie if we can't erase the files now -- they're in a temp dir anyway - try { common.unlinkSync(scriptFile); } catch(e) {} - try { common.unlinkSync(stdoutFile); } catch(e) {} - try { common.unlinkSync(codeFile); } catch(e) {} - try { common.unlinkSync(sleepFile); } catch(e) {} - - // some shell return codes are defined as errors, per http://tldp.org/LDP/abs/html/exitcodes.html - if (code === 1 || code === 2 || code >= 126) { - common.error('', true); // unix/shell doesn't really give an error message after non-zero exit codes - } - // True if successful, false if not - var obj = { - code: code, - output: stdout - }; - return obj; -} // execSync() - -// Wrapper around exec() to enable echoing output to console in real time -function execAsync(cmd, opts, callback) { - var output = ''; - - var options = common.extend({ - silent: common.config.silent - }, opts); - - var c = child.exec(cmd, {env: process.env, maxBuffer: 20*1024*1024}, function(err) { - if (callback) - callback(err ? err.code : 0, output); - }); - - c.stdout.on('data', function(data) { - output += data; - if (!options.silent) - process.stdout.write(data); - }); - - c.stderr.on('data', function(data) { - output += data; - if (!options.silent) - process.stdout.write(data); - }); - - return c; -} - -//@ -//@ ### exec(command [, options] [, callback]) -//@ Available options (all `false` by default): -//@ -//@ + `async`: Asynchronous execution. Defaults to true if a callback is provided. -//@ + `silent`: Do not echo program output to console. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var version = exec('node --version', {silent:true}).output; -//@ -//@ var child = exec('some_long_running_process', {async:true}); -//@ child.stdout.on('data', function(data) { -//@ /* ... do something with data ... */ -//@ }); -//@ -//@ exec('some_long_running_process', function(code, output) { -//@ console.log('Exit code:', code); -//@ console.log('Program output:', output); -//@ }); -//@ ``` -//@ -//@ Executes the given `command` _synchronously_, unless otherwise specified. -//@ When in synchronous mode returns the object `{ code:..., output:... }`, containing the program's -//@ `output` (stdout + stderr) and its exit `code`. Otherwise returns the child process object, and -//@ the `callback` gets the arguments `(code, output)`. -//@ -//@ **Note:** For long-lived processes, it's best to run `exec()` asynchronously as -//@ the current synchronous implementation uses a lot of CPU. This should be getting -//@ fixed soon. -function _exec(command, options, callback) { - if (!command) - common.error('must specify command'); - - // Callback is defined instead of options. - if (typeof options === 'function') { - callback = options; - options = { async: true }; - } - - // Callback is defined with options. - if (typeof options === 'object' && typeof callback === 'function') { - options.async = true; - } - - options = common.extend({ - silent: common.config.silent, - async: false - }, options); - - if (options.async) - return execAsync(command, options, callback); - else - return execSync(command, options); -} -module.exports = _exec; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/find.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/find.js deleted file mode 100644 index d9eeec26..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/find.js +++ /dev/null @@ -1,51 +0,0 @@ -var fs = require('fs'); -var common = require('./common'); -var _ls = require('./ls'); - -//@ -//@ ### find(path [,path ...]) -//@ ### find(path_array) -//@ Examples: -//@ -//@ ```javascript -//@ find('src', 'lib'); -//@ find(['src', 'lib']); // same as above -//@ find('.').filter(function(file) { return file.match(/\.js$/); }); -//@ ``` -//@ -//@ Returns array of all files (however deep) in the given paths. -//@ -//@ The main difference from `ls('-R', path)` is that the resulting file names -//@ include the base directories, e.g. `lib/resources/file1` instead of just `file1`. -function _find(options, paths) { - if (!paths) - common.error('no path specified'); - else if (typeof paths === 'object') - paths = paths; // assume array - else if (typeof paths === 'string') - paths = [].slice.call(arguments, 1); - - var list = []; - - function pushFile(file) { - if (common.platform === 'win') - file = file.replace(/\\/g, '/'); - list.push(file); - } - - // why not simply do ls('-R', paths)? because the output wouldn't give the base dirs - // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory - - paths.forEach(function(file) { - pushFile(file); - - if (fs.statSync(file).isDirectory()) { - _ls('-RA', file+'/*').forEach(function(subfile) { - pushFile(subfile); - }); - } - }); - - return list; -} -module.exports = _find; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/grep.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/grep.js deleted file mode 100644 index 00c7d6a4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/grep.js +++ /dev/null @@ -1,52 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### grep([options ,] regex_filter, file [, file ...]) -//@ ### grep([options ,] regex_filter, file_array) -//@ Available options: -//@ -//@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria. -//@ -//@ Examples: -//@ -//@ ```javascript -//@ grep('-v', 'GLOBAL_VARIABLE', '*.js'); -//@ grep('GLOBAL_VARIABLE', '*.js'); -//@ ``` -//@ -//@ Reads input string from given files and returns a string containing all lines of the -//@ file that match the given `regex_filter`. Wildcard `*` accepted. -function _grep(options, regex, files) { - options = common.parseOptions(options, { - 'v': 'inverse' - }); - - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 2); - // if it's array leave it as it is - - files = common.expand(files); - - var grep = ''; - files.forEach(function(file) { - if (!fs.existsSync(file)) { - common.error('no such file or directory: ' + file, true); - return; - } - - var contents = fs.readFileSync(file, 'utf8'), - lines = contents.split(/\r*\n/); - lines.forEach(function(line) { - var matched = line.match(regex); - if ((options.inverse && !matched) || (!options.inverse && matched)) - grep += line + '\n'; - }); - }); - - return common.ShellString(grep); -} -module.exports = _grep; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ln.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ln.js deleted file mode 100644 index a7b9701b..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ln.js +++ /dev/null @@ -1,53 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var common = require('./common'); -var os = require('os'); - -//@ -//@ ### ln(options, source, dest) -//@ ### ln(source, dest) -//@ Available options: -//@ -//@ + `s`: symlink -//@ + `f`: force -//@ -//@ Examples: -//@ -//@ ```javascript -//@ ln('file', 'newlink'); -//@ ln('-sf', 'file', 'existing'); -//@ ``` -//@ -//@ Links source to dest. Use -f to force the link, should dest already exist. -function _ln(options, source, dest) { - options = common.parseOptions(options, { - 's': 'symlink', - 'f': 'force' - }); - - if (!source || !dest) { - common.error('Missing and/or '); - } - - source = path.resolve(process.cwd(), String(source)); - dest = path.resolve(process.cwd(), String(dest)); - - if (!fs.existsSync(source)) { - common.error('Source file does not exist', true); - } - - if (fs.existsSync(dest)) { - if (!options.force) { - common.error('Destination file exists', true); - } - - fs.unlinkSync(dest); - } - - if (options.symlink) { - fs.symlinkSync(source, dest, os.platform() === "win32" ? "junction" : null); - } else { - fs.linkSync(source, dest, os.platform() === "win32" ? "junction" : null); - } -} -module.exports = _ln; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ls.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ls.js deleted file mode 100644 index 3345db44..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/ls.js +++ /dev/null @@ -1,126 +0,0 @@ -var path = require('path'); -var fs = require('fs'); -var common = require('./common'); -var _cd = require('./cd'); -var _pwd = require('./pwd'); - -//@ -//@ ### ls([options ,] path [,path ...]) -//@ ### ls([options ,] path_array) -//@ Available options: -//@ -//@ + `-R`: recursive -//@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ ls('projs/*.js'); -//@ ls('-R', '/users/me', '/tmp'); -//@ ls('-R', ['/users/me', '/tmp']); // same as above -//@ ``` -//@ -//@ Returns array of files in the given path, or in current directory if no path provided. -function _ls(options, paths) { - options = common.parseOptions(options, { - 'R': 'recursive', - 'A': 'all', - 'a': 'all_deprecated' - }); - - if (options.all_deprecated) { - // We won't support the -a option as it's hard to image why it's useful - // (it includes '.' and '..' in addition to '.*' files) - // For backwards compatibility we'll dump a deprecated message and proceed as before - common.log('ls: Option -a is deprecated. Use -A instead'); - options.all = true; - } - - if (!paths) - paths = ['.']; - else if (typeof paths === 'object') - paths = paths; // assume array - else if (typeof paths === 'string') - paths = [].slice.call(arguments, 1); - - var list = []; - - // Conditionally pushes file to list - returns true if pushed, false otherwise - // (e.g. prevents hidden files to be included unless explicitly told so) - function pushFile(file, query) { - // hidden file? - if (path.basename(file)[0] === '.') { - // not explicitly asking for hidden files? - if (!options.all && !(path.basename(query)[0] === '.' && path.basename(query).length > 1)) - return false; - } - - if (common.platform === 'win') - file = file.replace(/\\/g, '/'); - - list.push(file); - return true; - } - - paths.forEach(function(p) { - if (fs.existsSync(p)) { - var stats = fs.statSync(p); - // Simple file? - if (stats.isFile()) { - pushFile(p, p); - return; // continue - } - - // Simple dir? - if (stats.isDirectory()) { - // Iterate over p contents - fs.readdirSync(p).forEach(function(file) { - if (!pushFile(file, p)) - return; - - // Recursive? - if (options.recursive) { - var oldDir = _pwd(); - _cd('', p); - if (fs.statSync(file).isDirectory()) - list = list.concat(_ls('-R'+(options.all?'A':''), file+'/*')); - _cd('', oldDir); - } - }); - return; // continue - } - } - - // p does not exist - possible wildcard present - - var basename = path.basename(p); - var dirname = path.dirname(p); - // Wildcard present on an existing dir? (e.g. '/tmp/*.js') - if (basename.search(/\*/) > -1 && fs.existsSync(dirname) && fs.statSync(dirname).isDirectory) { - // Escape special regular expression chars - var regexp = basename.replace(/(\^|\$|\(|\)|<|>|\[|\]|\{|\}|\.|\+|\?)/g, '\\$1'); - // Translates wildcard into regex - regexp = '^' + regexp.replace(/\*/g, '.*') + '$'; - // Iterate over directory contents - fs.readdirSync(dirname).forEach(function(file) { - if (file.match(new RegExp(regexp))) { - if (!pushFile(path.normalize(dirname+'/'+file), basename)) - return; - - // Recursive? - if (options.recursive) { - var pp = dirname + '/' + file; - if (fs.lstatSync(pp).isDirectory()) - list = list.concat(_ls('-R'+(options.all?'A':''), pp+'/*')); - } // recursive - } // if file matches - }); // forEach - return; - } - - common.error('no such file or directory: ' + p, true); - }); - - return list; -} -module.exports = _ls; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mkdir.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mkdir.js deleted file mode 100644 index 5a7088f2..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mkdir.js +++ /dev/null @@ -1,68 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -// Recursively creates 'dir' -function mkdirSyncRecursive(dir) { - var baseDir = path.dirname(dir); - - // Base dir exists, no recursion necessary - if (fs.existsSync(baseDir)) { - fs.mkdirSync(dir, parseInt('0777', 8)); - return; - } - - // Base dir does not exist, go recursive - mkdirSyncRecursive(baseDir); - - // Base dir created, can create dir - fs.mkdirSync(dir, parseInt('0777', 8)); -} - -//@ -//@ ### mkdir([options ,] dir [, dir ...]) -//@ ### mkdir([options ,] dir_array) -//@ Available options: -//@ -//@ + `p`: full path (will create intermediate dirs if necessary) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); -//@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above -//@ ``` -//@ -//@ Creates directories. -function _mkdir(options, dirs) { - options = common.parseOptions(options, { - 'p': 'fullpath' - }); - if (!dirs) - common.error('no paths given'); - - if (typeof dirs === 'string') - dirs = [].slice.call(arguments, 1); - // if it's array leave it as it is - - dirs.forEach(function(dir) { - if (fs.existsSync(dir)) { - if (!options.fullpath) - common.error('path already exists: ' + dir, true); - return; // skip dir - } - - // Base dir does not exist, and no -p option given - var baseDir = path.dirname(dir); - if (!fs.existsSync(baseDir) && !options.fullpath) { - common.error('no such file or directory: ' + baseDir, true); - return; // skip dir - } - - if (options.fullpath) - mkdirSyncRecursive(dir); - else - fs.mkdirSync(dir, parseInt('0777', 8)); - }); -} // mkdir -module.exports = _mkdir; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mv.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mv.js deleted file mode 100644 index 11f96071..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/mv.js +++ /dev/null @@ -1,80 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var common = require('./common'); - -//@ -//@ ### mv(source [, source ...], dest') -//@ ### mv(source_array, dest') -//@ Available options: -//@ -//@ + `f`: force -//@ -//@ Examples: -//@ -//@ ```javascript -//@ mv('-f', 'file', 'dir/'); -//@ mv('file1', 'file2', 'dir/'); -//@ mv(['file1', 'file2'], 'dir/'); // same as above -//@ ``` -//@ -//@ Moves files. The wildcard `*` is accepted. -function _mv(options, sources, dest) { - options = common.parseOptions(options, { - 'f': 'force' - }); - - // Get sources, dest - if (arguments.length < 3) { - common.error('missing and/or '); - } else if (arguments.length > 3) { - sources = [].slice.call(arguments, 1, arguments.length - 1); - dest = arguments[arguments.length - 1]; - } else if (typeof sources === 'string') { - sources = [sources]; - } else if ('length' in sources) { - sources = sources; // no-op for array - } else { - common.error('invalid arguments'); - } - - sources = common.expand(sources); - - var exists = fs.existsSync(dest), - stats = exists && fs.statSync(dest); - - // Dest is not existing dir, but multiple sources given - if ((!exists || !stats.isDirectory()) && sources.length > 1) - common.error('dest is not a directory (too many sources)'); - - // Dest is an existing file, but no -f given - if (exists && stats.isFile() && !options.force) - common.error('dest file already exists: ' + dest); - - sources.forEach(function(src) { - if (!fs.existsSync(src)) { - common.error('no such file or directory: '+src, true); - return; // skip file - } - - // If here, src exists - - // When copying to '/path/dir': - // thisDest = '/path/dir/file1' - var thisDest = dest; - if (fs.existsSync(dest) && fs.statSync(dest).isDirectory()) - thisDest = path.normalize(dest + '/' + path.basename(src)); - - if (fs.existsSync(thisDest) && !options.force) { - common.error('dest file already exists: ' + thisDest, true); - return; // skip file - } - - if (path.resolve(src) === path.dirname(path.resolve(thisDest))) { - common.error('cannot move to self: '+src, true); - return; // skip file - } - - fs.renameSync(src, thisDest); - }); // forEach(src) -} // mv -module.exports = _mv; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/popd.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/popd.js deleted file mode 100644 index 11ea24fa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/popd.js +++ /dev/null @@ -1 +0,0 @@ -// see dirs.js \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pushd.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pushd.js deleted file mode 100644 index 11ea24fa..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pushd.js +++ /dev/null @@ -1 +0,0 @@ -// see dirs.js \ No newline at end of file diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pwd.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pwd.js deleted file mode 100644 index 41727bb9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/pwd.js +++ /dev/null @@ -1,11 +0,0 @@ -var path = require('path'); -var common = require('./common'); - -//@ -//@ ### pwd() -//@ Returns the current directory. -function _pwd(options) { - var pwd = path.resolve(process.cwd()); - return common.ShellString(pwd); -} -module.exports = _pwd; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/rm.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/rm.js deleted file mode 100644 index bd608cb0..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/rm.js +++ /dev/null @@ -1,163 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -// Recursively removes 'dir' -// Adapted from https://github.com/ryanmcgrath/wrench-js -// -// Copyright (c) 2010 Ryan McGrath -// Copyright (c) 2012 Artur Adib -// -// Licensed under the MIT License -// http://www.opensource.org/licenses/mit-license.php -function rmdirSyncRecursive(dir, force) { - var files; - - files = fs.readdirSync(dir); - - // Loop through and delete everything in the sub-tree after checking it - for(var i = 0; i < files.length; i++) { - var file = dir + "/" + files[i], - currFile = fs.lstatSync(file); - - if(currFile.isDirectory()) { // Recursive function back to the beginning - rmdirSyncRecursive(file, force); - } - - else if(currFile.isSymbolicLink()) { // Unlink symlinks - if (force || isWriteable(file)) { - try { - common.unlinkSync(file); - } catch (e) { - common.error('could not remove file (code '+e.code+'): ' + file, true); - } - } - } - - else // Assume it's a file - perhaps a try/catch belongs here? - if (force || isWriteable(file)) { - try { - common.unlinkSync(file); - } catch (e) { - common.error('could not remove file (code '+e.code+'): ' + file, true); - } - } - } - - // Now that we know everything in the sub-tree has been deleted, we can delete the main directory. - // Huzzah for the shopkeep. - - var result; - try { - // Retry on windows, sometimes it takes a little time before all the files in the directory are gone - var start = Date.now(); - while (true) { - try { - result = fs.rmdirSync(dir); - if (fs.existsSync(dir)) throw { code: "EAGAIN" } - break; - } catch(er) { - // In addition to error codes, also check if the directory still exists and loop again if true - if (process.platform === "win32" && (er.code === "ENOTEMPTY" || er.code === "EBUSY" || er.code === "EPERM" || er.code === "EAGAIN")) { - if (Date.now() - start > 1000) throw er; - } else if (er.code === "ENOENT") { - // Directory did not exist, deletion was successful - break; - } else { - throw er; - } - } - } - } catch(e) { - common.error('could not remove directory (code '+e.code+'): ' + dir, true); - } - - return result; -} // rmdirSyncRecursive - -// Hack to determine if file has write permissions for current user -// Avoids having to check user, group, etc, but it's probably slow -function isWriteable(file) { - var writePermission = true; - try { - var __fd = fs.openSync(file, 'a'); - fs.closeSync(__fd); - } catch(e) { - writePermission = false; - } - - return writePermission; -} - -//@ -//@ ### rm([options ,] file [, file ...]) -//@ ### rm([options ,] file_array) -//@ Available options: -//@ -//@ + `-f`: force -//@ + `-r, -R`: recursive -//@ -//@ Examples: -//@ -//@ ```javascript -//@ rm('-rf', '/tmp/*'); -//@ rm('some_file.txt', 'another_file.txt'); -//@ rm(['some_file.txt', 'another_file.txt']); // same as above -//@ ``` -//@ -//@ Removes files. The wildcard `*` is accepted. -function _rm(options, files) { - options = common.parseOptions(options, { - 'f': 'force', - 'r': 'recursive', - 'R': 'recursive' - }); - if (!files) - common.error('no paths given'); - - if (typeof files === 'string') - files = [].slice.call(arguments, 1); - // if it's array leave it as it is - - files = common.expand(files); - - files.forEach(function(file) { - if (!fs.existsSync(file)) { - // Path does not exist, no force flag given - if (!options.force) - common.error('no such file or directory: '+file, true); - - return; // skip file - } - - // If here, path exists - - var stats = fs.lstatSync(file); - if (stats.isFile() || stats.isSymbolicLink()) { - - // Do not check for file writing permissions - if (options.force) { - common.unlinkSync(file); - return; - } - - if (isWriteable(file)) - common.unlinkSync(file); - else - common.error('permission denied: '+file, true); - - return; - } // simple file - - // Path is an existing directory, but no -r flag given - if (stats.isDirectory() && !options.recursive) { - common.error('path is a directory', true); - return; // skip path - } - - // Recursively remove existing directory - if (stats.isDirectory() && options.recursive) { - rmdirSyncRecursive(file, options.force); - } - }); // forEach(file) -} // rm -module.exports = _rm; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/sed.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/sed.js deleted file mode 100644 index 65f7cb49..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/sed.js +++ /dev/null @@ -1,43 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### sed([options ,] search_regex, replacement, file) -//@ Available options: -//@ -//@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ -//@ -//@ Examples: -//@ -//@ ```javascript -//@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); -//@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); -//@ ``` -//@ -//@ Reads an input string from `file` and performs a JavaScript `replace()` on the input -//@ using the given search regex and replacement string or function. Returns the new string after replacement. -function _sed(options, regex, replacement, file) { - options = common.parseOptions(options, { - 'i': 'inplace' - }); - - if (typeof replacement === 'string' || typeof replacement === 'function') - replacement = replacement; // no-op - else if (typeof replacement === 'number') - replacement = replacement.toString(); // fallback - else - common.error('invalid replacement string'); - - if (!file) - common.error('no file given'); - - if (!fs.existsSync(file)) - common.error('no such file or directory: ' + file); - - var result = fs.readFileSync(file, 'utf8').replace(regex, replacement); - if (options.inplace) - fs.writeFileSync(file, result, 'utf8'); - - return common.ShellString(result); -} -module.exports = _sed; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/tempdir.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/tempdir.js deleted file mode 100644 index 45953c24..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/tempdir.js +++ /dev/null @@ -1,56 +0,0 @@ -var common = require('./common'); -var os = require('os'); -var fs = require('fs'); - -// Returns false if 'dir' is not a writeable directory, 'dir' otherwise -function writeableDir(dir) { - if (!dir || !fs.existsSync(dir)) - return false; - - if (!fs.statSync(dir).isDirectory()) - return false; - - var testFile = dir+'/'+common.randomFileName(); - try { - fs.writeFileSync(testFile, ' '); - common.unlinkSync(testFile); - return dir; - } catch (e) { - return false; - } -} - - -//@ -//@ ### tempdir() -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var tmp = tempdir(); // "/tmp" for most *nix platforms -//@ ``` -//@ -//@ Searches and returns string containing a writeable, platform-dependent temporary directory. -//@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). -function _tempDir() { - var state = common.state; - if (state.tempDir) - return state.tempDir; // from cache - - state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+ - writeableDir(process.env['TMPDIR']) || - writeableDir(process.env['TEMP']) || - writeableDir(process.env['TMP']) || - writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS - writeableDir('C:\\TEMP') || // Windows - writeableDir('C:\\TMP') || // Windows - writeableDir('\\TEMP') || // Windows - writeableDir('\\TMP') || // Windows - writeableDir('/tmp') || - writeableDir('/var/tmp') || - writeableDir('/usr/tmp') || - writeableDir('.'); // last resort - - return state.tempDir; -} -module.exports = _tempDir; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/test.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/test.js deleted file mode 100644 index 8a4ac7d4..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/test.js +++ /dev/null @@ -1,85 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); - -//@ -//@ ### test(expression) -//@ Available expression primaries: -//@ -//@ + `'-b', 'path'`: true if path is a block device -//@ + `'-c', 'path'`: true if path is a character device -//@ + `'-d', 'path'`: true if path is a directory -//@ + `'-e', 'path'`: true if path exists -//@ + `'-f', 'path'`: true if path is a regular file -//@ + `'-L', 'path'`: true if path is a symboilc link -//@ + `'-p', 'path'`: true if path is a pipe (FIFO) -//@ + `'-S', 'path'`: true if path is a socket -//@ -//@ Examples: -//@ -//@ ```javascript -//@ if (test('-d', path)) { /* do something with dir */ }; -//@ if (!test('-f', path)) continue; // skip if it's a regular file -//@ ``` -//@ -//@ Evaluates expression using the available primaries and returns corresponding value. -function _test(options, path) { - if (!path) - common.error('no path given'); - - // hack - only works with unary primaries - options = common.parseOptions(options, { - 'b': 'block', - 'c': 'character', - 'd': 'directory', - 'e': 'exists', - 'f': 'file', - 'L': 'link', - 'p': 'pipe', - 'S': 'socket' - }); - - var canInterpret = false; - for (var key in options) - if (options[key] === true) { - canInterpret = true; - break; - } - - if (!canInterpret) - common.error('could not interpret expression'); - - if (options.link) { - try { - return fs.lstatSync(path).isSymbolicLink(); - } catch(e) { - return false; - } - } - - if (!fs.existsSync(path)) - return false; - - if (options.exists) - return true; - - var stats = fs.statSync(path); - - if (options.block) - return stats.isBlockDevice(); - - if (options.character) - return stats.isCharacterDevice(); - - if (options.directory) - return stats.isDirectory(); - - if (options.file) - return stats.isFile(); - - if (options.pipe) - return stats.isFIFO(); - - if (options.socket) - return stats.isSocket(); -} // test -module.exports = _test; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/to.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/to.js deleted file mode 100644 index f0299993..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/to.js +++ /dev/null @@ -1,29 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -//@ -//@ ### 'string'.to(file) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ cat('input.txt').to('output.txt'); -//@ ``` -//@ -//@ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as -//@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_ -function _to(options, file) { - if (!file) - common.error('wrong arguments'); - - if (!fs.existsSync( path.dirname(file) )) - common.error('no such file or directory: ' + path.dirname(file)); - - try { - fs.writeFileSync(file, this.toString(), 'utf8'); - } catch(e) { - common.error('could not write to file (code '+e.code+'): '+file, true); - } -} -module.exports = _to; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/toEnd.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/toEnd.js deleted file mode 100644 index f6d099d9..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/toEnd.js +++ /dev/null @@ -1,29 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -//@ -//@ ### 'string'.toEnd(file) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ cat('input.txt').toEnd('output.txt'); -//@ ``` -//@ -//@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as -//@ those returned by `cat`, `grep`, etc). -function _toEnd(options, file) { - if (!file) - common.error('wrong arguments'); - - if (!fs.existsSync( path.dirname(file) )) - common.error('no such file or directory: ' + path.dirname(file)); - - try { - fs.appendFileSync(file, this.toString(), 'utf8'); - } catch(e) { - common.error('could not append to file (code '+e.code+'): '+file, true); - } -} -module.exports = _toEnd; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/which.js b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/which.js deleted file mode 100644 index 2822ecfb..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/node_modules/shelljs/src/which.js +++ /dev/null @@ -1,83 +0,0 @@ -var common = require('./common'); -var fs = require('fs'); -var path = require('path'); - -// Cross-platform method for splitting environment PATH variables -function splitPath(p) { - for (i=1;i<2;i++) {} - - if (!p) - return []; - - if (common.platform === 'win') - return p.split(';'); - else - return p.split(':'); -} - -function checkPath(path) { - return fs.existsSync(path) && fs.statSync(path).isDirectory() == false; -} - -//@ -//@ ### which(command) -//@ -//@ Examples: -//@ -//@ ```javascript -//@ var nodeExec = which('node'); -//@ ``` -//@ -//@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions. -//@ Returns string containing the absolute path to the command. -function _which(options, cmd) { - if (!cmd) - common.error('must specify command'); - - var pathEnv = process.env.path || process.env.Path || process.env.PATH, - pathArray = splitPath(pathEnv), - where = null; - - // No relative/absolute paths provided? - if (cmd.search(/\//) === -1) { - // Search for command in PATH - pathArray.forEach(function(dir) { - if (where) - return; // already found it - - var attempt = path.resolve(dir + '/' + cmd); - if (checkPath(attempt)) { - where = attempt; - return; - } - - if (common.platform === 'win') { - var baseAttempt = attempt; - attempt = baseAttempt + '.exe'; - if (checkPath(attempt)) { - where = attempt; - return; - } - attempt = baseAttempt + '.cmd'; - if (checkPath(attempt)) { - where = attempt; - return; - } - attempt = baseAttempt + '.bat'; - if (checkPath(attempt)) { - where = attempt; - return; - } - } // if 'win' - }); - } - - // Command not found anywhere? - if (!checkPath(cmd) && !where) - return null; - - where = where || path.resolve(cmd); - - return common.ShellString(where); -} -module.exports = _which; diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/npm-shrinkwrap.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/npm-shrinkwrap.json deleted file mode 100644 index 90b7d2f7..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/npm-shrinkwrap.json +++ /dev/null @@ -1,559 +0,0 @@ -{ - "name": "vscode-instant-markdown", - "version": "0.0.1", - "dependencies": { - "bluebird": { - "version": "3.0.6", - "from": "bluebird@*", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.0.6.tgz" - }, - "instant-markdown-d": { - "version": "0.1.0", - "from": "instant-markdown-d@0.1.0", - "resolved": "https://registry.npmjs.org/instant-markdown-d/-/instant-markdown-d-0.1.0.tgz", - "dependencies": { - "highlight.js": { - "version": "8.9.1", - "from": "highlight.js@>=8.4.0 <9.0.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.9.1.tgz" - }, - "markdown-it": { - "version": "3.1.0", - "from": "markdown-it@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.1.0.tgz", - "dependencies": { - "argparse": { - "version": "1.0.3", - "from": "argparse@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.3.tgz", - "dependencies": { - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "sprintf-js": { - "version": "1.0.3", - "from": "sprintf-js@>=1.0.2 <1.1.0", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - } - } - }, - "linkify-it": { - "version": "0.1.5", - "from": "linkify-it@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-0.1.5.tgz", - "dependencies": { - "uc.micro": { - "version": "1.0.0", - "from": "uc.micro@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.0.tgz" - } - } - }, - "mdurl": { - "version": "1.0.1", - "from": "mdurl@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - }, - "uc.micro": { - "version": "0.1.0", - "from": "uc.micro@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz" - } - } - }, - "send": { - "version": "0.1.4", - "from": "send@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz", - "dependencies": { - "debug": { - "version": "2.2.0", - "from": "debug@*", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "mime": { - "version": "1.2.11", - "from": "mime@>=1.2.9 <1.3.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" - }, - "fresh": { - "version": "0.2.0", - "from": "fresh@0.2.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz" - }, - "range-parser": { - "version": "0.0.4", - "from": "range-parser@0.0.4", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz" - } - } - }, - "socket.io": { - "version": "0.9.17", - "from": "socket.io@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-0.9.17.tgz", - "dependencies": { - "socket.io-client": { - "version": "0.9.16", - "from": "socket.io-client@0.9.16", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz", - "dependencies": { - "uglify-js": { - "version": "1.2.5", - "from": "uglify-js@1.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.2.5.tgz" - }, - "ws": { - "version": "0.4.32", - "from": "ws@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-0.4.32.tgz", - "dependencies": { - "commander": { - "version": "2.1.0", - "from": "commander@>=2.1.0 <2.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz" - }, - "nan": { - "version": "1.0.0", - "from": "nan@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz" - }, - "tinycolor": { - "version": "0.0.1", - "from": "tinycolor@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/tinycolor/-/tinycolor-0.0.1.tgz" - }, - "options": { - "version": "0.0.6", - "from": "options@>=0.0.5", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" - } - } - }, - "xmlhttprequest": { - "version": "1.4.2", - "from": "xmlhttprequest@1.4.2", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.4.2.tgz" - }, - "active-x-obfuscator": { - "version": "0.0.1", - "from": "active-x-obfuscator@0.0.1", - "resolved": "https://registry.npmjs.org/active-x-obfuscator/-/active-x-obfuscator-0.0.1.tgz", - "dependencies": { - "zeparser": { - "version": "0.0.5", - "from": "zeparser@0.0.5", - "resolved": "https://registry.npmjs.org/zeparser/-/zeparser-0.0.5.tgz" - } - } - } - } - }, - "policyfile": { - "version": "0.0.4", - "from": "policyfile@0.0.4", - "resolved": "https://registry.npmjs.org/policyfile/-/policyfile-0.0.4.tgz" - }, - "base64id": { - "version": "0.1.0", - "from": "base64id@0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" - }, - "redis": { - "version": "0.7.3", - "from": "redis@0.7.3", - "resolved": "https://registry.npmjs.org/redis/-/redis-0.7.3.tgz" - } - } - } - } - }, - "request": { - "version": "2.67.0", - "from": "request@>=2.67.0 <3.0.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz", - "dependencies": { - "bl": { - "version": "1.0.0", - "from": "bl@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.4", - "from": "readable-stream@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "process-nextick-args": { - "version": "1.0.3", - "from": "process-nextick-args@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "extend@>=3.0.0 <3.1.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc3", - "from": "form-data@>=1.0.0-rc3 <1.1.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", - "dependencies": { - "async": { - "version": "1.5.0", - "from": "async@>=1.4.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@>=5.0.1 <5.1.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.8", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz", - "dependencies": { - "mime-db": { - "version": "1.20.0", - "from": "mime-db@>=1.20.0 <1.21.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.20.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.7", - "from": "node-uuid@>=1.4.7 <1.5.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" - }, - "qs": { - "version": "5.2.0", - "from": "qs@>=5.2.0 <5.3.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz" - }, - "tunnel-agent": { - "version": "0.4.1", - "from": "tunnel-agent@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" - }, - "tough-cookie": { - "version": "2.2.1", - "from": "tough-cookie@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz" - }, - "http-signature": { - "version": "1.1.0", - "from": "http-signature@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "jsprim": { - "version": "1.2.2", - "from": "jsprim@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "from": "extsprintf@1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "json-schema": { - "version": "0.2.2", - "from": "json-schema@0.2.2", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "verror": { - "version": "1.3.6", - "from": "verror@1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - } - } - }, - "sshpk": { - "version": "1.7.1", - "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.1.tgz", - "dependencies": { - "asn1": { - "version": "0.2.3", - "from": "asn1@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "assert-plus": { - "version": "0.2.0", - "from": "assert-plus@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" - }, - "dashdash": { - "version": "1.10.1", - "from": "dashdash@>=1.10.1 <2.0.0", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - } - } - }, - "jsbn": { - "version": "0.1.0", - "from": "jsbn@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "tweetnacl": { - "version": "0.13.2", - "from": "tweetnacl@>=0.13.0 <1.0.0", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz" - }, - "jodid25519": { - "version": "1.0.2", - "from": "jodid25519@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "ecc-jsbn": { - "version": "0.1.1", - "from": "ecc-jsbn@>=0.0.1 <1.0.0", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - } - } - } - } - }, - "oauth-sign": { - "version": "0.8.0", - "from": "oauth-sign@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" - }, - "hawk": { - "version": "3.1.2", - "from": "hawk@>=3.1.0 <3.2.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.2.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "hoek@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.10.1", - "from": "boom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "aws-sign2": { - "version": "0.6.0", - "from": "aws-sign2@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" - }, - "stringstream": { - "version": "0.0.5", - "from": "stringstream@>=0.0.4 <0.1.0", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@>=1.0.5 <1.1.0", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "is-typedarray": { - "version": "1.0.0", - "from": "is-typedarray@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - }, - "har-validator": { - "version": "2.0.3", - "from": "har-validator@>=2.0.2 <2.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.3.tgz", - "dependencies": { - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.1.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.3", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.0", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "commander": { - "version": "2.9.0", - "from": "commander@>=2.9.0 <3.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>=1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.12.3", - "from": "is-my-json-valid@>=2.12.3 <3.0.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.3.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "generate-function@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "is-property": { - "version": "1.0.2", - "from": "is-property@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.1", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - } - }, - "pinkie-promise": { - "version": "2.0.0", - "from": "pinkie-promise@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz", - "dependencies": { - "pinkie": { - "version": "2.0.1", - "from": "pinkie@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz" - } - } - } - } - } - } - }, - "shelljs": { - "version": "0.5.3", - "from": "shelljs@*", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz" - } - } -} diff --git a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/package.json b/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/package.json deleted file mode 100644 index 20e5eef6..00000000 --- a/.vscode/extensions/dbankier.vscode-instant-markdown-0.1.0/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "vscode-instant-markdown", - "displayName": "Instant Markdown", - "description": "Instant previews of your markdown files as you type.", - "version": "0.1.0", - "publisher": "dbankier", - "homepage": "https://github.com/dbankier/vscode-instant-markdown/blob/master/README.md", - "repository": { - "type": "git", - "url": "https://github.com/ziyasal/vscode-instant-markdown.git" - }, - "engines": { - "vscode": "^0.10.1" - }, - "categories": [ - "Other" - ], - "activationEvents": [ - "onLanguage:markdown" - ], - "main": "./extension", - "devDependencies": { - "vscode": "0.10.x" - }, - "dependencies": { - "bluebird": "^3.0.6", - "instant-markdown-d": "0.1.0", - "request": "^2.67.0", - "shelljs": "^0.5.3" - }, - "__metadata": { - "id": "b7495032-d1d3-4be2-a2a1-695559fcd3d6", - "publisherId": "261c2fe7-dbea-4dbf-bff3-6da4a886e8d2", - "publisherDisplayName": "David Bankier" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml deleted file mode 100644 index 7df06714..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.codeclimate.yml +++ /dev/null @@ -1,7 +0,0 @@ -languages: - TypeScript: true -exclude_paths: -- out/**/* -- .vscode/* -- images/* -- typings/**/* \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml deleted file mode 100644 index b85ca91b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "5.0" - -before_script: - - npm install -g gulp - -script: - - gulp diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest deleted file mode 100644 index ec8ce584..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/.vsixmanifest +++ /dev/null @@ -1,32 +0,0 @@ - - - - - Rusty Code - Rust language integration for VSCode - vscode - Languages,Linters,Snippets - Public - - - - - - - - - - - - - extension/images/icon.png - - - - - - - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md deleted file mode 100644 index e8bfb4ce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/CHANGELOG.md +++ /dev/null @@ -1,119 +0,0 @@ -# Changelog - -# 0.18.0 -- Added support for separate check command for libraries (@vhbit) -- Added support for exit code 4 when using diff mode in recent(master) versions of rustfmt (@trixnz) - -# 0.17.0 -- Added support for `rustsym` version 0.3.0 which enables searching for macros (@trixnz) -- Added support for JSON error format and new (RUST_NEW_ERROR_FORMAT=true) error style (@trixnz) - -# 0.16.1 -- Fixed bug with filter for formatting (@trixnz) - -# 0.16.0 -- Snippets! (@trixnz) -- Fix for `rustsym` intergration - -# 0.15.1 -- Fixed a bug with check on save not working if formatting failed (@trixnz) - -# 0.15.0 -- Prevent the formatter from running on non-rust code files (@mooman219) -- Support for `rustsym` (@trixnz) - -# 0.14.7 -- Fix for issue when returned by `rustfmt` error code `3` brokes formatting functionality integration (@trixnz) - -# 0.14.6 -- Fix for `rustfmt` integration (@nlordell) - -# 0.14.5 -- Small typo fix for settings description (@juanfra684) - -# 0.14.4 -- Fixes for `rustfmt` integration (@junjieliang) - -# 0.14.3 -- Small fixes for `cargoHomePath` setting (@saviorisdead) - -# 0.14.2 -- Fixed some issues with `rustfmt` (@Draivin) -- Change extension options format (@fulmicoton) - -# 0.14.1 -- Preserve focus when opening `racer error` channel (@KalitaAlexey) - -# 0.14.0 -- Stabilized `rustfmt` functionality (@Draivin) -- Bumped version of `vscode` engine (@Draivin) -- Added option to specify `CARGO_HOME` via settings (@saviorisdead) - -## 0.13.1 -- Improved visual style of hover tooltips (@Draivin) - -## 0.13.0 -- Now it's possible to check Rust code with `cargo build` (@JohanSJA) -- Moved indication for racer to status bar (@KalitaAlexey) - -## 0.12.0 -- Added ability to load and work on multiple crates in one workspace (@KalitaAlexey) -- Added ability to display doc-comments in hover popup (@Soaa) -- Added `help` and `note` modes to diagnostic detection (@swgillespie) -- Various bug fixes and small improvements (@KalitaAlexey, @Soaa, ) - -## 0.11.0 -- Added support for linting via `clippy` (@White-Oak) - -## 0.10.0 -- Added support for racer `tabbed text` mode. - -## 0.9.1 -- Fixed bug with missing commands (@KalitaAlexey) - -## 0.9.0 -- Removed unnecessary warnings (@KalitaAlexey) -- Added some default key-bindings (@KalitaAlaexey) - -## 0.8.0 -- Added linting on save support (@White-Oak) - -## 0.7.1 -- Fixed bug with incorrect signature help (@henriiik) - -## 0.7.0 -- Added support for multiline function call signature help (@henriiik) - -## 0.6.0 -- Added cargo commands for examples (@KalitaAlexey) - -## 0.5.5 -- Fixed issue with racer crashing on parentheses (@saviorisdead) - -## 0.5.4 -- Show errors after failed `cargo build` (@henriiik) - -## 0.5.0 -- Added `cargo terminate` command (@Draivin) - -## 0.4.4 -- Added standard messaged for missing executables (@Draivin) - -## 0.4.3 -- Added `cargoPath` option to extenstion options (@saviorisdead) - -## 0.4.2 -- Clear diagnostic collection on cargo run (@saviorisdead) - -## 0.4.1 -- Spelling corrected (@skade, @CryZe, @crumblingstatue) -- Added `cargo check` command and diagnostic handling to editor (@Draivin) -- Added option to view full racer error and restart error automatically (@Draivin) - -## 0.4.0 -- Various fixes of rustfmt integration (@saviorisdead, @KalitaAlexey, @Draivin) -- Cargo commands integration (@saviorisdead) -- Tests for formatting (@Draivin) - -## 0.3.3 -- Fixed bug with formatting using 'rustfmt' (@Draivin) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE deleted file mode 100644 index ce33409f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Constantine Akhantyev - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md deleted file mode 100644 index 2025d23e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/README.md +++ /dev/null @@ -1,80 +0,0 @@ -[![Build Status](https://travis-ci.org/saviorisdead/RustyCode.svg)](https://travis-ci.org/saviorisdead/RustyCode) - -# Rust for Visual Studio Code (Latest: 0.18.0) - -[Changelog](https://github.com/saviorisdead/RustyCode/blob/master/CHANGELOG.md) - -[Roadmap](https://github.com/saviorisdead/RustyCode/blob/master/ROADMAP.md) - -This extension adds advanced language support for the Rust language to VS Code, including: - -- Autocompletion (using `racer`) -- Go To Definition (using `racer`) -- Go To Symbol (using `rustsym`) -- Format (using `rustfmt`) -- Linter *checkOnSave is experimental* -- Linting can be done via *checkWith is experimental* - - `check`. This is the default. Runs rust compiler but skips codegen pass. - - `check-lib`. As above, but is limited only to library if project has library + multiple binaries - - `clippy` if `cargo-clippy` is installed - - `build` -- Cargo tasks (Open Command Pallete and they will be there) -- Snippets - - -### IDE Features -![IDE](https://github.com/saviorisdead/RustyCode/raw/master/images/ide_features.png) - -## Using - -First, you will need to install Visual Studio Code `1.0` or newer. In the command pallete (`cmd-shift-p`) select `Install Extension` and choose `RustyCode`. - -Then, you need to install Racer (instructions and source code [here](https://github.com/phildawes/racer)). Please, note that we only support latest versions of `Racer`. - -Also, you need to install Rustfmt (instructions and source code [here](https://github.com/rust-lang-nursery/rustfmt)) - -And last step is downloading Rust language source files from [here](https://github.com/rust-lang/rust). - -### Options - -The following Visual Studio Code settings are available for the RustyCode extension. These can be set in user preferences or workspace settings (`.vscode/settings.json`) - -```json -{ - "rust.racerPath": null, // Specifies path to Racer binary if it's not in PATH - "rust.rustLangSrcPath": null, // Specifies path to /src directory of local copy of Rust sources - "rust.rustfmtPath": null, // Specifies path to Rustfmt binary if it's not in PATH - "rust.rustsymPath": null, // Specifies path to Rustsym binary if it's not in PATH - "rust.cargoPath": null, // Specifies path to Cargo binary if it's not in PATH - "rust.cargoHomePath": null, // Path to Cargo home directory, mostly needed for racer. Needed only if using custom rust installation. - "rust.formatOnSave": false, // Turn on/off autoformatting file on save (EXPERIMENTAL) - "rust.checkOnSave": false, // Turn on/off `cargo check` project on save (EXPERIMENTAL) - "rust.checkWith": "build", // Specifies the linter to use. (EXPERIMENTAL) - "rust.useJsonErrors": false, // Enable the use of JSON errors (requires Rust 1.7+). Note: This is an unstable feature of Rust and is still in the process of being stablised - "rust.useNewErrorFormat": false, // "Use the new Rust error format (RUST_NEW_ERROR_FORMAT=true). Note: This flag is mutually exclusive with `useJsonErrors`. -} -``` - -## Building and Debugging the Extension - -[Repository](https://github.com/saviorisdead/RustyCode) - -You can set up a development enviroment for debugging the extension during extension development. - -First make sure you do not have the extension installed in `~/.vscode/extensions`. Then clone the repo somewhere else on your machine, run `npm install` and open a development instance of Code. - -```bash -rm -rf ~/.vscode/extensions/RustyCode -cd ~ -git clone https://github.com/saviorisdead/RustyCode -cd RustyCode -npm install -npm run-script compile -code . -``` - -You can now go to the Debug viewlet and select `Launch Extension` then hit run (`F5`). -If you make edits in the extension `.ts` files, just reload (`cmd-r`) the `[Extension Development Host]` instance of Code to load in the new extension code. The debugging instance will automatically reattach. - -## License -[MIT](https://github.com/saviorisdead/RustyCode/blob/master/LICENSE) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md deleted file mode 100644 index 856a3fbd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/ROADMAP.md +++ /dev/null @@ -1,4 +0,0 @@ -## Roadmap: -- Debugging - -Pull requests with suggestions and implementations are welcome. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js deleted file mode 100644 index 16def122..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/gulpfile.js +++ /dev/null @@ -1,20 +0,0 @@ -var gulp = require('gulp'); -var tslint = require('gulp-tslint'); -var shell = require('gulp-shell'); - -var files = { - src: 'src/**/*.ts', - test: 'test/**/*.ts' -}; - -gulp.task('compile', shell.task([ - 'node ./node_modules/vscode/bin/compile -p ./' -])); - -gulp.task('tslint', function() { - return gulp.src([files.src, files.test, '!test/index.ts']) - .pipe(tslint()) - .pipe(tslint.report('verbose')); -}); - -gulp.task('default', ['compile', 'tslint']); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/icon.png b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/icon.png deleted file mode 100644 index 74b4bd695045ebc52c21af95301adc9311ca881c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5758 zcmV-^7J=!BP)rlOar#xVHcKR}urj-85WU}*d52ce!FO;4x1(Dd{rLvS^kzaz+Qg+43&c`E^ z2A4h%FgKT)L-C6=0SiO%&803L%dQ&ad>le)iUzvAtx3hUp3qiqE4OmtpW{`0v8nBU z+vNFwgO#K7`BHl6Lk5HT&J zd0%5WX?GeMO2>h@YkR3UyYLB!%U`9zGx2pv`bl*gj{l2(jn1Mg!nL1jDhv@mJF-Z) z67J}KBA8uxsR*X=Sf`PpG*`ff8oxRCuGi#KZ;di+0mQR!BHISEExW1CGQBlHFEkNU z(hzW6fL~TqN}IfE{LRuTaMO61)5uVoEy2s0>}~aTd9vJ#3c3NFB;T~tqib}0T!03k zRgt=rZq*e6NSNg`GPKSp8t`0%sVfTb6iOXlX|k6#hX|N!eoNB^SLi}PkbuM0isxjy z)5uUb6|B7};Xr|h82+jxduUULfQwjMPa@4>-q38f5EGn6hWupPwaF{BhvVvGa)^K@ zX|>ns>X7FY7!n%W4tV3VU&m`b2j6q4zfYf_ujx$xnS4s6M$Tce%Fe$?pCG$c!>Hop z#?j*z!PbLgoZbtiBT7$|)|75(J=<@U1f0m=D|O^qtPFkyy`D~>hq97Bm~?7zZ;%T} z8~GfW&%P^pLJ%^7Od!{jl`1wwhao}S-B~I$U^|6yiKp9x6@U^ z9zfH$!pSPMb+)nuLoTjXL7Lv!-A_+SN{tY*DG~mHtPe-SxM*{NK7?`^%<$xScZYA$WuF!hmCsQ!r$to142By6i zR=<@Ur#d=6p?*&(k|W8E5R4!7oD1TUpQKR0^3WRd4*U)$s}T6UY~iUid|pbuC%>g% ztS(Jv{65eSeo$>r$QQ{oi4?F`D;Px6XYictg4f9s*3A!1gwGnUOKM4zj3oDxHRQj^ z)Y|ewE+M-TDG+UftD4PDC(A&81g*Sp;M-cjZ~8nL?KCKmQDj*X1=ym1{JWE7Aak*; z{PEuWO-_RYxhatXum${RZk_%8)>(zw`RU#nOvckw=~mI%iMqS$*5^2V5b!xEwgCDJ zTbMI7p7Q)p_h$REg5zp|-_AR`mgVQ~06z}?UGfE|j{^Au`M($iEN4Y^r1A<~=1JAJ z`wxo2C|lL}v1#}W{7t0I>BE4FcoWu6k?{)(aAXKz50K7!5&Fq3(ZaKFm0!|oM+J=BV z@cK=A9~X7g-jtW|b@($CC^*T$$Dp^o)=L6%<&j$_46L;SbQL22`rOa~tt7n-U&#{u zrBn*$=(BWw3$nw8%B@${-o)(ZZ)1sp`u9C_BX{9LQYiRE=sd2qs>8n3-LH1%w~21I ztbb@XnQ3RO$HycRaDXy~M)FV%-k}Fq4cy1xI69TwNMFU^`75a#dJJF$s%t(C zO=(0;O{Cyx>kMPSd0sp5jidvQBe+tnpA)`sp6&7sP>T5-_n9h5ZNQ&MAoRC?1S zUIq3Ye!N21VA6<+UJFO+tZsLB1pbsr4x}#URq3-=OBt2YCcG|Y1SkUtWJINUb&rBG zpsSU%v+c(8TM+_Qgy=F0F4Xz#D41Qz{dpYv0KRGe6%Fv&6Z|O1X#LGZEP9`_bMKC0 zad85`o{6gtEsuJnaxd_p{OkP0ygl`}j?L-42?UVpls-yIX3%3=@E-o8MZhDLc5KI8 z>^oFjUZCQtme-31_B8W<4!ej~04VQ0qrMRgVt(O4+&6VTLd&ndbOe#GeesUXSm8$RWFTOJ5A{O=@B~*BwBR%g{)Lt!v@)3hHyZ** zxF1zXz(ewi&saJbnid~%HyCdu2KkX0F5w6_Km}OFe~knMt1Ge|(d^I-Q!dR?A1qMBEgLCH$8m~@I` zW8)`UHbBK@M1VUKy^N}Z|AM||e|L50m-VcHzQJ9N?H;VQ0wR`I0p$`?MAw@W^XbE% z0CkUaK#dWsPTH#&jo!~a1+7J8A^J)Luecm((N=Q*l;AIhrc8VpOZodcg6!$NZw7@Vt9Sv>Q1PKh1suQvr~p@K?GQ;-*;lb75_c3#v~b4b$4kE6`N;8FRN# z#pMG&P^?dpfyv{l%ee{k!B&RhKZZ|Bx#7Y_K@ZVzS4AuGk4)P>V(<+C{3?!(=VV#> z^uj~n1wk!JR1DGnF6JDOSb% zGeWo~$o;(HkpumGK(A{V1Y=-nC# zSe8n_Tgc9lEOVr)03X!-J|2+lI6Q>7w*=6QM|gK-0;(?k(<-X1i|(kAg4UFjUS_|k z?lAwRDe!=RMd_F9es>|>NJ&p!kUK0UxQ&L&22?!0(=Y)2nw9XJ2 zM3(Y;LRC{?#sj*@fXW1*j0j+vzpVxWev_EO0cevocA$EKQUfS_dpb6;PCiAKvAQqY z%4mO@6dFdrK(wt|0@#`RC#29Se>Htj^~t>*g=!f!QmtS819hLdap+ACyvAd zmfrO>=s=Kg{WUT8ngY+(i}l!5ouN^*i&#^iK6^z*)aEsifWNPSfN#gH_R%g0SicNt zFMQmEM*;!M%p^D#<0cdu57Q}ru0n=?T6K1(R7Jo5^mYvtTok%?Jlc>pf|x5)MSy7= zV%tcYOghMrXj52VD*#qvXfMO7JbIUa84&_T z*PWsilgpg&Z*n|lg*z7&DvhK49A;0Ef!=${pG?33Xk*=JMh4_^(g#2boSwqpeZ56C zg^UP2kbrxWf*G-v;IX>XjO5Q1hCSEw5}D5qZClr(M+J!O4fGE9WCE_PJ54Be3BCpT zflTPS;?Rl&ankMu_ohDFz&-3yJ9OkjQu}N!0Cwh-k z{>TgmtNVpHyYBan4ValaIP!;j({2$(+F}ZF2VPAcB@-(>E#}f=Xa}7~J6*9u3+hc5 zsK;>v^dEKAeqM+W(~0J}9quu55TxfIwmjO7VZlrs{&F+{{S*4<4CGw&FNjtg9~jNf zIlrfLSZ+>5FUHCro*U)MDG#pwxxoQso6rGX8KMNd&8DXMSzttMm!+>?SapE5?ZbnU z-c_vTt5M?kVwXMrivlzfeW=x6zFJ_dE9AGZ>~`--0@{wQMdzV0XlN*Q7SV4!IaESt zq50^yT>Z4%=JZNHL#)BFH_)%y`0p7gVDUrI3RC(yD1B)D?786cYTGe#J-aMEudb4m zw?RA5M~POrS9TRa|CVs4577(gH4DD+{&;~w!GWx+r2=%Y?xPtT=ly7DPK*xZDlcQ} zg@86xX!bzVcj(EOHG=T{%<3PYe$dPjW65No9OJYM*vG$eG7l&~-4zMY-7*KN=O61`#I`)1j!(y@ljGTzM0}?fVGLU$?Ln?9Cp(w9{d0?T7RNXl z2W!ggYCU#%Ym)Kvp$oJXpNfumPe-TY>39~oh#p(_R$4i!S}3&YV#F!osZFVjGo6eB z`i%tpXejpgN(1C4H-7w+Z>5!GAoF=`%0YVoA}U1iW+a>U$?V+eWExm$Z;|&sJ`_LI zHh#!j;e@l>PEio>Dyv13f$;E4ijXX~ z)1$sxGlVn+IcQ_M3rB`Bv`(txE_9%iVL;!|2KK@b;a7|Mf#0X5^HlrgJ6Q$xjGdYx zlzr^H@e-ap>;Rq3n{uW}I?l;3pxboH8__2<{6cPrr~+y}6ADQ!^v%vG_vV|)Q`JQ( za8DalZWWmtjG?EX`=vXg`U>A;Q&1TM2J@QSPK(-3G$A*XNk{H2xSwZ?vptlbofYsq zJ^i#DRxK;6D>uuL!b1`8*^M4#Q=P;28TznX2U~#AZQ6O=>}^Ne0lW*3#`Et`9Okk4 z?6%d-uk`gFA9$<0JLwfzj1{n0MTqeWY*A}@eu<`|QML8%*%iOcZPE7Kq-RKwmC=KC z|Lx!ke5bq0+BV@uC#w(~o?q&(rZ9wr8d>J~8En^y% z2znU%-$b*zNVnsnRnr>n~(ysag2rk-8fK73;m5*i>~l;9b}t zQ}yxS#iX^df3QGjgtk=z2bAl9Bq3+RPpi$90mEnHh=R=zKNKnEvBos^FE+f{UU+Ar zEodh)7J-))&=7~3uG}HG<~P;c$vXo4o$glI!1YW7{J zD9;i!RSHsE(xB`27I`%rpE6d4-(xi|mf66RwXOsx{JgT!i&sSD8cr7J-NLi% zT3|NiA>VWRl^ zwH5xSEz5vNcWCqFXGBN$dQ~;_^F8y#*}t=G0_mnXOTUitSBgJnJj3a~p>T9zV$3!y zu`0$gJXjL5ksX=G7&pk+A!NCw>`M|T?$3X_n;iTp`d`V`o4;5i<3pQt9IxY>*jcj8 z@c#DxcsVHqgM$ymU-NbO%^{PyNdN!jgQ56lze}k42l=i#eB47}N?|*bK2`Mp2a}$;#7RWswg3PC07*qoM6N<$g8zmuE&u=k diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/ide_features.png b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/images/ide_features.png deleted file mode 100644 index b6a2104f2b366bf891f7e6dcef9f29c56d73c118..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50240 zcma%ibyQT}+CSahDGf@4beD9Bz|gHA(jeV6bV*4{h)4@acZ1X*pv2G&FmyM+!}s2I zz4wp1e(Pl&7H5XTnZw@u+0XNQB3fHh2^WhB3jqNES4COjH39;XKLP?`1_m1N&Wp(S z7~lt@`)egRgsO3x9pDAZJ6R1`1ccf|>^nKr~da3%kBH^o~@3~OA)WJNL5YCs6CrY+C7C;zi``qX=-g1M^CZn z#ypTE#vr2!t$g&E6BSpFbl22ON(nzd*^B!1D=SOV@8{jyN-j)koP2%v<&FSEY%)$z zjYW4TD)y_F%y;}&^WJ|DQ#@I&w5_ zF#EB^ov{~h-0PR{%we`7Ii6ZLvhf5R=CtIy^76yNPYwQ;FMExz!{7~$3;OJDzR{n; zCh!jh|M`e3xbpL5cMpq!8^_f#{~ua5Z}-h0)o1VcH&zds1OEIz3Mm>S){ys z<_P?%mCt>-9MoxJV-tS4hhFP-*nT+@j!E3(w^r(VzU#IY%{Ic*dB-@K!SkP=U{xZ zrdgmbX}|938b4$M!lG8} zFjoaB)uJQ)xa@x#Ut!)U<^RT}KZew8HG*6f`0}0zQO_3A2ue*)Cxa5x<@=vR`#;`a zu5$geY~nie!nabl&{Z3-hW36{993O`h)6tigAV8=W82x*rJY${K5W0Be#?nT3+FR3 zdc0Rr2`oxiuZC)fJ-}JA^hy(-#lA{o*V|ZhpU`tKl9LNHT8ts(VD*I0&a6v6-qn5L zF*g(Yxc8hc@ajvB`?x5-`|P_5j0>3K_2WUhxd*?0EpesT@F2Z?qHhB4 ztM--}dD=JvFAf%2!VVtwXD5an&sE_(VOnH4q55FL9-qC zq{Cs-?t6~s5)Dl6>&lNArXRD6&e|-l%iol}_U2G{{W>K^emsO#xT}>z z`R&N!Q653880*O7;3a-ere0??-tJKB`HHAH z`>huf(q=dPHD2O+Bh_uUtn|D1pMPS0-Og2c`iBCke=d>j5Yz2#<=9=Ff%ehnQX+2m zpxx~LLSs2XZ_gzxKWMju%lPNeH7vjS{w(t&3x#t7lF<9#&;37wFQI-~L5H?iN2{;D zzj;BL5=}Y|+01M5SjS_isr2Uq73?t?J1@l}Zppg6 zmIE$#wil@c-*4dbcpvwZ&&0vR;m=Cb^r-!|H|P0=j3Nu1t~Z5m&Uo+JgVJTBBma`}!$EWai%+ zQV-U@0M_a}7yK(%ifOid*h`uP1Lvgkve;f@Mq`7Du?E`s619xou9$Ye%kM1svI92# zvE)(XOU>@39*0m0txpD`xTME=Ihz(%0H&q&Lc@f(qjx+efcGM$5 zK0SZ^u@H}=oOi-HFiYI4YP?^>=Vaq3@1CAMiyJJ;%+$@N=&M8|9vvM`l@B5gB1h%K z1%fu=8Rq3r8ltAM84SZVOEqtUZrjVBxhbL_)6aNLBR-gR2(<|Z-Yh?qR8R=KXtNcu z3vP5;`VJ?nLowBPH=ZNP$M!b?Exmm_R~-IEJTN6S)$_-pGH;L#uxk`s4<@WiHd}TK z8#}k_?aq{wLv_z;1b`V3X<_Cx>wKa8!&V0E*XSdSyHc3Oslm52o|F}1ar=(A+u~a0 zc71s=FBQB)Qc|DkKsa-IRgk%2r>Vi$x$Qi-w``d0B1rzK8J3sI({UxoR{Zg7XIe=y zj)Gx1=&@bm@$MAT=xn|;!OjRIs%Fp0)S_6r6bW)6Bmn%UJr*x+0;VgS?a@fMpMz4oms@We=EEv>|x4<-wKl1jjyRia;M)UudIUe)VfQ-}rUbD#KI z_bw_iMm>{Pc0DF7#zEZMK;yH()VsU6&IcCh`?J)$iv{PD&!4FtBDTd_fc@XP1071t zG1MoHsy&e>X**wUzsjYqh zDQeu!3RFTLz7-y{z^g`g-1UEcFcdxRBi1`=zuwAr>%n9j0_wba9h>$Q)im~Ga`}1h|@xjYfD#0_%aQP1xi*V3` zzv%gIUA+p1bTEfLO~ERUX-mBk3E_7jkwq;A-tLQzE;Dc^h#!cw&&`JonTsjcEXs+|R*p?F!5F+7+9|8}FCH z7Ic{XU4Oe0hQAR-7nt;Tzx)pLg6tHG9zRvHM%)Vfpbk=yjX7t7OLT z5MfX7)%s_!8YK6uMC%#-w$G)10X_8b@bN(_5|{ex;EFaR7$5Zn&)xy3foW(kgC4&) zt|UhL@c8L#gP&hr?5A34-7&w&7sNayF#OG@Gk0x!Ej+k_&M`c)s@rRIDq^#RK({Zq!XS%qIza;}QO1bb7;k&0=utkH=EtORx#piTua|2h39W+Qq z;E&;59RbNcxDB<9Pb5>IM4Ic*xa@k*k0(V0N|GkQb&2Sn#&M^C5- z#t{3`+9ee4#7RH{QnHf(N^~>F=UP(NHum%NWzR~#48Gp(x`|>T(62HnE5xkrK?rl7 zkQ82f?K%Z!zH-@T@NaWcU(;@QuXmqqoddIIx8#%v*2Ci{Mur<@@!Os`_o3-ihf_`r zpFXV9Jr23*tQ(yh{b3{=bsH833y2^vO0pHD5`NGvjg-Q0VKDpn*R~nW?ueQ*B^iY- zG}C%qZYSbhAImfB3MWvbOYDF=XZK)hcmJMDlDOJ)I-Cu@icZi5!5PRPw>-DLdFN~P znX~j$ReM{r1(e~^m9xesgTX8Ag@i+?P&mzdstTh9_T5_nAeEf3hS(d9oKx|54vt|S zvi||fe}#yJi(m1plCq(p&Rt8SHuKK8wlm)hQ~2CkDxSSm6B;)!lhXWI7N}P5z)~W9L%qX2DlzP7;b8vTE`znaY>#D){yR*wNnO zHa|Yx_WG?OH@=MT%+M)PEZZCv*G3G9Tp+0VF=g;8WXRpg)+Csx{Ve4H7j&L8*%J?@ zr&EoNXSRtx?*-Y!a1 z1zL+<<78Rwb*KISN_>n)yB@l3n1&Z;&sjP0;+S*$d3ww8PHfaddLq`1Jkm8jM;jc~EwH3BNmL`j-#U~OUyZQpB^p&zu()t_^MDBcC??WS zEztet?6B8VdEfppbsrOKMzP4?Hr)V5Xl`Y(>bR%*Y~~d2qYTEB^H}qv%jW7ykrqYU z!wr1C#yYxp28PCsfXrN@Y4wUxgTQdSC(3pkm}>*e%>wDnx+I3H?No|kD>M`0#tL^j zzg4pdiPN~4IOR~nsnGN3Xtfp5=6r)AQ;(@v%_ww-2-qY}TGC+syd_LF9*i$-UqdKg zzKt_+=|)9AJMKFl5%)^hLch&%2)a4jaRd5GSkpbBC-lJ$!9c+q@ zME`bR;CCth+y18ywE{aH;-m*nMQ>a-|bjoj*ccX}%V!zQKs z+|$$0<>^06kxkXa)^QXA_c3WHigcq%?xkz|10zEg=;L3y6`vSOGyRYB4_%P_Q397=wL{tp7(QAY|cyl#K+*HQ(5O8V61bZcz2{kGd^xE+j7 zrV~!n*{eFxg(hP+rGz_mfEr5?O5?gs>#9D_VCPz9z2jb`Ng?T5kL9wMGG#%a$t>Gf zK#`aFkZ49h(zk*I#oT$A2zq#_bhK(@yHSU{8i9aTVTU2bwxT7zFK`XiyywmZ@ZiSB zeB^Sdsn=48Pnchee~$&tH|;N>TZR?$Kw@m)QiJ@nL5iiK1;Xoq=7vxjQ$s}Y{uOp`NRpi^HR%_hzCRQMw^d++5xe*KdzuF0_J7R_^|Ch z=)ncLyQ>o4`o<*H6iA3|RwLqST9FK$%EBP7a7Z>O#)BZi-!W5sSp7;IjgqdPmnzGE zp>Pn^(BbJl)yI{{xJATSudCR65fuUzh zeGrwLJN*`U736W-uBf?JAArc-z~ApBe^}r>!95VViDL*Q@BkqZG6oa$%|}H<28*A8 za*e{yd@h%~nD7K-ncGjt#Up&Rk#rAv12j4Dgm4KGn`#_CRXx>X)}cIDAnzI*-jn3< zW0b8}>y;3=mI0{iCXD)zBzj0-aFYf;Dd$VjIS|uZr^a?JA!`pCB5OR=IwOOOpc*Xk ziX_>;A|R_0L?>&-poQnAK${*mh+E;vIfJaAYN)$^f*u*-R z)pn^IR-Wx)p@*T6?uWN!YF%k2EXqqCSKA?)NpX{AV3vHcISTI^H_HspjP^Ao3~ye| z!I1Yj4qW`rt4{SReB!|QYrN$R1uMqD>p?75XquSSQmVk{sMUyHH`aF4i(oPyGa4xW z6T;K0^@Z5qur6by;1-X>zdYrwat5|}Ml`9>$ewRN2~6;CBq#DqN%enk3XYp!8_EW= z{3MXCP#H0*bMg#v?zmQ*Gk$efyW8tJNXxd=;yG=NAr;OzD$5|zRuh938oD`@=YOI? zDqQiMFmZ)i%;Q^Cb_`35ZA}f)4}1de$IGC{QV!Fak1y1mn|+Q6zN^RFb)(aLqp&Jt zZ;T_ow8a!4t9pm{0DwDY8I-XNIAks~U*?}W5=5QN**EcM9Ll`T=4G!--uz0|+S!HHx*y_Dr*qh9zN}ecp7n^irJUu>9C0__5QX-&3I!*Bg)3 z@tOE>KF~2rPNAFpLrs+AacZ&uEOVQ@jn1ILj=_!l-&Tj9b+M~%RZ)k-0pwBLshYZP zt?MD^&nAb%X+hfr9vI}aNataHj<{_OQDX_@c%*AIIcCLqoZ1c7dYFe2gqQtw=b)&Z zrWl;)Ycq~@Bi%1bb5cgXNAb!L^dkwg&K;r8I@-!@fsPg{YGb>Q6)517j3WqqKIbzA zp z^uczQee>wQ+=o0t`dnm97lzie(x6EH-p@T#CXY|i2H$K@d|$(yS-JizbaJicV{ zp~g(ci+*58c31ky03#sq=G;duJ_nGq(xBU8Y$^TM-6OlC{vetA zfUCl#X-sF6>EipLWF}8>Dhd3xnbwb7NeNT4C{MsrT(4}8UeE=O$&wA&|0VND=niT; z?#qmCE(>|hL6$)%%fYQ2L-osIqu+Jvn5{QF3?<*Df5_>49g+9I%z351u`X&~P%AdY zlQ2M|MsW{oi+?$)VwuaJu$!bsC)oLFy!)o0>3R*-GFZlP^+B0lY)5#zD@GsaBJZgk zmNU!)%Yu*xYX%V0xjD6(p8F`~rNPcFaN|&7_oiX-ul8LdhzMR`C{|e2b_tI7;JjbW ztEd|}Cy2v?$tk%oRfLerxky?&uG5T{XcZId0DOa6U!Ys?=qC{|z7fGY0Lc6dfU{}< zid^ppF(7ccb(4VfJemzDHD$L45aR+k+IltpYT@T4q?RWWeIqpr;uBksva>GRT za$++A{hIuDjH5^=&tbiielvOon?$yI?uE6^3;^e!z0TSwBi~nRli|)?*{dlkx|h z4g^i9x0vdip)Kk$lxjUo<;QP2b=c9}wWfSHHGjxIx%HNO90 zZxa>*t&EGT;{b3}93Fd@T$mn~@UsKacY;Oh(n#Mw{Qc3~hd0Ymq1=Q(NMYt0;z=+S zmKG;vcZ@S{QT!rZqL1acn;#ZV6@d3Qk-8C7YsG%F_}r?(6GMwrr;j+c*y|H_XcDaN zb7VRB9ACg$0!cCX{U#WFLUs{Mo-R@G4kvi$Z(ZpFna*f1W<^QY3Q0IMncVnhR_n+8 z?}ILLkSKy$Z~^NQVIqKG{2iCPG$FMsrnTP;U^B_~v!t|@iLc`vXkp_W3agJrP1ou? zC!nwigNyNW+dbuYbhVyL+pLh1Y&re>o}La#KNcp}7S0_$#h+Dw4#j>!oAlBzs5r0} zP;L6VqJOyGKfDm6aVX{dRMI{;{2BAK$M59r!D2JyyB-IwlMQPqK6$Q}3qm1QHT4mAso) z)P3vMQ8EFD)Aii#;CIP>$^+ zpWP&VJGVVtaUMxubR53a+SrooqZt$=e=yRF_;}lDEE&w^L%3I zFLW@@RIKYAi=~1USJAQg0(g8T{@HM5+(vyZIV2cy`@Tm*|ju;}$PF789lLeb^>Y!So|KN9X z3`=xZ8b3w+@H^}{;{Nv&Jx}K4vToNHwfg57bi!+W{*Mgre-^)ZAy51e0JQZO4_OGd*`PwzQ@=+A)cisc%qHqQ^P%%@KJ`sn~eJG3>H?V0UoTQQRK>zBI5X>UIO zXV^|}X{=U;u}NPC3oQKHpUew6Rmry&JnXl+z1aWZv?PZ4Q*BieK<~JT4je?8wfS7r z_i%*1M_?*+C4G^%xybnoK^_+jRv$#3b*}2r}HF|}) zZael_a8)uYN?zr1HDnc1CEwcnu$Nk@o<5*Kt(N*$!{*l?zApi~Y-;5~mBq3}XufwY zQ$aF8lwu$3yx}XuT2kAyMcEyrVYb65ERgS>9QMD9lW`~n=-cL8)U(81eHL=2(s@%2 zs+D8alJdVEgo^psJIxsZ z^HXXiATDl`ycxvln%m;>I>fhWd%AJLlFC35Qz!thR+FT+H{_qw!Hae+VU|uBn&VZ zYkn0~&6KL8miPWOkx1Od484)xhWf>ttq1Xz^2v*_)3qT52Ki?E?)u8lEeutkEs?mP2cJkt2!MKvP$&nTVtgvLY9%T=!I-=d#rp*)Nk z-mPK?TVwg9wqSvnGtGN#bM+jN<6sy|b+Trk4{SX5=9%}q-*r%59-hJy#LdvVgD%h5 zk}NlbHtC-#?~KSv*!6)201%RXmn5)zm6eBtT3FkrfTZK{{)51e|9~P?Hy& z7CI`w;>HtlJ0Enu^eeS-#A$vN&6DOkI?Ht~<@XV`Kf(qT*vJ`lXY}{MqhiU6SHw^w zPUB@9GhDMP0Q2mq(zse5`>ia^ROuQ=i0&va+U+%QTcLlM{h_CJFWFh9TdkQev?kS7 z3Y06~v_JeQw$wBOr=#t`ggxPNdaJLBy6*{*kAs6(O{7@uK-2;slGcH7JCLsF1aRDd z;g`Xg>(1enovWrmX}_impD=S2>|HQijTtmG!4Z3xZ8%)0b1eQSiL2AXfVfQx#ww|}4mT`bh#+~Gg3*QMu5#{~>n>DL-i}=dolUfhE z8@9X@q7&XYzo1=!A6_H8>S|78>U&`?Cq}O=y0wdNLhh3bPga5pSLCO57RpLQQwPwu z)5{U+EoMlJwbF=xtcVGE_=-0i3$hPZzOOsT|6Drk;JDB*^F!e;N?wH9MEfE-0zHn8 z)^8S!w|S|KL3hAn(dZ%GM+$*w9 zncGp=seiIq2!%)Rn6PtF5q5m*)=LtQ6PV9(;P;fCq*(89<20$)p76Bdqw+V@U3~=) z+IAGEJ(~;`AtyHP-=A-sK67nSM815-Qofp~TP!@xROK84l)+QH%mKgKLxqCy{ z@8UoQj=G~{{mK`S_NqB(K1EdGJ73dNK-LEf~vznKh<1oo(*=v~&3;KiMHg6|iVmr;?fElv=RaQr`r)EqHw zL=y-3t*ZtyIHy$M9S#;-4^&Xz{2Fg*^***5J3L^D#An<6+I%YKgGg}yTkYX8E%Vd2 zot1#F3T!bGKl*fcfN+QRQBG@YkdQfB`d$Zzi ze`-5oAZ;EmABm$grNjab?u(IISBuc>|K%J~ZC-&q|_+fVJC{I_gcq6->=Sd5l^Hk-6m_ z>tJb@Cq0G+raAZCr&Ua!S9-rA*PcA<>EXy5GCsIhWDhdQ@alG_RhL4jf{jpH*srZ4 z)%FhJT&FM7D-7pv=vFtxi1?jiS=3rhg2VW`S`~|t4zqm69`gjvQBSe$$L}$?jDAl3 zAcGrdQY<0$IJ-5H6;j+oZK9OGM2J_l5+!fl7?hkVlaFMy892 z)0O_26N^>+HfaGpcAV(@bA9bDNktZtGP$BejKYEVrg(IAR(Adhp{l7bh^20ptxjPr z?7ZJ<7VUKAwoh!;BNS1i&%2uSLq<~I+GUns)`I$;nU5aJ1bvQ9WqZFF)jtxzpc~zS zh7PApYd1f-Hnk7d3w0;-?nCeXC7C16!ebZg+I)nX=m#-m3ReB>ab(0VQ_0yq5ar&C zf1o{ABiapf-nQQZ)8SGgVGyhe1cQ;G$eq-}fjJLkYTWUnJv6|);J&P4MJJ1Gqf(;J zby{31ckEemFrV8oQ_6ikDyHs@?_{#7=fyTr}NfXhcM0LqNmPY1`rNrg18dh!7@ zJRQbzH57CpDOxj`f}gWpa#&(;BwODGBiF)kWZP&ms6UBX5y|vNSnM?(Z{RW44tL?6 zNC;k|Jj?6;p}0sG_7sI~tDMU+fo!-go1uOa4^w|OI3Qt(v{IQ(Y&~Nowwz$LYm(zp zb>w2|!q13`{+tYuBfF-R5i`!Sd-T%}6#^^HH>*0;tSl@$QaqqmpV_@!^jS49pyl|7 z`%aynLsf00eBoFcxu}Xt$sT(XzY7EXY1@O=8FO&L-o}!n%g(l9VT^Lr!*Jf0@xdJ}6c31ncEMh8A zNzdIk*Xt9~XE!(!tC@A`ZqAS;9$%&sL?l`VF5FUgX&)|*sV+}NnFRHL6a6DST5uv3Cm*zpj%#T>ngz6b;<&_ta)_obWr9#UXgaQd`)jl4{v`{rfh?=z8HVP=w_NIPdv0@jrX zP3%b6VA~}Mrwl+*kuHFvTzZ+}20LuA-1!`U?Fj-i=9dcP#YwXyI4OEh(B+n(FlvyIx8Tj?Oz?Hxk{=OoCrq?k&|l#{QLM3Zp1? z9m59`%^ePguz*!5$x-7GXDP!O;wj^s%U8;R|G>J|dR?iME8;w2N-evWVl7sveDo9r zKGTYQ)IJ{Z!HDP@k{KuGPsgJ|?-(iDD-&?9Fz$ADE&Y`ju(B9V(@P|Kw;eu~A#w@c z5IYX@i@PGGQ$ULU*$62~q&|#z*Z+F$hRV{FB@iSY&4J4cOBDi>RD-@Ce%I~P)LfUL zn$F4>ScjTKMS?w6IPzgGhkgB+1pYuFJQXaELsJ?8dzh*)3G^oGqwIu<`Y4UB$%dIW znwgGqprGJ{J*NR9hx5pxsU;A*f@$-@;K!T-9viM1N-otWRfN|PY&+{xLMy=@iH!A( zA*9il6BcL(V-4VU6>S;hqSrhli<#qkL(Y+S_=al)C>v@An@~afwG-Kjwy36~7+MH4 zei4TJ;`O!rAf6DN_D65DUEHc}Pt#75#pMs~rU%3Agx+S~jN4q%@}eHxixERp{0CaS zCfQOPUa^;But{y4<)W@D&ihCU6|PFKr65a0#qT zQai>$Wwne*=VTMR4gRODuL5DB&p9*~k?B_UV207Djjf2bW$(|w8x49(Kga3)qb2v) zJc?}i*C+9}#Qaf%S`nT70WZ5cl>+;xyHLS?=kBiWD;-s?94DkPlZ84PYID&feI<=@ zg=-twGkU-L9jzNIe`s%A#~Q@(cZKLAo^fsXnk5e{W8hRE^yM}Y@f28o&Cha=xcMSG z=U%D~Np^$UYg@^#%P>_1(2{e4uOh}IYe`%Js%OAx(M=~b>b0^(-Pb5zbzSEQ3%v$| zLns$x{Z4Y;Y>)TIv=9X?rhv5Vx^nxI&!W@N?$W)Y={K5BtZ94ihgvtFftR2CGy~wAyuieQfi&=Qwg3|;aN1?tCdm*RbRV>NXmN_TBTw7)(k^$UT>J{d z<+xvPBB0GKC%^~UoBIUOXUGSWW<&6V^qPUF57B|MXts8wUo{B*Fy;<+!gtvJ$oWaB zYPdDpGf4VDfIdGt(HjQ!>XI6X?=)l9^hZc}_TZ*Czq-5CG`IH6)0mfT@Fm6=Z-O3C zXhfCvuU;iv1(sO&EIz6D;K{Vt1aE>6hFL}Cans5Z9J8+dTp)CUH--vSv^}xWSn&k1 z46F|P7yRgdF(p_giGLiUyL&Dzd-vINavr6TnyX`@;!|hFF-jt+a z@Y0ZiqDI}=gEt$_I5w1T?mUs=tXFwd`7{dAr!PL7YXn5~ge$2NnZeU(yc;G^D1QQV z)Vp_B;UD+sH%0s9N;PvgqS^8=oN1}RA=yqXDxU=%$e`{XqEz<5E+1yT>%Ecfs|8ST z(ZUrqb@flT2dzBI$mE$@8|#VE=|n85L&*3N^r@^7tUOMCYQ9LE3^BP~Z)U(7@X^&R zj{ybONLNTROzZS?HHuF4e0QeTxcN!s{iK**tt^Z!2?5ZwZsyg__5qX!Q?KAS5Y2UY z8*g{q8NjXw<*m$4{4 z`?JQ*X@Jrr;<68&tnEnxH4sNxq|e00TDyC^2Z&iq&bE{N0@lM&btX>F;Te8JraUj- z{z?Lrf95cxSQPh7Q}5LX(VqI}R!<5P9T$}+^TA34l$b@lXO|QeckvaMQGF7*xxdcC zY5t>f6dr9oUnD@)4?XGfpA^7vzG=$_KHhto$_?}Rp4mMK3^#!1NSctkRX^ysJ$OPz zT|wqT^BaZgR59MiJ%>TJ`@;5%O|E^4PHTP9CpYlw(I;|~Oi)@P(F@6lXKKy87=qwM zefvc8l>q{tgxJsC9tVq}@3L4R1&#|pshrnli&co@2Rk3md9HU#^93Yd>*}62P67(g zWSr=Dw{-}KF=(TUMefiwLzEb?%=G%=2XPp;$f!O!R68s^@&ox~vT(MdPU3}S9QKoy#=;uYPs;L#+vUgaU8io(?Yjc*4krP4 zQ^cP+=fZeU<}{0=2Vk^YJmDjqkN3{kz&w@!>gW0Gra&Ws#r(jVvL|c7yq!A@9DmX! z-=znWJu>j_SV=`$SzEX;<6x@pCa7rJ8RGQhi9Z)DQ?|^Ba zi2&P9cRM?^9SI+=XC9=QY^(G6FeE^kOk1>PYA}y#7 zu(1>&4U9gqYGhRCWLSqn77Wd25Ve`lo9GT0gYRc6D50s;6;y$Im&0uNLx9YN6iP&j zWnkj^iaVAzGz_lzV@M%(B3T)kQy7dX?2QDUu`kU{x1Q-`f%g&5wQr=Ty*UycNT4mZ z;v+f>khd5Jy?6CkX0d7|M^6f8_(pdj7k9OI;0av83P1>Sity*1<;_YB48j>`NmOGu0sJ#O1!io?+=B4`^> zW7SA7b+pe~K4pZX%*1%%`tu_H-b&}(xk7JUZds+*mybG*qjR`+4?xHTr`*#36yfe)TmcS0g=I0HjU0& z)m&##(2^pJTb>#+3cZ!x#!xcQfA`@{P)_*f2X-rEAXcw1P57W=F>Kf5t)9TzcBV@m za$Ftj@;J#G~ZxBs#9QRnxy=eJt(v?p|+z7bX@7%uMmhH+fX>};oL3T zjHK>9Ay=~A0H&+aSZjBKnt#cJT>HvgnI38$aGuuTuGpV~KU{>jIMWn*KN*0)L48TD zL68l|A4dseipwtBnXm{4T$rDH3cx-^^4;fZ+vCu}OrS4et}yuM%a?)5&4`W1PO;SSvvmG6zoY6==>+#s!2&P9~Fi`4xBqhS>R^}|C-pm*Tf9=Y@0 zpxkzai5Y=ExKTM2pMX8kfIm#XCV?Bk;2X2p(N-fP@YOg9M`X=K`U;qM8ZUCapk?>u z*4^|N)iocJs;^{L0>rL(Whg{5qz*TN9$-OkH%d}>N4?E0ghvS`(ytFrpEQZ6G(K@& zYMtWfWKxHN;4rUW?qV+YDfo+n$Uskn?6dw!S5v34X&n$?d!HZ@I})Tm=^gAy*t?_j zLKQQ8=3KC+q<_V;qE--rXbI@R93~%w8^R;w6seMXT_2yDQqiFCD-d~tYD6Mun2F*P zBmwDq!{H}lN-!NKBUsAB@+`WyXCq=D8Lmi_1*A-7NHE?Rm~JskU;qc z9Pm~VA9;ypP5q z`6g~E3KLE-xU+pAb2ORBdqbM>JU*M8Q=)024Hqzm(Z`o|KIW2h^2FJA7CjGHeu;r_ zSvI%7D`PVmO#DvzpYkI3olOD8+_{!05(ZixG6%)PNJHD?AwD_#<(ZMaOEqIv&i08s z)#`4-2G)il;q-$a;-xin{TwYk%Bx%a*hsvY)joJ=z%AlDT?FYcld!7^MhRYva1d1^ zC+q(7>63|*3X0Thk211Lmmy!S=M=V27$WI|f0xi976(@PJlw+z; z(^tZiHiL(YKoS?}!*6eSKuNVYDNe;)JH4JNObYaaVB!Fo_PKCiOimE3BtDZaJq4No zR@%x-EVc^oV?g|+Nb(bmycKYoV8&fBdCBuxjTmlFuLF%hM4?N!eUzb)M$bkAb?ykQ zJ`%iqN?!P^S8+u#bybw8)KKC=TJrnVNLjgGGnx7JKESWz?ks`gJ+27L>7B6KlaWt^ zKXc{j?*O~(+J8G^mY886*lrZLY)Stg?v`P-!D%?eYAka2cij1^>A&CBVYFQOxgR1v z&!ReEh^`s=KMZgn(ffov%BJe|=UHi4q)^*`NLfn~7NUm->xHffYkZT7|MBZmG2e+g z>91V;jOKT9RrJpIhjWh9`7{YA&GB;>&2i^Dw>$s+riXH7Rx^W(!7cN(^;yM#aKA3L z`*|ThOb3P_6;eBJNy&1zOgY3q9$*{}X9H@Z5ukt*=!nWLN=8%qY})#9c;3^&_8)iW(?IEX zt9Vx$y8#y9o;htM-$)!<#yZ$9yu)FQk#G`~XK6Ih7)^jseqwo__(4hEi=+d|R<*{1 zC7ZE%!Bz7H53%04XC>+A}CW793wz&(uC9Qck?cK(iQ2cT!-s3cWWQc{`u zUg!up{o=~BN*0sU)BjqHEhBrC6zPs8u^PE)h8UYt|^&cLM> z0>nR{db{NM4@lF<6`_6h!*gLa=N^>TM0N}UyvkSP z3=UQ!S0pPd8{tPK zQdC`nU(F71mMwql;52FCZDT{RLNBL9!ae5q-nIw`tX3lr5wu)GAan}1!j*|jB{+Env}}?df3!82Of~?9J^8)h_p%65fa_b!TxLw5nSNcm z6VUi!iE+W}L&itid3%a%etofzyU(9+y$pegP?5^Hn!Gq=8V1u=uQWvss!fa@5dFNe zJCr)K3Sg1h*+Zm!OwdE3Wj0OmuyLlX7k)aW>Q@@?_|U9V6&KYNG9m!vVnOIk2|D9H zHfCVh1XJFjRecappep_a7+J2)c9+zA&v!_nBe;c89R}bAZ%}TtQ9qVkf&J;%o1jzu zF?W-~JFQ27n`>8p=pAwdU+5&y6+*23DcKkc6BFRgbtVutaag!;Waq3oI93M<5SrtK zLvotYJ6@V3Yh(-R9dAF0CfHxk+C<(EyJ=K~@W%Gv;KI+_4C~%)eqfr~hgX6OPE3y?cSe{xs_tZX!UdqQDLn(?{Jw-yy zFj2Jp8Cfe@Jhfft04g@ww!0X79l*2C@)oH>M)($I@i@z-P70njQ4#^7XHG8#T-4x% z5D%*Zw6=m!@1B;3{t^6m|I_p_rkH9w5$t6^we~w8ike)FK%W(TZL5*JvkV~?MUE9B zNl6fTWzr!L=p{P)d@-g8C+Pm(py5K)Ava8x2!j!3bP*as)D1iI+d^{`VTfx;mJ0BR zuV8713w_JB*62Tp);?Pne@*4$sKB4DtdJk`v)~A&BI3;1CKxAOMlScp^Nly+1gs*p zsin5*712VV%Oig#8&SZ``LM0)hN*SKdH~awnCA|O6wwUecN7dInz}Ddsq5s9vvG?YaU&rJJMfm&uybTvnNel z>1~gPPaD3dO<mIMA8Mgy9^)&tljK>8Kvc+EJAX6};TM~BYpWR))uM#rH;GQYS0Mz>Y@5MZ>v;(9RK$X%Cw38FOz<)Ur59^jw@}~u)aZ}#Dx0VpP zq<68*R}_5Ii7V>?uBL3-(b9#_2y!umGt$rSnVrDukei8?pe;}WaVqi5_rY83QPi|U6Nak*aXg4scxJPs70B8GJR^!_cwd)uRNaP z5Lg~5+&@>s%DbZ>UYEPEUhi>*&rk4B7l#?I(d1E(T`(yu2$a@*w1FyK3N03(d-epv za9GWg0TJQMEzZ&#zV}-=(ke^L?@mYq3!Ui5W#NKo%nJf7C1sBnhMv3rQcI9^M(m9a zovwY^ZhvlHhbKOAsOliM^zMVzm<#D3c ztfsVUq-<3whmmZgqjce{)M4>ISUmW!Djzw)&2qzdkGqi2cU78!Z96H1IO=`xSLe0C z8_m=<;{gN0L+PS~C+L|kRYErx*z)Lse&T$T=jwx0Yrsmm$i$T3f+j(%%1lkJ+wV~Ubr#Phi<3B{H_On;Ypw{5ABv}?iqA~lGW zQ6{H6XL>IFjPLK?v6asyt+)D*DJZBB{hV)45UWxiT2>c}Vsp`W2_%}1${*&$?G;8IpKd9`P@CC)2~LWkF?&`AmmEO}$YC+bX)S5f9O^*ET zV!1+wWz&)np*VL~q&1jwzo{}NemTV~c7lqlKyQ<-Top>PWl@s$mi%-@gVMj4+ zc!1xNkGX1iX*gsH2kCfW4g`zZe=W!>YcVq%w~|gYmaZ53wI|gUhc`~8 zJcFg5CbmVN=U;B^u>7&!FD!oK(!i2v@|$a=VNU#nbbIF>7ZTbim#cFs;xxHG`*-@^853!;lMOijtV*Jt*D~j zC}(RtGVIss^&zc5jJ6;V68K}gLS$t)soi@1r0VPuj_hGS_tUr@rk{6cJYa{k<;F(;FU$qVw3>3@eX>5zx#?5}KD-RK5Pza#OEf2c- z_p(-Pi2w*O2XA!RP<)hHhFwRo>cPFuPwAxGDyx))-7U)>+jOWL#w1?|2t-$;3Iy?% z7^|ax;rjAANn=;QYCgJI+sVz6#R(Aa0Qs$o!tKCHYfCj*-ba?Bm`)Q?)~Ro>s~k2a zSZ8YsZMwaNMi{>Ss#~}iXlRr#oo0Ojr9?`x9SqUIbq?q2%^dS=PksW?fDcN3Cf%QL;QnWsp6K{usST>y{{z}(+_ zM-64NT)f6w?dW%vQJXYeE^hN5+TgxAnb$0nfE!< zX#O`j)aKR7w--y_6$m=lO@>da=rDexT~1lcLbI@D@j*?-=jzxe>5DHY`9P1(Q=}#f z8jQa}?$e=%c}Dp@zBpBq0_g-N`1bHC5mOY4yC=vHXe3K5u%K75h*5^SZfNGM@0r34 ziO``v86k`XEmr_#fC?W2|F|%5V+H6P86pWRja>NNebIm3PF6MeC0x89P~P-N`v#hH z73B@(=*wFjV1aq&oxH82(7u93vLhp1NZqF=N%DQLuWlOG-;{hb?L0ti^E?P7l(_T1(s=bg>IgGU&5KU&_@W?YFYS(I}uDv z1V%gbnyi19zjGYDE{M?!7z<-AEL31Wt?u1p?0wlZynHP8rdMx3+8gIlG_Y-bm z?ie6G-lhFaFXcBk5{tIS&B%@3$DFZP(^ZpOZ%iU(G@~TzamEvu$>XXIJyo@wFXP}y6`pCp`jE;zwjoX@5zDhlE1a&NTFOi?; zP{!m%tQvtANjj}Ss|P)i4Kgdg^bFUNAkk?cnIN~`h-%GWoq_0GHg~urJC>gP$bRX6 zAnSaeviZF5o3iu~;Vn<~RQb{0QnJb6Ry(NJVRRuP=U0OZ&w*6KqKmGLRQI5iU5s=e z2{NT@g_w|#+a74)YboVHjh2aJ4$1D{=6os(9l%Oa&F{Tc3;gk>pKPsN53BrATqQ7< zXK9NlarRMiCPJV46&Pm-{U(X+gU{f>h7wl>J2QMAWnpcQZafcNHBTa9bFkTIe;Gx* zTS~X+GrCagg$n|=S+!^;Pw-cz8*L~)Tt!xOq7&)u2LI`z%bA`6{Yj#ZZL<(?G9aN7 z9+CPp*PIsXzcJz-rV<*JeGYV-(pMx9hJ0_cvP>2;woIy9Z}Ht*m_GAJc6Yfo(Ol(n zQtM#6C0^h&tDg&0U3oiKmx3og!mFE=a)@}9cWj>{k-ewbm4#^AodCk|Xr`ILYL(oLTb-K>k3GTVx4&;aGrBptfuuIjYKTqnZPj1(O({_{ zy1YV}T9}vawBC=K{h4iL(Qei7O$)!Q9j_|q!FU=GQA_R6M;jR`2~k(pMZ$o_3y-@e ztJ*{fgF@_@*hn#&a6UMbZoz#@AfVD+)X_i=PLEf=7^{*C1#_cX2==xOc!73ZNN^nM zWWv;O&n*guXn$Q_bc|?j&*beeB%!n<_7*K&!AjAX_<+rV3trpor1f@Lgn4UX^~mNPP26;v*=1(J1uzWH;Mh> zUg+l0uRJavtpVMQ1j*r8ks2$l`NCT7h1EyrK8_a+d`RMI$P492#0eHyX`_pCyii)+ zlfo67nxhe|lFKh4@igR}NyUnRY-1ud7WGyrzCC4};!2uGmFv}h5B~L3k{b@nDROCFR(epKEi>EqJj@FC*{uG^(tMAjQULKWs!G%VflQ`F?IY=H+ucXW! zLO8QD|CumCU@P07ikM7V>>Lfsttayr%t;)+62OF4!yr+-6>e-@#Gcf2^h43%=>MkemC3jkZ~+h6rOy1{GYC?}=zBXS?k zIy*uK_0x@rI3oxGGm<=uDzeEny213(=Q^(JGn8)1HqE?7R0*@6uEZwzpWz1Z1xtpJ zwSiL}FKr-S+3nsM;hZXpb`Kh{Wj@B2gpqE_+z;J|}Hmdo-vVyjYui*2j7x&G*WJYwpn-mk~-JwK%kI(I=s*G^lkp(~EC$t?+5Dq4!haql$08iSNhM{7qo z{qziWiqbtdx5EhTWBhQs2t|gXHkMpR^9_0}%;`h*oGqaJKV~2l3+}@*4q2ST?TZxM zxHBF)>9M-2S)PTo2y3rwlnfB<_#Vzkv{8_@i)sh*GDdt3XZ|{!YXn}CM3_wMKx@#N z>x(=y^eG{RhcAA{I(&6jVnya%gxcq~5CbB`HeZcWFN|rW&{6Ly^V7e59~>B~f!$4A ztT6vn40tmtK2RTwNC$~6#TEWYePsqysoI`DvH1?>z%#?qEnW zzbnbHN^;A)SjmExIr$uK5N08oVD_82S9ASOC-L`$PZ~M}K4v*0-~WreJSOC_?aOM2 z_6MzNSeD)~7ED_vvp)?t_SI!wM`D1S%nE#S?)4z?3+rqEF(AA7yP=g9TcU4anbLhGs zv+KI}+t%o^%Q`T35=bukBsCOELFnChL(N8E(hA|kpKZ2fUUoBo@uXqV+l&+sP{x>I zJo42jL2M{uZl7@7k`9Ab?sy4-W-eFWKz`6ACdg_0JLFWxql)Yt2m5e+MZzAAmE;Wp zUv(&x_T8N^O`hCAccif=!|Mk>TtF6$z10-+f0^{00GF3rkkcGp)$|tqY_d}aKK4q8 zH0X_V+~Sv!Xu?IWiz4Y3tRehN;gQJjKxG!y_f3znOXCXKfZlB_<8e4$0ylID9~FAd za>E${?Uo@~6|IEh(7K-x@jn+x86jzE8Ff#&2(cq};JD;;N!hb;_=&Kc2@q)EQ6ddY z8F?eBrVq9@mr}fWFN(V*v+=TeJvfeBxAQo-T}dO{7)r!~h3qz=Xr}6s73fyI?T@Cc zGCv{QBEoMq`U~l=a5-K6p5owm`sbuq3ch2z`a4Zhl(x;~B=+7SjlYhnYV35mPNwwn z3ja*zJy89r2l{>Y85apvMzB{zk7CVd(xta<%h_aNTlxixf=6<@&c~yN5of)!PwzYw z`>i@(-op8Hm(}g~J56K++F(hErFK=OzRpg{I#DH$T2u(gr1(kQ3#9M_X$J4hkX(=-LjBtISe``a0zi=xqcKxd%Hk75)BfKq zEPn0}^O&0L3D4wVeNSrDao`Q3T+L0(g`7!gkuS&>F|1}Nu;ag#_XwQ|j()sj4(=GL z;3rxmWS!j3AflG*e)iOOop`J3wCT<<)EC3W+Oo+@kzPGSE+PmhuXsxiN-<~1T7Rg! z$U>(GeBq4`-g`7cxFrCbTPI?mg$aK}x^7k3AX@r|=n3*Xh{HyQG^jlWeQ`r3*(!I4 ztv#lq6P%ci1*ncX<(IvPJ~kHL712H3{oAK43Maep6QN+t=hWA}K>+R4ws4jaN>r~^ zh%#(dw*wXG3mQXkAXNoXX_9Dhc|7P{0j0T+UyLKti=`8v4n3Sy^7OtNjyGX|ZZC?r z(3eC<$eGC?esd-(UN7?B&NZcUloV_9{Cp*a8T`V8GhhQUtV(Ceun{^f8_anFmv_gc zBJz34J}X`>9bEk{AhDd)``BJfg++w1unm*iQz2JSULS7GhFIqM`w3R6>rLQpQ!I3U zeqm(~NFUZ^j=OK0^G7cUg=@(~Lq`W%3CPtVgu>O}M8}`JUz+{JpP z?^H^yt^P|5At`Rb1x{n7)8iBnck@u^)nr!m# z;P`L=lZAvzBodqm!AAI=uwA2KFJf1Xm0CGaI7LWWixb+dxo74Gs}lxPqUfSD>0mlT zX+p>S+NnO(k=9C>OuA~dxc8B?Xg#tx=#x69^seR zEKfJ#1>=Bqi41&OfOMz!eLr^N(8?|>?gJ>LTa)tv*RcDeB^nH#DVKwsjfMhH0D*Td6XU1csPB&y2 zI2lU=*OVmA>3)@RA>&0=F#MUS>hCJcqSA^r6ug$c$aQD=7YRJF)GL)h3~|~$xrdiS zXU^xP`}(kk(bQ@oy1T9131P?m{=a1#k)U+5YA|1f9NniNiSVD&CaM z5-oYXo!4^qctcBB2XjP-dGdxDM^zfKTid2i}MP3zQHsj0}Wo0+Qq1<2>pdM!nQkd4P?QL z9w$?|$)TTP8$NMwM@xUqVRw6Ej(D|~qjqSf61>++xGe)lYx7LVBx+(W4nOHFx92bn z-C373HfUnsVz%ULJp6g%wA-H{+o_rAr+IavZEhhivDrJ?ZY9=Ob`doACHl9}3Wbwa z$1y1nQaL<8-#zW!+zaXN7ahxSHxq+ZjqOJp)!~q;wiAX6=BhT3(#OWTSS$wqLq&;o z)DXHkRa3N>z|}8l#{0D*_@{js)!w`O0-r+d#JSAl#Ci*yk6Gb2gRO=9+kr??sfShO z$qX)y<`JviV?5eHcR1MghbzxeD29JOL#>NVq?(hfNt$1E*fB z-3n1d-RCi4AIo84ar_3;d)B;Z#^kk@RQ6g&|Ai$d_xyi9QOHqS_^?XtG4Ke|CZss8 zyfl~lWG?2uH>?yj_#b{HR`k*$(3~)bIhz!f z*Ms=q1<2j0+zLJIq9=EBiS%QEkVb>MZ$- zTl=GZ6tzBlF6N#VPB>EPSx4A5ZH*PE@?D5o+A^E8xAX7ZdZ>fr%9rMe$?byd3{+M2 zXe@L*`>N~Gg_Cpu`>bj!) z{lJM&I+eg~#Z07cGjK2R;6Dvg`QU)GmiQt0$3ro1Ktwp2&s)u3K3$5>xz}GnLY$Ka|}Qwl&biaqLS0Xn9XDo3~z<$7h3v z`eROW_QG>Ua+(VSrXcHa3txlO*KJ8P<)j%~%==X_yF^%WA2%{h_Oez1>E!7Ek(X8B zs4WPP9%P@6$HtJd3N&DC)11N63=MF=PCFC~+V;7X`TkQRiNbqL0-t#|G5HOoLpHz3 z(u5v;pB@?tG#iqSyuE0{-uT1**mrGD?Zu0EAEqO^#i3?gS(4aFNSC?Mam#h~P8u6tvC2oe6E*=KD}P0y^|Q zdF<5XOuj-P?;++XYiMDuE`6V>)<(uIw4IlhRCD=#O_F(;XK0AZb}(W7hMve=e^pbk zgSUCBKCn;2Z~1lQaqN7==`!n5sdC-bqkVE{^nNWfE+EX*p6P9UBYfJ_e50MeWqxrZ zZOeO67VaNP;SETk%Ix6|=ca?Nfo#MUQT9<5+u#s(-{=RTY-74O*)VCPU{A7IGWU_QrD&up&|nx&qW*C<&-4cC|VqRbtrE{$qe4YCi_)S?U9y}VS*@5 zf!Fi$aycLQSwYF5oBgQ)g;C?07pw`!PJQz`eR;x4(ztV5cTMbU9J|-?7+bJ^a~~#| z48euktOvt>#vQ|_rDdKzTe2%CI#> zP7hG#*CIVnkwSeB6J|JCto4b&Dmg*BVchnT<4Nv~&gP>tw)OW_-J7HN=T3Ra)*0B9 zpQWV|2shm3vZqdz`qKR5*_5}m12;^HW6JhDT$?4p^&6ytytPITYH*ysn5F=Zxx~!FbRmnwF9Aj}NksH3T=onv z$tu9sA27FuWpj0!J?z7LR9K~k7U!PHbyS+Rf5}(O?|nuyiD>DIZd0*blLi~Zr4}UN z8APu$Wc$cHKUw-5%V#%T44*@YD(T0ri!BQe*Tq2?xuZ}7$w^vBJzR~kluHruVkRbV zV~+!@HY9@ZoQZT`b*rkTo$Lu%L){!&gZJP>_xgs!MaPwT-BJmL*q&A=7|0LbLOs|! zjziB=TVkZOQJXC9+b|F=d%FMh-_%(WbSMg>&pX1Bhya+UfFXEoC0%AFqt2$?-Uvjk zngkpNXPRurf`H;IL1pTh9#mf0yiwjlJ&%M`*0P4N=6Qh`h6o+UDld zi_Y*~{>$Rh$C+Gj5J?#qjz36VTJD#*FxHU!|6V$C-!y?#M>uW~aiWVJS(-2D@z?xd zdcNy3(aID=j{~0Is7Bi%A!b+-kCaV^gxuW_Un6`8Fw z5uXN{LuR8drXLc(S4YQ1)1O^F<+jkAjL2Ft&&#LNhXm0Iz+K|;um43=4f^K2O6?qO zMR4RtC%p^aUs#B|!Rv5zP2r(yyI=2BL`Da&yykKkm@b>b1>^BW&h7v6Y(nd$@@dn3 ztS|pfS1dy!q!ka26@~|gZ4}lH&{E)Y2X)+hE-zB}Ld5`Fd^wLwEAH`i zCh-lEMb-MEr;6?I^Vq;EBS{WNodO+uMC`xmp)vHd-_S9vE=_VPaEgpN<%29HXGjiO z+VpAlCO$E(AoEhxEw<7>o##dl~UsXu4$_{0VkMP=qFD=oltq2Vpp5O*Q{_U zB+;~{i~_^9?H^qXtGWi9>A{mv>6-3F=*xT4d)S-REbCb$p8;s6O+Lq|inAbUsZdWQ z`F~9Dq-uYHc-ir%V(-Y*pupeLCO`Oule&s(n(*@R z3aXhl6m54ZwaA4xfOABf*G*^huPfszjPR~WnX|Hr>}x0N6YL16lhkyA@OM%y&+I*q z*PpukZ(&kIuJ%Mf+qa(ios#uKUMV@c?UD|&^ADzln6KacXm6mdM zJNXl6v@wpm+KOtuYB?MPy7=qtcS+xC_2#s}t|;#K?gxl_pjKn8Q0@i#OY znjp>wO0HfWB=lU9lz<5&Npb>3gUTC66R1>zZ`k#KC{e#N&5Elc1&dgPMUNiA2=HR0U!HOt9<;T+N~egRI`?OF z3@P`9@UIYbZkDWS0(JY=JtdeMsn5$3Q)EelayJoau_*}*!w7&Y}MI7lW znioee!+?61N_3A@6d~vf1y+>^w^4pL-s5uea_RX<+P5B#xowyqs;eN}U~U5BAHA!g zm+Fruhid{ClV8>@UVS%AEaNZ*5pG1(W04#d*6gSry*$<>fnX9REOnQ*vY3W%>KYm8 zihF>fpW}^t#nG?C7#%Tj6L*w$8YMGEnU{@86;FFqC5BT3ih3=tma%zOnN+;t-=E1G zH>*3|VYma}nSem5d8KK9*_2kdIql;E5CYHh&+?nnaF-#^_7t}jtX`8>#Tl|YSBUI@ z=d=M=iW?`JE284w+Yu)i39J_vu^&qf7Xuo!y z4~GEDMjJFybnQJ(p7D8@m_SAAGfu+1BULpi9)@!kP}?E&k9LnQacWlpqw6Utv2@af zOO*8Rwe!L^ld*@1p!nlt!dxcegITLoglY&Nk7!OJQ0ff7M(vk4CRcN%-Ep-U z96cN7yA%y(=-wF#U4;!ww7Fb}p=N>*{fecMaA_nTew*wDna-_thidjoWtYUEM0v>a zV0(ZV4#fSg?;G{!MC=wK-G;W3+`JDrp@B8fG|Q}aaYTZQ+6azL{QP%OM33BQsZ}%o zmjxCT6x<5Kpdii=Wm&(`ZDz!>h)SZ`He}hz~wQ12Z91p#<4_ZlV;umOjZ${mYgatM?! zm!H)%5Q|UZO4CwE_UhLj=aL7yE6Q6v<=$4ycuc8CE1aKjcKV$BSZ=wQ3Yjsn?WVUG zuI`83$wE*v4k%t#0%@eX&T9{+nDWj%Eilytl&Uq+u?fVEmAkaEiAhV(n%A2>cT(S( z|JqWdmB=4&*11gG4w51vBj7ez5z55f7?M~HSDC@TUl(ZZJVRkLzYV?+DEW4K~xB)8JsNANsP8Q0w@Y?0w=g25@V^; zFGSSMc%q3FdJn9uy!ZgEPZU5rsb?CAEN5D20$NK&W}7Av6LuUi7tVi8rE7eKlX zn6`UFCyy8Vm(*#Y%1@8qgs|qi6r6R(s?#c69VJDyjD^FnU6?)JF-InmZ5)~}6qsKzx@YEVD}QTj3gM8l=;yR-9T*l*F>46IGt43RoO0`onLK zBW6B-o*7lom@Ih;=w~}d{MhNJLR}S;mM{;R$|-J08j*pJM)X#FeWMhCGcbiQRQ61J zW}2gJjx|>aY)hKfTfkr@d##zD0&LZA*wRNdTKc`^lBr6RRsW;b%hM268*2RgtWz}y zq|C{OL&6Jf+kW&ERmB&K_fxghVTTwTyYl|Z8fLr&eYh2*M~O~>L$adZEH4<5b0#fa zWve&NXR_^87NM_yi9sL*(bDOWjWQfm4O9pGCM4CYS@RnS8%k>5}irJ zaN4}yK8B~|R+0+tdY900X&Vo=VGwWr(~`Hx9Zr3DYb9FEpCg&O)x2qqIP5keFJ7#g z=VMmrmY%WzbLGQX5fhNiT8n7gL+4;$mOAPBwbA5TLe^!#T>Y)7;G0 z4t?@tn+94?^_B%LDBN_Dn>8;=x*|DLCJ@eDt~fM{_}T`3(oT%Mp|<2-jmw|p@nS@5 za<}>yC(oSiMCyK|ca61PRQtJEWuP1bd$l(M^f!-S*k+*g?5P<+$@P599Gc*Ic z(LcCS320)q_@5lu33;H*8`tD7>J_E_C)_3-LWspr?pU{)IG3k9xcgZ+_f6v<=HRE|J? zJ1w{7;Z03Vq}Ykdl9Tkdp!-wv!{D2N1HVPKiCopAfyn#z3!jSw4ua(%p!^sEyWRQk zF9D2^hwHolV^TDO<1d#h`0yaLrvPAmTmNL-I1Tn;z$YeSZ z_)-p#*_!PFjMP|ggmwWqs1$HI^8X9y5;K3fweqPRd4d=7MV(T$MMoR%@3d-$`%({c zB&dwu0Q#aW0NSu14p=QdR~2N62h{RxVRCX0GWR6#RXHH*Bx;F$j0#^l=&gNz1=JEoT4T%F=y+pDGVPg`~I>9rc4kFzS|20D7H*x`0uxeB(DopPyny{3} zNva(%LN+N^=ZjWbfOJ1)HRRrc+o+27fuWrEsN4AhFflTk0AIg-;1?JuF`ZDqlz!cZ zBLNT$wq);7Nr3=&f?JQ62Vlg6xv&)99Vdkh0c+&*ufq;jz5Bb{t%CcTPl14YTg!`$ z6s!kPz6(<^`1VX6)p>s{ySv={ok20;H=v1saEjc!f8ZVf++qbIJez@wimDb3jdac; zw0~CjS6Q)w4(FSV9JwB_738OaV7-^(0JSJjJ#R-6(3NjpBRh?bN6xR$_dij-*cko? zpdr|wInN~zf5=W$;X#L;=$s52)% zd;3FoGW@|16NwL?=Caasz$VIq$yj|9$2r;A<%17u`ayX0V%diR(X~blvcUgxDOKnu zlz<`IJ2uhGE|dyl+6#>@;k<_$<_%fqUNNSl9uAUOtW|TRrL6Vu*Zo<851DG;2su36 zhzaGPw)taTo;!JOne|nyCaJ%$IUis9CI8sio$5ya>s9K0abFVJn`Wx@tf^rs zQ3S2Nf9}eiB=avj*Jnmua#x@S*E50we>9IwvyaH;AHdug2G&#spp;z@sb2HG-84U1 znWf)s#P}!Ceepp50Ep|U-oJraYl2DTw25I=?>sNszI;xsVmwUz@g}Otc2}{9;HkK- z@^4Hk^TLe;s=oFnhL9xMXBtU1VZHsaQ$4SvTeDoqI3g?__#`2W{BM@){;EcJ<>ku+ zi~!_z&QJONU;aT6)E7fKv`u4xIN-nbOU@rmsz2aG%Qt5EW7slLjfvp7JuGonWloZOdH@^=2M6X ztU0)Fl~JX!5QY0&GVDWuGT=T^mSy?g`}YH5#-j4(Mc`rc4nzG_?LpNb^a20Td3)e4 zS&06{@avb`O^=_Y^vcH~g)Ch3naw zRdyx|st12B6&Z7=V_!(4)X@`MI)Xp2rcI{MYfmtKpC)t7%hpdEW-v? zaYPf_0dJ+213)Rx?vdhk0KhR!tCPf8s(@WQY<`j_3eIt1m(I7tOiEMOZT)0ovjy

eJ|po^d_TBOZGKE~$CL`bR&oANpfV9OKQX9kY5^ag3PDm9}iU9YskE1T70~$S?n#ymynG zL?#gJkb(S`V`Tis@<2MYHIo&P54V5%R$A!Pb zccBSUy?XJIz!*DcGwHK^?ixC8=zs5pHbf~)9X+(>AM!q}nPq11eHU)T?q7NL^F2N7 z@Ti&&pd9wD#6q5e;+#mv#JJD)7Et=BsigM*DszNoeBb}~|6Y!MyGj!DpC5Akeo7t~ zMUud#Ib%0HaxN?z^nJ|yo8cQi6DkSbgqr`e)~#*+&77wSd&a&UTOxMbjU~k9yQH2T z&V38$ujid)<86}wKSs>{Wq&Atv~$IABNrmIJbeF@y3tu5A`+Y_V8u_tZIBE^9G0IR3nj`B2a3!tI5U~lz0;|x z@fc^YiPzaaX%==@LLXjgG0Vh?T!*a%-~acQjf4?XRs+_aAIEv$!;mYPifCf>v`leg zZ*h?$AlaKE#fgpEfm)y?IlA18jy&MQB7X+g`C)oW0f-|GE11K~??6iKjPER$iig*- z(I^wUQ_~RZ`)=wQ6*VkXpf=vMyZYOj&^^+^xZc8UcVG(nyCZ(BW9;u#vs;1e(RGGd zIOutIfd6E@?q$!0Z+F`_@MTDZ?Zcq05h$A;@%{h)oMt2|8M4lE|4bpH;+X(5 zu4I+Dy@eiiSV)94$M1{?RpsS=??wku*YxRMg!43i=3^OrX# zt-~VIb(!O{lgW&WaqO5?UQp;C+ko}=zh^!p)nweA7FKds>kfppXzO>mg3!sr6|C=r z-Hl0aZVRVp?S1x0WfntjbkQbrYwfFJlhp=K=`yiqMff1&YJ-HTIAs3uam z`jKjl&MO=;ZfQbx6SD7y`+ViP`1yb)jNrPs{^!Yn6lj!y%{}E8vc>8!c#R~d-7D=0 zjflR+Z~xXY^9~b3Y-AkUWL~tI7XCnm(r2?W&tLi9{5gItJ2VEK{}%A-pI;m%=(Yv^ z402-Aoi{+9fOE?-Sh3^!YeVI5q8siQ@QKKuix~dRe1qONR9Dsto1{Yd9b-k1E`G?X zm2!KTSrBUdz9TSe%q;KX9BRY^W3C?j<2qBm!%p+uH`SYybM-m!0jEIj%FuPjYfAGZ@UdcjV_c-p~1OS2{E?OqX_Y_X#eebO3xBsC=>c4} zKVfDR7|mgZFxP*m%OVxa$h4PFp(cefrNAFO74qyDQ(t9t@3?QiG5(rwhqbw%pkEq_ zi9br2$#v&jc&W$r)}P7-V$cvd|tclNrb^M`CaDn&J+XlGzj$OkBACc zajDKd?ys$H4w;&b2-og9yx2i$r3zqYO+3&o#aw+bXb^TKwO{`BY~2E73mm*HQ}+P+ z>@$xJ^&nw0=BnjStC+5OKpss zE}1i{8+#VD!EwB2&4#-bjgANW&3|Jnwm$8hzba>%@<4ucC!>*cYcRdd_dk5qe4CHG z^?u(id7bOK{WyP$kVvLRbJnQluGC=$gW|v*^0%)9V26$0e7yY&xGbbr1_`^*zk^<( z7E9;8`VA>2$?zCi>T7*jbSb*MZ96`}>KnKjlbI2-Z}p+BeZ?)d!k9X71S`coj>|W1QMD*6 z)P?P6sopHX%-b%?`hT9)B(r{ixnKG3ApIi-y0iSJ`(Wn}19AKB)R!oi3%>R^Zjb!d zE7AXR7xZ!1ea!aZ5aDE*{1B)^{v&_8uSkG@c z_o(XTWtj$rg=d)hZM-dhXQcb?Rr@!4hZ-C0F9PZmIs~!JoAwIhso$LaK_((0O1fth zS(xY{sch;5tj#Amsh8u!dwcX&2a@V$9nzw{ai7+h2G|9Rd9o}$GkpGvC>S362zlDL zKctS2NT1ctLRQ>x#R)HB_WzbSIX03lFEmST*3_F_7#g=fO!w!L+#z+nIiL#sTk*4| zKG*l3gmCabFPd!W7uwRhte;ODX0u^L^5JW(ZOdL<|7J8k>$s2p( z^^+SV!I^D&@B88i^>1j1MrtbqDY6xhovDFZ>lhh-J~YSHY8UhmjAG`5Pqgv8u)Jc@ zx4e9=@1O9qD)alkr6tpM*ao4E^0FjG!)L*k)7vM_=i@$~=NtjkX^W4hy)}t4x98jx zo*)A&p3a7GJd@!-enYfO&B_1)jLq-hY)huF2BUtngTivDGOhP*_k)tn2MIpVquE!^ ze7QA(W-IvM`;5u2x}GuDSuP|6;LU~|(m))IzI|mK{xm#-g^Hn|vx<4=+IaTM=ZBQL zxplAHaKTiaG34(58SaNY_-f3AvZ)B=;Z)GV*~SxMJs$uhRshSA+K5gf5c=~>EahJf z){3omeIVfu6 zK~zA$s-vOF2PCb+7jQ@oc;aT$=m~Q!edIUgh!?6p+XtPjI8fBff)?bj4l;snXq={6 zKHMEl$mkx$#10#+-pH+>E?tK4EL|*)Xcz*|J|}C65p_2*di&|t@n%H@)yT&N-t72O zfN`?vtgN``RotTN4|K z0EXZAXJhRyzA#qHqQT59gu~*i6CF%}$|n5ss`Stw%F78SHmrdC!eQYkCJr?J&~#3C zxG(;?qDALtv@s&&Y9f-?RjTwXWY!nNZ+UlteHg>oyYbI*e9apJxs!OT)#T&OUBKU6 zFccc|YwOC$XlN{>)!+xy_DFDtMpV@GwP&K$5g$IDC9hB4=EYk5+F}FUR#=kJXSIL$ zUd!<5wW+>YDqcn<~TL$fn+m#2}1F`lM9U zX_Y6-aTCcM@;oiIak)xi7Plko{`A| zFEW~@+cuyK5n}iyjtYO(J3|qc6o%K>`Jw3Wci})v?2G3^A;A`8uhOR$zs?T1aziva znxr9lTJ@yN@qcXn_RV&knY`U>FjhawcSkF0_uF`YZcl1Xn2NXU{w_es93tjH7GlFJ zR+Wae(U2bD!F%)0iyu=GIHD>>*PGjD7l9RfrqJ80XW#e%{{nCLz$%RSph(B)bN|=- z%c*m{tOLEU=u4%egzOZvqpcQqK`UTq>qe2L8v~^zV45)H@(KIRjuin>S*45Wwvh5BV&S4M1TlsGS{T%zsd< zTESeu3!0_P%6KJ${rMICbffdtBa`S9d%=C#adqeiy+3vL20How9X9RAql%pA5AJucq8QhlpE-YG z@uey4HV=9-R(>`LlH8-}789`jkn6qDxwR-u+i$<#x`*1*`=shvdL0tpvy)M(eAPoZ2B_Lp+Sb#{EbT=qS zBi$k0C2+<&{l4|BwfEX*?Y+;w&UKx`FLX}keBbANo)Pyw#<+_|cUgJn$8^z+o)AXt zeK)x9&UqrX?V~~Kqh)i~mhQGfim?N|!=6&9YIh#jjSGx~mjm;=?!-&@4C{^yZM)kj z?>hbL(i0`9QoNrvkh%X>Hs~IO&}5KW?4nW0ohQ*mSRJP>xy--4lqI2i7&S)KV4xT6 zXfUZfyBt2w9l+ulJbfsnojl3$@+pqKzSQjKu}!m>1)Cl`ooT{QPm0R5v3+AG0#eR1 zl|dv_>A1PM%ljcKxxR;mB}hL${P+UKSTR$7YXOmB+ZGRd+a3vTBUyo{W~E!w-REV> zp(FQXvr1>(OHL-5dLr7$JnNM2w|y%bVdRdtQC%FHBlL+c5$AT=hS+BJ{eaagHh ze|j<5CR$w&Q&#exD%A#fJUTjCMjDN?5@V#R-WgS|ZwTvUF+TDiR-UyfIaBWKjCp#`&)9vG46i3E!iLP@O7x?d&h29*l>aQ#o8$B?KxJ_D) zHyO3qfrnk?A>8`(mA(OE(isU_dzb!=vpby6rzScyT4p-f5)zore>Ur8yy(3ZD7ipA zpEIm?(i-|SoyRI$o84fa^Z9+zchVFhSsmQbDZ4(2R2rB8oLO4KE#EM0q8%x;QY<|6 z*L)7dC;K9=@8SDv?yu}~+~N9icFbe1^bh_5z|uehUroOb(g&uz)?-?JlypV+U~%G0L#9rqzTCnvyV6L`(qa;y1ik)!?P#U$E?WByG3R6l zw)eJL_l7xTixlz|Vs1OoRmgG zTanU8TNMm3(4?#eGwfgm6Q5q0d?}i%nZ9|w;%pyhS73B%aO(9V9=SGAoh|QT;gTyW z`nJOaw~M2#ApY~04OAR@_rYhR@cC|*dl}2Mmc`##o5u64qh0CTofdi|fz}x!>Rv@7Ga!^EYw>3rcn%ToIh>8e6Qi0l2%3DpIQKq8jobY#Kt)_k}i)palyoC<0l|+sD4g!Y9MN;k2SN=*6%b>C$v=@!`(u+C96+x2z{<0;LF6ZFyh z=|tE1==ppfJDYuHP5ZNxlheH(qf>RtO@;h{d>c9id#}8PV@1hyyR{ey^blT!lr}_6j^vo;wf~Srr&uWWBgfa&Otyl(5pfCIGMxm<$AfSXCcFivEj1JyU0)B6OTY~myhI+sa|SQOf|i57}cU=+h%4GcCH zA2-CHIHmL?*_Lia`HNT6Zvrsj13_rPxJRX&@!PiHt+f=RdOSbd#>v7wJH1aQdfv63 zV)v&}5Q||=Z6_8^Kao+*Zim6(8E+B+;c|)cj-EG^Bt^g}K(97|yY8@Fu!fI**7 za+%Ds{K%=q!mh-za>7-;R>gt*f&VyjsDUUlQYW`<$#AG~@}dOpCC^5Pn#0r>G^@-^ z8g;eehwtUNqDJc+%Z6r*moYHxF-5(kSu9#TzseQ97p%^ZIPgmKgq(PPTNu)UA2FH};xGEk z{FVkPwW27_r>keifIy=3qeowC0DzUbu8_#!v6FLa)pu#AND*Wbw{EioB?qIkDqP{f(K4%aoM*@myYzdoO7r*d>V_o9yI=9j%+OoaI?qAPU3f2hQZOzi5xhxOTC3$Xy47)F8 zZd9Y=HGhZ_V$%8YFdD$WHlT2+hQ8!hN|?$fuw_oR`#v}XUM?AwFWoCNpRpV0Bh#>b z@*iyh@5lz8CTZAfcVweWj@_c1OzpF3w0?zqKoRvO41kBf*Q?cm6_ynJIIq2D`3T38 z%QKKgvxpId2`B3e70^VRTrP%oonW|pf2rD%(uPthxPG%I1oI3g@417ivih6LW&GuZ59Q@MYC zAMR{Rf7JDH*bs~sXCEnZ!CS@kZQwv$Dq*b_hs(+^BhaGVhiJyVTHM@RT&6H!>HwKV zWxvOe=eG(9wP!yoi5UpA}P_y?5Wqbl=t?!gKsl~=c~tGp7TO3O5O zx_(n`!M)V+Q1z+cj}nO(bYI7BH~XdGX6ih4{54Bw;&rBh-iysMYiot!$8V|e0kCJZ zt=Nv&o^Fhy$UZDDu)srjGTbcQLz)4H%o$XUrN3nU4XW?>2z}_V(>#`q!aR zZZ6Stqs0L-pw?Hml`k%7)Q{0b-KO3hc8tG7X`Fc^V|hm;tfiI4-kRY2c!_o+J0~3iogOHScS6m;6xOt3U!_*o!+W zf-&)$1~E);NG>}zVM^%9v`8=0yx5e&kT9^<;#i~Cis=!FVNPNU8B5H_8nsu;ioK@A zT&vNH+n0}!D~FT&TIH^}iQWeb%0)JM5t!8TK&bYZU^U#d>T8C<;dBUi?WGSP=o6y& zdSGvxw-&n9>I)xqibbixWPW6xuN$zx$@??#6+z#?3|3{Z2!EjR_+YVc zY;f9IN9|WA18+$+DBQ3jqF^|nUX5~W?d0)j%94Wck za#NWM*HG=4Za|c0_!35!Ln|R5SNi31*%Vq?=>~r!*^Nsj)zXoO+Uf&o4I?xftat$EXdF%@BjH&Fxi4F5bK!4>jW@y+$6F0$kKQ>NZ0tET<>q$$Y7U4DqV z^ala8Ar&&)tI^R0CwIWKv4#*TJaemHZjM}jh3D?XmTs7%9iXF6WHodngJG`~F5a#cKje%mdNZDE%3xIU`T z4Vet?=L`3-Mv!)I`tOLCRJl*ds;ntZiQ_|;exXa*>Ysjk(^PA92a!s_BzG0*?>0Lc z{=?nBlgp6!0OB4@D`deueZywBdRbS(HfGx9GQtE*8qe!_?1F?zx3j&0`vP4=!Ux#C zUFjOxYwD(&NeOhLWSesx2}u1>!Y5<`VdU?nt-8k%vhhFS+^ODZ+V=bQ+Wvd5j$t)_ z-^{E9+!|E`$;~b=tTse9q%Ttk^t>$i7Z;4Jr-gXOJoA4+k(fKX?d|FYcAE1yoYN~1VPi@t{=-XH4D%NUo zNMOiz`k`Uxdx-;`Hw*8A$XmDX!j5l@Mns18f>jwb>3LamD{0kk-(;AL#0xEriHRPR z;+l)X3ay;XGaOgUqfPUr)eus-SjDfUS26WjmtG)G{Ymyy(hPI3KAnGcDf%kOt??((nO+{CsmBz>%UCj8M??y7ZxyAu^lZ5mnbi;^Pw=@H= z38z2CD#RdaI@(1xuT5?ampG=H-oO9T3n>7ZjHq<0-hsu)KH3SyqhRwn92#@LpqQJu zE~(3=l_$Q7g#Ob{E-Bp8$UAv~#K1IBsO_J5&u~HK#xFdXG<~tYWce;HKE~XYOf5cb zt~ok6;|7(UQr=2;d#xhctyj|HVyyb*#UDR@e6qU~beO=XA~}+Muk4X^nrd3i@v`gA z5A$TuKA*@uf>|e^l=BW-ps8C?m=)AszE|1jcU{468!DN5lO8XTZMFhoQNnMZ`@R4B zYrOhi(koq&W3FcmZg-d>TZ$iL5Htgf%^!Vvs9mIdxP9tqC*_8_W|zw0XG&eNPpp?L z6O5Rb3pWKGXW54$eY-m9d{4}nUZ9g*z2Vc_>SFG91*CR zA32mORjzQ~UQ-Y55I)g8oIhnV$=z{Vmn$)v#jD+^n;e%}l7F#=oE;`lufJ?x5&-r2k1P@T0qv2#~m{#$N2D=2SZI_$kW zq1YU=AI9-#omZK=hVM6THS{I(JSorJRCCcMr>YvR$&Cr~(uGm5IO`&HIunBLeCezQ z3!-yPnm(hMQifa+r=WgnerMW9D}3(v{`W`re{_;qu8VDRP1yg}{&J=l<5Lu&2YIG3BcG;M}eH#QgDPD20+5wvT9kEzs6*1qcbb$*bQ=Ef9N$ zvM@na_b6xMqioq}Di6wNHE!Ku_4p;ck$#CbS)21k=Ze~k!D-GHgInihtdIP{v$bUV zyI&8b`YpAzv&N8Ny|l_IktE@Hcono6hSUFZKC}fSpNK}WeII*3Rp?B+z$zkKmPVKZ znW6jn=$YdkMEOT>4kF`tQrmK+QP0h9iN(~%=+6hx=;Q^!yc zZB<_8yqI$6mV%f=2(Yt;zP;j20K2s~rbz$+8VynftbKLNbqW_rPs#t(6aoACQLN@x z2^dqlw8=D4P8ZL6J#o*%dxT>6|0C{LW9HV6=t64GfMG+yG7xVoWPd|Z-wvjS4N}%# z*J1Fn8&FR5lk>?Wi1bZom94~N>6QHyVvok4@Vg*48A`}(da$*?G^t(i;9V1w>L*J2 z*G@6zFwv?DL^jCMsnkoqe!W}quaaIWrZKNwy+Vb)PfB+{6X`u!I$cv@+!`WEDK(^ zcXPq-T1_H;w~xR6_0+%hyM;a{$4rvBGitJ4a@n~cr zp%4O9?ggtcJi2e*mg3A@Xh8AZ)>ifdibce(ZSWoBdZ%vDBAY~dAbQy@e-b;wH2K4c z4vRg8qTu#3z!vDs3n^G!&eyJqQB*+1E`K@Q#?SQZ*^3V^uviznE;P+il6%+ee!qj4 zCf8TySEZ$;l_m*!BL2%dBOWQ}jtsyfSoBJHcPFS-o_EC5ADTosBJuwd zJ{sqsz(~ol8wBOK72Uh<^xDs>o|^OQDLP&>*cK2hmBxUyZ&{K)m%6pd;(BRsF3ZfEtANL-WK1t8@KRwNhCLFMA&OqWX< zM$d8mJajbc!JAvSXvwG+w!lfhw}Wv~-T5j3ZMe`XA0FN+Hq|I z;_Yd2j+ddC!)ZjPDAIEz;{Mbk*N4&<85d>OKdg(d_Y1WKx!*qi}i zJT}9hc0q465OE$G(6+E}v+8g~U<9wws=tp9=}$tT#yYkYghB{bbD0OVA*2KRoE^F^ zF3Kr4sQ4SN?7jWO%t)N(MeBGR{C1w14d?7Jty~NVYy)n(^;faIy#iUS&UrLe5_{Ms zH3yHjdo|>gm6ai9MpzN^M1srDM5&rqZK{qQA>A^nYgDb0QRJ-P5^|7SzU!?h`uTkyZK= z+UYz?wif#p*`T+GFhuhZVujnpJP)7maEgmpZnQGHMgs}-D+#;he~DubZQj;0_oFu0P7@nec+*PKwHt` z*ef3E)&;5H$6Jl3e1qu_>&1|WG7-7h4ed)0e-zjx?<}GpEX!ML<$O%tQ4=lZyQg!# zhly2d;qY)&!tdBcvm4*i`zob9Xa+th62Ij%|JE;xk7@w$0_HLA!%U3RrwE;(ljx29 zTmsC*S6XZzzYyo z!$+mU-I*{T(ki<`-Ft5W^N18DX;CV8yiV=wHnFrr3thr=y>F#Id-p7H4a`^+Df+STW^2yy zwV&LbsO@2?r|4`xX%`D>h_vDyrvcIn)43Wj6DMV}@luFDEX^<`AHSs~9|qLR4W)?1 zfWkg0z|~+ei=-r{?z9mX)HIK1qM{L)5m%3bRtLmHlLSu~5DQkvfQ8z5LCOrjKDZ(( zaUUoVZrPK}@*UQ8EfNTa`=PQ@B~_dN#F;H2q9p$SvHr){>oHCMZa2z(@t^`BZ)}Oi zuEMU#p&G9Dn?2)w2HeDQ9JXLDVluP~naZ1xw;KOOW>pw=TFHq=jY2(7#C0r=mnrv; zW)zg?j`Z^!?Cutak)|pS^T8-xsWtjjgTY5b!0kVdL6PB4q zlG1$hj`#>t-k(C_yAOqdP}?{@T!quiYkPqL@zRmbsIM9bFwXw9K1RMV>855Ter340 z%5z>YP9dznd&>U)2{;IL(A5n<$Xn=6M>eI2%7mNc z){c&q=@+z_Wk@^+HGX>aNX4^i($SPEsO9n&Z;S7*r#*_{vU{|*8(l-~0w0S~^c_N2 zXb^u;mZ0?78udQ3c0({TK=2(v5V{q1+m?&R&Qdfu(od92gN5lU{*Z{Z3>I3=APlCW z@R90CduuE9->*nH#+WU;Q;dvnNuG!8m-7$esSQR)?pjv<&?8bXAirIyc(@rsim$Vl zsav9qw1O6ncFtu1-sCW7ktzfH*cM+F*x9z$bM%RnCXL~pUi$d{D@FQ3$9pFGpg@k| zp#uqOk-ZG}>~&(QBeTRQf6|zI*v-A{f7WQ(UFV-W#qA@;x0f+RTR&|8G;d9**m_?ov7Lby%M zym*Dr>TSB8x+>4awR7=vXz*l=eDde_X6x5iXVJYTM8l<1WD|!Zr;xD`jb3utEUh6a zHly(QWpB~@IZhYChe4MP9OE3|*8!RIL>xn>6h#112XLO|3Ch^&tZ}w%2)%e&EaL5% zQgP$peUj&{D{0z^g+bv~;lBN+hl4p1KCxGjo;yS(eI!3vK({#jd-B*Q|6C#sY~}8; z3c#2L&22%nu@o1C@1EhX6^kI8IPq;)JJ;-HFw)cS!`QlNDC3yapz!an9qo$K(D!ZV zqt!QBx0A+$4abrTTvo%AYtef~vP8Niz_iBp^r((Bp+!Ow#Qa!}*Wn{#Ax~Gf8cfh< zWFmn|0g};6etX?j?8;-p$o3pSnVn{XcLVfoS2AK)UwsKILYbOzRET)FR}2=}h^!1{ ziIAm6ges9$KwbtDW%-|fAzI^|q3lcqv7?!m!=08)~QfdQifo_q=hdrkqtqMh4U+K{s*_sw)DrmU1D+TzhjTs2J|->KO`@ zV^DtA%(|oSRB0@U`GYr~;zj>j_GC*=!P$=;Z^kM3+&5#yP}2Y$+E_Or;cPkD9b<=1 z@wZ=J@v?i~;DHb+9{8l7qMdHQZ!7>%bY;en%dgn(({VteXXwyo;T?7T5KhX==Bes* z?h7=g(3TTYSoLScK_sHd#m!xZh^mGAp;Dy@_RAjrMs=Ytel|Abr5dwejj0sWyWUqR zpVu|_se0&|s_VcUPevlE1Yqs zf4d-ATLOFknEP&Simih~9&$dofUIh1ZB@3STdT@fcDOL4&piIKH+`FbWD{9XA6(>l zBG6RDe*v13^xk)QfdZ!@D;wGRzQBVFDBAIFSVlk?NNz_YFMC66!GVjrd#Uy!kl;eZ z!rtX8=#yWMp?Jg~t9TNd(V(*Y7q|iUr63CLr$_{TvXke$sE*JL!+=CNY_!m~K@^h` zFI0b(I>HLS3F$uXm?K9xi9%U&pI_@6Jt~SVU>vA`1n4(O6!zS+J0g9z2f=W9aKJ6+ zpUsFk@tol|@dAVn{e7nZLq%73M17>|OMq@Nb*P7Ph6^S@-` zX>TIEYO<5O^y%p?x^au9QhlLogcqhki8$K0AruL2SY}$|RIV@*ak7|TB|}fUI(#AR z6@Axt&=n`rQRDvQ{x=fBC#WKfYPVu70&5r-kaip~gA3~H%m@(mj7d!vY0fUZetLI; z7b_QO1Rlvx3>ugc!jfh2{uR-?23S|$W)4|bP>$>RBo{d5h^YKED*Q61h4((GDJiW; zZ0U8DAmQYAw+bO=+#eqQ+IN2gHekIU6?=#?U)DSz!acd8{5j#Nvqh{EMZ0WzEz%Kt-4r26OU#xXtXhVg^uI|eBKfK3VB4OcRQTjLK zlq9+H`!(CzB@SkcT6r*Id@_W~ZoGPpK#7?qo>%x1y}~mMeK(0rw|-s6h|s&3r=NL0 zDSl8vX$-C}&Bsx(eI(Z;2wSY4V(x}j-(8T7rqjXI2XRz_F8KHVKE6v5e%sQQt zn%2OfP4GBvH>+!XbqW-dgun@ugSR0#lav4lUgXS&4-#QSkPf|o@*fsEq^G_oLrW#_ z!nMzAGXg8cG@dt}NuED#Z)4tM5+#^YOL+CM--F~NN<+bi-{1PK2rOpgoA!KCLPdmp z8z`fei+zTu;;8OQtzWj0mex(jrxyl9wlZG|iF93DOe5tZ!m5NwB%sK_UuOqFE zjAI?FxQU+cOV?lrjI4fGio)yiD0Z&Xg7WK_24BK82u1L0p_;khz{ks#S-i^osOQYm zTOUfVBQniBI8nDMz9hiksE#x~o{1SV9BI3NZMN#fp?QG9sZbQw4U|=esIa+KL%mV0 zL_MX@RXe4~O{=lLm@`Y1RI@I}i7I0rFKGTHw|S&?b36YWnbwzwFODNc35r#SuPx3G zCr-{(ac=8;_OFQ^b#5r;36(Gn{mXa5K=vNmUAm?douU z)+Se7bNq$iQUP>_^H$PiBh3bqXQnDEmh#$qjCtKQOh**U6$H0c1p^PCTaBm8zQoeq zse&Au$=IG4iSz$Blit{8*hUL2Vrfkp(X?)4l+vmRsX%4a#s0UrE8K?FXv>?DhNYL! zDsc>)nwT?u#(er4^ByHkE5VfB%Y3MtaO{<}N-_Cxx;eTlMV_>9R^q2{kX1Y%C3$XR z4KT;OvQ3^oSUi(6lEbIh?bmnPn}X)2Z%+o$eczT#{p3_y;okPpU5~cFwA)7Lr8ng`m^*V z1cT1X<#>V3{ta0%pmH04b7C26H91vAiZypsm(JYjDoSmuA1snlKOiG?E%V2YQZwQG zn`a#GTLNZ22ABth{tl>GvYp9mV{6l5zrs1k;;MP-b+L*3&>!3i3pl+l#}Vzq6(0<$ z!)q)jvxGsq9Y;iM#+llM(}Pyoai9;~3=Fhmd>E2>gJ#P&{iNV*x;;J0BA0?>llS{?t$PQWJ+CDvufc3WF254LR$-c5)1TEztld! z_lC0~*@=qN|4)h)R(u(BfR(W^@vUp+u^SiB$}-;gRO37|;c`k44Gb|r_E zK2Cs!b*sLNmfSu)Kn;|$boqZ2Sj3_{wxIY3pls9N*89e)k;Dq&W2$m7`qEUSY)Tid zw|xEj43M#x0T6S3z(VbWfA5GCH2xz;baD8DYML_BAX>CqxvM>)CxqZgedlbkOS)S6 zbs%G2ALBxhXc^}yhR2uW6)XTl=O*!^wmLngqotgLkt6_x0>(?1JzAcIeFR-nuznH* zsN=2vZs5gh)>nO*J>Fg-RTYd8Q0CEVpnoTr>^36zDm|^e~ z@HF4(_7M8X#u$$2hk4XmKsBM}R`~@*LQmYb*3U2eovP2ix9#0J1@)kcBh{TEZxI}G z1LCB`N645Ss20>{8wNY}n`;qsB){}jW5l*?b#0Kx55!oMqKpMV8&o(3TErSN+AsPhEnbYynh_gJH9~Ql zNRiFRG(d^{qC_y&C`C0>TWxphjTr{JKcBwOku#y6@bTUUa&&PjA`y&HsFMEde|tPq zVCB0nB~&w%zqunURDCmiI~#`YxG!box5vQrjRj7_?@e$L7aixIg`1k!`luLC)U9?6%+hBFub>tT(eHWC`5rHess* z)M>#@zgQB|wBB36BBn!fl9GW4eh40oedZ~gT-b6X6l><(LBA3UVLF$U@PD0g@=wWu#GjxzdoM8@tPRmJLgSU*QDLn#ME zGy&O2zjM8}N=nlE2u~)<^9!vypVI7h7Nx)!TcJ;#B^j2S=Ivy93)EE{yX1@0?o%&c zykLYARJwtDh!G#^+NA@iiv|QlCB1yI!Ve~H>xr?VGAfL*-x<}#$9DqHM??Lze*ZV9 z#SbrsaW4}zR6>VK+%gIZ7i_Odb41BO#kU!ROA~_BG?L*@b!`-HsU!=8t1*m$(gO~SfGb(+w}^Y z?$uFLq(q0@?SHqLt>UH=0R>hmlK)@4bO|XzpIMzrFo?gTcw33p2WDs`01&Z|3%|6D zxQwv^O&2Fc?k0}pJ1@A*Ldi*QIeoefRN@BA|M{Fg;2R7+_mGMZut=McA zu!$=k{ctjm$i6XSMuLmYzUi z@#{x}78~;)qGo@3Xh3t`0u&j$GWVEgi-%m~?-SCkDjIc9hod;pGv3~CPz39^Mjnm0 zC?xq^i*JSv!3Oyk4$81Mp%^`=-^%3{(Ba9{Njo}t?CqgKBFM6k=B0+u_PhO6PW@o` zJKm%zQ0*u@u0G_FGpW4`%*jFu^_@tED^H=Ho!1cX$2Kcl9gA9mZEZ+TF&ALkEgVOSR+UI+>9@v>d;_zMfY#R_3rLurhhC zX?FI$*H}?;v8KAZ`p?DSx`~O2FhNhMtTlOgdA*WvZG(f_FA@_oJod#fj1tk#8roqA zJt%JZ$X8X%t05%haqm_(MVx=%)W$+XofV#SJ>wvs6T#uu?A%=2{QLtgef>&@0qUI} z5fKr+f^NA@?Df{#l9G}?W0sbd9ukv~FuhhtJ!Yxjo%*SlxE8^8TRN;?E7R_H|O|(w_x&+Jm@$FG|;mW0Fwzf$L6{)*zqp=?S+ps#O(L6 zglt&f+#x+VgM<~5@dUY7b{~I}TswtEOTUMP7IVoH4Xx#z5ZdEu3<@+62R}SCO8y#5 zw5KrX2u)hy|LM2sVvLoITA`s`3>`oG?tzOYax3}Q=@', 'reporter-specific options') - .option('-R, --reporter ', 'specify the reporter to use', 'spec') - .option('-S, --sort', "sort test files") - .option('-b, --bail', "bail after first test failure") - .option('-d, --debug', "enable node's debugger, synonym for node --debug") - .option('-g, --grep ', 'only run tests matching ') - .option('-f, --fgrep ', 'only run tests containing ') - .option('-gc, --expose-gc', 'expose gc extension') - .option('-i, --invert', 'inverts --grep and --fgrep matches') - .option('-r, --require ', 'require the given module') - .option('-s, --slow ', '"slow" test threshold in milliseconds [75]') - .option('-t, --timeout ', 'set test-case timeout in milliseconds [2000]') - .option('-u, --ui ', 'specify user-interface (bdd|tdd|exports)', 'bdd') - .option('-w, --watch', 'watch files for changes') - .option('--check-leaks', 'check for global variable leaks') - .option('--full-trace', 'display the full stack trace') - .option('--compilers :,...', 'use the given module(s) to compile files', list, []) - .option('--debug-brk', "enable node's debugger breaking on the first line") - .option('--globals ', 'allow the given comma-delimited global [names]', list, []) - .option('--es_staging', 'enable all staged features') - .option('--harmony<_classes,_generators,...>', 'all node --harmony* flags are available') - .option('--inline-diffs', 'display actual/expected differences inline within each string') - .option('--interfaces', 'display available interfaces') - .option('--no-deprecation', 'silence deprecation warnings') - .option('--no-exit', 'require a clean shutdown of the event loop: mocha will not call process.exit') - .option('--no-timeouts', 'disables timeouts, given implicitly with --debug') - .option('--opts ', 'specify opts path', 'test/mocha.opts') - .option('--perf-basic-prof', 'enable perf linux profiler (basic support)') - .option('--prof', 'log statistical profiling information') - .option('--log-timer-events', 'Time events including external callbacks') - .option('--recursive', 'include sub directories') - .option('--reporters', 'display available reporters') - .option('--retries ', 'set numbers of time to retry a failed test case') - .option('--throw-deprecation', 'throw an exception anytime a deprecated function is used') - .option('--trace', 'trace function calls') - .option('--trace-deprecation', 'show stack traces on deprecations') - .option('--use_strict', 'enforce strict mode') - .option('--watch-extensions ,...', 'additional extensions to monitor with --watch', list, []) - .option('--delay', 'wait for async suite definition') - -program.name = 'mocha'; - -// init command - -program - .command('init ') - .description('initialize a client-side mocha setup at ') - .action(function(path){ - var mkdir = require('mkdirp'); - mkdir.sync(path); - var css = fs.readFileSync(join(__dirname, '..', 'mocha.css')); - var js = fs.readFileSync(join(__dirname, '..', 'mocha.js')); - var tmpl = fs.readFileSync(join(__dirname, '..', 'lib/template.html')); - fs.writeFileSync(join(path, 'mocha.css'), css); - fs.writeFileSync(join(path, 'mocha.js'), js); - fs.writeFileSync(join(path, 'tests.js'), ''); - fs.writeFileSync(join(path, 'index.html'), tmpl); - process.exit(0); - }); - -// --globals - -program.on('globals', function(val){ - globals = globals.concat(list(val)); -}); - -// --reporters - -program.on('reporters', function(){ - console.log(); - console.log(' dot - dot matrix'); - console.log(' doc - html documentation'); - console.log(' spec - hierarchical spec list'); - console.log(' json - single json object'); - console.log(' progress - progress bar'); - console.log(' list - spec-style listing'); - console.log(' tap - test-anything-protocol'); - console.log(' landing - unicode landing strip'); - console.log(' xunit - xunit reporter'); - console.log(' html-cov - HTML test coverage'); - console.log(' json-cov - JSON test coverage'); - console.log(' min - minimal reporter (great with --watch)'); - console.log(' json-stream - newline delimited json events'); - console.log(' markdown - markdown documentation (github flavour)'); - console.log(' nyan - nyan cat!'); - console.log(); - process.exit(); -}); - -// --interfaces - -program.on('interfaces', function(){ - console.log(''); - console.log(' bdd'); - console.log(' tdd'); - console.log(' qunit'); - console.log(' exports'); - console.log(''); - process.exit(); -}); - -// -r, --require - -module.paths.push(cwd, join(cwd, 'node_modules')); - -program.on('require', function(mod){ - var abs = exists(mod) || exists(mod + '.js'); - if (abs) mod = resolve(mod); - requires.push(mod); -}); - -// If not already done, load mocha.opts -if (!process.env.LOADED_MOCHA_OPTS) { - getOptions(); -} - -// parse args - -program.parse(process.argv); - -// infinite stack traces - -Error.stackTraceLimit = Infinity; // TODO: config - -// reporter options - -var reporterOptions = {}; -if (program.reporterOptions !== undefined) { - program.reporterOptions.split(",").forEach(function(opt) { - var L = opt.split("="); - if (L.length > 2 || L.length === 0) { - throw new Error("invalid reporter option '" + opt + "'"); - } else if (L.length === 2) { - reporterOptions[L[0]] = L[1]; - } else { - reporterOptions[L[0]] = true; - } - }); -} - -// reporter - -mocha.reporter(program.reporter, reporterOptions); - -// load reporter - -var Reporter = null; -try { - Reporter = require('../lib/reporters/' + program.reporter); -} catch (err) { - try { - Reporter = require(program.reporter); - } catch (err) { - throw new Error('reporter "' + program.reporter + '" does not exist'); - } -} - -// --no-colors - -if (!program.colors) mocha.useColors(false); - -// --colors - -if (~process.argv.indexOf('--colors') || - ~process.argv.indexOf('-c')) { - mocha.useColors(true); -} - -// --inline-diffs - -if (program.inlineDiffs) mocha.useInlineDiffs(true); - -// --slow - -if (program.slow) mocha.suite.slow(program.slow); - -// --no-timeouts - -if (!program.timeouts) mocha.enableTimeouts(false); - -// --timeout - -if (program.timeout) mocha.suite.timeout(program.timeout); - -// --bail - -mocha.suite.bail(program.bail); - -// --grep - -if (program.grep) mocha.grep(new RegExp(program.grep)); - -// --fgrep - -if (program.fgrep) mocha.grep(program.fgrep); - -// --invert - -if (program.invert) mocha.invert(); - -// --check-leaks - -if (program.checkLeaks) mocha.checkLeaks(); - -// --stack-trace - -if(program.fullTrace) mocha.fullTrace(); - -// --growl - -if (program.growl) mocha.growl(); - -// --async-only - -if (program.asyncOnly) mocha.asyncOnly(); - -// --delay - -if (program.delay) mocha.delay(); - -// --globals - -mocha.globals(globals); - -// --retries - -if (program.retries) mocha.suite.retries(program.retries); - -// custom compiler support - -var extensions = ['js']; -program.compilers.forEach(function(c) { - var compiler = c.split(':') - , ext = compiler[0] - , mod = compiler[1]; - - if (mod[0] == '.') mod = join(process.cwd(), mod); - require(mod); - extensions.push(ext); - program.watchExtensions.push(ext); -}); - -// requires - -requires.forEach(function(mod) { - require(mod); -}); - -// interface - -mocha.ui(program.ui); - -//args - -var args = program.args; - -// default files to test/*.{js,coffee} - -if (!args.length) args.push('test'); - -args.forEach(function(arg){ - files = files.concat(utils.lookupFiles(arg, extensions, program.recursive)); -}); - -// resolve - -files = files.map(function(path){ - return resolve(path); -}); - -if (program.sort) { - files.sort(); -} - -// --watch - -var runner; -if (program.watch) { - console.log(); - hideCursor(); - process.on('SIGINT', function(){ - showCursor(); - console.log('\n'); - process.exit(); - }); - - - var watchFiles = utils.files(cwd, [ 'js' ].concat(program.watchExtensions)); - var runAgain = false; - - function loadAndRun() { - try { - mocha.files = files; - runAgain = false; - runner = mocha.run(function(){ - runner = null; - if (runAgain) { - rerun(); - } - }); - } catch(e) { - console.log(e.stack); - } - } - - function purge() { - watchFiles.forEach(function(file){ - delete require.cache[file]; - }); - } - - loadAndRun(); - - function rerun() { - purge(); - stop() - if (!program.grep) - mocha.grep(null); - mocha.suite = mocha.suite.clone(); - mocha.suite.ctx = new Mocha.Context; - mocha.ui(program.ui); - loadAndRun(); - } - - utils.watch(watchFiles, function(){ - runAgain = true; - if (runner) { - runner.abort(); - } else { - rerun(); - } - }); - -} else { - -// load - - mocha.files = files; - runner = mocha.run(program.exit ? exit : exitLater); - -} - -function exitLater(code) { - process.on('exit', function() { process.exit(code) }) -} - -function exit(code) { - // flush output for Node.js Windows pipe bug - // https://github.com/joyent/node/issues/6247 is just one bug example - // https://github.com/visionmedia/mocha/issues/333 has a good discussion - function done() { - if (!(draining--)) process.exit(code); - } - - var draining = 0; - var streams = [process.stdout, process.stderr]; - - streams.forEach(function(stream){ - // submit empty write request and wait for completion - draining += 1; - stream.write('', done); - }); - - done(); -} - -process.on('SIGINT', function() { runner.abort(); }) - -// enable growl notifications - -function growl(runner, reporter) { - var notify = require('growl'); - - runner.on('end', function(){ - var stats = reporter.stats; - if (stats.failures) { - var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, { name: 'mocha', title: 'Failed', image: images.fail }); - } else { - notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { - name: 'mocha' - , title: 'Passed' - , image: images.pass - }); - } - }); -} - -/** - * Parse list. - */ - -function list(str) { - return str.split(/ *, */); -} - -/** - * Hide the cursor. - */ - -function hideCursor(){ - process.stdout.write('\u001b[?25l'); -} - -/** - * Show the cursor. - */ - -function showCursor(){ - process.stdout.write('\u001b[?25h'); -} - -/** - * Stop play()ing. - */ - -function stop() { - process.stdout.write('\u001b[2K'); - clearInterval(play.timer); -} - -/** - * Play the given array of strings. - */ - -function play(arr, interval) { - var len = arr.length - , interval = interval || 100 - , i = 0; - - play.timer = setInterval(function(){ - var str = arr[i++ % len]; - process.stdout.write('\u001b[0G' + str); - }, interval); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat deleted file mode 100755 index e095ddc6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/dateformat +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env node -/** - * dateformat - * - * Copyright (c) 2014 Charlike Mike Reagent (cli), contributors. - * Released under the MIT license. - */ - -'use strict'; - -/** - * Module dependencies. - */ - -var dateFormat = require('../lib/dateformat'); -var meow = require('meow'); -var stdin = require('get-stdin'); - -var cli = meow({ - pkg: '../package.json', - help: [ - 'Options', - ' --help Show this help', - ' --version Current version of package', - ' -d | --date Date that want to format (Date object as Number or String)', - ' -m | --mask Mask that will use to format the date', - ' -u | --utc Convert local time to UTC time or use `UTC:` prefix in mask', - ' -g | --gmt You can use `GMT:` prefix in mask', - '', - 'Usage', - ' dateformat [date] [mask]', - ' dateformat "Nov 26 2014" "fullDate"', - ' dateformat 1416985417095 "dddd, mmmm dS, yyyy, h:MM:ss TT"', - ' dateformat 1315361943159 "W"', - ' dateformat "UTC:h:MM:ss TT Z"', - ' dateformat "longTime" true', - ' dateformat "longTime" false true', - ' dateformat "Jun 9 2007" "fullDate" true', - ' date +%s | dateformat', - '' - ].join('\n') -}) - -var date = cli.input[0] || cli.flags.d || cli.flags.date || Date.now(); -var mask = cli.input[1] || cli.flags.m || cli.flags.mask || dateFormat.masks.default; -var utc = cli.input[2] || cli.flags.u || cli.flags.utc || false; -var gmt = cli.input[3] || cli.flags.g || cli.flags.gmt || false; - -utc = utc === 'true' ? true : false; -gmt = gmt === 'true' ? true : false; - -if (!cli.input.length) { - stdin(function(date) { - console.log(dateFormat(date, dateFormat.masks.default, utc, gmt)); - }); - return; -} - -if (cli.input.length === 1 && date) { - mask = date; - date = Date.now(); - console.log(dateFormat(date, mask, utc, gmt)); - return; -} - -if (cli.input.length >= 2 && date && mask) { - if (mask === 'true' || mask === 'false') { - utc = mask === 'true' ? true : false; - gmt = !utc; - mask = date - date = Date.now(); - } - console.log(dateFormat(date, mask, utc, gmt)); - return; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp deleted file mode 100755 index a5374c11..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/gulp +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env node - -'use strict'; -var gutil = require('gulp-util'); -var prettyTime = require('pretty-hrtime'); -var chalk = require('chalk'); -var semver = require('semver'); -var archy = require('archy'); -var Liftoff = require('liftoff'); -var tildify = require('tildify'); -var interpret = require('interpret'); -var v8flags = require('v8flags'); -var completion = require('../lib/completion'); -var argv = require('minimist')(process.argv.slice(2)); -var taskTree = require('../lib/taskTree'); - -// Set env var for ORIGINAL cwd -// before anything touches it -process.env.INIT_CWD = process.cwd(); - -var cli = new Liftoff({ - name: 'gulp', - completions: completion, - extensions: interpret.jsVariants, - v8flags: v8flags, -}); - -// Exit with 0 or 1 -var failed = false; -process.once('exit', function(code) { - if (code === 0 && failed) { - process.exit(1); - } -}); - -// Parse those args m8 -var cliPackage = require('../package'); -var versionFlag = argv.v || argv.version; -var tasksFlag = argv.T || argv.tasks; -var tasks = argv._; -var toRun = tasks.length ? tasks : ['default']; - -// This is a hold-over until we have a better logging system -// with log levels -var simpleTasksFlag = argv['tasks-simple']; -var shouldLog = !argv.silent && !simpleTasksFlag; - -if (!shouldLog) { - gutil.log = function() {}; -} - -cli.on('require', function(name) { - gutil.log('Requiring external module', chalk.magenta(name)); -}); - -cli.on('requireFail', function(name) { - gutil.log(chalk.red('Failed to load external module'), chalk.magenta(name)); -}); - -cli.on('respawn', function(flags, child) { - var nodeFlags = chalk.magenta(flags.join(', ')); - var pid = chalk.magenta(child.pid); - gutil.log('Node flags detected:', nodeFlags); - gutil.log('Respawned to PID:', pid); -}); - -cli.launch({ - cwd: argv.cwd, - configPath: argv.gulpfile, - require: argv.require, - completion: argv.completion, -}, handleArguments); - -// The actual logic -function handleArguments(env) { - if (versionFlag && tasks.length === 0) { - gutil.log('CLI version', cliPackage.version); - if (env.modulePackage && typeof env.modulePackage.version !== 'undefined') { - gutil.log('Local version', env.modulePackage.version); - } - process.exit(0); - } - - if (!env.modulePath) { - gutil.log( - chalk.red('Local gulp not found in'), - chalk.magenta(tildify(env.cwd)) - ); - gutil.log(chalk.red('Try running: npm install gulp')); - process.exit(1); - } - - if (!env.configPath) { - gutil.log(chalk.red('No gulpfile found')); - process.exit(1); - } - - // Check for semver difference between cli and local installation - if (semver.gt(cliPackage.version, env.modulePackage.version)) { - gutil.log(chalk.red('Warning: gulp version mismatch:')); - gutil.log(chalk.red('Global gulp is', cliPackage.version)); - gutil.log(chalk.red('Local gulp is', env.modulePackage.version)); - } - - // Chdir before requiring gulpfile to make sure - // we let them chdir as needed - if (process.cwd() !== env.cwd) { - process.chdir(env.cwd); - gutil.log( - 'Working directory changed to', - chalk.magenta(tildify(env.cwd)) - ); - } - - // This is what actually loads up the gulpfile - require(env.configPath); - gutil.log('Using gulpfile', chalk.magenta(tildify(env.configPath))); - - var gulpInst = require(env.modulePath); - logEvents(gulpInst); - - process.nextTick(function() { - if (simpleTasksFlag) { - return logTasksSimple(env, gulpInst); - } - if (tasksFlag) { - return logTasks(env, gulpInst); - } - gulpInst.start.apply(gulpInst, toRun); - }); -} - -function logTasks(env, localGulp) { - var tree = taskTree(localGulp.tasks); - tree.label = 'Tasks for ' + chalk.magenta(tildify(env.configPath)); - archy(tree) - .split('\n') - .forEach(function(v) { - if (v.trim().length === 0) { - return; - } - gutil.log(v); - }); -} - -function logTasksSimple(env, localGulp) { - console.log(Object.keys(localGulp.tasks) - .join('\n') - .trim()); -} - -// Format orchestrator errors -function formatError(e) { - if (!e.err) { - return e.message; - } - - // PluginError - if (typeof e.err.showStack === 'boolean') { - return e.err.toString(); - } - - // Normal error - if (e.err.stack) { - return e.err.stack; - } - - // Unknown (string, number, etc.) - return new Error(String(e.err)).stack; -} - -// Wire up logging events -function logEvents(gulpInst) { - - // Total hack due to poor error management in orchestrator - gulpInst.on('err', function() { - failed = true; - }); - - gulpInst.on('task_start', function(e) { - // TODO: batch these - // so when 5 tasks start at once it only logs one time with all 5 - gutil.log('Starting', '\'' + chalk.cyan(e.task) + '\'...'); - }); - - gulpInst.on('task_stop', function(e) { - var time = prettyTime(e.hrDuration); - gutil.log( - 'Finished', '\'' + chalk.cyan(e.task) + '\'', - 'after', chalk.magenta(time) - ); - }); - - gulpInst.on('task_err', function(e) { - var msg = formatError(e); - var time = prettyTime(e.hrDuration); - gutil.log( - '\'' + chalk.cyan(e.task) + '\'', - chalk.red('errored after'), - chalk.magenta(time) - ); - gutil.log(msg); - }); - - gulpInst.on('task_not_found', function(err) { - gutil.log( - chalk.red('Task \'' + err.task + '\' is not in your gulpfile') - ); - gutil.log('Please check the documentation for proper gulpfile formatting'); - process.exit(1); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator deleted file mode 100755 index ab1db256..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/har-validator +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node - -'use strict' - -var Promise = require('bluebird') - -var chalk = require('chalk') -var cmd = require('commander') -var fs = Promise.promisifyAll(require('fs')) -var path = require('path') -var pkg = require('../package.json') -var validate = Promise.promisifyAll(require('..')) - -cmd - .version(pkg.version) - .usage('[options] ') - .option('-s, --schema [name]', 'validate schema name (log, request, response, etc ...)') - .parse(process.argv) - -if (!cmd.args.length) { - cmd.help() -} - -if (!cmd.schema) { - cmd.schema = 'har' -} - -cmd.args.map(function (fileName) { - var file = chalk.yellow.italic(path.basename(fileName)) - - fs.readFileAsync(fileName) - .then(JSON.parse) - .then(validate[cmd.schema + 'Async']) - .then(function () { - console.log('%s [%s] is valid', chalk.green('✓'), file) - }) - .catch(SyntaxError, function (e) { - console.error('%s [%s] failed to read JSON: %s', chalk.red('✖'), file, chalk.red(e.message)) - }) - .catch(function (e) { - e.errors.map(function (err) { - console.error('%s [%s] failed validation: (%s: %s) %s', chalk.red('✖'), file, chalk.cyan.italic(err.field), chalk.magenta.italic(err.value), chalk.red(err.message)) - }) - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade deleted file mode 100755 index 7e6002f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/jade +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var fs = require('fs') - , program = require('commander') - , path = require('path') - , basename = path.basename - , dirname = path.dirname - , resolve = path.resolve - , join = path.join - , mkdirp = require('mkdirp') - , jade = require('../'); - -// jade options - -var options = {}; - -// options - -program - .version(jade.version) - .usage('[options] [dir|file ...]') - .option('-o, --obj ', 'javascript options object') - .option('-O, --out

', 'output the compiled html to ') - .option('-p, --path ', 'filename used to resolve includes') - .option('-P, --pretty', 'compile pretty html output') - .option('-c, --client', 'compile for client-side runtime.js') - .option('-D, --no-debug', 'compile without debugging (smaller functions)') - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' # translate jade the templates dir'); - console.log(' $ jade templates'); - console.log(''); - console.log(' # create {foo,bar}.html'); - console.log(' $ jade {foo,bar}.jade'); - console.log(''); - console.log(' # jade over stdio'); - console.log(' $ jade < my.jade > my.html'); - console.log(''); - console.log(' # jade over stdio'); - console.log(' $ echo "h1 Jade!" | jade'); - console.log(''); - console.log(' # foo, bar dirs rendering to /tmp'); - console.log(' $ jade foo bar --out /tmp '); - console.log(''); -}); - -program.parse(process.argv); - -// options given, parse them - -if (program.obj) options = eval('(' + program.obj + ')'); - -// --filename - -if (program.path) options.filename = program.path; - -// --no-debug - -options.compileDebug = program.debug; - -// --client - -options.client = program.client; - -// --pretty - -options.pretty = program.pretty; - -// left-over args are file paths - -var files = program.args; - -// compile files - -if (files.length) { - console.log(); - files.forEach(renderFile); - process.on('exit', console.log); -// stdio -} else { - stdin(); -} - -/** - * Compile from stdin. - */ - -function stdin() { - var buf = ''; - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function(chunk){ buf += chunk; }); - process.stdin.on('end', function(){ - var fn = jade.compile(buf, options); - var output = options.client - ? fn.toString() - : fn(options); - process.stdout.write(output); - }).resume(); -} - -/** - * Process the given path, compiling the jade files found. - * Always walk the subdirectories. - */ - -function renderFile(path) { - var re = /\.jade$/; - fs.lstat(path, function(err, stat) { - if (err) throw err; - // Found jade file - if (stat.isFile() && re.test(path)) { - fs.readFile(path, 'utf8', function(err, str){ - if (err) throw err; - options.filename = path; - var fn = jade.compile(str, options); - var extname = options.client ? '.js' : '.html'; - path = path.replace(re, extname); - if (program.out) path = join(program.out, basename(path)); - var dir = resolve(dirname(path)); - mkdirp(dir, 0755, function(err){ - if (err) throw err; - var output = options.client - ? fn.toString() - : fn(options); - fs.writeFile(path, output, function(err){ - if (err) throw err; - console.log(' \033[90mrendered \033[36m%s\033[0m', path); - }); - }); - }); - // Found directory - } else if (stat.isDirectory()) { - fs.readdir(path, function(err, files) { - if (err) throw err; - files.map(function(filename) { - return path + '/' + filename; - }).forEach(renderFile); - }); - } - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp deleted file mode 100755 index d95de15a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mkdirp +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -var mkdirp = require('../'); -var minimist = require('minimist'); -var fs = require('fs'); - -var argv = minimist(process.argv.slice(2), { - alias: { m: 'mode', h: 'help' }, - string: [ 'mode' ] -}); -if (argv.help) { - fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); - return; -} - -var paths = argv._.slice(); -var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; - -(function next () { - if (paths.length === 0) return; - var p = paths.shift(); - - if (mode === undefined) mkdirp(p, cb) - else mkdirp(p, mode, cb) - - function cb (err) { - if (err) { - console.error(err.message); - process.exit(1); - } - else next(); - } -})(); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha deleted file mode 100755 index 3a392379..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/mocha +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env node - -/** - * This tiny wrapper file checks for known node flags and appends them - * when found, before invoking the "real" _mocha(1) executable. - */ - -var spawn = require('child_process').spawn, - path = require('path'), - fs = require('fs'), - getOptions = require('./options'), - args = [path.join(__dirname, '_mocha')]; - -// Load mocha.opts into process.argv -// Must be loaded here to handle node-specific options -getOptions(); - -process.argv.slice(2).forEach(function(arg){ - var flag = arg.split('=')[0]; - - switch (flag) { - case '-d': - args.unshift('--debug'); - args.push('--no-timeouts'); - break; - case 'debug': - case '--debug': - case '--debug-brk': - args.unshift(arg); - args.push('--no-timeouts'); - break; - case '-gc': - case '--expose-gc': - args.unshift('--expose-gc'); - break; - case '--gc-global': - case '--es_staging': - case '--no-deprecation': - case '--prof': - case '--log-timer-events': - case '--throw-deprecation': - case '--trace-deprecation': - case '--use_strict': - case '--allow-natives-syntax': - case '--perf-basic-prof': - args.unshift(arg); - break; - default: - if (0 == arg.indexOf('--harmony')) args.unshift(arg); - else if (0 == arg.indexOf('--trace')) args.unshift(arg); - else if (0 == arg.indexOf('--max-old-space-size')) args.unshift(arg); - else args.push(arg); - break; - } -}); - -var proc = spawn(process.execPath, args, { stdio: 'inherit' }); -proc.on('exit', function (code, signal) { - process.on('exit', function(){ - if (signal) { - process.kill(process.pid, signal); - } else { - process.exit(code); - } - }); -}); - -// terminate children. -process.on('SIGINT', function () { - proc.kill('SIGINT'); // calls runner.abort() - proc.kill('SIGTERM'); // if that didn't work, we're probably in an infinite loop, so make it die. -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver deleted file mode 100755 index c5f2e857..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/semver +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env node -// Standalone semver comparison program. -// Exits successfully and prints matching version(s) if -// any supplied version is valid and passes all tests. - -var argv = process.argv.slice(2) - , versions = [] - , range = [] - , gt = [] - , lt = [] - , eq = [] - , inc = null - , version = require("../package.json").version - , loose = false - , identifier = undefined - , semver = require("../semver") - , reverse = false - -main() - -function main () { - if (!argv.length) return help() - while (argv.length) { - var a = argv.shift() - var i = a.indexOf('=') - if (i !== -1) { - a = a.slice(0, i) - argv.unshift(a.slice(i + 1)) - } - switch (a) { - case "-rv": case "-rev": case "--rev": case "--reverse": - reverse = true - break - case "-l": case "--loose": - loose = true - break - case "-v": case "--version": - versions.push(argv.shift()) - break - case "-i": case "--inc": case "--increment": - switch (argv[0]) { - case "major": case "minor": case "patch": case "prerelease": - case "premajor": case "preminor": case "prepatch": - inc = argv.shift() - break - default: - inc = "patch" - break - } - break - case "--preid": - identifier = argv.shift() - break - case "-r": case "--range": - range.push(argv.shift()) - break - case "-h": case "--help": case "-?": - return help() - default: - versions.push(a) - break - } - } - - versions = versions.filter(function (v) { - return semver.valid(v, loose) - }) - if (!versions.length) return fail() - if (inc && (versions.length !== 1 || range.length)) - return failInc() - - for (var i = 0, l = range.length; i < l ; i ++) { - versions = versions.filter(function (v) { - return semver.satisfies(v, range[i], loose) - }) - if (!versions.length) return fail() - } - return success(versions) -} - -function failInc () { - console.error("--inc can only be used on a single version with no range") - fail() -} - -function fail () { process.exit(1) } - -function success () { - var compare = reverse ? "rcompare" : "compare" - versions.sort(function (a, b) { - return semver[compare](a, b, loose) - }).map(function (v) { - return semver.clean(v, loose) - }).map(function (v) { - return inc ? semver.inc(v, inc, loose, identifier) : v - }).forEach(function (v,i,_) { console.log(v) }) -} - -function help () { - console.log(["SemVer " + version - ,"" - ,"A JavaScript implementation of the http://semver.org/ specification" - ,"Copyright Isaac Z. Schlueter" - ,"" - ,"Usage: semver [options] [ [...]]" - ,"Prints valid versions sorted by SemVer precedence" - ,"" - ,"Options:" - ,"-r --range " - ," Print versions that match the specified range." - ,"" - ,"-i --increment []" - ," Increment a version by the specified level. Level can" - ," be one of: major, minor, patch, premajor, preminor," - ," prepatch, or prerelease. Default level is 'patch'." - ," Only one version may be specified." - ,"" - ,"--preid " - ," Identifier to be used to prefix premajor, preminor," - ," prepatch or prerelease version increments." - ,"" - ,"-l --loose" - ," Interpret versions and ranges loosely" - ,"" - ,"Program exits successfully if any valid version satisfies" - ,"all supplied ranges, and prints all satisfying versions." - ,"" - ,"If no satisfying versions are found, then exits failure." - ,"" - ,"Versions are printed in ascending order, so supplying" - ,"multiple versions to the utility will just sort them." - ].join("\n")) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv deleted file mode 100755 index a1205a45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-conv +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var tty = require('tty'); -var readline = require('readline'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['outformat', 't'], - type: 'string', - help: 'Output format' - }, - { - names: ['informat', 'T'], - type: 'string', - help: 'Input format' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input file name (default stdin)' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output file name (default stdout)' - }, - { - names: ['private', 'p'], - type: 'bool', - help: 'Produce a private key as output' - }, - { - names: ['derive', 'd'], - type: 'string', - help: 'Output a new key derived from this one, with given algo' - }, - { - names: ['identify', 'i'], - type: 'bool', - help: 'Print key metadata instead of converting' - }, - { - names: ['comment', 'c'], - type: 'string', - help: 'Set key comment, if output format supports' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-conv: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-conv: converts between SSH key formats\n'); - console.error(help); - console.error('\navailable formats:'); - console.error(' - pem, pkcs1 eg id_rsa'); - console.error(' - ssh eg id_rsa.pub'); - console.error(' - pkcs8 format you want for openssl'); - console.error(' - openssh like output of ssh-keygen -o'); - console.error(' - rfc4253 raw OpenSSH wire format'); - process.exit(1); - } - - /* - * Key derivation can only be done on private keys, so use of the -d - * option necessarily implies -p. - */ - if (opts.derive) - opts.private = true; - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-conv: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - console.error('sshpk-conv: error opening output file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var bufs = []; - inFile.on('readable', function () { - var data; - while ((data = inFile.read())) - bufs.push(data); - }); - var parseOpts = {}; - parseOpts.filename = inFileName; - inFile.on('end', function processKey() { - var buf = Buffer.concat(bufs); - var fmt = 'auto'; - if (opts.informat) - fmt = opts.informat; - var f = sshpk.parseKey; - if (opts.private) - f = sshpk.parsePrivateKey; - try { - var key = f(buf, fmt, parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - parseOpts.passphrase = pw; - processKey(); - }); - return; - } - console.error('sshpk-conv: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (opts.derive) - key = key.derive(opts.derive); - - if (opts.comment) - key.comment = opts.comment; - - if (!opts.identify) { - fmt = undefined; - if (opts.outformat) - fmt = opts.outformat; - outFile.write(key.toBuffer(fmt)); - if (fmt === 'ssh' || - (!opts.private && fmt === undefined)) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - } else { - var kind = 'public'; - if (sshpk.PrivateKey.isPrivateKey(key)) - kind = 'private'; - console.log('%s: a %d bit %s %s key', inFileName, - key.size, key.type.toUpperCase(), kind); - if (key.type === 'ecdsa') - console.log('ECDSA curve: %s', key.curve); - if (key.comment) - console.log('Comment: %s', key.comment); - console.log('Fingerprint:'); - console.log(' ' + key.fingerprint().toString()); - console.log(' ' + key.fingerprint('md5').toString()); - process.exit(0); - } - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign deleted file mode 100755 index 673fc986..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-sign +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['binary', 'b'], - type: 'bool', - help: 'Output raw binary instead of base64' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -var parseOpts = {}; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-sign: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: sign data using an SSH key\n'); - console.error(help); - process.exit(1); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(1); - } - - var keyData = fs.readFileSync(opts.identity); - parseOpts.filename = opts.identity; - - run(); -} - -function run() { - var key; - try { - key = sshpk.parsePrivateKey(keyData, 'auto', parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - parseOpts.passphrase = pw; - run(); - }); - return; - } - console.error('sshpk-sign: error loading private key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(1); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var signer; - try { - signer = key.createSign(hash); - } catch (e) { - console.error('sshpk-sign: error creating signer: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (opts.verbose) { - console.error('sshpk-sign: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-sign: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - console.error('sshpk-sign: error opening output file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - inFile.pipe(signer); - inFile.on('end', function () { - var sig; - try { - sig = signer.sign(); - } catch (e) { - console.error('sshpk-sign: error signing data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - var fmt = opts.format || 'asn1'; - var output; - try { - output = sig.toBuffer(fmt); - if (!opts.binary) - output = output.toString('base64'); - } catch (e) { - console.error('sshpk-sign: error converting signature' + - ' to ' + fmt + ' format: ' + e.name + ': ' + - e.message); - process.exit(1); - } - - outFile.write(output); - if (!opts.binary) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify deleted file mode 100755 index a1669f40..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/sshpk-verify +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to (public) key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['signature', 's'], - type: 'string', - help: 'base64-encoded signature data' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-verify: error: %s', e.message); - process.exit(3); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: sign data using an SSH key\n'); - console.error(help); - process.exit(3); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - if (!opts.signature) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -s or --signature option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - var keyData = fs.readFileSync(opts.identity); - - var key; - try { - key = sshpk.parseKey(keyData); - } catch (e) { - console.error('sshpk-verify: error loading key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(2); - } - - var fmt = opts.format || 'asn1'; - var sigData = new Buffer(opts.signature, 'base64'); - - var sig; - try { - sig = sshpk.parseSignature(sigData, key.type, fmt); - } catch (e) { - console.error('sshpk-verify: error parsing signature: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var verifier; - try { - verifier = key.createVerify(hash); - } catch (e) { - console.error('sshpk-verify: error creating verifier: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - if (opts.verbose) { - console.error('sshpk-verify: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-verify: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(2); - } - - inFile.pipe(verifier); - inFile.on('end', function () { - var ret; - try { - ret = verifier.verify(sig); - } catch (e) { - console.error('sshpk-verify: error verifying data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (ret) { - console.error('OK'); - process.exit(0); - } - - console.error('NOT OK'); - process.exit(1); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent deleted file mode 100755 index bcd5f8d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/strip-indent +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var stdin = require('get-stdin'); -var pkg = require('./package.json'); -var stripIndent = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-indent ', - ' echo | strip-indent', - '', - ' Example', - ' echo \'\\tunicorn\\n\\t\\tcake\' | strip-indent', - ' unicorn', - ' \tcake' - ].join('\n')); -} - -function init(data) { - console.log(stripIndent(data)); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - init(fs.readFileSync(input, 'utf8')); -} else { - stdin(init); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc deleted file mode 100755 index 19c62bf7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsc +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('../lib/tsc.js') diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint deleted file mode 100755 index e052e09d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tslint +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require("../lib/tslint-cli"); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver deleted file mode 100755 index 7143b6a7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/tsserver +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('../lib/tsserver.js') diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home deleted file mode 100755 index bacbd227..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/user-home +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var userHome = require('./'); - -function help() { - console.log([ - pkg.description, - '', - 'Example', - ' $ user-home', - ' /Users/sindresorhus' - ].join('\n')); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -process.stdout.write(userHome); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid deleted file mode 100755 index f732e991..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/.bin/uuid +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); -var uuid = require(path.join(__dirname, '..')); - -var arg = process.argv[2]; - -if ('--help' === arg) { - console.log('\n USAGE: uuid [version] [options]\n\n'); - console.log(' options:\n'); - console.log(' --help Display this message and exit\n'); - process.exit(0); -} - -if (null == arg) { - console.log(uuid()); - process.exit(0); -} - -if ('v1' !== arg && 'v4' !== arg) { - console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"'); - process.exit(1); -} - -console.log(uuid[arg]()); -process.exit(0); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE deleted file mode 100644 index af46c6df..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -amdefine is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2011-2015, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2011-2015, The Dojo Foundation - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md deleted file mode 100644 index 037a6e81..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# amdefine - -A module that can be used to implement AMD's define() in Node. This allows you -to code to the AMD API and have the module work in node programs without -requiring those other programs to use AMD. - -## Usage - -**1)** Update your package.json to indicate amdefine as a dependency: - -```javascript - "dependencies": { - "amdefine": ">=0.1.0" - } -``` - -Then run `npm install` to get amdefine into your project. - -**2)** At the top of each module that uses define(), place this code: - -```javascript -if (typeof define !== 'function') { var define = require('amdefine')(module) } -``` - -**Only use these snippets** when loading amdefine. If you preserve the basic structure, -with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). - -You can add spaces, line breaks and even require amdefine with a local path, but -keep the rest of the structure to get the stripping behavior. - -As you may know, because `if` statements in JavaScript don't have their own scope, the var -declaration in the above snippet is made whether the `if` expression is truthy or not. If -RequireJS is loaded then the declaration is superfluous because `define` is already already -declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` -declarations of the same variable in the same scope gracefully. - -If you want to deliver amdefine.js with your code rather than specifying it as a dependency -with npm, then just download the latest release and refer to it using a relative path: - -[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) - -### amdefine/intercept - -Consider this very experimental. - -Instead of pasting the piece of text for the amdefine setup of a `define` -variable in each module you create or consume, you can use `amdefine/intercept` -instead. It will automatically insert the above snippet in each .js file loaded -by Node. - -**Warning**: you should only use this if you are creating an application that -is consuming AMD style defined()'d modules that are distributed via npm and want -to run that code in Node. - -For library code where you are not sure if it will be used by others in Node or -in the browser, then explicitly depending on amdefine and placing the code -snippet above is suggested path, instead of using `amdefine/intercept`. The -intercept module affects all .js files loaded in the Node app, and it is -inconsiderate to modify global state like that unless you are also controlling -the top level app. - -#### Why distribute AMD-style modules via npm? - -npm has a lot of weaknesses for front-end use (installed layout is not great, -should have better support for the `baseUrl + moduleID + '.js' style of loading, -single file JS installs), but some people want a JS package manager and are -willing to live with those constraints. If that is you, but still want to author -in AMD style modules to get dynamic require([]), better direct source usage and -powerful loader plugin support in the browser, then this tool can help. - -#### amdefine/intercept usage - -Just require it in your top level app module (for example index.js, server.js): - -```javascript -require('amdefine/intercept'); -``` - -The module does not return a value, so no need to assign the result to a local -variable. - -Then just require() code as you normally would with Node's require(). Any .js -loaded after the intercept require will have the amdefine check injected in -the .js source as it is loaded. It does not modify the source on disk, just -prepends some content to the text of the module as it is loaded by Node. - -#### How amdefine/intercept works - -It overrides the `Module._extensions['.js']` in Node to automatically prepend -the amdefine snippet above. So, it will affect any .js file loaded by your -app. - -## define() usage - -It is best if you use the anonymous forms of define() in your module: - -```javascript -define(function (require) { - var dependency = require('dependency'); -}); -``` - -or - -```javascript -define(['dependency'], function (dependency) { - -}); -``` - -## RequireJS optimizer integration. - -Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) -will have support for stripping the `if (typeof define !== 'function')` check -mentioned above, so you can include this snippet for code that runs in the -browser, but avoid taking the cost of the if() statement once the code is -optimized for deployment. - -## Node 0.4 Support - -If you want to support Node 0.4, then add `require` as the second parameter to amdefine: - -```javascript -//Only if you want Node 0.4. If using 0.5 or later, use the above snippet. -if (typeof define !== 'function') { var define = require('amdefine')(module, require) } -``` - -## Limitations - -### Synchronous vs Asynchronous - -amdefine creates a define() function that is callable by your code. It will -execute and trace dependencies and call the factory function *synchronously*, -to keep the behavior in line with Node's synchronous dependency tracing. - -The exception: calling AMD's callback-style require() from inside a factory -function. The require callback is called on process.nextTick(): - -```javascript -define(function (require) { - require(['a'], function(a) { - //'a' is loaded synchronously, but - //this callback is called on process.nextTick(). - }); -}); -``` - -### Loader Plugins - -Loader plugins are supported as long as they call their load() callbacks -synchronously. So ones that do network requests will not work. However plugins -like [text](http://requirejs.org/docs/api.html#text) can load text files locally. - -The plugin API's `load.fromText()` is **not supported** in amdefine, so this means -transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) -will not work. This may be fixable, but it is a bit complex, and I do not have -enough node-fu to figure it out yet. See the source for amdefine.js if you want -to get an idea of the issues involved. - -## Tests - -To run the tests, cd to **tests** and run: - -``` -node all.js -node all-intercept.js -``` - -## License - -New BSD and MIT. Check the LICENSE file for all the details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js deleted file mode 100644 index 0c4a954a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/amdefine.js +++ /dev/null @@ -1,301 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license amdefine 1.0.0 Copyright (c) 2011-2015, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/amdefine for details - */ - -/*jslint node: true */ -/*global module, process */ -'use strict'; - -/** - * Creates a define for node. - * @param {Object} module the "module" object that is defined by Node for the - * current module. - * @param {Function} [requireFn]. Node's require function for the current module. - * It only needs to be passed in Node versions before 0.5, when module.require - * did not exist. - * @returns {Function} a define function that is usable for the current node - * module. - */ -function amdefine(module, requireFn) { - 'use strict'; - var defineCache = {}, - loaderCache = {}, - alreadyCalled = false, - path = require('path'), - makeRequire, stringRequire; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; ary[i]; i+= 1) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - function normalize(name, baseName) { - var baseParts; - - //Adjust any relative paths. - if (name && name.charAt(0) === '.') { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - baseParts = baseName.split('/'); - baseParts = baseParts.slice(0, baseParts.length - 1); - baseParts = baseParts.concat(name.split('/')); - trimDots(baseParts); - name = baseParts.join('/'); - } - } - - return name; - } - - /** - * Create the normalize() function passed to a loader plugin's - * normalize method. - */ - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(id) { - function load(value) { - loaderCache[id] = value; - } - - load.fromText = function (id, text) { - //This one is difficult because the text can/probably uses - //define, and any relative paths and requires should be relative - //to that id was it would be found on disk. But this would require - //bootstrapping a module/require fairly deeply from node core. - //Not sure how best to go about that yet. - throw new Error('amdefine does not implement load.fromText'); - }; - - return load; - } - - makeRequire = function (systemRequire, exports, module, relId) { - function amdRequire(deps, callback) { - if (typeof deps === 'string') { - //Synchronous, single module require('') - return stringRequire(systemRequire, exports, module, deps, relId); - } else { - //Array of dependencies with a callback. - - //Convert the dependencies to modules. - deps = deps.map(function (depName) { - return stringRequire(systemRequire, exports, module, depName, relId); - }); - - //Wait for next tick to call back the require call. - if (callback) { - process.nextTick(function () { - callback.apply(null, deps); - }); - } - } - } - - amdRequire.toUrl = function (filePath) { - if (filePath.indexOf('.') === 0) { - return normalize(filePath, path.dirname(module.filename)); - } else { - return filePath; - } - }; - - return amdRequire; - }; - - //Favor explicit value, passed in if the module wants to support Node 0.4. - requireFn = requireFn || function req() { - return module.require.apply(module, arguments); - }; - - function runFactory(id, deps, factory) { - var r, e, m, result; - - if (id) { - e = loaderCache[id] = {}; - m = { - id: id, - uri: __filename, - exports: e - }; - r = makeRequire(requireFn, e, m, id); - } else { - //Only support one define call per file - if (alreadyCalled) { - throw new Error('amdefine with no module ID cannot be called more than once per file.'); - } - alreadyCalled = true; - - //Use the real variables from node - //Use module.exports for exports, since - //the exports in here is amdefine exports. - e = module.exports; - m = module; - r = makeRequire(requireFn, e, m, module.id); - } - - //If there are dependencies, they are strings, so need - //to convert them to dependency values. - if (deps) { - deps = deps.map(function (depName) { - return r(depName); - }); - } - - //Call the factory with the right dependencies. - if (typeof factory === 'function') { - result = factory.apply(m.exports, deps); - } else { - result = factory; - } - - if (result !== undefined) { - m.exports = result; - if (id) { - loaderCache[id] = m.exports; - } - } - } - - stringRequire = function (systemRequire, exports, module, id, relId) { - //Split the ID by a ! so that - var index = id.indexOf('!'), - originalId = id, - prefix, plugin; - - if (index === -1) { - id = normalize(id, relId); - - //Straight module lookup. If it is one of the special dependencies, - //deal with it, otherwise, delegate to node. - if (id === 'require') { - return makeRequire(systemRequire, exports, module, relId); - } else if (id === 'exports') { - return exports; - } else if (id === 'module') { - return module; - } else if (loaderCache.hasOwnProperty(id)) { - return loaderCache[id]; - } else if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } else { - if(systemRequire) { - return systemRequire(originalId); - } else { - throw new Error('No module with ID: ' + id); - } - } - } else { - //There is a plugin in play. - prefix = id.substring(0, index); - id = id.substring(index + 1, id.length); - - plugin = stringRequire(systemRequire, exports, module, prefix, relId); - - if (plugin.normalize) { - id = plugin.normalize(id, makeNormalize(relId)); - } else { - //Normalize the ID normally. - id = normalize(id, relId); - } - - if (loaderCache[id]) { - return loaderCache[id]; - } else { - plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {}); - - return loaderCache[id]; - } - } - }; - - //Create a define function specific to the module asking for amdefine. - function define(id, deps, factory) { - if (Array.isArray(id)) { - factory = deps; - deps = id; - id = undefined; - } else if (typeof id !== 'string') { - factory = id; - id = deps = undefined; - } - - if (deps && !Array.isArray(deps)) { - factory = deps; - deps = undefined; - } - - if (!deps) { - deps = ['require', 'exports', 'module']; - } - - //Set up properties for this module. If an ID, then use - //internal cache. If no ID, then use the external variables - //for this node module. - if (id) { - //Put the module in deep freeze until there is a - //require call for it. - defineCache[id] = [id, deps, factory]; - } else { - runFactory(id, deps, factory); - } - } - - //define.require, which has access to all the values in the - //cache. Useful for AMD modules that all have IDs in the file, - //but need to finally export a value to node based on one of those - //IDs. - define.require = function (id) { - if (loaderCache[id]) { - return loaderCache[id]; - } - - if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } - }; - - define.amd = {}; - - return define; -} - -module.exports = amdefine; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js deleted file mode 100644 index 771a9830..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/intercept.js +++ /dev/null @@ -1,36 +0,0 @@ -/*jshint node: true */ -var inserted, - Module = require('module'), - fs = require('fs'), - existingExtFn = Module._extensions['.js'], - amdefineRegExp = /amdefine\.js/; - -inserted = "if (typeof define !== 'function') {var define = require('amdefine')(module)}"; - -//From the node/lib/module.js source: -function stripBOM(content) { - // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - // because the buffer-to-string conversion in `fs.readFileSync()` - // translates it to FEFF, the UTF-16 BOM. - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -} - -//Also adapted from the node/lib/module.js source: -function intercept(module, filename) { - var content = stripBOM(fs.readFileSync(filename, 'utf8')); - - if (!amdefineRegExp.test(module.id)) { - content = inserted + content; - } - - module._compile(content, filename); -} - -intercept._id = 'amdefine/intercept'; - -if (!existingExtFn._id || existingExtFn._id !== intercept._id) { - Module._extensions['.js'] = intercept; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json deleted file mode 100644 index f34eb8c1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/amdefine/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "_args": [ - [ - "amdefine@>=0.0.4", - "/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support/node_modules/source-map" - ] - ], - "_from": "amdefine@>=0.0.4", - "_id": "amdefine@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/amdefine", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "jrburke@gmail.com", - "name": "jrburke" - }, - "_npmVersion": "2.12.1", - "_phantomChildren": {}, - "_requested": { - "name": "amdefine", - "raw": "amdefine@>=0.0.4", - "rawSpec": ">=0.0.4", - "scope": null, - "spec": ">=0.0.4", - "type": "range" - }, - "_requiredBy": [ - "/source-map-support/source-map" - ], - "_resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "_shasum": "fd17474700cb5cc9c2b709f0be9d23ce3c198c33", - "_shrinkwrap": null, - "_spec": "amdefine@>=0.0.4", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support/node_modules/source-map", - "author": { - "email": "jrburke@gmail.com", - "name": "James Burke", - "url": "http://github.com/jrburke" - }, - "bugs": { - "url": "https://github.com/jrburke/amdefine/issues" - }, - "dependencies": {}, - "description": "Provide AMD's define() API for declaring modules in the AMD format", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "fd17474700cb5cc9c2b709f0be9d23ce3c198c33", - "tarball": "http://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - }, - "engines": { - "node": ">=0.4.2" - }, - "gitHead": "578bc4a3f7dede33f3f3e10edde0c1607005d761", - "homepage": "http://github.com/jrburke/amdefine", - "license": "BSD-3-Clause AND MIT", - "main": "./amdefine.js", - "maintainers": [ - { - "email": "jrburke@gmail.com", - "name": "jrburke" - } - ], - "name": "amdefine", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jrburke/amdefine.git" - }, - "scripts": {}, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js deleted file mode 100644 index 4906755b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = function () { - return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json deleted file mode 100644 index 741585ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "ansi-regex@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/has-ansi" - ] - ], - "_from": "ansi-regex@>=2.0.0 <3.0.0", - "_id": "ansi-regex@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/ansi-regex", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "ansi-regex", - "raw": "ansi-regex@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/has-ansi", - "/strip-ansi" - ], - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", - "_shrinkwrap": null, - "_spec": "ansi-regex@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/has-ansi", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/ansi-regex/issues" - }, - "dependencies": {}, - "description": "Regular expression for matching ANSI escape codes", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107", - "tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f", - "homepage": "https://github.com/sindresorhus/ansi-regex", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "ansi-regex", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/ansi-regex.git" - }, - "scripts": { - "test": "mocha test/test.js", - "view-supported": "node test/viewCodes.js" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md deleted file mode 100644 index 1a4894ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-regex/readme.md +++ /dev/null @@ -1,31 +0,0 @@ -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex) - -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -``` -$ npm install --save ansi-regex -``` - - -## Usage - -```js -var ansiRegex = require('ansi-regex'); - -ansiRegex().test('\u001b[4mcake\u001b[0m'); -//=> true - -ansiRegex().test('cake'); -//=> false - -'\u001b[4mcake\u001b[0m'.match(ansiRegex()); -//=> ['\u001b[4m', '\u001b[0m'] -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js deleted file mode 100644 index 78945278..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/index.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; - -function assembleStyles () { - var styles = { - modifiers: { - reset: [0, 0], - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - colors: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39] - }, - bgColors: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] - } - }; - - // fix humans - styles.colors.grey = styles.colors.gray; - - Object.keys(styles).forEach(function (groupName) { - var group = styles[groupName]; - - Object.keys(group).forEach(function (styleName) { - var style = group[styleName]; - - styles[styleName] = group[styleName] = { - open: '\u001b[' + style[0] + 'm', - close: '\u001b[' + style[1] + 'm' - }; - }); - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - }); - - return styles; -} - -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json deleted file mode 100644 index cad3f266..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "_args": [ - [ - "ansi-styles@^2.2.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/chalk" - ] - ], - "_from": "ansi-styles@>=2.2.1 <3.0.0", - "_id": "ansi-styles@2.2.1", - "_inCache": true, - "_installable": true, - "_location": "/ansi-styles", - "_nodeVersion": "4.3.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176" - }, - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "ansi-styles", - "raw": "ansi-styles@^2.2.1", - "rawSpec": "^2.2.1", - "scope": null, - "spec": ">=2.2.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe", - "_shrinkwrap": null, - "_spec": "ansi-styles@^2.2.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-styles/issues" - }, - "dependencies": {}, - "description": "ANSI escape codes for styling strings in the terminal", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe", - "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "95c59b23be760108b6530ca1c89477c21b258032", - "homepage": "https://github.com/chalk/ansi-styles#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "ansi-styles", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-styles.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.2.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md deleted file mode 100644 index 3f933f61..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ansi-styles/readme.md +++ /dev/null @@ -1,86 +0,0 @@ -# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) - -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal - -You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. - -![](screenshot.png) - - -## Install - -``` -$ npm install --save ansi-styles -``` - - -## Usage - -```js -var ansi = require('ansi-styles'); - -console.log(ansi.green.open + 'Hello world!' + ansi.green.close); -``` - - -## API - -Each style has an `open` and `close` property. - - -## Styles - -### Modifiers - -- `reset` -- `bold` -- `dim` -- `italic` *(not widely supported)* -- `underline` -- `inverse` -- `hidden` -- `strikethrough` *(not widely supported)* - -### Colors - -- `black` -- `red` -- `green` -- `yellow` -- `blue` -- `magenta` -- `cyan` -- `white` -- `gray` - -### Background colors - -- `bgBlack` -- `bgRed` -- `bgGreen` -- `bgYellow` -- `bgBlue` -- `bgMagenta` -- `bgCyan` -- `bgWhite` - - -## Advanced usage - -By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. - -- `ansi.modifiers` -- `ansi.colors` -- `ansi.bgColors` - - -###### Example - -```js -console.log(ansi.colors.green.open); -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js deleted file mode 100644 index 9c070479..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/beep.js +++ /dev/null @@ -1,24 +0,0 @@ -var archy = require('../'); -var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js deleted file mode 100644 index 8afdfada..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/examples/multi_line.js +++ /dev/null @@ -1,25 +0,0 @@ -var archy = require('../'); - -var s = archy({ - label : 'beep\none\ntwo', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O\nwheee', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny\nmeat' ] - }, - 'creature' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js deleted file mode 100644 index 869d64e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/index.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = function archy (obj, prefix, opts) { - if (prefix === undefined) prefix = ''; - if (!opts) opts = {}; - var chr = function (s) { - var chars = { - '│' : '|', - '└' : '`', - '├' : '+', - '─' : '-', - '┬' : '-' - }; - return opts.unicode === false ? chars[s] : s; - }; - - if (typeof obj === 'string') obj = { label : obj }; - - var nodes = obj.nodes || []; - var lines = (obj.label || '').split('\n'); - var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' '; - - return prefix - + lines.join(splitter) + '\n' - + nodes.map(function (node, ix) { - var last = ix === nodes.length - 1; - var more = node.nodes && node.nodes.length; - var prefix_ = prefix + (last ? ' ' : chr('│')) + ' '; - - return prefix - + (last ? chr('└') : chr('├')) + chr('─') - + (more ? chr('┬') : chr('─')) + ' ' - + archy(node, prefix_, opts).slice(prefix.length + 2) - ; - }).join('') - ; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json deleted file mode 100644 index 2485972c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "_args": [ - [ - "archy@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "archy@>=1.0.0 <2.0.0", - "_id": "archy@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/archy", - "_npmUser": { - "email": "mail@substack.net", - "name": "substack" - }, - "_npmVersion": "1.4.25", - "_phantomChildren": {}, - "_requested": { - "name": "archy", - "raw": "archy@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40", - "_shrinkwrap": null, - "_spec": "archy@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-archy/issues" - }, - "dependencies": {}, - "description": "render nested hierarchies `npm ls` style with unicode pipes", - "devDependencies": { - "tap": "~0.3.3", - "tape": "~0.1.1" - }, - "directories": {}, - "dist": { - "shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40", - "tarball": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" - }, - "gitHead": "30223c16191e877bf027b15b12daf077b9b55b84", - "homepage": "https://github.com/substack/node-archy", - "keywords": [ - "hierarchy", - "npm ls", - "unicode", - "pretty", - "print" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "archy", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/substack/node-archy.git" - }, - "scripts": { - "test": "tap test" - }, - "testling": { - "browsers": { - "chrome": [ - "20.0" - ], - "firefox": [ - "10.0", - "15.0" - ], - "iexplore": [ - "6.0", - "7.0", - "8.0", - "9.0" - ], - "opera": [ - "12.0" - ], - "safari": [ - "5.1" - ] - }, - "files": "test/*.js" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown deleted file mode 100644 index ef7a5cf3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/readme.markdown +++ /dev/null @@ -1,88 +0,0 @@ -# archy - -Render nested hierarchies `npm ls` style with unicode pipes. - -[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy) - -[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy) - -# example - -``` js -var archy = require('archy'); -var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party\ntime!' - ] - } - ] -}); -console.log(s); -``` - -output - -``` -beep -├── ity -└─┬ boop - ├─┬ o_O - │ ├─┬ oh - │ │ ├── hello - │ │ └── puny - │ └── human - └── party - time! -``` - -# methods - -var archy = require('archy') - -## archy(obj, prefix='', opts={}) - -Return a string representation of `obj` with unicode pipe characters like how -`npm ls` looks. - -`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields. -`'label'` is a string of text to display at a node level and `'nodes'` is an -array of the descendents of the current node. - -If a node is a string, that string will be used as the `'label'` and an empty -array of `'nodes'` will be used. - -`prefix` gets prepended to all the lines and is used by the algorithm to -recursively update. - -If `'label'` has newlines they will be indented at the present indentation level -with the current prefix. - -To disable unicode results in favor of all-ansi output set `opts.unicode` to -`false`. - -# install - -With [npm](http://npmjs.org) do: - -``` -npm install archy -``` - -# license - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js deleted file mode 100644 index 4ea74f9c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/beep.js +++ /dev/null @@ -1,40 +0,0 @@ -var test = require('tape'); -var archy = require('../'); - -test('beep', function (t) { - var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party!' - ] - } - ] - }); - t.equal(s, [ - 'beep', - '├── ity', - '└─┬ boop', - ' ├─┬ o_O', - ' │ ├─┬ oh', - ' │ │ ├── hello', - ' │ │ └── puny', - ' │ └── human', - ' └── party!', - '' - ].join('\n')); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js deleted file mode 100644 index 2cf2154d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/multi_line.js +++ /dev/null @@ -1,45 +0,0 @@ -var test = require('tape'); -var archy = require('../'); - -test('multi-line', function (t) { - var s = archy({ - label : 'beep\none\ntwo', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O\nwheee', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny\nmeat' ] - }, - 'creature' - ] - }, - 'party\ntime!' - ] - } - ] - }); - t.equal(s, [ - 'beep', - '│ one', - '│ two', - '├── ity', - '└─┬ boop', - ' ├─┬ o_O', - ' │ │ wheee', - ' │ ├─┬ oh', - ' │ │ ├── hello', - ' │ │ └── puny', - ' │ │ meat', - ' │ └── creature', - ' └── party', - ' time!', - '' - ].join('\n')); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js deleted file mode 100644 index 7204d332..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/archy/test/non_unicode.js +++ /dev/null @@ -1,40 +0,0 @@ -var test = require('tape'); -var archy = require('../'); - -test('beep', function (t) { - var s = archy({ - label : 'beep', - nodes : [ - 'ity', - { - label : 'boop', - nodes : [ - { - label : 'o_O', - nodes : [ - { - label : 'oh', - nodes : [ 'hello', 'puny' ] - }, - 'human' - ] - }, - 'party!' - ] - } - ] - }, '', { unicode : false }); - t.equal(s, [ - 'beep', - '+-- ity', - '`-- boop', - ' +-- o_O', - ' | +-- oh', - ' | | +-- hello', - ' | | `-- puny', - ' | `-- human', - ' `-- party!', - '' - ].join('\n')); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js deleted file mode 100644 index fbe2ed2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; -module.exports = function (arr) { - var rest = [].concat.apply([], [].slice.call(arguments, 1)); - return arr.filter(function (el) { - return rest.indexOf(el) === -1; - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json deleted file mode 100644 index a817afb7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_args": [ - [ - "array-differ@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "array-differ@>=1.0.0 <2.0.0", - "_id": "array-differ@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/array-differ", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "array-differ", - "raw": "array-differ@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "_shasum": "eff52e3758249d33be402b8bb8e564bb2b5d4031", - "_shrinkwrap": null, - "_spec": "array-differ@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/array-differ/issues" - }, - "dependencies": {}, - "description": "Create an array with values that are present in the first input array but not additional ones", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "eff52e3758249d33be402b8bb8e564bb2b5d4031", - "tarball": "http://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "e91802976c4710eef8dea2090d48e48525cf41b1", - "homepage": "https://github.com/sindresorhus/array-differ", - "keywords": [ - "array", - "difference", - "diff", - "differ", - "filter", - "exclude" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "array-differ", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/array-differ.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md deleted file mode 100644 index 68f5d360..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-differ/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -# array-differ [![Build Status](https://travis-ci.org/sindresorhus/array-differ.svg?branch=master)](https://travis-ci.org/sindresorhus/array-differ) - -> Create an array with values that are present in the first input array but not additional ones - - -## Install - -```sh -$ npm install --save array-differ -``` - - -## Usage - -```js -var arrayDiffer = require('array-differ'); - -arrayDiffer([2, 3, 4], [3, 50]); -//=> [2, 4] -``` - -## API - -### arrayDiffer(input, values, [values, ...]) - -Returns the new array. - -#### input - -Type: `array` - -#### values - -Type: `array` - -Arrays of values to exclude. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js deleted file mode 100644 index e2dcd9a0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; -module.exports = function (arr, predicate, ctx) { - if (typeof Array.prototype.findIndex === 'function') { - return arr.findIndex(predicate, ctx); - } - - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - - var list = Object(arr); - var len = list.length; - - if (len === 0) { - return -1; - } - - for (var i = 0; i < len; i++) { - if (predicate.call(ctx, list[i], i, list)) { - return i; - } - } - - return -1; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json deleted file mode 100644 index 2f106eec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "array-find-index@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/loud-rejection" - ] - ], - "_from": "array-find-index@>=1.0.0 <2.0.0", - "_id": "array-find-index@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/array-find-index", - "_nodeVersion": "4.2.4", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.12", - "_phantomChildren": {}, - "_requested": { - "name": "array-find-index", - "raw": "array-find-index@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/loud-rejection" - ], - "_resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz", - "_shasum": "0bc25ddac941ec8a496ae258fd4ac188003ef3af", - "_shrinkwrap": null, - "_spec": "array-find-index@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/loud-rejection", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/array-find-index/issues" - }, - "dependencies": {}, - "description": "ES2015 `Array#findIndex()` ponyfill", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "0bc25ddac941ec8a496ae258fd4ac188003ef3af", - "tarball": "http://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "0b2eea2c3e42aeb97be82b50f64a5672d2847036", - "homepage": "https://github.com/sindresorhus/array-find-index", - "keywords": [ - "es6", - "es2015", - "ponyfill", - "polyfill", - "shim", - "find", - "index", - "findindex", - "array" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "array-find-index", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/array-find-index.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md deleted file mode 100644 index cf06dd3b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-find-index/readme.md +++ /dev/null @@ -1,32 +0,0 @@ -# array-find-index [![Build Status](https://travis-ci.org/sindresorhus/array-find-index.svg?branch=master)](https://travis-ci.org/sindresorhus/array-find-index) - -> ES2015 [`Array#findIndex()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -``` -$ npm install --save array-find-index -``` - - -## Usage - -```js -arrayFindIndex = require('array-find-index'); - -arrayFindIndex(['rainbow', 'unicorn', 'pony'], x => x === 'unicorn'); -//=> 1 -``` - - -## API - -Same as `Array#findIndex()`, but with the input array as the first argument. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js deleted file mode 100644 index 40f81b8a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/index.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -// there's 3 implementations written in increasing order of efficiency - -// 1 - no Set type is defined -function uniqNoSet(arr) { - var ret = []; - - for (var i = 0; i < arr.length; i++) { - if (ret.indexOf(arr[i]) === -1) { - ret.push(arr[i]); - } - } - - return ret; -} - -// 2 - a simple Set type is defined -function uniqSet(arr) { - var seen = new Set(); - return arr.filter(function (el) { - if (!seen.has(el)) { - seen.add(el); - return true; - } - }); -} - -// 3 - a standard Set type is defined and it has a forEach method -function uniqSetWithForEach(arr) { - var ret = []; - - (new Set(arr)).forEach(function (el) { - ret.push(el); - }); - - return ret; -} - -// V8 currently has a broken implementation -// https://github.com/joyent/node/issues/8449 -function doesForEachActuallyWork() { - var ret = false; - - (new Set([true])).forEach(function (el) { - ret = el; - }); - - return ret === true; -} - -if ('Set' in global) { - if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) { - module.exports = uniqSetWithForEach; - } else { - module.exports = uniqSet; - } -} else { - module.exports = uniqNoSet; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json deleted file mode 100644 index f0e8d0fe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "array-uniq@^1.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "array-uniq@>=1.0.2 <2.0.0", - "_id": "array-uniq@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/array-uniq", - "_nodeVersion": "0.10.32", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.1.5", - "_phantomChildren": {}, - "_requested": { - "name": "array-uniq", - "raw": "array-uniq@^1.0.2", - "rawSpec": "^1.0.2", - "scope": null, - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz", - "_shasum": "5fcc373920775723cfd64d65c64bef53bf9eba6d", - "_shrinkwrap": null, - "_spec": "array-uniq@^1.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/array-uniq/issues" - }, - "dependencies": {}, - "description": "Create an array without duplicates", - "devDependencies": { - "es6-set": "^0.1.0", - "mocha": "*", - "require-uncached": "^1.0.2" - }, - "directories": {}, - "dist": { - "shasum": "5fcc373920775723cfd64d65c64bef53bf9eba6d", - "tarball": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "d5e311f37692dfd25ec216490df10632ce5f69f3", - "homepage": "https://github.com/sindresorhus/array-uniq", - "keywords": [ - "array", - "arr", - "set", - "uniq", - "unique", - "es6", - "duplicate", - "remove" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "array-uniq", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/array-uniq.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md deleted file mode 100644 index 5183d07e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/array-uniq/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# array-uniq [![Build Status](https://travis-ci.org/sindresorhus/array-uniq.svg?branch=master)](https://travis-ci.org/sindresorhus/array-uniq) - -> Create an array without duplicates - -It's already pretty fast, but will be much faster when [Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) becomes available in V8 (especially with large arrays). - - -## Install - -```sh -$ npm install --save array-uniq -``` - - -## Usage - -```js -var arrayUniq = require('array-uniq'); - -arrayUniq([1, 1, 2, 3, 3]); -//=> [1, 2, 3] - -arrayUniq(['foo', 'foo', 'bar', 'foo']); -//=> ['foo', 'bar'] -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore deleted file mode 100644 index eb03e3e1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -*.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md deleted file mode 100644 index 7cebf7a2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index ff21d4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function(msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 4fb90aea..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -///--- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index bd3357a6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,267 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -///--- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; - - var self = this; - this.__defineGetter__('length', function() { return self._len; }); - this.__defineGetter__('offset', function() { return self._offset; }); - this.__defineGetter__('remain', function() { - return self._size - self._offset; - }); - this.__defineGetter__('buffer', function() { - return self._buf.slice(self._offset); - }); -} - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function(peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function() { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function(offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) == 0x80) { - lenB &= 0x7f; - - if (lenB == 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function(tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function() { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function() { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function() { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function(tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function(tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - var values = []; - var value = 0; - - for (var i = 0; i < this.length; i++) { - var byte = this._buf[this._offset++] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) == 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function(tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset++]; - var value = 0; - - value = fb & 0x7F; - for (var i = 1; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) == 0x80) - value = -value; - - return value; -}; - - - -///--- Exported API - -module.exports = Reader; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea0001..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index 7b445cc6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -///--- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof(from), 'object'); - assert.ok(to); - assert.equal(typeof(to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function(key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -///--- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = new Buffer(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; - - var self = this; - this.__defineGetter__('buffer', function() { - if (self._seq.length) - throw new InvalidAsn1Error(self._seq.length + ' unended sequence(s)'); - - return self._buf.slice(0, self._offset); - }); -} - - -Writer.prototype.writeByte = function(b) { - if (typeof(b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function() { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function(b, tag) { - if (typeof(b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof(tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof(s) + ')'); - if (typeof(tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function(buf, tag) { - if (typeof(tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function(strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function(s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof(tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function(b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function(b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function(len) { - if (typeof(len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw new InvalidAsn1ERror('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function(tag) { - if (typeof(tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function() { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw new InvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function(start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function(len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = new Buffer(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -///--- Exported API - -module.exports = Writer; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js deleted file mode 100644 index d1766e7a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -///--- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json deleted file mode 100644 index c2dd0468..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "_args": [ - [ - "asn1@0.1.11", - "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature" - ] - ], - "_defaultsLoaded": true, - "_engineSupported": true, - "_from": "asn1@0.1.11", - "_id": "asn1@0.1.11", - "_inCache": true, - "_installable": true, - "_location": "/asn1", - "_nodeVersion": "v0.6.6", - "_npmUser": { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - "_npmVersion": "1.1.0-beta-4", - "_phantomChildren": {}, - "_requested": { - "name": "asn1", - "raw": "asn1@0.1.11", - "rawSpec": "0.1.11", - "scope": null, - "spec": "0.1.11", - "type": "version" - }, - "_requiredBy": [ - "/http-signature" - ], - "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "_shasum": "559be18376d08a4ec4dbe80877d27818639b2df7", - "_shrinkwrap": null, - "_spec": "asn1@0.1.11", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-asn1/issues" - }, - "contributors": [ - { - "email": "loki@animata.net", - "name": "David Gwynne" - }, - { - "email": "yunong@joyent.com", - "name": "Yunong Xiao" - } - ], - "dependencies": {}, - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "devDependencies": { - "tap": "0.1.4" - }, - "directories": {}, - "dist": { - "shasum": "559be18376d08a4ec4dbe80877d27818639b2df7", - "tarball": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "engines": { - "node": ">=0.4.9" - }, - "homepage": "https://github.com/mcavage/node-asn1#readme", - "main": "lib/index.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - } - ], - "name": "asn1", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/mcavage/node-asn1.git" - }, - "scripts": { - "pretest": "which gjslint; if [[ \"$?\" = 0 ]] ; then gjslint --nojsdoc -r lib -r tst; else echo \"Missing gjslint. Skipping lint\"; fi", - "test": "./node_modules/.bin/tap ./tst" - }, - "version": "0.1.11" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js deleted file mode 100644 index 0b78b474..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/reader.test.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var test = require('tap').test; - - - -///--- Globals - -var BerReader; - - - -///--- Tests - -test('load library', function(t) { - BerReader = require('../../lib/index').BerReader; - t.ok(BerReader); - try { - new BerReader(); - t.fail('Should have thrown'); - } catch (e) { - t.ok(e instanceof TypeError, 'Should have been a type error'); - } - t.end(); -}); - - -test('read byte', function(t) { - var reader = new BerReader(new Buffer([0xde])); - t.ok(reader); - t.equal(reader.readByte(), 0xde, 'wrong value'); - t.end(); -}); - - -test('read 1 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x03, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede03, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede0301, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read boolean true', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read boolean false', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0x00])); - t.ok(reader); - t.equal(reader.readBoolean(), false, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read enumeration', function(t) { - var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20])); - t.ok(reader); - t.equal(reader.readEnumeration(), 0x20, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read string', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var buf = new Buffer(dn.length + 2); - buf[0] = 0x04; - buf[1] = Buffer.byteLength(dn); - buf.write(dn, 2); - var reader = new BerReader(buf); - t.ok(reader); - t.equal(reader.readString(), dn, 'wrong value'); - t.equal(reader.length, dn.length, 'wrong length'); - t.end(); -}); - - -test('read sequence', function(t) { - var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readSequence(), 0x30, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('anonymous LDAPv3 bind', function(t) { - var BIND = new Buffer(14); - BIND[0] = 0x30; // Sequence - BIND[1] = 12; // len - BIND[2] = 0x02; // ASN.1 Integer - BIND[3] = 1; // len - BIND[4] = 0x04; // msgid (make up 4) - BIND[5] = 0x60; // Bind Request - BIND[6] = 7; // len - BIND[7] = 0x02; // ASN.1 Integer - BIND[8] = 1; // len - BIND[9] = 0x03; // v3 - BIND[10] = 0x04; // String (bind dn) - BIND[11] = 0; // len - BIND[12] = 0x80; // ContextSpecific (choice) - BIND[13] = 0; // simple bind - - // Start testing ^^ - var ber = new BerReader(BIND); - t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence'); - t.equal(ber.length, 12, 'Message length should be 12'); - t.equal(ber.readInt(), 4, 'Message id should have been 4'); - t.equal(ber.readSequence(), 96, 'Bind Request should have been 96'); - t.equal(ber.length, 7, 'Bind length should have been 7'); - t.equal(ber.readInt(), 3, 'LDAP version should have been 3'); - t.equal(ber.readString(), '', 'Bind DN should have been empty'); - t.equal(ber.length, 0, 'string length should have been 0'); - t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)'); - t.equal(ber.readByte(), 0, 'Should have been simple bind'); - t.equal(null, ber.readByte(), 'Should be out of data'); - t.end(); -}); - - -test('long string', function(t) { - var buf = new Buffer(256); - var o; - var s = - '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' + - 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' + - 'Teena Vradmin\'s description.'; - buf[0] = 0x04; - buf[1] = 0x81; - buf[2] = 0x94; - buf.write(s, 3); - var ber = new BerReader(buf.slice(0, 3 + s.length)); - t.equal(ber.readString(), s); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js deleted file mode 100644 index add0b9fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/asn1/tst/ber/writer.test.js +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var test = require('tap').test; -var sys = require('sys'); - -///--- Globals - -var BerWriter; - -var BerReader; - - -///--- Tests - -test('load library', function(t) { - BerWriter = require('../../lib/index').BerWriter; - t.ok(BerWriter); - t.ok(new BerWriter()); - t.end(); -}); - - -test('write byte', function(t) { - var writer = new BerWriter(); - - writer.writeByte(0xC2); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 1, 'Wrong length'); - t.equal(ber[0], 0xC2, 'value wrong'); - - t.end(); -}); - - -test('write 1 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7f); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]); - t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]); - t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]); - - t.end(); -}); - - -test('write 2 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xfe, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xfe, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffffe); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xff, 'value wrong (byte 3)'); - t.equal(ber[5], 0xfe, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write boolean', function(t) { - var writer = new BerWriter(); - - writer.writeBoolean(true); - writer.writeBoolean(false); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 6, 'Wrong length'); - t.equal(ber[0], 0x01, 'tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0xff, 'value wrong'); - t.equal(ber[3], 0x01, 'tag wrong'); - t.equal(ber[4], 0x01, 'length wrong'); - t.equal(ber[5], 0x00, 'value wrong'); - - t.end(); -}); - - -test('write string', function(t) { - var writer = new BerWriter(); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - -test('write buffer', function(t) { - var writer = new BerWriter(); - // write some stuff to start with - writer.writeString('hello world'); - var ber = writer.buffer; - var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01, - 0xff, 0x01, 0x01, 0xff]); - writer.writeBuffer(buf.slice(2, buf.length), 0x04); - ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 26, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[13], buf[0], 'wrong tag'); - t.equal(ber[14], buf[1], 'wrong length'); - for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) { - t.equal(ber[i], buf[j], 'buffer contents not identical'); - } - t.end(); -}); - -test('write string array', function(t) { - var writer = new BerWriter(); - writer.writeStringArray(['hello world', 'fubar!']); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 21, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - - t.equal(ber[13], 0x04, 'wrong tag'); - t.equal(ber[14], 6, 'wrong length'); - t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value'); - - t.end(); -}); - - -test('resize internal buffer', function(t) { - var writer = new BerWriter({size: 2}); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - console.log(ber); - t.equal(ber.length, 15, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 13, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('nested sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 30, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 28, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[15], 0x30, 'wrong tag'); - t.equal(ber[16], 13, 'wrong length'); - t.equal(ber[17], 0x04, 'wrong tag'); - t.equal(ber[18], 11, 'wrong length'); - t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('LDAP bind message', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var writer = new BerWriter(); - writer.startSequence(); - writer.writeInt(3); // msgid = 3 - writer.startSequence(0x60); // ldap bind - writer.writeInt(3); // ldap v3 - writer.writeString(dn); - writer.writeByte(0x80); - writer.writeByte(0x00); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 35, 'wrong length (buffer)'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 33, 'wrong length'); - t.equal(ber[2], 0x02, 'wrong tag'); - t.equal(ber[3], 1, 'wrong length'); - t.equal(ber[4], 0x03, 'wrong value'); - t.equal(ber[5], 0x60, 'wrong tag'); - t.equal(ber[6], 28, 'wrong length'); - t.equal(ber[7], 0x02, 'wrong tag'); - t.equal(ber[8], 1, 'wrong length'); - t.equal(ber[9], 0x03, 'wrong value'); - t.equal(ber[10], 0x04, 'wrong tag'); - t.equal(ber[11], dn.length, 'wrong length'); - t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value'); - t.equal(ber[33], 0x80, 'wrong tag'); - t.equal(ber[34], 0x00, 'wrong len'); - - t.end(); -}); - - -test('Write OID', function(t) { - var oid = '1.2.840.113549.1.1.1'; - var writer = new BerWriter(); - writer.writeOID(oid); - - var ber = writer.buffer; - t.ok(ber); - console.log(require('util').inspect(ber)); - console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x01]))); - - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md deleted file mode 100644 index c0c3a530..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# node-assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object. (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - - function test(foo) { - assert.string(foo, 'foo'); - } - -There you go. You can check that arrays are of a homogenous type with `Arrayof$Type`: - - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - - assert.optionalString(foo, 'foo'); - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. - -The complete list of APIs is: - -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.object -* assert.string -* assert.arrayOfBool -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfObject -* assert.arrayOfString -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalObject -* assert.optionalString -* assert.optionalArrayOfBool -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -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. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js deleted file mode 100644 index ff2ba02d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - - -///--- Globals - -var NDEBUG = process.env.NODE_NDEBUG || false; -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - - -///--- Messages - -var ARRAY_TYPE_REQUIRED = '%s ([%s]) required'; -var TYPE_REQUIRED = '%s (%s) is required'; - - - -///--- Internal - -function capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function uncapitalize(str) { - return (str.charAt(0).toLowerCase() + str.slice(1)); -} - -function _() { - return (util.format.apply(util, arguments)); -} - - -function _assert(arg, type, name, stackFunc) { - if (!NDEBUG) { - name = name || type; - stackFunc = stackFunc || _assert.caller; - var t = typeof (arg); - - if (t !== type) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type), - actual: t, - expected: type, - operator: '===', - stackStartFunction: stackFunc - }); - } - } -} - - -function _instanceof(arg, type, name, stackFunc) { - if (!NDEBUG) { - name = name || type; - stackFunc = stackFunc || _instanceof.caller; - - if (!(arg instanceof type)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, type.name), - actual: _getClass(arg), - expected: type.name, - operator: 'instanceof', - stackStartFunction: stackFunc - }); - } - } -} - -function _getClass(object) { - return (Object.prototype.toString.call(object).slice(8, -1)); -}; - - - -///--- API - -function array(arr, type, name) { - if (!NDEBUG) { - name = name || type; - - if (!Array.isArray(arr)) { - throw new assert.AssertionError({ - message: _(ARRAY_TYPE_REQUIRED, name, type), - actual: typeof (arr), - expected: 'array', - operator: 'Array.isArray', - stackStartFunction: array.caller - }); - } - - for (var i = 0; i < arr.length; i++) { - _assert(arr[i], type, name, array); - } - } -} - - -function bool(arg, name) { - _assert(arg, 'boolean', name, bool); -} - - -function buffer(arg, name) { - if (!Buffer.isBuffer(arg)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name || '', 'Buffer'), - actual: typeof (arg), - expected: 'buffer', - operator: 'Buffer.isBuffer', - stackStartFunction: buffer - }); - } -} - - -function func(arg, name) { - _assert(arg, 'function', name); -} - - -function number(arg, name) { - _assert(arg, 'number', name); - if (!NDEBUG && (isNaN(arg) || !isFinite(arg))) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, 'number'), - actual: arg, - expected: 'number', - operator: 'isNaN', - stackStartFunction: number - }); - } -} - - -function object(arg, name) { - _assert(arg, 'object', name); -} - - -function stream(arg, name) { - _instanceof(arg, Stream, name); -} - - -function date(arg, name) { - _instanceof(arg, Date, name); -} - -function regexp(arg, name) { - _instanceof(arg, RegExp, name); -} - - -function string(arg, name) { - _assert(arg, 'string', name); -} - - -function uuid(arg, name) { - string(arg, name); - if (!NDEBUG && !UUID_REGEXP.test(arg)) { - throw new assert.AssertionError({ - message: _(TYPE_REQUIRED, name, 'uuid'), - actual: 'string', - expected: 'uuid', - operator: 'test', - stackStartFunction: uuid - }); - } -} - - -///--- Exports - -module.exports = { - bool: bool, - buffer: buffer, - date: date, - func: func, - number: number, - object: object, - regexp: regexp, - stream: stream, - string: string, - uuid: uuid -}; - - -Object.keys(module.exports).forEach(function (k) { - if (k === 'buffer') - return; - - var name = 'arrayOf' + capitalize(k); - - if (k === 'bool') - k = 'boolean'; - if (k === 'func') - k = 'function'; - module.exports[name] = function (arg, name) { - array(arg, k, name); - }; -}); - -Object.keys(module.exports).forEach(function (k) { - var _name = 'optional' + capitalize(k); - var s = uncapitalize(k.replace('arrayOf', '')); - if (s === 'bool') - s = 'boolean'; - if (s === 'func') - s = 'function'; - - if (k.indexOf('arrayOf') !== -1) { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - array(arg, s, name); - } - }; - } else { - module.exports[_name] = function (arg, name) { - if (!NDEBUG && arg !== undefined) { - _assert(arg, s, name); - } - }; - } -}); - - -// Reexport built-in assertions -Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - module.exports[k] = assert[k]; - return; - } - - module.exports[k] = function () { - if (!NDEBUG) { - assert[k].apply(assert[k], arguments); - } - }; -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json deleted file mode 100644 index 6b73446a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/assert-plus/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_args": [ - [ - "assert-plus@^0.1.5", - "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature" - ] - ], - "_from": "assert-plus@>=0.1.5 <0.2.0", - "_id": "assert-plus@0.1.5", - "_inCache": true, - "_installable": true, - "_location": "/assert-plus", - "_npmUser": { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - "_npmVersion": "1.3.11", - "_phantomChildren": {}, - "_requested": { - "name": "assert-plus", - "raw": "assert-plus@^0.1.5", - "rawSpec": "^0.1.5", - "scope": null, - "spec": ">=0.1.5 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/http-signature" - ], - "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "_shasum": "ee74009413002d84cec7219c6ac811812e723160", - "_shrinkwrap": null, - "_spec": "assert-plus@^0.1.5", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-assert-plus/issues" - }, - "dependencies": {}, - "description": "Extra assertions on top of node's assert module", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "ee74009413002d84cec7219c6ac811812e723160", - "tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/mcavage/node-assert-plus#readme", - "main": "./assert.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - } - ], - "name": "assert-plus", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mcavage/node-assert-plus.git" - }, - "version": "0.1.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md deleted file mode 100644 index f15e0812..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/CHANGELOG.md +++ /dev/null @@ -1,125 +0,0 @@ -# v1.5.2 -- Allow using `"consructor"` as an argument in `memoize` (#998) -- Give a better error messsage when `auto` dependency checking fails (#994) -- Various doc updates (#936, #956, #979, #1002) - -# v1.5.1 -- Fix issue with `pause` in `queue` with concurrency enabled (#946) -- `while` and `until` now pass the final result to callback (#963) -- `auto` will properly handle concurrency when there is no callback (#966) -- `auto` will now properly stop execution when an error occurs (#988, #993) -- Various doc fixes (#971, #980) - -# v1.5.0 - -- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) (#892) -- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. (#873) -- `auto` now accepts an optional `concurrency` argument to limit the number of running tasks (#637) -- Added `queue#workersList()`, to retrieve the list of currently running tasks. (#891) -- Various code simplifications (#896, #904) -- Various doc fixes :scroll: (#890, #894, #903, #905, #912) - -# v1.4.2 - -- Ensure coverage files don't get published on npm (#879) - -# v1.4.1 - -- Add in overlooked `detectLimit` method (#866) -- Removed unnecessary files from npm releases (#861) -- Removed usage of a reserved word to prevent :boom: in older environments (#870) - -# v1.4.0 - -- `asyncify` now supports promises (#840) -- Added `Limit` versions of `filter` and `reject` (#836) -- Add `Limit` versions of `detect`, `some` and `every` (#828, #829) -- `some`, `every` and `detect` now short circuit early (#828, #829) -- Improve detection of the global object (#804), enabling use in WebWorkers -- `whilst` now called with arguments from iterator (#823) -- `during` now gets called with arguments from iterator (#824) -- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) - - -# v1.3.0 - -New Features: -- Added `constant` -- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. (#671, #806) -- Added `during` and `doDuring`, which are like `whilst` with an async truth test. (#800) -- `retry` now accepts an `interval` parameter to specify a delay between retries. (#793) -- `async` should work better in Web Workers due to better `root` detection (#804) -- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` (#642) -- Various internal updates (#786, #801, #802, #803) -- Various doc fixes (#790, #794) - -Bug Fixes: -- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. (#740, #744, #783) - - -# v1.2.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) - - -# v1.2.0 - -New Features: - -- Added `timesLimit` (#743) -- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. (#747, #772) - -Bug Fixes: - -- Fixed a regression in `each` and family with empty arrays that have additional properties. (#775, #777) - - -# v1.1.1 - -Bug Fix: - -- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. (#782) - - -# v1.1.0 - -New Features: - -- `cargo` now supports all of the same methods and event callbacks as `queue`. -- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. (#769) -- Optimized `map`, `eachOf`, and `waterfall` families of functions -- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array (#667). -- The callback is now optional for the composed results of `compose` and `seq`. (#618) -- Reduced file size by 4kb, (minified version by 1kb) -- Added code coverage through `nyc` and `coveralls` (#768) - -Bug Fixes: - -- `forever` will no longer stack overflow with a synchronous iterator (#622) -- `eachLimit` and other limit functions will stop iterating once an error occurs (#754) -- Always pass `null` in callbacks when there is no error (#439) -- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue (#668) -- `each` and family will properly handle an empty array (#578) -- `eachSeries` and family will finish if the underlying array is modified during execution (#557) -- `queue` will throw if a non-function is passed to `q.push()` (#593) -- Doc fixes (#629, #766) - - -# v1.0.0 - -No known breaking changes, we are simply complying with semver from here on out. - -Changes: - -- Start using a changelog! -- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) (#168 #704 #321) -- Detect deadlocks in `auto` (#663) -- Better support for require.js (#527) -- Throw if queue created with concurrency `0` (#714) -- Fix unneeded iteration in `queue.resume()` (#758) -- Guard against timer mocking overriding `setImmediate` (#609 #611) -- Miscellaneous doc fixes (#542 #596 #615 #628 #631 #690 #729) -- Use single noop function internally (#546) -- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE deleted file mode 100644 index 8f296985..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2014 Caolan McMahon - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md deleted file mode 100644 index 316c4050..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/README.md +++ /dev/null @@ -1,1877 +0,0 @@ -# Async.js - -[![Build Status via Travis CI](https://travis-ci.org/caolan/async.svg?branch=master)](https://travis-ci.org/caolan/async) -[![NPM version](http://img.shields.io/npm/v/async.svg)](https://www.npmjs.org/package/async) -[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) -[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - - -Async is a utility module which provides straight-forward, powerful functions -for working with asynchronous JavaScript. Although originally designed for -use with [Node.js](http://nodejs.org) and installable via `npm install async`, -it can also be used directly in the browser. - -Async is also installable via: - -- [bower](http://bower.io/): `bower install async` -- [component](https://github.com/component/component): `component install - caolan/async` -- [jam](http://jamjs.org/): `jam install async` -- [spm](http://spmjs.io/): `spm install async` - -Async provides around 20 functions that include the usual 'functional' -suspects (`map`, `reduce`, `filter`, `each`…) as well as some common patterns -for asynchronous control flow (`parallel`, `series`, `waterfall`…). All these -functions assume you follow the Node.js convention of providing a single -callback as the last argument of your `async` function. - - -## Quick Examples - -```javascript -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); - -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); - -async.parallel([ - function(){ ... }, - function(){ ... } -], callback); - -async.series([ - function(){ ... }, - function(){ ... } -]); -``` - -There are many more functions available so take a look at the docs below for a -full list. This module aims to be comprehensive, so if you feel anything is -missing please create a GitHub issue for it. - -## Common Pitfalls [(StackOverflow)](http://stackoverflow.com/questions/tagged/async.js) -### Synchronous iteration functions - -If you get an error like `RangeError: Maximum call stack size exceeded.` or other stack overflow issues when using async, you are likely using a synchronous iterator. By *synchronous* we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers. Calling many callbacks iteratively will quickly overflow the stack. If you run into this issue, just defer your callback with `async.setImmediate` to start a new call stack on the next tick of the event loop. - -This can also arise by accident if you callback early in certain cases: - -```js -async.eachSeries(hugeArray, function iterator(item, callback) { - if (inCache(item)) { - callback(null, cache[item]); // if many items are cached, you'll overflow - } else { - doSomeIO(item, callback); - } -}, function done() { - //... -}); -``` - -Just change it to: - -```js -async.eachSeries(hugeArray, function iterator(item, callback) { - if (inCache(item)) { - async.setImmediate(function () { - callback(null, cache[item]); - }); - } else { - doSomeIO(item, callback); - //... -``` - -Async guards against synchronous functions in some, but not all, cases. If you are still running into stack overflows, you can defer as suggested above, or wrap functions with [`async.ensureAsync`](#ensureAsync) Functions that are asynchronous by their nature do not have this problem and don't need the extra callback deferral. - -If JavaScript's event loop is still a bit nebulous, check out [this article](http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/) or [this talk](http://2014.jsconf.eu/speakers/philip-roberts-what-the-heck-is-the-event-loop-anyway.html) for more detailed information about how it works. - - -### Multiple callbacks - -Make sure to always `return` when calling a callback early, otherwise you will cause multiple callbacks and unpredictable behavior in many cases. - -```js -async.waterfall([ - function (callback) { - getSomething(options, function (err, result) { - if (err) { - callback(new Error("failed getting something:" + err.message)); - // we should return here - } - // since we did not return, this callback still will be called and - // `processData` will be called twice - callback(null, result); - }); - }, - processData -], done) -``` - -It is always good practice to `return callback(err, result)` whenever a callback call is not the last statement of a function. - - -### Binding a context to an iterator - -This section is really about `bind`, not about `async`. If you are wondering how to -make `async` execute your iterators in a given context, or are confused as to why -a method of another library isn't working as an iterator, study this example: - -```js -// Here is a simple object with an (unnecessarily roundabout) squaring method -var AsyncSquaringLibrary = { - squareExponent: 2, - square: function(number, callback){ - var result = Math.pow(number, this.squareExponent); - setTimeout(function(){ - callback(null, result); - }, 200); - } -}; - -async.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){ - // result is [NaN, NaN, NaN] - // This fails because the `this.squareExponent` expression in the square - // function is not evaluated in the context of AsyncSquaringLibrary, and is - // therefore undefined. -}); - -async.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){ - // result is [1, 4, 9] - // With the help of bind we can attach a context to the iterator before - // passing it to async. Now the square function will be executed in its - // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent` - // will be as expected. -}); -``` - -## Download - -The source is available for download from -[GitHub](https://github.com/caolan/async/blob/master/lib/async.js). -Alternatively, you can install using Node Package Manager (`npm`): - - npm install async - -As well as using Bower: - - bower install async - -__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed - -## In the Browser - -So far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. - -Usage: - -```html - - -``` - -## Documentation - -Some functions are also available in the following forms: -* `Series` - the same as `` but runs only a single async operation at a time -* `Limit` - the same as `` but runs a maximum of `limit` async operations at a time - -### Collections - -* [`each`](#each), `eachSeries`, `eachLimit` -* [`forEachOf`](#forEachOf), `forEachOfSeries`, `forEachOfLimit` -* [`map`](#map), `mapSeries`, `mapLimit` -* [`filter`](#filter), `filterSeries`, `filterLimit` -* [`reject`](#reject), `rejectSeries`, `rejectLimit` -* [`reduce`](#reduce), [`reduceRight`](#reduceRight) -* [`detect`](#detect), `detectSeries`, `detectLimit` -* [`sortBy`](#sortBy) -* [`some`](#some), `someLimit` -* [`every`](#every), `everyLimit` -* [`concat`](#concat), `concatSeries` - -### Control Flow - -* [`series`](#seriestasks-callback) -* [`parallel`](#parallel), `parallelLimit` -* [`whilst`](#whilst), [`doWhilst`](#doWhilst) -* [`until`](#until), [`doUntil`](#doUntil) -* [`during`](#during), [`doDuring`](#doDuring) -* [`forever`](#forever) -* [`waterfall`](#waterfall) -* [`compose`](#compose) -* [`seq`](#seq) -* [`applyEach`](#applyEach), `applyEachSeries` -* [`queue`](#queue), [`priorityQueue`](#priorityQueue) -* [`cargo`](#cargo) -* [`auto`](#auto) -* [`retry`](#retry) -* [`iterator`](#iterator) -* [`times`](#times), `timesSeries`, `timesLimit` - -### Utils - -* [`apply`](#apply) -* [`nextTick`](#nextTick) -* [`memoize`](#memoize) -* [`unmemoize`](#unmemoize) -* [`ensureAsync`](#ensureAsync) -* [`constant`](#constant) -* [`asyncify`](#asyncify) -* [`wrapSync`](#wrapSync) -* [`log`](#log) -* [`dir`](#dir) -* [`noConflict`](#noConflict) - -## Collections - - - -### each(arr, iterator, [callback]) - -Applies the function `iterator` to each item in `arr`, in parallel. -The `iterator` is called with an item from the list, and a callback for when it -has finished. If the `iterator` passes an error to its `callback`, the main -`callback` (for the `each` function) is immediately called with the error. - -Note, that since this function applies `iterator` to each item in parallel, -there is no guarantee that the iterator functions will complete in order. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err)` which must be called once it has - completed. If no error has occurred, the `callback` should be run without - arguments or with an explicit `null` argument. The array index is not passed - to the iterator. If you need the index, use [`forEachOf`](#forEachOf). -* `callback(err)` - *Optional* A callback which is called when all `iterator` functions - have finished, or an error occurs. - -__Examples__ - - -```js -// assuming openFiles is an array of file names and saveFile is a function -// to save the modified contents of that file: - -async.each(openFiles, saveFile, function(err){ - // if any of the saves produced an error, err would equal that error -}); -``` - -```js -// assuming openFiles is an array of file names - -async.each(openFiles, function(file, callback) { - - // Perform operation on file here. - console.log('Processing file ' + file); - - if( file.length > 32 ) { - console.log('This file name is too long'); - callback('File name too long'); - } else { - // Do work to process file here - console.log('File processed'); - callback(); - } -}, function(err){ - // if any of the file processing produced an error, err would equal that error - if( err ) { - // One of the iterations produced an error. - // All processing will now stop. - console.log('A file failed to process'); - } else { - console.log('All files have been processed successfully'); - } -}); -``` - -__Related__ - -* eachSeries(arr, iterator, [callback]) -* eachLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - - - -### forEachOf(obj, iterator, [callback]) - -Like `each`, except that it iterates over objects, and passes the key as the second argument to the iterator. - -__Arguments__ - -* `obj` - An object or array to iterate over. -* `iterator(item, key, callback)` - A function to apply to each item in `obj`. -The `key` is the item's key, or index in the case of an array. The iterator is -passed a `callback(err)` which must be called once it has completed. If no -error has occurred, the callback should be run without arguments or with an -explicit `null` argument. -* `callback(err)` - *Optional* A callback which is called when all `iterator` functions have finished, or an error occurs. - -__Example__ - -```js -var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; -var configs = {}; - -async.forEachOf(obj, function (value, key, callback) { - fs.readFile(__dirname + value, "utf8", function (err, data) { - if (err) return callback(err); - try { - configs[key] = JSON.parse(data); - } catch (e) { - return callback(e); - } - callback(); - }) -}, function (err) { - if (err) console.error(err.message); - // configs is now a map of JSON data - doSomethingWith(configs); -}) -``` - -__Related__ - -* forEachOfSeries(obj, iterator, [callback]) -* forEachOfLimit(obj, limit, iterator, [callback]) - ---------------------------------------- - - -### map(arr, iterator, [callback]) - -Produces a new array of values by mapping each value in `arr` through -the `iterator` function. The `iterator` is called with an item from `arr` and a -callback for when it has finished processing. Each of these callback takes 2 arguments: -an `error`, and the transformed item from `arr`. If `iterator` passes an error to its -callback, the main `callback` (for the `map` function) is immediately called with the error. - -Note, that since this function applies the `iterator` to each item in parallel, -there is no guarantee that the `iterator` functions will complete in order. -However, the results array will be in the same order as the original `arr`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, transformed)` which must be called once - it has completed with an error (which can be `null`) and a transformed item. -* `callback(err, results)` - *Optional* A callback which is called when all `iterator` - functions have finished, or an error occurs. Results is an array of the - transformed items from the `arr`. - -__Example__ - -```js -async.map(['file1','file2','file3'], fs.stat, function(err, results){ - // results is now an array of stats for each file -}); -``` - -__Related__ -* mapSeries(arr, iterator, [callback]) -* mapLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - - -### filter(arr, iterator, [callback]) - -__Alias:__ `select` - -Returns a new array of all the values in `arr` which pass an async truth test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. This operation is -performed in parallel, but the results array will be in the same order as the -original. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The `iterator` is passed a `callback(truthValue)`, which must be called with a - boolean argument once it has completed. -* `callback(results)` - *Optional* A callback which is called after all the `iterator` - functions have finished. - -__Example__ - -```js -async.filter(['file1','file2','file3'], fs.exists, function(results){ - // results now equals an array of the existing files -}); -``` - -__Related__ - -* filterSeries(arr, iterator, [callback]) -* filterLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### reject(arr, iterator, [callback]) - -The opposite of [`filter`](#filter). Removes values that pass an `async` truth test. - -__Related__ - -* rejectSeries(arr, iterator, [callback]) -* rejectLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### reduce(arr, memo, iterator, [callback]) - -__Aliases:__ `inject`, `foldl` - -Reduces `arr` into a single value using an async `iterator` to return -each successive step. `memo` is the initial state of the reduction. -This function only operates in series. - -For performance reasons, it may make sense to split a call to this function into -a parallel map, and then use the normal `Array.prototype.reduce` on the results. -This function is for situations where each step in the reduction needs to be async; -if you can get the data before reducing it, then it's probably a good idea to do so. - -__Arguments__ - -* `arr` - An array to iterate over. -* `memo` - The initial state of the reduction. -* `iterator(memo, item, callback)` - A function applied to each item in the - array to produce the next step in the reduction. The `iterator` is passed a - `callback(err, reduction)` which accepts an optional error as its first - argument, and the state of the reduction as the second. If an error is - passed to the callback, the reduction is stopped and the main `callback` is - immediately called with the error. -* `callback(err, result)` - *Optional* A callback which is called after all the `iterator` - functions have finished. Result is the reduced value. - -__Example__ - -```js -async.reduce([1,2,3], 0, function(memo, item, callback){ - // pointless async: - process.nextTick(function(){ - callback(null, memo + item) - }); -}, function(err, result){ - // result is now equal to the last value of memo, which is 6 -}); -``` - ---------------------------------------- - - -### reduceRight(arr, memo, iterator, [callback]) - -__Alias:__ `foldr` - -Same as [`reduce`](#reduce), only operates on `arr` in reverse order. - - ---------------------------------------- - - -### detect(arr, iterator, [callback]) - -Returns the first value in `arr` that passes an async truth test. The -`iterator` is applied in parallel, meaning the first iterator to return `true` will -fire the detect `callback` with that result. That means the result might not be -the first item in the original `arr` (in terms of order) that passes the test. - -If order within the original `arr` is important, then look at [`detectSeries`](#detectSeries). - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in `arr`. - The iterator is passed a `callback(truthValue)` which must be called with a - boolean argument once it has completed. **Note: this callback does not take an error as its first argument.** -* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns - `true`, or after all the `iterator` functions have finished. Result will be - the first item in the array that passes the truth test (iterator) or the - value `undefined` if none passed. **Note: this callback does not take an error as its first argument.** - -__Example__ - -```js -async.detect(['file1','file2','file3'], fs.exists, function(result){ - // result now equals the first file in the list that exists -}); -``` - -__Related__ - -* detectSeries(arr, iterator, [callback]) -* detectLimit(arr, limit, iterator, [callback]) - ---------------------------------------- - - -### sortBy(arr, iterator, [callback]) - -Sorts a list by the results of running each `arr` value through an async `iterator`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, sortValue)` which must be called once it - has completed with an error (which can be `null`) and a value to use as the sort - criteria. -* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is the items from - the original `arr` sorted by the values returned by the `iterator` calls. - -__Example__ - -```js -async.sortBy(['file1','file2','file3'], function(file, callback){ - fs.stat(file, function(err, stats){ - callback(err, stats.mtime); - }); -}, function(err, results){ - // results is now the original array of files sorted by - // modified date -}); -``` - -__Sort Order__ - -By modifying the callback parameter the sorting order can be influenced: - -```js -//ascending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(null, x); -}, function(err,result){ - //result callback -} ); - -//descending order -async.sortBy([1,9,3,5], function(x, callback){ - callback(null, x*-1); //<- x*-1 instead of x, turns the order around -}, function(err,result){ - //result callback -} ); -``` - ---------------------------------------- - - -### some(arr, iterator, [callback]) - -__Alias:__ `any` - -Returns `true` if at least one element in the `arr` satisfies an async test. -_The callback for each iterator call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. Once any iterator -call returns `true`, the main `callback` is immediately called. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a `callback(truthValue)`` which must be - called with a boolean argument once it has completed. -* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns - `true`, or after all the iterator functions have finished. Result will be - either `true` or `false` depending on the values of the async tests. - - **Note: the callbacks do not take an error as their first argument.** -__Example__ - -```js -async.some(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then at least one of the files exists -}); -``` - -__Related__ - -* someLimit(arr, limit, iterator, callback) - ---------------------------------------- - - -### every(arr, iterator, [callback]) - -__Alias:__ `all` - -Returns `true` if every element in `arr` satisfies an async test. -_The callback for each `iterator` call only accepts a single argument of `true` or -`false`; it does not accept an error argument first!_ This is in-line with the -way node libraries work with truth tests like `fs.exists`. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A truth test to apply to each item in the array - in parallel. The iterator is passed a `callback(truthValue)` which must be - called with a boolean argument once it has completed. -* `callback(result)` - *Optional* A callback which is called as soon as any iterator returns - `false`, or after all the iterator functions have finished. Result will be - either `true` or `false` depending on the values of the async tests. - - **Note: the callbacks do not take an error as their first argument.** - -__Example__ - -```js -async.every(['file1','file2','file3'], fs.exists, function(result){ - // if result is true then every file exists -}); -``` - -__Related__ - -* everyLimit(arr, limit, iterator, callback) - ---------------------------------------- - - -### concat(arr, iterator, [callback]) - -Applies `iterator` to each item in `arr`, concatenating the results. Returns the -concatenated list. The `iterator`s are called in parallel, and the results are -concatenated as they return. There is no guarantee that the results array will -be returned in the original order of `arr` passed to the `iterator` function. - -__Arguments__ - -* `arr` - An array to iterate over. -* `iterator(item, callback)` - A function to apply to each item in `arr`. - The iterator is passed a `callback(err, results)` which must be called once it - has completed with an error (which can be `null`) and an array of results. -* `callback(err, results)` - *Optional* A callback which is called after all the `iterator` - functions have finished, or an error occurs. Results is an array containing - the concatenated results of the `iterator` function. - -__Example__ - -```js -async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){ - // files is now a list of filenames that exist in the 3 directories -}); -``` - -__Related__ - -* concatSeries(arr, iterator, [callback]) - - -## Control Flow - - -### series(tasks, [callback]) - -Run the functions in the `tasks` array in series, each one running once the previous -function has completed. If any functions in the series pass an error to its -callback, no more functions are run, and `callback` is immediately called with the value of the error. -Otherwise, `callback` receives an array of results when `tasks` have completed. - -It is also possible to use an object instead of an array. Each property will be -run as a function, and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`series`](#series). - -**Note** that while many implementations preserve the order of object properties, the -[ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) -explicitly states that - -> The mechanics and order of enumerating the properties is not specified. - -So if you rely on the order in which your series of functions are executed, and want -this to work on all platforms, consider using an array. - -__Arguments__ - -* `tasks` - An array or object containing functions to run, each function is passed - a `callback(err, result)` it must call on completion with an error `err` (which can - be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed. This function gets a results array (or object) containing all - the result arguments passed to the `task` callbacks. - -__Example__ - -```js -async.series([ - function(callback){ - // do some stuff ... - callback(null, 'one'); - }, - function(callback){ - // do some more stuff ... - callback(null, 'two'); - } -], -// optional callback -function(err, results){ - // results is now equal to ['one', 'two'] -}); - - -// an example using an object instead of an array -async.series({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equal to: {one: 1, two: 2} -}); -``` - ---------------------------------------- - - -### parallel(tasks, [callback]) - -Run the `tasks` array of functions in parallel, without waiting until the previous -function has completed. If any of the functions pass an error to its -callback, the main `callback` is immediately called with the value of the error. -Once the `tasks` have completed, the results are passed to the final `callback` as an -array. - -**Note:** `parallel` is about kicking-off I/O tasks in parallel, not about parallel execution of code. If your tasks do not use any timers or perform any I/O, they will actually be executed in series. Any synchronous setup sections for each task will happen one after the other. JavaScript remains single-threaded. - -It is also possible to use an object instead of an array. Each property will be -run as a function and the results will be passed to the final `callback` as an object -instead of an array. This can be a more readable way of handling results from -[`parallel`](#parallel). - - -__Arguments__ - -* `tasks` - An array or object containing functions to run. Each function is passed - a `callback(err, result)` which it must call on completion with an error `err` - (which can be `null`) and an optional `result` value. -* `callback(err, results)` - An optional callback to run once all the functions - have completed successfully. This function gets a results array (or object) containing all - the result arguments passed to the task callbacks. - -__Example__ - -```js -async.parallel([ - function(callback){ - setTimeout(function(){ - callback(null, 'one'); - }, 200); - }, - function(callback){ - setTimeout(function(){ - callback(null, 'two'); - }, 100); - } -], -// optional callback -function(err, results){ - // the results array will equal ['one','two'] even though - // the second function had a shorter timeout. -}); - - -// an example using an object instead of an array -async.parallel({ - one: function(callback){ - setTimeout(function(){ - callback(null, 1); - }, 200); - }, - two: function(callback){ - setTimeout(function(){ - callback(null, 2); - }, 100); - } -}, -function(err, results) { - // results is now equals to: {one: 1, two: 2} -}); -``` - -__Related__ - -* parallelLimit(tasks, limit, [callback]) - ---------------------------------------- - - -### whilst(test, fn, callback) - -Repeatedly call `fn`, while `test` returns `true`. Calls `callback` when stopped, -or an error occurs. - -__Arguments__ - -* `test()` - synchronous truth test to perform before each execution of `fn`. -* `fn(callback)` - A function which is called each time `test` passes. The function is - passed a `callback(err)`, which must be called once it has completed with an - optional `err` argument. -* `callback(err, [results])` - A callback which is called after the test - function has failed and repeated execution of `fn` has stopped. `callback` - will be passed an error and any arguments passed to the final `fn`'s callback. - -__Example__ - -```js -var count = 0; - -async.whilst( - function () { return count < 5; }, - function (callback) { - count++; - setTimeout(function () { - callback(null, count); - }, 1000); - }, - function (err, n) { - // 5 seconds have passed, n = 5 - } -); -``` - ---------------------------------------- - - -### doWhilst(fn, test, callback) - -The post-check version of [`whilst`](#whilst). To reflect the difference in -the order of operations, the arguments `test` and `fn` are switched. - -`doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. - ---------------------------------------- - - -### until(test, fn, callback) - -Repeatedly call `fn` until `test` returns `true`. Calls `callback` when stopped, -or an error occurs. `callback` will be passed an error and any arguments passed -to the final `fn`'s callback. - -The inverse of [`whilst`](#whilst). - ---------------------------------------- - - -### doUntil(fn, test, callback) - -Like [`doWhilst`](#doWhilst), except the `test` is inverted. Note the argument ordering differs from `until`. - ---------------------------------------- - - -### during(test, fn, callback) - -Like [`whilst`](#whilst), except the `test` is an asynchronous function that is passed a callback in the form of `function (err, truth)`. If error is passed to `test` or `fn`, the main callback is immediately called with the value of the error. - -__Example__ - -```js -var count = 0; - -async.during( - function (callback) { - return callback(null, count < 5); - }, - function (callback) { - count++; - setTimeout(callback, 1000); - }, - function (err) { - // 5 seconds have passed - } -); -``` - ---------------------------------------- - - -### doDuring(fn, test, callback) - -The post-check version of [`during`](#during). To reflect the difference in -the order of operations, the arguments `test` and `fn` are switched. - -Also a version of [`doWhilst`](#doWhilst) with asynchronous `test` function. - ---------------------------------------- - - -### forever(fn, [errback]) - -Calls the asynchronous function `fn` with a callback parameter that allows it to -call itself again, in series, indefinitely. - -If an error is passed to the callback then `errback` is called with the -error, and execution stops, otherwise it will never be called. - -```js -async.forever( - function(next) { - // next is suitable for passing to things that need a callback(err [, whatever]); - // it will result in this function being called again. - }, - function(err) { - // if next is called with a value in its first parameter, it will appear - // in here as 'err', and execution will stop. - } -); -``` - ---------------------------------------- - - -### waterfall(tasks, [callback]) - -Runs the `tasks` array of functions in series, each passing their results to the next in -the array. However, if any of the `tasks` pass an error to their own callback, the -next function is not executed, and the main `callback` is immediately called with -the error. - -__Arguments__ - -* `tasks` - An array of functions to run, each function is passed a - `callback(err, result1, result2, ...)` it must call on completion. The first - argument is an error (which can be `null`) and any further arguments will be - passed as arguments in order to the next task. -* `callback(err, [results])` - An optional callback to run once all the functions - have completed. This will be passed the results of the last task's callback. - - - -__Example__ - -```js -async.waterfall([ - function(callback) { - callback(null, 'one', 'two'); - }, - function(arg1, arg2, callback) { - // arg1 now equals 'one' and arg2 now equals 'two' - callback(null, 'three'); - }, - function(arg1, callback) { - // arg1 now equals 'three' - callback(null, 'done'); - } -], function (err, result) { - // result now equals 'done' -}); -``` -Or, with named functions: - -```js -async.waterfall([ - myFirstFunction, - mySecondFunction, - myLastFunction, -], function (err, result) { - // result now equals 'done' -}); -function myFirstFunction(callback) { - callback(null, 'one', 'two'); -} -function mySecondFunction(arg1, arg2, callback) { - // arg1 now equals 'one' and arg2 now equals 'two' - callback(null, 'three'); -} -function myLastFunction(arg1, callback) { - // arg1 now equals 'three' - callback(null, 'done'); -} -``` - -Or, if you need to pass any argument to the first function: - -```js -async.waterfall([ - async.apply(myFirstFunction, 'zero'), - mySecondFunction, - myLastFunction, -], function (err, result) { - // result now equals 'done' -}); -function myFirstFunction(arg1, callback) { - // arg1 now equals 'zero' - callback(null, 'one', 'two'); -} -function mySecondFunction(arg1, arg2, callback) { - // arg1 now equals 'one' and arg2 now equals 'two' - callback(null, 'three'); -} -function myLastFunction(arg1, callback) { - // arg1 now equals 'three' - callback(null, 'done'); -} -``` - ---------------------------------------- - -### compose(fn1, fn2...) - -Creates a function which is a composition of the passed asynchronous -functions. Each function consumes the return value of the function that -follows. Composing functions `f()`, `g()`, and `h()` would produce the result of -`f(g(h()))`, only this version uses callbacks to obtain the return values. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* `functions...` - the asynchronous functions to compose - - -__Example__ - -```js -function add1(n, callback) { - setTimeout(function () { - callback(null, n + 1); - }, 10); -} - -function mul3(n, callback) { - setTimeout(function () { - callback(null, n * 3); - }, 10); -} - -var add1mul3 = async.compose(mul3, add1); - -add1mul3(4, function (err, result) { - // result now equals 15 -}); -``` - ---------------------------------------- - -### seq(fn1, fn2...) - -Version of the compose function that is more natural to read. -Each function consumes the return value of the previous function. -It is the equivalent of [`compose`](#compose) with the arguments reversed. - -Each function is executed with the `this` binding of the composed function. - -__Arguments__ - -* `functions...` - the asynchronous functions to compose - - -__Example__ - -```js -// Requires lodash (or underscore), express3 and dresende's orm2. -// Part of an app, that fetches cats of the logged user. -// This example uses `seq` function to avoid overnesting and error -// handling clutter. -app.get('/cats', function(request, response) { - var User = request.models.User; - async.seq( - _.bind(User.get, User), // 'User.get' has signature (id, callback(err, data)) - function(user, fn) { - user.getCats(fn); // 'getCats' has signature (callback(err, data)) - } - )(req.session.user_id, function (err, cats) { - if (err) { - console.error(err); - response.json({ status: 'error', message: err.message }); - } else { - response.json({ status: 'ok', message: 'Cats found', data: cats }); - } - }); -}); -``` - ---------------------------------------- - -### applyEach(fns, args..., callback) - -Applies the provided arguments to each function in the array, calling -`callback` after all functions have completed. If you only provide the first -argument, then it will return a function which lets you pass in the -arguments as if it were a single function call. - -__Arguments__ - -* `fns` - the asynchronous functions to all call with the same arguments -* `args...` - any number of separate arguments to pass to the function -* `callback` - the final argument should be the callback, called when all - functions have completed processing - - -__Example__ - -```js -async.applyEach([enableSearch, updateSchema], 'bucket', callback); - -// partial application example: -async.each( - buckets, - async.applyEach([enableSearch, updateSchema]), - callback -); -``` - -__Related__ - -* applyEachSeries(tasks, args..., [callback]) - ---------------------------------------- - - -### queue(worker, [concurrency]) - -Creates a `queue` object with the specified `concurrency`. Tasks added to the -`queue` are processed in parallel (up to the `concurrency` limit). If all -`worker`s are in progress, the task is queued until one becomes available. -Once a `worker` completes a `task`, that `task`'s callback is called. - -__Arguments__ - -* `worker(task, callback)` - An asynchronous function for processing a queued - task, which must call its `callback(err)` argument when finished, with an - optional `error` as an argument. If you want to handle errors from an individual task, pass a callback to `q.push()`. -* `concurrency` - An `integer` for determining how many `worker` functions should be - run in parallel. If omitted, the concurrency defaults to `1`. If the concurrency is `0`, an error is thrown. - -__Queue objects__ - -The `queue` object returned by this function has the following properties and -methods: - -* `length()` - a function returning the number of items waiting to be processed. -* `started` - a function returning whether or not any items have been pushed and processed by the queue -* `running()` - a function returning the number of items currently being processed. -* `workersList()` - a function returning the array of items currently being processed. -* `idle()` - a function returning false if there are items waiting or being processed, or true if not. -* `concurrency` - an integer for determining how many `worker` functions should be - run in parallel. This property can be changed after a `queue` is created to - alter the concurrency on-the-fly. -* `push(task, [callback])` - add a new task to the `queue`. Calls `callback` once - the `worker` has finished processing the task. Instead of a single task, a `tasks` array - can be submitted. The respective callback is used for every task in the list. -* `unshift(task, [callback])` - add a new task to the front of the `queue`. -* `saturated` - a callback that is called when the `queue` length hits the `concurrency` limit, - and further tasks will be queued. -* `empty` - a callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - a callback that is called when the last item from the `queue` has returned from the `worker`. -* `paused` - a boolean for determining whether the queue is in a paused state -* `pause()` - a function that pauses the processing of tasks until `resume()` is called. -* `resume()` - a function that resumes the processing of queued tasks when the queue is paused. -* `kill()` - a function that removes the `drain` callback and empties remaining tasks from the queue forcing it to go idle. - -__Example__ - -```js -// create a queue object with concurrency 2 - -var q = async.queue(function (task, callback) { - console.log('hello ' + task.name); - callback(); -}, 2); - - -// assign a callback -q.drain = function() { - console.log('all items have been processed'); -} - -// add some items to the queue - -q.push({name: 'foo'}, function (err) { - console.log('finished processing foo'); -}); -q.push({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); - -// add some items to the queue (batch-wise) - -q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) { - console.log('finished processing item'); -}); - -// add some items to the front of the queue - -q.unshift({name: 'bar'}, function (err) { - console.log('finished processing bar'); -}); -``` - - ---------------------------------------- - - -### priorityQueue(worker, concurrency) - -The same as [`queue`](#queue) only tasks are assigned a priority and completed in ascending priority order. There are two differences between `queue` and `priorityQueue` objects: - -* `push(task, priority, [callback])` - `priority` should be a number. If an array of - `tasks` is given, all tasks will be assigned the same priority. -* The `unshift` method was removed. - ---------------------------------------- - - -### cargo(worker, [payload]) - -Creates a `cargo` object with the specified payload. Tasks added to the -cargo will be processed altogether (up to the `payload` limit). If the -`worker` is in progress, the task is queued until it becomes available. Once -the `worker` has completed some tasks, each callback of those tasks is called. -Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) for how `cargo` and `queue` work. - -While [queue](#queue) passes only one task to one of a group of workers -at a time, cargo passes an array of tasks to a single worker, repeating -when the worker is finished. - -__Arguments__ - -* `worker(tasks, callback)` - An asynchronous function for processing an array of - queued tasks, which must call its `callback(err)` argument when finished, with - an optional `err` argument. -* `payload` - An optional `integer` for determining how many tasks should be - processed per round; if omitted, the default is unlimited. - -__Cargo objects__ - -The `cargo` object returned by this function has the following properties and -methods: - -* `length()` - A function returning the number of items waiting to be processed. -* `payload` - An `integer` for determining how many tasks should be - process per round. This property can be changed after a `cargo` is created to - alter the payload on-the-fly. -* `push(task, [callback])` - Adds `task` to the `queue`. The callback is called - once the `worker` has finished processing the task. Instead of a single task, an array of `tasks` - can be submitted. The respective callback is used for every task in the list. -* `saturated` - A callback that is called when the `queue.length()` hits the concurrency and further tasks will be queued. -* `empty` - A callback that is called when the last item from the `queue` is given to a `worker`. -* `drain` - A callback that is called when the last item from the `queue` has returned from the `worker`. -* `idle()`, `pause()`, `resume()`, `kill()` - cargo inherits all of the same methods and event calbacks as [`queue`](#queue) - -__Example__ - -```js -// create a cargo object with payload 2 - -var cargo = async.cargo(function (tasks, callback) { - for(var i=0; i -### auto(tasks, [concurrency], [callback]) - -Determines the best order for running the functions in `tasks`, based on their requirements. Each function can optionally depend on other functions being completed first, and each function is run as soon as its requirements are satisfied. - -If any of the functions pass an error to their callback, the `auto` sequence will stop. Further tasks will not execute (so any other functions depending on it will not run), and the main `callback` is immediately called with the error. Functions also receive an object containing the results of functions which have completed so far. - -Note, all functions are called with a `results` object as a second argument, -so it is unsafe to pass functions in the `tasks` object which cannot handle the -extra argument. - -For example, this snippet of code: - -```js -async.auto({ - readData: async.apply(fs.readFile, 'data.txt', 'utf-8') -}, callback); -``` - -will have the effect of calling `readFile` with the results object as the last -argument, which will fail: - -```js -fs.readFile('data.txt', 'utf-8', cb, {}); -``` - -Instead, wrap the call to `readFile` in a function which does not forward the -`results` object: - -```js -async.auto({ - readData: function(cb, results){ - fs.readFile('data.txt', 'utf-8', cb); - } -}, callback); -``` - -__Arguments__ - -* `tasks` - An object. Each of its properties is either a function or an array of - requirements, with the function itself the last item in the array. The object's key - of a property serves as the name of the task defined by that property, - i.e. can be used when specifying requirements for other tasks. - The function receives two arguments: (1) a `callback(err, result)` which must be - called when finished, passing an `error` (which can be `null`) and the result of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions. -* `concurrency` - An optional `integer` for determining the maximum number of tasks that can be run in parallel. By default, as many as possible. -* `callback(err, results)` - An optional callback which is called when all the - tasks have been completed. It receives the `err` argument if any `tasks` - pass an error to their callback. Results are always returned; however, if - an error occurs, no further `tasks` will be performed, and the results - object will only contain partial results. - - -__Example__ - -```js -async.auto({ - get_data: function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - make_folder: function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - }, - write_file: ['get_data', 'make_folder', function(callback, results){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - callback(null, 'filename'); - }], - email_link: ['write_file', function(callback, results){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - // results.write_file contains the filename returned by write_file. - callback(null, {'file':results.write_file, 'email':'user@example.com'}); - }] -}, function(err, results) { - console.log('err = ', err); - console.log('results = ', results); -}); -``` - -This is a fairly trivial example, but to do this using the basic parallel and -series functions would look like this: - -```js -async.parallel([ - function(callback){ - console.log('in get_data'); - // async code to get some data - callback(null, 'data', 'converted to array'); - }, - function(callback){ - console.log('in make_folder'); - // async code to create a directory to store a file in - // this is run at the same time as getting the data - callback(null, 'folder'); - } -], -function(err, results){ - async.series([ - function(callback){ - console.log('in write_file', JSON.stringify(results)); - // once there is some data and the directory exists, - // write the data to a file in the directory - results.push('filename'); - callback(null); - }, - function(callback){ - console.log('in email_link', JSON.stringify(results)); - // once the file is written let's email a link to it... - callback(null, {'file':results.pop(), 'email':'user@example.com'}); - } - ]); -}); -``` - -For a complicated series of `async` tasks, using the [`auto`](#auto) function makes adding -new tasks much easier (and the code more readable). - - ---------------------------------------- - - -### retry([opts = {times: 5, interval: 0}| 5], task, [callback]) - -Attempts to get a successful response from `task` no more than `times` times before -returning an error. If the task is successful, the `callback` will be passed the result -of the successful task. If all attempts fail, the callback will be passed the error and -result (if any) of the final attempt. - -__Arguments__ - -* `opts` - Can be either an object with `times` and `interval` or a number. - * `times` - The number of attempts to make before giving up. The default is `5`. - * `interval` - The time to wait between retries, in milliseconds. The default is `0`. - * If `opts` is a number, the number specifies the number of times to retry, with the default interval of `0`. -* `task(callback, results)` - A function which receives two arguments: (1) a `callback(err, result)` - which must be called when finished, passing `err` (which can be `null`) and the `result` of - the function's execution, and (2) a `results` object, containing the results of - the previously executed functions (if nested inside another control flow). -* `callback(err, results)` - An optional callback which is called when the - task has succeeded, or after the final failed attempt. It receives the `err` and `result` arguments of the last attempt at completing the `task`. - -The [`retry`](#retry) function can be used as a stand-alone control flow by passing a callback, as shown below: - -```js -// try calling apiMethod 3 times -async.retry(3, apiMethod, function(err, result) { - // do something with the result -}); -``` - -```js -// try calling apiMethod 3 times, waiting 200 ms between each retry -async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { - // do something with the result -}); -``` - -```js -// try calling apiMethod the default 5 times no delay between each retry -async.retry(apiMethod, function(err, result) { - // do something with the result -}); -``` - -It can also be embedded within other control flow functions to retry individual methods -that are not as reliable, like this: - -```js -async.auto({ - users: api.getUsers.bind(api), - payments: async.retry(3, api.getPayments.bind(api)) -}, function(err, results) { - // do something with the results -}); -``` - - ---------------------------------------- - - -### iterator(tasks) - -Creates an iterator function which calls the next function in the `tasks` array, -returning a continuation to call the next one after that. It's also possible to -“peek” at the next iterator with `iterator.next()`. - -This function is used internally by the `async` module, but can be useful when -you want to manually control the flow of functions in series. - -__Arguments__ - -* `tasks` - An array of functions to run. - -__Example__ - -```js -var iterator = async.iterator([ - function(){ sys.p('one'); }, - function(){ sys.p('two'); }, - function(){ sys.p('three'); } -]); - -node> var iterator2 = iterator(); -'one' -node> var iterator3 = iterator2(); -'two' -node> iterator3(); -'three' -node> var nextfn = iterator2.next(); -node> nextfn(); -'three' -``` - ---------------------------------------- - - -### apply(function, arguments..) - -Creates a continuation function with some arguments already applied. - -Useful as a shorthand when combined with other control flow functions. Any arguments -passed to the returned function are added to the arguments originally passed -to apply. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to automatically apply when the - continuation is called. - -__Example__ - -```js -// using apply - -async.parallel([ - async.apply(fs.writeFile, 'testfile1', 'test1'), - async.apply(fs.writeFile, 'testfile2', 'test2'), -]); - - -// the same process without using apply - -async.parallel([ - function(callback){ - fs.writeFile('testfile1', 'test1', callback); - }, - function(callback){ - fs.writeFile('testfile2', 'test2', callback); - } -]); -``` - -It's possible to pass any number of additional arguments when calling the -continuation: - -```js -node> var fn = async.apply(sys.puts, 'one'); -node> fn('two', 'three'); -one -two -three -``` - ---------------------------------------- - - -### nextTick(callback), setImmediate(callback) - -Calls `callback` on a later loop around the event loop. In Node.js this just -calls `process.nextTick`; in the browser it falls back to `setImmediate(callback)` -if available, otherwise `setTimeout(callback, 0)`, which means other higher priority -events may precede the execution of `callback`. - -This is used internally for browser-compatibility purposes. - -__Arguments__ - -* `callback` - The function to call on a later loop around the event loop. - -__Example__ - -```js -var call_order = []; -async.nextTick(function(){ - call_order.push('two'); - // call_order now equals ['one','two'] -}); -call_order.push('one') -``` - - -### times(n, iterator, [callback]) - -Calls the `iterator` function `n` times, and accumulates results in the same manner -you would use with [`map`](#map). - -__Arguments__ - -* `n` - The number of times to run the function. -* `iterator` - The function to call `n` times. -* `callback` - see [`map`](#map) - -__Example__ - -```js -// Pretend this is some complicated async factory -var createUser = function(id, callback) { - callback(null, { - id: 'user' + id - }) -} -// generate 5 users -async.times(5, function(n, next){ - createUser(n, function(err, user) { - next(err, user) - }) -}, function(err, users) { - // we should now have 5 users -}); -``` - -__Related__ - -* timesSeries(n, iterator, [callback]) -* timesLimit(n, limit, iterator, [callback]) - - -## Utils - - -### memoize(fn, [hasher]) - -Caches the results of an `async` function. When creating a hash to store function -results against, the callback is omitted from the hash and an optional hash -function can be used. - -If no hash function is specified, the first argument is used as a hash key, which may work reasonably if it is a string or a data type that converts to a distinct string. Note that objects and arrays will not behave reasonably. Neither will cases where the other arguments are significant. In such cases, specify your own hash function. - -The cache of results is exposed as the `memo` property of the function returned -by `memoize`. - -__Arguments__ - -* `fn` - The function to proxy and cache results from. -* `hasher` - An optional function for generating a custom hash for storing - results. It has all the arguments applied to it apart from the callback, and - must be synchronous. - -__Example__ - -```js -var slow_fn = function (name, callback) { - // do something - callback(null, result); -}; -var fn = async.memoize(slow_fn); - -// fn can now be used as if it were slow_fn -fn('some name', function () { - // callback -}); -``` - - -### unmemoize(fn) - -Undoes a [`memoize`](#memoize)d function, reverting it to the original, unmemoized -form. Handy for testing. - -__Arguments__ - -* `fn` - the memoized function - ---------------------------------------- - - -### ensureAsync(fn) - -Wrap an async function and ensure it calls its callback on a later tick of the event loop. If the function already calls its callback on a next tick, no extra deferral is added. This is useful for preventing stack overflows (`RangeError: Maximum call stack size exceeded`) and generally keeping [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) contained. - -__Arguments__ - -* `fn` - an async function, one that expects a node-style callback as its last argument - -Returns a wrapped function with the exact same call signature as the function passed in. - -__Example__ - -```js -function sometimesAsync(arg, callback) { - if (cache[arg]) { - return callback(null, cache[arg]); // this would be synchronous!! - } else { - doSomeIO(arg, callback); // this IO would be asynchronous - } -} - -// this has a risk of stack overflows if many results are cached in a row -async.mapSeries(args, sometimesAsync, done); - -// this will defer sometimesAsync's callback if necessary, -// preventing stack overflows -async.mapSeries(args, async.ensureAsync(sometimesAsync), done); - -``` - ---------------------------------------- - - -### constant(values...) - -Returns a function that when called, calls-back with the values provided. Useful as the first function in a `waterfall`, or for plugging values in to `auto`. - -__Example__ - -```js -async.waterfall([ - async.constant(42), - function (value, next) { - // value === 42 - }, - //... -], callback); - -async.waterfall([ - async.constant(filename, "utf8"), - fs.readFile, - function (fileData, next) { - //... - } - //... -], callback); - -async.auto({ - hostname: async.constant("https://server.net/"), - port: findFreePort, - launchServer: ["hostname", "port", function (cb, options) { - startServer(options, cb); - }], - //... -}, callback); - -``` - ---------------------------------------- - - - -### asyncify(func) - -__Alias:__ `wrapSync` - -Take a sync function and make it async, passing its return value to a callback. This is useful for plugging sync functions into a waterfall, series, or other async functions. Any arguments passed to the generated function will be passed to the wrapped function (except for the final callback argument). Errors thrown will be passed to the callback. - -__Example__ - -```js -async.waterfall([ - async.apply(fs.readFile, filename, "utf8"), - async.asyncify(JSON.parse), - function (data, next) { - // data is the result of parsing the text. - // If there was a parsing error, it would have been caught. - } -], callback) -``` - -If the function passed to `asyncify` returns a Promise, that promises's resolved/rejected state will be used to call the callback, rather than simply the synchronous return value. Example: - -```js -async.waterfall([ - async.apply(fs.readFile, filename, "utf8"), - async.asyncify(function (contents) { - return db.model.create(contents); - }), - function (model, next) { - // `model` is the instantiated model object. - // If there was an error, this function would be skipped. - } -], callback) -``` - -This also means you can asyncify ES2016 `async` functions. - -```js -var q = async.queue(async.asyncify(async function (file) { - var intermediateStep = await processFile(file); - return await somePromise(intermediateStep) -})); - -q.push(files); -``` - ---------------------------------------- - - -### log(function, arguments) - -Logs the result of an `async` function to the `console`. Only works in Node.js or -in browsers that support `console.log` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.log` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, 'hello ' + name); - }, 1000); -}; -``` -```js -node> async.log(hello, 'world'); -'hello world' -``` - ---------------------------------------- - - -### dir(function, arguments) - -Logs the result of an `async` function to the `console` using `console.dir` to -display the properties of the resulting object. Only works in Node.js or -in browsers that support `console.dir` and `console.error` (such as FF and Chrome). -If multiple arguments are returned from the async function, `console.dir` is -called on each argument in order. - -__Arguments__ - -* `function` - The function you want to eventually apply all arguments to. -* `arguments...` - Any number of arguments to apply to the function. - -__Example__ - -```js -var hello = function(name, callback){ - setTimeout(function(){ - callback(null, {hello: name}); - }, 1000); -}; -``` -```js -node> async.dir(hello, 'world'); -{hello: 'world'} -``` - ---------------------------------------- - - -### noConflict() - -Changes the value of `async` back to its original value, returning a reference to the -`async` object. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js deleted file mode 100644 index 31e7620f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/async/dist/async.js +++ /dev/null @@ -1,1265 +0,0 @@ -/*! - * async - * https://github.com/caolan/async - * - * Copyright 2010-2014 Caolan McMahon - * Released under the MIT license - */ -(function () { - - var async = {}; - function noop() {} - function identity(v) { - return v; - } - function toBool(v) { - return !!v; - } - function notId(v) { - return !v; - } - - // global on the server, window in the browser - var previous_async; - - // Establish the root object, `window` (`self`) in the browser, `global` - // on the server, or `this` in some virtual machines. We use `self` - // instead of `window` for `WebWorker` support. - var root = typeof self === 'object' && self.self === self && self || - typeof global === 'object' && global.global === global && global || - this; - - if (root != null) { - previous_async = root.async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - function only_once(fn) { - return function() { - if (fn === null) throw new Error("Callback was already called."); - fn.apply(this, arguments); - fn = null; - }; - } - - function _once(fn) { - return function() { - if (fn === null) return; - fn.apply(this, arguments); - fn = null; - }; - } - - //// cross-browser compatiblity functions //// - - var _toString = Object.prototype.toString; - - var _isArray = Array.isArray || function (obj) { - return _toString.call(obj) === '[object Array]'; - }; - - // Ported from underscore.js isObject - var _isObject = function(obj) { - var type = typeof obj; - return type === 'function' || type === 'object' && !!obj; - }; - - function _isArrayLike(arr) { - return _isArray(arr) || ( - // has a positive integer length property - typeof arr.length === "number" && - arr.length >= 0 && - arr.length % 1 === 0 - ); - } - - function _arrayEach(arr, iterator) { - var index = -1, - length = arr.length; - - while (++index < length) { - iterator(arr[index], index, arr); - } - } - - function _map(arr, iterator) { - var index = -1, - length = arr.length, - result = Array(length); - - while (++index < length) { - result[index] = iterator(arr[index], index, arr); - } - return result; - } - - function _range(count) { - return _map(Array(count), function (v, i) { return i; }); - } - - function _reduce(arr, iterator, memo) { - _arrayEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - } - - function _forEachOf(object, iterator) { - _arrayEach(_keys(object), function (key) { - iterator(object[key], key); - }); - } - - function _indexOf(arr, item) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === item) return i; - } - return -1; - } - - var _keys = Object.keys || function (obj) { - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - function _keyIterator(coll) { - var i = -1; - var len; - var keys; - if (_isArrayLike(coll)) { - len = coll.length; - return function next() { - i++; - return i < len ? i : null; - }; - } else { - keys = _keys(coll); - len = keys.length; - return function next() { - i++; - return i < len ? keys[i] : null; - }; - } - } - - // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html) - // This accumulates the arguments passed into an array, after a given index. - // From underscore.js (https://github.com/jashkenas/underscore/pull/2140). - function _restParam(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0); - var rest = Array(length); - for (var index = 0; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - } - // Currently unused but handle cases outside of the switch statement: - // var args = Array(startIndex + 1); - // for (index = 0; index < startIndex; index++) { - // args[index] = arguments[index]; - // } - // args[startIndex] = rest; - // return func.apply(this, args); - }; - } - - function _withoutIndex(iterator) { - return function (value, index, callback) { - return iterator(value, callback); - }; - } - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - - // capture the global reference to guard against fakeTimer mocks - var _setImmediate = typeof setImmediate === 'function' && setImmediate; - - var _delay = _setImmediate ? function(fn) { - // not a direct alias for IE10 compatibility - _setImmediate(fn); - } : function(fn) { - setTimeout(fn, 0); - }; - - if (typeof process === 'object' && typeof process.nextTick === 'function') { - async.nextTick = process.nextTick; - } else { - async.nextTick = _delay; - } - async.setImmediate = _setImmediate ? _delay : async.nextTick; - - - async.forEach = - async.each = function (arr, iterator, callback) { - return async.eachOf(arr, _withoutIndex(iterator), callback); - }; - - async.forEachSeries = - async.eachSeries = function (arr, iterator, callback) { - return async.eachOfSeries(arr, _withoutIndex(iterator), callback); - }; - - - async.forEachLimit = - async.eachLimit = function (arr, limit, iterator, callback) { - return _eachOfLimit(limit)(arr, _withoutIndex(iterator), callback); - }; - - async.forEachOf = - async.eachOf = function (object, iterator, callback) { - callback = _once(callback || noop); - object = object || []; - - var iter = _keyIterator(object); - var key, completed = 0; - - while ((key = iter()) != null) { - completed += 1; - iterator(object[key], key, only_once(done)); - } - - if (completed === 0) callback(null); - - function done(err) { - completed--; - if (err) { - callback(err); - } - // Check key is null in case iterator isn't exhausted - // and done resolved synchronously. - else if (key === null && completed <= 0) { - callback(null); - } - } - }; - - async.forEachOfSeries = - async.eachOfSeries = function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - var key = nextKey(); - function iterate() { - var sync = true; - if (key === null) { - return callback(null); - } - iterator(obj[key], key, only_once(function (err) { - if (err) { - callback(err); - } - else { - key = nextKey(); - if (key === null) { - return callback(null); - } else { - if (sync) { - async.setImmediate(iterate); - } else { - iterate(); - } - } - } - })); - sync = false; - } - iterate(); - }; - - - - async.forEachOfLimit = - async.eachOfLimit = function (obj, limit, iterator, callback) { - _eachOfLimit(limit)(obj, iterator, callback); - }; - - function _eachOfLimit(limit) { - - return function (obj, iterator, callback) { - callback = _once(callback || noop); - obj = obj || []; - var nextKey = _keyIterator(obj); - if (limit <= 0) { - return callback(null); - } - var done = false; - var running = 0; - var errored = false; - - (function replenish () { - if (done && running <= 0) { - return callback(null); - } - - while (running < limit && !errored) { - var key = nextKey(); - if (key === null) { - done = true; - if (running <= 0) { - callback(null); - } - return; - } - running += 1; - iterator(obj[key], key, only_once(function (err) { - running -= 1; - if (err) { - callback(err); - errored = true; - } - else { - replenish(); - } - })); - } - })(); - }; - } - - - function doParallel(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOf, obj, iterator, callback); - }; - } - function doParallelLimit(fn) { - return function (obj, limit, iterator, callback) { - return fn(_eachOfLimit(limit), obj, iterator, callback); - }; - } - function doSeries(fn) { - return function (obj, iterator, callback) { - return fn(async.eachOfSeries, obj, iterator, callback); - }; - } - - function _asyncMap(eachfn, arr, iterator, callback) { - callback = _once(callback || noop); - arr = arr || []; - var results = _isArrayLike(arr) ? [] : {}; - eachfn(arr, function (value, index, callback) { - iterator(value, function (err, v) { - results[index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - async.mapLimit = doParallelLimit(_asyncMap); - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.inject = - async.foldl = - async.reduce = function (arr, memo, iterator, callback) { - async.eachOfSeries(arr, function (x, i, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - - async.foldr = - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, identity).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - - async.transform = function (arr, memo, iterator, callback) { - if (arguments.length === 3) { - callback = iterator; - iterator = memo; - memo = _isArray(arr) ? [] : {}; - } - - async.eachOf(arr, function(v, k, cb) { - iterator(memo, v, k, cb); - }, function(err) { - callback(err, memo); - }); - }; - - function _filter(eachfn, arr, iterator, callback) { - var results = []; - eachfn(arr, function (x, index, callback) { - iterator(x, function (v) { - if (v) { - results.push({index: index, value: x}); - } - callback(); - }); - }, function () { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - } - - async.select = - async.filter = doParallel(_filter); - - async.selectLimit = - async.filterLimit = doParallelLimit(_filter); - - async.selectSeries = - async.filterSeries = doSeries(_filter); - - function _reject(eachfn, arr, iterator, callback) { - _filter(eachfn, arr, function(value, cb) { - iterator(value, function(v) { - cb(!v); - }); - }, callback); - } - async.reject = doParallel(_reject); - async.rejectLimit = doParallelLimit(_reject); - async.rejectSeries = doSeries(_reject); - - function _createTester(eachfn, check, getResult) { - return function(arr, limit, iterator, cb) { - function done() { - if (cb) cb(getResult(false, void 0)); - } - function iteratee(x, _, callback) { - if (!cb) return callback(); - iterator(x, function (v) { - if (cb && check(v)) { - cb(getResult(true, x)); - cb = iterator = false; - } - callback(); - }); - } - if (arguments.length > 3) { - eachfn(arr, limit, iteratee, done); - } else { - cb = iterator; - iterator = limit; - eachfn(arr, iteratee, done); - } - }; - } - - async.any = - async.some = _createTester(async.eachOf, toBool, identity); - - async.someLimit = _createTester(async.eachOfLimit, toBool, identity); - - async.all = - async.every = _createTester(async.eachOf, notId, notId); - - async.everyLimit = _createTester(async.eachOfLimit, notId, notId); - - function _findGetResult(v, x) { - return x; - } - async.detect = _createTester(async.eachOf, identity, _findGetResult); - async.detectSeries = _createTester(async.eachOfSeries, identity, _findGetResult); - async.detectLimit = _createTester(async.eachOfLimit, identity, _findGetResult); - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - callback(null, _map(results.sort(comparator), function (x) { - return x.value; - })); - } - - }); - - function comparator(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - } - }; - - async.auto = function (tasks, concurrency, callback) { - if (typeof arguments[1] === 'function') { - // concurrency is optional, shift the args. - callback = concurrency; - concurrency = null; - } - callback = _once(callback || noop); - var keys = _keys(tasks); - var remainingTasks = keys.length; - if (!remainingTasks) { - return callback(null); - } - if (!concurrency) { - concurrency = remainingTasks; - } - - var results = {}; - var runningTasks = 0; - - var hasError = false; - - var listeners = []; - function addListener(fn) { - listeners.unshift(fn); - } - function removeListener(fn) { - var idx = _indexOf(listeners, fn); - if (idx >= 0) listeners.splice(idx, 1); - } - function taskComplete() { - remainingTasks--; - _arrayEach(listeners.slice(0), function (fn) { - fn(); - }); - } - - addListener(function () { - if (!remainingTasks) { - callback(null, results); - } - }); - - _arrayEach(keys, function (k) { - if (hasError) return; - var task = _isArray(tasks[k]) ? tasks[k]: [tasks[k]]; - var taskCallback = _restParam(function(err, args) { - runningTasks--; - if (args.length <= 1) { - args = args[0]; - } - if (err) { - var safeResults = {}; - _forEachOf(results, function(val, rkey) { - safeResults[rkey] = val; - }); - safeResults[k] = args; - hasError = true; - - callback(err, safeResults); - } - else { - results[k] = args; - async.setImmediate(taskComplete); - } - }); - var requires = task.slice(0, task.length - 1); - // prevent dead-locks - var len = requires.length; - var dep; - while (len--) { - if (!(dep = tasks[requires[len]])) { - throw new Error('Has nonexistent dependency in ' + requires.join(', ')); - } - if (_isArray(dep) && _indexOf(dep, k) >= 0) { - throw new Error('Has cyclic dependencies'); - } - } - function ready() { - return runningTasks < concurrency && _reduce(requires, function (a, x) { - return (a && results.hasOwnProperty(x)); - }, true) && !results.hasOwnProperty(k); - } - if (ready()) { - runningTasks++; - task[task.length - 1](taskCallback, results); - } - else { - addListener(listener); - } - function listener() { - if (ready()) { - runningTasks++; - removeListener(listener); - task[task.length - 1](taskCallback, results); - } - } - }); - }; - - - - async.retry = function(times, task, callback) { - var DEFAULT_TIMES = 5; - var DEFAULT_INTERVAL = 0; - - var attempts = []; - - var opts = { - times: DEFAULT_TIMES, - interval: DEFAULT_INTERVAL - }; - - function parseTimes(acc, t){ - if(typeof t === 'number'){ - acc.times = parseInt(t, 10) || DEFAULT_TIMES; - } else if(typeof t === 'object'){ - acc.times = parseInt(t.times, 10) || DEFAULT_TIMES; - acc.interval = parseInt(t.interval, 10) || DEFAULT_INTERVAL; - } else { - throw new Error('Unsupported argument type for \'times\': ' + typeof t); - } - } - - var length = arguments.length; - if (length < 1 || length > 3) { - throw new Error('Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)'); - } else if (length <= 2 && typeof times === 'function') { - callback = task; - task = times; - } - if (typeof times !== 'function') { - parseTimes(opts, times); - } - opts.callback = callback; - opts.task = task; - - function wrappedTask(wrappedCallback, wrappedResults) { - function retryAttempt(task, finalAttempt) { - return function(seriesCallback) { - task(function(err, result){ - seriesCallback(!err || finalAttempt, {err: err, result: result}); - }, wrappedResults); - }; - } - - function retryInterval(interval){ - return function(seriesCallback){ - setTimeout(function(){ - seriesCallback(null); - }, interval); - }; - } - - while (opts.times) { - - var finalAttempt = !(opts.times-=1); - attempts.push(retryAttempt(opts.task, finalAttempt)); - if(!finalAttempt && opts.interval > 0){ - attempts.push(retryInterval(opts.interval)); - } - } - - async.series(attempts, function(done, data){ - data = data[data.length - 1]; - (wrappedCallback || opts.callback)(data.err, data.result); - }); - } - - // If a callback is passed, run this as a controll flow - return opts.callback ? wrappedTask() : wrappedTask; - }; - - async.waterfall = function (tasks, callback) { - callback = _once(callback || noop); - if (!_isArray(tasks)) { - var err = new Error('First argument to waterfall must be an array of functions'); - return callback(err); - } - if (!tasks.length) { - return callback(); - } - function wrapIterator(iterator) { - return _restParam(function (err, args) { - if (err) { - callback.apply(null, [err].concat(args)); - } - else { - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - ensureAsync(iterator).apply(null, args); - } - }); - } - wrapIterator(async.iterator(tasks))(); - }; - - function _parallel(eachfn, tasks, callback) { - callback = callback || noop; - var results = _isArrayLike(tasks) ? [] : {}; - - eachfn(tasks, function (task, key, callback) { - task(_restParam(function (err, args) { - if (args.length <= 1) { - args = args[0]; - } - results[key] = args; - callback(err); - })); - }, function (err) { - callback(err, results); - }); - } - - async.parallel = function (tasks, callback) { - _parallel(async.eachOf, tasks, callback); - }; - - async.parallelLimit = function(tasks, limit, callback) { - _parallel(_eachOfLimit(limit), tasks, callback); - }; - - async.series = function(tasks, callback) { - _parallel(async.eachOfSeries, tasks, callback); - }; - - async.iterator = function (tasks) { - function makeCallback(index) { - function fn() { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - } - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - } - return makeCallback(0); - }; - - async.apply = _restParam(function (fn, args) { - return _restParam(function (callArgs) { - return fn.apply( - null, args.concat(callArgs) - ); - }); - }); - - function _concat(eachfn, arr, fn, callback) { - var result = []; - eachfn(arr, function (x, index, cb) { - fn(x, function (err, y) { - result = result.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, result); - }); - } - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - callback = callback || noop; - if (test()) { - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else if (test.apply(this, args)) { - iterator(next); - } else { - callback.apply(null, [null].concat(args)); - } - }); - iterator(next); - } else { - callback(null); - } - }; - - async.doWhilst = function (iterator, test, callback) { - var calls = 0; - return async.whilst(function() { - return ++calls <= 1 || test.apply(this, arguments); - }, iterator, callback); - }; - - async.until = function (test, iterator, callback) { - return async.whilst(function() { - return !test.apply(this, arguments); - }, iterator, callback); - }; - - async.doUntil = function (iterator, test, callback) { - return async.doWhilst(iterator, function() { - return !test.apply(this, arguments); - }, callback); - }; - - async.during = function (test, iterator, callback) { - callback = callback || noop; - - var next = _restParam(function(err, args) { - if (err) { - callback(err); - } else { - args.push(check); - test.apply(this, args); - } - }); - - var check = function(err, truth) { - if (err) { - callback(err); - } else if (truth) { - iterator(next); - } else { - callback(null); - } - }; - - test(check); - }; - - async.doDuring = function (iterator, test, callback) { - var calls = 0; - async.during(function(next) { - if (calls++ < 1) { - next(null, true); - } else { - test.apply(this, arguments); - } - }, iterator, callback); - }; - - function _queue(worker, concurrency, payload) { - if (concurrency == null) { - concurrency = 1; - } - else if(concurrency === 0) { - throw new Error('Concurrency must not be zero'); - } - function _insert(q, data, pos, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0 && q.idle()) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - callback: callback || noop - }; - - if (pos) { - q.tasks.unshift(item); - } else { - q.tasks.push(item); - } - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - }); - async.setImmediate(q.process); - } - function _next(q, tasks) { - return function(){ - workers -= 1; - - var removed = false; - var args = arguments; - _arrayEach(tasks, function (task) { - _arrayEach(workersList, function (worker, index) { - if (worker === task && !removed) { - workersList.splice(index, 1); - removed = true; - } - }); - - task.callback.apply(task, args); - }); - if (q.tasks.length + workers === 0) { - q.drain(); - } - q.process(); - }; - } - - var workers = 0; - var workersList = []; - var q = { - tasks: [], - concurrency: concurrency, - payload: payload, - saturated: noop, - empty: noop, - drain: noop, - started: false, - paused: false, - push: function (data, callback) { - _insert(q, data, false, callback); - }, - kill: function () { - q.drain = noop; - q.tasks = []; - }, - unshift: function (data, callback) { - _insert(q, data, true, callback); - }, - process: function () { - while(!q.paused && workers < q.concurrency && q.tasks.length){ - - var tasks = q.payload ? - q.tasks.splice(0, q.payload) : - q.tasks.splice(0, q.tasks.length); - - var data = _map(tasks, function (task) { - return task.data; - }); - - if (q.tasks.length === 0) { - q.empty(); - } - workers += 1; - workersList.push(tasks[0]); - var cb = only_once(_next(q, tasks)); - worker(data, cb); - } - }, - length: function () { - return q.tasks.length; - }, - running: function () { - return workers; - }, - workersList: function () { - return workersList; - }, - idle: function() { - return q.tasks.length + workers === 0; - }, - pause: function () { - q.paused = true; - }, - resume: function () { - if (q.paused === false) { return; } - q.paused = false; - var resumeCount = Math.min(q.concurrency, q.tasks.length); - // Need to call q.process once per concurrent - // worker to preserve full concurrency after pause - for (var w = 1; w <= resumeCount; w++) { - async.setImmediate(q.process); - } - } - }; - return q; - } - - async.queue = function (worker, concurrency) { - var q = _queue(function (items, cb) { - worker(items[0], cb); - }, concurrency, 1); - - return q; - }; - - async.priorityQueue = function (worker, concurrency) { - - function _compareTasks(a, b){ - return a.priority - b.priority; - } - - function _binarySearch(sequence, item, compare) { - var beg = -1, - end = sequence.length - 1; - while (beg < end) { - var mid = beg + ((end - beg + 1) >>> 1); - if (compare(item, sequence[mid]) >= 0) { - beg = mid; - } else { - end = mid - 1; - } - } - return beg; - } - - function _insert(q, data, priority, callback) { - if (callback != null && typeof callback !== "function") { - throw new Error("task callback must be a function"); - } - q.started = true; - if (!_isArray(data)) { - data = [data]; - } - if(data.length === 0) { - // call drain immediately if there are no tasks - return async.setImmediate(function() { - q.drain(); - }); - } - _arrayEach(data, function(task) { - var item = { - data: task, - priority: priority, - callback: typeof callback === 'function' ? callback : noop - }; - - q.tasks.splice(_binarySearch(q.tasks, item, _compareTasks) + 1, 0, item); - - if (q.tasks.length === q.concurrency) { - q.saturated(); - } - async.setImmediate(q.process); - }); - } - - // Start with a normal queue - var q = async.queue(worker, concurrency); - - // Override push to accept second parameter representing priority - q.push = function (data, priority, callback) { - _insert(q, data, priority, callback); - }; - - // Remove unshift function - delete q.unshift; - - return q; - }; - - async.cargo = function (worker, payload) { - return _queue(worker, 1, payload); - }; - - function _console_fn(name) { - return _restParam(function (fn, args) { - fn.apply(null, args.concat([_restParam(function (err, args) { - if (typeof console === 'object') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _arrayEach(args, function (x) { - console[name](x); - }); - } - } - })])); - }); - } - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - var queues = {}; - var has = Object.prototype.hasOwnProperty; - hasher = hasher || identity; - var memoized = _restParam(function memoized(args) { - var callback = args.pop(); - var key = hasher.apply(null, args); - if (has.call(memo, key)) { - async.setImmediate(function () { - callback.apply(null, memo[key]); - }); - } - else if (has.call(queues, key)) { - queues[key].push(callback); - } - else { - queues[key] = [callback]; - fn.apply(null, args.concat([_restParam(function (args) { - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })])); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; - }; - - async.unmemoize = function (fn) { - return function () { - return (fn.unmemoized || fn).apply(null, arguments); - }; - }; - - function _times(mapper) { - return function (count, iterator, callback) { - mapper(_range(count), iterator, callback); - }; - } - - async.times = _times(async.map); - async.timesSeries = _times(async.mapSeries); - async.timesLimit = function (count, limit, iterator, callback) { - return async.mapLimit(_range(count), limit, iterator, callback); - }; - - async.seq = function (/* functions... */) { - var fns = arguments; - return _restParam(function (args) { - var that = this; - - var callback = args[args.length - 1]; - if (typeof callback == 'function') { - args.pop(); - } else { - callback = noop; - } - - async.reduce(fns, args, function (newargs, fn, cb) { - fn.apply(that, newargs.concat([_restParam(function (err, nextargs) { - cb(err, nextargs); - })])); - }, - function (err, results) { - callback.apply(that, [err].concat(results)); - }); - }); - }; - - async.compose = function (/* functions... */) { - return async.seq.apply(null, Array.prototype.reverse.call(arguments)); - }; - - - function _applyEach(eachfn) { - return _restParam(function(fns, args) { - var go = _restParam(function(args) { - var that = this; - var callback = args.pop(); - return eachfn(fns, function (fn, _, cb) { - fn.apply(that, args.concat([cb])); - }, - callback); - }); - if (args.length) { - return go.apply(this, args); - } - else { - return go; - } - }); - } - - async.applyEach = _applyEach(async.eachOf); - async.applyEachSeries = _applyEach(async.eachOfSeries); - - - async.forever = function (fn, callback) { - var done = only_once(callback || noop); - var task = ensureAsync(fn); - function next(err) { - if (err) { - return done(err); - } - task(next); - } - next(); - }; - - function ensureAsync(fn) { - return _restParam(function (args) { - var callback = args.pop(); - args.push(function () { - var innerArgs = arguments; - if (sync) { - async.setImmediate(function () { - callback.apply(null, innerArgs); - }); - } else { - callback.apply(null, innerArgs); - } - }); - var sync = true; - fn.apply(this, args); - sync = false; - }); - } - - async.ensureAsync = ensureAsync; - - async.constant = _restParam(function(values) { - var args = [null].concat(values); - return function (callback) { - return callback.apply(this, args); - }; - }); - - async.wrapSync = - async.asyncify = function asyncify(func) { - return _restParam(function (args) { - var callback = args.pop(); - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if (_isObject(result) && typeof result.then === "function") { - result.then(function(value) { - callback(null, value); - })["catch"](function(err) { - callback(err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); - }; - - // Node.js - if (typeof module === 'object' && module.exports) { - module.exports = async; - } - // AMD / RequireJS - else if (typeof define === 'function' && define.amd) { - define([], function () { - return async; - }); - } - // included directly via - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.html deleted file mode 100644 index a9557025..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Clone Test-Suite (Browser) - - - - - -

Clone Test-Suite (Browser)

- Tests started: ; - Tests finished: . -
    - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.js deleted file mode 100644 index e8b65b3f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/clone/test.js +++ /dev/null @@ -1,372 +0,0 @@ -var clone = require('./'); - -function inspect(obj) { - seen = []; - return JSON.stringify(obj, function (key, val) { - if (val != null && typeof val == "object") { - if (seen.indexOf(val) >= 0) { - return '[cyclic]'; - } - - seen.push(val); - } - - return val; - }); -} - -// Creates a new VM in node, or an iframe in a browser in order to run the -// script -function apartContext(context, script, callback) { - var vm = require('vm'); - - if (vm) { - var ctx = vm.createContext({ ctx: context }); - callback(vm.runInContext(script, ctx)); - } else if (document && document.createElement) { - var iframe = document.createElement('iframe'); - iframe.style.display = 'none'; - document.body.appendChild(iframe); - - var myCtxId = 'tmpCtx' + Math.random(); - - window[myCtxId] = context; - iframe.src = 'test-apart-ctx.html?' + myCtxId + '&' + encodeURIComponent(script); - iframe.onload = function() { - try { - callback(iframe.contentWindow.results); - } catch (e) { - throw e; - } - }; - } else { - console.log('WARNING: cannot create an apart context.'); - } -} - -exports["clone string"] = function (test) { - test.expect(2); // how many tests? - - var a = "foo"; - test.strictEqual(clone(a), a); - a = ""; - test.strictEqual(clone(a), a); - - test.done(); -}; - -exports["clone number"] = function (test) { - test.expect(5); // how many tests? - - var a = 0; - test.strictEqual(clone(a), a); - a = 1; - test.strictEqual(clone(a), a); - a = -1000; - test.strictEqual(clone(a), a); - a = 3.1415927; - test.strictEqual(clone(a), a); - a = -3.1415927; - test.strictEqual(clone(a), a); - - test.done(); -}; - -exports["clone date"] = function (test) { - test.expect(3); // how many tests? - - var a = new Date; - var c = clone(a); - test.ok(!!a.getUTCDate && !!a.toUTCString); - test.ok(!!c.getUTCDate && !!c.toUTCString); - test.equal(a.getTime(), c.getTime()); - - test.done(); -}; - -exports["clone object"] = function (test) { - test.expect(1); // how many tests? - - var a = { foo: { bar: "baz" } }; - var b = clone(a); - - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone array"] = function (test) { - test.expect(2); // how many tests? - - var a = [ - { foo: "bar" }, - "baz" - ]; - var b = clone(a); - - test.ok(b instanceof Array); - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone buffer"] = function (test) { - if (typeof Buffer == 'undefined') { - return test.done(); - } - - test.expect(1); - - var a = new Buffer("this is a test buffer"); - var b = clone(a); - - // no underscore equal since it has no concept of Buffers - test.deepEqual(b, a); - test.done(); -}; - -exports["clone regexp"] = function (test) { - test.expect(5); - - var a = /abc123/gi; - var b = clone(a); - test.deepEqual(b, a); - - var c = /a/g; - test.ok(c.lastIndex === 0); - - c.exec('123a456a'); - test.ok(c.lastIndex === 4); - - var d = clone(c); - test.ok(d.global); - test.ok(d.lastIndex === 4); - - test.done(); -}; - -exports["clone object containing array"] = function (test) { - test.expect(1); // how many tests? - - var a = { - arr1: [ { a: '1234', b: '2345' } ], - arr2: [ { c: '345', d: '456' } ] - }; - - var b = clone(a); - - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone object with circular reference"] = function (test) { - test.expect(8); // how many tests? - - var c = [1, "foo", {'hello': 'bar'}, function () {}, false, [2]]; - var b = [c, 2, 3, 4]; - - var a = {'b': b, 'c': c}; - a.loop = a; - a.loop2 = a; - c.loop = c; - c.aloop = a; - - var aCopy = clone(a); - test.ok(a != aCopy); - test.ok(a.c != aCopy.c); - test.ok(aCopy.c == aCopy.b[0]); - test.ok(aCopy.c.loop.loop.aloop == aCopy); - test.ok(aCopy.c[0] == a.c[0]); - - test.ok(eq(a, aCopy)); - aCopy.c[0] = 2; - test.ok(!eq(a, aCopy)); - aCopy.c = "2"; - test.ok(!eq(a, aCopy)); - - function eq(x, y) { - return inspect(x) === inspect(y); - } - - test.done(); -}; - -exports['clone prototype'] = function (test) { - test.expect(3); // how many tests? - - var a = { - a: "aaa", - x: 123, - y: 45.65 - }; - var b = clone.clonePrototype(a); - - test.strictEqual(b.a, a.a); - test.strictEqual(b.x, a.x); - test.strictEqual(b.y, a.y); - - test.done(); -}; - -exports['clone within an apart context'] = function (test) { - var results = apartContext({ clone: clone }, - "results = ctx.clone({ a: [1, 2, 3], d: new Date(), r: /^foo$/ig })", - function (results) { - test.ok(results.a.constructor.toString() === Array.toString()); - test.ok(results.d.constructor.toString() === Date.toString()); - test.ok(results.r.constructor.toString() === RegExp.toString()); - test.done(); - }); -}; - -exports['clone object with no constructor'] = function (test) { - test.expect(3); - - var n = null; - - var a = { foo: 'bar' }; - a.__proto__ = n; - test.ok(typeof a === 'object'); - test.ok(typeof a !== null); - - var b = clone(a); - test.ok(a.foo, b.foo); - - test.done(); -}; - -exports['clone object with depth argument'] = function (test) { - test.expect(6); - - var a = { - foo: { - bar : { - baz : 'qux' - } - } - }; - - var b = clone(a, false, 1); - test.deepEqual(b, a); - test.notEqual(b, a); - test.strictEqual(b.foo, a.foo); - - b = clone(a, true, 2); - test.deepEqual(b, a); - test.notEqual(b.foo, a.foo); - test.strictEqual(b.foo.bar, a.foo.bar); - - test.done(); -}; - -exports['maintain prototype chain in clones'] = function (test) { - test.expect(1); - - function T() {} - - var a = new T(); - var b = clone(a); - test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); - - test.done(); -}; - -exports['parent prototype is overriden with prototype provided'] = function (test) { - test.expect(1); - - function T() {} - - var a = new T(); - var b = clone(a, true, Infinity, null); - test.strictEqual(b.__defineSetter__, undefined); - - test.done(); -}; - -exports['clone object with null children'] = function (test) { - test.expect(1); - var a = { - foo: { - bar: null, - baz: { - qux: false - } - } - }; - - var b = clone(a); - - test.deepEqual(b, a); - test.done(); -}; - -exports['clone instance with getter'] = function (test) { - test.expect(1); - function Ctor() {}; - Object.defineProperty(Ctor.prototype, 'prop', { - configurable: true, - enumerable: true, - get: function() { - return 'value'; - } - }); - - var a = new Ctor(); - var b = clone(a); - - test.strictEqual(b.prop, 'value'); - test.done(); -}; - -exports['get RegExp flags'] = function (test) { - test.strictEqual(clone.__getRegExpFlags(/a/), '' ); - test.strictEqual(clone.__getRegExpFlags(/a/i), 'i' ); - test.strictEqual(clone.__getRegExpFlags(/a/g), 'g' ); - test.strictEqual(clone.__getRegExpFlags(/a/gi), 'gi'); - test.strictEqual(clone.__getRegExpFlags(/a/m), 'm' ); - - test.done(); -}; - -exports["recognize Array object"] = function (test) { - var results = apartContext(null, "results = [1, 2, 3]", function(alien) { - var local = [4, 5, 6]; - test.ok(clone.__isArray(alien)); // recognize in other context. - test.ok(clone.__isArray(local)); // recognize in local context. - test.ok(!clone.__isDate(alien)); - test.ok(!clone.__isDate(local)); - test.ok(!clone.__isRegExp(alien)); - test.ok(!clone.__isRegExp(local)); - test.done(); - }); -}; - -exports["recognize Date object"] = function (test) { - var results = apartContext(null, "results = new Date()", function(alien) { - var local = new Date(); - - test.ok(clone.__isDate(alien)); // recognize in other context. - test.ok(clone.__isDate(local)); // recognize in local context. - test.ok(!clone.__isArray(alien)); - test.ok(!clone.__isArray(local)); - test.ok(!clone.__isRegExp(alien)); - test.ok(!clone.__isRegExp(local)); - - test.done(); - }); -}; - -exports["recognize RegExp object"] = function (test) { - var results = apartContext(null, "results = /foo/", function(alien) { - var local = /bar/; - - test.ok(clone.__isRegExp(alien)); // recognize in other context. - test.ok(clone.__isRegExp(local)); // recognize in local context. - test.ok(!clone.__isArray(alien)); - test.ok(!clone.__isArray(local)); - test.ok(!clone.__isDate(alien)); - test.ok(!clone.__isDate(local)); - test.done(); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/LICENSE deleted file mode 100644 index 3de4e33b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Original Library - - Copyright (c) Marak Squires - -Additional Functionality - - Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/ReadMe.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/ReadMe.md deleted file mode 100644 index 0326aab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/ReadMe.md +++ /dev/null @@ -1,178 +0,0 @@ -# colors.js [![Build Status](https://travis-ci.org/Marak/colors.js.svg?branch=master)](https://travis-ci.org/Marak/colors.js) - -## get color and style in your node.js console - -![Demo](https://raw.githubusercontent.com/Marak/colors.js/master/screenshots/colors.png) - -## Installation - - npm install colors - -## colors and styles! - -### text colors - - - black - - red - - green - - yellow - - blue - - magenta - - cyan - - white - - gray - - grey - -### background colors - - - bgBlack - - bgRed - - bgGreen - - bgYellow - - bgBlue - - bgMagenta - - bgCyan - - bgWhite - -### styles - - - reset - - bold - - dim - - italic - - underline - - inverse - - hidden - - strikethrough - -### extras - - - rainbow - - zebra - - america - - trap - - random - - -## Usage - -By popular demand, `colors` now ships with two types of usages! - -The super nifty way - -```js -var colors = require('colors'); - -console.log('hello'.green); // outputs green text -console.log('i like cake and pies'.underline.red) // outputs red underlined text -console.log('inverse the color'.inverse); // inverses the color -console.log('OMG Rainbows!'.rainbow); // rainbow -console.log('Run the trap'.trap); // Drops the bass - -``` - -or a slightly less nifty way which doesn't extend `String.prototype` - -```js -var colors = require('colors/safe'); - -console.log(colors.green('hello')); // outputs green text -console.log(colors.red.underline('i like cake and pies')) // outputs red underlined text -console.log(colors.inverse('inverse the color')); // inverses the color -console.log(colors.rainbow('OMG Rainbows!')); // rainbow -console.log(colors.trap('Run the trap')); // Drops the bass - -``` - -I prefer the first way. Some people seem to be afraid of extending `String.prototype` and prefer the second way. - -If you are writing good code you will never have an issue with the first approach. If you really don't want to touch `String.prototype`, the second usage will not touch `String` native object. - -## Disabling Colors - -To disable colors you can pass the following arguments in the command line to your application: - -```bash -node myapp.js --no-color -``` - -## Console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data) - -```js -var name = 'Marak'; -console.log(colors.green('Hello %s'), name); -// outputs -> 'Hello Marak' -``` - -## Custom themes - -### Using standard API - -```js - -var colors = require('colors'); - -colors.setTheme({ - silly: 'rainbow', - input: 'grey', - verbose: 'cyan', - prompt: 'grey', - info: 'green', - data: 'grey', - help: 'cyan', - warn: 'yellow', - debug: 'blue', - error: 'red' -}); - -// outputs red text -console.log("this is an error".error); - -// outputs yellow text -console.log("this is a warning".warn); -``` - -### Using string safe API - -```js -var colors = require('colors/safe'); - -// set single property -var error = colors.red; -error('this is red'); - -// set theme -colors.setTheme({ - silly: 'rainbow', - input: 'grey', - verbose: 'cyan', - prompt: 'grey', - info: 'green', - data: 'grey', - help: 'cyan', - warn: 'yellow', - debug: 'blue', - error: 'red' -}); - -// outputs red text -console.log(colors.error("this is an error")); - -// outputs yellow text -console.log(colors.warn("this is a warning")); - -``` - -You can also combine them: - -```javascript -var colors = require('colors'); - -colors.setTheme({ - custom: ['red', 'underline'] -}); - -console.log('test'.custom); -``` - -*Protip: There is a secret undocumented style in `colors`. If you find the style you can summon him.* diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/normal-usage.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/normal-usage.js deleted file mode 100644 index 2818741e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/normal-usage.js +++ /dev/null @@ -1,74 +0,0 @@ -var colors = require('../lib/index'); - -console.log("First some yellow text".yellow); - -console.log("Underline that text".yellow.underline); - -console.log("Make it bold and red".red.bold); - -console.log(("Double Raindows All Day Long").rainbow) - -console.log("Drop the bass".trap) - -console.log("DROP THE RAINBOW BASS".trap.rainbow) - - -console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported - -console.log('So '.green + 'are'.underline + ' ' + 'inverse'.inverse + ' styles! '.yellow.bold); // styles not widely supported -console.log("Zebras are so fun!".zebra); - -// -// Remark: .strikethrough may not work with Mac OS Terminal App -// -console.log("This is " + "not".strikethrough + " fun."); - -console.log('Background color attack!'.black.bgWhite) -console.log('Use random styles on everything!'.random) -console.log('America, Heck Yeah!'.america) - - -console.log('Setting themes is useful') - -// -// Custom themes -// -console.log('Generic logging theme as JSON'.green.bold.underline); -// Load theme with JSON literal -colors.setTheme({ - silly: 'rainbow', - input: 'grey', - verbose: 'cyan', - prompt: 'grey', - info: 'green', - data: 'grey', - help: 'cyan', - warn: 'yellow', - debug: 'blue', - error: 'red' -}); - -// outputs red text -console.log("this is an error".error); - -// outputs yellow text -console.log("this is a warning".warn); - -// outputs grey text -console.log("this is an input".input); - -console.log('Generic logging theme as file'.green.bold.underline); - -// Load a theme from file -colors.setTheme(__dirname + '/../themes/generic-logging.js'); - -// outputs red text -console.log("this is an error".error); - -// outputs yellow text -console.log("this is a warning".warn); - -// outputs grey text -console.log("this is an input".input); - -//console.log("Don't summon".zalgo) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/safe-string.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/safe-string.js deleted file mode 100644 index 111b363a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/examples/safe-string.js +++ /dev/null @@ -1,76 +0,0 @@ -var colors = require('../safe'); - -console.log(colors.yellow("First some yellow text")); - -console.log(colors.yellow.underline("Underline that text")); - -console.log(colors.red.bold("Make it bold and red")); - -console.log(colors.rainbow("Double Raindows All Day Long")) - -console.log(colors.trap("Drop the bass")) - -console.log(colors.rainbow(colors.trap("DROP THE RAINBOW BASS"))); - -console.log(colors.bold.italic.underline.red('Chains are also cool.')); // styles not widely supported - - -console.log(colors.green('So ') + colors.underline('are') + ' ' + colors.inverse('inverse') + colors.yellow.bold(' styles! ')); // styles not widely supported - -console.log(colors.zebra("Zebras are so fun!")); - -console.log("This is " + colors.strikethrough("not") + " fun."); - - -console.log(colors.black.bgWhite('Background color attack!')); -console.log(colors.random('Use random styles on everything!')) -console.log(colors.america('America, Heck Yeah!')); - -console.log('Setting themes is useful') - -// -// Custom themes -// -//console.log('Generic logging theme as JSON'.green.bold.underline); -// Load theme with JSON literal -colors.setTheme({ - silly: 'rainbow', - input: 'grey', - verbose: 'cyan', - prompt: 'grey', - info: 'green', - data: 'grey', - help: 'cyan', - warn: 'yellow', - debug: 'blue', - error: 'red' -}); - -// outputs red text -console.log(colors.error("this is an error")); - -// outputs yellow text -console.log(colors.warn("this is a warning")); - -// outputs grey text -console.log(colors.input("this is an input")); - - -// console.log('Generic logging theme as file'.green.bold.underline); - -// Load a theme from file -colors.setTheme(__dirname + '/../themes/generic-logging.js'); - -// outputs red text -console.log(colors.error("this is an error")); - -// outputs yellow text -console.log(colors.warn("this is a warning")); - -// outputs grey text -console.log(colors.input("this is an input")); - -// console.log(colors.zalgo("Don't summon him")) - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/colors.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/colors.js deleted file mode 100644 index 790ffd43..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/colors.js +++ /dev/null @@ -1,187 +0,0 @@ -/* - -The MIT License (MIT) - -Original Library - - Copyright (c) Marak Squires - -Additional functionality - - Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. - -*/ - -var colors = {}; -module['exports'] = colors; - -colors.themes = {}; - -var ansiStyles = colors.styles = require('./styles'); -var defineProps = Object.defineProperties; - -colors.supportsColor = require('./system/supports-colors'); - -if (typeof colors.enabled === "undefined") { - colors.enabled = colors.supportsColor; -} - -colors.stripColors = colors.strip = function(str){ - return ("" + str).replace(/\x1B\[\d+m/g, ''); -}; - - -var stylize = colors.stylize = function stylize (str, style) { - if (!colors.enabled) { - return str+''; - } - - return ansiStyles[style].open + str + ansiStyles[style].close; -} - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; -var escapeStringRegexp = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - return str.replace(matchOperatorsRe, '\\$&'); -} - -function build(_styles) { - var builder = function builder() { - return applyStyle.apply(builder, arguments); - }; - builder._styles = _styles; - // __proto__ is used because we must return a function, but there is - // no way to create a function with a different prototype. - builder.__proto__ = proto; - return builder; -} - -var styles = (function () { - var ret = {}; - ansiStyles.grey = ansiStyles.gray; - Object.keys(ansiStyles).forEach(function (key) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - ret[key] = { - get: function () { - return build(this._styles.concat(key)); - } - }; - }); - return ret; -})(); - -var proto = defineProps(function colors() {}, styles); - -function applyStyle() { - var args = arguments; - var argsLen = args.length; - var str = argsLen !== 0 && String(arguments[0]); - if (argsLen > 1) { - for (var a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!colors.enabled || !str) { - return str; - } - - var nestedStyles = this._styles; - - var i = nestedStyles.length; - while (i--) { - var code = ansiStyles[nestedStyles[i]]; - str = code.open + str.replace(code.closeRe, code.open) + code.close; - } - - return str; -} - -function applyTheme (theme) { - for (var style in theme) { - (function(style){ - colors[style] = function(str){ - if (typeof theme[style] === 'object'){ - var out = str; - for (var i in theme[style]){ - out = colors[theme[style][i]](out); - } - return out; - } - return colors[theme[style]](str); - }; - })(style) - } -} - -colors.setTheme = function (theme) { - if (typeof theme === 'string') { - try { - colors.themes[theme] = require(theme); - applyTheme(colors.themes[theme]); - return colors.themes[theme]; - } catch (err) { - console.log(err); - return err; - } - } else { - applyTheme(theme); - } -}; - -function init() { - var ret = {}; - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - return build([name]); - } - }; - }); - return ret; -} - -var sequencer = function sequencer (map, str) { - var exploded = str.split(""), i = 0; - exploded = exploded.map(map); - return exploded.join(""); -}; - -// custom formatter methods -colors.trap = require('./custom/trap'); -colors.zalgo = require('./custom/zalgo'); - -// maps -colors.maps = {}; -colors.maps.america = require('./maps/america'); -colors.maps.zebra = require('./maps/zebra'); -colors.maps.rainbow = require('./maps/rainbow'); -colors.maps.random = require('./maps/random') - -for (var map in colors.maps) { - (function(map){ - colors[map] = function (str) { - return sequencer(colors.maps[map], str); - } - })(map) -} - -defineProps(colors, init()); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/trap.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/trap.js deleted file mode 100644 index 3f091437..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/trap.js +++ /dev/null @@ -1,45 +0,0 @@ -module['exports'] = function runTheTrap (text, options) { - var result = ""; - text = text || "Run the trap, drop the bass"; - text = text.split(''); - var trap = { - a: ["\u0040", "\u0104", "\u023a", "\u0245", "\u0394", "\u039b", "\u0414"], - b: ["\u00df", "\u0181", "\u0243", "\u026e", "\u03b2", "\u0e3f"], - c: ["\u00a9", "\u023b", "\u03fe"], - d: ["\u00d0", "\u018a", "\u0500" , "\u0501" ,"\u0502", "\u0503"], - e: ["\u00cb", "\u0115", "\u018e", "\u0258", "\u03a3", "\u03be", "\u04bc", "\u0a6c"], - f: ["\u04fa"], - g: ["\u0262"], - h: ["\u0126", "\u0195", "\u04a2", "\u04ba", "\u04c7", "\u050a"], - i: ["\u0f0f"], - j: ["\u0134"], - k: ["\u0138", "\u04a0", "\u04c3", "\u051e"], - l: ["\u0139"], - m: ["\u028d", "\u04cd", "\u04ce", "\u0520", "\u0521", "\u0d69"], - n: ["\u00d1", "\u014b", "\u019d", "\u0376", "\u03a0", "\u048a"], - o: ["\u00d8", "\u00f5", "\u00f8", "\u01fe", "\u0298", "\u047a", "\u05dd", "\u06dd", "\u0e4f"], - p: ["\u01f7", "\u048e"], - q: ["\u09cd"], - r: ["\u00ae", "\u01a6", "\u0210", "\u024c", "\u0280", "\u042f"], - s: ["\u00a7", "\u03de", "\u03df", "\u03e8"], - t: ["\u0141", "\u0166", "\u0373"], - u: ["\u01b1", "\u054d"], - v: ["\u05d8"], - w: ["\u0428", "\u0460", "\u047c", "\u0d70"], - x: ["\u04b2", "\u04fe", "\u04fc", "\u04fd"], - y: ["\u00a5", "\u04b0", "\u04cb"], - z: ["\u01b5", "\u0240"] - } - text.forEach(function(c){ - c = c.toLowerCase(); - var chars = trap[c] || [" "]; - var rand = Math.floor(Math.random() * chars.length); - if (typeof trap[c] !== "undefined") { - result += trap[c][rand]; - } else { - result += c; - } - }); - return result; - -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/zalgo.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/zalgo.js deleted file mode 100644 index 1538c3b4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/custom/zalgo.js +++ /dev/null @@ -1,104 +0,0 @@ -// please no -module['exports'] = function zalgo(text, options) { - text = text || " he is here "; - var soul = { - "up" : [ - '̍', '̎', '̄', '̅', - '̿', '̑', '̆', '̐', - '͒', '͗', '͑', '̇', - '̈', '̊', '͂', '̓', - '̈', '͊', '͋', '͌', - '̃', '̂', '̌', '͐', - '̀', '́', '̋', '̏', - '̒', '̓', '̔', '̽', - '̉', 'ͣ', 'ͤ', 'ͥ', - 'ͦ', 'ͧ', 'ͨ', 'ͩ', - 'ͪ', 'ͫ', 'ͬ', 'ͭ', - 'ͮ', 'ͯ', '̾', '͛', - '͆', '̚' - ], - "down" : [ - '̖', '̗', '̘', '̙', - '̜', '̝', '̞', '̟', - '̠', '̤', '̥', '̦', - '̩', '̪', '̫', '̬', - '̭', '̮', '̯', '̰', - '̱', '̲', '̳', '̹', - '̺', '̻', '̼', 'ͅ', - '͇', '͈', '͉', '͍', - '͎', '͓', '͔', '͕', - '͖', '͙', '͚', '̣' - ], - "mid" : [ - '̕', '̛', '̀', '́', - '͘', '̡', '̢', '̧', - '̨', '̴', '̵', '̶', - '͜', '͝', '͞', - '͟', '͠', '͢', '̸', - '̷', '͡', ' ҉' - ] - }, - all = [].concat(soul.up, soul.down, soul.mid), - zalgo = {}; - - function randomNumber(range) { - var r = Math.floor(Math.random() * range); - return r; - } - - function is_char(character) { - var bool = false; - all.filter(function (i) { - bool = (i === character); - }); - return bool; - } - - - function heComes(text, options) { - var result = '', counts, l; - options = options || {}; - options["up"] = typeof options["up"] !== 'undefined' ? options["up"] : true; - options["mid"] = typeof options["mid"] !== 'undefined' ? options["mid"] : true; - options["down"] = typeof options["down"] !== 'undefined' ? options["down"] : true; - options["size"] = typeof options["size"] !== 'undefined' ? options["size"] : "maxi"; - text = text.split(''); - for (l in text) { - if (is_char(l)) { - continue; - } - result = result + text[l]; - counts = {"up" : 0, "down" : 0, "mid" : 0}; - switch (options.size) { - case 'mini': - counts.up = randomNumber(8); - counts.mid = randomNumber(2); - counts.down = randomNumber(8); - break; - case 'maxi': - counts.up = randomNumber(16) + 3; - counts.mid = randomNumber(4) + 1; - counts.down = randomNumber(64) + 3; - break; - default: - counts.up = randomNumber(8) + 1; - counts.mid = randomNumber(6) / 2; - counts.down = randomNumber(8) + 1; - break; - } - - var arr = ["up", "mid", "down"]; - for (var d in arr) { - var index = arr[d]; - for (var i = 0 ; i <= counts[index]; i++) { - if (options[index]) { - result = result + soul[index][randomNumber(soul[index].length)]; - } - } - } - } - return result; - } - // don't summon him - return heComes(text, options); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/extendStringPrototype.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/extendStringPrototype.js deleted file mode 100644 index 67374a1c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/extendStringPrototype.js +++ /dev/null @@ -1,113 +0,0 @@ -var colors = require('./colors'); - -module['exports'] = function () { - - // - // Extends prototype of native string object to allow for "foo".red syntax - // - var addProperty = function (color, func) { - String.prototype.__defineGetter__(color, func); - }; - - var sequencer = function sequencer (map, str) { - return function () { - var exploded = this.split(""), i = 0; - exploded = exploded.map(map); - return exploded.join(""); - } - }; - - addProperty('strip', function () { - return colors.strip(this); - }); - - addProperty('stripColors', function () { - return colors.strip(this); - }); - - addProperty("trap", function(){ - return colors.trap(this); - }); - - addProperty("zalgo", function(){ - return colors.zalgo(this); - }); - - addProperty("zebra", function(){ - return colors.zebra(this); - }); - - addProperty("rainbow", function(){ - return colors.rainbow(this); - }); - - addProperty("random", function(){ - return colors.random(this); - }); - - addProperty("america", function(){ - return colors.america(this); - }); - - // - // Iterate through all default styles and colors - // - var x = Object.keys(colors.styles); - x.forEach(function (style) { - addProperty(style, function () { - return colors.stylize(this, style); - }); - }); - - function applyTheme(theme) { - // - // Remark: This is a list of methods that exist - // on String that you should not overwrite. - // - var stringPrototypeBlacklist = [ - '__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor', - 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt', - 'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring', - 'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight' - ]; - - Object.keys(theme).forEach(function (prop) { - if (stringPrototypeBlacklist.indexOf(prop) !== -1) { - console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name'); - } - else { - if (typeof(theme[prop]) === 'string') { - colors[prop] = colors[theme[prop]]; - addProperty(prop, function () { - return colors[theme[prop]](this); - }); - } - else { - addProperty(prop, function () { - var ret = this; - for (var t = 0; t < theme[prop].length; t++) { - ret = colors[theme[prop][t]](ret); - } - return ret; - }); - } - } - }); - } - - colors.setTheme = function (theme) { - if (typeof theme === 'string') { - try { - colors.themes[theme] = require(theme); - applyTheme(colors.themes[theme]); - return colors.themes[theme]; - } catch (err) { - console.log(err); - return err; - } - } else { - applyTheme(theme); - } - }; - -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/index.js deleted file mode 100644 index fd0956d0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var colors = require('./colors'); -module['exports'] = colors; - -// Remark: By default, colors will add style properties to String.prototype -// -// If you don't wish to extend String.prototype you can do this instead and native String will not be touched -// -// var colors = require('colors/safe); -// colors.red("foo") -// -// -require('./extendStringPrototype')(); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/america.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/america.js deleted file mode 100644 index a07d8327..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/america.js +++ /dev/null @@ -1,12 +0,0 @@ -var colors = require('../colors'); - -module['exports'] = (function() { - return function (letter, i, exploded) { - if(letter === " ") return letter; - switch(i%3) { - case 0: return colors.red(letter); - case 1: return colors.white(letter) - case 2: return colors.blue(letter) - } - } -})(); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/rainbow.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/rainbow.js deleted file mode 100644 index a7ce24e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/rainbow.js +++ /dev/null @@ -1,13 +0,0 @@ -var colors = require('../colors'); - -module['exports'] = (function () { - var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV - return function (letter, i, exploded) { - if (letter === " ") { - return letter; - } else { - return colors[rainbowColors[i++ % rainbowColors.length]](letter); - } - }; -})(); - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/random.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/random.js deleted file mode 100644 index 5cd101fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/random.js +++ /dev/null @@ -1,8 +0,0 @@ -var colors = require('../colors'); - -module['exports'] = (function () { - var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta']; - return function(letter, i, exploded) { - return letter === " " ? letter : colors[available[Math.round(Math.random() * (available.length - 1))]](letter); - }; -})(); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/zebra.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/zebra.js deleted file mode 100644 index bf7dcdea..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/maps/zebra.js +++ /dev/null @@ -1,5 +0,0 @@ -var colors = require('../colors'); - -module['exports'] = function (letter, i, exploded) { - return i % 2 === 0 ? letter : colors.inverse(letter); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/styles.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/styles.js deleted file mode 100644 index 067d5907..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/styles.js +++ /dev/null @@ -1,77 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. - -*/ - -var styles = {}; -module['exports'] = styles; - -var codes = { - reset: [0, 0], - - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29], - - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - grey: [90, 39], - - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], - - // legacy styles for colors pre v1.0.0 - blackBG: [40, 49], - redBG: [41, 49], - greenBG: [42, 49], - yellowBG: [43, 49], - blueBG: [44, 49], - magentaBG: [45, 49], - cyanBG: [46, 49], - whiteBG: [47, 49] - -}; - -Object.keys(codes).forEach(function (key) { - var val = codes[key]; - var style = styles[key] = []; - style.open = '\u001b[' + val[0] + 'm'; - style.close = '\u001b[' + val[1] + 'm'; -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/system/supports-colors.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/system/supports-colors.js deleted file mode 100644 index 3e008aa9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/lib/system/supports-colors.js +++ /dev/null @@ -1,61 +0,0 @@ -/* -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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. - -*/ - -var argv = process.argv; - -module.exports = (function () { - if (argv.indexOf('--no-color') !== -1 || - argv.indexOf('--color=false') !== -1) { - return false; - } - - if (argv.indexOf('--color') !== -1 || - argv.indexOf('--color=true') !== -1 || - argv.indexOf('--color=always') !== -1) { - return true; - } - - if (process.stdout && !process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - if (process.env.TERM === 'dumb') { - return false; - } - - if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { - return true; - } - - return false; -})(); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/package.json deleted file mode 100644 index 670f0fc9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "colors@^1.1.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/tslint" - ] - ], - "_from": "colors@>=1.1.2 <2.0.0", - "_id": "colors@1.1.2", - "_inCache": true, - "_installable": true, - "_location": "/colors", - "_nodeVersion": "0.11.13", - "_npmUser": { - "email": "marak.squires@gmail.com", - "name": "marak" - }, - "_npmVersion": "2.1.8", - "_phantomChildren": {}, - "_requested": { - "name": "colors", - "raw": "colors@^1.1.2", - "rawSpec": "^1.1.2", - "scope": null, - "spec": ">=1.1.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/tslint" - ], - "_resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "_shasum": "168a4701756b6a7f51a12ce0c97bfa28c084ed63", - "_shrinkwrap": null, - "_spec": "colors@^1.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tslint", - "author": { - "name": "Marak Squires" - }, - "bugs": { - "url": "https://github.com/Marak/colors.js/issues" - }, - "dependencies": {}, - "description": "get colors in your node.js console", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "168a4701756b6a7f51a12ce0c97bfa28c084ed63", - "tarball": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" - }, - "engines": { - "node": ">=0.1.90" - }, - "files": [ - "examples", - "lib", - "LICENSE", - "safe.js", - "themes" - ], - "gitHead": "8bf2ad9fa695dcb30b7e9fd83691b139fd6655c4", - "homepage": "https://github.com/Marak/colors.js", - "keywords": [ - "ansi", - "terminal", - "colors" - ], - "license": "MIT", - "main": "lib", - "maintainers": [ - { - "email": "marak.squires@gmail.com", - "name": "marak" - } - ], - "name": "colors", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/Marak/colors.js.git" - }, - "scripts": { - "test": "node tests/basic-test.js && node tests/safe-test.js" - }, - "version": "1.1.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/safe.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/safe.js deleted file mode 100644 index a6a1f3ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/safe.js +++ /dev/null @@ -1,9 +0,0 @@ -// -// Remark: Requiring this file will use the "safe" colors API which will not touch String.prototype -// -// var colors = require('colors/safe); -// colors.red("foo") -// -// -var colors = require('./lib/colors'); -module['exports'] = colors; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/themes/generic-logging.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/themes/generic-logging.js deleted file mode 100644 index 571972c1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/colors/themes/generic-logging.js +++ /dev/null @@ -1,12 +0,0 @@ -module['exports'] = { - silly: 'rainbow', - input: 'grey', - verbose: 'cyan', - prompt: 'grey', - info: 'green', - data: 'grey', - help: 'cyan', - warn: 'yellow', - debug: 'blue', - error: 'red' -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/License b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/Readme.md deleted file mode 100644 index 3a9e025f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -**NB** Currently `combined-stream` works with streams vesrion 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatability with `combined-stream`. - -- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. - -- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/lib/combined_stream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 6b5c21b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,188 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/package.json deleted file mode 100644 index 3c880054..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/combined-stream/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "combined-stream@~1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "combined-stream@>=1.0.1 <1.1.0", - "_id": "combined-stream@1.0.5", - "_inCache": true, - "_installable": true, - "_location": "/combined-stream", - "_nodeVersion": "0.12.4", - "_npmUser": { - "email": "iam@alexindigo.com", - "name": "alexindigo" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "combined-stream", - "raw": "combined-stream@~1.0.1", - "rawSpec": "~1.0.1", - "scope": null, - "spec": ">=1.0.1 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/form-data", - "/request" - ], - "_resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "_shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "_shrinkwrap": null, - "_spec": "combined-stream@~1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "felix@debuggable.com", - "name": "Felix Geisendörfer", - "url": "http://debuggable.com/" - }, - "bugs": { - "url": "https://github.com/felixge/node-combined-stream/issues" - }, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "description": "A stream that emits multiple other streams one after another.", - "devDependencies": { - "far": "~0.0.7" - }, - "directories": {}, - "dist": { - "shasum": "938370a57b4a51dea2c77c15d5c5fdf895164009", - "tarball": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" - }, - "engines": { - "node": ">= 0.8" - }, - "gitHead": "cfc7b815d090a109bcedb5bb0f6713148d55a6b7", - "homepage": "https://github.com/felixge/node-combined-stream", - "license": "MIT", - "main": "./lib/combined_stream", - "maintainers": [ - { - "email": "felix@debuggable.com", - "name": "felixge" - }, - { - "email": "dtyree77@gmail.com", - "name": "celer" - }, - { - "email": "iam@alexindigo.com", - "name": "alexindigo" - }, - { - "email": "apeherder@gmail.com", - "name": "apechimp" - } - ], - "name": "combined-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "scripts": { - "test": "node test/run.js" - }, - "version": "1.0.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/History.md deleted file mode 100644 index 1b47439c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/History.md +++ /dev/null @@ -1,261 +0,0 @@ - -2.9.0 / 2015-10-13 -================== - - * Add option `isDefault` to set default subcommand #415 @Qix- - * Add callback to allow filtering or post-processing of help text #434 @djulien - * Fix `undefined` text in help information close #414 #416 @zhiyelee - -2.8.1 / 2015-04-22 -================== - - * Back out `support multiline description` Close #396 #397 - -2.8.0 / 2015-04-07 -================== - - * Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee - * Fix bug in Git-style sub-commands #372 @zhiyelee - * Allow commands to be hidden from help #383 @tonylukasavage - * When git-style sub-commands are in use, yet none are called, display help #382 @claylo - * Add ability to specify arguments syntax for top-level command #258 @rrthomas - * Support multiline descriptions #208 @zxqfox - -2.7.1 / 2015-03-11 -================== - - * Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367. - -2.7.0 / 2015-03-09 -================== - - * Fix git-style bug when installed globally. Close #335 #349 @zhiyelee - * Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage - * Add support for camelCase on `opts()`. Close #353 @nkzawa - * Add node.js 0.12 and io.js to travis.yml - * Allow RegEx options. #337 @palanik - * Fixes exit code when sub-command failing. Close #260 #332 @pirelenito - * git-style `bin` files in $PATH make sense. Close #196 #327 @zhiyelee - -2.6.0 / 2014-12-30 -================== - - * added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee - * Add application description to the help msg. Close #112 @dalssoft - -2.5.1 / 2014-12-15 -================== - - * fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee - -2.5.0 / 2014-10-24 -================== - - * add support for variadic arguments. Closes #277 @whitlockjc - -2.4.0 / 2014-10-17 -================== - - * fixed a bug on executing the coercion function of subcommands option. Closes #270 - * added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage - * added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage - * fixed a bug on subcommand name. Closes #248 @jonathandelgado - * fixed function normalize doesn’t honor option terminator. Closes #216 @abbr - -2.3.0 / 2014-07-16 -================== - - * add command alias'. Closes PR #210 - * fix: Typos. Closes #99 - * fix: Unused fs module. Closes #217 - -2.2.0 / 2014-03-29 -================== - - * add passing of previous option value - * fix: support subcommands on windows. Closes #142 - * Now the defaultValue passed as the second argument of the coercion function. - -2.1.0 / 2013-11-21 -================== - - * add: allow cflag style option params, unit test, fixes #174 - -2.0.0 / 2013-07-18 -================== - - * remove input methods (.prompt, .confirm, etc) - -1.3.2 / 2013-07-18 -================== - - * add support for sub-commands to co-exist with the original command - -1.3.1 / 2013-07-18 -================== - - * add quick .runningCommand hack so you can opt-out of other logic when running a sub command - -1.3.0 / 2013-07-09 -================== - - * add EACCES error handling - * fix sub-command --help - -1.2.0 / 2013-06-13 -================== - - * allow "-" hyphen as an option argument - * support for RegExp coercion - -1.1.1 / 2012-11-20 -================== - - * add more sub-command padding - * fix .usage() when args are present. Closes #106 - -1.1.0 / 2012-11-16 -================== - - * add git-style executable subcommand support. Closes #94 - -1.0.5 / 2012-10-09 -================== - - * fix `--name` clobbering. Closes #92 - * fix examples/help. Closes #89 - -1.0.4 / 2012-09-03 -================== - - * add `outputHelp()` method. - -1.0.3 / 2012-08-30 -================== - - * remove invalid .version() defaulting - -1.0.2 / 2012-08-24 -================== - - * add `--foo=bar` support [arv] - * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] - -1.0.1 / 2012-08-03 -================== - - * fix issue #56 - * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) - -1.0.0 / 2012-07-05 -================== - - * add support for optional option descriptions - * add defaulting of `.version()` to package.json's version - -0.6.1 / 2012-06-01 -================== - - * Added: append (yes or no) on confirmation - * Added: allow node.js v0.7.x - -0.6.0 / 2012-04-10 -================== - - * Added `.prompt(obj, callback)` support. Closes #49 - * Added default support to .choose(). Closes #41 - * Fixed the choice example - -0.5.1 / 2011-12-20 -================== - - * Fixed `password()` for recent nodes. Closes #36 - -0.5.0 / 2011-12-04 -================== - - * Added sub-command option support [itay] - -0.4.3 / 2011-12-04 -================== - - * Fixed custom help ordering. Closes #32 - -0.4.2 / 2011-11-24 -================== - - * Added travis support - * Fixed: line-buffered input automatically trimmed. Closes #31 - -0.4.1 / 2011-11-18 -================== - - * Removed listening for "close" on --help - -0.4.0 / 2011-11-15 -================== - - * Added support for `--`. Closes #24 - -0.3.3 / 2011-11-14 -================== - - * Fixed: wait for close event when writing help info [Jerry Hamlet] - -0.3.2 / 2011-11-01 -================== - - * Fixed long flag definitions with values [felixge] - -0.3.1 / 2011-10-31 -================== - - * Changed `--version` short flag to `-V` from `-v` - * Changed `.version()` so it's configurable [felixge] - -0.3.0 / 2011-10-31 -================== - - * Added support for long flags only. Closes #18 - -0.2.1 / 2011-10-24 -================== - - * "node": ">= 0.4.x < 0.7.0". Closes #20 - -0.2.0 / 2011-09-26 -================== - - * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] - -0.1.0 / 2011-08-24 -================== - - * Added support for custom `--help` output - -0.0.5 / 2011-08-18 -================== - - * Changed: when the user enters nothing prompt for password again - * Fixed issue with passwords beginning with numbers [NuckChorris] - -0.0.4 / 2011-08-15 -================== - - * Fixed `Commander#args` - -0.0.3 / 2011-08-15 -================== - - * Added default option value support - -0.0.2 / 2011-08-15 -================== - - * Added mask support to `Command#password(str[, mask], fn)` - * Added `Command#password(str, fn)` - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/LICENSE deleted file mode 100644 index 10f997ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/Readme.md deleted file mode 100644 index 08b9e4cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/Readme.md +++ /dev/null @@ -1,351 +0,0 @@ -# Commander.js - - -[![Build Status](https://api.travis-ci.org/tj/commander.js.svg)](http://travis-ci.org/tj/commander.js) -[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander) -[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://www.npmjs.org/package/commander) -[![Join the chat at https://gitter.im/tj/commander.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tj/commander.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/tj/commander). - [API documentation](http://tj.github.com/commander.js/) - - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq-sauce', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineapple'); -if (program.bbqSauce) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -function collect(val, memo) { - memo.push(val); - return memo; -} - -function increaseVerbosity(v, total) { - return total + 1; -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range
    ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .option('-c, --collect [value]', 'A repeatable value', collect, []) - .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' collect: %j', program.collect); -console.log(' verbosity: %j', program.verbose); -console.log(' args: %j', program.args); -``` - -## Regular Expression -```js -program - .version('0.0.1') - .option('-s --size ', 'Pizza size', /^(large|medium|small)$/i, 'medium') - .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i) - .parse(process.argv); - -console.log(' size: %j', program.size); -console.log(' drink: %j', program.drink); -``` - -## Variadic arguments - - The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to - append `...` to the argument name. Here is an example: - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .command('rmdir [otherDirs...]') - .action(function (dir, otherDirs) { - console.log('rmdir %s', dir); - if (otherDirs) { - otherDirs.forEach(function (oDir) { - console.log('rmdir %s', oDir); - }); - } - }); - -program.parse(process.argv); -``` - - An `Array` is used for the value of a variadic argument. This applies to `program.args` as well as the argument passed - to your action as demonstrated above. - -## Specify the argument syntax - -```js -#!/usr/bin/env node - -var program = require('../'); - -program - .version('0.0.1') - .arguments(' [env]') - .action(function (cmd, env) { - cmdValue = cmd; - envValue = env; - }); - -program.parse(process.argv); - -if (typeof cmdValue === 'undefined') { - console.error('no command given!'); - process.exit(1); -} -console.log('command:', cmdValue); -console.log('environment:', envValue || "no environment given"); -``` - -## Git-style sub-commands - -```js -// file: ./examples/pm -var program = require('..'); - -program - .version('0.0.1') - .command('install [name]', 'install one or more packages') - .command('search [query]', 'search with optional query') - .command('list', 'list packages installed', {isDefault: true}) - .parse(process.argv); -``` - -When `.command()` is invoked with a description argument, no `.action(callback)` should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools. -The commander will try to search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-command`, like `pm-install`, `pm-search`. - -Options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the option from the generated help output. Specifying `true` for `opts.isDefault` will run the subcommand if no other subcommand is specified. - -If the program is designed to be installed globally, make sure the executables have proper modes, like `755`. - -### `--harmony` - -You can enable `--harmony` option in two ways: -* Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. Note some os version don’t support this pattern. -* Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - An application for pizzas ordering - - Options: - - -h, --help output usage information - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineapple - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -C, --no-cheese You do not want any cheese - -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .outputHelp(cb) - -Output help information without exiting. -Optional callback cb allows post-processing of help text before it is displayed. - -If you want to display help by default (e.g. if no command was provided), you can use something like: - -```js -var program = require('commander'); -var colors = require('colors'); - -program - .version('0.0.1') - .command('getstream [url]', 'get stream URL') - .parse(process.argv); - - if (!process.argv.slice(2).length) { - program.outputHelp(make_red); - } - -function make_red(txt) { - return colors.red(txt); //display the help text in red on the console -} -``` - -## .help(cb) - - Output help information and exit immediately. - Optional callback cb allows post-processing of help text before it is displayed. - -## Examples - -```js -var program = require('commander'); - -program - .version('0.0.1') - .option('-C, --chdir ', 'change the working directory') - .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - .option('-T, --no-tests', 'ignore test hook') - -program - .command('setup [env]') - .description('run setup commands for all envs') - .option("-s, --setup_mode [mode]", "Which setup mode to use") - .action(function(env, options){ - var mode = options.setup_mode || "normal"; - env = env || 'all'; - console.log('setup for %s env(s) with %s mode', env, mode); - }); - -program - .command('exec ') - .alias('ex') - .description('execute the given remote cmd') - .option("-e, --exec_mode ", "Which exec mode to use") - .action(function(cmd, options){ - console.log('exec "%s" using %s mode', cmd, options.exec_mode); - }).on('--help', function() { - console.log(' Examples:'); - console.log(); - console.log(' $ deploy exec sequential'); - console.log(' $ deploy exec async'); - console.log(); - }); - -program - .command('*') - .action(function(env){ - console.log('deploying "%s"', env); - }); - -program.parse(process.argv); -``` - -More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. - -## License - -MIT - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/index.js deleted file mode 100644 index a19c05d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/index.js +++ /dev/null @@ -1,1110 +0,0 @@ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var spawn = require('child_process').spawn; -var readlink = require('graceful-readlink').readlinkSync; -var path = require('path'); -var dirname = path.dirname; -var basename = path.basename; -var fs = require('fs'); - -/** - * Expose the root command. - */ - -exports = module.exports = new Command(); - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description || ''; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function() { - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg) { - return arg == this.short || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this._execs = {}; - this._allowUnknownOption = false; - this._args = []; - this._name = name || ''; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function() { - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd) { - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('teardown [otherDirs...]') - * .description('run teardown commands') - * .action(function(dir, otherDirs) { - * console.log('dir "%s"', dir); - * if (otherDirs) { - * otherDirs.forEach(function (oDir) { - * console.log('dir "%s"', oDir); - * }); - * } - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env) { - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @param {String} [desc] for git-style sub-commands - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name, desc, opts) { - opts = opts || {}; - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - - if (desc) { - cmd.description(desc); - this.executables = true; - this._execs[cmd._name] = true; - if (opts.isDefault) this.defaultExecutable = cmd._name; - } - - cmd._noHelp = !!opts.noHelp; - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - - if (desc) return this; - return cmd; -}; - -/** - * Define argument syntax for the top-level command. - * - * @api public - */ - -Command.prototype.arguments = function (desc) { - return this.parseExpectedArgs(desc.split(/ +/)); -}; - -/** - * Add an implicit `help [cmd]` subcommand - * which invokes `--help` for the given command. - * - * @api private - */ - -Command.prototype.addImplicitHelpCommand = function() { - this.command('help [cmd]', 'display help for [cmd]'); -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args) { - if (!args.length) return; - var self = this; - args.forEach(function(arg) { - var argDetails = { - required: false, - name: '', - variadic: false - }; - - switch (arg[0]) { - case '<': - argDetails.required = true; - argDetails.name = arg.slice(1, -1); - break; - case '[': - argDetails.name = arg.slice(1, -1); - break; - } - - if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') { - argDetails.variadic = true; - argDetails.name = argDetails.name.slice(0, -3); - } - if (argDetails.name) { - self._args.push(argDetails); - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function() { - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn) { - var self = this; - var listener = function(args, unknown) { - // Parse any so-far unknown options - args = args || []; - unknown = unknown || []; - - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - // Leftover arguments need to be pushed back. Fixes issue #56 - if (parsed.args.length) args = parsed.args.concat(args); - - self._args.forEach(function(arg, i) { - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } else if (arg.variadic) { - if (i !== self._args.length - 1) { - self.variadicArgNotLast(arg.name); - } - - args[i] = args.splice(i); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self._args.length) { - args[self._args.length] = self; - } else { - args.push(self); - } - - fn.apply(self, args); - }; - var parent = this.parent || this; - var name = parent === this ? '*' : this._name; - parent.on(name, listener); - if (this._alias) parent.on(this._alias, listener); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to true - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue) { - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if (typeof fn != 'function') { - if (fn instanceof RegExp) { - var regex = fn; - fn = function(val, def) { - var m = regex.exec(val); - return m ? m[0] : def; - } - } - else { - defaultValue = fn; - fn = null; - } - } - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val) { - // coercion - if (null !== val && fn) val = fn(val, undefined === self[name] - ? defaultValue - : self[name]); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Allow unknown options on the command line. - * - * @param {Boolean} arg if `true` or omitted, no error will be thrown - * for unknown options. - * @api public - */ -Command.prototype.allowUnknownOption = function(arg) { - this._allowUnknownOption = arguments.length === 0 || arg; - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv) { - // implicit help - if (this.executables) this.addImplicitHelpCommand(); - - // store raw args - this.rawArgs = argv; - - // guess name - this._name = this._name || basename(argv[1], '.js'); - - // github-style sub-commands with no sub-command - if (this.executables && argv.length < 3 && !this.defaultExecutable) { - // this user needs help - argv.push('--help'); - } - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - var args = this.args = parsed.args; - - var result = this.parseArgs(this.args, parsed.unknown); - - // executable sub-commands - var name = result.args[0]; - if (this._execs[name] && typeof this._execs[name] != "function") { - return this.executeSubCommand(argv, args, parsed.unknown); - } else if (this.defaultExecutable) { - // use the default subcommand - args.unshift(name = this.defaultExecutable); - return this.executeSubCommand(argv, args, parsed.unknown); - } - - return result; -}; - -/** - * Execute a sub-command executable. - * - * @param {Array} argv - * @param {Array} args - * @param {Array} unknown - * @api private - */ - -Command.prototype.executeSubCommand = function(argv, args, unknown) { - args = args.concat(unknown); - - if (!args.length) this.help(); - if ('help' == args[0] && 1 == args.length) this.help(); - - // --help - if ('help' == args[0]) { - args[0] = args[1]; - args[1] = '--help'; - } - - // executable - var f = argv[1]; - // name of the subcommand, link `pm-install` - var bin = basename(f, '.js') + '-' + args[0]; - - - // In case of globally installed, get the base dir where executable - // subcommand file should be located at - var baseDir - , link = readlink(f); - - // when symbolink is relative path - if (link !== f && link.charAt(0) !== '/') { - link = path.join(dirname(f), link) - } - baseDir = dirname(link); - - // prefer local `./` to bin in the $PATH - var localBin = path.join(baseDir, bin); - - // whether bin file is a js script with explicit `.js` extension - var isExplicitJS = false; - if (exists(localBin + '.js')) { - bin = localBin + '.js'; - isExplicitJS = true; - } else if (exists(localBin)) { - bin = localBin; - } - - args = args.slice(1); - - var proc; - if (process.platform !== 'win32') { - if (isExplicitJS) { - args.unshift(localBin); - // add executable arguments to spawn - args = (process.execArgv || []).concat(args); - - proc = spawn('node', args, { stdio: 'inherit', customFds: [0, 1, 2] }); - } else { - proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); - } - } else { - args.unshift(localBin); - proc = spawn(process.execPath, args, { stdio: 'inherit'}); - } - - proc.on('close', process.exit.bind(process)); - proc.on('error', function(err) { - if (err.code == "ENOENT") { - console.error('\n %s(1) does not exist, try --help\n', bin); - } else if (err.code == "EACCES") { - console.error('\n %s(1) not executable. try chmod or run with root\n', bin); - } - process.exit(1); - }); - - // Store the reference to the child process - this.runningCommand = proc; -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * This also normalizes equal sign and splits "--abc=def" into "--abc def". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args) { - var ret = [] - , arg - , lastOpt - , index; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - if (i > 0) { - lastOpt = this.optionFor(args[i-1]); - } - - if (arg === '--') { - // Honor option terminator - ret = ret.concat(args.slice(i)); - break; - } else if (lastOpt && lastOpt.required) { - ret.push(arg); - } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c) { - ret.push('-' + c); - }); - } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { - ret.push(arg.slice(0, index), arg.slice(index + 1)); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown) { - var name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg) { - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv) { - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || ('-' == arg[0] && '-' != arg)) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Return an object containing options as key-value pairs - * - * @return {Object} - * @api public - */ -Command.prototype.opts = function() { - var result = {} - , len = this.options.length; - - for (var i = 0 ; i < len; i++) { - var key = camelcase(this.options[i].name()); - result[key] = key === 'version' ? this._version : this[key]; - } - return result; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name) { - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag) { - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag) { - if (this._allowUnknownOption) return; - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - -/** - * Variadic argument with `name` is not the last argument as required. - * - * @param {String} name - * @api private - */ - -Command.prototype.variadicArgNotLast = function(name) { - console.error(); - console.error(" error: variadic arguments must be last `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags) { - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function() { - process.stdout.write(str + '\n'); - process.exit(0); - }); - return this; -}; - -/** - * Set the description to `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str) { - if (0 === arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set an alias for the command - * - * @param {String} alias - * @return {String|Command} - * @api public - */ - -Command.prototype.alias = function(alias) { - if (0 == arguments.length) return this._alias; - this._alias = alias; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str) { - var args = this._args.map(function(arg) { - return humanReadableArgName(arg); - }); - - var usage = '[options]' - + (this.commands.length ? ' [command]' : '') - + (this._args.length ? ' ' + args.join(' ') : ''); - - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Get the name of the command - * - * @param {String} name - * @return {String|Command} - * @api public - */ - -Command.prototype.name = function() { - return this._name; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function() { - return this.options.reduce(function(max, option) { - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function() { - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option) { - return pad(option.flags, width) + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function() { - if (!this.commands.length) return ''; - - var commands = this.commands.filter(function(cmd) { - return !cmd._noHelp; - }).map(function(cmd) { - var args = cmd._args.map(function(arg) { - return humanReadableArgName(arg); - }).join(' '); - - return [ - cmd._name - + (cmd._alias ? '|' + cmd._alias : '') - + (cmd.options.length ? ' [options]' : '') - + ' ' + args - , cmd.description() - ]; - }); - - var width = commands.reduce(function(max, command) { - return Math.max(max, command[0].length); - }, 0); - - return [ - '' - , ' Commands:' - , '' - , commands.map(function(cmd) { - var desc = cmd[1] ? ' ' + cmd[1] : ''; - return pad(cmd[0], width) + desc; - }).join('\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function() { - var desc = []; - if (this._description) { - desc = [ - ' ' + this._description - , '' - ]; - } - - var cmdName = this._name; - if (this._alias) { - cmdName = cmdName + '|' + this._alias; - } - var usage = [ - '' - ,' Usage: ' + cmdName + ' ' + this.usage() - , '' - ]; - - var cmds = []; - var commandHelp = this.commandHelp(); - if (commandHelp) cmds = [commandHelp]; - - var options = [ - ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ]; - - return usage - .concat(cmds) - .concat(desc) - .concat(options) - .join('\n'); -}; - -/** - * Output help information for this command - * - * @api public - */ - -Command.prototype.outputHelp = function(cb) { - if (!cb) { - cb = function(passthru) { - return passthru; - } - } - process.stdout.write(cb(this.helpInformation())); - this.emit('--help'); -}; - -/** - * Output help information and exit. - * - * @api public - */ - -Command.prototype.help = function(cb) { - this.outputHelp(cb); - process.exit(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word) { - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - cmd.outputHelp(); - process.exit(0); - } - } -} - -/** - * Takes an argument an returns its human readable equivalent for help usage. - * - * @param {Object} arg - * @return {String} - * @api private - */ - -function humanReadableArgName(arg) { - var nameOutput = arg.name + (arg.variadic === true ? '...' : ''); - - return arg.required - ? '<' + nameOutput + '>' - : '[' + nameOutput + ']' -} - -// for versions before node v0.8 when there weren't `fs.existsSync` -function exists(file) { - try { - if (fs.statSync(file).isFile()) { - return true; - } - } catch (e) { - return false; - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/package.json deleted file mode 100644 index 52d3ddd0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/commander/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "commander@^2.8.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/har-validator" - ] - ], - "_from": "commander@>=2.8.1 <3.0.0", - "_id": "commander@2.9.0", - "_inCache": true, - "_installable": true, - "_location": "/commander", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "zhiyelee@gmail.com", - "name": "zhiyelee" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "commander", - "raw": "commander@^2.8.1", - "rawSpec": "^2.8.1", - "scope": null, - "spec": ">=2.8.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/har-validator" - ], - "_resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "_shasum": "9c99094176e12240cb22d6c5146098400fe0f7d4", - "_shrinkwrap": null, - "_spec": "commander@^2.8.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/har-validator", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "bugs": { - "url": "https://github.com/tj/commander.js/issues" - }, - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "description": "the complete solution for node.js command-line programs", - "devDependencies": { - "should": ">= 0.0.1", - "sinon": ">=1.17.1" - }, - "directories": {}, - "dist": { - "shasum": "9c99094176e12240cb22d6c5146098400fe0f7d4", - "tarball": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" - }, - "engines": { - "node": ">= 0.6.x" - }, - "files": [ - "index.js" - ], - "gitHead": "b2aad7a8471d434593a85306aa73777a526e9f75", - "homepage": "https://github.com/tj/commander.js#readme", - "keywords": [ - "command", - "option", - "parser" - ], - "license": "MIT", - "main": "index", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - }, - { - "email": "rkoutnik@gmail.com", - "name": "somekittens" - }, - { - "email": "zhiyelee@gmail.com", - "name": "zhiyelee" - } - ], - "name": "commander", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/tj/commander.js.git" - }, - "scripts": { - "test": "make test" - }, - "version": "2.9.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/.travis.yml deleted file mode 100644 index f1d0f13c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/README.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/README.markdown deleted file mode 100644 index 408f70a1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/README.markdown +++ /dev/null @@ -1,62 +0,0 @@ -concat-map -========== - -Concatenative mapdashery. - -[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) - -[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) - -example -======= - -``` js -var concatMap = require('concat-map'); -var xs = [ 1, 2, 3, 4, 5, 6 ]; -var ys = concatMap(xs, function (x) { - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; -}); -console.dir(ys); -``` - -*** - -``` -[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] -``` - -methods -======= - -``` js -var concatMap = require('concat-map') -``` - -concatMap(xs, fn) ------------------ - -Return an array of concatenated elements by calling `fn(x, i)` for each element -`x` and each index `i` in the array `xs`. - -When `fn(x, i)` returns an array, its result will be concatenated with the -result array. If `fn(x, i)` returns anything else, that value will be pushed -onto the end of the result array. - -install -======= - -With [npm](http://npmjs.org) do: - -``` -npm install concat-map -``` - -license -======= - -MIT - -notes -===== - -This module was written while sitting high above the ground in a tree. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/example/map.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/example/map.js deleted file mode 100644 index 33656217..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/example/map.js +++ /dev/null @@ -1,6 +0,0 @@ -var concatMap = require('../'); -var xs = [ 1, 2, 3, 4, 5, 6 ]; -var ys = concatMap(xs, function (x) { - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; -}); -console.dir(ys); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/index.js deleted file mode 100644 index b29a7812..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/index.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/package.json deleted file mode 100644 index 6340372a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_args": [ - [ - "concat-map@0.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/brace-expansion" - ] - ], - "_from": "concat-map@0.0.1", - "_id": "concat-map@0.0.1", - "_inCache": true, - "_installable": true, - "_location": "/concat-map", - "_npmUser": { - "email": "mail@substack.net", - "name": "substack" - }, - "_npmVersion": "1.3.21", - "_phantomChildren": {}, - "_requested": { - "name": "concat-map", - "raw": "concat-map@0.0.1", - "rawSpec": "0.0.1", - "scope": null, - "spec": "0.0.1", - "type": "version" - }, - "_requiredBy": [ - "/brace-expansion" - ], - "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "_shrinkwrap": null, - "_spec": "concat-map@0.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/brace-expansion", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-concat-map/issues" - }, - "dependencies": {}, - "description": "concatenative mapdashery", - "devDependencies": { - "tape": "~2.4.0" - }, - "directories": { - "example": "example", - "test": "test" - }, - "dist": { - "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", - "tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - }, - "homepage": "https://github.com/substack/node-concat-map", - "keywords": [ - "concat", - "concatMap", - "map", - "functional", - "higher-order" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "concat-map", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-concat-map.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "browsers": { - "chrome": [ - 10, - 22 - ], - "ff": [ - 3.5, - 10, - 15 - ], - "ie": [ - 6, - 7, - 8, - 9 - ], - "opera": [ - 12 - ], - "safari": [ - 5.1 - ] - }, - "files": "test/*.js" - }, - "version": "0.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/test/map.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/test/map.js deleted file mode 100644 index fdbd7022..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/concat-map/test/map.js +++ /dev/null @@ -1,39 +0,0 @@ -var concatMap = require('../'); -var test = require('tape'); - -test('empty or not', function (t) { - var xs = [ 1, 2, 3, 4, 5, 6 ]; - var ixes = []; - var ys = concatMap(xs, function (x, ix) { - ixes.push(ix); - return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; - }); - t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); - t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); - t.end(); -}); - -test('always something', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function (x) { - return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; - }); - t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); - t.end(); -}); - -test('scalars', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function (x) { - return x === 'b' ? [ 'B', 'B', 'B' ] : x; - }); - t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); - t.end(); -}); - -test('undefs', function (t) { - var xs = [ 'a', 'b', 'c', 'd' ]; - var ys = concatMap(xs, function () {}); - t.same(ys, [ undefined, undefined, undefined, undefined ]); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/LICENSE deleted file mode 100644 index d8d7f943..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright Node.js contributors. All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/README.md deleted file mode 100644 index 5a76b414..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# core-util-is - -The `util.is*` functions introduced in Node v0.12. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/float.patch b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/float.patch deleted file mode 100644 index a06d5c05..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/float.patch +++ /dev/null @@ -1,604 +0,0 @@ -diff --git a/lib/util.js b/lib/util.js -index a03e874..9074e8e 100644 ---- a/lib/util.js -+++ b/lib/util.js -@@ -19,430 +19,6 @@ - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - --var formatRegExp = /%[sdj%]/g; --exports.format = function(f) { -- if (!isString(f)) { -- var objects = []; -- for (var i = 0; i < arguments.length; i++) { -- objects.push(inspect(arguments[i])); -- } -- return objects.join(' '); -- } -- -- var i = 1; -- var args = arguments; -- var len = args.length; -- var str = String(f).replace(formatRegExp, function(x) { -- if (x === '%%') return '%'; -- if (i >= len) return x; -- switch (x) { -- case '%s': return String(args[i++]); -- case '%d': return Number(args[i++]); -- case '%j': -- try { -- return JSON.stringify(args[i++]); -- } catch (_) { -- return '[Circular]'; -- } -- default: -- return x; -- } -- }); -- for (var x = args[i]; i < len; x = args[++i]) { -- if (isNull(x) || !isObject(x)) { -- str += ' ' + x; -- } else { -- str += ' ' + inspect(x); -- } -- } -- return str; --}; -- -- --// Mark that a method should not be used. --// Returns a modified function which warns once by default. --// If --no-deprecation is set, then it is a no-op. --exports.deprecate = function(fn, msg) { -- // Allow for deprecating things in the process of starting up. -- if (isUndefined(global.process)) { -- return function() { -- return exports.deprecate(fn, msg).apply(this, arguments); -- }; -- } -- -- if (process.noDeprecation === true) { -- return fn; -- } -- -- var warned = false; -- function deprecated() { -- if (!warned) { -- if (process.throwDeprecation) { -- throw new Error(msg); -- } else if (process.traceDeprecation) { -- console.trace(msg); -- } else { -- console.error(msg); -- } -- warned = true; -- } -- return fn.apply(this, arguments); -- } -- -- return deprecated; --}; -- -- --var debugs = {}; --var debugEnviron; --exports.debuglog = function(set) { -- if (isUndefined(debugEnviron)) -- debugEnviron = process.env.NODE_DEBUG || ''; -- set = set.toUpperCase(); -- if (!debugs[set]) { -- if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { -- var pid = process.pid; -- debugs[set] = function() { -- var msg = exports.format.apply(exports, arguments); -- console.error('%s %d: %s', set, pid, msg); -- }; -- } else { -- debugs[set] = function() {}; -- } -- } -- return debugs[set]; --}; -- -- --/** -- * Echos the value of a value. Trys to print the value out -- * in the best way possible given the different types. -- * -- * @param {Object} obj The object to print out. -- * @param {Object} opts Optional options object that alters the output. -- */ --/* legacy: obj, showHidden, depth, colors*/ --function inspect(obj, opts) { -- // default options -- var ctx = { -- seen: [], -- stylize: stylizeNoColor -- }; -- // legacy... -- if (arguments.length >= 3) ctx.depth = arguments[2]; -- if (arguments.length >= 4) ctx.colors = arguments[3]; -- if (isBoolean(opts)) { -- // legacy... -- ctx.showHidden = opts; -- } else if (opts) { -- // got an "options" object -- exports._extend(ctx, opts); -- } -- // set default options -- if (isUndefined(ctx.showHidden)) ctx.showHidden = false; -- if (isUndefined(ctx.depth)) ctx.depth = 2; -- if (isUndefined(ctx.colors)) ctx.colors = false; -- if (isUndefined(ctx.customInspect)) ctx.customInspect = true; -- if (ctx.colors) ctx.stylize = stylizeWithColor; -- return formatValue(ctx, obj, ctx.depth); --} --exports.inspect = inspect; -- -- --// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics --inspect.colors = { -- 'bold' : [1, 22], -- 'italic' : [3, 23], -- 'underline' : [4, 24], -- 'inverse' : [7, 27], -- 'white' : [37, 39], -- 'grey' : [90, 39], -- 'black' : [30, 39], -- 'blue' : [34, 39], -- 'cyan' : [36, 39], -- 'green' : [32, 39], -- 'magenta' : [35, 39], -- 'red' : [31, 39], -- 'yellow' : [33, 39] --}; -- --// Don't use 'blue' not visible on cmd.exe --inspect.styles = { -- 'special': 'cyan', -- 'number': 'yellow', -- 'boolean': 'yellow', -- 'undefined': 'grey', -- 'null': 'bold', -- 'string': 'green', -- 'date': 'magenta', -- // "name": intentionally not styling -- 'regexp': 'red' --}; -- -- --function stylizeWithColor(str, styleType) { -- var style = inspect.styles[styleType]; -- -- if (style) { -- return '\u001b[' + inspect.colors[style][0] + 'm' + str + -- '\u001b[' + inspect.colors[style][1] + 'm'; -- } else { -- return str; -- } --} -- -- --function stylizeNoColor(str, styleType) { -- return str; --} -- -- --function arrayToHash(array) { -- var hash = {}; -- -- array.forEach(function(val, idx) { -- hash[val] = true; -- }); -- -- return hash; --} -- -- --function formatValue(ctx, value, recurseTimes) { -- // Provide a hook for user-specified inspect functions. -- // Check that value is an object with an inspect function on it -- if (ctx.customInspect && -- value && -- isFunction(value.inspect) && -- // Filter out the util module, it's inspect function is special -- value.inspect !== exports.inspect && -- // Also filter out any prototype objects using the circular check. -- !(value.constructor && value.constructor.prototype === value)) { -- var ret = value.inspect(recurseTimes, ctx); -- if (!isString(ret)) { -- ret = formatValue(ctx, ret, recurseTimes); -- } -- return ret; -- } -- -- // Primitive types cannot have properties -- var primitive = formatPrimitive(ctx, value); -- if (primitive) { -- return primitive; -- } -- -- // Look up the keys of the object. -- var keys = Object.keys(value); -- var visibleKeys = arrayToHash(keys); -- -- if (ctx.showHidden) { -- keys = Object.getOwnPropertyNames(value); -- } -- -- // Some type of object without properties can be shortcutted. -- if (keys.length === 0) { -- if (isFunction(value)) { -- var name = value.name ? ': ' + value.name : ''; -- return ctx.stylize('[Function' + name + ']', 'special'); -- } -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } -- if (isDate(value)) { -- return ctx.stylize(Date.prototype.toString.call(value), 'date'); -- } -- if (isError(value)) { -- return formatError(value); -- } -- } -- -- var base = '', array = false, braces = ['{', '}']; -- -- // Make Array say that they are Array -- if (isArray(value)) { -- array = true; -- braces = ['[', ']']; -- } -- -- // Make functions say that they are functions -- if (isFunction(value)) { -- var n = value.name ? ': ' + value.name : ''; -- base = ' [Function' + n + ']'; -- } -- -- // Make RegExps say that they are RegExps -- if (isRegExp(value)) { -- base = ' ' + RegExp.prototype.toString.call(value); -- } -- -- // Make dates with properties first say the date -- if (isDate(value)) { -- base = ' ' + Date.prototype.toUTCString.call(value); -- } -- -- // Make error with message first say the error -- if (isError(value)) { -- base = ' ' + formatError(value); -- } -- -- if (keys.length === 0 && (!array || value.length == 0)) { -- return braces[0] + base + braces[1]; -- } -- -- if (recurseTimes < 0) { -- if (isRegExp(value)) { -- return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); -- } else { -- return ctx.stylize('[Object]', 'special'); -- } -- } -- -- ctx.seen.push(value); -- -- var output; -- if (array) { -- output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); -- } else { -- output = keys.map(function(key) { -- return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); -- }); -- } -- -- ctx.seen.pop(); -- -- return reduceToSingleString(output, base, braces); --} -- -- --function formatPrimitive(ctx, value) { -- if (isUndefined(value)) -- return ctx.stylize('undefined', 'undefined'); -- if (isString(value)) { -- var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') -- .replace(/'/g, "\\'") -- .replace(/\\"/g, '"') + '\''; -- return ctx.stylize(simple, 'string'); -- } -- if (isNumber(value)) { -- // Format -0 as '-0'. Strict equality won't distinguish 0 from -0, -- // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 . -- if (value === 0 && 1 / value < 0) -- return ctx.stylize('-0', 'number'); -- return ctx.stylize('' + value, 'number'); -- } -- if (isBoolean(value)) -- return ctx.stylize('' + value, 'boolean'); -- // For some reason typeof null is "object", so special case here. -- if (isNull(value)) -- return ctx.stylize('null', 'null'); --} -- -- --function formatError(value) { -- return '[' + Error.prototype.toString.call(value) + ']'; --} -- -- --function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { -- var output = []; -- for (var i = 0, l = value.length; i < l; ++i) { -- if (hasOwnProperty(value, String(i))) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- String(i), true)); -- } else { -- output.push(''); -- } -- } -- keys.forEach(function(key) { -- if (!key.match(/^\d+$/)) { -- output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, -- key, true)); -- } -- }); -- return output; --} -- -- --function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { -- var name, str, desc; -- desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; -- if (desc.get) { -- if (desc.set) { -- str = ctx.stylize('[Getter/Setter]', 'special'); -- } else { -- str = ctx.stylize('[Getter]', 'special'); -- } -- } else { -- if (desc.set) { -- str = ctx.stylize('[Setter]', 'special'); -- } -- } -- if (!hasOwnProperty(visibleKeys, key)) { -- name = '[' + key + ']'; -- } -- if (!str) { -- if (ctx.seen.indexOf(desc.value) < 0) { -- if (isNull(recurseTimes)) { -- str = formatValue(ctx, desc.value, null); -- } else { -- str = formatValue(ctx, desc.value, recurseTimes - 1); -- } -- if (str.indexOf('\n') > -1) { -- if (array) { -- str = str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n').substr(2); -- } else { -- str = '\n' + str.split('\n').map(function(line) { -- return ' ' + line; -- }).join('\n'); -- } -- } -- } else { -- str = ctx.stylize('[Circular]', 'special'); -- } -- } -- if (isUndefined(name)) { -- if (array && key.match(/^\d+$/)) { -- return str; -- } -- name = JSON.stringify('' + key); -- if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { -- name = name.substr(1, name.length - 2); -- name = ctx.stylize(name, 'name'); -- } else { -- name = name.replace(/'/g, "\\'") -- .replace(/\\"/g, '"') -- .replace(/(^"|"$)/g, "'"); -- name = ctx.stylize(name, 'string'); -- } -- } -- -- return name + ': ' + str; --} -- -- --function reduceToSingleString(output, base, braces) { -- var numLinesEst = 0; -- var length = output.reduce(function(prev, cur) { -- numLinesEst++; -- if (cur.indexOf('\n') >= 0) numLinesEst++; -- return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; -- }, 0); -- -- if (length > 60) { -- return braces[0] + -- (base === '' ? '' : base + '\n ') + -- ' ' + -- output.join(',\n ') + -- ' ' + -- braces[1]; -- } -- -- return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; --} -- -- - // NOTE: These type checking functions intentionally don't use `instanceof` - // because it is fragile and can be easily faked with `Object.create()`. - function isArray(ar) { -@@ -522,166 +98,10 @@ function isPrimitive(arg) { - exports.isPrimitive = isPrimitive; - - function isBuffer(arg) { -- return arg instanceof Buffer; -+ return Buffer.isBuffer(arg); - } - exports.isBuffer = isBuffer; - - function objectToString(o) { - return Object.prototype.toString.call(o); --} -- -- --function pad(n) { -- return n < 10 ? '0' + n.toString(10) : n.toString(10); --} -- -- --var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', -- 'Oct', 'Nov', 'Dec']; -- --// 26 Feb 16:19:34 --function timestamp() { -- var d = new Date(); -- var time = [pad(d.getHours()), -- pad(d.getMinutes()), -- pad(d.getSeconds())].join(':'); -- return [d.getDate(), months[d.getMonth()], time].join(' '); --} -- -- --// log is just a thin wrapper to console.log that prepends a timestamp --exports.log = function() { -- console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); --}; -- -- --/** -- * Inherit the prototype methods from one constructor into another. -- * -- * The Function.prototype.inherits from lang.js rewritten as a standalone -- * function (not on Function.prototype). NOTE: If this file is to be loaded -- * during bootstrapping this function needs to be rewritten using some native -- * functions as prototype setup using normal JavaScript does not work as -- * expected during bootstrapping (see mirror.js in r114903). -- * -- * @param {function} ctor Constructor function which needs to inherit the -- * prototype. -- * @param {function} superCtor Constructor function to inherit prototype from. -- */ --exports.inherits = function(ctor, superCtor) { -- ctor.super_ = superCtor; -- ctor.prototype = Object.create(superCtor.prototype, { -- constructor: { -- value: ctor, -- enumerable: false, -- writable: true, -- configurable: true -- } -- }); --}; -- --exports._extend = function(origin, add) { -- // Don't do anything if add isn't an object -- if (!add || !isObject(add)) return origin; -- -- var keys = Object.keys(add); -- var i = keys.length; -- while (i--) { -- origin[keys[i]] = add[keys[i]]; -- } -- return origin; --}; -- --function hasOwnProperty(obj, prop) { -- return Object.prototype.hasOwnProperty.call(obj, prop); --} -- -- --// Deprecated old stuff. -- --exports.p = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- console.error(exports.inspect(arguments[i])); -- } --}, 'util.p: Use console.error() instead'); -- -- --exports.exec = exports.deprecate(function() { -- return require('child_process').exec.apply(this, arguments); --}, 'util.exec is now called `child_process.exec`.'); -- -- --exports.print = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(String(arguments[i])); -- } --}, 'util.print: Use console.log instead'); -- -- --exports.puts = exports.deprecate(function() { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stdout.write(arguments[i] + '\n'); -- } --}, 'util.puts: Use console.log instead'); -- -- --exports.debug = exports.deprecate(function(x) { -- process.stderr.write('DEBUG: ' + x + '\n'); --}, 'util.debug: Use console.error instead'); -- -- --exports.error = exports.deprecate(function(x) { -- for (var i = 0, len = arguments.length; i < len; ++i) { -- process.stderr.write(arguments[i] + '\n'); -- } --}, 'util.error: Use console.error instead'); -- -- --exports.pump = exports.deprecate(function(readStream, writeStream, callback) { -- var callbackCalled = false; -- -- function call(a, b, c) { -- if (callback && !callbackCalled) { -- callback(a, b, c); -- callbackCalled = true; -- } -- } -- -- readStream.addListener('data', function(chunk) { -- if (writeStream.write(chunk) === false) readStream.pause(); -- }); -- -- writeStream.addListener('drain', function() { -- readStream.resume(); -- }); -- -- readStream.addListener('end', function() { -- writeStream.end(); -- }); -- -- readStream.addListener('close', function() { -- call(); -- }); -- -- readStream.addListener('error', function(err) { -- writeStream.end(); -- call(err); -- }); -- -- writeStream.addListener('error', function(err) { -- readStream.destroy(); -- call(err); -- }); --}, 'util.pump(): Use readableStream.pipe() instead'); -- -- --var uv; --exports._errnoException = function(err, syscall) { -- if (isUndefined(uv)) uv = process.binding('uv'); -- var errname = uv.errname(err); -- var e = new Error(syscall + ' ' + errname); -- e.code = errname; -- e.errno = errname; -- e.syscall = syscall; -- return e; --}; -+} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/lib/util.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/lib/util.js deleted file mode 100644 index ff4c851c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/lib/util.js +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/package.json deleted file mode 100644 index 49221387..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "core-util-is@~1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/readable-stream" - ] - ], - "_from": "core-util-is@>=1.0.0 <1.1.0", - "_id": "core-util-is@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/core-util-is", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "3.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "core-util-is", - "raw": "core-util-is@~1.0.0", - "rawSpec": "~1.0.0", - "scope": null, - "spec": ">=1.0.0 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/bl/readable-stream", - "/duplexify/readable-stream", - "/glob-stream/readable-stream", - "/gulp-remote-src/readable-stream", - "/gulp-symdest/readable-stream", - "/gulp-vinyl-zip/readable-stream", - "/inline-process-browser/readable-stream", - "/merge-stream/readable-stream", - "/readable-stream", - "/through2/readable-stream", - "/vinyl-fs/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "_shrinkwrap": null, - "_spec": "core-util-is@~1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/readable-stream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/core-util-is/issues" - }, - "dependencies": {}, - "description": "The `util.is*` functions introduced in Node v0.12.", - "devDependencies": { - "tap": "^2.3.0" - }, - "directories": {}, - "dist": { - "shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7", - "tarball": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "gitHead": "a177da234df5638b363ddc15fa324619a38577c8", - "homepage": "https://github.com/isaacs/core-util-is#readme", - "keywords": [ - "util", - "isBuffer", - "isArray", - "isNumber", - "isString", - "isRegExp", - "isThis", - "isThat", - "polyfill" - ], - "license": "MIT", - "main": "lib/util.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "core-util-is", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/core-util-is.git" - }, - "scripts": { - "test": "tap test.js" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/test.js deleted file mode 100644 index 1a490c65..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/core-util-is/test.js +++ /dev/null @@ -1,68 +0,0 @@ -var assert = require('tap'); - -var t = require('./lib/util'); - -assert.equal(t.isArray([]), true); -assert.equal(t.isArray({}), false); - -assert.equal(t.isBoolean(null), false); -assert.equal(t.isBoolean(true), true); -assert.equal(t.isBoolean(false), true); - -assert.equal(t.isNull(null), true); -assert.equal(t.isNull(undefined), false); -assert.equal(t.isNull(false), false); -assert.equal(t.isNull(), false); - -assert.equal(t.isNullOrUndefined(null), true); -assert.equal(t.isNullOrUndefined(undefined), true); -assert.equal(t.isNullOrUndefined(false), false); -assert.equal(t.isNullOrUndefined(), true); - -assert.equal(t.isNumber(null), false); -assert.equal(t.isNumber('1'), false); -assert.equal(t.isNumber(1), true); - -assert.equal(t.isString(null), false); -assert.equal(t.isString('1'), true); -assert.equal(t.isString(1), false); - -assert.equal(t.isSymbol(null), false); -assert.equal(t.isSymbol('1'), false); -assert.equal(t.isSymbol(1), false); -assert.equal(t.isSymbol(Symbol()), true); - -assert.equal(t.isUndefined(null), false); -assert.equal(t.isUndefined(undefined), true); -assert.equal(t.isUndefined(false), false); -assert.equal(t.isUndefined(), true); - -assert.equal(t.isRegExp(null), false); -assert.equal(t.isRegExp('1'), false); -assert.equal(t.isRegExp(new RegExp()), true); - -assert.equal(t.isObject({}), true); -assert.equal(t.isObject([]), true); -assert.equal(t.isObject(new RegExp()), true); -assert.equal(t.isObject(new Date()), true); - -assert.equal(t.isDate(null), false); -assert.equal(t.isDate('1'), false); -assert.equal(t.isDate(new Date()), true); - -assert.equal(t.isError(null), false); -assert.equal(t.isError({ err: true }), false); -assert.equal(t.isError(new Error()), true); - -assert.equal(t.isFunction(null), false); -assert.equal(t.isFunction({ }), false); -assert.equal(t.isFunction(function() {}), true); - -assert.equal(t.isPrimitive(null), true); -assert.equal(t.isPrimitive(''), true); -assert.equal(t.isPrimitive(0), true); -assert.equal(t.isPrimitive(new Date()), false); - -assert.equal(t.isBuffer(null), false); -assert.equal(t.isBuffer({}), false); -assert.equal(t.isBuffer(new Buffer(0)), true); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.npmignore deleted file mode 100644 index b3bb5176..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.travis.yml deleted file mode 100755 index 4d826925..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js - -node_js: - - 0.10 - - 4.0 - -sudo: false - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/LICENSE deleted file mode 100755 index cda44736..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014, Eran Hammer and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hueniverse/cryptiles/graphs/contributors diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/README.md deleted file mode 100644 index 40083050..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/README.md +++ /dev/null @@ -1,16 +0,0 @@ -cryptiles -========= - -General purpose crypto utilities - -[![Build Status](https://secure.travis-ci.org/hapijs/cryptiles.png)](http://travis-ci.org/hapijs/cryptiles) - -Lead Maintainer - [C J Silverio](https://github.com/ceejbot) - -## Methods - -### `randomString( size)` -Returns a cryptographically strong pseudo-random data string. Takes a size argument for the length of the string. - -### `fixedTimeComparison( a, b)` -Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match). Returns `true` if the strings match, `false` if they differ. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/lib/index.js deleted file mode 100755 index f385870e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/lib/index.js +++ /dev/null @@ -1,68 +0,0 @@ -// Load modules - -var Crypto = require('crypto'); -var Boom = require('boom'); - - -// Declare internals - -var internals = {}; - - -// Generate a cryptographically strong pseudo-random data - -exports.randomString = function (size) { - - var buffer = exports.randomBits((size + 1) * 6); - if (buffer instanceof Error) { - return buffer; - } - - var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/\=/g, ''); - return string.slice(0, size); -}; - - -exports.randomBits = function (bits) { - - if (!bits || - bits < 0) { - - return Boom.internal('Invalid random bits count'); - } - - var bytes = Math.ceil(bits / 8); - try { - return Crypto.randomBytes(bytes); - } - catch (err) { - return Boom.internal('Failed generating random bits: ' + err.message); - } -}; - - -// Compare two strings using fixed time algorithm (to prevent time-based analysis of MAC digest match) - -exports.fixedTimeComparison = function (a, b) { - - if (typeof a !== 'string' || - typeof b !== 'string') { - - return false; - } - - var mismatch = (a.length === b.length ? 0 : 1); - if (mismatch) { - b = a; - } - - for (var i = 0, il = a.length; i < il; ++i) { - var ac = a.charCodeAt(i); - var bc = b.charCodeAt(i); - mismatch |= (ac ^ bc); - } - - return (mismatch === 0); -}; - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/package.json deleted file mode 100644 index 44f3d59b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "cryptiles@2.x.x", - "/Users/sid/Desktop/code/RustyCode/node_modules/hawk" - ] - ], - "_from": "cryptiles@>=2.0.0 <3.0.0", - "_id": "cryptiles@2.0.5", - "_inCache": true, - "_installable": true, - "_location": "/cryptiles", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "eran@hammer.io", - "name": "hueniverse" - }, - "_npmVersion": "2.14.2", - "_phantomChildren": {}, - "_requested": { - "name": "cryptiles", - "raw": "cryptiles@2.x.x", - "rawSpec": "2.x.x", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/hawk" - ], - "_resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "_shasum": "3bdfecdc608147c1c67202fa291e7dca59eaa3b8", - "_shrinkwrap": null, - "_spec": "cryptiles@2.x.x", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/hawk", - "bugs": { - "url": "https://github.com/hapijs/cryptiles/issues" - }, - "dependencies": { - "boom": "2.x.x" - }, - "description": "General purpose crypto utilities", - "devDependencies": { - "code": "1.x.x", - "lab": "5.x.x" - }, - "directories": {}, - "dist": { - "shasum": "3bdfecdc608147c1c67202fa291e7dca59eaa3b8", - "tarball": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "engines": { - "node": ">=0.10.40" - }, - "gitHead": "9bc5a852f01cd51e615814e1cb255fe2df810649", - "homepage": "https://github.com/hapijs/cryptiles#readme", - "keywords": [ - "cryptography", - "security", - "utilites" - ], - "license": "BSD-3-Clause", - "main": "lib/index.js", - "maintainers": [ - { - "email": "eran@hueniverse.com", - "name": "hueniverse" - }, - { - "email": "ceejceej@gmail.com", - "name": "ceejbot" - } - ], - "name": "cryptiles", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/hapijs/cryptiles.git" - }, - "scripts": { - "test": "lab -a code -t 100 -L", - "test-cov-html": "lab -a code -r html -o coverage.html" - }, - "version": "2.0.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/test/index.js deleted file mode 100755 index 170393f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/cryptiles/test/index.js +++ /dev/null @@ -1,102 +0,0 @@ -// Load modules - -var Code = require('code'); -var Cryptiles = require('..'); -var Lab = require('lab'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var describe = lab.describe; -var it = lab.it; -var expect = Code.expect; - - -describe('randomString()', function () { - - it('should generate the right length string', function (done) { - - for (var i = 1; i <= 1000; ++i) { - expect(Cryptiles.randomString(i).length).to.equal(i); - } - - done(); - }); - - it('returns an error on invalid bits size', function (done) { - - expect(Cryptiles.randomString(99999999999999999999).message).to.match(/Failed generating random bits/); - done(); - }); -}); - -describe('randomBits()', function () { - - it('returns an error on invalid input', function (done) { - - expect(Cryptiles.randomBits(0).message).to.equal('Invalid random bits count'); - done(); - }); -}); - -describe('fixedTimeComparison()', function () { - - var a = Cryptiles.randomString(50000); - var b = Cryptiles.randomString(150000); - - it('should take the same amount of time comparing different string sizes', function (done) { - - var now = Date.now(); - Cryptiles.fixedTimeComparison(b, a); - var t1 = Date.now() - now; - - now = Date.now(); - Cryptiles.fixedTimeComparison(b, b); - var t2 = Date.now() - now; - - expect(t2 - t1).to.be.within(-20, 20); - done(); - }); - - it('should return true for equal strings', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a)).to.equal(true); - done(); - }); - - it('should return false for different strings (size, a < b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a, a + 'x')).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a > b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a)).to.equal(false); - done(); - }); - - it('should return false for different strings (size, a = b)', function (done) { - - expect(Cryptiles.fixedTimeComparison(a + 'x', a + 'y')).to.equal(false); - done(); - }); - - it('should return false when not a string', function (done) { - - expect(Cryptiles.fixedTimeComparison('x', null)).to.equal(false); - done(); - }); - - it('should return false when not a string (left)', function (done) { - - expect(Cryptiles.fixedTimeComparison(null, 'x')).to.equal(false); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/.npmignore deleted file mode 100644 index dc6d3b24..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/.npmignore +++ /dev/null @@ -1 +0,0 @@ -tst/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/CHANGELOG b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/CHANGELOG deleted file mode 100644 index 426da9ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/CHANGELOG +++ /dev/null @@ -1,78 +0,0 @@ -This contains tickets fixed in each version release in reverse chronological -order. There is one ticket per line. Each commits message has the tickets fixed -in it. The commit message also has the corresponding github issue. i.e. CTYPE-42 -would be issue 42. Each issue can be found at: -https://github.com/rmustacc/node-ctype/issues/%d. - -v0.5.3 -CTYPE-50 Release 0.5.3 -Contributed by Nick Schonning: -CTYPE-49 Add repository section to package.json -Contributed by Jonathan Ong: -CTYPE-48 Create .npmignore - -v0.5.2 -CTYPE-46 Release 0.5.2 -CTYPE-45 error in setEndian logic - -v0.5.1 -CTYPE-44 Release 0.5.1 -Contributed by Terin Stock: -CTYPE-41 CTypeParser.writeStruct should return its offset -Contributed by Terin Stock: -CTYPE-42 int64_t returns wrong size - -v0.5.0 -CTYPE-40 Release 0.5.0 -CTYPE-39 want > 0.6 engine support - -v0.4.0 -CTYPE-37 Release v0.4.0 -CTYPE-6 want additional entry point for write -CTYPE-20 Add 64-bit int support into core parser -CTYPE-31 Fix bounds errors node/2129 -CTYPE-33 Update copyright holders -CTYPE-34 ctf.js confuses sign bit. -CTYPE-35 Make the README more useful for getting started -CTYPE-36 want manual page on ctio functions - -v0.3.1 -CTYPE-29 Release 0.3.1 -CTYPE-28 Want v0.6 npm support - -v0.3.0 -CTYPE-27 Release v0.3.0 -CTYPE-26 Want alternate default char behavior - -v0.2.1 -CTYPE-25 Release v0.2.1 -CTYPE-24 Writing structs is busted - -v0.2.0: -CTYPE-23 Release v0.2.0 -CTYPE-21 Add support for CTF JSON data -CTYPE-22 Add Javascriptlint profile -CTYPE-15 Pull in ctio updates from node/master - -v0.1.0: -CTYPE-18 Bump version to v0.1.0 -CTYPE-17 Fix nested structures -CTYPE-16 Remove extraneous logging -CTYPE-14 toAbs64 and toApprox64 are not exported - -v0.0.3: -CTYPE-12 Bump version to v0.0.3 -CTYPE-11 fix typo in wuint64 -CTYPE-10 Integrate jsstyle - -v0.0.2: -CTYPE-8 dump npm version to v0.0.2 -CTYPE-9 want changelog -CTYPE-7 fix typo in detypes. - -v0.0.1: -CTYPE-5 Missing from NPM registry -CTYPE-4 int16_t calls wrong read function -CTYPE-3 API example types are missing quotes as strings -CTYPE-2 doc missing 64-bit functions -CTYPE-1 Need license diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/LICENSE deleted file mode 100644 index 22ced3e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The following license applies to all files unless the file is specified below. -Each file specified below has its license information embedded in it: - -tools/jsstyle - -Copyright 2011, Robert Mustacchi. All rights reserved. -Copyright 2011, Joyent, Inc. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README deleted file mode 100644 index 4efd7ee5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README +++ /dev/null @@ -1,82 +0,0 @@ -Node-CType is a way to read and write binary data in structured and easy to use -format. Its name comes from the C header file. - -To get started, simply clone the repository or use npm to install it. Once it is -there, simply require it. - -git clone git://github.com/rmustacc/node-ctype -npm install ctype -var mod_ctype = require('ctype') - - -There are two APIs that you can use, depending on what abstraction you'd like. -The low level API let's you read and write individual integers and floats from -buffers. The higher level API let's you read and write structures of these. To -illustrate this, let's looks look at how we would read and write a binary -encoded x,y point. - -In C we would define this structure as follows: - -typedef struct point { - uint16_t p_x; - uint16_t p_y; -} point_t; - -To read a binary encoded point from a Buffer, we first need to create a CType -parser (where we specify the endian and other options) and add the typedef. - -var parser = new mod_ctype.Parser({ endian: 'big' }); -parser.typedef('point_t', [ - { x: { type: 'uint16_t' } }, - { y: { type: 'uint16_t' } } -]); - -From here, given a buffer buf and an offset into it, we can read a point. - -var out = parser.readData([ { point: { type: 'point_t' } } ], buffer, 0); -console.log(out); -{ point: { x: 23, y: 42 } } - -Another way to get the same information would be to use the low level methods. -Note that these require you to manually deal with the offset. Here's how we'd -get the same values of x and y from the buffer. - -var x = mod_ctype.ruint16(buf, 'big', 0); -var y = mod_ctype.ruint16(buf, 'big', 2); -console.log(x + ', ' + y); -23, 42 - -The true power of this API comes from the ability to define and nest typedefs, -just as you would in C. By default, the following types are defined by default. -Note that they return a Number, unless indicated otherwise. - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (either returns a buffer with that character or a uint8_t) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - - -ctf2json integration: - -Node-CType supports consuming the output of ctf2json. Once you read in a JSON file, -all you have to do to add all the definitions it contains is: - -var data, parser; -data = JSON.parse(parsedJSONData); -parser = mod_ctype.parseCTF(data, { endian: 'big' }); - -For more documentation, see the file README.old. Full documentation is in the -process of being rewritten as a series of manual pages which will be available -in the repository and online for viewing. - -To read the ctio manual page simple run, from the root of the workspace: - -man -Mman -s 3ctype ctio diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README.old b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README.old deleted file mode 100644 index 9326b725..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/README.old +++ /dev/null @@ -1,298 +0,0 @@ -This library provides a way to read and write binary data. - -Node CType is a way to read and write binary data in structured and easy to use -formats. It's name comes from the header file, though it does not share as much -with it as it perhaps should. - -There are two levels of the API. One is the raw API which everything is built on -top of, while the other provides a much nicer abstraction and is built entirely -by using the lower level API. The hope is that the low level API is both clear -and useful. The low level API gets it's names from stdint.h (a rather -appropriate source). The lower level API is presented at the end of this -document. - -Standard CType API - -The CType interface is presented as a parser object that controls the -endianness combined with a series of methods to change that value, parse and -write out buffers, and a way to provide typedefs. Standard Types - -The CType parser supports the following basic types which return Numbers except -as indicated: - - * int8_t - * int16_t - * int32_t - * int64_t (returns an array where val[0] << 32 + val[1] would be the value) - * uint8_t - * uint16_t - * uint32_t - * uint64_t (returns an array where val[0] << 32 + val[1] would be the value) - * float - * double - * char (returns a buffer with just that single character) - * char[] (returns an object with the buffer and the number of characters read which is either the total amount requested or until the first 0) - -Specifying Structs - -The CType parser also supports the notion of structs. A struct is an array of -JSON objects that defines an order of keys which have types and values. One -would build a struct to represent a point (x,y) as follows: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -] - -When this is passed into the read routine, it would read the first two bytes -(as defined by int16_t) to determine the Number to use for X, and then it would -read the next two bytes to determine the value of Y. When read this could -return something like: - -{ - x: 42, - y: -23 -} - -When someone wants to write values, we use the same format as above, but with -additional value field: - -[ - { x: { type: 'int16_t', value: 42 }}, - { y: { type: 'int16_t', value: -23 }} -] - -Now, the structure above may be optionally annotated with offsets. This tells -us to rather than read continuously we should read the given value at the -specified offset. If an offset is provided, it is is effectively the equivalent -of lseek(offset, SEEK_SET). Thus, subsequent values will be read from that -offset and incremented by the appropriate value. As an example: - -[ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t', offset: 20 }}, - { z: { type: 'int16_t' }} -] - -We would read x from the first starting offset given to us, for the sake of -example, let's assume that's 0. After reading x, the next offset to read from -would be 2; however, y specifies an offset, thus we jump directly to that -offset and read y from byte 20. We would then read z from byte 22. - -The same offsets may be used when writing values. - -Typedef - -The basic set of types while covers the basics, is somewhat limiting. To make -this richer, there is functionality to typedef something like in C. One can use -typedef to add a new name to an existing type or to define a name to refer to a -struct. Thus the following are all examples of a typedef: - -typedef('size_t', 'uint32_t'); -typedef('ssize_t', 'int32_t'); -typedef('point_t', [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} -]); - -Once something has been typedef'd it can be used in any of the definitions -previously shown. - -One cannot remove a typedef once created, this is analogous to C. - -The set of defined types can be printed with lstypes. The format of this output -is subject to change, but likely will look something like: - -> lstypes(); -{ - size_t: 'uint32_t', - ssize_t: 'int32_t', - point_t: [ - { x: { type: 'int16_t' }}, - { y: { type: 'int16_t' }} - ] -} - -Specifying arrays - -Arrays can be specified by appending []s to a type. Arrays must have the size -specified. The size must be specified and it can be done in one of two ways: - - * An explicit non-zero integer size - * A name of a previously declared variable in the struct whose value is a - number. - -Note, that when using the name of a variable, it should be the string name for -the key. This is only valid inside structs and the value must be declared -before the value with the array. The following are examples: - -[ - { ip_addr4: { type: 'uint8_t[4]' }}, - { len: { type: 'uint32_t' }}, - { data: { type: 'uint8_t[len]' }} -] - -Arrays are permitted in typedefs; however, they must have a declared integer -size. The following are examples of valid and invalid arrays: - -typedef('path', 'char[1024]'); /* Good */ -typedef('path', 'char[len]'); /* Bad! */ - -64 bit values: - -Unfortunately Javascript represents values with a double, so you lose precision -and the ability to represent Integers roughly beyond 2^53. To alleviate this, I -propose the following for returning 64 bit integers when read: - -value[2]: Each entry is a 32 bit number which can be reconstructed to the -original by the following formula: - -value[0] << 32 + value[1] (Note this will not work in Javascript) - -CTF JSON data: - -node-ctype can also handle JSON data that mathces the format described in the -documentation of the tool ctf2json. Given the JSON data which specifies type -information, it will transform that into a parser that understands all of the -types defined inside of it. This is useful for more complicated structures that -have a lot of typedefs. - -Interface overview - -The following is the header-file like interface to the parser object: - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -function CTypeParser(conf); - -/* - * Parses the CTF JSON data and creates a parser that understands all of those - * types. - * - * data Parsed JSON data that maches that CTF JSON - * specification. - * - * conf The configuration object to create a new CTypeParser - * from. - */ -CTypeParser parseCTF(data, conf); - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -Object CTypeParser.readData(, buffer, offset); - -/* - * This is the second half of what we were born to do, write out the data - * itself. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - */ -void CTypeParser.writeData(, buffer, offset); - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -void CTypeParser.prototype.typedef(name, value); - -Object CTypeParser.prototype.lstypes(); - -/* - * Get the endian value for the current parser - */ -String CTypeParser.prototype.getEndian(); - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -void CTypeParser.protoype.setEndian(String); - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -Number function toAbs64(val) - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -Number function toApprox64(val) - -Low Level API - -The following function are provided at the low level: - -Read unsigned integers from a buffer: -Number ruint8(buffer, endian, offset); -Number ruint16(buffer, endian, offset); -Number ruint32(buffer, endian, offset); -Number[] ruint64(buffer, endian, offset); - -Read signed integers from a buffer: -Number rsint8(buffer, endian, offset); -Number rsint16(buffer, endian, offset); -Number rsint32(buffer, endian, offset); -Number[] rsint64(buffer, endian, offset); - -Read floating point numbers from a buffer: -Number rfloat(buffer, endian, offset); /* IEEE-754 Single precision */ -Number rdouble(buffer, endian, offset); /* IEEE-754 Double precision */ - -Write unsigned integers to a buffer: -void wuint8(Number, endian, buffer, offset); -void wuint16(Number, endian, buffer, offset); -void wuint32(Number, endian, buffer, offset); -void wuint64(Number[], endian, buffer, offset); - -Write signed integers from a buffer: -void wsint8(Number, endian, buffer, offset); -void wsint16(Number, endian, buffer, offset); -void wsint32(Number, endian, buffer, offset); -void wsint64(Number[], endian, buffer offset); - -Write floating point numbers from a buffer: -void wfloat(Number, buffer, endian, offset); /* IEEE-754 Single precision */ -void wdouble(Number, buffer, endian, offset); /* IEEE-754 Double precision */ - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctf.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctf.js deleted file mode 100644 index 66d5f735..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctf.js +++ /dev/null @@ -1,245 +0,0 @@ -/* - * ctf.js - * - * Understand and parse all of the different JSON formats of CTF data and - * translate that into a series of node-ctype friendly pieces. The reason for - * the abstraction is to handle different changes in the file format. - * - * We have to be careful here that we don't end up using a name that is already - * a built in type. - */ -var mod_assert = require('assert'); -var ASSERT = mod_assert.ok; - -var ctf_versions = [ '1.0' ]; -var ctf_entries = [ 'integer', 'float', 'typedef', 'struct' ]; -var ctf_deftypes = [ 'int8_t', 'uint8_t', 'int16_t', 'uint16_t', 'int32_t', - 'uint32_t', 'float', 'double' ]; - -function ctfParseInteger(entry, ctype) -{ - var name, sign, len, type; - - name = entry['name']; - if (!('signed' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'signed value')); - - - if (!('length' in entry['integer'])) - throw (new Error('Malformed CTF JSON: integer missing ' + - 'length value')); - - sign = entry['integer']['signed']; - len = entry['integer']['length']; - type = null; - - if (sign && len == 1) - type = 'int8_t'; - else if (len == 1) - type = 'uint8_t'; - else if (sign && len == 2) - type = 'int16_t'; - else if (len == 2) - type = 'uint16_t'; - else if (sign && len == 4) - type = 'int32_t'; - else if (len == 4) - type = 'uint32_t'; - else if (sign && len == 8) - type = 'int64_t'; - else if (len == 8) - type = 'uint64_t'; - - if (type === null) - throw (new Error('Malformed CTF JSON: integer has ' + - 'unsupported length and sign - ' + len + '/' + sign)); - - /* - * This means that this is the same as one of our built in types. If - * that's the case defining it would be an error. So instead of trying - * to typedef it, we'll return here. - */ - if (name == type) - return; - - if (name == 'char') { - ASSERT(type == 'int8_t'); - return; - } - - ctype.typedef(name, type); -} - -function ctfParseFloat(entry, ctype) -{ - var name, len; - - name = entry['name']; - if (!('length' in entry['float'])) - throw (new Error('Malformed CTF JSON: float missing ' + - 'length value')); - - len = entry['float']['length']; - if (len != 4 && len != 8) - throw (new Error('Malformed CTF JSON: float has invalid ' + - 'length value')); - - if (len == 4) { - if (name == 'float') - return; - ctype.typedef(name, 'float'); - } else if (len == 8) { - if (name == 'double') - return; - ctype.typedef(name, 'double'); - } -} - -function ctfParseTypedef(entry, ctype) -{ - var name, type, ii; - - name = entry['name']; - if (typeof (entry['typedef']) != 'string') - throw (new Error('Malformed CTF JSON: typedef value in not ' + - 'a string')); - - type = entry['typedef']; - - /* - * We need to ensure that we're not looking at type that's one of our - * built in types. Traditionally in C a uint32_t would be a typedef to - * some kind of integer. However, those size types are built ins. - */ - for (ii = 0; ii < ctf_deftypes.length; ii++) { - if (name == ctf_deftypes[ii]) - return; - } - - ctype.typedef(name, type); -} - -function ctfParseStruct(entry, ctype) -{ - var name, type, ii, val, index, member, push; - - member = []; - if (!Array.isArray(entry['struct'])) - throw (new Error('Malformed CTF JSON: struct value is not ' + - 'an array')); - - for (ii = 0; ii < entry['struct'].length; ii++) { - val = entry['struct'][ii]; - if (!('name' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing name')); - - if (!('type' in val)) - throw (new Error('Malformed CTF JSON: struct member ' + - 'missing type')); - - if (typeof (val['name']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'name isn\'t a string')); - - if (typeof (val['type']) != 'string') - throw (new Error('Malformed CTF JSON: struct member ' + - 'type isn\'t a string')); - - /* - * CTF version 2 specifies array names as [] where - * as node-ctype does this as []. - */ - name = val['name']; - type = val['type']; - index = type.indexOf(' ['); - if (index != -1) { - type = type.substring(0, index) + - type.substring(index + 1, type.length); - } - push = {}; - push[name] = { 'type': type }; - member.push(push); - } - - name = entry['name']; - ctype.typedef(name, member); -} - -function ctfParseEntry(entry, ctype) -{ - var ii, found; - - if (!('name' in entry)) - throw (new Error('Malformed CTF JSON: entry missing "name" ' + - 'section')); - - for (ii = 0; ii < ctf_entries.length; ii++) { - if (ctf_entries[ii] in entry) - found++; - } - - if (found === 0) - throw (new Error('Malformed CTF JSON: found no entries')); - - if (found >= 2) - throw (new Error('Malformed CTF JSON: found more than one ' + - 'entry')); - - if ('integer' in entry) { - ctfParseInteger(entry, ctype); - return; - } - - if ('float' in entry) { - ctfParseFloat(entry, ctype); - return; - } - - if ('typedef' in entry) { - ctfParseTypedef(entry, ctype); - return; - } - - if ('struct' in entry) { - ctfParseStruct(entry, ctype); - return; - } - - ASSERT(false, 'shouldn\'t reach here'); -} - -function ctfParseJson(json, ctype) -{ - var version, ii; - - ASSERT(json); - ASSERT(ctype); - if (!('metadata' in json)) - throw (new Error('Invalid CTF JSON: missing metadata section')); - - if (!('ctf2json_version' in json['metadata'])) - throw (new Error('Invalid CTF JSON: missing ctf2json_version')); - - version = json['metadata']['ctf2json_version']; - for (ii = 0; ii < ctf_versions.length; ii++) { - if (ctf_versions[ii] == version) - break; - } - - if (ii == ctf_versions.length) - throw (new Error('Unsuported ctf2json_version: ' + version)); - - if (!('data' in json)) - throw (new Error('Invalid CTF JSON: missing data section')); - - if (!Array.isArray(json['data'])) - throw (new Error('Malformed CTF JSON: data section is not ' + - 'an array')); - - for (ii = 0; ii < json['data'].length; ii++) - ctfParseEntry(json['data'][ii], ctype); -} - -exports.ctfParseJson = ctfParseJson; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctio.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctio.js deleted file mode 100644 index 62c5d7b2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctio.js +++ /dev/null @@ -1,1485 +0,0 @@ -/* - * rm - Feb 2011 - * ctio.js: - * - * A simple way to read and write simple ctypes. Of course, as you'll find the - * code isn't as simple as it might appear. The following types are currently - * supported in big and little endian formats: - * - * uint8_t int8_t - * uint16_t int16_t - * uint32_t int32_t - * float (single precision IEEE 754) - * double (double precision IEEE 754) - * - * This is designed to work in Node and v8. It may in fact work in other - * Javascript interpreters (that'd be pretty neat), but it hasn't been tested. - * If you find that it does in fact work, that's pretty cool. Try and pass word - * back to the original author. - * - * Note to the reader: If you're tabstop isn't set to 8, parts of this may look - * weird. - */ - -/* - * Numbers in Javascript have a secret: all numbers must be represented with an - * IEEE-754 double. The double has a mantissa with a length of 52 bits with an - * implicit one. Thus the range of integers that can be represented is limited - * to the size of the mantissa, this makes reading and writing 64-bit integers - * difficult, but far from impossible. - * - * Another side effect of this representation is what happens when you use the - * bitwise operators, i.e. shift left, shift right, and, or, etc. In Javascript, - * each operand and the result is cast to a signed 32-bit number. However, in - * the case of >>> the values are cast to an unsigned number. - */ - -/* - * A reminder on endian related issues: - * - * Big Endian: MSB -> First byte - * Little Endian: MSB->Last byte - */ -var mod_assert = require('assert'); - -/* - * An 8 bit unsigned integer involves doing no significant work. - */ -function ruint8(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (buffer[offset]); -} - -/* - * For 16 bit unsigned numbers we can do all the casting that we want to do. - */ -function rgint16(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset] << 8; - val |= buffer[offset+1]; - } else { - val = buffer[offset]; - val |= buffer[offset+1] << 8; - } - - return (val); - -} - -function ruint16(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint16(buffer, endian, offset)); -} - -/* - * Because most bitshifting is done using signed numbers, if we would go into - * the realm where we use that 32nd bit, we'll end up going into the negative - * range. i.e.: - * > 200 << 24 - * -939524096 - * - * Not the value you'd expect. To work around this, we end up having to do some - * abuse of the JavaScript standard. in this case, we know that a >>> shift is - * defined to cast our value to an *unsigned* 32-bit number. Because of that, we - * use that instead to save us some additional math, though it does feel a - * little weird and it isn't obvious as to why you woul dwant to do this at - * first. - */ -function rgint32(buffer, endian, offset) -{ - var val = 0; - - if (endian == 'big') { - val = buffer[offset+1] << 16; - val |= buffer[offset+2] << 8; - val |= buffer[offset+3]; - val = val + (buffer[offset] << 24 >>> 0); - } else { - val = buffer[offset+2] << 16; - val |= buffer[offset+1] << 8; - val |= buffer[offset]; - val = val + (buffer[offset + 3] << 24 >>> 0); - } - - return (val); -} - -function ruint32(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint32(buffer, endian, offset)); -} - -/* - * Reads a 64-bit unsigned number. The astue observer will note that this - * doesn't quite work. Javascript has chosen to only have numbers that can be - * represented by a double. A double only has 52 bits of mantissa with an - * implicit 1, thus we have up to 53 bits to represent an integer. However, 2^53 - * doesn't quite give us what we want. Isn't 53 bits enough for anyone? What - * could you have possibly wanted to represent that was larger than that? Oh, - * maybe a size? You mean we bypassed the 4 GB limit on file sizes, when did - * that happen? - * - * To get around this egregious language issue, we're going to instead construct - * an array of two 32 bit unsigned integers. Where arr[0] << 32 + arr[1] would - * give the actual number. However, note that the above code probably won't - * produce the desired results because of the way Javascript numbers are - * doubles. - */ -function rgint64(buffer, endian, offset) -{ - var val = new Array(2); - - if (endian == 'big') { - val[0] = ruint32(buffer, endian, offset); - val[1] = ruint32(buffer, endian, offset+4); - } else { - val[0] = ruint32(buffer, endian, offset+4); - val[1] = ruint32(buffer, endian, offset); - } - - return (val); -} - -function ruint64(buffer, endian, offset) -{ - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - return (rgint64(buffer, endian, offset)); -} - - -/* - * Signed integer types, yay team! A reminder on how two's complement actually - * works. The first bit is the signed bit, i.e. tells us whether or not the - * number should be positive or negative. If the two's complement value is - * positive, then we're done, as it's equivalent to the unsigned representation. - * - * Now if the number is positive, you're pretty much done, you can just leverage - * the unsigned translations and return those. Unfortunately, negative numbers - * aren't quite that straightforward. - * - * At first glance, one might be inclined to use the traditional formula to - * translate binary numbers between the positive and negative values in two's - * complement. (Though it doesn't quite work for the most negative value) - * Mainly: - * - invert all the bits - * - add one to the result - * - * Of course, this doesn't quite work in Javascript. Take for example the value - * of -128. This could be represented in 16 bits (big-endian) as 0xff80. But of - * course, Javascript will do the following: - * - * > ~0xff80 - * -65409 - * - * Whoh there, Javascript, that's not quite right. But wait, according to - * Javascript that's perfectly correct. When Javascript ends up seeing the - * constant 0xff80, it has no notion that it is actually a signed number. It - * assumes that we've input the unsigned value 0xff80. Thus, when it does the - * binary negation, it casts it into a signed value, (positive 0xff80). Then - * when you perform binary negation on that, it turns it into a negative number. - * - * Instead, we're going to have to use the following general formula, that works - * in a rather Javascript friendly way. I'm glad we don't support this kind of - * weird numbering scheme in the kernel. - * - * (BIT-MAX - (unsigned)val + 1) * -1 - * - * The astute observer, may think that this doesn't make sense for 8-bit numbers - * (really it isn't necessary for them). However, when you get 16-bit numbers, - * you do. Let's go back to our prior example and see how this will look: - * - * (0xffff - 0xff80 + 1) * -1 - * (0x007f + 1) * -1 - * (0x0080) * -1 - * - * Doing it this way ends up allowing us to treat it appropriately in - * Javascript. Sigh, that's really quite ugly for what should just be a few bit - * shifts, ~ and &. - */ - -/* - * Endianness doesn't matter for 8-bit signed values. We could in fact optimize - * this case because the more traditional methods work, but for consistency, - * we'll keep doing this the same way. - */ -function rsint8(buffer, endian, offset) -{ - var neg; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - neg = buffer[offset] & 0x80; - if (!neg) - return (buffer[offset]); - - return ((0xff - buffer[offset] + 1) * -1); -} - -/* - * The 16-bit version requires a bit more effort. In this case, we can leverage - * our unsigned code to generate the value we want to return. - */ -function rsint16(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint16(buffer, endian, offset); - neg = val & 0x8000; - if (!neg) - return (val); - - return ((0xffff - val + 1) * -1); -} - -/* - * We really shouldn't leverage our 32-bit code here and instead utilize the - * fact that we know that since these are signed numbers, we can do all the - * shifting and binary anding to generate the 32-bit number. But, for - * consistency we'll do the same. If we want to do otherwise, we should instead - * make the 32 bit unsigned code do the optimization. But as long as there - * aren't floats secretly under the hood for that, we /should/ be okay. - */ -function rsint32(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint32(buffer, endian, offset); - neg = val & 0x80000000; - if (!neg) - return (val); - - return ((0xffffffff - val + 1) * -1); -} - -/* - * The signed version of this code suffers from all of the same problems of the - * other 64 bit version. - */ -function rsint64(buffer, endian, offset) -{ - var neg, val; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = rgint64(buffer, endian, offset); - neg = val[0] & 0x80000000; - - if (!neg) - return (val); - - val[0] = (0xffffffff - val[0]) * -1; - val[1] = (0xffffffff - val[1] + 1) * -1; - - /* - * If we had the key 0x8000000000000000, that would leave the lower 32 - * bits as 0xffffffff, however, since we're goint to add one, that would - * actually leave the lower 32-bits as 0x100000000, which would break - * our ability to write back a value that we received. To work around - * this, if we actually get that value, we're going to bump the upper - * portion by 1 and set this to zero. - */ - mod_assert.ok(val[1] <= 0x100000000); - if (val[1] == -0x100000000) { - val[1] = 0; - val[0]--; - } - - return (val); -} - -/* - * We now move onto IEEE 754: The traditional form for floating point numbers - * and what is secretly hiding at the heart of everything in this. I really hope - * that someone is actually using this, as otherwise, this effort is probably - * going to be more wasted. - * - * One might be tempted to use parseFloat here, but that wouldn't work at all - * for several reasons. Mostly due to the way floats actually work, and - * parseFloat only actually works in base 10. I don't see base 10 anywhere near - * this file. - * - * In this case we'll implement the single and double precision versions. The - * quadruple precision, while probably useful, wouldn't really be accepted by - * Javascript, so let's not even waste our time. - * - * So let's review how this format looks like. A single precision value is 32 - * bits and has three parts: - * - Sign bit - * - Exponent (Using bias notation) - * - Mantissa - * - * |s|eeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmm| - * 31| 30-23 | 22 - 0 | - * - * The exponent is stored in a biased input. The bias in this case 127. - * Therefore, our exponent is equal to the 8-bit value - 127. - * - * By default, a number is normalized in IEEE, that means that the mantissa has - * an implicit one that we don't see. So really the value stored is 1.m. - * However, if the exponent is all zeros, then instead we have to shift - * everything to the right one and there is no more implicit one. - * - * Special values: - * - Positive Infinity: - * Sign: 0 - * Exponent: All 1s - * Mantissa: 0 - * - Negative Infinity: - * Sign: 1 - * Exponent: All 1s - * Mantissa: 0 - * - NaN: - * Sign: * - * Exponent: All 1s - * Mantissa: non-zero - * - Zero: - * Sign: * - * Exponent: All 0s - * Mantissa: 0 - * - * In the case of zero, the sign bit determines whether we get a positive or - * negative zero. However, since Javascript cannot determine the difference - * between the two: i.e. -0 == 0, we just always return 0. - * - */ -function rfloat(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val; - var bias = 127; - var maxexp = 0xff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - } else { - bytes[3] = buffer[offset]; - bytes[2] = buffer[offset+1]; - bytes[1] = buffer[offset+2]; - bytes[0] = buffer[offset+3]; - } - - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 1; - exponent |= (bytes[1] & 0x80) >>> 7; - mantissa = (bytes[1] & 0x7f) << 16; - mantissa |= bytes[2] << 8; - mantissa |= bytes[3]; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -23)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Doubles in IEEE 754 are like their brothers except for a few changes and - * increases in size: - * - The exponent is now 11 bits - * - The mantissa is now 52 bits - * - The bias is now 1023 - * - * |s|eeeeeeeeeee|mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm| - * 63| 62 - 52 | 51 - 0 | - * 63| 62 - 52 | 51 - 0 | - * - * While the size has increased a fair amount, we're going to end up keeping the - * same general formula for calculating the final value. As a reminder, this - * formula is: - * - * (-1)^s * (n + m) * 2^(e-b) - * - * Where: - * s is the sign bit - * n is (exponent > 0) ? 1 : 0 -- Determines whether we're normalized - * or not - * m is the mantissa - * e is the exponent specified - * b is the bias for the exponent - * - */ -function rdouble(buffer, endian, offset) -{ - var bytes = []; - var sign, exponent, mantissa, val, lowmant; - var bias = 1023; - var maxexp = 0x7ff; - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* Normalize the bytes to be in endian order */ - if (endian == 'big') { - bytes[0] = buffer[offset]; - bytes[1] = buffer[offset+1]; - bytes[2] = buffer[offset+2]; - bytes[3] = buffer[offset+3]; - bytes[4] = buffer[offset+4]; - bytes[5] = buffer[offset+5]; - bytes[6] = buffer[offset+6]; - bytes[7] = buffer[offset+7]; - } else { - bytes[7] = buffer[offset]; - bytes[6] = buffer[offset+1]; - bytes[5] = buffer[offset+2]; - bytes[4] = buffer[offset+3]; - bytes[3] = buffer[offset+4]; - bytes[2] = buffer[offset+5]; - bytes[1] = buffer[offset+6]; - bytes[0] = buffer[offset+7]; - } - - /* - * We can construct the exponent and mantissa the same way as we did in - * the case of a float, just increase the range of the exponent. - */ - sign = bytes[0] & 0x80; - exponent = (bytes[0] & 0x7f) << 4; - exponent |= (bytes[1] & 0xf0) >>> 4; - - /* - * This is going to be ugly but then again, we're dealing with IEEE 754. - * This could probably be done as a node add on in a few lines of C++, - * but oh we'll, we've made it this far so let's be native the rest of - * the way... - * - * What we're going to do is break the mantissa into two parts, the - * lower 24 bits and the upper 28 bits. We'll multiply the upper 28 bits - * by the appropriate power and then add in the lower 24-bits. Not - * really that great. It's pretty much a giant kludge to deal with - * Javascript eccentricities around numbers. - */ - lowmant = bytes[7]; - lowmant |= bytes[6] << 8; - lowmant |= bytes[5] << 16; - mantissa = bytes[4]; - mantissa |= bytes[3] << 8; - mantissa |= bytes[2] << 16; - mantissa |= (bytes[1] & 0x0f) << 24; - mantissa *= Math.pow(2, 24); /* Equivalent to << 24, but JS compat */ - mantissa += lowmant; - - /* Check for special cases before we do general parsing */ - if (!sign && exponent == maxexp && mantissa === 0) - return (Number.POSITIVE_INFINITY); - - if (sign && exponent == maxexp && mantissa === 0) - return (Number.NEGATIVE_INFINITY); - - if (exponent == maxexp && mantissa !== 0) - return (Number.NaN); - - /* - * Javascript really doesn't have support for positive or negative zero. - * So we're not going to try and give it to you. That would be just - * plain weird. Besides -0 == 0. - */ - if (exponent === 0 && mantissa === 0) - return (0); - - /* - * Now we can deal with the bias and the determine whether the mantissa - * has the implicit one or not. - */ - exponent -= bias; - if (exponent == -bias) { - exponent++; - val = 0; - } else { - val = 1; - } - - val = (val + mantissa * Math.pow(2, -52)) * Math.pow(2, exponent); - - if (sign) - val *= -1; - - return (val); -} - -/* - * Now that we have gone through the pain of reading the individual types, we're - * probably going to want some way to write these back. None of this is going to - * be good. But since we have Javascript numbers this should certainly be more - * interesting. Though we can constrain this end a little bit more in what is - * valid. For now, let's go back to our friends the unsigned value. - */ - -/* - * Unsigned numbers seem deceptively easy. Here are the general steps and rules - * that we are going to take: - * - If the number is negative, throw an Error - * - Truncate any floating point portion - * - Take the modulus of the number in our base - * - Write it out to the buffer in the endian format requested at the offset - */ - -/* - * We have to make sure that the value is a valid integer. This means that it is - * non-negative. It has no fractional component and that it does not exceed the - * maximum allowed value. - * - * value The number to check for validity - * - * max The maximum value - */ -function prepuint(value, max) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value < 0) - throw (new Error('specified a negative value for writing an ' + - 'unsigned value')); - - if (value > max) - throw (new Error('value is larger than maximum value for ' + - 'type')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * 8-bit version, classy. We can ignore endianness which is good. - */ -function wuint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xff); - buffer[offset] = val; -} - -/* - * Pretty much the same as the 8-bit version, just this time we need to worry - * about endian related issues. - */ -function wgint16(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val & 0xff00) >>> 8; - buffer[offset+1] = val & 0x00ff; - } else { - buffer[offset+1] = (val & 0xff00) >>> 8; - buffer[offset] = val & 0x00ff; - } -} - -function wuint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffff); - wgint16(val, endian, buffer, offset); -} - -/* - * The 32-bit version is going to have to be a little different unfortunately. - * We can't quite bitshift to get the largest byte, because that would end up - * getting us caught by the signed values. - * - * And yes, we do want to subtract out the lower part by default. This means - * that when we do the division, it will be treated as a bit shift and we won't - * end up generating a floating point value. If we did generate a floating point - * value we'd have to truncate it intelligently, this saves us that problem and - * may even be somewhat faster under the hood. - */ -function wgint32(val, endian, buffer, offset) -{ - if (endian == 'big') { - buffer[offset] = (val - (val & 0x00ffffff)) / Math.pow(2, 24); - buffer[offset+1] = (val >>> 16) & 0xff; - buffer[offset+2] = (val >>> 8) & 0xff; - buffer[offset+3] = val & 0xff; - } else { - buffer[offset+3] = (val - (val & 0x00ffffff)) / - Math.pow(2, 24); - buffer[offset+2] = (val >>> 16) & 0xff; - buffer[offset+1] = (val >>> 8) & 0xff; - buffer[offset] = val & 0xff; - } -} - -function wuint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepuint(value, 0xffffffff); - wgint32(val, endian, buffer, offset); -} - -/* - * Unlike the other versions, we expect the value to be in the form of two - * arrays where value[0] << 32 + value[1] would result in the value that we - * want. - */ -function wgint64(value, endian, buffer, offset) -{ - if (endian == 'big') { - wgint32(value[0], endian, buffer, offset); - wgint32(value[1], endian, buffer, offset+4); - } else { - wgint32(value[0], endian, buffer, offset+4); - wgint32(value[1], endian, buffer, offset); - } -} - -function wuint64(value, endian, buffer, offset) -{ - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - prepuint(value[0], 0xffffffff); - prepuint(value[1], 0xffffffff); - wgint64(value, endian, buffer, offset); -} - -/* - * We now move onto our friends in the signed number category. Unlike unsigned - * numbers, we're going to have to worry a bit more about how we put values into - * arrays. Since we are only worrying about signed 32-bit values, we're in - * slightly better shape. Unfortunately, we really can't do our favorite binary - * & in this system. It really seems to do the wrong thing. For example: - * - * > -32 & 0xff - * 224 - * - * What's happening above is really: 0xe0 & 0xff = 0xe0. However, the results of - * this aren't treated as a signed number. Ultimately a bad thing. - * - * What we're going to want to do is basically create the unsigned equivalent of - * our representation and pass that off to the wuint* functions. To do that - * we're going to do the following: - * - * - if the value is positive - * we can pass it directly off to the equivalent wuint - * - if the value is negative - * we do the following computation: - * mb + val + 1, where - * mb is the maximum unsigned value in that byte size - * val is the Javascript negative integer - * - * - * As a concrete value, take -128. In signed 16 bits this would be 0xff80. If - * you do out the computations: - * - * 0xffff - 128 + 1 - * 0xffff - 127 - * 0xff80 - * - * You can then encode this value as the signed version. This is really rather - * hacky, but it should work and get the job done which is our goal here. - * - * Thus the overall flow is: - * - Truncate the floating point part of the number - * - We don't have to take the modulus, because the unsigned versions will - * take care of that for us. And we don't have to worry about that - * potentially causing bad things to happen because of sign extension - * - Pass it off to the appropriate unsigned version, potentially modifying - * the negative portions as necessary. - */ - -/* - * A series of checks to make sure we actually have a signed 32-bit number - */ -function prepsint(value, max, min) -{ - if (typeof (value) != 'number') - throw (new (Error('cannot write a non-number as a number'))); - - if (value > max) - throw (new Error('value larger than maximum allowed value')); - - if (value < min) - throw (new Error('value smaller than minimum allowed value')); - - if (Math.floor(value) !== value) - throw (new Error('value has a fractional component')); - - return (value); -} - -/* - * The 8-bit version of the signed value. Overall, fairly straightforward. - */ -function wsint8(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7f, -0x80); - if (val >= 0) - wuint8(val, endian, buffer, offset); - else - wuint8(0xff + val + 1, endian, buffer, offset); -} - -/* - * The 16-bit version of the signed value. Also, fairly straightforward. - */ -function wsint16(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 1 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fff, -0x8000); - if (val >= 0) - wgint16(val, endian, buffer, offset); - else - wgint16(0xffff + val + 1, endian, buffer, offset); - -} - -/* - * We can do this relatively easily by leveraging the code used for 32-bit - * unsigned code. - */ -function wsint32(value, endian, buffer, offset) -{ - var val; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - val = prepsint(value, 0x7fffffff, -0x80000000); - if (val >= 0) - wgint32(val, endian, buffer, offset); - else - wgint32(0xffffffff + val + 1, endian, buffer, offset); -} - -/* - * The signed 64 bit integer should by in the same format as when received. - * Mainly it should ensure that the value is an array of two integers where - * value[0] << 32 + value[1] is the desired number. Furthermore, the two values - * need to be equal. - */ -function wsint64(value, endian, buffer, offset) -{ - var vzpos, vopos; - var vals = new Array(2); - - if (value === undefined) - throw (new Error('missing value')); - - if (!(value instanceof Array)) - throw (new Error('value must be an array')); - - if (value.length != 2) - throw (new Error('value must be an array of length 2')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - /* - * We need to make sure that we have the same sign on both values. The - * hokiest way to to do this is to multiply the number by +inf. If we do - * this, we'll get either +/-inf depending on the sign of the value. - * Once we have this, we can compare it to +inf to see if the number is - * positive or not. - */ - vzpos = (value[0] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - vopos = (value[1] * Number.POSITIVE_INFINITY) == - Number.POSITIVE_INFINITY; - - /* - * If either of these is zero, then we don't actually need this check. - */ - if (value[0] != 0 && value[1] != 0 && vzpos != vopos) - throw (new Error('Both entries in the array must have ' + - 'the same sign')); - - /* - * Doing verification for a signed 64-bit integer is actually a big - * trickier than it appears. We can't quite use our standard techniques - * because we need to compare both sets of values. The first value is - * pretty straightforward. If the first value is beond the extremes than - * we error out. However, the valid range of the second value varies - * based on the first one. If the first value is negative, and *not* the - * largest negative value, than it can be any integer within the range [ - * 0, 0xffffffff ]. If it is the largest negative number, it must be - * zero. - * - * If the first number is positive, than it doesn't matter what the - * value is. We just simply have to make sure we have a valid positive - * integer. - */ - if (vzpos) { - prepuint(value[0], 0x7fffffff); - prepuint(value[1], 0xffffffff); - } else { - prepsint(value[0], 0, -0x80000000); - prepsint(value[1], 0, -0xffffffff); - if (value[0] == -0x80000000 && value[1] != 0) - throw (new Error('value smaller than minimum ' + - 'allowed value')); - } - - /* Fix negative numbers */ - if (value[0] < 0 || value[1] < 0) { - vals[0] = 0xffffffff - Math.abs(value[0]); - vals[1] = 0x100000000 - Math.abs(value[1]); - if (vals[1] == 0x100000000) { - vals[1] = 0; - vals[0]++; - } - } else { - vals[0] = value[0]; - vals[1] = value[1]; - } - wgint64(vals, endian, buffer, offset); -} - -/* - * Now we are moving onto the weirder of these, the float and double. For this - * we're going to just have to do something that's pretty weird. First off, we - * have no way to get at the underlying float representation, at least not - * easily. But that doesn't mean we can't figure it out, we just have to use our - * heads. - * - * One might propose to use Number.toString(2). Of course, this is not really - * that good, because the ECMAScript 262 v3 Standard says the following Section - * 15.7.4.2-Number.prototype.toString (radix): - * - * If radix is an integer from 2 to 36, but not 10, the result is a string, the - * choice of which is implementation-dependent. - * - * Well that doesn't really help us one bit now does it? We could use the - * standard base 10 version of the string, but that's just going to create more - * errors as we end up trying to convert it back to a binary value. So, really - * this just means we have to be non-lazy and parse the structure intelligently. - * - * First off, we can do the basic checks: NaN, positive and negative infinity. - * - * Now that those are done we can work backwards to generate the mantissa and - * exponent. - * - * The first thing we need to do is determine the sign bit, easy to do, check - * whether the value is less than 0. And convert the number to its absolute - * value representation. Next, we need to determine if the value is less than - * one or greater than or equal to one and from there determine what power was - * used to get there. What follows is now specific to floats, though the general - * ideas behind this will hold for doubles as well, but the exact numbers - * involved will change. - * - * Once we have that power we can determine the exponent and the mantissa. Call - * the value that has the number of bits to reach the power ebits. In the - * general case they have the following values: - * - * exponent 127 + ebits - * mantissa value * 2^(23 - ebits) & 0x7fffff - * - * In the case where the value of ebits is <= -127 we are now in the case where - * we no longer have normalized numbers. In this case the values take on the - * following values: - * - * exponent 0 - * mantissa value * 2^149 & 0x7fffff - * - * Once we have the values for the sign, mantissa, and exponent. We reconstruct - * the four bytes as follows: - * - * byte0 sign bit and seven most significant bits from the exp - * sign << 7 | (exponent & 0xfe) >>> 1 - * - * byte1 lsb from the exponent and 7 top bits from the mantissa - * (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16 - * - * byte2 bits 8-15 (zero indexing) from mantissa - * mantissa & 0xff00 >> 8 - * - * byte3 bits 0-7 from mantissa - * mantissa & 0xff - * - * Once we have this we have to assign them into the buffer in proper endian - * order. - */ - -/* - * Compute the log base 2 of the value. Now, someone who remembers basic - * properties of logarithms will point out that we could use the change of base - * formula for logs, and in fact that would be astute, because that's what we'll - * do for now. It feels cleaner, albeit it may be less efficient than just - * iterating and dividing by 2. We may want to come back and revisit that some - * day. - */ -function log2(value) -{ - return (Math.log(value) / Math.log(2)); -} - -/* - * Helper to determine the exponent of the number we're looking at. - */ -function intexp(value) -{ - return (Math.floor(log2(value))); -} - -/* - * Helper to determine the exponent of the fractional part of the value. - */ -function fracexp(value) -{ - return (Math.floor(log2(value))); -} - -function wfloat(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 3 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0xff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0xff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0xff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* Time to deal with the issues surrounding normalization */ - if (ebits <= -127) { - exponent = 0; - mantissa = (value * Math.pow(2, 149)) & 0x7fffff; - } else { - exponent = 127 + ebits; - mantissa = value * Math.pow(2, 23 - ebits); - mantissa &= 0x7fffff; - } - } - - bytes[0] = sign << 7 | (exponent & 0xfe) >>> 1; - bytes[1] = (exponent & 0x01) << 7 | (mantissa & 0x7f0000) >>> 16; - bytes[2] = (mantissa & 0x00ff00) >>> 8; - bytes[3] = mantissa & 0x0000ff; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - } else { - buffer[offset] = bytes[3]; - buffer[offset+1] = bytes[2]; - buffer[offset+2] = bytes[1]; - buffer[offset+3] = bytes[0]; - } -} - -/* - * Now we move onto doubles. Doubles are similar to floats in pretty much all - * ways except that the processing isn't quite as straightforward because we - * can't always use shifting, i.e. we have > 32 bit values. - * - * We're going to proceed in an identical fashion to floats and utilize the same - * helper functions. All that really is changing are the specific values that we - * use to do the calculations. Thus, to review we have to do the following. - * - * First get the sign bit and convert the value to its absolute value - * representation. Next, we determine the number of bits that we used to get to - * the value, branching whether the value is greater than or less than 1. Once - * we have that value which we will again call ebits, we have to do the - * following in the general case: - * - * exponent 1023 + ebits - * mantissa [value * 2^(52 - ebits)] % 2^52 - * - * In the case where the value of ebits <= -1023 we no longer use normalized - * numbers, thus like with floats we have to do slightly different processing: - * - * exponent 0 - * mantissa [value * 2^1074] % 2^52 - * - * Once we have determined the sign, exponent and mantissa we can construct the - * bytes as follows: - * - * byte0 sign bit and seven most significant bits form the exp - * sign << 7 | (exponent & 0x7f0) >>> 4 - * - * byte1 Remaining 4 bits from the exponent and the four most - * significant bits from the mantissa 48-51 - * (exponent & 0x00f) << 4 | mantissa >>> 48 - * - * byte2 Bits 40-47 from the mantissa - * (mantissa >>> 40) & 0xff - * - * byte3 Bits 32-39 from the mantissa - * (mantissa >>> 32) & 0xff - * - * byte4 Bits 24-31 from the mantissa - * (mantissa >>> 24) & 0xff - * - * byte5 Bits 16-23 from the Mantissa - * (mantissa >>> 16) & 0xff - * - * byte6 Bits 8-15 from the mantissa - * (mantissa >>> 8) & 0xff - * - * byte7 Bits 0-7 from the mantissa - * mantissa & 0xff - * - * Now we can't quite do the right shifting that we want in bytes 1 - 3, because - * we'll have extended too far and we'll lose those values when we try and do - * the shift. Instead we have to use an alternate approach. To try and stay out - * of floating point, what we'll do is say that mantissa -= bytes[4-7] and then - * divide by 2^32. Once we've done that we can use binary arithmetic. Oof, - * that's ugly, but it seems to avoid using floating point (just based on how v8 - * seems to be optimizing for base 2 arithmetic). - */ -function wdouble(value, endian, buffer, offset) -{ - var sign, exponent, mantissa, ebits; - var bytes = []; - - if (value === undefined) - throw (new Error('missing value')); - - if (endian === undefined) - throw (new Error('missing endian')); - - if (buffer === undefined) - throw (new Error('missing buffer')); - - if (offset === undefined) - throw (new Error('missing offset')); - - - if (offset + 7 >= buffer.length) - throw (new Error('Trying to read beyond buffer length')); - - if (isNaN(value)) { - sign = 0; - exponent = 0x7ff; - mantissa = 23; - } else if (value == Number.POSITIVE_INFINITY) { - sign = 0; - exponent = 0x7ff; - mantissa = 0; - } else if (value == Number.NEGATIVE_INFINITY) { - sign = 1; - exponent = 0x7ff; - mantissa = 0; - } else { - /* Well we have some work to do */ - - /* Thankfully the sign bit is trivial */ - if (value < 0) { - sign = 1; - value = Math.abs(value); - } else { - sign = 0; - } - - /* Use the correct function to determine number of bits */ - if (value < 1) - ebits = fracexp(value); - else - ebits = intexp(value); - - /* - * This is a total hack to determine a denormalized value. - * Unfortunately, we sometimes do not get a proper value for - * ebits, i.e. we lose the values that would get rounded off. - * - * - * The astute observer may wonder why we would be - * multiplying by two Math.pows rather than just summing - * them. Well, that's to get around a small bug in the - * way v8 seems to implement the function. On occasion - * doing: - * - * foo * Math.pow(2, 1023 + 51) - * - * Causes us to overflow to infinity, where as doing: - * - * foo * Math.pow(2, 1023) * Math.pow(2, 51) - * - * Does not cause us to overflow. Go figure. - * - */ - if (value <= 2.225073858507201e-308 || ebits <= -1023) { - exponent = 0; - mantissa = value * Math.pow(2, 1023) * Math.pow(2, 51); - mantissa %= Math.pow(2, 52); - } else { - /* - * We might have gotten fucked by our floating point - * logarithm magic. This is rather crappy, but that's - * our luck. If we just had a log base 2 or access to - * the stupid underlying representation this would have - * been much easier and we wouldn't have such stupid - * kludges or hacks. - */ - if (ebits > 1023) - ebits = 1023; - exponent = 1023 + ebits; - mantissa = value * Math.pow(2, -ebits); - mantissa *= Math.pow(2, 52); - mantissa %= Math.pow(2, 52); - } - } - - /* Fill the bytes in backwards to deal with the size issues */ - bytes[7] = mantissa & 0xff; - bytes[6] = (mantissa >>> 8) & 0xff; - bytes[5] = (mantissa >>> 16) & 0xff; - mantissa = (mantissa - (mantissa & 0xffffff)) / Math.pow(2, 24); - bytes[4] = mantissa & 0xff; - bytes[3] = (mantissa >>> 8) & 0xff; - bytes[2] = (mantissa >>> 16) & 0xff; - bytes[1] = (exponent & 0x00f) << 4 | mantissa >>> 24; - bytes[0] = (sign << 7) | (exponent & 0x7f0) >>> 4; - - if (endian == 'big') { - buffer[offset] = bytes[0]; - buffer[offset+1] = bytes[1]; - buffer[offset+2] = bytes[2]; - buffer[offset+3] = bytes[3]; - buffer[offset+4] = bytes[4]; - buffer[offset+5] = bytes[5]; - buffer[offset+6] = bytes[6]; - buffer[offset+7] = bytes[7]; - } else { - buffer[offset+7] = bytes[0]; - buffer[offset+6] = bytes[1]; - buffer[offset+5] = bytes[2]; - buffer[offset+4] = bytes[3]; - buffer[offset+3] = bytes[4]; - buffer[offset+2] = bytes[5]; - buffer[offset+1] = bytes[6]; - buffer[offset] = bytes[7]; - } -} - -/* - * Actually export our work above. One might argue that we shouldn't expose - * these interfaces and just force people to use the higher level abstractions - * around this work. However, unlike say other libraries we've come across, this - * interface has several properties: it makes sense, it's simple, and it's - * useful. - */ -exports.ruint8 = ruint8; -exports.ruint16 = ruint16; -exports.ruint32 = ruint32; -exports.ruint64 = ruint64; -exports.wuint8 = wuint8; -exports.wuint16 = wuint16; -exports.wuint32 = wuint32; -exports.wuint64 = wuint64; - -exports.rsint8 = rsint8; -exports.rsint16 = rsint16; -exports.rsint32 = rsint32; -exports.rsint64 = rsint64; -exports.wsint8 = wsint8; -exports.wsint16 = wsint16; -exports.wsint32 = wsint32; -exports.wsint64 = wsint64; - -exports.rfloat = rfloat; -exports.rdouble = rdouble; -exports.wfloat = wfloat; -exports.wdouble = wdouble; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctype.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctype.js deleted file mode 100644 index 7d2f4a5a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/ctype.js +++ /dev/null @@ -1,944 +0,0 @@ -/* - * rm - Feb 2011 - * ctype.js - * - * This module provides a simple abstraction towards reading and writing - * different types of binary data. It is designed to use ctio.js and provide a - * richer and more expressive API on top of it. - * - * By default we support the following as built in basic types: - * int8_t - * int16_t - * int32_t - * uint8_t - * uint16_t - * uint32_t - * uint64_t - * float - * double - * char - * char[] - * - * Each type is returned as a Number, with the exception of char and char[] - * which are returned as Node Buffers. A char is considered a uint8_t. - * - * Requests to read and write data are specified as an array of JSON objects. - * This is also the same way that one declares structs. Even if just a single - * value is requested, it must be done as a struct. The array order determines - * the order that we try and read values. Each entry has the following format - * with values marked with a * being optional. - * - * { key: { type: /type/, value*: /value/, offset*: /offset/ } - * - * If offset is defined, we lseek(offset, SEEK_SET) before reading the next - * value. Value is defined when we're writing out data, otherwise it's ignored. - * - */ - -var mod_ctf = require('./ctf.js'); -var mod_ctio = require('./ctio.js'); -var mod_assert = require('assert'); - -/* - * This is the set of basic types that we support. - * - * read The function to call to read in a value from a buffer - * - * write The function to call to write a value to a buffer - * - */ -var deftypes = { - 'uint8_t': { read: ctReadUint8, write: ctWriteUint8 }, - 'uint16_t': { read: ctReadUint16, write: ctWriteUint16 }, - 'uint32_t': { read: ctReadUint32, write: ctWriteUint32 }, - 'uint64_t': { read: ctReadUint64, write: ctWriteUint64 }, - 'int8_t': { read: ctReadSint8, write: ctWriteSint8 }, - 'int16_t': { read: ctReadSint16, write: ctWriteSint16 }, - 'int32_t': { read: ctReadSint32, write: ctWriteSint32 }, - 'int64_t': { read: ctReadSint64, write: ctWriteSint64 }, - 'float': { read: ctReadFloat, write: ctWriteFloat }, - 'double': { read: ctReadDouble, write: ctWriteDouble }, - 'char': { read: ctReadChar, write: ctWriteChar }, - 'char[]': { read: ctReadCharArray, write: ctWriteCharArray } -}; - -/* - * The following are wrappers around the CType IO low level API. They encode - * knowledge about the size and return something in the expected format. - */ -function ctReadUint8(endian, buffer, offset) -{ - var val = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadUint16(endian, buffer, offset) -{ - var val = mod_ctio.ruint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadUint32(endian, buffer, offset) -{ - var val = mod_ctio.ruint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadUint64(endian, buffer, offset) -{ - var val = mod_ctio.ruint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadSint8(endian, buffer, offset) -{ - var val = mod_ctio.rsint8(buffer, endian, offset); - return ({ value: val, size: 1 }); -} - -function ctReadSint16(endian, buffer, offset) -{ - var val = mod_ctio.rsint16(buffer, endian, offset); - return ({ value: val, size: 2 }); -} - -function ctReadSint32(endian, buffer, offset) -{ - var val = mod_ctio.rsint32(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadSint64(endian, buffer, offset) -{ - var val = mod_ctio.rsint64(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -function ctReadFloat(endian, buffer, offset) -{ - var val = mod_ctio.rfloat(buffer, endian, offset); - return ({ value: val, size: 4 }); -} - -function ctReadDouble(endian, buffer, offset) -{ - var val = mod_ctio.rdouble(buffer, endian, offset); - return ({ value: val, size: 8 }); -} - -/* - * Reads a single character into a node buffer - */ -function ctReadChar(endian, buffer, offset) -{ - var res = new Buffer(1); - res[0] = mod_ctio.ruint8(buffer, endian, offset); - return ({ value: res, size: 1 }); -} - -function ctReadCharArray(length, endian, buffer, offset) -{ - var ii; - var res = new Buffer(length); - - for (ii = 0; ii < length; ii++) - res[ii] = mod_ctio.ruint8(buffer, endian, offset + ii); - - return ({ value: res, size: length }); -} - -function ctWriteUint8(value, endian, buffer, offset) -{ - mod_ctio.wuint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteUint16(value, endian, buffer, offset) -{ - mod_ctio.wuint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteUint32(value, endian, buffer, offset) -{ - mod_ctio.wuint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteUint64(value, endian, buffer, offset) -{ - mod_ctio.wuint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteSint8(value, endian, buffer, offset) -{ - mod_ctio.wsint8(value, endian, buffer, offset); - return (1); -} - -function ctWriteSint16(value, endian, buffer, offset) -{ - mod_ctio.wsint16(value, endian, buffer, offset); - return (2); -} - -function ctWriteSint32(value, endian, buffer, offset) -{ - mod_ctio.wsint32(value, endian, buffer, offset); - return (4); -} - -function ctWriteSint64(value, endian, buffer, offset) -{ - mod_ctio.wsint64(value, endian, buffer, offset); - return (8); -} - -function ctWriteFloat(value, endian, buffer, offset) -{ - mod_ctio.wfloat(value, endian, buffer, offset); - return (4); -} - -function ctWriteDouble(value, endian, buffer, offset) -{ - mod_ctio.wdouble(value, endian, buffer, offset); - return (8); -} - -/* - * Writes a single character into a node buffer - */ -function ctWriteChar(value, endian, buffer, offset) -{ - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - mod_ctio.ruint8(value[0], endian, buffer, offset); - return (1); -} - -/* - * We're going to write 0s into the buffer if the string is shorter than the - * length of the array. - */ -function ctWriteCharArray(value, length, endian, buffer, offset) -{ - var ii; - - if (!(value instanceof Buffer)) - throw (new Error('Input must be a buffer')); - - if (value.length > length) - throw (new Error('value length greater than array length')); - - for (ii = 0; ii < value.length && ii < length; ii++) - mod_ctio.wuint8(value[ii], endian, buffer, offset + ii); - - for (; ii < length; ii++) - mod_ctio.wuint8(0, endian, offset + ii); - - - return (length); -} - -/* - * Each parser has their own set of types. We want to make sure that they each - * get their own copy as they may need to modify it. - */ -function ctGetBasicTypes() -{ - var ret = {}; - var key; - for (key in deftypes) - ret[key] = deftypes[key]; - - return (ret); -} - -/* - * Given a string in the form of type[length] we want to split this into an - * object that extracts that information. We want to note that we could possibly - * have nested arrays so this should only check the furthest one. It may also be - * the case that we have no [] pieces, in which case we just return the current - * type. - */ -function ctParseType(str) -{ - var begInd, endInd; - var type, len; - if (typeof (str) != 'string') - throw (new Error('type must be a Javascript string')); - - endInd = str.lastIndexOf(']'); - if (endInd == -1) { - if (str.lastIndexOf('[') != -1) - throw (new Error('found invalid type with \'[\' but ' + - 'no corresponding \']\'')); - - return ({ type: str }); - } - - begInd = str.lastIndexOf('['); - if (begInd == -1) - throw (new Error('found invalid type with \']\' but ' + - 'no corresponding \'[\'')); - - if (begInd >= endInd) - throw (new Error('malformed type, \']\' appears before \'[\'')); - - type = str.substring(0, begInd); - len = str.substring(begInd + 1, endInd); - - return ({ type: type, len: len }); -} - -/* - * Given a request validate that all of the fields for it are valid and make - * sense. This includes verifying the following notions: - * - Each type requested is present in types - * - Only allow a name for a field to be specified once - * - If an array is specified, validate that the requested field exists and - * comes before it. - * - If fields is defined, check that each entry has the occurrence of field - */ -function ctCheckReq(def, types, fields) -{ - var ii, jj; - var req, keys, key; - var found = {}; - - if (!(def instanceof Array)) - throw (new Error('definition is not an array')); - - if (def.length === 0) - throw (new Error('definition must have at least one element')); - - for (ii = 0; ii < def.length; ii++) { - req = def[ii]; - if (!(req instanceof Object)) - throw (new Error('definition must be an array of' + - 'objects')); - - keys = Object.keys(req); - if (keys.length != 1) - throw (new Error('definition entry must only have ' + - 'one key')); - - if (keys[0] in found) - throw (new Error('Specified name already ' + - 'specified: ' + keys[0])); - - if (!('type' in req[keys[0]])) - throw (new Error('missing required type definition')); - - key = ctParseType(req[keys[0]]['type']); - - /* - * We may have nested arrays, we need to check the validity of - * the types until the len field is undefined in key. However, - * each time len is defined we need to verify it is either an - * integer or corresponds to an already seen key. - */ - while (key['len'] !== undefined) { - if (isNaN(parseInt(key['len'], 10))) { - if (!(key['len'] in found)) - throw (new Error('Given an array ' + - 'length without a matching type')); - - } - - key = ctParseType(key['type']); - } - - /* Now we can validate if the type is valid */ - if (!(key['type'] in types)) - throw (new Error('type not found or typdefed: ' + - key['type'])); - - /* Check for any required fields */ - if (fields !== undefined) { - for (jj = 0; jj < fields.length; jj++) { - if (!(fields[jj] in req[keys[0]])) - throw (new Error('Missing required ' + - 'field: ' + fields[jj])); - } - } - - found[keys[0]] = true; - } -} - - -/* - * Create a new instance of the parser. Each parser has its own store of - * typedefs and endianness. Conf is an object with the following required - * values: - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - * And the following optional values: - * - * char-type Valid options here are uint8 and int8. If uint8 is - * specified this changes the default behavior of a single - * char from being a buffer of a single character to being - * a uint8_t. If int8, it becomes an int8_t instead. - */ -function CTypeParser(conf) -{ - if (!conf) throw (new Error('missing required argument')); - - if (!('endian' in conf)) - throw (new Error('missing required endian value')); - - if (conf['endian'] != 'big' && conf['endian'] != 'little') - throw (new Error('Invalid endian type')); - - if ('char-type' in conf && (conf['char-type'] != 'uint8' && - conf['char-type'] != 'int8')) - throw (new Error('invalid option for char-type: ' + - conf['char-type'])); - - this.endian = conf['endian']; - this.types = ctGetBasicTypes(); - - /* - * There may be a more graceful way to do this, but this will have to - * serve. - */ - if ('char-type' in conf && conf['char-type'] == 'uint8') - this.types['char'] = this.types['uint8_t']; - - if ('char-type' in conf && conf['char-type'] == 'int8') - this.types['char'] = this.types['int8_t']; -} - -/* - * Sets the current endian value for the Parser. If the value is not valid, - * throws an Error. - * - * endian Either 'big' or 'little' do determine the endianness we - * want to read from or write to. - * - */ -CTypeParser.prototype.setEndian = function (endian) -{ - if (endian != 'big' && endian != 'little') - throw (new Error('invalid endian type, must be big or ' + - 'little')); - - this.endian = endian; -}; - -/* - * Returns the current value of the endian value for the parser. - */ -CTypeParser.prototype.getEndian = function () -{ - return (this.endian); -}; - -/* - * A user has requested to add a type, let us honor their request. Yet, if their - * request doth spurn us, send them unto the Hells which Dante describes. - * - * name The string for the type definition we're adding - * - * value Either a string that is a type/array name or an object - * that describes a struct. - */ -CTypeParser.prototype.typedef = function (name, value) -{ - var type; - - if (name === undefined) - throw (new (Error('missing required typedef argument: name'))); - - if (value === undefined) - throw (new (Error('missing required typedef argument: value'))); - - if (typeof (name) != 'string') - throw (new (Error('the name of a type must be a string'))); - - type = ctParseType(name); - - if (type['len'] !== undefined) - throw (new Error('Cannot have an array in the typedef name')); - - if (name in this.types) - throw (new Error('typedef name already present: ' + name)); - - if (typeof (value) != 'string' && !(value instanceof Array)) - throw (new Error('typedef value must either be a string or ' + - 'struct')); - - if (typeof (value) == 'string') { - type = ctParseType(value); - if (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) - throw (new (Error('typedef value must use ' + - 'fixed size array when outside of a ' + - 'struct'))); - } - - this.types[name] = value; - } else { - /* We have a struct, validate it */ - ctCheckReq(value, this.types); - this.types[name] = value; - } -}; - -/* - * Include all of the typedefs, but none of the built in types. This should be - * treated as read-only. - */ -CTypeParser.prototype.lstypes = function () -{ - var key; - var ret = {}; - - for (key in this.types) { - if (key in deftypes) - continue; - ret[key] = this.types[key]; - } - - return (ret); -}; - -/* - * Given a type string that may have array types that aren't numbers, try and - * fill them in from the values object. The object should be of the format where - * indexing into it should return a number for that type. - * - * str The type string - * - * values An object that can be used to fulfill type information - */ -function ctResolveArray(str, values) -{ - var ret = ''; - var type = ctParseType(str); - - while (type['len'] !== undefined) { - if (isNaN(parseInt(type['len'], 10))) { - if (typeof (values[type['len']]) != 'number') - throw (new Error('cannot sawp in non-number ' + - 'for array value')); - ret = '[' + values[type['len']] + ']' + ret; - } else { - ret = '[' + type['len'] + ']' + ret; - } - type = ctParseType(type['type']); - } - - ret = type['type'] + ret; - - return (ret); -} - -/* - * [private] Either the typedef resolves to another type string or to a struct. - * If it resolves to a struct, we just pass it off to read struct. If not, we - * can just pass it off to read entry. - */ -CTypeParser.prototype.resolveTypedef = function (type, dispatch, buffer, - offset, value) -{ - var pt; - - mod_assert.ok(type in this.types); - if (typeof (this.types[type]) == 'string') { - pt = ctParseType(this.types[type]); - if (dispatch == 'read') - return (this.readEntry(pt, buffer, offset)); - else if (dispatch == 'write') - return (this.writeEntry(value, pt, buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } else { - if (dispatch == 'read') - return (this.readStruct(this.types[type], buffer, - offset)); - else if (dispatch == 'write') - return (this.writeStruct(value, this.types[type], - buffer, offset)); - else - throw (new Error('invalid dispatch type to ' + - 'resolveTypedef')); - } - -}; - -/* - * [private] Try and read in the specific entry. - */ -CTypeParser.prototype.readEntry = function (type, buffer, offset) -{ - var parse, len; - - /* - * Because we want to special case char[]s this is unfortunately - * a bit uglier than it really should be. We want to special - * case char[]s so that we return a node buffer, thus they are a - * first class type where as all other arrays just call into a - * generic array routine which calls their data-specific routine - * the specified number of times. - * - * The valid dispatch options we have are: - * - Array and char => char[] handler - * - Generic array handler - * - Generic typedef handler - * - Basic type handler - */ - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - parse = this.types['char[]']['read'](len, - this.endian, buffer, offset); - else - parse = this.readArray(type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - parse = this.types[type['type']]['read'](this.endian, - buffer, offset); - else - parse = this.resolveTypedef(type['type'], 'read', - buffer, offset); - } - - return (parse); -}; - -/* - * [private] Read an array of data - */ -CTypeParser.prototype.readArray = function (type, length, buffer, offset) -{ - var ii, ent, pt; - var baseOffset = offset; - var ret = new Array(length); - pt = ctParseType(type); - - for (ii = 0; ii < length; ii++) { - ent = this.readEntry(pt, buffer, offset); - offset += ent['size']; - ret[ii] = ent['value']; - } - - return ({ value: ret, size: offset - baseOffset }); -}; - -/* - * [private] Read a single struct in. - */ -CTypeParser.prototype.readStruct = function (def, buffer, offset) -{ - var parse, ii, type, entry, key; - var baseOffset = offset; - var ret = {}; - - /* Walk it and handle doing what's necessary */ - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - /* Resolve all array values */ - type = ctParseType(ctResolveArray(entry['type'], ret)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - parse = this.readEntry(type, buffer, offset); - - offset += parse['size']; - ret[key] = parse['value']; - } - - return ({ value: ret, size: (offset-baseOffset)}); -}; - -/* - * This is what we were born to do. We read the data from a buffer and return it - * in an object whose keys match the values from the object. - * - * def The array definition of the data to read in - * - * buffer The buffer to read data from - * - * offset The offset to start writing to - * - * Returns an object where each key corresponds to an entry in def and the value - * is the read value. - */ -CTypeParser.prototype.readData = function (def, buffer, offset) -{ - /* Sanity check for arguments */ - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - /* Sanity check the object definition */ - ctCheckReq(def, this.types); - - return (this.readStruct(def, buffer, offset)['value']); -}; - -/* - * [private] Write out an array of data - */ -CTypeParser.prototype.writeArray = function (value, type, length, buffer, - offset) -{ - var ii, pt; - var baseOffset = offset; - if (!(value instanceof Array)) - throw (new Error('asked to write an array, but value is not ' + - 'an array')); - - if (value.length != length) - throw (new Error('asked to write array of length ' + length + - ' but that does not match value length: ' + value.length)); - - pt = ctParseType(type); - for (ii = 0; ii < length; ii++) - offset += this.writeEntry(value[ii], pt, buffer, offset); - - return (offset - baseOffset); -}; - -/* - * [private] Write the specific entry - */ -CTypeParser.prototype.writeEntry = function (value, type, buffer, offset) -{ - var len, ret; - - if (type['len'] !== undefined) { - len = parseInt(type['len'], 10); - if (isNaN(len)) - throw (new Error('somehow got a non-numeric length')); - - if (type['type'] == 'char') - ret = this.types['char[]']['write'](value, len, - this.endian, buffer, offset); - else - ret = this.writeArray(value, type['type'], - len, buffer, offset); - } else { - if (type['type'] in deftypes) - ret = this.types[type['type']]['write'](value, - this.endian, buffer, offset); - else - ret = this.resolveTypedef(type['type'], 'write', - buffer, offset, value); - } - - return (ret); -}; - -/* - * [private] Write a single struct out. - */ -CTypeParser.prototype.writeStruct = function (value, def, buffer, offset) -{ - var ii, entry, type, key; - var baseOffset = offset; - var vals = {}; - - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - entry = def[ii][key]; - - type = ctParseType(ctResolveArray(entry['type'], vals)); - - if ('offset' in entry) - offset = baseOffset + entry['offset']; - - offset += this.writeEntry(value[ii], type, buffer, offset); - /* Now that we've written it out, we can use it for arrays */ - vals[key] = value[ii]; - } - - return (offset); -}; - -/* - * Unfortunately, we're stuck with the sins of an initial poor design. Because - * of that, we are going to have to support the old way of writing data via - * writeData. There we insert the values that you want to write into the - * definition. A little baroque. Internally, we use the new model. So we need to - * just get those values out of there. But to maintain the principle of least - * surprise, we're not going to modify the input data. - */ -function getValues(def) -{ - var ii, out, key; - out = []; - for (ii = 0; ii < def.length; ii++) { - key = Object.keys(def[ii])[0]; - mod_assert.ok('value' in def[ii][key]); - out.push(def[ii][key]['value']); - } - - return (out); -} - -/* - * This is the second half of what we were born to do, write out the data - * itself. Historically this function required you to put your values in the - * definition section. This was not the smartest thing to do and a bit of an - * oversight to be honest. As such, this function now takes a values argument. - * If values is non-null and non-undefined, it will be used to determine the - * values. This means that the old method is still supported, but is no longer - * acceptable. - * - * def The array definition of the data to write out with - * values - * - * buffer The buffer to write to - * - * offset The offset in the buffer to write to - * - * values An array of values to write. - */ -CTypeParser.prototype.writeData = function (def, buffer, offset, values) -{ - var hv; - - if (def === undefined) - throw (new Error('missing definition for what we should be' + - 'parsing')); - - if (buffer === undefined) - throw (new Error('missing buffer for what we should be ' + - 'parsing')); - - if (offset === undefined) - throw (new Error('missing offset for what we should be ' + - 'parsing')); - - hv = (values != null && values != undefined); - if (hv) { - if (!Array.isArray(values)) - throw (new Error('missing values for writing')); - ctCheckReq(def, this.types); - } else { - ctCheckReq(def, this.types, [ 'value' ]); - } - - this.writeStruct(hv ? values : getValues(def), def, buffer, offset); -}; - -/* - * Functions to go to and from 64 bit numbers in a way that is compatible with - * Javascript limitations. There are two sets. One where the user is okay with - * an approximation and one where they are definitely not okay with an - * approximation. - */ - -/* - * Attempts to convert an array of two integers returned from rsint64 / ruint64 - * into an absolute 64 bit number. If however the value would exceed 2^52 this - * will instead throw an error. The mantissa in a double is a 52 bit number and - * rather than potentially give you a value that is an approximation this will - * error. If you would rather an approximation, please see toApprox64. - * - * val An array of two 32-bit integers - */ -function toAbs64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - /* We have 20 bits worth of precision in this range */ - if (val[0] >= 0x100000) - throw (new Error('value would become approximated')); - - return (val[0] * Math.pow(2, 32) + val[1]); -} - -/* - * Will return the 64 bit value as returned in an array from rsint64 / ruint64 - * to a value as close as it can. Note that Javascript stores all numbers as a - * double and the mantissa only has 52 bits. Thus this version may approximate - * the value. - * - * val An array of two 32-bit integers - */ -function toApprox64(val) -{ - if (val === undefined) - throw (new Error('missing required arg: value')); - - if (!Array.isArray(val)) - throw (new Error('value must be an array')); - - if (val.length != 2) - throw (new Error('value must be an array of length 2')); - - return (Math.pow(2, 32) * val[0] + val[1]); -} - -function parseCTF(json, conf) -{ - var ctype = new CTypeParser(conf); - mod_ctf.ctfParseJson(json, ctype); - - return (ctype); -} - -/* - * Export the few things we actually want to. Currently this is just the CType - * Parser and ctio. - */ -exports.Parser = CTypeParser; -exports.toAbs64 = toAbs64; -exports.toApprox64 = toApprox64; - -exports.parseCTF = parseCTF; - -exports.ruint8 = mod_ctio.ruint8; -exports.ruint16 = mod_ctio.ruint16; -exports.ruint32 = mod_ctio.ruint32; -exports.ruint64 = mod_ctio.ruint64; -exports.wuint8 = mod_ctio.wuint8; -exports.wuint16 = mod_ctio.wuint16; -exports.wuint32 = mod_ctio.wuint32; -exports.wuint64 = mod_ctio.wuint64; - -exports.rsint8 = mod_ctio.rsint8; -exports.rsint16 = mod_ctio.rsint16; -exports.rsint32 = mod_ctio.rsint32; -exports.rsint64 = mod_ctio.rsint64; -exports.wsint8 = mod_ctio.wsint8; -exports.wsint16 = mod_ctio.wsint16; -exports.wsint32 = mod_ctio.wsint32; -exports.wsint64 = mod_ctio.wsint64; - -exports.rfloat = mod_ctio.rfloat; -exports.rdouble = mod_ctio.rdouble; -exports.wfloat = mod_ctio.wfloat; -exports.wdouble = mod_ctio.wdouble; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/man/man3ctype/ctio.3ctype b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/man/man3ctype/ctio.3ctype deleted file mode 100644 index 3f94986a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/man/man3ctype/ctio.3ctype +++ /dev/null @@ -1,241 +0,0 @@ -'\" te -.\" Copyright (c) 2011, Robert Mustacchi. All Rights Reserved. -.\" Copyright (c) 2011, Joyent, Inc. All Rights Reserved. -.\" -.\" 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. -.TH CTIO 3CTYPE "December 12, 2011" -.SH NAME -ctio, ruint8, ruint16, ruint32, ruint64, wuint8, wuint16, wuint32, wuint64, -rsint8, rsint16, rsint32, rsint64, wsint8, wsint16, wsint32, wsint64, rfloat, -rdouble, wfloat, wdouble \- integer and float operations -.SH SYNOPSIS -.LP -.nf -var mod_ctype = require('ctype'); - -\fBNumber\fR \fBmod_ctype.ruint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.ruint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.ruint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint8\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint16\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rsint32\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber[2]\fR \fBmod_ctype.rsint64\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rfloat\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBNumber\fR \fBmod_ctype.rdouble\fR(\fBBuffer\fR \fIbuf\fR, \fBString\fR \fIendian\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wuint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint8\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint16\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint32\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wsint64\fR(\fBNumber[2]\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wfloat\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.LP -.nf -\fBvoid\fR \fBmod_ctype.wdouble\fR(\fBNumber\fR value, \fBString\fR \fIendian\fR, \fBBuffer\fR \fIbuf\fR, \fBNumber\fR \fIoffset\fR); -.fi - -.SH DESCRIPTION -.sp -.LP -The argument \fIbuf\fR refers to a valid buffer (from calling new Buffer()). The -argument \fIendian\fR is either the string 'big' or 'little' and controls -whether the data in the buffer is interpreted as big or little endian. The argument -\fIoffset\fR indicates the starting index into the buffer to read or write. All -functions ensure that starting at \fIoffset\fR does not overflow the end of the -buffer. The argument \fIvalue\fR is a Number that is the valid type for the -specific function. All functions that take \fIvalue\fR as an argument, verify -that the passed value is valid. - -.SS "\fBruint8()\fR, \fBruint16()\fR, \fBruint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions read an 8, -16, and 32-bit unsigned value from \fIbuf\fR and return it. The value read is -influenced by the values of \fIoffset\fR and \fRendian\fI. - - -.SS "\fBrsint8()\fR, \fBrsint16()\fR, \fBrsint32()\fR" -.sp -.LP -The \fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR functions work just as -\fBruint8()\fR, \fBruint16()\fR, and \fBruint32()\fR, except they return signed -integers. - -.SS "\fBruint64()\fR, \fBrsint64()\fR" -.sp -.LP -The \fBruint64()\fR and \fBrsint64()\fR functions read unsigned and signed 64 -bit integers respectively from \fBbuf\fR. Due to the limitations of ECMAScript's -\fBNumber\fR type, they cannot be stored as one value without a loss of -precision. Instead of returning the values as a single \fBNumber\fR, the -functions return an array of two numbers. The first entry always contains the -upper 32-bits and the second value contains the lower 32-bits. The lossy -transformation into a number would be \fIres[0]*Math.pow(2,32)+res[1]\fR. -Note that, unless an entry is zero, both array entries are guaranteed to have -the same sign. - -.SS "\fBwuint8()\fR, \fBwuint16()\fR, \fBwuint32()\fR" -.sp -.LP -The functions \fBwuint8()\fR, \fBwuint16()\fR, and \fBwuint32()\fR modify the -contents of \fBbuf\fR by writing an 8, 16, and 32-bit unsigned integer -respectively to \fBbuf\fR. It is illegal to pass a number that is not an integer -within the domain of the integer size, for example, for \fBwuint8()\fR the valid -range is \fB[0, 255]\fR. The value will be written in either big or little -endian format based upon the value of \fBendian\fR. - - -.SS "\fBwsint8()\fR, \fBwsint16()\fR, \fBwsint32()\fR" -.sp -.LP -The functions \fBwsint8()\fR, \fBwsint16()\fR, and \fBwsint32()\fR function -identically to the functions \fBwuint8()\fR, \fBwuint16()\fR, and -\fBwuint32()\fR except that they the valid domain for \fBvalue\fR is that of a -signed number instead of an unsigned number. For example the \fBwsint8()\fR has -a domain of \fB[-128, 127]\fR. - -.SS "\fBwuint64()\fR, \fBwsint64()\fR" -.sp -.LP -The functions \fBwuint64()\fR and \fBswint64()\fR write out 64-bit unsigned and -signed integers to \fBbuf\fR. The \fBvalue\fR argument must be in the same -format as described in \fBruint64()\fR and \fBrsint64()\fR. - -.SS "\fBrfloat()\fR, \fBrdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other read -functions, except that they read a single precision and double precision -IEEE-754 floating point value instead. - -.SS "\fBwfloat()\fR, \fBwdouble()\fR" -.sp -.LP -The functions "\fBrfloat()\fR and \fBrdouble()\fR" work like the other write -functions, except that the domain for a float is that of a single precision 4 -byte value. The domain for a double is any \fBNumber\fR in ECMAScript, which is -defined to be represented by a double. - -.SH ATTRIBUTES -.sp -.LP -See \fBattributes\fR(5) for descriptions of the following attributes: -.sp - -.sp -.TS -box; -c | c -l | l . -ATTRIBUTE TYPE ATTRIBUTE VALUE -_ -Interface Stability Committed -_ -MT-Level See below. -_ -Standard Not standardized. -.TE - -.sp -.LP - -All functions are MT-safe in so far as there aren't shared memory MT concerns in -most node programs. If one where to concoct such an environment, these functions -wouldn't be MT-safe. - -.SH SEE ALSO -.sp -.LP diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/package.json deleted file mode 100644 index fce46cb9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_args": [ - [ - "ctype@0.5.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature" - ] - ], - "_from": "ctype@0.5.3", - "_id": "ctype@0.5.3", - "_inCache": true, - "_installable": true, - "_location": "/ctype", - "_npmUser": { - "email": "rm@fingolfin.org", - "name": "rm" - }, - "_npmVersion": "1.1.59", - "_phantomChildren": {}, - "_requested": { - "name": "ctype", - "raw": "ctype@0.5.3", - "rawSpec": "0.5.3", - "scope": null, - "spec": "0.5.3", - "type": "version" - }, - "_requiredBy": [ - "/http-signature" - ], - "_resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "_shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f", - "_shrinkwrap": null, - "_spec": "ctype@0.5.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/http-signature", - "author": { - "email": "rm@fingolfin.org", - "name": "Robert Mustacchi" - }, - "bugs": { - "url": "https://github.com/rmustacc/node-ctype/issues" - }, - "dependencies": {}, - "description": "read and write binary structures and data types", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "82c18c2461f74114ef16c135224ad0b9144ca12f", - "tarball": "http://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - }, - "engines": { - "node": ">= 0.4" - }, - "homepage": "https://github.com/rmustacc/node-ctype", - "main": "ctype.js", - "maintainers": [ - { - "email": "rm@fingolfin.org", - "name": "rm" - } - ], - "name": "ctype", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rmustacc/node-ctype.git" - }, - "version": "0.5.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsl.conf b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsl.conf deleted file mode 100755 index 845f367a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsl.conf +++ /dev/null @@ -1,129 +0,0 @@ -# -# Configuration File for JavaScript Lint 0.3.0 -# Developed by Matthias Miller (http://www.JavaScriptLint.com) -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+no_return_value # function {0} does not always return a value -+duplicate_formal # duplicate formal argument {0} -+equal_as_assign # test for equality (==) mistyped as assignment (=)?{0} -+var_hides_arg # variable {0} hides argument -+redeclared_var # redeclaration of {0} {1} -+anon_no_return_value # anonymous function does not always return a value -+missing_semicolon # missing semicolon -+meaningless_block # meaningless block; curly braces have no impact -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+unreachable_code # unreachable code -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+useless_void # use of the void type may be unnecessary (void is always undefined) --useless_quotes # quotation marks are unnecessary -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+use_of_label # use of label --block_without_braces # block statement without curly braces -+leading_decimal_point # leading decimal point may indicate a number or an object member -+trailing_decimal_point # trailing decimal point may indicate a number or an object member --octal_number # leading zeros make an octal number -+nested_comment # nested comment -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+empty_statement # empty statement or extra semicolon --missing_option_explicit # the "option explicit" control comment is missing -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+dup_option_explicit # duplicate "option explicit" control comment -+useless_assign # useless assignment -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent) -+missing_default_case # missing default case in switch statement -+duplicate_case_in_switch # duplicate case in switch statements -+default_not_at_end # the default case is not at the end of the switch statement -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+useless_comparison # useless comparison; comparing identical expressions -+with_statement # with statement hides undeclared variables; use temporary variable instead -+trailing_comma_in_array # extra comma is not recommended in array initializers -+assign_to_function_call # assignment to a function call -+parseint_missing_radix # parseInt missing radix parameter --unreferenced_argument # argument declared but never referenced: {name} - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __ERROR__ indicates error message -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Semicolons -# By default, assignments of an anonymous function to a variable or -# property (such as a function prototype) must be followed by a semicolon. -# -#+lambda_assign_requires_semicolon # deprecated setting - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# -+legacy_control_comments - - -### JScript Function Extensions -# JScript allows member functions to be defined like this: -# function MyObj() { /*constructor*/ } -# function MyObj.prototype.go() { /*member function*/ } -# -# It also allows events to be attached like this: -# function window::onload() { /*init page*/ } -# -# This is a Microsoft-only JavaScript extension. Enable this setting to allow them. -# -#-jscript_function_extensions # deprecated setting - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -#+define window -#+define document -+define require -+define exports -+define console -+define Buffer -+define JSON - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# -#+process jsl-test.js diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsstyle b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsstyle deleted file mode 100755 index 96c72b6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ctype/tools/jsstyle +++ /dev/null @@ -1,839 +0,0 @@ -#!/usr/bin/env perl -# -# CDDL HEADER START -# -# The contents of this file are subject to the terms of the -# Common Development and Distribution License (the "License"). -# You may not use this file except in compliance with the License. -# -# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE -# or http://www.opensolaris.org/os/licensing. -# See the License for the specific language governing permissions -# and limitations under the License. -# -# When distributing Covered Code, include this CDDL HEADER in each -# file and include the License file at usr/src/OPENSOLARIS.LICENSE. -# If applicable, add the following below this CDDL HEADER, with the -# fields enclosed by brackets "[]" replaced with your own identifying -# information: Portions Copyright [yyyy] [name of copyright owner] -# -# CDDL HEADER END -# -# -# Copyright 2008 Sun Microsystems, Inc. All rights reserved. -# Use is subject to license terms. -# -# Copyright 2011 Joyent, Inc. All rights reserved. -# -# jsstyle - check for some common stylistic errors. -# -# jsstyle is a sort of "lint" for Javascript coding style. This tool is -# derived from the cstyle tool, used to check for the style used in the -# Solaris kernel, sometimes known as "Bill Joy Normal Form". -# -# There's a lot this can't check for, like proper indentation of code -# blocks. There's also a lot more this could check for. -# -# A note to the non perl literate: -# -# perl regular expressions are pretty much like egrep -# regular expressions, with the following special symbols -# -# \s any space character -# \S any non-space character -# \w any "word" character [a-zA-Z0-9_] -# \W any non-word character -# \d a digit [0-9] -# \D a non-digit -# \b word boundary (between \w and \W) -# \B non-word boundary -# - -require 5.0; -use IO::File; -use Getopt::Std; -use strict; - -my $usage = -"usage: jsstyle [-chvC] [-o constructs] file ... - -c check continuation indentation inside functions - -h perform heuristic checks that are sometimes wrong - -v verbose - -C don't check anything in header block comments - -o constructs - allow a comma-seperated list of optional constructs: - doxygen allow doxygen-style block comments (/** /*!) - splint allow splint-style lint comments (/*@ ... @*/) -"; - -my %opts; - -if (!getopts("cho:vC", \%opts)) { - print $usage; - exit 2; -} - -my $check_continuation = $opts{'c'}; -my $heuristic = $opts{'h'}; -my $verbose = $opts{'v'}; -my $ignore_hdr_comment = $opts{'C'}; - -my $doxygen_comments = 0; -my $splint_comments = 0; - -if (defined($opts{'o'})) { - for my $x (split /,/, $opts{'o'}) { - if ($x eq "doxygen") { - $doxygen_comments = 1; - } elsif ($x eq "splint") { - $splint_comments = 1; - } else { - print "jsstyle: unrecognized construct \"$x\"\n"; - print $usage; - exit 2; - } - } -} - -my ($filename, $line, $prev); # shared globals - -my $fmt; -my $hdr_comment_start; - -if ($verbose) { - $fmt = "%s: %d: %s\n%s\n"; -} else { - $fmt = "%s: %d: %s\n"; -} - -if ($doxygen_comments) { - # doxygen comments look like "/*!" or "/**"; allow them. - $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/; -} else { - $hdr_comment_start = qr/^\s*\/\*$/; -} - -# Note, following must be in single quotes so that \s and \w work right. -my $lint_re = qr/\/\*(?: - jsl:\w+?|ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*| - CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY| - FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*| - PROTOLIB[0-9]*|SCANFLIKE[0-9]*|JSSTYLED.*? - )\*\//x; - -my $splint_re = qr/\/\*@.*?@\*\//x; - -my $err_stat = 0; # exit status - -if ($#ARGV >= 0) { - foreach my $arg (@ARGV) { - my $fh = new IO::File $arg, "r"; - if (!defined($fh)) { - printf "%s: cannot open\n", $arg; - } else { - &jsstyle($arg, $fh); - close $fh; - } - } -} else { - &jsstyle("", *STDIN); -} -exit $err_stat; - -my $no_errs = 0; # set for JSSTYLED-protected lines - -sub err($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $line; - $err_stat = 1; - } -} - -sub err_prefix($$) { - my ($prevline, $error) = @_; - my $out = $prevline."\n".$line; - unless ($no_errs) { - printf $fmt, $filename, $., $error, $out; - $err_stat = 1; - } -} - -sub err_prev($) { - my ($error) = @_; - unless ($no_errs) { - printf $fmt, $filename, $. - 1, $error, $prev; - $err_stat = 1; - } -} - -sub jsstyle($$) { - -my ($fn, $filehandle) = @_; -$filename = $fn; # share it globally - -my $in_cpp = 0; -my $next_in_cpp = 0; - -my $in_comment = 0; -my $in_header_comment = 0; -my $comment_done = 0; -my $in_function = 0; -my $in_function_header = 0; -my $in_declaration = 0; -my $note_level = 0; -my $nextok = 0; -my $nocheck = 0; - -my $in_string = 0; - -my ($okmsg, $comment_prefix); - -$line = ''; -$prev = ''; -reset_indent(); - -line: while (<$filehandle>) { - s/\r?\n$//; # strip return and newline - - # save the original line, then remove all text from within - # double or single quotes, we do not want to check such text. - - $line = $_; - - # - # C allows strings to be continued with a backslash at the end of - # the line. We translate that into a quoted string on the previous - # line followed by an initial quote on the next line. - # - # (we assume that no-one will use backslash-continuation with character - # constants) - # - $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment); - - # - # normal strings and characters - # - s/'([^\\']|\\.)*'/\'\'/g; - s/"([^\\"]|\\.)*"/\"\"/g; - - # - # detect string continuation - # - if ($nocheck || $in_comment) { - $in_string = 0; - } else { - # - # Now that all full strings are replaced with "", we check - # for unfinished strings continuing onto the next line. - # - $in_string = - (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ || - s/^("")*"([^\\"]|\\.)*\\$/""/); - } - - # - # figure out if we are in a cpp directive - # - $in_cpp = $next_in_cpp || /^\s*#/; # continued or started - $next_in_cpp = $in_cpp && /\\$/; # only if continued - - # strip off trailing backslashes, which appear in long macros - s/\s*\\$//; - - # an /* END JSSTYLED */ comment ends a no-check block. - if ($nocheck) { - if (/\/\* *END *JSSTYLED *\*\//) { - $nocheck = 0; - } else { - reset_indent(); - next line; - } - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if ($nextok) { - if ($okmsg) { - err($okmsg); - } - $nextok = 0; - $okmsg = 0; - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - $no_errs = 1; - } elsif ($no_errs) { - $no_errs = 0; - } - - # check length of line. - # first, a quick check to see if there is any chance of being too long. - if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) { - # yes, there is a chance. - # replace tabs with spaces and check again. - my $eline = $line; - 1 while $eline =~ - s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; - if (length($eline) > 80) { - err("line > 80 characters"); - } - } - - # ignore NOTE(...) annotations (assumes NOTE is on lines by itself). - if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE - s/[^()]//g; # eliminate all non-parens - $note_level += s/\(//g - length; # update paren nest level - next; - } - - # a /* BEGIN JSSTYLED */ comment starts a no-check block. - if (/\/\* *BEGIN *JSSTYLED *\*\//) { - $nocheck = 1; - } - - # a /*JSSTYLED*/ comment indicates that the next line is ok. - if (/\/\* *JSSTYLED.*\*\//) { - /^.*\/\* *JSSTYLED *(.*) *\*\/.*$/; - $okmsg = $1; - $nextok = 1; - } - if (/\/\/ *JSSTYLED/) { - /^.*\/\/ *JSSTYLED *(.*)$/; - $okmsg = $1; - $nextok = 1; - } - - # universal checks; apply to everything - if (/\t +\t/) { - err("spaces between tabs"); - } - if (/ \t+ /) { - err("tabs between spaces"); - } - if (/\s$/) { - err("space or tab at end of line"); - } - if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) { - err("comment preceded by non-blank"); - } - - # is this the beginning or ending of a function? - # (not if "struct foo\n{\n") - if (/^{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) { - $in_function = 1; - $in_declaration = 1; - $in_function_header = 0; - $prev = $line; - next line; - } - if (/^}\s*(\/\*.*\*\/\s*)*$/) { - if ($prev =~ /^\s*return\s*;/) { - err_prev("unneeded return at end of function"); - } - $in_function = 0; - reset_indent(); # we don't check between functions - $prev = $line; - next line; - } - if (/^\w*\($/) { - $in_function_header = 1; - } - - # a blank line terminates the declarations within a function. - # XXX - but still a problem in sub-blocks. - if ($in_declaration && /^$/) { - $in_declaration = 0; - } - - if ($comment_done) { - $in_comment = 0; - $in_header_comment = 0; - $comment_done = 0; - } - # does this looks like the start of a block comment? - if (/$hdr_comment_start/) { - if (!/^\t*\/\*/) { - err("block comment not indented by tabs"); - } - $in_comment = 1; - /^(\s*)\//; - $comment_prefix = $1; - if ($comment_prefix eq "") { - $in_header_comment = 1; - } - $prev = $line; - next line; - } - # are we still in the block comment? - if ($in_comment) { - if (/^$comment_prefix \*\/$/) { - $comment_done = 1; - } elsif (/\*\//) { - $comment_done = 1; - err("improper block comment close") - unless ($ignore_hdr_comment && $in_header_comment); - } elsif (!/^$comment_prefix \*[ \t]/ && - !/^$comment_prefix \*$/) { - err("improper block comment") - unless ($ignore_hdr_comment && $in_header_comment); - } - } - - if ($in_header_comment && $ignore_hdr_comment) { - $prev = $line; - next line; - } - - # check for errors that might occur in comments and in code. - - # allow spaces to be used to draw pictures in header comments. - #if (/[^ ] / && !/".* .*"/ && !$in_header_comment) { - # err("spaces instead of tabs"); - #} - #if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ && - # (!/^ \w/ || $in_function != 0)) { - # err("indent by spaces instead of tabs"); - #} - if (/^ {2,}/ && !/^ [^ ]/) { - err("indent by spaces instead of tabs"); - } - if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) { - err("continuation line not indented by 4 spaces"); - } - - if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) { - err("improper first line of block comment"); - } - - if ($in_comment) { # still in comment, don't do further checks - $prev = $line; - next line; - } - - if ((/[^(]\/\*\S/ || /^\/\*\S/) && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank after open comment"); - } - if (/\S\*\/[^)]|\S\*\/$/ && - !(/$lint_re/ || ($splint_comments && /$splint_re/))) { - err("missing blank before close comment"); - } - if (/\/\/\S/) { # C++ comments - err("missing blank after start comment"); - } - # check for unterminated single line comments, but allow them when - # they are used to comment out the argument list of a function - # declaration. - if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) { - err("unterminated single line comment"); - } - - if (/^(#else|#endif|#include)(.*)$/) { - $prev = $line; - next line; - } - - # - # delete any comments and check everything else. Note that - # ".*?" is a non-greedy match, so that we don't get confused by - # multiple comments on the same line. - # - s/\/\*.*?\*\///g; - s/\/\/.*$//; # C++ comments - - # delete any trailing whitespace; we have already checked for that. - s/\s*$//; - - # following checks do not apply to text in comments. - if (/"/) { - err("literal string using double-quote instead of single"); - } - - if (/[^=!<>\s][!<>=]=/ || /[^<>!=][!<>=]==?[^\s,=]/ || - (/[^->]>[^,=>\s]/ && !/[^->]>$/) || - (/[^<]<[^,=<\s]/ && !/[^<]<$/) || - /[^<\s]<[^<]/ || /[^->\s]>[^>]/) { - err("missing space around relational operator"); - } - if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ || - (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) || - (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) { - # XXX - should only check this for C++ code - # XXX - there are probably other forms that should be allowed - if (!/\soperator=/) { - err("missing space around assignment operator"); - } - } - if (/[,;]\S/ && !/\bfor \(;;\)/) { - err("comma or semicolon followed by non-blank"); - } - # allow "for" statements to have empty "while" clauses - if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) { - err("comma or semicolon preceded by blank"); - } - if (/^\s*(&&|\|\|)/) { - err("improper boolean continuation"); - } - if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) { - err("more than one space around boolean operator"); - } - if (/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\(/) { - err("missing space between keyword and paren"); - } - if (/(\b(catch|for|if|with|while|switch|return)\b.*){2,}/) { - # multiple "case" and "sizeof" allowed - err("more than one keyword on line"); - } - if (/\b(delete|typeof|instanceOf|with|throw|catch|new|function|in|for|if|while|switch|return|case)\s\s+\(/ && - !/^#if\s+\(/) { - err("extra space between keyword and paren"); - } - # try to detect "func (x)" but not "if (x)" or - # "#define foo (x)" or "int (*func)();" - if (/\w\s\(/) { - my $s = $_; - # strip off all keywords on the line - s/\b(delete|typeof|instanceOf|throw|with|catch|new|function|in|for|if|while|switch|return|case)\s\(/XXX(/g; - s/#elif\s\(/XXX(/g; - s/^#define\s+\w+\s+\(/XXX(/; - # do not match things like "void (*f)();" - # or "typedef void (func_t)();" - s/\w\s\(+\*/XXX(*/g; - s/\b(void)\s+\(+/XXX(/og; - if (/\w\s\(/) { - err("extra space between function name and left paren"); - } - $_ = $s; - } - - if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) { - err("unparenthesized return expression"); - } - if (/\btypeof\b/ && !/\btypeof\s*\(.*\)/) { - err("unparenthesized typeof expression"); - } - if (/\(\s/) { - err("whitespace after left paren"); - } - # allow "for" statements to have empty "continue" clauses - if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/) { - err("whitespace before right paren"); - } - if (/^\s*\(void\)[^ ]/) { - err("missing space after (void) cast"); - } - if (/\S{/ && !/({|\(){/) { - err("missing space before left brace"); - } - if ($in_function && /^\s+{/ && - ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) { - err("left brace starting a line"); - } - if (/}(else|while)/) { - err("missing space after right brace"); - } - if (/}\s\s+(else|while)/) { - err("extra space after right brace"); - } - if (/^\s+#/) { - err("preprocessor statement not in column 1"); - } - if (/^#\s/) { - err("blank after preprocessor #"); - } - - # - # We completely ignore, for purposes of indentation: - # * lines outside of functions - # * preprocessor lines - # - if ($check_continuation && $in_function && !$in_cpp) { - process_indent($_); - } - - if ($heuristic) { - # cannot check this everywhere due to "struct {\n...\n} foo;" - if ($in_function && !$in_declaration && - /}./ && !/}\s+=/ && !/{.*}[;,]$/ && !/}(\s|)*$/ && - !/} (else|while)/ && !/}}/) { - err("possible bad text following right brace"); - } - # cannot check this because sub-blocks in - # the middle of code are ok - if ($in_function && /^\s+{/) { - err("possible left brace starting a line"); - } - } - if (/^\s*else\W/) { - if ($prev =~ /^\s*}$/) { - err_prefix($prev, - "else and right brace should be on same line"); - } - } - $prev = $line; -} - -if ($prev eq "") { - err("last line in file is blank"); -} - -} - -# -# Continuation-line checking -# -# The rest of this file contains the code for the continuation checking -# engine. It's a pretty simple state machine which tracks the expression -# depth (unmatched '('s and '['s). -# -# Keep in mind that the argument to process_indent() has already been heavily -# processed; all comments have been replaced by control-A, and the contents of -# strings and character constants have been elided. -# - -my $cont_in; # currently inside of a continuation -my $cont_off; # skipping an initializer or definition -my $cont_noerr; # suppress cascading errors -my $cont_start; # the line being continued -my $cont_base; # the base indentation -my $cont_first; # this is the first line of a statement -my $cont_multiseg; # this continuation has multiple segments - -my $cont_special; # this is a C statement (if, for, etc.) -my $cont_macro; # this is a macro -my $cont_case; # this is a multi-line case - -my @cont_paren; # the stack of unmatched ( and [s we've seen - -sub -reset_indent() -{ - $cont_in = 0; - $cont_off = 0; -} - -sub -delabel($) -{ - # - # replace labels with tabs. Note that there may be multiple - # labels on a line. - # - local $_ = $_[0]; - - while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) { - my ($pre_tabs, $label, $rest) = ($1, $2, $3); - $_ = $pre_tabs; - while ($label =~ s/^([^\t]*)(\t+)//) { - $_ .= "\t" x (length($2) + length($1) / 8); - } - $_ .= ("\t" x (length($label) / 8)).$rest; - } - - return ($_); -} - -sub -process_indent($) -{ - require strict; - local $_ = $_[0]; # preserve the global $_ - - s///g; # No comments - s/\s+$//; # Strip trailing whitespace - - return if (/^$/); # skip empty lines - - # regexps used below; keywords taking (), macros, and continued cases - my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b'; - my $macro = '[A-Z_][A-Z_0-9]*\('; - my $case = 'case\b[^:]*$'; - - # skip over enumerations, array definitions, initializers, etc. - if ($cont_off <= 0 && !/^\s*$special/ && - (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*)){/ || - (/^\s*{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) { - $cont_in = 0; - $cont_off = tr/{/{/ - tr/}/}/; - return; - } - if ($cont_off) { - $cont_off += tr/{/{/ - tr/}/}/; - return; - } - - if (!$cont_in) { - $cont_start = $line; - - if (/^\t* /) { - err("non-continuation indented 4 spaces"); - $cont_noerr = 1; # stop reporting - } - $_ = delabel($_); # replace labels with tabs - - # check if the statement is complete - return if (/^\s*\}?$/); - return if (/^\s*\}?\s*else\s*\{?$/); - return if (/^\s*do\s*\{?$/); - return if (/{$/); - return if (/}[,;]?$/); - - # Allow macros on their own lines - return if (/^\s*[A-Z_][A-Z_0-9]*$/); - - # cases we don't deal with, generally non-kosher - if (/{/) { - err("stuff after {"); - return; - } - - # Get the base line, and set up the state machine - /^(\t*)/; - $cont_base = $1; - $cont_in = 1; - @cont_paren = (); - $cont_first = 1; - $cont_multiseg = 0; - - # certain things need special processing - $cont_special = /^\s*$special/? 1 : 0; - $cont_macro = /^\s*$macro/? 1 : 0; - $cont_case = /^\s*$case/? 1 : 0; - } else { - $cont_first = 0; - - # Strings may be pulled back to an earlier (half-)tabstop - unless ($cont_noerr || /^$cont_base / || - (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) { - err_prefix($cont_start, - "continuation should be indented 4 spaces"); - } - } - - my $rest = $_; # keeps the remainder of the line - - # - # The split matches 0 characters, so that each 'special' character - # is processed separately. Parens and brackets are pushed and - # popped off the @cont_paren stack. For normal processing, we wait - # until a ; or { terminates the statement. "special" processing - # (if/for/while/switch) is allowed to stop when the stack empties, - # as is macro processing. Case statements are terminated with a : - # and an empty paren stack. - # - foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) { - next if (length($_) == 0); - - # rest contains the remainder of the line - my $rxp = "[^\Q$_\E]*\Q$_\E"; - $rest =~ s/^$rxp//; - - if (/\(/ || /\[/) { - push @cont_paren, $_; - } elsif (/\)/ || /\]/) { - my $cur = $_; - tr/\)\]/\(\[/; - - my $old = (pop @cont_paren); - if (!defined($old)) { - err("unexpected '$cur'"); - $cont_in = 0; - last; - } elsif ($old ne $_) { - err("'$cur' mismatched with '$old'"); - $cont_in = 0; - last; - } - - # - # If the stack is now empty, do special processing - # for if/for/while/switch and macro statements. - # - next if (@cont_paren != 0); - if ($cont_special) { - if ($rest =~ /^\s*{?$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*;$/) { - err("empty if/for/while body ". - "not on its own line"); - $cont_in = 0; - last; - } - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - # We've finished this section, start - # processing the next. - goto section_ended; - } - if ($cont_macro) { - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - } - } elsif (/\;/) { - if ($cont_case) { - err("unexpected ;"); - } elsif (!$cont_special) { - err("unexpected ;") if (@cont_paren != 0); - if (!$cont_first && $cont_multiseg == 1) { - err_prefix($cont_start, - "multiple statements continued ". - "over multiple lines"); - $cont_multiseg = 2; - } elsif ($cont_multiseg == 0) { - $cont_multiseg = 1; - } - if ($rest =~ /^$/) { - $cont_in = 0; - last; - } - if ($rest =~ /^\s*special/) { - err("if/for/while/switch not started ". - "on its own line"); - } - goto section_ended; - } - } elsif (/\{/) { - err("{ while in parens/brackets") if (@cont_paren != 0); - err("stuff after {") if ($rest =~ /[^\s}]/); - $cont_in = 0; - last; - } elsif (/\}/) { - err("} while in parens/brackets") if (@cont_paren != 0); - if (!$cont_special && $rest !~ /^\s*(while|else)\b/) { - if ($rest =~ /^$/) { - err("unexpected }"); - } else { - err("stuff after }"); - } - $cont_in = 0; - last; - } - } elsif (/\:/ && $cont_case && @cont_paren == 0) { - err("stuff after multi-line case") if ($rest !~ /$^/); - $cont_in = 0; - last; - } - next; -section_ended: - # End of a statement or if/while/for loop. Reset - # cont_special and cont_macro based on the rest of the - # line. - $cont_special = ($rest =~ /^\s*$special/)? 1 : 0; - $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0; - $cont_case = 0; - next; - } - $cont_noerr = 0 if (!$cont_in); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/README.md deleted file mode 100644 index e47b106e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/README.md +++ /dev/null @@ -1,574 +0,0 @@ -A light, featureful and explicit option parsing library for node.js. - -[Why another one? See below](#why). tl;dr: The others I've tried are one of -too loosey goosey (not explicit), too big/too many deps, or ill specified. -YMMV. - -Follow @trentmick -for updates to node-dashdash. - -# Install - - npm install dashdash - - -# Usage - -```javascript -var dashdash = require('dashdash'); - -// Specify the options. Minimally `name` (or `names`) and `type` -// must be given for each. -var options = [ - { - // `names` or a single `name`. First element is the `opts.KEY`. - names: ['help', 'h'], - // See "Option specs" below for types. - type: 'bool', - help: 'Print this help and exit.' - } -]; - -// Shortcut form. As called it infers `process.argv`. See below for -// the longer form to use methods like `.help()` on the Parser object. -var opts = dashdash.parse({options: options}); - -console.log("opts:", opts); -console.log("args:", opts._args); -``` - - -# Longer Example - -A more realistic [starter script "foo.js"](./examples/foo.js) is as follows. -This also shows using `parser.help()` for formatted option help. - -```javascript -var dashdash = require('./lib/dashdash'); - -var options = [ - { - name: 'version', - type: 'bool', - help: 'Print tool version and exit.' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Print this help and exit.' - }, - { - names: ['verbose', 'v'], - type: 'arrayOfBool', - help: 'Verbose output. Use multiple times for more verbose.' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'File to process', - helpArg: 'FILE' - } -]; - -var parser = dashdash.createParser({options: options}); -try { - var opts = parser.parse(process.argv); -} catch (e) { - console.error('foo: error: %s', e.message); - process.exit(1); -} - -console.log("# opts:", opts); -console.log("# args:", opts._args); - -// Use `parser.help()` for formatted options help. -if (opts.help) { - var help = parser.help({includeEnv: true}).trimRight(); - console.log('usage: node foo.js [OPTIONS]\n' - + 'options:\n' - + help); - process.exit(0); -} - -// ... -``` - - -Some example output from this script (foo.js): - -``` -$ node foo.js -h -# opts: { help: true, - _order: [ { name: 'help', value: true, from: 'argv' } ], - _args: [] } -# args: [] -usage: node foo.js [OPTIONS] -options: - --version Print tool version and exit. - -h, --help Print this help and exit. - -v, --verbose Verbose output. Use multiple times for more verbose. - -f FILE, --file=FILE File to process - -$ node foo.js -v -# opts: { verbose: [ true ], - _order: [ { name: 'verbose', value: true, from: 'argv' } ], - _args: [] } -# args: [] - -$ node foo.js --version arg1 -# opts: { version: true, - _order: [ { name: 'version', value: true, from: 'argv' } ], - _args: [ 'arg1' ] } -# args: [ 'arg1' ] - -$ node foo.js -f bar.txt -# opts: { file: 'bar.txt', - _order: [ { name: 'file', value: 'bar.txt', from: 'argv' } ], - _args: [] } -# args: [] - -$ node foo.js -vvv --file=blah -# opts: { verbose: [ true, true, true ], - file: 'blah', - _order: - [ { name: 'verbose', value: true, from: 'argv' }, - { name: 'verbose', value: true, from: 'argv' }, - { name: 'verbose', value: true, from: 'argv' }, - { name: 'file', value: 'blah', from: 'argv' } ], - _args: [] } -# args: [] -``` - - -See the ["examples"](examples/) dir for a number of starter examples using -some of dashdash's features. - - -# Environment variable integration - -If you want to allow environment variables to specify options to your tool, -dashdash makes this easy. We can change the 'verbose' option in the example -above to include an 'env' field: - -```javascript - { - names: ['verbose', 'v'], - type: 'arrayOfBool', - env: 'FOO_VERBOSE', // <--- add this line - help: 'Verbose output. Use multiple times for more verbose.' - }, -``` - -then the **"FOO_VERBOSE" environment variable** can be used to set this -option: - -```shell -$ FOO_VERBOSE=1 node foo.js -# opts: { verbose: [ true ], - _order: [ { name: 'verbose', value: true, from: 'env' } ], - _args: [] } -# args: [] -``` - -Boolean options will interpret the empty string as unset, '0' as false -and anything else as true. - -```shell -$ FOO_VERBOSE= node examples/foo.js # not set -# opts: { _order: [], _args: [] } -# args: [] - -$ FOO_VERBOSE=0 node examples/foo.js # '0' is false -# opts: { verbose: [ false ], - _order: [ { key: 'verbose', value: false, from: 'env' } ], - _args: [] } -# args: [] - -$ FOO_VERBOSE=1 node examples/foo.js # true -# opts: { verbose: [ true ], - _order: [ { key: 'verbose', value: true, from: 'env' } ], - _args: [] } -# args: [] - -$ FOO_VERBOSE=boogabooga node examples/foo.js # true -# opts: { verbose: [ true ], - _order: [ { key: 'verbose', value: true, from: 'env' } ], - _args: [] } -# args: [] -``` - -Non-booleans can be used as well. Strings: - -```shell -$ FOO_FILE=data.txt node examples/foo.js -# opts: { file: 'data.txt', - _order: [ { key: 'file', value: 'data.txt', from: 'env' } ], - _args: [] } -# args: [] -``` - -Numbers: - -```shell -$ FOO_TIMEOUT=5000 node examples/foo.js -# opts: { timeout: 5000, - _order: [ { key: 'timeout', value: 5000, from: 'env' } ], - _args: [] } -# args: [] - -$ FOO_TIMEOUT=blarg node examples/foo.js -foo: error: arg for "FOO_TIMEOUT" is not a positive integer: "blarg" -``` - -With the `includeEnv: true` config to `parser.help()` the environment -variable can also be included in **help output**: - - usage: node foo.js [OPTIONS] - options: - --version Print tool version and exit. - -h, --help Print this help and exit. - -v, --verbose Verbose output. Use multiple times for more verbose. - Environment: FOO_VERBOSE=1 - -f FILE, --file=FILE File to process - - -# Bash completion - -Dashdash provides a simple way to create a Bash completion file that you -can place in your "bash_completion.d" directory -- sometimes that is -"/usr/local/etc/bash_completion.d/"). Features: - -- Support for short and long opts -- Support for knowing which options take arguments -- Support for subcommands (e.g. 'git log ' to show just options for the - log subcommand). See - [node-cmdln](https://github.com/trentm/node-cmdln#bash-completion) for - how to integrate that. -- Does the right thing with "--" to stop options. -- Custom optarg and arg types for custom completions. - -Dashdash will return bash completion file content given a parser instance: - - var parser = dashdash.createParser({options: options}); - console.log( parser.bashCompletion({name: 'mycli'}) ); - -or directly from a `options` array of options specs: - - var code = dashdash.bashCompletionFromOptions({ - name: 'mycli', - options: OPTIONS - }); - -Write that content to "/usr/local/etc/bash_completion.d/mycli" and you will -have Bash completions for `mycli`. Alternatively you can write it to -any file (e.g. "~/.bashrc") and source it. - -You could add a `--completion` hidden option to your tool that emits the -completion content and document for your users to call that to install -Bash completions. - -See [examples/ddcompletion.js](examples/ddcompletion.js) for a complete -example, including how one can define bash functions for completion of custom -option types. Also see [node-cmdln](https://github.com/trentm/node-cmdln) for -how it uses this for Bash completion for full multi-subcommand tools. - -- TODO: document specExtra -- TODO: document includeHidden -- TODO: document custom types, `function complete\_FOO` guide, completionType -- TODO: document argtypes - - -# Parser config - -Parser construction (i.e. `dashdash.createParser(CONFIG)`) takes the -following fields: - -- `options` (Array of option specs). Required. See the - [Option specs](#option-specs) section below. - -- `interspersed` (Boolean). Optional. Default is true. If true this allows - interspersed arguments and options. I.e.: - - node ./tool.js -v arg1 arg2 -h # '-h' is after interspersed args - - Set it to false to have '-h' **not** get parsed as an option in the above - example. - -- `allowUnknown` (Boolean). Optional. Default is false. If false, this causes - unknown arguments to throw an error. I.e.: - - node ./tool.js -v arg1 --afe8asefksjefhas - - Set it to true to treat the unknown option as a positional - argument. - - **Caveat**: When a shortopt group, such as `-xaz` contains a mix of - known and unknown options, the *entire* group is passed through - unmolested as a positional argument. - - Consider if you have a known short option `-a`, and parse the - following command line: - - node ./tool.js -xaz - - where `-x` and `-z` are unknown. There are multiple ways to - interpret this: - - 1. `-x` takes a value: `{x: 'az'}` - 2. `-x` and `-z` are both booleans: `{x:true,a:true,z:true}` - - Since dashdash does not know what `-x` and `-z` are, it can't know - if you'd prefer to receive `{a:true,_args:['-x','-z']}` or - `{x:'az'}`, or `{_args:['-xaz']}`. Leaving the positional arg unprocessed - is the easiest mistake for the user to recover from. - - -# Option specs - -Example using all fields (required fields are noted): - -```javascript -{ - names: ['file', 'f'], // Required (one of `names` or `name`). - type: 'string', // Required. - completionType: 'filename', - env: 'MYTOOL_FILE', - help: 'Config file to load before running "mytool"', - helpArg: 'PATH', - helpWrap: false, - default: path.resolve(process.env.HOME, '.mytoolrc') -} -``` - -Each option spec in the `options` array must/can have the following fields: - -- `name` (String) or `names` (Array). Required. These give the option name - and aliases. The first name (if more than one given) is the key for the - parsed `opts` object. - -- `type` (String). Required. One of: - - - bool - - string - - number - - integer - - positiveInteger - - date (epoch seconds, e.g. 1396031701, or ISO 8601 format - `YYYY-MM-DD[THH:MM:SS[.sss][Z]]`, e.g. "2014-03-28T18:35:01.489Z") - - arrayOfBool - - arrayOfString - - arrayOfNumber - - arrayOfInteger - - arrayOfPositiveInteger - - arrayOfDate - - FWIW, these names attempt to match with asserts on - [assert-plus](https://github.com/mcavage/node-assert-plus). - You can add your own custom option types with `dashdash.addOptionType`. - See below. - -- `completionType` (String). Optional. This is used for [Bash - completion](#bash-completion) for an option argument. If not specified, - then the value of `type` is used. Any string may be specified, but only the - following values have meaning: - - - `none`: Provide no completions. - - `file`: Bash's default completion (i.e. `complete -o default`), which - includes filenames. - - *Any string FOO for which a `function complete_FOO` Bash function is - defined.* This is for custom completions for a given tool. Typically - these custom functions are provided in the `specExtra` argument to - `dashdash.bashCompletionFromOptions()`. See - ["examples/ddcompletion.js"](examples/ddcompletion.js) for an example. - -- `env` (String or Array of String). Optional. An environment variable name - (or names) that can be used as a fallback for this option. For example, - given a "foo.js" like this: - - var options = [{names: ['dry-run', 'n'], env: 'FOO_DRY_RUN'}]; - var opts = dashdash.parse({options: options}); - - Both `node foo.js --dry-run` and `FOO_DRY_RUN=1 node foo.js` would result - in `opts.dry_run = true`. - - An environment variable is only used as a fallback, i.e. it is ignored if - the associated option is given in `argv`. - -- `help` (String). Optional. Used for `parser.help()` output. - -- `helpArg` (String). Optional. Used in help output as the placeholder for - the option argument, e.g. the "PATH" in: - - ... - -f PATH, --file=PATH File to process - ... - -- `helpWrap` (Boolean). Optional, default true. Set this to `false` to have - that option's `help` *not* be text wrapped in `.help()` output. - -- `default`. Optional. A default value used for this option, if the - option isn't specified in argv. - -- `hidden` (Boolean). Optional, default false. If true, help output will not - include this option. See also the `includeHidden` option to - `bashCompletionFromOptions()` for [Bash completion](#bash-completion). - - -# Option group headings - -You can add headings between option specs in the `options` array. To do so, -simply add an object with only a `group` property -- the string to print as -the heading for the subsequent options in the array. For example: - -```javascript -var options = [ - { - group: 'Armament Options' - }, - { - names: [ 'weapon', 'w' ], - type: 'string' - }, - { - group: 'General Options' - }, - { - names: [ 'help', 'h' ], - type: 'bool' - } -]; -... -``` - -Note: You can use an empty string, `{group: ''}`, to get a blank line in help -output between groups of options. - - -# Help config - -The `parser.help(...)` function is configurable as follows: - - Options: - Armament Options: - ^^ -w WEAPON, --weapon=WEAPON Weapon with which to crush. One of: | - / sword, spear, maul | - / General Options: | - / -h, --help Print this help and exit. | - / ^^^^ ^ | - \ `-- indent `-- helpCol maxCol ---' - `-- headingIndent - -- `indent` (Number or String). Default 4. Set to a number (for that many - spaces) or a string for the literal indent. -- `headingIndent` (Number or String). Default half length of `indent`. Set to - a number (for that many spaces) or a string for the literal indent. This - indent applies to group heading lines, between normal option lines. -- `nameSort` (String). Default is 'length'. By default the names are - sorted to put the short opts first (i.e. '-h, --help' preferred - to '--help, -h'). Set to 'none' to not do this sorting. -- `maxCol` (Number). Default 80. Note that reflow is just done on whitespace - so a long token in the option help can overflow maxCol. -- `helpCol` (Number). If not set a reasonable value will be determined - between `minHelpCol` and `maxHelpCol`. -- `minHelpCol` (Number). Default 20. -- `maxHelpCol` (Number). Default 40. -- `helpWrap` (Boolean). Default true. Set to `false` to have option `help` - strings *not* be textwrapped to the helpCol..maxCol range. -- `includeEnv` (Boolean). Default false. If the option has associated - environment variables (via the `env` option spec attribute), then - append mentioned of those envvars to the help string. -- `includeDefault` (Boolean). Default false. If the option has a default value - (via the `default` option spec attribute, or a default on the option's type), - then a "Default: VALUE" string will be appended to the help string. - - -# Custom option types - -Dashdash includes a good starter set of option types that it will parse for -you. However, you can add your own via: - - var dashdash = require('dashdash'); - dashdash.addOptionType({ - name: '...', - takesArg: true, - helpArg: '...', - parseArg: function (option, optstr, arg) { - ... - }, - array: false, // optional - arrayFlatten: false, // optional - default: ..., // optional - completionType: ... // optional - }); - -For example, a simple option type that accepts 'yes', 'y', 'no' or 'n' as -a boolean argument would look like: - - var dashdash = require('dashdash'); - - function parseYesNo(option, optstr, arg) { - var argLower = arg.toLowerCase() - if (~['yes', 'y'].indexOf(argLower)) { - return true; - } else if (~['no', 'n'].indexOf(argLower)) { - return false; - } else { - throw new Error(format( - 'arg for "%s" is not "yes" or "no": "%s"', - optstr, arg)); - } - } - - dashdash.addOptionType({ - name: 'yesno' - takesArg: true, - helpArg: '', - parseArg: parseYesNo - }); - - var options = { - {names: ['answer', 'a'], type: 'yesno'} - }; - var opts = dashdash.parse({options: options}); - -See "examples/custom-option-\*.js" for other examples. -See the `addOptionType` block comment in "lib/dashdash.js" for more details. -Please let me know [with an -issue](https://github.com/trentm/node-dashdash/issues/new) if you write a -generally useful one. - - - -# Why - -Why another node.js option parsing lib? - -- `nopt` really is just for "tools like npm". Implicit opts (e.g. '--no-foo' - works for every '--foo'). Can't disable abbreviated opts. Can't do multiple - usages of same opt, e.g. '-vvv' (I think). Can't do grouped short opts. - -- `optimist` has surprise interpretation of options (at least to me). - Implicit opts mean ambiguities and poor error handling for fat-fingering. - `process.exit` calls makes it hard to use as a libary. - -- `optparse` Incomplete docs. Is this an attempted clone of Python's `optparse`. - Not clear. Some divergence. `parser.on("name", ...)` API is weird. - -- `argparse` Dep on underscore. No thanks just for option processing. - `find lib | wc -l` -> `26`. Overkill. - Argparse is a bit different anyway. Not sure I want that. - -- `posix-getopt` No type validation. Though that isn't a killer. AFAIK can't - have a long opt without a short alias. I.e. no `getopt_long` semantics. - Also, no whizbang features like generated help output. - -- ["commander.js"](https://github.com/visionmedia/commander.js): I wrote - [a critique](http://trentm.com/2014/01/a-critique-of-commander-for-nodejs.html) - a while back. It seems fine, but last I checked had - [an outstanding bug](https://github.com/visionmedia/commander.js/pull/121) - that would prevent me from using it. - - -# License - -MIT. See LICENSE.txt. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/etc/dashdash.bash_completion.in b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/etc/dashdash.bash_completion.in deleted file mode 100644 index 50b7d6e0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/etc/dashdash.bash_completion.in +++ /dev/null @@ -1,388 +0,0 @@ -#!/bin/bash -# -# Bash completion generated for '{{name}}' at {{date}}. -# -# The original template lives here: -# https://github.com/trentm/node-dashdash/blob/master/etc/dashdash.bash_completion.in -# - -# -# Copyright 2016 Trent Mick -# Copyright 2016 Joyent, Inc. -# -# -# A generic Bash completion driver script. -# -# This is meant to provide a re-usable chunk of Bash to use for -# "etc/bash_completion.d/" files for individual tools. Only the "Configuration" -# section with tool-specific info need differ. Features: -# -# - support for short and long opts -# - support for knowing which options take arguments -# - support for subcommands (e.g. 'git log ' to show just options for the -# log subcommand) -# - does the right thing with "--" to stop options -# - custom optarg and arg types for custom completions -# - (TODO) support for shells other than Bash (tcsh, zsh, fish?, etc.) -# -# -# Examples/design: -# -# 1. Bash "default" completion. By default Bash's 'complete -o default' is -# enabled. That means when there are no completions (e.g. if no opts match -# the current word), then you'll get Bash's default completion. Most notably -# that means you get filename completion. E.g.: -# $ tool ./ -# $ tool READ -# -# 2. all opts and subcmds: -# $ tool -# $ tool -v # assuming '-v' doesn't take an arg -# $ tool - # matching opts -# $ git lo # matching subcmds -# -# Long opt completions are given *without* the '=', i.e. we prefer space -# separated because that's easier for good completions. -# -# 3. long opt arg with '=' -# $ tool --file= -# $ tool --file=./d -# We maintain the "--file=" prefix. Limitation: With the attached prefix -# the 'complete -o filenames' doesn't know to do dirname '/' suffixing. Meh. -# -# 4. envvars: -# $ tool $ -# $ tool $P -# Limitation: Currently only getting exported vars, so we miss "PS1" and -# others. -# -# 5. Defer to other completion in a subshell: -# $ tool --file $(cat ./ -# We get this from 'complete -o default ...'. -# -# 6. Custom completion types from a provided bash function. -# $ tool --profile # complete available "profiles" -# -# -# Dev Notes: -# - compgen notes, from http://unix.stackexchange.com/questions/151118/understand-compgen-builtin-command -# - https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion-Builtins.html -# - - -# Debugging this completion: -# 1. Uncomment the "_{{name}}_log_file=..." line. -# 2. 'tail -f /var/tmp/dashdash-completion.log' in one terminal. -# 3. Re-source this bash completion file. -#_{{name}}_log=/var/tmp/dashdash-completion.log - -function _{{name}}_completer { - - # ---- cmd definition - - {{spec}} - - - # ---- locals - - declare -a argv - - - # ---- support functions - - function trace { - [[ -n "$_{{name}}_log" ]] && echo "$*" >&2 - } - - function _dashdash_complete { - local idx context - idx=$1 - context=$2 - - local shortopts longopts optargs subcmds allsubcmds argtypes - shortopts="$(eval "echo \${cmd${context}_shortopts}")" - longopts="$(eval "echo \${cmd${context}_longopts}")" - optargs="$(eval "echo \${cmd${context}_optargs}")" - subcmds="$(eval "echo \${cmd${context}_subcmds}")" - allsubcmds="$(eval "echo \${cmd${context}_allsubcmds}")" - IFS=', ' read -r -a argtypes <<< "$(eval "echo \${cmd${context}_argtypes}")" - - trace "" - trace "_dashdash_complete(idx=$idx, context=$context)" - trace " shortopts: $shortopts" - trace " longopts: $longopts" - trace " optargs: $optargs" - trace " subcmds: $subcmds" - trace " allsubcmds: $allsubcmds" - - # Get 'state' of option parsing at this COMP_POINT. - # Copying "dashdash.js#parse()" behaviour here. - local state= - local nargs=0 - local i=$idx - local argtype - local optname - local prefix - local word - local dashdashseen= - while [[ $i -lt $len && $i -le $COMP_CWORD ]]; do - argtype= - optname= - prefix= - word= - - arg=${argv[$i]} - trace " consider argv[$i]: '$arg'" - - if [[ "$arg" == "--" && $i -lt $COMP_CWORD ]]; then - trace " dashdash seen" - dashdashseen=yes - state=arg - word=$arg - elif [[ -z "$dashdashseen" && "${arg:0:2}" == "--" ]]; then - arg=${arg:2} - if [[ "$arg" == *"="* ]]; then - optname=${arg%%=*} - val=${arg##*=} - trace " long opt: optname='$optname' val='$val'" - state=arg - argtype=$(echo "$optargs" | awk -F "-$optname=" '{print $2}' | cut -d' ' -f1) - word=$val - prefix="--$optname=" - else - optname=$arg - val= - trace " long opt: optname='$optname'" - state=longopt - word=--$optname - - if [[ "$optargs" == *"-$optname="* && $i -lt $COMP_CWORD ]]; then - i=$(( $i + 1 )) - state=arg - argtype=$(echo "$optargs" | awk -F "-$optname=" '{print $2}' | cut -d' ' -f1) - word=${argv[$i]} - trace " takes arg (consume argv[$i], word='$word')" - fi - fi - elif [[ -z "$dashdashseen" && "${arg:0:1}" == "-" ]]; then - trace " short opt group" - state=shortopt - word=$arg - - local j=1 - while [[ $j -lt ${#arg} ]]; do - optname=${arg:$j:1} - trace " consider index $j: optname '$optname'" - - if [[ "$optargs" == *"-$optname="* ]]; then - argtype=$(echo "$optargs" | awk -F "-$optname=" '{print $2}' | cut -d' ' -f1) - if [[ $(( $j + 1 )) -lt ${#arg} ]]; then - state=arg - word=${arg:$(( $j + 1 ))} - trace " takes arg (rest of this arg, word='$word', argtype='$argtype')" - elif [[ $i -lt $COMP_CWORD ]]; then - state=arg - i=$(( $i + 1 )) - word=${argv[$i]} - trace " takes arg (word='$word', argtype='$argtype')" - fi - break - fi - - j=$(( $j + 1 )) - done - elif [[ $i -lt $COMP_CWORD && -n "$arg" ]] && $(echo "$allsubcmds" | grep -w "$arg" >/dev/null); then - trace " complete subcmd: recurse _dashdash_complete" - _dashdash_complete $(( $i + 1 )) "${context}__${arg/-/_}" - return - else - trace " not an opt or a complete subcmd" - state=arg - word=$arg - nargs=$(( $nargs + 1 )) - if [[ ${#argtypes[@]} -gt 0 ]]; then - argtype="${argtypes[$(( $nargs - 1 ))]}" - if [[ -z "$argtype" ]]; then - # If we have more args than argtypes, we use the - # last type. - argtype="${argtypes[@]: -1:1}" - fi - fi - fi - - trace " state=$state prefix='$prefix' word='$word'" - i=$(( $i + 1 )) - done - - trace " parsed: state=$state optname='$optname' argtype='$argtype' prefix='$prefix' word='$word' dashdashseen=$dashdashseen" - local compgen_opts= - if [[ -n "$prefix" ]]; then - compgen_opts="$compgen_opts -P $prefix" - fi - - case $state in - shortopt) - compgen $compgen_opts -W "$shortopts $longopts" -- "$word" - ;; - longopt) - compgen $compgen_opts -W "$longopts" -- "$word" - ;; - arg) - # If we don't know what completion to do, then emit nothing. We - # expect that we are running with: - # complete -o default ... - # where "default" means: "Use Readline's default completion if - # the compspec generates no matches." This gives us the good filename - # completion, completion in subshells/backticks. - # - # We cannot support an argtype="directory" because - # compgen -S '/' -A directory -- "$word" - # doesn't give a satisfying result. It doesn't stop at the trailing '/' - # so you cannot descend into dirs. - if [[ "${word:0:1}" == '$' ]]; then - # By default, Bash will complete '$' to all envvars. Apparently - # 'complete -o default' does *not* give us that. The following - # gets *close* to the same completions: '-A export' misses envvars - # like "PS1". - trace " completing envvars" - compgen $compgen_opts -P '$' -A export -- "${word:1}" - elif [[ -z "$argtype" ]]; then - # Only include opts in completions if $word is not empty. - # This is to avoid completing the leading '-', which foils - # using 'default' completion. - if [[ -n "$dashdashseen" ]]; then - trace " completing subcmds, if any (no argtype, dashdash seen)" - compgen $compgen_opts -W "$subcmds" -- "$word" - elif [[ -z "$word" ]]; then - trace " completing subcmds, if any (no argtype, empty word)" - compgen $compgen_opts -W "$subcmds" -- "$word" - else - trace " completing opts & subcmds (no argtype)" - compgen $compgen_opts -W "$shortopts $longopts $subcmds" -- "$word" - fi - elif [[ $argtype == "none" ]]; then - # We want *no* completions, i.e. some way to get the active - # 'complete -o default' to not do filename completion. - trace " completing 'none' (hack to imply no completions)" - echo "##-no completions-##" - elif [[ $argtype == "file" ]]; then - # 'complete -o default' gives the best filename completion, at least - # on Mac. - trace " completing 'file' (let 'complete -o default' handle it)" - echo "" - elif ! type complete_$argtype 2>/dev/null >/dev/null; then - trace " completing '$argtype' (fallback to default b/c complete_$argtype is unknown)" - echo "" - else - trace " completing custom '$argtype'" - completions=$(complete_$argtype "$word") - if [[ -z "$completions" ]]; then - trace " no custom '$argtype' completions" - # These are in alpha order so they show up correctly. - echo "##-no -$argtype- completions-##" - else - echo $completions - fi - fi - ;; - *) - trace " unknown state: $state" - ;; - esac - } - - - trace "" - trace "-- $(date)" - #trace "\$IFS: '$IFS'" - #trace "\$@: '$@'" - #trace "COMP_WORDBREAKS: '$COMP_WORDBREAKS'" - trace "COMP_CWORD: '$COMP_CWORD'" - trace "COMP_LINE: '$COMP_LINE'" - trace "COMP_POINT: $COMP_POINT" - - # Guard against negative COMP_CWORD. This is a Bash bug at least on - # Mac 10.10.4's bash. See - # . - if [[ $COMP_CWORD -lt 0 ]]; then - trace "abort on negative COMP_CWORD" - exit 1; - fi - - # I don't know how to do array manip on argv vars, - # so copy over to argv array to work on them. - shift # the leading '--' - i=0 - len=$# - while [[ $# -gt 0 ]]; do - argv[$i]=$1 - shift; - i=$(( $i + 1 )) - done - trace "argv: '${argv[@]}'" - trace "argv[COMP_CWORD-1]: '${argv[$(( $COMP_CWORD - 1 ))]}'" - trace "argv[COMP_CWORD]: '${argv[$COMP_CWORD]}'" - trace "argv len: '$len'" - - _dashdash_complete 1 "" -} - - -# ---- mainline - -# Note: This if-block to help work with 'compdef' and 'compctl' is -# adapted from 'npm completion'. -if type complete &>/dev/null; then - function _{{name}}_completion { - local _log_file=/dev/null - [[ -z "$_{{name}}_log" ]] || _log_file="$_{{name}}_log" - COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ - COMP_LINE="$COMP_LINE" \ - COMP_POINT="$COMP_POINT" \ - _{{name}}_completer -- "${COMP_WORDS[@]}" \ - 2>$_log_file)) || return $? - } - complete -o default -F _{{name}}_completion {{name}} -elif type compdef &>/dev/null; then - function _{{name}}_completion { - local _log_file=/dev/null - [[ -z "$_{{name}}_log" ]] || _log_file="$_{{name}}_log" - compadd -- $(COMP_CWORD=$((CURRENT-1)) \ - COMP_LINE=$BUFFER \ - COMP_POINT=0 \ - _{{name}}_completer -- "${words[@]}" \ - 2>$_log_file) - } - compdef _{{name}}_completion {{name}} -elif type compctl &>/dev/null; then - function _{{name}}_completion { - local cword line point words si - read -Ac words - read -cn cword - let cword-=1 - read -l line - read -ln point - local _log_file=/dev/null - [[ -z "$_{{name}}_log" ]] || _log_file="$_{{name}}_log" - reply=($(COMP_CWORD="$cword" \ - COMP_LINE="$line" \ - COMP_POINT="$point" \ - _{{name}}_completer -- "${words[@]}" \ - 2>$_log_file)) || return $? - } - compctl -K _{{name}}_completion {{name}} -fi - - -## -## This is a Bash completion file for the '{{name}}' command. You can install -## with either: -## -## cp FILE /usr/local/etc/bash_completion.d/{{name}} # Mac -## cp FILE /etc/bash_completion.d/{{name}} # Linux -## -## or: -## -## cp FILE > ~/.{{name}}.completion -## echo "source ~/.{{name}}.completion" >> ~/.bashrc -## \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/lib/dashdash.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/lib/dashdash.js deleted file mode 100644 index 882bb3ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/lib/dashdash.js +++ /dev/null @@ -1,1022 +0,0 @@ -/** - * dashdash - A light, featureful and explicit option parsing library for - * node.js. - */ -// vim: set ts=4 sts=4 sw=4 et: - -var assert = require('assert-plus'); -var format = require('util').format; -var fs = require('fs'); -var path = require('path'); - - -var DEBUG = true; -if (DEBUG) { - var debug = console.warn; -} else { - var debug = function () {}; -} - - - -// ---- internal support stuff - -// Replace {{variable}} in `s` with the template data in `d`. -function renderTemplate(s, d) { - return s.replace(/{{([a-zA-Z]+)}}/g, function (match, key) { - return d.hasOwnProperty(key) ? d[key] : match; - }); -} - -/** - * Return a shallow copy of the given object; - */ -function shallowCopy(obj) { - if (!obj) { - return (obj); - } - var copy = {}; - Object.keys(obj).forEach(function (k) { - copy[k] = obj[k]; - }); - return (copy); -} - - -function space(n) { - var s = ''; - for (var i = 0; i < n; i++) { - s += ' '; - } - return s; -} - - -function makeIndent(arg, deflen, name) { - if (arg === null || arg === undefined) - return space(deflen); - else if (typeof (arg) === 'number') - return space(arg); - else if (typeof (arg) === 'string') - return arg; - else - assert.fail('invalid "' + name + '": not a string or number: ' + arg); -} - - -/** - * Return an array of lines wrapping the given text to the given width. - * This splits on whitespace. Single tokens longer than `width` are not - * broken up. - */ -function textwrap(s, width) { - var words = s.trim().split(/\s+/); - var lines = []; - var line = ''; - words.forEach(function (w) { - var newLength = line.length + w.length; - if (line.length > 0) - newLength += 1; - if (newLength > width) { - lines.push(line); - line = ''; - } - if (line.length > 0) - line += ' '; - line += w; - }); - lines.push(line); - return lines; -} - - -/** - * Transform an option name to a "key" that is used as the field - * on the `opts` object returned from `.parse()`. - * - * Transformations: - * - '-' -> '_': This allow one to use hyphen in option names (common) - * but not have to do silly things like `opt["dry-run"]` to access the - * parsed results. - */ -function optionKeyFromName(name) { - return name.replace(/-/g, '_'); -} - - - -// ---- Option types - -function parseBool(option, optstr, arg) { - return Boolean(arg); -} - -function parseString(option, optstr, arg) { - assert.string(arg, 'arg'); - return arg; -} - -function parseNumber(option, optstr, arg) { - assert.string(arg, 'arg'); - var num = Number(arg); - if (isNaN(num)) { - throw new Error(format('arg for "%s" is not a number: "%s"', - optstr, arg)); - } - return num; -} - -function parseInteger(option, optstr, arg) { - assert.string(arg, 'arg'); - var num = Number(arg); - if (!/^[0-9-]+$/.test(arg) || isNaN(num)) { - throw new Error(format('arg for "%s" is not an integer: "%s"', - optstr, arg)); - } - return num; -} - -function parsePositiveInteger(option, optstr, arg) { - assert.string(arg, 'arg'); - var num = Number(arg); - if (!/^[0-9]+$/.test(arg) || isNaN(num) || num === 0) { - throw new Error(format('arg for "%s" is not a positive integer: "%s"', - optstr, arg)); - } - return num; -} - -/** - * Supported date args: - * - epoch second times (e.g. 1396031701) - * - ISO 8601 format: YYYY-MM-DD[THH:MM:SS[.sss][Z]] - * 2014-03-28T18:35:01.489Z - * 2014-03-28T18:35:01.489 - * 2014-03-28T18:35:01Z - * 2014-03-28T18:35:01 - * 2014-03-28 - */ -function parseDate(option, optstr, arg) { - assert.string(arg, 'arg'); - var date; - if (/^\d+$/.test(arg)) { - // epoch seconds - date = new Date(Number(arg) * 1000); - /* JSSTYLED */ - } else if (/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?Z?)?$/i.test(arg)) { - // ISO 8601 format - date = new Date(arg); - } else { - throw new Error(format('arg for "%s" is not a valid date format: "%s"', - optstr, arg)); - } - if (date.toString() === 'Invalid Date') { - throw new Error(format('arg for "%s" is an invalid date: "%s"', - optstr, arg)); - } - return date; -} - -var optionTypes = { - bool: { - takesArg: false, - parseArg: parseBool - }, - string: { - takesArg: true, - helpArg: 'ARG', - parseArg: parseString - }, - number: { - takesArg: true, - helpArg: 'NUM', - parseArg: parseNumber - }, - integer: { - takesArg: true, - helpArg: 'INT', - parseArg: parseInteger - }, - positiveInteger: { - takesArg: true, - helpArg: 'INT', - parseArg: parsePositiveInteger - }, - date: { - takesArg: true, - helpArg: 'DATE', - parseArg: parseDate - }, - arrayOfBool: { - takesArg: false, - array: true, - parseArg: parseBool - }, - arrayOfString: { - takesArg: true, - helpArg: 'ARG', - array: true, - parseArg: parseString - }, - arrayOfNumber: { - takesArg: true, - helpArg: 'NUM', - array: true, - parseArg: parseNumber - }, - arrayOfInteger: { - takesArg: true, - helpArg: 'INT', - array: true, - parseArg: parseInteger - }, - arrayOfPositiveInteger: { - takesArg: true, - helpArg: 'INT', - array: true, - parseArg: parsePositiveInteger - }, - arrayOfDate: { - takesArg: true, - helpArg: 'INT', - array: true, - parseArg: parseDate - }, -}; - - - -// ---- Parser - -/** - * Parser constructor. - * - * @param config {Object} The parser configuration - * - options {Array} Array of option specs. See the README for how to - * specify each option spec. - * - allowUnknown {Boolean} Default false. Whether to throw on unknown - * options. If false, then unknown args are included in the _args array. - * - interspersed {Boolean} Default true. Whether to allow interspersed - * arguments (non-options) and options. E.g.: - * node tool.js arg1 arg2 -v - * '-v' is after some args here. If `interspersed: false` then '-v' - * would not be parsed out. Note that regardless of `interspersed` - * the presence of '--' will stop option parsing, as all good - * option parsers should. - */ -function Parser(config) { - assert.object(config, 'config'); - assert.arrayOfObject(config.options, 'config.options'); - assert.optionalBool(config.interspersed, 'config.interspersed'); - var self = this; - - // Allow interspersed arguments (true by default). - this.interspersed = (config.interspersed !== undefined - ? config.interspersed : true); - - // Don't allow unknown flags (true by default). - this.allowUnknown = (config.allowUnknown !== undefined - ? config.allowUnknown : false); - - this.options = config.options.map(function (o) { return shallowCopy(o); }); - this.optionFromName = {}; - this.optionFromEnv = {}; - for (var i = 0; i < this.options.length; i++) { - var o = this.options[i]; - if (o.group !== undefined && o.group !== null) { - assert.optionalString(o.group, - format('config.options.%d.group', i)); - continue; - } - assert.ok(optionTypes[o.type], - format('invalid config.options.%d.type: "%s" in %j', - i, o.type, o)); - assert.optionalString(o.name, format('config.options.%d.name', i)); - assert.optionalArrayOfString(o.names, - format('config.options.%d.names', i)); - assert.ok((o.name || o.names) && !(o.name && o.names), - format('exactly one of "name" or "names" required: %j', o)); - assert.optionalString(o.help, format('config.options.%d.help', i)); - var env = o.env || []; - if (typeof (env) === 'string') { - env = [env]; - } - assert.optionalArrayOfString(env, format('config.options.%d.env', i)); - assert.optionalString(o.helpGroup, - format('config.options.%d.helpGroup', i)); - assert.optionalBool(o.helpWrap, - format('config.options.%d.helpWrap', i)); - assert.optionalBool(o.hidden, format('config.options.%d.hidden', i)); - - if (o.name) { - o.names = [o.name]; - } else { - assert.string(o.names[0], - format('config.options.%d.names is empty', i)); - } - o.key = optionKeyFromName(o.names[0]); - o.names.forEach(function (n) { - if (self.optionFromName[n]) { - throw new Error(format( - 'option name collision: "%s" used in %j and %j', - n, self.optionFromName[n], o)); - } - self.optionFromName[n] = o; - }); - env.forEach(function (n) { - if (self.optionFromEnv[n]) { - throw new Error(format( - 'option env collision: "%s" used in %j and %j', - n, self.optionFromEnv[n], o)); - } - self.optionFromEnv[n] = o; - }); - } -} - -Parser.prototype.optionTakesArg = function optionTakesArg(option) { - return optionTypes[option.type].takesArg; -}; - -/** - * Parse options from the given argv. - * - * @param inputs {Object} Optional. - * - argv {Array} Optional. The argv to parse. Defaults to - * `process.argv`. - * - slice {Number} The index into argv at which options/args begin. - * Default is 2, as appropriate for `process.argv`. - * - env {Object} Optional. The env to use for 'env' entries in the - * option specs. Defaults to `process.env`. - * @returns {Object} Parsed `opts`. It has special keys `_args` (the - * remaining args from `argv`) and `_order` (gives the order that - * options were specified). - */ -Parser.prototype.parse = function parse(inputs) { - var self = this; - - // Old API was `parse([argv, [slice]])` - if (Array.isArray(arguments[0])) { - inputs = {argv: arguments[0], slice: arguments[1]}; - } - - assert.optionalObject(inputs, 'inputs'); - if (!inputs) { - inputs = {}; - } - assert.optionalArrayOfString(inputs.argv, 'inputs.argv'); - //assert.optionalNumber(slice, 'slice'); - var argv = inputs.argv || process.argv; - var slice = inputs.slice !== undefined ? inputs.slice : 2; - var args = argv.slice(slice); - var env = inputs.env || process.env; - var opts = {}; - var _order = []; - - function addOpt(option, optstr, key, val, from) { - var type = optionTypes[option.type]; - var parsedVal = type.parseArg(option, optstr, val); - if (type.array) { - if (!opts[key]) { - opts[key] = []; - } - if (type.arrayFlatten && Array.isArray(parsedVal)) { - for (var i = 0; i < parsedVal.length; i++) { - opts[key].push(parsedVal[i]); - } - } else { - opts[key].push(parsedVal); - } - } else { - opts[key] = parsedVal; - } - var item = { key: key, value: parsedVal, from: from }; - _order.push(item); - } - - // Parse args. - var _args = []; - var i = 0; - outer: while (i < args.length) { - var arg = args[i]; - - // End of options marker. - if (arg === '--') { - i++; - break; - - // Long option - } else if (arg.slice(0, 2) === '--') { - var name = arg.slice(2); - var val = null; - var idx = name.indexOf('='); - if (idx !== -1) { - val = name.slice(idx + 1); - name = name.slice(0, idx); - } - var option = this.optionFromName[name]; - if (!option) { - if (!this.allowUnknown) - throw new Error(format('unknown option: "--%s"', name)); - else if (this.interspersed) - _args.push(arg); - else - break outer; - } else { - var takesArg = this.optionTakesArg(option); - if (val !== null && !takesArg) { - throw new Error(format('argument given to "--%s" option ' - + 'that does not take one: "%s"', name, arg)); - } - if (!takesArg) { - addOpt(option, '--'+name, option.key, true, 'argv'); - } else if (val !== null) { - addOpt(option, '--'+name, option.key, val, 'argv'); - } else if (i + 1 >= args.length) { - throw new Error(format('do not have enough args for "--%s" ' - + 'option', name)); - } else { - addOpt(option, '--'+name, option.key, args[i + 1], 'argv'); - i++; - } - } - - // Short option - } else if (arg[0] === '-' && arg.length > 1) { - var j = 1; - var allFound = true; - while (j < arg.length) { - var name = arg[j]; - var option = this.optionFromName[name]; - if (!option) { - allFound = false; - if (this.allowUnknown) { - if (this.interspersed) { - _args.push(arg); - break; - } else - break outer; - } else if (arg.length > 2) { - throw new Error(format( - 'unknown option: "-%s" in "%s" group', - name, arg)); - } else { - throw new Error(format('unknown option: "-%s"', name)); - } - } else if (this.optionTakesArg(option)) { - break; - } - j++; - } - - j = 1; - while (allFound && j < arg.length) { - var name = arg[j]; - var val = arg.slice(j + 1); // option val if it takes an arg - var option = this.optionFromName[name]; - var takesArg = this.optionTakesArg(option); - if (!takesArg) { - addOpt(option, '-'+name, option.key, true, 'argv'); - } else if (val) { - addOpt(option, '-'+name, option.key, val, 'argv'); - break; - } else { - if (i + 1 >= args.length) { - throw new Error(format('do not have enough args ' - + 'for "-%s" option', name)); - } - addOpt(option, '-'+name, option.key, args[i + 1], 'argv'); - i++; - break; - } - j++; - } - - // An interspersed arg - } else if (this.interspersed) { - _args.push(arg); - - // An arg and interspersed args are not allowed, so done options. - } else { - break outer; - } - i++; - } - _args = _args.concat(args.slice(i)); - - // Parse environment. - Object.keys(this.optionFromEnv).forEach(function (envname) { - var val = env[envname]; - if (val === undefined) - return; - var option = self.optionFromEnv[envname]; - if (opts[option.key] !== undefined) - return; - var takesArg = self.optionTakesArg(option); - if (takesArg) { - addOpt(option, envname, option.key, val, 'env'); - } else if (val !== '') { - // Boolean envvar handling: - // - VAR= not set (as if the VAR was not set) - // - VAR=0 false - // - anything else true - addOpt(option, envname, option.key, (val !== '0'), 'env'); - } - }); - - // Apply default values. - this.options.forEach(function (o) { - if (opts[o.key] === undefined) { - if (o.default !== undefined) { - opts[o.key] = o.default; - } else if (o.type && optionTypes[o.type].default !== undefined) { - opts[o.key] = optionTypes[o.type].default; - } - } - }); - - opts._order = _order; - opts._args = _args; - return opts; -}; - - -/** - * Return help output for the current options. - * - * E.g.: if the current options are: - * [{names: ['help', 'h'], type: 'bool', help: 'Show help and exit.'}] - * then this would return: - * ' -h, --help Show help and exit.\n' - * - * @param config {Object} Config for controlling the option help output. - * - indent {Number|String} Default 4. An indent/prefix to use for - * each option line. - * - nameSort {String} Default is 'length'. By default the names are - * sorted to put the short opts first (i.e. '-h, --help' preferred - * to '--help, -h'). Set to 'none' to not do this sorting. - * - maxCol {Number} Default 80. Note that long tokens in a help string - * can go past this. - * - helpCol {Number} Set to specify a specific column at which - * option help will be aligned. By default this is determined - * automatically. - * - minHelpCol {Number} Default 20. - * - maxHelpCol {Number} Default 40. - * - includeEnv {Boolean} Default false. If true, a note stating the `env` - * envvar (if specified for this option) will be appended to the help - * output. - * - includeDefault {Boolean} Default false. If true, a note stating - * the `default` for this option, if any, will be appended to the help - * output. - * - helpWrap {Boolean} Default true. Wrap help text in helpCol..maxCol - * bounds. - * @returns {String} - */ -Parser.prototype.help = function help(config) { - config = config || {}; - assert.object(config, 'config'); - - var indent = makeIndent(config.indent, 4, 'config.indent'); - var headingIndent = makeIndent(config.headingIndent, - Math.round(indent.length / 2), 'config.headingIndent'); - - assert.optionalString(config.nameSort, 'config.nameSort'); - var nameSort = config.nameSort || 'length'; - assert.ok(~['length', 'none'].indexOf(nameSort), - 'invalid "config.nameSort"'); - assert.optionalNumber(config.maxCol, 'config.maxCol'); - assert.optionalNumber(config.maxHelpCol, 'config.maxHelpCol'); - assert.optionalNumber(config.minHelpCol, 'config.minHelpCol'); - assert.optionalNumber(config.helpCol, 'config.helpCol'); - assert.optionalBool(config.includeEnv, 'config.includeEnv'); - assert.optionalBool(config.includeDefault, 'config.includeDefault'); - assert.optionalBool(config.helpWrap, 'config.helpWrap'); - var maxCol = config.maxCol || 80; - var minHelpCol = config.minHelpCol || 20; - var maxHelpCol = config.maxHelpCol || 40; - - var lines = []; - var maxWidth = 0; - this.options.forEach(function (o) { - if (o.hidden) { - return; - } - if (o.group !== undefined && o.group !== null) { - // We deal with groups in the next pass - lines.push(null); - return; - } - var type = optionTypes[o.type]; - var arg = o.helpArg || type.helpArg || 'ARG'; - var line = ''; - var names = o.names.slice(); - if (nameSort === 'length') { - names.sort(function (a, b) { - if (a.length < b.length) - return -1; - else if (b.length < a.length) - return 1; - else - return 0; - }) - } - names.forEach(function (name, i) { - if (i > 0) - line += ', '; - if (name.length === 1) { - line += '-' + name - if (type.takesArg) - line += ' ' + arg; - } else { - line += '--' + name - if (type.takesArg) - line += '=' + arg; - } - }); - maxWidth = Math.max(maxWidth, line.length); - lines.push(line); - }); - - // Add help strings. - var helpCol = config.helpCol; - if (!helpCol) { - helpCol = maxWidth + indent.length + 2; - helpCol = Math.min(Math.max(helpCol, minHelpCol), maxHelpCol); - } - var i = -1; - this.options.forEach(function (o) { - if (o.hidden) { - return; - } - i++; - - if (o.group !== undefined && o.group !== null) { - if (o.group === '') { - // Support a empty string "group" to have a blank line between - // sets of options. - lines[i] = ''; - } else { - // Render the group heading with the heading-specific indent. - lines[i] = (i === 0 ? '' : '\n') + headingIndent + - o.group + ':'; - } - return; - } - - var helpDefault; - if (config.includeDefault) { - if (o.default !== undefined) { - helpDefault = format('Default: %j', o.default); - } else if (o.type && optionTypes[o.type].default !== undefined) { - helpDefault = format('Default: %j', - optionTypes[o.type].default); - } - } - - var line = lines[i] = indent + lines[i]; - if (!o.help && !(config.includeEnv && o.env) && !helpDefault) { - return; - } - var n = helpCol - line.length; - if (n >= 0) { - line += space(n); - } else { - line += '\n' + space(helpCol); - } - - var helpEnv = ''; - if (o.env && o.env.length && config.includeEnv) { - helpEnv += 'Environment: '; - var type = optionTypes[o.type]; - var arg = o.helpArg || type.helpArg || 'ARG'; - var envs = (Array.isArray(o.env) ? o.env : [o.env]).map( - function (e) { - if (type.takesArg) { - return e + '=' + arg; - } else { - return e + '=1'; - } - } - ); - helpEnv += envs.join(', '); - } - var help = (o.help || '').trim(); - if (o.helpWrap !== false && config.helpWrap !== false) { - // Wrap help description normally. - if (help.length && !~'.!?"\''.indexOf(help.slice(-1))) { - help += '.'; - } - if (help.length) { - help += ' '; - } - help += helpEnv; - if (helpDefault) { - if (helpEnv) { - help += '. '; - } - help += helpDefault; - } - line += textwrap(help, maxCol - helpCol).join( - '\n' + space(helpCol)); - } else { - // Do not wrap help description, but indent newlines appropriately. - var helpLines = help.split('\n').filter( - function (ln) { return ln.length }); - if (helpEnv !== '') { - helpLines.push(helpEnv); - } - if (helpDefault) { - helpLines.push(helpDefault); - } - line += helpLines.join('\n' + space(helpCol)); - } - - lines[i] = line; - }); - - var rv = ''; - if (lines.length > 0) { - rv = lines.join('\n') + '\n'; - } - return rv; -}; - - -/** - * Return a string suitable for a Bash completion file for this tool. - * - * @param args.name {String} The tool name. - * @param args.specExtra {String} Optional. Extra Bash code content to add - * to the end of the "spec". Typically this is used to append Bash - * "complete_TYPE" functions for custom option types. See - * "examples/ddcompletion.js" for an example. - * @param args.argtypes {Array} Optional. Array of completion types for - * positional args (i.e. non-options). E.g. - * argtypes = ['fruit', 'veggie', 'file'] - * will result in completion of fruits for the first arg, veggies for the - * second, and filenames for the third and subsequent positional args. - * If not given, positional args will use Bash's 'default' completion. - * See `specExtra` for providing Bash `complete_TYPE` functions, e.g. - * `complete_fruit` and `complete_veggie` in this example. - */ -Parser.prototype.bashCompletion = function bashCompletion(args) { - assert.object(args, 'args'); - assert.string(args.name, 'args.name'); - assert.optionalString(args.specExtra, 'args.specExtra'); - assert.optionalArrayOfString(args.argtypes, 'args.argtypes'); - - return bashCompletionFromOptions({ - name: args.name, - specExtra: args.specExtra, - argtypes: args.argtypes, - options: this.options - }); -}; - - -// ---- Bash completion - -const BASH_COMPLETION_TEMPLATE_PATH = path.join( - __dirname, '../etc/dashdash.bash_completion.in'); - -/** - * Return the Bash completion "spec" (the string value for the "{{spec}}" - * var in the "dashdash.bash_completion.in" template) for this tool. - * - * The "spec" is Bash code that defines the CLI options and subcmds for - * the template's completion code. It looks something like this: - * - * local cmd_shortopts="-J ..." - * local cmd_longopts="--help ..." - * local cmd_optargs="-p=tritonprofile ..." - * - * @param args.options {Array} The array of dashdash option specs. - * @param args.context {String} Optional. A context string for the "local cmd*" - * vars in the spec. By default it is the empty string. When used to - * scope for completion on a *sub-command* (e.g. for "git log" on a "git" - * tool), then it would have a value (e.g. "__log"). See - * Bash completion for details. - * @param opts.includeHidden {Boolean} Optional. Default false. By default - * hidden options and subcmds are "excluded". Here excluded means they - * won't be offered as a completion, but if used, their argument type - * will be completed. "Hidden" options and subcmds are ones with the - * `hidden: true` attribute to exclude them from default help output. - * @param args.argtypes {Array} Optional. Array of completion types for - * positional args (i.e. non-options). E.g. - * argtypes = ['fruit', 'veggie', 'file'] - * will result in completion of fruits for the first arg, veggies for the - * second, and filenames for the third and subsequent positional args. - * If not given, positional args will use Bash's 'default' completion. - * See `specExtra` for providing Bash `complete_TYPE` functions, e.g. - * `complete_fruit` and `complete_veggie` in this example. - */ -function bashCompletionSpecFromOptions(args) { - assert.object(args, 'args'); - assert.object(args.options, 'args.options'); - assert.optionalString(args.context, 'args.context'); - assert.optionalBool(args.includeHidden, 'args.includeHidden'); - assert.optionalArrayOfString(args.argtypes, 'args.argtypes'); - - var context = args.context || ''; - var includeHidden = (args.includeHidden === undefined - ? false : args.includeHidden); - - var spec = []; - var shortopts = []; - var longopts = []; - var optargs = []; - (args.options || []).forEach(function (o) { - if (o.group !== undefined && o.group !== null) { - // Skip group headers. - return; - } - - var optNames = o.names || [o.name]; - var optType = getOptionType(o.type); - if (optType.takesArg) { - var completionType = o.completionType || - optType.completionType || o.type; - optNames.forEach(function (optName) { - if (optName.length === 1) { - if (includeHidden || !o.hidden) { - shortopts.push('-' + optName); - } - // Include even hidden options in `optargs` so that bash - // completion of its arg still works. - optargs.push('-' + optName + '=' + completionType); - } else { - if (includeHidden || !o.hidden) { - longopts.push('--' + optName); - } - optargs.push('--' + optName + '=' + completionType); - } - }); - } else { - optNames.forEach(function (optName) { - if (includeHidden || !o.hidden) { - if (optName.length === 1) { - shortopts.push('-' + optName); - } else { - longopts.push('--' + optName); - } - } - }); - } - }); - - spec.push(format('local cmd%s_shortopts="%s"', - context, shortopts.sort().join(' '))); - spec.push(format('local cmd%s_longopts="%s"', - context, longopts.sort().join(' '))); - spec.push(format('local cmd%s_optargs="%s"', - context, optargs.sort().join(' '))); - if (args.argtypes) { - spec.push(format('local cmd%s_argtypes="%s"', - context, args.argtypes.join(' '))); - } - return spec.join('\n'); -} - - -/** - * Return a string suitable for a Bash completion file for this tool. - * - * @param args.name {String} The tool name. - * @param args.options {Array} The array of dashdash option specs. - * @param args.specExtra {String} Optional. Extra Bash code content to add - * to the end of the "spec". Typically this is used to append Bash - * "complete_TYPE" functions for custom option types. See - * "examples/ddcompletion.js" for an example. - * @param args.argtypes {Array} Optional. Array of completion types for - * positional args (i.e. non-options). E.g. - * argtypes = ['fruit', 'veggie', 'file'] - * will result in completion of fruits for the first arg, veggies for the - * second, and filenames for the third and subsequent positional args. - * If not given, positional args will use Bash's 'default' completion. - * See `specExtra` for providing Bash `complete_TYPE` functions, e.g. - * `complete_fruit` and `complete_veggie` in this example. - */ -function bashCompletionFromOptions(args) { - assert.object(args, 'args'); - assert.object(args.options, 'args.options'); - assert.string(args.name, 'args.name'); - assert.optionalString(args.specExtra, 'args.specExtra'); - assert.optionalArrayOfString(args.argtypes, 'args.argtypes'); - - // Gather template data. - var data = { - name: args.name, - date: new Date(), - spec: bashCompletionSpecFromOptions({ - options: args.options, - argtypes: args.argtypes - }), - }; - if (args.specExtra) { - data.spec += '\n\n' + args.specExtra; - } - - // Render template. - var template = fs.readFileSync(BASH_COMPLETION_TEMPLATE_PATH, 'utf8'); - return renderTemplate(template, data); -} - - - -// ---- exports - -function createParser(config) { - return new Parser(config); -} - -/** - * Parse argv with the given options. - * - * @param config {Object} A merge of all the available fields from - * `dashdash.Parser` and `dashdash.Parser.parse`: options, interspersed, - * argv, env, slice. - */ -function parse(config) { - assert.object(config, 'config'); - assert.optionalArrayOfString(config.argv, 'config.argv'); - assert.optionalObject(config.env, 'config.env'); - var config = shallowCopy(config); - var argv = config.argv; - delete config.argv; - var env = config.env; - delete config.env; - - var parser = new Parser(config); - return parser.parse({argv: argv, env: env}); -} - - -/** - * Add a new option type. - * - * @params optionType {Object}: - * - name {String} Required. - * - takesArg {Boolean} Required. Whether this type of option takes an - * argument on process.argv. Typically this is true for all but the - * "bool" type. - * - helpArg {String} Required iff `takesArg === true`. The string to - * show in generated help for options of this type. - * - parseArg {Function} Require. `function (option, optstr, arg)` parser - * that takes a string argument and returns an instance of the - * appropriate type, or throws an error if the arg is invalid. - * - array {Boolean} Optional. Set to true if this is an 'arrayOf' type - * that collects multiple usages of the option in process.argv and - * puts results in an array. - * - arrayFlatten {Boolean} Optional. XXX - * - default Optional. Default value for options of this type, if no - * default is specified in the option type usage. - */ -function addOptionType(optionType) { - assert.object(optionType, 'optionType'); - assert.string(optionType.name, 'optionType.name'); - assert.bool(optionType.takesArg, 'optionType.takesArg'); - if (optionType.takesArg) { - assert.string(optionType.helpArg, 'optionType.helpArg'); - } - assert.func(optionType.parseArg, 'optionType.parseArg'); - assert.optionalBool(optionType.array, 'optionType.array'); - assert.optionalBool(optionType.arrayFlatten, 'optionType.arrayFlatten'); - - optionTypes[optionType.name] = { - takesArg: optionType.takesArg, - helpArg: optionType.helpArg, - parseArg: optionType.parseArg, - array: optionType.array, - arrayFlatten: optionType.arrayFlatten, - default: optionType.default - } -} - - -function getOptionType(name) { - assert.string(name, 'name'); - return optionTypes[name]; -} - - -module.exports = { - createParser: createParser, - Parser: Parser, - parse: parse, - addOptionType: addOptionType, - getOptionType: getOptionType, - - // Bash completion-related exports - BASH_COMPLETION_TEMPLATE_PATH: BASH_COMPLETION_TEMPLATE_PATH, - bashCompletionFromOptions: bashCompletionFromOptions, - bashCompletionSpecFromOptions: bashCompletionSpecFromOptions, - - // Export the parseFoo parsers because they might be useful as primitives - // for custom option types. - parseBool: parseBool, - parseString: parseString, - parseNumber: parseNumber, - parseInteger: parseInteger, - parsePositiveInteger: parsePositiveInteger, - parseDate: parseDate -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/AUTHORS b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/AUTHORS deleted file mode 100644 index 1923524f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Dave Eddy -Fred Kuo -Lars-Magnus Skog -Mark Cavage -Patrick Mooney -Rob Gulewich diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/CHANGES.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/CHANGES.md deleted file mode 100644 index 57d92bfd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/CHANGES.md +++ /dev/null @@ -1,14 +0,0 @@ -# assert-plus Changelog - -## 1.0.0 - -- *BREAKING* assert.number (and derivatives) now accept Infinity as valid input -- Add assert.finite check. Previous assert.number callers should use this if - they expect Infinity inputs to throw. - -## 0.2.0 - -- Fix `assert.object(null)` so it throws -- Fix optional/arrayOf exports for non-type-of asserts -- Add optiona/arrayOf exports for Stream/Date/Regex/uuid -- Add basic unit test coverage diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/README.md deleted file mode 100644 index ec200d16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE\_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - -```javascript - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id'); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } -``` - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object. (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - -```javascript - function test(foo) { - assert.string(foo, 'foo'); - } -``` - -There you go. You can check that arrays are of a homogeneous type with `Arrayof$Type`: - -```javascript - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } -``` - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - -```javascript - assert.optionalString(foo, 'foo'); -``` - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. Be advised: The standard functions re-exported from `assert` are -also disabled in assert-plus if NDEBUG is specified. Using them directly from -the `assert` module avoids this behavior. - -The complete list of APIs is: - -* assert.array -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.finite -* assert.object -* assert.string -* assert.stream -* assert.date -* assert.regexp -* assert.uuid -* assert.arrayOfArray -* assert.arrayOfBool -* assert.arrayOfBuffer -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfFinite -* assert.arrayOfObject -* assert.arrayOfString -* assert.arrayOfStream -* assert.arrayOfDate -* assert.arrayOfRegexp -* assert.arrayOfUuid -* assert.optionalArray -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalFinite -* assert.optionalObject -* assert.optionalString -* assert.optionalStream -* assert.optionalDate -* assert.optionalRegexp -* assert.optionalUuid -* assert.optionalArrayOfArray -* assert.optionalArrayOfBool -* assert.optionalArrayOfBuffer -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfFinite -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.optionalArrayOfStream -* assert.optionalArrayOfDate -* assert.optionalArrayOfRegexp -* assert.optionalArrayOfUuid -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -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. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/assert.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/assert.js deleted file mode 100644 index 26f944ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/package.json deleted file mode 100644 index 798e4744..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/node_modules/assert-plus/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "assert-plus@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/dashdash" - ] - ], - "_from": "assert-plus@>=1.0.0 <2.0.0", - "_id": "assert-plus@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/dashdash/assert-plus", - "_nodeVersion": "0.10.40", - "_npmUser": { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - }, - "_npmVersion": "3.3.9", - "_phantomChildren": {}, - "_requested": { - "name": "assert-plus", - "raw": "assert-plus@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/dashdash" - ], - "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "_shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "_shrinkwrap": null, - "_spec": "assert-plus@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/dashdash", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-assert-plus/issues" - }, - "contributors": [ - { - "email": "dave@daveeddy.com", - "name": "Dave Eddy" - }, - { - "email": "fred.kuo@joyent.com", - "name": "Fred Kuo" - }, - { - "email": "ralphtheninja@riseup.net", - "name": "Lars-Magnus Skog" - }, - { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - { - "email": "pmooney@pfmooney.com", - "name": "Patrick Mooney" - }, - { - "email": "robert.gulewich@joyent.com", - "name": "Rob Gulewich" - } - ], - "dependencies": {}, - "description": "Extra assertions on top of node's assert module", - "devDependencies": { - "faucet": "0.0.1", - "tape": "4.2.2" - }, - "directories": {}, - "dist": { - "shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/mcavage/node-assert-plus#readme", - "license": "MIT", - "main": "./assert.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - } - ], - "name": "assert-plus", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mcavage/node-assert-plus.git" - }, - "scripts": { - "test": "tape tests/*.js | ./node_modules/.bin/faucet" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/package.json deleted file mode 100644 index 3d271927..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dashdash/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "_args": [ - [ - "dashdash@^1.12.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "dashdash@>=1.12.0 <2.0.0", - "_id": "dashdash@1.13.1", - "_inCache": true, - "_installable": true, - "_location": "/dashdash", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/dashdash-1.13.1.tgz_1461355198185_0.31851457548327744" - }, - "_npmUser": { - "email": "trentm@gmail.com", - "name": "trentm" - }, - "_npmVersion": "1.4.29", - "_phantomChildren": {}, - "_requested": { - "name": "dashdash", - "raw": "dashdash@^1.12.0", - "rawSpec": "^1.12.0", - "scope": null, - "spec": ">=1.12.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.13.1.tgz", - "_shasum": "3530ed38b9026be9af05c83423c9154122e3d47c", - "_shrinkwrap": null, - "_spec": "dashdash@^1.12.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "email": "trentm@gmail.com", - "name": "Trent Mick", - "url": "http://trentm.com" - }, - "bugs": { - "url": "https://github.com/trentm/node-dashdash/issues" - }, - "contributors": [ - { - "email": "trentm@gmail.com", - "name": "Trent Mick", - "url": "http://trentm.com" - }, - { - "name": "Isaac Schlueter", - "url": "https://github.com/isaacs" - }, - { - "name": "Joshua M. Clulow", - "url": "https://github.com/jclulow" - }, - { - "name": "Patrick Mooney", - "url": "https://github.com/pfmooney" - }, - { - "name": "Dave Pacheco", - "url": "https://github.com/davepacheco" - } - ], - "dependencies": { - "assert-plus": "^1.0.0" - }, - "description": "A light, featureful and explicit option parsing library.", - "devDependencies": { - "nodeunit": "0.9.x" - }, - "directories": {}, - "dist": { - "shasum": "3530ed38b9026be9af05c83423c9154122e3d47c", - "tarball": "https://registry.npmjs.org/dashdash/-/dashdash-1.13.1.tgz" - }, - "engines": { - "node": ">=0.10" - }, - "gitHead": "aabf8a7e71ce7ed3d24c3c57d64a57b78c1a8546", - "homepage": "https://github.com/trentm/node-dashdash", - "keywords": [ - "option", - "parser", - "parsing", - "cli", - "command", - "args", - "bash", - "completion" - ], - "license": "MIT", - "main": "./lib/dashdash.js", - "maintainers": [ - { - "email": "trentm@gmail.com", - "name": "trentm" - } - ], - "name": "dashdash", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/trentm/node-dashdash.git" - }, - "scripts": { - "test": "nodeunit test/*.test.js" - }, - "version": "1.13.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.npmignore deleted file mode 100644 index 830d0ff7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.npmignore +++ /dev/null @@ -1,57 +0,0 @@ -# .gitignore -# -# Copyright (c) 2014 Charlike Mike Reagent, contributors. -# Released under the MIT license. -# - -# Always-ignore dirs # -# #################### -_gh_pages -node_modules -bower_components -components -vendor -build -dest -dist -src -lib-cov -coverage -nbproject -cache -temp -tmp - -# Packages # -# ########## -*.7z -*.dmg -*.gz -*.iso -*.jar -*.rar -*.tar -*.zip - -# OS, Logs and databases # -# ######################### -*.pid -*.dat -*.log -*.sql -*.sqlite -*~ -~* - -# Another files # -# ############### -Icon? -.DS_Store* -Thumbs.db -ehthumbs.db -Desktop.ini -npm-debug.log -.directory -._* - -koa-better-body \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.travis.yml deleted file mode 100644 index 18ae2d89..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/LICENSE deleted file mode 100644 index 57d44e2a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -(c) 2007-2009 Steven Levithan - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/Readme.md deleted file mode 100644 index 0aaf1e82..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/Readme.md +++ /dev/null @@ -1,82 +0,0 @@ -# dateformat - -A node.js package for Steven Levithan's excellent [dateFormat()][dateformat] function. - -[![Build Status](https://travis-ci.org/felixge/node-dateformat.svg)](https://travis-ci.org/felixge/node-dateformat) - -## Modifications - -* Removed the `Date.prototype.format` method. Sorry folks, but extending native prototypes is for suckers. -* Added a `module.exports = dateFormat;` statement at the bottom -* Added the placeholder `N` to get the ISO 8601 numeric representation of the day of the week - -## Installation - -```bash -$ npm install dateformat -$ dateformat --help -``` - -## Usage - -As taken from Steven's post, modified to match the Modifications listed above: -```js - var dateFormat = require('dateformat'); - var now = new Date(); - - // Basic usage - dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"); - // Saturday, June 9th, 2007, 5:46:21 PM - - // You can use one of several named masks - dateFormat(now, "isoDateTime"); - // 2007-06-09T17:46:21 - - // ...Or add your own - dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"'; - dateFormat(now, "hammerTime"); - // 17:46! Can't touch this! - - // When using the standalone dateFormat function, - // you can also provide the date as a string - dateFormat("Jun 9 2007", "fullDate"); - // Saturday, June 9, 2007 - - // Note that if you don't include the mask argument, - // dateFormat.masks.default is used - dateFormat(now); - // Sat Jun 09 2007 17:46:21 - - // And if you don't include the date argument, - // the current date and time is used - dateFormat(); - // Sat Jun 09 2007 17:46:22 - - // You can also skip the date argument (as long as your mask doesn't - // contain any numbers), in which case the current date/time is used - dateFormat("longTime"); - // 5:46:22 PM EST - - // And finally, you can convert local time to UTC time. Simply pass in - // true as an additional argument (no argument skipping allowed in this case): - dateFormat(now, "longTime", true); - // 10:46:21 PM UTC - - // ...Or add the prefix "UTC:" or "GMT:" to your mask. - dateFormat(now, "UTC:h:MM:ss TT Z"); - // 10:46:21 PM UTC - - // You can also get the ISO 8601 week of the year: - dateFormat(now, "W"); - // 42 - - // and also get the ISO 8601 numeric representation of the day of the week: - dateFormat(now,"N"); - // 6 -``` -## License - -(c) 2007-2009 Steven Levithan [stevenlevithan.com][stevenlevithan], MIT license. - -[dateformat]: http://blog.stevenlevithan.com/archives/date-time-format -[stevenlevithan]: http://stevenlevithan.com/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/bin/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/bin/cli.js deleted file mode 100755 index e095ddc6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/bin/cli.js +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env node -/** - * dateformat - * - * Copyright (c) 2014 Charlike Mike Reagent (cli), contributors. - * Released under the MIT license. - */ - -'use strict'; - -/** - * Module dependencies. - */ - -var dateFormat = require('../lib/dateformat'); -var meow = require('meow'); -var stdin = require('get-stdin'); - -var cli = meow({ - pkg: '../package.json', - help: [ - 'Options', - ' --help Show this help', - ' --version Current version of package', - ' -d | --date Date that want to format (Date object as Number or String)', - ' -m | --mask Mask that will use to format the date', - ' -u | --utc Convert local time to UTC time or use `UTC:` prefix in mask', - ' -g | --gmt You can use `GMT:` prefix in mask', - '', - 'Usage', - ' dateformat [date] [mask]', - ' dateformat "Nov 26 2014" "fullDate"', - ' dateformat 1416985417095 "dddd, mmmm dS, yyyy, h:MM:ss TT"', - ' dateformat 1315361943159 "W"', - ' dateformat "UTC:h:MM:ss TT Z"', - ' dateformat "longTime" true', - ' dateformat "longTime" false true', - ' dateformat "Jun 9 2007" "fullDate" true', - ' date +%s | dateformat', - '' - ].join('\n') -}) - -var date = cli.input[0] || cli.flags.d || cli.flags.date || Date.now(); -var mask = cli.input[1] || cli.flags.m || cli.flags.mask || dateFormat.masks.default; -var utc = cli.input[2] || cli.flags.u || cli.flags.utc || false; -var gmt = cli.input[3] || cli.flags.g || cli.flags.gmt || false; - -utc = utc === 'true' ? true : false; -gmt = gmt === 'true' ? true : false; - -if (!cli.input.length) { - stdin(function(date) { - console.log(dateFormat(date, dateFormat.masks.default, utc, gmt)); - }); - return; -} - -if (cli.input.length === 1 && date) { - mask = date; - date = Date.now(); - console.log(dateFormat(date, mask, utc, gmt)); - return; -} - -if (cli.input.length >= 2 && date && mask) { - if (mask === 'true' || mask === 'false') { - utc = mask === 'true' ? true : false; - gmt = !utc; - mask = date - date = Date.now(); - } - console.log(dateFormat(date, mask, utc, gmt)); - return; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/lib/dateformat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/lib/dateformat.js deleted file mode 100644 index eb257464..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/lib/dateformat.js +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Date Format 1.2.3 - * (c) 2007-2009 Steven Levithan - * MIT license - * - * Includes enhancements by Scott Trenda - * and Kris Kowal - * - * Accepts a date, a mask, or a date and a mask. - * Returns a formatted version of the given date. - * The date defaults to the current date/time. - * The mask defaults to dateFormat.masks.default. - */ - -(function(global) { - 'use strict'; - - var dateFormat = (function() { - var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'|'[^']*'/g; - var timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g; - var timezoneClip = /[^-+\dA-Z]/g; - - // Regexes and supporting functions are cached through closure - return function (date, mask, utc, gmt) { - - // You can't provide utc if you skip other args (use the 'UTC:' mask prefix) - if (arguments.length === 1 && kindOf(date) === 'string' && !/\d/.test(date)) { - mask = date; - date = undefined; - } - - date = date || new Date; - - if(!(date instanceof Date)) { - date = new Date(date); - } - - if (isNaN(date)) { - throw TypeError('Invalid date'); - } - - mask = String(dateFormat.masks[mask] || mask || dateFormat.masks['default']); - - // Allow setting the utc/gmt argument via the mask - var maskSlice = mask.slice(0, 4); - if (maskSlice === 'UTC:' || maskSlice === 'GMT:') { - mask = mask.slice(4); - utc = true; - if (maskSlice === 'GMT:') { - gmt = true; - } - } - - var _ = utc ? 'getUTC' : 'get'; - var d = date[_ + 'Date'](); - var D = date[_ + 'Day'](); - var m = date[_ + 'Month'](); - var y = date[_ + 'FullYear'](); - var H = date[_ + 'Hours'](); - var M = date[_ + 'Minutes'](); - var s = date[_ + 'Seconds'](); - var L = date[_ + 'Milliseconds'](); - var o = utc ? 0 : date.getTimezoneOffset(); - var W = getWeek(date); - var N = getDayOfWeek(date); - var flags = { - d: d, - dd: pad(d), - ddd: dateFormat.i18n.dayNames[D], - dddd: dateFormat.i18n.dayNames[D + 7], - m: m + 1, - mm: pad(m + 1), - mmm: dateFormat.i18n.monthNames[m], - mmmm: dateFormat.i18n.monthNames[m + 12], - yy: String(y).slice(2), - yyyy: y, - h: H % 12 || 12, - hh: pad(H % 12 || 12), - H: H, - HH: pad(H), - M: M, - MM: pad(M), - s: s, - ss: pad(s), - l: pad(L, 3), - L: pad(Math.round(L / 10)), - t: H < 12 ? 'a' : 'p', - tt: H < 12 ? 'am' : 'pm', - T: H < 12 ? 'A' : 'P', - TT: H < 12 ? 'AM' : 'PM', - Z: gmt ? 'GMT' : utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''), - o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), - S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10], - W: W, - N: N - }; - - return mask.replace(token, function (match) { - if (match in flags) { - return flags[match]; - } - return match.slice(1, match.length - 1); - }); - }; - })(); - - dateFormat.masks = { - 'default': 'ddd mmm dd yyyy HH:MM:ss', - 'shortDate': 'm/d/yy', - 'mediumDate': 'mmm d, yyyy', - 'longDate': 'mmmm d, yyyy', - 'fullDate': 'dddd, mmmm d, yyyy', - 'shortTime': 'h:MM TT', - 'mediumTime': 'h:MM:ss TT', - 'longTime': 'h:MM:ss TT Z', - 'isoDate': 'yyyy-mm-dd', - 'isoTime': 'HH:MM:ss', - 'isoDateTime': 'yyyy-mm-dd\'T\'HH:MM:sso', - 'isoUtcDateTime': 'UTC:yyyy-mm-dd\'T\'HH:MM:ss\'Z\'', - 'expiresHeaderFormat': 'ddd, dd mmm yyyy HH:MM:ss Z' - }; - - // Internationalization strings - dateFormat.i18n = { - dayNames: [ - 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', - 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' - ], - monthNames: [ - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', - 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' - ] - }; - -function pad(val, len) { - val = String(val); - len = len || 2; - while (val.length < len) { - val = '0' + val; - } - return val; -} - -/** - * Get the ISO 8601 week number - * Based on comments from - * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html - * - * @param {Object} `date` - * @return {Number} - */ -function getWeek(date) { - // Remove time components of date - var targetThursday = new Date(date.getFullYear(), date.getMonth(), date.getDate()); - - // Change date to Thursday same week - targetThursday.setDate(targetThursday.getDate() - ((targetThursday.getDay() + 6) % 7) + 3); - - // Take January 4th as it is always in week 1 (see ISO 8601) - var firstThursday = new Date(targetThursday.getFullYear(), 0, 4); - - // Change date to Thursday same week - firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3); - - // Check if daylight-saving-time-switch occured and correct for it - var ds = targetThursday.getTimezoneOffset() - firstThursday.getTimezoneOffset(); - targetThursday.setHours(targetThursday.getHours() - ds); - - // Number of weeks between target Thursday and first Thursday - var weekDiff = (targetThursday - firstThursday) / (86400000*7); - return 1 + Math.floor(weekDiff); -} - -/** - * Get ISO-8601 numeric representation of the day of the week - * 1 (for Monday) through 7 (for Sunday) - * - * @param {Object} `date` - * @return {Number} - */ -function getDayOfWeek(date) { - var dow = date.getDay(); - if(dow === 0) { - dow = 7; - } - return dow; -} - -/** - * kind-of shortcut - * @param {*} val - * @return {String} - */ -function kindOf(val) { - if (val === null) { - return 'null'; - } - - if (val === undefined) { - return 'undefined'; - } - - if (typeof val !== 'object') { - return typeof val; - } - - if (Array.isArray(val)) { - return 'array'; - } - - return {}.toString.call(val) - .slice(8, -1).toLowerCase(); -}; - - - - if (typeof define === 'function' && define.amd) { - define(function () { - return dateFormat; - }); - } else if (typeof exports === 'object') { - module.exports = dateFormat; - } else { - global.dateFormat = dateFormat; - } -})(this); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/package.json deleted file mode 100644 index 2a017726..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "dateformat@^1.0.11", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "dateformat@>=1.0.11 <2.0.0", - "_id": "dateformat@1.0.12", - "_inCache": true, - "_installable": true, - "_location": "/dateformat", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "felix@debuggable.com", - "name": "felixge" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "dateformat", - "raw": "dateformat@^1.0.11", - "rawSpec": "^1.0.11", - "scope": null, - "spec": ">=1.0.11 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "_shasum": "9f124b67594c937ff706932e4a642cca8dbbfee9", - "_shrinkwrap": null, - "_spec": "dateformat@^1.0.11", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "name": "Steven Levithan" - }, - "bin": { - "dateformat": "bin/cli.js" - }, - "bugs": { - "url": "https://github.com/felixge/node-dateformat/issues" - }, - "contributors": [ - { - "name": "Steven Levithan" - }, - { - "email": "felix@debuggable.com", - "name": "Felix Geisendörfer" - }, - { - "email": "dev@tavan.de", - "name": "Christoph Tavan" - } - ], - "dependencies": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - }, - "description": "A node.js package for Steven Levithan's excellent dateFormat() function.", - "devDependencies": { - "mocha": "2.0.1", - "underscore": "1.7.0" - }, - "directories": {}, - "dist": { - "shasum": "9f124b67594c937ff706932e4a642cca8dbbfee9", - "tarball": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "17364d40e61c06f6de228ab94f3660a27f357f01", - "homepage": "https://github.com/felixge/node-dateformat", - "license": "MIT", - "main": "lib/dateformat", - "maintainers": [ - { - "email": "felix@debuggable.com", - "name": "felixge" - }, - { - "email": "dev@tavan.de", - "name": "ctavan" - } - ], - "name": "dateformat", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/felixge/node-dateformat.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.12" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_dayofweek.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_dayofweek.js deleted file mode 100644 index 7f37407c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_dayofweek.js +++ /dev/null @@ -1,15 +0,0 @@ -var assert = require('assert'); - -var dateFormat = require('./../lib/dateformat'); - -describe('dayOfWeek', function() { - it('should correctly format the timezone part', function(done) { - var start = 10; // the 10 of March 2013 is a Sunday - for(var dow = 1; dow <= 7; dow++){ - var date = new Date('2013-03-' + (start + dow)); - var N = dateFormat(date, 'N'); - assert.strictEqual(N, String(dow)); - } - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_formats.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_formats.js deleted file mode 100644 index df186cae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_formats.js +++ /dev/null @@ -1,76 +0,0 @@ -var assert = require('assert'); - -var _ = require('underscore'); - -var dateFormat = require('../lib/dateformat'); - -var expects = { - 'default': 'Wed Nov 26 2014 13:19:44', - 'shortDate': '11/26/14', - 'mediumDate': 'Nov 26, 2014', - 'longDate': 'November 26, 2014', - 'fullDate': 'Wednesday, November 26, 2014', - 'shortTime': '1:19 PM', - 'mediumTime': '1:19:44 PM', - 'longTime': '1:19:44 PM %TZ_PREFIX%%TZ_OFFSET%', - 'isoDate': '2014-11-26', - 'isoTime': '13:19:44', - 'isoDateTime': '2014-11-26T13:19:44%TZ_OFFSET%', - 'isoUtcDateTime': '', - 'expiresHeaderFormat': 'Wed, 26 Nov 2014 13:19:44 %TZ_PREFIX%%TZ_OFFSET%' -}; - -function pad(num, size) { - var s = num + ''; - while (s.length < size) { - s = '0' + s; - } - return s; -} - -function parseOffset(date) { - var offset = date.getTimezoneOffset(); - var hours = Math.floor(-1 * offset / 60); - var minutes = (-1 * offset) - (hours * 60); - var sign = offset > 0 ? '-' : '+'; - return { - offset: offset, - hours: hours, - minutes: minutes, - sign: sign, - }; -} - -function timezoneOffset(date) { - var offset = parseOffset(date); - return offset.sign + pad(offset.hours, 2) + pad(offset.minutes, 2); -} - -describe('dateformat([now], [mask])', function() { - _.each(dateFormat.masks, function(value, key) { - it('should format `' + key + '` mask', function(done) { - var now = new Date(2014, 10, 26, 13, 19, 44); - var tzOffset = timezoneOffset(now); - var expected = expects[key].replace(/%TZ_PREFIX%/, 'GMT') - .replace(/%TZ_OFFSET%/g, tzOffset) - .replace(/GMT\+0000/g, 'UTC'); - if (key === 'isoUtcDateTime') { - var offset = parseOffset(now); - now.setHours(now.getHours() - offset.hours, - now.getMinutes() - offset.minutes); - var expected = now.toISOString().replace(/\.000/g, ''); - } - var actual = dateFormat(now, key); - assert.strictEqual(actual, expected); - done(); - }); - }); - it('should use `default` mask, when `mask` is empty', function(done) { - var now = new Date(2014, 10, 26, 13, 19, 44); - var expected = expects['default']; - var actual = dateFormat(now); - - assert.strictEqual(actual, expected); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_isoutcdatetime.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_isoutcdatetime.js deleted file mode 100644 index 886b7a5b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/test_isoutcdatetime.js +++ /dev/null @@ -1,11 +0,0 @@ -var assert = require('assert'); - -var dateFormat = require('./../lib/dateformat'); - -describe('isoUtcDateTime', function() { - it('should correctly format the timezone part', function(done) { - var actual = dateFormat('2014-06-02T13:23:21-08:00', 'isoUtcDateTime'); - assert.strictEqual(actual, '2014-06-02T21:23:21Z'); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.js deleted file mode 100644 index d1ddbe81..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.js +++ /dev/null @@ -1,4 +0,0 @@ -var dateFormat = require('../lib/dateformat.js'); - -var val = process.argv[2] || new Date(); -console.log(dateFormat(val, 'W')); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.sh b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.sh deleted file mode 100644 index 3c3e69b3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/dateformat/test/weekofyear/test_weekofyear.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -# this just takes php's date() function as a reference to check if week of year -# is calculated correctly in the range from 1970 .. 2038 by brute force... - -SEQ="seq" -SYSTEM=`uname` -if [ "$SYSTEM" = "Darwin" ]; then - SEQ="jot" -fi - -for YEAR in {1970..2038}; do - for MONTH in {1..12}; do - DAYS=$(cal $MONTH $YEAR | egrep "28|29|30|31" |tail -1 |awk '{print $NF}') - for DAY in $( $SEQ $DAYS ); do - DATE=$YEAR-$MONTH-$DAY - echo -n $DATE ... - NODEVAL=$(node test_weekofyear.js $DATE) - PHPVAL=$(php -r "echo intval(date('W', strtotime('$DATE')));") - if [ "$NODEVAL" -ne "$PHPVAL" ]; then - echo "MISMATCH: node: $NODEVAL vs php: $PHPVAL for date $DATE" - else - echo " OK" - fi - done - done -done diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.jshintrc deleted file mode 100644 index 299877f2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.jshintrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "laxbreak": true -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.npmignore deleted file mode 100644 index 7e6163db..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -support -test -examples -example -*.sock -dist diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/History.md deleted file mode 100644 index 854c9711..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/History.md +++ /dev/null @@ -1,195 +0,0 @@ - -2.2.0 / 2015-05-09 -================== - - * package: update "ms" to v0.7.1 (#202, @dougwilson) - * README: add logging to file example (#193, @DanielOchoa) - * README: fixed a typo (#191, @amir-s) - * browser: expose `storage` (#190, @stephenmathieson) - * Makefile: add a `distclean` target (#189, @stephenmathieson) - -2.1.3 / 2015-03-13 -================== - - * Updated stdout/stderr example (#186) - * Updated example/stdout.js to match debug current behaviour - * Renamed example/stderr.js to stdout.js - * Update Readme.md (#184) - * replace high intensity foreground color for bold (#182, #183) - -2.1.2 / 2015-03-01 -================== - - * dist: recompile - * update "ms" to v0.7.0 - * package: update "browserify" to v9.0.3 - * component: fix "ms.js" repo location - * changed bower package name - * updated documentation about using debug in a browser - * fix: security error on safari (#167, #168, @yields) - -2.1.1 / 2014-12-29 -================== - - * browser: use `typeof` to check for `console` existence - * browser: check for `console.log` truthiness (fix IE 8/9) - * browser: add support for Chrome apps - * Readme: added Windows usage remarks - * Add `bower.json` to properly support bower install - -2.1.0 / 2014-10-15 -================== - - * node: implement `DEBUG_FD` env variable support - * package: update "browserify" to v6.1.0 - * package: add "license" field to package.json (#135, @panuhorsmalahti) - -2.0.0 / 2014-09-01 -================== - - * package: update "browserify" to v5.11.0 - * node: use stderr rather than stdout for logging (#29, @stephenmathieson) - -1.0.4 / 2014-07-15 -================== - - * dist: recompile - * example: remove `console.info()` log usage - * example: add "Content-Type" UTF-8 header to browser example - * browser: place %c marker after the space character - * browser: reset the "content" color via `color: inherit` - * browser: add colors support for Firefox >= v31 - * debug: prefer an instance `log()` function over the global one (#119) - * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) - -1.0.3 / 2014-07-09 -================== - - * Add support for multiple wildcards in namespaces (#122, @seegno) - * browser: fix lint - -1.0.2 / 2014-06-10 -================== - - * browser: update color palette (#113, @gscottolson) - * common: make console logging function configurable (#108, @timoxley) - * node: fix %o colors on old node <= 0.8.x - * Makefile: find node path using shell/which (#109, @timoxley) - -1.0.1 / 2014-06-06 -================== - - * browser: use `removeItem()` to clear localStorage - * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) - * package: add "contributors" section - * node: fix comment typo - * README: list authors - -1.0.0 / 2014-06-04 -================== - - * make ms diff be global, not be scope - * debug: ignore empty strings in enable() - * node: make DEBUG_COLORS able to disable coloring - * *: export the `colors` array - * npmignore: don't publish the `dist` dir - * Makefile: refactor to use browserify - * package: add "browserify" as a dev dependency - * Readme: add Web Inspector Colors section - * node: reset terminal color for the debug content - * node: map "%o" to `util.inspect()` - * browser: map "%j" to `JSON.stringify()` - * debug: add custom "formatters" - * debug: use "ms" module for humanizing the diff - * Readme: add "bash" syntax highlighting - * browser: add Firebug color support - * browser: add colors for WebKit browsers - * node: apply log to `console` - * rewrite: abstract common logic for Node & browsers - * add .jshintrc file - -0.8.1 / 2014-04-14 -================== - - * package: re-add the "component" section - -0.8.0 / 2014-03-30 -================== - - * add `enable()` method for nodejs. Closes #27 - * change from stderr to stdout - * remove unnecessary index.js file - -0.7.4 / 2013-11-13 -================== - - * remove "browserify" key from package.json (fixes something in browserify) - -0.7.3 / 2013-10-30 -================== - - * fix: catch localStorage security error when cookies are blocked (Chrome) - * add debug(err) support. Closes #46 - * add .browser prop to package.json. Closes #42 - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Makefile deleted file mode 100644 index 5cf4a596..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Makefile +++ /dev/null @@ -1,36 +0,0 @@ - -# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 -THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) -THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) - -# BIN directory -BIN := $(THIS_DIR)/node_modules/.bin - -# applications -NODE ?= $(shell which node) -NPM ?= $(NODE) $(shell which npm) -BROWSERIFY ?= $(NODE) $(BIN)/browserify - -all: dist/debug.js - -install: node_modules - -clean: - @rm -rf dist - -dist: - @mkdir -p $@ - -dist/debug.js: node_modules browser.js debug.js dist - @$(BROWSERIFY) \ - --standalone debug \ - . > $@ - -distclean: clean - @rm -rf node_modules - -node_modules: package.json - @NODE_ENV= $(NPM) install - @touch node_modules - -.PHONY: all install clean distclean diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Readme.md deleted file mode 100644 index b4f45e3c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/Readme.md +++ /dev/null @@ -1,188 +0,0 @@ -# debug - - tiny node.js debugging utility modelled after node core's debugging technique. - -## Installation - -```bash -$ npm install debug -``` - -## Usage - - With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -#### Windows note - - On Windows the environment variable is set using the `set` command. - - ```cmd - set DEBUG=*,-not_this - ``` - -Then, run the program to be debugged as usual. - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". - -## Browser support - - Debug works in the browser as well, currently persisted by `localStorage`. Consider the situation shown below where you have `worker:a` and `worker:b`, and wish to debug both. Somewhere in the code on your page, include: - -```js -window.myDebug = require("debug"); -``` - - ("debug" is a global object in the browser so we give this object a different name.) When your page is open in the browser, type the following in the console: - -```js -myDebug.enable("worker:*") -``` - - Refresh the page. Debug output will continue to be sent to the console until it is disabled by typing `myDebug.disable()` in the console. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - b('doing some work'); -}, 1200); -``` - -#### Web Inspector Colors - - Colors are also enabled on "Web Inspectors" that understand the `%c` formatting - option. These are WebKit web inspectors, Firefox ([since version - 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) - and the Firebug plugin for Firefox (any version). - - Colored output looks something like: - - ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) - -### stderr vs stdout - -You can set an alternative logging method per-namespace by overriding the `log` method on a per-namespace or globally: - -Example _stdout.js_: - -```js -var debug = require('debug'); -var error = debug('app:error'); - -// by default stderr is used -error('goes to stderr!'); - -var log = debug('app:log'); -// set this namespace to log via console.log -log.log = console.log.bind(console); // don't forget to bind to console! -log('goes to stdout'); -error('still goes to stderr!'); - -// set all output to go via console.info -// overrides all per-namespace log settings -debug.log = console.info.bind(console); -error('now goes to stdout via console.info'); -log('still goes to stdout, but via console.info now'); -``` - -### Save debug output to a file - -You can save all debug statements to a file by piping them. - -Example: - -```bash -$ DEBUG_FD=3 node your-app.js 3> whatever.log -``` - -## Authors - - - TJ Holowaychuk - - Nathan Rajlich - -## License - -(The MIT License) - -Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/bower.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/bower.json deleted file mode 100644 index 6af573ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "visionmedia-debug", - "main": "dist/debug.js", - "version": "2.2.0", - "homepage": "https://github.com/visionmedia/debug", - "authors": [ - "TJ Holowaychuk " - ], - "description": "visionmedia-debug", - "moduleType": [ - "amd", - "es6", - "globals", - "node" - ], - "keywords": [ - "visionmedia", - "debug" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/browser.js deleted file mode 100644 index 7c764522..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/browser.js +++ /dev/null @@ -1,168 +0,0 @@ - -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); - -/** - * Colors. - */ - -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; - -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ - -function useColors() { - // is webkit? http://stackoverflow.com/a/16459606/376773 - return ('WebkitAppearance' in document.documentElement.style) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (window.console && (console.firebug || (console.exception && console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); -} - -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ - -exports.formatters.j = function(v) { - return JSON.stringify(v); -}; - - -/** - * Colorize log arguments if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); - - if (!useColors) return args; - - var c = 'color: ' + this.color; - args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); - - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); - - args.splice(lastC, 0, c); - return args; -} - -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ - -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} - return r; -} - -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ - -exports.enable(load()); - -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ - -function localstorage(){ - try { - return window.localStorage; - } catch (e) {} -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/component.json deleted file mode 100644 index ca106372..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "2.2.0", - "keywords": [ - "debug", - "log", - "debugger" - ], - "main": "browser.js", - "scripts": [ - "browser.js", - "debug.js" - ], - "dependencies": { - "rauchg/ms.js": "0.7.1" - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/debug.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/debug.js deleted file mode 100644 index 7571a860..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/debug.js +++ /dev/null @@ -1,197 +0,0 @@ - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = debug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = require('ms'); - -/** - * The currently active debug mode names, and names to skip. - */ - -exports.names = []; -exports.skips = []; - -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lowercased letter, i.e. "n". - */ - -exports.formatters = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Previous log timestamp. - */ - -var prevTime; - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function selectColor() { - return exports.colors[prevColor++ % exports.colors.length]; -} - -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - -function debug(namespace) { - - // define the `disabled` version - function disabled() { - } - disabled.enabled = false; - - // define the `enabled` version - function enabled() { - - var self = enabled; - - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - // add the `color` if not set - if (null == self.useColors) self.useColors = exports.useColors(); - if (null == self.color && self.useColors) self.color = selectColor(); - - var args = Array.prototype.slice.call(arguments); - - args[0] = exports.coerce(args[0]); - - if ('string' !== typeof args[0]) { - // anything else let's inspect with %o - args = ['%o'].concat(args); - } - - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); - - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - if ('function' === typeof exports.formatArgs) { - args = exports.formatArgs.apply(self, args); - } - var logFn = enabled.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } - enabled.enabled = true; - - var fn = exports.enabled(namespace) ? enabled : disabled; - - fn.namespace = namespace; - - return fn; -} - -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - -function enable(namespaces) { - exports.save(namespaces); - - var split = (namespaces || '').split(/[\s,]+/); - var len = split.length; - - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} - -/** - * Disable debug output. - * - * @api public - */ - -function disable() { - exports.enable(''); -} - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} - -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/node.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/node.js deleted file mode 100644 index 1d392a81..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/node.js +++ /dev/null @@ -1,209 +0,0 @@ - -/** - * Module dependencies. - */ - -var tty = require('tty'); -var util = require('util'); - -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ - -exports = module.exports = require('./debug'); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; - -/** - * Colors. - */ - -exports.colors = [6, 2, 3, 4, 5, 1]; - -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ - -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); - -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ - -function useColors() { - var debugColors = (process.env.DEBUG_COLORS || '').trim().toLowerCase(); - if (0 === debugColors.length) { - return tty.isatty(fd); - } else { - return '0' !== debugColors - && 'no' !== debugColors - && 'false' !== debugColors - && 'disabled' !== debugColors; - } -} - -/** - * Map %o to `util.inspect()`, since Node doesn't do that out of the box. - */ - -var inspect = (4 === util.inspect.length ? - // node <= 0.8.x - function (v, colors) { - return util.inspect(v, void 0, void 0, colors); - } : - // node > 0.8.x - function (v, colors) { - return util.inspect(v, { colors: colors }); - } -); - -exports.formatters.o = function(v) { - return inspect(v, this.useColors) - .replace(/\s*\n\s*/g, ' '); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs() { - var args = arguments; - var useColors = this.useColors; - var name = this.namespace; - - if (useColors) { - var c = this.color; - - args[0] = ' \u001b[3' + c + ';1m' + name + ' ' - + '\u001b[0m' - + args[0] + '\u001b[3' + c + 'm' - + ' +' + exports.humanize(this.diff) + '\u001b[0m'; - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } - return args; -} - -/** - * Invokes `console.error()` with the specified arguments. - */ - -function log() { - return stream.write(util.format.apply(this, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = require('fs'); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = require('net'); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/package.json deleted file mode 100644 index d8d0e8d8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/debug/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "_args": [ - [ - "debug@2.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/mocha" - ] - ], - "_from": "debug@2.2.0", - "_id": "debug@2.2.0", - "_inCache": true, - "_installable": true, - "_location": "/debug", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - "_npmVersion": "2.7.4", - "_phantomChildren": {}, - "_requested": { - "name": "debug", - "raw": "debug@2.2.0", - "rawSpec": "2.2.0", - "scope": null, - "spec": "2.2.0", - "type": "version" - }, - "_requiredBy": [ - "/mocha" - ], - "_resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "_shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da", - "_shrinkwrap": null, - "_spec": "debug@2.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "browser": "./browser.js", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "component": { - "scripts": { - "debug/debug.js": "debug.js", - "debug/index.js": "browser.js" - } - }, - "contributors": [ - { - "email": "nathan@tootallnate.net", - "name": "Nathan Rajlich", - "url": "http://n8.io" - } - ], - "dependencies": { - "ms": "0.7.1" - }, - "description": "small debugging utility", - "devDependencies": { - "browserify": "9.0.3", - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "f87057e995b1a1f6ae6a4960664137bc56f039da", - "tarball": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" - }, - "gitHead": "b38458422b5aa8aa6d286b10dfe427e8a67e2b35", - "homepage": "https://github.com/visionmedia/debug", - "keywords": [ - "debug", - "log", - "debugger" - ], - "license": "MIT", - "main": "./node.js", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - } - ], - "name": "debug", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "scripts": {}, - "version": "2.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/index.js deleted file mode 100644 index 8d5bab7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -module.exports = function (str, sep) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - sep = typeof sep === 'undefined' ? '_' : sep; - - return str - .replace(/([a-z\d])([A-Z])/g, '$1' + sep + '$2') - .replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + sep + '$2') - .toLowerCase(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/package.json deleted file mode 100644 index 15981433..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "_args": [ - [ - "decamelize@^1.1.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/meow" - ] - ], - "_from": "decamelize@>=1.1.2 <2.0.0", - "_id": "decamelize@1.2.0", - "_inCache": true, - "_installable": true, - "_location": "/decamelize", - "_nodeVersion": "4.3.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/decamelize-1.2.0.tgz_1457167749082_0.9810893186368048" - }, - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "3.8.0", - "_phantomChildren": {}, - "_requested": { - "name": "decamelize", - "raw": "decamelize@^1.1.2", - "rawSpec": "^1.1.2", - "scope": null, - "spec": ">=1.1.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/meow" - ], - "_resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "_shasum": "f6534d15148269b20352e7bee26f501f9a191290", - "_shrinkwrap": null, - "_spec": "decamelize@^1.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/meow", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/decamelize/issues" - }, - "dependencies": {}, - "description": "Convert a camelized string into a lowercased one with a custom separator: unicornRainbow → unicorn_rainbow", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "f6534d15148269b20352e7bee26f501f9a191290", - "tarball": "http://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "95980ab6fb44c40eaca7792bdf93aff7c210c805", - "homepage": "https://github.com/sindresorhus/decamelize#readme", - "keywords": [ - "decamelize", - "decamelcase", - "camelcase", - "lowercase", - "case", - "dash", - "hyphen", - "string", - "str", - "text", - "convert" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "decamelize", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/decamelize.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/readme.md deleted file mode 100644 index 624c7ee5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/decamelize/readme.md +++ /dev/null @@ -1,48 +0,0 @@ -# decamelize [![Build Status](https://travis-ci.org/sindresorhus/decamelize.svg?branch=master)](https://travis-ci.org/sindresorhus/decamelize) - -> Convert a camelized string into a lowercased one with a custom separator
    -> Example: `unicornRainbow` → `unicorn_rainbow` - - -## Install - -``` -$ npm install --save decamelize -``` - - -## Usage - -```js -const decamelize = require('decamelize'); - -decamelize('unicornRainbow'); -//=> 'unicorn_rainbow' - -decamelize('unicornRainbow', '-'); -//=> 'unicorn-rainbow' -``` - - -## API - -### decamelize(input, [separator]) - -#### input - -Type: `string` - -#### separator - -Type: `string`
    -Default: `_` - - -## Related - -See [`camelcase`](https://github.com/sindresorhus/camelcase) for the inverse. - - -## License - -MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/LICENSE deleted file mode 100644 index d88b0720..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Elijah Insua - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/README.md deleted file mode 100644 index 1a4a2ea9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# defaults - -A simple one level options merge utility - -## install - -`npm install defaults` - -## use - -```javascript - -var defaults = require('defaults'); - -var handle = function(options, fn) { - options = defaults(options, { - timeout: 100 - }); - - setTimeout(function() { - fn(options); - }, options.timeout); -} - -handle({ timeout: 1000 }, function() { - // we're here 1000 ms later -}); - -handle({ timeout: 10000 }, function() { - // we're here 10s later -}); - -``` - -## summary - -this module exports a function that takes 2 arguments: `options` and `defaults`. When called, it overrides all of `undefined` properties in `options` with the clones of properties defined in `defaults` - -Sidecases: if called with a falsy `options` value, options will be initialized to a new object before being merged onto. - -## license - -[MIT](LICENSE) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/index.js deleted file mode 100644 index cb7d75c9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/index.js +++ /dev/null @@ -1,13 +0,0 @@ -var clone = require('clone'); - -module.exports = function(options, defaults) { - options = options || {}; - - Object.keys(defaults).forEach(function(key) { - if (typeof options[key] === 'undefined') { - options[key] = clone(defaults[key]); - } - }); - - return options; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/package.json deleted file mode 100644 index 6e6146e7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_args": [ - [ - "defaults@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "defaults@>=1.0.0 <2.0.0", - "_id": "defaults@1.0.3", - "_inCache": true, - "_installable": true, - "_location": "/defaults", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "tmpvar@gmail.com", - "name": "tmpvar" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "defaults", - "raw": "defaults@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "_shasum": "c656051e9817d9ff08ed881477f3fe4019f3ef7d", - "_shrinkwrap": null, - "_spec": "defaults@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "tmpvar@gmail.com", - "name": "Elijah Insua" - }, - "bugs": { - "url": "https://github.com/tmpvar/defaults/issues" - }, - "dependencies": { - "clone": "^1.0.2" - }, - "description": "merge single level defaults over a config object", - "devDependencies": { - "tap": "^2.0.0" - }, - "directories": {}, - "dist": { - "shasum": "c656051e9817d9ff08ed881477f3fe4019f3ef7d", - "tarball": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - }, - "gitHead": "8831ec32a5f999bfae1a8c9bf32880971ed7c6f2", - "homepage": "https://github.com/tmpvar/defaults#readme", - "keywords": [ - "config", - "defaults" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "tmpvar@gmail.com", - "name": "tmpvar" - } - ], - "name": "defaults", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/tmpvar/defaults.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/test.js deleted file mode 100644 index 60e0ffba..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/defaults/test.js +++ /dev/null @@ -1,34 +0,0 @@ -var defaults = require('./'), - test = require('tap').test; - -test("ensure options is an object", function(t) { - var options = defaults(false, { a : true }); - t.ok(options.a); - t.end() -}); - -test("ensure defaults override keys", function(t) { - var result = defaults({}, { a: false, b: true }); - t.ok(result.b, 'b merges over undefined'); - t.equal(result.a, false, 'a merges over undefined'); - t.end(); -}); - -test("ensure defined keys are not overwritten", function(t) { - var result = defaults({ b: false }, { a: false, b: true }); - t.equal(result.b, false, 'b not merged'); - t.equal(result.a, false, 'a merges over undefined'); - t.end(); -}); - -test("ensure defaults clone nested objects", function(t) { - var d = { a: [1,2,3], b: { hello : 'world' } }; - var result = defaults({}, d); - t.equal(result.a.length, 3, 'objects should be clones'); - t.ok(result.a !== d.a, 'objects should be clones'); - - t.equal(Object.keys(result.b).length, 1, 'objects should be clones'); - t.ok(result.b !== d.b, 'objects should be clones'); - t.end(); -}); - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 9daeafb9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/License b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Readme.md deleted file mode 100644 index aca36f9f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,141 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/lib/delayed_stream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index b38fc85f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,107 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/package.json deleted file mode 100644 index f59ffe91..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "delayed-stream@~1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/combined-stream" - ] - ], - "_from": "delayed-stream@>=1.0.0 <1.1.0", - "_id": "delayed-stream@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/delayed-stream", - "_nodeVersion": "1.6.4", - "_npmUser": { - "email": "apeherder@gmail.com", - "name": "apechimp" - }, - "_npmVersion": "2.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "delayed-stream", - "raw": "delayed-stream@~1.0.0", - "rawSpec": "~1.0.0", - "scope": null, - "spec": ">=1.0.0 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/combined-stream" - ], - "_resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "_shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619", - "_shrinkwrap": null, - "_spec": "delayed-stream@~1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/combined-stream", - "author": { - "email": "felix@debuggable.com", - "name": "Felix Geisendörfer", - "url": "http://debuggable.com/" - }, - "bugs": { - "url": "https://github.com/felixge/node-delayed-stream/issues" - }, - "contributors": [ - { - "email": "apeherder@gmail.com", - "name": "Mike Atkins" - } - ], - "dependencies": {}, - "description": "Buffers events from a stream until you are ready to handle them.", - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - }, - "directories": {}, - "dist": { - "shasum": "df3ae199acadfb7d440aaae0b29e2272b24ec619", - "tarball": "http://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "07a9dc99fb8f1a488160026b9ad77493f766fb84", - "homepage": "https://github.com/felixge/node-delayed-stream", - "license": "MIT", - "main": "./lib/delayed_stream", - "maintainers": [ - { - "email": "felix@debuggable.com", - "name": "felixge" - }, - { - "email": "apeherder@gmail.com", - "name": "apechimp" - } - ], - "name": "delayed-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "scripts": { - "test": "make test" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.npmignore deleted file mode 100644 index b5ef13a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -.DS_Store -*.log -node_modules -build -*.node -components \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.travis.yml deleted file mode 100644 index 33ad9f8c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.9" - - "0.10" -after_script: - - npm run coveralls \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/LICENSE deleted file mode 100755 index 7cbe012c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/README.md deleted file mode 100644 index 493e6ea5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# deprecated [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url] - - -## Information - - - - - - - - - - - - - -
    Packagedeprecated
    DescriptionTool for deprecating things
    Node Version>= 0.9
    - -## Usage - -```javascript -var oldfn = function(a,b) { - return a+b; -}; - -// returns a new wrapper function that logs the deprecated function once -var somefn = deprecated('dont use this anymore', console.log, oldfn); - -var someobj = {}; - -// set up a getter/set for field that logs deprecated message once -deprecated('dont use this anymore', console.log, someobj, 'a', 123); - -console.log(someobj.a); // 123 -``` - -[npm-url]: https://npmjs.org/package/deprecated -[npm-image]: https://badge.fury.io/js/deprecated.png - -[travis-url]: https://travis-ci.org/wearefractal/deprecated -[travis-image]: https://travis-ci.org/wearefractal/deprecated.png?branch=master - -[coveralls-url]: https://coveralls.io/r/wearefractal/deprecated -[coveralls-image]: https://coveralls.io/repos/wearefractal/deprecated/badge.png - -[depstat-url]: https://david-dm.org/wearefractal/deprecated -[depstat-image]: https://david-dm.org/wearefractal/deprecated.png - -[david-url]: https://david-dm.org/wearefractal/deprecated -[david-image]: https://david-dm.org/wearefractal/deprecated.png?theme=shields.io \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/index.js deleted file mode 100644 index f689e9cd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var deprecated = { - method: function(msg, log, fn) { - var called = false; - return function(){ - if (!called) { - called = true; - log(msg); - } - return fn.apply(this, arguments); - }; - }, - - field: function(msg, log, parent, field, val) { - var called = false; - var getter = function(){ - if (!called) { - called = true; - log(msg); - } - return val; - }; - var setter = function(v) { - if (!called) { - called = true; - log(msg); - } - val = v; - return v; - }; - Object.defineProperty(parent, field, { - get: getter, - set: setter, - enumerable: true - }); - return; - } -}; - -module.exports = deprecated; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/package.json deleted file mode 100644 index 42410d45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "_args": [ - [ - "deprecated@^0.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "deprecated@>=0.0.1 <0.0.2", - "_id": "deprecated@0.0.1", - "_inCache": true, - "_installable": true, - "_location": "/deprecated", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "1.3.24", - "_phantomChildren": {}, - "_requested": { - "name": "deprecated", - "raw": "deprecated@^0.0.1", - "rawSpec": "^0.0.1", - "scope": null, - "spec": ">=0.0.1 <0.0.2", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "_shasum": "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19", - "_shrinkwrap": null, - "_spec": "deprecated@^0.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/deprecated/issues" - }, - "dependencies": {}, - "description": "Tool for deprecating things", - "devDependencies": { - "coveralls": "~2.6.1", - "istanbul": "~0.2.3", - "jshint": "~2.4.1", - "mocha": "~1.17.0", - "mocha-lcov-reporter": "~0.0.1", - "rimraf": "~2.2.5", - "should": "~3.1.0" - }, - "directories": {}, - "dist": { - "shasum": "f9c9af5464afa1e7a971458a8bdef2aa94d5bb19", - "tarball": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "homepage": "http://github.com/wearefractal/deprecated", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/deprecated/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "deprecated", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/deprecated.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint" - }, - "version": "0.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/field.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/field.js deleted file mode 100644 index 91a7029c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/field.js +++ /dev/null @@ -1,44 +0,0 @@ -var deprecated = require('../'); -var should = require('should'); -require('mocha'); - -describe('field()', function() { - it('should return a wrapped function that logs once on get', function(done) { - var message = 'testing'; - var scope = { - a: 1 - }; - var obj = {}; - var logged = false; - var log = function(msg){ - msg.should.equal(message); - logged.should.equal(false); - logged = true; - }; - deprecated.field(message, log, obj, 'a', 123); - - obj.a.should.equal(123); - obj.a = 1234; - obj.a.should.equal(1234); - logged.should.equal(true); - done(); - }); - it('should return a wrapped function that logs once on set', function(done) { - var message = 'testing'; - var scope = { - a: 1 - }; - var obj = {}; - var logged = false; - var log = function(msg){ - msg.should.equal(message); - logged.should.equal(false); - logged = true; - }; - deprecated.field(message, log, obj, 'a', 123); - - obj.a = 1234; - logged.should.equal(true); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/method.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/method.js deleted file mode 100644 index 615ba945..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/deprecated/test/method.js +++ /dev/null @@ -1,32 +0,0 @@ -var deprecated = require('../'); -var should = require('should'); -require('mocha'); - -describe('method()', function() { - it('should return a wrapped function that logs once', function(done) { - var message = 'testing'; - var scope = { - a: 1 - }; - var logged = false; - var log = function(msg){ - msg.should.equal(message); - logged.should.equal(false); - logged = true; - }; - var fn = deprecated.method(message, log, function(one, two){ - this.should.equal(scope); - one.should.equal(1); - two.should.equal(2); - return one+two; - }); - - fn.bind(scope)(1,2).should.equal(3); - fn.bind(scope)(1,2).should.equal(3); - fn.bind(scope)(1,2).should.equal(3); - fn.bind(scope)(1,2).should.equal(3); - - logged.should.equal(true); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/CONTRIBUTING.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/CONTRIBUTING.md deleted file mode 100644 index 989a6c00..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/CONTRIBUTING.md +++ /dev/null @@ -1,39 +0,0 @@ -# How to Contribute - -## Pull Requests - -We also accept [pull requests][pull-request]! - -Generally we like to see pull requests that -- Maintain the existing code style -- Are focused on a single change (i.e. avoid large refactoring or style adjustments in untouched code if not the primary goal of the pull request) -- Have [good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) -- Have tests -- Don't decrease the current code coverage (see coverage/lcov-report/index.html) - -## Building - -``` -npm install -grunt -```` - -The `grunt dev` implements watching for tests within Node and `karma start` may be used for manual testing in browsers. - -If you notice any problems, please report them to the GitHub issue tracker at -[http://github.com/kpdecker/jsdiff/issues](http://github.com/kpdecker/jsdiff/issues). - -## Releasing - -JsDiff utilizes the [release yeoman generator][generator-release] to perform most release tasks. - -A full release may be completed with the following: - -``` -yo release -npm publish -yo release:publish components jsdiff dist/components/ -``` - -[generator-release]: https://github.com/walmartlabs/generator-release -[pull-request]: https://github.com/kpdecker/jsdiff/pull/new/master diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/LICENSE deleted file mode 100644 index 4e7146ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/LICENSE +++ /dev/null @@ -1,31 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2009-2015, Kevin Decker - -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Kevin Decker nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/README.md deleted file mode 100644 index d2df2eaf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# jsdiff - -[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.svg)](http://travis-ci.org/kpdecker/jsdiff) -[![Sauce Test Status](https://saucelabs.com/buildstatus/jsdiff)](https://saucelabs.com/u/jsdiff) - -A javascript text differencing implementation. - -Based on the algorithm proposed in -["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927). - -## Installation - - npm install diff - -or - - bower install jsdiff - - -## API - -* `JsDiff.diffChars(oldStr, newStr[, options])` - diffs two blocks of text, comparing character by character. - - Returns a list of change objects (See below). - -* `JsDiff.diffWords(oldStr, newStr[, options])` - diffs two blocks of text, comparing word by word, ignoring whitespace. - - Returns a list of change objects (See below). - -* `JsDiff.diffWordsWithSpace(oldStr, newStr[, options])` - diffs two blocks of text, comparing word by word, treating whitespace as significant. - - Returns a list of change objects (See below). - -* `JsDiff.diffLines(oldStr, newStr[, options])` - diffs two blocks of text, comparing line by line. - - Options - * `ignoreWhitespace`: `true` to ignore leading and trailing whitespace. This is the same as `diffTrimmedLines` - * `newlineIsToken`: `true` to treat newline characters as separate tokens. This allows for changes to the newline structure to occur independently of the line content and to be treated as such. In general this is the more human friendly form of `diffLines` and `diffLines` is better suited for patches and other computer friendly output. - - Returns a list of change objects (See below). - -* `JsDiff.diffTrimmedLines(oldStr, newStr[, options])` - diffs two blocks of text, comparing line by line, ignoring leading and trailing whitespace. - - Returns a list of change objects (See below). - -* `JsDiff.diffSentences(oldStr, newStr[, options])` - diffs two blocks of text, comparing sentence by sentence. - - Returns a list of change objects (See below). - -* `JsDiff.diffCss(oldStr, newStr[, options])` - diffs two blocks of text, comparing CSS tokens. - - Returns a list of change objects (See below). - -* `JsDiff.diffJson(oldObj, newObj[, options])` - diffs two JSON objects, comparing the fields defined on each. The order of fields, etc does not matter in this comparison. - - Returns a list of change objects (See below). - -* `JsDiff.createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. - - Parameters: - * `oldFileName` : String to be output in the filename section of the patch for the removals - * `newFileName` : String to be output in the filename section of the patch for the additions - * `oldStr` : Original string value - * `newStr` : New string value - * `oldHeader` : Additional information to include in the old file header - * `newHeader` : Additional information to include in the new file header - * `options` : An object with options. Currently, only `context` is supported and describes how many lines of context should be included. - -* `JsDiff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. - - Just like JsDiff.createTwoFilesPatch, but with oldFileName being equal to newFileName. - - -* `JsDiff.structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options)` - returns an object with an array of hunk objects. - - This method is similar to createTwoFilesPatch, but returns a data structure - suitable for further processing. Parameters are the same as createTwoFilesPatch. The data structure returned may look like this: - - ```js - { - oldFileName: 'oldfile', newFileName: 'newfile', - oldHeader: 'header1', newHeader: 'header2', - hunks: [{ - oldStart: 1, oldLines: 3, newStart: 1, newLines: 3, - lines: [' line2', ' line3', '-line4', '+line5', '\\ No newline at end of file'], - }] - } - ``` - -* `JsDiff.applyPatch(source, patch[, options])` - applies a unified diff patch. - - Return a string containing new version of provided data. `patch` may be a string diff or the output from the `parsePatch` or `structuredPatch` methods. - - The optional `options` object may have the following keys: - - - `fuzzFactor`: Number of lines that are allowed to differ before rejecting a patch. Defaults to 0. - - `compareLine(lineNumber, line, operation, patchContent)`: Callback used to compare to given lines to determine if they should be considered equal when patching. Defaults to strict equality but may be overriden to provide fuzzier comparison. Should return false if the lines should be rejected. - -* `JsDiff.applyPatches(patch, options)` - applies one or more patches. - - This method will iterate over the contents of the patch and apply to data provided through callbacks. The general flow for each patch index is: - - - `options.loadFile(index, callback)` is called. The caller should then load the contents of the file and then pass that to the `callback(err, data)` callback. Passing an `err` will terminate further patch execution. - - `options.patched(index, content)` is called once the patch has been applied. `content` will be the return value frmo `applyPatch`. - - Once all patches have been applied or an error occurs, the `options.complete(err)` callback is made. - -* `JsDiff.parsePatch(diffStr)` - Parses a patch into structured data - - Return a JSON object representation of the a patch, suitable for use with the `applyPatch` method. This parses to the same structure returned by `JsDiff.structuredPatch`. - -* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format - - -All methods above which accept the optional `callback` method will run in sync mode when that parameter is omitted and in async mode when supplied. This allows for larger diffs without blocking the event loop. This may be passed either directly as the final parameter or as the `callback` field in the `options` object. - -### Change Objects -Many of the methods above return change objects. These objects are consist of the following fields: - -* `value`: Text content -* `added`: True if the value was inserted into the new string -* `removed`: True of the value was removed from the old string - -Note that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner. - -## Examples - -Basic example in Node - -```js -require('colors') -var jsdiff = require('diff'); - -var one = 'beep boop'; -var other = 'beep boob blah'; - -var diff = jsdiff.diffChars(one, other); - -diff.forEach(function(part){ - // green for additions, red for deletions - // grey for common parts - var color = part.added ? 'green' : - part.removed ? 'red' : 'grey'; - process.stderr.write(part.value[color]); -}); - -console.log() -``` -Running the above program should yield - -Node Example - -Basic example in a web page - -```html -
    
    -
    -
    -```
    -
    -Open the above .html file in a browser and you should see
    -
    -Node Example
    -
    -**[Full online demo](http://kpdecker.github.com/jsdiff)**
    -
    -## Compatibility
    -
    -[![Sauce Test Status](https://saucelabs.com/browser-matrix/jsdiff.svg)](https://saucelabs.com/u/jsdiff)
    -
    -jsdiff supports all ES3 environments with some known issues on IE8 and below. Under these browsers some diff algorithms such as word diff and others may fail due to lack of support for capturing groups in the `split` operation.
    -
    -## License
    -
    -See [LICENSE](https://github.com/kpdecker/jsdiff/blob/master/LICENSE).
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.js
    deleted file mode 100644
    index dd9d05da..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.js
    +++ /dev/null
    @@ -1,1338 +0,0 @@
    -/*!
    -
    - diff v2.2.2
    -
    -Software License Agreement (BSD License)
    -
    -Copyright (c) 2009-2015, Kevin Decker 
    -
    -All rights reserved.
    -
    -Redistribution and use of this software in source and binary forms, with or without modification,
    -are permitted provided that the following conditions are met:
    -
    -* Redistributions of source code must retain the above
    -  copyright notice, this list of conditions and the
    -  following disclaimer.
    -
    -* Redistributions in binary form must reproduce the above
    -  copyright notice, this list of conditions and the
    -  following disclaimer in the documentation and/or other
    -  materials provided with the distribution.
    -
    -* Neither the name of Kevin Decker nor the names of its
    -  contributors may be used to endorse or promote products
    -  derived from this software without specific prior
    -  written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
    -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
    -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -@license
    -*/
    -(function webpackUniversalModuleDefinition(root, factory) {
    -	if(typeof exports === 'object' && typeof module === 'object')
    -		module.exports = factory();
    -	else if(typeof define === 'function' && define.amd)
    -		define([], factory);
    -	else if(typeof exports === 'object')
    -		exports["JsDiff"] = factory();
    -	else
    -		root["JsDiff"] = factory();
    -})(this, function() {
    -return /******/ (function(modules) { // webpackBootstrap
    -/******/ 	// The module cache
    -/******/ 	var installedModules = {};
    -
    -/******/ 	// The require function
    -/******/ 	function __webpack_require__(moduleId) {
    -
    -/******/ 		// Check if module is in cache
    -/******/ 		if(installedModules[moduleId])
    -/******/ 			return installedModules[moduleId].exports;
    -
    -/******/ 		// Create a new module (and put it into the cache)
    -/******/ 		var module = installedModules[moduleId] = {
    -/******/ 			exports: {},
    -/******/ 			id: moduleId,
    -/******/ 			loaded: false
    -/******/ 		};
    -
    -/******/ 		// Execute the module function
    -/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    -
    -/******/ 		// Flag the module as loaded
    -/******/ 		module.loaded = true;
    -
    -/******/ 		// Return the exports of the module
    -/******/ 		return module.exports;
    -/******/ 	}
    -
    -
    -/******/ 	// expose the modules object (__webpack_modules__)
    -/******/ 	__webpack_require__.m = modules;
    -
    -/******/ 	// expose the module cache
    -/******/ 	__webpack_require__.c = installedModules;
    -
    -/******/ 	// __webpack_public_path__
    -/******/ 	__webpack_require__.p = "";
    -
    -/******/ 	// Load entry module and return exports
    -/******/ 	return __webpack_require__(0);
    -/******/ })
    -/************************************************************************/
    -/******/ ([
    -/* 0 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;
    -	/*istanbul ignore end*/
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	/*istanbul ignore end*/
    -	var /*istanbul ignore start*/_character = __webpack_require__(2) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_word = __webpack_require__(3) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_sentence = __webpack_require__(6) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_css = __webpack_require__(7) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_json = __webpack_require__(8) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_apply = __webpack_require__(9) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_parse = __webpack_require__(10) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_create = __webpack_require__(12) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_dmp = __webpack_require__(13) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_xml = __webpack_require__(14) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/* See LICENSE file for terms of use */
    -
    -	/*
    -	 * Text diff implementation.
    -	 *
    -	 * This library supports the following APIS:
    -	 * JsDiff.diffChars: Character by character diff
    -	 * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
    -	 * JsDiff.diffLines: Line based diff
    -	 *
    -	 * JsDiff.diffCss: Diff targeted at CSS content
    -	 *
    -	 * These methods are based on the implementation proposed in
    -	 * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
    -	 * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
    -	 */
    -	exports. /*istanbul ignore end*/Diff = _base2.default;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize;
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQTs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FHRTt5REFFQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFFQTt5REFDQTt5REFFQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSVM6XG4gKiBKc0RpZmYuZGlmZkNoYXJzOiBDaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIGRpZmZcbiAqIEpzRGlmZi5kaWZmV29yZHM6IFdvcmQgKGFzIGRlZmluZWQgYnkgXFxiIHJlZ2V4KSBkaWZmIHdoaWNoIGlnbm9yZXMgd2hpdGVzcGFjZVxuICogSnNEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogSnNEaWZmLmRpZmZDc3M6IERpZmYgdGFyZ2V0ZWQgYXQgQ1NTIGNvbnRlbnRcbiAqXG4gKiBUaGVzZSBtZXRob2RzIGFyZSBiYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gcHJvcG9zZWQgaW5cbiAqIFwiQW4gTyhORCkgRGlmZmVyZW5jZSBBbGdvcml0aG0gYW5kIGl0cyBWYXJpYXRpb25zXCIgKE15ZXJzLCAxOTg2KS5cbiAqIGh0dHA6Ly9jaXRlc2VlcnguaXN0LnBzdS5lZHUvdmlld2RvYy9zdW1tYXJ5P2RvaT0xMC4xLjEuNC42OTI3XG4gKi9cbmltcG9ydCBEaWZmIGZyb20gJy4vZGlmZi9iYXNlJztcbmltcG9ydCB7ZGlmZkNoYXJzfSBmcm9tICcuL2RpZmYvY2hhcmFjdGVyJztcbmltcG9ydCB7ZGlmZldvcmRzLCBkaWZmV29yZHNXaXRoU3BhY2V9IGZyb20gJy4vZGlmZi93b3JkJztcbmltcG9ydCB7ZGlmZkxpbmVzLCBkaWZmVHJpbW1lZExpbmVzfSBmcm9tICcuL2RpZmYvbGluZSc7XG5pbXBvcnQge2RpZmZTZW50ZW5jZXN9IGZyb20gJy4vZGlmZi9zZW50ZW5jZSc7XG5cbmltcG9ydCB7ZGlmZkNzc30gZnJvbSAnLi9kaWZmL2Nzcyc7XG5pbXBvcnQge2RpZmZKc29uLCBjYW5vbmljYWxpemV9IGZyb20gJy4vZGlmZi9qc29uJztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgc3RydWN0dXJlZFBhdGNoLFxuICBjcmVhdGVUd29GaWxlc1BhdGNoLFxuICBjcmVhdGVQYXRjaCxcbiAgYXBwbHlQYXRjaCxcbiAgYXBwbHlQYXRjaGVzLFxuICBwYXJzZVBhdGNoLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0=
    -
    -
    -/***/ },
    -/* 1 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.default = /*istanbul ignore end*/Diff;
    -	function Diff() {}
    -
    -	Diff.prototype = { /*istanbul ignore start*/
    -	  /*istanbul ignore end*/diff: function diff(oldString, newString) {
    -	    /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
    -
    -	    var callback = options.callback;
    -	    if (typeof options === 'function') {
    -	      callback = options;
    -	      options = {};
    -	    }
    -	    this.options = options;
    -
    -	    var self = this;
    -
    -	    function done(value) {
    -	      if (callback) {
    -	        setTimeout(function () {
    -	          callback(undefined, value);
    -	        }, 0);
    -	        return true;
    -	      } else {
    -	        return value;
    -	      }
    -	    }
    -
    -	    // Allow subclasses to massage the input prior to running
    -	    oldString = this.castInput(oldString);
    -	    newString = this.castInput(newString);
    -
    -	    oldString = this.removeEmpty(this.tokenize(oldString));
    -	    newString = this.removeEmpty(this.tokenize(newString));
    -
    -	    var newLen = newString.length,
    -	        oldLen = oldString.length;
    -	    var editLength = 1;
    -	    var maxEditLength = newLen + oldLen;
    -	    var bestPath = [{ newPos: -1, components: [] }];
    -
    -	    // Seed editLength = 0, i.e. the content starts with the same values
    -	    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
    -	    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
    -	      // Identity per the equality and tokenizer
    -	      return done([{ value: newString.join(''), count: newString.length }]);
    -	    }
    -
    -	    // Main worker method. checks all permutations of a given edit length for acceptance.
    -	    function execEditLength() {
    -	      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
    -	        var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -	        var addPath = bestPath[diagonalPath - 1],
    -	            removePath = bestPath[diagonalPath + 1],
    -	            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
    -	        if (addPath) {
    -	          // No one else is going to attempt to use this value, clear it
    -	          bestPath[diagonalPath - 1] = undefined;
    -	        }
    -
    -	        var canAdd = addPath && addPath.newPos + 1 < newLen,
    -	            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
    -	        if (!canAdd && !canRemove) {
    -	          // If this path is a terminal then prune
    -	          bestPath[diagonalPath] = undefined;
    -	          continue;
    -	        }
    -
    -	        // Select the diagonal that we want to branch from. We select the prior
    -	        // path whose position in the new string is the farthest from the origin
    -	        // and does not pass the bounds of the diff graph
    -	        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
    -	          basePath = clonePath(removePath);
    -	          self.pushComponent(basePath.components, undefined, true);
    -	        } else {
    -	          basePath = addPath; // No need to clone, we've pulled it from the list
    -	          basePath.newPos++;
    -	          self.pushComponent(basePath.components, true, undefined);
    -	        }
    -
    -	        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
    -
    -	        // If we have hit the end of both strings, then we are done
    -	        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
    -	          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
    -	        } else {
    -	          // Otherwise track this path as a potential candidate and continue.
    -	          bestPath[diagonalPath] = basePath;
    -	        }
    -	      }
    -
    -	      editLength++;
    -	    }
    -
    -	    // Performs the length of edit iteration. Is a bit fugly as this has to support the
    -	    // sync and async mode which is never fun. Loops over execEditLength until a value
    -	    // is produced.
    -	    if (callback) {
    -	      (function exec() {
    -	        setTimeout(function () {
    -	          // This should not happen, but we want to be safe.
    -	          /* istanbul ignore next */
    -	          if (editLength > maxEditLength) {
    -	            return callback();
    -	          }
    -
    -	          if (!execEditLength()) {
    -	            exec();
    -	          }
    -	        }, 0);
    -	      })();
    -	    } else {
    -	      while (editLength <= maxEditLength) {
    -	        var ret = execEditLength();
    -	        if (ret) {
    -	          return ret;
    -	        }
    -	      }
    -	    }
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {
    -	    var last = components[components.length - 1];
    -	    if (last && last.added === added && last.removed === removed) {
    -	      // We need to clone here as the component clone operation is just
    -	      // as shallow array clone
    -	      components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
    -	    } else {
    -	      components.push({ count: 1, added: added, removed: removed });
    -	    }
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
    -	    var newLen = newString.length,
    -	        oldLen = oldString.length,
    -	        newPos = basePath.newPos,
    -	        oldPos = newPos - diagonalPath,
    -	        commonCount = 0;
    -	    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
    -	      newPos++;
    -	      oldPos++;
    -	      commonCount++;
    -	    }
    -
    -	    if (commonCount) {
    -	      basePath.components.push({ count: commonCount });
    -	    }
    -
    -	    basePath.newPos = newPos;
    -	    return oldPos;
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {
    -	    return left === right;
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {
    -	    var ret = [];
    -	    for (var i = 0; i < array.length; i++) {
    -	      if (array[i]) {
    -	        ret.push(array[i]);
    -	      }
    -	    }
    -	    return ret;
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {
    -	    return value;
    -	  },
    -	  /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {
    -	    return value.split('');
    -	  }
    -	};
    -
    -	function buildValues(diff, components, newString, oldString, useLongestToken) {
    -	  var componentPos = 0,
    -	      componentLen = components.length,
    -	      newPos = 0,
    -	      oldPos = 0;
    -
    -	  for (; componentPos < componentLen; componentPos++) {
    -	    var component = components[componentPos];
    -	    if (!component.removed) {
    -	      if (!component.added && useLongestToken) {
    -	        var value = newString.slice(newPos, newPos + component.count);
    -	        value = value.map(function (value, i) {
    -	          var oldValue = oldString[oldPos + i];
    -	          return oldValue.length > value.length ? oldValue : value;
    -	        });
    -
    -	        component.value = value.join('');
    -	      } else {
    -	        component.value = newString.slice(newPos, newPos + component.count).join('');
    -	      }
    -	      newPos += component.count;
    -
    -	      // Common case
    -	      if (!component.added) {
    -	        oldPos += component.count;
    -	      }
    -	    } else {
    -	      component.value = oldString.slice(oldPos, oldPos + component.count).join('');
    -	      oldPos += component.count;
    -
    -	      // Reverse add and remove so removes are output first to match common convention
    -	      // The diffing algorithm is tied to add then remove output and this is the simplest
    -	      // route to get the desired output with minimal overhead.
    -	      if (componentPos && components[componentPos - 1].added) {
    -	        var tmp = components[componentPos - 1];
    -	        components[componentPos - 1] = components[componentPos];
    -	        components[componentPos] = tmp;
    -	      }
    -	    }
    -	  }
    -
    -	  // Special case handle for when one terminal is ignored. For this case we merge the
    -	  // terminal into the prior string and drop the change.
    -	  var lastComponent = components[componentLen - 1];
    -	  if (componentLen > 1 && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
    -	    components[componentLen - 2].value += lastComponent.value;
    -	    components.pop();
    -	  }
    -
    -	  return components;
    -	}
    -
    -	function clonePath(path) {
    -	  return { newPos: path.newPos, components: path.components.slice(0) };
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3lDQUF3QjtBQUFULFNBQVMsSUFBVCxHQUFnQixFQUFoQjs7QUFFZixLQUFLLFNBQUwsR0FBaUI7eUJBQ2Ysb0JBQUssV0FBVyxXQUF5Qjt3REFBZCxnRUFBVSxrQkFBSTs7QUFDdkMsUUFBSSxXQUFXLFFBQVEsUUFBUixDQUR3QjtBQUV2QyxRQUFJLE9BQU8sT0FBUCxLQUFtQixVQUFuQixFQUErQjtBQUNqQyxpQkFBVyxPQUFYLENBRGlDO0FBRWpDLGdCQUFVLEVBQVYsQ0FGaUM7S0FBbkM7QUFJQSxTQUFLLE9BQUwsR0FBZSxPQUFmLENBTnVDOztBQVF2QyxRQUFJLE9BQU8sSUFBUCxDQVJtQzs7QUFVdkMsYUFBUyxJQUFULENBQWMsS0FBZCxFQUFxQjtBQUNuQixVQUFJLFFBQUosRUFBYztBQUNaLG1CQUFXLFlBQVc7QUFBRSxtQkFBUyxTQUFULEVBQW9CLEtBQXBCLEVBQUY7U0FBWCxFQUE0QyxDQUF2RCxFQURZO0FBRVosZUFBTyxJQUFQLENBRlk7T0FBZCxNQUdPO0FBQ0wsZUFBTyxLQUFQLENBREs7T0FIUDtLQURGOzs7QUFWdUMsYUFvQnZDLEdBQVksS0FBSyxTQUFMLENBQWUsU0FBZixDQUFaLENBcEJ1QztBQXFCdkMsZ0JBQVksS0FBSyxTQUFMLENBQWUsU0FBZixDQUFaLENBckJ1Qzs7QUF1QnZDLGdCQUFZLEtBQUssV0FBTCxDQUFpQixLQUFLLFFBQUwsQ0FBYyxTQUFkLENBQWpCLENBQVosQ0F2QnVDO0FBd0J2QyxnQkFBWSxLQUFLLFdBQUwsQ0FBaUIsS0FBSyxRQUFMLENBQWMsU0FBZCxDQUFqQixDQUFaLENBeEJ1Qzs7QUEwQnZDLFFBQUksU0FBUyxVQUFVLE1BQVY7UUFBa0IsU0FBUyxVQUFVLE1BQVYsQ0ExQkQ7QUEyQnZDLFFBQUksYUFBYSxDQUFiLENBM0JtQztBQTRCdkMsUUFBSSxnQkFBZ0IsU0FBUyxNQUFULENBNUJtQjtBQTZCdkMsUUFBSSxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBRCxFQUFJLFlBQVksRUFBWixFQUFmLENBQVg7OztBQTdCbUMsUUFnQ25DLFNBQVMsS0FBSyxhQUFMLENBQW1CLFNBQVMsQ0FBVCxDQUFuQixFQUFnQyxTQUFoQyxFQUEyQyxTQUEzQyxFQUFzRCxDQUF0RCxDQUFULENBaENtQztBQWlDdkMsUUFBSSxTQUFTLENBQVQsRUFBWSxNQUFaLEdBQXFCLENBQXJCLElBQTBCLE1BQTFCLElBQW9DLFNBQVMsQ0FBVCxJQUFjLE1BQWQsRUFBc0I7O0FBRTVELGFBQU8sS0FBSyxDQUFDLEVBQUMsT0FBTyxVQUFVLElBQVYsQ0FBZSxFQUFmLENBQVAsRUFBMkIsT0FBTyxVQUFVLE1BQVYsRUFBcEMsQ0FBTCxDQUFQLENBRjREO0tBQTlEOzs7QUFqQ3VDLGFBdUM5QixjQUFULEdBQTBCO0FBQ3hCLFdBQUssSUFBSSxlQUFlLENBQUMsQ0FBRCxHQUFLLFVBQUwsRUFBaUIsZ0JBQWdCLFVBQWhCLEVBQTRCLGdCQUFnQixDQUFoQixFQUFtQjtBQUN0RixZQUFJLGtFQUFKLENBRHNGO0FBRXRGLFlBQUksVUFBVSxTQUFTLGVBQWUsQ0FBZixDQUFuQjtZQUNBLGFBQWEsU0FBUyxlQUFlLENBQWYsQ0FBdEI7WUFDQSxVQUFTLENBQUMsYUFBYSxXQUFXLE1BQVgsR0FBb0IsQ0FBakMsQ0FBRCxHQUF1QyxZQUF2QyxDQUp5RTtBQUt0RixZQUFJLE9BQUosRUFBYTs7QUFFWCxtQkFBUyxlQUFlLENBQWYsQ0FBVCxHQUE2QixTQUE3QixDQUZXO1NBQWI7O0FBS0EsWUFBSSxTQUFTLFdBQVcsUUFBUSxNQUFSLEdBQWlCLENBQWpCLEdBQXFCLE1BQXJCO1lBQ3BCLFlBQVksY0FBYyxLQUFLLE9BQUwsSUFBZSxVQUFTLE1BQVQsQ0FYeUM7QUFZdEYsWUFBSSxDQUFDLE1BQUQsSUFBVyxDQUFDLFNBQUQsRUFBWTs7QUFFekIsbUJBQVMsWUFBVCxJQUF5QixTQUF6QixDQUZ5QjtBQUd6QixtQkFIeUI7U0FBM0I7Ozs7O0FBWnNGLFlBcUJsRixDQUFDLE1BQUQsSUFBWSxhQUFhLFFBQVEsTUFBUixHQUFpQixXQUFXLE1BQVgsRUFBb0I7QUFDaEUscUJBQVcsVUFBVSxVQUFWLENBQVgsQ0FEZ0U7QUFFaEUsZUFBSyxhQUFMLENBQW1CLFNBQVMsVUFBVCxFQUFxQixTQUF4QyxFQUFtRCxJQUFuRCxFQUZnRTtTQUFsRSxNQUdPO0FBQ0wscUJBQVcsT0FBWDtBQURLLGtCQUVMLENBQVMsTUFBVCxHQUZLO0FBR0wsZUFBSyxhQUFMLENBQW1CLFNBQVMsVUFBVCxFQUFxQixJQUF4QyxFQUE4QyxTQUE5QyxFQUhLO1NBSFA7O0FBU0Esa0JBQVMsS0FBSyxhQUFMLENBQW1CLFFBQW5CLEVBQTZCLFNBQTdCLEVBQXdDLFNBQXhDLEVBQW1ELFlBQW5ELENBQVQ7OztBQTlCc0YsWUFpQ2xGLFNBQVMsTUFBVCxHQUFrQixDQUFsQixJQUF1QixNQUF2QixJQUFpQyxVQUFTLENBQVQsSUFBYyxNQUFkLEVBQXNCO0FBQ3pELGlCQUFPLEtBQUssWUFBWSxJQUFaLEVBQWtCLFNBQVMsVUFBVCxFQUFxQixTQUF2QyxFQUFrRCxTQUFsRCxFQUE2RCxLQUFLLGVBQUwsQ0FBbEUsQ0FBUCxDQUR5RDtTQUEzRCxNQUVPOztBQUVMLG1CQUFTLFlBQVQsSUFBeUIsUUFBekIsQ0FGSztTQUZQO09BakNGOztBQXlDQSxtQkExQ3dCO0tBQTFCOzs7OztBQXZDdUMsUUF1Rm5DLFFBQUosRUFBYztBQUNaLE9BQUMsU0FBUyxJQUFULEdBQWdCO0FBQ2YsbUJBQVcsWUFBVzs7O0FBR3BCLGNBQUksYUFBYSxhQUFiLEVBQTRCO0FBQzlCLG1CQUFPLFVBQVAsQ0FEOEI7V0FBaEM7O0FBSUEsY0FBSSxDQUFDLGdCQUFELEVBQW1CO0FBQ3JCLG1CQURxQjtXQUF2QjtTQVBTLEVBVVIsQ0FWSCxFQURlO09BQWhCLEdBQUQsQ0FEWTtLQUFkLE1BY087QUFDTCxhQUFPLGNBQWMsYUFBZCxFQUE2QjtBQUNsQyxZQUFJLE1BQU0sZ0JBQU4sQ0FEOEI7QUFFbEMsWUFBSSxHQUFKLEVBQVM7QUFDUCxpQkFBTyxHQUFQLENBRE87U0FBVDtPQUZGO0tBZkY7R0F4RmE7bURBZ0hmLHNDQUFjLFlBQVksT0FBTyxTQUFTO0FBQ3hDLFFBQUksT0FBTyxXQUFXLFdBQVcsTUFBWCxHQUFvQixDQUFwQixDQUFsQixDQURvQztBQUV4QyxRQUFJLFFBQVEsS0FBSyxLQUFMLEtBQWUsS0FBZixJQUF3QixLQUFLLE9BQUwsS0FBaUIsT0FBakIsRUFBMEI7OztBQUc1RCxpQkFBVyxXQUFXLE1BQVgsR0FBb0IsQ0FBcEIsQ0FBWCxHQUFvQyxFQUFDLE9BQU8sS0FBSyxLQUFMLEdBQWEsQ0FBYixFQUFnQixPQUFPLEtBQVAsRUFBYyxTQUFTLE9BQVQsRUFBMUUsQ0FINEQ7S0FBOUQsTUFJTztBQUNMLGlCQUFXLElBQVgsQ0FBZ0IsRUFBQyxPQUFPLENBQVAsRUFBVSxPQUFPLEtBQVAsRUFBYyxTQUFTLE9BQVQsRUFBekMsRUFESztLQUpQO0dBbEhhO21EQTBIZixzQ0FBYyxVQUFVLFdBQVcsV0FBVyxjQUFjO0FBQzFELFFBQUksU0FBUyxVQUFVLE1BQVY7UUFDVCxTQUFTLFVBQVUsTUFBVjtRQUNULFNBQVMsU0FBUyxNQUFUO1FBQ1QsU0FBUyxTQUFTLFlBQVQ7UUFFVCxjQUFjLENBQWQsQ0FOc0Q7QUFPMUQsV0FBTyxTQUFTLENBQVQsR0FBYSxNQUFiLElBQXVCLFNBQVMsQ0FBVCxHQUFhLE1BQWIsSUFBdUIsS0FBSyxNQUFMLENBQVksVUFBVSxTQUFTLENBQVQsQ0FBdEIsRUFBbUMsVUFBVSxTQUFTLENBQVQsQ0FBN0MsQ0FBOUMsRUFBeUc7QUFDOUcsZUFEOEc7QUFFOUcsZUFGOEc7QUFHOUcsb0JBSDhHO0tBQWhIOztBQU1BLFFBQUksV0FBSixFQUFpQjtBQUNmLGVBQVMsVUFBVCxDQUFvQixJQUFwQixDQUF5QixFQUFDLE9BQU8sV0FBUCxFQUExQixFQURlO0tBQWpCOztBQUlBLGFBQVMsTUFBVCxHQUFrQixNQUFsQixDQWpCMEQ7QUFrQjFELFdBQU8sTUFBUCxDQWxCMEQ7R0ExSDdDO21EQStJZix3QkFBTyxNQUFNLE9BQU87QUFDbEIsV0FBTyxTQUFTLEtBQVQsQ0FEVztHQS9JTDttREFrSmYsa0NBQVksT0FBTztBQUNqQixRQUFJLE1BQU0sRUFBTixDQURhO0FBRWpCLFNBQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLE1BQU0sTUFBTixFQUFjLEdBQWxDLEVBQXVDO0FBQ3JDLFVBQUksTUFBTSxDQUFOLENBQUosRUFBYztBQUNaLFlBQUksSUFBSixDQUFTLE1BQU0sQ0FBTixDQUFULEVBRFk7T0FBZDtLQURGO0FBS0EsV0FBTyxHQUFQLENBUGlCO0dBbEpKO21EQTJKZiw4QkFBVSxPQUFPO0FBQ2YsV0FBTyxLQUFQLENBRGU7R0EzSkY7bURBOEpmLDRCQUFTLE9BQU87QUFDZCxXQUFPLE1BQU0sS0FBTixDQUFZLEVBQVosQ0FBUCxDQURjO0dBOUpEO0NBQWpCOztBQW1LQSxTQUFTLFdBQVQsQ0FBcUIsSUFBckIsRUFBMkIsVUFBM0IsRUFBdUMsU0FBdkMsRUFBa0QsU0FBbEQsRUFBNkQsZUFBN0QsRUFBOEU7QUFDNUUsTUFBSSxlQUFlLENBQWY7TUFDQSxlQUFlLFdBQVcsTUFBWDtNQUNmLFNBQVMsQ0FBVDtNQUNBLFNBQVMsQ0FBVCxDQUp3RTs7QUFNNUUsU0FBTyxlQUFlLFlBQWYsRUFBNkIsY0FBcEMsRUFBb0Q7QUFDbEQsUUFBSSxZQUFZLFdBQVcsWUFBWCxDQUFaLENBRDhDO0FBRWxELFFBQUksQ0FBQyxVQUFVLE9BQVYsRUFBbUI7QUFDdEIsVUFBSSxDQUFDLFVBQVUsS0FBVixJQUFtQixlQUFwQixFQUFxQztBQUN2QyxZQUFJLFFBQVEsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQXpDLENBRG1DO0FBRXZDLGdCQUFRLE1BQU0sR0FBTixDQUFVLFVBQVMsS0FBVCxFQUFnQixDQUFoQixFQUFtQjtBQUNuQyxjQUFJLFdBQVcsVUFBVSxTQUFTLENBQVQsQ0FBckIsQ0FEK0I7QUFFbkMsaUJBQU8sU0FBUyxNQUFULEdBQWtCLE1BQU0sTUFBTixHQUFlLFFBQWpDLEdBQTRDLEtBQTVDLENBRjRCO1NBQW5CLENBQWxCLENBRnVDOztBQU92QyxrQkFBVSxLQUFWLEdBQWtCLE1BQU0sSUFBTixDQUFXLEVBQVgsQ0FBbEIsQ0FQdUM7T0FBekMsTUFRTztBQUNMLGtCQUFVLEtBQVYsR0FBa0IsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQWpDLENBQWtELElBQWxELENBQXVELEVBQXZELENBQWxCLENBREs7T0FSUDtBQVdBLGdCQUFVLFVBQVUsS0FBVjs7O0FBWlksVUFlbEIsQ0FBQyxVQUFVLEtBQVYsRUFBaUI7QUFDcEIsa0JBQVUsVUFBVSxLQUFWLENBRFU7T0FBdEI7S0FmRixNQWtCTztBQUNMLGdCQUFVLEtBQVYsR0FBa0IsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQWpDLENBQWtELElBQWxELENBQXVELEVBQXZELENBQWxCLENBREs7QUFFTCxnQkFBVSxVQUFVLEtBQVY7Ozs7O0FBRkwsVUFPRCxnQkFBZ0IsV0FBVyxlQUFlLENBQWYsQ0FBWCxDQUE2QixLQUE3QixFQUFvQztBQUN0RCxZQUFJLE1BQU0sV0FBVyxlQUFlLENBQWYsQ0FBakIsQ0FEa0Q7QUFFdEQsbUJBQVcsZUFBZSxDQUFmLENBQVgsR0FBK0IsV0FBVyxZQUFYLENBQS9CLENBRnNEO0FBR3RELG1CQUFXLFlBQVgsSUFBMkIsR0FBM0IsQ0FIc0Q7T0FBeEQ7S0F6QkY7R0FGRjs7OztBQU40RSxNQTJDeEUsZ0JBQWdCLFdBQVcsZUFBZSxDQUFmLENBQTNCLENBM0N3RTtBQTRDNUUsTUFBSSxlQUFlLENBQWYsS0FDSSxjQUFjLEtBQWQsSUFBdUIsY0FBYyxPQUFkLENBRDNCLElBRUcsS0FBSyxNQUFMLENBQVksRUFBWixFQUFnQixjQUFjLEtBQWQsQ0FGbkIsRUFFeUM7QUFDM0MsZUFBVyxlQUFlLENBQWYsQ0FBWCxDQUE2QixLQUE3QixJQUFzQyxjQUFjLEtBQWQsQ0FESztBQUUzQyxlQUFXLEdBQVgsR0FGMkM7R0FGN0M7O0FBT0EsU0FBTyxVQUFQLENBbkQ0RTtDQUE5RTs7QUFzREEsU0FBUyxTQUFULENBQW1CLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRSxRQUFRLEtBQUssTUFBTCxFQUFhLFlBQVksS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQXNCLENBQXRCLENBQVosRUFBOUIsQ0FEdUI7Q0FBekIiLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgbGV0IGJlc3RQYXRoID0gW3sgbmV3UG9zOiAtMSwgY29tcG9uZW50czogW10gfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBvbGRQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ubmV3UG9zICsgMSA+PSBuZXdMZW4gJiYgb2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogbmV3U3RyaW5nLmpvaW4oJycpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSB2YWx1ZS5qb2luKCcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkuam9pbignJyk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gb2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KS5qb2luKCcnKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkLiBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZVxuICAvLyB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0=
    -
    -
    -/***/ },
    -/* 2 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.characterDiff = undefined;
    -	exports. /*istanbul ignore end*/diffChars = diffChars;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	function diffChars(oldStr, newStr, callback) {
    -	  return characterDiff.diff(oldStr, newStr, callback);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O2dDQUdnQjs7QUFIaEI7Ozs7Ozs7dUJBRU8sSUFBTSx5RkFBZ0IscUVBQWhCO0FBQ04sU0FBUyxTQUFULENBQW1CLE1BQW5CLEVBQTJCLE1BQTNCLEVBQW1DLFFBQW5DLEVBQTZDO0FBQUUsU0FBTyxjQUFjLElBQWQsQ0FBbUIsTUFBbkIsRUFBMkIsTUFBM0IsRUFBbUMsUUFBbkMsQ0FBUCxDQUFGO0NBQTdDIiwiZmlsZSI6ImNoYXJhY3Rlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjaGFyYWN0ZXJEaWZmID0gbmV3IERpZmYoKTtcbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ2hhcnMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBjaGFyYWN0ZXJEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuIl19
    -
    -
    -/***/ },
    -/* 3 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.wordDiff = undefined;
    -	exports. /*istanbul ignore end*/diffWords = diffWords;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	/*istanbul ignore end*/
    -	var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/
    -
    -	// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
    -	//
    -	// Ranges and exceptions:
    -	// Latin-1 Supplement, 0080–00FF
    -	//  - U+00D7  × Multiplication sign
    -	//  - U+00F7  ÷ Division sign
    -	// Latin Extended-A, 0100–017F
    -	// Latin Extended-B, 0180–024F
    -	// IPA Extensions, 0250–02AF
    -	// Spacing Modifier Letters, 02B0–02FF
    -	//  - U+02C7  ˇ ˇ  Caron
    -	//  - U+02D8  ˘ ˘  Breve
    -	//  - U+02D9  ˙ ˙  Dot Above
    -	//  - U+02DA  ˚ ˚  Ring Above
    -	//  - U+02DB  ˛ ˛  Ogonek
    -	//  - U+02DC  ˜ ˜  Small Tilde
    -	//  - U+02DD  ˝ ˝  Double Acute Accent
    -	// Latin Extended Additional, 1E00–1EFF
    -	var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
    -
    -	var reWhitespace = /\S/;
    -
    -	var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	wordDiff.equals = function (left, right) {
    -	  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
    -	};
    -	wordDiff.tokenize = function (value) {
    -	  var tokens = value.split(/(\s+|\b)/);
    -
    -	  // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
    -	  for (var i = 0; i < tokens.length - 1; i++) {
    -	    // If we have an empty string in the next field and we have only word chars before and after, merge
    -	    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
    -	      tokens[i] += tokens[i + 2];
    -	      tokens.splice(i + 1, 2);
    -	      i--;
    -	    }
    -	  }
    -
    -	  return tokens;
    -	};
    -
    -	function diffWords(oldStr, newStr, callback) {
    -	  var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
    -	  return wordDiff.diff(oldStr, newStr, options);
    -	}
    -	function diffWordsWithSpace(oldStr, newStr, callback) {
    -	  return wordDiff.diff(oldStr, newStr, callback);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0ErQ2dCO3lEQUlBOztBQW5EaEI7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQU0sb0JBQW9CLCtEQUFwQjs7QUFFTixJQUFNLGVBQWUsSUFBZjs7QUFFQyxJQUFNLCtFQUFXLHFFQUFYO0FBQ2IsU0FBUyxNQUFULEdBQWtCLFVBQVMsSUFBVCxFQUFlLEtBQWYsRUFBc0I7QUFDdEMsU0FBTyxTQUFTLEtBQVQsSUFBbUIsS0FBSyxPQUFMLENBQWEsZ0JBQWIsSUFBaUMsQ0FBQyxhQUFhLElBQWIsQ0FBa0IsSUFBbEIsQ0FBRCxJQUE0QixDQUFDLGFBQWEsSUFBYixDQUFrQixLQUFsQixDQUFELENBRGpEO0NBQXRCO0FBR2xCLFNBQVMsUUFBVCxHQUFvQixVQUFTLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSSxTQUFTLE1BQU0sS0FBTixDQUFZLFVBQVosQ0FBVDs7O0FBRDhCLE9BSTdCLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxPQUFPLE1BQVAsR0FBZ0IsQ0FBaEIsRUFBbUIsR0FBdkMsRUFBNEM7O0FBRTFDLFFBQUksQ0FBQyxPQUFPLElBQUksQ0FBSixDQUFSLElBQWtCLE9BQU8sSUFBSSxDQUFKLENBQXpCLElBQ0ssa0JBQWtCLElBQWxCLENBQXVCLE9BQU8sQ0FBUCxDQUF2QixDQURMLElBRUssa0JBQWtCLElBQWxCLENBQXVCLE9BQU8sSUFBSSxDQUFKLENBQTlCLENBRkwsRUFFNEM7QUFDOUMsYUFBTyxDQUFQLEtBQWEsT0FBTyxJQUFJLENBQUosQ0FBcEIsQ0FEOEM7QUFFOUMsYUFBTyxNQUFQLENBQWMsSUFBSSxDQUFKLEVBQU8sQ0FBckIsRUFGOEM7QUFHOUMsVUFIOEM7S0FGaEQ7R0FGRjs7QUFXQSxTQUFPLE1BQVAsQ0Fma0M7Q0FBaEI7O0FBa0JiLFNBQVMsU0FBVCxDQUFtQixNQUFuQixFQUEyQixNQUEzQixFQUFtQyxRQUFuQyxFQUE2QztBQUNsRCxNQUFJLFVBQVUsOEVBQWdCLFFBQWhCLEVBQTBCLEVBQUMsa0JBQWtCLElBQWxCLEVBQTNCLENBQVYsQ0FEOEM7QUFFbEQsU0FBTyxTQUFTLElBQVQsQ0FBYyxNQUFkLEVBQXNCLE1BQXRCLEVBQThCLE9BQTlCLENBQVAsQ0FGa0Q7Q0FBN0M7QUFJQSxTQUFTLGtCQUFULENBQTRCLE1BQTVCLEVBQW9DLE1BQXBDLEVBQTRDLFFBQTVDLEVBQXNEO0FBQzNELFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBRDJEO0NBQXREIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmV29yZHNXaXRoU3BhY2Uob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7XG59XG4iXX0=
    -
    -
    -/***/ },
    -/* 4 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/generateOptions = generateOptions;
    -	function generateOptions(options, defaults) {
    -	  if (typeof options === 'function') {
    -	    defaults.callback = options;
    -	  } else if (options) {
    -	    for (var name in options) {
    -	      /* istanbul ignore else */
    -	      if (options.hasOwnProperty(name)) {
    -	        defaults[name] = options[name];
    -	      }
    -	    }
    -	  }
    -	  return defaults;
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxlQUFULENBQXlCLE9BQXpCLEVBQWtDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBTyxPQUFQLEtBQW1CLFVBQW5CLEVBQStCO0FBQ2pDLGFBQVMsUUFBVCxHQUFvQixPQUFwQixDQURpQztHQUFuQyxNQUVPLElBQUksT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSSxJQUFKLElBQVksT0FBakIsRUFBMEI7O0FBRXhCLFVBQUksUUFBUSxjQUFSLENBQXVCLElBQXZCLENBQUosRUFBa0M7QUFDaEMsaUJBQVMsSUFBVCxJQUFpQixRQUFRLElBQVIsQ0FBakIsQ0FEZ0M7T0FBbEM7S0FGRjtHQURLO0FBUVAsU0FBTyxRQUFQLENBWGlEO0NBQTVDIiwiZmlsZSI6InBhcmFtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU9wdGlvbnMob3B0aW9ucywgZGVmYXVsdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVmYXVsdHMuY2FsbGJhY2sgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBuYW1lIGluIG9wdGlvbnMpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBkZWZhdWx0c1tuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWZhdWx0cztcbn1cbiJdfQ==
    -
    -
    -/***/ },
    -/* 5 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.lineDiff = undefined;
    -	exports. /*istanbul ignore end*/diffLines = diffLines;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	/*istanbul ignore end*/
    -	var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	lineDiff.tokenize = function (value) {
    -	  var retLines = [],
    -	      linesAndNewlines = value.split(/(\n|\r\n)/);
    -
    -	  // Ignore the final empty token that occurs if the string ends with a new line
    -	  if (!linesAndNewlines[linesAndNewlines.length - 1]) {
    -	    linesAndNewlines.pop();
    -	  }
    -
    -	  // Merge the content and line separators into single tokens
    -	  for (var i = 0; i < linesAndNewlines.length; i++) {
    -	    var line = linesAndNewlines[i];
    -
    -	    if (i % 2 && !this.options.newlineIsToken) {
    -	      retLines[retLines.length - 1] += line;
    -	    } else {
    -	      if (this.options.ignoreWhitespace) {
    -	        line = line.trim();
    -	      }
    -	      retLines.push(line);
    -	    }
    -	  }
    -
    -	  return retLines;
    -	};
    -
    -	function diffLines(oldStr, newStr, callback) {
    -	  return lineDiff.diff(oldStr, newStr, callback);
    -	}
    -	function diffTrimmedLines(oldStr, newStr, callback) {
    -	  var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
    -	  return lineDiff.diff(oldStr, newStr, options);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0E4QmdCO3lEQUNBOztBQS9CaEI7Ozs7OztBQUNBOzs7Ozt1QkFFTyxJQUFNLCtFQUFXLHFFQUFYO0FBQ2IsU0FBUyxRQUFULEdBQW9CLFVBQVMsS0FBVCxFQUFnQjtBQUNsQyxNQUFJLFdBQVcsRUFBWDtNQUNBLG1CQUFtQixNQUFNLEtBQU4sQ0FBWSxXQUFaLENBQW5COzs7QUFGOEIsTUFLOUIsQ0FBQyxpQkFBaUIsaUJBQWlCLE1BQWpCLEdBQTBCLENBQTFCLENBQWxCLEVBQWdEO0FBQ2xELHFCQUFpQixHQUFqQixHQURrRDtHQUFwRDs7O0FBTGtDLE9BVTdCLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxpQkFBaUIsTUFBakIsRUFBeUIsR0FBN0MsRUFBa0Q7QUFDaEQsUUFBSSxPQUFPLGlCQUFpQixDQUFqQixDQUFQLENBRDRDOztBQUdoRCxRQUFJLElBQUksQ0FBSixJQUFTLENBQUMsS0FBSyxPQUFMLENBQWEsY0FBYixFQUE2QjtBQUN6QyxlQUFTLFNBQVMsTUFBVCxHQUFrQixDQUFsQixDQUFULElBQWlDLElBQWpDLENBRHlDO0tBQTNDLE1BRU87QUFDTCxVQUFJLEtBQUssT0FBTCxDQUFhLGdCQUFiLEVBQStCO0FBQ2pDLGVBQU8sS0FBSyxJQUFMLEVBQVAsQ0FEaUM7T0FBbkM7QUFHQSxlQUFTLElBQVQsQ0FBYyxJQUFkLEVBSks7S0FGUDtHQUhGOztBQWFBLFNBQU8sUUFBUCxDQXZCa0M7Q0FBaEI7O0FBMEJiLFNBQVMsU0FBVCxDQUFtQixNQUFuQixFQUEyQixNQUEzQixFQUFtQyxRQUFuQyxFQUE2QztBQUFFLFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBQUY7Q0FBN0M7QUFDQSxTQUFTLGdCQUFULENBQTBCLE1BQTFCLEVBQWtDLE1BQWxDLEVBQTBDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUksVUFBVSw4RUFBZ0IsUUFBaEIsRUFBMEIsRUFBQyxrQkFBa0IsSUFBbEIsRUFBM0IsQ0FBVixDQURxRDtBQUV6RCxTQUFPLFNBQVMsSUFBVCxDQUFjLE1BQWQsRUFBc0IsTUFBdEIsRUFBOEIsT0FBOUIsQ0FBUCxDQUZ5RDtDQUFwRCIsImZpbGUiOiJsaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19
    -
    -
    -/***/ },
    -/* 6 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.sentenceDiff = undefined;
    -	exports. /*istanbul ignore end*/diffSentences = diffSentences;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	sentenceDiff.tokenize = function (value) {
    -	  return value.split(/(\S.+?[.!?])(?=\s+|$)/);
    -	};
    -
    -	function diffSentences(oldStr, newStr, callback) {
    -	  return sentenceDiff.diff(oldStr, newStr, callback);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCOztBQVJoQjs7Ozs7Ozt1QkFHTyxJQUFNLHVGQUFlLHFFQUFmO0FBQ2IsYUFBYSxRQUFiLEdBQXdCLFVBQVMsS0FBVCxFQUFnQjtBQUN0QyxTQUFPLE1BQU0sS0FBTixDQUFZLHVCQUFaLENBQVAsQ0FEc0M7Q0FBaEI7O0FBSWpCLFNBQVMsYUFBVCxDQUF1QixNQUF2QixFQUErQixNQUEvQixFQUF1QyxRQUF2QyxFQUFpRDtBQUFFLFNBQU8sYUFBYSxJQUFiLENBQWtCLE1BQWxCLEVBQTBCLE1BQTFCLEVBQWtDLFFBQWxDLENBQVAsQ0FBRjtDQUFqRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
    -
    -
    -/***/ },
    -/* 7 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.cssDiff = undefined;
    -	exports. /*istanbul ignore end*/diffCss = diffCss;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	cssDiff.tokenize = function (value) {
    -	  return value.split(/([{}:;,]|\s+)/);
    -	};
    -
    -	function diffCss(oldStr, newStr, callback) {
    -	  return cssDiff.diff(oldStr, newStr, callback);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O2dDQU9nQjs7QUFQaEI7Ozs7Ozs7dUJBRU8sSUFBTSw2RUFBVSxxRUFBVjtBQUNiLFFBQVEsUUFBUixHQUFtQixVQUFTLEtBQVQsRUFBZ0I7QUFDakMsU0FBTyxNQUFNLEtBQU4sQ0FBWSxlQUFaLENBQVAsQ0FEaUM7Q0FBaEI7O0FBSVosU0FBUyxPQUFULENBQWlCLE1BQWpCLEVBQXlCLE1BQXpCLEVBQWlDLFFBQWpDLEVBQTJDO0FBQUUsU0FBTyxRQUFRLElBQVIsQ0FBYSxNQUFiLEVBQXFCLE1BQXJCLEVBQTZCLFFBQTdCLENBQVAsQ0FBRjtDQUEzQyIsImZpbGUiOiJjc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgY3NzRGlmZiA9IG5ldyBEaWZmKCk7XG5jc3NEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oW3t9OjssXXxcXHMrKS8pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDc3Mob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBjc3NEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuIl19
    -
    -
    -/***/ },
    -/* 8 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports.jsonDiff = undefined;
    -
    -	var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
    -
    -	exports. /*istanbul ignore end*/diffJson = diffJson;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;
    -
    -	var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _base2 = _interopRequireDefault(_base);
    -
    -	/*istanbul ignore end*/
    -	var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/
    -
    -	var objectPrototypeToString = Object.prototype.toString;
    -
    -	var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -	// Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
    -	// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
    -	jsonDiff.useLongestToken = true;
    -
    -	jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff. /*istanbul ignore end*/tokenize;
    -	jsonDiff.castInput = function (value) {
    -	  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value), undefined, '  ');
    -	};
    -	jsonDiff.equals = function (left, right) {
    -	  return (/*istanbul ignore start*/_base2.default. /*istanbul ignore end*/prototype.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
    -	  );
    -	};
    -
    -	function diffJson(oldObj, newObj, callback) {
    -	  return jsonDiff.diff(oldObj, newObj, callback);
    -	}
    -
    -	// This function handles the presence of circular references by bailing out when encountering an
    -	// object that is already on the "stack" of items being processed.
    -	function canonicalize(obj, stack, replacementStack) {
    -	  stack = stack || [];
    -	  replacementStack = replacementStack || [];
    -
    -	  var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -	  for (i = 0; i < stack.length; i += 1) {
    -	    if (stack[i] === obj) {
    -	      return replacementStack[i];
    -	    }
    -	  }
    -
    -	  var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -	  if ('[object Array]' === objectPrototypeToString.call(obj)) {
    -	    stack.push(obj);
    -	    canonicalizedObj = new Array(obj.length);
    -	    replacementStack.push(canonicalizedObj);
    -	    for (i = 0; i < obj.length; i += 1) {
    -	      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
    -	    }
    -	    stack.pop();
    -	    replacementStack.pop();
    -	    return canonicalizedObj;
    -	  }
    -
    -	  if (obj && obj.toJSON) {
    -	    obj = obj.toJSON();
    -	  }
    -
    -	  if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
    -	    stack.push(obj);
    -	    canonicalizedObj = {};
    -	    replacementStack.push(canonicalizedObj);
    -	    var sortedKeys = [],
    -	        key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -	    for (key in obj) {
    -	      /* istanbul ignore else */
    -	      if (obj.hasOwnProperty(key)) {
    -	        sortedKeys.push(key);
    -	      }
    -	    }
    -	    sortedKeys.sort();
    -	    for (i = 0; i < sortedKeys.length; i += 1) {
    -	      key = sortedKeys[i];
    -	      canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
    -	    }
    -	    stack.pop();
    -	    replacementStack.pop();
    -	  } else {
    -	    canonicalizedObj = obj;
    -	  }
    -	  return canonicalizedObj;
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FtQmdCO3lEQUtBOztBQXhCaEI7Ozs7OztBQUNBOzs7Ozs7O0FBRUEsSUFBTSwwQkFBMEIsT0FBTyxTQUFQLENBQWlCLFFBQWpCOztBQUd6QixJQUFNLCtFQUFXLHFFQUFYOzs7QUFHYixTQUFTLGVBQVQsR0FBMkIsSUFBM0I7O0FBRUEsU0FBUyxRQUFULEdBQW9CLGdFQUFTLFFBQVQ7QUFDcEIsU0FBUyxTQUFULEdBQXFCLFVBQVMsS0FBVCxFQUFnQjtBQUNuQyxTQUFPLE9BQU8sS0FBUCxLQUFpQixRQUFqQixHQUE0QixLQUE1QixHQUFvQyxLQUFLLFNBQUwsQ0FBZSxhQUFhLEtBQWIsQ0FBZixFQUFvQyxTQUFwQyxFQUErQyxJQUEvQyxDQUFwQyxDQUQ0QjtDQUFoQjtBQUdyQixTQUFTLE1BQVQsR0FBa0IsVUFBUyxJQUFULEVBQWUsS0FBZixFQUFzQjtBQUN0QyxTQUFPLGlFQUFLLFNBQUwsQ0FBZSxNQUFmLENBQXNCLEtBQUssT0FBTCxDQUFhLFlBQWIsRUFBMkIsSUFBM0IsQ0FBdEIsRUFBd0QsTUFBTSxPQUFOLENBQWMsWUFBZCxFQUE0QixJQUE1QixDQUF4RCxDQUFQO0lBRHNDO0NBQXRCOztBQUlYLFNBQVMsUUFBVCxDQUFrQixNQUFsQixFQUEwQixNQUExQixFQUFrQyxRQUFsQyxFQUE0QztBQUFFLFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBQUY7Q0FBNUM7Ozs7QUFLQSxTQUFTLFlBQVQsQ0FBc0IsR0FBdEIsRUFBMkIsS0FBM0IsRUFBa0MsZ0JBQWxDLEVBQW9EO0FBQ3pELFVBQVEsU0FBUyxFQUFULENBRGlEO0FBRXpELHFCQUFtQixvQkFBb0IsRUFBcEIsQ0FGc0M7O0FBSXpELE1BQUksMkRBQUosQ0FKeUQ7O0FBTXpELE9BQUssSUFBSSxDQUFKLEVBQU8sSUFBSSxNQUFNLE1BQU4sRUFBYyxLQUFLLENBQUwsRUFBUTtBQUNwQyxRQUFJLE1BQU0sQ0FBTixNQUFhLEdBQWIsRUFBa0I7QUFDcEIsYUFBTyxpQkFBaUIsQ0FBakIsQ0FBUCxDQURvQjtLQUF0QjtHQURGOztBQU1BLE1BQUksMEVBQUosQ0FaeUQ7O0FBY3pELE1BQUkscUJBQXFCLHdCQUF3QixJQUF4QixDQUE2QixHQUE3QixDQUFyQixFQUF3RDtBQUMxRCxVQUFNLElBQU4sQ0FBVyxHQUFYLEVBRDBEO0FBRTFELHVCQUFtQixJQUFJLEtBQUosQ0FBVSxJQUFJLE1BQUosQ0FBN0IsQ0FGMEQ7QUFHMUQscUJBQWlCLElBQWpCLENBQXNCLGdCQUF0QixFQUgwRDtBQUkxRCxTQUFLLElBQUksQ0FBSixFQUFPLElBQUksSUFBSSxNQUFKLEVBQVksS0FBSyxDQUFMLEVBQVE7QUFDbEMsdUJBQWlCLENBQWpCLElBQXNCLGFBQWEsSUFBSSxDQUFKLENBQWIsRUFBcUIsS0FBckIsRUFBNEIsZ0JBQTVCLENBQXRCLENBRGtDO0tBQXBDO0FBR0EsVUFBTSxHQUFOLEdBUDBEO0FBUTFELHFCQUFpQixHQUFqQixHQVIwRDtBQVMxRCxXQUFPLGdCQUFQLENBVDBEO0dBQTVEOztBQVlBLE1BQUksT0FBTyxJQUFJLE1BQUosRUFBWTtBQUNyQixVQUFNLElBQUksTUFBSixFQUFOLENBRHFCO0dBQXZCOztBQUlBLE1BQUkseURBQU8saURBQVAsS0FBZSxRQUFmLElBQTJCLFFBQVEsSUFBUixFQUFjO0FBQzNDLFVBQU0sSUFBTixDQUFXLEdBQVgsRUFEMkM7QUFFM0MsdUJBQW1CLEVBQW5CLENBRjJDO0FBRzNDLHFCQUFpQixJQUFqQixDQUFzQixnQkFBdEIsRUFIMkM7QUFJM0MsUUFBSSxhQUFhLEVBQWI7UUFDQSw2REFESixDQUoyQztBQU0zQyxTQUFLLEdBQUwsSUFBWSxHQUFaLEVBQWlCOztBQUVmLFVBQUksSUFBSSxjQUFKLENBQW1CLEdBQW5CLENBQUosRUFBNkI7QUFDM0IsbUJBQVcsSUFBWCxDQUFnQixHQUFoQixFQUQyQjtPQUE3QjtLQUZGO0FBTUEsZUFBVyxJQUFYLEdBWjJDO0FBYTNDLFNBQUssSUFBSSxDQUFKLEVBQU8sSUFBSSxXQUFXLE1BQVgsRUFBbUIsS0FBSyxDQUFMLEVBQVE7QUFDekMsWUFBTSxXQUFXLENBQVgsQ0FBTixDQUR5QztBQUV6Qyx1QkFBaUIsR0FBakIsSUFBd0IsYUFBYSxJQUFJLEdBQUosQ0FBYixFQUF1QixLQUF2QixFQUE4QixnQkFBOUIsQ0FBeEIsQ0FGeUM7S0FBM0M7QUFJQSxVQUFNLEdBQU4sR0FqQjJDO0FBa0IzQyxxQkFBaUIsR0FBakIsR0FsQjJDO0dBQTdDLE1BbUJPO0FBQ0wsdUJBQW1CLEdBQW5CLENBREs7R0FuQlA7QUFzQkEsU0FBTyxnQkFBUCxDQXBEeUQ7Q0FBcEQiLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2xpbmVEaWZmfSBmcm9tICcuL2xpbmUnO1xuXG5jb25zdCBvYmplY3RQcm90b3R5cGVUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cblxuZXhwb3J0IGNvbnN0IGpzb25EaWZmID0gbmV3IERpZmYoKTtcbi8vIERpc2NyaW1pbmF0ZSBiZXR3ZWVuIHR3byBsaW5lcyBvZiBwcmV0dHktcHJpbnRlZCwgc2VyaWFsaXplZCBKU09OIHdoZXJlIG9uZSBvZiB0aGVtIGhhcyBhXG4vLyBkYW5nbGluZyBjb21tYSBhbmQgdGhlIG90aGVyIGRvZXNuJ3QuIFR1cm5zIG91dCBpbmNsdWRpbmcgdGhlIGRhbmdsaW5nIGNvbW1hIHlpZWxkcyB0aGUgbmljZXN0IG91dHB1dDpcbmpzb25EaWZmLnVzZUxvbmdlc3RUb2tlbiA9IHRydWU7XG5cbmpzb25EaWZmLnRva2VuaXplID0gbGluZURpZmYudG9rZW5pemU7XG5qc29uRGlmZi5jYXN0SW5wdXQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlKSwgdW5kZWZpbmVkLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzKGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgY2FsbGJhY2spIHsgcmV0dXJuIGpzb25EaWZmLmRpZmYob2xkT2JqLCBuZXdPYmosIGNhbGxiYWNrKTsgfVxuXG5cbi8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcHJlc2VuY2Ugb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBiYWlsaW5nIG91dCB3aGVuIGVuY291bnRlcmluZyBhblxuLy8gb2JqZWN0IHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUgXCJzdGFja1wiIG9mIGl0ZW1zIGJlaW5nIHByb2Nlc3NlZC5cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemUob2JqLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjaykge1xuICBzdGFjayA9IHN0YWNrIHx8IFtdO1xuICByZXBsYWNlbWVudFN0YWNrID0gcmVwbGFjZW1lbnRTdGFjayB8fCBbXTtcblxuICBsZXQgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoc3RhY2tbaV0gPT09IG9iaikge1xuICAgICAgcmV0dXJuIHJlcGxhY2VtZW50U3RhY2tbaV07XG4gICAgfVxuICB9XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZWRPYmo7XG5cbiAgaWYgKCdbb2JqZWN0IEFycmF5XScgPT09IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nLmNhbGwob2JqKSkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0gbmV3IEFycmF5KG9iai5sZW5ndGgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjYW5vbmljYWxpemVkT2JqW2ldID0gY2Fub25pY2FsaXplKG9ialtpXSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2spO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICAgIHJldHVybiBjYW5vbmljYWxpemVkT2JqO1xuICB9XG5cbiAgaWYgKG9iaiAmJiBvYmoudG9KU09OKSB7XG4gICAgb2JqID0gb2JqLnRvSlNPTigpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0ge307XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wdXNoKGNhbm9uaWNhbGl6ZWRPYmopO1xuICAgIGxldCBzb3J0ZWRLZXlzID0gW10sXG4gICAgICAgIGtleTtcbiAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgc29ydGVkS2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNvcnRlZEtleXMuc29ydCgpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3J0ZWRLZXlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBrZXkgPSBzb3J0ZWRLZXlzW2ldO1xuICAgICAgY2Fub25pY2FsaXplZE9ialtrZXldID0gY2Fub25pY2FsaXplKG9ialtrZXldLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjayk7XG4gICAgfVxuICAgIHN0YWNrLnBvcCgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG9iajtcbiAgfVxuICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbn1cbiJdfQ==
    -
    -
    -/***/ },
    -/* 9 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/applyPatch = applyPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;
    -
    -	var /*istanbul ignore start*/_parse = __webpack_require__(10) /*istanbul ignore end*/;
    -
    -	var /*istanbul ignore start*/_distanceIterator = __webpack_require__(11) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	var _distanceIterator2 = _interopRequireDefault(_distanceIterator);
    -
    -	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -	/*istanbul ignore end*/function applyPatch(source, uniDiff) {
    -	  /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
    -
    -	  if (typeof uniDiff === 'string') {
    -	    uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
    -	  }
    -
    -	  if (Array.isArray(uniDiff)) {
    -	    if (uniDiff.length > 1) {
    -	      throw new Error('applyPatch only works with a single input.');
    -	    }
    -
    -	    uniDiff = uniDiff[0];
    -	  }
    -
    -	  // Apply the diff to the input
    -	  var lines = source.split('\n'),
    -	      hunks = uniDiff.hunks,
    -	      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{
    -	    return (/*istanbul ignore end*/line === patchContent
    -	    );
    -	  },
    -	      errorCount = 0,
    -	      fuzzFactor = options.fuzzFactor || 0,
    -	      minLine = 0,
    -	      offset = 0,
    -	      removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
    -	      addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -	  /**
    -	   * Checks if the hunk exactly fits on the provided location
    -	   */
    -	  function hunkFits(hunk, toPos) {
    -	    for (var j = 0; j < hunk.lines.length; j++) {
    -	      var line = hunk.lines[j],
    -	          operation = line[0],
    -	          content = line.substr(1);
    -
    -	      if (operation === ' ' || operation === '-') {
    -	        // Context sanity check
    -	        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
    -	          errorCount++;
    -
    -	          if (errorCount > fuzzFactor) {
    -	            return false;
    -	          }
    -	        }
    -	        toPos++;
    -	      }
    -	    }
    -
    -	    return true;
    -	  }
    -
    -	  // Search best fit offsets for each hunk based on the previous ones
    -	  for (var i = 0; i < hunks.length; i++) {
    -	    var hunk = hunks[i],
    -	        maxLine = lines.length - hunk.oldLines,
    -	        localOffset = 0,
    -	        toPos = offset + hunk.oldStart - 1;
    -
    -	    var iterator = /*istanbul ignore start*/(0, _distanceIterator2.default) /*istanbul ignore end*/(toPos, minLine, maxLine);
    -
    -	    for (; localOffset !== undefined; localOffset = iterator()) {
    -	      if (hunkFits(hunk, toPos + localOffset)) {
    -	        hunk.offset = offset += localOffset;
    -	        break;
    -	      }
    -	    }
    -
    -	    if (localOffset === undefined) {
    -	      return false;
    -	    }
    -
    -	    // Set lower text limit to end of the current hunk, so next ones don't try
    -	    // to fit over already patched text
    -	    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
    -	  }
    -
    -	  // Apply patch hunks
    -	  for (var _i = 0; _i < hunks.length; _i++) {
    -	    var _hunk = hunks[_i],
    -	        _toPos = _hunk.offset + _hunk.newStart - 1;
    -
    -	    for (var j = 0; j < _hunk.lines.length; j++) {
    -	      var line = _hunk.lines[j],
    -	          operation = line[0],
    -	          content = line.substr(1);
    -
    -	      if (operation === ' ') {
    -	        _toPos++;
    -	      } else if (operation === '-') {
    -	        lines.splice(_toPos, 1);
    -	        /* istanbul ignore else */
    -	      } else if (operation === '+') {
    -	          lines.splice(_toPos, 0, content);
    -	          _toPos++;
    -	        } else if (operation === '\\') {
    -	          var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
    -	          if (previousOperation === '+') {
    -	            removeEOFNL = true;
    -	          } else if (previousOperation === '-') {
    -	            addEOFNL = true;
    -	          }
    -	        }
    -	    }
    -	  }
    -
    -	  // Handle EOFNL insertion/removal
    -	  if (removeEOFNL) {
    -	    while (!lines[lines.length - 1]) {
    -	      lines.pop();
    -	    }
    -	  } else if (addEOFNL) {
    -	    lines.push('');
    -	  }
    -	  return lines.join('\n');
    -	}
    -
    -	// Wrapper that supports multiple file patches via callbacks.
    -	function applyPatches(uniDiff, options) {
    -	  if (typeof uniDiff === 'string') {
    -	    uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
    -	  }
    -
    -	  var currentIndex = 0;
    -	  function processIndex() {
    -	    var index = uniDiff[currentIndex++];
    -	    if (!index) {
    -	      return options.complete();
    -	    }
    -
    -	    options.loadFile(index, function (err, data) {
    -	      if (err) {
    -	        return options.complete(err);
    -	      }
    -
    -	      var updatedContent = applyPatch(data, index, options);
    -	      options.patched(index, updatedContent);
    -
    -	      setTimeout(processIndex, 0);
    -	    });
    -	  }
    -	  processIndex();
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBR2dCO3lEQXFIQTs7QUF4SGhCOztBQUNBOzs7Ozs7O3VCQUVPLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUE0QixPQUE1QixFQUFtRDtzREFBZCxnRUFBVSxrQkFBSTs7QUFDeEQsTUFBSSxPQUFPLE9BQVAsS0FBbUIsUUFBbkIsRUFBNkI7QUFDL0IsY0FBVSx3RUFBVyxPQUFYLENBQVYsQ0FEK0I7R0FBakM7O0FBSUEsTUFBSSxNQUFNLE9BQU4sQ0FBYyxPQUFkLENBQUosRUFBNEI7QUFDMUIsUUFBSSxRQUFRLE1BQVIsR0FBaUIsQ0FBakIsRUFBb0I7QUFDdEIsWUFBTSxJQUFJLEtBQUosQ0FBVSw0Q0FBVixDQUFOLENBRHNCO0tBQXhCOztBQUlBLGNBQVUsUUFBUSxDQUFSLENBQVYsQ0FMMEI7R0FBNUI7OztBQUx3RCxNQWNwRCxRQUFRLE9BQU8sS0FBUCxDQUFhLElBQWIsQ0FBUjtNQUNBLFFBQVEsUUFBUSxLQUFSO01BRVIsY0FBYyxRQUFRLFdBQVIsSUFBd0IsVUFBQyxVQUFELEVBQWEsSUFBYixFQUFtQixTQUFuQixFQUE4QixZQUE5QjttQ0FBK0MsU0FBUyxZQUFUOztHQUEvQztNQUN0QyxhQUFhLENBQWI7TUFDQSxhQUFhLFFBQVEsVUFBUixJQUFzQixDQUF0QjtNQUNiLFVBQVUsQ0FBVjtNQUNBLFNBQVMsQ0FBVDtNQUVBLHFFQVRKO01BVUksa0VBVko7Ozs7O0FBZHdELFdBNkIvQyxRQUFULENBQWtCLElBQWxCLEVBQXdCLEtBQXhCLEVBQStCO0FBQzdCLFNBQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLEtBQUssS0FBTCxDQUFXLE1BQVgsRUFBbUIsR0FBdkMsRUFBNEM7QUFDMUMsVUFBSSxPQUFPLEtBQUssS0FBTCxDQUFXLENBQVgsQ0FBUDtVQUNBLFlBQVksS0FBSyxDQUFMLENBQVo7VUFDQSxVQUFVLEtBQUssTUFBTCxDQUFZLENBQVosQ0FBVixDQUhzQzs7QUFLMUMsVUFBSSxjQUFjLEdBQWQsSUFBcUIsY0FBYyxHQUFkLEVBQW1COztBQUUxQyxZQUFJLENBQUMsWUFBWSxRQUFRLENBQVIsRUFBVyxNQUFNLEtBQU4sQ0FBdkIsRUFBcUMsU0FBckMsRUFBZ0QsT0FBaEQsQ0FBRCxFQUEyRDtBQUM3RCx1QkFENkQ7O0FBRzdELGNBQUksYUFBYSxVQUFiLEVBQXlCO0FBQzNCLG1CQUFPLEtBQVAsQ0FEMkI7V0FBN0I7U0FIRjtBQU9BLGdCQVQwQztPQUE1QztLQUxGOztBQWtCQSxXQUFPLElBQVAsQ0FuQjZCO0dBQS9COzs7QUE3QndELE9Bb0RuRCxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBTSxNQUFOLEVBQWMsR0FBbEMsRUFBdUM7QUFDckMsUUFBSSxPQUFPLE1BQU0sQ0FBTixDQUFQO1FBQ0EsVUFBVSxNQUFNLE1BQU4sR0FBZSxLQUFLLFFBQUw7UUFDekIsY0FBYyxDQUFkO1FBQ0EsUUFBUSxTQUFTLEtBQUssUUFBTCxHQUFnQixDQUF6QixDQUp5Qjs7QUFNckMsUUFBSSxXQUFXLGlGQUFpQixLQUFqQixFQUF3QixPQUF4QixFQUFpQyxPQUFqQyxDQUFYLENBTmlDOztBQVFyQyxXQUFPLGdCQUFnQixTQUFoQixFQUEyQixjQUFjLFVBQWQsRUFBMEI7QUFDMUQsVUFBSSxTQUFTLElBQVQsRUFBZSxRQUFRLFdBQVIsQ0FBbkIsRUFBeUM7QUFDdkMsYUFBSyxNQUFMLEdBQWMsVUFBVSxXQUFWLENBRHlCO0FBRXZDLGNBRnVDO09BQXpDO0tBREY7O0FBT0EsUUFBSSxnQkFBZ0IsU0FBaEIsRUFBMkI7QUFDN0IsYUFBTyxLQUFQLENBRDZCO0tBQS9COzs7O0FBZnFDLFdBcUJyQyxHQUFVLEtBQUssTUFBTCxHQUFjLEtBQUssUUFBTCxHQUFnQixLQUFLLFFBQUwsQ0FyQkg7R0FBdkM7OztBQXBEd0QsT0E2RW5ELElBQUksS0FBSSxDQUFKLEVBQU8sS0FBSSxNQUFNLE1BQU4sRUFBYyxJQUFsQyxFQUF1QztBQUNyQyxRQUFJLFFBQU8sTUFBTSxFQUFOLENBQVA7UUFDQSxTQUFRLE1BQUssTUFBTCxHQUFjLE1BQUssUUFBTCxHQUFnQixDQUE5QixDQUZ5Qjs7QUFJckMsU0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBSyxLQUFMLENBQVcsTUFBWCxFQUFtQixHQUF2QyxFQUE0QztBQUMxQyxVQUFJLE9BQU8sTUFBSyxLQUFMLENBQVcsQ0FBWCxDQUFQO1VBQ0EsWUFBWSxLQUFLLENBQUwsQ0FBWjtVQUNBLFVBQVUsS0FBSyxNQUFMLENBQVksQ0FBWixDQUFWLENBSHNDOztBQUsxQyxVQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUNyQixpQkFEcUI7T0FBdkIsTUFFTyxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1QixjQUFNLE1BQU4sQ0FBYSxNQUFiLEVBQW9CLENBQXBCOztBQUQ0QixPQUF2QixNQUdBLElBQUksY0FBYyxHQUFkLEVBQW1CO0FBQzVCLGdCQUFNLE1BQU4sQ0FBYSxNQUFiLEVBQW9CLENBQXBCLEVBQXVCLE9BQXZCLEVBRDRCO0FBRTVCLG1CQUY0QjtTQUF2QixNQUdBLElBQUksY0FBYyxJQUFkLEVBQW9CO0FBQzdCLGNBQUksb0JBQW9CLE1BQUssS0FBTCxDQUFXLElBQUksQ0FBSixDQUFYLEdBQW9CLE1BQUssS0FBTCxDQUFXLElBQUksQ0FBSixDQUFYLENBQWtCLENBQWxCLENBQXBCLEdBQTJDLElBQTNDLENBREs7QUFFN0IsY0FBSSxzQkFBc0IsR0FBdEIsRUFBMkI7QUFDN0IsMEJBQWMsSUFBZCxDQUQ2QjtXQUEvQixNQUVPLElBQUksc0JBQXNCLEdBQXRCLEVBQTJCO0FBQ3BDLHVCQUFXLElBQVgsQ0FEb0M7V0FBL0I7U0FKRjtLQWJUO0dBSkY7OztBQTdFd0QsTUEwR3BELFdBQUosRUFBaUI7QUFDZixXQUFPLENBQUMsTUFBTSxNQUFNLE1BQU4sR0FBZSxDQUFmLENBQVAsRUFBMEI7QUFDL0IsWUFBTSxHQUFOLEdBRCtCO0tBQWpDO0dBREYsTUFJTyxJQUFJLFFBQUosRUFBYztBQUNuQixVQUFNLElBQU4sQ0FBVyxFQUFYLEVBRG1CO0dBQWQ7QUFHUCxTQUFPLE1BQU0sSUFBTixDQUFXLElBQVgsQ0FBUCxDQWpId0Q7Q0FBbkQ7OztBQXFIQSxTQUFTLFlBQVQsQ0FBc0IsT0FBdEIsRUFBK0IsT0FBL0IsRUFBd0M7QUFDN0MsTUFBSSxPQUFPLE9BQVAsS0FBbUIsUUFBbkIsRUFBNkI7QUFDL0IsY0FBVSx3RUFBVyxPQUFYLENBQVYsQ0FEK0I7R0FBakM7O0FBSUEsTUFBSSxlQUFlLENBQWYsQ0FMeUM7QUFNN0MsV0FBUyxZQUFULEdBQXdCO0FBQ3RCLFFBQUksUUFBUSxRQUFRLGNBQVIsQ0FBUixDQURrQjtBQUV0QixRQUFJLENBQUMsS0FBRCxFQUFRO0FBQ1YsYUFBTyxRQUFRLFFBQVIsRUFBUCxDQURVO0tBQVo7O0FBSUEsWUFBUSxRQUFSLENBQWlCLEtBQWpCLEVBQXdCLFVBQVMsR0FBVCxFQUFjLElBQWQsRUFBb0I7QUFDMUMsVUFBSSxHQUFKLEVBQVM7QUFDUCxlQUFPLFFBQVEsUUFBUixDQUFpQixHQUFqQixDQUFQLENBRE87T0FBVDs7QUFJQSxVQUFJLGlCQUFpQixXQUFXLElBQVgsRUFBaUIsS0FBakIsRUFBd0IsT0FBeEIsQ0FBakIsQ0FMc0M7QUFNMUMsY0FBUSxPQUFSLENBQWdCLEtBQWhCLEVBQXVCLGNBQXZCLEVBTjBDOztBQVExQyxpQkFBVyxZQUFYLEVBQXlCLENBQXpCLEVBUjBDO0tBQXBCLENBQXhCLENBTnNCO0dBQXhCO0FBaUJBLGlCQXZCNkM7Q0FBeEMiLCJmaWxlIjoiYXBwbHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoJ1xcbicpLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSBsaW5lWzBdLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLnN1YnN0cigxKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgdG9Qb3MgPSBodW5rLm9mZnNldCArIGh1bmsubmV3U3RhcnQgLSAxO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gbGluZVswXSxcbiAgICAgICAgICBjb250ZW50ID0gbGluZS5zdWJzdHIoMSk7XG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcgJykge1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICBsaW5lcy5zcGxpY2UodG9Qb3MsIDEpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKHRvUG9zLCAwLCBjb250ZW50KTtcbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzT3BlcmF0aW9uID0gaHVuay5saW5lc1tqIC0gMV0gPyBodW5rLmxpbmVzW2ogLSAxXVswXSA6IG51bGw7XG4gICAgICAgIGlmIChwcmV2aW91c09wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgcmVtb3ZlRU9GTkwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICBhZGRFT0ZOTCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGUgRU9GTkwgaW5zZXJ0aW9uL3JlbW92YWxcbiAgaWYgKHJlbW92ZUVPRk5MKSB7XG4gICAgd2hpbGUgKCFsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSkge1xuICAgICAgbGluZXMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBXcmFwcGVyIHRoYXQgc3VwcG9ydHMgbXVsdGlwbGUgZmlsZSBwYXRjaGVzIHZpYSBjYWxsYmFja3MuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQYXRjaGVzKHVuaURpZmYsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgbGV0IGN1cnJlbnRJbmRleCA9IDA7XG4gIGZ1bmN0aW9uIHByb2Nlc3NJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB1bmlEaWZmW2N1cnJlbnRJbmRleCsrXTtcbiAgICBpZiAoIWluZGV4KSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9wdGlvbnMubG9hZEZpbGUoaW5kZXgsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jb21wbGV0ZShlcnIpO1xuICAgICAgfVxuXG4gICAgICBsZXQgdXBkYXRlZENvbnRlbnQgPSBhcHBseVBhdGNoKGRhdGEsIGluZGV4LCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMucGF0Y2hlZChpbmRleCwgdXBkYXRlZENvbnRlbnQpO1xuXG4gICAgICBzZXRUaW1lb3V0KHByb2Nlc3NJbmRleCwgMCk7XG4gICAgfSk7XG4gIH1cbiAgcHJvY2Vzc0luZGV4KCk7XG59XG4iXX0=
    -
    -
    -/***/ },
    -/* 10 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/parsePatch = parsePatch;
    -	function parsePatch(uniDiff) {
    -	  /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
    -
    -	  var diffstr = uniDiff.split('\n'),
    -	      list = [],
    -	      i = 0;
    -
    -	  function parseIndex() {
    -	    var index = {};
    -	    list.push(index);
    -
    -	    // Parse diff metadata
    -	    while (i < diffstr.length) {
    -	      var line = diffstr[i];
    -
    -	      // File header found, end parsing diff metadata
    -	      if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
    -	        break;
    -	      }
    -
    -	      // Diff index
    -	      var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
    -	      if (header) {
    -	        index.index = header[1];
    -	      }
    -
    -	      i++;
    -	    }
    -
    -	    // Parse file headers if they are defined. Unified diff requires them, but
    -	    // there's no technical issues to have an isolated hunk without file header
    -	    parseFileHeader(index);
    -	    parseFileHeader(index);
    -
    -	    // Parse hunks
    -	    index.hunks = [];
    -
    -	    while (i < diffstr.length) {
    -	      var _line = diffstr[i];
    -
    -	      if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
    -	        break;
    -	      } else if (/^@@/.test(_line)) {
    -	        index.hunks.push(parseHunk());
    -	      } else if (_line && options.strict) {
    -	        // Ignore unexpected content unless in strict mode
    -	        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
    -	      } else {
    -	        i++;
    -	      }
    -	    }
    -	  }
    -
    -	  // Parses the --- and +++ headers, if none are found, no lines
    -	  // are consumed.
    -	  function parseFileHeader(index) {
    -	    var fileHeader = /^(\-\-\-|\+\+\+)\s+(\S*)\s?(.*?)\s*$/.exec(diffstr[i]);
    -	    if (fileHeader) {
    -	      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
    -	      index[keyPrefix + 'FileName'] = fileHeader[2];
    -	      index[keyPrefix + 'Header'] = fileHeader[3];
    -
    -	      i++;
    -	    }
    -	  }
    -
    -	  // Parses a hunk
    -	  // This assumes that we are at the start of a hunk.
    -	  function parseHunk() {
    -	    var chunkHeaderIndex = i,
    -	        chunkHeaderLine = diffstr[i++],
    -	        chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
    -
    -	    var hunk = {
    -	      oldStart: +chunkHeader[1],
    -	      oldLines: +chunkHeader[2] || 1,
    -	      newStart: +chunkHeader[3],
    -	      newLines: +chunkHeader[4] || 1,
    -	      lines: []
    -	    };
    -
    -	    var addCount = 0,
    -	        removeCount = 0;
    -	    for (; i < diffstr.length; i++) {
    -	      var operation = diffstr[i][0];
    -
    -	      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
    -	        hunk.lines.push(diffstr[i]);
    -
    -	        if (operation === '+') {
    -	          addCount++;
    -	        } else if (operation === '-') {
    -	          removeCount++;
    -	        } else if (operation === ' ') {
    -	          addCount++;
    -	          removeCount++;
    -	        }
    -	      } else {
    -	        break;
    -	      }
    -	    }
    -
    -	    // Handle the empty block count case
    -	    if (!addCount && hunk.newLines === 1) {
    -	      hunk.newLines = 0;
    -	    }
    -	    if (!removeCount && hunk.oldLines === 1) {
    -	      hunk.oldLines = 0;
    -	    }
    -
    -	    // Perform optional sanity checking
    -	    if (options.strict) {
    -	      if (addCount !== hunk.newLines) {
    -	        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
    -	      }
    -	      if (removeCount !== hunk.oldLines) {
    -	        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
    -	      }
    -	    }
    -
    -	    return hunk;
    -	  }
    -
    -	  while (i < diffstr.length) {
    -	    parseIndex();
    -	  }
    -
    -	  return list;
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxVQUFULENBQW9CLE9BQXBCLEVBQTJDO3NEQUFkLGdFQUFVLGtCQUFJOztBQUNoRCxNQUFJLFVBQVUsUUFBUSxLQUFSLENBQWMsSUFBZCxDQUFWO01BQ0EsT0FBTyxFQUFQO01BQ0EsSUFBSSxDQUFKLENBSDRDOztBQUtoRCxXQUFTLFVBQVQsR0FBc0I7QUFDcEIsUUFBSSxRQUFRLEVBQVIsQ0FEZ0I7QUFFcEIsU0FBSyxJQUFMLENBQVUsS0FBVjs7O0FBRm9CLFdBS2IsSUFBSSxRQUFRLE1BQVIsRUFBZ0I7QUFDekIsVUFBSSxPQUFPLFFBQVEsQ0FBUixDQUFQOzs7QUFEcUIsVUFJckIsd0JBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQUosRUFBd0M7QUFDdEMsY0FEc0M7T0FBeEM7OztBQUp5QixVQVNyQixTQUFTLDJDQUE2QyxJQUE3QyxDQUFrRCxJQUFsRCxDQUFULENBVHFCO0FBVXpCLFVBQUksTUFBSixFQUFZO0FBQ1YsY0FBTSxLQUFOLEdBQWMsT0FBTyxDQUFQLENBQWQsQ0FEVTtPQUFaOztBQUlBLFVBZHlCO0tBQTNCOzs7O0FBTG9CLG1CQXdCcEIsQ0FBZ0IsS0FBaEIsRUF4Qm9CO0FBeUJwQixvQkFBZ0IsS0FBaEI7OztBQXpCb0IsU0E0QnBCLENBQU0sS0FBTixHQUFjLEVBQWQsQ0E1Qm9COztBQThCcEIsV0FBTyxJQUFJLFFBQVEsTUFBUixFQUFnQjtBQUN6QixVQUFJLFFBQU8sUUFBUSxDQUFSLENBQVAsQ0FEcUI7O0FBR3pCLFVBQUksaUNBQWlDLElBQWpDLENBQXNDLEtBQXRDLENBQUosRUFBaUQ7QUFDL0MsY0FEK0M7T0FBakQsTUFFTyxJQUFJLE1BQU0sSUFBTixDQUFXLEtBQVgsQ0FBSixFQUFzQjtBQUMzQixjQUFNLEtBQU4sQ0FBWSxJQUFaLENBQWlCLFdBQWpCLEVBRDJCO09BQXRCLE1BRUEsSUFBSSxTQUFRLFFBQVEsTUFBUixFQUFnQjs7QUFFakMsY0FBTSxJQUFJLEtBQUosQ0FBVSxtQkFBbUIsSUFBSSxDQUFKLENBQW5CLEdBQTRCLEdBQTVCLEdBQWtDLEtBQUssU0FBTCxDQUFlLEtBQWYsQ0FBbEMsQ0FBaEIsQ0FGaUM7T0FBNUIsTUFHQTtBQUNMLFlBREs7T0FIQTtLQVBUO0dBOUJGOzs7O0FBTGdELFdBcUR2QyxlQUFULENBQXlCLEtBQXpCLEVBQWdDO0FBQzlCLFFBQUksYUFBYSx1Q0FBeUMsSUFBekMsQ0FBOEMsUUFBUSxDQUFSLENBQTlDLENBQWIsQ0FEMEI7QUFFOUIsUUFBSSxVQUFKLEVBQWdCO0FBQ2QsVUFBSSxZQUFZLFdBQVcsQ0FBWCxNQUFrQixLQUFsQixHQUEwQixLQUExQixHQUFrQyxLQUFsQyxDQURGO0FBRWQsWUFBTSxZQUFZLFVBQVosQ0FBTixHQUFnQyxXQUFXLENBQVgsQ0FBaEMsQ0FGYztBQUdkLFlBQU0sWUFBWSxRQUFaLENBQU4sR0FBOEIsV0FBVyxDQUFYLENBQTlCLENBSGM7O0FBS2QsVUFMYztLQUFoQjtHQUZGOzs7O0FBckRnRCxXQWtFdkMsU0FBVCxHQUFxQjtBQUNuQixRQUFJLG1CQUFtQixDQUFuQjtRQUNBLGtCQUFrQixRQUFRLEdBQVIsQ0FBbEI7UUFDQSxjQUFjLGdCQUFnQixLQUFoQixDQUFzQiw0Q0FBdEIsQ0FBZCxDQUhlOztBQUtuQixRQUFJLE9BQU87QUFDVCxnQkFBVSxDQUFDLFlBQVksQ0FBWixDQUFEO0FBQ1YsZ0JBQVUsQ0FBQyxZQUFZLENBQVosQ0FBRCxJQUFtQixDQUFuQjtBQUNWLGdCQUFVLENBQUMsWUFBWSxDQUFaLENBQUQ7QUFDVixnQkFBVSxDQUFDLFlBQVksQ0FBWixDQUFELElBQW1CLENBQW5CO0FBQ1YsYUFBTyxFQUFQO0tBTEUsQ0FMZTs7QUFhbkIsUUFBSSxXQUFXLENBQVg7UUFDQSxjQUFjLENBQWQsQ0FkZTtBQWVuQixXQUFPLElBQUksUUFBUSxNQUFSLEVBQWdCLEdBQTNCLEVBQWdDO0FBQzlCLFVBQUksWUFBWSxRQUFRLENBQVIsRUFBVyxDQUFYLENBQVosQ0FEMEI7O0FBRzlCLFVBQUksY0FBYyxHQUFkLElBQXFCLGNBQWMsR0FBZCxJQUFxQixjQUFjLEdBQWQsSUFBcUIsY0FBYyxJQUFkLEVBQW9CO0FBQ3JGLGFBQUssS0FBTCxDQUFXLElBQVgsQ0FBZ0IsUUFBUSxDQUFSLENBQWhCLEVBRHFGOztBQUdyRixZQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUNyQixxQkFEcUI7U0FBdkIsTUFFTyxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1Qix3QkFENEI7U0FBdkIsTUFFQSxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1QixxQkFENEI7QUFFNUIsd0JBRjRCO1NBQXZCO09BUFQsTUFXTztBQUNMLGNBREs7T0FYUDtLQUhGOzs7QUFmbUIsUUFtQ2YsQ0FBQyxRQUFELElBQWEsS0FBSyxRQUFMLEtBQWtCLENBQWxCLEVBQXFCO0FBQ3BDLFdBQUssUUFBTCxHQUFnQixDQUFoQixDQURvQztLQUF0QztBQUdBLFFBQUksQ0FBQyxXQUFELElBQWdCLEtBQUssUUFBTCxLQUFrQixDQUFsQixFQUFxQjtBQUN2QyxXQUFLLFFBQUwsR0FBZ0IsQ0FBaEIsQ0FEdUM7S0FBekM7OztBQXRDbUIsUUEyQ2YsUUFBUSxNQUFSLEVBQWdCO0FBQ2xCLFVBQUksYUFBYSxLQUFLLFFBQUwsRUFBZTtBQUM5QixjQUFNLElBQUksS0FBSixDQUFVLHNEQUFzRCxtQkFBbUIsQ0FBbkIsQ0FBdEQsQ0FBaEIsQ0FEOEI7T0FBaEM7QUFHQSxVQUFJLGdCQUFnQixLQUFLLFFBQUwsRUFBZTtBQUNqQyxjQUFNLElBQUksS0FBSixDQUFVLHdEQUF3RCxtQkFBbUIsQ0FBbkIsQ0FBeEQsQ0FBaEIsQ0FEaUM7T0FBbkM7S0FKRjs7QUFTQSxXQUFPLElBQVAsQ0FwRG1CO0dBQXJCOztBQXVEQSxTQUFPLElBQUksUUFBUSxNQUFSLEVBQWdCO0FBQ3pCLGlCQUR5QjtHQUEzQjs7QUFJQSxTQUFPLElBQVAsQ0E3SGdEO0NBQTNDIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0Y2godW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBkaWZmc3RyID0gdW5pRGlmZi5zcGxpdCgnXFxuJyksXG4gICAgICBsaXN0ID0gW10sXG4gICAgICBpID0gMDtcblxuICBmdW5jdGlvbiBwYXJzZUluZGV4KCkge1xuICAgIGxldCBpbmRleCA9IHt9O1xuICAgIGxpc3QucHVzaChpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBkaWZmIG1ldGFkYXRhXG4gICAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgICAgbGV0IGxpbmUgPSBkaWZmc3RyW2ldO1xuXG4gICAgICAvLyBGaWxlIGhlYWRlciBmb3VuZCwgZW5kIHBhcnNpbmcgZGlmZiBtZXRhZGF0YVxuICAgICAgaWYgKC9eKFxcLVxcLVxcLXxcXCtcXCtcXCt8QEApXFxzLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKC9eKEluZGV4OnxkaWZmfFxcLVxcLVxcLXxcXCtcXCtcXCspXFxzLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICgvXkBALy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGluZGV4Lmh1bmtzLnB1c2gocGFyc2VIdW5rKCkpO1xuICAgICAgfSBlbHNlIGlmIChsaW5lICYmIG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICAgIC8vIElnbm9yZSB1bmV4cGVjdGVkIGNvbnRlbnQgdW5sZXNzIGluIHN0cmljdCBtb2RlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsaW5lICcgKyAoaSArIDEpICsgJyAnICsgSlNPTi5zdHJpbmdpZnkobGluZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyB0aGUgLS0tIGFuZCArKysgaGVhZGVycywgaWYgbm9uZSBhcmUgZm91bmQsIG5vIGxpbmVzXG4gIC8vIGFyZSBjb25zdW1lZC5cbiAgZnVuY3Rpb24gcGFyc2VGaWxlSGVhZGVyKGluZGV4KSB7XG4gICAgbGV0IGZpbGVIZWFkZXIgPSAoL14oXFwtXFwtXFwtfFxcK1xcK1xcKylcXHMrKFxcUyopXFxzPyguKj8pXFxzKiQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0ZpbGVOYW1lJ10gPSBmaWxlSGVhZGVyWzJdO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gZmlsZUhlYWRlclszXTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvcGVyYXRpb24gPSBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==
    -
    -
    -/***/ },
    -/* 11 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/"use strict";
    -
    -	exports.__esModule = true;
    -
    -	exports.default = /*istanbul ignore end*/function (start, minLine, maxLine) {
    -	  var wantForward = true,
    -	      backwardExhausted = false,
    -	      forwardExhausted = false,
    -	      localOffset = 1;
    -
    -	  return function iterator() {
    -	    if (wantForward && !forwardExhausted) {
    -	      if (backwardExhausted) {
    -	        localOffset++;
    -	      } else {
    -	        wantForward = false;
    -	      }
    -
    -	      // Check if trying to fit beyond text length, and if not, check it fits
    -	      // after offset location (or desired location on first iteration)
    -	      if (start + localOffset <= maxLine) {
    -	        return localOffset;
    -	      }
    -
    -	      forwardExhausted = true;
    -	    }
    -
    -	    if (!backwardExhausted) {
    -	      if (!forwardExhausted) {
    -	        wantForward = true;
    -	      }
    -
    -	      // Check if trying to fit before text beginning, and if not, check it fits
    -	      // before offset location
    -	      if (minLine <= start - localOffset) {
    -	        return - localOffset++;
    -	      }
    -
    -	      backwardExhausted = true;
    -	      return iterator();
    -	    }
    -
    -	    // We tried to fit hunk before text beginning and beyond text lenght, then
    -	    // hunk can't fit on the text. Return undefined
    -	  };
    -	};
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7eUNBR2UsVUFBUyxLQUFULEVBQWdCLE9BQWhCLEVBQXlCLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUksY0FBYyxJQUFkO01BQ0Esb0JBQW9CLEtBQXBCO01BQ0EsbUJBQW1CLEtBQW5CO01BQ0EsY0FBYyxDQUFkLENBSjJDOztBQU0vQyxTQUFPLFNBQVMsUUFBVCxHQUFvQjtBQUN6QixRQUFJLGVBQWUsQ0FBQyxnQkFBRCxFQUFtQjtBQUNwQyxVQUFJLGlCQUFKLEVBQXVCO0FBQ3JCLHNCQURxQjtPQUF2QixNQUVPO0FBQ0wsc0JBQWMsS0FBZCxDQURLO09BRlA7Ozs7QUFEb0MsVUFTaEMsUUFBUSxXQUFSLElBQXVCLE9BQXZCLEVBQWdDO0FBQ2xDLGVBQU8sV0FBUCxDQURrQztPQUFwQzs7QUFJQSx5QkFBbUIsSUFBbkIsQ0Fib0M7S0FBdEM7O0FBZ0JBLFFBQUksQ0FBQyxpQkFBRCxFQUFvQjtBQUN0QixVQUFJLENBQUMsZ0JBQUQsRUFBbUI7QUFDckIsc0JBQWMsSUFBZCxDQURxQjtPQUF2Qjs7OztBQURzQixVQU9sQixXQUFXLFFBQVEsV0FBUixFQUFxQjtBQUNsQyxlQUFPLEVBQUMsYUFBRCxDQUQyQjtPQUFwQzs7QUFJQSwwQkFBb0IsSUFBcEIsQ0FYc0I7QUFZdEIsYUFBTyxVQUFQLENBWnNCO0tBQXhCOzs7O0FBakJ5QixHQUFwQixDQU53QztDQUFsQyIsImZpbGUiOiJkaXN0YW5jZS1pdGVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEl0ZXJhdG9yIHRoYXQgdHJhdmVyc2VzIGluIHRoZSByYW5nZSBvZiBbbWluLCBtYXhdLCBzdGVwcGluZ1xuLy8gYnkgZGlzdGFuY2UgZnJvbSBhIGdpdmVuIHN0YXJ0IHBvc2l0aW9uLiBJLmUuIGZvciBbMCwgNF0sIHdpdGhcbi8vIHN0YXJ0IG9mIDIsIHRoaXMgd2lsbCBpdGVyYXRlIDIsIDMsIDEsIDQsIDAuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGFydCwgbWluTGluZSwgbWF4TGluZSkge1xuICBsZXQgd2FudEZvcndhcmQgPSB0cnVlLFxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGxvY2FsT2Zmc2V0ID0gMTtcblxuICByZXR1cm4gZnVuY3Rpb24gaXRlcmF0b3IoKSB7XG4gICAgaWYgKHdhbnRGb3J3YXJkICYmICFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICBpZiAoYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgICAgbG9jYWxPZmZzZXQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmV5b25kIHRleHQgbGVuZ3RoLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBhZnRlciBvZmZzZXQgbG9jYXRpb24gKG9yIGRlc2lyZWQgbG9jYXRpb24gb24gZmlyc3QgaXRlcmF0aW9uKVxuICAgICAgaWYgKHN0YXJ0ICsgbG9jYWxPZmZzZXQgPD0gbWF4TGluZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmICghZm9yd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICB3YW50Rm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmVmb3JlIHRleHQgYmVnaW5uaW5nLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBiZWZvcmUgb2Zmc2V0IGxvY2F0aW9uXG4gICAgICBpZiAobWluTGluZSA8PSBzdGFydCAtIGxvY2FsT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAtbG9jYWxPZmZzZXQrKztcbiAgICAgIH1cblxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gV2UgdHJpZWQgdG8gZml0IGh1bmsgYmVmb3JlIHRleHQgYmVnaW5uaW5nIGFuZCBiZXlvbmQgdGV4dCBsZW5naHQsIHRoZW5cbiAgICAvLyBodW5rIGNhbid0IGZpdCBvbiB0aGUgdGV4dC4gUmV0dXJuIHVuZGVmaW5lZFxuICB9O1xufVxuIl19
    -
    -
    -/***/ },
    -/* 12 */
    -/***/ function(module, exports, __webpack_require__) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/structuredPatch = structuredPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;
    -	/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;
    -
    -	var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
    -
    -	/*istanbul ignore start*/
    -	function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
    -
    -	/*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
    -	  if (!options) {
    -	    options = { context: 4 };
    -	  }
    -
    -	  var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr);
    -	  diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
    -
    -	  function contextLines(lines) {
    -	    return lines.map(function (entry) {
    -	      return ' ' + entry;
    -	    });
    -	  }
    -
    -	  var hunks = [];
    -	  var oldRangeStart = 0,
    -	      newRangeStart = 0,
    -	      curRange = [],
    -	      oldLine = 1,
    -	      newLine = 1;
    -	  /*istanbul ignore start*/
    -	  var _loop = function _loop( /*istanbul ignore end*/i) {
    -	    var current = diff[i],
    -	        lines = current.lines || current.value.replace(/\n$/, '').split('\n');
    -	    current.lines = lines;
    -
    -	    if (current.added || current.removed) {
    -	      /*istanbul ignore start*/
    -	      var _curRange;
    -
    -	      /*istanbul ignore end*/
    -	      // If we have previous context, start with that
    -	      if (!oldRangeStart) {
    -	        var prev = diff[i - 1];
    -	        oldRangeStart = oldLine;
    -	        newRangeStart = newLine;
    -
    -	        if (prev) {
    -	          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
    -	          oldRangeStart -= curRange.length;
    -	          newRangeStart -= curRange.length;
    -	        }
    -	      }
    -
    -	      // Output our changes
    -	      /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {
    -	        return (current.added ? '+' : '-') + entry;
    -	      })));
    -
    -	      // Track the updated file position
    -	      if (current.added) {
    -	        newLine += lines.length;
    -	      } else {
    -	        oldLine += lines.length;
    -	      }
    -	    } else {
    -	      // Identical context lines. Track line changes
    -	      if (oldRangeStart) {
    -	        // Close out any changes that have been output (or join overlapping)
    -	        if (lines.length <= options.context * 2 && i < diff.length - 2) {
    -	          /*istanbul ignore start*/
    -	          var _curRange2;
    -
    -	          /*istanbul ignore end*/
    -	          // Overlapping
    -	          /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));
    -	        } else {
    -	          /*istanbul ignore start*/
    -	          var _curRange3;
    -
    -	          /*istanbul ignore end*/
    -	          // end the range and output
    -	          var contextSize = Math.min(lines.length, options.context);
    -	          /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));
    -
    -	          var hunk = {
    -	            oldStart: oldRangeStart,
    -	            oldLines: oldLine - oldRangeStart + contextSize,
    -	            newStart: newRangeStart,
    -	            newLines: newLine - newRangeStart + contextSize,
    -	            lines: curRange
    -	          };
    -	          if (i >= diff.length - 2 && lines.length <= options.context) {
    -	            // EOF is inside this hunk
    -	            var oldEOFNewline = /\n$/.test(oldStr);
    -	            var newEOFNewline = /\n$/.test(newStr);
    -	            if (lines.length == 0 && !oldEOFNewline) {
    -	              // special case: old has no eol and no trailing context; no-nl can end up before adds
    -	              curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
    -	            } else if (!oldEOFNewline || !newEOFNewline) {
    -	              curRange.push('\\ No newline at end of file');
    -	            }
    -	          }
    -	          hunks.push(hunk);
    -
    -	          oldRangeStart = 0;
    -	          newRangeStart = 0;
    -	          curRange = [];
    -	        }
    -	      }
    -	      oldLine += lines.length;
    -	      newLine += lines.length;
    -	    }
    -	  };
    -
    -	  for (var i = 0; i < diff.length; i++) {
    -	    /*istanbul ignore start*/
    -	    _loop( /*istanbul ignore end*/i);
    -	  }
    -
    -	  return {
    -	    oldFileName: oldFileName, newFileName: newFileName,
    -	    oldHeader: oldHeader, newHeader: newHeader,
    -	    hunks: hunks
    -	  };
    -	}
    -
    -	function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
    -	  var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
    -
    -	  var ret = [];
    -	  if (oldFileName == newFileName) {
    -	    ret.push('Index: ' + oldFileName);
    -	  }
    -	  ret.push('===================================================================');
    -	  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
    -	  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
    -
    -	  for (var i = 0; i < diff.hunks.length; i++) {
    -	    var hunk = diff.hunks[i];
    -	    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
    -	    ret.push.apply(ret, hunk.lines);
    -	  }
    -
    -	  return ret.join('\n') + '\n';
    -	}
    -
    -	function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
    -	  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2dDQUVnQjt5REE4RkE7eURBd0JBOztBQXhIaEI7Ozs7O3VCQUVPLFNBQVMsZUFBVCxDQUF5QixXQUF6QixFQUFzQyxXQUF0QyxFQUFtRCxNQUFuRCxFQUEyRCxNQUEzRCxFQUFtRSxTQUFuRSxFQUE4RSxTQUE5RSxFQUF5RixPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUMsT0FBRCxFQUFVO0FBQ1osY0FBVSxFQUFFLFNBQVMsQ0FBVCxFQUFaLENBRFk7R0FBZDs7QUFJQSxNQUFNLE9BQU8sc0VBQVUsTUFBVixFQUFrQixNQUFsQixDQUFQLENBTGlHO0FBTXZHLE9BQUssSUFBTCxDQUFVLEVBQUMsT0FBTyxFQUFQLEVBQVcsT0FBTyxFQUFQLEVBQXRCOztBQU51RyxXQVE5RixZQUFULENBQXNCLEtBQXRCLEVBQTZCO0FBQzNCLFdBQU8sTUFBTSxHQUFOLENBQVUsVUFBUyxLQUFULEVBQWdCO0FBQUUsYUFBTyxNQUFNLEtBQU4sQ0FBVDtLQUFoQixDQUFqQixDQUQyQjtHQUE3Qjs7QUFJQSxNQUFJLFFBQVEsRUFBUixDQVptRztBQWF2RyxNQUFJLGdCQUFnQixDQUFoQjtNQUFtQixnQkFBZ0IsQ0FBaEI7TUFBbUIsV0FBVyxFQUFYO01BQ3RDLFVBQVUsQ0FBVjtNQUFhLFVBQVUsQ0FBVixDQWRzRjs7cURBZTlGO0FBQ1AsUUFBTSxVQUFVLEtBQUssQ0FBTCxDQUFWO1FBQ0EsUUFBUSxRQUFRLEtBQVIsSUFBaUIsUUFBUSxLQUFSLENBQWMsT0FBZCxDQUFzQixLQUF0QixFQUE2QixFQUE3QixFQUFpQyxLQUFqQyxDQUF1QyxJQUF2QyxDQUFqQjtBQUNkLFlBQVEsS0FBUixHQUFnQixLQUFoQjs7QUFFQSxRQUFJLFFBQVEsS0FBUixJQUFpQixRQUFRLE9BQVIsRUFBaUI7Ozs7OztBQUVwQyxVQUFJLENBQUMsYUFBRCxFQUFnQjtBQUNsQixZQUFNLE9BQU8sS0FBSyxJQUFJLENBQUosQ0FBWixDQURZO0FBRWxCLHdCQUFnQixPQUFoQixDQUZrQjtBQUdsQix3QkFBZ0IsT0FBaEIsQ0FIa0I7O0FBS2xCLFlBQUksSUFBSixFQUFVO0FBQ1IscUJBQVcsUUFBUSxPQUFSLEdBQWtCLENBQWxCLEdBQXNCLGFBQWEsS0FBSyxLQUFMLENBQVcsS0FBWCxDQUFpQixDQUFDLFFBQVEsT0FBUixDQUEvQixDQUF0QixHQUF5RSxFQUF6RSxDQURIO0FBRVIsMkJBQWlCLFNBQVMsTUFBVCxDQUZUO0FBR1IsMkJBQWlCLFNBQVMsTUFBVCxDQUhUO1NBQVY7T0FMRjs7O0FBRm9DLG1FQWVwQyxVQUFTLElBQVQsMExBQWtCLE1BQU0sR0FBTixDQUFVLFVBQVMsS0FBVCxFQUFnQjtBQUMxQyxlQUFPLENBQUMsUUFBUSxLQUFSLEdBQWdCLEdBQWhCLEdBQXNCLEdBQXRCLENBQUQsR0FBOEIsS0FBOUIsQ0FEbUM7T0FBaEIsRUFBNUI7OztBQWZvQyxVQW9CaEMsUUFBUSxLQUFSLEVBQWU7QUFDakIsbUJBQVcsTUFBTSxNQUFOLENBRE07T0FBbkIsTUFFTztBQUNMLG1CQUFXLE1BQU0sTUFBTixDQUROO09BRlA7S0FwQkYsTUF5Qk87O0FBRUwsVUFBSSxhQUFKLEVBQW1COztBQUVqQixZQUFJLE1BQU0sTUFBTixJQUFnQixRQUFRLE9BQVIsR0FBa0IsQ0FBbEIsSUFBdUIsSUFBSSxLQUFLLE1BQUwsR0FBYyxDQUFkLEVBQWlCOzs7Ozs7QUFFOUQsa0ZBQVMsSUFBVCwyTEFBa0IsYUFBYSxLQUFiLEVBQWxCLEVBRjhEO1NBQWhFLE1BR087Ozs7OztBQUVMLGNBQUksY0FBYyxLQUFLLEdBQUwsQ0FBUyxNQUFNLE1BQU4sRUFBYyxRQUFRLE9BQVIsQ0FBckMsQ0FGQztBQUdMLGtGQUFTLElBQVQsMkxBQWtCLGFBQWEsTUFBTSxLQUFOLENBQVksQ0FBWixFQUFlLFdBQWYsQ0FBYixFQUFsQixFQUhLOztBQUtMLGNBQUksT0FBTztBQUNULHNCQUFVLGFBQVY7QUFDQSxzQkFBVyxVQUFVLGFBQVYsR0FBMEIsV0FBMUI7QUFDWCxzQkFBVSxhQUFWO0FBQ0Esc0JBQVcsVUFBVSxhQUFWLEdBQTBCLFdBQTFCO0FBQ1gsbUJBQU8sUUFBUDtXQUxFLENBTEM7QUFZTCxjQUFJLEtBQUssS0FBSyxNQUFMLEdBQWMsQ0FBZCxJQUFtQixNQUFNLE1BQU4sSUFBZ0IsUUFBUSxPQUFSLEVBQWlCOztBQUUzRCxnQkFBSSxnQkFBaUIsTUFBTSxJQUFOLENBQVcsTUFBWCxDQUFqQixDQUZ1RDtBQUczRCxnQkFBSSxnQkFBaUIsTUFBTSxJQUFOLENBQVcsTUFBWCxDQUFqQixDQUh1RDtBQUkzRCxnQkFBSSxNQUFNLE1BQU4sSUFBZ0IsQ0FBaEIsSUFBcUIsQ0FBQyxhQUFELEVBQWdCOztBQUV2Qyx1QkFBUyxNQUFULENBQWdCLEtBQUssUUFBTCxFQUFlLENBQS9CLEVBQWtDLDhCQUFsQyxFQUZ1QzthQUF6QyxNQUdPLElBQUksQ0FBQyxhQUFELElBQWtCLENBQUMsYUFBRCxFQUFnQjtBQUMzQyx1QkFBUyxJQUFULENBQWMsOEJBQWQsRUFEMkM7YUFBdEM7V0FQVDtBQVdBLGdCQUFNLElBQU4sQ0FBVyxJQUFYLEVBdkJLOztBQXlCTCwwQkFBZ0IsQ0FBaEIsQ0F6Qks7QUEwQkwsMEJBQWdCLENBQWhCLENBMUJLO0FBMkJMLHFCQUFXLEVBQVgsQ0EzQks7U0FIUDtPQUZGO0FBbUNBLGlCQUFXLE1BQU0sTUFBTixDQXJDTjtBQXNDTCxpQkFBVyxNQUFNLE1BQU4sQ0F0Q047S0F6QlA7SUFwQnFHOztBQWV2RyxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxLQUFLLE1BQUwsRUFBYSxHQUFqQyxFQUFzQzs7a0NBQTdCLEdBQTZCO0dBQXRDOztBQXdFQSxTQUFPO0FBQ0wsaUJBQWEsV0FBYixFQUEwQixhQUFhLFdBQWI7QUFDMUIsZUFBVyxTQUFYLEVBQXNCLFdBQVcsU0FBWDtBQUN0QixXQUFPLEtBQVA7R0FIRixDQXZGdUc7Q0FBbEc7O0FBOEZBLFNBQVMsbUJBQVQsQ0FBNkIsV0FBN0IsRUFBMEMsV0FBMUMsRUFBdUQsTUFBdkQsRUFBK0QsTUFBL0QsRUFBdUUsU0FBdkUsRUFBa0YsU0FBbEYsRUFBNkYsT0FBN0YsRUFBc0c7QUFDM0csTUFBTSxPQUFPLGdCQUFnQixXQUFoQixFQUE2QixXQUE3QixFQUEwQyxNQUExQyxFQUFrRCxNQUFsRCxFQUEwRCxTQUExRCxFQUFxRSxTQUFyRSxFQUFnRixPQUFoRixDQUFQLENBRHFHOztBQUczRyxNQUFNLE1BQU0sRUFBTixDQUhxRztBQUkzRyxNQUFJLGVBQWUsV0FBZixFQUE0QjtBQUM5QixRQUFJLElBQUosQ0FBUyxZQUFZLFdBQVosQ0FBVCxDQUQ4QjtHQUFoQztBQUdBLE1BQUksSUFBSixDQUFTLHFFQUFULEVBUDJHO0FBUTNHLE1BQUksSUFBSixDQUFTLFNBQVMsS0FBSyxXQUFMLElBQW9CLE9BQU8sS0FBSyxTQUFMLEtBQW1CLFdBQTFCLEdBQXdDLEVBQXhDLEdBQTZDLE9BQU8sS0FBSyxTQUFMLENBQWpGLENBQVQsQ0FSMkc7QUFTM0csTUFBSSxJQUFKLENBQVMsU0FBUyxLQUFLLFdBQUwsSUFBb0IsT0FBTyxLQUFLLFNBQUwsS0FBbUIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBTyxLQUFLLFNBQUwsQ0FBakYsQ0FBVCxDQVQyRzs7QUFXM0csT0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksS0FBSyxLQUFMLENBQVcsTUFBWCxFQUFtQixHQUF2QyxFQUE0QztBQUMxQyxRQUFNLE9BQU8sS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFQLENBRG9DO0FBRTFDLFFBQUksSUFBSixDQUNFLFNBQVMsS0FBSyxRQUFMLEdBQWdCLEdBQXpCLEdBQStCLEtBQUssUUFBTCxHQUM3QixJQURGLEdBQ1MsS0FBSyxRQUFMLEdBQWdCLEdBRHpCLEdBQytCLEtBQUssUUFBTCxHQUM3QixLQUZGLENBREYsQ0FGMEM7QUFPMUMsUUFBSSxJQUFKLENBQVMsS0FBVCxDQUFlLEdBQWYsRUFBb0IsS0FBSyxLQUFMLENBQXBCLENBUDBDO0dBQTVDOztBQVVBLFNBQU8sSUFBSSxJQUFKLENBQVMsSUFBVCxJQUFpQixJQUFqQixDQXJCb0c7Q0FBdEc7O0FBd0JBLFNBQVMsV0FBVCxDQUFxQixRQUFyQixFQUErQixNQUEvQixFQUF1QyxNQUF2QyxFQUErQyxTQUEvQyxFQUEwRCxTQUExRCxFQUFxRSxPQUFyRSxFQUE4RTtBQUNuRixTQUFPLG9CQUFvQixRQUFwQixFQUE4QixRQUE5QixFQUF3QyxNQUF4QyxFQUFnRCxNQUFoRCxFQUF3RCxTQUF4RCxFQUFtRSxTQUFuRSxFQUE4RSxPQUE5RSxDQUFQLENBRG1GO0NBQTlFIiwiZmlsZSI6ImNyZWF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlmZkxpbmVzfSBmcm9tICcuLi9kaWZmL2xpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IGNvbnRleHQ6IDQgfTtcbiAgfVxuXG4gIGNvbnN0IGRpZmYgPSBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIpO1xuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7ICAgLy8gQXBwZW5kIGFuIGVtcHR5IHZhbHVlIHRvIG1ha2UgY2xlYW51cCBlYXNpZXJcblxuICBmdW5jdGlvbiBjb250ZXh0TGluZXMobGluZXMpIHtcbiAgICByZXR1cm4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAnICcgKyBlbnRyeTsgfSk7XG4gIH1cblxuICBsZXQgaHVua3MgPSBbXTtcbiAgbGV0IG9sZFJhbmdlU3RhcnQgPSAwLCBuZXdSYW5nZVN0YXJ0ID0gMCwgY3VyUmFuZ2UgPSBbXSxcbiAgICAgIG9sZExpbmUgPSAxLCBuZXdMaW5lID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGRpZmZbaV0sXG4gICAgICAgICAgbGluZXMgPSBjdXJyZW50LmxpbmVzIHx8IGN1cnJlbnQudmFsdWUucmVwbGFjZSgvXFxuJC8sICcnKS5zcGxpdCgnXFxuJyk7XG4gICAgY3VycmVudC5saW5lcyA9IGxpbmVzO1xuXG4gICAgaWYgKGN1cnJlbnQuYWRkZWQgfHwgY3VycmVudC5yZW1vdmVkKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIHByZXZpb3VzIGNvbnRleHQsIHN0YXJ0IHdpdGggdGhhdFxuICAgICAgaWYgKCFvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBkaWZmW2kgLSAxXTtcbiAgICAgICAgb2xkUmFuZ2VTdGFydCA9IG9sZExpbmU7XG4gICAgICAgIG5ld1JhbmdlU3RhcnQgPSBuZXdMaW5lO1xuXG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgY3VyUmFuZ2UgPSBvcHRpb25zLmNvbnRleHQgPiAwID8gY29udGV4dExpbmVzKHByZXYubGluZXMuc2xpY2UoLW9wdGlvbnMuY29udGV4dCkpIDogW107XG4gICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgICAgbmV3UmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3V0cHV0IG91ciBjaGFuZ2VzXG4gICAgICBjdXJSYW5nZS5wdXNoKC4uLiBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIChjdXJyZW50LmFkZGVkID8gJysnIDogJy0nKSArIGVudHJ5O1xuICAgICAgfSkpO1xuXG4gICAgICAvLyBUcmFjayB0aGUgdXBkYXRlZCBmaWxlIHBvc2l0aW9uXG4gICAgICBpZiAoY3VycmVudC5hZGRlZCkge1xuICAgICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZGVudGljYWwgY29udGV4dCBsaW5lcy4gVHJhY2sgbGluZSBjaGFuZ2VzXG4gICAgICBpZiAob2xkUmFuZ2VTdGFydCkge1xuICAgICAgICAvLyBDbG9zZSBvdXQgYW55IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gb3V0cHV0IChvciBqb2luIG92ZXJsYXBwaW5nKVxuICAgICAgICBpZiAobGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCAqIDIgJiYgaSA8IGRpZmYubGVuZ3RoIC0gMikge1xuICAgICAgICAgIC8vIE92ZXJsYXBwaW5nXG4gICAgICAgICAgY3VyUmFuZ2UucHVzaCguLi4gY29udGV4dExpbmVzKGxpbmVzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZW5kIHRoZSByYW5nZSBhbmQgb3V0cHV0XG4gICAgICAgICAgbGV0IGNvbnRleHRTaXplID0gTWF0aC5taW4obGluZXMubGVuZ3RoLCBvcHRpb25zLmNvbnRleHQpO1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcy5zbGljZSgwLCBjb250ZXh0U2l6ZSkpKTtcblxuICAgICAgICAgIGxldCBodW5rID0ge1xuICAgICAgICAgICAgb2xkU3RhcnQ6IG9sZFJhbmdlU3RhcnQsXG4gICAgICAgICAgICBvbGRMaW5lczogKG9sZExpbmUgLSBvbGRSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbmV3U3RhcnQ6IG5ld1JhbmdlU3RhcnQsXG4gICAgICAgICAgICBuZXdMaW5lczogKG5ld0xpbmUgLSBuZXdSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbGluZXM6IGN1clJhbmdlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaSA+PSBkaWZmLmxlbmd0aCAtIDIgJiYgbGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCkge1xuICAgICAgICAgICAgLy8gRU9GIGlzIGluc2lkZSB0aGlzIGh1bmtcbiAgICAgICAgICAgIGxldCBvbGRFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoL1xcbiQvLnRlc3QobmV3U3RyKSk7XG4gICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID09IDAgJiYgIW9sZEVPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICBjdXJSYW5nZS5zcGxpY2UoaHVuay5vbGRMaW5lcywgMCwgJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghb2xkRU9GTmV3bGluZSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUd29GaWxlc1BhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRpZmYgPSBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAob2xkRmlsZU5hbWUgPT0gbmV3RmlsZU5hbWUpIHtcbiAgICByZXQucHVzaCgnSW5kZXg6ICcgKyBvbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0Y2goZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gY3JlYXRlVHdvRmlsZXNQYXRjaChmaWxlTmFtZSwgZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucyk7XG59XG4iXX0=
    -
    -
    -/***/ },
    -/* 13 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/"use strict";
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP;
    -	// See: http://code.google.com/p/google-diff-match-patch/wiki/API
    -	function convertChangesToDMP(changes) {
    -	  var ret = [],
    -	      change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
    -	      operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -	  for (var i = 0; i < changes.length; i++) {
    -	    change = changes[i];
    -	    if (change.added) {
    -	      operation = 1;
    -	    } else if (change.removed) {
    -	      operation = -1;
    -	    } else {
    -	      operation = 0;
    -	    }
    -
    -	    ret.push([operation, change.value]);
    -	  }
    -	  return ret;
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQ2dCOztBQUFULFNBQVMsbUJBQVQsQ0FBNkIsT0FBN0IsRUFBc0M7QUFDM0MsTUFBSSxNQUFNLEVBQU47TUFDQSxnRUFESjtNQUVJLG1FQUZKLENBRDJDO0FBSTNDLE9BQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLFFBQVEsTUFBUixFQUFnQixHQUFwQyxFQUF5QztBQUN2QyxhQUFTLFFBQVEsQ0FBUixDQUFULENBRHVDO0FBRXZDLFFBQUksT0FBTyxLQUFQLEVBQWM7QUFDaEIsa0JBQVksQ0FBWixDQURnQjtLQUFsQixNQUVPLElBQUksT0FBTyxPQUFQLEVBQWdCO0FBQ3pCLGtCQUFZLENBQUMsQ0FBRCxDQURhO0tBQXBCLE1BRUE7QUFDTCxrQkFBWSxDQUFaLENBREs7S0FGQTs7QUFNUCxRQUFJLElBQUosQ0FBUyxDQUFDLFNBQUQsRUFBWSxPQUFPLEtBQVAsQ0FBckIsRUFWdUM7R0FBekM7QUFZQSxTQUFPLEdBQVAsQ0FoQjJDO0NBQXRDIiwiZmlsZSI6ImRtcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
    -
    -
    -/***/ },
    -/* 14 */
    -/***/ function(module, exports) {
    -
    -	/*istanbul ignore start*/'use strict';
    -
    -	exports.__esModule = true;
    -	exports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML;
    -	function convertChangesToXML(changes) {
    -	  var ret = [];
    -	  for (var i = 0; i < changes.length; i++) {
    -	    var change = changes[i];
    -	    if (change.added) {
    -	      ret.push('');
    -	    } else if (change.removed) {
    -	      ret.push('');
    -	    }
    -
    -	    ret.push(escapeHTML(change.value));
    -
    -	    if (change.added) {
    -	      ret.push('');
    -	    } else if (change.removed) {
    -	      ret.push('');
    -	    }
    -	  }
    -	  return ret.join('');
    -	}
    -
    -	function escapeHTML(s) {
    -	  var n = s;
    -	  n = n.replace(/&/g, '&');
    -	  n = n.replace(//g, '>');
    -	  n = n.replace(/"/g, '"');
    -
    -	  return n;
    -	}
    -	//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxtQkFBVCxDQUE2QixPQUE3QixFQUFzQztBQUMzQyxNQUFJLE1BQU0sRUFBTixDQUR1QztBQUUzQyxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxRQUFRLE1BQVIsRUFBZ0IsR0FBcEMsRUFBeUM7QUFDdkMsUUFBSSxTQUFTLFFBQVEsQ0FBUixDQUFULENBRG1DO0FBRXZDLFFBQUksT0FBTyxLQUFQLEVBQWM7QUFDaEIsVUFBSSxJQUFKLENBQVMsT0FBVCxFQURnQjtLQUFsQixNQUVPLElBQUksT0FBTyxPQUFQLEVBQWdCO0FBQ3pCLFVBQUksSUFBSixDQUFTLE9BQVQsRUFEeUI7S0FBcEI7O0FBSVAsUUFBSSxJQUFKLENBQVMsV0FBVyxPQUFPLEtBQVAsQ0FBcEIsRUFSdUM7O0FBVXZDLFFBQUksT0FBTyxLQUFQLEVBQWM7QUFDaEIsVUFBSSxJQUFKLENBQVMsUUFBVCxFQURnQjtLQUFsQixNQUVPLElBQUksT0FBTyxPQUFQLEVBQWdCO0FBQ3pCLFVBQUksSUFBSixDQUFTLFFBQVQsRUFEeUI7S0FBcEI7R0FaVDtBQWdCQSxTQUFPLElBQUksSUFBSixDQUFTLEVBQVQsQ0FBUCxDQWxCMkM7Q0FBdEM7O0FBcUJQLFNBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QjtBQUNyQixNQUFJLElBQUksQ0FBSixDQURpQjtBQUVyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsT0FBaEIsQ0FBSixDQUZxQjtBQUdyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsTUFBaEIsQ0FBSixDQUhxQjtBQUlyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsTUFBaEIsQ0FBSixDQUpxQjtBQUtyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsUUFBaEIsQ0FBSixDQUxxQjs7QUFPckIsU0FBTyxDQUFQLENBUHFCO0NBQXZCIiwiZmlsZSI6InhtbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q2hhbmdlc1RvWE1MKGNoYW5nZXMpIHtcbiAgbGV0IHJldCA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICByZXQucHVzaCgnPGlucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPGRlbD4nKTtcbiAgICB9XG5cbiAgICByZXQucHVzaChlc2NhcGVIVE1MKGNoYW5nZS52YWx1ZSkpO1xuXG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzwvaW5zPicpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2RlbD4nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7XG4gIGxldCBuID0gcztcbiAgbiA9IG4ucmVwbGFjZSgvJi9nLCAnJmFtcDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPC9nLCAnJmx0OycpO1xuICBuID0gbi5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcblxuICByZXR1cm4gbjtcbn1cbiJdfQ==
    -
    -
    -/***/ }
    -/******/ ])
    -});
    -;
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.min.js
    deleted file mode 100644
    index 3a285f65..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/dist/diff.min.js
    +++ /dev/null
    @@ -1,311 +0,0 @@
    -/*!
    -
    - diff v2.2.2
    -
    -Software License Agreement (BSD License)
    -
    -Copyright (c) 2009-2015, Kevin Decker 
    -
    -All rights reserved.
    -
    -Redistribution and use of this software in source and binary forms, with or without modification,
    -are permitted provided that the following conditions are met:
    -
    -* Redistributions of source code must retain the above
    -  copyright notice, this list of conditions and the
    -  following disclaimer.
    -
    -* Redistributions in binary form must reproduce the above
    -  copyright notice, this list of conditions and the
    -  following disclaimer in the documentation and/or other
    -  materials provided with the distribution.
    -
    -* Neither the name of Kevin Decker nor the names of its
    -  contributors may be used to endorse or promote products
    -  derived from this software without specific prior
    -  written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
    -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
    -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -@license
    -*/
    -!function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?exports.JsDiff=b():a.JsDiff=b()}(this,function(){/******/
    -return function(a){/******/
    -// The require function
    -/******/
    -function b(d){/******/
    -// Check if module is in cache
    -/******/
    -if(c[d])/******/
    -return c[d].exports;/******/
    -// Create a new module (and put it into the cache)
    -/******/
    -var e=c[d]={/******/
    -exports:{},/******/
    -id:d,/******/
    -loaded:!1};/******/
    -// Return the exports of the module
    -/******/
    -/******/
    -// Execute the module function
    -/******/
    -/******/
    -// Flag the module as loaded
    -/******/
    -return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}// webpackBootstrap
    -/******/
    -// The module cache
    -/******/
    -var c={};/******/
    -// Load entry module and return exports
    -/******/
    -/******/
    -// expose the modules object (__webpack_modules__)
    -/******/
    -/******/
    -// expose the module cache
    -/******/
    -/******/
    -// __webpack_public_path__
    -/******/
    -return b.m=a,b.c=c,b.p="",b(0)}([/* 0 */
    -/***/
    -function(a,b,c){/*istanbul ignore start*/
    -"use strict";/*istanbul ignore start*/
    -function d(a){return a&&a.__esModule?a:{"default":a}}b.__esModule=!0,b.canonicalize=b.convertChangesToXML=b.convertChangesToDMP=b.parsePatch=b.applyPatches=b.applyPatch=b.createPatch=b.createTwoFilesPatch=b.structuredPatch=b.diffJson=b.diffCss=b.diffSentences=b.diffTrimmedLines=b.diffLines=b.diffWordsWithSpace=b.diffWords=b.diffChars=b.Diff=void 0;/*istanbul ignore end*/
    -var/*istanbul ignore start*/e=c(1),f=d(e),/*istanbul ignore start*/g=c(2),/*istanbul ignore start*/h=c(3),/*istanbul ignore start*/i=c(5),/*istanbul ignore start*/j=c(6),/*istanbul ignore start*/k=c(7),/*istanbul ignore start*/l=c(8),/*istanbul ignore start*/m=c(9),/*istanbul ignore start*/n=c(10),/*istanbul ignore start*/o=c(12),/*istanbul ignore start*/p=c(13),/*istanbul ignore start*/q=c(14);/* See LICENSE file for terms of use */
    -/*
    -	 * Text diff implementation.
    -	 *
    -	 * This library supports the following APIS:
    -	 * JsDiff.diffChars: Character by character diff
    -	 * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
    -	 * JsDiff.diffLines: Line based diff
    -	 *
    -	 * JsDiff.diffCss: Diff targeted at CSS content
    -	 *
    -	 * These methods are based on the implementation proposed in
    -	 * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
    -	 * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
    -	 */
    -b.Diff=f["default"],/*istanbul ignore start*/
    -b.diffChars=g.diffChars,/*istanbul ignore start*/
    -b.diffWords=h.diffWords,/*istanbul ignore start*/
    -b.diffWordsWithSpace=h.diffWordsWithSpace,/*istanbul ignore start*/
    -b.diffLines=i.diffLines,/*istanbul ignore start*/
    -b.diffTrimmedLines=i.diffTrimmedLines,/*istanbul ignore start*/
    -b.diffSentences=j.diffSentences,/*istanbul ignore start*/
    -b.diffCss=k.diffCss,/*istanbul ignore start*/
    -b.diffJson=l.diffJson,/*istanbul ignore start*/
    -b.structuredPatch=o.structuredPatch,/*istanbul ignore start*/
    -b.createTwoFilesPatch=o.createTwoFilesPatch,/*istanbul ignore start*/
    -b.createPatch=o.createPatch,/*istanbul ignore start*/
    -b.applyPatch=m.applyPatch,/*istanbul ignore start*/
    -b.applyPatches=m.applyPatches,/*istanbul ignore start*/
    -b.parsePatch=n.parsePatch,/*istanbul ignore start*/
    -b.convertChangesToDMP=p.convertChangesToDMP,/*istanbul ignore start*/
    -b.convertChangesToXML=q.convertChangesToXML,/*istanbul ignore start*/
    -b.canonicalize=l.canonicalize},/* 1 */
    -/***/
    -function(a,b){/*istanbul ignore start*/
    -"use strict";function c(){}function d(a,b,c,d,e){for(var f=0,g=b.length,h=0,i=0;g>f;f++){var j=b[f];if(j.removed){
    -// Reverse add and remove so removes are output first to match common convention
    -// The diffing algorithm is tied to add then remove output and this is the simplest
    -// route to get the desired output with minimal overhead.
    -if(j.value=d.slice(i,i+j.count).join(""),i+=j.count,f&&b[f-1].added){var k=b[f-1];b[f-1]=b[f],b[f]=k}}else{if(!j.added&&e){var l=c.slice(h,h+j.count);l=l.map(function(a,b){var c=d[i+b];return c.length>a.length?c:a}),j.value=l.join("")}else j.value=c.slice(h,h+j.count).join("");h+=j.count,
    -// Common case
    -j.added||(i+=j.count)}}
    -// Special case handle for when one terminal is ignored. For this case we merge the
    -// terminal into the prior string and drop the change.
    -var m=b[g-1];return g>1&&(m.added||m.removed)&&a.equals("",m.value)&&(b[g-2].value+=m.value,b.pop()),b}function e(a){return{newPos:a.newPos,components:a.components.slice(0)}}b.__esModule=!0,b["default"]=/*istanbul ignore end*/c,c.prototype={/*istanbul ignore start*/
    -/*istanbul ignore end*/
    -diff:function(a,b){function c(a){return h?(setTimeout(function(){h(void 0,a)},0),!0):a}
    -// Main worker method. checks all permutations of a given edit length for acceptance.
    -function f(){for(var f=-1*l;l>=f;f+=2){var g=void 0,h=n[f-1],m=n[f+1],o=(m?m.newPos:0)-f;h&&(
    -// No one else is going to attempt to use this value, clear it
    -n[f-1]=void 0);var p=h&&h.newPos+1=0&&k>o;if(p||q){
    -// If we have hit the end of both strings, then we are done
    -if(
    -// Select the diagonal that we want to branch from. We select the prior
    -// path whose position in the new string is the farthest from the origin
    -// and does not pass the bounds of the diff graph
    -!p||q&&h.newPos=j&&o+1>=k)return c(d(i,g.components,b,a,i.useLongestToken));
    -// Otherwise track this path as a potential candidate and continue.
    -n[f]=g}else
    -// If this path is a terminal then prune
    -n[f]=void 0}l++}/*istanbul ignore start*/
    -var/*istanbul ignore end*/g=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],h=g.callback;"function"==typeof g&&(h=g,g={}),this.options=g;var i=this;a=this.castInput(a),b=this.castInput(b),a=this.removeEmpty(this.tokenize(a)),b=this.removeEmpty(this.tokenize(b));var j=b.length,k=a.length,l=1,m=j+k,n=[{newPos:-1,components:[]}],o=this.extractCommon(n[0],b,a,0);if(n[0].newPos+1>=j&&o+1>=k)
    -// Identity per the equality and tokenizer
    -return c([{value:b.join(""),count:b.length}]);
    -// Performs the length of edit iteration. Is a bit fugly as this has to support the
    -// sync and async mode which is never fun. Loops over execEditLength until a value
    -// is produced.
    -if(h)!function q(){setTimeout(function(){
    -// This should not happen, but we want to be safe.
    -/* istanbul ignore next */
    -// This should not happen, but we want to be safe.
    -/* istanbul ignore next */
    -return l>m?h():void(f()||q())},0)}();else for(;m>=l;){var p=f();if(p)return p}},/*istanbul ignore start*/
    -/*istanbul ignore end*/
    -pushComponent:function(a,b,c){var d=a[a.length-1];d&&d.added===b&&d.removed===c?
    -// We need to clone here as the component clone operation is just
    -// as shallow array clone
    -a[a.length-1]={count:d.count+1,added:b,removed:c}:a.push({count:1,added:b,removed:c})},/*istanbul ignore start*/
    -/*istanbul ignore end*/
    -extractCommon:function(a,b,c,d){for(var e=b.length,f=c.length,g=a.newPos,h=g-d,i=0;e>g+1&&f>h+1&&this.equals(b[g+1],c[h+1]);)g++,h++,i++;return i&&a.components.push({count:i}),a.newPos=g,h},/*istanbul ignore start*/
    -/*istanbul ignore end*/
    -equals:function(a,b){return a===b},/*istanbul ignore start*/
    -/*istanbul ignore end*/
    -removeEmpty:function(a){for(var b=[],c=0;ck))return!1;b++}}return!0}/*istanbul ignore start*/
    -var/*istanbul ignore end*/d=arguments.length<=2||void 0===arguments[2]?{}:arguments[2];if("string"==typeof b&&(b=/*istanbul ignore start*/(0,g.parsePatch)(b)),Array.isArray(b)){if(b.length>1)throw new Error("applyPatch only works with a single input.");b=b[0]}
    -// Search best fit offsets for each hunk based on the previous ones
    -for(var e=a.split("\n"),f=b.hunks,h=d.compareLine||function(a,b,c,d){/*istanbul ignore end*/
    -return b===d},j=0,k=d.fuzzFactor||0,l=0,m=0,n=void 0,o=void 0,p=0;p=a+g)return g;f=!0}
    -// Check if trying to fit before text beginning, and if not, check it fits
    -// before offset location
    -return e?void 0:(f||(d=!0),a-g>=b?-g++:(e=!0,h()))}}},/* 12 */
    -/***/
    -function(a,b,c){/*istanbul ignore start*/
    -"use strict";/*istanbul ignore start*/
    -function d(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b0?j(h.lines.slice(-i.context)):[],m-=o.length,n-=o.length)}
    -// Output our changes
    -/*istanbul ignore start*/
    -(g=/*istanbul ignore end*/o).push.apply(/*istanbul ignore start*/g,/*istanbul ignore start*/d(/*istanbul ignore end*/f.map(function(a){return(b.added?"+":"-")+a}))),
    -// Track the updated file position
    -b.added?q+=f.length:p+=f.length}else{
    -// Identical context lines. Track line changes
    -if(m)
    -// Close out any changes that have been output (or join overlapping)
    -if(f.length<=2*i.context&&a=k.length-2&&f.length<=i.context){
    -// EOF is inside this hunk
    -var v=/\n$/.test(c),w=/\n$/.test(e);0!=f.length||v?v&&w||o.push("\\ No newline at end of file"):
    -// special case: old has no eol and no trailing context; no-nl can end up before adds
    -o.splice(u.oldLines,0,"\\ No newline at end of file")}l.push(u),m=0,n=0,o=[]}p+=f.length,q+=f.length}},s=0;s"):e.removed&&b.push(""),b.push(d(e.value)),e.added?b.push(""):e.removed&&b.push("")}return b.join("")}function d(a){var b=a;return b=b.replace(/&/g,"&"),b=b.replace(//g,">"),b=b.replace(/"/g,""")}b.__esModule=!0,b.convertChangesToXML=c}])});
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/node_example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/node_example.js
    deleted file mode 100644
    index 8e696caf..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/node_example.js
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -require('colors')
    -var jsdiff = require('../');
    -
    -var one = 'beep boop';
    -var other = 'beep boob blah';
    -
    -var diff = jsdiff.diffChars(one, other);
    -
    -diff.forEach(function(part){
    -  // green for additions, red for deletions
    -  // grey for common parts
    -  var color = part.added ? 'green' :
    -    part.removed ? 'red' : 'grey';
    -  process.stderr.write(part.value[color]);
    -});
    -
    -console.log();
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/web_example.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/web_example.html
    deleted file mode 100644
    index 7f2cb636..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/examples/web_example.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -
    
    -
    -
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/node_example.png b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/node_example.png
    deleted file mode 100644
    index eb87034ab4b06f3a95efaf40743c3753c6c2c7ee..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 5654
    zcmV+x7U}7UP)4Tx07wn3mUmne*%rs|OnRdwgd!#Mj&uS@uK^UKgN={`LJJ`zh=_{F;tEz&
    zM6gj-nu2QqWG#p&wnag)>w+u_>T|ImDk^URkGP-rdHdhH^SSqa=XcMXIrq%m&*uO@
    zu4fB{X|MtS=>oAR%-@R<6C20CJpoui1SDV%m~2j#&@(hN82n@Vco#s@#oHEAU;k+K
    zzZVp_yetj?P$;sTz|G>MBYYC+TRB3J7yy(HqU)~|3#H6Qm?lC3L^w~%Nwd6N$_cYv
    zJ7W_O=8f321Ar&9*`g!>NZp9e$mS#=en@{JY$f0(3jiR~5O(A6*<6Gp5H?Rw&yaFH
    z!o~@I^ON*9X0sDyKH2Of8PDzoc@lZCPjZ$pjlF8-=KndQr%8}}%``1!Bxj|D2O%>Z
    z$ypAE?HfMFd>%{s&1Q6=*eh&~lf^9QK4)~kBp`B*C8?2~bDWwHB(oPJEDD*^Ia%IF
    z?q{FP<$Euhvq@nGO279^3~UiX|6yL5zwEt2ai}a#
    zLE0kOUJ^xqG8P5R6<55DsjR%L+IFBm-hzj##<@?+oE8QF0Pr%
    zp`{ZBIji!32GoES&;!Q60*TH6xBw3%;y@4rB0wxy4mf}h(t!x91bJXRC;}y5JJ<~>
    zz(G(0>cLTP9JGNm-~zY|u7g`(06YSNUUpKqXKqQ~^~%4bZR9Y3KrU73zZ?Kts?N^bYz0qhK;jgEe78
    zcs|U8J>eiY0$v6u!I^L_TnKN4%i(JH2;2%^fUm;?@F4sOoHu%VzF2{)(Go}4Zy}?
    zQ?RSCo3Z<`E!a+MA9ff!fy3d{aAr7HTnLVh6XS|-dvQl_=W+eG5!@#{39pT}!TaIk
    z@B(}Rz6{@pKZozfzrars6bJ?cXF>>pOIStNMyMrp5N;Ai2vbBwq7l)R7(q-St|yig
    zn~9f*kBRR|B$6)4iL{uMOv)#fla7(DkcLQ~$x38XvNw4tSwh}Qt|NDnACTWuC=^4A
    z2PKXorfj7&P%cuQQa;I1RR$wcvRj5=rt#D6aLXoOytr()1uDDsTQSqwcs1i=eP{~(`t5m2|qjXVen2Mt6
    zQN5`g>IP~p^%8Z2hNT(NShN&c3GFDYmo~1fq->`grJSQ&seD#>kdC4o(pmI0`ZoG;
    z`d#`L6-^aS6`sl_m1dQGl}XiksvfF5)ne5a)dAHnY78}BwN$koYHeyy)Y0mu>WkG^
    zsvl6lr2cvyZJx_K&b;Dz$LBrNfHh1t!ZcQE)M(t$n9$VH^w$(>?$x}g`C5yv<)M|L
    zwM*-q)|fU`+f6%Jdzbck?UxK?h9@J9QO@XQjO%FV1n5X~s&smFrgV*TBXtXOTXdi3
    z5%rjQiF&*Ay7b2Nwe=V3=jk`;KQtg1Fb((ydklIECJl`YqYXD2wi%8ZsT#42a*djd
    z9vf4P-HkJitBvoNU`?1NsV4hPZkfWS_NIK(O4FNWu$hBdve|yKK68w@lexgW+Wejc
    z*}~Hz+oH*0$dYauY*}F0X8C5m{`|Q4JLdPy|88Y(m1b3I^~hSuI?%eny2JXNjj0XC
    zrqbq)EydQ)cAagz?OQuDJD%MEyZiQ3`-S!!?Yr#1IXF6q9GV@*9Q7UJ9rrojW73$R
    z%+1UzP8cUIr*%$eoIX1{IE$T+JOAZk;gago=rX#%XaR3Q?Sf%fU01eimFu7z!!6$J
    zklUcUjyv1E+Wnb_o(I?Cu*VBe6VDXSBc5-(th_{Cr@SV;oxRt1clw}w{C$djdVQ6A
    zBYi7;pZe+gCHXb^jr-gCulDZ@zyt&Z>yL(!>q&d!g|7~;VZ%$
    z!#_rNMQn?B6lokOiR_A!k6Iel5H%U?6I~iT7&AX+P0aOJ_1NUt_BdQzRNUdXi6y>E
    zb}t!OYQMB->D^^U%W{@oU9P@7ZTZ<1@+;UYPQ+v4qvIRnzp_Kv)$EA`R>Ho7agH}<
    z59bxvgS(46#&hMB@?IpmCYC0SCb=fG51895n!LNj5Ja4^$3b9d&rC`fcT3(8uS)h?zX#mfzevE(Po
    zP_|okW%j3)Q7cd6DCP)qZmcq0wQ1FhT)*63R-;#QR(Iv;*4_M)Ljh>(>+4r>_6Kz^b6M;KPRK4IPD=h53cUKl%UER3uj8*)dd$&1kJFp$QU9kP`4)-1PrHZAw
    zrNcWH?rhz~*j2pi!|oNkua?=B9o$3QBiS=p9$enOSAXyJyvUm6apA1*oktxixk
    zSRYp3-Qd{J(5TV4tqE?DG>siudgRtopQG)~7R^;H^p=ui;F#pt%U|Pvy?Z?9c-IN$
    ziRP0AC-xAEHs+hg1NP6wXu>Tu~e^_%5yb!T+WRGw8nyX_qDT;aLt
    z^SS3II)$CDFC<+U?po3H=wi&pJKc-BdoKlDx^mg?^2Hv{p7U2+ubjE+eD(A-=C!u#
    z4%b_6*xxwyyZ!H{dL4ROZ#v#=zvXnRqi;dqxqkQl3%7l4U%tb-bA4dZK;PZSyZ7%c
    zy*GHDdw=vn+JmM1gN!e44r`3O${LwP#FnD&zXXwVW@Mn*PIm561
    z%=+`|Na1tJ^RgG(FB(Q|M$e4-joo^=Z}gabL^7nSAT`9`yb3
    zbo%tPkS$`*)B-4EgcB11cvlAiB^ChcEdYpevo-IG1vFcyBP^}grCr+oi)ZWNnH2{B
    zYB~Xk$Oj-8nfD^IA=2eN0Fah%5gq`xwUu>5k+!TvTbmhx$ReaP`7}NKUK0RZ2LRth
    z)6-M?r>DQwBDD@u+jM5m*4k2Qg(CnQ@^*}{i@dxgCV%GnzYYHeaXt2Sf0s5T000XS
    zNklmNU49OT8hk*>3nrTBjp-h`;J3KIL
    zC)3W*bee}wAKJ8KrW0VAhBSfRLJcI`L$P6i;6MWShK+6cDofUVrCn{$*_GBSS*w*T
    zUm8aHAfG+^o&W#NIp6vJb9RkpWo04BD>(uQi~yEE+ho(^2*43YYAC6LL`NX0p+rY8
    z**>YEqy`cl0V2WxgQacT(_ECQboRF%`tY-er~fCn3qlgB|BYU2#4VkUD{pyc)p2PH
    zS#_G)?!n#Tyl@9}^713NtvXSD~?vX`P>oB!;OX4Y^fP9(6A8bT0-Mx{V8WOCRn
    z(R48%F91nYp~X;~vG!22?WnYclsp2%QB2KyK>1Rf1wx6SI7&MFGg4lh#^Z!d*ANnj
    zv+1J37Jwv^a0ewVbR4tyo<{suree3ga#NJKNSMMx82GyKUWl<-2p^2k3f=fUl6qSR
    zHnZ~~sv(+o2JnJ4tMhOa@j3=?ebGDJL1ER(Y#r)j2y&$RZr^zP08FhmC=ttqo58Yc
    zo?4(KL=gP4Gv>${#qHH@HD6f_3KR4sl
    zmbe83LG$Y6at$iiAoc;j`LpSX3rf)Rv|L|+;WFgmX)no26I6msw}ikRk)R2-DN}90
    zF_(`zIqv5AJ}1AT8qyWK@Wz@P6&lRY>(`o3zjy4OGsvFEt=+w~&ZxpeB-TG~?LG6s
    z@lIzj$;1Ev-R#`coTFmQ-90IVC0Za-_S&$1^umevZkcB=Nm3+N?tJ;VEUi35vfeRt
    z_aE<{8Vv*&J&`K`01ZvcbQO&L@@Fbq9^c!XVAc2KD8G6B8YP754M$+@&hTLz^o_t27cpE4xdnzuh1HyKQ!7
    zg~-l|p6%0eb5$s19UFC!aKv$4PQz!E-ca;Ud!V9Wt3m4?F2J740=
    zO9EKgU^ykFTAXs)ogTPK5LB5_zw2A2geWD>xbQa?$&9soo9a0MIc*jP>q3{ky!pG0
    zDt4$*DFEllSPBHh*d9@ScIhfpW%a*K6-=m*PV{mj7GwrxRRa_d?PDxmKHDR>L^TeX#MRXFz;nyd(cU{1-0plsvn=aZNFyFI$sK
    zv<_0S0au4Y+jfS$-E#QsSJ1`k#yxfA=?rSDdvQhAe?E`57h)vO_HW*@1_n{abF<~>
    z1=huLukNiaOvO^mx2!Gx=<2Wp;JaqhiHE{{&+ci
    z3x2D2=&lMwylrm>cTD9?DOC+}MXF3+jjXP*B-{N&X36Qlbcj=D4RH41fVdKRr_Q&HaP?QhfsI1Y3GlPQA9Se|K$4d8hSU7&%9
    zj^6QtJGNV2GyfSVwO>~8172?AW)=^4*kZj$S>DvQ0b0XbN(
    zJK-lLYT{79C3x{x
    zXvRnTkk|mO3Hux7V$1L$AL0Y<$?!9?m32XToB?i(#Q|)<
    z;(P|h#NB{*df<}lLI(k^R^oT|7Ifvx4L{WiH`GyGVMLgVs2E{okC#ov4C0AztqR*t
    zFY~h>`G^Ku5L_fHbf0Z_M20}V4B2+<4_5}+sS?0I5zi}%4M4DLu0@0kjRMXOis1zG
    z5Yl0|@rb(!3p~j&G8G~*wJ{Y#LT5=(p;bW_xJrxpSmxpYb!bv(e;5;rJ<2$TXYgJ)
    z0SkEDekdS@4s@JxnQ!_j598{`8xHB^Q?IsRMn|E@nr;6SC^T;#aB}Q_n
    zXBe)4aFXCF+sg7xP)%9}?{yEw2AD&Go?ao``r!IJIATobX*@J%Z9!KdXSKpye`n&}
    zF>a}j6`W0gdHLJ>_BJbTy
    z73pBQ9PaokJpaJwVwV_6Wb8(t4UUeG5U=CR>ru(L}V5OSGbsm`n8MhUMwn5u+>
    zkMv$-Ka++qvH!+zfr&ioalsHZlm^p`b{kw-E?#cF1;QQRkD`l_O>rh$g+QuJ0X}7s)ozVbw
    z&XiTAf6_Ka#Rjxm`0mN7Hts5{brNc=oSi1d-FyB@5C2%YAWrh+sn+l9T&H45{;=9k
    zDN?N(lhMbsA8>o_alPMKdD{r8kG!(|a!7NXd3V)I!PjlqVYH;Jpsa
    zD_~oxmTfs=1ZBU+cV?g6@xVvA)nMmV-k{H}@zWHh&*xdi8k?Z>!XRjEzUj|d27`Oj`_8;lBg+XR}BNB&vqc?7Kf@lx6%^YjTK>Lv+r#LUD{nnvFCwndMh>5FGjI4lY
    zujP8n`#?aTQWC(~u?-J<0*qQ46p&}U`^2A)^DmJ(OswCSBxe>{3_$PQDMOdAx?
    zMBmLrM_RZzCkX%zX&=?`2@E;BfGl0^3kRl7tg+~^&*HHFK1ZM-ZE$67mO)~__)7=L
    zzVguJ$XEd}WA}aR(VcOP!ay5fLzmYUrs)8CC)~$b+~g!p>*NF{AP-6Y_H*-txkzMy
    z0~+Ih@=;B8Rf!37&^6i>^-Gh+SWu9uK?x$@9>3RRo<5*a0U+@;f4@0fiS}JR`eCbo
    zMNJWbP;Se>{l2LHHQkh0jU>tR!lgNBYMiFV`|tEmgpD<4QxYIE;F&AoLCoIopX?A$
    zjTouO`UEYcRm(Icl=cNIcPaiuSfr2W_t-CkO
    z3ui?M1s6$z{=?b6B@HUgxj_
    zUmsK4_p*8AEBbzDUcGue9ty|3B;2eduX!B-m!I~@15WrKEc10OLN1%Ht|aX)(g-B8
    w$|4Q?W8^lep~q-47pW^r4K32ZKSpl<2OR-(lkpeLm;e9(07*qoM6N<$g3d9~!2kdN
    
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/web_example.png b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/images/web_example.png
    deleted file mode 100644
    index aa7e0def703af2ee6892bba93bc54474a18c982c..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 4372
    zcmV+v5$o=WP)4Tx07wn3mUmne*%rs|OnRdwgd!#Mj&uS@uK^UKgN={`LJJ`zh=_{F;tEz&
    zM6gj-nu2QqWG#p&wnag)>w+u_>T|ImDk^URkGP-rdHdhH^SSqa=XcMXIrq%m&*uO@
    zu4fB{X|MtS=>oAR%-@R<6C20CJpoui1SDV%m~2j#&@(hN82n@Vco#s@#oHEAU;k+K
    zzZVp_yetj?P$;sTz|G>MBYYC+TRB3J7yy(HqU)~|3#H6Qm?lC3L^w~%Nwd6N$_cYv
    zJ7W_O=8f321Ar&9*`g!>NZp9e$mS#=en@{JY$f0(3jiR~5O(A6*<6Gp5H?Rw&yaFH
    z!o~@I^ON*9X0sDyKH2Of8PDzoc@lZCPjZ$pjlF8-=KndQr%8}}%``1!Bxj|D2O%>Z
    z$ypAE?HfMFd>%{s&1Q6=*eh&~lf^9QK4)~kBp`B*C8?2~bDWwHB(oPJEDD*^Ia%IF
    z?q{FP<$Euhvq@nGO279^3~UiX|6yL5zwEt2ai}a#
    zLE0kOUJ^xqG8P5R6<55DsjR%L+IFBm-hzj##<@?+oE8QF0Pr%
    zp`{ZBIji!32GoES&;!Q60*TH6xBw3%;y@4rB0wxy4mf}h(t!x91bJXRC;}y5JJ<~>
    zz(G(0>cLTP9JGNm-~zY|u7g`(06YSNUUpKqXKqQ~^~%4bZR9Y3KrU73zZ?Kts?N^bYz0qhK;jgEe78
    zcs|U8J>eiY0$v6u!I^L_TnKN4%i(JH2;2%^fUm;?@F4sOoHu%VzF2{)(Go}4Zy}?
    zQ?RSCo3Z<`E!a+MA9ff!fy3d{aAr7HTnLVh6XS|-dvQl_=W+eG5!@#{39pT}!TaIk
    z@B(}Rz6{@pKZozfzrars6bJ?cXF>>pOIStNMyMrp5N;Ai2vbBwq7l)R7(q-St|yig
    zn~9f*kBRR|B$6)4iL{uMOv)#fla7(DkcLQ~$x38XvNw4tSwh}Qt|NDnACTWuC=^4A
    z2PKXorfj7&P%cuQQa;I1RR$wcvRj5=rt#D6aLXoOytr()1uDDsTQSqwcs1i=eP{~(`t5m2|qjXVen2Mt6
    zQN5`g>IP~p^%8Z2hNT(NShN&c3GFDYmo~1fq->`grJSQ&seD#>kdC4o(pmI0`ZoG;
    z`d#`L6-^aS6`sl_m1dQGl}XiksvfF5)ne5a)dAHnY78}BwN$koYHeyy)Y0mu>WkG^
    zsvl6lr2cvyZJx_K&b;Dz$LBrNfHh1t!ZcQE)M(t$n9$VH^w$(>?$x}g`C5yv<)M|L
    zwM*-q)|fU`+f6%Jdzbck?UxK?h9@J9QO@XQjO%FV1n5X~s&smFrgV*TBXtXOTXdi3
    z5%rjQiF&*Ay7b2Nwe=V3=jk`;KQtg1Fb((ydklIECJl`YqYXD2wi%8ZsT#42a*djd
    z9vf4P-HkJitBvoNU`?1NsV4hPZkfWS_NIK(O4FNWu$hBdve|yKK68w@lexgW+Wejc
    z*}~Hz+oH*0$dYauY*}F0X8C5m{`|Q4JLdPy|88Y(m1b3I^~hSuI?%eny2JXNjj0XC
    zrqbq)EydQ)cAagz?OQuDJD%MEyZiQ3`-S!!?Yr#1IXF6q9GV@*9Q7UJ9rrojW73$R
    z%+1UzP8cUIr*%$eoIX1{IE$T+JOAZk;gago=rX#%XaR3Q?Sf%fU01eimFu7z!!6$J
    zklUcUjyv1E+Wnb_o(I?Cu*VBe6VDXSBc5-(th_{Cr@SV;oxRt1clw}w{C$djdVQ6A
    zBYi7;pZe+gCHXb^jr-gCulDZ@zyt&Z>yL(!>q&d!g|7~;VZ%$
    z!#_rNMQn?B6lokOiR_A!k6Iel5H%U?6I~iT7&AX+P0aOJ_1NUt_BdQzRNUdXi6y>E
    zb}t!OYQMB->D^^U%W{@oU9P@7ZTZ<1@+;UYPQ+v4qvIRnzp_Kv)$EA`R>Ho7agH}<
    z59bxvgS(46#&hMB@?IpmCYC0SCb=fG51895n!LNj5Ja4^$3b9d&rC`fcT3(8uS)h?zX#mfzevE(Po
    zP_|okW%j3)Q7cd6DCP)qZmcq0wQ1FhT)*63R-;#QR(Iv;*4_M)Ljh>(>+4r>_6Kz^b6M;KPRK4IPD=h53cUKl%UER3uj8*)dd$&1kJFp$QU9kP`4)-1PrHZAw
    zrNcWH?rhz~*j2pi!|oNkua?=B9o$3QBiS=p9$enOSAXyJyvUm6apA1*oktxixk
    zSRYp3-Qd{J(5TV4tqE?DG>siudgRtopQG)~7R^;H^p=ui;F#pt%U|Pvy?Z?9c-IN$
    ziRP0AC-xAEHs+hg1NP6wXu>Tu~e^_%5yb!T+WRGw8nyX_qDT;aLt
    z^SS3II)$CDFC<+U?po3H=wi&pJKc-BdoKlDx^mg?^2Hv{p7U2+ubjE+eD(A-=C!u#
    z4%b_6*xxwyyZ!H{dL4ROZ#v#=zvXnRqi;dqxqkQl3%7l4U%tb-bA4dZK;PZSyZ7%c
    zy*GHDdw=vn+JmM1gN!e44r`3O${LwP#FnD&zXXwVW@Mn*PIm561
    z%=+`|Na1tJ^RgG(FB(Q|M$e4-joo^=Z}gabL^7nSAT`9`yb3
    zbo%tPkS$`*)B-4EgcB11cvlAiB^ChcEdYpevo-IG1vFcyBP^}grCr+oi)ZWNnH2{B
    zYB~Xk$Oj-8nfD^IA=2eN0Fah%5gq`xwUu>5k+!TvTbmhx$ReaP`7}NKUK0RZ2LRth
    z)6-M?r>DQwBDD@u+jM5m*4k2Qg(CnQ@^*}{i@dxgCV%GnzYYHeaXt2Sf0s5T000IL
    zNkl5oEB
    zq5ae2hp@%EuG&TD5sP?$Y;{vLQbpXdR^yR)Rm3ClK9aakb|jW$W|DX;3_C*z-#qht
    z&-?nm^S(nwYB5p<2#Yw#@^kstDII|uf5(e-eIE;Ec}7l
    zfm&tltv_zP`umktwTXp^dw<@m{HxL`b0-8x+Reei!G3;zw3qf2+%3B&gHImzJ8ZkF
    zEd1l&9>?cK;|*KX!o}g~Vd=Iocfz618KpQmIjK-6(60gm15;B|-QC@R&(6-))zwiY
    z7!nd9kw{!!U77IC&Q7^po|2N%)6=8TXbv7cc;dtfN{7X1TDvI0`uh4WU%m(gg3!>=
    zQ>RY3xw%1v3CE>Rlb@a_o}lj?4Lo``^{$V*4~tQI`F+!UIkFs;M&;@3c_sczVN#(<
    zylbK>;g{fwaedMj`58N@(M!Bl@H4|aiNeD7Lwdt
    za_kr>DItA*q{G&6Yf`2bY`u|cKHv$3LT6`Z+})@rM@L6*Z*OX|NF<7kjC62tSX*18
    z#VMLe2OK9SCy*(e>D$CN+12ayZ~*D2wm<|%;S3W_(L`<{YT+Vu@o@H7T3=$axD7rU
    zV|H}*>#W!4jb|&)>J3{(1B4QEb#z5Kw~UH5{UMkp7&PguYgslhPATN-X>)Kf-A1~LSdp`js}OojzEB6;!g@yW@_
    zEcnZpFMWM|(L(X?a^S#$w6ruzht?q$yDF8cy1E*D7`cZI+N@YCh6pWQ+EseB=4w_{
    z7T%UtbSuH4;L?oJ_<(p?qX1d>xz)LK{dIGzb3%a-#R?Hww(-xu-E_H5fZ
    zGlri1z=MM&0eAh<(vmHBWo0F%jwRD7LTh(nVPScB*>W!vj@E>y14}*=Vi$jLZP5<#
    zbLTc18=36dg|p2w>aN7trxss-dwOoR?5{zr&2T)q%+1XW3=H5KlMge=jL&jPYuCfW
    zgLVrOjvF6EK)Zz&w2SZVWPJIt=};=k$Ox&gC!?d}!UeK#pG~_MNNn?rVT&Cw$`S8y
    z*nqKT_0hu)UCvSQsC?!Oo}tO-&t!3NhwjtQvmJ`^+xIjAds}CF>iYjyoX;8eQqSj%
    z&l&e3z&(%oI^%Q3y$Ep6W4_M#oN+G#-1C^PGd^eBivagL=Ie}mIr|4bv&bj!S{@nz
    O0000');
    -    } else if (change.removed) {
    -      ret.push('');
    -    }
    -
    -    ret.push(escapeHTML(change.value));
    -
    -    if (change.added) {
    -      ret.push('');
    -    } else if (change.removed) {
    -      ret.push('');
    -    }
    -  }
    -  return ret.join('');
    -}
    -
    -function escapeHTML(s) {
    -  var n = s;
    -  n = n.replace(/&/g, '&');
    -  n = n.replace(//g, '>');
    -  n = n.replace(/"/g, '"');
    -
    -  return n;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxtQkFBVCxDQUE2QixPQUE3QixFQUFzQztBQUMzQyxNQUFJLE1BQU0sRUFBTixDQUR1QztBQUUzQyxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxRQUFRLE1BQVIsRUFBZ0IsR0FBcEMsRUFBeUM7QUFDdkMsUUFBSSxTQUFTLFFBQVEsQ0FBUixDQUFULENBRG1DO0FBRXZDLFFBQUksT0FBTyxLQUFQLEVBQWM7QUFDaEIsVUFBSSxJQUFKLENBQVMsT0FBVCxFQURnQjtLQUFsQixNQUVPLElBQUksT0FBTyxPQUFQLEVBQWdCO0FBQ3pCLFVBQUksSUFBSixDQUFTLE9BQVQsRUFEeUI7S0FBcEI7O0FBSVAsUUFBSSxJQUFKLENBQVMsV0FBVyxPQUFPLEtBQVAsQ0FBcEIsRUFSdUM7O0FBVXZDLFFBQUksT0FBTyxLQUFQLEVBQWM7QUFDaEIsVUFBSSxJQUFKLENBQVMsUUFBVCxFQURnQjtLQUFsQixNQUVPLElBQUksT0FBTyxPQUFQLEVBQWdCO0FBQ3pCLFVBQUksSUFBSixDQUFTLFFBQVQsRUFEeUI7S0FBcEI7R0FaVDtBQWdCQSxTQUFPLElBQUksSUFBSixDQUFTLEVBQVQsQ0FBUCxDQWxCMkM7Q0FBdEM7O0FBcUJQLFNBQVMsVUFBVCxDQUFvQixDQUFwQixFQUF1QjtBQUNyQixNQUFJLElBQUksQ0FBSixDQURpQjtBQUVyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsT0FBaEIsQ0FBSixDQUZxQjtBQUdyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsTUFBaEIsQ0FBSixDQUhxQjtBQUlyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsTUFBaEIsQ0FBSixDQUpxQjtBQUtyQixNQUFJLEVBQUUsT0FBRixDQUFVLElBQVYsRUFBZ0IsUUFBaEIsQ0FBSixDQUxxQjs7QUFPckIsU0FBTyxDQUFQLENBUHFCO0NBQXZCIiwiZmlsZSI6InhtbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0Q2hhbmdlc1RvWE1MKGNoYW5nZXMpIHtcbiAgbGV0IHJldCA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICByZXQucHVzaCgnPGlucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPGRlbD4nKTtcbiAgICB9XG5cbiAgICByZXQucHVzaChlc2NhcGVIVE1MKGNoYW5nZS52YWx1ZSkpO1xuXG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzwvaW5zPicpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2RlbD4nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldC5qb2luKCcnKTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlSFRNTChzKSB7XG4gIGxldCBuID0gcztcbiAgbiA9IG4ucmVwbGFjZSgvJi9nLCAnJmFtcDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPC9nLCAnJmx0OycpO1xuICBuID0gbi5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcblxuICByZXR1cm4gbjtcbn1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/base.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/base.js
    deleted file mode 100644
    index 703e0b5c..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/base.js
    +++ /dev/null
    @@ -1,227 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.default = /*istanbul ignore end*/Diff;
    -function Diff() {}
    -
    -Diff.prototype = { /*istanbul ignore start*/
    -  /*istanbul ignore end*/diff: function diff(oldString, newString) {
    -    /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
    -
    -    var callback = options.callback;
    -    if (typeof options === 'function') {
    -      callback = options;
    -      options = {};
    -    }
    -    this.options = options;
    -
    -    var self = this;
    -
    -    function done(value) {
    -      if (callback) {
    -        setTimeout(function () {
    -          callback(undefined, value);
    -        }, 0);
    -        return true;
    -      } else {
    -        return value;
    -      }
    -    }
    -
    -    // Allow subclasses to massage the input prior to running
    -    oldString = this.castInput(oldString);
    -    newString = this.castInput(newString);
    -
    -    oldString = this.removeEmpty(this.tokenize(oldString));
    -    newString = this.removeEmpty(this.tokenize(newString));
    -
    -    var newLen = newString.length,
    -        oldLen = oldString.length;
    -    var editLength = 1;
    -    var maxEditLength = newLen + oldLen;
    -    var bestPath = [{ newPos: -1, components: [] }];
    -
    -    // Seed editLength = 0, i.e. the content starts with the same values
    -    var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
    -    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
    -      // Identity per the equality and tokenizer
    -      return done([{ value: newString.join(''), count: newString.length }]);
    -    }
    -
    -    // Main worker method. checks all permutations of a given edit length for acceptance.
    -    function execEditLength() {
    -      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
    -        var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -        var addPath = bestPath[diagonalPath - 1],
    -            removePath = bestPath[diagonalPath + 1],
    -            _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
    -        if (addPath) {
    -          // No one else is going to attempt to use this value, clear it
    -          bestPath[diagonalPath - 1] = undefined;
    -        }
    -
    -        var canAdd = addPath && addPath.newPos + 1 < newLen,
    -            canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
    -        if (!canAdd && !canRemove) {
    -          // If this path is a terminal then prune
    -          bestPath[diagonalPath] = undefined;
    -          continue;
    -        }
    -
    -        // Select the diagonal that we want to branch from. We select the prior
    -        // path whose position in the new string is the farthest from the origin
    -        // and does not pass the bounds of the diff graph
    -        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
    -          basePath = clonePath(removePath);
    -          self.pushComponent(basePath.components, undefined, true);
    -        } else {
    -          basePath = addPath; // No need to clone, we've pulled it from the list
    -          basePath.newPos++;
    -          self.pushComponent(basePath.components, true, undefined);
    -        }
    -
    -        _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
    -
    -        // If we have hit the end of both strings, then we are done
    -        if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
    -          return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
    -        } else {
    -          // Otherwise track this path as a potential candidate and continue.
    -          bestPath[diagonalPath] = basePath;
    -        }
    -      }
    -
    -      editLength++;
    -    }
    -
    -    // Performs the length of edit iteration. Is a bit fugly as this has to support the
    -    // sync and async mode which is never fun. Loops over execEditLength until a value
    -    // is produced.
    -    if (callback) {
    -      (function exec() {
    -        setTimeout(function () {
    -          // This should not happen, but we want to be safe.
    -          /* istanbul ignore next */
    -          if (editLength > maxEditLength) {
    -            return callback();
    -          }
    -
    -          if (!execEditLength()) {
    -            exec();
    -          }
    -        }, 0);
    -      })();
    -    } else {
    -      while (editLength <= maxEditLength) {
    -        var ret = execEditLength();
    -        if (ret) {
    -          return ret;
    -        }
    -      }
    -    }
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {
    -    var last = components[components.length - 1];
    -    if (last && last.added === added && last.removed === removed) {
    -      // We need to clone here as the component clone operation is just
    -      // as shallow array clone
    -      components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
    -    } else {
    -      components.push({ count: 1, added: added, removed: removed });
    -    }
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
    -    var newLen = newString.length,
    -        oldLen = oldString.length,
    -        newPos = basePath.newPos,
    -        oldPos = newPos - diagonalPath,
    -        commonCount = 0;
    -    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
    -      newPos++;
    -      oldPos++;
    -      commonCount++;
    -    }
    -
    -    if (commonCount) {
    -      basePath.components.push({ count: commonCount });
    -    }
    -
    -    basePath.newPos = newPos;
    -    return oldPos;
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {
    -    return left === right;
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {
    -    var ret = [];
    -    for (var i = 0; i < array.length; i++) {
    -      if (array[i]) {
    -        ret.push(array[i]);
    -      }
    -    }
    -    return ret;
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {
    -    return value;
    -  },
    -  /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {
    -    return value.split('');
    -  }
    -};
    -
    -function buildValues(diff, components, newString, oldString, useLongestToken) {
    -  var componentPos = 0,
    -      componentLen = components.length,
    -      newPos = 0,
    -      oldPos = 0;
    -
    -  for (; componentPos < componentLen; componentPos++) {
    -    var component = components[componentPos];
    -    if (!component.removed) {
    -      if (!component.added && useLongestToken) {
    -        var value = newString.slice(newPos, newPos + component.count);
    -        value = value.map(function (value, i) {
    -          var oldValue = oldString[oldPos + i];
    -          return oldValue.length > value.length ? oldValue : value;
    -        });
    -
    -        component.value = value.join('');
    -      } else {
    -        component.value = newString.slice(newPos, newPos + component.count).join('');
    -      }
    -      newPos += component.count;
    -
    -      // Common case
    -      if (!component.added) {
    -        oldPos += component.count;
    -      }
    -    } else {
    -      component.value = oldString.slice(oldPos, oldPos + component.count).join('');
    -      oldPos += component.count;
    -
    -      // Reverse add and remove so removes are output first to match common convention
    -      // The diffing algorithm is tied to add then remove output and this is the simplest
    -      // route to get the desired output with minimal overhead.
    -      if (componentPos && components[componentPos - 1].added) {
    -        var tmp = components[componentPos - 1];
    -        components[componentPos - 1] = components[componentPos];
    -        components[componentPos] = tmp;
    -      }
    -    }
    -  }
    -
    -  // Special case handle for when one terminal is ignored. For this case we merge the
    -  // terminal into the prior string and drop the change.
    -  var lastComponent = components[componentLen - 1];
    -  if (componentLen > 1 && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
    -    components[componentLen - 2].value += lastComponent.value;
    -    components.pop();
    -  }
    -
    -  return components;
    -}
    -
    -function clonePath(path) {
    -  return { newPos: path.newPos, components: path.components.slice(0) };
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O3lDQUF3QjtBQUFULFNBQVMsSUFBVCxHQUFnQixFQUFoQjs7QUFFZixLQUFLLFNBQUwsR0FBaUI7eUJBQ2Ysb0JBQUssV0FBVyxXQUF5Qjt3REFBZCxnRUFBVSxrQkFBSTs7QUFDdkMsUUFBSSxXQUFXLFFBQVEsUUFBUixDQUR3QjtBQUV2QyxRQUFJLE9BQU8sT0FBUCxLQUFtQixVQUFuQixFQUErQjtBQUNqQyxpQkFBVyxPQUFYLENBRGlDO0FBRWpDLGdCQUFVLEVBQVYsQ0FGaUM7S0FBbkM7QUFJQSxTQUFLLE9BQUwsR0FBZSxPQUFmLENBTnVDOztBQVF2QyxRQUFJLE9BQU8sSUFBUCxDQVJtQzs7QUFVdkMsYUFBUyxJQUFULENBQWMsS0FBZCxFQUFxQjtBQUNuQixVQUFJLFFBQUosRUFBYztBQUNaLG1CQUFXLFlBQVc7QUFBRSxtQkFBUyxTQUFULEVBQW9CLEtBQXBCLEVBQUY7U0FBWCxFQUE0QyxDQUF2RCxFQURZO0FBRVosZUFBTyxJQUFQLENBRlk7T0FBZCxNQUdPO0FBQ0wsZUFBTyxLQUFQLENBREs7T0FIUDtLQURGOzs7QUFWdUMsYUFvQnZDLEdBQVksS0FBSyxTQUFMLENBQWUsU0FBZixDQUFaLENBcEJ1QztBQXFCdkMsZ0JBQVksS0FBSyxTQUFMLENBQWUsU0FBZixDQUFaLENBckJ1Qzs7QUF1QnZDLGdCQUFZLEtBQUssV0FBTCxDQUFpQixLQUFLLFFBQUwsQ0FBYyxTQUFkLENBQWpCLENBQVosQ0F2QnVDO0FBd0J2QyxnQkFBWSxLQUFLLFdBQUwsQ0FBaUIsS0FBSyxRQUFMLENBQWMsU0FBZCxDQUFqQixDQUFaLENBeEJ1Qzs7QUEwQnZDLFFBQUksU0FBUyxVQUFVLE1BQVY7UUFBa0IsU0FBUyxVQUFVLE1BQVYsQ0ExQkQ7QUEyQnZDLFFBQUksYUFBYSxDQUFiLENBM0JtQztBQTRCdkMsUUFBSSxnQkFBZ0IsU0FBUyxNQUFULENBNUJtQjtBQTZCdkMsUUFBSSxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBRCxFQUFJLFlBQVksRUFBWixFQUFmLENBQVg7OztBQTdCbUMsUUFnQ25DLFNBQVMsS0FBSyxhQUFMLENBQW1CLFNBQVMsQ0FBVCxDQUFuQixFQUFnQyxTQUFoQyxFQUEyQyxTQUEzQyxFQUFzRCxDQUF0RCxDQUFULENBaENtQztBQWlDdkMsUUFBSSxTQUFTLENBQVQsRUFBWSxNQUFaLEdBQXFCLENBQXJCLElBQTBCLE1BQTFCLElBQW9DLFNBQVMsQ0FBVCxJQUFjLE1BQWQsRUFBc0I7O0FBRTVELGFBQU8sS0FBSyxDQUFDLEVBQUMsT0FBTyxVQUFVLElBQVYsQ0FBZSxFQUFmLENBQVAsRUFBMkIsT0FBTyxVQUFVLE1BQVYsRUFBcEMsQ0FBTCxDQUFQLENBRjREO0tBQTlEOzs7QUFqQ3VDLGFBdUM5QixjQUFULEdBQTBCO0FBQ3hCLFdBQUssSUFBSSxlQUFlLENBQUMsQ0FBRCxHQUFLLFVBQUwsRUFBaUIsZ0JBQWdCLFVBQWhCLEVBQTRCLGdCQUFnQixDQUFoQixFQUFtQjtBQUN0RixZQUFJLGtFQUFKLENBRHNGO0FBRXRGLFlBQUksVUFBVSxTQUFTLGVBQWUsQ0FBZixDQUFuQjtZQUNBLGFBQWEsU0FBUyxlQUFlLENBQWYsQ0FBdEI7WUFDQSxVQUFTLENBQUMsYUFBYSxXQUFXLE1BQVgsR0FBb0IsQ0FBakMsQ0FBRCxHQUF1QyxZQUF2QyxDQUp5RTtBQUt0RixZQUFJLE9BQUosRUFBYTs7QUFFWCxtQkFBUyxlQUFlLENBQWYsQ0FBVCxHQUE2QixTQUE3QixDQUZXO1NBQWI7O0FBS0EsWUFBSSxTQUFTLFdBQVcsUUFBUSxNQUFSLEdBQWlCLENBQWpCLEdBQXFCLE1BQXJCO1lBQ3BCLFlBQVksY0FBYyxLQUFLLE9BQUwsSUFBZSxVQUFTLE1BQVQsQ0FYeUM7QUFZdEYsWUFBSSxDQUFDLE1BQUQsSUFBVyxDQUFDLFNBQUQsRUFBWTs7QUFFekIsbUJBQVMsWUFBVCxJQUF5QixTQUF6QixDQUZ5QjtBQUd6QixtQkFIeUI7U0FBM0I7Ozs7O0FBWnNGLFlBcUJsRixDQUFDLE1BQUQsSUFBWSxhQUFhLFFBQVEsTUFBUixHQUFpQixXQUFXLE1BQVgsRUFBb0I7QUFDaEUscUJBQVcsVUFBVSxVQUFWLENBQVgsQ0FEZ0U7QUFFaEUsZUFBSyxhQUFMLENBQW1CLFNBQVMsVUFBVCxFQUFxQixTQUF4QyxFQUFtRCxJQUFuRCxFQUZnRTtTQUFsRSxNQUdPO0FBQ0wscUJBQVcsT0FBWDtBQURLLGtCQUVMLENBQVMsTUFBVCxHQUZLO0FBR0wsZUFBSyxhQUFMLENBQW1CLFNBQVMsVUFBVCxFQUFxQixJQUF4QyxFQUE4QyxTQUE5QyxFQUhLO1NBSFA7O0FBU0Esa0JBQVMsS0FBSyxhQUFMLENBQW1CLFFBQW5CLEVBQTZCLFNBQTdCLEVBQXdDLFNBQXhDLEVBQW1ELFlBQW5ELENBQVQ7OztBQTlCc0YsWUFpQ2xGLFNBQVMsTUFBVCxHQUFrQixDQUFsQixJQUF1QixNQUF2QixJQUFpQyxVQUFTLENBQVQsSUFBYyxNQUFkLEVBQXNCO0FBQ3pELGlCQUFPLEtBQUssWUFBWSxJQUFaLEVBQWtCLFNBQVMsVUFBVCxFQUFxQixTQUF2QyxFQUFrRCxTQUFsRCxFQUE2RCxLQUFLLGVBQUwsQ0FBbEUsQ0FBUCxDQUR5RDtTQUEzRCxNQUVPOztBQUVMLG1CQUFTLFlBQVQsSUFBeUIsUUFBekIsQ0FGSztTQUZQO09BakNGOztBQXlDQSxtQkExQ3dCO0tBQTFCOzs7OztBQXZDdUMsUUF1Rm5DLFFBQUosRUFBYztBQUNaLE9BQUMsU0FBUyxJQUFULEdBQWdCO0FBQ2YsbUJBQVcsWUFBVzs7O0FBR3BCLGNBQUksYUFBYSxhQUFiLEVBQTRCO0FBQzlCLG1CQUFPLFVBQVAsQ0FEOEI7V0FBaEM7O0FBSUEsY0FBSSxDQUFDLGdCQUFELEVBQW1CO0FBQ3JCLG1CQURxQjtXQUF2QjtTQVBTLEVBVVIsQ0FWSCxFQURlO09BQWhCLEdBQUQsQ0FEWTtLQUFkLE1BY087QUFDTCxhQUFPLGNBQWMsYUFBZCxFQUE2QjtBQUNsQyxZQUFJLE1BQU0sZ0JBQU4sQ0FEOEI7QUFFbEMsWUFBSSxHQUFKLEVBQVM7QUFDUCxpQkFBTyxHQUFQLENBRE87U0FBVDtPQUZGO0tBZkY7R0F4RmE7bURBZ0hmLHNDQUFjLFlBQVksT0FBTyxTQUFTO0FBQ3hDLFFBQUksT0FBTyxXQUFXLFdBQVcsTUFBWCxHQUFvQixDQUFwQixDQUFsQixDQURvQztBQUV4QyxRQUFJLFFBQVEsS0FBSyxLQUFMLEtBQWUsS0FBZixJQUF3QixLQUFLLE9BQUwsS0FBaUIsT0FBakIsRUFBMEI7OztBQUc1RCxpQkFBVyxXQUFXLE1BQVgsR0FBb0IsQ0FBcEIsQ0FBWCxHQUFvQyxFQUFDLE9BQU8sS0FBSyxLQUFMLEdBQWEsQ0FBYixFQUFnQixPQUFPLEtBQVAsRUFBYyxTQUFTLE9BQVQsRUFBMUUsQ0FINEQ7S0FBOUQsTUFJTztBQUNMLGlCQUFXLElBQVgsQ0FBZ0IsRUFBQyxPQUFPLENBQVAsRUFBVSxPQUFPLEtBQVAsRUFBYyxTQUFTLE9BQVQsRUFBekMsRUFESztLQUpQO0dBbEhhO21EQTBIZixzQ0FBYyxVQUFVLFdBQVcsV0FBVyxjQUFjO0FBQzFELFFBQUksU0FBUyxVQUFVLE1BQVY7UUFDVCxTQUFTLFVBQVUsTUFBVjtRQUNULFNBQVMsU0FBUyxNQUFUO1FBQ1QsU0FBUyxTQUFTLFlBQVQ7UUFFVCxjQUFjLENBQWQsQ0FOc0Q7QUFPMUQsV0FBTyxTQUFTLENBQVQsR0FBYSxNQUFiLElBQXVCLFNBQVMsQ0FBVCxHQUFhLE1BQWIsSUFBdUIsS0FBSyxNQUFMLENBQVksVUFBVSxTQUFTLENBQVQsQ0FBdEIsRUFBbUMsVUFBVSxTQUFTLENBQVQsQ0FBN0MsQ0FBOUMsRUFBeUc7QUFDOUcsZUFEOEc7QUFFOUcsZUFGOEc7QUFHOUcsb0JBSDhHO0tBQWhIOztBQU1BLFFBQUksV0FBSixFQUFpQjtBQUNmLGVBQVMsVUFBVCxDQUFvQixJQUFwQixDQUF5QixFQUFDLE9BQU8sV0FBUCxFQUExQixFQURlO0tBQWpCOztBQUlBLGFBQVMsTUFBVCxHQUFrQixNQUFsQixDQWpCMEQ7QUFrQjFELFdBQU8sTUFBUCxDQWxCMEQ7R0ExSDdDO21EQStJZix3QkFBTyxNQUFNLE9BQU87QUFDbEIsV0FBTyxTQUFTLEtBQVQsQ0FEVztHQS9JTDttREFrSmYsa0NBQVksT0FBTztBQUNqQixRQUFJLE1BQU0sRUFBTixDQURhO0FBRWpCLFNBQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLE1BQU0sTUFBTixFQUFjLEdBQWxDLEVBQXVDO0FBQ3JDLFVBQUksTUFBTSxDQUFOLENBQUosRUFBYztBQUNaLFlBQUksSUFBSixDQUFTLE1BQU0sQ0FBTixDQUFULEVBRFk7T0FBZDtLQURGO0FBS0EsV0FBTyxHQUFQLENBUGlCO0dBbEpKO21EQTJKZiw4QkFBVSxPQUFPO0FBQ2YsV0FBTyxLQUFQLENBRGU7R0EzSkY7bURBOEpmLDRCQUFTLE9BQU87QUFDZCxXQUFPLE1BQU0sS0FBTixDQUFZLEVBQVosQ0FBUCxDQURjO0dBOUpEO0NBQWpCOztBQW1LQSxTQUFTLFdBQVQsQ0FBcUIsSUFBckIsRUFBMkIsVUFBM0IsRUFBdUMsU0FBdkMsRUFBa0QsU0FBbEQsRUFBNkQsZUFBN0QsRUFBOEU7QUFDNUUsTUFBSSxlQUFlLENBQWY7TUFDQSxlQUFlLFdBQVcsTUFBWDtNQUNmLFNBQVMsQ0FBVDtNQUNBLFNBQVMsQ0FBVCxDQUp3RTs7QUFNNUUsU0FBTyxlQUFlLFlBQWYsRUFBNkIsY0FBcEMsRUFBb0Q7QUFDbEQsUUFBSSxZQUFZLFdBQVcsWUFBWCxDQUFaLENBRDhDO0FBRWxELFFBQUksQ0FBQyxVQUFVLE9BQVYsRUFBbUI7QUFDdEIsVUFBSSxDQUFDLFVBQVUsS0FBVixJQUFtQixlQUFwQixFQUFxQztBQUN2QyxZQUFJLFFBQVEsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQXpDLENBRG1DO0FBRXZDLGdCQUFRLE1BQU0sR0FBTixDQUFVLFVBQVMsS0FBVCxFQUFnQixDQUFoQixFQUFtQjtBQUNuQyxjQUFJLFdBQVcsVUFBVSxTQUFTLENBQVQsQ0FBckIsQ0FEK0I7QUFFbkMsaUJBQU8sU0FBUyxNQUFULEdBQWtCLE1BQU0sTUFBTixHQUFlLFFBQWpDLEdBQTRDLEtBQTVDLENBRjRCO1NBQW5CLENBQWxCLENBRnVDOztBQU92QyxrQkFBVSxLQUFWLEdBQWtCLE1BQU0sSUFBTixDQUFXLEVBQVgsQ0FBbEIsQ0FQdUM7T0FBekMsTUFRTztBQUNMLGtCQUFVLEtBQVYsR0FBa0IsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQWpDLENBQWtELElBQWxELENBQXVELEVBQXZELENBQWxCLENBREs7T0FSUDtBQVdBLGdCQUFVLFVBQVUsS0FBVjs7O0FBWlksVUFlbEIsQ0FBQyxVQUFVLEtBQVYsRUFBaUI7QUFDcEIsa0JBQVUsVUFBVSxLQUFWLENBRFU7T0FBdEI7S0FmRixNQWtCTztBQUNMLGdCQUFVLEtBQVYsR0FBa0IsVUFBVSxLQUFWLENBQWdCLE1BQWhCLEVBQXdCLFNBQVMsVUFBVSxLQUFWLENBQWpDLENBQWtELElBQWxELENBQXVELEVBQXZELENBQWxCLENBREs7QUFFTCxnQkFBVSxVQUFVLEtBQVY7Ozs7O0FBRkwsVUFPRCxnQkFBZ0IsV0FBVyxlQUFlLENBQWYsQ0FBWCxDQUE2QixLQUE3QixFQUFvQztBQUN0RCxZQUFJLE1BQU0sV0FBVyxlQUFlLENBQWYsQ0FBakIsQ0FEa0Q7QUFFdEQsbUJBQVcsZUFBZSxDQUFmLENBQVgsR0FBK0IsV0FBVyxZQUFYLENBQS9CLENBRnNEO0FBR3RELG1CQUFXLFlBQVgsSUFBMkIsR0FBM0IsQ0FIc0Q7T0FBeEQ7S0F6QkY7R0FGRjs7OztBQU40RSxNQTJDeEUsZ0JBQWdCLFdBQVcsZUFBZSxDQUFmLENBQTNCLENBM0N3RTtBQTRDNUUsTUFBSSxlQUFlLENBQWYsS0FDSSxjQUFjLEtBQWQsSUFBdUIsY0FBYyxPQUFkLENBRDNCLElBRUcsS0FBSyxNQUFMLENBQVksRUFBWixFQUFnQixjQUFjLEtBQWQsQ0FGbkIsRUFFeUM7QUFDM0MsZUFBVyxlQUFlLENBQWYsQ0FBWCxDQUE2QixLQUE3QixJQUFzQyxjQUFjLEtBQWQsQ0FESztBQUUzQyxlQUFXLEdBQVgsR0FGMkM7R0FGN0M7O0FBT0EsU0FBTyxVQUFQLENBbkQ0RTtDQUE5RTs7QUFzREEsU0FBUyxTQUFULENBQW1CLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRSxRQUFRLEtBQUssTUFBTCxFQUFhLFlBQVksS0FBSyxVQUFMLENBQWdCLEtBQWhCLENBQXNCLENBQXRCLENBQVosRUFBOUIsQ0FEdUI7Q0FBekIiLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgbGV0IGJlc3RQYXRoID0gW3sgbmV3UG9zOiAtMSwgY29tcG9uZW50czogW10gfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBvbGRQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ubmV3UG9zICsgMSA+PSBuZXdMZW4gJiYgb2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogbmV3U3RyaW5nLmpvaW4oJycpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSB2YWx1ZS5qb2luKCcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkuam9pbignJyk7XG4gICAgICB9XG4gICAgICBuZXdQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBDb21tb24gY2FzZVxuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQpIHtcbiAgICAgICAgb2xkUG9zICs9IGNvbXBvbmVudC5jb3VudDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50LnZhbHVlID0gb2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KS5qb2luKCcnKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkLiBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZVxuICAvLyB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgbGV0IGxhc3RDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/character.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/character.js
    deleted file mode 100644
    index dfe8c194..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/character.js
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.characterDiff = undefined;
    -exports. /*istanbul ignore end*/diffChars = diffChars;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -function diffChars(oldStr, newStr, callback) {
    -  return characterDiff.diff(oldStr, newStr, callback);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O2dDQUdnQjs7QUFIaEI7Ozs7Ozs7dUJBRU8sSUFBTSx5RkFBZ0IscUVBQWhCO0FBQ04sU0FBUyxTQUFULENBQW1CLE1BQW5CLEVBQTJCLE1BQTNCLEVBQW1DLFFBQW5DLEVBQTZDO0FBQUUsU0FBTyxjQUFjLElBQWQsQ0FBbUIsTUFBbkIsRUFBMkIsTUFBM0IsRUFBbUMsUUFBbkMsQ0FBUCxDQUFGO0NBQTdDIiwiZmlsZSI6ImNoYXJhY3Rlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjaGFyYWN0ZXJEaWZmID0gbmV3IERpZmYoKTtcbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ2hhcnMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBjaGFyYWN0ZXJEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuIl19
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/css.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/css.js
    deleted file mode 100644
    index b4146cfb..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/css.js
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.cssDiff = undefined;
    -exports. /*istanbul ignore end*/diffCss = diffCss;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -cssDiff.tokenize = function (value) {
    -  return value.split(/([{}:;,]|\s+)/);
    -};
    -
    -function diffCss(oldStr, newStr, callback) {
    -  return cssDiff.diff(oldStr, newStr, callback);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O2dDQU9nQjs7QUFQaEI7Ozs7Ozs7dUJBRU8sSUFBTSw2RUFBVSxxRUFBVjtBQUNiLFFBQVEsUUFBUixHQUFtQixVQUFTLEtBQVQsRUFBZ0I7QUFDakMsU0FBTyxNQUFNLEtBQU4sQ0FBWSxlQUFaLENBQVAsQ0FEaUM7Q0FBaEI7O0FBSVosU0FBUyxPQUFULENBQWlCLE1BQWpCLEVBQXlCLE1BQXpCLEVBQWlDLFFBQWpDLEVBQTJDO0FBQUUsU0FBTyxRQUFRLElBQVIsQ0FBYSxNQUFiLEVBQXFCLE1BQXJCLEVBQTZCLFFBQTdCLENBQVAsQ0FBRjtDQUEzQyIsImZpbGUiOiJjc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgY29uc3QgY3NzRGlmZiA9IG5ldyBEaWZmKCk7XG5jc3NEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oW3t9OjssXXxcXHMrKS8pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDc3Mob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBjc3NEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKTsgfVxuIl19
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/json.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/json.js
    deleted file mode 100644
    index 00ec825b..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/json.js
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.jsonDiff = undefined;
    -
    -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
    -
    -exports. /*istanbul ignore end*/diffJson = diffJson;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -/*istanbul ignore end*/
    -var /*istanbul ignore start*/_line = require('./line') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/
    -
    -var objectPrototypeToString = Object.prototype.toString;
    -
    -var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -// Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
    -// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
    -jsonDiff.useLongestToken = true;
    -
    -jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff. /*istanbul ignore end*/tokenize;
    -jsonDiff.castInput = function (value) {
    -  return typeof value === 'string' ? value : JSON.stringify(canonicalize(value), undefined, '  ');
    -};
    -jsonDiff.equals = function (left, right) {
    -  return (/*istanbul ignore start*/_base2.default. /*istanbul ignore end*/prototype.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
    -  );
    -};
    -
    -function diffJson(oldObj, newObj, callback) {
    -  return jsonDiff.diff(oldObj, newObj, callback);
    -}
    -
    -// This function handles the presence of circular references by bailing out when encountering an
    -// object that is already on the "stack" of items being processed.
    -function canonicalize(obj, stack, replacementStack) {
    -  stack = stack || [];
    -  replacementStack = replacementStack || [];
    -
    -  var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -  for (i = 0; i < stack.length; i += 1) {
    -    if (stack[i] === obj) {
    -      return replacementStack[i];
    -    }
    -  }
    -
    -  var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -  if ('[object Array]' === objectPrototypeToString.call(obj)) {
    -    stack.push(obj);
    -    canonicalizedObj = new Array(obj.length);
    -    replacementStack.push(canonicalizedObj);
    -    for (i = 0; i < obj.length; i += 1) {
    -      canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
    -    }
    -    stack.pop();
    -    replacementStack.pop();
    -    return canonicalizedObj;
    -  }
    -
    -  if (obj && obj.toJSON) {
    -    obj = obj.toJSON();
    -  }
    -
    -  if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
    -    stack.push(obj);
    -    canonicalizedObj = {};
    -    replacementStack.push(canonicalizedObj);
    -    var sortedKeys = [],
    -        key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -    for (key in obj) {
    -      /* istanbul ignore else */
    -      if (obj.hasOwnProperty(key)) {
    -        sortedKeys.push(key);
    -      }
    -    }
    -    sortedKeys.sort();
    -    for (i = 0; i < sortedKeys.length; i += 1) {
    -      key = sortedKeys[i];
    -      canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
    -    }
    -    stack.pop();
    -    replacementStack.pop();
    -  } else {
    -    canonicalizedObj = obj;
    -  }
    -  return canonicalizedObj;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FtQmdCO3lEQUtBOztBQXhCaEI7Ozs7OztBQUNBOzs7Ozs7O0FBRUEsSUFBTSwwQkFBMEIsT0FBTyxTQUFQLENBQWlCLFFBQWpCOztBQUd6QixJQUFNLCtFQUFXLHFFQUFYOzs7QUFHYixTQUFTLGVBQVQsR0FBMkIsSUFBM0I7O0FBRUEsU0FBUyxRQUFULEdBQW9CLGdFQUFTLFFBQVQ7QUFDcEIsU0FBUyxTQUFULEdBQXFCLFVBQVMsS0FBVCxFQUFnQjtBQUNuQyxTQUFPLE9BQU8sS0FBUCxLQUFpQixRQUFqQixHQUE0QixLQUE1QixHQUFvQyxLQUFLLFNBQUwsQ0FBZSxhQUFhLEtBQWIsQ0FBZixFQUFvQyxTQUFwQyxFQUErQyxJQUEvQyxDQUFwQyxDQUQ0QjtDQUFoQjtBQUdyQixTQUFTLE1BQVQsR0FBa0IsVUFBUyxJQUFULEVBQWUsS0FBZixFQUFzQjtBQUN0QyxTQUFPLGlFQUFLLFNBQUwsQ0FBZSxNQUFmLENBQXNCLEtBQUssT0FBTCxDQUFhLFlBQWIsRUFBMkIsSUFBM0IsQ0FBdEIsRUFBd0QsTUFBTSxPQUFOLENBQWMsWUFBZCxFQUE0QixJQUE1QixDQUF4RCxDQUFQO0lBRHNDO0NBQXRCOztBQUlYLFNBQVMsUUFBVCxDQUFrQixNQUFsQixFQUEwQixNQUExQixFQUFrQyxRQUFsQyxFQUE0QztBQUFFLFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBQUY7Q0FBNUM7Ozs7QUFLQSxTQUFTLFlBQVQsQ0FBc0IsR0FBdEIsRUFBMkIsS0FBM0IsRUFBa0MsZ0JBQWxDLEVBQW9EO0FBQ3pELFVBQVEsU0FBUyxFQUFULENBRGlEO0FBRXpELHFCQUFtQixvQkFBb0IsRUFBcEIsQ0FGc0M7O0FBSXpELE1BQUksMkRBQUosQ0FKeUQ7O0FBTXpELE9BQUssSUFBSSxDQUFKLEVBQU8sSUFBSSxNQUFNLE1BQU4sRUFBYyxLQUFLLENBQUwsRUFBUTtBQUNwQyxRQUFJLE1BQU0sQ0FBTixNQUFhLEdBQWIsRUFBa0I7QUFDcEIsYUFBTyxpQkFBaUIsQ0FBakIsQ0FBUCxDQURvQjtLQUF0QjtHQURGOztBQU1BLE1BQUksMEVBQUosQ0FaeUQ7O0FBY3pELE1BQUkscUJBQXFCLHdCQUF3QixJQUF4QixDQUE2QixHQUE3QixDQUFyQixFQUF3RDtBQUMxRCxVQUFNLElBQU4sQ0FBVyxHQUFYLEVBRDBEO0FBRTFELHVCQUFtQixJQUFJLEtBQUosQ0FBVSxJQUFJLE1BQUosQ0FBN0IsQ0FGMEQ7QUFHMUQscUJBQWlCLElBQWpCLENBQXNCLGdCQUF0QixFQUgwRDtBQUkxRCxTQUFLLElBQUksQ0FBSixFQUFPLElBQUksSUFBSSxNQUFKLEVBQVksS0FBSyxDQUFMLEVBQVE7QUFDbEMsdUJBQWlCLENBQWpCLElBQXNCLGFBQWEsSUFBSSxDQUFKLENBQWIsRUFBcUIsS0FBckIsRUFBNEIsZ0JBQTVCLENBQXRCLENBRGtDO0tBQXBDO0FBR0EsVUFBTSxHQUFOLEdBUDBEO0FBUTFELHFCQUFpQixHQUFqQixHQVIwRDtBQVMxRCxXQUFPLGdCQUFQLENBVDBEO0dBQTVEOztBQVlBLE1BQUksT0FBTyxJQUFJLE1BQUosRUFBWTtBQUNyQixVQUFNLElBQUksTUFBSixFQUFOLENBRHFCO0dBQXZCOztBQUlBLE1BQUkseURBQU8saURBQVAsS0FBZSxRQUFmLElBQTJCLFFBQVEsSUFBUixFQUFjO0FBQzNDLFVBQU0sSUFBTixDQUFXLEdBQVgsRUFEMkM7QUFFM0MsdUJBQW1CLEVBQW5CLENBRjJDO0FBRzNDLHFCQUFpQixJQUFqQixDQUFzQixnQkFBdEIsRUFIMkM7QUFJM0MsUUFBSSxhQUFhLEVBQWI7UUFDQSw2REFESixDQUoyQztBQU0zQyxTQUFLLEdBQUwsSUFBWSxHQUFaLEVBQWlCOztBQUVmLFVBQUksSUFBSSxjQUFKLENBQW1CLEdBQW5CLENBQUosRUFBNkI7QUFDM0IsbUJBQVcsSUFBWCxDQUFnQixHQUFoQixFQUQyQjtPQUE3QjtLQUZGO0FBTUEsZUFBVyxJQUFYLEdBWjJDO0FBYTNDLFNBQUssSUFBSSxDQUFKLEVBQU8sSUFBSSxXQUFXLE1BQVgsRUFBbUIsS0FBSyxDQUFMLEVBQVE7QUFDekMsWUFBTSxXQUFXLENBQVgsQ0FBTixDQUR5QztBQUV6Qyx1QkFBaUIsR0FBakIsSUFBd0IsYUFBYSxJQUFJLEdBQUosQ0FBYixFQUF1QixLQUF2QixFQUE4QixnQkFBOUIsQ0FBeEIsQ0FGeUM7S0FBM0M7QUFJQSxVQUFNLEdBQU4sR0FqQjJDO0FBa0IzQyxxQkFBaUIsR0FBakIsR0FsQjJDO0dBQTdDLE1BbUJPO0FBQ0wsdUJBQW1CLEdBQW5CLENBREs7R0FuQlA7QUFzQkEsU0FBTyxnQkFBUCxDQXBEeUQ7Q0FBcEQiLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2xpbmVEaWZmfSBmcm9tICcuL2xpbmUnO1xuXG5jb25zdCBvYmplY3RQcm90b3R5cGVUb1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cblxuZXhwb3J0IGNvbnN0IGpzb25EaWZmID0gbmV3IERpZmYoKTtcbi8vIERpc2NyaW1pbmF0ZSBiZXR3ZWVuIHR3byBsaW5lcyBvZiBwcmV0dHktcHJpbnRlZCwgc2VyaWFsaXplZCBKU09OIHdoZXJlIG9uZSBvZiB0aGVtIGhhcyBhXG4vLyBkYW5nbGluZyBjb21tYSBhbmQgdGhlIG90aGVyIGRvZXNuJ3QuIFR1cm5zIG91dCBpbmNsdWRpbmcgdGhlIGRhbmdsaW5nIGNvbW1hIHlpZWxkcyB0aGUgbmljZXN0IG91dHB1dDpcbmpzb25EaWZmLnVzZUxvbmdlc3RUb2tlbiA9IHRydWU7XG5cbmpzb25EaWZmLnRva2VuaXplID0gbGluZURpZmYudG9rZW5pemU7XG5qc29uRGlmZi5jYXN0SW5wdXQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlKSwgdW5kZWZpbmVkLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzKGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgY2FsbGJhY2spIHsgcmV0dXJuIGpzb25EaWZmLmRpZmYob2xkT2JqLCBuZXdPYmosIGNhbGxiYWNrKTsgfVxuXG5cbi8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcHJlc2VuY2Ugb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBiYWlsaW5nIG91dCB3aGVuIGVuY291bnRlcmluZyBhblxuLy8gb2JqZWN0IHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUgXCJzdGFja1wiIG9mIGl0ZW1zIGJlaW5nIHByb2Nlc3NlZC5cbmV4cG9ydCBmdW5jdGlvbiBjYW5vbmljYWxpemUob2JqLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjaykge1xuICBzdGFjayA9IHN0YWNrIHx8IFtdO1xuICByZXBsYWNlbWVudFN0YWNrID0gcmVwbGFjZW1lbnRTdGFjayB8fCBbXTtcblxuICBsZXQgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoc3RhY2tbaV0gPT09IG9iaikge1xuICAgICAgcmV0dXJuIHJlcGxhY2VtZW50U3RhY2tbaV07XG4gICAgfVxuICB9XG5cbiAgbGV0IGNhbm9uaWNhbGl6ZWRPYmo7XG5cbiAgaWYgKCdbb2JqZWN0IEFycmF5XScgPT09IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nLmNhbGwob2JqKSkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0gbmV3IEFycmF5KG9iai5sZW5ndGgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBjYW5vbmljYWxpemVkT2JqW2ldID0gY2Fub25pY2FsaXplKG9ialtpXSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2spO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICAgIHJldHVybiBjYW5vbmljYWxpemVkT2JqO1xuICB9XG5cbiAgaWYgKG9iaiAmJiBvYmoudG9KU09OKSB7XG4gICAgb2JqID0gb2JqLnRvSlNPTigpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgIHN0YWNrLnB1c2gob2JqKTtcbiAgICBjYW5vbmljYWxpemVkT2JqID0ge307XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wdXNoKGNhbm9uaWNhbGl6ZWRPYmopO1xuICAgIGxldCBzb3J0ZWRLZXlzID0gW10sXG4gICAgICAgIGtleTtcbiAgICBmb3IgKGtleSBpbiBvYmopIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgc29ydGVkS2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNvcnRlZEtleXMuc29ydCgpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzb3J0ZWRLZXlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBrZXkgPSBzb3J0ZWRLZXlzW2ldO1xuICAgICAgY2Fub25pY2FsaXplZE9ialtrZXldID0gY2Fub25pY2FsaXplKG9ialtrZXldLCBzdGFjaywgcmVwbGFjZW1lbnRTdGFjayk7XG4gICAgfVxuICAgIHN0YWNrLnBvcCgpO1xuICAgIHJlcGxhY2VtZW50U3RhY2sucG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG9iajtcbiAgfVxuICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbn1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/line.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/line.js
    deleted file mode 100644
    index d61dc5cf..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/line.js
    +++ /dev/null
    @@ -1,53 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.lineDiff = undefined;
    -exports. /*istanbul ignore end*/diffLines = diffLines;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -/*istanbul ignore end*/
    -var /*istanbul ignore start*/_params = require('../util/params') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -lineDiff.tokenize = function (value) {
    -  var retLines = [],
    -      linesAndNewlines = value.split(/(\n|\r\n)/);
    -
    -  // Ignore the final empty token that occurs if the string ends with a new line
    -  if (!linesAndNewlines[linesAndNewlines.length - 1]) {
    -    linesAndNewlines.pop();
    -  }
    -
    -  // Merge the content and line separators into single tokens
    -  for (var i = 0; i < linesAndNewlines.length; i++) {
    -    var line = linesAndNewlines[i];
    -
    -    if (i % 2 && !this.options.newlineIsToken) {
    -      retLines[retLines.length - 1] += line;
    -    } else {
    -      if (this.options.ignoreWhitespace) {
    -        line = line.trim();
    -      }
    -      retLines.push(line);
    -    }
    -  }
    -
    -  return retLines;
    -};
    -
    -function diffLines(oldStr, newStr, callback) {
    -  return lineDiff.diff(oldStr, newStr, callback);
    -}
    -function diffTrimmedLines(oldStr, newStr, callback) {
    -  var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
    -  return lineDiff.diff(oldStr, newStr, options);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0E4QmdCO3lEQUNBOztBQS9CaEI7Ozs7OztBQUNBOzs7Ozt1QkFFTyxJQUFNLCtFQUFXLHFFQUFYO0FBQ2IsU0FBUyxRQUFULEdBQW9CLFVBQVMsS0FBVCxFQUFnQjtBQUNsQyxNQUFJLFdBQVcsRUFBWDtNQUNBLG1CQUFtQixNQUFNLEtBQU4sQ0FBWSxXQUFaLENBQW5COzs7QUFGOEIsTUFLOUIsQ0FBQyxpQkFBaUIsaUJBQWlCLE1BQWpCLEdBQTBCLENBQTFCLENBQWxCLEVBQWdEO0FBQ2xELHFCQUFpQixHQUFqQixHQURrRDtHQUFwRDs7O0FBTGtDLE9BVTdCLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxpQkFBaUIsTUFBakIsRUFBeUIsR0FBN0MsRUFBa0Q7QUFDaEQsUUFBSSxPQUFPLGlCQUFpQixDQUFqQixDQUFQLENBRDRDOztBQUdoRCxRQUFJLElBQUksQ0FBSixJQUFTLENBQUMsS0FBSyxPQUFMLENBQWEsY0FBYixFQUE2QjtBQUN6QyxlQUFTLFNBQVMsTUFBVCxHQUFrQixDQUFsQixDQUFULElBQWlDLElBQWpDLENBRHlDO0tBQTNDLE1BRU87QUFDTCxVQUFJLEtBQUssT0FBTCxDQUFhLGdCQUFiLEVBQStCO0FBQ2pDLGVBQU8sS0FBSyxJQUFMLEVBQVAsQ0FEaUM7T0FBbkM7QUFHQSxlQUFTLElBQVQsQ0FBYyxJQUFkLEVBSks7S0FGUDtHQUhGOztBQWFBLFNBQU8sUUFBUCxDQXZCa0M7Q0FBaEI7O0FBMEJiLFNBQVMsU0FBVCxDQUFtQixNQUFuQixFQUEyQixNQUEzQixFQUFtQyxRQUFuQyxFQUE2QztBQUFFLFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBQUY7Q0FBN0M7QUFDQSxTQUFTLGdCQUFULENBQTBCLE1BQTFCLEVBQWtDLE1BQWxDLEVBQTBDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUksVUFBVSw4RUFBZ0IsUUFBaEIsRUFBMEIsRUFBQyxrQkFBa0IsSUFBbEIsRUFBM0IsQ0FBVixDQURxRDtBQUV6RCxTQUFPLFNBQVMsSUFBVCxDQUFjLE1BQWQsRUFBc0IsTUFBdEIsRUFBOEIsT0FBOUIsQ0FBUCxDQUZ5RDtDQUFwRCIsImZpbGUiOiJsaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBsaW5lRGlmZiA9IG5ldyBEaWZmKCk7XG5saW5lRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGxldCByZXRMaW5lcyA9IFtdLFxuICAgICAgbGluZXNBbmROZXdsaW5lcyA9IHZhbHVlLnNwbGl0KC8oXFxufFxcclxcbikvKTtcblxuICAvLyBJZ25vcmUgdGhlIGZpbmFsIGVtcHR5IHRva2VuIHRoYXQgb2NjdXJzIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGEgbmV3IGxpbmVcbiAgaWYgKCFsaW5lc0FuZE5ld2xpbmVzW2xpbmVzQW5kTmV3bGluZXMubGVuZ3RoIC0gMV0pIHtcbiAgICBsaW5lc0FuZE5ld2xpbmVzLnBvcCgpO1xuICB9XG5cbiAgLy8gTWVyZ2UgdGhlIGNvbnRlbnQgYW5kIGxpbmUgc2VwYXJhdG9ycyBpbnRvIHNpbmdsZSB0b2tlbnNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBsaW5lc0FuZE5ld2xpbmVzW2ldO1xuXG4gICAgaWYgKGkgJSAyICYmICF0aGlzLm9wdGlvbnMubmV3bGluZUlzVG9rZW4pIHtcbiAgICAgIHJldExpbmVzW3JldExpbmVzLmxlbmd0aCAtIDFdICs9IGxpbmU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSkge1xuICAgICAgICBsaW5lID0gbGluZS50cmltKCk7XG4gICAgICB9XG4gICAgICByZXRMaW5lcy5wdXNoKGxpbmUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXRMaW5lcztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7IHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVHJpbW1lZExpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykge1xuICBsZXQgb3B0aW9ucyA9IGdlbmVyYXRlT3B0aW9ucyhjYWxsYmFjaywge2lnbm9yZVdoaXRlc3BhY2U6IHRydWV9KTtcbiAgcmV0dXJuIGxpbmVEaWZmLmRpZmYob2xkU3RyLCBuZXdTdHIsIG9wdGlvbnMpO1xufVxuIl19
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/sentence.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/sentence.js
    deleted file mode 100644
    index 6ac740b0..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/sentence.js
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.sentenceDiff = undefined;
    -exports. /*istanbul ignore end*/diffSentences = diffSentences;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -sentenceDiff.tokenize = function (value) {
    -  return value.split(/(\S.+?[.!?])(?=\s+|$)/);
    -};
    -
    -function diffSentences(oldStr, newStr, callback) {
    -  return sentenceDiff.diff(oldStr, newStr, callback);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCOztBQVJoQjs7Ozs7Ozt1QkFHTyxJQUFNLHVGQUFlLHFFQUFmO0FBQ2IsYUFBYSxRQUFiLEdBQXdCLFVBQVMsS0FBVCxFQUFnQjtBQUN0QyxTQUFPLE1BQU0sS0FBTixDQUFZLHVCQUFaLENBQVAsQ0FEc0M7Q0FBaEI7O0FBSWpCLFNBQVMsYUFBVCxDQUF1QixNQUF2QixFQUErQixNQUEvQixFQUF1QyxRQUF2QyxFQUFpRDtBQUFFLFNBQU8sYUFBYSxJQUFiLENBQWtCLE1BQWxCLEVBQTBCLE1BQTFCLEVBQWtDLFFBQWxDLENBQVAsQ0FBRjtDQUFqRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/word.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/word.js
    deleted file mode 100644
    index 5441d591..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/diff/word.js
    +++ /dev/null
    @@ -1,70 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.wordDiff = undefined;
    -exports. /*istanbul ignore end*/diffWords = diffWords;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;
    -
    -var /*istanbul ignore start*/_base = require('./base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -/*istanbul ignore end*/
    -var /*istanbul ignore start*/_params = require('../util/params') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/
    -
    -// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
    -//
    -// Ranges and exceptions:
    -// Latin-1 Supplement, 0080–00FF
    -//  - U+00D7  × Multiplication sign
    -//  - U+00F7  ÷ Division sign
    -// Latin Extended-A, 0100–017F
    -// Latin Extended-B, 0180–024F
    -// IPA Extensions, 0250–02AF
    -// Spacing Modifier Letters, 02B0–02FF
    -//  - U+02C7  ˇ ˇ  Caron
    -//  - U+02D8  ˘ ˘  Breve
    -//  - U+02D9  ˙ ˙  Dot Above
    -//  - U+02DA  ˚ ˚  Ring Above
    -//  - U+02DB  ˛ ˛  Ogonek
    -//  - U+02DC  ˜ ˜  Small Tilde
    -//  - U+02DD  ˝ ˝  Double Acute Accent
    -// Latin Extended Additional, 1E00–1EFF
    -var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
    -
    -var reWhitespace = /\S/;
    -
    -var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2.default() /*istanbul ignore end*/;
    -wordDiff.equals = function (left, right) {
    -  return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
    -};
    -wordDiff.tokenize = function (value) {
    -  var tokens = value.split(/(\s+|\b)/);
    -
    -  // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
    -  for (var i = 0; i < tokens.length - 1; i++) {
    -    // If we have an empty string in the next field and we have only word chars before and after, merge
    -    if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
    -      tokens[i] += tokens[i + 2];
    -      tokens.splice(i + 1, 2);
    -      i--;
    -    }
    -  }
    -
    -  return tokens;
    -};
    -
    -function diffWords(oldStr, newStr, callback) {
    -  var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
    -  return wordDiff.diff(oldStr, newStr, options);
    -}
    -function diffWordsWithSpace(oldStr, newStr, callback) {
    -  return wordDiff.diff(oldStr, newStr, callback);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztnQ0ErQ2dCO3lEQUlBOztBQW5EaEI7Ozs7OztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLElBQU0sb0JBQW9CLCtEQUFwQjs7QUFFTixJQUFNLGVBQWUsSUFBZjs7QUFFQyxJQUFNLCtFQUFXLHFFQUFYO0FBQ2IsU0FBUyxNQUFULEdBQWtCLFVBQVMsSUFBVCxFQUFlLEtBQWYsRUFBc0I7QUFDdEMsU0FBTyxTQUFTLEtBQVQsSUFBbUIsS0FBSyxPQUFMLENBQWEsZ0JBQWIsSUFBaUMsQ0FBQyxhQUFhLElBQWIsQ0FBa0IsSUFBbEIsQ0FBRCxJQUE0QixDQUFDLGFBQWEsSUFBYixDQUFrQixLQUFsQixDQUFELENBRGpEO0NBQXRCO0FBR2xCLFNBQVMsUUFBVCxHQUFvQixVQUFTLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSSxTQUFTLE1BQU0sS0FBTixDQUFZLFVBQVosQ0FBVDs7O0FBRDhCLE9BSTdCLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxPQUFPLE1BQVAsR0FBZ0IsQ0FBaEIsRUFBbUIsR0FBdkMsRUFBNEM7O0FBRTFDLFFBQUksQ0FBQyxPQUFPLElBQUksQ0FBSixDQUFSLElBQWtCLE9BQU8sSUFBSSxDQUFKLENBQXpCLElBQ0ssa0JBQWtCLElBQWxCLENBQXVCLE9BQU8sQ0FBUCxDQUF2QixDQURMLElBRUssa0JBQWtCLElBQWxCLENBQXVCLE9BQU8sSUFBSSxDQUFKLENBQTlCLENBRkwsRUFFNEM7QUFDOUMsYUFBTyxDQUFQLEtBQWEsT0FBTyxJQUFJLENBQUosQ0FBcEIsQ0FEOEM7QUFFOUMsYUFBTyxNQUFQLENBQWMsSUFBSSxDQUFKLEVBQU8sQ0FBckIsRUFGOEM7QUFHOUMsVUFIOEM7S0FGaEQ7R0FGRjs7QUFXQSxTQUFPLE1BQVAsQ0Fma0M7Q0FBaEI7O0FBa0JiLFNBQVMsU0FBVCxDQUFtQixNQUFuQixFQUEyQixNQUEzQixFQUFtQyxRQUFuQyxFQUE2QztBQUNsRCxNQUFJLFVBQVUsOEVBQWdCLFFBQWhCLEVBQTBCLEVBQUMsa0JBQWtCLElBQWxCLEVBQTNCLENBQVYsQ0FEOEM7QUFFbEQsU0FBTyxTQUFTLElBQVQsQ0FBYyxNQUFkLEVBQXNCLE1BQXRCLEVBQThCLE9BQTlCLENBQVAsQ0FGa0Q7Q0FBN0M7QUFJQSxTQUFTLGtCQUFULENBQTRCLE1BQTVCLEVBQW9DLE1BQXBDLEVBQTRDLFFBQTVDLEVBQXNEO0FBQzNELFNBQU8sU0FBUyxJQUFULENBQWMsTUFBZCxFQUFzQixNQUF0QixFQUE4QixRQUE5QixDQUFQLENBRDJEO0NBQXREIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkaWZmV29yZHNXaXRoU3BhY2Uob2xkU3RyLCBuZXdTdHIsIGNhbGxiYWNrKSB7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7XG59XG4iXX0=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/index.js
    deleted file mode 100644
    index 431f3d6d..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/index.js
    +++ /dev/null
    @@ -1,71 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;
    -/*istanbul ignore end*/
    -var /*istanbul ignore start*/_base = require('./diff/base') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _base2 = _interopRequireDefault(_base);
    -
    -/*istanbul ignore end*/
    -var /*istanbul ignore start*/_character = require('./diff/character') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_word = require('./diff/word') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_line = require('./diff/line') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_sentence = require('./diff/sentence') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_css = require('./diff/css') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_json = require('./diff/json') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_apply = require('./patch/apply') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_parse = require('./patch/parse') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_create = require('./patch/create') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_dmp = require('./convert/dmp') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_xml = require('./convert/xml') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/* See LICENSE file for terms of use */
    -
    -/*
    - * Text diff implementation.
    - *
    - * This library supports the following APIS:
    - * JsDiff.diffChars: Character by character diff
    - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
    - * JsDiff.diffLines: Line based diff
    - *
    - * JsDiff.diffCss: Diff targeted at CSS content
    - *
    - * These methods are based on the implementation proposed in
    - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
    - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
    - */
    -exports. /*istanbul ignore end*/Diff = _base2.default;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize;
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQTs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FHRTt5REFFQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFFQTt5REFDQTt5REFFQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQTt5REFDQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSVM6XG4gKiBKc0RpZmYuZGlmZkNoYXJzOiBDaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIGRpZmZcbiAqIEpzRGlmZi5kaWZmV29yZHM6IFdvcmQgKGFzIGRlZmluZWQgYnkgXFxiIHJlZ2V4KSBkaWZmIHdoaWNoIGlnbm9yZXMgd2hpdGVzcGFjZVxuICogSnNEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogSnNEaWZmLmRpZmZDc3M6IERpZmYgdGFyZ2V0ZWQgYXQgQ1NTIGNvbnRlbnRcbiAqXG4gKiBUaGVzZSBtZXRob2RzIGFyZSBiYXNlZCBvbiB0aGUgaW1wbGVtZW50YXRpb24gcHJvcG9zZWQgaW5cbiAqIFwiQW4gTyhORCkgRGlmZmVyZW5jZSBBbGdvcml0aG0gYW5kIGl0cyBWYXJpYXRpb25zXCIgKE15ZXJzLCAxOTg2KS5cbiAqIGh0dHA6Ly9jaXRlc2VlcnguaXN0LnBzdS5lZHUvdmlld2RvYy9zdW1tYXJ5P2RvaT0xMC4xLjEuNC42OTI3XG4gKi9cbmltcG9ydCBEaWZmIGZyb20gJy4vZGlmZi9iYXNlJztcbmltcG9ydCB7ZGlmZkNoYXJzfSBmcm9tICcuL2RpZmYvY2hhcmFjdGVyJztcbmltcG9ydCB7ZGlmZldvcmRzLCBkaWZmV29yZHNXaXRoU3BhY2V9IGZyb20gJy4vZGlmZi93b3JkJztcbmltcG9ydCB7ZGlmZkxpbmVzLCBkaWZmVHJpbW1lZExpbmVzfSBmcm9tICcuL2RpZmYvbGluZSc7XG5pbXBvcnQge2RpZmZTZW50ZW5jZXN9IGZyb20gJy4vZGlmZi9zZW50ZW5jZSc7XG5cbmltcG9ydCB7ZGlmZkNzc30gZnJvbSAnLi9kaWZmL2Nzcyc7XG5pbXBvcnQge2RpZmZKc29uLCBjYW5vbmljYWxpemV9IGZyb20gJy4vZGlmZi9qc29uJztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgc3RydWN0dXJlZFBhdGNoLFxuICBjcmVhdGVUd29GaWxlc1BhdGNoLFxuICBjcmVhdGVQYXRjaCxcbiAgYXBwbHlQYXRjaCxcbiAgYXBwbHlQYXRjaGVzLFxuICBwYXJzZVBhdGNoLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/apply.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/apply.js
    deleted file mode 100644
    index f8100198..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/apply.js
    +++ /dev/null
    @@ -1,161 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/applyPatch = applyPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;
    -
    -var /*istanbul ignore start*/_parse = require('./parse') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_distanceIterator = require('../util/distance-iterator') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -var _distanceIterator2 = _interopRequireDefault(_distanceIterator);
    -
    -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    -
    -/*istanbul ignore end*/function applyPatch(source, uniDiff) {
    -  /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
    -
    -  if (typeof uniDiff === 'string') {
    -    uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
    -  }
    -
    -  if (Array.isArray(uniDiff)) {
    -    if (uniDiff.length > 1) {
    -      throw new Error('applyPatch only works with a single input.');
    -    }
    -
    -    uniDiff = uniDiff[0];
    -  }
    -
    -  // Apply the diff to the input
    -  var lines = source.split('\n'),
    -      hunks = uniDiff.hunks,
    -      compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{
    -    return (/*istanbul ignore end*/line === patchContent
    -    );
    -  },
    -      errorCount = 0,
    -      fuzzFactor = options.fuzzFactor || 0,
    -      minLine = 0,
    -      offset = 0,
    -      removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
    -      addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
    -
    -  /**
    -   * Checks if the hunk exactly fits on the provided location
    -   */
    -  function hunkFits(hunk, toPos) {
    -    for (var j = 0; j < hunk.lines.length; j++) {
    -      var line = hunk.lines[j],
    -          operation = line[0],
    -          content = line.substr(1);
    -
    -      if (operation === ' ' || operation === '-') {
    -        // Context sanity check
    -        if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
    -          errorCount++;
    -
    -          if (errorCount > fuzzFactor) {
    -            return false;
    -          }
    -        }
    -        toPos++;
    -      }
    -    }
    -
    -    return true;
    -  }
    -
    -  // Search best fit offsets for each hunk based on the previous ones
    -  for (var i = 0; i < hunks.length; i++) {
    -    var hunk = hunks[i],
    -        maxLine = lines.length - hunk.oldLines,
    -        localOffset = 0,
    -        toPos = offset + hunk.oldStart - 1;
    -
    -    var iterator = /*istanbul ignore start*/(0, _distanceIterator2.default) /*istanbul ignore end*/(toPos, minLine, maxLine);
    -
    -    for (; localOffset !== undefined; localOffset = iterator()) {
    -      if (hunkFits(hunk, toPos + localOffset)) {
    -        hunk.offset = offset += localOffset;
    -        break;
    -      }
    -    }
    -
    -    if (localOffset === undefined) {
    -      return false;
    -    }
    -
    -    // Set lower text limit to end of the current hunk, so next ones don't try
    -    // to fit over already patched text
    -    minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
    -  }
    -
    -  // Apply patch hunks
    -  for (var _i = 0; _i < hunks.length; _i++) {
    -    var _hunk = hunks[_i],
    -        _toPos = _hunk.offset + _hunk.newStart - 1;
    -
    -    for (var j = 0; j < _hunk.lines.length; j++) {
    -      var line = _hunk.lines[j],
    -          operation = line[0],
    -          content = line.substr(1);
    -
    -      if (operation === ' ') {
    -        _toPos++;
    -      } else if (operation === '-') {
    -        lines.splice(_toPos, 1);
    -        /* istanbul ignore else */
    -      } else if (operation === '+') {
    -          lines.splice(_toPos, 0, content);
    -          _toPos++;
    -        } else if (operation === '\\') {
    -          var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
    -          if (previousOperation === '+') {
    -            removeEOFNL = true;
    -          } else if (previousOperation === '-') {
    -            addEOFNL = true;
    -          }
    -        }
    -    }
    -  }
    -
    -  // Handle EOFNL insertion/removal
    -  if (removeEOFNL) {
    -    while (!lines[lines.length - 1]) {
    -      lines.pop();
    -    }
    -  } else if (addEOFNL) {
    -    lines.push('');
    -  }
    -  return lines.join('\n');
    -}
    -
    -// Wrapper that supports multiple file patches via callbacks.
    -function applyPatches(uniDiff, options) {
    -  if (typeof uniDiff === 'string') {
    -    uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
    -  }
    -
    -  var currentIndex = 0;
    -  function processIndex() {
    -    var index = uniDiff[currentIndex++];
    -    if (!index) {
    -      return options.complete();
    -    }
    -
    -    options.loadFile(index, function (err, data) {
    -      if (err) {
    -        return options.complete(err);
    -      }
    -
    -      var updatedContent = applyPatch(data, index, options);
    -      options.patched(index, updatedContent);
    -
    -      setTimeout(processIndex, 0);
    -    });
    -  }
    -  processIndex();
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBR2dCO3lEQXFIQTs7QUF4SGhCOztBQUNBOzs7Ozs7O3VCQUVPLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUE0QixPQUE1QixFQUFtRDtzREFBZCxnRUFBVSxrQkFBSTs7QUFDeEQsTUFBSSxPQUFPLE9BQVAsS0FBbUIsUUFBbkIsRUFBNkI7QUFDL0IsY0FBVSx3RUFBVyxPQUFYLENBQVYsQ0FEK0I7R0FBakM7O0FBSUEsTUFBSSxNQUFNLE9BQU4sQ0FBYyxPQUFkLENBQUosRUFBNEI7QUFDMUIsUUFBSSxRQUFRLE1BQVIsR0FBaUIsQ0FBakIsRUFBb0I7QUFDdEIsWUFBTSxJQUFJLEtBQUosQ0FBVSw0Q0FBVixDQUFOLENBRHNCO0tBQXhCOztBQUlBLGNBQVUsUUFBUSxDQUFSLENBQVYsQ0FMMEI7R0FBNUI7OztBQUx3RCxNQWNwRCxRQUFRLE9BQU8sS0FBUCxDQUFhLElBQWIsQ0FBUjtNQUNBLFFBQVEsUUFBUSxLQUFSO01BRVIsY0FBYyxRQUFRLFdBQVIsSUFBd0IsVUFBQyxVQUFELEVBQWEsSUFBYixFQUFtQixTQUFuQixFQUE4QixZQUE5QjttQ0FBK0MsU0FBUyxZQUFUOztHQUEvQztNQUN0QyxhQUFhLENBQWI7TUFDQSxhQUFhLFFBQVEsVUFBUixJQUFzQixDQUF0QjtNQUNiLFVBQVUsQ0FBVjtNQUNBLFNBQVMsQ0FBVDtNQUVBLHFFQVRKO01BVUksa0VBVko7Ozs7O0FBZHdELFdBNkIvQyxRQUFULENBQWtCLElBQWxCLEVBQXdCLEtBQXhCLEVBQStCO0FBQzdCLFNBQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLEtBQUssS0FBTCxDQUFXLE1BQVgsRUFBbUIsR0FBdkMsRUFBNEM7QUFDMUMsVUFBSSxPQUFPLEtBQUssS0FBTCxDQUFXLENBQVgsQ0FBUDtVQUNBLFlBQVksS0FBSyxDQUFMLENBQVo7VUFDQSxVQUFVLEtBQUssTUFBTCxDQUFZLENBQVosQ0FBVixDQUhzQzs7QUFLMUMsVUFBSSxjQUFjLEdBQWQsSUFBcUIsY0FBYyxHQUFkLEVBQW1COztBQUUxQyxZQUFJLENBQUMsWUFBWSxRQUFRLENBQVIsRUFBVyxNQUFNLEtBQU4sQ0FBdkIsRUFBcUMsU0FBckMsRUFBZ0QsT0FBaEQsQ0FBRCxFQUEyRDtBQUM3RCx1QkFENkQ7O0FBRzdELGNBQUksYUFBYSxVQUFiLEVBQXlCO0FBQzNCLG1CQUFPLEtBQVAsQ0FEMkI7V0FBN0I7U0FIRjtBQU9BLGdCQVQwQztPQUE1QztLQUxGOztBQWtCQSxXQUFPLElBQVAsQ0FuQjZCO0dBQS9COzs7QUE3QndELE9Bb0RuRCxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBTSxNQUFOLEVBQWMsR0FBbEMsRUFBdUM7QUFDckMsUUFBSSxPQUFPLE1BQU0sQ0FBTixDQUFQO1FBQ0EsVUFBVSxNQUFNLE1BQU4sR0FBZSxLQUFLLFFBQUw7UUFDekIsY0FBYyxDQUFkO1FBQ0EsUUFBUSxTQUFTLEtBQUssUUFBTCxHQUFnQixDQUF6QixDQUp5Qjs7QUFNckMsUUFBSSxXQUFXLGlGQUFpQixLQUFqQixFQUF3QixPQUF4QixFQUFpQyxPQUFqQyxDQUFYLENBTmlDOztBQVFyQyxXQUFPLGdCQUFnQixTQUFoQixFQUEyQixjQUFjLFVBQWQsRUFBMEI7QUFDMUQsVUFBSSxTQUFTLElBQVQsRUFBZSxRQUFRLFdBQVIsQ0FBbkIsRUFBeUM7QUFDdkMsYUFBSyxNQUFMLEdBQWMsVUFBVSxXQUFWLENBRHlCO0FBRXZDLGNBRnVDO09BQXpDO0tBREY7O0FBT0EsUUFBSSxnQkFBZ0IsU0FBaEIsRUFBMkI7QUFDN0IsYUFBTyxLQUFQLENBRDZCO0tBQS9COzs7O0FBZnFDLFdBcUJyQyxHQUFVLEtBQUssTUFBTCxHQUFjLEtBQUssUUFBTCxHQUFnQixLQUFLLFFBQUwsQ0FyQkg7R0FBdkM7OztBQXBEd0QsT0E2RW5ELElBQUksS0FBSSxDQUFKLEVBQU8sS0FBSSxNQUFNLE1BQU4sRUFBYyxJQUFsQyxFQUF1QztBQUNyQyxRQUFJLFFBQU8sTUFBTSxFQUFOLENBQVA7UUFDQSxTQUFRLE1BQUssTUFBTCxHQUFjLE1BQUssUUFBTCxHQUFnQixDQUE5QixDQUZ5Qjs7QUFJckMsU0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBSyxLQUFMLENBQVcsTUFBWCxFQUFtQixHQUF2QyxFQUE0QztBQUMxQyxVQUFJLE9BQU8sTUFBSyxLQUFMLENBQVcsQ0FBWCxDQUFQO1VBQ0EsWUFBWSxLQUFLLENBQUwsQ0FBWjtVQUNBLFVBQVUsS0FBSyxNQUFMLENBQVksQ0FBWixDQUFWLENBSHNDOztBQUsxQyxVQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUNyQixpQkFEcUI7T0FBdkIsTUFFTyxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1QixjQUFNLE1BQU4sQ0FBYSxNQUFiLEVBQW9CLENBQXBCOztBQUQ0QixPQUF2QixNQUdBLElBQUksY0FBYyxHQUFkLEVBQW1CO0FBQzVCLGdCQUFNLE1BQU4sQ0FBYSxNQUFiLEVBQW9CLENBQXBCLEVBQXVCLE9BQXZCLEVBRDRCO0FBRTVCLG1CQUY0QjtTQUF2QixNQUdBLElBQUksY0FBYyxJQUFkLEVBQW9CO0FBQzdCLGNBQUksb0JBQW9CLE1BQUssS0FBTCxDQUFXLElBQUksQ0FBSixDQUFYLEdBQW9CLE1BQUssS0FBTCxDQUFXLElBQUksQ0FBSixDQUFYLENBQWtCLENBQWxCLENBQXBCLEdBQTJDLElBQTNDLENBREs7QUFFN0IsY0FBSSxzQkFBc0IsR0FBdEIsRUFBMkI7QUFDN0IsMEJBQWMsSUFBZCxDQUQ2QjtXQUEvQixNQUVPLElBQUksc0JBQXNCLEdBQXRCLEVBQTJCO0FBQ3BDLHVCQUFXLElBQVgsQ0FEb0M7V0FBL0I7U0FKRjtLQWJUO0dBSkY7OztBQTdFd0QsTUEwR3BELFdBQUosRUFBaUI7QUFDZixXQUFPLENBQUMsTUFBTSxNQUFNLE1BQU4sR0FBZSxDQUFmLENBQVAsRUFBMEI7QUFDL0IsWUFBTSxHQUFOLEdBRCtCO0tBQWpDO0dBREYsTUFJTyxJQUFJLFFBQUosRUFBYztBQUNuQixVQUFNLElBQU4sQ0FBVyxFQUFYLEVBRG1CO0dBQWQ7QUFHUCxTQUFPLE1BQU0sSUFBTixDQUFXLElBQVgsQ0FBUCxDQWpId0Q7Q0FBbkQ7OztBQXFIQSxTQUFTLFlBQVQsQ0FBc0IsT0FBdEIsRUFBK0IsT0FBL0IsRUFBd0M7QUFDN0MsTUFBSSxPQUFPLE9BQVAsS0FBbUIsUUFBbkIsRUFBNkI7QUFDL0IsY0FBVSx3RUFBVyxPQUFYLENBQVYsQ0FEK0I7R0FBakM7O0FBSUEsTUFBSSxlQUFlLENBQWYsQ0FMeUM7QUFNN0MsV0FBUyxZQUFULEdBQXdCO0FBQ3RCLFFBQUksUUFBUSxRQUFRLGNBQVIsQ0FBUixDQURrQjtBQUV0QixRQUFJLENBQUMsS0FBRCxFQUFRO0FBQ1YsYUFBTyxRQUFRLFFBQVIsRUFBUCxDQURVO0tBQVo7O0FBSUEsWUFBUSxRQUFSLENBQWlCLEtBQWpCLEVBQXdCLFVBQVMsR0FBVCxFQUFjLElBQWQsRUFBb0I7QUFDMUMsVUFBSSxHQUFKLEVBQVM7QUFDUCxlQUFPLFFBQVEsUUFBUixDQUFpQixHQUFqQixDQUFQLENBRE87T0FBVDs7QUFJQSxVQUFJLGlCQUFpQixXQUFXLElBQVgsRUFBaUIsS0FBakIsRUFBd0IsT0FBeEIsQ0FBakIsQ0FMc0M7QUFNMUMsY0FBUSxPQUFSLENBQWdCLEtBQWhCLEVBQXVCLGNBQXZCLEVBTjBDOztBQVExQyxpQkFBVyxZQUFYLEVBQXlCLENBQXpCLEVBUjBDO0tBQXBCLENBQXhCLENBTnNCO0dBQXhCO0FBaUJBLGlCQXZCNkM7Q0FBeEMiLCJmaWxlIjoiYXBwbHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoJ1xcbicpLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSBsaW5lWzBdLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLnN1YnN0cigxKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgdG9Qb3MgPSBodW5rLm9mZnNldCArIGh1bmsubmV3U3RhcnQgLSAxO1xuXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gbGluZVswXSxcbiAgICAgICAgICBjb250ZW50ID0gbGluZS5zdWJzdHIoMSk7XG5cbiAgICAgIGlmIChvcGVyYXRpb24gPT09ICcgJykge1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICBsaW5lcy5zcGxpY2UodG9Qb3MsIDEpO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgbGluZXMuc3BsaWNlKHRvUG9zLCAwLCBjb250ZW50KTtcbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzT3BlcmF0aW9uID0gaHVuay5saW5lc1tqIC0gMV0gPyBodW5rLmxpbmVzW2ogLSAxXVswXSA6IG51bGw7XG4gICAgICAgIGlmIChwcmV2aW91c09wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgcmVtb3ZlRU9GTkwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICBhZGRFT0ZOTCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGUgRU9GTkwgaW5zZXJ0aW9uL3JlbW92YWxcbiAgaWYgKHJlbW92ZUVPRk5MKSB7XG4gICAgd2hpbGUgKCFsaW5lc1tsaW5lcy5sZW5ndGggLSAxXSkge1xuICAgICAgbGluZXMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gIH1cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBXcmFwcGVyIHRoYXQgc3VwcG9ydHMgbXVsdGlwbGUgZmlsZSBwYXRjaGVzIHZpYSBjYWxsYmFja3MuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQYXRjaGVzKHVuaURpZmYsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgbGV0IGN1cnJlbnRJbmRleCA9IDA7XG4gIGZ1bmN0aW9uIHByb2Nlc3NJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB1bmlEaWZmW2N1cnJlbnRJbmRleCsrXTtcbiAgICBpZiAoIWluZGV4KSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9wdGlvbnMubG9hZEZpbGUoaW5kZXgsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5jb21wbGV0ZShlcnIpO1xuICAgICAgfVxuXG4gICAgICBsZXQgdXBkYXRlZENvbnRlbnQgPSBhcHBseVBhdGNoKGRhdGEsIGluZGV4LCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMucGF0Y2hlZChpbmRleCwgdXBkYXRlZENvbnRlbnQpO1xuXG4gICAgICBzZXRUaW1lb3V0KHByb2Nlc3NJbmRleCwgMCk7XG4gICAgfSk7XG4gIH1cbiAgcHJvY2Vzc0luZGV4KCk7XG59XG4iXX0=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/create.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/create.js
    deleted file mode 100644
    index 3dca70f9..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/create.js
    +++ /dev/null
    @@ -1,153 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/structuredPatch = structuredPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;
    -
    -var /*istanbul ignore start*/_line = require('../diff/line') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
    -
    -/*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
    -  if (!options) {
    -    options = { context: 4 };
    -  }
    -
    -  var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr);
    -  diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
    -
    -  function contextLines(lines) {
    -    return lines.map(function (entry) {
    -      return ' ' + entry;
    -    });
    -  }
    -
    -  var hunks = [];
    -  var oldRangeStart = 0,
    -      newRangeStart = 0,
    -      curRange = [],
    -      oldLine = 1,
    -      newLine = 1;
    -  /*istanbul ignore start*/
    -  var _loop = function _loop( /*istanbul ignore end*/i) {
    -    var current = diff[i],
    -        lines = current.lines || current.value.replace(/\n$/, '').split('\n');
    -    current.lines = lines;
    -
    -    if (current.added || current.removed) {
    -      /*istanbul ignore start*/
    -      var _curRange;
    -
    -      /*istanbul ignore end*/
    -      // If we have previous context, start with that
    -      if (!oldRangeStart) {
    -        var prev = diff[i - 1];
    -        oldRangeStart = oldLine;
    -        newRangeStart = newLine;
    -
    -        if (prev) {
    -          curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
    -          oldRangeStart -= curRange.length;
    -          newRangeStart -= curRange.length;
    -        }
    -      }
    -
    -      // Output our changes
    -      /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {
    -        return (current.added ? '+' : '-') + entry;
    -      })));
    -
    -      // Track the updated file position
    -      if (current.added) {
    -        newLine += lines.length;
    -      } else {
    -        oldLine += lines.length;
    -      }
    -    } else {
    -      // Identical context lines. Track line changes
    -      if (oldRangeStart) {
    -        // Close out any changes that have been output (or join overlapping)
    -        if (lines.length <= options.context * 2 && i < diff.length - 2) {
    -          /*istanbul ignore start*/
    -          var _curRange2;
    -
    -          /*istanbul ignore end*/
    -          // Overlapping
    -          /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));
    -        } else {
    -          /*istanbul ignore start*/
    -          var _curRange3;
    -
    -          /*istanbul ignore end*/
    -          // end the range and output
    -          var contextSize = Math.min(lines.length, options.context);
    -          /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));
    -
    -          var hunk = {
    -            oldStart: oldRangeStart,
    -            oldLines: oldLine - oldRangeStart + contextSize,
    -            newStart: newRangeStart,
    -            newLines: newLine - newRangeStart + contextSize,
    -            lines: curRange
    -          };
    -          if (i >= diff.length - 2 && lines.length <= options.context) {
    -            // EOF is inside this hunk
    -            var oldEOFNewline = /\n$/.test(oldStr);
    -            var newEOFNewline = /\n$/.test(newStr);
    -            if (lines.length == 0 && !oldEOFNewline) {
    -              // special case: old has no eol and no trailing context; no-nl can end up before adds
    -              curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
    -            } else if (!oldEOFNewline || !newEOFNewline) {
    -              curRange.push('\\ No newline at end of file');
    -            }
    -          }
    -          hunks.push(hunk);
    -
    -          oldRangeStart = 0;
    -          newRangeStart = 0;
    -          curRange = [];
    -        }
    -      }
    -      oldLine += lines.length;
    -      newLine += lines.length;
    -    }
    -  };
    -
    -  for (var i = 0; i < diff.length; i++) {
    -    /*istanbul ignore start*/
    -    _loop( /*istanbul ignore end*/i);
    -  }
    -
    -  return {
    -    oldFileName: oldFileName, newFileName: newFileName,
    -    oldHeader: oldHeader, newHeader: newHeader,
    -    hunks: hunks
    -  };
    -}
    -
    -function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
    -  var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
    -
    -  var ret = [];
    -  if (oldFileName == newFileName) {
    -    ret.push('Index: ' + oldFileName);
    -  }
    -  ret.push('===================================================================');
    -  ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
    -  ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
    -
    -  for (var i = 0; i < diff.hunks.length; i++) {
    -    var hunk = diff.hunks[i];
    -    ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
    -    ret.push.apply(ret, hunk.lines);
    -  }
    -
    -  return ret.join('\n') + '\n';
    -}
    -
    -function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
    -  return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2dDQUVnQjt5REE4RkE7eURBd0JBOztBQXhIaEI7Ozs7O3VCQUVPLFNBQVMsZUFBVCxDQUF5QixXQUF6QixFQUFzQyxXQUF0QyxFQUFtRCxNQUFuRCxFQUEyRCxNQUEzRCxFQUFtRSxTQUFuRSxFQUE4RSxTQUE5RSxFQUF5RixPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUMsT0FBRCxFQUFVO0FBQ1osY0FBVSxFQUFFLFNBQVMsQ0FBVCxFQUFaLENBRFk7R0FBZDs7QUFJQSxNQUFNLE9BQU8sc0VBQVUsTUFBVixFQUFrQixNQUFsQixDQUFQLENBTGlHO0FBTXZHLE9BQUssSUFBTCxDQUFVLEVBQUMsT0FBTyxFQUFQLEVBQVcsT0FBTyxFQUFQLEVBQXRCOztBQU51RyxXQVE5RixZQUFULENBQXNCLEtBQXRCLEVBQTZCO0FBQzNCLFdBQU8sTUFBTSxHQUFOLENBQVUsVUFBUyxLQUFULEVBQWdCO0FBQUUsYUFBTyxNQUFNLEtBQU4sQ0FBVDtLQUFoQixDQUFqQixDQUQyQjtHQUE3Qjs7QUFJQSxNQUFJLFFBQVEsRUFBUixDQVptRztBQWF2RyxNQUFJLGdCQUFnQixDQUFoQjtNQUFtQixnQkFBZ0IsQ0FBaEI7TUFBbUIsV0FBVyxFQUFYO01BQ3RDLFVBQVUsQ0FBVjtNQUFhLFVBQVUsQ0FBVixDQWRzRjs7cURBZTlGO0FBQ1AsUUFBTSxVQUFVLEtBQUssQ0FBTCxDQUFWO1FBQ0EsUUFBUSxRQUFRLEtBQVIsSUFBaUIsUUFBUSxLQUFSLENBQWMsT0FBZCxDQUFzQixLQUF0QixFQUE2QixFQUE3QixFQUFpQyxLQUFqQyxDQUF1QyxJQUF2QyxDQUFqQjtBQUNkLFlBQVEsS0FBUixHQUFnQixLQUFoQjs7QUFFQSxRQUFJLFFBQVEsS0FBUixJQUFpQixRQUFRLE9BQVIsRUFBaUI7Ozs7OztBQUVwQyxVQUFJLENBQUMsYUFBRCxFQUFnQjtBQUNsQixZQUFNLE9BQU8sS0FBSyxJQUFJLENBQUosQ0FBWixDQURZO0FBRWxCLHdCQUFnQixPQUFoQixDQUZrQjtBQUdsQix3QkFBZ0IsT0FBaEIsQ0FIa0I7O0FBS2xCLFlBQUksSUFBSixFQUFVO0FBQ1IscUJBQVcsUUFBUSxPQUFSLEdBQWtCLENBQWxCLEdBQXNCLGFBQWEsS0FBSyxLQUFMLENBQVcsS0FBWCxDQUFpQixDQUFDLFFBQVEsT0FBUixDQUEvQixDQUF0QixHQUF5RSxFQUF6RSxDQURIO0FBRVIsMkJBQWlCLFNBQVMsTUFBVCxDQUZUO0FBR1IsMkJBQWlCLFNBQVMsTUFBVCxDQUhUO1NBQVY7T0FMRjs7O0FBRm9DLG1FQWVwQyxVQUFTLElBQVQsMExBQWtCLE1BQU0sR0FBTixDQUFVLFVBQVMsS0FBVCxFQUFnQjtBQUMxQyxlQUFPLENBQUMsUUFBUSxLQUFSLEdBQWdCLEdBQWhCLEdBQXNCLEdBQXRCLENBQUQsR0FBOEIsS0FBOUIsQ0FEbUM7T0FBaEIsRUFBNUI7OztBQWZvQyxVQW9CaEMsUUFBUSxLQUFSLEVBQWU7QUFDakIsbUJBQVcsTUFBTSxNQUFOLENBRE07T0FBbkIsTUFFTztBQUNMLG1CQUFXLE1BQU0sTUFBTixDQUROO09BRlA7S0FwQkYsTUF5Qk87O0FBRUwsVUFBSSxhQUFKLEVBQW1COztBQUVqQixZQUFJLE1BQU0sTUFBTixJQUFnQixRQUFRLE9BQVIsR0FBa0IsQ0FBbEIsSUFBdUIsSUFBSSxLQUFLLE1BQUwsR0FBYyxDQUFkLEVBQWlCOzs7Ozs7QUFFOUQsa0ZBQVMsSUFBVCwyTEFBa0IsYUFBYSxLQUFiLEVBQWxCLEVBRjhEO1NBQWhFLE1BR087Ozs7OztBQUVMLGNBQUksY0FBYyxLQUFLLEdBQUwsQ0FBUyxNQUFNLE1BQU4sRUFBYyxRQUFRLE9BQVIsQ0FBckMsQ0FGQztBQUdMLGtGQUFTLElBQVQsMkxBQWtCLGFBQWEsTUFBTSxLQUFOLENBQVksQ0FBWixFQUFlLFdBQWYsQ0FBYixFQUFsQixFQUhLOztBQUtMLGNBQUksT0FBTztBQUNULHNCQUFVLGFBQVY7QUFDQSxzQkFBVyxVQUFVLGFBQVYsR0FBMEIsV0FBMUI7QUFDWCxzQkFBVSxhQUFWO0FBQ0Esc0JBQVcsVUFBVSxhQUFWLEdBQTBCLFdBQTFCO0FBQ1gsbUJBQU8sUUFBUDtXQUxFLENBTEM7QUFZTCxjQUFJLEtBQUssS0FBSyxNQUFMLEdBQWMsQ0FBZCxJQUFtQixNQUFNLE1BQU4sSUFBZ0IsUUFBUSxPQUFSLEVBQWlCOztBQUUzRCxnQkFBSSxnQkFBaUIsTUFBTSxJQUFOLENBQVcsTUFBWCxDQUFqQixDQUZ1RDtBQUczRCxnQkFBSSxnQkFBaUIsTUFBTSxJQUFOLENBQVcsTUFBWCxDQUFqQixDQUh1RDtBQUkzRCxnQkFBSSxNQUFNLE1BQU4sSUFBZ0IsQ0FBaEIsSUFBcUIsQ0FBQyxhQUFELEVBQWdCOztBQUV2Qyx1QkFBUyxNQUFULENBQWdCLEtBQUssUUFBTCxFQUFlLENBQS9CLEVBQWtDLDhCQUFsQyxFQUZ1QzthQUF6QyxNQUdPLElBQUksQ0FBQyxhQUFELElBQWtCLENBQUMsYUFBRCxFQUFnQjtBQUMzQyx1QkFBUyxJQUFULENBQWMsOEJBQWQsRUFEMkM7YUFBdEM7V0FQVDtBQVdBLGdCQUFNLElBQU4sQ0FBVyxJQUFYLEVBdkJLOztBQXlCTCwwQkFBZ0IsQ0FBaEIsQ0F6Qks7QUEwQkwsMEJBQWdCLENBQWhCLENBMUJLO0FBMkJMLHFCQUFXLEVBQVgsQ0EzQks7U0FIUDtPQUZGO0FBbUNBLGlCQUFXLE1BQU0sTUFBTixDQXJDTjtBQXNDTCxpQkFBVyxNQUFNLE1BQU4sQ0F0Q047S0F6QlA7SUFwQnFHOztBQWV2RyxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxLQUFLLE1BQUwsRUFBYSxHQUFqQyxFQUFzQzs7a0NBQTdCLEdBQTZCO0dBQXRDOztBQXdFQSxTQUFPO0FBQ0wsaUJBQWEsV0FBYixFQUEwQixhQUFhLFdBQWI7QUFDMUIsZUFBVyxTQUFYLEVBQXNCLFdBQVcsU0FBWDtBQUN0QixXQUFPLEtBQVA7R0FIRixDQXZGdUc7Q0FBbEc7O0FBOEZBLFNBQVMsbUJBQVQsQ0FBNkIsV0FBN0IsRUFBMEMsV0FBMUMsRUFBdUQsTUFBdkQsRUFBK0QsTUFBL0QsRUFBdUUsU0FBdkUsRUFBa0YsU0FBbEYsRUFBNkYsT0FBN0YsRUFBc0c7QUFDM0csTUFBTSxPQUFPLGdCQUFnQixXQUFoQixFQUE2QixXQUE3QixFQUEwQyxNQUExQyxFQUFrRCxNQUFsRCxFQUEwRCxTQUExRCxFQUFxRSxTQUFyRSxFQUFnRixPQUFoRixDQUFQLENBRHFHOztBQUczRyxNQUFNLE1BQU0sRUFBTixDQUhxRztBQUkzRyxNQUFJLGVBQWUsV0FBZixFQUE0QjtBQUM5QixRQUFJLElBQUosQ0FBUyxZQUFZLFdBQVosQ0FBVCxDQUQ4QjtHQUFoQztBQUdBLE1BQUksSUFBSixDQUFTLHFFQUFULEVBUDJHO0FBUTNHLE1BQUksSUFBSixDQUFTLFNBQVMsS0FBSyxXQUFMLElBQW9CLE9BQU8sS0FBSyxTQUFMLEtBQW1CLFdBQTFCLEdBQXdDLEVBQXhDLEdBQTZDLE9BQU8sS0FBSyxTQUFMLENBQWpGLENBQVQsQ0FSMkc7QUFTM0csTUFBSSxJQUFKLENBQVMsU0FBUyxLQUFLLFdBQUwsSUFBb0IsT0FBTyxLQUFLLFNBQUwsS0FBbUIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBTyxLQUFLLFNBQUwsQ0FBakYsQ0FBVCxDQVQyRzs7QUFXM0csT0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksS0FBSyxLQUFMLENBQVcsTUFBWCxFQUFtQixHQUF2QyxFQUE0QztBQUMxQyxRQUFNLE9BQU8sS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFQLENBRG9DO0FBRTFDLFFBQUksSUFBSixDQUNFLFNBQVMsS0FBSyxRQUFMLEdBQWdCLEdBQXpCLEdBQStCLEtBQUssUUFBTCxHQUM3QixJQURGLEdBQ1MsS0FBSyxRQUFMLEdBQWdCLEdBRHpCLEdBQytCLEtBQUssUUFBTCxHQUM3QixLQUZGLENBREYsQ0FGMEM7QUFPMUMsUUFBSSxJQUFKLENBQVMsS0FBVCxDQUFlLEdBQWYsRUFBb0IsS0FBSyxLQUFMLENBQXBCLENBUDBDO0dBQTVDOztBQVVBLFNBQU8sSUFBSSxJQUFKLENBQVMsSUFBVCxJQUFpQixJQUFqQixDQXJCb0c7Q0FBdEc7O0FBd0JBLFNBQVMsV0FBVCxDQUFxQixRQUFyQixFQUErQixNQUEvQixFQUF1QyxNQUF2QyxFQUErQyxTQUEvQyxFQUEwRCxTQUExRCxFQUFxRSxPQUFyRSxFQUE4RTtBQUNuRixTQUFPLG9CQUFvQixRQUFwQixFQUE4QixRQUE5QixFQUF3QyxNQUF4QyxFQUFnRCxNQUFoRCxFQUF3RCxTQUF4RCxFQUFtRSxTQUFuRSxFQUE4RSxPQUE5RSxDQUFQLENBRG1GO0NBQTlFIiwiZmlsZSI6ImNyZWF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlmZkxpbmVzfSBmcm9tICcuLi9kaWZmL2xpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IGNvbnRleHQ6IDQgfTtcbiAgfVxuXG4gIGNvbnN0IGRpZmYgPSBkaWZmTGluZXMob2xkU3RyLCBuZXdTdHIpO1xuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7ICAgLy8gQXBwZW5kIGFuIGVtcHR5IHZhbHVlIHRvIG1ha2UgY2xlYW51cCBlYXNpZXJcblxuICBmdW5jdGlvbiBjb250ZXh0TGluZXMobGluZXMpIHtcbiAgICByZXR1cm4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7IHJldHVybiAnICcgKyBlbnRyeTsgfSk7XG4gIH1cblxuICBsZXQgaHVua3MgPSBbXTtcbiAgbGV0IG9sZFJhbmdlU3RhcnQgPSAwLCBuZXdSYW5nZVN0YXJ0ID0gMCwgY3VyUmFuZ2UgPSBbXSxcbiAgICAgIG9sZExpbmUgPSAxLCBuZXdMaW5lID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGRpZmZbaV0sXG4gICAgICAgICAgbGluZXMgPSBjdXJyZW50LmxpbmVzIHx8IGN1cnJlbnQudmFsdWUucmVwbGFjZSgvXFxuJC8sICcnKS5zcGxpdCgnXFxuJyk7XG4gICAgY3VycmVudC5saW5lcyA9IGxpbmVzO1xuXG4gICAgaWYgKGN1cnJlbnQuYWRkZWQgfHwgY3VycmVudC5yZW1vdmVkKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIHByZXZpb3VzIGNvbnRleHQsIHN0YXJ0IHdpdGggdGhhdFxuICAgICAgaWYgKCFvbGRSYW5nZVN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBkaWZmW2kgLSAxXTtcbiAgICAgICAgb2xkUmFuZ2VTdGFydCA9IG9sZExpbmU7XG4gICAgICAgIG5ld1JhbmdlU3RhcnQgPSBuZXdMaW5lO1xuXG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgY3VyUmFuZ2UgPSBvcHRpb25zLmNvbnRleHQgPiAwID8gY29udGV4dExpbmVzKHByZXYubGluZXMuc2xpY2UoLW9wdGlvbnMuY29udGV4dCkpIDogW107XG4gICAgICAgICAgb2xkUmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgICAgbmV3UmFuZ2VTdGFydCAtPSBjdXJSYW5nZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gT3V0cHV0IG91ciBjaGFuZ2VzXG4gICAgICBjdXJSYW5nZS5wdXNoKC4uLiBsaW5lcy5tYXAoZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIChjdXJyZW50LmFkZGVkID8gJysnIDogJy0nKSArIGVudHJ5O1xuICAgICAgfSkpO1xuXG4gICAgICAvLyBUcmFjayB0aGUgdXBkYXRlZCBmaWxlIHBvc2l0aW9uXG4gICAgICBpZiAoY3VycmVudC5hZGRlZCkge1xuICAgICAgICBuZXdMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZGVudGljYWwgY29udGV4dCBsaW5lcy4gVHJhY2sgbGluZSBjaGFuZ2VzXG4gICAgICBpZiAob2xkUmFuZ2VTdGFydCkge1xuICAgICAgICAvLyBDbG9zZSBvdXQgYW55IGNoYW5nZXMgdGhhdCBoYXZlIGJlZW4gb3V0cHV0IChvciBqb2luIG92ZXJsYXBwaW5nKVxuICAgICAgICBpZiAobGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCAqIDIgJiYgaSA8IGRpZmYubGVuZ3RoIC0gMikge1xuICAgICAgICAgIC8vIE92ZXJsYXBwaW5nXG4gICAgICAgICAgY3VyUmFuZ2UucHVzaCguLi4gY29udGV4dExpbmVzKGxpbmVzKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZW5kIHRoZSByYW5nZSBhbmQgb3V0cHV0XG4gICAgICAgICAgbGV0IGNvbnRleHRTaXplID0gTWF0aC5taW4obGluZXMubGVuZ3RoLCBvcHRpb25zLmNvbnRleHQpO1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcy5zbGljZSgwLCBjb250ZXh0U2l6ZSkpKTtcblxuICAgICAgICAgIGxldCBodW5rID0ge1xuICAgICAgICAgICAgb2xkU3RhcnQ6IG9sZFJhbmdlU3RhcnQsXG4gICAgICAgICAgICBvbGRMaW5lczogKG9sZExpbmUgLSBvbGRSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbmV3U3RhcnQ6IG5ld1JhbmdlU3RhcnQsXG4gICAgICAgICAgICBuZXdMaW5lczogKG5ld0xpbmUgLSBuZXdSYW5nZVN0YXJ0ICsgY29udGV4dFNpemUpLFxuICAgICAgICAgICAgbGluZXM6IGN1clJhbmdlXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoaSA+PSBkaWZmLmxlbmd0aCAtIDIgJiYgbGluZXMubGVuZ3RoIDw9IG9wdGlvbnMuY29udGV4dCkge1xuICAgICAgICAgICAgLy8gRU9GIGlzIGluc2lkZSB0aGlzIGh1bmtcbiAgICAgICAgICAgIGxldCBvbGRFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoL1xcbiQvLnRlc3QobmV3U3RyKSk7XG4gICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID09IDAgJiYgIW9sZEVPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICBjdXJSYW5nZS5zcGxpY2UoaHVuay5vbGRMaW5lcywgMCwgJ1xcXFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghb2xkRU9GTmV3bGluZSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUd29GaWxlc1BhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRpZmYgPSBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAob2xkRmlsZU5hbWUgPT0gbmV3RmlsZU5hbWUpIHtcbiAgICByZXQucHVzaCgnSW5kZXg6ICcgKyBvbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF0Y2goZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gY3JlYXRlVHdvRmlsZXNQYXRjaChmaWxlTmFtZSwgZmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucyk7XG59XG4iXX0=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/merge.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/merge.js
    deleted file mode 100644
    index dd9df3b8..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/merge.js
    +++ /dev/null
    @@ -1,380 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/calcLineCount = calcLineCount;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/merge = merge;
    -
    -var /*istanbul ignore start*/_create = require('./create') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_parse = require('./parse') /*istanbul ignore end*/;
    -
    -var /*istanbul ignore start*/_array = require('../util/array') /*istanbul ignore end*/;
    -
    -/*istanbul ignore start*/
    -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
    -
    -/*istanbul ignore end*/function calcLineCount(hunk) {
    -  var conflicted = false;
    -
    -  hunk.oldLines = 0;
    -  hunk.newLines = 0;
    -
    -  hunk.lines.forEach(function (line) {
    -    if (typeof line !== 'string') {
    -      conflicted = true;
    -      return;
    -    }
    -
    -    if (line[0] === '+' || line[0] === ' ') {
    -      hunk.newLines++;
    -    }
    -    if (line[0] === '-' || line[0] === ' ') {
    -      hunk.oldLines++;
    -    }
    -  });
    -
    -  if (conflicted) {
    -    delete hunk.oldLines;
    -    delete hunk.newLines;
    -  }
    -}
    -
    -function merge(mine, theirs, base) {
    -  mine = loadPatch(mine, base);
    -  theirs = loadPatch(theirs, base);
    -
    -  var ret = {};
    -
    -  // For index we just let it pass through as it doesn't have any necessary meaning.
    -  // Leaving sanity checks on this to the API consumer that may know more about the
    -  // meaning in their own context.
    -  if (mine.index || theirs.index) {
    -    ret.index = mine.index || theirs.index;
    -  }
    -
    -  if (mine.newFileName || theirs.newFileName) {
    -    if (!fileNameChanged(mine)) {
    -      // No header or no change in ours, use theirs (and ours if theirs does not exist)
    -      ret.oldFileName = theirs.oldFileName || mine.oldFileName;
    -      ret.newFileName = theirs.newFileName || mine.newFileName;
    -      ret.oldHeader = theirs.oldHeader || mine.oldHeader;
    -      ret.newHeader = theirs.newHeader || mine.newHeader;
    -    } else if (!fileNameChanged(theirs)) {
    -      // No header or no change in theirs, use ours
    -      ret.oldFileName = mine.oldFileName;
    -      ret.newFileName = mine.newFileName;
    -      ret.oldHeader = mine.oldHeader;
    -      ret.newHeader = mine.newHeader;
    -    } else {
    -      // Both changed... figure it out
    -      ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
    -      ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
    -      ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
    -      ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
    -    }
    -  }
    -
    -  ret.hunks = [];
    -
    -  var mineIndex = 0,
    -      theirsIndex = 0,
    -      mineOffset = 0,
    -      theirsOffset = 0;
    -
    -  while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
    -    var mineCurrent = mine.hunks[mineIndex] || { oldStart: Infinity },
    -        theirsCurrent = theirs.hunks[theirsIndex] || { oldStart: Infinity };
    -
    -    if (hunkBefore(mineCurrent, theirsCurrent)) {
    -      // This patch does not overlap with any of the others, yay.
    -      ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
    -      mineIndex++;
    -      theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
    -    } else if (hunkBefore(theirsCurrent, mineCurrent)) {
    -      // This patch does not overlap with any of the others, yay.
    -      ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
    -      theirsIndex++;
    -      mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
    -    } else {
    -      // Overlap, merge as best we can
    -      var mergedHunk = {
    -        oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
    -        oldLines: 0,
    -        newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
    -        newLines: 0,
    -        lines: []
    -      };
    -      mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
    -      theirsIndex++;
    -      mineIndex++;
    -
    -      ret.hunks.push(mergedHunk);
    -    }
    -  }
    -
    -  return ret;
    -}
    -
    -function loadPatch(param, base) {
    -  if (typeof param === 'string') {
    -    if (/^@@/m.test(param) || /^Index:/m.test(param)) {
    -      return (/*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(param)[0]
    -      );
    -    }
    -
    -    if (!base) {
    -      throw new Error('Must provide a base reference or pass in a patch');
    -    }
    -    return (/*istanbul ignore start*/(0, _create.structuredPatch) /*istanbul ignore end*/(undefined, undefined, base, param)
    -    );
    -  }
    -
    -  return param;
    -}
    -
    -function fileNameChanged(patch) {
    -  return patch.newFileName && patch.newFileName !== patch.oldFileName;
    -}
    -
    -function selectField(index, mine, theirs) {
    -  if (mine === theirs) {
    -    return mine;
    -  } else {
    -    index.conflict = true;
    -    return { mine: mine, theirs: theirs };
    -  }
    -}
    -
    -function hunkBefore(test, check) {
    -  return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
    -}
    -
    -function cloneHunk(hunk, offset) {
    -  return {
    -    oldStart: hunk.oldStart, oldLines: hunk.oldLines,
    -    newStart: hunk.newStart + offset, newLines: hunk.newLines,
    -    lines: hunk.lines
    -  };
    -}
    -
    -function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
    -  // This will generally result in a conflicted hunk, but there are cases where the context
    -  // is the only overlap where we can successfully merge the content here.
    -  var mine = { offset: mineOffset, lines: mineLines, index: 0 },
    -      their = { offset: theirOffset, lines: theirLines, index: 0 };
    -
    -  // Handle any leading content
    -  insertLeading(hunk, mine, their);
    -  insertLeading(hunk, their, mine);
    -
    -  // Now in the overlap content. Scan through and select the best changes from each.
    -  while (mine.index < mine.lines.length && their.index < their.lines.length) {
    -    var mineCurrent = mine.lines[mine.index],
    -        theirCurrent = their.lines[their.index];
    -
    -    if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
    -      // Both modified ...
    -      mutualChange(hunk, mine, their);
    -    } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
    -      /*istanbul ignore start*/
    -      var _hunk$lines;
    -
    -      /*istanbul ignore end*/
    -      // Mine inserted
    -      /*istanbul ignore start*/(_hunk$lines = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(mine)));
    -    } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
    -      /*istanbul ignore start*/
    -      var _hunk$lines2;
    -
    -      /*istanbul ignore end*/
    -      // Theirs inserted
    -      /*istanbul ignore start*/(_hunk$lines2 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(their)));
    -    } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
    -      // Mine removed or edited
    -      removal(hunk, mine, their);
    -    } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
    -      // Their removed or edited
    -      removal(hunk, their, mine, true);
    -    } else if (mineCurrent === theirCurrent) {
    -      // Context identity
    -      hunk.lines.push(mineCurrent);
    -      mine.index++;
    -      their.index++;
    -    } else {
    -      // Context mismatch
    -      conflict(hunk, collectChange(mine), collectChange(their));
    -    }
    -  }
    -
    -  // Now push anything that may be remaining
    -  insertTrailing(hunk, mine);
    -  insertTrailing(hunk, their);
    -
    -  calcLineCount(hunk);
    -}
    -
    -function mutualChange(hunk, mine, their) {
    -  var myChanges = collectChange(mine),
    -      theirChanges = collectChange(their);
    -
    -  if (allRemoves(myChanges) && allRemoves(theirChanges)) {
    -    // Special case for remove changes that are supersets of one another
    -    if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
    -      /*istanbul ignore start*/
    -      var _hunk$lines3;
    -
    -      /*istanbul ignore end*/
    -      /*istanbul ignore start*/(_hunk$lines3 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
    -      return;
    -    } else if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
    -      /*istanbul ignore start*/
    -      var _hunk$lines4;
    -
    -      /*istanbul ignore end*/
    -      /*istanbul ignore start*/(_hunk$lines4 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines4 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges));
    -      return;
    -    }
    -  } else if ( /*istanbul ignore start*/(0, _array.arrayEqual) /*istanbul ignore end*/(myChanges, theirChanges)) {
    -    /*istanbul ignore start*/
    -    var _hunk$lines5;
    -
    -    /*istanbul ignore end*/
    -    /*istanbul ignore start*/(_hunk$lines5 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines5 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
    -    return;
    -  }
    -
    -  conflict(hunk, myChanges, theirChanges);
    -}
    -
    -function removal(hunk, mine, their, swap) {
    -  var myChanges = collectChange(mine),
    -      theirChanges = collectContext(their, myChanges);
    -  if (theirChanges.merged) {
    -    /*istanbul ignore start*/
    -    var _hunk$lines6;
    -
    -    /*istanbul ignore end*/
    -    /*istanbul ignore start*/(_hunk$lines6 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines6 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges.merged));
    -  } else {
    -    conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
    -  }
    -}
    -
    -function conflict(hunk, mine, their) {
    -  hunk.conflict = true;
    -  hunk.lines.push({
    -    conflict: true,
    -    mine: mine,
    -    theirs: their
    -  });
    -}
    -
    -function insertLeading(hunk, insert, their) {
    -  while (insert.offset < their.offset && insert.index < insert.lines.length) {
    -    var line = insert.lines[insert.index++];
    -    hunk.lines.push(line);
    -    insert.offset++;
    -  }
    -}
    -function insertTrailing(hunk, insert) {
    -  while (insert.index < insert.lines.length) {
    -    var line = insert.lines[insert.index++];
    -    hunk.lines.push(line);
    -  }
    -}
    -
    -function collectChange(state) {
    -  var ret = [],
    -      operation = state.lines[state.index][0];
    -  while (state.index < state.lines.length) {
    -    var line = state.lines[state.index];
    -
    -    // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
    -    if (operation === '-' && line[0] === '+') {
    -      operation = '+';
    -    }
    -
    -    if (operation === line[0]) {
    -      ret.push(line);
    -      state.index++;
    -    } else {
    -      break;
    -    }
    -  }
    -
    -  return ret;
    -}
    -function collectContext(state, matchChanges) {
    -  var changes = [],
    -      merged = [],
    -      matchIndex = 0,
    -      contextChanges = false,
    -      conflicted = false;
    -  while (matchIndex < matchChanges.length && state.index < state.lines.length) {
    -    var change = state.lines[state.index],
    -        match = matchChanges[matchIndex];
    -
    -    // Once we've hit our add, then we are done
    -    if (match[0] === '+') {
    -      break;
    -    }
    -
    -    contextChanges = contextChanges || change[0] !== ' ';
    -
    -    merged.push(match);
    -    matchIndex++;
    -
    -    // Consume any additions in the other block as a conflict to attempt
    -    // to pull in the remaining context after this
    -    if (change[0] === '+') {
    -      conflicted = true;
    -
    -      while (change[0] === '+') {
    -        changes.push(change);
    -        change = state.lines[++state.index];
    -      }
    -    }
    -
    -    if (match.substr(1) === change.substr(1)) {
    -      changes.push(change);
    -      state.index++;
    -    } else {
    -      conflicted = true;
    -    }
    -  }
    -
    -  if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
    -    conflicted = true;
    -  }
    -
    -  if (conflicted) {
    -    return changes;
    -  }
    -
    -  while (matchIndex < matchChanges.length) {
    -    merged.push(matchChanges[matchIndex++]);
    -  }
    -
    -  return {
    -    merged: merged,
    -    changes: changes
    -  };
    -}
    -
    -function allRemoves(changes) {
    -  return changes.reduce(function (prev, change) {
    -    return prev && change[0] === '-';
    -  }, true);
    -}
    -function skipRemoveSuperset(state, removeChanges, delta) {
    -  for (var i = 0; i < delta; i++) {
    -    var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
    -    if (state.lines[state.index + i] !== ' ' + changeContent) {
    -      return false;
    -    }
    -  }
    -
    -  state.index += delta;
    -  return true;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBS2dCO3lEQTBCQTs7QUEvQmhCOztBQUNBOztBQUVBOzs7Ozt1QkFFTyxTQUFTLGFBQVQsQ0FBdUIsSUFBdkIsRUFBNkI7QUFDbEMsTUFBSSxhQUFhLEtBQWIsQ0FEOEI7O0FBR2xDLE9BQUssUUFBTCxHQUFnQixDQUFoQixDQUhrQztBQUlsQyxPQUFLLFFBQUwsR0FBZ0IsQ0FBaEIsQ0FKa0M7O0FBTWxDLE9BQUssS0FBTCxDQUFXLE9BQVgsQ0FBbUIsVUFBUyxJQUFULEVBQWU7QUFDaEMsUUFBSSxPQUFPLElBQVAsS0FBZ0IsUUFBaEIsRUFBMEI7QUFDNUIsbUJBQWEsSUFBYixDQUQ0QjtBQUU1QixhQUY0QjtLQUE5Qjs7QUFLQSxRQUFJLEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUIsS0FBSyxDQUFMLE1BQVksR0FBWixFQUFpQjtBQUN0QyxXQUFLLFFBQUwsR0FEc0M7S0FBeEM7QUFHQSxRQUFJLEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUIsS0FBSyxDQUFMLE1BQVksR0FBWixFQUFpQjtBQUN0QyxXQUFLLFFBQUwsR0FEc0M7S0FBeEM7R0FUaUIsQ0FBbkIsQ0FOa0M7O0FBb0JsQyxNQUFJLFVBQUosRUFBZ0I7QUFDZCxXQUFPLEtBQUssUUFBTCxDQURPO0FBRWQsV0FBTyxLQUFLLFFBQUwsQ0FGTztHQUFoQjtDQXBCSzs7QUEwQkEsU0FBUyxLQUFULENBQWUsSUFBZixFQUFxQixNQUFyQixFQUE2QixJQUE3QixFQUFtQztBQUN4QyxTQUFPLFVBQVUsSUFBVixFQUFnQixJQUFoQixDQUFQLENBRHdDO0FBRXhDLFdBQVMsVUFBVSxNQUFWLEVBQWtCLElBQWxCLENBQVQsQ0FGd0M7O0FBSXhDLE1BQUksTUFBTSxFQUFOOzs7OztBQUpvQyxNQVNwQyxLQUFLLEtBQUwsSUFBYyxPQUFPLEtBQVAsRUFBYztBQUM5QixRQUFJLEtBQUosR0FBWSxLQUFLLEtBQUwsSUFBYyxPQUFPLEtBQVAsQ0FESTtHQUFoQzs7QUFJQSxNQUFJLEtBQUssV0FBTCxJQUFvQixPQUFPLFdBQVAsRUFBb0I7QUFDMUMsUUFBSSxDQUFDLGdCQUFnQixJQUFoQixDQUFELEVBQXdCOztBQUUxQixVQUFJLFdBQUosR0FBa0IsT0FBTyxXQUFQLElBQXNCLEtBQUssV0FBTCxDQUZkO0FBRzFCLFVBQUksV0FBSixHQUFrQixPQUFPLFdBQVAsSUFBc0IsS0FBSyxXQUFMLENBSGQ7QUFJMUIsVUFBSSxTQUFKLEdBQWdCLE9BQU8sU0FBUCxJQUFvQixLQUFLLFNBQUwsQ0FKVjtBQUsxQixVQUFJLFNBQUosR0FBZ0IsT0FBTyxTQUFQLElBQW9CLEtBQUssU0FBTCxDQUxWO0tBQTVCLE1BTU8sSUFBSSxDQUFDLGdCQUFnQixNQUFoQixDQUFELEVBQTBCOztBQUVuQyxVQUFJLFdBQUosR0FBa0IsS0FBSyxXQUFMLENBRmlCO0FBR25DLFVBQUksV0FBSixHQUFrQixLQUFLLFdBQUwsQ0FIaUI7QUFJbkMsVUFBSSxTQUFKLEdBQWdCLEtBQUssU0FBTCxDQUptQjtBQUtuQyxVQUFJLFNBQUosR0FBZ0IsS0FBSyxTQUFMLENBTG1CO0tBQTlCLE1BTUE7O0FBRUwsVUFBSSxXQUFKLEdBQWtCLFlBQVksR0FBWixFQUFpQixLQUFLLFdBQUwsRUFBa0IsT0FBTyxXQUFQLENBQXJELENBRks7QUFHTCxVQUFJLFdBQUosR0FBa0IsWUFBWSxHQUFaLEVBQWlCLEtBQUssV0FBTCxFQUFrQixPQUFPLFdBQVAsQ0FBckQsQ0FISztBQUlMLFVBQUksU0FBSixHQUFnQixZQUFZLEdBQVosRUFBaUIsS0FBSyxTQUFMLEVBQWdCLE9BQU8sU0FBUCxDQUFqRCxDQUpLO0FBS0wsVUFBSSxTQUFKLEdBQWdCLFlBQVksR0FBWixFQUFpQixLQUFLLFNBQUwsRUFBZ0IsT0FBTyxTQUFQLENBQWpELENBTEs7S0FOQTtHQVBUOztBQXNCQSxNQUFJLEtBQUosR0FBWSxFQUFaLENBbkN3Qzs7QUFxQ3hDLE1BQUksWUFBWSxDQUFaO01BQ0EsY0FBYyxDQUFkO01BQ0EsYUFBYSxDQUFiO01BQ0EsZUFBZSxDQUFmLENBeENvQzs7QUEwQ3hDLFNBQU8sWUFBWSxLQUFLLEtBQUwsQ0FBVyxNQUFYLElBQXFCLGNBQWMsT0FBTyxLQUFQLENBQWEsTUFBYixFQUFxQjtBQUN6RSxRQUFJLGNBQWMsS0FBSyxLQUFMLENBQVcsU0FBWCxLQUF5QixFQUFDLFVBQVUsUUFBVixFQUExQjtRQUNkLGdCQUFnQixPQUFPLEtBQVAsQ0FBYSxXQUFiLEtBQTZCLEVBQUMsVUFBVSxRQUFWLEVBQTlCLENBRnFEOztBQUl6RSxRQUFJLFdBQVcsV0FBWCxFQUF3QixhQUF4QixDQUFKLEVBQTRDOztBQUUxQyxVQUFJLEtBQUosQ0FBVSxJQUFWLENBQWUsVUFBVSxXQUFWLEVBQXVCLFVBQXZCLENBQWYsRUFGMEM7QUFHMUMsa0JBSDBDO0FBSTFDLHNCQUFnQixZQUFZLFFBQVosR0FBdUIsWUFBWSxRQUFaLENBSkc7S0FBNUMsTUFLTyxJQUFJLFdBQVcsYUFBWCxFQUEwQixXQUExQixDQUFKLEVBQTRDOztBQUVqRCxVQUFJLEtBQUosQ0FBVSxJQUFWLENBQWUsVUFBVSxhQUFWLEVBQXlCLFlBQXpCLENBQWYsRUFGaUQ7QUFHakQsb0JBSGlEO0FBSWpELG9CQUFjLGNBQWMsUUFBZCxHQUF5QixjQUFjLFFBQWQsQ0FKVTtLQUE1QyxNQUtBOztBQUVMLFVBQUksYUFBYTtBQUNmLGtCQUFVLEtBQUssR0FBTCxDQUFTLFlBQVksUUFBWixFQUFzQixjQUFjLFFBQWQsQ0FBekM7QUFDQSxrQkFBVSxDQUFWO0FBQ0Esa0JBQVUsS0FBSyxHQUFMLENBQVMsWUFBWSxRQUFaLEdBQXVCLFVBQXZCLEVBQW1DLGNBQWMsUUFBZCxHQUF5QixZQUF6QixDQUF0RDtBQUNBLGtCQUFVLENBQVY7QUFDQSxlQUFPLEVBQVA7T0FMRSxDQUZDO0FBU0wsaUJBQVcsVUFBWCxFQUF1QixZQUFZLFFBQVosRUFBc0IsWUFBWSxLQUFaLEVBQW1CLGNBQWMsUUFBZCxFQUF3QixjQUFjLEtBQWQsQ0FBeEYsQ0FUSztBQVVMLG9CQVZLO0FBV0wsa0JBWEs7O0FBYUwsVUFBSSxLQUFKLENBQVUsSUFBVixDQUFlLFVBQWYsRUFiSztLQUxBO0dBVFQ7O0FBK0JBLFNBQU8sR0FBUCxDQXpFd0M7Q0FBbkM7O0FBNEVQLFNBQVMsU0FBVCxDQUFtQixLQUFuQixFQUEwQixJQUExQixFQUFnQztBQUM5QixNQUFJLE9BQU8sS0FBUCxLQUFpQixRQUFqQixFQUEyQjtBQUM3QixRQUFJLE9BQU8sSUFBUCxDQUFZLEtBQVosS0FBdUIsV0FBVyxJQUFYLENBQWdCLEtBQWhCLENBQXZCLEVBQWdEO0FBQ2xELGFBQU8seUVBQVcsS0FBWCxFQUFrQixDQUFsQixDQUFQO1FBRGtEO0tBQXBEOztBQUlBLFFBQUksQ0FBQyxJQUFELEVBQU87QUFDVCxZQUFNLElBQUksS0FBSixDQUFVLGtEQUFWLENBQU4sQ0FEUztLQUFYO0FBR0EsV0FBTywrRUFBZ0IsU0FBaEIsRUFBMkIsU0FBM0IsRUFBc0MsSUFBdEMsRUFBNEMsS0FBNUMsQ0FBUDtNQVI2QjtHQUEvQjs7QUFXQSxTQUFPLEtBQVAsQ0FaOEI7Q0FBaEM7O0FBZUEsU0FBUyxlQUFULENBQXlCLEtBQXpCLEVBQWdDO0FBQzlCLFNBQU8sTUFBTSxXQUFOLElBQXFCLE1BQU0sV0FBTixLQUFzQixNQUFNLFdBQU4sQ0FEcEI7Q0FBaEM7O0FBSUEsU0FBUyxXQUFULENBQXFCLEtBQXJCLEVBQTRCLElBQTVCLEVBQWtDLE1BQWxDLEVBQTBDO0FBQ3hDLE1BQUksU0FBUyxNQUFULEVBQWlCO0FBQ25CLFdBQU8sSUFBUCxDQURtQjtHQUFyQixNQUVPO0FBQ0wsVUFBTSxRQUFOLEdBQWlCLElBQWpCLENBREs7QUFFTCxXQUFPLEVBQUMsVUFBRCxFQUFPLGNBQVAsRUFBUCxDQUZLO0dBRlA7Q0FERjs7QUFTQSxTQUFTLFVBQVQsQ0FBb0IsSUFBcEIsRUFBMEIsS0FBMUIsRUFBaUM7QUFDL0IsU0FBTyxLQUFLLFFBQUwsR0FBZ0IsTUFBTSxRQUFOLElBQ2xCLElBQUMsQ0FBSyxRQUFMLEdBQWdCLEtBQUssUUFBTCxHQUFpQixNQUFNLFFBQU4sQ0FGUjtDQUFqQzs7QUFLQSxTQUFTLFNBQVQsQ0FBbUIsSUFBbkIsRUFBeUIsTUFBekIsRUFBaUM7QUFDL0IsU0FBTztBQUNMLGNBQVUsS0FBSyxRQUFMLEVBQWUsVUFBVSxLQUFLLFFBQUw7QUFDbkMsY0FBVSxLQUFLLFFBQUwsR0FBZ0IsTUFBaEIsRUFBd0IsVUFBVSxLQUFLLFFBQUw7QUFDNUMsV0FBTyxLQUFLLEtBQUw7R0FIVCxDQUQrQjtDQUFqQzs7QUFRQSxTQUFTLFVBQVQsQ0FBb0IsSUFBcEIsRUFBMEIsVUFBMUIsRUFBc0MsU0FBdEMsRUFBaUQsV0FBakQsRUFBOEQsVUFBOUQsRUFBMEU7OztBQUd4RSxNQUFJLE9BQU8sRUFBQyxRQUFRLFVBQVIsRUFBb0IsT0FBTyxTQUFQLEVBQWtCLE9BQU8sQ0FBUCxFQUE5QztNQUNBLFFBQVEsRUFBQyxRQUFRLFdBQVIsRUFBcUIsT0FBTyxVQUFQLEVBQW1CLE9BQU8sQ0FBUCxFQUFqRDs7O0FBSm9FLGVBT3hFLENBQWMsSUFBZCxFQUFvQixJQUFwQixFQUEwQixLQUExQixFQVB3RTtBQVF4RSxnQkFBYyxJQUFkLEVBQW9CLEtBQXBCLEVBQTJCLElBQTNCOzs7QUFSd0UsU0FXakUsS0FBSyxLQUFMLEdBQWEsS0FBSyxLQUFMLENBQVcsTUFBWCxJQUFxQixNQUFNLEtBQU4sR0FBYyxNQUFNLEtBQU4sQ0FBWSxNQUFaLEVBQW9CO0FBQ3pFLFFBQUksY0FBYyxLQUFLLEtBQUwsQ0FBVyxLQUFLLEtBQUwsQ0FBekI7UUFDQSxlQUFlLE1BQU0sS0FBTixDQUFZLE1BQU0sS0FBTixDQUEzQixDQUZxRTs7QUFJekUsUUFBSSxDQUFDLFlBQVksQ0FBWixNQUFtQixHQUFuQixJQUEwQixZQUFZLENBQVosTUFBbUIsR0FBbkIsQ0FBM0IsS0FDSSxhQUFhLENBQWIsTUFBb0IsR0FBcEIsSUFBMkIsYUFBYSxDQUFiLE1BQW9CLEdBQXBCLENBRC9CLEVBQ3lEOztBQUUzRCxtQkFBYSxJQUFiLEVBQW1CLElBQW5CLEVBQXlCLEtBQXpCLEVBRjJEO0tBRDdELE1BSU8sSUFBSSxZQUFZLENBQVosTUFBbUIsR0FBbkIsSUFBMEIsYUFBYSxDQUFiLE1BQW9CLEdBQXBCLEVBQXlCOzs7Ozs7QUFFNUQsMEVBQUssS0FBTCxFQUFXLElBQVgsNExBQW9CLGNBQWMsSUFBZCxFQUFwQixFQUY0RDtLQUF2RCxNQUdBLElBQUksYUFBYSxDQUFiLE1BQW9CLEdBQXBCLElBQTJCLFlBQVksQ0FBWixNQUFtQixHQUFuQixFQUF3Qjs7Ozs7O0FBRTVELDJFQUFLLEtBQUwsRUFBVyxJQUFYLDZMQUFvQixjQUFjLEtBQWQsRUFBcEIsRUFGNEQ7S0FBdkQsTUFHQSxJQUFJLFlBQVksQ0FBWixNQUFtQixHQUFuQixJQUEwQixhQUFhLENBQWIsTUFBb0IsR0FBcEIsRUFBeUI7O0FBRTVELGNBQVEsSUFBUixFQUFjLElBQWQsRUFBb0IsS0FBcEIsRUFGNEQ7S0FBdkQsTUFHQSxJQUFJLGFBQWEsQ0FBYixNQUFvQixHQUFwQixJQUEyQixZQUFZLENBQVosTUFBbUIsR0FBbkIsRUFBd0I7O0FBRTVELGNBQVEsSUFBUixFQUFjLEtBQWQsRUFBcUIsSUFBckIsRUFBMkIsSUFBM0IsRUFGNEQ7S0FBdkQsTUFHQSxJQUFJLGdCQUFnQixZQUFoQixFQUE4Qjs7QUFFdkMsV0FBSyxLQUFMLENBQVcsSUFBWCxDQUFnQixXQUFoQixFQUZ1QztBQUd2QyxXQUFLLEtBQUwsR0FIdUM7QUFJdkMsWUFBTSxLQUFOLEdBSnVDO0tBQWxDLE1BS0E7O0FBRUwsZUFBUyxJQUFULEVBQWUsY0FBYyxJQUFkLENBQWYsRUFBb0MsY0FBYyxLQUFkLENBQXBDLEVBRks7S0FMQTtHQXBCVDs7O0FBWHdFLGdCQTJDeEUsQ0FBZSxJQUFmLEVBQXFCLElBQXJCLEVBM0N3RTtBQTRDeEUsaUJBQWUsSUFBZixFQUFxQixLQUFyQixFQTVDd0U7O0FBOEN4RSxnQkFBYyxJQUFkLEVBOUN3RTtDQUExRTs7QUFpREEsU0FBUyxZQUFULENBQXNCLElBQXRCLEVBQTRCLElBQTVCLEVBQWtDLEtBQWxDLEVBQXlDO0FBQ3ZDLE1BQUksWUFBWSxjQUFjLElBQWQsQ0FBWjtNQUNBLGVBQWUsY0FBYyxLQUFkLENBQWYsQ0FGbUM7O0FBSXZDLE1BQUksV0FBVyxTQUFYLEtBQXlCLFdBQVcsWUFBWCxDQUF6QixFQUFtRDs7QUFFckQsUUFBSSw4RUFBZ0IsU0FBaEIsRUFBMkIsWUFBM0IsS0FDRyxtQkFBbUIsS0FBbkIsRUFBMEIsU0FBMUIsRUFBcUMsVUFBVSxNQUFWLEdBQW1CLGFBQWEsTUFBYixDQUQzRCxFQUNpRjs7Ozs7QUFDbkYsMkVBQUssS0FBTCxFQUFXLElBQVgsNkxBQW9CLFVBQXBCLEVBRG1GO0FBRW5GLGFBRm1GO0tBRHJGLE1BSU8sSUFBSSw4RUFBZ0IsWUFBaEIsRUFBOEIsU0FBOUIsS0FDSixtQkFBbUIsSUFBbkIsRUFBeUIsWUFBekIsRUFBdUMsYUFBYSxNQUFiLEdBQXNCLFVBQVUsTUFBVixDQUR6RCxFQUM0RTs7Ozs7QUFDckYsMkVBQUssS0FBTCxFQUFXLElBQVgsNkxBQW9CLGFBQXBCLEVBRHFGO0FBRXJGLGFBRnFGO0tBRGhGO0dBTlQsTUFXTyxJQUFJLHlFQUFXLFNBQVgsRUFBc0IsWUFBdEIsQ0FBSixFQUF5Qzs7Ozs7QUFDOUMseUVBQUssS0FBTCxFQUFXLElBQVgsNkxBQW9CLFVBQXBCLEVBRDhDO0FBRTlDLFdBRjhDO0dBQXpDOztBQUtQLFdBQVMsSUFBVCxFQUFlLFNBQWYsRUFBMEIsWUFBMUIsRUFwQnVDO0NBQXpDOztBQXVCQSxTQUFTLE9BQVQsQ0FBaUIsSUFBakIsRUFBdUIsSUFBdkIsRUFBNkIsS0FBN0IsRUFBb0MsSUFBcEMsRUFBMEM7QUFDeEMsTUFBSSxZQUFZLGNBQWMsSUFBZCxDQUFaO01BQ0EsZUFBZSxlQUFlLEtBQWYsRUFBc0IsU0FBdEIsQ0FBZixDQUZvQztBQUd4QyxNQUFJLGFBQWEsTUFBYixFQUFxQjs7Ozs7QUFDdkIseUVBQUssS0FBTCxFQUFXLElBQVgsNkxBQW9CLGFBQWEsTUFBYixDQUFwQixFQUR1QjtHQUF6QixNQUVPO0FBQ0wsYUFBUyxJQUFULEVBQWUsT0FBTyxZQUFQLEdBQXNCLFNBQXRCLEVBQWlDLE9BQU8sU0FBUCxHQUFtQixZQUFuQixDQUFoRCxDQURLO0dBRlA7Q0FIRjs7QUFVQSxTQUFTLFFBQVQsQ0FBa0IsSUFBbEIsRUFBd0IsSUFBeEIsRUFBOEIsS0FBOUIsRUFBcUM7QUFDbkMsT0FBSyxRQUFMLEdBQWdCLElBQWhCLENBRG1DO0FBRW5DLE9BQUssS0FBTCxDQUFXLElBQVgsQ0FBZ0I7QUFDZCxjQUFVLElBQVY7QUFDQSxVQUFNLElBQU47QUFDQSxZQUFRLEtBQVI7R0FIRixFQUZtQztDQUFyQzs7QUFTQSxTQUFTLGFBQVQsQ0FBdUIsSUFBdkIsRUFBNkIsTUFBN0IsRUFBcUMsS0FBckMsRUFBNEM7QUFDMUMsU0FBTyxPQUFPLE1BQVAsR0FBZ0IsTUFBTSxNQUFOLElBQWdCLE9BQU8sS0FBUCxHQUFlLE9BQU8sS0FBUCxDQUFhLE1BQWIsRUFBcUI7QUFDekUsUUFBSSxPQUFPLE9BQU8sS0FBUCxDQUFhLE9BQU8sS0FBUCxFQUFiLENBQVAsQ0FEcUU7QUFFekUsU0FBSyxLQUFMLENBQVcsSUFBWCxDQUFnQixJQUFoQixFQUZ5RTtBQUd6RSxXQUFPLE1BQVAsR0FIeUU7R0FBM0U7Q0FERjtBQU9BLFNBQVMsY0FBVCxDQUF3QixJQUF4QixFQUE4QixNQUE5QixFQUFzQztBQUNwQyxTQUFPLE9BQU8sS0FBUCxHQUFlLE9BQU8sS0FBUCxDQUFhLE1BQWIsRUFBcUI7QUFDekMsUUFBSSxPQUFPLE9BQU8sS0FBUCxDQUFhLE9BQU8sS0FBUCxFQUFiLENBQVAsQ0FEcUM7QUFFekMsU0FBSyxLQUFMLENBQVcsSUFBWCxDQUFnQixJQUFoQixFQUZ5QztHQUEzQztDQURGOztBQU9BLFNBQVMsYUFBVCxDQUF1QixLQUF2QixFQUE4QjtBQUM1QixNQUFJLE1BQU0sRUFBTjtNQUNBLFlBQVksTUFBTSxLQUFOLENBQVksTUFBTSxLQUFOLENBQVosQ0FBeUIsQ0FBekIsQ0FBWixDQUZ3QjtBQUc1QixTQUFPLE1BQU0sS0FBTixHQUFjLE1BQU0sS0FBTixDQUFZLE1BQVosRUFBb0I7QUFDdkMsUUFBSSxPQUFPLE1BQU0sS0FBTixDQUFZLE1BQU0sS0FBTixDQUFuQjs7O0FBRG1DLFFBSW5DLGNBQWMsR0FBZCxJQUFxQixLQUFLLENBQUwsTUFBWSxHQUFaLEVBQWlCO0FBQ3hDLGtCQUFZLEdBQVosQ0FEd0M7S0FBMUM7O0FBSUEsUUFBSSxjQUFjLEtBQUssQ0FBTCxDQUFkLEVBQXVCO0FBQ3pCLFVBQUksSUFBSixDQUFTLElBQVQsRUFEeUI7QUFFekIsWUFBTSxLQUFOLEdBRnlCO0tBQTNCLE1BR087QUFDTCxZQURLO0tBSFA7R0FSRjs7QUFnQkEsU0FBTyxHQUFQLENBbkI0QjtDQUE5QjtBQXFCQSxTQUFTLGNBQVQsQ0FBd0IsS0FBeEIsRUFBK0IsWUFBL0IsRUFBNkM7QUFDM0MsTUFBSSxVQUFVLEVBQVY7TUFDQSxTQUFTLEVBQVQ7TUFDQSxhQUFhLENBQWI7TUFDQSxpQkFBaUIsS0FBakI7TUFDQSxhQUFhLEtBQWIsQ0FMdUM7QUFNM0MsU0FBTyxhQUFhLGFBQWEsTUFBYixJQUNYLE1BQU0sS0FBTixHQUFjLE1BQU0sS0FBTixDQUFZLE1BQVosRUFBb0I7QUFDekMsUUFBSSxTQUFTLE1BQU0sS0FBTixDQUFZLE1BQU0sS0FBTixDQUFyQjtRQUNBLFFBQVEsYUFBYSxVQUFiLENBQVI7OztBQUZxQyxRQUtyQyxNQUFNLENBQU4sTUFBYSxHQUFiLEVBQWtCO0FBQ3BCLFlBRG9CO0tBQXRCOztBQUlBLHFCQUFpQixrQkFBa0IsT0FBTyxDQUFQLE1BQWMsR0FBZCxDQVRNOztBQVd6QyxXQUFPLElBQVAsQ0FBWSxLQUFaLEVBWHlDO0FBWXpDOzs7O0FBWnlDLFFBZ0JyQyxPQUFPLENBQVAsTUFBYyxHQUFkLEVBQW1CO0FBQ3JCLG1CQUFhLElBQWIsQ0FEcUI7O0FBR3JCLGFBQU8sT0FBTyxDQUFQLE1BQWMsR0FBZCxFQUFtQjtBQUN4QixnQkFBUSxJQUFSLENBQWEsTUFBYixFQUR3QjtBQUV4QixpQkFBUyxNQUFNLEtBQU4sQ0FBWSxFQUFFLE1BQU0sS0FBTixDQUF2QixDQUZ3QjtPQUExQjtLQUhGOztBQVNBLFFBQUksTUFBTSxNQUFOLENBQWEsQ0FBYixNQUFvQixPQUFPLE1BQVAsQ0FBYyxDQUFkLENBQXBCLEVBQXNDO0FBQ3hDLGNBQVEsSUFBUixDQUFhLE1BQWIsRUFEd0M7QUFFeEMsWUFBTSxLQUFOLEdBRndDO0tBQTFDLE1BR087QUFDTCxtQkFBYSxJQUFiLENBREs7S0FIUDtHQTFCRjs7QUFrQ0EsTUFBSSxDQUFDLGFBQWEsVUFBYixLQUE0QixFQUE1QixDQUFELENBQWlDLENBQWpDLE1BQXdDLEdBQXhDLElBQ0csY0FESCxFQUNtQjtBQUNyQixpQkFBYSxJQUFiLENBRHFCO0dBRHZCOztBQUtBLE1BQUksVUFBSixFQUFnQjtBQUNkLFdBQU8sT0FBUCxDQURjO0dBQWhCOztBQUlBLFNBQU8sYUFBYSxhQUFhLE1BQWIsRUFBcUI7QUFDdkMsV0FBTyxJQUFQLENBQVksYUFBYSxZQUFiLENBQVosRUFEdUM7R0FBekM7O0FBSUEsU0FBTztBQUNMLGtCQURLO0FBRUwsb0JBRks7R0FBUCxDQXJEMkM7Q0FBN0M7O0FBMkRBLFNBQVMsVUFBVCxDQUFvQixPQUFwQixFQUE2QjtBQUMzQixTQUFPLFFBQVEsTUFBUixDQUFlLFVBQVMsSUFBVCxFQUFlLE1BQWYsRUFBdUI7QUFDM0MsV0FBTyxRQUFRLE9BQU8sQ0FBUCxNQUFjLEdBQWQsQ0FENEI7R0FBdkIsRUFFbkIsSUFGSSxDQUFQLENBRDJCO0NBQTdCO0FBS0EsU0FBUyxrQkFBVCxDQUE0QixLQUE1QixFQUFtQyxhQUFuQyxFQUFrRCxLQUFsRCxFQUF5RDtBQUN2RCxPQUFLLElBQUksSUFBSSxDQUFKLEVBQU8sSUFBSSxLQUFKLEVBQVcsR0FBM0IsRUFBZ0M7QUFDOUIsUUFBSSxnQkFBZ0IsY0FBYyxjQUFjLE1BQWQsR0FBdUIsS0FBdkIsR0FBK0IsQ0FBL0IsQ0FBZCxDQUFnRCxNQUFoRCxDQUF1RCxDQUF2RCxDQUFoQixDQUQwQjtBQUU5QixRQUFJLE1BQU0sS0FBTixDQUFZLE1BQU0sS0FBTixHQUFjLENBQWQsQ0FBWixLQUFpQyxNQUFNLGFBQU4sRUFBcUI7QUFDeEQsYUFBTyxLQUFQLENBRHdEO0tBQTFEO0dBRkY7O0FBT0EsUUFBTSxLQUFOLElBQWUsS0FBZixDQVJ1RDtBQVN2RCxTQUFPLElBQVAsQ0FUdUQ7Q0FBekQiLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGxldCBjb25mbGljdGVkID0gZmFsc2U7XG5cbiAgaHVuay5vbGRMaW5lcyA9IDA7XG4gIGh1bmsubmV3TGluZXMgPSAwO1xuXG4gIGh1bmsubGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGxpbmVbMF0gPT09ICcrJyB8fCBsaW5lWzBdID09PSAnICcpIHtcbiAgICAgIGh1bmsubmV3TGluZXMrKztcbiAgICB9XG4gICAgaWYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpIHtcbiAgICAgIGh1bmsub2xkTGluZXMrKztcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChjb25mbGljdGVkKSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gICAgZGVsZXRlIGh1bmsubmV3TGluZXM7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKG1pbmUsIHRoZWlycywgYmFzZSkge1xuICBtaW5lID0gbG9hZFBhdGNoKG1pbmUsIGJhc2UpO1xuICB0aGVpcnMgPSBsb2FkUGF0Y2godGhlaXJzLCBiYXNlKTtcblxuICBsZXQgcmV0ID0ge307XG5cbiAgLy8gRm9yIGluZGV4IHdlIGp1c3QgbGV0IGl0IHBhc3MgdGhyb3VnaCBhcyBpdCBkb2Vzbid0IGhhdmUgYW55IG5lY2Vzc2FyeSBtZWFuaW5nLlxuICAvLyBMZWF2aW5nIHNhbml0eSBjaGVja3Mgb24gdGhpcyB0byB0aGUgQVBJIGNvbnN1bWVyIHRoYXQgbWF5IGtub3cgbW9yZSBhYm91dCB0aGVcbiAgLy8gbWVhbmluZyBpbiB0aGVpciBvd24gY29udGV4dC5cbiAgaWYgKG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4KSB7XG4gICAgcmV0LmluZGV4ID0gbWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXg7XG4gIH1cblxuICBpZiAobWluZS5uZXdGaWxlTmFtZSB8fCB0aGVpcnMubmV3RmlsZU5hbWUpIHtcbiAgICBpZiAoIWZpbGVOYW1lQ2hhbmdlZChtaW5lKSkge1xuICAgICAgLy8gTm8gaGVhZGVyIG9yIG5vIGNoYW5nZSBpbiBvdXJzLCB1c2UgdGhlaXJzIChhbmQgb3VycyBpZiB0aGVpcnMgZG9lcyBub3QgZXhpc3QpXG4gICAgICByZXQub2xkRmlsZU5hbWUgPSB0aGVpcnMub2xkRmlsZU5hbWUgfHwgbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IHRoZWlycy5uZXdGaWxlTmFtZSB8fCBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHRoZWlycy5vbGRIZWFkZXIgfHwgbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gdGhlaXJzLm5ld0hlYWRlciB8fCBtaW5lLm5ld0hlYWRlcjtcbiAgICB9IGVsc2UgaWYgKCFmaWxlTmFtZUNoYW5nZWQodGhlaXJzKSkge1xuICAgICAgLy8gTm8gaGVhZGVyIG9yIG5vIGNoYW5nZSBpbiB0aGVpcnMsIHVzZSBvdXJzXG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSBtaW5lLm5ld0hlYWRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQm90aCBjaGFuZ2VkLi4uIGZpZ3VyZSBpdCBvdXRcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRGaWxlTmFtZSwgdGhlaXJzLm9sZEZpbGVOYW1lKTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdGaWxlTmFtZSwgdGhlaXJzLm5ld0ZpbGVOYW1lKTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkSGVhZGVyLCB0aGVpcnMub2xkSGVhZGVyKTtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3SGVhZGVyLCB0aGVpcnMubmV3SGVhZGVyKTtcbiAgICB9XG4gIH1cblxuICByZXQuaHVua3MgPSBbXTtcblxuICBsZXQgbWluZUluZGV4ID0gMCxcbiAgICAgIHRoZWlyc0luZGV4ID0gMCxcbiAgICAgIG1pbmVPZmZzZXQgPSAwLFxuICAgICAgdGhlaXJzT2Zmc2V0ID0gMDtcblxuICB3aGlsZSAobWluZUluZGV4IDwgbWluZS5odW5rcy5sZW5ndGggfHwgdGhlaXJzSW5kZXggPCB0aGVpcnMuaHVua3MubGVuZ3RoKSB7XG4gICAgbGV0IG1pbmVDdXJyZW50ID0gbWluZS5odW5rc1ttaW5lSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9LFxuICAgICAgICB0aGVpcnNDdXJyZW50ID0gdGhlaXJzLmh1bmtzW3RoZWlyc0luZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fTtcblxuICAgIGlmIChodW5rQmVmb3JlKG1pbmVDdXJyZW50LCB0aGVpcnNDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayhtaW5lQ3VycmVudCwgbWluZU9mZnNldCkpO1xuICAgICAgbWluZUluZGV4Kys7XG4gICAgICB0aGVpcnNPZmZzZXQgKz0gbWluZUN1cnJlbnQubmV3TGluZXMgLSBtaW5lQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2UgaWYgKGh1bmtCZWZvcmUodGhlaXJzQ3VycmVudCwgbWluZUN1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKHRoZWlyc0N1cnJlbnQsIHRoZWlyc09mZnNldCkpO1xuICAgICAgdGhlaXJzSW5kZXgrKztcbiAgICAgIG1pbmVPZmZzZXQgKz0gdGhlaXJzQ3VycmVudC5uZXdMaW5lcyAtIHRoZWlyc0N1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE92ZXJsYXAsIG1lcmdlIGFzIGJlc3Qgd2UgY2FuXG4gICAgICBsZXQgbWVyZ2VkSHVuayA9IHtcbiAgICAgICAgb2xkU3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0KSxcbiAgICAgICAgb2xkTGluZXM6IDAsXG4gICAgICAgIG5ld1N0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5uZXdTdGFydCArIG1pbmVPZmZzZXQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQgKyB0aGVpcnNPZmZzZXQpLFxuICAgICAgICBuZXdMaW5lczogMCxcbiAgICAgICAgbGluZXM6IFtdXG4gICAgICB9O1xuICAgICAgbWVyZ2VMaW5lcyhtZXJnZWRIdW5rLCBtaW5lQ3VycmVudC5vbGRTdGFydCwgbWluZUN1cnJlbnQubGluZXMsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQubGluZXMpO1xuICAgICAgdGhlaXJzSW5kZXgrKztcbiAgICAgIG1pbmVJbmRleCsrO1xuXG4gICAgICByZXQuaHVua3MucHVzaChtZXJnZWRIdW5rKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBsb2FkUGF0Y2gocGFyYW0sIGJhc2UpIHtcbiAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoL15AQC9tLnRlc3QocGFyYW0pIHx8ICgvXkluZGV4Oi9tLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuIl19
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/parse.js
    deleted file mode 100644
    index 190620f8..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/patch/parse.js
    +++ /dev/null
    @@ -1,134 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/parsePatch = parsePatch;
    -function parsePatch(uniDiff) {
    -  /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
    -
    -  var diffstr = uniDiff.split('\n'),
    -      list = [],
    -      i = 0;
    -
    -  function parseIndex() {
    -    var index = {};
    -    list.push(index);
    -
    -    // Parse diff metadata
    -    while (i < diffstr.length) {
    -      var line = diffstr[i];
    -
    -      // File header found, end parsing diff metadata
    -      if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
    -        break;
    -      }
    -
    -      // Diff index
    -      var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
    -      if (header) {
    -        index.index = header[1];
    -      }
    -
    -      i++;
    -    }
    -
    -    // Parse file headers if they are defined. Unified diff requires them, but
    -    // there's no technical issues to have an isolated hunk without file header
    -    parseFileHeader(index);
    -    parseFileHeader(index);
    -
    -    // Parse hunks
    -    index.hunks = [];
    -
    -    while (i < diffstr.length) {
    -      var _line = diffstr[i];
    -
    -      if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
    -        break;
    -      } else if (/^@@/.test(_line)) {
    -        index.hunks.push(parseHunk());
    -      } else if (_line && options.strict) {
    -        // Ignore unexpected content unless in strict mode
    -        throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
    -      } else {
    -        i++;
    -      }
    -    }
    -  }
    -
    -  // Parses the --- and +++ headers, if none are found, no lines
    -  // are consumed.
    -  function parseFileHeader(index) {
    -    var fileHeader = /^(\-\-\-|\+\+\+)\s+(\S*)\s?(.*?)\s*$/.exec(diffstr[i]);
    -    if (fileHeader) {
    -      var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
    -      index[keyPrefix + 'FileName'] = fileHeader[2];
    -      index[keyPrefix + 'Header'] = fileHeader[3];
    -
    -      i++;
    -    }
    -  }
    -
    -  // Parses a hunk
    -  // This assumes that we are at the start of a hunk.
    -  function parseHunk() {
    -    var chunkHeaderIndex = i,
    -        chunkHeaderLine = diffstr[i++],
    -        chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
    -
    -    var hunk = {
    -      oldStart: +chunkHeader[1],
    -      oldLines: +chunkHeader[2] || 1,
    -      newStart: +chunkHeader[3],
    -      newLines: +chunkHeader[4] || 1,
    -      lines: []
    -    };
    -
    -    var addCount = 0,
    -        removeCount = 0;
    -    for (; i < diffstr.length; i++) {
    -      var operation = diffstr[i][0];
    -
    -      if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
    -        hunk.lines.push(diffstr[i]);
    -
    -        if (operation === '+') {
    -          addCount++;
    -        } else if (operation === '-') {
    -          removeCount++;
    -        } else if (operation === ' ') {
    -          addCount++;
    -          removeCount++;
    -        }
    -      } else {
    -        break;
    -      }
    -    }
    -
    -    // Handle the empty block count case
    -    if (!addCount && hunk.newLines === 1) {
    -      hunk.newLines = 0;
    -    }
    -    if (!removeCount && hunk.oldLines === 1) {
    -      hunk.oldLines = 0;
    -    }
    -
    -    // Perform optional sanity checking
    -    if (options.strict) {
    -      if (addCount !== hunk.newLines) {
    -        throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
    -      }
    -      if (removeCount !== hunk.oldLines) {
    -        throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
    -      }
    -    }
    -
    -    return hunk;
    -  }
    -
    -  while (i < diffstr.length) {
    -    parseIndex();
    -  }
    -
    -  return list;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxVQUFULENBQW9CLE9BQXBCLEVBQTJDO3NEQUFkLGdFQUFVLGtCQUFJOztBQUNoRCxNQUFJLFVBQVUsUUFBUSxLQUFSLENBQWMsSUFBZCxDQUFWO01BQ0EsT0FBTyxFQUFQO01BQ0EsSUFBSSxDQUFKLENBSDRDOztBQUtoRCxXQUFTLFVBQVQsR0FBc0I7QUFDcEIsUUFBSSxRQUFRLEVBQVIsQ0FEZ0I7QUFFcEIsU0FBSyxJQUFMLENBQVUsS0FBVjs7O0FBRm9CLFdBS2IsSUFBSSxRQUFRLE1BQVIsRUFBZ0I7QUFDekIsVUFBSSxPQUFPLFFBQVEsQ0FBUixDQUFQOzs7QUFEcUIsVUFJckIsd0JBQXdCLElBQXhCLENBQTZCLElBQTdCLENBQUosRUFBd0M7QUFDdEMsY0FEc0M7T0FBeEM7OztBQUp5QixVQVNyQixTQUFTLDJDQUE2QyxJQUE3QyxDQUFrRCxJQUFsRCxDQUFULENBVHFCO0FBVXpCLFVBQUksTUFBSixFQUFZO0FBQ1YsY0FBTSxLQUFOLEdBQWMsT0FBTyxDQUFQLENBQWQsQ0FEVTtPQUFaOztBQUlBLFVBZHlCO0tBQTNCOzs7O0FBTG9CLG1CQXdCcEIsQ0FBZ0IsS0FBaEIsRUF4Qm9CO0FBeUJwQixvQkFBZ0IsS0FBaEI7OztBQXpCb0IsU0E0QnBCLENBQU0sS0FBTixHQUFjLEVBQWQsQ0E1Qm9COztBQThCcEIsV0FBTyxJQUFJLFFBQVEsTUFBUixFQUFnQjtBQUN6QixVQUFJLFFBQU8sUUFBUSxDQUFSLENBQVAsQ0FEcUI7O0FBR3pCLFVBQUksaUNBQWlDLElBQWpDLENBQXNDLEtBQXRDLENBQUosRUFBaUQ7QUFDL0MsY0FEK0M7T0FBakQsTUFFTyxJQUFJLE1BQU0sSUFBTixDQUFXLEtBQVgsQ0FBSixFQUFzQjtBQUMzQixjQUFNLEtBQU4sQ0FBWSxJQUFaLENBQWlCLFdBQWpCLEVBRDJCO09BQXRCLE1BRUEsSUFBSSxTQUFRLFFBQVEsTUFBUixFQUFnQjs7QUFFakMsY0FBTSxJQUFJLEtBQUosQ0FBVSxtQkFBbUIsSUFBSSxDQUFKLENBQW5CLEdBQTRCLEdBQTVCLEdBQWtDLEtBQUssU0FBTCxDQUFlLEtBQWYsQ0FBbEMsQ0FBaEIsQ0FGaUM7T0FBNUIsTUFHQTtBQUNMLFlBREs7T0FIQTtLQVBUO0dBOUJGOzs7O0FBTGdELFdBcUR2QyxlQUFULENBQXlCLEtBQXpCLEVBQWdDO0FBQzlCLFFBQUksYUFBYSx1Q0FBeUMsSUFBekMsQ0FBOEMsUUFBUSxDQUFSLENBQTlDLENBQWIsQ0FEMEI7QUFFOUIsUUFBSSxVQUFKLEVBQWdCO0FBQ2QsVUFBSSxZQUFZLFdBQVcsQ0FBWCxNQUFrQixLQUFsQixHQUEwQixLQUExQixHQUFrQyxLQUFsQyxDQURGO0FBRWQsWUFBTSxZQUFZLFVBQVosQ0FBTixHQUFnQyxXQUFXLENBQVgsQ0FBaEMsQ0FGYztBQUdkLFlBQU0sWUFBWSxRQUFaLENBQU4sR0FBOEIsV0FBVyxDQUFYLENBQTlCLENBSGM7O0FBS2QsVUFMYztLQUFoQjtHQUZGOzs7O0FBckRnRCxXQWtFdkMsU0FBVCxHQUFxQjtBQUNuQixRQUFJLG1CQUFtQixDQUFuQjtRQUNBLGtCQUFrQixRQUFRLEdBQVIsQ0FBbEI7UUFDQSxjQUFjLGdCQUFnQixLQUFoQixDQUFzQiw0Q0FBdEIsQ0FBZCxDQUhlOztBQUtuQixRQUFJLE9BQU87QUFDVCxnQkFBVSxDQUFDLFlBQVksQ0FBWixDQUFEO0FBQ1YsZ0JBQVUsQ0FBQyxZQUFZLENBQVosQ0FBRCxJQUFtQixDQUFuQjtBQUNWLGdCQUFVLENBQUMsWUFBWSxDQUFaLENBQUQ7QUFDVixnQkFBVSxDQUFDLFlBQVksQ0FBWixDQUFELElBQW1CLENBQW5CO0FBQ1YsYUFBTyxFQUFQO0tBTEUsQ0FMZTs7QUFhbkIsUUFBSSxXQUFXLENBQVg7UUFDQSxjQUFjLENBQWQsQ0FkZTtBQWVuQixXQUFPLElBQUksUUFBUSxNQUFSLEVBQWdCLEdBQTNCLEVBQWdDO0FBQzlCLFVBQUksWUFBWSxRQUFRLENBQVIsRUFBVyxDQUFYLENBQVosQ0FEMEI7O0FBRzlCLFVBQUksY0FBYyxHQUFkLElBQXFCLGNBQWMsR0FBZCxJQUFxQixjQUFjLEdBQWQsSUFBcUIsY0FBYyxJQUFkLEVBQW9CO0FBQ3JGLGFBQUssS0FBTCxDQUFXLElBQVgsQ0FBZ0IsUUFBUSxDQUFSLENBQWhCLEVBRHFGOztBQUdyRixZQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUNyQixxQkFEcUI7U0FBdkIsTUFFTyxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1Qix3QkFENEI7U0FBdkIsTUFFQSxJQUFJLGNBQWMsR0FBZCxFQUFtQjtBQUM1QixxQkFENEI7QUFFNUIsd0JBRjRCO1NBQXZCO09BUFQsTUFXTztBQUNMLGNBREs7T0FYUDtLQUhGOzs7QUFmbUIsUUFtQ2YsQ0FBQyxRQUFELElBQWEsS0FBSyxRQUFMLEtBQWtCLENBQWxCLEVBQXFCO0FBQ3BDLFdBQUssUUFBTCxHQUFnQixDQUFoQixDQURvQztLQUF0QztBQUdBLFFBQUksQ0FBQyxXQUFELElBQWdCLEtBQUssUUFBTCxLQUFrQixDQUFsQixFQUFxQjtBQUN2QyxXQUFLLFFBQUwsR0FBZ0IsQ0FBaEIsQ0FEdUM7S0FBekM7OztBQXRDbUIsUUEyQ2YsUUFBUSxNQUFSLEVBQWdCO0FBQ2xCLFVBQUksYUFBYSxLQUFLLFFBQUwsRUFBZTtBQUM5QixjQUFNLElBQUksS0FBSixDQUFVLHNEQUFzRCxtQkFBbUIsQ0FBbkIsQ0FBdEQsQ0FBaEIsQ0FEOEI7T0FBaEM7QUFHQSxVQUFJLGdCQUFnQixLQUFLLFFBQUwsRUFBZTtBQUNqQyxjQUFNLElBQUksS0FBSixDQUFVLHdEQUF3RCxtQkFBbUIsQ0FBbkIsQ0FBeEQsQ0FBaEIsQ0FEaUM7T0FBbkM7S0FKRjs7QUFTQSxXQUFPLElBQVAsQ0FwRG1CO0dBQXJCOztBQXVEQSxTQUFPLElBQUksUUFBUSxNQUFSLEVBQWdCO0FBQ3pCLGlCQUR5QjtHQUEzQjs7QUFJQSxTQUFPLElBQVAsQ0E3SGdEO0NBQTNDIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF0Y2godW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGxldCBkaWZmc3RyID0gdW5pRGlmZi5zcGxpdCgnXFxuJyksXG4gICAgICBsaXN0ID0gW10sXG4gICAgICBpID0gMDtcblxuICBmdW5jdGlvbiBwYXJzZUluZGV4KCkge1xuICAgIGxldCBpbmRleCA9IHt9O1xuICAgIGxpc3QucHVzaChpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBkaWZmIG1ldGFkYXRhXG4gICAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgICAgbGV0IGxpbmUgPSBkaWZmc3RyW2ldO1xuXG4gICAgICAvLyBGaWxlIGhlYWRlciBmb3VuZCwgZW5kIHBhcnNpbmcgZGlmZiBtZXRhZGF0YVxuICAgICAgaWYgKC9eKFxcLVxcLVxcLXxcXCtcXCtcXCt8QEApXFxzLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKC9eKEluZGV4OnxkaWZmfFxcLVxcLVxcLXxcXCtcXCtcXCspXFxzLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlIGlmICgvXkBALy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGluZGV4Lmh1bmtzLnB1c2gocGFyc2VIdW5rKCkpO1xuICAgICAgfSBlbHNlIGlmIChsaW5lICYmIG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICAgIC8vIElnbm9yZSB1bmV4cGVjdGVkIGNvbnRlbnQgdW5sZXNzIGluIHN0cmljdCBtb2RlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBsaW5lICcgKyAoaSArIDEpICsgJyAnICsgSlNPTi5zdHJpbmdpZnkobGluZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyB0aGUgLS0tIGFuZCArKysgaGVhZGVycywgaWYgbm9uZSBhcmUgZm91bmQsIG5vIGxpbmVzXG4gIC8vIGFyZSBjb25zdW1lZC5cbiAgZnVuY3Rpb24gcGFyc2VGaWxlSGVhZGVyKGluZGV4KSB7XG4gICAgbGV0IGZpbGVIZWFkZXIgPSAoL14oXFwtXFwtXFwtfFxcK1xcK1xcKylcXHMrKFxcUyopXFxzPyguKj8pXFxzKiQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0ZpbGVOYW1lJ10gPSBmaWxlSGVhZGVyWzJdO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gZmlsZUhlYWRlclszXTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvcGVyYXRpb24gPSBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/array.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/array.js
    deleted file mode 100644
    index 2a89f9e9..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/array.js
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -/*istanbul ignore start*/"use strict";
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/arrayEqual = arrayEqual;
    -/*istanbul ignore start*/exports. /*istanbul ignore end*/arrayStartsWith = arrayStartsWith;
    -function arrayEqual(a, b) {
    -  if (a.length !== b.length) {
    -    return false;
    -  }
    -
    -  return arrayStartsWith(a, b);
    -}
    -
    -function arrayStartsWith(array, start) {
    -  if (start.length > array.length) {
    -    return false;
    -  }
    -
    -  for (var i = 0; i < start.length; i++) {
    -    if (start[i] !== array[i]) {
    -      return false;
    -    }
    -  }
    -
    -  return true;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztnQ0FBZ0I7eURBUUE7QUFSVCxTQUFTLFVBQVQsQ0FBb0IsQ0FBcEIsRUFBdUIsQ0FBdkIsRUFBMEI7QUFDL0IsTUFBSSxFQUFFLE1BQUYsS0FBYSxFQUFFLE1BQUYsRUFBVTtBQUN6QixXQUFPLEtBQVAsQ0FEeUI7R0FBM0I7O0FBSUEsU0FBTyxnQkFBZ0IsQ0FBaEIsRUFBbUIsQ0FBbkIsQ0FBUCxDQUwrQjtDQUExQjs7QUFRQSxTQUFTLGVBQVQsQ0FBeUIsS0FBekIsRUFBZ0MsS0FBaEMsRUFBdUM7QUFDNUMsTUFBSSxNQUFNLE1BQU4sR0FBZSxNQUFNLE1BQU4sRUFBYztBQUMvQixXQUFPLEtBQVAsQ0FEK0I7R0FBakM7O0FBSUEsT0FBSyxJQUFJLElBQUksQ0FBSixFQUFPLElBQUksTUFBTSxNQUFOLEVBQWMsR0FBbEMsRUFBdUM7QUFDckMsUUFBSSxNQUFNLENBQU4sTUFBYSxNQUFNLENBQU4sQ0FBYixFQUF1QjtBQUN6QixhQUFPLEtBQVAsQ0FEeUI7S0FBM0I7R0FERjs7QUFNQSxTQUFPLElBQVAsQ0FYNEM7Q0FBdkMiLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gYXJyYXlFcXVhbChhLCBiKSB7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gYXJyYXlTdGFydHNXaXRoKGEsIGIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlTdGFydHNXaXRoKGFycmF5LCBzdGFydCkge1xuICBpZiAoc3RhcnQubGVuZ3RoID4gYXJyYXkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFydC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdGFydFtpXSAhPT0gYXJyYXlbaV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/distance-iterator.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/distance-iterator.js
    deleted file mode 100644
    index 90d42af3..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/distance-iterator.js
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -/*istanbul ignore start*/"use strict";
    -
    -exports.__esModule = true;
    -
    -exports.default = /*istanbul ignore end*/function (start, minLine, maxLine) {
    -  var wantForward = true,
    -      backwardExhausted = false,
    -      forwardExhausted = false,
    -      localOffset = 1;
    -
    -  return function iterator() {
    -    if (wantForward && !forwardExhausted) {
    -      if (backwardExhausted) {
    -        localOffset++;
    -      } else {
    -        wantForward = false;
    -      }
    -
    -      // Check if trying to fit beyond text length, and if not, check it fits
    -      // after offset location (or desired location on first iteration)
    -      if (start + localOffset <= maxLine) {
    -        return localOffset;
    -      }
    -
    -      forwardExhausted = true;
    -    }
    -
    -    if (!backwardExhausted) {
    -      if (!forwardExhausted) {
    -        wantForward = true;
    -      }
    -
    -      // Check if trying to fit before text beginning, and if not, check it fits
    -      // before offset location
    -      if (minLine <= start - localOffset) {
    -        return - localOffset++;
    -      }
    -
    -      backwardExhausted = true;
    -      return iterator();
    -    }
    -
    -    // We tried to fit hunk before text beginning and beyond text lenght, then
    -    // hunk can't fit on the text. Return undefined
    -  };
    -};
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7eUNBR2UsVUFBUyxLQUFULEVBQWdCLE9BQWhCLEVBQXlCLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUksY0FBYyxJQUFkO01BQ0Esb0JBQW9CLEtBQXBCO01BQ0EsbUJBQW1CLEtBQW5CO01BQ0EsY0FBYyxDQUFkLENBSjJDOztBQU0vQyxTQUFPLFNBQVMsUUFBVCxHQUFvQjtBQUN6QixRQUFJLGVBQWUsQ0FBQyxnQkFBRCxFQUFtQjtBQUNwQyxVQUFJLGlCQUFKLEVBQXVCO0FBQ3JCLHNCQURxQjtPQUF2QixNQUVPO0FBQ0wsc0JBQWMsS0FBZCxDQURLO09BRlA7Ozs7QUFEb0MsVUFTaEMsUUFBUSxXQUFSLElBQXVCLE9BQXZCLEVBQWdDO0FBQ2xDLGVBQU8sV0FBUCxDQURrQztPQUFwQzs7QUFJQSx5QkFBbUIsSUFBbkIsQ0Fib0M7S0FBdEM7O0FBZ0JBLFFBQUksQ0FBQyxpQkFBRCxFQUFvQjtBQUN0QixVQUFJLENBQUMsZ0JBQUQsRUFBbUI7QUFDckIsc0JBQWMsSUFBZCxDQURxQjtPQUF2Qjs7OztBQURzQixVQU9sQixXQUFXLFFBQVEsV0FBUixFQUFxQjtBQUNsQyxlQUFPLEVBQUMsYUFBRCxDQUQyQjtPQUFwQzs7QUFJQSwwQkFBb0IsSUFBcEIsQ0FYc0I7QUFZdEIsYUFBTyxVQUFQLENBWnNCO0tBQXhCOzs7O0FBakJ5QixHQUFwQixDQU53QztDQUFsQyIsImZpbGUiOiJkaXN0YW5jZS1pdGVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEl0ZXJhdG9yIHRoYXQgdHJhdmVyc2VzIGluIHRoZSByYW5nZSBvZiBbbWluLCBtYXhdLCBzdGVwcGluZ1xuLy8gYnkgZGlzdGFuY2UgZnJvbSBhIGdpdmVuIHN0YXJ0IHBvc2l0aW9uLiBJLmUuIGZvciBbMCwgNF0sIHdpdGhcbi8vIHN0YXJ0IG9mIDIsIHRoaXMgd2lsbCBpdGVyYXRlIDIsIDMsIDEsIDQsIDAuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGFydCwgbWluTGluZSwgbWF4TGluZSkge1xuICBsZXQgd2FudEZvcndhcmQgPSB0cnVlLFxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSBmYWxzZSxcbiAgICAgIGxvY2FsT2Zmc2V0ID0gMTtcblxuICByZXR1cm4gZnVuY3Rpb24gaXRlcmF0b3IoKSB7XG4gICAgaWYgKHdhbnRGb3J3YXJkICYmICFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICBpZiAoYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgICAgbG9jYWxPZmZzZXQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmV5b25kIHRleHQgbGVuZ3RoLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBhZnRlciBvZmZzZXQgbG9jYXRpb24gKG9yIGRlc2lyZWQgbG9jYXRpb24gb24gZmlyc3QgaXRlcmF0aW9uKVxuICAgICAgaWYgKHN0YXJ0ICsgbG9jYWxPZmZzZXQgPD0gbWF4TGluZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxPZmZzZXQ7XG4gICAgICB9XG5cbiAgICAgIGZvcndhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYmFja3dhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmICghZm9yd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICB3YW50Rm9yd2FyZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRyeWluZyB0byBmaXQgYmVmb3JlIHRleHQgYmVnaW5uaW5nLCBhbmQgaWYgbm90LCBjaGVjayBpdCBmaXRzXG4gICAgICAvLyBiZWZvcmUgb2Zmc2V0IGxvY2F0aW9uXG4gICAgICBpZiAobWluTGluZSA8PSBzdGFydCAtIGxvY2FsT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiAtbG9jYWxPZmZzZXQrKztcbiAgICAgIH1cblxuICAgICAgYmFja3dhcmRFeGhhdXN0ZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yKCk7XG4gICAgfVxuXG4gICAgLy8gV2UgdHJpZWQgdG8gZml0IGh1bmsgYmVmb3JlIHRleHQgYmVnaW5uaW5nIGFuZCBiZXlvbmQgdGV4dCBsZW5naHQsIHRoZW5cbiAgICAvLyBodW5rIGNhbid0IGZpdCBvbiB0aGUgdGV4dC4gUmV0dXJuIHVuZGVmaW5lZFxuICB9O1xufVxuIl19
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/params.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/params.js
    deleted file mode 100644
    index 6c020b5c..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/lib/util/params.js
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -/*istanbul ignore start*/'use strict';
    -
    -exports.__esModule = true;
    -exports. /*istanbul ignore end*/generateOptions = generateOptions;
    -function generateOptions(options, defaults) {
    -  if (typeof options === 'function') {
    -    defaults.callback = options;
    -  } else if (options) {
    -    for (var name in options) {
    -      /* istanbul ignore else */
    -      if (options.hasOwnProperty(name)) {
    -        defaults[name] = options[name];
    -      }
    -    }
    -  }
    -  return defaults;
    -}
    -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCO0FBQVQsU0FBUyxlQUFULENBQXlCLE9BQXpCLEVBQWtDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBTyxPQUFQLEtBQW1CLFVBQW5CLEVBQStCO0FBQ2pDLGFBQVMsUUFBVCxHQUFvQixPQUFwQixDQURpQztHQUFuQyxNQUVPLElBQUksT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSSxJQUFKLElBQVksT0FBakIsRUFBMEI7O0FBRXhCLFVBQUksUUFBUSxjQUFSLENBQXVCLElBQXZCLENBQUosRUFBa0M7QUFDaEMsaUJBQVMsSUFBVCxJQUFpQixRQUFRLElBQVIsQ0FBakIsQ0FEZ0M7T0FBbEM7S0FGRjtHQURLO0FBUVAsU0FBTyxRQUFQLENBWGlEO0NBQTVDIiwiZmlsZSI6InBhcmFtcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU9wdGlvbnMob3B0aW9ucywgZGVmYXVsdHMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVmYXVsdHMuY2FsbGJhY2sgPSBvcHRpb25zO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBuYW1lIGluIG9wdGlvbnMpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBkZWZhdWx0c1tuYW1lXSA9IG9wdGlvbnNbbmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWZhdWx0cztcbn1cbiJdfQ==
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/package.json
    deleted file mode 100644
    index 98e75411..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/package.json
    +++ /dev/null
    @@ -1,122 +0,0 @@
    -{
    -  "_args": [
    -    [
    -      "diff@^2.2.1",
    -      "/Users/sid/Desktop/code/RustyCode/node_modules/tslint"
    -    ]
    -  ],
    -  "_from": "diff@>=2.2.1 <3.0.0",
    -  "_id": "diff@2.2.2",
    -  "_inCache": true,
    -  "_installable": true,
    -  "_location": "/diff",
    -  "_nodeVersion": "5.1.1",
    -  "_npmOperationalInternal": {
    -    "host": "packages-13-west.internal.npmjs.com",
    -    "tmp": "tmp/diff-2.2.2.tgz_1457851567431_0.14561045123264194"
    -  },
    -  "_npmUser": {
    -    "email": "kpdecker@gmail.com",
    -    "name": "kpdecker"
    -  },
    -  "_npmVersion": "3.3.12",
    -  "_phantomChildren": {},
    -  "_requested": {
    -    "name": "diff",
    -    "raw": "diff@^2.2.1",
    -    "rawSpec": "^2.2.1",
    -    "scope": null,
    -    "spec": ">=2.2.1 <3.0.0",
    -    "type": "range"
    -  },
    -  "_requiredBy": [
    -    "/tslint"
    -  ],
    -  "_resolved": "https://registry.npmjs.org/diff/-/diff-2.2.2.tgz",
    -  "_shasum": "5f813f994a0caa1a2ef79200759c4b89ca233a81",
    -  "_shrinkwrap": null,
    -  "_spec": "diff@^2.2.1",
    -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tslint",
    -  "babel": {
    -    "auxiliaryCommentAfter": "istanbul ignore end",
    -    "auxiliaryCommentBefore": "istanbul ignore start",
    -    "presets": [
    -      "es2015-mod"
    -    ],
    -    "sourceMaps": "inline"
    -  },
    -  "bugs": {
    -    "email": "kpdecker@gmail.com",
    -    "url": "http://github.com/kpdecker/jsdiff/issues"
    -  },
    -  "dependencies": {},
    -  "description": "A javascript text diff implementation.",
    -  "devDependencies": {
    -    "async": "^1.4.2",
    -    "babel-core": "^6.0.0",
    -    "babel-loader": "^6.0.0",
    -    "babel-preset-es2015-mod": "^6.3.13",
    -    "chai": "^3.3.0",
    -    "colors": "^1.1.2",
    -    "eslint": "^1.6.0",
    -    "grunt": "^0.4.5",
    -    "grunt-babel": "^6.0.0",
    -    "grunt-clean": "^0.4.0",
    -    "grunt-cli": "^0.1.13",
    -    "grunt-contrib-clean": "^1.0.0",
    -    "grunt-contrib-copy": "^1.0.0",
    -    "grunt-contrib-uglify": "^1.0.0",
    -    "grunt-contrib-watch": "^1.0.0",
    -    "grunt-eslint": "^17.3.1",
    -    "grunt-karma": "^0.12.1",
    -    "grunt-mocha-istanbul": "^3.0.1",
    -    "grunt-mocha-test": "^0.12.7",
    -    "grunt-webpack": "^1.0.11",
    -    "istanbul": "github:kpdecker/istanbul",
    -    "karma": "^0.13.11",
    -    "karma-mocha": "^0.2.0",
    -    "karma-mocha-reporter": "^2.0.0",
    -    "karma-phantomjs-launcher": "^1.0.0",
    -    "karma-sauce-launcher": "^0.3.0",
    -    "karma-sourcemap-loader": "^0.3.6",
    -    "karma-webpack": "^1.7.0",
    -    "mocha": "^2.3.3",
    -    "phantomjs-prebuilt": "^2.1.5",
    -    "semver": "^5.0.3",
    -    "webpack": "^1.12.2",
    -    "webpack-dev-server": "^1.12.0"
    -  },
    -  "directories": {},
    -  "dist": {
    -    "shasum": "5f813f994a0caa1a2ef79200759c4b89ca233a81",
    -    "tarball": "https://registry.npmjs.org/diff/-/diff-2.2.2.tgz"
    -  },
    -  "engines": {
    -    "node": ">=0.3.1"
    -  },
    -  "gitHead": "215195fabd356a11aa840d289b193bb44b3b9f44",
    -  "homepage": "https://github.com/kpdecker/jsdiff#readme",
    -  "keywords": [
    -    "diff",
    -    "javascript"
    -  ],
    -  "license": "BSD-3-Clause",
    -  "main": "./lib",
    -  "maintainers": [
    -    {
    -      "email": "kpdecker@gmail.com",
    -      "name": "kpdecker"
    -    }
    -  ],
    -  "name": "diff",
    -  "optionalDependencies": {},
    -  "readme": "ERROR: No README data found!",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/kpdecker/jsdiff.git"
    -  },
    -  "scripts": {
    -    "test": "grunt"
    -  },
    -  "version": "2.2.2"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/release-notes.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/release-notes.md
    deleted file mode 100644
    index 3172175c..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/release-notes.md
    +++ /dev/null
    @@ -1,158 +0,0 @@
    -# Release Notes
    -
    -## Development
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.2...master)
    -
    -## v2.2.2 - March 13th, 2016
    -- [#102](https://github.com/kpdecker/jsdiff/issues/102) - diffJson with dates, returns empty curly braces  ([@dr-dimitru](https://api.github.com/users/dr-dimitru))
    -- [#97](https://github.com/kpdecker/jsdiff/issues/97) - Whitespaces & diffWords ([@faiwer](https://api.github.com/users/faiwer))
    -- [#92](https://github.com/kpdecker/jsdiff/pull/92) - Fixes typo in the readme ([@bg451](https://api.github.com/users/bg451))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.1...v2.2.2)
    -
    -## v2.2.1 - November 12th, 2015
    -- [#89](https://github.com/kpdecker/jsdiff/pull/89) - add in display selector to readme ([@FranDias](https://api.github.com/users/FranDias))
    -- [#88](https://github.com/kpdecker/jsdiff/pull/88) - Split diffs based on file headers instead of 'Index:' metadata ([@piranna](https://api.github.com/users/piranna))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.0...v2.2.1)
    -
    -## v2.2.0 - October 29th, 2015
    -- [#80](https://github.com/kpdecker/jsdiff/pull/80) - Fix a typo: applyPath ->  applyPatch ([@fluxxu](https://api.github.com/users/fluxxu))
    -- [#83](https://github.com/kpdecker/jsdiff/pull/83) - Add basic fuzzy matching to applyPatch ([@piranna](https://github.com/piranna))
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.2.0...v2.2.0)
    -
    -## v2.2.0 - October 29th, 2015
    -- [#80](https://github.com/kpdecker/jsdiff/pull/80) - Fix a typo: applyPath ->  applyPatch ([@fluxxu](https://api.github.com/users/fluxxu))
    -- [#83](https://github.com/kpdecker/jsdiff/pull/83) - Add basic fuzzy matching to applyPatch ([@piranna](https://github.com/piranna))
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.3...v2.2.0)
    -
    -## v2.1.3 - September 30th, 2015
    -- [#78](https://github.com/kpdecker/jsdiff/pull/78) - fix: error throwing when apply patch to empty string ([@21paradox](https://api.github.com/users/21paradox))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.2...v2.1.3)
    -
    -## v2.1.2 - September 23rd, 2015
    -- [#76](https://github.com/kpdecker/jsdiff/issues/76) - diff headers give error ([@piranna](https://api.github.com/users/piranna))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.1...v2.1.2)
    -
    -## v2.1.1 - September 9th, 2015
    -- [#73](https://github.com/kpdecker/jsdiff/issues/73) - Is applyPatches() exposed in the API? ([@davidparsson](https://api.github.com/users/davidparsson))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.1.0...v2.1.1)
    -
    -## v2.1.0 - August 27th, 2015
    -- [#72](https://github.com/kpdecker/jsdiff/issues/72) - Consider using options object API for flag permutations ([@kpdecker](https://api.github.com/users/kpdecker))
    -- [#70](https://github.com/kpdecker/jsdiff/issues/70) - diffWords treats \n at the end as significant whitespace ([@nesQuick](https://api.github.com/users/nesQuick))
    -- [#69](https://github.com/kpdecker/jsdiff/issues/69) - Missing count ([@wfalkwallace](https://api.github.com/users/wfalkwallace))
    -- [#68](https://github.com/kpdecker/jsdiff/issues/68) - diffLines seems broken ([@wfalkwallace](https://api.github.com/users/wfalkwallace))
    -- [#60](https://github.com/kpdecker/jsdiff/issues/60) - Support multiple diff hunks ([@piranna](https://api.github.com/users/piranna))
    -- [#54](https://github.com/kpdecker/jsdiff/issues/54) - Feature Reuqest: 3-way merge ([@mog422](https://api.github.com/users/mog422))
    -- [#42](https://github.com/kpdecker/jsdiff/issues/42) - Fuzz factor for applyPatch ([@stuartpb](https://api.github.com/users/stuartpb))
    -- Move whitespace ignore out of equals method - 542063c
    -- Include source maps in babel output - 7f7ab21
    -- Merge diff/line and diff/patch implementations - 1597705
    -- Drop map utility method - 1ddc939
    -- Documentation for parsePatch and applyPatches - 27c4b77
    -
    -Compatibility notes:
    -- The undocumented ignoreWhitespace flag has been removed from the Diff equality check directly. This implementation may be copied to diff utilities if dependencies existed on this functionality.
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.2...v2.1.0)
    -
    -## v2.0.2 - August 8th, 2015
    -- [#67](https://github.com/kpdecker/jsdiff/issues/67) - cannot require from npm module in node ([@commenthol](https://api.github.com/users/commenthol))
    -- Convert to chai since we don’t support IE8 - a96bbad
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.1...v2.0.2)
    -
    -## v2.0.1 - August 7th, 2015
    -- Add release build at proper step - 57542fd
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v2.0.0...v2.0.1)
    -
    -## v2.0.0 - August 7th, 2015
    -- [#66](https://github.com/kpdecker/jsdiff/issues/66) - Add karma and sauce tests ([@kpdecker](https://api.github.com/users/kpdecker))
    -- [#65](https://github.com/kpdecker/jsdiff/issues/65) - Create component repository for bower ([@kpdecker](https://api.github.com/users/kpdecker))
    -- [#64](https://github.com/kpdecker/jsdiff/issues/64) - Automatically call removeEmpty for all tokenizer calls ([@kpdecker](https://api.github.com/users/kpdecker))
    -- [#62](https://github.com/kpdecker/jsdiff/pull/62) - Allow access to structured object representation of patch data ([@bittrance](https://api.github.com/users/bittrance))
    -- [#61](https://github.com/kpdecker/jsdiff/pull/61) - Use svg instead of png to get better image quality ([@PeterDaveHello](https://api.github.com/users/PeterDaveHello))
    -- [#29](https://github.com/kpdecker/jsdiff/issues/29) - word tokenizer works only for 7 bit ascii ([@plasmagunman](https://api.github.com/users/plasmagunman))
    -
    -Compatibility notes:
    -- `this.removeEmpty` is now called automatically for all instances. If this is not desired, this may be overriden on a per instance basis.
    -- The library has been refactored to use some ES6 features. The external APIs should remain the same, but bower projects that directly referenced the repository will now have to point to the [components/jsdiff](https://github.com/components/jsdiff) repository.
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.4.0...v2.0.0)
    -
    -## v1.4.0 - May 6th, 2015
    -- [#57](https://github.com/kpdecker/jsdiff/issues/57) - createPatch -> applyPatch failed. ([@mog422](https://api.github.com/users/mog422))
    -- [#56](https://github.com/kpdecker/jsdiff/pull/56) - Two files patch ([@rgeissert](https://api.github.com/users/rgeissert))
    -- [#14](https://github.com/kpdecker/jsdiff/issues/14) - Flip added and removed order? ([@jakesandlund](https://api.github.com/users/jakesandlund))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.2...v1.4.0)
    -
    -## v1.3.2 - March 30th, 2015
    -- [#53](https://github.com/kpdecker/jsdiff/pull/53) - Updated README.MD with Bower installation instructions ([@ofbriggs](https://api.github.com/users/ofbriggs))
    -- [#49](https://github.com/kpdecker/jsdiff/issues/49) - Cannot read property 'oldlines' of undefined ([@nwtn](https://api.github.com/users/nwtn))
    -- [#44](https://github.com/kpdecker/jsdiff/issues/44) - invalid-meta jsdiff is missing "main" entry in bower.json
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.1...v1.3.2)
    -
    -## v1.3.1 - March 13th, 2015
    -- [#52](https://github.com/kpdecker/jsdiff/pull/52) - Fix for #51 Wrong result of JsDiff.diffLines ([@felicienfrancois](https://api.github.com/users/felicienfrancois))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.3.0...v1.3.1)
    -
    -## v1.3.0 - March 2nd, 2015
    -- [#47](https://github.com/kpdecker/jsdiff/pull/47) - Adding Diff Trimmed Lines ([@JamesGould123](https://api.github.com/users/JamesGould123))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.2...v1.3.0)
    -
    -## v1.2.2 - January 26th, 2015
    -- [#45](https://github.com/kpdecker/jsdiff/pull/45) - Fix AMD module loading ([@pedrocarrico](https://api.github.com/users/pedrocarrico))
    -- [#43](https://github.com/kpdecker/jsdiff/pull/43) - added a bower file ([@nbrustein](https://api.github.com/users/nbrustein))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.1...v1.2.2)
    -
    -## v1.2.1 - December 26th, 2014
    -- [#41](https://github.com/kpdecker/jsdiff/pull/41) - change condition of using node export system. ([@ironhee](https://api.github.com/users/ironhee))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.2.0...v1.2.1)
    -
    -## v1.2.0 - November 29th, 2014
    -- [#37](https://github.com/kpdecker/jsdiff/pull/37) - Add support for sentences. ([@vmariano](https://api.github.com/users/vmariano))
    -- [#28](https://github.com/kpdecker/jsdiff/pull/28) - Implemented diffJson ([@papandreou](https://api.github.com/users/papandreou))
    -- [#27](https://github.com/kpdecker/jsdiff/issues/27) - Slow to execute over diffs with a large number of changes ([@termi](https://api.github.com/users/termi))
    -- Allow for optional async diffing - 19385b9
    -- Fix diffChars implementation - eaa44ed
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.1.0...v1.2.0)
    -
    -## v1.1.0 - November 25th, 2014
    -- [#33](https://github.com/kpdecker/jsdiff/pull/33) - AMD and global exports ([@ovcharik](https://api.github.com/users/ovcharik))
    -- [#32](https://github.com/kpdecker/jsdiff/pull/32) - Add support for component ([@vmariano](https://api.github.com/users/vmariano))
    -- [#31](https://github.com/kpdecker/jsdiff/pull/31) - Don't rely on Array.prototype.map ([@papandreou](https://api.github.com/users/papandreou))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.8...v1.1.0)
    -
    -## v1.0.8 - December 22nd, 2013
    -- [#24](https://github.com/kpdecker/jsdiff/pull/24) - Handle windows newlines on non windows machines. ([@benogle](https://api.github.com/users/benogle))
    -- [#23](https://github.com/kpdecker/jsdiff/pull/23) - Prettied up the API formatting a little, and added basic node and web examples ([@airportyh](https://api.github.com/users/airportyh))
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.7...v1.0.8)
    -
    -## v1.0.7 - September 11th, 2013
    -
    -- [#22](https://github.com/kpdecker/jsdiff/pull/22) - Added variant of WordDiff that doesn't ignore whitespace differences ([@papandreou](https://api.github.com/users/papandreou)
    -
    -- Add 0.10 to travis tests - 243a526
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.6...v1.0.7)
    -
    -## v1.0.6 - August 30th, 2013
    -
    -- [#19](https://github.com/kpdecker/jsdiff/pull/19) - Explicitly define contents of npm package ([@sindresorhus](https://api.github.com/users/sindresorhus)
    -
    -[Commits](https://github.com/kpdecker/jsdiff/compare/v1.0.5...v1.0.6)
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/runtime.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/runtime.js
    deleted file mode 100644
    index fd8ca6ea..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/diff/runtime.js
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -require('babel-core/register')({
    -  ignore: /\/lib\/|\/node_modules\//
    -});
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.npmignore
    deleted file mode 100644
    index 062c11e8..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.npmignore
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -node_modules
    -*.log
    -*.err
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.travis.yml
    deleted file mode 100644
    index ed05f88d..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/.travis.yml
    +++ /dev/null
    @@ -1,6 +0,0 @@
    -language: node_js
    -node_js:
    -  - "0.11"
    -  - "0.10"
    -  - "0.8"
    -  - "0.6"
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/LICENCE
    deleted file mode 100644
    index a23e08a8..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/LICENCE
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -Copyright (c) 2012 Raynos.
    -
    -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.
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/README.md
    deleted file mode 100644
    index 61ff71aa..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/README.md
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -# duplexer
    -
    -[![build status][1]][2] [![dependency status][3]][4]
    -
    -[![browser support][5]][6]
    -
    -Creates a duplex stream
    -
    -Taken from [event-stream][7]
    -
    -## duplex (writeStream, readStream)
    -
    -Takes a writable stream and a readable stream and makes them appear as a readable writable stream.
    -
    -It is assumed that the two streams are connected to each other in some way.
    -
    -## Example
    -
    -```js
    -var grep = cp.exec('grep Stream')
    -
    -duplex(grep.stdin, grep.stdout)
    -```
    -
    -## Installation
    -
    -`npm install duplexer`
    -
    -## Tests
    -
    -`npm test`
    -
    -## Contributors
    -
    - - Dominictarr
    - - Raynos
    - - samccone
    -
    -## MIT Licenced
    -
    -  [1]: https://secure.travis-ci.org/Raynos/duplexer.png
    -  [2]: https://travis-ci.org/Raynos/duplexer
    -  [3]: https://david-dm.org/Raynos/duplexer.png
    -  [4]: https://david-dm.org/Raynos/duplexer
    -  [5]: https://ci.testling.com/Raynos/duplexer.png
    -  [6]: https://ci.testling.com/Raynos/duplexer
    -  [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/index.js
    deleted file mode 100644
    index a188a210..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/index.js
    +++ /dev/null
    @@ -1,87 +0,0 @@
    -var Stream = require("stream")
    -var writeMethods = ["write", "end", "destroy"]
    -var readMethods = ["resume", "pause"]
    -var readEvents = ["data", "close"]
    -var slice = Array.prototype.slice
    -
    -module.exports = duplex
    -
    -function forEach (arr, fn) {
    -    if (arr.forEach) {
    -        return arr.forEach(fn)
    -    }
    -
    -    for (var i = 0; i < arr.length; i++) {
    -        fn(arr[i], i)
    -    }
    -}
    -
    -function duplex(writer, reader) {
    -    var stream = new Stream()
    -    var ended = false
    -
    -    forEach(writeMethods, proxyWriter)
    -
    -    forEach(readMethods, proxyReader)
    -
    -    forEach(readEvents, proxyStream)
    -
    -    reader.on("end", handleEnd)
    -
    -    writer.on("drain", function() {
    -      stream.emit("drain")
    -    })
    -
    -    writer.on("error", reemit)
    -    reader.on("error", reemit)
    -
    -    stream.writable = writer.writable
    -    stream.readable = reader.readable
    -
    -    return stream
    -
    -    function proxyWriter(methodName) {
    -        stream[methodName] = method
    -
    -        function method() {
    -            return writer[methodName].apply(writer, arguments)
    -        }
    -    }
    -
    -    function proxyReader(methodName) {
    -        stream[methodName] = method
    -
    -        function method() {
    -            stream.emit(methodName)
    -            var func = reader[methodName]
    -            if (func) {
    -                return func.apply(reader, arguments)
    -            }
    -            reader.emit(methodName)
    -        }
    -    }
    -
    -    function proxyStream(methodName) {
    -        reader.on(methodName, reemit)
    -
    -        function reemit() {
    -            var args = slice.call(arguments)
    -            args.unshift(methodName)
    -            stream.emit.apply(stream, args)
    -        }
    -    }
    -
    -    function handleEnd() {
    -        if (ended) {
    -            return
    -        }
    -        ended = true
    -        var args = slice.call(arguments)
    -        args.unshift("end")
    -        stream.emit.apply(stream, args)
    -    }
    -
    -    function reemit(err) {
    -        stream.emit("error", err)
    -    }
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/package.json
    deleted file mode 100644
    index 4518e0e0..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/package.json
    +++ /dev/null
    @@ -1,108 +0,0 @@
    -{
    -  "_args": [
    -    [
    -      "duplexer@~0.1.1",
    -      "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream"
    -    ]
    -  ],
    -  "_from": "duplexer@>=0.1.1 <0.2.0",
    -  "_id": "duplexer@0.1.1",
    -  "_inCache": true,
    -  "_installable": true,
    -  "_location": "/duplexer",
    -  "_npmUser": {
    -    "email": "raynos2@gmail.com",
    -    "name": "raynos"
    -  },
    -  "_npmVersion": "1.2.18",
    -  "_phantomChildren": {},
    -  "_requested": {
    -    "name": "duplexer",
    -    "raw": "duplexer@~0.1.1",
    -    "rawSpec": "~0.1.1",
    -    "scope": null,
    -    "spec": ">=0.1.1 <0.2.0",
    -    "type": "range"
    -  },
    -  "_requiredBy": [
    -    "/event-stream",
    -    "/gulp-symdest/event-stream",
    -    "/gulp-vinyl-zip/event-stream",
    -    "/stream-combiner"
    -  ],
    -  "_resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
    -  "_shasum": "ace6ff808c1ce66b57d1ebf97977acb02334cfc1",
    -  "_shrinkwrap": null,
    -  "_spec": "duplexer@~0.1.1",
    -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream",
    -  "author": {
    -    "email": "raynos2@gmail.com",
    -    "name": "Raynos"
    -  },
    -  "bugs": {
    -    "email": "raynos2@gmail.com",
    -    "url": "https://github.com/Raynos/duplexer/issues"
    -  },
    -  "contributors": [
    -    {
    -      "name": "Jake Verbaten"
    -    }
    -  ],
    -  "dependencies": {},
    -  "description": "Creates a duplex stream",
    -  "devDependencies": {
    -    "tape": "0.3.3",
    -    "through": "~0.1.4"
    -  },
    -  "directories": {},
    -  "dist": {
    -    "shasum": "ace6ff808c1ce66b57d1ebf97977acb02334cfc1",
    -    "tarball": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz"
    -  },
    -  "homepage": "https://github.com/Raynos/duplexer",
    -  "keywords": [],
    -  "licenses": [
    -    {
    -      "type": "MIT",
    -      "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE"
    -    }
    -  ],
    -  "main": "index",
    -  "maintainers": [
    -    {
    -      "email": "raynos2@gmail.com",
    -      "name": "raynos"
    -    },
    -    {
    -      "email": "dominic.tarr@gmail.com",
    -      "name": "dominictarr"
    -    }
    -  ],
    -  "name": "duplexer",
    -  "optionalDependencies": {},
    -  "readme": "# duplexer\n\n[![build status][1]][2] [![dependency status][3]][4]\n\n[![browser support][5]][6]\n\nCreates a duplex stream\n\nTaken from [event-stream][7]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n```js\nvar grep = cp.exec('grep Stream')\n\nduplex(grep.stdin, grep.stdout)\n```\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`npm test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n - samccone\n\n## MIT Licenced\n\n  [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n  [2]: https://travis-ci.org/Raynos/duplexer\n  [3]: https://david-dm.org/Raynos/duplexer.png\n  [4]: https://david-dm.org/Raynos/duplexer\n  [5]: https://ci.testling.com/Raynos/duplexer.png\n  [6]: https://ci.testling.com/Raynos/duplexer\n  [7]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream\n",
    -  "readmeFilename": "README.md",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/Raynos/duplexer.git"
    -  },
    -  "scripts": {
    -    "test": "node test"
    -  },
    -  "testling": {
    -    "browsers": [
    -      "ie/8..latest",
    -      "firefox/16..latest",
    -      "firefox/nightly",
    -      "chrome/22..latest",
    -      "chrome/canary",
    -      "opera/12..latest",
    -      "opera/next",
    -      "safari/5.1..latest",
    -      "ipad/6.0..latest",
    -      "iphone/6.0..latest"
    -    ],
    -    "files": "test/index.js"
    -  },
    -  "version": "0.1.1"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/test/index.js
    deleted file mode 100644
    index 4988e0d9..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer/test/index.js
    +++ /dev/null
    @@ -1,31 +0,0 @@
    -var through = require("through")
    -var test    = require("tape")
    -
    -var duplex  = require("../index")
    -
    -var readable = through()
    -var writable = through(write)
    -var written = 0
    -var data = 0
    -
    -var stream = duplex(writable, readable)
    -
    -function write() {
    -    written++
    -}
    -
    -stream.on("data", ondata)
    -
    -function ondata() {
    -    data++
    -}
    -
    -test("emit and write", function(t) {
    -    t.plan(2)
    -
    -    stream.write()
    -    readable.emit("data")
    -
    -    t.equal(written, 1, "should have written once")
    -    t.equal(data, 1, "should have recived once")
    -})
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.npmignore
    deleted file mode 100644
    index 07e6e472..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.npmignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -/node_modules
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.travis.yml
    deleted file mode 100644
    index 6e5919de..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/.travis.yml
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -language: node_js
    -node_js:
    -  - "0.10"
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/LICENSE.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/LICENSE.md
    deleted file mode 100644
    index 547189a6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/LICENSE.md
    +++ /dev/null
    @@ -1,26 +0,0 @@
    -Copyright (c) 2013, Deoxxa Development
    -======================================
    -All rights reserved.
    ---------------------
    -  
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:  
    -1. Redistributions of source code must retain the above copyright
    -   notice, this list of conditions and the following disclaimer.  
    -2. Redistributions in binary form must reproduce the above copyright
    -   notice, this list of conditions and the following disclaimer in the
    -   documentation and/or other materials provided with the distribution.  
    -3. Neither the name of Deoxxa Development nor the names of its contributors
    -   may be used to endorse or promote products derived from this software
    -   without specific prior written permission.  
    -  
    -THIS SOFTWARE IS PROVIDED BY DEOXXA DEVELOPMENT ''AS IS'' AND ANY
    -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    -DISCLAIMED. IN NO EVENT SHALL DEOXXA DEVELOPMENT BE LIABLE FOR ANY
    -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/README.md
    deleted file mode 100644
    index e39e1e9e..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/README.md
    +++ /dev/null
    @@ -1,129 +0,0 @@
    -duplexer2 [![build status](https://travis-ci.org/deoxxa/duplexer2.png)](https://travis-ci.org/deoxxa/fork)
    -=========
    -
    -Like duplexer (http://npm.im/duplexer) but using streams2.
    -
    -Overview
    ---------
    -
    -duplexer2 is a reimplementation of [duplexer](http://npm.im/duplexer) using the
    -readable-stream API which is standard in node as of v0.10. Everything largely
    -works the same.
    -
    -Installation
    -------------
    -
    -Available via [npm](http://npmjs.org/):
    -
    -> $ npm install duplexer2
    -
    -Or via git:
    -
    -> $ git clone git://github.com/deoxxa/duplexer2.git node_modules/duplexer2
    -
    -API
    ----
    -
    -**duplexer2**
    -
    -Creates a new `DuplexWrapper` object, which is the actual class that implements
    -most of the fun stuff. All that fun stuff is hidden. DON'T LOOK.
    -
    -```javascript
    -duplexer2([options], writable, readable)
    -```
    -
    -```javascript
    -var duplex = duplexer2(new stream.Writable(), new stream.Readable());
    -```
    -
    -Arguments
    -
    -* __options__ - an object specifying the regular `stream.Duplex` options, as
    -  well as the properties described below.
    -* __writable__ - a writable stream
    -* __readable__ - a readable stream
    -
    -Options
    -
    -* __bubbleErrors__ - a boolean value that specifies whether to bubble errors
    -  from the underlying readable/writable streams. Default is `true`.
    -
    -Example
    --------
    -
    -Also see [example.js](https://github.com/deoxxa/duplexer2/blob/master/example.js).
    -
    -Code:
    -
    -```javascript
    -var stream = require("stream");
    -
    -var duplexer2 = require("duplexer2");
    -
    -var writable = new stream.Writable({objectMode: true}),
    -    readable = new stream.Readable({objectMode: true});
    -
    -writable._write = function _write(input, encoding, done) {
    -  if (readable.push(input)) {
    -    return done();
    -  } else {
    -    readable.once("drain", done);
    -  }
    -};
    -
    -readable._read = function _read(n) {
    -  // no-op
    -};
    -
    -// simulate the readable thing closing after a bit
    -writable.once("finish", function() {
    -  setTimeout(function() {
    -    readable.push(null);
    -  }, 500);
    -});
    -
    -var duplex = duplexer2(writable, readable);
    -
    -duplex.on("data", function(e) {
    -  console.log("got data", JSON.stringify(e));
    -});
    -
    -duplex.on("finish", function() {
    -  console.log("got finish event");
    -});
    -
    -duplex.on("end", function() {
    -  console.log("got end event");
    -});
    -
    -duplex.write("oh, hi there", function() {
    -  console.log("finished writing");
    -});
    -
    -duplex.end(function() {
    -  console.log("finished ending");
    -});
    -```
    -
    -Output:
    -
    -```
    -got data "oh, hi there"
    -finished writing
    -got finish event
    -finished ending
    -got end event
    -```
    -
    -License
    --------
    -
    -3-clause BSD. A copy is included with the source.
    -
    -Contact
    --------
    -
    -* GitHub ([deoxxa](http://github.com/deoxxa))
    -* Twitter ([@deoxxa](http://twitter.com/deoxxa))
    -* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz))
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/example.js
    deleted file mode 100755
    index 90416e9a..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/example.js
    +++ /dev/null
    @@ -1,49 +0,0 @@
    -#!/usr/bin/env node
    -
    -var stream = require("readable-stream");
    -
    -var duplexer2 = require("./");
    -
    -var writable = new stream.Writable({objectMode: true}),
    -    readable = new stream.Readable({objectMode: true});
    -
    -writable._write = function _write(input, encoding, done) {
    -  if (readable.push(input)) {
    -    return done();
    -  } else {
    -    readable.once("drain", done);
    -  }
    -};
    -
    -readable._read = function _read(n) {
    -  // no-op
    -};
    -
    -// simulate the readable thing closing after a bit
    -writable.once("finish", function() {
    -  setTimeout(function() {
    -    readable.push(null);
    -  }, 500);
    -});
    -
    -var duplex = duplexer2(writable, readable);
    -
    -duplex.on("data", function(e) {
    -  console.log("got data", JSON.stringify(e));
    -});
    -
    -duplex.on("finish", function() {
    -  console.log("got finish event");
    -});
    -
    -duplex.on("end", function() {
    -  console.log("got end event");
    -});
    -
    -duplex.write("oh, hi there", function() {
    -  console.log("finished writing");
    -});
    -
    -duplex.end(function() {
    -  console.log("finished ending");
    -});
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/index.js
    deleted file mode 100644
    index b8fafcb3..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/index.js
    +++ /dev/null
    @@ -1,62 +0,0 @@
    -var stream = require("readable-stream");
    -
    -var duplex2 = module.exports = function duplex2(options, writable, readable) {
    -  return new DuplexWrapper(options, writable, readable);
    -};
    -
    -var DuplexWrapper = exports.DuplexWrapper = function DuplexWrapper(options, writable, readable) {
    -  if (typeof readable === "undefined") {
    -    readable = writable;
    -    writable = options;
    -    options = null;
    -  }
    -
    -  options = options || {};
    -  options.objectMode = true;
    -
    -  stream.Duplex.call(this, options);
    -
    -  this._bubbleErrors = (typeof options.bubbleErrors === "undefined") || !!options.bubbleErrors;
    -
    -  this._writable = writable;
    -  this._readable = readable;
    -
    -  var self = this;
    -
    -  writable.once("finish", function() {
    -    self.end();
    -  });
    -
    -  this.once("finish", function() {
    -    writable.end();
    -  });
    -
    -  readable.on("data", function(e) {
    -    if (!self.push(e)) {
    -      readable.pause();
    -    }
    -  });
    -
    -  readable.once("end", function() {
    -    return self.push(null);
    -  });
    -
    -  if (this._bubbleErrors) {
    -    writable.on("error", function(err) {
    -      return self.emit("error", err);
    -    });
    -
    -    readable.on("error", function(err) {
    -      return self.emit("error", err);
    -    });
    -  }
    -};
    -DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});
    -
    -DuplexWrapper.prototype._write = function _write(input, encoding, done) {
    -  this._writable.write(input, encoding, done);
    -};
    -
    -DuplexWrapper.prototype._read = function _read(n) {
    -  this._readable.resume();
    -};
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/package.json
    deleted file mode 100644
    index aa46809d..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/package.json
    +++ /dev/null
    @@ -1,82 +0,0 @@
    -{
    -  "_args": [
    -    [
    -      "duplexer2@0.0.2",
    -      "/Users/sid/Desktop/code/RustyCode/node_modules/multipipe"
    -    ]
    -  ],
    -  "_from": "duplexer2@0.0.2",
    -  "_id": "duplexer2@0.0.2",
    -  "_inCache": true,
    -  "_installable": true,
    -  "_location": "/duplexer2",
    -  "_npmUser": {
    -    "email": "deoxxa@fknsrs.biz",
    -    "name": "deoxxa"
    -  },
    -  "_npmVersion": "1.4.3",
    -  "_phantomChildren": {},
    -  "_requested": {
    -    "name": "duplexer2",
    -    "raw": "duplexer2@0.0.2",
    -    "rawSpec": "0.0.2",
    -    "scope": null,
    -    "spec": "0.0.2",
    -    "type": "version"
    -  },
    -  "_requiredBy": [
    -    "/multipipe"
    -  ],
    -  "_resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
    -  "_shasum": "c614dcf67e2fb14995a91711e5a617e8a60a31db",
    -  "_shrinkwrap": null,
    -  "_spec": "duplexer2@0.0.2",
    -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/multipipe",
    -  "author": {
    -    "email": "deoxxa@fknsrs.biz",
    -    "name": "Conrad Pankoff",
    -    "url": "http://www.fknsrs.biz/"
    -  },
    -  "bugs": {
    -    "url": "https://github.com/deoxxa/duplexer2/issues"
    -  },
    -  "dependencies": {
    -    "readable-stream": "~1.1.9"
    -  },
    -  "description": "Like duplexer (http://npm.im/duplexer) but using streams2",
    -  "devDependencies": {
    -    "chai": "~1.7.2",
    -    "mocha": "~1.12.1"
    -  },
    -  "directories": {},
    -  "dist": {
    -    "shasum": "c614dcf67e2fb14995a91711e5a617e8a60a31db",
    -    "tarball": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz"
    -  },
    -  "homepage": "https://github.com/deoxxa/duplexer2",
    -  "keywords": [
    -    "duplex",
    -    "stream",
    -    "join",
    -    "combine"
    -  ],
    -  "license": "BSD",
    -  "main": "index.js",
    -  "maintainers": [
    -    {
    -      "email": "deoxxa@fknsrs.biz",
    -      "name": "deoxxa"
    -    }
    -  ],
    -  "name": "duplexer2",
    -  "optionalDependencies": {},
    -  "readme": "ERROR: No README data found!",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/deoxxa/duplexer2.git"
    -  },
    -  "scripts": {
    -    "test": "mocha -R tap"
    -  },
    -  "version": "0.0.2"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/test/tests.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/test/tests.js
    deleted file mode 100644
    index c3cf76f6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexer2/test/tests.js
    +++ /dev/null
    @@ -1,161 +0,0 @@
    -var assert = require("chai").assert;
    -
    -var stream = require("readable-stream");
    -
    -var duplexer2 = require("../");
    -
    -describe("duplexer2", function() {
    -  var writable, readable;
    -
    -  beforeEach(function() {
    -    writable = new stream.Writable({objectMode: true});
    -    readable = new stream.Readable({objectMode: true});
    -
    -    writable._write = function _write(input, encoding, done) {
    -      return done();
    -    };
    -
    -    readable._read = function _read(n) {
    -    };
    -  });
    -
    -  it("should interact with the writable stream properly for writing", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    writable._write = function _write(input, encoding, _done) {
    -      assert.strictEqual(input, "well hello there");
    -
    -      return done();
    -    };
    -
    -    duplex.write("well hello there");
    -  });
    -
    -  it("should interact with the readable stream properly for reading", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    duplex.on("data", function(e) {
    -      assert.strictEqual(e, "well hello there");
    -
    -      return done();
    -    });
    -
    -    readable.push("well hello there");
    -  });
    -
    -  it("should end the writable stream, causing it to finish", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    writable.once("finish", done);
    -
    -    duplex.end();
    -  });
    -
    -  it("should finish when the writable stream finishes", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    duplex.once("finish", done);
    -
    -    writable.end();
    -  });
    -
    -  it("should end when the readable stream ends", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    // required to let "end" fire without reading
    -    duplex.resume();
    -    duplex.once("end", done);
    -
    -    readable.push(null);
    -  });
    -
    -  it("should bubble errors from the writable stream when no behaviour is specified", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    var originalErr = Error("testing");
    -
    -    duplex.on("error", function(err) {
    -      assert.strictEqual(err, originalErr);
    -
    -      return done();
    -    });
    -
    -    writable.emit("error", originalErr);
    -  });
    -
    -  it("should bubble errors from the readable stream when no behaviour is specified", function(done) {
    -    var duplex = duplexer2(writable, readable);
    -
    -    var originalErr = Error("testing");
    -
    -    duplex.on("error", function(err) {
    -      assert.strictEqual(err, originalErr);
    -
    -      return done();
    -    });
    -
    -    readable.emit("error", originalErr);
    -  });
    -
    -  it("should bubble errors from the writable stream when bubbleErrors is true", function(done) {
    -    var duplex = duplexer2({bubbleErrors: true}, writable, readable);
    -
    -    var originalErr = Error("testing");
    -
    -    duplex.on("error", function(err) {
    -      assert.strictEqual(err, originalErr);
    -
    -      return done();
    -    });
    -
    -    writable.emit("error", originalErr);
    -  });
    -
    -  it("should bubble errors from the readable stream when bubbleErrors is true", function(done) {
    -    var duplex = duplexer2({bubbleErrors: true}, writable, readable);
    -
    -    var originalErr = Error("testing");
    -
    -    duplex.on("error", function(err) {
    -      assert.strictEqual(err, originalErr);
    -
    -      return done();
    -    });
    -
    -    readable.emit("error", originalErr);
    -  });
    -
    -  it("should not bubble errors from the writable stream when bubbleErrors is false", function(done) {
    -    var duplex = duplexer2({bubbleErrors: false}, writable, readable);
    -
    -    var timeout = setTimeout(done, 25);
    -
    -    duplex.on("error", function(err) {
    -      clearTimeout(timeout);
    -
    -      return done(Error("shouldn't bubble error"));
    -    });
    -
    -    // prevent uncaught error exception
    -    writable.on("error", function() {});
    -
    -    writable.emit("error", Error("testing"));
    -  });
    -
    -  it("should not bubble errors from the readable stream when bubbleErrors is false", function(done) {
    -    var duplex = duplexer2({bubbleErrors: false}, writable, readable);
    -
    -    var timeout = setTimeout(done, 25);
    -
    -    duplex.on("error", function(err) {
    -      clearTimeout(timeout);
    -
    -      return done(Error("shouldn't bubble error"));
    -    });
    -
    -    // prevent uncaught error exception
    -    readable.on("error", function() {});
    -
    -    readable.emit("error", Error("testing"));
    -  });
    -});
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.npmignore
    deleted file mode 100644
    index 3c3629e6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.npmignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -node_modules
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.travis.yml
    deleted file mode 100644
    index 05d299e6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/.travis.yml
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -language: node_js
    -node_js:
    -  - "0.10"
    -  - "0.11"
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/LICENSE
    deleted file mode 100644
    index 757562ec..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/LICENSE
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -The MIT License (MIT)
    -
    -Copyright (c) 2014 Mathias Buus
    -
    -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.
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/README.md
    deleted file mode 100644
    index 6ed497b4..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/README.md
    +++ /dev/null
    @@ -1,97 +0,0 @@
    -# duplexify
    -
    -Turn a writeable and readable stream into a single streams2 duplex stream.
    -
    -Similar to [duplexer2](https://github.com/deoxxa/duplexer2) except it supports both streams2 and streams1 as input
    -and it allows you to set the readable and writable part asynchroniously using `setReadable(stream)` and `setWritable(stream)`
    -
    -```
    -npm install duplexify
    -```
    -
    -[![build status](http://img.shields.io/travis/mafintosh/duplexify.svg?style=flat)](http://travis-ci.org/mafintosh/duplexify)
    -
    -## Usage
    -
    -Use `duplexify(writable, readable, streamOptions)` (or `duplexify.obj(writable, readable)` to create an object stream)
    -
    -``` js
    -var duplexify = require('duplexify')
    -
    -// turn writableStream and readableStream into a single duplex stream
    -var dup = duplexify(writableStream, readableStream)
    -
    -dup.write('hello world') // will write to writableStream
    -dup.on('data', function(data) {
    -  // will read from readableStream
    -})
    -```
    -
    -You can also set the readable and writable parts asynchroniously
    -
    -``` js
    -var dup = duplexify()
    -
    -dup.write('hello world') // write will buffer until the writable
    -                         // part has been set
    -
    -// wait a bit ...
    -dup.setReadable(readableStream)
    -
    -// maybe wait some more?
    -dup.setWritable(writableStream)
    -```
    -
    -If you call `setReadable` or `setWritable` multiple times it will unregister the previous readable/writable stream.
    -To disable the readable or writable part call `setReadable` or `setWritable` with `null`.
    -
    -If the readable or writable streams emits an error or close it will destroy both streams and bubble up the event.
    -You can also explictly destroy the streams by calling `dup.destroy()`. The `destroy` method optionally takes an
    -error object as argument, in which case the error is emitted as part of the `error` event.
    -
    -``` js
    -dup.on('error', function(err) {
    -  console.log('readable or writable emitted an error - close will follow')
    -})
    -
    -dup.on('close', function() {
    -  console.log('the duplex stream is destroyed')
    -})
    -
    -dup.destroy() // calls destroy on the readable and writable part (if present)
    -```
    -
    -## HTTP request example
    -
    -Turn a node core http request into a duplex stream is as easy as
    -
    -``` js
    -var duplexify = require('duplexify')
    -var http = require('http')
    -
    -var request = function(opts) {
    -  var req = http.request(opts)
    -  var dup = duplexify(req)
    -  req.on('response', function(res) {
    -    dup.setReadable(res)
    -  })
    -  return dup
    -}
    -
    -var req = request({
    -  method: 'GET',
    -  host: 'www.google.com',
    -  port: 80
    -})
    -
    -req.end()
    -req.pipe(process.stdout)
    -```
    -
    -## License
    -
    -MIT
    -
    -## Related
    -
    -`duplexify` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/example.js
    deleted file mode 100644
    index 5585c197..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/example.js
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -var duplexify = require('duplexify')
    -var http = require('http')
    -
    -var request = function(opts) {
    -  var req = http.request(opts)
    -  var dup = duplexify()
    -  dup.setWritable(req)
    -  req.on('response', function(res) {
    -    dup.setReadable(res)
    -  })
    -  return dup
    -}
    -
    -var req = request({
    -  method: 'GET',
    -  host: 'www.google.com',
    -  port: 80
    -})
    -
    -req.end()
    -req.pipe(process.stdout)
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/index.js
    deleted file mode 100644
    index 7ae44737..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/index.js
    +++ /dev/null
    @@ -1,227 +0,0 @@
    -var stream = require('readable-stream')
    -var eos = require('end-of-stream')
    -var inherits = require('inherits')
    -
    -var SIGNAL_FLUSH = new Buffer([0])
    -
    -var onuncork = function(self, fn) {
    -  if (self._corked) self.once('uncork', fn)
    -  else fn()
    -}
    -
    -var destroyer = function(self, end) {
    -  return function(err) {
    -    if (err) self.destroy(err.message === 'premature close' ? null : err)
    -    else if (end && !self._ended) self.end()
    -  }
    -}
    -
    -var end = function(ws, fn) {
    -  if (!ws) return fn()
    -  if (ws._writableState && ws._writableState.finished) return fn()
    -  if (ws._writableState) return ws.end(fn)
    -  ws.end()
    -  fn()
    -}
    -
    -var toStreams2 = function(rs) {
    -  return new (stream.Readable)({objectMode:true, highWaterMark:16}).wrap(rs)
    -}
    -
    -var Duplexify = function(writable, readable, opts) {
    -  if (!(this instanceof Duplexify)) return new Duplexify(writable, readable, opts)
    -  stream.Duplex.call(this, opts)
    -
    -  this._writable = null
    -  this._readable = null
    -  this._readable2 = null
    -
    -  this._forwardDestroy = !opts || opts.destroy !== false
    -  this._forwardEnd = !opts || opts.end !== false
    -  this._corked = 1 // start corked
    -  this._ondrain = null
    -  this._drained = false
    -  this._forwarding = false
    -  this._unwrite = null
    -  this._unread = null
    -  this._ended = false
    -
    -  this.destroyed = false
    -
    -  if (writable) this.setWritable(writable)
    -  if (readable) this.setReadable(readable)
    -}
    -
    -inherits(Duplexify, stream.Duplex)
    -
    -Duplexify.obj = function(writable, readable, opts) {
    -  if (!opts) opts = {}
    -  opts.objectMode = true
    -  opts.highWaterMark = 16
    -  return new Duplexify(writable, readable, opts)
    -}
    -
    -Duplexify.prototype.cork = function() {
    -  if (++this._corked === 1) this.emit('cork')
    -}
    -
    -Duplexify.prototype.uncork = function() {
    -  if (this._corked && --this._corked === 0) this.emit('uncork')
    -}
    -
    -Duplexify.prototype.setWritable = function(writable) {
    -  if (this._unwrite) this._unwrite()
    -
    -  if (this.destroyed) {
    -    if (writable && writable.destroy) writable.destroy()
    -    return
    -  }
    -
    -  if (writable === null || writable === false) {
    -    this.end()
    -    return
    -  }
    -
    -  var self = this
    -  var unend = eos(writable, {writable:true, readable:false}, destroyer(this, this._forwardEnd))
    -
    -  var ondrain = function() {
    -    var ondrain = self._ondrain
    -    self._ondrain = null
    -    if (ondrain) ondrain()
    -  }
    -
    -  var clear = function() {
    -    self._writable.removeListener('drain', ondrain)
    -    unend()
    -  }
    -
    -  if (this._unwrite) process.nextTick(ondrain) // force a drain on stream reset to avoid livelocks
    -
    -  this._writable = writable
    -  this._writable.on('drain', ondrain)
    -  this._unwrite = clear
    -
    -  this.uncork() // always uncork setWritable
    -}
    -
    -Duplexify.prototype.setReadable = function(readable) {
    -  if (this._unread) this._unread()
    -
    -  if (this.destroyed) {
    -    if (readable && readable.destroy) readable.destroy()
    -    return
    -  }
    -
    -  if (readable === null || readable === false) {
    -    this.push(null)
    -    this.resume()
    -    return
    -  }
    -
    -  var self = this
    -  var unend = eos(readable, {writable:false, readable:true}, destroyer(this))
    -
    -  var onreadable = function() {
    -    self._forward()
    -  }
    -
    -  var onend = function() {
    -    self.push(null)
    -  }
    -
    -  var clear = function() {
    -    self._readable2.removeListener('readable', onreadable)
    -    self._readable2.removeListener('end', onend)
    -    unend()
    -  }
    -
    -  this._drained = true
    -  this._readable = readable
    -  this._readable2 = readable._readableState ? readable : toStreams2(readable)
    -  this._readable2.on('readable', onreadable)
    -  this._readable2.on('end', onend)
    -  this._unread = clear
    -
    -  this._forward()
    -}
    -
    -Duplexify.prototype._read = function() {
    -  this._drained = true
    -  this._forward()
    -}
    -
    -Duplexify.prototype._forward = function() {
    -  if (this._forwarding || !this._readable2 || !this._drained) return
    -  this._forwarding = true
    -
    -  var data
    -  var state = this._readable2._readableState
    -
    -  while ((data = this._readable2.read(state.buffer.length ? state.buffer[0].length : state.length)) !== null) {
    -    this._drained = this.push(data)
    -  }
    -
    -  this._forwarding = false
    -}
    -
    -Duplexify.prototype.destroy = function(err) {
    -  if (this.destroyed) return
    -  this.destroyed = true
    -
    -  var self = this
    -  process.nextTick(function() {
    -    self._destroy(err)
    -  })
    -}
    -
    -Duplexify.prototype._destroy = function(err) {
    -  if (err) {
    -    var ondrain = this._ondrain
    -    this._ondrain = null
    -    if (ondrain) ondrain(err)
    -    else this.emit('error', err)
    -  }
    -
    -  if (this._forwardDestroy) {
    -    if (this._readable && this._readable.destroy) this._readable.destroy()
    -    if (this._writable && this._writable.destroy) this._writable.destroy()
    -  }
    -
    -  this.emit('close')
    -}
    -
    -Duplexify.prototype._write = function(data, enc, cb) {
    -  if (this.destroyed) return cb()
    -  if (this._corked) return onuncork(this, this._write.bind(this, data, enc, cb))
    -  if (data === SIGNAL_FLUSH) return this._finish(cb)
    -  if (!this._writable) return cb()
    -
    -  if (this._writable.write(data) === false) this._ondrain = cb
    -  else cb()
    -}
    -
    -
    -Duplexify.prototype._finish = function(cb) {
    -  var self = this
    -  this.emit('preend')
    -  onuncork(this, function() {
    -    end(self._forwardEnd && self._writable, function() {
    -      // haxx to not emit prefinish twice
    -      if (self._writableState.prefinished === false) self._writableState.prefinished = true
    -      self.emit('prefinish')
    -      onuncork(self, cb)
    -    })
    -  })
    -}
    -
    -Duplexify.prototype.end = function(data, enc, cb) {
    -  if (typeof data === 'function') return this.end(null, null, data)
    -  if (typeof enc === 'function') return this.end(data, null, enc)
    -  this._ended = true
    -  if (data) this.write(data)
    -  if (!this._writableState.ending) this.write(SIGNAL_FLUSH)
    -  return stream.Writable.prototype.end.call(this, cb)
    -}
    -
    -module.exports = Duplexify
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/.npmignore
    deleted file mode 100644
    index 3c3629e6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/.npmignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -node_modules
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/README.md
    deleted file mode 100644
    index df800c1e..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/README.md
    +++ /dev/null
    @@ -1,47 +0,0 @@
    -# end-of-stream
    -
    -A node module that calls a callback when a readable/writable/duplex stream has completed or failed.
    -
    -	npm install end-of-stream
    -
    -## Usage
    -
    -Simply pass a stream and a callback to the `eos`.
    -Both legacy streams and streams2 are supported.
    -
    -``` js
    -var eos = require('end-of-stream');
    -
    -eos(readableStream, function(err) {
    -	if (err) return console.log('stream had an error or closed early');
    -	console.log('stream has ended');
    -});
    -
    -eos(writableStream, function(err) {
    -	if (err) return console.log('stream had an error or closed early');
    -	console.log('stream has finished');
    -});
    -
    -eos(duplexStream, function(err) {
    -	if (err) return console.log('stream had an error or closed early');
    -	console.log('stream has ended and finished');
    -});
    -
    -eos(duplexStream, {readable:false}, function(err) {
    -	if (err) return console.log('stream had an error or closed early');
    -	console.log('stream has ended but might still be writable');
    -});
    -
    -eos(duplexStream, {writable:false}, function(err) {
    -	if (err) return console.log('stream had an error or closed early');
    -	console.log('stream has ended but might still be readable');
    -});
    -
    -eos(readableStream, {error:false}, function(err) {
    -	// do not treat emit('error', err) as a end-of-stream
    -});
    -```
    -
    -## License
    -
    -MIT
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/index.js
    deleted file mode 100644
    index 9f61ed5a..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/index.js
    +++ /dev/null
    @@ -1,72 +0,0 @@
    -var once = require('once');
    -
    -var noop = function() {};
    -
    -var isRequest = function(stream) {
    -	return stream.setHeader && typeof stream.abort === 'function';
    -};
    -
    -var eos = function(stream, opts, callback) {
    -	if (typeof opts === 'function') return eos(stream, null, opts);
    -	if (!opts) opts = {};
    -
    -	callback = once(callback || noop);
    -
    -	var ws = stream._writableState;
    -	var rs = stream._readableState;
    -	var readable = opts.readable || (opts.readable !== false && stream.readable);
    -	var writable = opts.writable || (opts.writable !== false && stream.writable);
    -
    -	var onlegacyfinish = function() {
    -		if (!stream.writable) onfinish();
    -	};
    -
    -	var onfinish = function() {
    -		writable = false;
    -		if (!readable) callback();
    -	};
    -
    -	var onend = function() {
    -		readable = false;
    -		if (!writable) callback();
    -	};
    -
    -	var onclose = function() {
    -		if (readable && !(rs && rs.ended)) return callback(new Error('premature close'));
    -		if (writable && !(ws && ws.ended)) return callback(new Error('premature close'));
    -	};
    -
    -	var onrequest = function() {
    -		stream.req.on('finish', onfinish);
    -	};
    -
    -	if (isRequest(stream)) {
    -		stream.on('complete', onfinish);
    -		stream.on('abort', onclose);
    -		if (stream.req) onrequest();
    -		else stream.on('request', onrequest);
    -	} else if (writable && !ws) { // legacy streams
    -		stream.on('end', onlegacyfinish);
    -		stream.on('close', onlegacyfinish);
    -	}
    -
    -	stream.on('end', onend);
    -	stream.on('finish', onfinish);
    -	if (opts.error !== false) stream.on('error', callback);
    -	stream.on('close', onclose);
    -
    -	return function() {
    -		stream.removeListener('complete', onfinish);
    -		stream.removeListener('abort', onclose);
    -		stream.removeListener('request', onrequest);
    -		if (stream.req) stream.req.removeListener('finish', onfinish);
    -		stream.removeListener('end', onlegacyfinish);
    -		stream.removeListener('close', onlegacyfinish);
    -		stream.removeListener('finish', onfinish);
    -		stream.removeListener('end', onend);
    -		stream.removeListener('error', callback);
    -		stream.removeListener('close', onclose);
    -	};
    -};
    -
    -module.exports = eos;
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/package.json
    deleted file mode 100644
    index 3c2aec7e..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/package.json
    +++ /dev/null
    @@ -1,81 +0,0 @@
    -{
    -  "_args": [
    -    [
    -      "end-of-stream@1.0.0",
    -      "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify"
    -    ]
    -  ],
    -  "_from": "end-of-stream@1.0.0",
    -  "_id": "end-of-stream@1.0.0",
    -  "_inCache": true,
    -  "_installable": true,
    -  "_location": "/duplexify/end-of-stream",
    -  "_npmUser": {
    -    "email": "mathiasbuus@gmail.com",
    -    "name": "mafintosh"
    -  },
    -  "_npmVersion": "1.4.9",
    -  "_phantomChildren": {},
    -  "_requested": {
    -    "name": "end-of-stream",
    -    "raw": "end-of-stream@1.0.0",
    -    "rawSpec": "1.0.0",
    -    "scope": null,
    -    "spec": "1.0.0",
    -    "type": "version"
    -  },
    -  "_requiredBy": [
    -    "/duplexify"
    -  ],
    -  "_resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz",
    -  "_shasum": "d4596e702734a93e40e9af864319eabd99ff2f0e",
    -  "_shrinkwrap": null,
    -  "_spec": "end-of-stream@1.0.0",
    -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify",
    -  "author": {
    -    "email": "mathiasbuus@gmail.com",
    -    "name": "Mathias Buus"
    -  },
    -  "bugs": {
    -    "url": "https://github.com/mafintosh/end-of-stream/issues"
    -  },
    -  "dependencies": {
    -    "once": "~1.3.0"
    -  },
    -  "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
    -  "devDependencies": {},
    -  "directories": {},
    -  "dist": {
    -    "shasum": "d4596e702734a93e40e9af864319eabd99ff2f0e",
    -    "tarball": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz"
    -  },
    -  "homepage": "https://github.com/mafintosh/end-of-stream",
    -  "keywords": [
    -    "stream",
    -    "streams",
    -    "callback",
    -    "finish",
    -    "close",
    -    "end",
    -    "wait"
    -  ],
    -  "license": "MIT",
    -  "main": "index.js",
    -  "maintainers": [
    -    {
    -      "email": "mathiasbuus@gmail.com",
    -      "name": "mafintosh"
    -    }
    -  ],
    -  "name": "end-of-stream",
    -  "optionalDependencies": {},
    -  "readme": "ERROR: No README data found!",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/mafintosh/end-of-stream.git"
    -  },
    -  "scripts": {
    -    "test": "node test.js"
    -  },
    -  "version": "1.0.0"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/test.js
    deleted file mode 100644
    index d4d126fe..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/end-of-stream/test.js
    +++ /dev/null
    @@ -1,62 +0,0 @@
    -var assert = require('assert');
    -var eos = require('./index');
    -
    -var expected = 6;
    -var fs = require('fs');
    -var net = require('net');
    -
    -var ws = fs.createWriteStream('/dev/null');
    -eos(ws, function(err) {
    -	expected--;
    -	assert(!!err);
    -	if (!expected) process.exit(0);
    -});
    -ws.close();
    -
    -var rs = fs.createReadStream('/dev/random');
    -eos(rs, function(err) {
    -	expected--;
    -	assert(!!err);
    -	if (!expected) process.exit(0);
    -});
    -rs.close();
    -
    -var rs = fs.createReadStream(__filename);
    -eos(rs, function(err) {
    -	expected--;
    -	assert(!err);
    -	if (!expected) process.exit(0);
    -});
    -rs.pipe(fs.createWriteStream('/dev/null'));
    -
    -var rs = fs.createReadStream(__filename);
    -eos(rs, function(err) {
    -	throw new Error('no go')
    -})();
    -rs.pipe(fs.createWriteStream('/dev/null'));
    -
    -var socket = net.connect(50000);
    -eos(socket, function(err) {
    -	expected--;
    -	assert(!!err);
    -	if (!expected) process.exit(0);
    -});
    -
    -var server = net.createServer(function(socket) {
    -	eos(socket, function() {
    -		expected--;
    -		if (!expected) process.exit(0);
    -	});
    -	socket.destroy();
    -}).listen(30000, function() {
    -	var socket = net.connect(30000);
    -	eos(socket, function() {
    -		expected--;
    -		if (!expected) process.exit(0);
    -	});
    -});
    -
    -setTimeout(function() {
    -	assert(expected === 0);
    -	process.exit(0);
    -}, 1000);
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.npmignore
    deleted file mode 100644
    index 3c3629e6..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.npmignore
    +++ /dev/null
    @@ -1 +0,0 @@
    -node_modules
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.travis.yml
    deleted file mode 100644
    index cc4dba29..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/.travis.yml
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -language: node_js
    -node_js:
    -  - "0.8"
    -  - "0.10"
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/Makefile
    deleted file mode 100644
    index 787d56e1..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/Makefile
    +++ /dev/null
    @@ -1,6 +0,0 @@
    -
    -test:
    -	@node_modules/.bin/tape test.js
    -
    -.PHONY: test
    -
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/README.md
    deleted file mode 100644
    index 16d2c59c..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/README.md
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -
    -# isarray
    -
    -`Array#isArray` for older browsers.
    -
    -[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray)
    -[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray)
    -
    -[![browser support](https://ci.testling.com/juliangruber/isarray.png)
    -](https://ci.testling.com/juliangruber/isarray)
    -
    -## Usage
    -
    -```js
    -var isArray = require('isarray');
    -
    -console.log(isArray([])); // => true
    -console.log(isArray({})); // => false
    -```
    -
    -## Installation
    -
    -With [npm](http://npmjs.org) do
    -
    -```bash
    -$ npm install isarray
    -```
    -
    -Then bundle for the browser with
    -[browserify](https://github.com/substack/browserify).
    -
    -With [component](http://component.io) do
    -
    -```bash
    -$ component install juliangruber/isarray
    -```
    -
    -## License
    -
    -(MIT)
    -
    -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
    -
    -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/component.json
    deleted file mode 100644
    index 9e31b683..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/component.json
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -{
    -  "name" : "isarray",
    -  "description" : "Array#isArray for older browsers",
    -  "version" : "0.0.1",
    -  "repository" : "juliangruber/isarray",
    -  "homepage": "https://github.com/juliangruber/isarray",
    -  "main" : "index.js",
    -  "scripts" : [
    -    "index.js"
    -  ],
    -  "dependencies" : {},
    -  "keywords": ["browser","isarray","array"],
    -  "author": {
    -    "name": "Julian Gruber",
    -    "email": "mail@juliangruber.com",
    -    "url": "http://juliangruber.com"
    -  },
    -  "license": "MIT"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/index.js
    deleted file mode 100644
    index a57f6349..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/index.js
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -var toString = {}.toString;
    -
    -module.exports = Array.isArray || function (arr) {
    -  return toString.call(arr) == '[object Array]';
    -};
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/package.json
    deleted file mode 100644
    index 0459b826..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/package.json
    +++ /dev/null
    @@ -1,96 +0,0 @@
    -{
    -  "_args": [
    -    [
    -      "isarray@~1.0.0",
    -      "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify/node_modules/readable-stream"
    -    ]
    -  ],
    -  "_from": "isarray@>=1.0.0 <1.1.0",
    -  "_id": "isarray@1.0.0",
    -  "_inCache": true,
    -  "_installable": true,
    -  "_location": "/duplexify/isarray",
    -  "_nodeVersion": "5.1.0",
    -  "_npmUser": {
    -    "email": "julian@juliangruber.com",
    -    "name": "juliangruber"
    -  },
    -  "_npmVersion": "3.3.12",
    -  "_phantomChildren": {},
    -  "_requested": {
    -    "name": "isarray",
    -    "raw": "isarray@~1.0.0",
    -    "rawSpec": "~1.0.0",
    -    "scope": null,
    -    "spec": ">=1.0.0 <1.1.0",
    -    "type": "range"
    -  },
    -  "_requiredBy": [
    -    "/duplexify/readable-stream"
    -  ],
    -  "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
    -  "_shasum": "bb935d48582cba168c06834957a54a3e07124f11",
    -  "_shrinkwrap": null,
    -  "_spec": "isarray@~1.0.0",
    -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify/node_modules/readable-stream",
    -  "author": {
    -    "email": "mail@juliangruber.com",
    -    "name": "Julian Gruber",
    -    "url": "http://juliangruber.com"
    -  },
    -  "bugs": {
    -    "url": "https://github.com/juliangruber/isarray/issues"
    -  },
    -  "dependencies": {},
    -  "description": "Array#isArray for older browsers",
    -  "devDependencies": {
    -    "tape": "~2.13.4"
    -  },
    -  "directories": {},
    -  "dist": {
    -    "shasum": "bb935d48582cba168c06834957a54a3e07124f11",
    -    "tarball": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
    -  },
    -  "gitHead": "2a23a281f369e9ae06394c0fb4d2381355a6ba33",
    -  "homepage": "https://github.com/juliangruber/isarray",
    -  "keywords": [
    -    "browser",
    -    "isarray",
    -    "array"
    -  ],
    -  "license": "MIT",
    -  "main": "index.js",
    -  "maintainers": [
    -    {
    -      "email": "julian@juliangruber.com",
    -      "name": "juliangruber"
    -    }
    -  ],
    -  "name": "isarray",
    -  "optionalDependencies": {},
    -  "readme": "ERROR: No README data found!",
    -  "repository": {
    -    "type": "git",
    -    "url": "git://github.com/juliangruber/isarray.git"
    -  },
    -  "scripts": {
    -    "test": "tape test.js"
    -  },
    -  "testling": {
    -    "browsers": [
    -      "ie/8..latest",
    -      "firefox/17..latest",
    -      "firefox/nightly",
    -      "chrome/22..latest",
    -      "chrome/canary",
    -      "opera/12..latest",
    -      "opera/next",
    -      "safari/5.1..latest",
    -      "ipad/6.0..latest",
    -      "iphone/6.0..latest",
    -      "android-browser/4.2..latest"
    -    ],
    -    "files": "test.js"
    -  },
    -  "version": "1.0.0"
    -}
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/test.js
    deleted file mode 100644
    index e0c3444d..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/isarray/test.js
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -var isArray = require('./');
    -var test = require('tape');
    -
    -test('is array', function(t){
    -  t.ok(isArray([]));
    -  t.notOk(isArray({}));
    -  t.notOk(isArray(null));
    -  t.notOk(isArray(false));
    -
    -  var obj = {};
    -  obj[0] = true;
    -  t.notOk(isArray(obj));
    -
    -  var arr = [];
    -  arr.foo = 'bar';
    -  t.ok(isArray(arr));
    -
    -  t.end();
    -});
    -
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.npmignore
    deleted file mode 100644
    index 38344f87..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.npmignore
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -build/
    -test/
    -examples/
    -fs.js
    -zlib.js
    \ No newline at end of file
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.travis.yml
    deleted file mode 100644
    index ae0156a9..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/.travis.yml
    +++ /dev/null
    @@ -1,54 +0,0 @@
    -sudo: false
    -language: node_js
    -before_install:
    -  - npm install -g npm@2
    -  - npm install -g npm
    -notifications:
    -  email: false
    -matrix:
    -  fast_finish: true
    -  allow_failures:
    -    - env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest"
    -    - env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest"
    -  include:
    -  - node_js: '0.8'
    -    env: TASK=test
    -  - node_js: '0.10'
    -    env: TASK=test
    -  - node_js: '0.11'
    -    env: TASK=test
    -  - node_js: '0.12'
    -    env: TASK=test
    -  - node_js: 1
    -    env: TASK=test
    -  - node_js: 2
    -    env: TASK=test
    -  - node_js: 3
    -    env: TASK=test
    -  - node_js: 4
    -    env: TASK=test
    -  - node_js: 5
    -    env: TASK=test
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=android BROWSER_VERSION="4.0..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=ie BROWSER_VERSION="9..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=opera BROWSER_VERSION="11..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=chrome BROWSER_VERSION="-3..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=firefox BROWSER_VERSION="-3..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=safari BROWSER_VERSION="5..latest"
    -  - node_js: 5
    -    env: TASK=browser BROWSER_NAME=microsoftedge BROWSER_VERSION=latest
    -script: "npm run $TASK"
    -env:
    -  global:
    -  - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc=
    -  - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI=
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/LICENSE
    deleted file mode 100644
    index e3d4e695..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/LICENSE
    +++ /dev/null
    @@ -1,18 +0,0 @@
    -Copyright Joyent, Inc. and other Node contributors. All rights reserved.
    -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/README.md
    deleted file mode 100644
    index beedc276..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/README.md
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -# readable-stream
    -
    -***Node-core v5.9.1 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream)
    -
    -
    -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/)
    -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/)
    -
    -
    -[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream)
    -
    -```bash
    -npm install --save readable-stream
    -```
    -
    -***Node-core streams for userland***
    -
    -This package is a mirror of the Streams2 and Streams3 implementations in
    -Node-core, including [documentation](doc/stream.markdown).
    -
    -If you want to guarantee a stable streams base, regardless of what version of
    -Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html).
    -
    -As of version 2.0.0 **readable-stream** uses semantic versioning.  
    -
    -# Streams WG Team Members
    -
    -* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com>
    -  - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B
    -* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com>
    -  - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242
    -* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org>
    -  - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D
    -* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com>
    -* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com>
    -* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me>
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/stream.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/stream.markdown
    deleted file mode 100644
    index ecf997a3..00000000
    --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/stream.markdown
    +++ /dev/null
    @@ -1,1761 +0,0 @@
    -# Stream
    -
    -    Stability: 2 - Stable
    -
    -A stream is an abstract interface implemented by various objects in
    -Node.js. For example a [request to an HTTP server][http-incoming-message] is a
    -stream, as is [`process.stdout`][]. Streams are readable, writable, or both. All
    -streams are instances of [`EventEmitter`][].
    -
    -You can load the Stream base classes by doing `require('stream')`.
    -There are base classes provided for [Readable][] streams, [Writable][]
    -streams, [Duplex][] streams, and [Transform][] streams.
    -
    -This document is split up into 3 sections:
    -
    -1. The first section explains the parts of the API that you need to be
    -   aware of to use streams in your programs.
    -2. The second section explains the parts of the API that you need to
    -   use if you implement your own custom streams yourself. The API is designed to
    -   make this easy for you to do.
    -3. The third section goes into more depth about how streams work,
    -   including some of the internal mechanisms and functions that you
    -   should probably not modify unless you definitely know what you are
    -   doing.
    -
    -
    -## API for Stream Consumers
    -
    -
    -
    -Streams can be either [Readable][], [Writable][], or both ([Duplex][]).
    -
    -All streams are EventEmitters, but they also have other custom methods
    -and properties depending on whether they are Readable, Writable, or
    -Duplex.
    -
    -If a stream is both Readable and Writable, then it implements all of
    -the methods and events. So, a [Duplex][] or [Transform][] stream is
    -fully described by this API, though their implementation may be
    -somewhat different.
    -
    -It is not necessary to implement Stream interfaces in order to consume
    -streams in your programs. If you **are** implementing streaming
    -interfaces in your own program, please also refer to
    -[API for Stream Implementors][].
    -
    -Almost all Node.js programs, no matter how simple, use Streams in some
    -way. Here is an example of using Streams in an Node.js program:
    -
    -```js
    -const http = require('http');
    -
    -var server = http.createServer( (req, res) => {
    -  // req is an http.IncomingMessage, which is a Readable Stream
    -  // res is an http.ServerResponse, which is a Writable Stream
    -
    -  var body = '';
    -  // we want to get the data as utf8 strings
    -  // If you don't set an encoding, then you'll get Buffer objects
    -  req.setEncoding('utf8');
    -
    -  // Readable streams emit 'data' events once a listener is added
    -  req.on('data', (chunk) => {
    -    body += chunk;
    -  });
    -
    -  // the end event tells you that you have entire body
    -  req.on('end', () => {
    -    try {
    -      var data = JSON.parse(body);
    -    } catch (er) {
    -      // uh oh!  bad json!
    -      res.statusCode = 400;
    -      return res.end(`error: ${er.message}`);
    -    }
    -
    -    // write back something interesting to the user:
    -    res.write(typeof data);
    -    res.end();
    -  });
    -});
    -
    -server.listen(1337);
    -
    -// $ curl localhost:1337 -d '{}'
    -// object
    -// $ curl localhost:1337 -d '"foo"'
    -// string
    -// $ curl localhost:1337 -d 'not json'
    -// error: Unexpected token o
    -```
    -
    -### Class: stream.Duplex
    -
    -Duplex streams are streams that implement both the [Readable][] and
    -[Writable][] interfaces.
    -
    -Examples of Duplex streams include:
    -
    -* [TCP sockets][]
    -* [zlib streams][zlib]
    -* [crypto streams][crypto]
    -
    -### Class: stream.Readable
    -
    -
    -
    -The Readable stream interface is the abstraction for a *source* of
    -data that you are reading from. In other words, data comes *out* of a
    -Readable stream.
    -
    -A Readable stream will not start emitting data until you indicate that
    -you are ready to receive it.
    -
    -Readable streams have two "modes": a **flowing mode** and a **paused
    -mode**. When in flowing mode, data is read from the underlying system
    -and provided to your program as fast as possible. In paused mode, you
    -must explicitly call [`stream.read()`][stream-read] to get chunks of data out.
    -Streams start out in paused mode.
    -
    -**Note**: If no data event handlers are attached, and there are no
    -[`stream.pipe()`][] destinations, and the stream is switched into flowing
    -mode, then data will be lost.
    -
    -You can switch to flowing mode by doing any of the following:
    -
    -* Adding a [`'data'`][] event handler to listen for data.
    -* Calling the [`stream.resume()`][stream-resume] method to explicitly open the
    -  flow.
    -* Calling the [`stream.pipe()`][] method to send the data to a [Writable][].
    -
    -You can switch back to paused mode by doing either of the following:
    -
    -* If there are no pipe destinations, by calling the
    -  [`stream.pause()`][stream-pause] method.
    -* If there are pipe destinations, by removing any [`'data'`][] event
    -  handlers, and removing all pipe destinations by calling the
    -  [`stream.unpipe()`][] method.
    -
    -Note that, for backwards compatibility reasons, removing [`'data'`][]
    -event handlers will **not** automatically pause the stream. Also, if
    -there are piped destinations, then calling [`stream.pause()`][stream-pause] will
    -not guarantee that the stream will *remain* paused once those
    -destinations drain and ask for more data.
    -
    -Examples of readable streams include:
    -
    -* [HTTP responses, on the client][http-incoming-message]
    -* [HTTP requests, on the server][http-incoming-message]
    -* [fs read streams][]
    -* [zlib streams][zlib]
    -* [crypto streams][crypto]
    -* [TCP sockets][]
    -* [child process stdout and stderr][]
    -* [`process.stdin`][]
    -
    -#### Event: 'close'
    -
    -Emitted when the stream and any of its underlying resources (a file
    -descriptor, for example) have been closed. The event indicates that
    -no more events will be emitted, and no further computation will occur.
    -
    -Not all streams will emit the `'close'` event.
    -
    -#### Event: 'data'
    -
    -* `chunk` {Buffer|String} The chunk of data.
    -
    -Attaching a `'data'` event listener to a stream that has not been
    -explicitly paused will switch the stream into flowing mode. Data will
    -then be passed as soon as it is available.
    -
    -If you just want to get all the data out of the stream as fast as
    -possible, this is the best way to do so.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.on('data', (chunk) => {
    -  console.log('got %d bytes of data', chunk.length);
    -});
    -```
    -
    -#### Event: 'end'
    -
    -This event fires when there will be no more data to read.
    -
    -Note that the `'end'` event **will not fire** unless the data is
    -completely consumed. This can be done by switching into flowing mode,
    -or by calling [`stream.read()`][stream-read] repeatedly until you get to the
    -end.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.on('data', (chunk) => {
    -  console.log('got %d bytes of data', chunk.length);
    -});
    -readable.on('end', () => {
    -  console.log('there will be no more data.');
    -});
    -```
    -
    -#### Event: 'error'
    -
    -* {Error Object}
    -
    -Emitted if there was an error receiving data.
    -
    -#### Event: 'readable'
    -
    -When a chunk of data can be read from the stream, it will emit a
    -`'readable'` event.
    -
    -In some cases, listening for a `'readable'` event will cause some data
    -to be read into the internal buffer from the underlying system, if it
    -hadn't already.
    -
    -```javascript
    -var readable = getReadableStreamSomehow();
    -readable.on('readable', () => {
    -  // there is some data to read now
    -});
    -```
    -
    -Once the internal buffer is drained, a `'readable'` event will fire
    -again when more data is available.
    -
    -The `'readable'` event is not emitted in the "flowing" mode with the
    -sole exception of the last one, on end-of-stream.
    -
    -The `'readable'` event indicates that the stream has new information:
    -either new data is available or the end of the stream has been reached.
    -In the former case, [`stream.read()`][stream-read] will return that data. In the
    -latter case, [`stream.read()`][stream-read] will return null. For instance, in
    -the following example, `foo.txt` is an empty file:
    -
    -```js
    -const fs = require('fs');
    -var rr = fs.createReadStream('foo.txt');
    -rr.on('readable', () => {
    -  console.log('readable:', rr.read());
    -});
    -rr.on('end', () => {
    -  console.log('end');
    -});
    -```
    -
    -The output of running this script is:
    -
    -```
    -$ node test.js
    -readable: null
    -end
    -```
    -
    -#### readable.isPaused()
    -
    -* Return: {Boolean}
    -
    -This method returns whether or not the `readable` has been **explicitly**
    -paused by client code (using [`stream.pause()`][stream-pause] without a
    -corresponding [`stream.resume()`][stream-resume]).
    -
    -```js
    -var readable = new stream.Readable
    -
    -readable.isPaused() // === false
    -readable.pause()
    -readable.isPaused() // === true
    -readable.resume()
    -readable.isPaused() // === false
    -```
    -
    -#### readable.pause()
    -
    -* Return: `this`
    -
    -This method will cause a stream in flowing mode to stop emitting
    -[`'data'`][] events, switching out of flowing mode. Any data that becomes
    -available will remain in the internal buffer.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.on('data', (chunk) => {
    -  console.log('got %d bytes of data', chunk.length);
    -  readable.pause();
    -  console.log('there will be no more data for 1 second');
    -  setTimeout(() => {
    -    console.log('now data will start flowing again');
    -    readable.resume();
    -  }, 1000);
    -});
    -```
    -
    -#### readable.pipe(destination[, options])
    -
    -* `destination` {stream.Writable} The destination for writing data
    -* `options` {Object} Pipe options
    -  * `end` {Boolean} End the writer when the reader ends. Default = `true`
    -
    -This method pulls all the data out of a readable stream, and writes it
    -to the supplied destination, automatically managing the flow so that
    -the destination is not overwhelmed by a fast readable stream.
    -
    -Multiple destinations can be piped to safely.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -var writable = fs.createWriteStream('file.txt');
    -// All the data from readable goes into 'file.txt'
    -readable.pipe(writable);
    -```
    -
    -This function returns the destination stream, so you can set up pipe
    -chains like so:
    -
    -```js
    -var r = fs.createReadStream('file.txt');
    -var z = zlib.createGzip();
    -var w = fs.createWriteStream('file.txt.gz');
    -r.pipe(z).pipe(w);
    -```
    -
    -For example, emulating the Unix `cat` command:
    -
    -```js
    -process.stdin.pipe(process.stdout);
    -```
    -
    -By default [`stream.end()`][stream-end] is called on the destination when the
    -source stream emits [`'end'`][], so that `destination` is no longer writable.
    -Pass `{ end: false }` as `options` to keep the destination stream open.
    -
    -This keeps `writer` open so that "Goodbye" can be written at the
    -end.
    -
    -```js
    -reader.pipe(writer, { end: false });
    -reader.on('end', () => {
    -  writer.end('Goodbye\n');
    -});
    -```
    -
    -Note that [`process.stderr`][] and [`process.stdout`][] are never closed until
    -the process exits, regardless of the specified options.
    -
    -#### readable.read([size])
    -
    -* `size` {Number} Optional argument to specify how much data to read.
    -* Return {String|Buffer|Null}
    -
    -The `read()` method pulls some data out of the internal buffer and
    -returns it. If there is no data available, then it will return
    -`null`.
    -
    -If you pass in a `size` argument, then it will return that many
    -bytes. If `size` bytes are not available, then it will return `null`,
    -unless we've ended, in which case it will return the data remaining
    -in the buffer.
    -
    -If you do not specify a `size` argument, then it will return all the
    -data in the internal buffer.
    -
    -This method should only be called in paused mode. In flowing mode,
    -this method is called automatically until the internal buffer is
    -drained.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.on('readable', () => {
    -  var chunk;
    -  while (null !== (chunk = readable.read())) {
    -    console.log('got %d bytes of data', chunk.length);
    -  }
    -});
    -```
    -
    -If this method returns a data chunk, then it will also trigger the
    -emission of a [`'data'`][] event.
    -
    -Note that calling [`stream.read([size])`][stream-read] after the [`'end'`][]
    -event has been triggered will return `null`. No runtime error will be raised.
    -
    -#### readable.resume()
    -
    -* Return: `this`
    -
    -This method will cause the readable stream to resume emitting [`'data'`][]
    -events.
    -
    -This method will switch the stream into flowing mode. If you do *not*
    -want to consume the data from a stream, but you *do* want to get to
    -its [`'end'`][] event, you can call [`stream.resume()`][stream-resume] to open
    -the flow of data.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.resume();
    -readable.on('end', () => {
    -  console.log('got to the end, but did not read anything');
    -});
    -```
    -
    -#### readable.setEncoding(encoding)
    -
    -* `encoding` {String} The encoding to use.
    -* Return: `this`
    -
    -Call this function to cause the stream to return strings of the specified
    -encoding instead of Buffer objects. For example, if you do
    -`readable.setEncoding('utf8')`, then the output data will be interpreted as
    -UTF-8 data, and returned as strings. If you do `readable.setEncoding('hex')`,
    -then the data will be encoded in hexadecimal string format.
    -
    -This properly handles multi-byte characters that would otherwise be
    -potentially mangled if you simply pulled the Buffers directly and
    -called [`buf.toString(encoding)`][] on them. If you want to read the data
    -as strings, always use this method.
    -
    -Also you can disable any encoding at all with `readable.setEncoding(null)`.
    -This approach is very useful if you deal with binary data or with large
    -multi-byte strings spread out over multiple chunks.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -readable.setEncoding('utf8');
    -readable.on('data', (chunk) => {
    -  assert.equal(typeof chunk, 'string');
    -  console.log('got %d characters of string data', chunk.length);
    -});
    -```
    -
    -#### readable.unpipe([destination])
    -
    -* `destination` {stream.Writable} Optional specific stream to unpipe
    -
    -This method will remove the hooks set up for a previous [`stream.pipe()`][]
    -call.
    -
    -If the destination is not specified, then all pipes are removed.
    -
    -If the destination is specified, but no pipe is set up for it, then
    -this is a no-op.
    -
    -```js
    -var readable = getReadableStreamSomehow();
    -var writable = fs.createWriteStream('file.txt');
    -// All the data from readable goes into 'file.txt',
    -// but only for the first second
    -readable.pipe(writable);
    -setTimeout(() => {
    -  console.log('stop writing to file.txt');
    -  readable.unpipe(writable);
    -  console.log('manually close the file stream');
    -  writable.end();
    -}, 1000);
    -```
    -
    -#### readable.unshift(chunk)
    -
    -* `chunk` {Buffer|String} Chunk of data to unshift onto the read queue
    -
    -This is useful in certain cases where a stream is being consumed by a
    -parser, which needs to "un-consume" some data that it has
    -optimistically pulled out of the source, so that the stream can be
    -passed on to some other party.
    -
    -Note that `stream.unshift(chunk)` cannot be called after the [`'end'`][] event
    -has been triggered; a runtime error will be raised.
    -
    -If you find that you must often call `stream.unshift(chunk)` in your
    -programs, consider implementing a [Transform][] stream instead. (See [API
    -for Stream Implementors][].)
    -
    -```js
    -// Pull off a header delimited by \n\n
    -// use unshift() if we get too much
    -// Call the callback with (error, header, stream)
    -const StringDecoder = require('string_decoder').StringDecoder;
    -function parseHeader(stream, callback) {
    -  stream.on('error', callback);
    -  stream.on('readable', onReadable);
    -  var decoder = new StringDecoder('utf8');
    -  var header = '';
    -  function onReadable() {
    -    var chunk;
    -    while (null !== (chunk = stream.read())) {
    -      var str = decoder.write(chunk);
    -      if (str.match(/\n\n/)) {
    -        // found the header boundary
    -        var split = str.split(/\n\n/);
    -        header += split.shift();
    -        var remaining = split.join('\n\n');
    -        var buf = new Buffer(remaining, 'utf8');
    -        if (buf.length)
    -          stream.unshift(buf);
    -        stream.removeListener('error', callback);
    -        stream.removeListener('readable', onReadable);
    -        // now the body of the message can be read from the stream.
    -        callback(null, header, stream);
    -      } else {
    -        // still reading the header.
    -        header += str;
    -      }
    -    }
    -  }
    -}
    -```
    -
    -Note that, unlike [`stream.push(chunk)`][stream-push], `stream.unshift(chunk)`
    -will not end the reading process by resetting the internal reading state of the
    -stream. This can cause unexpected results if `unshift()` is called during a
    -read (i.e. from within a [`stream._read()`][stream-_read] implementation on a
    -custom stream). Following the call to `unshift()` with an immediate
    -[`stream.push('')`][stream-push] will reset the reading state appropriately,
    -however it is best to simply avoid calling `unshift()` while in the process of
    -performing a read.
    -
    -#### readable.wrap(stream)
    -
    -* `stream` {Stream} An "old style" readable stream
    -
    -Versions of Node.js prior to v0.10 had streams that did not implement the
    -entire Streams API as it is today. (See [Compatibility][] for
    -more information.)
    -
    -If you are using an older Node.js library that emits [`'data'`][] events and
    -has a [`stream.pause()`][stream-pause] method that is advisory only, then you
    -can use the `wrap()` method to create a [Readable][] stream that uses the old
    -stream as its data source.
    -
    -You will very rarely ever need to call this function, but it exists
    -as a convenience for interacting with old Node.js programs and libraries.
    -
    -For example:
    -
    -```js
    -const OldReader = require('./old-api-module.js').OldReader;
    -const Readable = require('stream').Readable;
    -const oreader = new OldReader;
    -const myReader = new Readable().wrap(oreader);
    -
    -myReader.on('readable', () => {
    -  myReader.read(); // etc.
    -});
    -```
    -
    -### Class: stream.Transform
    -
    -Transform streams are [Duplex][] streams where the output is in some way
    -computed from the input. They implement both the [Readable][] and
    -[Writable][] interfaces.
    -
    -Examples of Transform streams include:
    -
    -* [zlib streams][zlib]
    -* [crypto streams][crypto]
    -
    -### Class: stream.Writable
    -
    -
    -
    -The Writable stream interface is an abstraction for a *destination*
    -that you are writing data *to*.
    -
    -Examples of writable streams include:
    -
    -* [HTTP requests, on the client][]
    -* [HTTP responses, on the server][]
    -* [fs write streams][]
    -* [zlib streams][zlib]
    -* [crypto streams][crypto]
    -* [TCP sockets][]
    -* [child process stdin][]
    -* [`process.stdout`][], [`process.stderr`][]
    -
    -#### Event: 'drain'
    -
    -If a [`stream.write(chunk)`][stream-write] call returns `false`, then the
    -`'drain'` event will indicate when it is appropriate to begin writing more data
    -to the stream.
    -
    -```js
    -// Write the data to the supplied writable stream one million times.
    -// Be attentive to back-pressure.
    -function writeOneMillionTimes(writer, data, encoding, callback) {
    -  var i = 1000000;
    -  write();
    -  function write() {
    -    var ok = true;
    -    do {
    -      i -= 1;
    -      if (i === 0) {
    -        // last time!
    -        writer.write(data, encoding, callback);
    -      } else {
    -        // see if we should continue, or wait
    -        // don't pass the callback, because we're not done yet.
    -        ok = writer.write(data, encoding);
    -      }
    -    } while (i > 0 && ok);
    -    if (i > 0) {
    -      // had to stop early!
    -      // write some more once it drains
    -      writer.once('drain', write);
    -    }
    -  }
    -}
    -```
    -
    -#### Event: 'error'
    -
    -* {Error}
    -
    -Emitted if there was an error when writing or piping data.
    -
    -#### Event: 'finish'
    -
    -When the [`stream.end()`][stream-end] method has been called, and all data has
    -been flushed to the underlying system, this event is emitted.
    -
    -```javascript
    -var writer = getWritableStreamSomehow();
    -for (var i = 0; i < 100; i ++) {
    -  writer.write('hello, #${i}!\n');
    -}
    -writer.end('this is the end\n');
    -writer.on('finish', () => {
    -  console.error('all writes are now complete.');
    -});
    -```
    -
    -#### Event: 'pipe'
    -
    -* `src` {stream.Readable} source stream that is piping to this writable
    -
    -This is emitted whenever the [`stream.pipe()`][] method is called on a readable
    -stream, adding this writable to its set of destinations.
    -
    -```js
    -var writer = getWritableStreamSomehow();
    -var reader = getReadableStreamSomehow();
    -writer.on('pipe', (src) => {
    -  console.error('something is piping into the writer');
    -  assert.equal(src, reader);
    -});
    -reader.pipe(writer);
    -```
    -
    -#### Event: 'unpipe'
    -
    -* `src` {[Readable][] Stream} The source stream that
    -  [unpiped][`stream.unpipe()`] this writable
    -
    -This is emitted whenever the [`stream.unpipe()`][] method is called on a
    -readable stream, removing this writable from its set of destinations.
    -
    -```js
    -var writer = getWritableStreamSomehow();
    -var reader = getReadableStreamSomehow();
    -writer.on('unpipe', (src) => {
    -  console.error('something has stopped piping into the writer');
    -  assert.equal(src, reader);
    -});
    -reader.pipe(writer);
    -reader.unpipe(writer);
    -```
    -
    -#### writable.cork()
    -
    -Forces buffering of all writes.
    -
    -Buffered data will be flushed either at [`stream.uncork()`][] or at
    -[`stream.end()`][stream-end] call.
    -
    -#### writable.end([chunk][, encoding][, callback])
    -
    -* `chunk` {String|Buffer} Optional data to write
    -* `encoding` {String} The encoding, if `chunk` is a String
    -* `callback` {Function} Optional callback for when the stream is finished
    -
    -Call this method when no more data will be written to the stream. If supplied,
    -the callback is attached as a listener on the [`'finish'`][] event.
    -
    -Calling [`stream.write()`][stream-write] after calling
    -[`stream.end()`][stream-end] will raise an error.
    -
    -```js
    -// write 'hello, ' and then end with 'world!'
    -var file = fs.createWriteStream('example.txt');
    -file.write('hello, ');
    -file.end('world!');
    -// writing more now is not allowed!
    -```
    -
    -#### writable.setDefaultEncoding(encoding)
    -
    -* `encoding` {String} The new default encoding
    -
    -Sets the default encoding for a writable stream.
    -
    -#### writable.uncork()
    -
    -Flush all data, buffered since [`stream.cork()`][] call.
    -
    -#### writable.write(chunk[, encoding][, callback])
    -
    -* `chunk` {String|Buffer} The data to write
    -* `encoding` {String} The encoding, if `chunk` is a String
    -* `callback` {Function} Callback for when this chunk of data is flushed
    -* Returns: {Boolean} `true` if the data was handled completely.
    -
    -This method writes some data to the underlying system, and calls the
    -supplied callback once the data has been fully handled.  If an error
    -occurs, the callback may or may not be called with the error as its
    -first argument.  To detect write errors, listen for the `'error'` event.
    -
    -The return value indicates if you should continue writing right now.
    -If the data had to be buffered internally, then it will return
    -`false`. Otherwise, it will return `true`.
    -
    -This return value is strictly advisory. You MAY continue to write,
    -even if it returns `false`. However, writes will be buffered in
    -memory, so it is best not to do this excessively. Instead, wait for
    -the [`'drain'`][] event before writing more data.
    -
    -
    -## API for Stream Implementors
    -
    -
    -
    -To implement any sort of stream, the pattern is the same:
    -
    -1. Extend the appropriate parent class in your own subclass. (The
    -   [`util.inherits()`][] method is particularly helpful for this.)
    -2. Call the appropriate parent class constructor in your constructor,
    -   to be sure that the internal mechanisms are set up properly.
    -3. Implement one or more specific methods, as detailed below.
    -
    -The class to extend and the method(s) to implement depend on the sort
    -of stream class you are writing:
    -
    -
    -  
    -    
    -      
    -      
    -      
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -
    -

    Use-case

    -
    -

    Class

    -
    -

    Method(s) to implement

    -
    -

    Reading only

    -
    -

    [Readable](#stream_class_stream_readable_1)

    -
    -

    [_read][stream-_read]

    -
    -

    Writing only

    -
    -

    [Writable](#stream_class_stream_writable_1)

    -
    -

    [_write][stream-_write], [_writev][stream-_writev]

    -
    -

    Reading and writing

    -
    -

    [Duplex](#stream_class_stream_duplex_1)

    -
    -

    [_read][stream-_read], [_write][stream-_write], [_writev][stream-_writev]

    -
    -

    Operate on written data, then read the result

    -
    -

    [Transform](#stream_class_stream_transform_1)

    -
    -

    [_transform][stream-_transform], [_flush][stream-_flush]

    -
    - -In your implementation code, it is very important to never call the methods -described in [API for Stream Consumers][]. Otherwise, you can potentially cause -adverse side effects in programs that consume your streaming interfaces. - -### Class: stream.Duplex - - - -A "duplex" stream is one that is both Readable and Writable, such as a TCP -socket connection. - -Note that `stream.Duplex` is an abstract class designed to be extended -with an underlying implementation of the [`stream._read(size)`][stream-_read] -and [`stream._write(chunk, encoding, callback)`][stream-_write] methods as you -would with a Readable or Writable stream class. - -Since JavaScript doesn't have multiple prototypal inheritance, this class -prototypally inherits from Readable, and then parasitically from Writable. It is -thus up to the user to implement both the low-level -[`stream._read(n)`][stream-_read] method as well as the low-level -[`stream._write(chunk, encoding, callback)`][stream-_write] method on extension -duplex classes. - -#### new stream.Duplex(options) - -* `options` {Object} Passed to both Writable and Readable - constructors. Also has the following fields: - * `allowHalfOpen` {Boolean} Default = `true`. If set to `false`, then - the stream will automatically end the readable side when the - writable side ends and vice versa. - * `readableObjectMode` {Boolean} Default = `false`. Sets `objectMode` - for readable side of the stream. Has no effect if `objectMode` - is `true`. - * `writableObjectMode` {Boolean} Default = `false`. Sets `objectMode` - for writable side of the stream. Has no effect if `objectMode` - is `true`. - -In classes that extend the Duplex class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -### Class: stream.PassThrough - -This is a trivial implementation of a [Transform][] stream that simply -passes the input bytes across to the output. Its purpose is mainly -for examples and testing, but there are occasionally use cases where -it can come in handy as a building block for novel sorts of streams. - -### Class: stream.Readable - - - -`stream.Readable` is an abstract class designed to be extended with an -underlying implementation of the [`stream._read(size)`][stream-_read] method. - -Please see [API for Stream Consumers][] for how to consume -streams in your programs. What follows is an explanation of how to -implement Readable streams in your programs. - -#### new stream.Readable([options]) - -* `options` {Object} - * `highWaterMark` {Number} The maximum number of bytes to store in - the internal buffer before ceasing to read from the underlying - resource. Default = `16384` (16kb), or `16` for `objectMode` streams - * `encoding` {String} If specified, then buffers will be decoded to - strings using the specified encoding. Default = `null` - * `objectMode` {Boolean} Whether this stream should behave - as a stream of objects. Meaning that [`stream.read(n)`][stream-read] returns - a single value instead of a Buffer of size n. Default = `false` - * `read` {Function} Implementation for the [`stream._read()`][stream-_read] - method. - -In classes that extend the Readable class, make sure to call the -Readable constructor so that the buffering settings can be properly -initialized. - -#### readable.\_read(size) - -* `size` {Number} Number of bytes to read asynchronously - -Note: **Implement this method, but do NOT call it directly.** - -This method is prefixed with an underscore because it is internal to the -class that defines it and should only be called by the internal Readable -class methods. All Readable stream implementations must provide a \_read -method to fetch data from the underlying resource. - -When `_read()` is called, if data is available from the resource, the `_read()` -implementation should start pushing that data into the read queue by calling -[`this.push(dataChunk)`][stream-push]. `_read()` should continue reading from -the resource and pushing data until push returns `false`, at which point it -should stop reading from the resource. Only when `_read()` is called again after -it has stopped should it start reading more data from the resource and pushing -that data onto the queue. - -Note: once the `_read()` method is called, it will not be called again until -the [`stream.push()`][stream-push] method is called. - -The `size` argument is advisory. Implementations where a "read" is a -single call that returns data can use this to know how much data to -fetch. Implementations where that is not relevant, such as TCP or -TLS, may ignore this argument, and simply provide data whenever it -becomes available. There is no need, for example to "wait" until -`size` bytes are available before calling [`stream.push(chunk)`][stream-push]. - -#### readable.push(chunk[, encoding]) - - -* `chunk` {Buffer|Null|String} Chunk of data to push into the read queue -* `encoding` {String} Encoding of String chunks. Must be a valid - Buffer encoding, such as `'utf8'` or `'ascii'` -* return {Boolean} Whether or not more pushes should be performed - -Note: **This method should be called by Readable implementors, NOT -by consumers of Readable streams.** - -If a value other than null is passed, The `push()` method adds a chunk of data -into the queue for subsequent stream processors to consume. If `null` is -passed, it signals the end of the stream (EOF), after which no more data -can be written. - -The data added with `push()` can be pulled out by calling the -[`stream.read()`][stream-read] method when the [`'readable'`][] event fires. - -This API is designed to be as flexible as possible. For example, -you may be wrapping a lower-level source which has some sort of -pause/resume mechanism, and a data callback. In those cases, you -could wrap the low-level source object by doing something like this: - -```js -// source is an object with readStop() and readStart() methods, -// and an `ondata` member that gets called when it has data, and -// an `onend` member that gets called when the data is over. - -util.inherits(SourceWrapper, Readable); - -function SourceWrapper(options) { - Readable.call(this, options); - - this._source = getLowlevelSourceObject(); - - // Every time there's data, we push it into the internal buffer. - this._source.ondata = (chunk) => { - // if push() returns false, then we need to stop reading from source - if (!this.push(chunk)) - this._source.readStop(); - }; - - // When the source ends, we push the EOF-signaling `null` chunk - this._source.onend = () => { - this.push(null); - }; -} - -// _read will be called when the stream wants to pull more data in -// the advisory size argument is ignored in this case. -SourceWrapper.prototype._read = function(size) { - this._source.readStart(); -}; -``` - -#### Example: A Counting Stream - - - -This is a basic example of a Readable stream. It emits the numerals -from 1 to 1,000,000 in ascending order, and then ends. - -```js -const Readable = require('stream').Readable; -const util = require('util'); -util.inherits(Counter, Readable); - -function Counter(opt) { - Readable.call(this, opt); - this._max = 1000000; - this._index = 1; -} - -Counter.prototype._read = function() { - var i = this._index++; - if (i > this._max) - this.push(null); - else { - var str = '' + i; - var buf = new Buffer(str, 'ascii'); - this.push(buf); - } -}; -``` - -#### Example: SimpleProtocol v1 (Sub-optimal) - -This is similar to the `parseHeader` function described -[here](#stream_readable_unshift_chunk), but implemented as a custom stream. -Also, note that this implementation does not convert the incoming data to a -string. - -However, this would be better implemented as a [Transform][] stream. See -[SimpleProtocol v2][] for a better implementation. - -```js -// A parser for a simple data protocol. -// The "header" is a JSON object, followed by 2 \n characters, and -// then a message body. -// -// NOTE: This can be done more simply as a Transform stream! -// Using Readable directly for this is sub-optimal. See the -// alternative example below under the Transform section. - -const Readable = require('stream').Readable; -const util = require('util'); - -util.inherits(SimpleProtocol, Readable); - -function SimpleProtocol(source, options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(source, options); - - Readable.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - - // source is a readable stream, such as a socket or file - this._source = source; - - source.on('end', () => { - this.push(null); - }); - - // give it a kick whenever the source is readable - // read(0) will not consume any bytes - source.on('readable', () => { - this.read(0); - }); - - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._read = function(n) { - if (!this._inBody) { - var chunk = this._source.read(); - - // if the source doesn't have data, we don't have data yet. - if (chunk === null) - return this.push(''); - - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - this.push(''); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // now, because we got some extra data, unshift the rest - // back into the read queue so that our consumer will see it. - var b = chunk.slice(split); - this.unshift(b); - // calling unshift by itself does not reset the reading state - // of the stream; since we're inside _read, doing an additional - // push('') will reset the state appropriately. - this.push(''); - - // and let them know that we are done parsing the header. - this.emit('header', this.header); - } - } else { - // from there on, just provide the data to our consumer. - // careful not to push(null), since that would indicate EOF. - var chunk = this._source.read(); - if (chunk) this.push(chunk); - } -}; - -// Usage: -// var parser = new SimpleProtocol(source); -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - -### Class: stream.Transform - -A "transform" stream is a duplex stream where the output is causally -connected in some way to the input, such as a [zlib][] stream or a -[crypto][] stream. - -There is no requirement that the output be the same size as the input, -the same number of chunks, or arrive at the same time. For example, a -Hash stream will only ever have a single chunk of output which is -provided when the input is ended. A zlib stream will produce output -that is either much smaller or much larger than its input. - -Rather than implement the [`stream._read()`][stream-_read] and -[`stream._write()`][stream-_write] methods, Transform classes must implement the -[`stream._transform()`][stream-_transform] method, and may optionally -also implement the [`stream._flush()`][stream-_flush] method. (See below.) - -#### new stream.Transform([options]) - -* `options` {Object} Passed to both Writable and Readable - constructors. Also has the following fields: - * `transform` {Function} Implementation for the - [`stream._transform()`][stream-_transform] method. - * `flush` {Function} Implementation for the [`stream._flush()`][stream-_flush] - method. - -In classes that extend the Transform class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### Events: 'finish' and 'end' - -The [`'finish'`][] and [`'end'`][] events are from the parent Writable -and Readable classes respectively. The `'finish'` event is fired after -[`stream.end()`][stream-end] is called and all chunks have been processed by -[`stream._transform()`][stream-_transform], `'end'` is fired after all data has -been output which is after the callback in [`stream._flush()`][stream-_flush] -has been called. - -#### transform.\_flush(callback) - -* `callback` {Function} Call this function (optionally with an error - argument) when you are done flushing any remaining data. - -Note: **This function MUST NOT be called directly.** It MAY be implemented -by child classes, and if so, will be called by the internal Transform -class methods only. - -In some cases, your transform operation may need to emit a bit more -data at the end of the stream. For example, a `Zlib` compression -stream will store up some internal state so that it can optimally -compress the output. At the end, however, it needs to do the best it -can with what is left, so that the data will be complete. - -In those cases, you can implement a `_flush()` method, which will be -called at the very end, after all the written data is consumed, but -before emitting [`'end'`][] to signal the end of the readable side. Just -like with [`stream._transform()`][stream-_transform], call -`transform.push(chunk)` zero or more times, as appropriate, and call `callback` -when the flush operation is complete. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### transform.\_transform(chunk, encoding, callback) - -* `chunk` {Buffer|String} The chunk to be transformed. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument and data) when you are done processing the supplied chunk. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Transform -class methods only. - -All Transform stream implementations must provide a `_transform()` -method to accept input and produce output. - -`_transform()` should do whatever has to be done in this specific -Transform class, to handle the bytes being written, and pass them off -to the readable portion of the interface. Do asynchronous I/O, -process things, and so on. - -Call `transform.push(outputChunk)` 0 or more times to generate output -from this input chunk, depending on how much data you want to output -as a result of this chunk. - -Call the callback function only when the current chunk is completely -consumed. Note that there may or may not be output as a result of any -particular input chunk. If you supply a second argument to the callback -it will be passed to the push method. In other words the following are -equivalent: - -```js -transform.prototype._transform = function (data, encoding, callback) { - this.push(data); - callback(); -}; - -transform.prototype._transform = function (data, encoding, callback) { - callback(null, data); -}; -``` - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### Example: `SimpleProtocol` parser v2 - -The example [here](#stream_example_simpleprotocol_v1_sub_optimal) of a simple -protocol parser can be implemented simply by using the higher level -[Transform][] stream class, similar to the `parseHeader` and `SimpleProtocol -v1` examples. - -In this example, rather than providing the input as an argument, it -would be piped into the parser, which is a more idiomatic Node.js stream -approach. - -```javascript -const util = require('util'); -const Transform = require('stream').Transform; -util.inherits(SimpleProtocol, Transform); - -function SimpleProtocol(options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(options); - - Transform.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._transform = function(chunk, encoding, done) { - if (!this._inBody) { - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // and let them know that we are done parsing the header. - this.emit('header', this.header); - - // now, because we got some extra data, emit this first. - this.push(chunk.slice(split)); - } - } else { - // from there on, just provide the data to our consumer as-is. - this.push(chunk); - } - done(); -}; - -// Usage: -// var parser = new SimpleProtocol(); -// source.pipe(parser) -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - -### Class: stream.Writable - - - -`stream.Writable` is an abstract class designed to be extended with an -underlying implementation of the -[`stream._write(chunk, encoding, callback)`][stream-_write] method. - -Please see [API for Stream Consumers][] for how to consume -writable streams in your programs. What follows is an explanation of -how to implement Writable streams in your programs. - -#### new stream.Writable([options]) - -* `options` {Object} - * `highWaterMark` {Number} Buffer level when - [`stream.write()`][stream-write] starts returning `false`. Default = `16384` - (16kb), or `16` for `objectMode` streams. - * `decodeStrings` {Boolean} Whether or not to decode strings into - Buffers before passing them to [`stream._write()`][stream-_write]. - Default = `true` - * `objectMode` {Boolean} Whether or not the - [`stream.write(anyObj)`][stream-write] is a valid operation. If set you can - write arbitrary data instead of only `Buffer` / `String` data. - Default = `false` - * `write` {Function} Implementation for the - [`stream._write()`][stream-_write] method. - * `writev` {Function} Implementation for the - [`stream._writev()`][stream-_writev] method. - -In classes that extend the Writable class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### writable.\_write(chunk, encoding, callback) - -* `chunk` {Buffer|String} The chunk to be written. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunk. - -All Writable stream implementations must provide a -[`stream._write()`][stream-_write] method to send data to the underlying -resource. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Writable -class methods only. - -Call the callback using the standard `callback(error)` pattern to -signal that the write completed successfully or with an error. - -If the `decodeStrings` flag is set in the constructor options, then -`chunk` may be a string rather than a Buffer, and `encoding` will -indicate the sort of string that it is. This is to support -implementations that have an optimized handling for certain string -data encodings. If you do not explicitly set the `decodeStrings` -option to `false`, then you can safely ignore the `encoding` argument, -and assume that `chunk` will always be a Buffer. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### writable.\_writev(chunks, callback) - -* `chunks` {Array} The chunks to be written. Each chunk has following - format: `{ chunk: ..., encoding: ... }`. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunks. - -Note: **This function MUST NOT be called directly.** It may be -implemented by child classes, and called by the internal Writable -class methods only. - -This function is completely optional to implement. In most cases it is -unnecessary. If implemented, it will be called with all the chunks -that are buffered in the write queue. - - -## Simplified Constructor API - - - -In simple cases there is now the added benefit of being able to construct a -stream without inheritance. - -This can be done by passing the appropriate methods as constructor options: - -Examples: - -### Duplex - -```js -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - }, - write: function(chunk, encoding, next) { - // sets this._write under the hood - - // An optional error can be passed as the first argument - next() - } -}); - -// or - -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - }, - writev: function(chunks, next) { - // sets this._writev under the hood - - // An optional error can be passed as the first argument - next() - } -}); -``` - -### Readable - -```js -var readable = new stream.Readable({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - } -}); -``` - -### Transform - -```js -var transform = new stream.Transform({ - transform: function(chunk, encoding, next) { - // sets this._transform under the hood - - // generate output as many times as needed - // this.push(chunk); - - // call when the current chunk is consumed - next(); - }, - flush: function(done) { - // sets this._flush under the hood - - // generate output as many times as needed - // this.push(chunk); - - done(); - } -}); -``` - -### Writable - -```js -var writable = new stream.Writable({ - write: function(chunk, encoding, next) { - // sets this._write under the hood - - // An optional error can be passed as the first argument - next() - } -}); - -// or - -var writable = new stream.Writable({ - writev: function(chunks, next) { - // sets this._writev under the hood - - // An optional error can be passed as the first argument - next() - } -}); -``` - -## Streams: Under the Hood - - - -### Buffering - - - -Both Writable and Readable streams will buffer data on an internal -object which can be retrieved from `_writableState.getBuffer()` or -`_readableState.buffer`, respectively. - -The amount of data that will potentially be buffered depends on the -`highWaterMark` option which is passed into the constructor. - -Buffering in Readable streams happens when the implementation calls -[`stream.push(chunk)`][stream-push]. If the consumer of the Stream does not -call [`stream.read()`][stream-read], then the data will sit in the internal -queue until it is consumed. - -Buffering in Writable streams happens when the user calls -[`stream.write(chunk)`][stream-write] repeatedly, even when it returns `false`. - -The purpose of streams, especially with the [`stream.pipe()`][] method, is to -limit the buffering of data to acceptable levels, so that sources and -destinations of varying speed will not overwhelm the available memory. - -### Compatibility with Older Node.js Versions - - - -In versions of Node.js prior to v0.10, the Readable stream interface was -simpler, but also less powerful and less useful. - -* Rather than waiting for you to call the [`stream.read()`][stream-read] method, - [`'data'`][] events would start emitting immediately. If you needed to do - some I/O to decide how to handle data, then you had to store the chunks - in some kind of buffer so that they would not be lost. -* The [`stream.pause()`][stream-pause] method was advisory, rather than - guaranteed. This meant that you still had to be prepared to receive - [`'data'`][] events even when the stream was in a paused state. - -In Node.js v0.10, the [Readable][] class was added. -For backwards compatibility with older Node.js programs, Readable streams -switch into "flowing mode" when a [`'data'`][] event handler is added, or -when the [`stream.resume()`][stream-resume] method is called. The effect is -that, even if you are not using the new [`stream.read()`][stream-read] method -and [`'readable'`][] event, you no longer have to worry about losing -[`'data'`][] chunks. - -Most programs will continue to function normally. However, this -introduces an edge case in the following conditions: - -* No [`'data'`][] event handler is added. -* The [`stream.resume()`][stream-resume] method is never called. -* The stream is not piped to any writable destination. - -For example, consider the following code: - -```js -// WARNING! BROKEN! -net.createServer((socket) => { - - // we add an 'end' method, but never consume the data - socket.on('end', () => { - // It will never get here. - socket.end('I got your message (but didnt read it)\n'); - }); - -}).listen(1337); -``` - -In versions of Node.js prior to v0.10, the incoming message data would be -simply discarded. However, in Node.js v0.10 and beyond, -the socket will remain paused forever. - -The workaround in this situation is to call the -[`stream.resume()`][stream-resume] method to start the flow of data: - -```js -// Workaround -net.createServer((socket) => { - - socket.on('end', () => { - socket.end('I got your message (but didnt read it)\n'); - }); - - // start the flow of data, discarding it. - socket.resume(); - -}).listen(1337); -``` - -In addition to new Readable streams switching into flowing mode, -pre-v0.10 style streams can be wrapped in a Readable class using the -[`stream.wrap()`][] method. - - -### Object Mode - - - -Normally, Streams operate on Strings and Buffers exclusively. - -Streams that are in **object mode** can emit generic JavaScript values -other than Buffers and Strings. - -A Readable stream in object mode will always return a single item from -a call to [`stream.read(size)`][stream-read], regardless of what the size -argument is. - -A Writable stream in object mode will always ignore the `encoding` -argument to [`stream.write(data, encoding)`][stream-write]. - -The special value `null` still retains its special value for object -mode streams. That is, for object mode readable streams, `null` as a -return value from [`stream.read()`][stream-read] indicates that there is no more -data, and [`stream.push(null)`][stream-push] will signal the end of stream data -(`EOF`). - -No streams in Node.js core are object mode streams. This pattern is only -used by userland streaming libraries. - -You should set `objectMode` in your stream child class constructor on -the options object. Setting `objectMode` mid-stream is not safe. - -For Duplex streams `objectMode` can be set exclusively for readable or -writable side with `readableObjectMode` and `writableObjectMode` -respectively. These options can be used to implement parsers and -serializers with Transform streams. - -```js -const util = require('util'); -const StringDecoder = require('string_decoder').StringDecoder; -const Transform = require('stream').Transform; -util.inherits(JSONParseStream, Transform); - -// Gets \n-delimited JSON string data, and emits the parsed objects -function JSONParseStream() { - if (!(this instanceof JSONParseStream)) - return new JSONParseStream(); - - Transform.call(this, { readableObjectMode : true }); - - this._buffer = ''; - this._decoder = new StringDecoder('utf8'); -} - -JSONParseStream.prototype._transform = function(chunk, encoding, cb) { - this._buffer += this._decoder.write(chunk); - // split on newlines - var lines = this._buffer.split(/\r?\n/); - // keep the last partial line buffered - this._buffer = lines.pop(); - for (var l = 0; l < lines.length; l++) { - var line = lines[l]; - try { - var obj = JSON.parse(line); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; - -JSONParseStream.prototype._flush = function(cb) { - // Just handle any leftover - var rem = this._buffer.trim(); - if (rem) { - try { - var obj = JSON.parse(rem); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; -``` - -### `stream.read(0)` - -There are some cases where you want to trigger a refresh of the -underlying readable stream mechanisms, without actually consuming any -data. In that case, you can call `stream.read(0)`, which will always -return null. - -If the internal read buffer is below the `highWaterMark`, and the -stream is not currently reading, then calling `stream.read(0)` will trigger -a low-level [`stream._read()`][stream-_read] call. - -There is almost never a need to do this. However, you will see some -cases in Node.js's internals where this is done, particularly in the -Readable stream class internals. - -### `stream.push('')` - -Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an -interesting side effect. Because it *is* a call to -[`stream.push()`][stream-push], it will end the `reading` process. However, it -does *not* add any data to the readable buffer, so there's nothing for -a user to consume. - -Very rarely, there are cases where you have no data to provide now, -but the consumer of your stream (or, perhaps, another bit of your own -code) will know when to check again, by calling [`stream.read(0)`][stream-read]. -In those cases, you *may* call `stream.push('')`. - -So far, the only use case for this functionality is in the -[`tls.CryptoStream`][] class, which is deprecated in Node.js/io.js v1.0. If you -find that you have to use `stream.push('')`, please consider another -approach, because it almost certainly indicates that something is -horribly wrong. - -[`'data'`]: #stream_event_data -[`'drain'`]: #stream_event_drain -[`'end'`]: #stream_event_end -[`'finish'`]: #stream_event_finish -[`'readable'`]: #stream_event_readable -[`buf.toString(encoding)`]: https://nodejs.org/docs/v5.9.1/api/buffer.html#buffer_buf_tostring_encoding_start_end -[`EventEmitter`]: https://nodejs.org/docs/v5.9.1/api/events.html#events_class_eventemitter -[`process.stderr`]: https://nodejs.org/docs/v5.9.1/api/process.html#process_process_stderr -[`process.stdin`]: https://nodejs.org/docs/v5.9.1/api/process.html#process_process_stdin -[`process.stdout`]: https://nodejs.org/docs/v5.9.1/api/process.html#process_process_stdout -[`stream.cork()`]: #stream_writable_cork -[`stream.pipe()`]: #stream_readable_pipe_destination_options -[`stream.uncork()`]: #stream_writable_uncork -[`stream.unpipe()`]: #stream_readable_unpipe_destination -[`stream.wrap()`]: #stream_readable_wrap_stream -[`tls.CryptoStream`]: https://nodejs.org/docs/v5.9.1/api/tls.html#tls_class_cryptostream -[`util.inherits()`]: https://nodejs.org/docs/v5.9.1/api/util.html#util_util_inherits_constructor_superconstructor -[API for Stream Consumers]: #stream_api_for_stream_consumers -[API for Stream Implementors]: #stream_api_for_stream_implementors -[child process stdin]: https://nodejs.org/docs/v5.9.1/api/child_process.html#child_process_child_stdin -[child process stdout and stderr]: https://nodejs.org/docs/v5.9.1/api/child_process.html#child_process_child_stdout -[Compatibility]: #stream_compatibility_with_older_node_js_versions -[crypto]: crypto.html -[Duplex]: #stream_class_stream_duplex -[fs read streams]: https://nodejs.org/docs/v5.9.1/api/fs.html#fs_class_fs_readstream -[fs write streams]: https://nodejs.org/docs/v5.9.1/api/fs.html#fs_class_fs_writestream -[HTTP requests, on the client]: https://nodejs.org/docs/v5.9.1/api/http.html#http_class_http_clientrequest -[HTTP responses, on the server]: https://nodejs.org/docs/v5.9.1/api/http.html#http_class_http_serverresponse -[http-incoming-message]: https://nodejs.org/docs/v5.9.1/api/http.html#http_class_http_incomingmessage -[Object mode]: #stream_object_mode -[Readable]: #stream_class_stream_readable -[SimpleProtocol v2]: #stream_example_simpleprotocol_parser_v2 -[stream-_flush]: #stream_transform_flush_callback -[stream-_read]: #stream_readable_read_size_1 -[stream-_transform]: #stream_transform_transform_chunk_encoding_callback -[stream-_write]: #stream_writable_write_chunk_encoding_callback_1 -[stream-_writev]: #stream_writable_writev_chunks_callback -[stream-end]: #stream_writable_end_chunk_encoding_callback -[stream-pause]: #stream_readable_pause -[stream-push]: #stream_readable_push_chunk_encoding -[stream-read]: #stream_readable_read_size -[stream-resume]: #stream_readable_resume -[stream-write]: #stream_writable_write_chunk_encoding_callback -[TCP sockets]: https://nodejs.org/docs/v5.9.1/api/net.html#net_class_net_socket -[Transform]: #stream_class_stream_transform -[Writable]: #stream_class_stream_writable -[zlib]: zlib.html diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md deleted file mode 100644 index 83275f19..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +++ /dev/null @@ -1,60 +0,0 @@ -# streams WG Meeting 2015-01-30 - -## Links - -* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg -* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 -* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ - -## Agenda - -Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. - -* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) -* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) -* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) -* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) - -## Minutes - -### adopt a charter - -* group: +1's all around - -### What versioning scheme should be adopted? -* group: +1’s 3.0.0 -* domenic+group: pulling in patches from other sources where appropriate -* mikeal: version independently, suggesting versions for io.js -* mikeal+domenic: work with TC to notify in advance of changes -simpler stream creation - -### streamline creation of streams -* sam: streamline creation of streams -* domenic: nice simple solution posted - but, we lose the opportunity to change the model - may not be backwards incompatible (double check keys) - - **action item:** domenic will check - -### remove implicit flowing of streams on(‘data’) -* add isFlowing / isPaused -* mikeal: worrying that we’re documenting polyfill methods – confuses users -* domenic: more reflective API is probably good, with warning labels for users -* new section for mad scientists (reflective stream access) -* calvin: name the “third state” -* mikeal: maybe borrow the name from whatwg? -* domenic: we’re missing the “third state” -* consensus: kind of difficult to name the third state -* mikeal: figure out differences in states / compat -* mathias: always flow on data – eliminates third state - * explore what it breaks - -**action items:** -* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) -* ask rod/build for infrastructure -* **chris**: explore the “flow on data” approach -* add isPaused/isFlowing -* add new docs section -* move isPaused to that section - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index 736693b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,75 +0,0 @@ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index d06f71f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,26 +0,0 @@ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 54a9d5c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,880 +0,0 @@ -'use strict'; - -module.exports = Readable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var isArray = require('isarray'); -/**/ - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events'); - -/**/ -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = undefined; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -var Duplex; -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') this._read = options.read; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } - - if (!addToFront) state.reading = false; - - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) return 0; - - if (state.objectMode) return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; - } - - if (n <= 0) return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else { - return state.length; - } - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } - - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) endReadable(this); - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) dest.on('error', onerror);else if (isArray(dest._events.error)) dest._events.error.unshift(onerror);else dest._events.error = [onerror, dest._events.error]; - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } - - if (ev === 'readable' && !this._readableState.endEmitted) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) return null; - - if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) ret = '';else ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) ret += buf.slice(0, cpy);else buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) list[0] = buf.slice(cpy);else list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 625cdc17..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,180 +0,0 @@ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) stream.push(data); - - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -function done(stream, er) { - if (er) return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 95916c99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,516 +0,0 @@ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -module.exports = Writable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; - -util.inherits(Writable, Stream); - -function nop() {} - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // create the two objects needed to store the corked requests - // they are not a linked list, as no new elements are inserted in there - this.corkedRequestsFree = new CorkedRequest(this); - this.corkedRequestsFree.next = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); - -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/package.json deleted file mode 100644 index fa49113d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify" - ] - ], - "_from": "readable-stream@>=2.0.0 <3.0.0", - "_id": "readable-stream@2.1.2", - "_inCache": true, - "_installable": true, - "_location": "/duplexify/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-2.1.2.tgz_1461933796258_0.5075750169344246" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/duplexify" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.2.tgz", - "_shasum": "a92b6e854f13ff0685e4ca7dce6cf73d3e319422", - "_shrinkwrap": null, - "_spec": "readable-stream@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/duplexify", - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/nodejs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "description": "Streams3, a user-land copy of the stream library from Node.js", - "devDependencies": { - "nyc": "^6.4.0", - "tap": "~0.7.1", - "tape": "~4.5.1", - "zuul": "~3.9.0" - }, - "directories": {}, - "dist": { - "shasum": "a92b6e854f13ff0685e4ca7dce6cf73d3e319422", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.2.tgz" - }, - "gitHead": "06754eed4f2b882b589f8667ecc8aadcf916045f", - "homepage": "https://github.com/nodejs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "nyc": { - "include": [ - "lib/**.js" - ] - }, - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/nodejs/readable-stream.git" - }, - "scripts": { - "browser": "npm run write-zuul && zuul -- test/browser.js", - "cover": "nyc npm test", - "local": "zuul --local -- test/browser.js", - "report": "nyc report --reporter=lcov", - "test": "tap test/parallel/*.js test/ours/*.js", - "write-zuul": "printf \"ui: tape\nbrowsers:\n - name: $BROWSER_NAME\n version: $BROWSER_VERSION\n\">.zuul.yml" - }, - "version": "2.1.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/readable.js deleted file mode 100644 index be2688a0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,16 +0,0 @@ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/package.json deleted file mode 100644 index d99b16b9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "duplexify@^3.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "duplexify@>=3.2.0 <4.0.0", - "_id": "duplexify@3.4.3", - "_inCache": true, - "_installable": true, - "_location": "/duplexify", - "_nodeVersion": "4.2.3", - "_npmOperationalInternal": { - "host": "packages-9-west.internal.npmjs.com", - "tmp": "tmp/duplexify-3.4.3.tgz_1456243581005_0.08543725567869842" - }, - "_npmUser": { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "inline-process-browser": "2.0.1", - "once": "1.3.3", - "process-nextick-args": "1.0.6", - "string_decoder": "0.10.31", - "unreachable-branch-transform": "0.5.1", - "util-deprecate": "1.0.2" - }, - "_requested": { - "name": "duplexify", - "raw": "duplexify@^3.2.0", - "rawSpec": "^3.2.0", - "scope": null, - "spec": ">=3.2.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.4.3.tgz", - "_shasum": "af6a7b10d928b095f8ad854d072bb90998db850d", - "_shrinkwrap": null, - "_spec": "duplexify@^3.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "name": "Mathias Buus" - }, - "bugs": { - "url": "https://github.com/mafintosh/duplexify/issues" - }, - "dependencies": { - "end-of-stream": "1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "description": "Turn a writeable and readable stream into a streams2 duplex stream with support for async initialization and streams1/streams2 input", - "devDependencies": { - "concat-stream": "^1.4.6", - "tape": "^2.13.3", - "through2": "^0.5.1" - }, - "directories": {}, - "dist": { - "shasum": "af6a7b10d928b095f8ad854d072bb90998db850d", - "tarball": "https://registry.npmjs.org/duplexify/-/duplexify-3.4.3.tgz" - }, - "gitHead": "0ecf524c3903ad55d3a2d4ce17939240105ce470", - "homepage": "https://github.com/mafintosh/duplexify", - "keywords": [ - "duplex", - "streams2", - "streams", - "stream", - "writable", - "readable", - "async" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - } - ], - "name": "duplexify", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/mafintosh/duplexify.git" - }, - "scripts": { - "test": "tape test.js" - }, - "version": "3.4.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/test.js deleted file mode 100644 index 91f2063a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/duplexify/test.js +++ /dev/null @@ -1,269 +0,0 @@ -var tape = require('tape') -var through = require('through2') -var concat = require('concat-stream') -var duplexify = require('./') - -tape('passthrough', function(t) { - t.plan(2) - - var pt = through() - var dup = duplexify(pt, pt) - - dup.end('hello world') - dup.on('finish', function() { - t.ok(true, 'should finish') - }) - dup.pipe(concat(function(data) { - t.same(data.toString(), 'hello world', 'same in as out') - })) -}) - -tape('passthrough + double end', function(t) { - t.plan(2) - - var pt = through() - var dup = duplexify(pt, pt) - - dup.end('hello world') - dup.end() - - dup.on('finish', function() { - t.ok(true, 'should finish') - }) - dup.pipe(concat(function(data) { - t.same(data.toString(), 'hello world', 'same in as out') - })) -}) - -tape('async passthrough + end', function(t) { - t.plan(2) - - var pt = through.obj({highWaterMark:1}, function(data, enc, cb) { - setTimeout(function() { - cb(null, data) - }, 100) - }) - - var dup = duplexify(pt, pt) - - dup.write('hello ') - dup.write('world') - dup.end() - - dup.on('finish', function() { - t.ok(true, 'should finish') - }) - dup.pipe(concat(function(data) { - t.same(data.toString(), 'hello world', 'same in as out') - })) -}) - -tape('duplex', function(t) { - var readExpected = ['read-a', 'read-b', 'read-c'] - var writeExpected = ['write-a', 'write-b', 'write-c'] - - t.plan(readExpected.length+writeExpected.length+2) - - var readable = through.obj() - var writable = through.obj(function(data, enc, cb) { - t.same(data, writeExpected.shift(), 'onwrite should match') - cb() - }) - - var dup = duplexify.obj(writable, readable) - - readExpected.slice().forEach(function(data) { - readable.write(data) - }) - readable.end() - - writeExpected.slice().forEach(function(data) { - dup.write(data) - }) - dup.end() - - dup.on('data', function(data) { - t.same(data, readExpected.shift(), 'ondata should match') - }) - dup.on('end', function() { - t.ok(true, 'should end') - }) - dup.on('finish', function() { - t.ok(true, 'should finish') - }) -}) - -tape('async', function(t) { - var dup = duplexify() - var pt = through() - - dup.pipe(concat(function(data) { - t.same(data.toString(), 'i was async', 'same in as out') - t.end() - })) - - dup.write('i') - dup.write(' was ') - dup.end('async') - - setTimeout(function() { - dup.setWritable(pt) - setTimeout(function() { - dup.setReadable(pt) - }, 50) - }, 50) -}) - -tape('destroy', function(t) { - t.plan(2) - - var write = through() - var read = through() - var dup = duplexify(write, read) - - write.destroy = function() { - t.ok(true, 'write destroyed') - } - - dup.on('close', function() { - t.ok(true, 'close emitted') - }) - - dup.destroy() - dup.destroy() // should only work once -}) - -tape('destroy both', function(t) { - t.plan(3) - - var write = through() - var read = through() - var dup = duplexify(write, read) - - write.destroy = function() { - t.ok(true, 'write destroyed') - } - - read.destroy = function() { - t.ok(true, 'read destroyed') - } - - dup.on('close', function() { - t.ok(true, 'close emitted') - }) - - dup.destroy() - dup.destroy() // should only work once -}) - -tape('bubble read errors', function(t) { - t.plan(2) - - var write = through() - var read = through() - var dup = duplexify(write, read) - - dup.on('error', function(err) { - t.same(err.message, 'read-error', 'received read error') - }) - dup.on('close', function() { - t.ok(true, 'close emitted') - }) - - read.emit('error', new Error('read-error')) - write.emit('error', new Error('write-error')) // only emit first error -}) - -tape('bubble write errors', function(t) { - t.plan(2) - - var write = through() - var read = through() - var dup = duplexify(write, read) - - dup.on('error', function(err) { - t.same(err.message, 'write-error', 'received write error') - }) - dup.on('close', function() { - t.ok(true, 'close emitted') - }) - - write.emit('error', new Error('write-error')) - read.emit('error', new Error('read-error')) // only emit first error -}) - -tape('reset writable / readable', function(t) { - t.plan(3) - - var toUpperCase = function(data, enc, cb) { - cb(null, data.toString().toUpperCase()) - } - - var passthrough = through() - var upper = through(toUpperCase) - var dup = duplexify(passthrough, passthrough) - - dup.once('data', function(data) { - t.same(data.toString(), 'hello') - dup.setWritable(upper) - dup.setReadable(upper) - dup.once('data', function(data) { - t.same(data.toString(), 'HELLO') - dup.once('data', function(data) { - t.same(data.toString(), 'HI') - t.end() - }) - }) - dup.write('hello') - dup.write('hi') - }) - dup.write('hello') -}) - -tape('cork', function(t) { - var passthrough = through() - var dup = duplexify(passthrough, passthrough) - var ok = false - - dup.on('prefinish', function() { - dup.cork() - setTimeout(function() { - ok = true - dup.uncork() - }, 100) - }) - dup.on('finish', function() { - t.ok(ok) - t.end() - }) - dup.end() -}) - -tape('prefinish not twice', function(t) { - var passthrough = through() - var dup = duplexify(passthrough, passthrough) - var prefinished = false - - dup.on('prefinish', function() { - t.ok(!prefinished, 'only prefinish once') - prefinished = true - }) - - dup.on('finish', function() { - t.end() - }) - - dup.end() -}) - -tape('close', function(t) { - var passthrough = through() - var dup = duplexify(passthrough, passthrough) - var ok = false - - passthrough.emit('close') - dup.on('close', function() { - t.ok(true, 'should forward close') - t.end() - }) -}) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/.npmignore deleted file mode 100644 index a72b52eb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -npm-debug.log -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/LICENSE deleted file mode 100644 index f668fefc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Jeremie Miller - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/README.md deleted file mode 100644 index b5d0b9de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/README.md +++ /dev/null @@ -1,8 +0,0 @@ -ecc-jsbn -======== - -ECC package based on [jsbn](https://github.com/andyperlitch/jsbn) from [Tom Wu](http://www-cs-students.stanford.edu/~tjw/). - -This is a subset of the same interface as the [node compiled module](https://github.com/quartzjer/ecc), but works in the browser too. - -Also uses point compression now from [https://github.com/kaielvin](https://github.com/kaielvin/jsbn-ec-point-compression). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/index.js deleted file mode 100644 index 24372810..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/index.js +++ /dev/null @@ -1,57 +0,0 @@ -var crypto = require("crypto"); -var BigInteger = require("jsbn").BigInteger; -var ECPointFp = require("./lib/ec.js").ECPointFp; -exports.ECCurves = require("./lib/sec.js"); - -// zero prepad -function unstupid(hex,len) -{ - return (hex.length >= len) ? hex : unstupid("0"+hex,len); -} - -exports.ECKey = function(curve, key, isPublic) -{ - var priv; - var c = curve(); - var n = c.getN(); - var bytes = Math.floor(n.bitLength()/8); - - if(key) - { - if(isPublic) - { - var curve = c.getCurve(); -// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format -// var y = key.slice(bytes+1); -// this.P = new ECPointFp(curve, -// curve.fromBigInteger(new BigInteger(x.toString("hex"), 16)), -// curve.fromBigInteger(new BigInteger(y.toString("hex"), 16))); - this.P = curve.decodePointHex(key.toString("hex")); - }else{ - if(key.length != bytes) return false; - priv = new BigInteger(key.toString("hex"), 16); - } - }else{ - var n1 = n.subtract(BigInteger.ONE); - var r = new BigInteger(crypto.randomBytes(n.bitLength())); - priv = r.mod(n1).add(BigInteger.ONE); - this.P = c.getG().multiply(priv); - } - if(this.P) - { -// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2); -// this.PublicKey = new Buffer("04"+pubhex,"hex"); - this.PublicKey = new Buffer(c.getCurve().encodeCompressedPointHex(this.P),"hex"); - } - if(priv) - { - this.PrivateKey = new Buffer(unstupid(priv.toString(16),bytes*2),"hex"); - this.deriveSharedSecret = function(key) - { - if(!key || !key.P) return false; - var S = key.P.multiply(priv); - return new Buffer(unstupid(S.getX().toBigInteger().toString(16),bytes*2),"hex"); - } - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/LICENSE-jsbn b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/LICENSE-jsbn deleted file mode 100644 index 24502a9c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/LICENSE-jsbn +++ /dev/null @@ -1,40 +0,0 @@ -Licensing ---------- - -This software is covered under the following copyright: - -/* - * Copyright (c) 2003-2005 Tom Wu - * All Rights Reserved. - * - * 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" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF - * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * In addition, the following condition applies: - * - * All redistributions must retain an intact copy of this copyright notice - * and disclaimer. - */ - -Address all questions regarding this license to: - - Tom Wu - tjw@cs.Stanford.EDU diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/ec.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/ec.js deleted file mode 100644 index 3852671e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/ec.js +++ /dev/null @@ -1,561 +0,0 @@ -// Basic Javascript Elliptic Curve implementation -// Ported loosely from BouncyCastle's Java EC code -// Only Fp curves implemented for now - -// Requires jsbn.js and jsbn2.js -var BigInteger = require('jsbn').BigInteger -var Barrett = BigInteger.prototype.Barrett - -// ---------------- -// ECFieldElementFp - -// constructor -function ECFieldElementFp(q,x) { - this.x = x; - // TODO if(x.compareTo(q) >= 0) error - this.q = q; -} - -function feFpEquals(other) { - if(other == this) return true; - return (this.q.equals(other.q) && this.x.equals(other.x)); -} - -function feFpToBigInteger() { - return this.x; -} - -function feFpNegate() { - return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); -} - -function feFpAdd(b) { - return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); -} - -function feFpSubtract(b) { - return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); -} - -function feFpMultiply(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); -} - -function feFpSquare() { - return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); -} - -function feFpDivide(b) { - return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); -} - -ECFieldElementFp.prototype.equals = feFpEquals; -ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; -ECFieldElementFp.prototype.negate = feFpNegate; -ECFieldElementFp.prototype.add = feFpAdd; -ECFieldElementFp.prototype.subtract = feFpSubtract; -ECFieldElementFp.prototype.multiply = feFpMultiply; -ECFieldElementFp.prototype.square = feFpSquare; -ECFieldElementFp.prototype.divide = feFpDivide; - -// ---------------- -// ECPointFp - -// constructor -function ECPointFp(curve,x,y,z) { - this.curve = curve; - this.x = x; - this.y = y; - // Projective coordinates: either zinv == null or z * zinv == 1 - // z and zinv are just BigIntegers, not fieldElements - if(z == null) { - this.z = BigInteger.ONE; - } - else { - this.z = z; - } - this.zinv = null; - //TODO: compression flag -} - -function pointFpGetX() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.x.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpGetY() { - if(this.zinv == null) { - this.zinv = this.z.modInverse(this.curve.q); - } - var r = this.y.toBigInteger().multiply(this.zinv); - this.curve.reduce(r); - return this.curve.fromBigInteger(r); -} - -function pointFpEquals(other) { - if(other == this) return true; - if(this.isInfinity()) return other.isInfinity(); - if(other.isInfinity()) return this.isInfinity(); - var u, v; - // u = Y2 * Z1 - Y1 * Z2 - u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); - if(!u.equals(BigInteger.ZERO)) return false; - // v = X2 * Z1 - X1 * Z2 - v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); - return v.equals(BigInteger.ZERO); -} - -function pointFpIsInfinity() { - if((this.x == null) && (this.y == null)) return true; - return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); -} - -function pointFpNegate() { - return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); -} - -function pointFpAdd(b) { - if(this.isInfinity()) return b; - if(b.isInfinity()) return this; - - // u = Y2 * Z1 - Y1 * Z2 - var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); - // v = X2 * Z1 - X1 * Z2 - var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); - - if(BigInteger.ZERO.equals(v)) { - if(BigInteger.ZERO.equals(u)) { - return this.twice(); // this == b, so double - } - return this.curve.getInfinity(); // this = -b, so infinity - } - - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - var x2 = b.x.toBigInteger(); - var y2 = b.y.toBigInteger(); - - var v2 = v.square(); - var v3 = v2.multiply(v); - var x1v2 = x1.multiply(v2); - var zu2 = u.square().multiply(this.z); - - // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) - var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); - // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 - var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); - // z3 = v^3 * z1 * z2 - var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -function pointFpTwice() { - if(this.isInfinity()) return this; - if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); - - // TODO: optimized handling of constants - var THREE = new BigInteger("3"); - var x1 = this.x.toBigInteger(); - var y1 = this.y.toBigInteger(); - - var y1z1 = y1.multiply(this.z); - var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); - var a = this.curve.a.toBigInteger(); - - // w = 3 * x1^2 + a * z1^2 - var w = x1.square().multiply(THREE); - if(!BigInteger.ZERO.equals(a)) { - w = w.add(this.z.square().multiply(a)); - } - w = w.mod(this.curve.q); - //this.curve.reduce(w); - // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) - var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); - // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 - var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); - // z3 = 8 * (y1 * z1)^3 - var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); - - return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); -} - -// Simple NAF (Non-Adjacent Form) multiplication algorithm -// TODO: modularize the multiplication algorithm -function pointFpMultiply(k) { - if(this.isInfinity()) return this; - if(k.signum() == 0) return this.curve.getInfinity(); - - var e = k; - var h = e.multiply(new BigInteger("3")); - - var neg = this.negate(); - var R = this; - - var i; - for(i = h.bitLength() - 2; i > 0; --i) { - R = R.twice(); - - var hBit = h.testBit(i); - var eBit = e.testBit(i); - - if (hBit != eBit) { - R = R.add(hBit ? this : neg); - } - } - - return R; -} - -// Compute this*j + x*k (simultaneous multiplication) -function pointFpMultiplyTwo(j,x,k) { - var i; - if(j.bitLength() > k.bitLength()) - i = j.bitLength() - 1; - else - i = k.bitLength() - 1; - - var R = this.curve.getInfinity(); - var both = this.add(x); - while(i >= 0) { - R = R.twice(); - if(j.testBit(i)) { - if(k.testBit(i)) { - R = R.add(both); - } - else { - R = R.add(this); - } - } - else { - if(k.testBit(i)) { - R = R.add(x); - } - } - --i; - } - - return R; -} - -ECPointFp.prototype.getX = pointFpGetX; -ECPointFp.prototype.getY = pointFpGetY; -ECPointFp.prototype.equals = pointFpEquals; -ECPointFp.prototype.isInfinity = pointFpIsInfinity; -ECPointFp.prototype.negate = pointFpNegate; -ECPointFp.prototype.add = pointFpAdd; -ECPointFp.prototype.twice = pointFpTwice; -ECPointFp.prototype.multiply = pointFpMultiply; -ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; - -// ---------------- -// ECCurveFp - -// constructor -function ECCurveFp(q,a,b) { - this.q = q; - this.a = this.fromBigInteger(a); - this.b = this.fromBigInteger(b); - this.infinity = new ECPointFp(this, null, null); - this.reducer = new Barrett(this.q); -} - -function curveFpGetQ() { - return this.q; -} - -function curveFpGetA() { - return this.a; -} - -function curveFpGetB() { - return this.b; -} - -function curveFpEquals(other) { - if(other == this) return true; - return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); -} - -function curveFpGetInfinity() { - return this.infinity; -} - -function curveFpFromBigInteger(x) { - return new ECFieldElementFp(this.q, x); -} - -function curveReduce(x) { - this.reducer.reduce(x); -} - -// for now, work with hex strings because they're easier in JS -function curveFpDecodePointHex(s) { - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - case 3: - // point compression not supported yet - return null; - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} - -function curveFpEncodePointHex(p) { - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var yHex = p.getY().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) { - xHex = "0" + xHex; - } - while (yHex.length < oLen) { - yHex = "0" + yHex; - } - return "04" + xHex + yHex; -} - -ECCurveFp.prototype.getQ = curveFpGetQ; -ECCurveFp.prototype.getA = curveFpGetA; -ECCurveFp.prototype.getB = curveFpGetB; -ECCurveFp.prototype.equals = curveFpEquals; -ECCurveFp.prototype.getInfinity = curveFpGetInfinity; -ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; -ECCurveFp.prototype.reduce = curveReduce; -//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; -ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; - -// from: https://github.com/kaielvin/jsbn-ec-point-compression -ECCurveFp.prototype.decodePointHex = function(s) -{ - var yIsEven; - switch(parseInt(s.substr(0,2), 16)) { // first byte - case 0: - return this.infinity; - case 2: - yIsEven = false; - case 3: - if(yIsEven == undefined) yIsEven = true; - var len = s.length - 2; - var xHex = s.substr(2, len); - var x = this.fromBigInteger(new BigInteger(xHex,16)); - var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); - var beta = alpha.sqrt(); - - if (beta == null) throw "Invalid point compression"; - - var betaValue = beta.toBigInteger(); - if (betaValue.testBit(0) != yIsEven) - { - // Use the other root - beta = this.fromBigInteger(this.getQ().subtract(betaValue)); - } - return new ECPointFp(this,x,beta); - case 4: - case 6: - case 7: - var len = (s.length - 2) / 2; - var xHex = s.substr(2, len); - var yHex = s.substr(len+2, len); - - return new ECPointFp(this, - this.fromBigInteger(new BigInteger(xHex, 16)), - this.fromBigInteger(new BigInteger(yHex, 16))); - - default: // unsupported - return null; - } -} -ECCurveFp.prototype.encodeCompressedPointHex = function(p) -{ - if (p.isInfinity()) return "00"; - var xHex = p.getX().toBigInteger().toString(16); - var oLen = this.getQ().toString(16).length; - if ((oLen % 2) != 0) oLen++; - while (xHex.length < oLen) - xHex = "0" + xHex; - var yPrefix; - if(p.getY().toBigInteger().isEven()) yPrefix = "02"; - else yPrefix = "03"; - - return yPrefix + xHex; -} - - -ECFieldElementFp.prototype.getR = function() -{ - if(this.r != undefined) return this.r; - - this.r = null; - var bitLength = this.q.bitLength(); - if (bitLength > 128) - { - var firstWord = this.q.shiftRight(bitLength - 64); - if (firstWord.intValue() == -1) - { - this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); - } - } - return this.r; -} -ECFieldElementFp.prototype.modMult = function(x1,x2) -{ - return this.modReduce(x1.multiply(x2)); -} -ECFieldElementFp.prototype.modReduce = function(x) -{ - if (this.getR() != null) - { - var qLen = q.bitLength(); - while (x.bitLength() > (qLen + 1)) - { - var u = x.shiftRight(qLen); - var v = x.subtract(u.shiftLeft(qLen)); - if (!this.getR().equals(BigInteger.ONE)) - { - u = u.multiply(this.getR()); - } - x = u.add(v); - } - while (x.compareTo(q) >= 0) - { - x = x.subtract(q); - } - } - else - { - x = x.mod(q); - } - return x; -} -ECFieldElementFp.prototype.sqrt = function() -{ - if (!this.q.testBit(0)) throw "unsupported"; - - // p mod 4 == 3 - if (this.q.testBit(1)) - { - var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); - return z.square().equals(this) ? z : null; - } - - // p mod 4 == 1 - var qMinusOne = this.q.subtract(BigInteger.ONE); - - var legendreExponent = qMinusOne.shiftRight(1); - if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) - { - return null; - } - - var u = qMinusOne.shiftRight(2); - var k = u.shiftLeft(1).add(BigInteger.ONE); - - var Q = this.x; - var fourQ = modDouble(modDouble(Q)); - - var U, V; - do - { - var P; - do - { - P = new BigInteger(this.q.bitLength(), new SecureRandom()); - } - while (P.compareTo(this.q) >= 0 - || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); - - var result = this.lucasSequence(P, Q, k); - U = result[0]; - V = result[1]; - - if (this.modMult(V, V).equals(fourQ)) - { - // Integer division by 2, mod q - if (V.testBit(0)) - { - V = V.add(q); - } - - V = V.shiftRight(1); - - return new ECFieldElementFp(q,V); - } - } - while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); - - return null; -} -ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) -{ - var n = k.bitLength(); - var s = k.getLowestSetBit(); - - var Uh = BigInteger.ONE; - var Vl = BigInteger.TWO; - var Vh = P; - var Ql = BigInteger.ONE; - var Qh = BigInteger.ONE; - - for (var j = n - 1; j >= s + 1; --j) - { - Ql = this.modMult(Ql, Qh); - - if (k.testBit(j)) - { - Qh = this.modMult(Ql, Q); - Uh = this.modMult(Uh, Vh); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); - } - else - { - Qh = Ql; - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - } - } - - Ql = this.modMult(Ql, Qh); - Qh = this.modMult(Ql, Q); - Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); - Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); - Ql = this.modMult(Ql, Qh); - - for (var j = 1; j <= s; ++j) - { - Uh = this.modMult(Uh, Vl); - Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); - Ql = this.modMult(Ql, Ql); - } - - return [ Uh, Vl ]; -} - -var exports = { - ECCurveFp: ECCurveFp, - ECPointFp: ECPointFp, - ECFieldElementFp: ECFieldElementFp -} - -module.exports = exports diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/sec.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/sec.js deleted file mode 100644 index 5eec8179..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/lib/sec.js +++ /dev/null @@ -1,170 +0,0 @@ -// Named EC curves - -// Requires ec.js, jsbn.js, and jsbn2.js -var BigInteger = require('jsbn').BigInteger -var ECCurveFp = require('./ec.js').ECCurveFp - - -// ---------------- -// X9ECParameters - -// constructor -function X9ECParameters(curve,g,n,h) { - this.curve = curve; - this.g = g; - this.n = n; - this.h = h; -} - -function x9getCurve() { - return this.curve; -} - -function x9getG() { - return this.g; -} - -function x9getN() { - return this.n; -} - -function x9getH() { - return this.h; -} - -X9ECParameters.prototype.getCurve = x9getCurve; -X9ECParameters.prototype.getG = x9getG; -X9ECParameters.prototype.getN = x9getN; -X9ECParameters.prototype.getH = x9getH; - -// ---------------- -// SECNamedCurves - -function fromHex(s) { return new BigInteger(s, 16); } - -function secp128r1() { - // p = 2^128 - 2^97 - 1 - var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); - //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); - var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "161FF7528B899B2D0C28607CA52C5B86" - + "CF5AC8395BAFEB13C02DA292DDED7A83"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160k1() { - // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); - var a = BigInteger.ZERO; - var b = fromHex("7"); - //byte[] S = null; - var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" - + "938CF935318FDCED6BC28286531733C3F03C4FEE"); - return new X9ECParameters(curve, G, n, h); -} - -function secp160r1() { - // p = 2^160 - 2^31 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); - var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); - //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); - var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "4A96B5688EF573284664698968C38BB913CBFC82" - + "23A628553168947D59DCC912042351377AC5FB32"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192k1() { - // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); - var a = BigInteger.ZERO; - var b = fromHex("3"); - //byte[] S = null; - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" - + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); - return new X9ECParameters(curve, G, n, h); -} - -function secp192r1() { - // p = 2^192 - 2^64 - 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); - var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); - //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" - + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); - return new X9ECParameters(curve, G, n, h); -} - -function secp224r1() { - // p = 2^224 - 2^96 + 1 - var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); - var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); - var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); - //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); - var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" - + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); - return new X9ECParameters(curve, G, n, h); -} - -function secp256r1() { - // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 - var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); - var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); - var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); - //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); - var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); - var h = BigInteger.ONE; - var curve = new ECCurveFp(p, a, b); - var G = curve.decodePointHex("04" - + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" - + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); - return new X9ECParameters(curve, G, n, h); -} - -// TODO: make this into a proper hashtable -function getSECCurveByName(name) { - if(name == "secp128r1") return secp128r1(); - if(name == "secp160k1") return secp160k1(); - if(name == "secp160r1") return secp160r1(); - if(name == "secp192k1") return secp192k1(); - if(name == "secp192r1") return secp192r1(); - if(name == "secp224r1") return secp224r1(); - if(name == "secp256r1") return secp256r1(); - return null; -} - -module.exports = { - "secp128r1":secp128r1, - "secp160k1":secp160k1, - "secp160r1":secp160r1, - "secp192k1":secp192k1, - "secp192r1":secp192r1, - "secp224r1":secp224r1, - "secp256r1":secp256r1 -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/package.json deleted file mode 100644 index b8e07c88..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_args": [ - [ - "ecc-jsbn@~0.1.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "ecc-jsbn@>=0.1.1 <0.2.0", - "_id": "ecc-jsbn@0.1.1", - "_inCache": true, - "_installable": true, - "_location": "/ecc-jsbn", - "_nodeVersion": "0.12.6", - "_npmUser": { - "email": "jeremie@jabber.org", - "name": "quartzjer" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "ecc-jsbn", - "raw": "ecc-jsbn@~0.1.1", - "rawSpec": "~0.1.1", - "scope": null, - "spec": ">=0.1.1 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "_shasum": "0fc73a9ed5f0d53c38193398523ef7e543777505", - "_shrinkwrap": null, - "_spec": "ecc-jsbn@~0.1.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "email": "jeremie@jabber.org", - "name": "Jeremie Miller", - "url": "http://jeremie.com/" - }, - "bugs": { - "url": "https://github.com/quartzjer/ecc-jsbn/issues" - }, - "dependencies": { - "jsbn": "~0.1.0" - }, - "description": "ECC JS code based on JSBN", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "0fc73a9ed5f0d53c38193398523ef7e543777505", - "tarball": "http://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" - }, - "gitHead": "d35a360352496721030da645e8054f07efc22487", - "homepage": "https://github.com/quartzjer/ecc-jsbn", - "keywords": [ - "jsbn", - "ecc", - "browserify" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "jeremie@jabber.org", - "name": "quartzjer" - }, - { - "email": "nomad.ry@gmail.com", - "name": "rynomad" - } - ], - "name": "ecc-jsbn", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/quartzjer/ecc-jsbn.git" - }, - "scripts": {}, - "version": "0.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/test.js deleted file mode 100644 index bd52abfd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ecc-jsbn/test.js +++ /dev/null @@ -1,14 +0,0 @@ -var ecc = require("./index.js"); -var key1 = new ecc.ECKey(ecc.ECCurves.secp160r1); -var key2 = new ecc.ECKey(ecc.ECCurves.secp160r1); -console.log(key1.deriveSharedSecret(key2)); -var key3 = new ecc.ECKey(ecc.ECCurves.secp160r1,key1.PrivateKey); -var key4 = new ecc.ECKey(ecc.ECCurves.secp160r1,key2.PublicKey,true); -console.log(key3.deriveSharedSecret(key4)); - -var key1 = new ecc.ECKey(ecc.ECCurves.secp256r1); -var key2 = new ecc.ECKey(ecc.ECCurves.secp256r1); -console.log(key1.deriveSharedSecret(key2)); -var key3 = new ecc.ECKey(ecc.ECCurves.secp256r1,key1.PrivateKey); -var key4 = new ecc.ECKey(ecc.ECCurves.secp256r1,key2.PublicKey,true); -console.log(key3.deriveSharedSecret(key4)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/README.md deleted file mode 100644 index df800c1e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# end-of-stream - -A node module that calls a callback when a readable/writable/duplex stream has completed or failed. - - npm install end-of-stream - -## Usage - -Simply pass a stream and a callback to the `eos`. -Both legacy streams and streams2 are supported. - -``` js -var eos = require('end-of-stream'); - -eos(readableStream, function(err) { - if (err) return console.log('stream had an error or closed early'); - console.log('stream has ended'); -}); - -eos(writableStream, function(err) { - if (err) return console.log('stream had an error or closed early'); - console.log('stream has finished'); -}); - -eos(duplexStream, function(err) { - if (err) return console.log('stream had an error or closed early'); - console.log('stream has ended and finished'); -}); - -eos(duplexStream, {readable:false}, function(err) { - if (err) return console.log('stream had an error or closed early'); - console.log('stream has ended but might still be writable'); -}); - -eos(duplexStream, {writable:false}, function(err) { - if (err) return console.log('stream had an error or closed early'); - console.log('stream has ended but might still be readable'); -}); - -eos(readableStream, {error:false}, function(err) { - // do not treat emit('error', err) as a end-of-stream -}); -``` - -## License - -MIT \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/index.js deleted file mode 100644 index b9fbec07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/index.js +++ /dev/null @@ -1,61 +0,0 @@ -var once = require('once'); - -var noop = function() {}; - -var isRequest = function(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -}; - -var eos = function(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; - - callback = once(callback || noop); - - var ws = stream._writableState; - var rs = stream._readableState; - var readable = opts.readable || (opts.readable !== false && stream.readable); - var writable = opts.writable || (opts.writable !== false && stream.writable); - - var onlegacyfinish = function() { - if (!stream.writable) onfinish(); - }; - - var onfinish = function() { - writable = false; - if (!readable) callback(); - }; - - var onend = function() { - readable = false; - if (!writable) callback(); - }; - - var onclose = function() { - if (readable && !(rs && rs.ended)) return callback(new Error('premature close')); - if (writable && !(ws && ws.ended)) return callback(new Error('premature close')); - }; - - var onrequest = function() { - stream.req.on('finish', onfinish); - }; - - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest(); - else stream.on('request', onrequest); - } else if (writable && !ws) { // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } - - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', callback); - stream.on('close', onclose); - - return stream; -}; - -module.exports = eos; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/package.json deleted file mode 100644 index 60c42687..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_args": [ - [ - "end-of-stream@~0.1.5", - "/Users/sid/Desktop/code/RustyCode/node_modules/orchestrator" - ] - ], - "_from": "end-of-stream@>=0.1.5 <0.2.0", - "_id": "end-of-stream@0.1.5", - "_inCache": true, - "_installable": true, - "_location": "/end-of-stream", - "_npmUser": { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - }, - "_npmVersion": "1.4.9", - "_phantomChildren": {}, - "_requested": { - "name": "end-of-stream", - "raw": "end-of-stream@~0.1.5", - "rawSpec": "~0.1.5", - "scope": null, - "spec": ">=0.1.5 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/orchestrator" - ], - "_resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "_shasum": "8e177206c3c80837d85632e8b9359dfe8b2f6eaf", - "_shrinkwrap": null, - "_spec": "end-of-stream@~0.1.5", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/orchestrator", - "author": { - "email": "mathiasbuus@gmail.com", - "name": "Mathias Buus" - }, - "bugs": { - "url": "https://github.com/mafintosh/end-of-stream/issues" - }, - "dependencies": { - "once": "~1.3.0" - }, - "description": "Call a callback when a readable/writable/duplex stream has completed or failed.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "8e177206c3c80837d85632e8b9359dfe8b2f6eaf", - "tarball": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz" - }, - "homepage": "https://github.com/mafintosh/end-of-stream", - "keywords": [ - "stream", - "streams", - "callback", - "finish", - "close", - "end", - "wait" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - } - ], - "name": "end-of-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/mafintosh/end-of-stream.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "0.1.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/test.js deleted file mode 100644 index 277f1ce6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/end-of-stream/test.js +++ /dev/null @@ -1,59 +0,0 @@ -var assert = require('assert'); -var eos = require('./index'); - -var expected = 6; -var fs = require('fs'); -var net = require('net'); - -var ws = fs.createWriteStream('/dev/null'); -eos(ws, function(err) { - expected--; - assert(!!err); - if (!expected) process.exit(0); -}); -ws.close(); - -var rs = fs.createReadStream('/dev/random'); -eos(rs, function(err) { - expected--; - assert(!!err); - if (!expected) process.exit(0); -}); -rs.close(); - -var rs = fs.createReadStream(__filename); -eos(rs, function(err) { - expected--; - assert(!err); - if (!expected) process.exit(0); -}); -rs.pipe(fs.createWriteStream('/dev/null')); - -var socket = net.connect(50000); -eos(socket, function(err) { - expected--; - assert(!!err); - if (!expected) process.exit(0); -}); - - -var server = net.createServer(function(socket) { - eos(socket, function() { - expected--; - if (!expected) process.exit(0); - }); - socket.destroy(); -}).listen(30000, function() { - var socket = net.connect(30000); - eos(socket, function() { - expected--; - if (!expected) process.exit(0); - }); -}); - - - -setTimeout(function() { - assert(expected === 0); - process.exit(0); -}, 1000); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/LICENSE deleted file mode 100644 index 0a5f461a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 JD Ballard - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/README.md deleted file mode 100644 index 97f744af..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# node-error-ex [![Travis-CI.org Build Status](https://img.shields.io/travis/Qix-/node-error-ex.svg?style=flat-square)](https://travis-ci.org/Qix-/node-error-ex) [![Coveralls.io Coverage Rating](https://img.shields.io/coveralls/Qix-/node-error-ex.svg?style=flat-square)](https://coveralls.io/r/Qix-/node-error-ex) -> Easily subclass and customize new Error types - -## Examples -To include in your project: -```javascript -var errorEx = require('error-ex'); -``` - -To create an error message type with a specific name (note, that `ErrorFn.name` -will not reflect this): -```javascript -var JSONError = errorEx('JSONError'); - -var err = new JSONError('error'); -err.name; //-> JSONError -throw err; //-> JSONError: error -``` - -To add a stack line: -```javascript -var JSONError = errorEx('JSONError', {fileName: errorEx.line('in %s')}); - -var err = new JSONError('error') -err.fileName = '/a/b/c/foo.json'; -throw err; //-> (line 2)-> in /a/b/c/foo.json -``` - -To append to the error message: -```javascript -var JSONError = errorEx('JSONError', {fileName: errorEx.append('in %s')}); - -var err = new JSONError('error'); -err.fileName = '/a/b/c/foo.json'; -throw err; //-> JSONError: error in /a/b/c/foo.json -``` - -## API - -#### `errorEx([name], [properties])` -Creates a new ErrorEx error type - -- `name`: the name of the new type (appears in the error message upon throw; - defaults to `Error.name`) -- `properties`: if supplied, used as a key/value dictionary of properties to - use when building up the stack message. Keys are property names that are - looked up on the error message, and then passed to function values. - - `line`: if specified and is a function, return value is added as a stack - entry (error-ex will indent for you). Passed the property value given - the key. - - `stack`: if specified and is a function, passed the value of the property - using the key, and the raw stack lines as a second argument. Takes no - return value (but the stack can be modified directly). - - `message`: if specified and is a function, return value is used as new - `.message` value upon get. Passed the property value of the property named - by key, and the existing message is passed as the second argument as an - array of lines (suitable for multi-line messages). - -Returns a constructor (Function) that can be used just like the regular Error -constructor. - -```javascript -var errorEx = require('error-ex'); - -var BasicError = errorEx(); - -var NamedError = errorEx('NamedError'); - -// -- - -var AdvancedError = errorEx('AdvancedError', { - foo: { - line: function (value, stack) { - if (value) { - return 'bar ' + value; - } - return null; - } - } -} - -var err = new AdvancedError('hello, world'); -err.foo = 'baz'; -throw err; - -/* - AdvancedError: hello, world - bar baz - at tryReadme() (readme.js:20:1) -*/ -``` - -#### `errorEx.line(str)` -Creates a stack line using a delimiter - -> This is a helper function. It is to be used in lieu of writing a value object -> for `properties` values. - -- `str`: The string to create - - Use the delimiter `%s` to specify where in the string the value should go - -```javascript -var errorEx = require('error-ex'); - -var FileError = errorEx('FileError', {fileName: errorEx.line('in %s')}); - -var err = new FileError('problem reading file'); -err.fileName = '/a/b/c/d/foo.js'; -throw err; - -/* - FileError: problem reading file - in /a/b/c/d/foo.js - at tryReadme() (readme.js:7:1) -*/ -``` - -#### `errorEx.append(str)` -Appends to the `error.message` string - -> This is a helper function. It is to be used in lieu of writing a value object -> for `properties` values. - -- `str`: The string to append - - Use the delimiter `%s` to specify where in the string the value should go - -```javascript -var errorEx = require('error-ex'); - -var SyntaxError = errorEx('SyntaxError', {fileName: errorEx.append('in %s')}); - -var err = new SyntaxError('improper indentation'); -err.fileName = '/a/b/c/d/foo.js'; -throw err; - -/* - SyntaxError: improper indentation in /a/b/c/d/foo.js - at tryReadme() (readme.js:7:1) -*/ -``` - -## License -Licensed under the [MIT License](http://opensource.org/licenses/MIT). -You can find a copy of it in [LICENSE](LICENSE). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/index.js deleted file mode 100644 index 1bdc943b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/index.js +++ /dev/null @@ -1,115 +0,0 @@ -'use strict'; - -var util = require('util'); -var isArrayish = require('is-arrayish'); - -var errorEx = function errorEx(name, properties) { - if (!name || name.constructor !== String) { - properties = name || {}; - name = Error.name; - } - - var errorExError = function ErrorEXError(message) { - if (!this) { - return new ErrorEXError(message); - } - - message = message instanceof Error - ? message.message - : (message || this.message); - - Error.call(this, message); - Error.captureStackTrace(this, errorExError); - this.name = name; - - delete this.message; - - Object.defineProperty(this, 'message', { - configurable: true, - enumerable: false, - get: function () { - var newMessage = message.split(/\r?\n/g); - - for (var key in properties) { - if (properties.hasOwnProperty(key) && 'message' in properties[key]) { - newMessage = properties[key].message(this[key], newMessage) || - newMessage; - if (!isArrayish(newMessage)) { - newMessage = [newMessage]; - } - } - } - - return newMessage.join('\n'); - }, - set: function (v) { - message = v; - } - }); - - var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack'); - var stackGetter = stackDescriptor.get; - - stackDescriptor.get = function () { - var stack = stackGetter.call(this).split(/\r?\n+/g); - - var lineCount = 1; - for (var key in properties) { - if (!properties.hasOwnProperty(key)) { - continue; - } - - var modifier = properties[key]; - - if ('line' in modifier) { - var line = modifier.line(this[key]); - if (line) { - stack.splice(lineCount, 0, ' ' + line); - } - } - - if ('stack' in modifier) { - modifier.stack(this[key], stack); - } - } - - return stack.join('\n'); - }; - - Object.defineProperty(this, 'stack', stackDescriptor); - }; - - util.inherits(errorExError, Error); - - return errorExError; -}; - -errorEx.append = function (str, def) { - return { - message: function (v, message) { - v = v || def; - - if (v) { - message[0] += ' ' + str.replace('%s', v.toString()); - } - - return message; - } - }; -}; - -errorEx.line = function (str, def) { - return { - line: function (v) { - v = v || def; - - if (v) { - return str.replace('%s', v.toString()); - } - - return null; - } - }; -}; - -module.exports = errorEx; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/package.json deleted file mode 100644 index a1143f14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/error-ex/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "error-ex@^1.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/parse-json" - ] - ], - "_from": "error-ex@>=1.2.0 <2.0.0", - "_id": "error-ex@1.3.0", - "_inCache": true, - "_installable": true, - "_location": "/error-ex", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "i.am.qix@gmail.com", - "name": "qix" - }, - "_npmVersion": "3.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "error-ex", - "raw": "error-ex@^1.2.0", - "rawSpec": "^1.2.0", - "scope": null, - "spec": ">=1.2.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/parse-json" - ], - "_resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "_shasum": "e67b43f3e82c96ea3a584ffee0b9fc3325d802d9", - "_shrinkwrap": null, - "_spec": "error-ex@^1.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/parse-json", - "bugs": { - "url": "https://github.com/qix-/node-error-ex/issues" - }, - "dependencies": { - "is-arrayish": "^0.2.1" - }, - "description": "Easy error subclassing and stack customization", - "devDependencies": { - "coffee-script": "^1.9.3", - "coveralls": "^2.11.2", - "istanbul": "^0.3.17", - "mocha": "^2.2.5", - "should": "^7.0.1", - "xo": "^0.7.1" - }, - "directories": {}, - "dist": { - "shasum": "e67b43f3e82c96ea3a584ffee0b9fc3325d802d9", - "tarball": "http://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz" - }, - "files": [ - "index.js" - ], - "gitHead": "118bb63206f736f2450480e73f9d7d22692ae328", - "homepage": "https://github.com/qix-/node-error-ex#readme", - "keywords": [ - "error", - "errors", - "extend", - "extending", - "extension", - "subclass", - "stack", - "custom" - ], - "license": "MIT", - "maintainers": [ - { - "email": "i.am.qix@gmail.com", - "name": "qix" - }, - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "error-ex", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/qix-/node-error-ex.git" - }, - "scripts": { - "pretest": "xo", - "test": "mocha --compilers coffee:coffee-script/register" - }, - "version": "1.3.0", - "xo": { - "rules": { - "operator-linebreak": [ - 0 - ] - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/index.js deleted file mode 100644 index 7834bf9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/index.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/package.json deleted file mode 100644 index e7f468e5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "escape-string-regexp@^1.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/chalk" - ] - ], - "_from": "escape-string-regexp@>=1.0.2 <2.0.0", - "_id": "escape-string-regexp@1.0.5", - "_inCache": true, - "_installable": true, - "_location": "/escape-string-regexp", - "_nodeVersion": "4.2.6", - "_npmOperationalInternal": { - "host": "packages-9-west.internal.npmjs.com", - "tmp": "tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477" - }, - "_npmUser": { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - }, - "_npmVersion": "2.14.12", - "_phantomChildren": {}, - "_requested": { - "name": "escape-string-regexp", - "raw": "escape-string-regexp@^1.0.2", - "rawSpec": "^1.0.2", - "scope": null, - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", - "_shrinkwrap": null, - "_spec": "escape-string-regexp@^1.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/escape-string-regexp/issues" - }, - "dependencies": {}, - "description": "Escape RegExp special characters", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", - "tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "engines": { - "node": ">=0.8.0" - }, - "files": [ - "index.js" - ], - "gitHead": "db124a3e1aae9d692c4899e42a5c6c3e329eaa20", - "homepage": "https://github.com/sindresorhus/escape-string-regexp", - "keywords": [ - "escape", - "regex", - "regexp", - "re", - "regular", - "expression", - "string", - "str", - "special", - "characters" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "escape-string-regexp", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.0.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/readme.md deleted file mode 100644 index 87ac82d5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/escape-string-regexp/readme.md +++ /dev/null @@ -1,27 +0,0 @@ -# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) - -> Escape RegExp special characters - - -## Install - -``` -$ npm install --save escape-string-regexp -``` - - -## Usage - -```js -const escapeStringRegexp = require('escape-string-regexp'); - -const escapedString = escapeStringRegexp('how much $ for a unicorn?'); -//=> 'how much \$ for a unicorn\?' - -new RegExp(escapedString); -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.travis.yml deleted file mode 100644 index dad2273c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/LICENCE deleted file mode 100644 index 171dd970..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/examples/pretty.js deleted file mode 100644 index af043401..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/index.js deleted file mode 100644 index 2d29724e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/index.js +++ /dev/null @@ -1,306 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - -var Stream = require('stream').Stream - , es = exports - , through = require('through') - , from = require('from') - , duplex = require('duplexer') - , map = require('map-stream') - , pause = require('pause-stream') - , split = require('split') - , pipeline = require('stream-combiner') - , immediately = global.setImmediate || process.nextTick; - -es.Stream = Stream //re-export Stream from core -es.through = through -es.from = from -es.duplex = duplex -es.map = map -es.pause = pause -es.split = split -es.pipeline = es.connect = es.pipe = pipeline -// merge / concat -// -// combine multiple streams into a single stream. -// will emit end only once - -es.concat = //actually this should be called concat -es.merge = function (/*streams...*/) { - var toMerge = [].slice.call(arguments) - var stream = new Stream() - stream.setMaxListeners(0) // allow adding more than 11 streams - var endCount = 0 - stream.writable = stream.readable = true - - toMerge.forEach(function (e) { - e.pipe(stream, {end: false}) - var ended = false - e.on('end', function () { - if(ended) return - ended = true - endCount ++ - if(endCount == toMerge.length) - stream.emit('end') - }) - }) - stream.write = function (data) { - this.emit('data', data) - } - stream.destroy = function () { - toMerge.forEach(function (e) { - if(e.destroy) e.destroy() - }) - } - return stream -} - - -// writable stream, collects all events into an array -// and calls back when 'end' occurs -// mainly I'm using this to test the other functions - -es.writeArray = function (done) { - if ('function' !== typeof done) - throw new Error('function writeArray (done): done must be function') - - var a = new Stream () - , array = [], isDone = false - a.write = function (l) { - array.push(l) - } - a.end = function () { - isDone = true - done(null, array) - } - a.writable = true - a.readable = false - a.destroy = function () { - a.writable = a.readable = false - if(isDone) return - done(new Error('destroyed before end'), array) - } - return a -} - -//return a Stream that reads the properties of an object -//respecting pause() and resume() - -es.readArray = function (array) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - - stream.readable = true - stream.writable = false - - if(!Array.isArray(array)) - throw new Error('event-stream.read expects an array') - - stream.resume = function () { - if(ended) return - paused = false - var l = array.length - while(i < l && !paused && !ended) { - stream.emit('data', array[i++]) - } - if(i == l && !ended) - ended = true, stream.readable = false, stream.emit('end') - } - process.nextTick(stream.resume) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - ended = true - stream.emit('close') - } - return stream -} - -// -// readable (asyncFunction) -// return a stream that calls an async function while the stream is not paused. -// -// the function must take: (count, callback) {... -// - -es.readable = -function (func, continueOnError) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - , reading = false - - stream.readable = true - stream.writable = false - - if('function' !== typeof func) - throw new Error('event-stream.readable expects async function') - - stream.on('end', function () { ended = true }) - - function get (err, data) { - - if(err) { - stream.emit('error', err) - if(!continueOnError) stream.emit('end') - } else if (arguments.length > 1) - stream.emit('data', data) - - immediately(function () { - if(ended || paused || reading) return - try { - reading = true - func.call(stream, i++, function () { - reading = false - get.apply(null, arguments) - }) - } catch (err) { - stream.emit('error', err) - } - }) - } - stream.resume = function () { - paused = false - get() - } - process.nextTick(get) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - stream.emit('end') - stream.emit('close') - ended = true - } - return stream -} - - -// -// map sync -// - -es.mapSync = function (sync) { - return es.through(function write(data) { - var mappedData = sync(data) - if (typeof mappedData !== 'undefined') - this.emit('data', mappedData) - }) -} - -// -// log just print out what is coming through the stream, for debugging -// - -es.log = function (name) { - return es.through(function (data) { - var args = [].slice.call(arguments) - if(name) console.error(name, data) - else console.error(data) - this.emit('data', data) - }) -} - - -// -// child -- pipe through a child process -// - -es.child = function (child) { - - return es.duplex(child.stdin, child.stdout) - -} - -// -// parse -// -// must be used after es.split() to ensure that each chunk represents a line -// source.pipe(es.split()).pipe(es.parse()) - -es.parse = function () { - return es.through(function (data) { - var obj - try { - if(data) //ignore empty lines - obj = JSON.parse(data.toString()) - } catch (err) { - return console.error(err, 'attemping to parse:', data) - } - //ignore lines that where only whitespace. - if(obj !== undefined) - this.emit('data', obj) - }) -} -// -// stringify -// - -es.stringify = function () { - var Buffer = require('buffer').Buffer - return es.mapSync(function (e){ - return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' - }) -} - -// -// replace a string within a stream. -// -// warn: just concatenates the string and then does str.split().join(). -// probably not optimal. -// for smallish responses, who cares? -// I need this for shadow-npm so it's only relatively small json files. - -es.replace = function (from, to) { - return es.pipeline(es.split(from), es.join(to)) -} - -// -// join chunks with a joiner. just like Array#join -// also accepts a callback that is passed the chunks appended together -// this is still supported for legacy reasons. -// - -es.join = function (str) { - - //legacy api - if('function' === typeof str) - return es.wait(str) - - var first = true - return es.through(function (data) { - if(!first) - this.emit('data', str) - first = false - this.emit('data', data) - return true - }) -} - - -// -// wait. callback when 'end' is emitted, with all chunks appended as string. -// - -es.wait = function (callback) { - var arr = [] - return es.through(function (data) { arr.push(data) }, - function () { - var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr) - : arr.join('') - this.emit('data', body) - this.emit('end') - if(callback) callback(null, body) - }) -} - -es.pipeable = function () { - throw new Error('[EVENT-STREAM] es.pipeable is deprecated') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/package.json deleted file mode 100644 index 3a5c38b5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "event-stream@~3.1.5", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src" - ] - ], - "_from": "event-stream@>=3.1.5 <3.2.0", - "_id": "event-stream@3.1.7", - "_inCache": true, - "_installable": true, - "_location": "/event-stream", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "1.4.9", - "_phantomChildren": {}, - "_requested": { - "name": "event-stream", - "raw": "event-stream@~3.1.5", - "rawSpec": "~3.1.5", - "scope": null, - "spec": ">=3.1.5 <3.2.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src" - ], - "_resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz", - "_shasum": "b4c540012d0fe1498420f3d8946008db6393c37a", - "_shrinkwrap": null, - "_spec": "event-stream@~3.1.5", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/event-stream/issues" - }, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.2", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - }, - "description": "construct pipes of streams of events", - "devDependencies": { - "asynct": "*", - "it-is": "1", - "stream-spec": "~0.3.5", - "tape": "~2.3.0", - "ubelt": "~3.2.2" - }, - "directories": {}, - "dist": { - "shasum": "b4c540012d0fe1498420f3d8946008db6393c37a", - "tarball": "https://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz" - }, - "homepage": "http://github.com/dominictarr/event-stream", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "event-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/event-stream.git" - }, - "scripts": { - "test": "asynct test/", - "test_tap": "set -e; for t in test/*.js; do node $t; done" - }, - "testling": { - "browsers": { - "chrome": [ - 20 - ], - "firefox": [ - 13 - ], - "ie": [ - 8, - 9 - ], - "opera": [ - 12 - ], - "safari": [ - 5.1 - ] - }, - "files": "test/*.js" - }, - "version": "3.1.7" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/readme.markdown deleted file mode 100644 index 9ece84c3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/readme.markdown +++ /dev/null @@ -1,298 +0,0 @@ -# EventStream - - - -[![browser status](http://ci.testling.com/dominictarr/event-stream.png)] -(http://ci.testling.com/dominictarr/event-stream) - -[Streams](http://nodejs.org/api/stream.html "Stream") are node's best and most misunderstood idea, and -_EventStream_ is a toolkit to make creating and working with streams easy. - -Normally, streams are only used for IO, -but in event stream we send all kinds of objects down the pipe. -If your application's input and output are streams, -shouldn't the throughput be a stream too? - -The *EventStream* functions resemble the array functions, -because Streams are like Arrays, but laid out in time, rather than in memory. - -All the `event-stream` functions return instances of `Stream`. - -`event-stream` creates -[0.8 streams](https://github.com/joyent/node/blob/v0.8/doc/api/stream.markdown) -, which are compatible with [0.10 streams](http://nodejs.org/api/stream.html "Stream") - ->NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable. - -###[simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): - -``` js - -//pretty.js - -if(!module.parent) { - var es = require('event-stream') - var inspect = require('util').inspect - - process.stdin //connect streams together with `pipe` - .pipe(es.split()) //split stream to break on newlines - .pipe(es.map(function (data, cb) { //turn this async function into a stream - cb(null - , inspect(JSON.parse(data))) //render it nicely - })) - .pipe(process.stdout) // pipe it to stdout ! -} -``` -run it ... - -``` bash -curl -sS registry.npmjs.org/event-stream | node pretty.js -``` - -[node Stream documentation](http://nodejs.org/api/stream.html) - -## through (write?, end?) - -Re-emits data synchronously. Easy way to create synchronous through streams. -Pass in optional `write` and `end` methods. They will be called in the -context of the stream. Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the synchronous streams in `event-stream`. - -``` js - -es.through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -##map (asyncFunction) - -Create a through stream from an asynchronous function. - -``` js -var es = require('event-stream') - -es.map(function (data, callback) { - //transform data - // ... - callback(null, data) -}) - -``` - -Each map MUST call the callback. It may callback with data, with an error or with no arguments, - - * `callback()` drop this data. - this makes the map work like `filter`, - note:`callback(null,null)` is not the same, and will emit `null` - - * `callback(null, newData)` turn data into newData - - * `callback(error)` emit an error for this item. - ->Note: if a callback is not called, `map` will think that it is still being processed, ->every call must be answered or the stream will not know when to end. -> ->Also, if the callback is called more than once, every call but the first will be ignored. - -## mapSync (syncFunction) - -Same as `map`, but the callback is called synchronously. Based on `es.through` - -## split (matcher) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js -fs.createReadStream(file, {flags: 'r'}) - .pipe(es.split()) - .pipe(es.map(function (line, cb) { - //do something with the line - cb(null, line) - })) -``` - -`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` parameter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -## join (separator) - -Create a through stream that emits `separator` between each chunk, just like Array#join. - -(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) - -## merge (stream1,...,streamN) -> concat → merge - -Merges streams into one and returns it. -Incoming data will be emitted as soon it comes into - no ordering will be applied (for example: `data1 data1 data2 data1 data2` - where `data1` and `data2` is data from two streams). -Counts how many streams was passed to it and emits end only when all streams emitted end. - -```js -es.merge( - process.stdout, - process.stderr -).pipe(fs.createWriteStream('output.log')); -``` - -## replace (from, to) - -Replace all occurrences of `from` with `to`. `from` may be a `String` or a `RegExp`. -Works just like `string.split(from).join(to)`, but streaming. - - -## parse - -Convenience function for parsing JSON chunks. For newline separated JSON, -use with `es.split` - -``` js -fs.createReadStream(filename) - .pipe(es.split()) //defaults to lines. - .pipe(es.parse()) -``` - -## stringify - -convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` - -``` js -objectStream - .pipe(es.stringify()) - .pipe(fs.createWriteStream(filename)) -``` - -##readable (asyncFunction) - -create a readable stream (that respects pause) from an async function. -while the stream is not paused, -the function will be polled with `(count, callback)`, -and `this` will be the readable stream. - -``` js - -es.readable(function (count, callback) { - if(streamHasEnded) - return this.emit('end') - - //... - - this.emit('data', data) //use this way to emit multiple chunks per call. - - callback() // you MUST always call the callback eventually. - // the function will not be called again until you do this. -}) -``` -you can also pass the data and the error to the callback. -you may only call the callback once. -calling the same callback more than once will have no effect. - -##readArray (array) - -Create a readable stream from an Array. - -Just emit each item as a data event, respecting `pause` and `resume`. - -``` js - var es = require('event-stream') - , reader = es.readArray([1,2,3]) - - reader.pipe(...) -``` - -## writeArray (callback) - -create a writeable stream from a callback, -all `data` events are stored in an array, which is passed to the callback when the stream ends. - -``` js - var es = require('event-stream') - , reader = es.readArray([1, 2, 3]) - , writer = es.writeArray(function (err, array){ - //array deepEqual [1, 2, 3] - }) - - reader.pipe(writer) -``` - -## pause () - -A stream that buffers all chunks when paused. - - -``` js - var ps = es.pause() - ps.pause() //buffer the stream, also do not allow 'end' - ps.resume() //allow chunks through -``` - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -(This is used by `pipeline` and `child`.) - -``` js - var grep = cp.exec('grep Stream') - - es.duplex(grep.stdin, grep.stdout) -``` - -## child (child_process) - -Create a through stream from a child process ... - -``` js - var cp = require('child_process') - - es.child(cp.exec('grep Stream')) // a through stream - -``` - -## wait (callback) - -waits for stream to emit 'end'. -joins chunks of a stream into a single string. -takes an optional callback, which will be passed the -complete string when it receives the 'end' event. - -also, emits a single 'data' event. - -``` js - -readStream.pipe(es.wait(function (err, text) { - // have complete text here. -})) - -``` - -# Other Stream Modules - -These modules are not included as a part of *EventStream* but may be -useful when working with streams. - -## [reduce (syncFunction, initial)](https://github.com/parshap/node-stream-reduce) - -Like `Array.prototype.reduce` but for streams. Given a sync reduce -function and an initial value it will return a through stream that emits -a single data event with the reduced value once the input stream ends. - -``` js -var reduce = require("stream-reduce"); -process.stdin.pipe(reduce(function(acc, data) { - return acc + data.length; -}, 0)).on("data", function(length) { - console.log("stdin size:", length); -}); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/connect.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/connect.asynct.js deleted file mode 100644 index e6a442bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/connect.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function makeExamplePipe() { - - return es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - d.delay(callback)(null, data) - }), - es.map(function (data, callback) { - callback(null, data + 2) - })) -} - -exports['simple pipe'] = function (test) { - - var pipe = makeExamplePipe() - - pipe.on('data', function (data) { - it(data).equal(18) - test.done() - }) - - pipe.write(8) - -} - -exports['read array then map'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - , first = es.readArray(readThis) - , read = [] - , pipe = - es.connect( - first, - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.writeArray(function (err, array) { - it(array).deepEqual(d.map(readThis, function (data) { - return {data: {data: data}} - })) - test.done() - }) - ) -} - -exports ['connect returns a stream'] = function (test) { - - var rw = - es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - callback(null, data * 5) - }) - ) - - it(rw).has({readable: true, writable: true}) - - var array = [190, 24, 6, 7, 40, 57, 4, 6] - , _array = [] - , c = - es.connect( - es.readArray(array), - rw, - es.log('after rw:'), - es.writeArray(function (err, _array) { - it(_array).deepEqual(array.map(function (e) { return e * 10 })) - test.done() - }) - ) - -} - - -require('./helper')(module) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/helper/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/helper/index.js deleted file mode 100644 index 96abaebe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/helper/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var tape = require('tape') - -module.exports = function (m) { - if(m.parent) return - for(var name in m.exports) { - tape(name, function (t) { - console.log('start', name) - t.done = t.end - m.exports[name](t) - }) - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/merge.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/merge.asynct.js deleted file mode 100644 index 6ac65f32..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/merge.asynct.js +++ /dev/null @@ -1,21 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports.merge = function (t) { - var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 - var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 - - var r1 = es.readArray(even) - var r2 = es.readArray(odd) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - t.done() - }) - - es.merge(r1, r2).pipe(writer) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pause.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pause.asynct.js deleted file mode 100644 index b0736040..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pause.asynct.js +++ /dev/null @@ -1,39 +0,0 @@ - -var es = require('../') - , it = require('it-is') - , d = require('ubelt') - -exports ['gate buffers when shut'] = function (test) { - - var hundy = d.map(1,100, d.id) - , gate = es.pause() - , ten = 10 - es.connect( - es.readArray(hundy), - es.log('after readArray'), - gate, - //es.log('after gate'), - es.map(function (num, next) { - //stick a map in here to check that gate never emits when open - it(gate.paused).equal(false) - console.log('data', num) - if(!--ten) { - console.log('PAUSE') - gate.pause()//.resume() - d.delay(gate.resume.bind(gate), 10)() - ten = 10 - } - - next(null, num) - }), - es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted - console.log('eonuhoenuoecbulc') - it(array).deepEqual(hundy) - test.done() - }) - ) - - gate.resume() - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pipeline.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pipeline.asynct.js deleted file mode 100644 index f07c6fa5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/pipeline.asynct.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('..') - -exports['do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -exports['3 pipe do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readArray.asynct.js deleted file mode 100644 index 3eeb90a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readArray.asynct.js +++ /dev/null @@ -1,89 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function readStream(stream, pauseAt, done) { - if(!done) done = pauseAt, pauseAt = -1 - var array = [] - stream.on('data', function (data) { - array.push(data) - if(!--pauseAt ) - stream.pause(), done(null, array) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -exports ['read an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array and pause it.'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - readStream(reader, 10, function (err, data) { - if(err) throw err - it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) - readStream(reader, 10, function (err, data) { - it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) - test.done() - }) - reader.resume() - }) - -} - -exports ['reader is readable, but not writeable'] = function (test) { - var reader = es.readArray([1]) - it(reader).has({ - readable: true, - writable: false - }) - - test.done() -} - - -exports ['read one item per tick'] = function (test) { - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - var drains = 0 - var reader = es.readArray(readThis) - var tickMapper = es.map(function (data,callback) { - process.nextTick(function () { - callback(null, data) - }) - //since tickMapper is returning false - //pipe should pause the writer until a drain occurs - return false - }) - reader.pipe(tickMapper) - readStream(tickMapper, function (err, array) { - it(array).deepEqual(readThis) - it(array.length).deepEqual(readThis.length) - it(drains).equal(readThis.length) - test.done() - }) - tickMapper.on('drain', function () { - drains ++ - }) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readable.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readable.asynct.js deleted file mode 100644 index 6ea2fdbf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/readable.asynct.js +++ /dev/null @@ -1,197 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , u = require('ubelt') - -exports ['read an array'] = function (test) { - - - console.log('readable') - return test.end() - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - console.log('readable') - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - console.log('readable') - callback(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array - async'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - u.delay(callback)(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['emit data then call next() also works'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, next) { - if(i >= readThis.length) - return this.emit('end') - this.emit('data', readThis[i]) - next() - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['callback emits error, then stops'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , called = 0 - - var reader = - es.readable(function (i, callback) { - if(called++) - return - callback(err) - }) - - reader.on('error', function (_err){ - it(_err).deepEqual(err) - u.delay(function() { - it(called).equal(1) - test.done() - }, 50)() - }) -} - -exports['readable does not call read concurrently'] = function (test) { - - var current = 0 - var source = es.readable(function(count, cb){ - current ++ - if(count > 100) - return this.emit('end') - u.delay(function(){ - current -- - it(current).equal(0) - cb(null, {ok: true, n: count}); - })(); - }); - - var destination = es.map(function(data, cb){ - //console.info(data); - cb(); - }); - - var all = es.connect(source, destination); - - destination.on('end', test.done) -} - -exports ['does not raise a warning: Recursive process.nextTick detected'] = function (test) { - var readThisDelayed; - - u.delay(function () { - readThisDelayed = [1, 3, 5]; - })(); - - es.readable(function (count, callback) { - - if (readThisDelayed) { - var that = this; - readThisDelayed.forEach(function (item) { - that.emit('data', item); - }); - - this.emit('end'); - test.done(); - } - - callback(); - }); -}; - -// -// emitting multiple errors is not supported by stream. -// -// I do not think that this is a good idea, at least, there should be an option to pipe to -// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. -// an error might not necessarily mean the end of the stream. it depends on the error, at least. -// -// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. -// -// basically, I want to be able use pipe to transform objects, and if one object is invalid, -// the next might still be good, so I should get to choose if it's gonna stop. -// re-enstate this test when this issue progresses. -// -// hmm. I could add this to es.connect by deregistering the error listener, -// but I would rather it be an option in core. - -/* -exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { - - var readThis = d.map(1, 100, d.id) - , errors = 0 - var reader = - es.readable(function (i, callback) { - console.log(i, readThis.length) - if(i >= readThis.length) - return this.emit('end') - if(!(readThis[i] % 7)) - return callback(readThis[i]) - callback(null, readThis[i]) - }, true) - - var writer = es.writeArray(function (err, array) { - if(err) throw err - it(array).every(function (u){ - it(u % 7).notEqual(0) - }).property('length', 80) - it(errors).equal(14) - test.done() - }) - - reader.on('error', function (u) { - errors ++ - console.log(u) - if('number' !== typeof u) - throw u - - it(u % 7).equal(0) - - }) - - reader.pipe(writer) -} -*/ - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/replace.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/replace.asynct.js deleted file mode 100644 index 524a915b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/replace.asynct.js +++ /dev/null @@ -1,51 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , spec = require('stream-spec') - -var next = process.nextTick - -var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' - , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' - -exports ['fizz buzz'] = function (test) { - - var readThis = d.map(1, 100, function (i) { - return ( - ! (i % 3 || i % 5) ? "FB" : - !(i % 3) ? "F" : - !(i % 5) ? "B" : - ''+i - ) - }) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - var join = es.wait(function (err, string){ - it(string).equal(fizzbuzz) - test.done() - }) - reader.pipe(join) - -} - - -exports ['fizz buzz replace'] = function (test) { - var split = es.split(/(1)/) - var replace = es.replace('7', 'seven') -// var x = spec(replace).through() - split - .pipe(replace) - .pipe(es.join(function (err, string) { - it(string).equal(fizz7buzz) - })) - - replace.on('close', function () { -// x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/simple-map.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/simple-map.asynct.js deleted file mode 100644 index 25121f93..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/simple-map.asynct.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -var es = require('../') - , it = require('it-is') - , u = require('ubelt') - , spec = require('stream-spec') - , Stream = require('stream') - , from = require('from') - , through = require('through') - -//REFACTOR THIS TEST TO USE es.readArray and es.writeArray - -function writeArray(array, stream) { - - array.forEach( function (j) { - stream.write(j) - }) - stream.end() - -} - -function readStream(stream, done) { - - var array = [] - stream.on('data', function (data) { - array.push(data) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -//call sink on each write, -//and complete when finished. - -function pauseStream (prob, delay) { - var pauseIf = ( - 'number' == typeof prob - ? function () { - return Math.random() < prob - } - : 'function' == typeof prob - ? prob - : 0.1 - ) - var delayer = ( - !delay - ? process.nextTick - : 'number' == typeof delay - ? function (next) { setTimeout(next, delay) } - : delay - ) - - return es.through(function (data) { - if(!this.paused && pauseIf()) { - console.log('PAUSE STREAM PAUSING') - this.pause() - var self = this - delayer(function () { - console.log('PAUSE STREAM RESUMING') - self.resume() - }) - } - console.log("emit ('data', " + data + ')') - this.emit('data', data) - }) -} - -exports ['simple map'] = function (test) { - - var input = u.map(1, 1000, function () { - return Math.random() - }) - var expected = input.map(function (v) { - return v * 2 - }) - - var pause = pauseStream(0.1) - var fs = from(input) - var ts = es.writeArray(function (err, ar) { - it(ar).deepEqual(expected) - test.done() - }) - var map = es.through(function (data) { - this.emit('data', data * 2) - }) - - spec(map).through().validateOnExit() - spec(pause).through().validateOnExit() - - fs.pipe(map).pipe(pause).pipe(ts) -} - -exports ['simple map applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - - var doubler = es.map(function (data, cb) { - cb(null, data * 2) - }) - - spec(doubler).through().validateOnExit() - - //a map is only a middle man, so it is both readable and writable - - it(doubler).has({ - readable: true, - writable: true, - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) -// process.nextTick(x.validate) - test.done() - }) - - writeArray(input, doubler) - -} - -exports['pipe two maps together'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - function dd (data, cb) { - cb(null, data * 2) - } - var doubler1 = es.map(dd), doubler2 = es.map(dd) - - doubler1.pipe(doubler2) - - spec(doubler1).through().validateOnExit() - spec(doubler2).through().validateOnExit() - - readStream(doubler2, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 4 - })) - test.done() - }) - - writeArray(input, doubler1) - -} - -//next: -// -// test pause, resume and drian. -// - -// then make a pipe joiner: -// -// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) -// -// will return a single stream that write goes to the first - -exports ['map will not call end until the callback'] = function (test) { - - var ticker = es.map(function (data, cb) { - process.nextTick(function () { - cb(null, data * 2) - }) - }) - - spec(ticker).through().validateOnExit() - - ticker.write('x') - ticker.end() - - ticker.on('end', function () { - test.done() - }) -} - - -exports ['emit error thrown'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function () { - throw err - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - -// onExit(spec(mapper).basic().validate) -//need spec that says stream may error. - - mapper.write('hello') - -} - -exports ['emit error calledback'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function (data, callback) { - callback(err) - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['do not emit drain if not paused'] = function (test) { - - var map = es.map(function (data, callback) { - u.delay(callback)(null, 1) - return true - }) - - spec(map).through().pausable().validateOnExit() - - map.on('drain', function () { - it(false).ok('should not emit drain unless the stream is paused') - }) - - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - setTimeout(function () {map.end()},10) - map.on('end', test.done) -} - -exports ['emits drain if paused, when all '] = function (test) { - var active = 0 - var drained = false - var map = es.map(function (data, callback) { - active ++ - u.delay(function () { - active -- - callback(null, 1) - })() - console.log('WRITE', false) - return false - }) - - spec(map).through().validateOnExit() - - map.on('drain', function () { - drained = true - it(active).equal(0, 'should emit drain when all maps are done') - }) - - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - - process.nextTick(function () {map.end()},10) - - map.on('end', function () { - console.log('end') - it(drained).ok('shoud have emitted drain before end') - test.done() - }) - -} - -exports ['map applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.map(function (data, callback) { - if (data % 2) - callback(null, data * 2) - else - callback() - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['simple mapSync applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['mapSync applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - if (data % 2) - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/spec.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/spec.asynct.js deleted file mode 100644 index 6d5fb6b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/spec.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - assert that data is called many times - assert that end is called eventually - - assert that when stream enters pause state, - on drain is emitted eventually. -*/ - -var es = require('..') -var it = require('it-is').style('colour') -var spec = require('stream-spec') - -exports['simple stream'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.pause() - stream.write(1) - stream.resume() - stream.write(1) - stream.end(2) //this will call write() - - process.nextTick(function (){ - x.validate() - test.done() - }) -} - -exports['throw on write when !writable'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.end(2) //this will call write() - stream.write(1) //this will be throwing..., but the spec will catch it. - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - -exports['end fast'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.end() //this will call write() - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - - -/* - okay, that was easy enough, whats next? - - say, after you call paused(), write should return false - until resume is called. - - simple way to implement this: - write must return !paused - after pause() paused = true - after resume() paused = false - - on resume, if !paused drain is emitted again. - after drain, !paused - - there are lots of subtle ordering bugs in streams. - - example, set !paused before emitting drain. - - the stream api is stateful. -*/ - - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/split.asynct.js deleted file mode 100644 index 7d44bac0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/split.asynct.js +++ /dev/null @@ -1,47 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['es.split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = es.split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/stringify.js deleted file mode 100644 index d158185a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/stringify.js +++ /dev/null @@ -1,15 +0,0 @@ - - - -var es = require('../') - -exports['handle buffer'] = function (t) { - - - es.stringify().on('data', function (d) { - t.equal(d.trim(), JSON.stringify('HELLO')) - t.end() - }).write(new Buffer('HELLO')) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/writeArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/writeArray.asynct.js deleted file mode 100644 index 5d705de8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/event-stream/test/writeArray.asynct.js +++ /dev/null @@ -1,31 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports ['write an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - d.each(readThis, writer.write.bind(writer)) - writer.end() - -} - - -exports ['writer is writable, but not readable'] = function (test) { - var reader = es.writeArray(function () {}) - it(reader).has({ - readable: false, - writable: true - }) - - test.done() -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.jscs.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.jscs.json deleted file mode 100644 index 496777b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.jscs.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "additionalRules": [], - - "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], - - "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], - - "disallowSpaceAfterKeywords": [], - - "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, - "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, - "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, - - "requireSpaceBetweenArguments": true, - - "disallowSpacesInsideParentheses": true, - - "disallowSpacesInsideArrayBrackets": true, - - "disallowQuotedKeysInObjects": "allButReserved", - - "disallowSpaceAfterObjectKeys": true, - - "requireCommaBeforeLineBreak": true, - - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], - "requireSpaceAfterPrefixUnaryOperators": [], - - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "requireSpaceBeforePostfixUnaryOperators": [], - - "disallowSpaceBeforeBinaryOperators": [], - "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - - "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - "disallowSpaceAfterBinaryOperators": [], - - "disallowImplicitTypeConversion": ["binary", "string"], - - "disallowKeywords": ["with", "eval"], - - "requireKeywordsOnNewLine": [], - "disallowKeywordsOnNewLine": ["else"], - - "requireLineFeedAtFileEnd": true, - - "disallowTrailingWhitespace": true, - - "disallowTrailingComma": true, - - "excludeFiles": ["node_modules/**", "vendor/**"], - - "disallowMultipleLineStrings": true, - - "requireDotNotation": true, - - "requireParenthesesAroundIIFE": true, - - "validateLineBreaks": "LF", - - "validateQuoteMarks": { - "escape": true, - "mark": "'" - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.npmignore deleted file mode 100644 index 30d74d25..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.travis.yml deleted file mode 100644 index e6f69e8d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/.travis.yml +++ /dev/null @@ -1,36 +0,0 @@ -language: node_js -node_js: - - "iojs-v1.8" - - "iojs-v1.7" - - "iojs-v1.6" - - "iojs-v1.5" - - "iojs-v1.4" - - "iojs-v1.3" - - "iojs-v1.2" - - "iojs-v1.1" - - "iojs-v1.0" - - "0.12" - - "0.11" - - "0.10" - - "0.9" - - "0.8" - - "0.6" - - "0.4" -before_install: - - '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6' -matrix: - fast_finish: true - allow_failures: - - node_js: "iojs-v1.6" - - node_js: "iojs-v1.5" - - node_js: "iojs-v1.4" - - node_js: "iojs-v1.3" - - node_js: "iojs-v1.2" - - node_js: "iojs-v1.1" - - node_js: "iojs-v1.0" - - node_js: "0.11" - - node_js: "0.9" - - node_js: "0.8" - - node_js: "0.6" - - node_js: "0.4" -sudo: false diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/CHANGELOG.md deleted file mode 100644 index 6f7b56d6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/CHANGELOG.md +++ /dev/null @@ -1,61 +0,0 @@ -2.0.1 / 2015-04-25 -================== - * Use an inline `isArray` check, for ES3 browsers. (#27) - * Some old browsers fail when an identifier is `toString` - * Test latest `node` and `io.js` versions on `travis-ci`; speed up builds - * Add license info to package.json (#25) - * Update `tape`, `jscs` - * Adding a CHANGELOG - -2.0.0 / 2014-10-01 -================== - * Increase code coverage to 100%; run code coverage as part of tests - * Add `npm run lint`; Run linter as part of tests - * Remove nodeType and setInterval checks in isPlainObject - * Updating `tape`, `jscs`, `covert` - * General style and README cleanup - -1.3.0 / 2014-06-20 -================== - * Add component.json for browser support (#18) - * Use SVG for badges in README (#16) - * Updating `tape`, `covert` - * Updating travis-ci to work with multiple node versions - * Fix `deep === false` bug (returning target as {}) (#14) - * Fixing constructor checks in isPlainObject - * Adding additional test coverage - * Adding `npm run coverage` - * Add LICENSE (#13) - * Adding a warning about `false`, per #11 - * General style and whitespace cleanup - -1.2.1 / 2013-09-14 -================== - * Fixing hasOwnProperty bugs that would only have shown up in specific browsers. Fixes #8 - * Updating `tape` - -1.2.0 / 2013-09-02 -================== - * Updating the README: add badges - * Adding a missing variable reference. - * Using `tape` instead of `buster` for tests; add more tests (#7) - * Adding node 0.10 to Travis CI (#6) - * Enabling "npm test" and cleaning up package.json (#5) - * Add Travis CI. - -1.1.3 / 2012-12-06 -================== - * Added unit tests. - * Ensure extend function is named. (Looks nicer in a stack trace.) - * README cleanup. - -1.1.1 / 2012-11-07 -================== - * README cleanup. - * Added installation instructions. - * Added a missing semicolon - -1.0.0 / 2012-04-08 -================== - * Initial commit - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/LICENSE deleted file mode 100644 index e16d6a56..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Stefan Thomas - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/README.md deleted file mode 100644 index 632fb0f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/README.md +++ /dev/null @@ -1,62 +0,0 @@ -[![Build Status][travis-svg]][travis-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] - -# extend() for Node.js [![Version Badge][npm-version-png]][npm-url] - -`node-extend` is a port of the classic extend() method from jQuery. It behaves as you expect. It is simple, tried and true. - -## Installation - -This package is available on [npm][npm-url] as: `extend` - -``` sh -npm install extend -``` - -## Usage - -**Syntax:** extend **(** [`deep`], `target`, `object1`, [`objectN`] **)** - -*Extend one object with one or more others, returning the modified object.* - -Keep in mind that the target object will be modified, and will be returned from extend(). - -If a boolean true is specified as the first argument, extend performs a deep copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). -Undefined properties are not copied. However, properties inherited from the object's prototype will be copied over. -Warning: passing `false` as the first argument is not supported. - -### Arguments - -* `deep` *Boolean* (optional) -If set, the merge becomes recursive (i.e. deep copy). -* `target` *Object* -The object to extend. -* `object1` *Object* -The object that will be merged into the first. -* `objectN` *Object* (Optional) -More objects to merge into the first. - -## License - -`node-extend` is licensed under the [MIT License][mit-license-url]. - -## Acknowledgements - -All credit to the jQuery authors for perfecting this amazing utility. - -Ported to Node.js by [Stefan Thomas][github-justmoon] with contributions by [Jonathan Buchanan][github-insin] and [Jordan Harband][github-ljharb]. - -[travis-svg]: https://travis-ci.org/justmoon/node-extend.svg -[travis-url]: https://travis-ci.org/justmoon/node-extend -[npm-url]: https://npmjs.org/package/extend -[mit-license-url]: http://opensource.org/licenses/MIT -[github-justmoon]: https://github.com/justmoon -[github-insin]: https://github.com/insin -[github-ljharb]: https://github.com/ljharb -[npm-version-png]: http://vb.teelaun.ch/justmoon/node-extend.svg -[deps-svg]: https://david-dm.org/justmoon/node-extend.svg -[deps-url]: https://david-dm.org/justmoon/node-extend -[dev-deps-svg]: https://david-dm.org/justmoon/node-extend/dev-status.svg -[dev-deps-url]: https://david-dm.org/justmoon/node-extend#info=devDependencies - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/component.json deleted file mode 100644 index bfb4518a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/component.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "extend", - "author": "Stefan Thomas (http://www.justmoon.net)", - "version": "2.0.1", - "description": "Port of jQuery.extend for node.js and the browser.", - "scripts": [ - "index.js" - ], - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "keywords": [ - "extend", - "clone", - "merge" - ], - "repository" : { - "type": "git", - "url": "https://github.com/justmoon/node-extend.git" - }, - "dependencies": { - }, - "devDependencies": { - "tape" : "~3.0.0", - "covert": "~0.4.0", - "jscs": "~1.6.2" - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/index.js deleted file mode 100644 index 57a8bcc1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/index.js +++ /dev/null @@ -1,89 +0,0 @@ -var hasOwn = Object.prototype.hasOwnProperty; -var toStr = Object.prototype.toString; -var undefined; - -var isArray = function isArray(arr) { - if (typeof Array.isArray === 'function') { - return Array.isArray(arr); - } - - return toStr.call(arr) === '[object Array]'; -}; - -var isPlainObject = function isPlainObject(obj) { - 'use strict'; - if (!obj || toStr.call(obj) !== '[object Object]') { - return false; - } - - var has_own_constructor = hasOwn.call(obj, 'constructor'); - var has_is_property_of_method = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); - // Not own constructor property must be Object - if (obj.constructor && !has_own_constructor && !has_is_property_of_method) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - var key; - for (key in obj) {} - - return key === undefined || hasOwn.call(obj, key); -}; - -module.exports = function extend() { - 'use strict'; - var options, name, src, copy, copyIsArray, clone, - target = arguments[0], - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) { - target = {}; - } - - for (; i < length; ++i) { - options = arguments[i]; - // Only deal with non-null/undefined values - if (options != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target === copy) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && isArray(src) ? src : []; - } else { - clone = src && isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/package.json deleted file mode 100644 index 87250de8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extend/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "extend@^2.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff" - ] - ], - "_from": "extend@>=2.0.1 <3.0.0", - "_id": "extend@2.0.1", - "_inCache": true, - "_installable": true, - "_location": "/extend", - "_nodeVersion": "1.8.1", - "_npmUser": { - "email": "ljharb@gmail.com", - "name": "ljharb" - }, - "_npmVersion": "2.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "extend", - "raw": "extend@^2.0.1", - "rawSpec": "^2.0.1", - "scope": null, - "spec": ">=2.0.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/liftoff", - "/request" - ], - "_resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz", - "_shasum": "1ee8010689e7395ff9448241c98652bc759a8260", - "_shrinkwrap": null, - "_spec": "extend@^2.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff", - "author": { - "email": "justmoon@members.fsf.org", - "name": "Stefan Thomas", - "url": "http://www.justmoon.net" - }, - "bugs": { - "url": "https://github.com/justmoon/node-extend/issues" - }, - "contributors": [ - { - "name": "Jordan Harband", - "url": "https://github.com/ljharb" - } - ], - "dependencies": {}, - "description": "Port of jQuery.extend for node.js and the browser", - "devDependencies": { - "covert": "^1.0.1", - "jscs": "^1.11.3", - "tape": "^4.0.0" - }, - "directories": {}, - "dist": { - "shasum": "1ee8010689e7395ff9448241c98652bc759a8260", - "tarball": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz" - }, - "gitHead": "ce3790222d3d2051f728f74be9565f155ed599c3", - "homepage": "https://github.com/justmoon/node-extend#readme", - "keywords": [ - "extend", - "clone", - "merge" - ], - "license": "MIT", - "main": "index", - "maintainers": [ - { - "email": "justmoon@members.fsf.org", - "name": "justmoon" - }, - { - "email": "ljharb@gmail.com", - "name": "ljharb" - } - ], - "name": "extend", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/justmoon/node-extend.git" - }, - "scripts": { - "coverage": "covert test/index.js", - "coverage-quiet": "covert test/index.js --quiet", - "lint": "jscs *.js */*.js", - "test": "npm run lint && node test/index.js && npm run coverage-quiet" - }, - "version": "2.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/.gitmodules b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/.gitmodules deleted file mode 100644 index 4e0f5e29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "deps/jsstyle"] - path = deps/jsstyle - url = git://github.com/davepacheco/jsstyle -[submodule "deps/javascriptlint"] - path = deps/javascriptlint - url = git://github.com/davepacheco/javascriptlint diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/LICENSE deleted file mode 100644 index cbc0bb3b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012, Joyent, Inc. All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile deleted file mode 100644 index 1deeb5fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# -# Copyright (c) 2012, Joyent, Inc. All rights reserved. -# -# Makefile: top-level Makefile -# -# This Makefile contains only repo-specific logic and uses included makefiles -# to supply common targets (javascriptlint, jsstyle, restdown, etc.), which are -# used by other repos as well. -# - -# -# Files -# -JS_FILES := $(shell find lib -name '*.js') -JSL_FILES_NODE = $(JS_FILES) -JSSTYLE_FILES = $(JS_FILES) -JSL_CONF_NODE = jsl.node.conf - -# Default target is "check" -check: - -include ./Makefile.deps -include ./Makefile.targ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.deps b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.deps deleted file mode 100644 index 2811bde1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.deps +++ /dev/null @@ -1,39 +0,0 @@ -# -*- mode: makefile -*- -# -# Copyright (c) 2012, Joyent, Inc. All rights reserved. -# -# Makefile.deps: Makefile for including common tools as dependencies -# -# NOTE: This makefile comes from the "eng" repo. It's designed to be dropped -# into other repos as-is without requiring any modifications. If you find -# yourself changing this file, you should instead update the original copy in -# eng.git and then update your repo to use the new version. -# -# This file is separate from Makefile.targ so that teams can choose -# independently whether to use the common targets in Makefile.targ and the -# common tools here. -# - -# -# javascriptlint -# -JSL_EXEC ?= deps/javascriptlint/build/install/jsl -JSL ?= python2.6 $(JSL_EXEC) - -$(JSL_EXEC): | deps/javascriptlint/.git - cd deps/javascriptlint && make install - -# -# jsstyle -# -JSSTYLE_EXEC ?= deps/jsstyle/jsstyle -JSSTYLE ?= $(JSSTYLE_EXEC) - -$(JSSTYLE_EXEC): | deps/jsstyle/.git - -# -# restdown -# -RESTDOWN_EXEC ?= deps/restdown/bin/restdown -RESTDOWN ?= python2.6 $(RESTDOWN_EXEC) -$(RESTDOWN_EXEC): | deps/restdown/.git diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.targ b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.targ deleted file mode 100644 index 2a64fe7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/Makefile.targ +++ /dev/null @@ -1,285 +0,0 @@ -# -*- mode: makefile -*- -# -# Copyright (c) 2012, Joyent, Inc. All rights reserved. -# -# Makefile.targ: common targets. -# -# NOTE: This makefile comes from the "eng" repo. It's designed to be dropped -# into other repos as-is without requiring any modifications. If you find -# yourself changing this file, you should instead update the original copy in -# eng.git and then update your repo to use the new version. -# -# This Makefile defines several useful targets and rules. You can use it by -# including it from a Makefile that specifies some of the variables below. -# -# Targets defined in this Makefile: -# -# check Checks JavaScript files for lint and style -# Checks bash scripts for syntax -# Checks SMF manifests for validity against the SMF DTD -# -# clean Removes built files -# -# docs Builds restdown documentation in docs/ -# -# prepush Depends on "check" and "test" -# -# test Does nothing (you should override this) -# -# xref Generates cscope (source cross-reference index) -# -# For details on what these targets are supposed to do, see the Joyent -# Engineering Guide. -# -# To make use of these targets, you'll need to set some of these variables. Any -# variables left unset will simply not be used. -# -# BASH_FILES Bash scripts to check for syntax -# (paths relative to top-level Makefile) -# -# CLEAN_FILES Files to remove as part of the "clean" target. Note -# that files generated by targets in this Makefile are -# automatically included in CLEAN_FILES. These include -# restdown-generated HTML and JSON files. -# -# DOC_FILES Restdown (documentation source) files. These are -# assumed to be contained in "docs/", and must NOT -# contain the "docs/" prefix. -# -# JSL_CONF_NODE Specify JavaScriptLint configuration files -# JSL_CONF_WEB (paths relative to top-level Makefile) -# -# Node.js and Web configuration files are separate -# because you'll usually want different global variable -# configurations. If no file is specified, none is given -# to jsl, which causes it to use a default configuration, -# which probably isn't what you want. -# -# JSL_FILES_NODE JavaScript files to check with Node config file. -# JSL_FILES_WEB JavaScript files to check with Web config file. -# -# You can also override these variables: -# -# BASH Path to bash (default: bash) -# -# CSCOPE_DIRS Directories to search for source files for the cscope -# index. (default: ".") -# -# JSL Path to JavaScriptLint (default: "jsl") -# -# JSL_FLAGS_NODE Additional flags to pass through to JSL -# JSL_FLAGS_WEB -# JSL_FLAGS -# -# JSSTYLE Path to jsstyle (default: jsstyle) -# -# JSSTYLE_FLAGS Additional flags to pass through to jsstyle -# - -# -# Defaults for the various tools we use. -# -BASH ?= bash -BASHSTYLE ?= tools/bashstyle -CP ?= cp -CSCOPE ?= cscope -CSCOPE_DIRS ?= . -JSL ?= jsl -JSSTYLE ?= jsstyle -MKDIR ?= mkdir -p -MV ?= mv -RESTDOWN_FLAGS ?= -RMTREE ?= rm -rf -JSL_FLAGS ?= --nologo --nosummary - -ifeq ($(shell uname -s),SunOS) - TAR ?= gtar -else - TAR ?= tar -endif - - -# -# Defaults for other fixed values. -# -BUILD = build -DISTCLEAN_FILES += $(BUILD) -DOC_BUILD = $(BUILD)/docs/public - -# -# Configure JSL_FLAGS_{NODE,WEB} based on JSL_CONF_{NODE,WEB}. -# -ifneq ($(origin JSL_CONF_NODE), undefined) - JSL_FLAGS_NODE += --conf=$(JSL_CONF_NODE) -endif - -ifneq ($(origin JSL_CONF_WEB), undefined) - JSL_FLAGS_WEB += --conf=$(JSL_CONF_WEB) -endif - -# -# Targets. For descriptions on what these are supposed to do, see the -# Joyent Engineering Guide. -# - -# -# Instruct make to keep around temporary files. We have rules below that -# automatically update git submodules as needed, but they employ a deps/*/.git -# temporary file. Without this directive, make tries to remove these .git -# directories after the build has completed. -# -.SECONDARY: $($(wildcard deps/*):%=%/.git) - -# -# This rule enables other rules that use files from a git submodule to have -# those files depend on deps/module/.git and have "make" automatically check -# out the submodule as needed. -# -deps/%/.git: - git submodule update --init deps/$* - -# -# These recipes make heavy use of dynamically-created phony targets. The parent -# Makefile defines a list of input files like BASH_FILES. We then say that each -# of these files depends on a fake target called filename.bashchk, and then we -# define a pattern rule for those targets that runs bash in check-syntax-only -# mode. This mechanism has the nice properties that if you specify zero files, -# the rule becomes a noop (unlike a single rule to check all bash files, which -# would invoke bash with zero files), and you can check individual files from -# the command line with "make filename.bashchk". -# -.PHONY: check-bash -check-bash: $(BASH_FILES:%=%.bashchk) $(BASH_FILES:%=%.bashstyle) - -%.bashchk: % - $(BASH) -n $^ - -%.bashstyle: % - $(BASHSTYLE) $^ - -.PHONY: check-jsl check-jsl-node check-jsl-web -check-jsl: check-jsl-node check-jsl-web - -check-jsl-node: $(JSL_FILES_NODE:%=%.jslnodechk) - -check-jsl-web: $(JSL_FILES_WEB:%=%.jslwebchk) - -%.jslnodechk: % $(JSL_EXEC) - $(JSL) $(JSL_FLAGS) $(JSL_FLAGS_NODE) $< - -%.jslwebchk: % $(JSL_EXEC) - $(JSL) $(JSL_FLAGS) $(JSL_FLAGS_WEB) $< - -.PHONY: check-jsstyle -check-jsstyle: $(JSSTYLE_FILES:%=%.jsstylechk) - -%.jsstylechk: % $(JSSTYLE_EXEC) - $(JSSTYLE) $(JSSTYLE_FLAGS) $< - -.PHONY: check -check: check-jsl check-jsstyle check-bash - @echo check ok - -.PHONY: clean -clean:: - -$(RMTREE) $(CLEAN_FILES) - -.PHONY: distclean -distclean:: clean - -$(RMTREE) $(DISTCLEAN_FILES) - -CSCOPE_FILES = cscope.in.out cscope.out cscope.po.out -CLEAN_FILES += $(CSCOPE_FILES) - -.PHONY: xref -xref: cscope.files - $(CSCOPE) -bqR - -.PHONY: cscope.files -cscope.files: - find $(CSCOPE_DIRS) -name '*.c' -o -name '*.h' -o -name '*.cc' \ - -o -name '*.js' -o -name '*.s' -o -name '*.cpp' > $@ - -# -# The "docs" target is complicated because we do several things here: -# -# (1) Use restdown to build HTML and JSON files from each of DOC_FILES. -# -# (2) Copy these files into $(DOC_BUILD) (build/docs/public), which -# functions as a complete copy of the documentation that could be -# mirrored or served over HTTP. -# -# (3) Then copy any directories and media from docs/media into -# $(DOC_BUILD)/media. This allows projects to include their own media, -# including files that will override same-named files provided by -# restdown. -# -# Step (3) is the surprisingly complex part: in order to do this, we need to -# identify the subdirectories in docs/media, recreate them in -# $(DOC_BUILD)/media, then do the same with the files. -# -DOC_MEDIA_DIRS := $(shell find docs/media -type d 2>/dev/null | grep -v "^docs/media$$") -DOC_MEDIA_DIRS := $(DOC_MEDIA_DIRS:docs/media/%=%) -DOC_MEDIA_DIRS_BUILD := $(DOC_MEDIA_DIRS:%=$(DOC_BUILD)/media/%) - -DOC_MEDIA_FILES := $(shell find docs/media -type f 2>/dev/null) -DOC_MEDIA_FILES := $(DOC_MEDIA_FILES:docs/media/%=%) -DOC_MEDIA_FILES_BUILD := $(DOC_MEDIA_FILES:%=$(DOC_BUILD)/media/%) - -# -# Like the other targets, "docs" just depends on the final files we want to -# create in $(DOC_BUILD), leveraging other targets and recipes to define how -# to get there. -# -.PHONY: docs -docs: \ - $(DOC_FILES:%.restdown=$(DOC_BUILD)/%.html) \ - $(DOC_FILES:%.restdown=$(DOC_BUILD)/%.json) \ - $(DOC_MEDIA_FILES_BUILD) - -# -# We keep the intermediate files so that the next build can see whether the -# files in DOC_BUILD are up to date. -# -.PRECIOUS: \ - $(DOC_FILES:%.restdown=docs/%.html) \ - $(DOC_FILES:%.restdown=docs/%json) - -# -# We do clean those intermediate files, as well as all of DOC_BUILD. -# -CLEAN_FILES += \ - $(DOC_BUILD) \ - $(DOC_FILES:%.restdown=docs/%.html) \ - $(DOC_FILES:%.restdown=docs/%.json) - -# -# Before installing the files, we must make sure the directories exist. The | -# syntax tells make that the dependency need only exist, not be up to date. -# Otherwise, it might try to rebuild spuriously because the directory itself -# appears out of date. -# -$(DOC_MEDIA_FILES_BUILD): | $(DOC_MEDIA_DIRS_BUILD) - -$(DOC_BUILD)/%: docs/% | $(DOC_BUILD) - $(CP) $< $@ - -docs/%.json docs/%.html: docs/%.restdown | $(DOC_BUILD) $(RESTDOWN_EXEC) - $(RESTDOWN) $(RESTDOWN_FLAGS) -m $(DOC_BUILD) $< - -$(DOC_BUILD): - $(MKDIR) $@ - -$(DOC_MEDIA_DIRS_BUILD): - $(MKDIR) $@ - -# -# The default "test" target does nothing. This should usually be overridden by -# the parent Makefile. It's included here so we can define "prepush" without -# requiring the repo to define "test". -# -.PHONY: test -test: - -.PHONY: prepush -prepush: check test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/README.md deleted file mode 100644 index 702e4e22..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# extsprintf: extended POSIX-style sprintf - -Stripped down version of s[n]printf(3c). We make a best effort to throw an -exception when given a format string we don't understand, rather than ignoring -it, so that we won't break existing programs if/when we go implement the rest -of this. - -This implementation currently supports specifying - -* field alignment ('-' flag), -* zero-pad ('0' flag) -* always show numeric sign ('+' flag), -* field width -* conversions for strings, decimal integers, and floats (numbers). -* argument size specifiers. These are all accepted but ignored, since - Javascript has no notion of the physical size of an argument. - -Everything else is currently unsupported, most notably: precision, unsigned -numbers, non-decimal numbers, and characters. - -Besides the usual POSIX conversions, this implementation supports: - -* `%j`: pretty-print a JSON object (using node's "inspect") -* `%r`: pretty-print an Error object - -# Example - -First, install it: - - # npm install extsprintf - -Now, use it: - - var mod_extsprintf = require('extsprintf'); - console.log(mod_extsprintf.sprintf('hello %25s', 'world')); - -outputs: - - hello world diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/examples/simple.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/examples/simple.js deleted file mode 100644 index 9f342f5b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/examples/simple.js +++ /dev/null @@ -1,2 +0,0 @@ -var mod_extsprintf = require('extsprintf'); -console.log(mod_extsprintf.sprintf('hello %25s', 'world')); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/jsl.node.conf b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/jsl.node.conf deleted file mode 100644 index 03f787ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/jsl.node.conf +++ /dev/null @@ -1,137 +0,0 @@ -# -# Configuration File for JavaScript Lint -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+anon_no_return_value # anonymous function does not always return value -+assign_to_function_call # assignment to a function call --block_without_braces # block statement without curly braces -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) -+default_not_at_end # the default case is not at the end of the switch statement -+dup_option_explicit # duplicate "option explicit" control comment -+duplicate_case_in_switch # duplicate case in switch statement -+duplicate_formal # duplicate formal argument {name} -+empty_statement # empty statement or extra semicolon -+identifier_hides_another # identifer {name} hides an identifier in a parent scope --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+incorrect_version # Expected /*jsl:content-type*/ control comment. The script was parsed with the wrong version. -+invalid_fallthru # unexpected "fallthru" control comment -+invalid_pass # unexpected "pass" control comment -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+leading_decimal_point # leading decimal point may indicate a number or an object member -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+meaningless_block # meaningless block; curly braces have no impact -+mismatch_ctrl_comments # mismatched control comment; "ignore" and "end" control comments must have a one-to-one correspondence -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+missing_default_case # missing default case in switch statement -+missing_option_explicit # the "option explicit" control comment is missing -+missing_semicolon # missing semicolon -+missing_semicolon_for_lambda # missing semicolon for lambda assignment -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+nested_comment # nested comment -+no_return_value # function {name} does not always return a value -+octal_number # leading zeros make an octal number -+parseint_missing_radix # parseInt missing radix parameter -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+redeclared_var # redeclaration of {name} -+trailing_comma_in_array # extra comma is not recommended in array initializers -+trailing_decimal_point # trailing decimal point may indicate a number or an object member -+undeclared_identifier # undeclared identifier: {name} -+unreachable_code # unreachable code --unreferenced_argument # argument declared but never referenced: {name} --unreferenced_function # function is declared but never referenced: {name} -+unreferenced_variable # variable is declared but never referenced: {name} -+unsupported_version # JavaScript {version} is not supported -+use_of_label # use of label -+useless_assign # useless assignment -+useless_comparison # useless comparison; comparing identical expressions --useless_quotes # the quotation marks are unnecessary -+useless_void # use of the void type may be unnecessary (void is always undefined) -+var_hides_arg # variable {name} hides argument -+want_assign_or_call # expected an assignment or function call -+with_statement # with statement hides undeclared variables; use temporary variable instead - - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __COL__ indicates current column -# __ERROR__ indicates error message (__ERROR_PREFIX__: __ERROR_MSG__) -# __ERROR_NAME__ indicates error name (used in configuration file) -# __ERROR_PREFIX__ indicates error prefix -# __ERROR_MSG__ indicates error message -# -# For machine-friendly output, the output format can be prefixed with -# "encode:". If specified, all items will be encoded with C-slashes. -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# --legacy_control_comments - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -+define __dirname -+define clearInterval -+define clearTimeout -+define console -+define exports -+define global -+define process -+define require -+define setInterval -+define setTimeout -+define Buffer -+define JSON -+define Math - -### JavaScript Version -# To change the default JavaScript version: -#+default-type text/javascript;version=1.5 -#+default-type text/javascript;e4x=1 - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/lib/extsprintf.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/lib/extsprintf.js deleted file mode 100644 index 61ff891d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/lib/extsprintf.js +++ /dev/null @@ -1,166 +0,0 @@ -/* - * extsprintf.js: extended POSIX-style sprintf - */ - -var mod_assert = require('assert'); -var mod_util = require('util'); - -/* - * Public interface - */ -exports.sprintf = jsSprintf; - -/* - * Stripped down version of s[n]printf(3c). We make a best effort to throw an - * exception when given a format string we don't understand, rather than - * ignoring it, so that we won't break existing programs if/when we go implement - * the rest of this. - * - * This implementation currently supports specifying - * - field alignment ('-' flag), - * - zero-pad ('0' flag) - * - always show numeric sign ('+' flag), - * - field width - * - conversions for strings, decimal integers, and floats (numbers). - * - argument size specifiers. These are all accepted but ignored, since - * Javascript has no notion of the physical size of an argument. - * - * Everything else is currently unsupported, most notably precision, unsigned - * numbers, non-decimal numbers, and characters. - */ -function jsSprintf(fmt) -{ - var regex = [ - '([^%]*)', /* normal text */ - '%', /* start of format */ - '([\'\\-+ #0]*?)', /* flags (optional) */ - '([1-9]\\d*)?', /* width (optional) */ - '(\\.([1-9]\\d*))?', /* precision (optional) */ - '[lhjztL]*?', /* length mods (ignored) */ - '([diouxXfFeEgGaAcCsSp%jr])' /* conversion */ - ].join(''); - - var re = new RegExp(regex); - var args = Array.prototype.slice.call(arguments, 1); - var flags, width, precision, conversion; - var left, pad, sign, arg, match; - var ret = ''; - var argn = 1; - - mod_assert.equal('string', typeof (fmt)); - - while ((match = re.exec(fmt)) !== null) { - ret += match[1]; - fmt = fmt.substring(match[0].length); - - flags = match[2] || ''; - width = match[3] || 0; - precision = match[4] || ''; - conversion = match[6]; - left = false; - sign = false; - pad = ' '; - - if (conversion == '%') { - ret += '%'; - continue; - } - - if (args.length === 0) - throw (new Error('too few args to sprintf')); - - arg = args.shift(); - argn++; - - if (flags.match(/[\' #]/)) - throw (new Error( - 'unsupported flags: ' + flags)); - - if (precision.length > 0) - throw (new Error( - 'non-zero precision not supported')); - - if (flags.match(/-/)) - left = true; - - if (flags.match(/0/)) - pad = '0'; - - if (flags.match(/\+/)) - sign = true; - - switch (conversion) { - case 's': - if (arg === undefined || arg === null) - throw (new Error('argument ' + argn + - ': attempted to print undefined or null ' + - 'as a string')); - ret += doPad(pad, width, left, arg.toString()); - break; - - case 'd': - arg = Math.floor(arg); - /*jsl:fallthru*/ - case 'f': - sign = sign && arg > 0 ? '+' : ''; - ret += sign + doPad(pad, width, left, - arg.toString()); - break; - - case 'j': /* non-standard */ - if (width === 0) - width = 10; - ret += mod_util.inspect(arg, false, width); - break; - - case 'r': /* non-standard */ - ret += dumpException(arg); - break; - - default: - throw (new Error('unsupported conversion: ' + - conversion)); - } - } - - ret += fmt; - return (ret); -} - -function doPad(chr, width, left, str) -{ - var ret = str; - - while (ret.length < width) { - if (left) - ret += chr; - else - ret = chr + ret; - } - - return (ret); -} - -/* - * This function dumps long stack traces for exceptions having a cause() method. - * See node-verror for an example. - */ -function dumpException(ex) -{ - var ret; - - if (!(ex instanceof Error)) - throw (new Error(jsSprintf('invalid type for %%r: %j', ex))); - - /* Note that V8 prepends "ex.stack" with ex.toString(). */ - ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack; - - if (ex.cause && typeof (ex.cause) === 'function') { - var cex = ex.cause(); - if (cex) { - ret += '\nCaused by: ' + dumpException(cex); - } - } - - return (ret); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/package.json deleted file mode 100644 index a81ace33..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/extsprintf/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_args": [ - [ - "extsprintf@1.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim" - ] - ], - "_from": "extsprintf@1.0.2", - "_id": "extsprintf@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/extsprintf", - "_npmUser": { - "email": "dap@cs.brown.edu", - "name": "dap" - }, - "_npmVersion": "1.1.65", - "_phantomChildren": {}, - "_requested": { - "name": "extsprintf", - "raw": "extsprintf@1.0.2", - "rawSpec": "1.0.2", - "scope": null, - "spec": "1.0.2", - "type": "version" - }, - "_requiredBy": [ - "/jsprim", - "/verror" - ], - "_resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "_shasum": "e1080e0658e300b06294990cc70e1502235fd550", - "_shrinkwrap": null, - "_spec": "extsprintf@1.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim", - "bugs": { - "url": "https://github.com/davepacheco/node-extsprintf/issues" - }, - "dependencies": {}, - "description": "extended POSIX-style sprintf", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "e1080e0658e300b06294990cc70e1502235fd550", - "tarball": "http://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" - }, - "engines": [ - "node >=0.6.0" - ], - "homepage": "https://github.com/davepacheco/node-extsprintf#readme", - "main": "./lib/extsprintf.js", - "maintainers": [ - { - "email": "dap@cs.brown.edu", - "name": "dap" - } - ], - "name": "extsprintf", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/davepacheco/node-extsprintf.git" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/LICENSE deleted file mode 100644 index 0dd44fbd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Blaine Bublitz -Based on gulp-util, copyright 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/README.md deleted file mode 100644 index f3d227d0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# fancy-log - -[![Travis Build Status](https://img.shields.io/travis/js-cli/fancy-log.svg?branch=master&label=travis&style=flat-square)](https://travis-ci.org/js-cli/fancy-log) - -Log things, prefixed with a timestamp - -__This module was pulled out of gulp-util for use inside the CLI__ - -## Usage - -```js -var log = require('fancy-log'); - -log('a message'); -// [16:27:02] a message - -log.error('oh no!'); -// [16:27:02] oh no! -``` - -## API - -### `log(msg...)` - -Logs the message as if you called `console.log` but prefixes the output with the -current time in HH:MM:ss format. - -### `log.error(msg...)` - -Logs ths message as if you called `console.error` but prefixes the output with the -current time in HH:MM:ss format. - -## License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/index.js deleted file mode 100644 index a9d97226..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/index.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -/* - Initial code from https://github.com/gulpjs/gulp-util/blob/v3.0.6/lib/log.js - */ -var chalk = require('chalk'); -var timestamp = require('time-stamp'); - -function getTimestamp(){ - return '['+chalk.grey(timestamp('HH:mm:ss'))+']'; -} - -function log(){ - var time = getTimestamp(); - process.stdout.write(time + ' '); - console.log.apply(console, arguments); - return this; -} - -function error(){ - var time = getTimestamp(); - process.stderr.write(time + ' '); - console.error.apply(console, arguments); - return this; -} - -module.exports = log; -module.exports.error = error; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/package.json deleted file mode 100644 index c5f74988..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fancy-log/package.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "_args": [ - [ - "fancy-log@^1.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "fancy-log@>=1.1.0 <2.0.0", - "_id": "fancy-log@1.2.0", - "_inCache": true, - "_installable": true, - "_location": "/fancy-log", - "_nodeVersion": "0.10.41", - "_npmOperationalInternal": { - "host": "packages-5-east.internal.npmjs.com", - "tmp": "tmp/fancy-log-1.2.0.tgz_1455044959547_0.6881773378700018" - }, - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.14.14", - "_phantomChildren": {}, - "_requested": { - "name": "fancy-log", - "raw": "fancy-log@^1.1.0", - "rawSpec": "^1.1.0", - "scope": null, - "spec": ">=1.1.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz", - "_shasum": "d5a51b53e9ab22ca07d558f2b67ae55fdb5fcbd8", - "_shrinkwrap": null, - "_spec": "fancy-log@^1.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://iceddev.com" - }, - "bugs": { - "url": "https://github.com/phated/fancy-log/issues" - }, - "contributors": [], - "dependencies": { - "chalk": "^1.1.1", - "time-stamp": "^1.0.0" - }, - "description": "Log things, prefixed with a timestamp", - "devDependencies": { - "@phated/eslint-config-iceddev": "^0.2.1", - "code": "^1.5.0", - "eslint": "^1.3.1", - "eslint-plugin-mocha": "^0.5.1", - "eslint-plugin-react": "^3.3.1", - "lab": "^5.16.0" - }, - "directories": {}, - "dist": { - "shasum": "d5a51b53e9ab22ca07d558f2b67ae55fdb5fcbd8", - "tarball": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.2.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "LICENSE", - "index.js" - ], - "gitHead": "349e046ea78834c5659beafd9a7c364ebd0ed221", - "homepage": "https://github.com/phated/fancy-log#readme", - "keywords": [ - "console.log", - "log", - "logger", - "logging", - "pretty", - "timestamp" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "fancy-log", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/phated/fancy-log.git" - }, - "scripts": { - "test": "lab -cvL test.js" - }, - "version": "1.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.npmignore deleted file mode 100644 index ccc29308..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -/coverage -/node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.travis.yml deleted file mode 100644 index 77b72028..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - "0.10" -script: - - "npm run test-travis" -after_script: - - "npm install coveralls@2 && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/CHANGELOG.md deleted file mode 100644 index 783042f8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/CHANGELOG.md +++ /dev/null @@ -1,49 +0,0 @@ -### 1.0.1 - - * use `setImmediate` instead of `nextTick` - -### 1.0.0 - - * `new FdSlicer(fd, options)` must now be `fdSlicer.createFromFd(fd, options)` - * fix behavior when `end` is 0. - * fix `createWriteStream` when using `createFromBuffer` - -### 0.4.0 - - * add ability to create an FdSlicer instance from a Buffer - -### 0.3.2 - - * fix write stream and read stream destroy behavior - -### 0.3.1 - - * write stream: fix end option behavior - -### 0.3.0 - - * write stream emits 'progress' events - * write stream supports 'end' option which causes the stream to emit an error - if a maximum size is exceeded - * improve documentation - -### 0.2.1 - - * Update pend dependency to latest bugfix version. - -### 0.2.0 - - * Add read and write functions - -### 0.1.0 - - * Add `autoClose` option and `ref()` and `unref()`. - -### 0.0.2 - - * Add API documentation - * read stream: create buffer at last possible moment - -### 0.0.1 - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/LICENSE deleted file mode 100644 index e57596d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2014 Andrew Kelley - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/README.md deleted file mode 100644 index 5787c1ad..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/README.md +++ /dev/null @@ -1,189 +0,0 @@ -# fd-slicer - -[![Build Status](https://travis-ci.org/andrewrk/node-fd-slicer.svg?branch=master)](https://travis-ci.org/andrewrk/node-fd-slicer) -[![Coverage Status](https://img.shields.io/coveralls/andrewrk/node-fd-slicer.svg)](https://coveralls.io/r/andrewrk/node-fd-slicer) - -Safe `fs.ReadStream` and `fs.WriteStream` using the same fd. - -Let's say that you want to perform a parallel upload of a file to a remote -server. To do this, we want to create multiple read streams. The first thing -you might think of is to use the `{start: 0, end: 0}` API of -`fs.createReadStream`. This gives you two choices: - - 0. Use the same file descriptor for all `fs.ReadStream` objects. - 0. Open the file multiple times, resulting in a separate file descriptor - for each read stream. - -Neither of these are acceptable options. The first one is a severe bug, -because the API docs for `fs.write` state: - -> Note that it is unsafe to use `fs.write` multiple times on the same file -> without waiting for the callback. For this scenario, `fs.createWriteStream` -> is strongly recommended. - -`fs.createWriteStream` will solve the problem if you only create one of them -for the file descriptor, but it will exhibit this unsafety if you create -multiple write streams per file descriptor. - -The second option suffers from a race condition. For each additional time the -file is opened after the first, it is possible that the file is modified. So -in our parallel uploading example, we might upload a corrupt file that never -existed on the client's computer. - -This module solves this problem by providing `createReadStream` and -`createWriteStream` that operate on a shared file descriptor and provides -the convenient stream API while still allowing slicing and dicing. - -This module also gives you some additional power that the builtin -`fs.createWriteStream` do not give you. These features are: - - * Emitting a 'progress' event on write. - * Ability to set a maximum size and emit an error if this size is exceeded. - * Ability to create an `FdSlicer` instance from a `Buffer`. This enables you - to provide API for handling files as well as buffers using the same API. - -## Usage - -```js -var fdSlicer = require('fd-slicer'); -var fs = require('fs'); - -fs.open("file.txt", 'r', function(err, fd) { - if (err) throw err; - var slicer = fdSlicer.createFromFd(fd); - var firstPart = slicer.createReadStream({start: 0, end: 100}); - var secondPart = slicer.createReadStream({start: 100}); - var firstOut = fs.createWriteStream("first.txt"); - var secondOut = fs.createWriteStream("second.txt"); - firstPart.pipe(firstOut); - secondPart.pipe(secondOut); -}); -``` - -You can also create from a buffer: - -```js -var fdSlicer = require('fd-slicer'); -var slicer = FdSlicer.createFromBuffer(someBuffer); -var firstPart = slicer.createReadStream({start: 0, end: 100}); -var secondPart = slicer.createReadStream({start: 100}); -var firstOut = fs.createWriteStream("first.txt"); -var secondOut = fs.createWriteStream("second.txt"); -firstPart.pipe(firstOut); -secondPart.pipe(secondOut); -``` - -## API Documentation - -### fdSlicer.createFromFd(fd, [options]) - -```js -var fdSlicer = require('fd-slicer'); -fs.open("file.txt", 'r', function(err, fd) { - if (err) throw err; - var slicer = fdSlicer.createFromFd(fd); - // ... -}); -``` - -Make sure `fd` is a properly initialized file descriptor. If you want to -use `createReadStream` make sure you open it for reading and if you want -to use `createWriteStream` make sure you open it for writing. - -`options` is an optional object which can contain: - - * `autoClose` - if set to `true`, the file descriptor will be automatically - closed once the last stream that references it is closed. Defaults to - `false`. `ref()` and `unref()` can be used to increase or decrease the - reference count, respectively. - -### fdSlicer.createFromBuffer(buffer) - -```js -var fdSlicer = require('fd-slicer'); -var slicer = fdSlicer.createFromBuffer(someBuffer); -// ... -``` - -#### Properties - -##### fd - -The file descriptor passed in. `undefined` if created from a buffer. - -#### Methods - -##### createReadStream(options) - -Available `options`: - - * `start` - Number. The offset into the file to start reading from. Defaults - to 0. - * `end` - Number. Exclusive upper bound offset into the file to stop reading - from. - * `highWaterMark` - Number. The maximum number of bytes to store in the - internal buffer before ceasing to read from the underlying resource. - Defaults to 16 KB. - * `encoding` - String. If specified, then buffers will be decoded to strings - using the specified encoding. Defaults to `null`. - -The ReadableStream that this returns has these additional methods: - - * `destroy(err)` - stop streaming. `err` is optional and is the error that - will be emitted in order to cause the streaming to stop. Defaults to - `new Error("stream destroyed")`. - -##### createWriteStream(options) - -Available `options`: - - * `start` - Number. The offset into the file to start writing to. Defaults to - 0. - * `end` - Number. Exclusive upper bound offset into the file. If this offset - is reached, the write stream will emit an 'error' event and stop functioning. - In this situation, `err.code === 'ETOOBIG'`. Defaults to `Infinity`. - * `highWaterMark` - Number. Buffer level when `write()` starts returning - false. Defaults to 16KB. - * `decodeStrings` - Boolean. Whether or not to decode strings into Buffers - before passing them to` _write()`. Defaults to `true`. - -The WritableStream that this returns has these additional methods: - - * `destroy()` - stop streaming - -And these additional properties: - - * `bytesWritten` - number of bytes written to the stream - -And these additional events: - - * 'progress' - emitted when `bytesWritten` changes. - -##### read(buffer, offset, length, position, callback) - -Equivalent to `fs.read`, but with concurrency protection. -`callback` must be defined. - -##### write(buffer, offset, length, position, callback) - -Equivalent to `fs.write`, but with concurrency protection. -`callback` must be defined. - -##### ref() - -Increase the `autoClose` reference count by 1. - -##### unref() - -Decrease the `autoClose` reference count by 1. - -#### Events - -##### 'error' - -Emitted if `fs.close` returns an error when auto closing. - -##### 'close' - -Emitted when fd-slicer closes the file descriptor due to `autoClose`. Never -emitted if created from a buffer. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/index.js deleted file mode 100644 index 140e0038..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/index.js +++ /dev/null @@ -1,277 +0,0 @@ -var fs = require('fs'); -var util = require('util'); -var stream = require('stream'); -var Readable = stream.Readable; -var Writable = stream.Writable; -var PassThrough = stream.PassThrough; -var Pend = require('pend'); -var EventEmitter = require('events').EventEmitter; - -exports.createFromBuffer = createFromBuffer; -exports.createFromFd = createFromFd; -exports.BufferSlicer = BufferSlicer; -exports.FdSlicer = FdSlicer; - -util.inherits(FdSlicer, EventEmitter); -function FdSlicer(fd, options) { - options = options || {}; - EventEmitter.call(this); - - this.fd = fd; - this.pend = new Pend(); - this.pend.max = 1; - this.refCount = 0; - this.autoClose = !!options.autoClose; -} - -FdSlicer.prototype.read = function(buffer, offset, length, position, callback) { - var self = this; - self.pend.go(function(cb) { - fs.read(self.fd, buffer, offset, length, position, function(err, bytesRead, buffer) { - cb(); - callback(err, bytesRead, buffer); - }); - }); -}; - -FdSlicer.prototype.write = function(buffer, offset, length, position, callback) { - var self = this; - self.pend.go(function(cb) { - fs.write(self.fd, buffer, offset, length, position, function(err, written, buffer) { - cb(); - callback(err, written, buffer); - }); - }); -}; - -FdSlicer.prototype.createReadStream = function(options) { - return new ReadStream(this, options); -}; - -FdSlicer.prototype.createWriteStream = function(options) { - return new WriteStream(this, options); -}; - -FdSlicer.prototype.ref = function() { - this.refCount += 1; -}; - -FdSlicer.prototype.unref = function() { - var self = this; - self.refCount -= 1; - - if (self.refCount > 0) return; - if (self.refCount < 0) throw new Error("invalid unref"); - - if (self.autoClose) { - fs.close(self.fd, onCloseDone); - } - - function onCloseDone(err) { - if (err) { - self.emit('error', err); - } else { - self.emit('close'); - } - } -}; - -util.inherits(ReadStream, Readable); -function ReadStream(context, options) { - options = options || {}; - Readable.call(this, options); - - this.context = context; - this.context.ref(); - - this.start = options.start || 0; - this.endOffset = options.end; - this.pos = this.start; - this.destroyed = false; -} - -ReadStream.prototype._read = function(n) { - var self = this; - if (self.destroyed) return; - - var toRead = Math.min(self._readableState.highWaterMark, n); - if (self.endOffset != null) { - toRead = Math.min(toRead, self.endOffset - self.pos); - } - if (toRead <= 0) { - self.destroyed = true; - self.push(null); - self.context.unref(); - return; - } - self.context.pend.go(function(cb) { - if (self.destroyed) return cb(); - var buffer = new Buffer(toRead); - fs.read(self.context.fd, buffer, 0, toRead, self.pos, function(err, bytesRead) { - if (err) { - self.destroy(err); - } else if (bytesRead === 0) { - self.destroyed = true; - self.push(null); - self.context.unref(); - } else { - self.pos += bytesRead; - self.push(buffer.slice(0, bytesRead)); - } - cb(); - }); - }); -}; - -ReadStream.prototype.destroy = function(err) { - if (this.destroyed) return; - err = err || new Error("stream destroyed"); - this.destroyed = true; - this.emit('error', err); - this.context.unref(); -}; - -util.inherits(WriteStream, Writable); -function WriteStream(context, options) { - options = options || {}; - Writable.call(this, options); - - this.context = context; - this.context.ref(); - - this.start = options.start || 0; - this.endOffset = (options.end == null) ? Infinity : +options.end; - this.bytesWritten = 0; - this.pos = this.start; - this.destroyed = false; - - this.on('finish', this.destroy.bind(this)); -} - -WriteStream.prototype._write = function(buffer, encoding, callback) { - var self = this; - if (self.destroyed) return; - - if (self.pos + buffer.length > self.endOffset) { - var err = new Error("maximum file length exceeded"); - err.code = 'ETOOBIG'; - self.destroy(); - callback(err); - return; - } - self.context.pend.go(function(cb) { - if (self.destroyed) return cb(); - fs.write(self.context.fd, buffer, 0, buffer.length, self.pos, function(err, bytes) { - if (err) { - self.destroy(); - cb(); - callback(err); - } else { - self.bytesWritten += bytes; - self.pos += bytes; - self.emit('progress'); - cb(); - callback(); - } - }); - }); -}; - -WriteStream.prototype.destroy = function() { - if (this.destroyed) return; - this.destroyed = true; - this.context.unref(); -}; - -util.inherits(BufferSlicer, EventEmitter); -function BufferSlicer(buffer) { - EventEmitter.call(this); - - this.refCount = 0; - this.buffer = buffer; -} - -BufferSlicer.prototype.read = function(buffer, offset, length, position, callback) { - var end = position + length; - var delta = end - this.buffer.length; - var written = (delta > 0) ? delta : length; - this.buffer.copy(buffer, offset, position, end); - setImmediate(function() { - callback(null, written); - }); -}; - -BufferSlicer.prototype.write = function(buffer, offset, length, position, callback) { - buffer.copy(this.buffer, position, offset, offset + length); - setImmediate(function() { - callback(null, length, buffer); - }); -}; - -BufferSlicer.prototype.createReadStream = function(options) { - options = options || {}; - var readStream = new PassThrough(options); - readStream.start = options.start || 0; - readStream.endOffset = options.end; - readStream.pos = readStream.endOffset || this.buffer.length; // yep, we're already done - readStream.destroyed = false; - readStream.write(this.buffer.slice(readStream.start, readStream.pos)); - readStream.end(); - readStream.destroy = function() { - readStream.destroyed = true; - }; - return readStream; -}; - -BufferSlicer.prototype.createWriteStream = function(options) { - var bufferSlicer = this; - options = options || {}; - var writeStream = new Writable(options); - writeStream.start = options.start || 0; - writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end; - writeStream.bytesWritten = 0; - writeStream.pos = writeStream.start; - writeStream.destroyed = false; - writeStream._write = function(buffer, encoding, callback) { - if (writeStream.destroyed) return; - - var end = writeStream.pos + buffer.length; - if (end > writeStream.endOffset) { - var err = new Error("maximum file length exceeded"); - err.code = 'ETOOBIG'; - writeStream.destroyed = true; - callback(err); - return; - } - buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length); - - writeStream.bytesWritten += buffer.length; - writeStream.pos = end; - writeStream.emit('progress'); - callback(); - }; - writeStream.destroy = function() { - writeStream.destroyed = true; - }; - return writeStream; -}; - -BufferSlicer.prototype.ref = function() { - this.refCount += 1; -}; - -BufferSlicer.prototype.unref = function() { - this.refCount -= 1; - - if (this.refCount < 0) { - throw new Error("invalid unref"); - } -}; - -function createFromBuffer(buffer) { - return new BufferSlicer(buffer); -} - -function createFromFd(fd, options) { - return new FdSlicer(fd, options); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/package.json deleted file mode 100644 index ae0eb94b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "fd-slicer@~1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/yauzl" - ] - ], - "_from": "fd-slicer@>=1.0.1 <1.1.0", - "_id": "fd-slicer@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/fd-slicer", - "_npmUser": { - "email": "superjoe30@gmail.com", - "name": "superjoe" - }, - "_npmVersion": "1.4.21", - "_phantomChildren": {}, - "_requested": { - "name": "fd-slicer", - "raw": "fd-slicer@~1.0.1", - "rawSpec": "~1.0.1", - "scope": null, - "spec": ">=1.0.1 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/yauzl" - ], - "_resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "_shasum": "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65", - "_shrinkwrap": null, - "_spec": "fd-slicer@~1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/yauzl", - "author": { - "email": "superjoe30@gmail.com", - "name": "Andrew Kelley" - }, - "bugs": { - "url": "https://github.com/andrewrk/node-fd-slicer/issues" - }, - "dependencies": { - "pend": "~1.2.0" - }, - "description": "safely create multiple ReadStream or WriteStream objects from the same file descriptor", - "devDependencies": { - "istanbul": "~0.3.3", - "mocha": "~2.0.1", - "stream-equal": "~0.1.5", - "streamsink": "~1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "8b5bcbd9ec327c5041bf9ab023fd6750f1177e65", - "tarball": "http://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz" - }, - "gitHead": "b7a28cb5bda986748ad756c39961f46c2fd28ec6", - "homepage": "https://github.com/andrewrk/node-fd-slicer#readme", - "keywords": [ - "createReadStream", - "createWriteStream" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "superjoe30@gmail.com", - "name": "superjoe" - }, - { - "email": "thejoshwolfe@gmail.com", - "name": "thejoshwolfe" - } - ], - "name": "fd-slicer", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/andrewrk/node-fd-slicer.git" - }, - "scripts": { - "test": "mocha --reporter spec --check-leaks", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --timeout 10000 --reporter spec --check-leaks test/test.js" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/test/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/test/test.js deleted file mode 100644 index d05ab003..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/fd-slicer/test/test.js +++ /dev/null @@ -1,350 +0,0 @@ -var fdSlicer = require('../'); -var fs = require('fs'); -var crypto = require('crypto'); -var path = require('path'); -var streamEqual = require('stream-equal'); -var assert = require('assert'); -var Pend = require('pend'); -var StreamSink = require('streamsink'); - -var describe = global.describe; -var it = global.it; -var before = global.before; -var beforeEach = global.beforeEach; -var after = global.after; - -var testBlobFile = path.join(__dirname, "test-blob.bin"); -var testBlobFileSize = 20 * 1024 * 1024; -var testOutBlobFile = path.join(__dirname, "test-blob-out.bin"); - -describe("FdSlicer", function() { - before(function(done) { - var out = fs.createWriteStream(testBlobFile); - for (var i = 0; i < testBlobFileSize / 1024; i += 1) { - out.write(crypto.pseudoRandomBytes(1024)); - } - out.end(); - out.on('close', done); - }); - beforeEach(function() { - try { - fs.unlinkSync(testOutBlobFile); - } catch (err) { - } - }); - after(function() { - try { - fs.unlinkSync(testBlobFile); - fs.unlinkSync(testOutBlobFile); - } catch (err) { - } - }); - it("reads a 20MB file (autoClose on)", function(done) { - fs.open(testBlobFile, 'r', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var actualStream = slicer.createReadStream(); - var expectedStream = fs.createReadStream(testBlobFile); - - var pend = new Pend(); - pend.go(function(cb) { - slicer.on('close', cb); - }); - pend.go(function(cb) { - streamEqual(expectedStream, actualStream, function(err, equal) { - if (err) return done(err); - assert.ok(equal); - cb(); - }); - }); - pend.wait(done); - }); - }); - it("reads 4 chunks simultaneously", function(done) { - fs.open(testBlobFile, 'r', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd); - var actualPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); - var actualPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); - var actualPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); - var actualPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); - var expectedPart1 = slicer.createReadStream({start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); - var expectedPart2 = slicer.createReadStream({start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); - var expectedPart3 = slicer.createReadStream({start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); - var expectedPart4 = slicer.createReadStream({start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); - var pend = new Pend(); - pend.go(function(cb) { - streamEqual(expectedPart1, actualPart1, function(err, equal) { - assert.ok(equal); - cb(err); - }); - }); - pend.go(function(cb) { - streamEqual(expectedPart2, actualPart2, function(err, equal) { - assert.ok(equal); - cb(err); - }); - }); - pend.go(function(cb) { - streamEqual(expectedPart3, actualPart3, function(err, equal) { - assert.ok(equal); - cb(err); - }); - }); - pend.go(function(cb) { - streamEqual(expectedPart4, actualPart4, function(err, equal) { - assert.ok(equal); - cb(err); - }); - }); - pend.wait(function(err) { - if (err) return done(err); - fs.close(fd, done); - }); - }); - }); - - it("writes a 20MB file (autoClose on)", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var actualStream = slicer.createWriteStream(); - var inStream = fs.createReadStream(testBlobFile); - - slicer.on('close', function() { - var expected = fs.createReadStream(testBlobFile); - var actual = fs.createReadStream(testOutBlobFile); - - streamEqual(expected, actual, function(err, equal) { - if (err) return done(err); - assert.ok(equal); - done(); - }); - }); - inStream.pipe(actualStream); - }); - }); - - it("writes 4 chunks simultaneously", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd); - var actualPart1 = slicer.createWriteStream({start: testBlobFileSize * 0/4}); - var actualPart2 = slicer.createWriteStream({start: testBlobFileSize * 1/4}); - var actualPart3 = slicer.createWriteStream({start: testBlobFileSize * 2/4}); - var actualPart4 = slicer.createWriteStream({start: testBlobFileSize * 3/4}); - var in1 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 0/4, end: testBlobFileSize * 1/4}); - var in2 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 1/4, end: testBlobFileSize * 2/4}); - var in3 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 2/4, end: testBlobFileSize * 3/4}); - var in4 = fs.createReadStream(testBlobFile, {start: testBlobFileSize * 3/4, end: testBlobFileSize * 4/4}); - var pend = new Pend(); - pend.go(function(cb) { - actualPart1.on('finish', cb); - }); - pend.go(function(cb) { - actualPart2.on('finish', cb); - }); - pend.go(function(cb) { - actualPart3.on('finish', cb); - }); - pend.go(function(cb) { - actualPart4.on('finish', cb); - }); - in1.pipe(actualPart1); - in2.pipe(actualPart2); - in3.pipe(actualPart3); - in4.pipe(actualPart4); - pend.wait(function() { - fs.close(fd, function(err) { - if (err) return done(err); - var expected = fs.createReadStream(testBlobFile); - var actual = fs.createReadStream(testOutBlobFile); - streamEqual(expected, actual, function(err, equal) { - if (err) return done(err); - assert.ok(equal); - done(); - }); - }); - }); - }); - }); - - it("throws on invalid ref", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - assert.throws(function() { - slicer.unref(); - }, /invalid unref/); - fs.close(fd, done); - }); - }); - - it("write stream emits error when max size exceeded", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var ws = slicer.createWriteStream({start: 0, end: 1000}); - ws.on('error', function(err) { - assert.strictEqual(err.code, 'ETOOBIG'); - slicer.on('close', done); - }); - ws.end(new Buffer(1001)); - }); - }); - - it("write stream does not emit error when max size not exceeded", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var ws = slicer.createWriteStream({end: 1000}); - slicer.on('close', done); - ws.end(new Buffer(1000)); - }); - }); - - it("write stream start and end work together", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var ws = slicer.createWriteStream({start: 1, end: 1000}); - ws.on('error', function(err) { - assert.strictEqual(err.code, 'ETOOBIG'); - slicer.on('close', done); - }); - ws.end(new Buffer(1000)); - }); - }); - - it("write stream emits progress events", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var ws = slicer.createWriteStream(); - var progressEventCount = 0; - var prevBytesWritten = 0; - ws.on('progress', function() { - progressEventCount += 1; - assert.ok(ws.bytesWritten > prevBytesWritten); - prevBytesWritten = ws.bytesWritten; - }); - slicer.on('close', function() { - assert.ok(progressEventCount > 5); - done(); - }); - for (var i = 0; i < 10; i += 1) { - ws.write(new Buffer(16 * 1024 * 2)); - } - ws.end(); - }); - }); - - it("write stream unrefs when destroyed", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var ws = slicer.createWriteStream(); - slicer.on('close', done); - ws.write(new Buffer(1000)); - ws.destroy(); - }); - }); - - it("read stream unrefs when destroyed", function(done) { - fs.open(testBlobFile, 'r', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd, {autoClose: true}); - var rs = slicer.createReadStream(); - rs.on('error', function(err) { - assert.strictEqual(err.message, "stream destroyed"); - slicer.on('close', done); - }); - rs.destroy(); - }); - }); - - it("fdSlicer.read", function(done) { - fs.open(testBlobFile, 'r', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd); - var outBuf = new Buffer(1024); - slicer.read(outBuf, 0, 10, 0, function(err, bytesRead, buf) { - assert.strictEqual(bytesRead, 10); - fs.close(fd, done); - }); - }); - }); - - it("fdSlicer.write", function(done) { - fs.open(testOutBlobFile, 'w', function(err, fd) { - if (err) return done(err); - var slicer = fdSlicer.createFromFd(fd); - slicer.write(new Buffer("blah\n"), 0, 5, 0, function() { - if (err) return done(err); - fs.close(fd, done); - }); - }); - }); -}); - -describe("BufferSlicer", function() { - it("invalid ref", function() { - var slicer = fdSlicer.createFromBuffer(new Buffer(16)); - slicer.ref(); - slicer.unref(); - assert.throws(function() { - slicer.unref(); - }, /invalid unref/); - }); - it("read and write", function(done) { - var buf = new Buffer("through the tangled thread the needle finds its way"); - var slicer = fdSlicer.createFromBuffer(buf); - var outBuf = new Buffer(1024); - slicer.read(outBuf, 10, 11, 8, function(err) { - if (err) return done(err); - assert.strictEqual(outBuf.toString('utf8', 10, 21), "the tangled"); - slicer.write(new Buffer("derp"), 0, 4, 7, function(err) { - if (err) return done(err); - assert.strictEqual(buf.toString('utf8', 7, 19), "derp tangled"); - done(); - }); - }); - }); - it("createReadStream", function(done) { - var str = "I never conquered rarely came, 16 just held such better days"; - var buf = new Buffer(str); - var slicer = fdSlicer.createFromBuffer(buf); - var inStream = slicer.createReadStream(); - var sink = new StreamSink(); - inStream.pipe(sink); - sink.on('finish', function() { - assert.strictEqual(sink.toString(), str); - inStream.destroy(); - done(); - }); - }); - it("createWriteStream exceed buffer size", function(done) { - var slicer = fdSlicer.createFromBuffer(new Buffer(4)); - var outStream = slicer.createWriteStream(); - outStream.on('error', function(err) { - assert.strictEqual(err.code, 'ETOOBIG'); - done(); - }); - outStream.write("hi!\n"); - outStream.write("it warked\n"); - outStream.end(); - }); - it("createWriteStream ok", function(done) { - var buf = new Buffer(1024); - var slicer = fdSlicer.createFromBuffer(buf); - var outStream = slicer.createWriteStream(); - outStream.on('finish', function() { - assert.strictEqual(buf.toString('utf8', 0, "hi!\nit warked\n".length), "hi!\nit warked\n"); - outStream.destroy(); - done(); - }); - outStream.write("hi!\n"); - outStream.write("it warked\n"); - outStream.end(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/README.md deleted file mode 100644 index 034832e0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/README.md +++ /dev/null @@ -1,33 +0,0 @@ - -# find-index - -finds an item in an array matching a predicate function, -and returns its index - -fast both when `thisArg` is used and also when it isn't: [jsPerf](http://jsperf.com/array-prototype-findindex-shims) - -### usage -```bash -npm install find-index -``` -```js -findIndex = require('find-index') -findLastIndex = require('find-index/last') -``` - findIndex(array, callback[, thisArg]) - findLastIndex(array, callback[, thisArg]) - Parameters: - array - The array to operate on. - callback - Function to execute on each value in the array, taking three arguments: - element - The current element being processed in the array. - index - The index of the current element being processed in the array. - array - The array findIndex was called upon. - thisArg - Object to use as this when executing callback. - -based on [array-findindex](https://www.npmjs.org/package/array-findindex) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/index.js deleted file mode 100644 index 61bff61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/index.js +++ /dev/null @@ -1,26 +0,0 @@ -function findIndex(array, predicate, self) { - var len = array.length; - var i; - if (len === 0) return -1; - if (typeof predicate !== 'function') { - throw new TypeError(predicate + ' must be a function'); - } - - if (self) { - for (i = 0; i < len; i++) { - if (predicate.call(self, array[i], i, array)) { - return i; - } - } - } else { - for (i = 0; i < len; i++) { - if (predicate(array[i], i, array)) { - return i; - } - } - } - - return -1; -} - -module.exports = findIndex diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/last.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/last.js deleted file mode 100644 index 186739a6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/last.js +++ /dev/null @@ -1,26 +0,0 @@ -function findLastIndex(array, predicate, self) { - var len = array.length; - var i; - if (len === 0) return -1; - if (typeof predicate !== 'function') { - throw new TypeError(predicate + ' must be a function'); - } - - if (self) { - for (i = len - 1; i >= 0; i--) { - if (predicate.call(self, array[i], i, array)) { - return i; - } - } - } else { - for (i = len - 1; i >= 0; i--) { - if (predicate(array[i], i, array)) { - return i; - } - } - } - - return -1; -} - -module.exports = findLastIndex diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/package.json deleted file mode 100644 index b88c18d4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-index/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_args": [ - [ - "find-index@^0.1.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob2base" - ] - ], - "_from": "find-index@>=0.1.1 <0.2.0", - "_id": "find-index@0.1.1", - "_inCache": true, - "_installable": true, - "_location": "/find-index", - "_npmUser": { - "email": "james@jsdf.co", - "name": "jsdf" - }, - "_npmVersion": "1.4.3", - "_phantomChildren": {}, - "_requested": { - "name": "find-index", - "raw": "find-index@^0.1.1", - "rawSpec": "^0.1.1", - "scope": null, - "spec": ">=0.1.1 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/glob2base" - ], - "_resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "_shasum": "675d358b2ca3892d795a1ab47232f8b6e2e0dde4", - "_shrinkwrap": null, - "_spec": "find-index@^0.1.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob2base", - "author": { - "email": "james@jsdf.co", - "name": "James Friend", - "url": "http://jsdf.co/" - }, - "bugs": { - "url": "https://github.com/jsdf/find-index/issues" - }, - "dependencies": {}, - "description": "finds an item in an array matching a predicate function, and returns its index", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "675d358b2ca3892d795a1ab47232f8b6e2e0dde4", - "tarball": "http://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" - }, - "files": [ - "index.js", - "last.js" - ], - "homepage": "https://github.com/jsdf/find-index", - "keywords": [ - "array", - "findindex" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "james@jsdf.co", - "name": "jsdf" - } - ], - "name": "find-index", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/jsdf/find-index.git" - }, - "scripts": { - "test": "node test/test" - }, - "version": "0.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/index.js deleted file mode 100644 index 7ff0e2b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/index.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; -var path = require('path'); -var pathExists = require('path-exists'); -var Promise = require('pinkie-promise'); - -function splitPath(x) { - return path.resolve(x || '').split(path.sep); -} - -function join(parts, filename) { - return path.resolve(parts.join(path.sep) + path.sep, filename); -} - -module.exports = function (filename, opts) { - opts = opts || {}; - - var parts = splitPath(opts.cwd); - - return new Promise(function (resolve) { - (function find() { - var fp = join(parts, filename); - - pathExists(fp).then(function (exists) { - if (exists) { - resolve(fp); - } else if (parts.pop()) { - find(); - } else { - resolve(null); - } - }); - })(); - }); -}; - -module.exports.sync = function (filename, opts) { - opts = opts || {}; - - var parts = splitPath(opts.cwd); - var len = parts.length; - - while (len--) { - var fp = join(parts, filename); - - if (pathExists.sync(fp)) { - return fp; - } - - parts.pop(); - } - - return null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/package.json deleted file mode 100644 index 61dc3465..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/package.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_args": [ - [ - "find-up@^1.1.2", - "/Users/sid/Desktop/code/RustyCode" - ] - ], - "_from": "find-up@>=1.1.2 <2.0.0", - "_id": "find-up@1.1.2", - "_inCache": true, - "_installable": true, - "_location": "/find-up", - "_nodeVersion": "4.3.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/find-up-1.1.2.tgz_1457199955637_0.3445317060686648" - }, - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.12", - "_phantomChildren": {}, - "_requested": { - "name": "find-up", - "raw": "find-up@^1.1.2", - "rawSpec": "^1.1.2", - "scope": null, - "spec": ">=1.1.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/", - "/read-pkg-up" - ], - "_resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "_shasum": "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f", - "_shrinkwrap": null, - "_spec": "find-up@^1.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/find-up/issues" - }, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "description": "Find a file by walking up parent directories", - "devDependencies": { - "ava": "*", - "tempfile": "^1.1.1", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f", - "tarball": "http://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "f2d7c1ff74fbac82b2cff038e311ef4b075d9184", - "homepage": "https://github.com/sindresorhus/find-up", - "keywords": [ - "find", - "up", - "find-up", - "findup", - "look-up", - "look", - "file", - "search", - "match", - "package", - "resolve", - "parent", - "parents", - "folder", - "directory", - "dir", - "walk", - "walking", - "path" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "find-up", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/find-up.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.1.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/readme.md deleted file mode 100644 index 9ea0611c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/find-up/readme.md +++ /dev/null @@ -1,72 +0,0 @@ -# find-up [![Build Status](https://travis-ci.org/sindresorhus/find-up.svg?branch=master)](https://travis-ci.org/sindresorhus/find-up) - -> Find a file by walking up parent directories - - -## Install - -``` -$ npm install --save find-up -``` - - -## Usage - -``` -/ -└── Users - └── sindresorhus - ├── unicorn.png - └── foo - └── bar - ├── baz - └── example.js -``` - -```js -// example.js -const findUp = require('find-up'); - -findUp('unicorn.png').then(filepath => { - console.log(filepath); - //=> '/Users/sindresorhus/unicorn.png' -}); -``` - - -## API - -### findUp(filename, [options]) - -Returns a promise for the filepath or `null`. - -### findUp.sync(filename, [options]) - -Returns a filepath or `null`. - -#### filename - -Type: `string` - -Filename of the file to find. - -#### options - -##### cwd - -Type: `string` -Default: `process.cwd()` - -Directory to start from. - - -## Related - -- [find-up-cli](https://github.com/sindresorhus/find-up-cli) - CLI for this module -- [pkg-up](https://github.com/sindresorhus/pkg-up) - Find the closest package.json file -- [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/.npmignore deleted file mode 100644 index 84561e0c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -test -.travis.yml -.jshintrc -Gruntfile.js diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/LICENSE-MIT b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/LICENSE-MIT deleted file mode 100644 index bb2aad6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 "Cowboy" Ben Alman - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/README.md deleted file mode 100644 index e396df51..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# findup-sync [![Build Status](https://secure.travis-ci.org/cowboy/node-findup-sync.png?branch=master)](http://travis-ci.org/cowboy/node-findup-sync) - -Find the first file matching a given pattern in the current directory or the nearest ancestor directory. - -## Getting Started -Install the module with: `npm install findup-sync` - -```js -var findup = require('findup-sync'); - -// Start looking in the CWD. -var filepath1 = findup('{a,b}*.txt'); - -// Start looking somewhere else, and ignore case (probably a good idea). -var filepath2 = findup('{a,b}*.txt', {cwd: '/some/path', nocase: true}); -``` - -## Usage - -```js -findup(patternOrPatterns [, minimatchOptions]) -``` - -### patternOrPatterns -Type: `String` or `Array` -Default: none - -One or more wildcard glob patterns. Or just filenames. - -### minimatchOptions -Type: `Object` -Default: `{}` - -Options to be passed to [minimatch](https://github.com/isaacs/minimatch). - -Note that if you want to start in a different directory than the current working directory, specify a `cwd` property here. - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). - -## Release History -2015-09-14 0 v0.3.0 - updated glob to ~5.0. -2014-12-17 - v0.2.1 - updated to glob ~4.3. -2014-12-16 - v0.2.0 - Removed lodash, updated to glob 4.x. -2014-03-14 - v0.1.3 - Updated dependencies. -2013-03-08 - v0.1.2 - Updated dependencies. Fixed a Node 0.9.x bug. Updated unit tests to work cross-platform. -2012-11-15 - v0.1.1 - Now works without an options object. -2012-11-01 - v0.1.0 - Initial release. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/lib/findup-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/lib/findup-sync.js deleted file mode 100644 index 871a7256..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/lib/findup-sync.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * findup-sync - * https://github.com/cowboy/node-findup-sync - * - * Copyright (c) 2013 "Cowboy" Ben Alman - * Licensed under the MIT license. - */ - -'use strict'; - -// Nodejs libs. -var path = require('path'); - -// External libs. -var glob = require('glob'); - -// Search for a filename in the given directory or all parent directories. -module.exports = function(patterns, options) { - // Normalize patterns to an array. - if (!Array.isArray(patterns)) { patterns = [patterns]; } - // Create globOptions so that it can be modified without mutating the - // original object. - var globOptions = Object.create(options || {}); - globOptions.maxDepth = 1; - globOptions.cwd = path.resolve(globOptions.cwd || '.'); - - var files, lastpath; - do { - // Search for files matching patterns. - files = patterns.map(function(pattern) { - return glob.sync(pattern, globOptions); - }).reduce(function(a, b) { - return a.concat(b); - }).filter(function(entry, index, arr) { - return index === arr.indexOf(entry); - }); - // Return file if found. - if (files.length > 0) { - return path.resolve(path.join(globOptions.cwd, files[0])); - } - // Go up a directory. - lastpath = globOptions.cwd; - globOptions.cwd = path.resolve(globOptions.cwd, '..'); - // If parentpath is the same as basedir, we can't go any higher. - } while (globOptions.cwd !== lastpath); - - // No files were found! - return null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/package.json deleted file mode 100644 index d9d51e5e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/findup-sync/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "findup-sync@^0.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff" - ] - ], - "_from": "findup-sync@>=0.3.0 <0.4.0", - "_id": "findup-sync@0.3.0", - "_inCache": true, - "_installable": true, - "_location": "/findup-sync", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "tyler@sleekcode.net", - "name": "tkellen" - }, - "_npmVersion": "2.14.2", - "_phantomChildren": {}, - "_requested": { - "name": "findup-sync", - "raw": "findup-sync@^0.3.0", - "rawSpec": "^0.3.0", - "scope": null, - "spec": ">=0.3.0 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/liftoff", - "/tslint" - ], - "_resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "_shasum": "37930aa5d816b777c03445e1966cc6790a4c0b16", - "_shrinkwrap": null, - "_spec": "findup-sync@^0.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff", - "author": { - "name": "\"Cowboy\" Ben Alman", - "url": "http://benalman.com/" - }, - "bugs": { - "url": "https://github.com/cowboy/node-findup-sync/issues" - }, - "dependencies": { - "glob": "~5.0.0" - }, - "description": "Find the first file matching a given pattern in the current directory or the nearest ancestor directory.", - "devDependencies": { - "grunt": "~0.4.4", - "grunt-contrib-jshint": "~0.9.2", - "grunt-contrib-nodeunit": "~0.3.3" - }, - "directories": {}, - "dist": { - "shasum": "37930aa5d816b777c03445e1966cc6790a4c0b16", - "tarball": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz" - }, - "engines": { - "node": ">= 0.6.0" - }, - "gitHead": "24356dc9bc74bf2389080a29c80845a510eaf3ef", - "homepage": "https://github.com/cowboy/node-findup-sync", - "keywords": [ - "find", - "glob", - "file" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/cowboy/node-findup-sync/blob/master/LICENSE-MIT" - } - ], - "main": "lib/findup-sync", - "maintainers": [ - { - "email": "cowboy@rj3.net", - "name": "cowboy" - }, - { - "email": "tyler@sleekcode.net", - "name": "tkellen" - } - ], - "name": "findup-sync", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/cowboy/node-findup-sync.git" - }, - "scripts": { - "test": "grunt nodeunit" - }, - "version": "0.3.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/index.js deleted file mode 100644 index 24815508..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/index.js +++ /dev/null @@ -1,93 +0,0 @@ -'use strict'; -var util = require('util'); -var Transform = require('stream').Transform; - -function ctor(options, transform) { - util.inherits(FirstChunk, Transform); - - if (typeof options === 'function') { - transform = options; - options = {}; - } - - if (typeof transform !== 'function') { - throw new Error('transform function required'); - } - - function FirstChunk(options2) { - if (!(this instanceof FirstChunk)) { - return new FirstChunk(options2); - } - - Transform.call(this, options2); - - this._firstChunk = true; - this._transformCalled = false; - this._minSize = options.minSize; - } - - FirstChunk.prototype._transform = function (chunk, enc, cb) { - this._enc = enc; - - if (this._firstChunk) { - this._firstChunk = false; - - if (this._minSize == null) { - transform.call(this, chunk, enc, cb); - this._transformCalled = true; - return; - } - - this._buffer = chunk; - cb(); - return; - } - - if (this._minSize == null) { - this.push(chunk); - cb(); - return; - } - - if (this._buffer.length < this._minSize) { - this._buffer = Buffer.concat([this._buffer, chunk]); - cb(); - return; - } - - if (this._buffer.length >= this._minSize) { - transform.call(this, this._buffer.slice(), enc, function () { - this.push(chunk); - cb(); - }.bind(this)); - this._transformCalled = true; - this._buffer = false; - return; - } - - this.push(chunk); - cb(); - }; - - FirstChunk.prototype._flush = function (cb) { - if (!this._buffer) { - cb(); - return; - } - - if (this._transformCalled) { - this.push(this._buffer); - cb(); - } else { - transform.call(this, this._buffer.slice(), this._enc, cb); - } - }; - - return FirstChunk; -} - -module.exports = function () { - return ctor.apply(ctor, arguments)(); -}; - -module.exports.ctor = ctor; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/package.json deleted file mode 100644 index ab4ac558..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "first-chunk-stream@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/strip-bom" - ] - ], - "_from": "first-chunk-stream@>=1.0.0 <2.0.0", - "_id": "first-chunk-stream@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/first-chunk-stream", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "1.4.21", - "_phantomChildren": {}, - "_requested": { - "name": "first-chunk-stream", - "raw": "first-chunk-stream@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/strip-bom", - "/vinyl-fs/strip-bom" - ], - "_resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "_shasum": "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e", - "_shrinkwrap": null, - "_spec": "first-chunk-stream@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/strip-bom", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/first-chunk-stream/issues" - }, - "dependencies": {}, - "description": "Transform the first chunk in a stream", - "devDependencies": { - "concat-stream": "^1.4.5", - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "59bfb50cd905f60d7c394cd3d9acaab4e6ad934e", - "tarball": "http://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "8b0b1750edcc30fa2b2071245198181e925be619", - "homepage": "https://github.com/sindresorhus/first-chunk-stream", - "keywords": [ - "buffer", - "stream", - "streams", - "transform", - "first", - "chunk", - "size", - "min", - "minimum" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "first-chunk-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/first-chunk-stream.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/readme.md deleted file mode 100644 index f8909c8f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/first-chunk-stream/readme.md +++ /dev/null @@ -1,62 +0,0 @@ -# first-chunk-stream [![Build Status](https://travis-ci.org/sindresorhus/first-chunk-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/first-chunk-stream) - -> Transform the first chunk in a stream - -Useful if you want to do something to the first chunk. - -You can also set the minimum size of that chunk. - - -## Install - -```sh -$ npm install --save first-chunk-stream -``` - - -## Usage - -```js -var fs = require('fs'); -var concat = require('concat-stream'); -var firstChunk = require('first-chunk-stream'); - -// unicorn.txt => unicorn rainbow -// `highWaterMark: 1` means it will only read 1 byte at the time -fs.createReadStream('unicorn.txt', {highWaterMark: 1}) - .pipe(firstChunk({minSize: 7}, function (chunk, enc, cb) { - this.push(chunk.toUpperCase()); - cb(); - })) - .pipe(concat(function (data) { - console.log(data); - //=> UNICORN rainbow - })); -``` - - -## API - -### firstChunk([options], transform) - -#### options.minSize - -Type: `number` - -The minimum size of the first chunk. - -#### transform(chunk, encoding, callback) - -*Required* -Type: `function` - -The [function](http://nodejs.org/docs/latest/api/stream.html#stream_transform_transform_chunk_encoding_callback) that gets the first chunk. - -### firstChunk.ctor() - -Instead of returning a [stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform_1) instance, `firstChunk.ctor()` returns a constructor for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.npmignore deleted file mode 100644 index a1dca7a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.npmignore +++ /dev/null @@ -1 +0,0 @@ -*.flags.json diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.travis.yml deleted file mode 100644 index e37da77f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" -matrix: - fast_finish: true - allow_failures: - - node_js: 0.11 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/LICENSE deleted file mode 100644 index a55f5b74..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 Tyler Kellen - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/README.md deleted file mode 100644 index a431fe36..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# flagged-respawn [![Build Status](https://secure.travis-ci.org/js-cli/js-flagged-respawn.svg)](http://travis-ci.org/js-cli/js-flagged-respawn) -> A tool for respawning node binaries when special flags are present. - -[![NPM](https://nodei.co/npm/flagged-respawn.png)](https://nodei.co/npm/flagged-respawn/) - -## What is it? - -Say you wrote a command line tool that runs arbitrary javascript (e.g. task runner, test framework, etc). For the sake of discussion, let's pretend it's a testing harness you've named `testify`. - -Everything is going splendidly until one day you decide to test some code that relies on a feature behind a v8 flag in node (`--harmony`, for example). Without much thought, you run `testify --harmony spec tests.js`. - -It doesn't work. After digging around for a bit, you realize this produces a [`process.argv`](http://nodejs.org/docs/latest/api/process.html#process_process_argv) of: - -`['node', '/usr/local/bin/test', '--harmony', 'spec', 'tests.js']` - -Crap. The `--harmony` flag is in the wrong place! It should be applied to the **node** command, not our binary. What we actually wanted was this: - -`['node', '--harmony', '/usr/local/bin/test', 'spec', 'tests.js']` - -Flagged-respawn fixes this problem and handles all the edge cases respawning creates, such as: -- Providing a method to determine if a respawn is needed. -- Piping stderr/stdout from the child into the parent. -- Making the parent process exit with the same code as the child. -- If the child is killed, making the parent exit with the same signal. - -To see it in action, clone this repository and run `npm install` / `npm run respawn` / `npm run nospawn`. - -## Sample Usage - -```js -#!/usr/bin/env node - -const flaggedRespawn = require('flagged-respawn'); - -// get a list of all possible v8 flags for the running version of node -const v8flags = require('v8flags').fetch(); - -flaggedRespawn(v8flags, process.argv, function (ready, child) { - if (ready) { - console.log('Running!'); - // your cli code here - } else { - console.log('Special flags found, respawning.'); - } - if (process.pid !== child.pid) { - console.log('Respawned to PID:', child.pid); - } -}); - -``` - -## Release History - -* 2016-03-22 - v0.3.2 - fix issue with v8 flags values being dropped -* 2014-09-12 - v0.3.1 - use `{ stdio: 'inherit' }` for spawn to maintain colors -* 2014-09-11 - v0.3.0 - for real this time -* 2014-09-11 - v0.2.0 - cleanup -* 2014-09-04 - v0.1.1 - initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/index.js deleted file mode 100644 index b1234003..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const reorder = require('./lib/reorder'); -const respawn = require('./lib/respawn'); - -module.exports = function (flags, argv, execute) { - if (!flags) { - throw new Error('You must specify flags to respawn with.'); - } - if (!argv) { - throw new Error('You must specify an argv array.'); - } - var proc = process; - var reordered = reorder(flags, argv); - var ready = JSON.stringify(argv) === JSON.stringify(reordered); - if (!ready) { - proc = respawn(reordered); - } - execute(ready, proc); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/reorder.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/reorder.js deleted file mode 100644 index 556a7d13..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/reorder.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = function (flags, argv) { - if (!argv) { - argv = process.argv; - } - var args = [argv[1]]; - argv.slice(2).forEach(function (arg) { - var flag = arg.split('=')[0]; - if (flags.indexOf(flag) !== -1) { - args.unshift(arg); - } else { - args.push(arg); - } - }); - args.unshift(argv[0]); - return args; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/respawn.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/respawn.js deleted file mode 100644 index 08658530..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/lib/respawn.js +++ /dev/null @@ -1,15 +0,0 @@ -const spawn = require('child_process').spawn; - -module.exports = function (argv) { - var child = spawn(argv[0], argv.slice(1), { stdio: 'inherit' }); - child.on('exit', function (code, signal) { - process.on('exit', function () { - if (signal) { - process.kill(process.pid, signal); - } else { - process.exit(code); - } - }); - }); - return child; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/package.json deleted file mode 100644 index 3eecf127..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "flagged-respawn@^0.3.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff" - ] - ], - "_from": "flagged-respawn@>=0.3.2 <0.4.0", - "_id": "flagged-respawn@0.3.2", - "_inCache": true, - "_installable": true, - "_location": "/flagged-respawn", - "_nodeVersion": "0.12.12", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/flagged-respawn-0.3.2.tgz_1458638775261_0.252670707879588" - }, - "_npmUser": { - "email": "b@pk.am", - "name": "tusbar" - }, - "_npmVersion": "2.14.9", - "_phantomChildren": {}, - "_requested": { - "name": "flagged-respawn", - "raw": "flagged-respawn@^0.3.2", - "rawSpec": "^0.3.2", - "scope": null, - "spec": ">=0.3.2 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/liftoff" - ], - "_resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "_shasum": "ff191eddcd7088a675b2610fffc976be9b8074b5", - "_shrinkwrap": null, - "_spec": "flagged-respawn@^0.3.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/liftoff", - "author": { - "name": "Tyler Kellen", - "url": "http://goingslowly.com/" - }, - "bugs": { - "url": "https://github.com/js-cli/js-flagged-respawn/issues" - }, - "dependencies": {}, - "description": "A tool for respawning node binaries when special flags are present.", - "devDependencies": { - "chai": "~1.9.1", - "mocha": "~1.21.4", - "v8flags": "~1.0.1" - }, - "directories": {}, - "dist": { - "shasum": "ff191eddcd7088a675b2610fffc976be9b8074b5", - "tarball": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz" - }, - "engines": { - "node": ">= 0.8.0" - }, - "gitHead": "5467529adb5512292c8dd341691ba75b2293ed7e", - "homepage": "https://github.com/js-cli/js-flagged-respawn", - "keywords": [ - "respawn flags" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/js-cli/js-flagged-respawn/blob/master/LICENSE" - } - ], - "main": "index.js", - "maintainers": [ - { - "email": "tyler@sleekcode.net", - "name": "tkellen" - }, - { - "email": "b@pk.am", - "name": "tusbar" - } - ], - "name": "flagged-respawn", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/js-cli/js-flagged-respawn.git" - }, - "scripts": { - "nospawn": "node test/bin/respawner test", - "respawn": "node test/bin/respawner --harmony test", - "test": "mocha -R spec test" - }, - "version": "0.3.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/exit_code.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/exit_code.js deleted file mode 100644 index f2fff2d5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/exit_code.js +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node - -const flaggedRespawn = require('../../'); - -flaggedRespawn(['--harmony'], process.argv, function (ready) { - - if (ready) { - setTimeout(function () { - process.exit(100); - }, 100); - } - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/respawner.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/respawner.js deleted file mode 100644 index 71348ba6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/respawner.js +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env node - -const flaggedRespawn = require('../../'); - -// get a list of all possible v8 flags for the running version of node -const v8flags = require('v8flags').fetch(); - -flaggedRespawn(v8flags, process.argv, function (ready, child) { - if (ready) { - console.log('Running!'); - } else { - console.log('Special flags found, respawning.'); - } - if (child.pid !== process.pid) { - console.log('Respawned to PID:', child.pid); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/signal.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/signal.js deleted file mode 100644 index f4a1edf1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/bin/signal.js +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env node - -const flaggedRespawn = require('../../'); - -flaggedRespawn(['--harmony'], process.argv, function (ready, child) { - - if (ready) { - setTimeout(function() { - process.exit(); - }, 100); - } else { - console.log('got child!'); - child.kill('SIGHUP'); - } - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/index.js deleted file mode 100644 index d83fce3a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/flagged-respawn/test/index.js +++ /dev/null @@ -1,99 +0,0 @@ -const expect = require('chai').expect; -const exec = require('child_process').exec; - -const reorder = require('../lib/reorder'); -const flaggedRespawn = require('../'); - -describe('flaggedRespawn', function () { - var flags = ['--harmony', '--use_strict', '--stack_size'] - - describe('reorder', function () { - - it('should re-order args, placing special flags first', function () { - var needsRespawn = ['node', 'file.js', '--flag', '--harmony', 'command']; - var noRespawnNeeded = ['node', 'bin/flagged-respawn', 'thing']; - expect(reorder(flags, needsRespawn)) - .to.deep.equal(['node', '--harmony', 'file.js', '--flag', 'command']); - expect(reorder(flags, noRespawnNeeded)) - .to.deep.equal(noRespawnNeeded); - }); - - it('should keep flags values when not placed first', function () { - var args = ['node', 'file.js', '--stack_size=2048']; - var expected = ['node', '--stack_size=2048', 'file.js']; - expect(reorder(flags, args)).to.deep.equal(expected); - }); - - it('should ignore special flags when they are in the correct position', function () { - var args = ['node', '--harmony', 'file.js', '--flag']; - expect(reorder(flags, reorder(flags, args))).to.deep.equal(args); - }); - - }); - - describe('execute', function () { - - it('should throw if no flags are specified', function () { - expect(function () { flaggedRespawn.execute(); }).to.throw; - }); - - it('should throw if no argv is specified', function () { - expect(function () { flaggedRespawn.execute(flags); }).to.throw; - }); - - it('should respawn and pipe stderr/stdout to parent', function (done) { - exec('node ./test/bin/respawner.js --harmony', function (err, stdout, stderr) { - expect(stdout.replace(/[0-9]/g, '')).to.equal('Special flags found, respawning.\nRespawned to PID: \nRunning!\n'); - done(); - }); - }); - - it('should respawn and pass exit code from child to parent', function (done) { - exec('node ./test/bin/exit_code.js --harmony', function (err, stdout, stderr) { - expect(err.code).to.equal(100); - done(); - }); - }); - - it.skip('should respawn; if child is killed, parent should exit with same signal', function (done) { - // TODO: figure out why travis hates this - exec('node ./test/bin/signal.js --harmony', function (err, stdout, stderr) { - console.log('err', err); - console.log('stdout', stdout); - console.log('stderr', stderr); - expect(err.signal).to.equal('SIGHUP'); - done(); - }); - }); - - it('should call back with ready as true when respawn is not needed', function () { - var argv = ['node', './test/bin/respawner']; - flaggedRespawn(flags, argv, function (ready) { - expect(ready).to.be.true; - }); - }); - - it('should call back with ready as false when respawn is needed', function () { - var argv = ['node', './test/bin/respawner', '--harmony']; - flaggedRespawn(flags, argv, function (ready) { - expect(ready).to.be.false; - }); - }); - - it('should call back with the child process when ready', function () { - var argv = ['node', './test/bin/respawner', '--harmony']; - flaggedRespawn(flags, argv, function (ready, child) { - expect(child.pid).to.not.equal(process.pid); - }); - }); - - it('should call back with own process when respawn not needed', function () { - var argv = ['node', './test/bin/respawner']; - flaggedRespawn(flags, argv, function (ready, child) { - expect(child.pid).to.equal(process.pid); - }); - }); - - }); - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/README.md deleted file mode 100644 index 9d5b6634..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -forever-agent -============= - -HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/index.js deleted file mode 100644 index 416c7abd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/index.js +++ /dev/null @@ -1,138 +0,0 @@ -module.exports = ForeverAgent -ForeverAgent.SSL = ForeverAgentSSL - -var util = require('util') - , Agent = require('http').Agent - , net = require('net') - , tls = require('tls') - , AgentSSL = require('https').Agent - -function getConnectionName(host, port) { - var name = '' - if (typeof host === 'string') { - name = host + ':' + port - } else { - // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name. - name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':') - } - return name -} - -function ForeverAgent(options) { - var self = this - self.options = options || {} - self.requests = {} - self.sockets = {} - self.freeSockets = {} - self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets - self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets - self.on('free', function(socket, host, port) { - var name = getConnectionName(host, port) - - if (self.requests[name] && self.requests[name].length) { - self.requests[name].shift().onSocket(socket) - } else if (self.sockets[name].length < self.minSockets) { - if (!self.freeSockets[name]) self.freeSockets[name] = [] - self.freeSockets[name].push(socket) - - // if an error happens while we don't use the socket anyway, meh, throw the socket away - var onIdleError = function() { - socket.destroy() - } - socket._onIdleError = onIdleError - socket.on('error', onIdleError) - } else { - // If there are no pending requests just destroy the - // socket and it will get removed from the pool. This - // gets us out of timeout issues and allows us to - // default to Connection:keep-alive. - socket.destroy() - } - }) - -} -util.inherits(ForeverAgent, Agent) - -ForeverAgent.defaultMinSockets = 5 - - -ForeverAgent.prototype.createConnection = net.createConnection -ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest -ForeverAgent.prototype.addRequest = function(req, host, port) { - var name = getConnectionName(host, port) - - if (typeof host !== 'string') { - var options = host - port = options.port - host = options.host - } - - if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { - var idleSocket = this.freeSockets[name].pop() - idleSocket.removeListener('error', idleSocket._onIdleError) - delete idleSocket._onIdleError - req._reusedSocket = true - req.onSocket(idleSocket) - } else { - this.addRequestNoreuse(req, host, port) - } -} - -ForeverAgent.prototype.removeSocket = function(s, name, host, port) { - if (this.sockets[name]) { - var index = this.sockets[name].indexOf(s) - if (index !== -1) { - this.sockets[name].splice(index, 1) - } - } else if (this.sockets[name] && this.sockets[name].length === 0) { - // don't leak - delete this.sockets[name] - delete this.requests[name] - } - - if (this.freeSockets[name]) { - var index = this.freeSockets[name].indexOf(s) - if (index !== -1) { - this.freeSockets[name].splice(index, 1) - if (this.freeSockets[name].length === 0) { - delete this.freeSockets[name] - } - } - } - - if (this.requests[name] && this.requests[name].length) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(name, host, port).emit('free') - } -} - -function ForeverAgentSSL (options) { - ForeverAgent.call(this, options) -} -util.inherits(ForeverAgentSSL, ForeverAgent) - -ForeverAgentSSL.prototype.createConnection = createConnectionSSL -ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest - -function createConnectionSSL (port, host, options) { - if (typeof port === 'object') { - options = port; - } else if (typeof host === 'object') { - options = host; - } else if (typeof options === 'object') { - options = options; - } else { - options = {}; - } - - if (typeof port === 'number') { - options.port = port; - } - - if (typeof host === 'string') { - options.host = host; - } - - return tls.connect(options); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/package.json deleted file mode 100644 index a9641012..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/forever-agent/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_args": [ - [ - "forever-agent@~0.6.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "forever-agent@>=0.6.0 <0.7.0", - "_id": "forever-agent@0.6.1", - "_inCache": true, - "_installable": true, - "_location": "/forever-agent", - "_npmUser": { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "forever-agent", - "raw": "forever-agent@~0.6.0", - "rawSpec": "~0.6.0", - "scope": null, - "spec": ">=0.6.0 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "_shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91", - "_shrinkwrap": null, - "_spec": "forever-agent@~0.6.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "mikeal.rogers@gmail.com", - "name": "Mikeal Rogers", - "url": "http://www.futurealoof.com" - }, - "bugs": { - "url": "https://github.com/mikeal/forever-agent/issues" - }, - "dependencies": {}, - "description": "HTTP Agent that keeps socket connections alive between keep-alive requests. Formerly part of mikeal/request, now a standalone module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91", - "tarball": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "1b3b6163f2b3c2c4122bbfa288c1325c0df9871d", - "homepage": "https://github.com/mikeal/forever-agent", - "license": "Apache-2.0", - "main": "index.js", - "maintainers": [ - { - "email": "mikeal.rogers@gmail.com", - "name": "mikeal" - }, - { - "email": "jnylen@gmail.com", - "name": "nylen" - }, - { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - } - ], - "name": "forever-agent", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "url": "git+https://github.com/mikeal/forever-agent.git" - }, - "scripts": {}, - "version": "0.6.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.dockerignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.dockerignore deleted file mode 100644 index c67305cf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.dockerignore +++ /dev/null @@ -1,7 +0,0 @@ -*.iml -*.sublime-* -*.un~ -.idea -sftp-config.json -node_modules/ -test/tmp/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.editorconfig b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.editorconfig deleted file mode 100644 index 0f099897..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintignore deleted file mode 100644 index 8d87b1d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/* diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintrc deleted file mode 100644 index 129fcef0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/.eslintrc +++ /dev/null @@ -1,64 +0,0 @@ -{ - "env": { - "node": true, - "browser": false - }, - "rules": { - // 2-space indentation - "indent": [2, 2, {"SwitchCase": 1}], - // Require strings to use single quotes - "quotes": [2, "single"], - // Allow only unix line-endings - "linebreak-style": [2, "unix"], - // Always require semicolons - "semi": [2, "always"], - // Require curly braces for multi-line control statements - "curly": [2, "multi-line"], - // Always handle callback error cases - "handle-callback-err": [2, "^err"], - // Require JSDoc for all function definitions - "valid-jsdoc": [2, { - "requireReturn": false, - "requireReturnDescription": false, - "prefer": { - "return": "returns" - } - }], - "require-jsdoc": [2, { - "require": { - "FunctionDeclaration": true - } - }], - "no-redeclare": [2, { "builtinGlobals": true }], - "no-shadow": [2, { "builtinGlobals": true, "hoist": "all" }], - // Disallow using variables before they've been defined - // functions are ok - "no-use-before-define": [2, "nofunc"], - "no-shadow-restricted-names": 2, - "no-extra-semi": 2, - // Disallow unused variables - "no-unused-vars": 2, - "no-undef": 2, - // Use if () { } - // ^ space - "keyword-spacing": 2, - // Use if () { } - // ^ space - "space-before-blocks": [2, "always"], - // eslint can't handle this, so the check is disabled. - "key-spacing": 0, - "strict": 0, - // Do not force dot-notation - "dot-notation": 0, - "eol-last": 0, - "no-new": 0, - "semi-spacing": 0, - // Allow multi spaces around operators since they are - // used for alignment. This is not consistent in the - // code. - "no-multi-spaces": 0, - "eqeqeq": 0, - "no-mixed-requires": 0, - "no-console": 0 - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/License b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/License deleted file mode 100644 index c7ff12a2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/README.md deleted file mode 100644 index e857db6e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface -[streams2-thing]: http://nodejs.org/api/stream.html#stream_compatibility_with_older_node_versions - -[![Linux Build](https://img.shields.io/travis/form-data/form-data/master.svg?label=linux:0.10-5.x)](https://travis-ci.org/form-data/form-data) -[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/form-data/master.svg?label=windows:0.10-5.x)](https://ci.appveyor.com/project/alexindigo/form-data) -[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/master.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) - -[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) -[![Codacy Badge](https://img.shields.io/codacy/43ece80331c246179695e41f81eeffe2.svg)](https://www.codacy.com/app/form-data/form-data) -[![bitHound Overall Score](https://www.bithound.io/github/form-data/form-data/badges/score.svg)](https://www.bithound.io/github/form-data/form-data) - -## Install - -``` -npm install form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', - contentType: 'image/jpg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- If it feels like FormData hangs after submit and you're on ```node-0.10```, please check [Compatibility with Older Node Versions][streams2-thing] - -## License - -Form-Data is licensed under the MIT license. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/browser.js deleted file mode 100644 index 8141d658..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/browser.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-env browser */ -module.exports = FormData; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/form_data.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/form_data.js deleted file mode 100644 index 55328b46..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,411 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var mime = require('mime-types'); -var async = require('async'); -var populate = require('./populate.js'); - -// Public API -module.exports = FormData; - -// make it a Stream -util.inherits(FormData, CombinedStream); - -/** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. - * - * @constructor - */ -function FormData() { - if (!(this instanceof FormData)) { - throw new TypeError('Failed to construct FormData: Please use the _new_ operator, this object constructor cannot be called as a function.'); - } - - this._overheadLength = 0; - this._valueLength = 0; - this._lengthRetrievers = []; - - CombinedStream.call(this); -} - -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData.prototype.append = function(field, value, options) { - - options = options || {}; - - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { - return; - } - - // no need to bother with the length - if (!options.knownLength) { - this._lengthRetrievers.push(function(next) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - next(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - next(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - next(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - next(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - next(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - next('Unknown stream'); - } - }); - } -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (options.header) { - return options.header; - } - - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); - - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - - for (var prop in headers) { - if (headers[prop].length) { - contents += prop + ': ' + headers[prop].join('; ') + FormData.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; - -FormData.prototype._getContentDisposition = function(value, options) { - - var contentDisposition; - - // custom filename takes precedence - // fs- and request- streams have path property - var filename = options.filename || value.path; - - // or try http response - if (!filename && value.readable && value.hasOwnProperty('httpVersion')) { - filename = value.client._httpMessage.path; - } - - if (filename) { - contentDisposition = 'filename="' + path.basename(filename) + '"'; - } - - return contentDisposition; -}; - -FormData.prototype._getContentType = function(value, options) { - - // use custom content-type above all - var contentType = options.contentType; - - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } - - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } - - // or guess it from the filename - if (!contentType && options.filename) { - contentType = mime.lookup(options.filename); - } - - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData.DEFAULT_CONTENT_TYPE; - } - - return contentType; -}; - -FormData.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } - - return formHeaders; -}; - -FormData.prototype.getCustomHeaders = function(contentType) { - contentType = contentType ? contentType : 'multipart/form-data'; - - var formHeaders = { - 'content-type': contentType + '; boundary=' + this.getBoundary(), - 'content-length': this.getLengthSync() - }; - - return formHeaders; -}; - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/form-data/form-data/issues/40 - if (this._lengthRetrievers.length) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._lengthRetrievers.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - async.parallel(this._lengthRetrievers, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname - }, defaults); - - // use custom params - } else { - - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - this.pipe(request); - if (cb) { - request.on('error', cb); - request.on('response', cb.bind(this, null)); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/populate.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/populate.js deleted file mode 100644 index 6f64a6d3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/lib/populate.js +++ /dev/null @@ -1,9 +0,0 @@ -// populates missing values -module.exports = function(dst, src) { - for (var prop in src) { - if (src.hasOwnProperty(prop) && !dst[prop]) { - dst[prop] = src[prop]; - } - } - return dst; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/HISTORY.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/HISTORY.md deleted file mode 100644 index 63bd4ea0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/HISTORY.md +++ /dev/null @@ -1,197 +0,0 @@ -2.1.11 / 2016-05-01 -=================== - - * deps: mime-db@~1.23.0 - - Add new mime types - -2.1.10 / 2016-02-15 -=================== - - * deps: mime-db@~1.22.0 - - Add new mime types - - Fix extension of `application/dash+xml` - - Update primary extension for `audio/mp4` - -2.1.9 / 2016-01-06 -================== - - * deps: mime-db@~1.21.0 - - Add new mime types - -2.1.8 / 2015-11-30 -================== - - * deps: mime-db@~1.20.0 - - Add new mime types - -2.1.7 / 2015-09-20 -================== - - * deps: mime-db@~1.19.0 - - Add new mime types - -2.1.6 / 2015-09-03 -================== - - * deps: mime-db@~1.18.0 - - Add new mime types - -2.1.5 / 2015-08-20 -================== - - * deps: mime-db@~1.17.0 - - Add new mime types - -2.1.4 / 2015-07-30 -================== - - * deps: mime-db@~1.16.0 - - Add new mime types - -2.1.3 / 2015-07-13 -================== - - * deps: mime-db@~1.15.0 - - Add new mime types - -2.1.2 / 2015-06-25 -================== - - * deps: mime-db@~1.14.0 - - Add new mime types - -2.1.1 / 2015-06-08 -================== - - * perf: fix deopt during mapping - -2.1.0 / 2015-06-07 -================== - - * Fix incorrectly treating extension-less file name as extension - - i.e. `'path/to/json'` will no longer return `application/json` - * Fix `.charset(type)` to accept parameters - * Fix `.charset(type)` to match case-insensitive - * Improve generation of extension to MIME mapping - * Refactor internals for readability and no argument reassignment - * Prefer `application/*` MIME types from the same source - * Prefer any type over `application/octet-stream` - * deps: mime-db@~1.13.0 - - Add nginx as a source - - Add new mime types - -2.0.14 / 2015-06-06 -=================== - - * deps: mime-db@~1.12.0 - - Add new mime types - -2.0.13 / 2015-05-31 -=================== - - * deps: mime-db@~1.11.0 - - Add new mime types - -2.0.12 / 2015-05-19 -=================== - - * deps: mime-db@~1.10.0 - - Add new mime types - -2.0.11 / 2015-05-05 -=================== - - * deps: mime-db@~1.9.1 - - Add new mime types - -2.0.10 / 2015-03-13 -=================== - - * deps: mime-db@~1.8.0 - - Add new mime types - -2.0.9 / 2015-02-09 -================== - - * deps: mime-db@~1.7.0 - - Add new mime types - - Community extensions ownership transferred from `node-mime` - -2.0.8 / 2015-01-29 -================== - - * deps: mime-db@~1.6.0 - - Add new mime types - -2.0.7 / 2014-12-30 -================== - - * deps: mime-db@~1.5.0 - - Add new mime types - - Fix various invalid MIME type entries - -2.0.6 / 2014-12-30 -================== - - * deps: mime-db@~1.4.0 - - Add new mime types - - Fix various invalid MIME type entries - - Remove example template MIME types - -2.0.5 / 2014-12-29 -================== - - * deps: mime-db@~1.3.1 - - Fix missing extensions - -2.0.4 / 2014-12-10 -================== - - * deps: mime-db@~1.3.0 - - Add new mime types - -2.0.3 / 2014-11-09 -================== - - * deps: mime-db@~1.2.0 - - Add new mime types - -2.0.2 / 2014-09-28 -================== - - * deps: mime-db@~1.1.0 - - Add new mime types - - Add additional compressible - - Update charsets - -2.0.1 / 2014-09-07 -================== - - * Support Node.js 0.6 - -2.0.0 / 2014-09-02 -================== - - * Use `mime-db` - * Remove `.define()` - -1.0.2 / 2014-08-04 -================== - - * Set charset=utf-8 for `text/javascript` - -1.0.1 / 2014-06-24 -================== - - * Add `text/jsx` type - -1.0.0 / 2014-05-12 -================== - - * Return `false` for unknown types - * Set charset=utf-8 for `application/json` - -0.1.0 / 2014-05-02 -================== - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/LICENSE deleted file mode 100644 index 06166077..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Jonathan Ong -Copyright (c) 2015 Douglas Christopher Wilson - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/README.md deleted file mode 100644 index e77d615d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# mime-types - -[![NPM Version][npm-image]][npm-url] -[![NPM Downloads][downloads-image]][downloads-url] -[![Node.js Version][node-version-image]][node-version-url] -[![Build Status][travis-image]][travis-url] -[![Test Coverage][coveralls-image]][coveralls-url] - -The ultimate javascript content-type utility. - -Similar to [node-mime](https://github.com/broofa/node-mime), except: - -- __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, - so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. -- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. -- Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) -- No `.define()` functionality - -Otherwise, the API is compatible. - -## Install - -```sh -$ npm install mime-types -``` - -## Adding Types - -All mime types are based on [mime-db](https://github.com/jshttp/mime-db), -so open a PR there if you'd like to add mime types. - -## API - -```js -var mime = require('mime-types') -``` - -All functions return `false` if input is invalid or not found. - -### mime.lookup(path) - -Lookup the content-type associated with a file. - -```js -mime.lookup('json') // 'application/json' -mime.lookup('.md') // 'text/x-markdown' -mime.lookup('file.html') // 'text/html' -mime.lookup('folder/file.js') // 'application/javascript' -mime.lookup('folder/.htaccess') // false - -mime.lookup('cats') // false -``` - -### mime.contentType(type) - -Create a full content-type header given a content-type or extension. - -```js -mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' -mime.contentType('file.json') // 'application/json; charset=utf-8' - -// from a full path -mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' -``` - -### mime.extension(type) - -Get the default extension for a content-type. - -```js -mime.extension('application/octet-stream') // 'bin' -``` - -### mime.charset(type) - -Lookup the implied default charset of a content-type. - -```js -mime.charset('text/x-markdown') // 'UTF-8' -``` - -### var type = mime.types[extension] - -A map of content-types by extension. - -### [extensions...] = mime.extensions[type] - -A map of extensions by content-type. - -## License - -[MIT](LICENSE) - -[npm-image]: https://img.shields.io/npm/v/mime-types.svg -[npm-url]: https://npmjs.org/package/mime-types -[node-version-image]: https://img.shields.io/node/v/mime-types.svg -[node-version-url]: https://nodejs.org/en/download/ -[travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg -[travis-url]: https://travis-ci.org/jshttp/mime-types -[coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg -[coveralls-url]: https://coveralls.io/r/jshttp/mime-types -[downloads-image]: https://img.shields.io/npm/dm/mime-types.svg -[downloads-url]: https://npmjs.org/package/mime-types diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/index.js deleted file mode 100644 index f7008b24..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/index.js +++ /dev/null @@ -1,188 +0,0 @@ -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var db = require('mime-db') -var extname = require('path').extname - -/** - * Module variables. - * @private - */ - -var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/ -var textTypeRegExp = /^text\//i - -/** - * Module exports. - * @public - */ - -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) - -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) - -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function charset(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - var mime = match && db[match[1].toLowerCase()] - - if (mime && mime.charset) { - return mime.charset - } - - // default text/* to utf-8 - if (match && textTypeRegExp.test(match[1])) { - return 'UTF-8' - } - - return false -} - -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ - -function contentType(str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } - - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str - - if (!mime) { - return false - } - - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - - return mime -} - -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ - -function extension(type) { - if (!type || typeof type !== 'string') { - return false - } - - // TODO: use media-typer - var match = extractTypeRegExp.exec(type) - - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] - - if (!exts || !exts.length) { - return false - } - - return exts[0] -} - -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ - -function lookup(path) { - if (!path || typeof path !== 'string') { - return false - } - - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) - - if (!extension) { - return false - } - - return exports.types[extension] || false -} - -/** - * Populate the extensions and types maps. - * @private - */ - -function populateMaps(extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] - - Object.keys(db).forEach(function forEachMimeType(type) { - var mime = db[type] - var exts = mime.extensions - - if (!exts || !exts.length) { - return - } - - // mime -> extensions - extensions[type] = exts - - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) - - if (types[extension] !== 'application/octet-stream' - && from > to || (from === to && types[extension].substr(0, 12) === 'application/')) { - // skip the remapping - continue - } - } - - // set the extension -> mime - types[extension] = type - } - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/package.json deleted file mode 100644 index d631687f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/node_modules/mime-types/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "_args": [ - [ - "mime-types@^2.1.10", - "/Users/sid/Desktop/code/RustyCode/node_modules/form-data" - ] - ], - "_from": "mime-types@>=2.1.10 <3.0.0", - "_id": "mime-types@2.1.11", - "_inCache": true, - "_installable": true, - "_location": "/form-data/mime-types", - "_nodeVersion": "4.4.3", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/mime-types-2.1.11.tgz_1462165365027_0.7217204745393246" - }, - "_npmUser": { - "email": "doug@somethingdoug.com", - "name": "dougwilson" - }, - "_npmVersion": "2.15.1", - "_phantomChildren": {}, - "_requested": { - "name": "mime-types", - "raw": "mime-types@^2.1.10", - "rawSpec": "^2.1.10", - "scope": null, - "spec": ">=2.1.10 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/form-data" - ], - "_resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", - "_shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c", - "_shrinkwrap": null, - "_spec": "mime-types@^2.1.10", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/form-data", - "bugs": { - "url": "https://github.com/jshttp/mime-types/issues" - }, - "contributors": [ - { - "email": "doug@somethingdoug.com", - "name": "Douglas Christopher Wilson" - }, - { - "email": "fishrock123@rocketmail.com", - "name": "Jeremiah Senkpiel", - "url": "https://searchbeam.jit.su" - }, - { - "email": "me@jongleberry.com", - "name": "Jonathan Ong", - "url": "http://jongleberry.com" - } - ], - "dependencies": { - "mime-db": "~1.23.0" - }, - "description": "The ultimate javascript content-type utility.", - "devDependencies": { - "istanbul": "0.4.3", - "mocha": "1.21.5" - }, - "directories": {}, - "dist": { - "shasum": "c259c471bda808a85d6cd193b430a5fae4473b3c", - "tarball": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz" - }, - "engines": { - "node": ">= 0.6" - }, - "files": [ - "HISTORY.md", - "LICENSE", - "index.js" - ], - "gitHead": "298ffcf490a5d6e60edea7bf7a69036df04846b1", - "homepage": "https://github.com/jshttp/mime-types#readme", - "keywords": [ - "mime", - "types" - ], - "license": "MIT", - "maintainers": [ - { - "email": "doug@somethingdoug.com", - "name": "dougwilson" - }, - { - "email": "fishrock123@rocketmail.com", - "name": "fishrock123" - }, - { - "email": "jonathanrichardong@gmail.com", - "name": "jongleberry" - } - ], - "name": "mime-types", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/mime-types.git" - }, - "scripts": { - "test": "mocha --reporter spec test/test.js", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", - "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" - }, - "version": "2.1.11" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/package.json deleted file mode 100644 index d8b1464b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/package.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "_args": [ - [ - "form-data@~1.0.0-rc1", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "form-data@>=1.0.0-rc1 <1.1.0", - "_id": "form-data@1.0.0-rc4", - "_inCache": true, - "_installable": true, - "_location": "/form-data", - "_nodeVersion": "0.12.11", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/form-data-1.0.0-rc4.tgz_1458059747097_0.14101114077493548" - }, - "_npmUser": { - "email": "iam@alexindigo.com", - "name": "alexindigo" - }, - "_npmVersion": "2.14.9", - "_phantomChildren": { - "mime-db": "1.22.0" - }, - "_requested": { - "name": "form-data", - "raw": "form-data@~1.0.0-rc1", - "rawSpec": "~1.0.0-rc1", - "scope": null, - "spec": ">=1.0.0-rc1 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz", - "_shasum": "05ac6bc22227b43e4461f488161554699d4f8b5e", - "_shrinkwrap": null, - "_spec": "form-data@~1.0.0-rc1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "felix@debuggable.com", - "name": "Felix Geisendörfer", - "url": "http://debuggable.com/" - }, - "browser": "./lib/browser", - "bugs": { - "url": "https://github.com/form-data/form-data/issues" - }, - "dependencies": { - "async": "^1.5.2", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.10" - }, - "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "devDependencies": { - "codacy-coverage": "^1.1.3", - "coveralls": "^2.11.8", - "cross-spawn": "^2.1.5", - "eslint": "^2.4.0", - "fake": "^0.2.2", - "far": "^0.0.7", - "formidable": "^1.0.17", - "istanbul": "^0.4.2", - "pre-commit": "^1.1.2", - "request": "^2.69.0", - "rimraf": "^2.5.2" - }, - "directories": {}, - "dist": { - "shasum": "05ac6bc22227b43e4461f488161554699d4f8b5e", - "tarball": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc4.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "gitHead": "f73996e0508ee2d4b2b376276adfac1de4188ac2", - "homepage": "https://github.com/form-data/form-data#readme", - "license": "MIT", - "main": "./lib/form_data", - "maintainers": [ - { - "email": "felix@debuggable.com", - "name": "felixge" - }, - { - "email": "igor@buran.us", - "name": "idralyuk" - }, - { - "email": "iam@alexindigo.com", - "name": "alexindigo" - }, - { - "email": "mikeal.rogers@gmail.com", - "name": "mikeal" - }, - { - "email": "dtyree77@gmail.com", - "name": "celer" - }, - { - "email": "pierceydylan@gmail.com", - "name": "dylanpiercey" - } - ], - "name": "form-data", - "optionalDependencies": {}, - "pre-commit": [ - "lint", - "test", - "check" - ], - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/form-data/form-data.git" - }, - "scripts": { - "check": "istanbul check-coverage coverage/coverage*.json", - "coverage": "codacy-coverage < ./coverage/lcov.info; true", - "debug": "verbose=1 ./test/run.js", - "lint": "eslint lib/*.js test/*.js test/**/*.js", - "posttest": "istanbul report", - "predebug": "rimraf coverage test/tmp", - "pretest": "rimraf coverage test/tmp", - "test": "istanbul cover --report none test/run.js" - }, - "version": "1.0.0-rc4" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/wercker.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/wercker.yml deleted file mode 100644 index 6b118d1e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/form-data/wercker.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This references the default nodejs container from -# the Docker Hub: https://registry.hub.docker.com/_/node/ -# If you want Nodesource's container you would reference nodesource/node -# Read more about containers on our dev center -# http://devcenter.wercker.com/docs/containers/index.html -box: node -# This is the build pipeline. Pipelines are the core of wercker -# Read more about pipelines on our dev center -# http://devcenter.wercker.com/docs/pipelines/index.html - -# You can also use services such as databases. Read more on our dev center: -# http://devcenter.wercker.com/docs/services/index.html -# services: - # - postgres - # http://devcenter.wercker.com/docs/services/postgresql.html - - # - mongodb - # http://devcenter.wercker.com/docs/services/mongodb.html -build: - # The steps that will be executed on build - # Steps make up the actions in your pipeline - # Read more about steps on our dev center: - # http://devcenter.wercker.com/docs/steps/index.html - steps: - # A step that executes `npm install` command - - npm-install - # A step that executes `npm test` command - - npm-test - - # A custom script step, name value is used in the UI - # and the code value contains the command that get executed - - script: - name: echo nodejs information - code: | - echo "node version $(node -v) running" - echo "npm version $(npm -v) running" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.APACHE2 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.APACHE2 deleted file mode 100644 index 6366c047..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -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. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.MIT b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.MIT deleted file mode 100644 index 6eafbd73..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/index.js deleted file mode 100644 index bba40da8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/index.js +++ /dev/null @@ -1,68 +0,0 @@ - -'use strict'; - -var Stream = require('stream') - -// from -// -// a stream that reads from an source. -// source may be an array, or a function. -// from handles pause behaviour for you. - -module.exports = -function from (source) { - if(Array.isArray(source)) { - source = source.slice() - return from (function (i) { - if(source.length) - this.emit('data', source.shift()) - else - this.emit('end') - return true - }) - } - var s = new Stream(), i = 0 - s.ended = false - s.started = false - s.readable = true - s.writable = false - s.paused = false - s.ended = false - s.pause = function () { - s.started = true - s.paused = true - } - function next () { - s.started = true - if(s.ended) return - while(!s.ended && !s.paused && source.call(s, i++, function () { - if(!s.ended && !s.paused) - next() - })) - ; - } - s.resume = function () { - s.started = true - s.paused = false - next() - } - s.on('end', function () { - s.ended = true - s.readable = false - process.nextTick(s.destroy) - }) - s.destroy = function () { - s.ended = true - s.emit('close') - } - /* - by default, the stream will start emitting at nextTick - if you want, you can pause it, after pipeing. - you can also resume before next tick, and that will also - work. - */ - process.nextTick(function () { - if(!s.started) s.resume() - }) - return s -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/package.json deleted file mode 100644 index 6122c85c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - "from@~0", - "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream" - ] - ], - "_from": "from@>=0.0.0 <1.0.0", - "_id": "from@0.1.3", - "_inCache": true, - "_installable": true, - "_location": "/from", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "1.2.3", - "_phantomChildren": {}, - "_requested": { - "name": "from", - "raw": "from@~0", - "rawSpec": "~0", - "scope": null, - "spec": ">=0.0.0 <1.0.0", - "type": "range" - }, - "_requiredBy": [ - "/event-stream", - "/gulp-symdest/event-stream", - "/gulp-vinyl-zip/event-stream" - ], - "_resolved": "https://registry.npmjs.org/from/-/from-0.1.3.tgz", - "_shasum": "ef63ac2062ac32acf7862e0d40b44b896f22f3bc", - "_shrinkwrap": null, - "_spec": "from@~0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "dominictarr.com" - }, - "bugs": { - "url": "https://github.com/dominictarr/from/issues" - }, - "dependencies": {}, - "description": "Easy way to make a Readable Stream", - "devDependencies": { - "assertions": "~2.3.0", - "asynct": "1", - "stream-spec": "0" - }, - "directories": {}, - "dist": { - "shasum": "ef63ac2062ac32acf7862e0d40b44b896f22f3bc", - "tarball": "https://registry.npmjs.org/from/-/from-0.1.3.tgz" - }, - "homepage": "https://github.com/dominictarr/from#readme", - "keywords": [ - "stream", - "streams", - "readable", - "easy" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "from", - "optionalDependencies": {}, - "readme": "# from\n\nAn easy way to create a `readable Stream`.\n\n## from(function getChunk(count, next))\n\nfrom takes a `getChunk` function and returns a stream. \n\n`getChunk` is called again and again, after each time the user calls `next()`, \nuntil the user emits `'end'`\n\nif `pause()` is called, the `getChunk` won't be called again untill `resume()` is called.\n\n\n```js\nvar from = require('from')\n\nvar stream = \n from(function getChunk(count, next) {\n //do some sort of data\n this.emit('data', whatever)\n \n if(itsOver)\n this.emit('end')\n\n //ready to handle the next chunk\n next()\n //or, if it's sync:\n return true \n })\n```\n\n## from(array)\n\nfrom also takes an `Array` whose elements it emits one after another.\n\n## License\nMIT / Apache2\n", - "readmeFilename": "readme.markdown", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/from.git" - }, - "scripts": { - "test": "asynct test/*.js" - }, - "version": "0.1.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/readme.markdown deleted file mode 100644 index a619163c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/readme.markdown +++ /dev/null @@ -1,38 +0,0 @@ -# from - -An easy way to create a `readable Stream`. - -## from(function getChunk(count, next)) - -from takes a `getChunk` function and returns a stream. - -`getChunk` is called again and again, after each time the user calls `next()`, -until the user emits `'end'` - -if `pause()` is called, the `getChunk` won't be called again untill `resume()` is called. - - -```js -var from = require('from') - -var stream = - from(function getChunk(count, next) { - //do some sort of data - this.emit('data', whatever) - - if(itsOver) - this.emit('end') - - //ready to handle the next chunk - next() - //or, if it's sync: - return true - }) -``` - -## from(array) - -from also takes an `Array` whose elements it emits one after another. - -## License -MIT / Apache2 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/test/index.js deleted file mode 100644 index fafea576..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/from/test/index.js +++ /dev/null @@ -1,141 +0,0 @@ -var from = require('..') -var spec = require('stream-spec') -var a = require('assertions') - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -function pause(stream) { - stream.on('data', function () { - if(Math.random() > 0.1) return - stream.pause() - process.nextTick(function () { - stream.resume() - }) - }) -} - -exports['inc'] = function (test) { - - var fs = from(function (i) { - this.emit('data', i) - if(i >= 99) - return this.emit('end') - return true - }) - - spec(fs).readable().validateOnExit() - - read(fs, function (err, arr) { - test.equal(arr.length, 100) - test.done() - }) -} - -exports['simple'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = from(expected.slice()) - - spec(t) - .readable() - .pausable({strict: true}) - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - -exports['simple pausable'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = from(expected.slice()) - - spec(t) - .readable() - .pausable({strict: true}) - .validateOnExit() - - pause(t) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - -exports['simple (not strictly pausable) setTimeout'] = function (test) { - - var l = 10 - , expected = [] - while(l--) expected.push(l * Math.random()) - - - var _expected = expected.slice() - var t = from(function (i, n) { - var self = this - setTimeout(function () { - if(_expected.length) - self.emit('data', _expected.shift()) - else - self.emit('end') - n() - }, 3) - }) - - /* - using from in this way will not be strictly pausable. - it could be extended to buffer outputs, but I think a better - way would be to use a PauseStream that implements strict pause. - */ - - spec(t) - .readable() - .pausable({strict: false }) - .validateOnExit() - - //pause(t) - var paused = false - var i = setInterval(function () { - if(!paused) t.pause() - else t.resume() - paused = !paused - }, 2) - - t.on('end', function () { - clearInterval(i) - }) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/LICENSE-MIT b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/LICENSE-MIT deleted file mode 100644 index 8c1a8332..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Kyle Robinson Young - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/README.md deleted file mode 100644 index f7d6c3ba..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# gaze [![Build Status](https://travis-ci.org/shama/gaze.png?branch=master)](https://travis-ci.org/shama/gaze) - -A globbing fs.watch wrapper built from the best parts of other fine watch libs. -Compatible with Node.js 0.10/0.8, Windows, OSX and Linux. - -![gaze](http://dontkry.com/images/repos/gaze.png) - -## Usage -Install the module with: `npm install gaze` or place into your `package.json` -and run `npm install`. - -```javascript -var gaze = require('gaze'); - -// Watch all .js files/dirs in process.cwd() -gaze('**/*.js', function(err, watcher) { - // Files have all started watching - // watcher === this - - // Get all watched files - console.log(this.watched()); - - // On file changed - this.on('changed', function(filepath) { - console.log(filepath + ' was changed'); - }); - - // On file added - this.on('added', function(filepath) { - console.log(filepath + ' was added'); - }); - - // On file deleted - this.on('deleted', function(filepath) { - console.log(filepath + ' was deleted'); - }); - - // On changed/added/deleted - this.on('all', function(event, filepath) { - console.log(filepath + ' was ' + event); - }); - - // Get watched files with relative paths - console.log(this.relative()); -}); - -// Also accepts an array of patterns -gaze(['stylesheets/*.css', 'images/**/*.png'], function() { - // Add more patterns later to be watched - this.add(['js/*.js']); -}); -``` - -### Alternate Interface - -```javascript -var Gaze = require('gaze').Gaze; - -var gaze = new Gaze('**/*'); - -// Files have all started watching -gaze.on('ready', function(watcher) { }); - -// A file has been added/changed/deleted has occurred -gaze.on('all', function(event, filepath) { }); -``` - -### Errors - -```javascript -gaze('**/*', function() { - this.on('error', function(err) { - // Handle error here - }); -}); -``` - -### Minimatch / Glob - -See [isaacs's minimatch](https://github.com/isaacs/minimatch) for more -information on glob patterns. - -## Documentation - -### gaze(patterns, [options], callback) - -* `patterns` {String|Array} File patterns to be matched -* `options` {Object} -* `callback` {Function} - * `err` {Error | null} - * `watcher` {Object} Instance of the Gaze watcher - -### Class: gaze.Gaze - -Create a Gaze object by instanting the `gaze.Gaze` class. - -```javascript -var Gaze = require('gaze').Gaze; -var gaze = new Gaze(pattern, options, callback); -``` - -#### Properties - -* `options` The options object passed in. - * `interval` {integer} Interval to pass to fs.watchFile - * `debounceDelay` {integer} Delay for events called in succession for the same - file/event - -#### Events - -* `ready(watcher)` When files have been globbed and watching has begun. -* `all(event, filepath)` When an `added`, `changed` or `deleted` event occurs. -* `added(filepath)` When a file has been added to a watch directory. -* `changed(filepath)` When a file has been changed. -* `deleted(filepath)` When a file has been deleted. -* `renamed(newPath, oldPath)` When a file has been renamed. -* `end()` When the watcher is closed and watches have been removed. -* `error(err)` When an error occurs. -* `nomatch` When no files have been matched. - -#### Methods - -* `emit(event, [...])` Wrapper for the EventEmitter.emit. - `added`|`changed`|`deleted` events will also trigger the `all` event. -* `close()` Unwatch all files and reset the watch instance. -* `add(patterns, callback)` Adds file(s) patterns to be watched. -* `remove(filepath)` removes a file or directory from being watched. Does not - recurse directories. -* `watched()` Returns the currently watched files. -* `relative([dir, unixify])` Returns the currently watched files with relative paths. - * `dir` {string} Only return relative files for this directory. - * `unixify` {boolean} Return paths with `/` instead of `\\` if on Windows. - -## FAQs - -### Why Another `fs.watch` Wrapper? -I liked parts of other `fs.watch` wrappers but none had all the features I -needed. This lib combines the features I needed from other fine watch libs: -Speedy data behavior from -[paulmillr's chokidar](https://github.com/paulmillr/chokidar), API interface -from [mikeal's watch](https://github.com/mikeal/watch) and file globbing using -[isaacs's glob](https://github.com/isaacs/node-glob) which is also used by -[cowboy's Grunt](https://github.com/gruntjs/grunt). - -### How do I fix the error `EMFILE: Too many opened files.`? -This is because of your system's max opened file limit. For OSX the default is -very low (256). Increase your limit temporarily with `ulimit -n 10480`, the -number being the new max limit. - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. -Add unit tests for any new or changed functionality. Lint and test your code -using [grunt](http://gruntjs.com/). - -## Release History -* 0.5.2 - Fix for ENOENT error with non-existent symlinks. -* 0.5.1 - Use setImmediate (process.nextTick for node v0.8) to defer ready/nomatch events (@amasad). -* 0.5.0 - Process is now kept alive while watching files. Emits a nomatch event when no files are matching. -* 0.4.3 - Track file additions in newly created folders (@brett-shwom). -* 0.4.2 - Fix .remove() method to remove a single file in a directory (@kaelzhang). Fixing Cannot call method 'call' of undefined (@krasimir). Track new file additions within folders (@brett-shwom). -* 0.4.1 - Fix watchDir not respecting close in race condition (@chrisirhc). -* 0.4.0 - Drop support for node v0.6. Use globule for file matching. Avoid node v0.10 path.resolve/join errors. Register new files when added to non-existent folder. Multiple instances can now poll the same files (@jpommerening). -* 0.3.4 - Code clean up. Fix path must be strings errors (@groner). Fix incorrect added events (@groner). -* 0.3.3 - Fix for multiple patterns with negate. -* 0.3.2 - Emit `end` before removeAllListeners. -* 0.3.1 - Fix added events within subfolder patterns. -* 0.3.0 - Handle safewrite events, `forceWatchMethod` option removed, bug fixes and watch optimizations (@rgaskill). -* 0.2.2 - Fix issue where subsequent add calls dont get watched (@samcday). removeAllListeners on close. -* 0.2.1 - Fix issue with invalid `added` events in current working dir. -* 0.2.0 - Support and mark folders with `path.sep`. Add `forceWatchMethod` option. Support `renamed` events. -* 0.1.6 - Recognize the `cwd` option properly -* 0.1.5 - Catch too many open file errors -* 0.1.4 - Really fix the race condition with 2 watches -* 0.1.3 - Fix race condition with 2 watches -* 0.1.2 - Read triggering changed event fix -* 0.1.1 - Minor fixes -* 0.1.0 - Initial release - -## License -Copyright (c) 2013 Kyle Robinson Young -Licensed under the MIT license. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/gaze.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/gaze.js deleted file mode 100644 index 28c26533..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/gaze.js +++ /dev/null @@ -1,439 +0,0 @@ -/* - * gaze - * https://github.com/shama/gaze - * - * Copyright (c) 2013 Kyle Robinson Young - * Licensed under the MIT license. - */ - -'use strict'; - -// libs -var util = require('util'); -var EE = require('events').EventEmitter; -var fs = require('fs'); -var path = require('path'); -var globule = require('globule'); -var helper = require('./helper'); - -// shim setImmediate for node v0.8 -var setImmediate = require('timers').setImmediate; -if (typeof setImmediate !== 'function') { - setImmediate = process.nextTick; -} - -// globals -var delay = 10; - -// `Gaze` EventEmitter object to return in the callback -function Gaze(patterns, opts, done) { - var self = this; - EE.call(self); - - // If second arg is the callback - if (typeof opts === 'function') { - done = opts; - opts = {}; - } - - // Default options - opts = opts || {}; - opts.mark = true; - opts.interval = opts.interval || 100; - opts.debounceDelay = opts.debounceDelay || 500; - opts.cwd = opts.cwd || process.cwd(); - this.options = opts; - - // Default done callback - done = done || function() {}; - - // Remember our watched dir:files - this._watched = Object.create(null); - - // Store watchers - this._watchers = Object.create(null); - - // Store watchFile listeners - this._pollers = Object.create(null); - - // Store patterns - this._patterns = []; - - // Cached events for debouncing - this._cached = Object.create(null); - - // Set maxListeners - if (this.options.maxListeners) { - this.setMaxListeners(this.options.maxListeners); - Gaze.super_.prototype.setMaxListeners(this.options.maxListeners); - delete this.options.maxListeners; - } - - // Initialize the watch on files - if (patterns) { - this.add(patterns, done); - } - - // keep the process alive - this._keepalive = setInterval(function() {}, 200); - - return this; -} -util.inherits(Gaze, EE); - -// Main entry point. Start watching and call done when setup -module.exports = function gaze(patterns, opts, done) { - return new Gaze(patterns, opts, done); -}; -module.exports.Gaze = Gaze; - -// Override the emit function to emit `all` events -// and debounce on duplicate events per file -Gaze.prototype.emit = function() { - var self = this; - var args = arguments; - - var e = args[0]; - var filepath = args[1]; - var timeoutId; - - // If not added/deleted/changed/renamed then just emit the event - if (e.slice(-2) !== 'ed') { - Gaze.super_.prototype.emit.apply(self, args); - return this; - } - - // Detect rename event, if added and previous deleted is in the cache - if (e === 'added') { - Object.keys(this._cached).forEach(function(oldFile) { - if (self._cached[oldFile].indexOf('deleted') !== -1) { - args[0] = e = 'renamed'; - [].push.call(args, oldFile); - delete self._cached[oldFile]; - return false; - } - }); - } - - // If cached doesnt exist, create a delay before running the next - // then emit the event - var cache = this._cached[filepath] || []; - if (cache.indexOf(e) === -1) { - helper.objectPush(self._cached, filepath, e); - clearTimeout(timeoutId); - timeoutId = setTimeout(function() { - delete self._cached[filepath]; - }, this.options.debounceDelay); - // Emit the event and `all` event - Gaze.super_.prototype.emit.apply(self, args); - Gaze.super_.prototype.emit.apply(self, ['all', e].concat([].slice.call(args, 1))); - } - - // Detect if new folder added to trigger for matching files within folder - if (e === 'added') { - if (helper.isDir(filepath)) { - fs.readdirSync(filepath).map(function(file) { - return path.join(filepath, file); - }).filter(function(file) { - return globule.isMatch(self._patterns, file, self.options); - }).forEach(function(file) { - self.emit('added', file); - }); - } - } - - return this; -}; - -// Close watchers -Gaze.prototype.close = function(_reset) { - var self = this; - _reset = _reset === false ? false : true; - Object.keys(self._watchers).forEach(function(file) { - self._watchers[file].close(); - }); - self._watchers = Object.create(null); - Object.keys(this._watched).forEach(function(dir) { - self._unpollDir(dir); - }); - if (_reset) { - self._watched = Object.create(null); - setTimeout(function() { - self.emit('end'); - self.removeAllListeners(); - clearInterval(self._keepalive); - }, delay + 100); - } - return self; -}; - -// Add file patterns to be watched -Gaze.prototype.add = function(files, done) { - if (typeof files === 'string') { files = [files]; } - this._patterns = helper.unique.apply(null, [this._patterns, files]); - files = globule.find(this._patterns, this.options); - this._addToWatched(files); - this.close(false); - this._initWatched(done); -}; - -// Dont increment patterns and dont call done if nothing added -Gaze.prototype._internalAdd = function(file, done) { - var files = []; - if (helper.isDir(file)) { - files = [helper.markDir(file)].concat(globule.find(this._patterns, this.options)); - } else { - if (globule.isMatch(this._patterns, file, this.options)) { - files = [file]; - } - } - if (files.length > 0) { - this._addToWatched(files); - this.close(false); - this._initWatched(done); - } -}; - -// Remove file/dir from `watched` -Gaze.prototype.remove = function(file) { - var self = this; - if (this._watched[file]) { - // is dir, remove all files - this._unpollDir(file); - delete this._watched[file]; - } else { - // is a file, find and remove - Object.keys(this._watched).forEach(function(dir) { - var index = self._watched[dir].indexOf(file); - if (index !== -1) { - self._unpollFile(file); - self._watched[dir].splice(index, 1); - return false; - } - }); - } - if (this._watchers[file]) { - this._watchers[file].close(); - } - return this; -}; - -// Return watched files -Gaze.prototype.watched = function() { - return this._watched; -}; - -// Returns `watched` files with relative paths to process.cwd() -Gaze.prototype.relative = function(dir, unixify) { - var self = this; - var relative = Object.create(null); - var relDir, relFile, unixRelDir; - var cwd = this.options.cwd || process.cwd(); - if (dir === '') { dir = '.'; } - dir = helper.markDir(dir); - unixify = unixify || false; - Object.keys(this._watched).forEach(function(dir) { - relDir = path.relative(cwd, dir) + path.sep; - if (relDir === path.sep) { relDir = '.'; } - unixRelDir = unixify ? helper.unixifyPathSep(relDir) : relDir; - relative[unixRelDir] = self._watched[dir].map(function(file) { - relFile = path.relative(path.join(cwd, relDir) || '', file || ''); - if (helper.isDir(file)) { - relFile = helper.markDir(relFile); - } - if (unixify) { - relFile = helper.unixifyPathSep(relFile); - } - return relFile; - }); - }); - if (dir && unixify) { - dir = helper.unixifyPathSep(dir); - } - return dir ? relative[dir] || [] : relative; -}; - -// Adds files and dirs to watched -Gaze.prototype._addToWatched = function(files) { - for (var i = 0; i < files.length; i++) { - var file = files[i]; - var filepath = path.resolve(this.options.cwd, file); - - var dirname = (helper.isDir(file)) ? filepath : path.dirname(filepath); - dirname = helper.markDir(dirname); - - // If a new dir is added - if (helper.isDir(file) && !(filepath in this._watched)) { - helper.objectPush(this._watched, filepath, []); - } - - if (file.slice(-1) === '/') { filepath += path.sep; } - helper.objectPush(this._watched, path.dirname(filepath) + path.sep, filepath); - - // add folders into the mix - var readdir = fs.readdirSync(dirname); - for (var j = 0; j < readdir.length; j++) { - var dirfile = path.join(dirname, readdir[j]); - if (fs.lstatSync(dirfile).isDirectory()) { - helper.objectPush(this._watched, dirname, dirfile + path.sep); - } - } - } - return this; -}; - -Gaze.prototype._watchDir = function(dir, done) { - var self = this; - var timeoutId; - try { - this._watchers[dir] = fs.watch(dir, function(event) { - // race condition. Let's give the fs a little time to settle down. so we - // don't fire events on non existent files. - clearTimeout(timeoutId); - timeoutId = setTimeout(function() { - // race condition. Ensure that this directory is still being watched - // before continuing. - if ((dir in self._watchers) && fs.existsSync(dir)) { - done(null, dir); - } - }, delay + 100); - }); - } catch (err) { - return this._handleError(err); - } - return this; -}; - -Gaze.prototype._unpollFile = function(file) { - if (this._pollers[file]) { - fs.unwatchFile(file, this._pollers[file] ); - delete this._pollers[file]; - } - return this; -}; - -Gaze.prototype._unpollDir = function(dir) { - this._unpollFile(dir); - for (var i = 0; i < this._watched[dir].length; i++) { - this._unpollFile(this._watched[dir][i]); - } -}; - -Gaze.prototype._pollFile = function(file, done) { - var opts = { persistent: true, interval: this.options.interval }; - if (!this._pollers[file]) { - this._pollers[file] = function(curr, prev) { - done(null, file); - }; - try { - fs.watchFile(file, opts, this._pollers[file]); - } catch (err) { - return this._handleError(err); - } - } - return this; -}; - -// Initialize the actual watch on `watched` files -Gaze.prototype._initWatched = function(done) { - var self = this; - var cwd = this.options.cwd || process.cwd(); - var curWatched = Object.keys(self._watched); - - // if no matching files - if (curWatched.length < 1) { - // Defer to emitting to give a chance to attach event handlers. - setImmediate(function () { - self.emit('ready', self); - if (done) { done.call(self, null, self); } - self.emit('nomatch'); - }); - return; - } - - helper.forEachSeries(curWatched, function(dir, next) { - dir = dir || ''; - var files = self._watched[dir]; - // Triggered when a watched dir has an event - self._watchDir(dir, function(event, dirpath) { - var relDir = cwd === dir ? '.' : path.relative(cwd, dir); - relDir = relDir || ''; - - fs.readdir(dirpath, function(err, current) { - if (err) { return self.emit('error', err); } - if (!current) { return; } - - try { - // append path.sep to directories so they match previous. - current = current.map(function(curPath) { - if (fs.existsSync(path.join(dir, curPath)) && fs.lstatSync(path.join(dir, curPath)).isDirectory()) { - return curPath + path.sep; - } else { - return curPath; - } - }); - } catch (err) { - // race condition-- sometimes the file no longer exists - } - - // Get watched files for this dir - var previous = self.relative(relDir); - - // If file was deleted - previous.filter(function(file) { - return current.indexOf(file) < 0; - }).forEach(function(file) { - if (!helper.isDir(file)) { - var filepath = path.join(dir, file); - self.remove(filepath); - self.emit('deleted', filepath); - } - }); - - // If file was added - current.filter(function(file) { - return previous.indexOf(file) < 0; - }).forEach(function(file) { - // Is it a matching pattern? - var relFile = path.join(relDir, file); - // Add to watch then emit event - self._internalAdd(relFile, function() { - self.emit('added', path.join(dir, file)); - }); - }); - - }); - }); - - // Watch for change/rename events on files - files.forEach(function(file) { - if (helper.isDir(file)) { return; } - self._pollFile(file, function(err, filepath) { - // Only emit changed if the file still exists - // Prevents changed/deleted duplicate events - if (fs.existsSync(filepath)) { - self.emit('changed', filepath); - } - }); - }); - - next(); - }, function() { - - // Return this instance of Gaze - // delay before ready solves a lot of issues - setTimeout(function() { - self.emit('ready', self); - if (done) { done.call(self, null, self); } - }, delay + 100); - - }); -}; - -// If an error, handle it here -Gaze.prototype._handleError = function(err) { - if (err.code === 'EMFILE') { - return this.emit('error', new Error('EMFILE: Too many opened files.')); - } - return this.emit('error', err); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/helper.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/helper.js deleted file mode 100644 index e1ccc80e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/lib/helper.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -var path = require('path'); -var helper = module.exports = {}; - -// Returns boolean whether filepath is dir terminated -helper.isDir = function isDir(dir) { - if (typeof dir !== 'string') { return false; } - return (dir.slice(-(path.sep.length)) === path.sep); -}; - -// Create a `key:[]` if doesnt exist on `obj` then push or concat the `val` -helper.objectPush = function objectPush(obj, key, val) { - if (obj[key] == null) { obj[key] = []; } - if (Array.isArray(val)) { obj[key] = obj[key].concat(val); } - else if (val) { obj[key].push(val); } - return obj[key] = helper.unique(obj[key]); -}; - -// Ensures the dir is marked with path.sep -helper.markDir = function markDir(dir) { - if (typeof dir === 'string' && - dir.slice(-(path.sep.length)) !== path.sep && - dir !== '.') { - dir += path.sep; - } - return dir; -}; - -// Changes path.sep to unix ones for testing -helper.unixifyPathSep = function unixifyPathSep(filepath) { - return (process.platform === 'win32') ? String(filepath).replace(/\\/g, '/') : filepath; -}; - -/** - * Lo-Dash 1.0.1 - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.4.4 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. - * Available under MIT license - */ -helper.unique = function unique() { var array = Array.prototype.concat.apply(Array.prototype, arguments); var result = []; for (var i = 0; i < array.length; i++) { if (result.indexOf(array[i]) === -1) { result.push(array[i]); } } return result; }; - -/** - * Copyright (c) 2010 Caolan McMahon - * Available under MIT license - */ -helper.forEachSeries = function forEachSeries(arr, iterator, callback) { - if (!arr.length) { return callback(); } - var completed = 0; - var iterate = function() { - iterator(arr[completed], function (err) { - if (err) { - callback(err); - callback = function() {}; - } else { - completed += 1; - if (completed === arr.length) { - callback(null); - } else { - iterate(); - } - } - }); - }; - iterate(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/package.json deleted file mode 100644 index 63a548f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gaze/package.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "_args": [ - [ - "gaze@^0.5.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-watcher" - ] - ], - "_from": "gaze@>=0.5.1 <0.6.0", - "_id": "gaze@0.5.2", - "_inCache": true, - "_installable": true, - "_location": "/gaze", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "kyle@dontkry.com", - "name": "shama" - }, - "_npmVersion": "3.3.4", - "_phantomChildren": {}, - "_requested": { - "name": "gaze", - "raw": "gaze@^0.5.1", - "rawSpec": "^0.5.1", - "scope": null, - "spec": ">=0.5.1 <0.6.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-watcher", - "/gulp-symdest/glob-watcher" - ], - "_resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "_shasum": "40b709537d24d1d45767db5a908689dfe69ac44f", - "_shrinkwrap": null, - "_spec": "gaze@^0.5.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-watcher", - "author": { - "email": "kyle@dontkry.com", - "name": "Kyle Robinson Young" - }, - "bugs": { - "url": "https://github.com/shama/gaze/issues" - }, - "contributors": [ - { - "name": "Kyle Robinson Young", - "url": "http://dontkry.com" - }, - { - "name": "Sam Day", - "url": "http://sam.is-super-awesome.com" - }, - { - "name": "Roarke Gaskill", - "url": "http://starkinvestments.com" - }, - { - "name": "Lance Pollard", - "url": "http://lancepollard.com/" - }, - { - "name": "Daniel Fagnan", - "url": "http://hydrocodedesign.com/" - }, - { - "name": "Jonas", - "url": "http://jpommerening.github.io/" - }, - { - "name": "Chris Chua", - "url": "http://sirh.cc/" - }, - { - "name": "Kael Zhang", - "url": "http://kael.me" - }, - { - "name": "Krasimir Tsonev", - "url": "http://krasimirtsonev.com/blog" - }, - { - "name": "brett-shwom" - } - ], - "dependencies": { - "globule": "~0.1.0" - }, - "description": "A globbing fs.watch wrapper built from the best parts of other fine watch libs.", - "devDependencies": { - "async": "~0.2.10", - "grunt": "~0.4.1", - "grunt-benchmark": "~0.2.0", - "grunt-cli": "~0.1.13", - "grunt-contrib-jshint": "~0.6.0", - "grunt-contrib-nodeunit": "~0.2.0", - "rimraf": "~2.2.6" - }, - "directories": {}, - "dist": { - "shasum": "40b709537d24d1d45767db5a908689dfe69ac44f", - "tarball": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz" - }, - "engines": { - "node": ">= 0.8.0" - }, - "files": [ - "lib", - "LICENSE-MIT" - ], - "gitHead": "52007df64a841ccf52b9f9cd617cd24a4e2ddf8b", - "homepage": "https://github.com/shama/gaze", - "keywords": [ - "watch", - "glob" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/shama/gaze/blob/master/LICENSE-MIT" - } - ], - "main": "lib/gaze", - "maintainers": [ - { - "email": "josh@6bit.com", - "name": "joshperry" - }, - { - "email": "kyle@dontkry.com", - "name": "shama" - } - ], - "name": "gaze", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/shama/gaze.git" - }, - "scripts": { - "test": "grunt nodeunit -v" - }, - "version": "0.5.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/README.md deleted file mode 100644 index 693bff87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# generate-function - -Module that helps you write generated functions in Node - -``` -npm install generate-function -``` - -[![build status](http://img.shields.io/travis/mafintosh/generate-function.svg?style=flat)](http://travis-ci.org/mafintosh/generate-function) - -## Disclamer - -Writing code that generates code is hard. -You should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc). - -## Usage - -``` js -var genfun = require('generate-function') - -var addNumber = function(val) { - var fn = genfun() - ('function add(n) {') - ('return n + %d', val) // supports format strings to insert values - ('}') - - return fn.toFunction() // will compile the function -} - -var add2 = addNumber(2) - -console.log('1+2=', add2(1)) -console.log(add2.toString()) // prints the generated function -``` - -If you need to close over variables in your generated function pass them to `toFunction(scope)` - -``` js -var multiply = function(a, b) { - return a * b -} - -var addAndMultiplyNumber = function(val) { - var fn = genfun() - ('function(n) {') - ('if (typeof n !== "number") {') // ending a line with { will indent the source - ('throw new Error("argument should be a number")') - ('}') - ('var result = multiply(%d, n+%d)', val, val) - ('return result') - ('}') - - // use fn.toString() if you want to see the generated source - - return fn.toFunction({ - multiply: multiply - }) -} - -var addAndMultiply2 = addAndMultiplyNumber(2) - -console.log('(3 + 2) * 2 =', addAndMultiply2(3)) -``` - -## Related - -See [generate-object-property](https://github.com/mafintosh/generate-object-property) if you need to safely generate code that -can be used to reference an object property - -## License - -MIT \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/example.js deleted file mode 100644 index 8d1fee16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/example.js +++ /dev/null @@ -1,27 +0,0 @@ -var genfun = require('./') - -var multiply = function(a, b) { - return a * b -} - -var addAndMultiplyNumber = function(val) { - var fn = genfun() - ('function(n) {') - ('if (typeof n !== "number") {') // ending a line with { will indent the source - ('throw new Error("argument should be a number")') - ('}') - ('var result = multiply(%d, n+%d)', val, val) - ('return result') - ('}') - - // use fn.toString() if you want to see the generated source - - return fn.toFunction({ - multiply: multiply - }) -} - -var addAndMultiply2 = addAndMultiplyNumber(2) - -console.log(addAndMultiply2.toString()) -console.log('(3 + 2) * 2 =', addAndMultiply2(3)) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/index.js deleted file mode 100644 index 37e064bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/index.js +++ /dev/null @@ -1,61 +0,0 @@ -var util = require('util') - -var INDENT_START = /[\{\[]/ -var INDENT_END = /[\}\]]/ - -module.exports = function() { - var lines = [] - var indent = 0 - - var push = function(str) { - var spaces = '' - while (spaces.length < indent*2) spaces += ' ' - lines.push(spaces+str) - } - - var line = function(fmt) { - if (!fmt) return line - - if (INDENT_END.test(fmt.trim()[0]) && INDENT_START.test(fmt[fmt.length-1])) { - indent-- - push(util.format.apply(util, arguments)) - indent++ - return line - } - if (INDENT_START.test(fmt[fmt.length-1])) { - push(util.format.apply(util, arguments)) - indent++ - return line - } - if (INDENT_END.test(fmt.trim()[0])) { - indent-- - push(util.format.apply(util, arguments)) - return line - } - - push(util.format.apply(util, arguments)) - return line - } - - line.toString = function() { - return lines.join('\n') - } - - line.toFunction = function(scope) { - var src = 'return ('+line.toString()+')' - - var keys = Object.keys(scope || {}).map(function(key) { - return key - }) - - var vals = keys.map(function(key) { - return scope[key] - }) - - return Function.apply(null, keys.concat(src)).apply(null, vals) - } - - if (arguments.length) line.apply(null, arguments) - - return line -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/package.json deleted file mode 100644 index 59c5dbaa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_args": [ - [ - "generate-function@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid" - ] - ], - "_from": "generate-function@>=2.0.0 <3.0.0", - "_id": "generate-function@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/generate-function", - "_npmUser": { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - }, - "_npmVersion": "1.4.23", - "_phantomChildren": {}, - "_requested": { - "name": "generate-function", - "raw": "generate-function@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/is-my-json-valid" - ], - "_resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "_shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74", - "_shrinkwrap": null, - "_spec": "generate-function@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid", - "author": { - "name": "Mathias Buus" - }, - "bugs": { - "url": "https://github.com/mafintosh/generate-function/issues" - }, - "dependencies": {}, - "description": "Module that helps you write generated functions in Node", - "devDependencies": { - "tape": "^2.13.4" - }, - "directories": {}, - "dist": { - "shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74", - "tarball": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "gitHead": "3d5fc8de5859be95f58e3af9bfb5f663edd95149", - "homepage": "https://github.com/mafintosh/generate-function", - "keywords": [ - "generate", - "code", - "generation", - "function", - "performance" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - } - ], - "name": "generate-function", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mafintosh/generate-function.git" - }, - "scripts": { - "test": "tape test.js" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/test.js deleted file mode 100644 index 2768893e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-function/test.js +++ /dev/null @@ -1,33 +0,0 @@ -var tape = require('tape') -var genfun = require('./') - -tape('generate add function', function(t) { - var fn = genfun() - ('function add(n) {') - ('return n + %d', 42) - ('}') - - t.same(fn.toString(), 'function add(n) {\n return n + 42\n}', 'code is indented') - t.same(fn.toFunction()(10), 52, 'function works') - t.end() -}) - -tape('generate function + closed variables', function(t) { - var fn = genfun() - ('function add(n) {') - ('return n + %d + number', 42) - ('}') - - var notGood = fn.toFunction() - var good = fn.toFunction({number:10}) - - try { - notGood(10) - t.ok(false, 'function should not work') - } catch (err) { - t.same(err.message, 'number is not defined', 'throws reference error') - } - - t.same(good(11), 63, 'function with closed var works') - t.end() -}) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/LICENSE deleted file mode 100644 index 757562ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Mathias Buus - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/README.md deleted file mode 100644 index 0ee04613..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# generate-object-property - -Generate safe JS code that can used to reference a object property - - npm install generate-object-property - -[![build status](http://img.shields.io/travis/mafintosh/generate-object-property.svg?style=flat)](http://travis-ci.org/mafintosh/generate-object-property) - -## Usage - -``` js -var gen = require('generate-object-property'); -console.log(gen('a','b')); // prints a.b -console.log(gen('a', 'foo-bar')); // prints a["foo-bar"] -``` - -## License - -MIT \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/index.js deleted file mode 100644 index 5dc9f776..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var isProperty = require('is-property') - -var gen = function(obj, prop) { - return isProperty(prop) ? obj+'.'+prop : obj+'['+JSON.stringify(prop)+']' -} - -gen.valid = isProperty -gen.property = function (prop) { - return isProperty(prop) ? prop : JSON.stringify(prop) -} - -module.exports = gen diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/package.json deleted file mode 100644 index 1fe5e437..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_args": [ - [ - "generate-object-property@^1.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid" - ] - ], - "_from": "generate-object-property@>=1.1.0 <2.0.0", - "_id": "generate-object-property@1.2.0", - "_inCache": true, - "_installable": true, - "_location": "/generate-object-property", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - }, - "_npmVersion": "2.9.0", - "_phantomChildren": {}, - "_requested": { - "name": "generate-object-property", - "raw": "generate-object-property@^1.1.0", - "rawSpec": "^1.1.0", - "scope": null, - "spec": ">=1.1.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/is-my-json-valid" - ], - "_resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "_shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0", - "_shrinkwrap": null, - "_spec": "generate-object-property@^1.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid", - "author": { - "name": "Mathias Buus", - "url": "@mafintosh" - }, - "bugs": { - "url": "https://github.com/mafintosh/generate-object-property/issues" - }, - "dependencies": { - "is-property": "^1.0.0" - }, - "description": "Generate safe JS code that can used to reference a object property", - "devDependencies": { - "tape": "^2.13.0" - }, - "directories": {}, - "dist": { - "shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0", - "tarball": "http://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" - }, - "gitHead": "0dd7d411018de54b2eae63b424c15b3e50bd678c", - "homepage": "https://github.com/mafintosh/generate-object-property", - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mathiasbuus@gmail.com", - "name": "mafintosh" - } - ], - "name": "generate-object-property", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mafintosh/generate-object-property.git" - }, - "scripts": { - "test": "tape test.js" - }, - "version": "1.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/test.js deleted file mode 100644 index 6c299c67..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/generate-object-property/test.js +++ /dev/null @@ -1,12 +0,0 @@ -var tape = require('tape') -var gen = require('./') - -tape('valid', function(t) { - t.same(gen('a', 'b'), 'a.b') - t.end() -}) - -tape('invalid', function(t) { - t.same(gen('a', '-b'), 'a["-b"]') - t.end() -}) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/index.js deleted file mode 100644 index 0f1aeb3d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict'; - -module.exports = function (cb) { - var stdin = process.stdin; - var ret = ''; - - if (stdin.isTTY) { - setImmediate(cb, ''); - return; - } - - stdin.setEncoding('utf8'); - - stdin.on('readable', function () { - var chunk; - - while (chunk = stdin.read()) { - ret += chunk; - } - }); - - stdin.on('end', function () { - cb(ret); - }); -}; - -module.exports.buffer = function (cb) { - var stdin = process.stdin; - var ret = []; - var len = 0; - - if (stdin.isTTY) { - setImmediate(cb, new Buffer('')); - return; - } - - stdin.on('readable', function () { - var chunk; - - while (chunk = stdin.read()) { - ret.push(chunk); - len += chunk.length; - } - }); - - stdin.on('end', function () { - cb(Buffer.concat(ret, len)); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/package.json deleted file mode 100644 index d7bcda4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "get-stdin@^4.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/dateformat" - ] - ], - "_from": "get-stdin@>=4.0.1 <5.0.0", - "_id": "get-stdin@4.0.1", - "_inCache": true, - "_installable": true, - "_location": "/get-stdin", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "get-stdin", - "raw": "get-stdin@^4.0.1", - "rawSpec": "^4.0.1", - "scope": null, - "spec": ">=4.0.1 <5.0.0", - "type": "range" - }, - "_requiredBy": [ - "/dateformat", - "/strip-indent" - ], - "_resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "_shasum": "b968c6b0a04384324902e8bf1a5df32579a450fe", - "_shrinkwrap": null, - "_spec": "get-stdin@^4.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/dateformat", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/get-stdin/issues" - }, - "dependencies": {}, - "description": "Easier stdin", - "devDependencies": { - "ava": "0.0.4", - "buffer-equal": "0.0.1" - }, - "directories": {}, - "dist": { - "shasum": "b968c6b0a04384324902e8bf1a5df32579a450fe", - "tarball": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "65c744975229b25d6cc5c7546f49b6ad9099553f", - "homepage": "https://github.com/sindresorhus/get-stdin", - "keywords": [ - "std", - "stdin", - "stdio", - "concat", - "buffer", - "stream", - "process", - "stream" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "get-stdin", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/get-stdin.git" - }, - "scripts": { - "test": "node test.js && node test-buffer.js && echo unicorns | node test-real.js" - }, - "version": "4.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/readme.md deleted file mode 100644 index bc1d32a8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/get-stdin/readme.md +++ /dev/null @@ -1,44 +0,0 @@ -# get-stdin [![Build Status](https://travis-ci.org/sindresorhus/get-stdin.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stdin) - -> Easier stdin - - -## Install - -```sh -$ npm install --save get-stdin -``` - - -## Usage - -```js -// example.js -var stdin = require('get-stdin'); - -stdin(function (data) { - console.log(data); - //=> unicorns -}); -``` - -```sh -$ echo unicorns | node example.js -unicorns -``` - - -## API - -### stdin(callback) - -Get `stdin` as a string. - -### stdin.buffer(callback) - -Get `stdin` as a buffer. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.npmignore deleted file mode 100644 index a4261fc0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.npmignore +++ /dev/null @@ -1,8 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools -coverage diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.travis.yml deleted file mode 100644 index d8b5833a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "5.10" - - "4.4" - - "4.1" - - "0.12" - - "0.10" -before_install: - - "make check" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/LICENSE deleted file mode 100644 index f6d947d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/README.md deleted file mode 100644 index 6e4a50f6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## getpass - -Get a password from the terminal. Sounds simple? Sounds like the `readline` -module should be able to do it? NOPE. - -## Install and use it - -```bash -npm install --save getpass -``` - -```javascript -const mod_getpass = require('getpass'); -``` - -## API - -### `mod_getpass.getPass([options, ]callback)` - -Gets a password from the terminal. If available, this uses `/dev/tty` to avoid -interfering with any data being piped in or out of stdio. - -This function prints a prompt (by default `Password:`) and then accepts input -without echoing. - -Parameters: - - * `options`, an Object, with properties: - * `prompt`, an optional String - * `callback`, a `Func(error, password)`, with arguments: - * `error`, either `null` (no error) or an `Error` instance - * `password`, a String diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/lib/index.js deleted file mode 100644 index 55a7718c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/lib/index.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2016, Joyent, Inc. All rights reserved. - * Author: Alex Wilson - * - * 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. -*/ - -module.exports = { - getPass: getPass -}; - -const mod_tty = require('tty'); -const mod_fs = require('fs'); -const mod_assert = require('assert-plus'); - -var BACKSPACE = String.fromCharCode(127); -var CTRLC = '\u0003'; -var CTRLD = '\u0004'; - -function getPass(opts, cb) { - if (typeof (opts) === 'function' && cb === undefined) { - cb = opts; - opts = {}; - } - mod_assert.object(opts, 'options'); - mod_assert.func(cb, 'callback'); - - mod_assert.optionalString(opts.prompt, 'options.prompt'); - if (opts.prompt === undefined) - opts.prompt = 'Password'; - - openTTY(function (err, rfd, wfd, rtty, wtty) { - if (err) { - cb(err); - return; - } - - wtty.write(opts.prompt + ':'); - rtty.resume(); - rtty.setRawMode(true); - rtty.resume(); - rtty.setEncoding('utf8'); - - var pw = ''; - rtty.on('data', onData); - - function onData(data) { - var str = data.toString('utf8'); - for (var i = 0; i < str.length; ++i) { - var ch = str[i]; - switch (ch) { - case '\r': - case '\n': - case CTRLD: - cleanup(); - cb(null, pw); - return; - case CTRLC: - cleanup(); - cb(new Error('Aborted')); - return; - case BACKSPACE: - pw = pw.slice(0, pw.length - 1); - break; - default: - pw += ch; - break; - } - } - } - - function cleanup() { - wtty.write('\r\n'); - rtty.setRawMode(false); - rtty.pause(); - rtty.removeListener('data', onData); - if (wfd !== undefined && wfd !== rfd) { - wtty.end(); - mod_fs.closeSync(wfd); - } - if (rfd !== undefined) { - rtty.end(); - mod_fs.closeSync(rfd); - } - } - }); -} - -function openTTY(cb) { - mod_fs.open('/dev/tty', 'r+', function (err, rttyfd) { - if ((err && (err.code === 'ENOENT' || err.code === 'EACCES')) || - (process.version.match(/^v0[.][0-8][.]/))) { - cb(null, undefined, undefined, process.stdin, - process.stdout); - return; - } - var rtty = new mod_tty.ReadStream(rttyfd); - mod_fs.open('/dev/tty', 'w+', function (err3, wttyfd) { - var wtty = new mod_tty.WriteStream(wttyfd); - if (err3) { - cb(err3); - return; - } - cb(null, rttyfd, wttyfd, rtty, wtty); - }); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/AUTHORS b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/AUTHORS deleted file mode 100644 index 1923524f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Dave Eddy -Fred Kuo -Lars-Magnus Skog -Mark Cavage -Patrick Mooney -Rob Gulewich diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/CHANGES.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/CHANGES.md deleted file mode 100644 index 57d92bfd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/CHANGES.md +++ /dev/null @@ -1,14 +0,0 @@ -# assert-plus Changelog - -## 1.0.0 - -- *BREAKING* assert.number (and derivatives) now accept Infinity as valid input -- Add assert.finite check. Previous assert.number callers should use this if - they expect Infinity inputs to throw. - -## 0.2.0 - -- Fix `assert.object(null)` so it throws -- Fix optional/arrayOf exports for non-type-of asserts -- Add optiona/arrayOf exports for Stream/Date/Regex/uuid -- Add basic unit test coverage diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/README.md deleted file mode 100644 index ec200d16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE\_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - -```javascript - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id'); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } -``` - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object. (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - -```javascript - function test(foo) { - assert.string(foo, 'foo'); - } -``` - -There you go. You can check that arrays are of a homogeneous type with `Arrayof$Type`: - -```javascript - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } -``` - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - -```javascript - assert.optionalString(foo, 'foo'); -``` - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. Be advised: The standard functions re-exported from `assert` are -also disabled in assert-plus if NDEBUG is specified. Using them directly from -the `assert` module avoids this behavior. - -The complete list of APIs is: - -* assert.array -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.finite -* assert.object -* assert.string -* assert.stream -* assert.date -* assert.regexp -* assert.uuid -* assert.arrayOfArray -* assert.arrayOfBool -* assert.arrayOfBuffer -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfFinite -* assert.arrayOfObject -* assert.arrayOfString -* assert.arrayOfStream -* assert.arrayOfDate -* assert.arrayOfRegexp -* assert.arrayOfUuid -* assert.optionalArray -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalFinite -* assert.optionalObject -* assert.optionalString -* assert.optionalStream -* assert.optionalDate -* assert.optionalRegexp -* assert.optionalUuid -* assert.optionalArrayOfArray -* assert.optionalArrayOfBool -* assert.optionalArrayOfBuffer -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfFinite -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.optionalArrayOfStream -* assert.optionalArrayOfDate -* assert.optionalArrayOfRegexp -* assert.optionalArrayOfUuid -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -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. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/assert.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/assert.js deleted file mode 100644 index 26f944ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/package.json deleted file mode 100644 index 038f1a03..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/node_modules/assert-plus/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "assert-plus@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/getpass" - ] - ], - "_from": "assert-plus@>=1.0.0 <2.0.0", - "_id": "assert-plus@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/getpass/assert-plus", - "_nodeVersion": "0.10.40", - "_npmUser": { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - }, - "_npmVersion": "3.3.9", - "_phantomChildren": {}, - "_requested": { - "name": "assert-plus", - "raw": "assert-plus@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/getpass" - ], - "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "_shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "_shrinkwrap": null, - "_spec": "assert-plus@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/getpass", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-assert-plus/issues" - }, - "contributors": [ - { - "email": "dave@daveeddy.com", - "name": "Dave Eddy" - }, - { - "email": "fred.kuo@joyent.com", - "name": "Fred Kuo" - }, - { - "email": "ralphtheninja@riseup.net", - "name": "Lars-Magnus Skog" - }, - { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - { - "email": "pmooney@pfmooney.com", - "name": "Patrick Mooney" - }, - { - "email": "robert.gulewich@joyent.com", - "name": "Rob Gulewich" - } - ], - "dependencies": {}, - "description": "Extra assertions on top of node's assert module", - "devDependencies": { - "faucet": "0.0.1", - "tape": "4.2.2" - }, - "directories": {}, - "dist": { - "shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/mcavage/node-assert-plus#readme", - "license": "MIT", - "main": "./assert.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - } - ], - "name": "assert-plus", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mcavage/node-assert-plus.git" - }, - "scripts": { - "test": "tape tests/*.js | ./node_modules/.bin/faucet" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/package.json deleted file mode 100644 index 9fdb8ec7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/getpass/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_args": [ - [ - "getpass@^0.1.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "getpass@>=0.1.1 <0.2.0", - "_id": "getpass@0.1.6", - "_inCache": true, - "_installable": true, - "_location": "/getpass", - "_nodeVersion": "0.12.9", - "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/getpass-0.1.6.tgz_1461907090215_0.6450737570412457" - }, - "_npmUser": { - "email": "alex@cooperi.net", - "name": "arekinath" - }, - "_npmVersion": "2.14.9", - "_phantomChildren": {}, - "_requested": { - "name": "getpass", - "raw": "getpass@^0.1.1", - "rawSpec": "^0.1.1", - "scope": null, - "spec": ">=0.1.1 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "_shasum": "283ffd9fc1256840875311c1b60e8c40187110e6", - "_shrinkwrap": null, - "_spec": "getpass@^0.1.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "email": "alex.wilson@joyent.com", - "name": "Alex Wilson" - }, - "bugs": { - "url": "https://github.com/arekinath/node-getpass/issues" - }, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "description": "getpass for node.js", - "devDependencies": { - "json": "^9.0.3", - "pty.js": "^0.3.0", - "tape": "^4.4.0" - }, - "directories": {}, - "dist": { - "shasum": "283ffd9fc1256840875311c1b60e8c40187110e6", - "tarball": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" - }, - "gitHead": "e7fdf43ad60aa520f894d41856852aa320f36646", - "homepage": "https://github.com/arekinath/node-getpass#readme", - "license": "MIT", - "main": "lib/index.js", - "maintainers": [ - { - "email": "alex@cooperi.net", - "name": "arekinath" - } - ], - "name": "getpass", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/arekinath/node-getpass.git" - }, - "scripts": { - "test": "tape test/*.test.js" - }, - "version": "0.1.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/LICENSE deleted file mode 100755 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/README.md deleted file mode 100644 index b0dbd454..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# glob-stream [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url] - - -## Information - - - - - - - - - - - - - -
    Packageglob-stream
    DescriptionFile system globs as a stream
    Node Version>= 0.9
    - -This is a simple wrapper around node-glob to make it streamy. - -## Usage - -```javascript -var gs = require('glob-stream'); - -var stream = gs.create("./files/**/*.coffee", {options}); - -stream.on('data', function(file){ - // file has path, base, and cwd attrs -}); -``` - -You can pass any combination of globs. One caveat is that you can not only pass a glob negation, you must give it at least one positive glob so it knows where to start. All given must match for the file to be returned. - -### Options - -- cwd - - Default is `process.cwd()` -- base - - Default is everything before a glob starts (see [glob2base](https://github.com/wearefractal/glob2base)) -- cwdbase - - Default is `false` - - When true it is the same as saying opt.base = opt.cwd - -This argument is passed directly to [node-glob](https://github.com/isaacs/node-glob) so check there for more options - -#### Glob - -```javascript -var stream = gs.create(["./**/*.js", "!./node_modules/**/*.*"]); -``` - -[npm-url]: https://npmjs.org/package/glob-stream -[npm-image]: https://badge.fury.io/js/glob-stream.png - -[travis-url]: https://travis-ci.org/wearefractal/glob-stream -[travis-image]: https://travis-ci.org/wearefractal/glob-stream.png?branch=master - -[coveralls-url]: https://coveralls.io/r/wearefractal/glob-stream -[coveralls-image]: https://coveralls.io/repos/wearefractal/glob-stream/badge.png - -[depstat-url]: https://david-dm.org/wearefractal/glob-stream -[depstat-image]: https://david-dm.org/wearefractal/glob-stream.png - -[david-url]: https://david-dm.org/wearefractal/glob-stream -[david-image]: https://david-dm.org/wearefractal/glob-stream.png?theme=shields.io diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/index.js deleted file mode 100644 index 0960c7c7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/index.js +++ /dev/null @@ -1,117 +0,0 @@ -/*jslint node: true */ - -'use strict'; - -var through2 = require('through2'); -var Combine = require('ordered-read-streams'); -var unique = require('unique-stream'); - -var glob = require('glob'); -var minimatch = require('minimatch'); -var glob2base = require('glob2base'); -var path = require('path'); - -var gs = { - // creates a stream for a single glob or filter - createStream: function(ourGlob, negatives, opt) { - if (!negatives) negatives = []; - if (!opt) opt = {}; - if (typeof opt.cwd !== 'string') opt.cwd = process.cwd(); - if (typeof opt.dot !== 'boolean') opt.dot = false; - if (typeof opt.silent !== 'boolean') opt.silent = true; - if (typeof opt.nonull !== 'boolean') opt.nonull = false; - if (typeof opt.cwdbase !== 'boolean') opt.cwdbase = false; - if (opt.cwdbase) opt.base = opt.cwd; - - // remove path relativity to make globs make sense - ourGlob = unrelative(opt.cwd, ourGlob); - negatives = negatives.map(unrelative.bind(null, opt.cwd)); - - // create globbing stuff - var globber = new glob.Glob(ourGlob, opt); - - // extract base path from glob - var basePath = opt.base ? opt.base : glob2base(globber); - - // create stream and map events from globber to it - var stream = through2.obj(negatives.length ? filterNegatives : undefined); - - globber.on('error', stream.emit.bind(stream, 'error')); - globber.on('end', function(/* some args here so can't use bind directly */){ - stream.end(); - }); - globber.on('match', function(filename) { - stream.write({ - cwd: opt.cwd, - base: basePath, - path: path.resolve(opt.cwd, filename) - }); - }); - - return stream; - - function filterNegatives(filename, enc, cb) { - var matcha = isMatch.bind(null, filename, opt); - if (negatives.every(matcha)) { - cb(null, filename); // pass - } else { - cb(); // ignore - } - } - }, - - // creates a stream for multiple globs or filters - create: function(globs, opt) { - if (!opt) opt = {}; - - // only one glob no need to aggregate - if (!Array.isArray(globs)) return gs.createStream(globs, null, opt); - - var positives = globs.filter(isPositive); - var negatives = globs.filter(isNegative); - - if (positives.length === 0) throw new Error("Missing positive glob"); - - // only one positive glob no need to aggregate - if (positives.length === 1) return gs.createStream(positives[0], negatives, opt); - - // create all individual streams - var streams = positives.map(function(glob){ - return gs.createStream(glob, negatives, opt); - }); - - // then just pipe them to a single unique stream and return it - var aggregate = new Combine(streams); - var uniqueStream = unique('path'); - - return aggregate.pipe(uniqueStream); - } -}; - -function isMatch(file, opt, pattern) { - if (typeof pattern === 'string') return minimatch(file.path, pattern, opt); - if (pattern instanceof RegExp) return pattern.test(file.path); - return true; // unknown glob type? -} - -function isNegative(pattern) { - if (typeof pattern !== 'string') return true; - if (pattern[0] === '!') return true; - return false; -} - -function isPositive(pattern) { - return !isNegative(pattern); -} - -function unrelative(cwd, glob) { - var mod = ''; - if (glob[0] === '!') { - mod = glob[0]; - glob = glob.slice(1); - } - return mod+path.resolve(cwd, glob); -} - - -module.exports = gs; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/README.md deleted file mode 100644 index 258257ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/README.md +++ /dev/null @@ -1,369 +0,0 @@ -[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies) - -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -![](oh-my-glob.gif) - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Glob Primer - -"Globs" are the patterns you type when you do stuff like `ls *.js` on -the command line, or put `build/*` in a `.gitignore` file. - -Before parsing the path part patterns, braced sections are expanded -into a set. Braced sections start with `{` and end with `}`, with any -number of comma-delimited sections within. Braced sections may contain -slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`. - -The following characters have special magic meaning when used in a -path portion: - -* `*` Matches 0 or more characters in a single path portion -* `?` Matches 1 character -* `[...]` Matches a range of characters, similar to a RegExp range. - If the first character of the range is `!` or `^` then it matches - any character not in the range. -* `!(pattern|pattern|pattern)` Matches anything that does not match - any of the patterns provided. -* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the - patterns provided. -* `+(pattern|pattern|pattern)` Matches one or more occurrences of the - patterns provided. -* `*(a|b|c)` Matches zero or more occurrences of the patterns provided -* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns - provided -* `**` If a "globstar" is alone in a path portion, then it matches - zero or more directories and subdirectories searching for matches. - It does not crawl symlinked directories. - -### Dots - -If a file or directory path portion has a `.` as the first character, -then it will not match any glob pattern unless that pattern's -corresponding path part also has a `.` as its first character. - -For example, the pattern `a/.*/c` would match the file at `a/.b/c`. -However the pattern `a/*/c` would not, because `*` does not start with -a dot character. - -You can make glob treat dots as normal characters by setting -`dot:true` in the options. - -### Basename Matching - -If you set `matchBase:true` in the options, and the pattern has no -slashes in it, then it will seek for any file anywhere in the tree -with a matching basename. For example, `*.js` would match -`test/simple/basic.js`. - -### Negation - -The intent for negation would be for a pattern starting with `!` to -match everything that *doesn't* match the supplied pattern. However, -the implementation is weird, and for the time being, this should be -avoided. The behavior will change or be deprecated in version 5. - -### Empty Sets - -If no matching files are found, then an empty array is returned. This -differs from the shell, where the pattern itself is returned. For -example: - - $ echo a*s*d*f - a*s*d*f - -To get the bash-style behavior, set the `nonull:true` in the options. - -### See Also: - -* `man sh` -* `man bash` (Search for "Pattern Matching") -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob.hasMagic(pattern, [options]) - -Returns `true` if there are any special characters in the pattern, and -`false` otherwise. - -Note that the options affect the results. If `noext:true` is set in -the options object, then `+(a|b)` will not be considered a magic -pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}` -then that is considered magical, unless `nobrace:true` is set in the -options. - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instantiating the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `statCache` Collection of all the stat results the glob search - performed. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `'DIR'` - Path exists, and is not a directory - * `'FILE'` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` -* `statCache` Cache of `fs.stat` results, to prevent statting the same - path multiple times. -* `symlinks` A record of which paths are symbolic links, which is - relevant in resolving `**` patterns. -* `realpathCache` An optional object which is passed to `fs.realpath` - to minimize unnecessary syscalls. It is stored on the instantiated - Glob object, and may be re-used. - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `pause` Temporarily stop the search -* `resume` Resume the search -* `abort` Stop the search forever - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the Glob object, as well. - -If you are running many `glob` operations, you can pass a Glob object -as the `options` argument to a subsequent operation to shortcut some -`stat` and `readdir` calls. At the very least, you may pass in shared -`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that -parallel glob operations will be sped up by sharing information about -the filesystem. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. -* `silent` When an unusual error is encountered when attempting to - read a directory, a warning will be printed to stderr. Set the - `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered when attempting to - read a directory, the process will just continue on in search of - other matches. Set the `strict` option to raise an error in these - cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary - to set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `symlinks` A cache of known symbolic links. You may pass in a - previously generated `symlinks` object to save `lstat` calls when - resolving `**` matches. -* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. Set this - flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `debug` Set to enable debug logging in minimatch and glob. -* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. -* `noglobstar` Do not match `**` against multiple filenames. (Ie, - treat it as a normal `*` instead.) -* `noext` Do not match `+(a|b)` "extglob" patterns. -* `nocase` Perform a case-insensitive match. Note: on - case-insensitive filesystems, non-magic patterns will match by - default, since `stat` and `readdir` will not raise errors. -* `matchBase` Perform a basename-only match if the pattern does not - contain any slash characters. That is, `*.js` would be treated as - equivalent to `**/*.js`, matching all js files in all directories. -* `nonegate` Suppress `negate` behavior. (See below.) -* `nocomment` Suppress `comment` behavior. (See below.) -* `nonull` Return the pattern when no matches are found. -* `nodir` Do not match directories, only files. (Note: to match - *only* directories, simply put a `/` at the end of the pattern.) -* `ignore` Add a pattern or an array of patterns to exclude matches. -* `follow` Follow symlinked directories when expanding `**` patterns. - Note that this can result in a lot of duplicate references in the - presence of cyclic links. -* `realpath` Set to true to call `fs.realpath` on all of the results. - In the case of a symlink that cannot be resolved, the full absolute - path to the matched entry is returned (though it will usually be a - broken symlink) - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.3, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -Note that symlinked directories are not crawled as part of a `**`, -though their contents may match against subsequent portions of the -pattern. This prevents infinite loops and duplicates and the like. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. - -## Contributing - -Any change to behavior (including bugfixes) must come with a test. - -Patches that fail tests or reduce performance will be rejected. - -``` -# to run tests -npm test - -# to re-generate test fixtures -npm run test-regen - -# to benchmark against bash/zsh -npm run bench - -# to profile javascript -npm run prof -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/common.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/common.js deleted file mode 100644 index cd7c8244..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/common.js +++ /dev/null @@ -1,237 +0,0 @@ -exports.alphasort = alphasort -exports.alphasorti = alphasorti -exports.isAbsolute = process.platform === "win32" ? absWin : absUnix -exports.setopts = setopts -exports.ownProp = ownProp -exports.makeAbs = makeAbs -exports.finish = finish -exports.mark = mark -exports.isIgnored = isIgnored -exports.childrenIgnored = childrenIgnored - -function ownProp (obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field) -} - -var path = require("path") -var minimatch = require("minimatch") -var Minimatch = minimatch.Minimatch - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - var result = splitDeviceRe.exec(p) - var device = result[1] || '' - var isUnc = device && device.charAt(1) !== ':' - var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} - -function alphasorti (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()) -} - -function alphasort (a, b) { - return a.localeCompare(b) -} - -function setupIgnores (self, options) { - self.ignore = options.ignore || [] - - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore] - - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap) - } -} - -function ignoreMap (pattern) { - var gmatcher = null - if (pattern.slice(-3) === '/**') { - var gpattern = pattern.replace(/(\/\*\*)+$/, '') - gmatcher = new Minimatch(gpattern, { nonegate: true }) - } - - return { - matcher: new Minimatch(pattern, { nonegate: true }), - gmatcher: gmatcher - } -} - -function setopts (self, pattern, options) { - if (!options) - options = {} - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - self.pattern = pattern - self.strict = options.strict !== false - self.realpath = !!options.realpath - self.realpathCache = options.realpathCache || Object.create(null) - self.follow = !!options.follow - self.dot = !!options.dot - self.mark = !!options.mark - self.nodir = !!options.nodir - if (self.nodir) - self.mark = true - self.sync = !!options.sync - self.nounique = !!options.nounique - self.nonull = !!options.nonull - self.nosort = !!options.nosort - self.nocase = !!options.nocase - self.stat = !!options.stat - self.noprocess = !!options.noprocess - - self.maxLength = options.maxLength || Infinity - self.cache = options.cache || Object.create(null) - self.statCache = options.statCache || Object.create(null) - self.symlinks = options.symlinks || Object.create(null) - - setupIgnores(self, options) - - self.changedCwd = false - var cwd = process.cwd() - if (!ownProp(options, "cwd")) - self.cwd = cwd - else { - self.cwd = options.cwd - self.changedCwd = path.resolve(options.cwd) !== cwd - } - - self.root = options.root || path.resolve(self.cwd, "/") - self.root = path.resolve(self.root) - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/") - - self.nomount = !!options.nomount - - self.minimatch = new Minimatch(pattern, options) - self.options = self.minimatch.options -} - -function finish (self) { - var nou = self.nounique - var all = nou ? [] : Object.create(null) - - for (var i = 0, l = self.matches.length; i < l; i ++) { - var matches = self.matches[i] - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - // do like the shell, and spit out the literal glob - var literal = self.minimatch.globSet[i] - if (nou) - all.push(literal) - else - all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) - all.push.apply(all, m) - else - m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) - all = Object.keys(all) - - if (!self.nosort) - all = all.sort(self.nocase ? alphasorti : alphasort) - - // at *some* point we statted all of these - if (self.mark) { - for (var i = 0; i < all.length; i++) { - all[i] = self._mark(all[i]) - } - if (self.nodir) { - all = all.filter(function (e) { - return !(/\/$/.test(e)) - }) - } - } - - if (self.ignore.length) - all = all.filter(function(m) { - return !isIgnored(self, m) - }) - - self.found = all -} - -function mark (self, p) { - var abs = makeAbs(self, p) - var c = self.cache[abs] - var m = p - if (c) { - var isDir = c === 'DIR' || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - var mabs = makeAbs(self, m) - self.statCache[mabs] = self.statCache[abs] - self.cache[mabs] = self.cache[abs] - } - } - - return m -} - -// lotta situps... -function makeAbs (self, f) { - var abs = f - if (f.charAt(0) === '/') { - abs = path.join(self.root, f) - } else if (exports.isAbsolute(f)) { - abs = f - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f) - } else if (self.realpath) { - abs = path.resolve(f) - } - return abs -} - - -// Return true, if pattern ends with globstar '**', for the accompanying parent directory. -// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents -function isIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) - }) -} - -function childrenIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path)) - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/glob.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/glob.js deleted file mode 100644 index eac0693c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/glob.js +++ /dev/null @@ -1,740 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern, false) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern, inGlobStar) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// -// If inGlobStar and PREFIX is symlink and points to dir -// set ENTRIES = [] -// else readdir(PREFIX) as ENTRIES -// If fail, END -// -// with ENTRIES -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// // Mark that this entry is a globstar match -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - -module.exports = glob - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var inherits = require('inherits') -var EE = require('events').EventEmitter -var path = require('path') -var assert = require('assert') -var globSync = require('./sync.js') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var isAbsolute = common.isAbsolute -var setopts = common.setopts -var ownProp = common.ownProp -var inflight = require('inflight') -var util = require('util') -var childrenIgnored = common.childrenIgnored - -var once = require('once') - -function glob (pattern, options, cb) { - if (typeof options === 'function') cb = options, options = {} - if (!options) options = {} - - if (options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return globSync(pattern, options) - } - - return new Glob(pattern, options, cb) -} - -glob.sync = globSync -var GlobSync = glob.GlobSync = globSync.GlobSync - -// old api surface -glob.glob = glob - -glob.hasMagic = function (pattern, options_) { - var options = util._extend({}, options_) - options.noprocess = true - - var g = new Glob(pattern, options) - var set = g.minimatch.set - if (set.length > 1) - return true - - for (var j = 0; j < set[0].length; j++) { - if (typeof set[0][j] !== 'string') - return true - } - - return false -} - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - - if (options && options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return new GlobSync(pattern, options) - } - - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb) - - setopts(this, pattern, options) - this._didRealPath = false - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - if (typeof cb === 'function') { - cb = once(cb) - this.on('error', cb) - this.on('end', function (matches) { - cb(null, matches) - }) - } - - var self = this - var n = this.minimatch.set.length - this._processing = 0 - this.matches = new Array(n) - - this._emitQueue = [] - this._processQueue = [] - this.paused = false - - if (this.noprocess) - return this - - if (n === 0) - return done() - - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false, done) - } - - function done () { - --self._processing - if (self._processing <= 0) - self._finish() - } -} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - if (this.aborted) - return - - if (this.realpath && !this._didRealpath) - return this._realpath() - - common.finish(this) - this.emit('end', this.found) -} - -Glob.prototype._realpath = function () { - if (this._didRealpath) - return - - this._didRealpath = true - - var n = this.matches.length - if (n === 0) - return this._finish() - - var self = this - for (var i = 0; i < this.matches.length; i++) - this._realpathSet(i, next) - - function next () { - if (--n === 0) - self._finish() - } -} - -Glob.prototype._realpathSet = function (index, cb) { - var matchset = this.matches[index] - if (!matchset) - return cb() - - var found = Object.keys(matchset) - var self = this - var n = found.length - - if (n === 0) - return cb() - - var set = this.matches[index] = Object.create(null) - found.forEach(function (p, i) { - // If there's a problem with the stat, then it means that - // one or more of the links in the realpath couldn't be - // resolved. just return the abs value in that case. - p = self._makeAbs(p) - fs.realpath(p, self.realpathCache, function (er, real) { - if (!er) - set[real] = true - else if (er.syscall === 'stat') - set[p] = true - else - self.emit('error', er) // srsly wtf right here - - if (--n === 0) { - self.matches[index] = set - cb() - } - }) - }) -} - -Glob.prototype._mark = function (p) { - return common.mark(this, p) -} - -Glob.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit('abort') -} - -Glob.prototype.pause = function () { - if (!this.paused) { - this.paused = true - this.emit('pause') - } -} - -Glob.prototype.resume = function () { - if (this.paused) { - this.emit('resume') - this.paused = false - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0) - this._emitQueue.length = 0 - for (var i = 0; i < eq.length; i ++) { - var e = eq[i] - this._emitMatch(e[0], e[1]) - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0) - this._processQueue.length = 0 - for (var i = 0; i < pq.length; i ++) { - var p = pq[i] - this._processing-- - this._process(p[0], p[1], p[2], p[3]) - } - } - } -} - -Glob.prototype._process = function (pattern, index, inGlobStar, cb) { - assert(this instanceof Glob) - assert(typeof cb === 'function') - - if (this.aborted) - return - - this._processing++ - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]) - return - } - - //console.error('PROCESS %d', this._processing, pattern) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index, cb) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip _processing - if (childrenIgnored(this, read)) - return cb() - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) -} - -Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - -Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return cb() - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return cb() - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return cb() - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - this._process([e].concat(remain), index, inGlobStar, cb) - } - cb() -} - -Glob.prototype._emitMatch = function (index, e) { - if (this.aborted) - return - - if (this.matches[index][e]) - return - - if (this.paused) { - this._emitQueue.push([index, e]) - return - } - - var abs = this._makeAbs(e) - - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return - } - - if (this.mark) - e = this._mark(e) - - this.matches[index][e] = true - - var st = this.statCache[abs] - if (st) - this.emit('stat', e, st) - - this.emit('match', e) -} - -Glob.prototype._readdirInGlobStar = function (abs, cb) { - if (this.aborted) - return - - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false, cb) - - var lstatkey = 'lstat\0' + abs - var self = this - var lstatcb = inflight(lstatkey, lstatcb_) - - if (lstatcb) - fs.lstat(abs, lstatcb) - - function lstatcb_ (er, lstat) { - if (er) - return cb() - - var isSym = lstat.isSymbolicLink() - self.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) { - self.cache[abs] = 'FILE' - cb() - } else - self._readdir(abs, false, cb) - } -} - -Glob.prototype._readdir = function (abs, inGlobStar, cb) { - if (this.aborted) - return - - cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) - if (!cb) - return - - //console.error('RD %j %j', +inGlobStar, abs) - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return cb() - - if (Array.isArray(c)) - return cb(null, c) - } - - var self = this - fs.readdir(abs, readdirCb(this, abs, cb)) -} - -function readdirCb (self, abs, cb) { - return function (er, entries) { - if (er) - self._readdirError(abs, er, cb) - else - self._readdirEntries(abs, entries, cb) - } -} - -Glob.prototype._readdirEntries = function (abs, entries, cb) { - if (this.aborted) - return - - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - return cb(null, entries) -} - -Glob.prototype._readdirError = function (f, er, cb) { - if (this.aborted) - return - - // handle errors, and cache the information - switch (er.code) { - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) return this.emit('error', er) - if (!this.silent) console.error('glob error', er) - break - } - return cb() -} - -Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - - -Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - //console.error('pgs2', prefix, remain[0], entries) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return cb() - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false, cb) - - var isSym = this.symlinks[abs] - var len = entries.length - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return cb() - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true, cb) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true, cb) - } - - cb() -} - -Glob.prototype._processSimple = function (prefix, index, cb) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var self = this - this._stat(prefix, function (er, exists) { - self._processSimple2(prefix, index, er, exists, cb) - }) -} -Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { - - //console.error('ps2', prefix, exists) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return cb() - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this._emitMatch(index, prefix) - cb() -} - -// Returns either 'DIR', 'FILE', or false -Glob.prototype._stat = function (f, cb) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return cb() - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return cb(null, c) - - if (needDir && c === 'FILE') - return cb() - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (stat !== undefined) { - if (stat === false) - return cb(null, stat) - else { - var type = stat.isDirectory() ? 'DIR' : 'FILE' - if (needDir && type === 'FILE') - return cb() - else - return cb(null, type, stat) - } - } - - var self = this - var statcb = inflight('stat\0' + abs, lstatcb_) - if (statcb) - fs.lstat(abs, statcb) - - function lstatcb_ (er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - // If it's a symlink, then treat it as the target, unless - // the target does not exist, then treat it as a file. - return fs.stat(abs, function (er, stat) { - if (er) - self._stat2(f, abs, null, lstat, cb) - else - self._stat2(f, abs, er, stat, cb) - }) - } else { - self._stat2(f, abs, er, lstat, cb) - } - } -} - -Glob.prototype._stat2 = function (f, abs, er, stat, cb) { - if (er) { - this.statCache[abs] = false - return cb() - } - - var needDir = f.slice(-1) === '/' - this.statCache[abs] = stat - - if (abs.slice(-1) === '/' && !stat.isDirectory()) - return cb(null, false, stat) - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return cb() - - return cb(null, c, stat) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/package.json deleted file mode 100644 index 1e4d26a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "glob@^4.3.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "glob@>=4.3.1 <5.0.0", - "_id": "glob@4.5.3", - "_inCache": true, - "_installable": true, - "_location": "/glob-stream/glob", - "_nodeVersion": "1.4.2", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "2.7.1", - "_phantomChildren": {}, - "_requested": { - "name": "glob", - "raw": "glob@^4.3.1", - "rawSpec": "^4.3.1", - "scope": null, - "spec": ">=4.3.1 <5.0.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "_shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f", - "_shrinkwrap": null, - "_spec": "glob@^4.3.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - }, - "description": "a little globber", - "devDependencies": { - "mkdirp": "0", - "rimraf": "^2.2.8", - "tap": "^0.5.0", - "tick": "0.0.6" - }, - "directories": {}, - "dist": { - "shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f", - "tarball": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" - }, - "engines": { - "node": "*" - }, - "files": [ - "glob.js", - "sync.js", - "common.js" - ], - "gitHead": "a4e461ab59a837eee80a4d8dbdbf5ae1054a646f", - "homepage": "https://github.com/isaacs/node-glob", - "license": "ISC", - "main": "glob.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "glob", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "scripts": { - "bench": "bash benchmark.sh", - "benchclean": "bash benchclean.sh", - "prepublish": "npm run benchclean", - "prof": "bash prof.sh && cat profile.txt", - "profclean": "rm -f v8.log profile.txt", - "test": "npm run profclean && tap test/*.js", - "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js" - }, - "version": "4.5.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/sync.js deleted file mode 100644 index f4f5e36d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/glob/sync.js +++ /dev/null @@ -1,457 +0,0 @@ -module.exports = globSync -globSync.GlobSync = GlobSync - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var Glob = require('./glob.js').Glob -var util = require('util') -var path = require('path') -var assert = require('assert') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var isAbsolute = common.isAbsolute -var setopts = common.setopts -var ownProp = common.ownProp -var childrenIgnored = common.childrenIgnored - -function globSync (pattern, options) { - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - return new GlobSync(pattern, options).found -} - -function GlobSync (pattern, options) { - if (!pattern) - throw new Error('must provide pattern') - - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options) - - setopts(this, pattern, options) - - if (this.noprocess) - return this - - var n = this.minimatch.set.length - this.matches = new Array(n) - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false) - } - this._finish() -} - -GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) - if (this.realpath) { - var self = this - this.matches.forEach(function (matchset, index) { - var set = self.matches[index] = Object.create(null) - for (var p in matchset) { - try { - p = self._makeAbs(p) - var real = fs.realpathSync(p, this.realpathCache) - set[real] = true - } catch (er) { - if (er.syscall === 'stat') - set[self._makeAbs(p)] = true - else - throw er - } - } - }) - } - common.finish(this) -} - - -GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // See if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip processing - if (childrenIgnored(this, read)) - return - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar) -} - - -GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar) - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix.slice(-1) !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this.matches[index][e] = true - } - // This was the last one, and no stats were needed - return - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) - newPattern = [prefix, e] - else - newPattern = [e] - this._process(newPattern.concat(remain), index, inGlobStar) - } -} - - -GlobSync.prototype._emitMatch = function (index, e) { - var abs = this._makeAbs(e) - if (this.mark) - e = this._mark(e) - - if (this.matches[index][e]) - return - - if (this.nodir) { - var c = this.cache[this._makeAbs(e)] - if (c === 'DIR' || Array.isArray(c)) - return - } - - this.matches[index][e] = true - if (this.stat) - this._stat(e) -} - - -GlobSync.prototype._readdirInGlobStar = function (abs) { - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false) - - var entries - var lstat - var stat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - // lstat failed, doesn't exist - return null - } - - var isSym = lstat.isSymbolicLink() - this.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) - this.cache[abs] = 'FILE' - else - entries = this._readdir(abs, false) - - return entries -} - -GlobSync.prototype._readdir = function (abs, inGlobStar) { - var entries - - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return null - - if (Array.isArray(c)) - return c - } - - try { - return this._readdirEntries(abs, fs.readdirSync(abs)) - } catch (er) { - this._readdirError(abs, er) - return null - } -} - -GlobSync.prototype._readdirEntries = function (abs, entries) { - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - - // mark and cache dir-ness - return entries -} - -GlobSync.prototype._readdirError = function (f, er) { - // handle errors, and cache the information - switch (er.code) { - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) throw er - if (!this.silent) console.error('glob error', er) - break - } -} - -GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { - - var entries = this._readdir(abs, inGlobStar) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false) - - var len = entries.length - var isSym = this.symlinks[abs] - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true) - } -} - -GlobSync.prototype._processSimple = function (prefix, index) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var exists = this._stat(prefix) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this.matches[index][prefix] = true -} - -// Returns either 'DIR', 'FILE', or false -GlobSync.prototype._stat = function (f) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return false - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return c - - if (needDir && c === 'FILE') - return false - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (!stat) { - var lstat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - return false - } - - if (lstat.isSymbolicLink()) { - try { - stat = fs.statSync(abs) - } catch (er) { - stat = lstat - } - } else { - stat = lstat - } - } - - this.statCache[abs] = stat - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return false - - return c -} - -GlobSync.prototype._mark = function (p) { - return common.mark(this, p) -} - -GlobSync.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/README.md deleted file mode 100644 index d458bc2e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/README.md +++ /dev/null @@ -1,216 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself if this option is set. When not set, an empty list -is returned if there are no matches. - -### matchBase - -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`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/browser.js deleted file mode 100644 index 7d051592..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/browser.js +++ /dev/null @@ -1,1159 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new Error('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var plType - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - plType = stateChar - patternListStack.push({ - type: plType, - start: i - 1, - reStart: re.length - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - re += ')' - var pl = patternListStack.pop() - plType = pl.type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case '!': - negativeLists.push(pl) - re += ')[^/]*?)' - pl.reEnd = re.length - break - case '?': - case '+': - case '*': - re += plType - break - case '@': break // the default anyway - } - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - var regExp = new RegExp('^' + re + '$', flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} - -},{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){ -var concatMap = require('concat-map'); -var balanced = require('balanced-match'); - -module.exports = expandTop; - -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; - -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); -} - -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); -} - -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); -} - - -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; - - var parts = []; - var m = balanced('{', '}', str); - - if (!m) - return str.split(','); - - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); - - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } - - parts.push.apply(parts, p); - - return parts; -} - -function expandTop(str) { - if (!str) - return []; - - var expansions = expand(escapeBraces(str)); - return expansions.filter(identity).map(unescapeBraces); -} - -function identity(e) { - return e; -} - -function embrace(str) { - return '{' + str + '}'; -} -function isPadded(el) { - return /^-?0\d/.test(el); -} - -function lte(i, y) { - return i <= y; -} -function gte(i, y) { - return i >= y; -} - -function expand(str) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = /^(.*,)+(.+)?$/.test(m.body); - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand(n[0]).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand(m.post) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. - - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand(m.post) - : ['']; - - var N; - - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length) - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { return expand(el) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - expansions.push([pre, N[j], post[k]].join('')) - } - } - - return expansions; -} - - -},{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){ -module.exports = balanced; -function balanced(a, b, str) { - var bal = 0; - var m = {}; - var ended = false; - - for (var i = 0; i < str.length; i++) { - if (a == str.substr(i, a.length)) { - if (!('start' in m)) m.start = i; - bal++; - } - else if (b == str.substr(i, b.length) && 'start' in m) { - ended = true; - bal--; - if (!bal) { - m.end = i; - m.pre = str.substr(0, m.start); - m.body = (m.end - m.start > 1) - ? str.substring(m.start + a.length, m.end) - : ''; - m.post = str.slice(m.end + b.length); - return m; - } - } - } - - // if we opened more than we closed, find the one we closed - if (bal && ended) { - var start = m.start + a.length; - m = balanced(a, b, str.substr(start)); - if (m) { - m.start += start; - m.end += start; - m.pre = str.slice(0, start) + m.pre; - } - return m; - } -} - -},{}],4:[function(require,module,exports){ -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (Array.isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/minimatch.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/minimatch.js deleted file mode 100644 index ec4c05c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,912 +0,0 @@ -module.exports = minimatch -minimatch.Minimatch = Minimatch - -var path = { sep: '/' } -try { - path = require('path') -} catch (er) {} - -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = require('brace-expansion') - -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' - -// * => any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new Error('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var plType - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - plType = stateChar - patternListStack.push({ - type: plType, - start: i - 1, - reStart: re.length - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - re += ')' - var pl = patternListStack.pop() - plType = pl.type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case '!': - negativeLists.push(pl) - re += ')[^/]*?)' - pl.reEnd = re.length - break - case '?': - case '+': - case '*': - re += plType - break - case '@': break // the default anyway - } - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - var regExp = new RegExp('^' + re + '$', flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/package.json deleted file mode 100644 index 5cadf7a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/minimatch/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "minimatch@^2.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "minimatch@>=2.0.1 <3.0.0", - "_id": "minimatch@2.0.10", - "_inCache": true, - "_installable": true, - "_location": "/glob-stream/minimatch", - "_nodeVersion": "2.2.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "3.1.0", - "_phantomChildren": {}, - "_requested": { - "name": "minimatch", - "raw": "minimatch@^2.0.1", - "rawSpec": "^2.0.1", - "scope": null, - "spec": ">=2.0.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream", - "/glob-stream/glob" - ], - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "_shrinkwrap": null, - "_spec": "minimatch@^2.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "dependencies": { - "brace-expansion": "^1.0.0" - }, - "description": "a glob matcher in javascript", - "devDependencies": { - "browserify": "^9.0.3", - "standard": "^3.7.2", - "tap": "^1.2.0" - }, - "directories": {}, - "dist": { - "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" - }, - "engines": { - "node": "*" - }, - "files": [ - "minimatch.js", - "browser.js" - ], - "gitHead": "6afb85f0c324b321f76a38df81891e562693e257", - "homepage": "https://github.com/isaacs/minimatch#readme", - "license": "ISC", - "main": "minimatch.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "minimatch", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "scripts": { - "posttest": "standard minimatch.js test/*.js", - "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare", - "test": "tap test/*.js" - }, - "version": "2.0.10" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 63072209..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/package.json deleted file mode 100644 index 80ac8352..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@>=1.0.33-1 <1.1.0-0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream/node_modules/through2" - ] - ], - "_from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_id": "readable-stream@1.0.34", - "_inCache": true, - "_installable": true, - "_location": "/glob-stream/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@>=1.0.33-1 <1.1.0-0", - "rawSpec": ">=1.0.33-1 <1.1.0-0", - "scope": null, - "spec": ">=1.0.33-1 <1.1.0-0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "_shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "_shrinkwrap": null, - "_spec": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream/node_modules/through2", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "gitHead": "1227c7b66deedb1dc5284a89425854d5f7ad9576", - "homepage": "https://github.com/isaacs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "1.0.34" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/readable.js deleted file mode 100644 index 26511e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,11 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = require('stream'); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/README.md deleted file mode 100644 index 11259a5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - function (chunk, enc, cb) { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/package.json deleted file mode 100644 index 38bdbb6a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "through2@^0.6.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "through2@>=0.6.1 <0.7.0", - "_id": "through2@0.6.5", - "_inCache": true, - "_installable": true, - "_location": "/glob-stream/through2", - "_npmUser": { - "email": "bryce@ravenwall.com", - "name": "bryce" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "through2", - "raw": "through2@^0.6.1", - "rawSpec": "^0.6.1", - "scope": null, - "spec": ">=0.6.1 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "_shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "_shrinkwrap": null, - "_spec": "through2@^0.6.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": ">=0.9.0 <0.10.0-0", - "stream-spigot": ">=3.0.4 <3.1.0-0", - "tape": ">=2.14.0 <2.15.0-0" - }, - "directories": {}, - "dist": { - "shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "tarball": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "gitHead": "ba4a87875f2c82323c10023e36f4ae4b386c1bf8", - "homepage": "https://github.com/rvagg/through2", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "0.6.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/through2.js deleted file mode 100644 index 5b7a880e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/package.json deleted file mode 100644 index eb426b1a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-stream/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "_args": [ - [ - "glob-stream@^3.1.5", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "glob-stream@>=3.1.5 <4.0.0", - "_id": "glob-stream@3.1.18", - "_inCache": true, - "_installable": true, - "_location": "/glob-stream", - "_nodeVersion": "0.10.33", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.1.6", - "_phantomChildren": { - "brace-expansion": "1.1.3", - "core-util-is": "1.0.2", - "inflight": "1.0.4", - "inherits": "2.0.1", - "isarray": "0.0.1", - "once": "1.3.3", - "string_decoder": "0.10.31", - "xtend": "4.0.1" - }, - "_requested": { - "name": "glob-stream", - "raw": "glob-stream@^3.1.5", - "rawSpec": "^3.1.5", - "scope": null, - "spec": ">=3.1.5 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "_shasum": "9170a5f12b790306fdfe598f313f8f7954fd143b", - "_shrinkwrap": null, - "_spec": "glob-stream@^3.1.5", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/glob-stream/issues" - }, - "dependencies": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" - }, - "description": "File system globs as a stream", - "devDependencies": { - "coveralls": "^2.11.2", - "istanbul": "^0.3.0", - "istanbul-coveralls": "^1.0.1", - "jshint": "^2.5.10", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "0.0.1", - "rimraf": "^2.2.5", - "should": "^4.3.0" - }, - "directories": {}, - "dist": { - "shasum": "9170a5f12b790306fdfe598f313f8f7954fd143b", - "tarball": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js" - ], - "gitHead": "472b98e7a0a747a3c72454337def65cebc4fb78e", - "homepage": "http://github.com/wearefractal/glob-stream", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/glob-stream/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "glob-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/glob-stream.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && istanbul-coveralls", - "test": "mocha --reporter spec && jshint" - }, - "version": "3.1.18" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.npmignore deleted file mode 100644 index b5ef13a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -.DS_Store -*.log -node_modules -build -*.node -components \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.travis.yml deleted file mode 100644 index 33ad9f8c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.9" - - "0.10" -after_script: - - npm run coveralls \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/LICENSE deleted file mode 100755 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/README.md deleted file mode 100644 index 129311eb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# glob-watcher [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url] - -## Information - - - - - - - - - - - - - -
    Packageglob-watcher
    DescriptionWatch globs
    Node Version>= 0.9
    - -## Usage - -```javascript -var watch = require('glob-watcher'); - -// callback interface -watch(["./*.js", "!./something.js"], function(evt){ - // evt has what file changed and all that jazz -}); - -// EE interface -var watcher = watch(["./*.js", "!./something.js"]); -watcher.on('change', function(evt) { - // evt has what file changed and all that jazz -}); - -// add files after it has been created -watcher.add("./somefolder/somefile.js"); -``` - - -[npm-url]: https://npmjs.org/package/glob-watcher -[npm-image]: https://badge.fury.io/js/glob-watcher.png - -[travis-url]: https://travis-ci.org/wearefractal/glob-watcher -[travis-image]: https://travis-ci.org/wearefractal/glob-watcher.png?branch=master - -[coveralls-url]: https://coveralls.io/r/wearefractal/glob-watcher -[coveralls-image]: https://coveralls.io/repos/wearefractal/glob-watcher/badge.png - -[depstat-url]: https://david-dm.org/wearefractal/glob-watcher -[depstat-image]: https://david-dm.org/wearefractal/glob-watcher.png - -[david-url]: https://david-dm.org/wearefractal/glob-watcher -[david-image]: https://david-dm.org/wearefractal/glob-watcher.png?theme=shields.io diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/index.js deleted file mode 100644 index 907defd4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var gaze = require('gaze'); -var EventEmitter = require('events').EventEmitter; - -module.exports = function(glob, opts, cb) { - var out = new EventEmitter(); - - if (typeof opts === 'function') { - cb = opts; - opts = {}; - } - - var watcher = gaze(glob, opts, function(err, rwatcher){ - if (err) out.emit('error', err); - rwatcher.on('all', function(evt, path, old){ - var outEvt = {type: evt, path: path}; - if(old) outEvt.old = old; - out.emit('change', outEvt); - if(cb) cb(outEvt); - }); - }); - - watcher.on('end', out.emit.bind(out, 'end')); - watcher.on('error', out.emit.bind(out, 'error')); - watcher.on('ready', out.emit.bind(out, 'ready')); - watcher.on('nomatch', out.emit.bind(out, 'nomatch')); - - out.end = function(){ - return watcher.close(); - }; - out.add = function(){ - return watcher.add.apply(watcher, arguments); - }; - out.remove = function(){ - return watcher.remove(); - }; - out._watcher = watcher; - - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/package.json deleted file mode 100644 index 80b5c6f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "glob-watcher@^0.0.6", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "glob-watcher@>=0.0.6 <0.0.7", - "_id": "glob-watcher@0.0.6", - "_inCache": true, - "_installable": true, - "_location": "/glob-watcher", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "1.4.7", - "_phantomChildren": {}, - "_requested": { - "name": "glob-watcher", - "raw": "glob-watcher@^0.0.6", - "rawSpec": "^0.0.6", - "scope": null, - "spec": ">=0.0.6 <0.0.7", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "_shasum": "b95b4a8df74b39c83298b0c05c978b4d9a3b710b", - "_shrinkwrap": null, - "_spec": "glob-watcher@^0.0.6", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/glob-watcher/issues" - }, - "dependencies": { - "gaze": "^0.5.1" - }, - "description": "Watch globs", - "devDependencies": { - "coveralls": "^2.6.1", - "istanbul": "^0.2.3", - "jshint": "^2.4.1", - "mkdirp": "^0.3.5", - "mocha": "^1.17.0", - "mocha-lcov-reporter": "0.0.1", - "rimraf": "^2.2.5", - "should": "^2.1.1" - }, - "directories": {}, - "dist": { - "shasum": "b95b4a8df74b39c83298b0c05c978b4d9a3b710b", - "tarball": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "homepage": "http://github.com/wearefractal/glob-watcher", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/glob-watcher/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "glob-watcher", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/glob-watcher.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint" - }, - "version": "0.0.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/fixtures/test.coffee b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/fixtures/test.coffee deleted file mode 100644 index 4be3c450..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/fixtures/test.coffee +++ /dev/null @@ -1 +0,0 @@ -test test \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/main.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/main.js deleted file mode 100644 index 2903e8f8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob-watcher/test/main.js +++ /dev/null @@ -1,87 +0,0 @@ -var watch = require('../'); -var should = require('should'); -var path = require('path'); -var fs = require('fs'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); - -require('mocha'); - -describe('glob-watcher', function() { - it('should return a valid file struct via EE', function(done) { - var expectedName = path.join(__dirname, "./fixtures/stuff/temp.coffee"); - var fname = path.join(__dirname, "./fixtures/**/temp.coffee"); - mkdirp.sync(path.dirname(expectedName)); - fs.writeFileSync(expectedName, "testing"); - - var watcher = watch(fname); - watcher.on('change', function(evt) { - should.exist(evt); - should.exist(evt.path); - should.exist(evt.type); - evt.type.should.equal('changed'); - evt.path.should.equal(expectedName); - watcher.end(); - }); - watcher.on('end', function(){ - rimraf.sync(expectedName); - done(); - }); - setTimeout(function(){ - fs.writeFileSync(expectedName, "test test"); - }, 125); - }); - - it('should emit nomatch via EE', function(done) { - var fname = path.join(__dirname, "./doesnt_exist_lol/temp.coffee"); - - var watcher = watch(fname); - watcher.on('nomatch', function() { - done(); - }); - }); - - it('should return a valid file struct via callback', function(done) { - var expectedName = path.join(__dirname, "./fixtures/stuff/test.coffee"); - var fname = path.join(__dirname, "./fixtures/**/test.coffee"); - mkdirp.sync(path.dirname(expectedName)); - fs.writeFileSync(expectedName, "testing"); - - var watcher = watch(fname, function(evt) { - should.exist(evt); - should.exist(evt.path); - should.exist(evt.type); - evt.type.should.equal('changed'); - evt.path.should.equal(expectedName); - watcher.end(); - }); - - watcher.on('end', function(){ - rimraf.sync(expectedName); - done(); - }); - setTimeout(function(){ - fs.writeFileSync(expectedName, "test test"); - }, 200); - }); - - it('should not return a non-matching file struct via callback', function(done) { - var expectedName = path.join(__dirname, "./fixtures/test123.coffee"); - var fname = path.join(__dirname, "./fixtures/**/test.coffee"); - mkdirp.sync(path.dirname(expectedName)); - fs.writeFileSync(expectedName, "testing"); - - var watcher = watch(fname, function(evt) { - throw new Error("Should not have been called! "+evt.path); - }); - - setTimeout(function(){ - fs.writeFileSync(expectedName, "test test"); - }, 200); - - setTimeout(function(){ - rimraf.sync(expectedName); - done(); - }, 1500); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/README.md deleted file mode 100644 index 063cf950..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/README.md +++ /dev/null @@ -1,377 +0,0 @@ -[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies) - -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -![](oh-my-glob.gif) - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Glob Primer - -"Globs" are the patterns you type when you do stuff like `ls *.js` on -the command line, or put `build/*` in a `.gitignore` file. - -Before parsing the path part patterns, braced sections are expanded -into a set. Braced sections start with `{` and end with `}`, with any -number of comma-delimited sections within. Braced sections may contain -slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`. - -The following characters have special magic meaning when used in a -path portion: - -* `*` Matches 0 or more characters in a single path portion -* `?` Matches 1 character -* `[...]` Matches a range of characters, similar to a RegExp range. - If the first character of the range is `!` or `^` then it matches - any character not in the range. -* `!(pattern|pattern|pattern)` Matches anything that does not match - any of the patterns provided. -* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the - patterns provided. -* `+(pattern|pattern|pattern)` Matches one or more occurrences of the - patterns provided. -* `*(a|b|c)` Matches zero or more occurrences of the patterns provided -* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns - provided -* `**` If a "globstar" is alone in a path portion, then it matches - zero or more directories and subdirectories searching for matches. - It does not crawl symlinked directories. - -### Dots - -If a file or directory path portion has a `.` as the first character, -then it will not match any glob pattern unless that pattern's -corresponding path part also has a `.` as its first character. - -For example, the pattern `a/.*/c` would match the file at `a/.b/c`. -However the pattern `a/*/c` would not, because `*` does not start with -a dot character. - -You can make glob treat dots as normal characters by setting -`dot:true` in the options. - -### Basename Matching - -If you set `matchBase:true` in the options, and the pattern has no -slashes in it, then it will seek for any file anywhere in the tree -with a matching basename. For example, `*.js` would match -`test/simple/basic.js`. - -### Negation - -The intent for negation would be for a pattern starting with `!` to -match everything that *doesn't* match the supplied pattern. However, -the implementation is weird, and for the time being, this should be -avoided. The behavior is deprecated in version 5, and will be removed -entirely in version 6. - -### Empty Sets - -If no matching files are found, then an empty array is returned. This -differs from the shell, where the pattern itself is returned. For -example: - - $ echo a*s*d*f - a*s*d*f - -To get the bash-style behavior, set the `nonull:true` in the options. - -### See Also: - -* `man sh` -* `man bash` (Search for "Pattern Matching") -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob.hasMagic(pattern, [options]) - -Returns `true` if there are any special characters in the pattern, and -`false` otherwise. - -Note that the options affect the results. If `noext:true` is set in -the options object, then `+(a|b)` will not be considered a magic -pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}` -then that is considered magical, unless `nobrace:true` is set in the -options. - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instantiating the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `'DIR'` - Path exists, and is not a directory - * `'FILE'` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` -* `statCache` Cache of `fs.stat` results, to prevent statting the same - path multiple times. -* `symlinks` A record of which paths are symbolic links, which is - relevant in resolving `**` patterns. -* `realpathCache` An optional object which is passed to `fs.realpath` - to minimize unnecessary syscalls. It is stored on the instantiated - Glob object, and may be re-used. - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `pause` Temporarily stop the search -* `resume` Resume the search -* `abort` Stop the search forever - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the Glob object, as well. - -If you are running many `glob` operations, you can pass a Glob object -as the `options` argument to a subsequent operation to shortcut some -`stat` and `readdir` calls. At the very least, you may pass in shared -`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that -parallel glob operations will be sped up by sharing information about -the filesystem. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. -* `silent` When an unusual error is encountered when attempting to - read a directory, a warning will be printed to stderr. Set the - `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered when attempting to - read a directory, the process will just continue on in search of - other matches. Set the `strict` option to raise an error in these - cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary - to set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `symlinks` A cache of known symbolic links. You may pass in a - previously generated `symlinks` object to save `lstat` calls when - resolving `**` matches. -* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. Set this - flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `debug` Set to enable debug logging in minimatch and glob. -* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. -* `noglobstar` Do not match `**` against multiple filenames. (Ie, - treat it as a normal `*` instead.) -* `noext` Do not match `+(a|b)` "extglob" patterns. -* `nocase` Perform a case-insensitive match. Note: on - case-insensitive filesystems, non-magic patterns will match by - default, since `stat` and `readdir` will not raise errors. -* `matchBase` Perform a basename-only match if the pattern does not - contain any slash characters. That is, `*.js` would be treated as - equivalent to `**/*.js`, matching all js files in all directories. -* `nodir` Do not match directories, only files. (Note: to match - *only* directories, simply put a `/` at the end of the pattern.) -* `ignore` Add a pattern or an array of patterns to exclude matches. -* `follow` Follow symlinked directories when expanding `**` patterns. - Note that this can result in a lot of duplicate references in the - presence of cyclic links. -* `realpath` Set to true to call `fs.realpath` on all of the results. - In the case of a symlink that cannot be resolved, the full absolute - path to the matched entry is returned (though it will usually be a - broken symlink) -* `nonegate` Suppress deprecated `negate` behavior. (See below.) - Default=true -* `nocomment` Suppress deprecated `comment` behavior. (See below.) - Default=true - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.3, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -Note that symlinked directories are not crawled as part of a `**`, -though their contents may match against subsequent portions of the -pattern. This prevents infinite loops and duplicates and the like. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -### Comments and Negation - -**Note**: In version 5 of this module, negation and comments are -**disabled** by default. You can explicitly set `nonegate:false` or -`nocomment:false` to re-enable them. They are going away entirely in -version 6. - -The intent for negation would be for a pattern starting with `!` to -match everything that *doesn't* match the supplied pattern. However, -the implementation is weird. It is better to use the `ignore` option -to set a pattern or set of patterns to exclude from matches. If you -want the "everything except *x*" type of behavior, you can use `**` as -the main pattern, and set an `ignore` for the things to exclude. - -The comments feature is added in minimatch, primarily to more easily -support use cases like ignore files, where a `#` at the start of a -line makes the pattern "empty". However, in the context of a -straightforward filesystem globber, "comments" don't make much sense. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. - -## Contributing - -Any change to behavior (including bugfixes) must come with a test. - -Patches that fail tests or reduce performance will be rejected. - -``` -# to run tests -npm test - -# to re-generate test fixtures -npm run test-regen - -# to benchmark against bash/zsh -npm run bench - -# to profile javascript -npm run prof -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/common.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/common.js deleted file mode 100644 index e36a631c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/common.js +++ /dev/null @@ -1,245 +0,0 @@ -exports.alphasort = alphasort -exports.alphasorti = alphasorti -exports.setopts = setopts -exports.ownProp = ownProp -exports.makeAbs = makeAbs -exports.finish = finish -exports.mark = mark -exports.isIgnored = isIgnored -exports.childrenIgnored = childrenIgnored - -function ownProp (obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field) -} - -var path = require("path") -var minimatch = require("minimatch") -var isAbsolute = require("path-is-absolute") -var Minimatch = minimatch.Minimatch - -function alphasorti (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()) -} - -function alphasort (a, b) { - return a.localeCompare(b) -} - -function setupIgnores (self, options) { - self.ignore = options.ignore || [] - - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore] - - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap) - } -} - -function ignoreMap (pattern) { - var gmatcher = null - if (pattern.slice(-3) === '/**') { - var gpattern = pattern.replace(/(\/\*\*)+$/, '') - gmatcher = new Minimatch(gpattern) - } - - return { - matcher: new Minimatch(pattern), - gmatcher: gmatcher - } -} - -function setopts (self, pattern, options) { - if (!options) - options = {} - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - self.silent = !!options.silent - self.pattern = pattern - self.strict = options.strict !== false - self.realpath = !!options.realpath - self.realpathCache = options.realpathCache || Object.create(null) - self.follow = !!options.follow - self.dot = !!options.dot - self.mark = !!options.mark - self.nodir = !!options.nodir - if (self.nodir) - self.mark = true - self.sync = !!options.sync - self.nounique = !!options.nounique - self.nonull = !!options.nonull - self.nosort = !!options.nosort - self.nocase = !!options.nocase - self.stat = !!options.stat - self.noprocess = !!options.noprocess - - self.maxLength = options.maxLength || Infinity - self.cache = options.cache || Object.create(null) - self.statCache = options.statCache || Object.create(null) - self.symlinks = options.symlinks || Object.create(null) - - setupIgnores(self, options) - - self.changedCwd = false - var cwd = process.cwd() - if (!ownProp(options, "cwd")) - self.cwd = cwd - else { - self.cwd = options.cwd - self.changedCwd = path.resolve(options.cwd) !== cwd - } - - self.root = options.root || path.resolve(self.cwd, "/") - self.root = path.resolve(self.root) - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/") - - self.nomount = !!options.nomount - - // disable comments and negation unless the user explicitly - // passes in false as the option. - options.nonegate = options.nonegate === false ? false : true - options.nocomment = options.nocomment === false ? false : true - deprecationWarning(options) - - self.minimatch = new Minimatch(pattern, options) - self.options = self.minimatch.options -} - -// TODO(isaacs): remove entirely in v6 -// exported to reset in tests -exports.deprecationWarned -function deprecationWarning(options) { - if (!options.nonegate || !options.nocomment) { - if (process.noDeprecation !== true && !exports.deprecationWarned) { - var msg = 'glob WARNING: comments and negation will be disabled in v6' - if (process.throwDeprecation) - throw new Error(msg) - else if (process.traceDeprecation) - console.trace(msg) - else - console.error(msg) - - exports.deprecationWarned = true - } - } -} - -function finish (self) { - var nou = self.nounique - var all = nou ? [] : Object.create(null) - - for (var i = 0, l = self.matches.length; i < l; i ++) { - var matches = self.matches[i] - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - // do like the shell, and spit out the literal glob - var literal = self.minimatch.globSet[i] - if (nou) - all.push(literal) - else - all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) - all.push.apply(all, m) - else - m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) - all = Object.keys(all) - - if (!self.nosort) - all = all.sort(self.nocase ? alphasorti : alphasort) - - // at *some* point we statted all of these - if (self.mark) { - for (var i = 0; i < all.length; i++) { - all[i] = self._mark(all[i]) - } - if (self.nodir) { - all = all.filter(function (e) { - return !(/\/$/.test(e)) - }) - } - } - - if (self.ignore.length) - all = all.filter(function(m) { - return !isIgnored(self, m) - }) - - self.found = all -} - -function mark (self, p) { - var abs = makeAbs(self, p) - var c = self.cache[abs] - var m = p - if (c) { - var isDir = c === 'DIR' || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - var mabs = makeAbs(self, m) - self.statCache[mabs] = self.statCache[abs] - self.cache[mabs] = self.cache[abs] - } - } - - return m -} - -// lotta situps... -function makeAbs (self, f) { - var abs = f - if (f.charAt(0) === '/') { - abs = path.join(self.root, f) - } else if (isAbsolute(f) || f === '') { - abs = f - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f) - } else { - abs = path.resolve(f) - } - return abs -} - - -// Return true, if pattern ends with globstar '**', for the accompanying parent directory. -// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents -function isIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) - }) -} - -function childrenIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path)) - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/glob.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/glob.js deleted file mode 100644 index 022d2ac8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/glob.js +++ /dev/null @@ -1,752 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern, false) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern, inGlobStar) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// -// If inGlobStar and PREFIX is symlink and points to dir -// set ENTRIES = [] -// else readdir(PREFIX) as ENTRIES -// If fail, END -// -// with ENTRIES -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// // Mark that this entry is a globstar match -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - -module.exports = glob - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var inherits = require('inherits') -var EE = require('events').EventEmitter -var path = require('path') -var assert = require('assert') -var isAbsolute = require('path-is-absolute') -var globSync = require('./sync.js') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var setopts = common.setopts -var ownProp = common.ownProp -var inflight = require('inflight') -var util = require('util') -var childrenIgnored = common.childrenIgnored -var isIgnored = common.isIgnored - -var once = require('once') - -function glob (pattern, options, cb) { - if (typeof options === 'function') cb = options, options = {} - if (!options) options = {} - - if (options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return globSync(pattern, options) - } - - return new Glob(pattern, options, cb) -} - -glob.sync = globSync -var GlobSync = glob.GlobSync = globSync.GlobSync - -// old api surface -glob.glob = glob - -glob.hasMagic = function (pattern, options_) { - var options = util._extend({}, options_) - options.noprocess = true - - var g = new Glob(pattern, options) - var set = g.minimatch.set - if (set.length > 1) - return true - - for (var j = 0; j < set[0].length; j++) { - if (typeof set[0][j] !== 'string') - return true - } - - return false -} - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - - if (options && options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return new GlobSync(pattern, options) - } - - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb) - - setopts(this, pattern, options) - this._didRealPath = false - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - if (typeof cb === 'function') { - cb = once(cb) - this.on('error', cb) - this.on('end', function (matches) { - cb(null, matches) - }) - } - - var self = this - var n = this.minimatch.set.length - this._processing = 0 - this.matches = new Array(n) - - this._emitQueue = [] - this._processQueue = [] - this.paused = false - - if (this.noprocess) - return this - - if (n === 0) - return done() - - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false, done) - } - - function done () { - --self._processing - if (self._processing <= 0) - self._finish() - } -} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - if (this.aborted) - return - - if (this.realpath && !this._didRealpath) - return this._realpath() - - common.finish(this) - this.emit('end', this.found) -} - -Glob.prototype._realpath = function () { - if (this._didRealpath) - return - - this._didRealpath = true - - var n = this.matches.length - if (n === 0) - return this._finish() - - var self = this - for (var i = 0; i < this.matches.length; i++) - this._realpathSet(i, next) - - function next () { - if (--n === 0) - self._finish() - } -} - -Glob.prototype._realpathSet = function (index, cb) { - var matchset = this.matches[index] - if (!matchset) - return cb() - - var found = Object.keys(matchset) - var self = this - var n = found.length - - if (n === 0) - return cb() - - var set = this.matches[index] = Object.create(null) - found.forEach(function (p, i) { - // If there's a problem with the stat, then it means that - // one or more of the links in the realpath couldn't be - // resolved. just return the abs value in that case. - p = self._makeAbs(p) - fs.realpath(p, self.realpathCache, function (er, real) { - if (!er) - set[real] = true - else if (er.syscall === 'stat') - set[p] = true - else - self.emit('error', er) // srsly wtf right here - - if (--n === 0) { - self.matches[index] = set - cb() - } - }) - }) -} - -Glob.prototype._mark = function (p) { - return common.mark(this, p) -} - -Glob.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit('abort') -} - -Glob.prototype.pause = function () { - if (!this.paused) { - this.paused = true - this.emit('pause') - } -} - -Glob.prototype.resume = function () { - if (this.paused) { - this.emit('resume') - this.paused = false - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0) - this._emitQueue.length = 0 - for (var i = 0; i < eq.length; i ++) { - var e = eq[i] - this._emitMatch(e[0], e[1]) - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0) - this._processQueue.length = 0 - for (var i = 0; i < pq.length; i ++) { - var p = pq[i] - this._processing-- - this._process(p[0], p[1], p[2], p[3]) - } - } - } -} - -Glob.prototype._process = function (pattern, index, inGlobStar, cb) { - assert(this instanceof Glob) - assert(typeof cb === 'function') - - if (this.aborted) - return - - this._processing++ - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]) - return - } - - //console.error('PROCESS %d', this._processing, pattern) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index, cb) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip _processing - if (childrenIgnored(this, read)) - return cb() - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) -} - -Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - -Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return cb() - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return cb() - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return cb() - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - this._process([e].concat(remain), index, inGlobStar, cb) - } - cb() -} - -Glob.prototype._emitMatch = function (index, e) { - if (this.aborted) - return - - if (this.matches[index][e]) - return - - if (isIgnored(this, e)) - return - - if (this.paused) { - this._emitQueue.push([index, e]) - return - } - - var abs = this._makeAbs(e) - - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return - } - - if (this.mark) - e = this._mark(e) - - this.matches[index][e] = true - - var st = this.statCache[abs] - if (st) - this.emit('stat', e, st) - - this.emit('match', e) -} - -Glob.prototype._readdirInGlobStar = function (abs, cb) { - if (this.aborted) - return - - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false, cb) - - var lstatkey = 'lstat\0' + abs - var self = this - var lstatcb = inflight(lstatkey, lstatcb_) - - if (lstatcb) - fs.lstat(abs, lstatcb) - - function lstatcb_ (er, lstat) { - if (er) - return cb() - - var isSym = lstat.isSymbolicLink() - self.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) { - self.cache[abs] = 'FILE' - cb() - } else - self._readdir(abs, false, cb) - } -} - -Glob.prototype._readdir = function (abs, inGlobStar, cb) { - if (this.aborted) - return - - cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) - if (!cb) - return - - //console.error('RD %j %j', +inGlobStar, abs) - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return cb() - - if (Array.isArray(c)) - return cb(null, c) - } - - var self = this - fs.readdir(abs, readdirCb(this, abs, cb)) -} - -function readdirCb (self, abs, cb) { - return function (er, entries) { - if (er) - self._readdirError(abs, er, cb) - else - self._readdirEntries(abs, entries, cb) - } -} - -Glob.prototype._readdirEntries = function (abs, entries, cb) { - if (this.aborted) - return - - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - return cb(null, entries) -} - -Glob.prototype._readdirError = function (f, er, cb) { - if (this.aborted) - return - - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) { - this.emit('error', er) - // If the error is handled, then we abort - // if not, we threw out of here - this.abort() - } - if (!this.silent) - console.error('glob error', er) - break - } - - return cb() -} - -Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - - -Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - //console.error('pgs2', prefix, remain[0], entries) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return cb() - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false, cb) - - var isSym = this.symlinks[abs] - var len = entries.length - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return cb() - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true, cb) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true, cb) - } - - cb() -} - -Glob.prototype._processSimple = function (prefix, index, cb) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var self = this - this._stat(prefix, function (er, exists) { - self._processSimple2(prefix, index, er, exists, cb) - }) -} -Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { - - //console.error('ps2', prefix, exists) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return cb() - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this._emitMatch(index, prefix) - cb() -} - -// Returns either 'DIR', 'FILE', or false -Glob.prototype._stat = function (f, cb) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return cb() - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return cb(null, c) - - if (needDir && c === 'FILE') - return cb() - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (stat !== undefined) { - if (stat === false) - return cb(null, stat) - else { - var type = stat.isDirectory() ? 'DIR' : 'FILE' - if (needDir && type === 'FILE') - return cb() - else - return cb(null, type, stat) - } - } - - var self = this - var statcb = inflight('stat\0' + abs, lstatcb_) - if (statcb) - fs.lstat(abs, statcb) - - function lstatcb_ (er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - // If it's a symlink, then treat it as the target, unless - // the target does not exist, then treat it as a file. - return fs.stat(abs, function (er, stat) { - if (er) - self._stat2(f, abs, null, lstat, cb) - else - self._stat2(f, abs, er, stat, cb) - }) - } else { - self._stat2(f, abs, er, lstat, cb) - } - } -} - -Glob.prototype._stat2 = function (f, abs, er, stat, cb) { - if (er) { - this.statCache[abs] = false - return cb() - } - - var needDir = f.slice(-1) === '/' - this.statCache[abs] = stat - - if (abs.slice(-1) === '/' && !stat.isDirectory()) - return cb(null, false, stat) - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return cb() - - return cb(null, c, stat) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/package.json deleted file mode 100644 index d08da544..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "glob@~5.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/findup-sync" - ] - ], - "_from": "glob@>=5.0.0 <5.1.0", - "_id": "glob@5.0.15", - "_inCache": true, - "_installable": true, - "_location": "/glob", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "3.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "glob", - "raw": "glob@~5.0.0", - "rawSpec": "~5.0.0", - "scope": null, - "spec": ">=5.0.0 <5.1.0", - "type": "range" - }, - "_requiredBy": [ - "/findup-sync", - "/vscode" - ], - "_resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "_shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1", - "_shrinkwrap": null, - "_spec": "glob@~5.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/findup-sync", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "description": "a little globber", - "devDependencies": { - "mkdirp": "0", - "rimraf": "^2.2.8", - "tap": "^1.1.4", - "tick": "0.0.6" - }, - "directories": {}, - "dist": { - "shasum": "1bc936b9e02f4a603fcc222ecf7633d30b8b93b1", - "tarball": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" - }, - "engines": { - "node": "*" - }, - "files": [ - "glob.js", - "sync.js", - "common.js" - ], - "gitHead": "3a7e71d453dd80e75b196fd262dd23ed54beeceb", - "homepage": "https://github.com/isaacs/node-glob#readme", - "license": "ISC", - "main": "glob.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "glob", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "scripts": { - "bench": "bash benchmark.sh", - "benchclean": "node benchclean.js", - "prepublish": "npm run benchclean", - "prof": "bash prof.sh && cat profile.txt", - "profclean": "rm -f v8.log profile.txt", - "test": "tap test/*.js --cov", - "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js" - }, - "version": "5.0.15" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/sync.js deleted file mode 100644 index 09883d2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob/sync.js +++ /dev/null @@ -1,460 +0,0 @@ -module.exports = globSync -globSync.GlobSync = GlobSync - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var Glob = require('./glob.js').Glob -var util = require('util') -var path = require('path') -var assert = require('assert') -var isAbsolute = require('path-is-absolute') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var setopts = common.setopts -var ownProp = common.ownProp -var childrenIgnored = common.childrenIgnored - -function globSync (pattern, options) { - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - return new GlobSync(pattern, options).found -} - -function GlobSync (pattern, options) { - if (!pattern) - throw new Error('must provide pattern') - - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options) - - setopts(this, pattern, options) - - if (this.noprocess) - return this - - var n = this.minimatch.set.length - this.matches = new Array(n) - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false) - } - this._finish() -} - -GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) - if (this.realpath) { - var self = this - this.matches.forEach(function (matchset, index) { - var set = self.matches[index] = Object.create(null) - for (var p in matchset) { - try { - p = self._makeAbs(p) - var real = fs.realpathSync(p, self.realpathCache) - set[real] = true - } catch (er) { - if (er.syscall === 'stat') - set[self._makeAbs(p)] = true - else - throw er - } - } - }) - } - common.finish(this) -} - - -GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // See if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip processing - if (childrenIgnored(this, read)) - return - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar) -} - - -GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar) - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix.slice(-1) !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this.matches[index][e] = true - } - // This was the last one, and no stats were needed - return - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) - newPattern = [prefix, e] - else - newPattern = [e] - this._process(newPattern.concat(remain), index, inGlobStar) - } -} - - -GlobSync.prototype._emitMatch = function (index, e) { - var abs = this._makeAbs(e) - if (this.mark) - e = this._mark(e) - - if (this.matches[index][e]) - return - - if (this.nodir) { - var c = this.cache[this._makeAbs(e)] - if (c === 'DIR' || Array.isArray(c)) - return - } - - this.matches[index][e] = true - if (this.stat) - this._stat(e) -} - - -GlobSync.prototype._readdirInGlobStar = function (abs) { - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false) - - var entries - var lstat - var stat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - // lstat failed, doesn't exist - return null - } - - var isSym = lstat.isSymbolicLink() - this.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) - this.cache[abs] = 'FILE' - else - entries = this._readdir(abs, false) - - return entries -} - -GlobSync.prototype._readdir = function (abs, inGlobStar) { - var entries - - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return null - - if (Array.isArray(c)) - return c - } - - try { - return this._readdirEntries(abs, fs.readdirSync(abs)) - } catch (er) { - this._readdirError(abs, er) - return null - } -} - -GlobSync.prototype._readdirEntries = function (abs, entries) { - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - - // mark and cache dir-ness - return entries -} - -GlobSync.prototype._readdirError = function (f, er) { - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) - throw er - if (!this.silent) - console.error('glob error', er) - break - } -} - -GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { - - var entries = this._readdir(abs, inGlobStar) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false) - - var len = entries.length - var isSym = this.symlinks[abs] - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true) - } -} - -GlobSync.prototype._processSimple = function (prefix, index) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var exists = this._stat(prefix) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this.matches[index][prefix] = true -} - -// Returns either 'DIR', 'FILE', or false -GlobSync.prototype._stat = function (f) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return false - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return c - - if (needDir && c === 'FILE') - return false - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (!stat) { - var lstat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - return false - } - - if (lstat.isSymbolicLink()) { - try { - stat = fs.statSync(abs) - } catch (er) { - stat = lstat - } - } else { - stat = lstat - } - } - - this.statCache[abs] = stat - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return false - - return c -} - -GlobSync.prototype._mark = function (p) { - return common.mark(this, p) -} - -GlobSync.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/LICENSE deleted file mode 100755 index 7cbe012c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/README.md deleted file mode 100644 index c14fa38c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# glob2base [![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Support us][gittip-image]][gittip-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] - - -## Information - - - - - - - - - - - - - -
    Packageglob2base
    DescriptionExtracts a base path from a node-glob instance
    Node Version>= 0.10
    - -## Usage - -The module is a function that takes in a node-glob instance and returns a string. Basically it just gives you everything before any globbing/matching happens. - -```javascript -var glob2base = require('glob2base'); -var glob = require('glob'); - -// js/ -glob2base(new glob.Glob('js/**/*.js')); - -// css/test/ -glob2base(new glob.Glob('css/test/{a,b}/*.css')); - -// pages/whatever/ -glob2base(new glob.Glob('pages/whatever/index.html')); -``` - -## Like what we do? - -[gittip-url]: https://www.gittip.com/WeAreFractal/ -[gittip-image]: http://img.shields.io/gittip/WeAreFractal.svg - -[downloads-image]: http://img.shields.io/npm/dm/glob2base.svg -[npm-url]: https://npmjs.org/package/glob2base -[npm-image]: http://img.shields.io/npm/v/glob2base.svg - -[travis-url]: https://travis-ci.org/wearefractal/glob2base -[travis-image]: http://img.shields.io/travis/wearefractal/glob2base.svg - -[coveralls-url]: https://coveralls.io/r/wearefractal/glob2base -[coveralls-image]: http://img.shields.io/coveralls/wearefractal/glob2base/master.svg diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/index.js deleted file mode 100644 index 307e3f27..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/index.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -var path = require('path'); -var findIndex = require('find-index'); - -var flattenGlob = function(arr){ - var out = []; - var flat = true; - for(var i = 0; i < arr.length; i++) { - if (typeof arr[i] !== 'string') { - flat = false; - break; - } - out.push(arr[i]); - } - - // last one is a file or specific dir - // so we pop it off - if (flat) { - out.pop(); - } - return out; -}; - -var flattenExpansion = function(set) { - var first = set[0]; - var toCompare = set.slice(1); - - // find index where the diff is - var idx = findIndex(first, function(v, idx){ - if (typeof v !== 'string') { - return true; - } - - var matched = toCompare.every(function(arr){ - return v === arr[idx]; - }); - - return !matched; - }); - - return first.slice(0, idx); -}; - -var setToBase = function(set) { - // normal something/*.js - if (set.length <= 1) { - return flattenGlob(set[0]); - } - // has expansion - return flattenExpansion(set); -}; - -module.exports = function(glob) { - var set = glob.minimatch.set; - var baseParts = setToBase(set); - var basePath = path.normalize(baseParts.join(path.sep))+path.sep; - return basePath; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/package.json deleted file mode 100644 index 7b6b3f66..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glob2base/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "glob2base@^0.0.12", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "glob2base@>=0.0.12 <0.0.13", - "_id": "glob2base@0.0.12", - "_inCache": true, - "_installable": true, - "_location": "/glob2base", - "_nodeVersion": "0.10.33", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.1.6", - "_phantomChildren": {}, - "_requested": { - "name": "glob2base", - "raw": "glob2base@^0.0.12", - "rawSpec": "^0.0.12", - "scope": null, - "spec": ">=0.0.12 <0.0.13", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream", - "/gulp-symdest/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "_shasum": "9d419b3e28f12e83a362164a277055922c9c0d56", - "_shrinkwrap": null, - "_spec": "glob2base@^0.0.12", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/glob2base/issues" - }, - "dependencies": { - "find-index": "^0.1.1" - }, - "description": "Extracts a base path from a node-glob instance", - "devDependencies": { - "coveralls": "^2.6.1", - "glob": "^4.0.0", - "istanbul": "^0.3.2", - "jshint": "^2.4.1", - "jshint-stylish": "^1.0.0", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "should": "^4.0.0" - }, - "directories": {}, - "dist": { - "shasum": "9d419b3e28f12e83a362164a277055922c9c0d56", - "tarball": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "d3fadacea415f4676fd431c90cd2205a2f1e6b26", - "homepage": "http://github.com/wearefractal/glob2base", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/glob2base/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "glob2base", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/glob2base.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "lint": "jshint index.js --reporter node_modules/jshint-stylish/stylish.js --exclude node_modules", - "test": "npm run-script lint && mocha --reporter spec" - }, - "version": "0.0.12" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.jshintrc deleted file mode 100644 index 2c40c444..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.jshintrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "sub": true, - "undef": true, - "unused": true, - "boss": true, - "eqnull": true, - "node": true, - "es5": true -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.npmignore deleted file mode 100644 index 2ccbe465..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.travis.yml deleted file mode 100644 index cbace30b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" -before_script: - - npm install -g grunt-cli diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/Gruntfile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/Gruntfile.js deleted file mode 100644 index c3f7d746..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/Gruntfile.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -module.exports = function(grunt) { - - // Project configuration. - grunt.initConfig({ - nodeunit: { - files: ['test/**/*_test.js'], - }, - jshint: { - options: { - jshintrc: '.jshintrc' - }, - gruntfile: { - src: 'Gruntfile.js' - }, - lib: { - src: ['lib/**/*.js'] - }, - test: { - src: ['test/*.js'] - }, - }, - watch: { - gruntfile: { - files: '<%= jshint.gruntfile.src %>', - tasks: ['jshint:gruntfile'] - }, - lib: { - files: '<%= jshint.lib.src %>', - tasks: ['jshint:lib', 'nodeunit'] - }, - test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'nodeunit'] - }, - }, - }); - - // These plugins provide necessary tasks. - grunt.loadNpmTasks('grunt-contrib-nodeunit'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-contrib-watch'); - - // Default task. - grunt.registerTask('default', ['jshint', 'nodeunit']); - -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/LICENSE-MIT b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/LICENSE-MIT deleted file mode 100644 index bb2aad6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 "Cowboy" Ben Alman - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/README.md deleted file mode 100644 index 656b1ed9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# globule [![Build Status](https://secure.travis-ci.org/cowboy/node-globule.png?branch=master)](http://travis-ci.org/cowboy/node-globule) - -An easy-to-use wildcard globbing library. - -## Getting Started -Install the module with: `npm install globule` - -```javascript -var globule = require('globule'); -var filepaths = globule.find('**/*.js'); -``` - -## Documentation - -### globule.find -Returns a unique array of all file or directory paths that match the given globbing pattern(s). This method accepts either comma separated globbing patterns or an array of globbing patterns. Paths matching patterns that begin with `!` will be excluded from the returned array. Patterns are processed in order, so inclusion and exclusion order is significant. - -```js -globule.find(patterns [, options]) -``` - -The `options` object supports all [glob][] library options, along with a few extras. These are the most commonly used: - -* `filter` Either a valid [fs.Stats method name](http://nodejs.org/docs/latest/api/fs.html#fs_class_fs_stats) or a function that will be passed the matched `src` filepath and `options` object as arguments. This function should return a `Boolean` value. -* `nonull` Retain globbing patterns in result set even if they fail to match files. -* `matchBase` Patterns without slashes will match just the basename part. Eg. this makes `*.js` work like `**/*.js`. -* `srcBase` Patterns will be matched relative to the specified path instead of the current working directory. This is a synonym for `cwd`. -* `prefixBase` Any specified `srcBase` will be prefixed to all returned filepaths. - -[glob]: https://github.com/isaacs/node-glob - -### globule.match -Match one or more globbing patterns against one or more file paths. Returns a uniqued array of all file paths that match any of the specified globbing patterns. Both the `patterns` and `filepaths` arguments can be a single string or array of strings. Paths matching patterns that begin with `!` will be excluded from the returned array. Patterns are processed in order, so inclusion and exclusion order is significant. - -```js -grunt.file.match(patterns, filepaths [, options]) -``` - -### globule.isMatch -This method contains the same signature and logic as the `globule.match` method, but returns `true` if any files were matched, otherwise `false`. - -```js -grunt.file.isMatch(patterns, filepaths [, options]) -``` - -### globule.mapping -Given a set of source file paths, returns an array of src-dest file mapping objects. Both src and dest paths may be renamed, depending on the options specified. - -```js -globule.mapping(filepaths [, options]) -``` - -In addition to the options the `globule.find` method supports, the options object also supports these properties: - -* `srcBase` The directory from which patterns are matched. Any string specified as `srcBase` is effectively stripped from the beginning of all matched paths. -* `destBase` The specified path is prefixed to all `dest` filepaths. -* `ext` Remove anything after (and including) the first `.` in the destination path, then append this value. -* `extDot` Change the behavior of `ext`, `"first"` and `"last"` will remove anything after the first or last `.` in the destination filename, respectively. Defaults to `"first"`. -* `flatten` Remove the path component from all matched src files. The src file path is still joined to the specified destBase. -* `rename` If specified, this function will be responsible for returning the final `dest` filepath. By default, it flattens paths (if specified), changes extensions (if specified) and joins the matched path to the `destBase`. - -### globule.findMapping -This method is a convenience wrapper around the `globule.find` and `globule.mapping` methods. - -```js -globule.findMapping(patterns [, options]) -``` - - -## Examples - -Given the files `foo/a.js` and `foo/b.js`: - -### srcBase and destBase - -```js -globule.find("foo/*.js") -// ["foo/a.js", "foo/b.js"] - -globule.find("*.js", {srcBase: "foo"}) -// ["a.js", "b.js"] - -globule.find("*.js", {srcBase: "foo", prefixBase: true}) -// ["foo/a.js", "foo/b.js"] -``` - -```js -globule.findMapping("foo/*.js") -// [{src: "foo/a.js", dest: "foo/a.js"}, {src: "foo/b.js", dest: "foo/b.js"}] - -globule.findMapping("foo/*.js", {destBase: "bar"}) -// [{src: "foo/a.js", dest: "bar/foo/a.js"}, {src: "foo/b.js", dest: "bar/foo/b.js"}] - -globule.findMapping("*.js", {srcBase: "foo", destBase: "bar"}) -// [{src: "foo/a.js", dest: "bar/a.js"}, {src: "foo/b.js", dest: "bar/b.js"}] -``` - -```js -globule.mapping(["foo/a.js", "foo/b.js"]) -// [{src: "foo/a.js", dest: "foo/a.js"}, {src: "foo/b.js", dest: "foo/b.js"}] - -globule.mapping(["foo/a.js", "foo/b.js"], {destBase: "bar"}) -// [{src: "foo/a.js", dest: "bar/foo/a.js"}, {src: "foo/b.js", dest: "bar/foo/b.js"}] - -globule.mapping(["a.js", "b.js"], {srcBase: "foo", destBase: "bar"}) -// [{src: "foo/a.js", dest: "bar/a.js"}, {src: "foo/b.js", dest: "bar/b.js"}] -``` - -## Contributing -In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/). - -## Release History -_(Nothing yet)_ - -## License -Copyright (c) 2013 "Cowboy" Ben Alman -Licensed under the MIT license. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/lib/globule.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/lib/globule.js deleted file mode 100644 index 01017b92..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/lib/globule.js +++ /dev/null @@ -1,172 +0,0 @@ -/* - * globule - * https://github.com/cowboy/node-globule - * - * Copyright (c) 2013 "Cowboy" Ben Alman - * Licensed under the MIT license. - */ - -'use strict'; - -var fs = require('fs'); -var path = require('path'); - -var _ = require('lodash'); -var glob = require('glob'); -var minimatch = require('minimatch'); - -// The module. -var globule = exports; - -// Process specified wildcard glob patterns or filenames against a -// callback, excluding and uniquing files in the result set. -function processPatterns(patterns, fn) { - return _.flatten(patterns).reduce(function(result, pattern) { - if (pattern.indexOf('!') === 0) { - // If the first character is ! all matches via this pattern should be - // removed from the result set. - pattern = pattern.slice(1); - return _.difference(result, fn(pattern)); - } else { - // Otherwise, add all matching filepaths to the result set. - return _.union(result, fn(pattern)); - } - }, []); -} - -// Match a filepath or filepaths against one or more wildcard patterns. Returns -// all matching filepaths. This behaves just like minimatch.match, but supports -// any number of patterns. -globule.match = function(patterns, filepaths, options) { - // Return empty set if either patterns or filepaths was omitted. - if (patterns == null || filepaths == null) { return []; } - // Normalize patterns and filepaths to arrays. - if (!_.isArray(patterns)) { patterns = [patterns]; } - if (!_.isArray(filepaths)) { filepaths = [filepaths]; } - // Return empty set if there are no patterns or filepaths. - if (patterns.length === 0 || filepaths.length === 0) { return []; } - // Return all matching filepaths. - return processPatterns(patterns, function(pattern) { - return minimatch.match(filepaths, pattern, options || {}); - }); -}; - -// Match a filepath or filepaths against one or more wildcard patterns. Returns -// true if any of the patterns match. -globule.isMatch = function() { - return globule.match.apply(null, arguments).length > 0; -}; - -// Return an array of all file paths that match the given wildcard patterns. -globule.find = function() { - var args = _.toArray(arguments); - // If the last argument is an options object, remove it from args. - var options = _.isPlainObject(args[args.length - 1]) ? args.pop() : {}; - // Use the first argument if it's an Array, otherwise use all arguments. - var patterns = _.isArray(args[0]) ? args[0] : args; - // Return empty set if there are no patterns or filepaths. - if (patterns.length === 0) { return []; } - var srcBase = options.srcBase || options.cwd; - // Create glob-specific options object. - var globOptions = _.extend({}, options); - if (srcBase) { - globOptions.cwd = srcBase; - } - // Get all matching filepaths. - var matches = processPatterns(patterns, function(pattern) { - return glob.sync(pattern, globOptions); - }); - // If srcBase and prefixBase were specified, prefix srcBase to matched paths. - if (srcBase && options.prefixBase) { - matches = matches.map(function(filepath) { - return path.join(srcBase, filepath); - }); - } - // Filter result set? - if (options.filter) { - matches = matches.filter(function(filepath) { - // If srcBase was specified but prefixBase was NOT, prefix srcBase - // temporarily, for filtering. - if (srcBase && !options.prefixBase) { - filepath = path.join(srcBase, filepath); - } - try { - if (_.isFunction(options.filter)) { - return options.filter(filepath, options); - } else { - // If the file is of the right type and exists, this should work. - return fs.statSync(filepath)[options.filter](); - } - } catch(err) { - // Otherwise, it's probably not the right type. - return false; - } - }); - } - return matches; -}; - -var pathSeparatorRe = /[\/\\]/g; -var extDotRe = { - first: /(\.[^\/]*)?$/, - last: /(\.[^\/\.]*)?$/, -}; -function rename(dest, options) { - // Flatten path? - if (options.flatten) { - dest = path.basename(dest); - } - // Change the extension? - if (options.ext) { - dest = dest.replace(extDotRe[options.extDot], options.ext); - } - // Join dest and destBase? - if (options.destBase) { - dest = path.join(options.destBase, dest); - } - return dest; -} - -// Build a mapping of src-dest filepaths from the given set of filepaths. -globule.mapping = function(filepaths, options) { - // Return empty set if filepaths was omitted. - if (filepaths == null) { return []; } - options = _.defaults({}, options, { - extDot: 'first', - rename: rename, - }); - var files = []; - var fileByDest = {}; - // Find all files matching pattern, using passed-in options. - filepaths.forEach(function(src) { - // Generate destination filename. - var dest = options.rename(src, options); - // Prepend srcBase to all src paths. - if (options.srcBase) { - src = path.join(options.srcBase, src); - } - // Normalize filepaths to be unix-style. - dest = dest.replace(pathSeparatorRe, '/'); - src = src.replace(pathSeparatorRe, '/'); - // Map correct src path to dest path. - if (fileByDest[dest]) { - // If dest already exists, push this src onto that dest's src array. - fileByDest[dest].src.push(src); - } else { - // Otherwise create a new src-dest file mapping object. - files.push({ - src: [src], - dest: dest, - }); - // And store a reference for later use. - fileByDest[dest] = files[files.length - 1]; - } - }); - return files; -}; - -// Return a mapping of src-dest filepaths from files matching the given -// wildcard patterns. -globule.findMapping = function(patterns, options) { - return globule.mapping(globule.find(patterns, options), options); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.npmignore deleted file mode 100644 index 2af4b71c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.*.swp -test/a/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.travis.yml deleted file mode 100644 index baa0031d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/README.md deleted file mode 100644 index 6e27df62..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# Glob - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -## Attention: node-glob users! - -The API has changed dramatically between 2.x and 3.x. This library is -now 100% JavaScript, and the integer flags have been replaced with an -options object. - -Also, there's an event emitter class, proper tests, and all the other -things you've come to expect from node modules. - -And best of all, no compilation! - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Features - -Please see the [minimatch -documentation](https://github.com/isaacs/minimatch) for more details. - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options] - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instanting the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `error` The error encountered. When an error is encountered, the - glob object is in an undefined state, and should be discarded. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `abort` Stop the search. - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the glob object, as well. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. It will cause - ELOOP to be triggered one level sooner in the case of cyclical - symbolic links. -* `silent` When an unusual error is encountered - when attempting to read a directory, a warning will be printed to - stderr. Set the `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered - when attempting to read a directory, the process will just continue on - in search of other matches. Set the `strict` option to raise an error - in these cases. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary to - set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `sync` Perform a synchronous glob search. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. - Set this flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `nocase` Perform a case-insensitive match. Note that case-insensitive - filesystems will sometimes result in glob returning results that are - case-insensitively matched anyway, since readdir and stat will not - raise an error. -* `debug` Set to enable debug logging in minimatch and glob. -* `globDebug` Set to enable debug logging in glob, but not minimatch. - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. **Note that this is different from the way that `**` is -handled by ruby's `Dir` class.** - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the statCache object is reused between glob calls. - -Users are thus advised not to use a glob result as a -guarantee of filesystem state in the face of rapid changes. -For the vast majority of operations, this is never a problem. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/g.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/g.js deleted file mode 100644 index be122df0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/g.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "test/a/**/[cg]/../[cg]" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/usr-local.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/usr-local.js deleted file mode 100644 index 327a425e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/examples/usr-local.js +++ /dev/null @@ -1,9 +0,0 @@ -var Glob = require("../").Glob - -var pattern = "{./*/*,/*,/usr/local/*}" -console.log(pattern) - -var mg = new Glob(pattern, {mark: true}, function (er, matches) { - console.log("matches", matches) -}) -console.log("after") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/glob.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/glob.js deleted file mode 100644 index 891c8836..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/glob.js +++ /dev/null @@ -1,643 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// readdir(PREFIX) as ENTRIES -// If fails, END -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $]) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $]) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - - - -module.exports = glob - -var fs = require("graceful-fs") -, minimatch = require("minimatch") -, Minimatch = minimatch.Minimatch -, inherits = require("inherits") -, EE = require("events").EventEmitter -, path = require("path") -, isDir = {} -, assert = require("assert").ok - -function glob (pattern, options, cb) { - if (typeof options === "function") cb = options, options = {} - if (!options) options = {} - - if (typeof options === "number") { - deprecated() - return - } - - var g = new Glob(pattern, options, cb) - return g.sync ? g.found : g -} - -glob.fnmatch = deprecated - -function deprecated () { - throw new Error("glob's interface has changed. Please see the docs.") -} - -glob.sync = globSync -function globSync (pattern, options) { - if (typeof options === "number") { - deprecated() - return - } - - options = options || {} - options.sync = true - return glob(pattern, options) -} - - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (!(this instanceof Glob)) { - return new Glob(pattern, options, cb) - } - - if (typeof cb === "function") { - this.on("error", cb) - this.on("end", function (matches) { - cb(null, matches) - }) - } - - options = options || {} - - this.EOF = {} - this._emitQueue = [] - - this.maxDepth = options.maxDepth || 1000 - this.maxLength = options.maxLength || Infinity - this.statCache = options.statCache || {} - - this.changedCwd = false - var cwd = process.cwd() - if (!options.hasOwnProperty("cwd")) this.cwd = cwd - else { - this.cwd = options.cwd - this.changedCwd = path.resolve(options.cwd) !== cwd - } - - this.root = options.root || path.resolve(this.cwd, "/") - this.root = path.resolve(this.root) - if (process.platform === "win32") - this.root = this.root.replace(/\\/g, "/") - - this.nomount = !!options.nomount - - if (!pattern) { - throw new Error("must provide pattern") - } - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - this.strict = options.strict !== false - this.dot = !!options.dot - this.mark = !!options.mark - this.sync = !!options.sync - this.nounique = !!options.nounique - this.nonull = !!options.nonull - this.nosort = !!options.nosort - this.nocase = !!options.nocase - this.stat = !!options.stat - - this.debug = !!options.debug || !!options.globDebug - if (this.debug) - this.log = console.error - - this.silent = !!options.silent - - var mm = this.minimatch = new Minimatch(pattern, options) - this.options = mm.options - pattern = this.pattern = mm.pattern - - this.error = null - this.aborted = false - - EE.call(this) - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - this.minimatch.set.forEach(iterator.bind(this)) - function iterator (pattern, i, set) { - this._process(pattern, 0, i, function (er) { - if (er) this.emit("error", er) - if (-- n <= 0) this._finish() - }) - } -} - -Glob.prototype.log = function () {} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - - var nou = this.nounique - , all = nou ? [] : {} - - for (var i = 0, l = this.matches.length; i < l; i ++) { - var matches = this.matches[i] - this.log("matches[%d] =", i, matches) - // do like the shell, and spit out the literal glob - if (!matches) { - if (this.nonull) { - var literal = this.minimatch.globSet[i] - if (nou) all.push(literal) - else all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) all.push.apply(all, m) - else m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) all = Object.keys(all) - - if (!this.nosort) { - all = all.sort(this.nocase ? alphasorti : alphasort) - } - - if (this.mark) { - // at *some* point we statted all of these - all = all.map(function (m) { - var sc = this.statCache[m] - if (!sc) - return m - var isDir = (Array.isArray(sc) || sc === 2) - if (isDir && m.slice(-1) !== "/") { - return m + "/" - } - if (!isDir && m.slice(-1) === "/") { - return m.replace(/\/+$/, "") - } - return m - }, this) - } - - this.log("emitting end", all) - - this.EOF = this.found = all - this.emitMatch(this.EOF) -} - -function alphasorti (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return alphasort(a, b) -} - -function alphasort (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit("abort") -} - -Glob.prototype.pause = function () { - if (this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = true - this.emit("pause") -} - -Glob.prototype.resume = function () { - if (!this.paused) return - if (this.sync) - this.emit("error", new Error("Can't pause/resume sync glob")) - this.paused = false - this.emit("resume") - this._processEmitQueue() - //process.nextTick(this.emit.bind(this, "resume")) -} - -Glob.prototype.emitMatch = function (m) { - this._emitQueue.push(m) - this._processEmitQueue() -} - -Glob.prototype._processEmitQueue = function (m) { - while (!this._processingEmitQueue && - !this.paused) { - this._processingEmitQueue = true - var m = this._emitQueue.shift() - if (!m) { - this._processingEmitQueue = false - break - } - - this.log('emit!', m === this.EOF ? "end" : "match") - - this.emit(m === this.EOF ? "end" : "match", m) - this._processingEmitQueue = false - } -} - -Glob.prototype._process = function (pattern, depth, index, cb_) { - assert(this instanceof Glob) - - var cb = function cb (er, res) { - assert(this instanceof Glob) - if (this.paused) { - if (!this._processQueue) { - this._processQueue = [] - this.once("resume", function () { - var q = this._processQueue - this._processQueue = null - q.forEach(function (cb) { cb() }) - }) - } - this._processQueue.push(cb_.bind(this, er, res)) - } else { - cb_.call(this, er, res) - } - }.bind(this) - - if (this.aborted) return cb() - - if (depth > this.maxDepth) return cb() - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === "string") { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - prefix = pattern.join("/") - this._stat(prefix, function (exists, isDir) { - // either it's there, or it isn't. - // nothing more to do, either way. - if (exists) { - if (prefix && isAbsolute(prefix) && !this.nomount) { - if (prefix.charAt(0) === "/") { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - } - } - - if (process.platform === "win32") - prefix = prefix.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][prefix] = true - this.emitMatch(prefix) - } - return cb() - }) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's "absolute" like /foo/bar, - // or "relative" like "../baz" - prefix = pattern.slice(0, n) - prefix = prefix.join("/") - break - } - - // get the list of entries. - var read - if (prefix === null) read = "." - else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { - if (!prefix || !isAbsolute(prefix)) { - prefix = path.join("/", prefix) - } - read = prefix = path.resolve(prefix) - - // if (process.platform === "win32") - // read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/") - - this.log('absolute: ', prefix, this.root, pattern, read) - } else { - read = prefix - } - - this.log('readdir(%j)', read, this.cwd, this.root) - - return this._readdir(read, function (er, entries) { - if (er) { - // not a directory! - // this means that, whatever else comes after this, it can never match - return cb() - } - - // globstar is special - if (pattern[n] === minimatch.GLOBSTAR) { - // test without the globstar, and with every child both below - // and replacing the globstar. - var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ] - entries.forEach(function (e) { - if (e.charAt(0) === "." && !this.dot) return - // instead of the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))) - // below the globstar - s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n))) - }, this) - - // now asyncForEach over this - var l = s.length - , errState = null - s.forEach(function (gsPattern) { - this._process(gsPattern, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l <= 0) return cb() - }) - }, this) - - return - } - - // not a globstar - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = pattern[n] - if (typeof pn === "string") { - var found = entries.indexOf(pn) !== -1 - entries = found ? entries[pn] : [] - } else { - var rawGlob = pattern[n]._glob - , dotOk = this.dot || rawGlob.charAt(0) === "." - - entries = entries.filter(function (e) { - return (e.charAt(0) !== "." || dotOk) && - (typeof pattern[n] === "string" && e === pattern[n] || - e.match(pattern[n])) - }) - } - - // If n === pattern.length - 1, then there's no need for the extra stat - // *unless* the user has specified "mark" or "stat" explicitly. - // We know that they exist, since the readdir returned them. - if (n === pattern.length - 1 && - !this.mark && - !this.stat) { - entries.forEach(function (e) { - if (prefix) { - if (prefix !== "/") e = prefix + "/" + e - else e = prefix + e - } - if (e.charAt(0) === "/" && !this.nomount) { - e = path.join(this.root, e) - } - - if (process.platform === "win32") - e = e.replace(/\\/g, "/") - - this.matches[index] = this.matches[index] || {} - this.matches[index][e] = true - this.emitMatch(e) - }, this) - return cb.call(this) - } - - - // now test all the remaining entries as stand-ins for that part - // of the pattern. - var l = entries.length - , errState = null - if (l === 0) return cb() // no matches possible - entries.forEach(function (e) { - var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)) - this._process(p, depth + 1, index, function (er) { - if (errState) return - if (er) return cb(errState = er) - if (--l === 0) return cb.call(this) - }) - }, this) - }) - -} - -Glob.prototype._stat = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - this.log('stat', [this.cwd, f, '=', abs]) - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterStat(f, abs, cb, er) - } - - if (this.statCache.hasOwnProperty(f)) { - var exists = this.statCache[f] - , isDir = exists && (Array.isArray(exists) || exists === 2) - if (this.sync) return cb.call(this, !!exists, isDir) - return process.nextTick(cb.bind(this, !!exists, isDir)) - } - - if (this.sync) { - var er, stat - try { - stat = fs.statSync(abs) - } catch (e) { - er = e - } - this._afterStat(f, abs, cb, er, stat) - } else { - fs.stat(abs, this._afterStat.bind(this, f, abs, cb)) - } -} - -Glob.prototype._afterStat = function (f, abs, cb, er, stat) { - var exists - assert(this instanceof Glob) - - if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) { - this.log("should be ENOTDIR, fake it") - - er = new Error("ENOTDIR, not a directory '" + abs + "'") - er.path = abs - er.code = "ENOTDIR" - stat = null - } - - if (er || !stat) { - exists = false - } else { - exists = stat.isDirectory() ? 2 : 1 - } - this.statCache[f] = this.statCache[f] || exists - cb.call(this, !!exists, exists === 2) -} - -Glob.prototype._readdir = function (f, cb) { - assert(this instanceof Glob) - var abs = f - if (f.charAt(0) === "/") { - abs = path.join(this.root, f) - } else if (isAbsolute(f)) { - abs = f - } else if (this.changedCwd) { - abs = path.resolve(this.cwd, f) - } - - this.log('readdir', [this.cwd, f, abs]) - if (f.length > this.maxLength) { - var er = new Error("Path name too long") - er.code = "ENAMETOOLONG" - er.path = f - return this._afterReaddir(f, abs, cb, er) - } - - if (this.statCache.hasOwnProperty(f)) { - var c = this.statCache[f] - if (Array.isArray(c)) { - if (this.sync) return cb.call(this, null, c) - return process.nextTick(cb.bind(this, null, c)) - } - - if (!c || c === 1) { - // either ENOENT or ENOTDIR - var code = c ? "ENOTDIR" : "ENOENT" - , er = new Error((c ? "Not a directory" : "Not found") + ": " + f) - er.path = f - er.code = code - this.log(f, er) - if (this.sync) return cb.call(this, er) - return process.nextTick(cb.bind(this, er)) - } - - // at this point, c === 2, meaning it's a dir, but we haven't - // had to read it yet, or c === true, meaning it's *something* - // but we don't have any idea what. Need to read it, either way. - } - - if (this.sync) { - var er, entries - try { - entries = fs.readdirSync(abs) - } catch (e) { - er = e - } - return this._afterReaddir(f, abs, cb, er, entries) - } - - fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb)) -} - -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) { - assert(this instanceof Glob) - if (entries && !er) { - this.statCache[f] = entries - // if we haven't asked to stat everything for suresies, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. This also gets us one step - // further into ELOOP territory. - if (!this.mark && !this.stat) { - entries.forEach(function (e) { - if (f === "/") e = f + e - else e = f + "/" + e - this.statCache[e] = true - }, this) - } - - return cb.call(this, er, entries) - } - - // now handle errors, and cache the information - if (er) switch (er.code) { - case "ENOTDIR": // totally normal. means it *does* exist. - this.statCache[f] = 1 - return cb.call(this, er) - case "ENOENT": // not terribly unusual - case "ELOOP": - case "ENAMETOOLONG": - case "UNKNOWN": - this.statCache[f] = false - return cb.call(this, er) - default: // some unusual error. Treat as failure. - this.statCache[f] = false - if (this.strict) this.emit("error", er) - if (!this.silent) console.error("glob error", er) - return cb.call(this, er) - } -} - -var isAbsolute = process.platform === "win32" ? absWin : absUnix - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - , result = splitDeviceRe.exec(p) - , device = result[1] || '' - , isUnc = device && device.charAt(1) !== ':' - , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/package.json deleted file mode 100644 index e0bc8262..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_args": [ - [ - "glob@~3.1.21", - "/Users/sid/Desktop/code/RustyCode/node_modules/globule" - ] - ], - "_from": "glob@>=3.1.21 <3.2.0", - "_id": "glob@3.1.21", - "_inCache": true, - "_installable": true, - "_location": "/globule/glob", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "1.2.12", - "_phantomChildren": {}, - "_requested": { - "name": "glob", - "raw": "glob@~3.1.21", - "rawSpec": "~3.1.21", - "scope": null, - "spec": ">=3.1.21 <3.2.0", - "type": "range" - }, - "_requiredBy": [ - "/globule" - ], - "_resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "_shasum": "d29e0a055dea5138f4d07ed40e8982e83c2066cd", - "_shrinkwrap": null, - "_spec": "glob@~3.1.21", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/globule", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "dependencies": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - }, - "description": "a little globber", - "devDependencies": { - "mkdirp": "0", - "rimraf": "1", - "tap": "~0.4.0" - }, - "directories": {}, - "dist": { - "shasum": "d29e0a055dea5138f4d07ed40e8982e83c2066cd", - "tarball": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz" - }, - "engines": { - "node": "*" - }, - "homepage": "https://github.com/isaacs/node-glob#readme", - "license": "BSD", - "main": "glob.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "glob", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.1.21" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/00-setup.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/00-setup.js deleted file mode 100644 index 245afafd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/00-setup.js +++ /dev/null @@ -1,176 +0,0 @@ -// just a little pre-run script to set up the fixtures. -// zz-finish cleans it up - -var mkdirp = require("mkdirp") -var path = require("path") -var i = 0 -var tap = require("tap") -var fs = require("fs") -var rimraf = require("rimraf") - -var files = -[ "a/.abcdef/x/y/z/a" -, "a/abcdef/g/h" -, "a/abcfed/g/h" -, "a/b/c/d" -, "a/bc/e/f" -, "a/c/d/c/b" -, "a/cb/e/f" -] - -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c") -var symlinkFrom = "../.." - -files = files.map(function (f) { - return path.resolve(__dirname, f) -}) - -tap.test("remove fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "remove fixtures") - t.end() - }) -}) - -files.forEach(function (f) { - tap.test(f, function (t) { - var d = path.dirname(f) - mkdirp(d, 0755, function (er) { - if (er) { - t.fail(er) - return t.bailout() - } - fs.writeFile(f, "i like tests", function (er) { - t.ifError(er, "make file") - t.end() - }) - }) - }) -}) - -if (process.platform !== "win32") { - tap.test("symlinky", function (t) { - var d = path.dirname(symlinkTo) - console.error("mkdirp", d) - mkdirp(d, 0755, function (er) { - t.ifError(er) - fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) { - t.ifError(er, "make symlink") - t.end() - }) - }) - }) -} - -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) { - w = "/tmp/glob-test/" + w - tap.test("create " + w, function (t) { - mkdirp(w, function (er) { - if (er) - throw er - t.pass(w) - t.end() - }) - }) -}) - - -// generate the bash pattern test-fixtures if possible -if (process.platform === "win32" || !process.env.TEST_REGEN) { - console.error("Windows, or TEST_REGEN unset. Using cached fixtures.") - return -} - -var spawn = require("child_process").spawn; -var globs = - // put more patterns here. - // anything that would be directly in / should be in /tmp/glob-test - ["test/a/*/+(c|g)/./d" - ,"test/a/**/[cg]/../[cg]" - ,"test/a/{b,c,d,e,f}/**/g" - ,"test/a/b/**" - ,"test/**/g" - ,"test/a/abc{fed,def}/g/h" - ,"test/a/abc{fed/g,def}/**/" - ,"test/a/abc{fed/g,def}/**///**/" - ,"test/**/a/**/" - ,"test/+(a|b|c)/a{/,bc*}/**" - ,"test/*/*/*/f" - ,"test/**/f" - ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**" - ,"{./*/*,/tmp/glob-test/*}" - ,"{/tmp/glob-test/*,*}" // evil owl face! how you taunt me! - ,"test/a/!(symlink)/**" - ] -var bashOutput = {} -var fs = require("fs") - -globs.forEach(function (pattern) { - tap.test("generate fixture " + pattern, function (t) { - var cmd = "shopt -s globstar && " + - "shopt -s extglob && " + - "shopt -s nullglob && " + - // "shopt >&2; " + - "eval \'for i in " + pattern + "; do echo $i; done\'" - var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) }) - var out = [] - cp.stdout.on("data", function (c) { - out.push(c) - }) - cp.stderr.pipe(process.stderr) - cp.on("close", function (code) { - out = flatten(out) - if (!out) - out = [] - else - out = cleanResults(out.split(/\r*\n/)) - - bashOutput[pattern] = out - t.notOk(code, "bash test should finish nicely") - t.end() - }) - }) -}) - -tap.test("save fixtures", function (t) { - var fname = path.resolve(__dirname, "bash-results.json") - var data = JSON.stringify(bashOutput, null, 2) + "\n" - fs.writeFile(fname, data, function (er) { - t.ifError(er) - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -function flatten (chunks) { - var s = 0 - chunks.forEach(function (c) { s += c.length }) - var out = new Buffer(s) - s = 0 - chunks.forEach(function (c) { - c.copy(out, s) - s += c.length - }) - - return out.toString().trim() -} - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-comparison.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-comparison.js deleted file mode 100644 index 239ed1a9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-comparison.js +++ /dev/null @@ -1,63 +0,0 @@ -// basic test -// show that it does the same thing by default as the shell. -var tap = require("tap") -, child_process = require("child_process") -, bashResults = require("./bash-results.json") -, globs = Object.keys(bashResults) -, glob = require("../") -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -globs.forEach(function (pattern) { - var expect = bashResults[pattern] - // anything regarding the symlink thing will fail on windows, so just skip it - if (process.platform === "win32" && - expect.some(function (m) { - return /\/symlink\//.test(m) - })) - return - - tap.test(pattern, function (t) { - glob(pattern, function (er, matches) { - if (er) - throw er - - // sort and unmark, just to match the shell results - matches = cleanResults(matches) - - t.deepEqual(matches, expect, pattern) - t.end() - }) - }) - - tap.test(pattern + " sync", function (t) { - var matches = cleanResults(glob.sync(pattern)) - - t.deepEqual(matches, expect, "should match shell") - t.end() - }) -}) - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/') - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-results.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-results.json deleted file mode 100644 index c227449b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/bash-results.json +++ /dev/null @@ -1,348 +0,0 @@ -{ - "test/a/*/+(c|g)/./d": [ - "test/a/b/c/./d" - ], - "test/a/**/[cg]/../[cg]": [ - "test/a/abcdef/g/../g", - "test/a/abcfed/g/../g", - "test/a/b/c/../c", - "test/a/c/../c", - "test/a/c/d/c/../c", - "test/a/symlink/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c" - ], - "test/a/{b,c,d,e,f}/**/g": [], - "test/a/b/**": [ - "test/a/b", - "test/a/b/c", - "test/a/b/c/d" - ], - "test/**/g": [ - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed,def}/g/h": [ - "test/a/abcdef/g/h", - "test/a/abcfed/g/h" - ], - "test/a/abc{fed/g,def}/**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/a/abc{fed/g,def}/**///**/": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed/g" - ], - "test/**/a/**/": [ - "test/a", - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/b", - "test/a/b/c", - "test/a/bc", - "test/a/bc/e", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/cb", - "test/a/cb/e", - "test/a/symlink", - "test/a/symlink/a", - "test/a/symlink/a/b", - "test/a/symlink/a/b/c", - "test/a/symlink/a/b/c/a", - "test/a/symlink/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b" - ], - "test/+(a|b|c)/a{/,bc*}/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h" - ], - "test/*/*/*/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/**/f": [ - "test/a/bc/e/f", - "test/a/cb/e/f" - ], - "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [ - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b", - "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c" - ], - "{./*/*,/tmp/glob-test/*}": [ - "./examples/g.js", - "./examples/usr-local.js", - "./node_modules/graceful-fs", - "./node_modules/inherits", - "./node_modules/minimatch", - "./node_modules/mkdirp", - "./node_modules/rimraf", - "./node_modules/tap", - "./test/00-setup.js", - "./test/a", - "./test/bash-comparison.js", - "./test/bash-results.json", - "./test/cwd-test.js", - "./test/mark.js", - "./test/nocase-nomagic.js", - "./test/pause-resume.js", - "./test/root-nomount.js", - "./test/root.js", - "./test/zz-cleanup.js", - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq" - ], - "{/tmp/glob-test/*,*}": [ - "/tmp/glob-test/asdf", - "/tmp/glob-test/bar", - "/tmp/glob-test/baz", - "/tmp/glob-test/foo", - "/tmp/glob-test/quux", - "/tmp/glob-test/qwer", - "/tmp/glob-test/rewq", - "examples", - "glob.js", - "LICENSE", - "node_modules", - "package.json", - "README.md", - "test" - ], - "test/a/!(symlink)/**": [ - "test/a/abcdef", - "test/a/abcdef/g", - "test/a/abcdef/g/h", - "test/a/abcfed", - "test/a/abcfed/g", - "test/a/abcfed/g/h", - "test/a/b", - "test/a/b/c", - "test/a/b/c/d", - "test/a/bc", - "test/a/bc/e", - "test/a/bc/e/f", - "test/a/c", - "test/a/c/d", - "test/a/c/d/c", - "test/a/c/d/c/b", - "test/a/cb", - "test/a/cb/e", - "test/a/cb/e/f" - ] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/cwd-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/cwd-test.js deleted file mode 100644 index 352c27ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/cwd-test.js +++ /dev/null @@ -1,55 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing cwd and searching for **/d", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('**/d', function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('a', function (t) { - glob('**/d', {cwd:path.resolve('a')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'b/c/d', 'c/d' ]) - t.end() - }) - }) - - t.test('a/b', function (t) { - glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('a/b/', function (t) { - glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'c/d' ]) - t.end() - }) - }) - - t.test('.', function (t) { - glob('**/d', {cwd: process.cwd()}, function (er, matches) { - t.ifError(er) - t.like(matches, [ 'a/b/c/d', 'a/c/d' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/mark.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/mark.js deleted file mode 100644 index ed68a335..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/mark.js +++ /dev/null @@ -1,74 +0,0 @@ -var test = require("tap").test -var glob = require('../') -process.chdir(__dirname) - -test("mark, no / on pattern", function (t) { - glob("a/*", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - - if (process.platform !== "win32") - expect.push('a/symlink/') - - t.same(results, expect) - t.end() - }) -}) - -test("mark=false, no / on pattern", function (t) { - glob("a/*", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef', - 'a/abcfed', - 'a/b', - 'a/bc', - 'a/c', - 'a/cb' ] - - if (process.platform !== "win32") - expect.push('a/symlink') - t.same(results, expect) - t.end() - }) -}) - -test("mark=true, / on pattern", function (t) { - glob("a/*/", {mark: true}, function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }) -}) - -test("mark=false, / on pattern", function (t) { - glob("a/*/", function (er, results) { - if (er) - throw er - var expect = [ 'a/abcdef/', - 'a/abcfed/', - 'a/b/', - 'a/bc/', - 'a/c/', - 'a/cb/' ] - if (process.platform !== "win32") - expect.push('a/symlink/') - t.same(results, expect) - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/nocase-nomagic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/nocase-nomagic.js deleted file mode 100644 index d8629709..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/nocase-nomagic.js +++ /dev/null @@ -1,113 +0,0 @@ -var fs = require('graceful-fs'); -var test = require('tap').test; -var glob = require('../'); - -test('mock fs', function(t) { - var stat = fs.stat - var statSync = fs.statSync - var readdir = fs.readdir - var readdirSync = fs.readdirSync - - function fakeStat(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = { isDirectory: function() { return true } } - break - case '/tmp/a': - ret = { isDirectory: function() { return false } } - break - } - return ret - } - - fs.stat = function(path, cb) { - var f = fakeStat(path); - if (f) { - process.nextTick(function() { - cb(null, f) - }) - } else { - stat.call(fs, path, cb) - } - } - - fs.statSync = function(path) { - return fakeStat(path) || statSync.call(fs, path) - } - - function fakeReaddir(path) { - var ret - switch (path.toLowerCase()) { - case '/tmp': case '/tmp/': - ret = [ 'a', 'A' ] - break - case '/': - ret = ['tmp', 'tMp', 'tMP', 'TMP'] - } - return ret - } - - fs.readdir = function(path, cb) { - var f = fakeReaddir(path) - if (f) - process.nextTick(function() { - cb(null, f) - }) - else - readdir.call(fs, path, cb) - } - - fs.readdirSync = function(path) { - return fakeReaddir(path) || readdirSync.call(fs, path) - } - - t.pass('mocked') - t.end() -}) - -test('nocase, nomagic', function(t) { - var n = 2 - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/a', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) - glob('/tmp/A', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - if (--n === 0) t.end() - }) -}) - -test('nocase, with some magic', function(t) { - t.plan(2) - var want = [ '/TMP/A', - '/TMP/a', - '/tMP/A', - '/tMP/a', - '/tMp/A', - '/tMp/a', - '/tmp/A', - '/tmp/a' ] - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) - glob('/tmp/*', { nocase: true }, function(er, res) { - if (er) - throw er - t.same(res.sort(), want) - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/pause-resume.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/pause-resume.js deleted file mode 100644 index e1ffbab1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/pause-resume.js +++ /dev/null @@ -1,73 +0,0 @@ -// show that no match events happen while paused. -var tap = require("tap") -, child_process = require("child_process") -// just some gnarly pattern with lots of matches -, pattern = "test/a/!(symlink)/**" -, bashResults = require("./bash-results.json") -, patterns = Object.keys(bashResults) -, glob = require("../") -, Glob = glob.Glob -, path = require("path") - -// run from the root of the project -// this is usually where you're at anyway, but be sure. -process.chdir(path.resolve(__dirname, "..")) - -function alphasort (a, b) { - a = a.toLowerCase() - b = b.toLowerCase() - return a > b ? 1 : a < b ? -1 : 0 -} - -function cleanResults (m) { - // normalize discrepancies in ordering, duplication, - // and ending slashes. - return m.map(function (m) { - return m.replace(/\/+/g, "/").replace(/\/$/, "") - }).sort(alphasort).reduce(function (set, f) { - if (f !== set[set.length - 1]) set.push(f) - return set - }, []).sort(alphasort).map(function (f) { - // de-windows - return (process.platform !== 'win32') ? f - : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/') - }) -} - -var globResults = [] -tap.test("use a Glob object, and pause/resume it", function (t) { - var g = new Glob(pattern) - , paused = false - , res = [] - , expect = bashResults[pattern] - - g.on("pause", function () { - console.error("pause") - }) - - g.on("resume", function () { - console.error("resume") - }) - - g.on("match", function (m) { - t.notOk(g.paused, "must not be paused") - globResults.push(m) - g.pause() - t.ok(g.paused, "must be paused") - setTimeout(g.resume.bind(g), 10) - }) - - g.on("end", function (matches) { - t.pass("reached glob end") - globResults = cleanResults(globResults) - matches = cleanResults(matches) - t.deepEqual(matches, globResults, - "end event matches should be the same as match events") - - t.deepEqual(matches, expect, - "glob matches should be the same as bash results") - - t.end() - }) -}) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root-nomount.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root-nomount.js deleted file mode 100644 index 3ac5979b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root-nomount.js +++ /dev/null @@ -1,39 +0,0 @@ -var tap = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -tap.test("changing root and searching for /b*/**", function (t) { - var glob = require('../') - var path = require('path') - t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) - }) - - t.test('a', function (t) { - glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ]) - t.end() - }) - }) - - t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() - }) - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root.js deleted file mode 100644 index 95c23f99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/root.js +++ /dev/null @@ -1,46 +0,0 @@ -var t = require("tap") - -var origCwd = process.cwd() -process.chdir(__dirname) - -var glob = require('../') -var path = require('path') - -t.test('.', function (t) { - glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) { - t.ifError(er) - t.like(matches, []) - t.end() - }) -}) - - -t.test('a', function (t) { - console.error("root=" + path.resolve('a')) - glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) { - t.ifError(er) - var wanted = [ - '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' - ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - }) - - t.like(matches, wanted) - t.end() - }) -}) - -t.test('root=a, cwd=a/b', function (t) { - glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) { - t.ifError(er) - t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) { - return path.join(path.resolve('a'), m).replace(/\\/g, '/') - })) - t.end() - }) -}) - -t.test('cd -', function (t) { - process.chdir(origCwd) - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/zz-cleanup.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/zz-cleanup.js deleted file mode 100644 index e085f0fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/glob/test/zz-cleanup.js +++ /dev/null @@ -1,11 +0,0 @@ -// remove the fixtures -var tap = require("tap") -, rimraf = require("rimraf") -, path = require("path") - -tap.test("cleanup fixtures", function (t) { - rimraf(path.resolve(__dirname, "a"), function (er) { - t.ifError(er, "removed") - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 0c44ae71..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/README.md deleted file mode 100644 index 01af3d6b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over fs module - -graceful-fs: - -* keeps track of how many file descriptors are open, and by default - limits this to 1024. Any further requests to open a file are put in a - queue until new slots become available. If 1024 turns out to be too - much, it decreases the limit further. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## Configuration - -The maximum number of open file descriptors that graceful-fs manages may -be adjusted by setting `fs.MAX_OPEN` to a different number. The default -is 1024. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/graceful-fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index ca911524..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,442 +0,0 @@ -// this keeps a queue of opened file descriptors, and will make -// fs operations wait until some have closed before trying to open more. - -var fs = exports = module.exports = {} -fs._originalFs = require("fs") - -Object.getOwnPropertyNames(fs._originalFs).forEach(function(prop) { - var desc = Object.getOwnPropertyDescriptor(fs._originalFs, prop) - Object.defineProperty(fs, prop, desc) -}) - -var queue = [] - , constants = require("constants") - -fs._curOpen = 0 - -fs.MIN_MAX_OPEN = 64 -fs.MAX_OPEN = 1024 - -// prevent EMFILE errors -function OpenReq (path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb -} - -function noop () {} - -fs.open = gracefulOpen - -function gracefulOpen (path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new OpenReq(path, flags, mode, cb)) - setTimeout(flush) - return - } - open(path, flags, mode, function (er, fd) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - // that was too many. reduce max, get back in queue. - // this should only happen once in a great while, and only - // if the ulimit -n is set lower than 1024. - fs.MAX_OPEN = fs._curOpen - 1 - return fs.open(path, flags, mode, cb) - } - cb(er, fd) - }) -} - -function open (path, flags, mode, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.open.call(fs, path, flags, mode, function (er, fd) { - if (er) onclose() - cb(er, fd) - }) -} - -fs.openSync = function (path, flags, mode) { - var ret - ret = fs._originalFs.openSync.call(fs, path, flags, mode) - fs._curOpen ++ - return ret -} - -function onclose () { - fs._curOpen -- - flush() -} - -function flush () { - while (fs._curOpen < fs.MAX_OPEN) { - var req = queue.shift() - if (!req) return - switch (req.constructor.name) { - case 'OpenReq': - open(req.path, req.flags || "r", req.mode || 0777, req.cb) - break - case 'ReaddirReq': - readdir(req.path, req.cb) - break - case 'ReadFileReq': - readFile(req.path, req.options, req.cb) - break - case 'WriteFileReq': - writeFile(req.path, req.data, req.options, req.cb) - break - default: - throw new Error('Unknown req type: ' + req.constructor.name) - } - } -} - -fs.close = function (fd, cb) { - cb = cb || noop - fs._originalFs.close.call(fs, fd, function (er) { - onclose() - cb(er) - }) -} - -fs.closeSync = function (fd) { - try { - return fs._originalFs.closeSync.call(fs, fd) - } finally { - onclose() - } -} - - -// readdir takes a fd as well. -// however, the sync version closes it right away, so -// there's no need to wrap. -// It would be nice to catch when it throws an EMFILE, -// but that's relatively rare anyway. - -fs.readdir = gracefulReaddir - -function gracefulReaddir (path, cb) { - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new ReaddirReq(path, cb)) - setTimeout(flush) - return - } - - readdir(path, function (er, files) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.readdir(path, cb) - } - cb(er, files) - }) -} - -function readdir (path, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.readdir.call(fs, path, function (er, files) { - onclose() - cb(er, files) - }) -} - -function ReaddirReq (path, cb) { - this.path = path - this.cb = cb -} - - -fs.readFile = gracefulReadFile - -function gracefulReadFile(path, options, cb) { - if (typeof options === "function") cb = options, options = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new ReadFileReq(path, options, cb)) - setTimeout(flush) - return - } - - readFile(path, options, function (er, data) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.readFile(path, options, cb) - } - cb(er, data) - }) -} - -function readFile (path, options, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.readFile.call(fs, path, options, function (er, data) { - onclose() - cb(er, data) - }) -} - -function ReadFileReq (path, options, cb) { - this.path = path - this.options = options - this.cb = cb -} - - - - -fs.writeFile = gracefulWriteFile - -function gracefulWriteFile(path, data, options, cb) { - if (typeof options === "function") cb = options, options = null - if (typeof cb !== "function") cb = noop - - if (fs._curOpen >= fs.MAX_OPEN) { - queue.push(new WriteFileReq(path, data, options, cb)) - setTimeout(flush) - return - } - - writeFile(path, data, options, function (er) { - if (er && er.code === "EMFILE" && fs._curOpen > fs.MIN_MAX_OPEN) { - fs.MAX_OPEN = fs._curOpen - 1 - return fs.writeFile(path, data, options, cb) - } - cb(er) - }) -} - -function writeFile (path, data, options, cb) { - cb = cb || noop - fs._curOpen ++ - fs._originalFs.writeFile.call(fs, path, data, options, function (er) { - onclose() - cb(er) - }) -} - -function WriteFileReq (path, data, options, cb) { - this.path = path - this.data = data - this.options = options - this.cb = cb -} - - -// (re-)implement some things that are known busted or missing. - -var constants = require("constants") - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -function chownErOk (er) { - // if there's no getuid, or if getuid() is something other than 0, - // and the error is EINVAL or EPERM, then just ignore it. - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // When running as root, or if other types of errors are encountered, - // then it's strict. - if (!er || (!process.getuid || process.getuid() !== 0) - && (er.code === "EINVAL" || er.code === "EPERM")) return true -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/package.json deleted file mode 100644 index ac715718..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@~1.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/globule/node_modules/glob" - ] - ], - "_from": "graceful-fs@>=1.2.0 <1.3.0", - "_id": "graceful-fs@1.2.3", - "_inCache": true, - "_installable": true, - "_location": "/globule/graceful-fs", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "1.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@~1.2.0", - "rawSpec": "~1.2.0", - "scope": null, - "spec": ">=1.2.0 <1.3.0", - "type": "range" - }, - "_requiredBy": [ - "/globule/glob" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "_shasum": "15a4806a57547cb2d2dbf27f42e89a8c3451b364", - "_shrinkwrap": null, - "_spec": "graceful-fs@~1.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/globule/node_modules/glob", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "deprecated": "graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.", - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": {}, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "15a4806a57547cb2d2dbf27f42e89a8c3451b364", - "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "BSD", - "main": "graceful-fs.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "1.2.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 930d5325..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,46 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is not fs', function (t) { - t.notEqual(fs, require('fs')) - t.end() -}) - -test('open an existing file works', function (t) { - var start = fs._curOpen - var fd = fs.openSync(__filename, 'r') - t.equal(fs._curOpen, start + 1) - fs.closeSync(fd) - t.equal(fs._curOpen, start) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - t.equal(fs._curOpen, start + 1) - fs.close(fd, function (er) { - if (er) throw er - t.equal(fs._curOpen, start) - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var start = fs._curOpen - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.equal(fs._curOpen, start) - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/ulimit.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/ulimit.js deleted file mode 100644 index 8d0882d0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/graceful-fs/test/ulimit.js +++ /dev/null @@ -1,158 +0,0 @@ -var test = require('tap').test - -// simulated ulimit -// this is like graceful-fs, but in reverse -var fs_ = require('fs') -var fs = require('../graceful-fs.js') -var files = fs.readdirSync(__dirname) - -// Ok, no more actual file reading! - -var fds = 0 -var nextFd = 60 -var limit = 8 -fs_.open = function (path, flags, mode, cb) { - process.nextTick(function() { - ++fds - if (fds >= limit) { - --fds - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - return cb(er) - } else { - cb(null, nextFd++) - } - }) -} - -fs_.openSync = function (path, flags, mode) { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - throw er - } else { - ++fds - return nextFd++ - } -} - -fs_.close = function (fd, cb) { - process.nextTick(function () { - --fds - cb() - }) -} - -fs_.closeSync = function (fd) { - --fds -} - -fs_.readdir = function (path, cb) { - process.nextTick(function() { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - return cb(er) - } else { - ++fds - process.nextTick(function () { - --fds - cb(null, [__filename, "some-other-file.js"]) - }) - } - }) -} - -fs_.readdirSync = function (path) { - if (fds >= limit) { - var er = new Error('EMFILE Curses!') - er.code = 'EMFILE' - er.path = path - throw er - } else { - return [__filename, "some-other-file.js"] - } -} - - -test('open emfile autoreduce', function (t) { - fs.MIN_MAX_OPEN = 4 - t.equal(fs.MAX_OPEN, 1024) - - var max = 12 - for (var i = 0; i < max; i++) { - fs.open(__filename, 'r', next(i)) - } - - var phase = 0 - - var expect = - [ [ 0, 60, null, 1024, 4, 12, 1 ], - [ 1, 61, null, 1024, 4, 12, 2 ], - [ 2, 62, null, 1024, 4, 12, 3 ], - [ 3, 63, null, 1024, 4, 12, 4 ], - [ 4, 64, null, 1024, 4, 12, 5 ], - [ 5, 65, null, 1024, 4, 12, 6 ], - [ 6, 66, null, 1024, 4, 12, 7 ], - [ 7, 67, null, 6, 4, 5, 1 ], - [ 8, 68, null, 6, 4, 5, 2 ], - [ 9, 69, null, 6, 4, 5, 3 ], - [ 10, 70, null, 6, 4, 5, 4 ], - [ 11, 71, null, 6, 4, 5, 5 ] ] - - var actual = [] - - function next (i) { return function (er, fd) { - if (er) - throw er - actual.push([i, fd, er, fs.MAX_OPEN, fs.MIN_MAX_OPEN, fs._curOpen, fds]) - - if (i === max - 1) { - t.same(actual, expect) - t.ok(fs.MAX_OPEN < limit) - t.end() - } - - fs.close(fd) - } } -}) - -test('readdir emfile autoreduce', function (t) { - fs.MAX_OPEN = 1024 - var max = 12 - for (var i = 0; i < max; i ++) { - fs.readdir(__dirname, next(i)) - } - - var expect = - [ [0,[__filename,"some-other-file.js"],null,7,4,7,7], - [1,[__filename,"some-other-file.js"],null,7,4,7,6], - [2,[__filename,"some-other-file.js"],null,7,4,7,5], - [3,[__filename,"some-other-file.js"],null,7,4,7,4], - [4,[__filename,"some-other-file.js"],null,7,4,7,3], - [5,[__filename,"some-other-file.js"],null,7,4,6,2], - [6,[__filename,"some-other-file.js"],null,7,4,5,1], - [7,[__filename,"some-other-file.js"],null,7,4,4,0], - [8,[__filename,"some-other-file.js"],null,7,4,3,3], - [9,[__filename,"some-other-file.js"],null,7,4,2,2], - [10,[__filename,"some-other-file.js"],null,7,4,1,1], - [11,[__filename,"some-other-file.js"],null,7,4,0,0] ] - - var actual = [] - - function next (i) { return function (er, files) { - if (er) - throw er - var line = [i, files, er, fs.MAX_OPEN, fs.MIN_MAX_OPEN, fs._curOpen, fds ] - actual.push(line) - - if (i === max - 1) { - t.ok(fs.MAX_OPEN < limit) - t.same(actual, expect) - t.end() - } - } } -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/LICENSE deleted file mode 100644 index dea3013d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/LICENSE +++ /dev/null @@ -1,16 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/README.md deleted file mode 100644 index b2beaed9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/README.md +++ /dev/null @@ -1,51 +0,0 @@ -A dead simple way to do inheritance in JS. - - var inherits = require("inherits") - - function Animal () { - this.alive = true - } - Animal.prototype.say = function (what) { - console.log(what) - } - - inherits(Dog, Animal) - function Dog () { - Dog.super.apply(this) - } - Dog.prototype.sniff = function () { - this.say("sniff sniff") - } - Dog.prototype.bark = function () { - this.say("woof woof") - } - - inherits(Chihuahua, Dog) - function Chihuahua () { - Chihuahua.super.apply(this) - } - Chihuahua.prototype.bark = function () { - this.say("yip yip") - } - - // also works - function Cat () { - Cat.super.apply(this) - } - Cat.prototype.hiss = function () { - this.say("CHSKKSS!!") - } - inherits(Cat, Animal, { - meow: function () { this.say("miao miao") } - }) - Cat.prototype.purr = function () { - this.say("purr purr") - } - - - var c = new Chihuahua - assert(c instanceof Chihuahua) - assert(c instanceof Dog) - assert(c instanceof Animal) - -The actual function is laughably small. 10-lines small. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/inherits.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/inherits.js deleted file mode 100644 index 061b3962..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/inherits.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = inherits - -function inherits (c, p, proto) { - proto = proto || {} - var e = {} - ;[c.prototype, proto].forEach(function (s) { - Object.getOwnPropertyNames(s).forEach(function (k) { - e[k] = Object.getOwnPropertyDescriptor(s, k) - }) - }) - c.prototype = Object.create(p.prototype, e) - c.super = p -} - -//function Child () { -// Child.super.call(this) -// console.error([this -// ,this.constructor -// ,this.constructor === Child -// ,this.constructor.super === Parent -// ,Object.getPrototypeOf(this) === Child.prototype -// ,Object.getPrototypeOf(Object.getPrototypeOf(this)) -// === Parent.prototype -// ,this instanceof Child -// ,this instanceof Parent]) -//} -//function Parent () {} -//inherits(Child, Parent) -//new Child diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/package.json deleted file mode 100644 index e9539377..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/inherits/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_args": [ - [ - "inherits@1", - "/Users/sid/Desktop/code/RustyCode/node_modules/globule/node_modules/glob" - ] - ], - "_from": "inherits@>=1.0.0 <2.0.0", - "_id": "inherits@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/globule/inherits", - "_nodeVersion": "2.2.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "3.2.2", - "_phantomChildren": {}, - "_requested": { - "name": "inherits", - "raw": "inherits@1", - "rawSpec": "1", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/globule/glob" - ], - "_resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "_shasum": "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b", - "_shrinkwrap": null, - "_spec": "inherits@1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/globule/node_modules/glob", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/inherits/issues" - }, - "dependencies": {}, - "description": "A tiny simple way to do classic inheritance in js", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b", - "tarball": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" - }, - "homepage": "https://github.com/isaacs/inherits#readme", - "keywords": [ - "inheritance", - "class", - "klass", - "oop", - "object-oriented" - ], - "main": "./inherits.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "inherits", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/inherits.git" - }, - "scripts": {}, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/LICENSE deleted file mode 100644 index 05a40109..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/README.md deleted file mode 100644 index 978268e2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself. When set, an empty list is returned if there are -no matches. - -### matchBase - -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`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/minimatch.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/minimatch.js deleted file mode 100644 index c633f89f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,1055 +0,0 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function() {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - this.debug(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - this.debug("no sets") - return [pattern] - } - - var tail = braceExpand.call(this, pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - this.debug("numset", numset[1], numset[2]) - var suf = braceExpand.call(this, pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - this.debug("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - this.debug("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - this.debug("didn't close", pattern) - return braceExpand.call(this, "\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - this.debug("set", set) - this.debug("suffix", pattern.substr(i)) - var suf = braceExpand.call(this, pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - this.debug("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand.call(this, p, options) - }, this) - this.debug("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - , self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - this.debug("%s\t%s %s %j", pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - clearStateChar() - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - clearStateChar() - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - this.debug("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, "split", f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, "set", set) - - var splitFile = path.basename(f.join("/")).split("/") - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i], file = f - if (options.matchBase && pattern.length === 1) { - file = splitFile - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug("matchOne", - { "this": this - , file: file - , pattern: pattern }) - - this.debug("matchOne", file.length, pattern.length) - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - this.debug("matchOne loop") - var p = pattern[pi] - , f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', - file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - this.debug("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug("string match", p, f, hit) - } else { - hit = f.match(p) - this.debug("pattern match", p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/package.json deleted file mode 100644 index c90e7bac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - "minimatch@~0.2.11", - "/Users/sid/Desktop/code/RustyCode/node_modules/globule" - ] - ], - "_from": "minimatch@>=0.2.11 <0.3.0", - "_id": "minimatch@0.2.14", - "_inCache": true, - "_installable": true, - "_location": "/globule/minimatch", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "1.3.17", - "_phantomChildren": {}, - "_requested": { - "name": "minimatch", - "raw": "minimatch@~0.2.11", - "rawSpec": "~0.2.11", - "scope": null, - "spec": ">=0.2.11 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/globule", - "/globule/glob" - ], - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "_shrinkwrap": null, - "_spec": "minimatch@~0.2.11", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/globule", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "description": "a glob matcher in javascript", - "devDependencies": { - "tap": "" - }, - "directories": {}, - "dist": { - "shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a", - "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" - }, - "engines": { - "node": "*" - }, - "homepage": "https://github.com/isaacs/minimatch", - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "main": "minimatch.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "minimatch", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "0.2.14" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/basic.js deleted file mode 100644 index ae7ac73c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,399 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - - -var patterns = - [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ] - -var regexps = - [ '/^(?:(?=.)a[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:\\*)$/', - '/^(?:(?=.)\\*[^/]*?)$/', - '/^(?:\\*\\*)$/', - '/^(?:(?=.)b[^/]*?\\/)$/', - '/^(?:(?=.)c[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', - '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', - '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', - '/^(?:(?=.)a[^/]*?[^c])$/', - '/^(?:(?=.)a[X-]b)$/', - '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', - '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[^/]c)$/', - '/^(?:a\\*c)$/', - 'false', - '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', - '/^(?:man\\/man1\\/bash\\.1)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[-abc])$/', - '/^(?:(?!\\.)(?=.)[abc-])$/', - '/^(?:\\\\)$/', - '/^(?:(?!\\.)(?=.)[\\\\])$/', - '/^(?:(?!\\.)(?=.)[\\[])$/', - '/^(?:\\[)$/', - '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[\\]])$/', - '/^(?:(?!\\.)(?=.)[\\]-])$/', - '/^(?:(?!\\.)(?=.)[a-z])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:\\[\\])$/', - '/^(?:\\[abc)$/', - '/^(?:(?=.)XYZ)$/i', - '/^(?:(?=.)ab[^/]*?)$/i', - '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', - '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', - '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', - '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', - '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', - '/^(?:(?=.)a[^/]b)$/', - '/^(?:(?=.)#[^/]*?)$/', - '/^(?!^(?:(?=.)a[^/]*?)$).*$/', - '/^(?:(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)a[^/]*?)$/', - '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] -var re = 0; - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - patterns.forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - var expectRe = regexps[re++] - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - - t.equal(tapOpts.re, expectRe, tapOpts) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/brace-expand.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 7ee278a2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/caching.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/caching.js deleted file mode 100644 index 0fec4b0f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/defaults.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 25f1f601..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js deleted file mode 100644 index 6676e262..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/node_modules/minimatch/test/extglob-ending-with-state-char.js +++ /dev/null @@ -1,8 +0,0 @@ -var test = require('tap').test -var minimatch = require('../') - -test('extglob ending with statechar', function(t) { - t.notOk(minimatch('ax', 'a?(b*)')) - t.ok(minimatch('ax', '?(a*|b)')) - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/package.json deleted file mode 100644 index dc0092f3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "globule@~0.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gaze" - ] - ], - "_from": "globule@>=0.1.0 <0.2.0", - "_id": "globule@0.1.0", - "_inCache": true, - "_installable": true, - "_location": "/globule", - "_npmUser": { - "email": "cowboy@rj3.net", - "name": "cowboy" - }, - "_npmVersion": "1.1.70", - "_phantomChildren": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - }, - "_requested": { - "name": "globule", - "raw": "globule@~0.1.0", - "rawSpec": "~0.1.0", - "scope": null, - "spec": ">=0.1.0 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/gaze" - ], - "_resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "_shasum": "d9c8edde1da79d125a151b79533b978676346ae5", - "_shrinkwrap": null, - "_spec": "globule@~0.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gaze", - "author": { - "name": "\"Cowboy\" Ben Alman", - "url": "http://benalman.com/" - }, - "bugs": { - "url": "https://github.com/cowboy/node-globule/issues" - }, - "dependencies": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" - }, - "description": "An easy-to-use wildcard globbing library.", - "devDependencies": { - "grunt": "~0.4.1", - "grunt-contrib-jshint": "~0.1.1", - "grunt-contrib-nodeunit": "~0.1.2", - "grunt-contrib-watch": "~0.2.0" - }, - "directories": {}, - "dist": { - "shasum": "d9c8edde1da79d125a151b79533b978676346ae5", - "tarball": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz" - }, - "engines": { - "node": ">= 0.8.0" - }, - "homepage": "https://github.com/cowboy/node-globule", - "keywords": [ - "glob", - "file", - "match", - "mapping", - "expand", - "wildcard", - "pattern", - "sync", - "awesome" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/cowboy/node-globule/blob/master/LICENSE-MIT" - } - ], - "main": "lib/globule", - "maintainers": [ - { - "email": "cowboy@rj3.net", - "name": "cowboy" - } - ], - "name": "globule", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/cowboy/node-globule.git" - }, - "scripts": { - "test": "grunt nodeunit" - }, - "version": "0.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/baz.css b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/baz.css deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/qux.css b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/css/qux.css deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deep.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deep.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deeper.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deeper.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deepest/deepest.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/deep/deeper/deepest/deepest.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/bar.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/bar.js deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/foo.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/fixtures/expand/js/foo.js deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/globule_test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/globule_test.js deleted file mode 100644 index 9b55b6b9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/globule/test/globule_test.js +++ /dev/null @@ -1,486 +0,0 @@ -'use strict'; - -var path = require('path'); - -var globule = require('../lib/globule.js'); - -/* - ======== A Handy Little Nodeunit Reference ======== - https://github.com/caolan/nodeunit - - Test methods: - test.expect(numAssertions) - test.done() - Test assertions: - test.ok(value, [message]) - test.equal(actual, expected, [message]) - test.notEqual(actual, expected, [message]) - test.deepEqual(actual, expected, [message]) - test.notDeepEqual(actual, expected, [message]) - test.strictEqual(actual, expected, [message]) - test.notStrictEqual(actual, expected, [message]) - test.throws(block, [error], [message]) - test.doesNotThrow(block, [error], [message]) - test.ifError(value) -*/ - -exports['match'] = { - 'empty set': function(test) { - test.expect(6); - // Should return empty set if a required argument is missing or an empty set. - test.deepEqual(globule.match(null, 'foo.js'), [], 'should return empty set.'); - test.deepEqual(globule.match('*.js', null), [], 'should return empty set.'); - test.deepEqual(globule.match([], 'foo.js'), [], 'should return empty set.'); - test.deepEqual(globule.match('*.js', []), [], 'should return empty set.'); - test.deepEqual(globule.match(null, ['foo.js']), [], 'should return empty set.'); - test.deepEqual(globule.match(['*.js'], null), [], 'should return empty set.'); - test.done(); - }, - 'basic matching': function(test) { - test.expect(6); - test.deepEqual(globule.match('*.js', 'foo.js'), ['foo.js'], 'should match correctly.'); - test.deepEqual(globule.match('*.js', ['foo.js']), ['foo.js'], 'should match correctly.'); - test.deepEqual(globule.match('*.js', ['foo.js', 'bar.css']), ['foo.js'], 'should match correctly.'); - test.deepEqual(globule.match(['*.js', '*.css'], 'foo.js'), ['foo.js'], 'should match correctly.'); - test.deepEqual(globule.match(['*.js', '*.css'], ['foo.js']), ['foo.js'], 'should match correctly.'); - test.deepEqual(globule.match(['*.js', '*.css'], ['foo.js', 'bar.css']), ['foo.js', 'bar.css'], 'should match correctly.'); - test.done(); - }, - 'no matches': function(test) { - test.expect(2); - test.deepEqual(globule.match('*.js', 'foo.css'), [], 'should fail to match.'); - test.deepEqual(globule.match('*.js', ['foo.css', 'bar.css']), [], 'should fail to match.'); - test.done(); - }, - 'unique': function(test) { - test.expect(2); - test.deepEqual(globule.match('*.js', ['foo.js', 'foo.js']), ['foo.js'], 'should return a uniqued set.'); - test.deepEqual(globule.match(['*.js', '*.*'], ['foo.js', 'foo.js']), ['foo.js'], 'should return a uniqued set.'); - test.done(); - }, - 'flatten': function(test) { - test.expect(1); - test.deepEqual(globule.match([['*.js', '*.css'], ['*.*', '*.js']], ['foo.js', 'bar.css']), - ['foo.js', 'bar.css'], - 'should process nested pattern arrays correctly.'); - test.done(); - }, - 'exclusion': function(test) { - test.expect(5); - test.deepEqual(globule.match(['!*.js'], ['foo.js', 'bar.js']), [], 'solitary exclusion should match nothing'); - test.deepEqual(globule.match(['*.js', '!*.js'], ['foo.js', 'bar.js']), [], 'exclusion should cancel match'); - test.deepEqual(globule.match(['*.js', '!f*.js'], ['foo.js', 'bar.js', 'baz.js']), - ['bar.js', 'baz.js'], - 'partial exclusion should partially cancel match'); - test.deepEqual(globule.match(['*.js', '!*.js', 'b*.js'], ['foo.js', 'bar.js', 'baz.js']), - ['bar.js', 'baz.js'], - 'inclusion / exclusion order matters'); - test.deepEqual(globule.match(['*.js', '!f*.js', '*.js'], ['foo.js', 'bar.js', 'baz.js']), - ['bar.js', 'baz.js', 'foo.js'], - 'inclusion / exclusion order matters'); - test.done(); - }, - 'options.matchBase': function(test) { - test.expect(2); - test.deepEqual(globule.match('*.js', ['foo.js', 'bar', 'baz/xyz.js'], {matchBase: true}), - ['foo.js', 'baz/xyz.js'], - 'should matchBase (minimatch) when specified.'); - test.deepEqual(globule.match('*.js', ['foo.js', 'bar', 'baz/xyz.js']), - ['foo.js'], - 'should not matchBase (minimatch) by default.'); - test.done(); - }, -}; - -exports['isMatch'] = { - 'basic matching': function(test) { - test.expect(6); - test.ok(globule.isMatch('*.js', 'foo.js'), 'should match correctly.'); - test.ok(globule.isMatch('*.js', ['foo.js']), 'should match correctly.'); - test.ok(globule.isMatch('*.js', ['foo.js', 'bar.css']), 'should match correctly.'); - test.ok(globule.isMatch(['*.js', '*.css'], 'foo.js'), 'should match correctly.'); - test.ok(globule.isMatch(['*.js', '*.css'], ['foo.js']), 'should match correctly.'); - test.ok(globule.isMatch(['*.js', '*.css'], ['foo.js', 'bar.css']), 'should match correctly.'); - test.done(); - }, - 'no matches': function(test) { - test.expect(6); - test.ok(!globule.isMatch('*.js', 'foo.css'), 'should fail to match.'); - test.ok(!globule.isMatch('*.js', ['foo.css', 'bar.css']), 'should fail to match.'); - test.ok(!globule.isMatch(null, 'foo.css'), 'should fail to match.'); - test.ok(!globule.isMatch('*.js', null), 'should fail to match.'); - test.ok(!globule.isMatch([], 'foo.css'), 'should fail to match.'); - test.ok(!globule.isMatch('*.js', []), 'should fail to match.'); - test.done(); - }, - 'options.matchBase': function(test) { - test.expect(2); - test.ok(globule.isMatch('*.js', ['baz/xyz.js'], {matchBase: true}), 'should matchBase (minimatch) when specified.'); - test.ok(!globule.isMatch('*.js', ['baz/xyz.js']), 'should not matchBase (minimatch) by default.'); - test.done(); - }, -}; - -exports['find'] = { - setUp: function(done) { - this.cwd = process.cwd(); - process.chdir('test/fixtures/expand'); - done(); - }, - tearDown: function(done) { - process.chdir(this.cwd); - done(); - }, - 'basic matching': function(test) { - test.expect(5); - test.deepEqual(globule.find('**/*.js'), ['js/bar.js', 'js/foo.js'], 'single pattern argument should match.'); - test.deepEqual(globule.find('**/*.js', '**/*.css'), - ['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css'], - 'multiple pattern arguments should match.'); - test.deepEqual(globule.find(['**/*.js', '**/*.css']), - ['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css'], - 'array of patterns should match.'); - test.deepEqual(globule.find([['**/*.js'], [['**/*.css', 'js/*.js']]]), - ['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css'], - 'array of arrays of patterns should be flattened.'); - test.deepEqual(globule.find('*.xyz'), [], 'bad pattern should fail to match.'); - test.done(); - }, - 'unique': function(test) { - test.expect(4); - test.deepEqual(globule.find('**/*.js', 'js/*.js'), - ['js/bar.js', 'js/foo.js'], - 'file list should be uniqed.'); - test.deepEqual(globule.find('**/*.js', '**/*.css', 'js/*.js'), ['js/bar.js', 'js/foo.js', - 'css/baz.css', 'css/qux.css'], - 'file list should be uniqed.'); - test.deepEqual(globule.find('js', 'js/'), - ['js', 'js/'], - 'mixed non-ending-/ and ending-/ dirs will not be uniqed by default.'); - test.deepEqual(globule.find('js', 'js/', {mark: true}), - ['js/'], - 'mixed non-ending-/ and ending-/ dirs will be uniqed when "mark" is specified.'); - test.done(); - }, - 'file order': function(test) { - test.expect(5); - var actual = globule.find('**/*.{js,css}'); - var expected = ['css/baz.css', 'css/qux.css', 'js/bar.js', 'js/foo.js']; - test.deepEqual(actual, expected, 'should select 4 files in this order, by default.'); - - actual = globule.find('js/foo.js', 'js/bar.js', '**/*.{js,css}'); - expected = ['js/foo.js', 'js/bar.js', 'css/baz.css', 'css/qux.css']; - test.deepEqual(actual, expected, 'specifically-specified-up-front file order should be maintained.'); - - actual = globule.find('js/bar.js', 'js/foo.js', '**/*.{js,css}'); - expected = ['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css']; - test.deepEqual(actual, expected, 'specifically-specified-up-front file order should be maintained.'); - - actual = globule.find('**/*.{js,css}', '!css/qux.css', 'css/qux.css'); - expected = ['css/baz.css', 'js/bar.js', 'js/foo.js', 'css/qux.css']; - test.deepEqual(actual, expected, 'if a file is excluded and then re-added, it should be added at the end.'); - - actual = globule.find('js/foo.js', '**/*.{js,css}', '!css/qux.css', 'css/qux.css'); - expected = ['js/foo.js', 'css/baz.css', 'js/bar.js', 'css/qux.css']; - test.deepEqual(actual, expected, 'should be able to combine specified-up-front and excluded/added-at-end.'); - test.done(); - }, - 'exclusion': function(test) { - test.expect(8); - test.deepEqual(globule.find(['!js/*.js']), [], 'solitary exclusion should match nothing'); - test.deepEqual(globule.find(['js/bar.js','!js/bar.js']), [], 'exclusion should negate match'); - test.deepEqual(globule.find(['**/*.js', '!js/foo.js']), - ['js/bar.js'], - 'should omit single file from matched set'); - test.deepEqual(globule.find(['!js/foo.js', '**/*.js']), - ['js/bar.js', 'js/foo.js'], - 'inclusion / exclusion order matters'); - test.deepEqual(globule.find(['**/*.js', '**/*.css', '!js/bar.js', '!css/baz.css']), - ['js/foo.js','css/qux.css'], - 'multiple exclusions should be removed from the set'); - test.deepEqual(globule.find(['**/*.js', '**/*.css', '!**/*.css']), - ['js/bar.js', 'js/foo.js'], - 'excluded wildcards should be removed from the matched set'); - test.deepEqual(globule.find(['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css', '!**/b*.*']), - ['js/foo.js', 'css/qux.css'], - 'different pattern for exclusion should still work'); - test.deepEqual(globule.find(['js/bar.js', '!**/b*.*', 'js/foo.js', 'css/baz.css', 'css/qux.css']), - ['js/foo.js', 'css/baz.css', 'css/qux.css'], - 'inclusion / exclusion order matters'); - test.done(); - }, - 'options.mark': function(test) { - test.expect(4); - test.deepEqual(globule.find('**d*/**'), [ - 'deep', - 'deep/deep.txt', - 'deep/deeper', - 'deep/deeper/deeper.txt', - 'deep/deeper/deepest', - 'deep/deeper/deepest/deepest.txt'], 'should match files and directories.'); - test.deepEqual(globule.find('**d*/**/'), [ - 'deep/', - 'deep/deeper/', - 'deep/deeper/deepest/'], 'trailing / in pattern should match directories only, matches end in /.'); - test.deepEqual(globule.find('**d*/**', {mark: true}), [ - 'deep/', - 'deep/deep.txt', - 'deep/deeper/', - 'deep/deeper/deeper.txt', - 'deep/deeper/deepest/', - 'deep/deeper/deepest/deepest.txt'], 'the minimatch "mark" option ensures directories end in /.'); - test.deepEqual(globule.find('**d*/**/', {mark: true}), [ - 'deep/', - 'deep/deeper/', - 'deep/deeper/deepest/'], 'the minimatch "mark" option should not remove trailing / from matched paths.'); - test.done(); - }, - 'options.filter': function(test) { - test.expect(5); - test.deepEqual(globule.find('**d*/**', {filter: 'isFile'}), [ - 'deep/deep.txt', - 'deep/deeper/deeper.txt', - 'deep/deeper/deepest/deepest.txt' - ], 'should match files only.'); - test.deepEqual(globule.find('**d*/**', {filter: 'isDirectory'}), [ - 'deep', - 'deep/deeper', - 'deep/deeper/deepest' - ], 'should match directories only.'); - test.deepEqual(globule.find('**', { - arbitraryProp: /deepest/, - filter: function(filepath, options) { - return options.arbitraryProp.test(filepath); - } - }), [ - 'deep/deeper/deepest', - 'deep/deeper/deepest/deepest.txt', - ], 'should filter arbitrarily.'); - test.deepEqual(globule.find('js', 'css', {filter: 'isFile'}), [], 'should fail to match.'); - test.deepEqual(globule.find('**/*.js', {filter: 'isDirectory'}), [], 'should fail to match.'); - test.done(); - }, - 'options.matchBase': function(test) { - test.expect(3); - test.deepEqual(globule.find('*.js'), [], 'should not matchBase (minimatch) by default.'); - test.deepEqual(globule.find('*.js', {matchBase: true}), - ['js/bar.js', 'js/foo.js'], - 'matchBase option should be passed through to minimatch.'); - test.deepEqual(globule.find('*.js', '*.css', {matchBase: true}), - ['js/bar.js', 'js/foo.js', 'css/baz.css', 'css/qux.css'], - 'matchBase option should be passed through to minimatch.'); - test.done(); - }, - 'options.srcBase': function(test) { - test.expect(5); - test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep'}), - ['deep.txt', 'deeper/deeper.txt', 'deeper/deepest/deepest.txt'], - 'should find paths matching pattern relative to srcBase.'); - test.deepEqual(globule.find(['**/deep*.txt'], {cwd: 'deep'}), - ['deep.txt', 'deeper/deeper.txt', 'deeper/deepest/deepest.txt'], - 'cwd and srcBase should do the same thing.'); - test.deepEqual(globule.find(['**/deep*'], {srcBase: 'deep', filter: 'isFile'}), - ['deep.txt', 'deeper/deeper.txt', 'deeper/deepest/deepest.txt'], - 'srcBase should not prevent filtering.'); - test.deepEqual(globule.find(['**/deep*'], {srcBase: 'deep', filter: 'isDirectory'}), - ['deeper', 'deeper/deepest'], - 'srcBase should not prevent filtering.'); - test.deepEqual(globule.find(['**/deep*.txt', '!**/deeper**'], {srcBase: 'deep'}), - ['deep.txt', 'deeper/deepest/deepest.txt'], - 'srcBase should not prevent exclusions.'); - test.done(); - }, - 'options.prefixBase': function(test) { - test.expect(2); - test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep', prefixBase: false}), - ['deep.txt', 'deeper/deeper.txt', 'deeper/deepest/deepest.txt'], - 'should not prefix srcBase to returned paths.'); - test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep', prefixBase: true}), - ['deep/deep.txt', 'deep/deeper/deeper.txt', 'deep/deeper/deepest/deepest.txt'], - 'should prefix srcBase to returned paths.'); - test.done(); - }, - 'options.nonull': function(test) { - test.expect(3); - test.deepEqual(globule.find(['*omg*'], {nonull: true}), - ['*omg*'], - 'non-matching patterns should be returned in result set.'); - test.deepEqual(globule.find(['js/a*', 'js/b*', 'js/c*'], {nonull: true}), - ['js/a*', 'js/bar.js', 'js/c*'], - 'non-matching patterns should be returned in result set.'); - test.deepEqual(globule.find(['js/foo.js', 'js/bar.js', 'js/nonexistent.js'], {nonull: true}), - ['js/foo.js', 'js/bar.js', 'js/nonexistent.js'], - 'non-matching filenames should be returned in result set.'); - test.done(); - }, -}; - -exports['mapping'] = { - 'basic mapping': function(test) { - test.expect(1); - - var actual = globule.mapping(['a.txt', 'b.txt', 'c.txt']); - var expected = [ - {dest: 'a.txt', src: ['a.txt']}, - {dest: 'b.txt', src: ['b.txt']}, - {dest: 'c.txt', src: ['c.txt']}, - ]; - test.deepEqual(actual, expected, 'default options should create same-to-same src-dest mappings.'); - - test.done(); - }, - 'options.srcBase': function(test) { - test.expect(2); - var actual, expected; - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {srcBase: 'foo'}); - expected = [ - {dest: 'a.txt', src: ['foo/a.txt']}, - {dest: 'bar/b.txt', src: ['foo/bar/b.txt']}, - {dest: 'bar/baz/c.txt', src: ['foo/bar/baz/c.txt']}, - ]; - test.deepEqual(actual, expected, 'srcBase should be prefixed to src paths (no trailing /).'); - - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {srcBase: 'foo/'}); - test.deepEqual(actual, expected, 'srcBase should be prefixed to src paths (trailing /).'); - - test.done(); - }, - 'options.destBase': function(test) { - test.expect(2); - var actual, expected; - - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {destBase: 'dest'}); - expected = [ - {dest: 'dest/a.txt', src: ['a.txt']}, - {dest: 'dest/bar/b.txt', src: ['bar/b.txt']}, - {dest: 'dest/bar/baz/c.txt', src: ['bar/baz/c.txt']}, - ]; - test.deepEqual(actual, expected, 'destBase should be prefixed to dest paths (no trailing /).'); - - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {destBase: 'dest/'}); - test.deepEqual(actual, expected, 'destBase should be prefixed to dest paths (trailing /).'); - - test.done(); - }, - 'options.flatten': function(test) { - test.expect(1); - var actual, expected; - - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {flatten: true}); - expected = [ - {dest: 'a.txt', src: ['a.txt']}, - {dest: 'b.txt', src: ['bar/b.txt']}, - {dest: 'c.txt', src: ['bar/baz/c.txt']}, - ]; - test.deepEqual(actual, expected, 'flatten should remove all src path parts from dest.'); - - test.done(); - }, - 'options.flatten + options.destBase': function(test) { - test.expect(1); - var actual, expected; - - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], {destBase: 'dest', flatten: true}); - expected = [ - {dest: 'dest/a.txt', src: ['a.txt']}, - {dest: 'dest/b.txt', src: ['bar/b.txt']}, - {dest: 'dest/c.txt', src: ['bar/baz/c.txt']}, - ]; - test.deepEqual(actual, expected, 'flatten and destBase should work together.'); - - test.done(); - }, - 'options.ext': function(test) { - test.expect(1); - var actual, expected; - - actual = globule.mapping(['x/a.js', 'x.y/b.min.js', 'x.y/z.z/c'], {ext: '.foo'}); - expected = [ - {dest: 'x/a.foo', src: ['x/a.js']}, - {dest: 'x.y/b.foo', src: ['x.y/b.min.js']}, - {dest: 'x.y/z.z/c.foo', src: ['x.y/z.z/c']}, - ]; - test.deepEqual(actual, expected, 'by default, ext should replace everything after the first dot in the filename.'); - - test.done(); - }, - 'options.extDot': function(test) { - test.expect(2); - var actual, expected; - - actual = globule.mapping(['x/a.js', 'x.y/b.bbb.min.js', 'x.y/z.z/c'], {ext: '.foo', extDot: 'first'}); - expected = [ - {dest: 'x/a.foo', src: ['x/a.js']}, - {dest: 'x.y/b.foo', src: ['x.y/b.bbb.min.js']}, - {dest: 'x.y/z.z/c.foo', src: ['x.y/z.z/c']}, - ]; - test.deepEqual(actual, expected, 'extDot of "first" should replace everything after the first dot in the filename.'); - - actual = globule.mapping(['x/a.js', 'x.y/b.bbb.min.js', 'x.y/z.z/c'], {ext: '.foo', extDot: 'last'}); - expected = [ - {dest: 'x/a.foo', src: ['x/a.js']}, - {dest: 'x.y/b.bbb.min.foo', src: ['x.y/b.bbb.min.js']}, - {dest: 'x.y/z.z/c.foo', src: ['x.y/z.z/c']}, - ]; - test.deepEqual(actual, expected, 'extDot of "last" should replace everything after the last dot in the filename.'); - - test.done(); - }, - 'options.rename': function(test) { - test.expect(1); - var actual, expected; - actual = globule.mapping(['a.txt', 'bar/b.txt', 'bar/baz/c.txt'], { - arbitraryProp: 'FOO', - rename: function(dest, options) { - return path.join(options.arbitraryProp, dest.toUpperCase()); - } - }); - expected = [ - {dest: 'FOO/A.TXT', src: ['a.txt']}, - {dest: 'FOO/BAR/B.TXT', src: ['bar/b.txt']}, - {dest: 'FOO/BAR/BAZ/C.TXT', src: ['bar/baz/c.txt']}, - ]; - test.deepEqual(actual, expected, 'allow arbitrary renaming of files.'); - - test.done(); - }, -}; - -exports['findMapping'] = { - setUp: function(done) { - this.cwd = process.cwd(); - process.chdir('test/fixtures'); - done(); - }, - tearDown: function(done) { - process.chdir(this.cwd); - done(); - }, - 'basic matching': function(test) { - test.expect(2); - - var actual = globule.findMapping(['expand/**/*.txt']); - var expected = [ - {dest: 'expand/deep/deep.txt', src: ['expand/deep/deep.txt']}, - {dest: 'expand/deep/deeper/deeper.txt', src: ['expand/deep/deeper/deeper.txt']}, - {dest: 'expand/deep/deeper/deepest/deepest.txt', src: ['expand/deep/deeper/deepest/deepest.txt']}, - ]; - test.deepEqual(actual, expected, 'default options'); - - expected = globule.mapping(globule.find(['expand/**/*.txt'])); - test.deepEqual(actual, expected, 'this is what it\'s doing under the hood, anwyays.'); - - test.done(); - }, - 'options.srcBase': function(test) { - test.expect(1); - var actual = globule.findMapping(['**/*.txt'], {destBase: 'dest', srcBase: 'expand/deep'}); - var expected = [ - {dest: 'dest/deep.txt', src: ['expand/deep/deep.txt']}, - {dest: 'dest/deeper/deeper.txt', src: ['expand/deep/deeper/deeper.txt']}, - {dest: 'dest/deeper/deepest/deepest.txt', src: ['expand/deep/deeper/deepest/deepest.txt']}, - ]; - test.deepEqual(actual, expected, 'srcBase should be stripped from front of destPath, pre-destBase+destPath join'); - test.done(); - }, -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/LICENSE deleted file mode 100644 index 2d92a2b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blaine Bublitz - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/README.md deleted file mode 100644 index 319f03e4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/README.md +++ /dev/null @@ -1,92 +0,0 @@ -# glogg - -[![Travis Build Status](https://img.shields.io/travis/undertakerjs/glogg/master.svg?label=travis&style=flat-square)](https://travis-ci.org/undertakerjs/glogg) - -Global logging utility - -## Usage - -```js -var getLogger = require('glogg'); - -var logger = getLogger('my-namespace'); - -// logs strings -logger.debug('The MOST verbose!'); -logger.info('Some important info'); -logger.warn('All the warnings to you'); -logger.error('OH NO! SOMETHING HAPPENED!'); - -// supports util.format! -logger.info('%s style!', 'printf'); - -// log anything -logger.debug({ my: 'obj' }); -logger.info([1, 2, 3]); - -// somewhere else -logger.on('info', function(msg){ - // do something with msg -}); - -// must be handled to avoid crashing process -logger.on('error', function(msg){ - // now it won't crash -}); -``` - -## API - -__Note: This module makes no assumptions about the log levels and they will always -be emitted. If you are looking to filter some out, your listeners will need to have -extra logic.__ - -### getLogger([namespace]) - -Create a new logger at the given namespace (or the default if no namespace is provided). -Returns an augmented [`sparkles`](https://github.com/phated/sparkles) EventEmitter object -with 4 methods: `debug()`, `info()`, `warn()` and `error()`. When called, these methods emit -an event with the same name. If the first argument is a string, the arguments -are passed through node's `util.format()` before being emitted. Other parts -of a node program can get the logger by namespace and listen for the events to -be emitted. - -#### logger.debug(msg) - -Emits a `debug` event with the given `msg`. - -If the first argument is a string, all arguments are passed to node's -`util.format()` before being emitted. - -#### logger.info(msg) - -Emits a `info` event with the given `msg`. - -If the first argument is a string, all arguments are passed to node's -`util.format()` before being emitted. - -#### logger.warn(msg) - -Emits a `warn` event with the given `msg`. - -If the first argument is a string, all arguments are passed to node's -`util.format()` before being emitted. - -#### logger.error(msg) - -Emits a `error` event with the given `msg`. - -If the first argument is a string, all arguments are passed to node's -`util.format()` before being emitted. - -__Note: You must handle this event in some way or the node process will crash -when an `error` event is emitted.__ - -#### logger.on(event, fn) - -Standard API from node's `EventEmitter`. Use this to listen for events from -the logger methods. - -## License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/index.js deleted file mode 100644 index 9d0b16d7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/index.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -var format = require('util').format; - -var sparkles = require('sparkles'); - -var levels = [ - 'debug', - 'info', - 'warn', - 'error' -]; - -function getLogger(namespace){ - var logger = sparkles(namespace); - - levels.forEach(function(level){ - logger[level] = makeLogLevel(level); - }); - - return logger; -} - -function makeLogLevel(level){ - return function(msg){ - if(typeof msg === 'string'){ - msg = format.apply(null, arguments); - } - - this.emit(level, msg); - }; -} - -module.exports = getLogger; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/package.json deleted file mode 100644 index 5521f313..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/glogg/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "glogg@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulplog" - ] - ], - "_from": "glogg@>=1.0.0 <2.0.0", - "_id": "glogg@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/glogg", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "glogg", - "raw": "glogg@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulplog" - ], - "_resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "_shasum": "7fe0f199f57ac906cf512feead8f90ee4a284fc5", - "_shrinkwrap": null, - "_spec": "glogg@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulplog", - "author": { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://iceddev.com/" - }, - "bugs": { - "url": "https://github.com/undertakerjs/glogg/issues" - }, - "contributors": [], - "dependencies": { - "sparkles": "^1.0.0" - }, - "description": "Global logging utility", - "devDependencies": { - "@phated/eslint-config-iceddev": "^0.2.1", - "code": "^1.5.0", - "eslint": "^1.3.1", - "eslint-plugin-mocha": "^0.5.1", - "eslint-plugin-react": "^3.3.2", - "lab": "^5.16.0" - }, - "directories": {}, - "dist": { - "shasum": "7fe0f199f57ac906cf512feead8f90ee4a284fc5", - "tarball": "http://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "LICENSE", - "index.js" - ], - "gitHead": "2683314c5bb5473e0d492418974b111f366168db", - "homepage": "https://github.com/undertakerjs/glogg#readme", - "keywords": [ - "global", - "log", - "logger", - "logging", - "shared" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "glogg", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/undertakerjs/glogg.git" - }, - "scripts": { - "test": "lab -cvL --globals store@sparkles" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 9d2c8036..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/README.md deleted file mode 100644 index d920aaac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` - -## Global Patching - -If you want to patch the global fs module (or any other fs-like -module) you can do this: - -```javascript -// Make sure to read the caveat below. -var realFs = require('fs') -var gracefulFs = require('graceful-fs') -gracefulFs.gracefulify(realFs) -``` - -This should only ever be done at the top-level application layer, in -order to delay on EMFILE errors from any fs-using dependencies. You -should **not** do this in a library, because it can cause unexpected -delays in other parts of the program. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/fs.js deleted file mode 100644 index 8ad4a383..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -var fs = require('fs') - -module.exports = clone(fs) - -function clone (obj) { - if (obj === null || typeof obj !== 'object') - return obj - - if (obj instanceof Object) - var copy = { __proto__: obj.__proto__ } - else - var copy = Object.create(null) - - Object.getOwnPropertyNames(obj).forEach(function (key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) - }) - - return copy -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/graceful-fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index 9bf803e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,253 +0,0 @@ -var fs = require('fs') -var polyfills = require('./polyfills.js') -var legacy = require('./legacy-streams.js') -var queue = [] - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs4') -else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') - console.error(m) - } - -if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug(queue) - require('assert').equal(queue.length, 0) - }) -} - -module.exports = patch(require('./fs.js')) -if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH) { - module.exports = patch(fs) -} - -// Always patch fs.close/closeSync, because we want to -// retry() whenever a close happens *anywhere* in the program. -// This is essential when multiple graceful-fs instances are -// in play at the same time. -module.exports.close = -fs.close = (function (fs$close) { return function (fd, cb) { - return fs$close.call(fs, fd, function (err) { - if (!err) - retry() - - if (typeof cb === 'function') - cb.apply(this, arguments) - }) -}})(fs.close) - -module.exports.closeSync = -fs.closeSync = (function (fs$closeSync) { return function (fd) { - // Note that graceful-fs also retries when fs.closeSync() fails. - // Looks like a bug to me, although it's probably a harmless one. - var rval = fs$closeSync.apply(fs, arguments) - retry() - return rval -}})(fs.closeSync) - -function patch (fs) { - // Everything that references the open() function needs to be in here - polyfills(fs) - fs.gracefulify = patch - fs.FileReadStream = ReadStream; // Legacy name. - fs.FileWriteStream = WriteStream; // Legacy name. - fs.createReadStream = createReadStream - fs.createWriteStream = createWriteStream - var fs$readFile = fs.readFile - fs.readFile = readFile - function readFile (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$readFile(path, options, cb) - - function go$readFile (path, options, cb) { - return fs$readFile(path, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readFile, [path, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } - - var fs$writeFile = fs.writeFile - fs.writeFile = writeFile - function writeFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$writeFile(path, data, options, cb) - - function go$writeFile (path, data, options, cb) { - return fs$writeFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$writeFile, [path, data, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } - - var fs$appendFile = fs.appendFile - if (fs$appendFile) - fs.appendFile = appendFile - function appendFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$appendFile(path, data, options, cb) - - function go$appendFile (path, data, options, cb) { - return fs$appendFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$appendFile, [path, data, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } - - var fs$readdir = fs.readdir - fs.readdir = readdir - function readdir (path, cb) { - return go$readdir(path, cb) - - function go$readdir () { - return fs$readdir(path, function (err, files) { - if (files && files.sort) - files.sort(); // Backwards compatibility with graceful-fs. - - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readdir, [path, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } - - - if (process.version.substr(0, 4) === 'v0.8') { - var legStreams = legacy(fs) - ReadStream = legStreams.ReadStream - WriteStream = legStreams.WriteStream - } - - var fs$ReadStream = fs.ReadStream - ReadStream.prototype = Object.create(fs$ReadStream.prototype) - ReadStream.prototype.open = ReadStream$open - - var fs$WriteStream = fs.WriteStream - WriteStream.prototype = Object.create(fs$WriteStream.prototype) - WriteStream.prototype.open = WriteStream$open - - fs.ReadStream = ReadStream - fs.WriteStream = WriteStream - - function ReadStream (path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments) - } - - function ReadStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - if (that.autoClose) - that.destroy() - - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - that.read() - } - }) - } - - function WriteStream (path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments) - } - - function WriteStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - that.destroy() - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - } - }) - } - - function createReadStream (path, options) { - return new ReadStream(path, options) - } - - function createWriteStream (path, options) { - return new WriteStream(path, options) - } - - var fs$open = fs.open - fs.open = open - function open (path, flags, mode, cb) { - if (typeof mode === 'function') - cb = mode, mode = null - - return go$open(path, flags, mode, cb) - - function go$open (path, flags, mode, cb) { - return fs$open(path, flags, mode, function (err, fd) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$open, [path, flags, mode, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } - - return fs -} - -function enqueue (elem) { - debug('ENQUEUE', elem[0].name, elem[1]) - queue.push(elem) -} - -function retry () { - var elem = queue.shift() - if (elem) { - debug('RETRY', elem[0].name, elem[1]) - elem[0].apply(null, elem[1]) - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/legacy-streams.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/legacy-streams.js deleted file mode 100644 index d617b50f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/legacy-streams.js +++ /dev/null @@ -1,118 +0,0 @@ -var Stream = require('stream').Stream - -module.exports = legacy - -function legacy (fs) { - return { - ReadStream: ReadStream, - WriteStream: WriteStream - } - - function ReadStream (path, options) { - if (!(this instanceof ReadStream)) return new ReadStream(path, options); - - Stream.call(this); - - var self = this; - - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - - this.flags = 'r'; - this.mode = 438; /*=0666*/ - this.bufferSize = 64 * 1024; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.encoding) this.setEncoding(this.encoding); - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } else if ('number' !== typeof this.end) { - throw TypeError('end must be a Number'); - } - - if (this.start > this.end) { - throw new Error('start must be <= end'); - } - - this.pos = this.start; - } - - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - - fs.open(this.path, this.flags, this.mode, function (err, fd) { - if (err) { - self.emit('error', err); - self.readable = false; - return; - } - - self.fd = fd; - self.emit('open', fd); - self._read(); - }) - } - - function WriteStream (path, options) { - if (!(this instanceof WriteStream)) return new WriteStream(path, options); - - Stream.call(this); - - this.path = path; - this.fd = null; - this.writable = true; - - this.flags = 'w'; - this.encoding = 'binary'; - this.mode = 438; /*=0666*/ - this.bytesWritten = 0; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.start < 0) { - throw new Error('start must be >= zero'); - } - - this.pos = this.start; - } - - this.busy = false; - this._queue = []; - - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/package.json deleted file mode 100644 index 5c3f05bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@^4.1.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file" - ] - ], - "_from": "graceful-fs@>=4.1.2 <5.0.0", - "_id": "graceful-fs@4.1.3", - "_inCache": true, - "_installable": true, - "_location": "/graceful-fs", - "_nodeVersion": "4.0.0", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/graceful-fs-4.1.3.tgz_1454449326495_0.943017533281818" - }, - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "3.7.0", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@^4.1.2", - "rawSpec": "^4.1.2", - "scope": null, - "spec": ">=4.1.2 <5.0.0", - "type": "range" - }, - "_requiredBy": [ - "/load-json-file", - "/path-type" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz", - "_shasum": "92033ce11113c41e2628d61fdfa40bc10dc0155c", - "_shrinkwrap": null, - "_spec": "graceful-fs@^4.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file", - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^5.4.2" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "92033ce11113c41e2628d61fdfa40bc10dc0155c", - "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.3.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "files": [ - "fs.js", - "graceful-fs.js", - "legacy-streams.js", - "polyfills.js" - ], - "gitHead": "694c56f3aed4aee62d6df169be123d3984f61b85", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "node test.js | tap -" - }, - "version": "4.1.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/polyfills.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 5e4f4804..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,252 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -try { - process.cwd() -} catch (er) {} - -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -module.exports = patch - -function patch (fs) { - // (re-)implement some things that are known busted or missing. - - // lchmod, broken prior to 0.6.2 - // back-port the fix here. - if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs) - } - - // lutimes implementation, or no-op - if (!fs.lutimes) { - patchLutimes(fs) - } - - // https://github.com/isaacs/node-graceful-fs/issues/4 - // Chown should not fail on einval or eperm if non-root. - // It should not fail on enosys ever, as this just indicates - // that a fs doesn't support the intended operation. - - fs.chown = chownFix(fs.chown) - fs.fchown = chownFix(fs.fchown) - fs.lchown = chownFix(fs.lchown) - - fs.chmod = chownFix(fs.chmod) - fs.fchmod = chownFix(fs.fchmod) - fs.lchmod = chownFix(fs.lchmod) - - fs.chownSync = chownFixSync(fs.chownSync) - fs.fchownSync = chownFixSync(fs.fchownSync) - fs.lchownSync = chownFixSync(fs.lchownSync) - - fs.chmodSync = chownFix(fs.chmodSync) - fs.fchmodSync = chownFix(fs.fchmodSync) - fs.lchmodSync = chownFix(fs.lchmodSync) - - // if lchmod/lchown do not exist, then make them no-ops - if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} - } - if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} - } - - // on Windows, A/V software can lock the directory, causing this - // to fail with an EACCES or EPERM if the directory contains newly - // created files. Try again on failure, for up to 1 second. - if (process.platform === "win32") { - fs.rename = (function (fs$rename) { return function (from, to, cb) { - var start = Date.now() - fs$rename(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return fs$rename(from, to, CB) - } - if (cb) cb(er) - }) - }})(fs.rename) - } - - // if read() returns EAGAIN, then just try it again. - fs.read = (function (fs$read) { return function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - }})(fs.read) - - fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } - }})(fs.readSync) -} - -function patchLchmod (fs) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var threw = true - var ret - try { - ret = fs.fchmodSync(fd, mode) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } -} - -function patchLutimes (fs) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - var ret - var threw = true - try { - ret = fs.futimesSync(fd, at, mt) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.npmignore deleted file mode 100644 index 3ac7d16c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea/ -.DS_Store -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.travis.yml deleted file mode 100644 index baf9be7f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.12" - - "io.js" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/LICENSE deleted file mode 100644 index d1f842f0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Zhiye Li - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/README.md deleted file mode 100644 index fc63b505..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# graceful-readlink -[![NPM Version](http://img.shields.io/npm/v/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink) -[![NPM Downloads](https://img.shields.io/npm/dm/graceful-readlink.svg?style=flat)](https://www.npmjs.org/package/graceful-readlink) - - -## Usage - -```js -var readlinkSync = require('graceful-readlink').readlinkSync; -console.log(readlinkSync(f)); -// output -// the file pointed to when `f` is a symbolic link -// the `f` itself when `f` is not a symbolic link -``` -## Licence - -MIT License diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/index.js deleted file mode 100644 index 7e9fc70f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var fs = require('fs') - , lstat = fs.lstatSync; - -exports.readlinkSync = function (p) { - if (lstat(p).isSymbolicLink()) { - return fs.readlinkSync(p); - } else { - return p; - } -}; - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/package.json deleted file mode 100644 index 7857a288..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/graceful-readlink/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "_args": [ - [ - "graceful-readlink@>= 1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/commander" - ] - ], - "_from": "graceful-readlink@>=1.0.0", - "_id": "graceful-readlink@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/graceful-readlink", - "_nodeVersion": "0.11.14", - "_npmUser": { - "email": "zhiyelee@gmail.com", - "name": "zhiyelee" - }, - "_npmVersion": "2.1.17", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-readlink", - "raw": "graceful-readlink@>= 1.0.0", - "rawSpec": ">= 1.0.0", - "scope": null, - "spec": ">=1.0.0", - "type": "range" - }, - "_requiredBy": [ - "/commander" - ], - "_resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "_shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725", - "_shrinkwrap": null, - "_spec": "graceful-readlink@>= 1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/commander", - "author": { - "name": "zhiyelee" - }, - "bugs": { - "url": "https://github.com/zhiyelee/graceful-readlink/issues" - }, - "dependencies": {}, - "description": "graceful fs.readlink", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "4cafad76bc62f02fa039b2f94e9a3dd3a391a725", - "tarball": "http://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - }, - "gitHead": "f6655275bebef706fb63fd01b5f062a7052419a5", - "homepage": "https://github.com/zhiyelee/graceful-readlink", - "keywords": [ - "fs.readlink", - "readlink" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "zhiyelee@gmail.com", - "name": "zhiyelee" - } - ], - "name": "graceful-readlink", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/zhiyelee/graceful-readlink.git" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/History.md deleted file mode 100644 index a4b7b49f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/History.md +++ /dev/null @@ -1,63 +0,0 @@ - -1.7.0 / 2012-12-30 -================== - - * support transient notifications in Gnome - -1.6.1 / 2012-09-25 -================== - - * restore compatibility with node < 0.8 [fgnass] - -1.6.0 / 2012-09-06 -================== - - * add notification center support [drudge] - -1.5.1 / 2012-04-08 -================== - - * Merge pull request #16 from KyleAMathews/patch-1 - * Fixes #15 - -1.5.0 / 2012-02-08 -================== - - * Added windows support [perfusorius] - -1.4.1 / 2011-12-28 -================== - - * Fixed: dont exit(). Closes #9 - -1.4.0 / 2011-12-17 -================== - - * Changed API: `growl.notify()` -> `growl()` - -1.3.0 / 2011-12-17 -================== - - * Added support for Ubuntu/Debian/Linux users [niftylettuce] - * Fixed: send notifications even if title not specified [alessioalex] - -1.2.0 / 2011-10-06 -================== - - * Add support for priority. - -1.1.0 / 2011-03-15 -================== - - * Added optional callbacks - * Added parsing of version - -1.0.1 / 2010-03-26 -================== - - * Fixed; sys.exec -> child_process.exec to support latest node - -1.0.0 / 2010-03-19 -================== - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/Readme.md deleted file mode 100644 index 48d717cc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/Readme.md +++ /dev/null @@ -1,99 +0,0 @@ -# Growl for nodejs - -Growl support for Nodejs. This is essentially a port of my [Ruby Growl Library](http://github.com/visionmedia/growl). Ubuntu/Linux support added thanks to [@niftylettuce](http://github.com/niftylettuce). - -## Installation - -### Install - -### Mac OS X (Darwin): - - Install [growlnotify(1)](http://growl.info/extras.php#growlnotify). On OS X 10.8, Notification Center is supported using [terminal-notifier](https://github.com/alloy/terminal-notifier). To install: - - $ sudo gem install terminal-notifier - - Install [npm](http://npmjs.org/) and run: - - $ npm install growl - -### Ubuntu (Linux): - - Install `notify-send` through the [libnotify-bin](http://packages.ubuntu.com/libnotify-bin) package: - - $ sudo apt-get install libnotify-bin - - Install [npm](http://npmjs.org/) and run: - - $ npm install growl - -### Windows: - - Download and install [Growl for Windows](http://www.growlforwindows.com/gfw/default.aspx) - - Download [growlnotify](http://www.growlforwindows.com/gfw/help/growlnotify.aspx) - **IMPORTANT :** Unpack growlnotify to a folder that is present in your path! - - Install [npm](http://npmjs.org/) and run: - - $ npm install growl - -## Examples - -Callback functions are optional - - var growl = require('growl') - growl('You have mail!') - growl('5 new messages', { sticky: true }) - growl('5 new emails', { title: 'Email Client', image: 'Safari', sticky: true }) - growl('Message with title', { title: 'Title'}) - growl('Set priority', { priority: 2 }) - growl('Show Safari icon', { image: 'Safari' }) - growl('Show icon', { image: 'path/to/icon.icns' }) - growl('Show image', { image: 'path/to/my.image.png' }) - growl('Show png filesystem icon', { image: 'png' }) - growl('Show pdf filesystem icon', { image: 'article.pdf' }) - growl('Show pdf filesystem icon', { image: 'article.pdf' }, function(err){ - // ... notified - }) - -## Options - - - title - - notification title - - name - - application name - - priority - - priority for the notification (default is 0) - - sticky - - weither or not the notification should remainin until closed - - image - - Auto-detects the context: - - path to an icon sets --iconpath - - path to an image sets --image - - capitalized word sets --appIcon - - filename uses extname as --icon - - otherwise treated as --icon - -## License - -(The MIT License) - -Copyright (c) 2009 TJ Holowaychuk - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/lib/growl.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/lib/growl.js deleted file mode 100644 index c034c3ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/lib/growl.js +++ /dev/null @@ -1,234 +0,0 @@ -// Growl - Copyright TJ Holowaychuk (MIT Licensed) - -/** - * Module dependencies. - */ - -var exec = require('child_process').exec - , fs = require('fs') - , path = require('path') - , exists = fs.existsSync || path.existsSync - , os = require('os') - , quote = JSON.stringify - , cmd; - -function which(name) { - var paths = process.env.PATH.split(':'); - var loc; - - for (var i = 0, len = paths.length; i < len; ++i) { - loc = path.join(paths[i], name); - if (exists(loc)) return loc; - } -} - -switch(os.type()) { - case 'Darwin': - if (which('terminal-notifier')) { - cmd = { - type: "Darwin-NotificationCenter" - , pkg: "terminal-notifier" - , msg: '-message' - , title: '-title' - , subtitle: '-subtitle' - , priority: { - cmd: '-execute' - , range: [] - } - }; - } else { - cmd = { - type: "Darwin-Growl" - , pkg: "growlnotify" - , msg: '-m' - , sticky: '--sticky' - , priority: { - cmd: '--priority' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - , "Very Low" - , "Moderate" - , "Normal" - , "High" - , "Emergency" - ] - } - }; - } - break; - case 'Linux': - cmd = { - type: "Linux" - , pkg: "notify-send" - , msg: '' - , sticky: '-t 0' - , icon: '-i' - , priority: { - cmd: '-u' - , range: [ - "low" - , "normal" - , "critical" - ] - } - }; - break; - case 'Windows_NT': - cmd = { - type: "Windows" - , pkg: "growlnotify" - , msg: '' - , sticky: '/s:true' - , title: '/t:' - , icon: '/i:' - , priority: { - cmd: '/p:' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - ] - } - }; - break; -} - -/** - * Expose `growl`. - */ - -exports = module.exports = growl; - -/** - * Node-growl version. - */ - -exports.version = '1.4.1' - -/** - * Send growl notification _msg_ with _options_. - * - * Options: - * - * - title Notification title - * - sticky Make the notification stick (defaults to false) - * - priority Specify an int or named key (default is 0) - * - name Application name (defaults to growlnotify) - * - image - * - path to an icon sets --iconpath - * - path to an image sets --image - * - capitalized word sets --appIcon - * - filename uses extname as --icon - * - otherwise treated as --icon - * - * Examples: - * - * growl('New email') - * growl('5 new emails', { title: 'Thunderbird' }) - * growl('Email sent', function(){ - * // ... notification sent - * }) - * - * @param {string} msg - * @param {object} options - * @param {function} fn - * @api public - */ - -function growl(msg, options, fn) { - var image - , args - , options = options || {} - , fn = fn || function(){}; - - // noop - if (!cmd) return fn(new Error('growl not supported on this platform')); - args = [cmd.pkg]; - - // image - if (image = options.image) { - switch(cmd.type) { - case 'Darwin-Growl': - var flag, ext = path.extname(image).substr(1) - flag = flag || ext == 'icns' && 'iconpath' - flag = flag || /^[A-Z]/.test(image) && 'appIcon' - flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image' - flag = flag || ext && (image = ext) && 'icon' - flag = flag || 'icon' - args.push('--' + flag, quote(image)) - break; - case 'Linux': - args.push(cmd.icon, quote(image)); - // libnotify defaults to sticky, set a hint for transient notifications - if (!options.sticky) args.push('--hint=int:transient:1'); - break; - case 'Windows': - args.push(cmd.icon + quote(image)); - break; - } - } - - // sticky - if (options.sticky) args.push(cmd.sticky); - - // priority - if (options.priority) { - var priority = options.priority + ''; - var checkindexOf = cmd.priority.range.indexOf(priority); - if (~cmd.priority.range.indexOf(priority)) { - args.push(cmd.priority, options.priority); - } - } - - // name - if (options.name && cmd.type === "Darwin-Growl") { - args.push('--name', options.name); - } - - switch(cmd.type) { - case 'Darwin-Growl': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) args.push(quote(options.title)); - break; - case 'Darwin-NotificationCenter': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) { - args.push(cmd.title); - args.push(quote(options.title)); - } - if (options.subtitle) { - args.push(cmd.subtitle); - args.push(quote(options.subtitle)); - } - break; - case 'Darwin-Growl': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) args.push(quote(options.title)); - break; - case 'Linux': - if (options.title) { - args.push(quote(options.title)); - args.push(cmd.msg); - args.push(quote(msg)); - } else { - args.push(quote(msg)); - } - break; - case 'Windows': - args.push(quote(msg)); - if (options.title) args.push(cmd.title + quote(options.title)); - break; - } - - // execute - exec(args.join(' '), fn); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/package.json deleted file mode 100644 index 0c85cacc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_args": [ - [ - "growl@1.8.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/mocha" - ] - ], - "_from": "growl@1.8.1", - "_id": "growl@1.8.1", - "_inCache": true, - "_installable": true, - "_location": "/growl", - "_npmUser": { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - }, - "_npmVersion": "1.4.20", - "_phantomChildren": {}, - "_requested": { - "name": "growl", - "raw": "growl@1.8.1", - "rawSpec": "1.8.1", - "scope": null, - "spec": "1.8.1", - "type": "version" - }, - "_requiredBy": [ - "/mocha" - ], - "_resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "_shasum": "4b2dec8d907e93db336624dcec0183502f8c9428", - "_shrinkwrap": null, - "_spec": "growl@1.8.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "bugs": { - "url": "https://github.com/visionmedia/node-growl/issues" - }, - "dependencies": {}, - "description": "Growl unobtrusive notifications", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "4b2dec8d907e93db336624dcec0183502f8c9428", - "tarball": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz" - }, - "gitHead": "882ced3155a57f566887c884d5c6dccb7df435c1", - "homepage": "https://github.com/visionmedia/node-growl", - "main": "./lib/growl.js", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "growl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-growl.git" - }, - "scripts": {}, - "version": "1.8.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/test.js deleted file mode 100644 index cf22d90b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/growl/test.js +++ /dev/null @@ -1,20 +0,0 @@ - -var growl = require('./lib/growl') - -growl('You have mail!') -growl('5 new messages', { sticky: true }) -growl('5 new emails', { title: 'Email Client', image: 'Safari', sticky: true }) -growl('Message with title', { title: 'Title'}) -growl('Set priority', { priority: 2 }) -growl('Show Safari icon', { image: 'Safari' }) -growl('Show icon', { image: 'path/to/icon.icns' }) -growl('Show image', { image: 'path/to/my.image.png' }) -growl('Show png filesystem icon', { image: 'png' }) -growl('Show pdf filesystem icon', { image: 'article.pdf' }) -growl('Show pdf filesystem icon', { image: 'article.pdf' }, function(){ - console.log('callback'); -}) -growl('Show pdf filesystem icon', { title: 'Use show()', image: 'article.pdf' }) -growl('here \' are \n some \\ characters that " need escaping', {}, function(error, stdout, stderr) { - if (error !== null) throw new Error('escaping failed:\n' + stdout + stderr); -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.npmignore deleted file mode 100644 index b2d59d1f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -/node_modules -/dist \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.travis.yml deleted file mode 100644 index 2597aeae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.10 -before_script: - - "npm install -g gulp" \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/CHANGELOG.md deleted file mode 100644 index f0fb0db8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/CHANGELOG.md +++ /dev/null @@ -1,27 +0,0 @@ -## Changelog - -### v0.1.0 (2014-06-30) - -First release. - -### v0.2.0 (2014-07-01) - -Fix streaming pipe. - -Add tests for streaming pipe. - -### v0.2.1 (2014-07-18) - -Add option `strictSSL` (thank you [@Magomogo](https://github.com/Magomogo)) - -### v0.3.0 (2014-09-02) - -Pass through [request](https://github.com/mikeal/request) options to make it flexible. - -### v0.4.0 (2015-08-14) - -Put `request` options in a single `requestOptions`. - -### v0.4.1 (2016-02-26) - -Improve response code check. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/Gulpfile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/Gulpfile.js deleted file mode 100644 index fb24a334..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/Gulpfile.js +++ /dev/null @@ -1,90 +0,0 @@ -var remoteSrc = require('./'); -var gulp = require('gulp'); -var uglify = require('gulp-uglify'); -var clean = require('gulp-clean'); - -var FILES = [ - "src/node.js", - "lib/_debugger.js", - "lib/_linklist.js", - "lib/_stream_duplex.js", - "lib/_stream_passthrough.js", - "lib/_stream_readable.js", - "lib/_stream_transform.js", - "lib/_stream_writable.js", - "lib/assert.js", - "lib/buffer.js", - "lib/child_process.js", - "lib/cluster.js", - "lib/console.js", - "lib/constants.js", - "lib/crypto.js", - "lib/dgram.js", - "lib/dns.js", - "lib/domain.js", - "lib/events.js", - "lib/freelist.js", - "lib/fs.js", - "lib/http.js", - "lib/https.js", - "lib/module.js", - "lib/net.js", - "lib/os.js", - "lib/path.js", - "lib/punycode.js", - "lib/querystring.js", - "lib/readline.js", - "lib/repl.js", - "lib/stream.js", - "lib/string_decoder.js", - "lib/sys.js", - "lib/timers.js", - "lib/tls.js", - "lib/tty.js", - "lib/url.js", - "lib/util.js", - "lib/vm.js", - "lib/zlib.js" -]; - -var URL = "https://raw.githubusercontent.com/joyent/node/v0.10.29/" - -gulp.task('clean', function() { - return gulp.src('dist', {read: false}) - .pipe(clean()); -}); - -gulp.task('nostream', ['clean'], function() { - return remoteSrc(FILES, { - base: URL - }) - .pipe(uglify()) - .pipe(gulp.dest('dist/nostream')); -}); - -gulp.task('stream', ['clean'], function() { - return remoteSrc(FILES, { - buffer: false, - base: URL - }) - .pipe(gulp.dest('dist/stream')); -}); - -gulp.task('self-signed-ssl', ['clean'], function() { - return remoteSrc(['index.html'], { - strictSSL: false, - base: 'https://example.com/' - }) - .pipe(gulp.dest('dist/strictSSL')); -}); - -// run this task alone to test timeout -gulp.task('timeout', ['clean'], function() { - return remoteSrc(FILES, { - base: URL, - timeout: 1 - }) - .pipe(gulp.dest('dist/timeout')); -}); - -gulp.task('test', ['stream', 'nostream', 'self-signed-ssl']); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/LICENSE deleted file mode 100644 index 8a3ca32e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -MIT License -=========== - -Copyright (c) 2014 Dong - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/README.md deleted file mode 100644 index 8541ce90..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# gulp-remote-src - -[![Build Status](https://travis-ci.org/ddliu/gulp-remote-src.png)](https://travis-ci.org/ddliu/gulp-remote-src) - -Remote `gulp.src`. - -## Installation - -Install package with NPM and add it to your development dependencies: - - npm install --save-dev gulp-remote-src - -## Usage - -```js -var gulp = require('gulp'); -var uglify = require('gulp-uglify'); -var remoteSrc = require('gulp-remote-src'); - -gulp.task('remote', function() { - -remoteSrc(['app.js', 'jquery.js'], { - base: 'http://myapps.com/assets/' - }) - .pipe(uglify()) - .pipe(gulp.dest('./dist/')); -}) -``` - -## Options - -- `base` - - Url base. - -- `buffer` (default is true) - - Pipe out files as buffer or as stream. Note that some plugins does not support streaming. - -- `requestOptions` - - Options to be passed to [request](https://github.com/mikeal/request) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/index.js deleted file mode 100644 index f81bf8ac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/index.js +++ /dev/null @@ -1,77 +0,0 @@ -var util = require('util'); -var es = require('event-stream'); -var request = require('request'); -var File = require('vinyl'); -var through2 = require('through2'); -var extend = require('node.extend'); - -module.exports = function(urls, options) { - if (options === undefined) { - options = {}; - } - - if (typeof options.base !== 'string' ) { - options.base = '/'; - } - - if (typeof options.buffer !== 'boolean') { - options.buffer = true; - } - - if (!util.isArray(urls)) { - urls = [urls]; - } - - var allowedRequestOptions = ['qs', 'headers', 'auth', 'followRedirect', 'followAllRedirects', 'maxRedirects', 'timeout', 'proxy', - 'strictSSL', 'aws', 'gzip'] - - var requestBaseOptions = {}; - for (var i = allowedRequestOptions.length - 1; i >= 0; i--) { - var k = allowedRequestOptions[i]; - if (k in options) { - requestBaseOptions[k] = options[k]; - } - } - - if (options.requestOptions) { - for (var k in options.requestOptions) { - requestBaseOptions[k] = options.requestOptions[k]; - } - } - - return es.readArray(urls).pipe(es.map(function(data, cb) { - var url = options.base + data, requestOptions = extend({url: url}, requestBaseOptions); - - if (!options.buffer) { - var file = new File({ - cwd: '/', - base: options.base, - path: url, - // request must be piped out once created, or we'll get this error: "You cannot pipe after data has been emitted from the response." - contents: request(requestOptions).pipe(through2()) - }); - - cb(null, file); - } else { - // set encoding to `null` to return the body as buffer - requestOptions.encoding = null; - - request(requestOptions, function(error, response, body) { - if (!error && (response.statusCode >= 200 && response.statusCode < 300)) { - var file = new File({ - cwd: '/', - base: options.base, - path: url, - contents: body - }); - cb(null, file); - } else { - if (!error) { - error = new Error("Request " + url + " failed with status code:" + response.statusCode); - } - cb(error); - } - }); - } - })); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 63072209..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/package.json deleted file mode 100644 index ee202ac4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@~1.0.17", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src/node_modules/through2" - ] - ], - "_from": "readable-stream@>=1.0.17 <1.1.0", - "_id": "readable-stream@1.0.34", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@~1.0.17", - "rawSpec": "~1.0.17", - "scope": null, - "spec": ">=1.0.17 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "_shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "_shrinkwrap": null, - "_spec": "readable-stream@~1.0.17", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src/node_modules/through2", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "gitHead": "1227c7b66deedb1dc5284a89425854d5f7ad9576", - "homepage": "https://github.com/isaacs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "1.0.34" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/readable.js deleted file mode 100644 index 26511e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,11 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = require('stream'); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.eslintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.eslintrc deleted file mode 100644 index e79f481f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.eslintrc +++ /dev/null @@ -1,45 +0,0 @@ -{ - "env": { - "node": true - }, - "rules": { - // 2-space indentation - "indent": [2, 2], - // Disallow semi-colons, unless needed to disambiguate statement - "semi": [2, "never"], - // Require strings to use single quotes - "quotes": [2, "single"], - // Require curly braces for all control statements - "curly": 2, - // Disallow using variables and functions before they've been defined - "no-use-before-define": 2, - // Allow any case for variable naming - "camelcase": 0, - // Disallow unused variables, except as function arguments - "no-unused-vars": [2, {"args":"none"}], - // Allow leading underscores for method names - // REASON: we use underscores to denote private methods - "no-underscore-dangle": 0, - // Allow multi spaces around operators since they are - // used for alignment. This is not consistent in the - // code. - "no-multi-spaces": 0, - // Style rule is: most objects use { beforeColon: false, afterColon: true }, unless aligning which uses: - // - // { - // beforeColon : true, - // afterColon : true - // } - // - // eslint can't handle this, so the check is disabled. - "key-spacing": 0, - // Allow shadowing vars in outer scope (needs discussion) - "no-shadow": 0, - // Use if () { } - // ^ space - "space-after-keywords": [2, "always"], - // Use if () { } - // ^ space - "space-before-blocks": [2, "always"] - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.npmignore deleted file mode 100644 index 53fc9efa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -coverage -tests -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.travis.yml deleted file mode 100644 index 6180cb5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js -node_js: - - "io.js" - - "0.12" - - "0.10" -sudo: false - -after_script: "npm run test-cov && cat ./coverage/lcov.info | codecov && cat ./coverage/lcov.info | coveralls" - -webhooks: - urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: false # default: false diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CHANGELOG.md deleted file mode 100644 index 6b3905ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CHANGELOG.md +++ /dev/null @@ -1,499 +0,0 @@ -## Change Log - -### v2.58.0 (2015/06/16) -- [#1638](https://github.com/request/request/pull/1638) Use the `extend` module to deep extend in the defaults method (@simov) -- [#1631](https://github.com/request/request/pull/1631) Move tunnel logic into separate module (@simov) -- [#1634](https://github.com/request/request/pull/1634) Fix OAuth query transport_method (@simov) -- [#1603](https://github.com/request/request/pull/1603) Add codecov (@simov) - -### v2.57.0 (2015/05/31) -- [#1615](https://github.com/request/request/pull/1615) Replace '.client' with '.socket' as the former was deprecated in 2.2.0. (@ChALkeR) - -### v2.56.0 (2015/05/28) -- [#1610](https://github.com/request/request/pull/1610) Bump module dependencies (@simov) -- [#1600](https://github.com/request/request/pull/1600) Extract the querystring logic into separate module (@simov) -- [#1607](https://github.com/request/request/pull/1607) Re-generate certificates (@simov) -- [#1599](https://github.com/request/request/pull/1599) Move getProxyFromURI logic below the check for Invaild URI (#1595) (@simov) -- [#1598](https://github.com/request/request/pull/1598) Fix the way http verbs are defined in order to please intellisense IDEs (@simov, @flannelJesus) -- [#1591](https://github.com/request/request/pull/1591) A few minor fixes: (@simov) -- [#1584](https://github.com/request/request/pull/1584) Refactor test-default tests (according to comments in #1430) (@simov) -- [#1585](https://github.com/request/request/pull/1585) Fixing documentation regarding TLS options (#1583) (@mainakae) -- [#1574](https://github.com/request/request/pull/1574) Refresh the oauth_nonce on redirect (#1573) (@simov) -- [#1570](https://github.com/request/request/pull/1570) Discovered tests that weren't properly running (@seanstrom) -- [#1569](https://github.com/request/request/pull/1569) Fix pause before response arrives (@kevinoid) -- [#1558](https://github.com/request/request/pull/1558) Emit error instead of throw (@simov) -- [#1568](https://github.com/request/request/pull/1568) Fix stall when piping gzipped response (@kevinoid) -- [#1560](https://github.com/request/request/pull/1560) Update combined-stream (@apechimp) -- [#1543](https://github.com/request/request/pull/1543) Initial support for oauth_body_hash on json payloads (@simov, @aesopwolf) -- [#1541](https://github.com/request/request/pull/1541) Fix coveralls (@simov) -- [#1540](https://github.com/request/request/pull/1540) Fix recursive defaults for convenience methods (@simov) -- [#1536](https://github.com/request/request/pull/1536) More eslint style rules (@froatsnook) -- [#1533](https://github.com/request/request/pull/1533) Adding dependency status bar to README.md (@YasharF) -- [#1539](https://github.com/request/request/pull/1539) ensure the latest version of har-validator is included (@ahmadnassri) -- [#1516](https://github.com/request/request/pull/1516) forever+pool test (@devTristan) - -### v2.55.0 (2015/04/05) -- [#1520](https://github.com/request/request/pull/1520) Refactor defaults (@simov) -- [#1525](https://github.com/request/request/pull/1525) Delete request headers with undefined value. (@froatsnook) -- [#1521](https://github.com/request/request/pull/1521) Add promise tests (@simov) -- [#1518](https://github.com/request/request/pull/1518) Fix defaults (@simov) -- [#1515](https://github.com/request/request/pull/1515) Allow static invoking of convenience methods (@simov) -- [#1505](https://github.com/request/request/pull/1505) Fix multipart boundary extraction regexp (@simov) -- [#1510](https://github.com/request/request/pull/1510) Fix basic auth form data (@simov) - -### v2.54.0 (2015/03/24) -- [#1501](https://github.com/request/request/pull/1501) HTTP Archive 1.2 support (@ahmadnassri) -- [#1486](https://github.com/request/request/pull/1486) Add a test for the forever agent (@akshayp) -- [#1500](https://github.com/request/request/pull/1500) Adding handling for no auth method and null bearer (@philberg) -- [#1498](https://github.com/request/request/pull/1498) Add table of contents in readme (@simov) -- [#1477](https://github.com/request/request/pull/1477) Add support for qs options via qsOptions key (@simov) -- [#1496](https://github.com/request/request/pull/1496) Parameters encoded to base 64 should be decoded as UTF-8, not ASCII. (@albanm) -- [#1494](https://github.com/request/request/pull/1494) Update eslint (@froatsnook) -- [#1474](https://github.com/request/request/pull/1474) Require Colon in Basic Auth (@erykwalder) -- [#1481](https://github.com/request/request/pull/1481) Fix baseUrl and redirections. (@burningtree) -- [#1469](https://github.com/request/request/pull/1469) Feature/base url (@froatsnook) -- [#1459](https://github.com/request/request/pull/1459) Add option to time request/response cycle (including rollup of redirects) (@aaron-em) -- [#1468](https://github.com/request/request/pull/1468) Re-enable io.js/node 0.12 build (@simov, @mikeal, @BBB) -- [#1442](https://github.com/request/request/pull/1442) Fixed the issue with strictSSL tests on 0.12 & io.js by explicitly setting a cipher that matches the cert. (@BBB, @nicolasmccurdy, @simov, @0x4139) -- [#1460](https://github.com/request/request/pull/1460) localAddress or proxy config is lost when redirecting (@simov, @0x4139) -- [#1453](https://github.com/request/request/pull/1453) Test on Node.js 0.12 and io.js with allowed failures (@nicolasmccurdy) -- [#1426](https://github.com/request/request/pull/1426) Fixing tests to pass on io.js and node 0.12 (only test-https.js stiff failing) (@mikeal) -- [#1446](https://github.com/request/request/pull/1446) Missing HTTP referer header with redirects Fixes #1038 (@simov, @guimonz) -- [#1428](https://github.com/request/request/pull/1428) Deprecate Node v0.8.x (@nylen) -- [#1436](https://github.com/request/request/pull/1436) Add ability to set a requester without setting default options (@tikotzky) -- [#1435](https://github.com/request/request/pull/1435) dry up verb methods (@sethpollack) -- [#1423](https://github.com/request/request/pull/1423) Allow fully qualified multipart content-type header (@simov) -- [#1430](https://github.com/request/request/pull/1430) Fix recursive requester (@tikotzky) -- [#1429](https://github.com/request/request/pull/1429) Throw error when making HEAD request with a body (@tikotzky) -- [#1419](https://github.com/request/request/pull/1419) Add note that the project is broken in 0.12.x (@nylen) -- [#1413](https://github.com/request/request/pull/1413) Fix basic auth (@simov) -- [#1397](https://github.com/request/request/pull/1397) Improve pipe-from-file tests (@nylen) - -### v2.53.0 (2015/02/02) -- [#1396](https://github.com/request/request/pull/1396) Do not rfc3986 escape JSON bodies (@nylen, @simov) -- [#1392](https://github.com/request/request/pull/1392) Improve `timeout` option description (@watson) - -### v2.52.0 (2015/02/02) -- [#1383](https://github.com/request/request/pull/1383) Add missing HTTPS options that were not being passed to tunnel (@brichard19) (@nylen, @brichard19) -- [#1388](https://github.com/request/request/pull/1388) Upgrade mime-types package version (@roderickhsiao) -- [#1389](https://github.com/request/request/pull/1389) Revise Setup Tunnel Function (@seanstrom) -- [#1374](https://github.com/request/request/pull/1374) Allow explicitly disabling tunneling for proxied https destinations (@nylen) -- [#1376](https://github.com/request/request/pull/1376) Use karma-browserify for tests. Add browser test coverage reporter. (@eiriksm) -- [#1366](https://github.com/request/request/pull/1366) Refactor OAuth into separate module (@simov) -- [#1373](https://github.com/request/request/pull/1373) Rewrite tunnel test to be pure Node.js (@nylen) -- [#1371](https://github.com/request/request/pull/1371) Upgrade test reporter (@nylen) -- [#1360](https://github.com/request/request/pull/1360) Refactor basic, bearer, digest auth logic into separate class (@simov) -- [#1354](https://github.com/request/request/pull/1354) Remove circular dependency from debugging code (@nylen) -- [#1351](https://github.com/request/request/pull/1351) Move digest auth into private prototype method (@simov) -- [#1352](https://github.com/request/request/pull/1352) Update hawk dependency to ~2.3.0 (@mridgway) -- [#1353](https://github.com/request/request/pull/1353) Correct travis-ci badge (@dogancelik) -- [#1349](https://github.com/request/request/pull/1349) Make sure we return on errored browser requests. (@eiriksm) -- [#1346](https://github.com/request/request/pull/1346) getProxyFromURI Extraction Refactor (@seanstrom) -- [#1337](https://github.com/request/request/pull/1337) Standardize test ports on 6767 (@nylen) -- [#1341](https://github.com/request/request/pull/1341) Emit FormData error events as Request error events (@nylen, @rwky) -- [#1343](https://github.com/request/request/pull/1343) Clean up readme badges, and add Travis and Coveralls badges (@nylen) -- [#1345](https://github.com/request/request/pull/1345) Update README.md (@Aaron-Hartwig) -- [#1338](https://github.com/request/request/pull/1338) Always wait for server.close() callback in tests (@nylen) -- [#1342](https://github.com/request/request/pull/1342) Add mock https server and redo start of browser tests for this purpose. (@eiriksm) -- [#1339](https://github.com/request/request/pull/1339) Improve auth docs (@nylen) -- [#1335](https://github.com/request/request/pull/1335) Add support for OAuth plaintext signature method (@simov) -- [#1332](https://github.com/request/request/pull/1332) Add clean script to remove test-browser.js after the tests run (@seanstrom) -- [#1327](https://github.com/request/request/pull/1327) Fix errors generating coverage reports. (@nylen) -- [#1330](https://github.com/request/request/pull/1330) Return empty buffer upon empty response body and encoding is set to null (@seanstrom) -- [#1326](https://github.com/request/request/pull/1326) Use faster container-based infrastructure on Travis (@nylen) -- [#1315](https://github.com/request/request/pull/1315) Implement rfc3986 option (@simov, @nylen, @apoco, @DullReferenceException, @mmalecki, @oliamb, @cliffcrosland, @LewisJEllis, @eiriksm, @poislagarde) -- [#1314](https://github.com/request/request/pull/1314) Detect urlencoded form data header via regex (@simov) -- [#1317](https://github.com/request/request/pull/1317) Improve OAuth1.0 server side flow example (@simov) - -### v2.51.0 (2014/12/10) -- [#1310](https://github.com/request/request/pull/1310) Revert changes introduced in https://github.com/request/request/pull/1282 (@simov) - -### v2.50.0 (2014/12/09) -- [#1308](https://github.com/request/request/pull/1308) Add browser test to keep track of browserify compability. (@eiriksm) -- [#1299](https://github.com/request/request/pull/1299) Add optional support for jsonReviver (@poislagarde) -- [#1277](https://github.com/request/request/pull/1277) Add Coveralls configuration (@simov) -- [#1307](https://github.com/request/request/pull/1307) Upgrade form-data, add back browserify compability. Fixes #455. (@eiriksm) -- [#1305](https://github.com/request/request/pull/1305) Fix typo in README.md (@LewisJEllis) -- [#1288](https://github.com/request/request/pull/1288) Update README.md to explain custom file use case (@cliffcrosland) - -### v2.49.0 (2014/11/28) -- [#1295](https://github.com/request/request/pull/1295) fix(proxy): no-proxy false positive (@oliamb) -- [#1292](https://github.com/request/request/pull/1292) Upgrade `caseless` to 0.8.1 (@mmalecki) -- [#1276](https://github.com/request/request/pull/1276) Set transfer encoding for multipart/related to chunked by default (@simov) -- [#1275](https://github.com/request/request/pull/1275) Fix multipart content-type headers detection (@simov) -- [#1269](https://github.com/request/request/pull/1269) adds streams example for review (@tbuchok) -- [#1238](https://github.com/request/request/pull/1238) Add examples README.md (@simov) - -### v2.48.0 (2014/11/12) -- [#1263](https://github.com/request/request/pull/1263) Fixed a syntax error / typo in README.md (@xna2) -- [#1253](https://github.com/request/request/pull/1253) Add multipart chunked flag (@simov, @nylen) -- [#1251](https://github.com/request/request/pull/1251) Clarify that defaults() does not modify global defaults (@nylen) -- [#1250](https://github.com/request/request/pull/1250) Improve documentation for pool and maxSockets options (@nylen) -- [#1237](https://github.com/request/request/pull/1237) Documenting error handling when using streams (@vmattos) -- [#1244](https://github.com/request/request/pull/1244) Finalize changelog command (@nylen) -- [#1241](https://github.com/request/request/pull/1241) Fix typo (@alexanderGugel) -- [#1223](https://github.com/request/request/pull/1223) Show latest version number instead of "upcoming" in changelog (@nylen) -- [#1236](https://github.com/request/request/pull/1236) Document how to use custom CA in README (#1229) (@hypesystem) -- [#1228](https://github.com/request/request/pull/1228) Support for oauth with RSA-SHA1 signing (@nylen) -- [#1216](https://github.com/request/request/pull/1216) Made json and multipart options coexist (@nylen, @simov) -- [#1225](https://github.com/request/request/pull/1225) Allow header white/exclusive lists in any case. (@RReverser) - -### v2.47.0 (2014/10/26) -- [#1222](https://github.com/request/request/pull/1222) Move from mikeal/request to request/request (@nylen) -- [#1220](https://github.com/request/request/pull/1220) update qs dependency to 2.3.1 (@FredKSchott) -- [#1212](https://github.com/request/request/pull/1212) Improve tests/test-timeout.js (@nylen) -- [#1219](https://github.com/request/request/pull/1219) remove old globalAgent workaround for node 0.4 (@request) -- [#1214](https://github.com/request/request/pull/1214) Remove cruft left over from optional dependencies (@nylen) -- [#1215](https://github.com/request/request/pull/1215) Add proxyHeaderExclusiveList option for proxy-only headers. (@RReverser) -- [#1211](https://github.com/request/request/pull/1211) Allow 'Host' header instead of 'host' and remember case across redirects (@nylen) -- [#1208](https://github.com/request/request/pull/1208) Improve release script (@nylen) -- [#1213](https://github.com/request/request/pull/1213) Support for custom cookie store (@nylen, @mitsuru) -- [#1197](https://github.com/request/request/pull/1197) Clean up some code around setting the agent (@FredKSchott) -- [#1209](https://github.com/request/request/pull/1209) Improve multipart form append test (@simov) -- [#1207](https://github.com/request/request/pull/1207) Update changelog (@nylen) -- [#1185](https://github.com/request/request/pull/1185) Stream multipart/related bodies (@simov) - -### v2.46.0 (2014/10/23) -- [#1198](https://github.com/request/request/pull/1198) doc for TLS/SSL protocol options (@shawnzhu) -- [#1200](https://github.com/request/request/pull/1200) Add a Gitter chat badge to README.md (@gitter-badger) -- [#1196](https://github.com/request/request/pull/1196) Upgrade taper test reporter to v0.3.0 (@nylen) -- [#1199](https://github.com/request/request/pull/1199) Fix lint error: undeclared var i (@nylen) -- [#1191](https://github.com/request/request/pull/1191) Move self.proxy decision logic out of init and into a helper (@FredKSchott) -- [#1190](https://github.com/request/request/pull/1190) Move _buildRequest() logic back into init (@FredKSchott) -- [#1186](https://github.com/request/request/pull/1186) Support Smarter Unix URL Scheme (@FredKSchott) -- [#1178](https://github.com/request/request/pull/1178) update form documentation for new usage (@FredKSchott) -- [#1180](https://github.com/request/request/pull/1180) Enable no-mixed-requires linting rule (@nylen) -- [#1184](https://github.com/request/request/pull/1184) Don't forward authorization header across redirects to different hosts (@nylen) -- [#1183](https://github.com/request/request/pull/1183) Correct README about pre and postamble CRLF using multipart and not mult... (@netpoetica) -- [#1179](https://github.com/request/request/pull/1179) Lint tests directory (@nylen) -- [#1169](https://github.com/request/request/pull/1169) add metadata for form-data file field (@dotcypress) -- [#1173](https://github.com/request/request/pull/1173) remove optional dependencies (@seanstrom) -- [#1165](https://github.com/request/request/pull/1165) Cleanup event listeners and remove function creation from init (@FredKSchott) -- [#1174](https://github.com/request/request/pull/1174) update the request.cookie docs to have a valid cookie example (@seanstrom) -- [#1168](https://github.com/request/request/pull/1168) create a detach helper and use detach helper in replace of nextTick (@seanstrom) -- [#1171](https://github.com/request/request/pull/1171) in post can send form data and use callback (@MiroRadenovic) -- [#1159](https://github.com/request/request/pull/1159) accept charset for x-www-form-urlencoded content-type (@seanstrom) -- [#1157](https://github.com/request/request/pull/1157) Update README.md: body with json=true (@Rob--W) -- [#1164](https://github.com/request/request/pull/1164) Disable tests/test-timeout.js on Travis (@nylen) -- [#1153](https://github.com/request/request/pull/1153) Document how to run a single test (@nylen) -- [#1144](https://github.com/request/request/pull/1144) adds documentation for the "response" event within the streaming section (@tbuchok) -- [#1162](https://github.com/request/request/pull/1162) Update eslintrc file to no longer allow past errors (@FredKSchott) -- [#1155](https://github.com/request/request/pull/1155) Support/use self everywhere (@seanstrom) -- [#1161](https://github.com/request/request/pull/1161) fix no-use-before-define lint warnings (@emkay) -- [#1156](https://github.com/request/request/pull/1156) adding curly brackets to get rid of lint errors (@emkay) -- [#1151](https://github.com/request/request/pull/1151) Fix localAddress test on OS X (@nylen) -- [#1145](https://github.com/request/request/pull/1145) documentation: fix outdated reference to setCookieSync old name in README (@FredKSchott) -- [#1131](https://github.com/request/request/pull/1131) Update pool documentation (@FredKSchott) -- [#1143](https://github.com/request/request/pull/1143) Rewrite all tests to use tape (@nylen) -- [#1137](https://github.com/request/request/pull/1137) Add ability to specifiy querystring lib in options. (@jgrund) -- [#1138](https://github.com/request/request/pull/1138) allow hostname and port in place of host on uri (@cappslock) -- [#1134](https://github.com/request/request/pull/1134) Fix multiple redirects and `self.followRedirect` (@blakeembrey) -- [#1130](https://github.com/request/request/pull/1130) documentation fix: add note about npm test for contributing (@FredKSchott) -- [#1120](https://github.com/request/request/pull/1120) Support/refactor request setup tunnel (@seanstrom) -- [#1129](https://github.com/request/request/pull/1129) linting fix: convert double quote strings to use single quotes (@FredKSchott) -- [#1124](https://github.com/request/request/pull/1124) linting fix: remove unneccesary semi-colons (@FredKSchott) - -### v2.45.0 (2014/10/06) -- [#1128](https://github.com/request/request/pull/1128) Add test for setCookie regression (@nylen) -- [#1127](https://github.com/request/request/pull/1127) added tests around using objects as values in a query string (@bcoe) -- [#1103](https://github.com/request/request/pull/1103) Support/refactor request constructor (@nylen, @seanstrom) -- [#1119](https://github.com/request/request/pull/1119) add basic linting to request library (@FredKSchott) -- [#1121](https://github.com/request/request/pull/1121) Revert "Explicitly use sync versions of cookie functions" (@nylen) -- [#1118](https://github.com/request/request/pull/1118) linting fix: Restructure bad empty if statement (@FredKSchott) -- [#1117](https://github.com/request/request/pull/1117) Fix a bad check for valid URIs (@FredKSchott) -- [#1113](https://github.com/request/request/pull/1113) linting fix: space out operators (@FredKSchott) -- [#1116](https://github.com/request/request/pull/1116) Fix typo in `noProxyHost` definition (@FredKSchott) -- [#1114](https://github.com/request/request/pull/1114) linting fix: Added a `new` operator that was missing when creating and throwing a new error (@FredKSchott) -- [#1096](https://github.com/request/request/pull/1096) No_proxy support (@samcday) -- [#1107](https://github.com/request/request/pull/1107) linting-fix: remove unused variables (@FredKSchott) -- [#1112](https://github.com/request/request/pull/1112) linting fix: Make return values consistent and more straitforward (@FredKSchott) -- [#1111](https://github.com/request/request/pull/1111) linting fix: authPieces was getting redeclared (@FredKSchott) -- [#1105](https://github.com/request/request/pull/1105) Use strict mode in request (@FredKSchott) -- [#1110](https://github.com/request/request/pull/1110) linting fix: replace lazy '==' with more strict '===' (@FredKSchott) -- [#1109](https://github.com/request/request/pull/1109) linting fix: remove function call from if-else conditional statement (@FredKSchott) -- [#1102](https://github.com/request/request/pull/1102) Fix to allow setting a `requester` on recursive calls to `request.defaults` (@tikotzky) -- [#1095](https://github.com/request/request/pull/1095) Tweaking engines in package.json (@pdehaan) -- [#1082](https://github.com/request/request/pull/1082) Forward the socket event from the httpModule request (@seanstrom) -- [#972](https://github.com/request/request/pull/972) Clarify gzip handling in the README (@kevinoid) -- [#1089](https://github.com/request/request/pull/1089) Mention that encoding defaults to utf8, not Buffer (@stuartpb) -- [#1088](https://github.com/request/request/pull/1088) Fix cookie example in README.md and make it more clear (@pipi32167) -- [#1027](https://github.com/request/request/pull/1027) Add support for multipart form data in request options. (@crocket) -- [#1076](https://github.com/request/request/pull/1076) use Request.abort() to abort the request when the request has timed-out (@seanstrom) -- [#1068](https://github.com/request/request/pull/1068) add optional postamble required by .NET multipart requests (@netpoetica) - -### v2.43.0 (2014/09/18) -- [#1057](https://github.com/request/request/pull/1057) Defaults should not overwrite defined options (@davidwood) -- [#1046](https://github.com/request/request/pull/1046) Propagate datastream errors, useful in case gzip fails. (@ZJONSSON, @Janpot) -- [#1063](https://github.com/request/request/pull/1063) copy the input headers object #1060 (@finnp) -- [#1031](https://github.com/request/request/pull/1031) Explicitly use sync versions of cookie functions (@ZJONSSON) -- [#1056](https://github.com/request/request/pull/1056) Fix redirects when passing url.parse(x) as URL to convenience method (@nylen) - -### v2.42.0 (2014/09/04) -- [#1053](https://github.com/request/request/pull/1053) Fix #1051 Parse auth properly when using non-tunneling proxy (@isaacs) - -### v2.41.0 (2014/09/04) -- [#1050](https://github.com/request/request/pull/1050) Pass whitelisted headers to tunneling proxy. Organize all tunneling logic. (@isaacs, @Feldhacker) -- [#1035](https://github.com/request/request/pull/1035) souped up nodei.co badge (@rvagg) -- [#1048](https://github.com/request/request/pull/1048) Aws is now possible over a proxy (@steven-aerts) -- [#1039](https://github.com/request/request/pull/1039) extract out helper functions to a helper file (@seanstrom) -- [#1021](https://github.com/request/request/pull/1021) Support/refactor indexjs (@seanstrom) -- [#1033](https://github.com/request/request/pull/1033) Improve and document debug options (@nylen) -- [#1034](https://github.com/request/request/pull/1034) Fix readme headings (@nylen) -- [#1030](https://github.com/request/request/pull/1030) Allow recursive request.defaults (@tikotzky) -- [#1029](https://github.com/request/request/pull/1029) Fix a couple of typos (@nylen) -- [#675](https://github.com/request/request/pull/675) Checking for SSL fault on connection before reading SSL properties (@VRMink) -- [#989](https://github.com/request/request/pull/989) Added allowRedirect function. Should return true if redirect is allowed or false otherwise (@doronin) -- [#1025](https://github.com/request/request/pull/1025) [fixes #1023] Set self._ended to true once response has ended (@mridgway) -- [#1020](https://github.com/request/request/pull/1020) Add back removed debug metadata (@FredKSchott) -- [#1008](https://github.com/request/request/pull/1008) Moving to module instead of cutomer buffer concatenation. (@mikeal) -- [#770](https://github.com/request/request/pull/770) Added dependency badge for README file; (@timgluz, @mafintosh, @lalitkapoor, @stash, @bobyrizov) -- [#1016](https://github.com/request/request/pull/1016) toJSON no longer results in an infinite loop, returns simple objects (@FredKSchott) -- [#1018](https://github.com/request/request/pull/1018) Remove pre-0.4.4 HTTPS fix (@mmalecki) -- [#1006](https://github.com/request/request/pull/1006) Migrate to caseless, fixes #1001 (@mikeal) -- [#995](https://github.com/request/request/pull/995) Fix parsing array of objects (@sjonnet19) -- [#999](https://github.com/request/request/pull/999) Fix fallback for browserify for optional modules. (@eiriksm) -- [#996](https://github.com/request/request/pull/996) Wrong oauth signature when multiple same param keys exist [updated] (@bengl, @hyjin) - -### v2.40.0 (2014/08/06) -- [#992](https://github.com/request/request/pull/992) Fix security vulnerability. Update qs (@poeticninja) -- [#988](https://github.com/request/request/pull/988) “--” -> “—” (@upisfree) -- [#987](https://github.com/request/request/pull/987) Show optional modules as being loaded by the module that reqeusted them (@iarna) - -### v2.39.0 (2014/07/24) -- [#976](https://github.com/request/request/pull/976) Update README.md (@pvoznenko) - -### v2.38.0 (2014/07/22) -- [#952](https://github.com/request/request/pull/952) Adding support to client certificate with proxy use case (@ofirshaked) -- [#884](https://github.com/request/request/pull/884) Documented tough-cookie installation. (@wbyoung) -- [#935](https://github.com/request/request/pull/935) Correct repository url (@fritx) -- [#963](https://github.com/request/request/pull/963) Update changelog (@nylen) -- [#960](https://github.com/request/request/pull/960) Support gzip with encoding on node pre-v0.9.4 (@kevinoid) -- [#953](https://github.com/request/request/pull/953) Add async Content-Length computation when using form-data (@LoicMahieu) -- [#844](https://github.com/request/request/pull/844) Add support for HTTP[S]_PROXY environment variables. Fixes #595. (@jvmccarthy) -- [#946](https://github.com/request/request/pull/946) defaults: merge headers (@aj0strow) - -### v2.37.0 (2014/07/07) -- [#957](https://github.com/request/request/pull/957) Silence EventEmitter memory leak warning #311 (@watson) -- [#955](https://github.com/request/request/pull/955) check for content-length header before setting it in nextTick (@camilleanne) -- [#951](https://github.com/request/request/pull/951) Add support for gzip content decoding (@kevinoid) -- [#949](https://github.com/request/request/pull/949) Manually enter querystring in form option (@charlespwd) -- [#944](https://github.com/request/request/pull/944) Make request work with browserify (@eiriksm) -- [#943](https://github.com/request/request/pull/943) New mime module (@eiriksm) -- [#927](https://github.com/request/request/pull/927) Bump version of hawk dep. (@samccone) -- [#907](https://github.com/request/request/pull/907) append secureOptions to poolKey (@medovob) - -### v2.35.0 (2014/05/17) -- [#901](https://github.com/request/request/pull/901) Fixes #555 (@pigulla) -- [#897](https://github.com/request/request/pull/897) merge with default options (@vohof) -- [#891](https://github.com/request/request/pull/891) fixes 857 - options object is mutated by calling request (@lalitkapoor) -- [#869](https://github.com/request/request/pull/869) Pipefilter test (@tgohn) -- [#866](https://github.com/request/request/pull/866) Fix typo (@dandv) -- [#861](https://github.com/request/request/pull/861) Add support for RFC 6750 Bearer Tokens (@phedny) -- [#809](https://github.com/request/request/pull/809) upgrade tunnel-proxy to 0.4.0 (@ksato9700) -- [#850](https://github.com/request/request/pull/850) Fix word consistency in readme (@0xNobody) -- [#810](https://github.com/request/request/pull/810) add some exposition to mpu example in README.md (@mikermcneil) -- [#840](https://github.com/request/request/pull/840) improve error reporting for invalid protocols (@FND) -- [#821](https://github.com/request/request/pull/821) added secureOptions back (@nw) -- [#815](https://github.com/request/request/pull/815) Create changelog based on pull requests (@lalitkapoor) - -### v2.34.0 (2014/02/18) -- [#516](https://github.com/request/request/pull/516) UNIX Socket URL Support (@lyuzashi) -- [#801](https://github.com/request/request/pull/801) 794 ignore cookie parsing and domain errors (@lalitkapoor) -- [#802](https://github.com/request/request/pull/802) Added the Apache license to the package.json. (@keskival) -- [#793](https://github.com/request/request/pull/793) Adds content-length calculation when submitting forms using form-data li... (@Juul) -- [#785](https://github.com/request/request/pull/785) Provide ability to override content-type when `json` option used (@vvo) -- [#781](https://github.com/request/request/pull/781) simpler isReadStream function (@joaojeronimo) - -### v2.32.0 (2014/01/16) -- [#767](https://github.com/request/request/pull/767) Use tough-cookie CookieJar sync API (@stash) -- [#764](https://github.com/request/request/pull/764) Case-insensitive authentication scheme (@bobyrizov) -- [#763](https://github.com/request/request/pull/763) Upgrade tough-cookie to 0.10.0 (@stash) -- [#744](https://github.com/request/request/pull/744) Use Cookie.parse (@lalitkapoor) -- [#757](https://github.com/request/request/pull/757) require aws-sign2 (@mafintosh) - -### v2.31.0 (2014/01/08) -- [#645](https://github.com/request/request/pull/645) update twitter api url to v1.1 (@mick) -- [#746](https://github.com/request/request/pull/746) README: Markdown code highlight (@weakish) -- [#745](https://github.com/request/request/pull/745) updating setCookie example to make it clear that the callback is required (@emkay) -- [#742](https://github.com/request/request/pull/742) Add note about JSON output body type (@iansltx) -- [#741](https://github.com/request/request/pull/741) README example is using old cookie jar api (@emkay) -- [#736](https://github.com/request/request/pull/736) Fix callback arguments documentation (@mmalecki) - -### v2.30.0 (2013/12/13) -- [#732](https://github.com/request/request/pull/732) JSHINT: Creating global 'for' variable. Should be 'for (var ...'. (@Fritz-Lium) -- [#730](https://github.com/request/request/pull/730) better HTTP DIGEST support (@dai-shi) -- [#728](https://github.com/request/request/pull/728) Fix TypeError when calling request.cookie (@scarletmeow) - -### v2.29.0 (2013/12/06) -- [#727](https://github.com/request/request/pull/727) fix requester bug (@jchris) - -### v2.28.0 (2013/12/04) -- [#724](https://github.com/request/request/pull/724) README.md: add custom HTTP Headers example. (@tcort) -- [#719](https://github.com/request/request/pull/719) Made a comment gender neutral. (@unsetbit) -- [#715](https://github.com/request/request/pull/715) Request.multipart no longer crashes when header 'Content-type' present (@pastaclub) -- [#710](https://github.com/request/request/pull/710) Fixing listing in callback part of docs. (@lukasz-zak) -- [#696](https://github.com/request/request/pull/696) Edited README.md for formatting and clarity of phrasing (@Zearin) -- [#694](https://github.com/request/request/pull/694) Typo in README (@VRMink) -- [#690](https://github.com/request/request/pull/690) Handle blank password in basic auth. (@diversario) -- [#682](https://github.com/request/request/pull/682) Optional dependencies (@Turbo87) -- [#683](https://github.com/request/request/pull/683) Travis CI support (@Turbo87) -- [#674](https://github.com/request/request/pull/674) change cookie module,to tough-cookie.please check it . (@sxyizhiren) -- [#666](https://github.com/request/request/pull/666) make `ciphers` and `secureProtocol` to work in https request (@richarddong) -- [#656](https://github.com/request/request/pull/656) Test case for #304. (@diversario) -- [#662](https://github.com/request/request/pull/662) option.tunnel to explicitly disable tunneling (@seanmonstar) -- [#659](https://github.com/request/request/pull/659) fix failure when running with NODE_DEBUG=request, and a test for that (@jrgm) -- [#630](https://github.com/request/request/pull/630) Send random cnonce for HTTP Digest requests (@wprl) - -### v2.27.0 (2013/08/15) -- [#619](https://github.com/request/request/pull/619) decouple things a bit (@joaojeronimo) - -### v2.26.0 (2013/08/07) -- [#613](https://github.com/request/request/pull/613) Fixes #583, moved initialization of self.uri.pathname (@lexander) -- [#605](https://github.com/request/request/pull/605) Only include ":" + pass in Basic Auth if it's defined (fixes #602) (@bendrucker) - -### v2.24.0 (2013/07/23) -- [#596](https://github.com/request/request/pull/596) Global agent is being used when pool is specified (@Cauldrath) -- [#594](https://github.com/request/request/pull/594) Emit complete event when there is no callback (@RomainLK) -- [#601](https://github.com/request/request/pull/601) Fixed a small typo (@michalstanko) - -### v2.23.0 (2013/07/23) -- [#589](https://github.com/request/request/pull/589) Prevent setting headers after they are sent (@geek) -- [#587](https://github.com/request/request/pull/587) Global cookie jar disabled by default (@threepointone) - -### v2.22.0 (2013/07/05) -- [#544](https://github.com/request/request/pull/544) Update http-signature version. (@davidlehn) -- [#581](https://github.com/request/request/pull/581) Fix spelling of "ignoring." (@bigeasy) -- [#568](https://github.com/request/request/pull/568) use agentOptions to create agent when specified in request (@SamPlacette) -- [#564](https://github.com/request/request/pull/564) Fix redirections (@criloz) -- [#541](https://github.com/request/request/pull/541) The exported request function doesn't have an auth method (@tschaub) -- [#542](https://github.com/request/request/pull/542) Expose Request class (@regality) - -### v2.21.0 (2013/04/30) -- [#536](https://github.com/request/request/pull/536) Allow explicitly empty user field for basic authentication. (@mikeando) -- [#532](https://github.com/request/request/pull/532) fix typo (@fredericosilva) -- [#497](https://github.com/request/request/pull/497) Added redirect event (@Cauldrath) -- [#503](https://github.com/request/request/pull/503) Fix basic auth for passwords that contain colons (@tonistiigi) -- [#521](https://github.com/request/request/pull/521) Improving test-localAddress.js (@noway421) -- [#529](https://github.com/request/request/pull/529) dependencies versions bump (@jodaka) - -### v2.17.0 (2013/04/22) -- [#523](https://github.com/request/request/pull/523) Updating dependencies (@noway421) -- [#520](https://github.com/request/request/pull/520) Fixing test-tunnel.js (@noway421) -- [#519](https://github.com/request/request/pull/519) Update internal path state on post-creation QS changes (@jblebrun) -- [#510](https://github.com/request/request/pull/510) Add HTTP Signature support. (@davidlehn) -- [#502](https://github.com/request/request/pull/502) Fix POST (and probably other) requests that are retried after 401 Unauthorized (@nylen) -- [#508](https://github.com/request/request/pull/508) Honor the .strictSSL option when using proxies (tunnel-agent) (@jhs) -- [#512](https://github.com/request/request/pull/512) Make password optional to support the format: http://username@hostname/ (@pajato1) -- [#513](https://github.com/request/request/pull/513) add 'localAddress' support (@yyfrankyy) -- [#498](https://github.com/request/request/pull/498) Moving response emit above setHeaders on destination streams (@kenperkins) -- [#490](https://github.com/request/request/pull/490) Empty response body (3-rd argument) must be passed to callback as an empty string (@Olegas) -- [#479](https://github.com/request/request/pull/479) Changing so if Accept header is explicitly set, sending json does not ov... (@RoryH) -- [#475](https://github.com/request/request/pull/475) Use `unescape` from `querystring` (@shimaore) -- [#473](https://github.com/request/request/pull/473) V0.10 compat (@isaacs) -- [#471](https://github.com/request/request/pull/471) Using querystring library from visionmedia (@kbackowski) -- [#461](https://github.com/request/request/pull/461) Strip the UTF8 BOM from a UTF encoded response (@kppullin) -- [#460](https://github.com/request/request/pull/460) hawk 0.10.0 (@hueniverse) -- [#462](https://github.com/request/request/pull/462) if query params are empty, then request path shouldn't end with a '?' (merges cleanly now) (@jaipandya) -- [#456](https://github.com/request/request/pull/456) hawk 0.9.0 (@hueniverse) -- [#429](https://github.com/request/request/pull/429) Copy options before adding callback. (@nrn, @nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#454](https://github.com/request/request/pull/454) Destroy the response if present when destroying the request (clean merge) (@mafintosh) -- [#310](https://github.com/request/request/pull/310) Twitter Oauth Stuff Out of Date; Now Updated (@joemccann, @isaacs, @mscdex) -- [#413](https://github.com/request/request/pull/413) rename googledoodle.png to .jpg (@nfriedly, @youurayy, @jplock, @kapetan, @landeiro, @othiym23, @mmalecki) -- [#448](https://github.com/request/request/pull/448) Convenience method for PATCH (@mloar) -- [#444](https://github.com/request/request/pull/444) protect against double callbacks on error path (@spollack) -- [#433](https://github.com/request/request/pull/433) Added support for HTTPS cert & key (@mmalecki) -- [#430](https://github.com/request/request/pull/430) Respect specified {Host,host} headers, not just {host} (@andrewschaaf) -- [#415](https://github.com/request/request/pull/415) Fixed a typo. (@jerem) -- [#338](https://github.com/request/request/pull/338) Add more auth options, including digest support (@nylen) -- [#403](https://github.com/request/request/pull/403) Optimize environment lookup to happen once only (@mmalecki) -- [#398](https://github.com/request/request/pull/398) Add more reporting to tests (@mmalecki) -- [#388](https://github.com/request/request/pull/388) Ensure "safe" toJSON doesn't break EventEmitters (@othiym23) -- [#381](https://github.com/request/request/pull/381) Resolving "Invalid signature. Expected signature base string: " (@landeiro) -- [#380](https://github.com/request/request/pull/380) Fixes missing host header on retried request when using forever agent (@mac-) -- [#376](https://github.com/request/request/pull/376) Headers lost on redirect (@kapetan) -- [#375](https://github.com/request/request/pull/375) Fix for missing oauth_timestamp parameter (@jplock) -- [#374](https://github.com/request/request/pull/374) Correct Host header for proxy tunnel CONNECT (@youurayy) -- [#370](https://github.com/request/request/pull/370) Twitter reverse auth uses x_auth_mode not x_auth_type (@drudge) -- [#369](https://github.com/request/request/pull/369) Don't remove x_auth_mode for Twitter reverse auth (@drudge) -- [#344](https://github.com/request/request/pull/344) Make AWS auth signing find headers correctly (@nlf) -- [#363](https://github.com/request/request/pull/363) rfc3986 on base_uri, now passes tests (@jeffmarshall) -- [#362](https://github.com/request/request/pull/362) Running `rfc3986` on `base_uri` in `oauth.hmacsign` instead of just `encodeURIComponent` (@jeffmarshall) -- [#361](https://github.com/request/request/pull/361) Don't create a Content-Length header if we already have it set (@danjenkins) -- [#360](https://github.com/request/request/pull/360) Delete self._form along with everything else on redirect (@jgautier) -- [#355](https://github.com/request/request/pull/355) stop sending erroneous headers on redirected requests (@azylman) -- [#332](https://github.com/request/request/pull/332) Fix #296 - Only set Content-Type if body exists (@Marsup) -- [#343](https://github.com/request/request/pull/343) Allow AWS to work in more situations, added a note in the README on its usage (@nlf) -- [#320](https://github.com/request/request/pull/320) request.defaults() doesn't need to wrap jar() (@StuartHarris) -- [#322](https://github.com/request/request/pull/322) Fix + test for piped into request bumped into redirect. #321 (@alexindigo) -- [#326](https://github.com/request/request/pull/326) Do not try to remove listener from an undefined connection (@strk) -- [#318](https://github.com/request/request/pull/318) Pass servername to tunneling secure socket creation (@isaacs) -- [#317](https://github.com/request/request/pull/317) Workaround for #313 (@isaacs) -- [#293](https://github.com/request/request/pull/293) Allow parser errors to bubble up to request (@mscdex) -- [#290](https://github.com/request/request/pull/290) A test for #289 (@isaacs) -- [#280](https://github.com/request/request/pull/280) Like in node.js print options if NODE_DEBUG contains the word request (@Filirom1) -- [#207](https://github.com/request/request/pull/207) Fix #206 Change HTTP/HTTPS agent when redirecting between protocols (@isaacs) -- [#214](https://github.com/request/request/pull/214) documenting additional behavior of json option (@jphaas) -- [#272](https://github.com/request/request/pull/272) Boundary begins with CRLF? (@elspoono, @timshadel, @naholyr, @nanodocumet, @TehShrike) -- [#284](https://github.com/request/request/pull/284) Remove stray `console.log()` call in multipart generator. (@bcherry) -- [#241](https://github.com/request/request/pull/241) Composability updates suggested by issue #239 (@polotek) -- [#282](https://github.com/request/request/pull/282) OAuth Authorization header contains non-"oauth_" parameters (@jplock) -- [#279](https://github.com/request/request/pull/279) fix tests with boundary by injecting boundry from header (@benatkin) -- [#273](https://github.com/request/request/pull/273) Pipe back pressure issue (@mafintosh) -- [#268](https://github.com/request/request/pull/268) I'm not OCD seriously (@TehShrike) -- [#263](https://github.com/request/request/pull/263) Bug in OAuth key generation for sha1 (@nanodocumet) -- [#265](https://github.com/request/request/pull/265) uncaughtException when redirected to invalid URI (@naholyr) -- [#262](https://github.com/request/request/pull/262) JSON test should check for equality (@timshadel) -- [#261](https://github.com/request/request/pull/261) Setting 'pool' to 'false' does NOT disable Agent pooling (@timshadel) -- [#249](https://github.com/request/request/pull/249) Fix for the fix of your (closed) issue #89 where self.headers[content-length] is set to 0 for all methods (@sethbridges, @polotek, @zephrax, @jeromegn) -- [#255](https://github.com/request/request/pull/255) multipart allow body === '' ( the empty string ) (@Filirom1) -- [#260](https://github.com/request/request/pull/260) fixed just another leak of 'i' (@sreuter) -- [#246](https://github.com/request/request/pull/246) Fixing the set-cookie header (@jeromegn) -- [#243](https://github.com/request/request/pull/243) Dynamic boundary (@zephrax) -- [#240](https://github.com/request/request/pull/240) don't error when null is passed for options (@polotek) -- [#211](https://github.com/request/request/pull/211) Replace all occurrences of special chars in RFC3986 (@chriso) -- [#224](https://github.com/request/request/pull/224) Multipart content-type change (@janjongboom) -- [#217](https://github.com/request/request/pull/217) need to use Authorization (titlecase) header with Tumblr OAuth (@visnup) -- [#203](https://github.com/request/request/pull/203) Fix cookie and redirect bugs and add auth support for HTTPS tunnel (@milewise) -- [#199](https://github.com/request/request/pull/199) Tunnel (@isaacs) -- [#198](https://github.com/request/request/pull/198) Bugfix on forever usage of util.inherits (@isaacs) -- [#197](https://github.com/request/request/pull/197) Make ForeverAgent work with HTTPS (@isaacs) -- [#193](https://github.com/request/request/pull/193) Fixes GH-119 (@goatslacker) -- [#188](https://github.com/request/request/pull/188) Add abort support to the returned request (@itay) -- [#176](https://github.com/request/request/pull/176) Querystring option (@csainty) -- [#182](https://github.com/request/request/pull/182) Fix request.defaults to support (uri, options, callback) api (@twilson63) -- [#180](https://github.com/request/request/pull/180) Modified the post, put, head and del shortcuts to support uri optional param (@twilson63) -- [#179](https://github.com/request/request/pull/179) fix to add opts in .pipe(stream, opts) (@substack) -- [#177](https://github.com/request/request/pull/177) Issue #173 Support uri as first and optional config as second argument (@twilson63) -- [#170](https://github.com/request/request/pull/170) can't create a cookie in a wrapped request (defaults) (@fabianonunes) -- [#168](https://github.com/request/request/pull/168) Picking off an EasyFix by adding some missing mimetypes. (@serby) -- [#161](https://github.com/request/request/pull/161) Fix cookie jar/headers.cookie collision (#125) (@papandreou) -- [#162](https://github.com/request/request/pull/162) Fix issue #159 (@dpetukhov) -- [#90](https://github.com/request/request/pull/90) add option followAllRedirects to follow post/put redirects (@jroes) -- [#148](https://github.com/request/request/pull/148) Retry Agent (@thejh) -- [#146](https://github.com/request/request/pull/146) Multipart should respect content-type if previously set (@apeace) -- [#144](https://github.com/request/request/pull/144) added "form" option to readme (@petejkim) -- [#133](https://github.com/request/request/pull/133) Fixed cookies parsing (@afanasy) -- [#135](https://github.com/request/request/pull/135) host vs hostname (@iangreenleaf) -- [#132](https://github.com/request/request/pull/132) return the body as a Buffer when encoding is set to null (@jahewson) -- [#112](https://github.com/request/request/pull/112) Support using a custom http-like module (@jhs) -- [#104](https://github.com/request/request/pull/104) Cookie handling contains bugs (@janjongboom) -- [#121](https://github.com/request/request/pull/121) Another patch for cookie handling regression (@jhurliman) -- [#117](https://github.com/request/request/pull/117) Remove the global `i` (@3rd-Eden) -- [#110](https://github.com/request/request/pull/110) Update to Iris Couch URL (@jhs) -- [#86](https://github.com/request/request/pull/86) Can't post binary to multipart requests (@developmentseed) -- [#105](https://github.com/request/request/pull/105) added test for proxy option. (@dominictarr) -- [#102](https://github.com/request/request/pull/102) Implemented cookies - closes issue 82: https://github.com/mikeal/request/issues/82 (@alessioalex) -- [#97](https://github.com/request/request/pull/97) Typo in previous pull causes TypeError in non-0.5.11 versions (@isaacs) -- [#96](https://github.com/request/request/pull/96) Authless parsed url host support (@isaacs) -- [#81](https://github.com/request/request/pull/81) Enhance redirect handling (@danmactough) -- [#78](https://github.com/request/request/pull/78) Don't try to do strictSSL for non-ssl connections (@isaacs) -- [#76](https://github.com/request/request/pull/76) Bug when a request fails and a timeout is set (@Marsup) -- [#70](https://github.com/request/request/pull/70) add test script to package.json (@isaacs, @aheckmann) -- [#73](https://github.com/request/request/pull/73) Fix #71 Respect the strictSSL flag (@isaacs) -- [#69](https://github.com/request/request/pull/69) Flatten chunked requests properly (@isaacs) -- [#67](https://github.com/request/request/pull/67) fixed global variable leaks (@aheckmann) -- [#66](https://github.com/request/request/pull/66) Do not overwrite established content-type headers for read stream deliver (@voodootikigod) -- [#53](https://github.com/request/request/pull/53) Parse json: Issue #51 (@benatkin) -- [#45](https://github.com/request/request/pull/45) Added timeout option (@mbrevoort) -- [#35](https://github.com/request/request/pull/35) The "end" event isn't emitted for some responses (@voxpelli) -- [#31](https://github.com/request/request/pull/31) Error on piping a request to a destination (@tobowers) \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CONTRIBUTING.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CONTRIBUTING.md deleted file mode 100644 index 06b1968d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/CONTRIBUTING.md +++ /dev/null @@ -1,44 +0,0 @@ -# This is an OPEN Open Source Project - ------------------------------------------ - -## What? - -Individuals making significant and valuable contributions are given -commit-access to the project to contribute as they see fit. This project is -more like an open wiki than a standard guarded open source project. - -## Rules - -There are a few basic ground-rules for contributors: - -1. **No `--force` pushes** or modifying the Git history in any way. -1. **Non-master branches** ought to be used for ongoing work. -1. **External API changes and significant modifications** ought to be subject - to an **internal pull-request** to solicit feedback from other contributors. -1. Internal pull-requests to solicit feedback are *encouraged* for any other - non-trivial contribution but left to the discretion of the contributor. -1. For significant changes wait a full 24 hours before merging so that active - contributors who are distributed throughout the world have a chance to weigh - in. -1. Contributors should attempt to adhere to the prevailing code-style. -1. Run `npm test` locally before submitting your PR, to catch any easy to miss - style & testing issues. To diagnose test failures, there are two ways to - run a single test file: - - `node_modules/.bin/taper tests/test-file.js` - run using the default - [`taper`](https://github.com/nylen/taper) test reporter. - - `node tests/test-file.js` - view the raw - [tap](https://testanything.org/) output. - - -## Releases - -Declaring formal releases remains the prerogative of the project maintainer. - -## Changes to this arrangement - -This is an experiment and feedback is welcome! This document may also be -subject to pull-requests or changes by contributors where you believe you have -something valuable to add or change. - ------------------------------------------ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/README.md deleted file mode 100644 index 8530d105..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/README.md +++ /dev/null @@ -1,1059 +0,0 @@ - -# Request - Simplified HTTP client - -[![npm package](https://nodei.co/npm/request.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/request/) - -[![Build status](https://img.shields.io/travis/request/request.svg?style=flat-square)](https://travis-ci.org/request/request) -[![Coverage](https://img.shields.io/codecov/c/github/request/request.svg?style=flat-square)](https://codecov.io/github/request/request?branch=master) -[![Coverage](https://img.shields.io/coveralls/request/request.svg?style=flat-square)](https://coveralls.io/r/request/request) -[![Dependency Status](https://img.shields.io/david/request/request.svg?style=flat-square)](https://david-dm.org/request/request) -[![Gitter](https://img.shields.io/badge/gitter-join_chat-blue.svg?style=flat-square)](https://gitter.im/request/request?utm_source=badge) - - -## Super simple to use - -Request is designed to be the simplest way possible to make http calls. It supports HTTPS and follows redirects by default. - -```js -var request = require('request'); -request('http://www.google.com', function (error, response, body) { - if (!error && response.statusCode == 200) { - console.log(body) // Show the HTML for the Google homepage. - } -}) -``` - - -## Table of contents - -- [Streaming](#streaming) -- [Forms](#forms) -- [HTTP Authentication](#http-authentication) -- [Custom HTTP Headers](#custom-http-headers) -- [OAuth Signing](#oauth-signing) -- [Proxies](#proxies) -- [Unix Domain Sockets](#unix-domain-sockets) -- [TLS/SSL Protocol](#tlsssl-protocol) -- [Support for HAR 1.2](#support-for-har-12) -- [**All Available Options**](#requestoptions-callback) - -Request also offers [convenience methods](#convenience-methods) like -`request.defaults` and `request.post`, and there are -lots of [usage examples](#examples) and several -[debugging techniques](#debugging). - - ---- - - -## Streaming - -You can stream any response to a file stream. - -```js -request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png')) -``` - -You can also stream a file to a PUT or POST request. This method will also check the file extension against a mapping of file extensions to content-types (in this case `application/json`) and use the proper `content-type` in the PUT request (if the headers don’t already provide one). - -```js -fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json')) -``` - -Request can also `pipe` to itself. When doing so, `content-type` and `content-length` are preserved in the PUT headers. - -```js -request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png')) -``` - -Request emits a "response" event when a response is received. The `response` argument will be an instance of [http.IncomingMessage](http://nodejs.org/api/http.html#http_http_incomingmessage). - -```js -request - .get('http://google.com/img.png') - .on('response', function(response) { - console.log(response.statusCode) // 200 - console.log(response.headers['content-type']) // 'image/png' - }) - .pipe(request.put('http://mysite.com/img.png')) -``` - -To easily handle errors when streaming requests, listen to the `error` event before piping: - -```js -request - .get('http://mysite.com/doodle.png') - .on('error', function(err) { - console.log(err) - }) - .pipe(fs.createWriteStream('doodle.png')) -``` - -Now let’s get fancy. - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - if (req.method === 'PUT') { - req.pipe(request.put('http://mysite.com/doodle.png')) - } else if (req.method === 'GET' || req.method === 'HEAD') { - request.get('http://mysite.com/doodle.png').pipe(resp) - } - } -}) -``` - -You can also `pipe()` from `http.ServerRequest` instances, as well as to `http.ServerResponse` instances. The HTTP method, headers, and entity-body data will be sent. Which means that, if you don't really care about security, you can do: - -```js -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - var x = request('http://mysite.com/doodle.png') - req.pipe(x) - x.pipe(resp) - } -}) -``` - -And since `pipe()` returns the destination stream in ≥ Node 0.5.x you can do one line proxying. :) - -```js -req.pipe(request('http://mysite.com/doodle.png')).pipe(resp) -``` - -Also, none of this new functionality conflicts with requests previous features, it just expands them. - -```js -var r = request.defaults({'proxy':'http://localproxy.com'}) - -http.createServer(function (req, resp) { - if (req.url === '/doodle.png') { - r.get('http://google.com/doodle.png').pipe(resp) - } -}) -``` - -You can still use intermediate proxies, the requests will still follow HTTP forwards, etc. - -[back to top](#table-of-contents) - - ---- - - -## Forms - -`request` supports `application/x-www-form-urlencoded` and `multipart/form-data` form uploads. For `multipart/related` refer to the `multipart` API. - - -#### application/x-www-form-urlencoded (URL-Encoded Forms) - -URL-encoded forms are simple. - -```js -request.post('http://service.com/upload', {form:{key:'value'}}) -// or -request.post('http://service.com/upload').form({key:'value'}) -// or -request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ }) -``` - - -#### multipart/form-data (Multipart Form Uploads) - -For `multipart/form-data` we use the [form-data](https://github.com/felixge/node-form-data) library by [@felixge](https://github.com/felixge). For the most cases, you can pass your upload form data via the `formData` option. - - -```js -var formData = { - // Pass a simple key-value pair - my_field: 'my_value', - // Pass data via Buffers - my_buffer: new Buffer([1, 2, 3]), - // Pass data via Streams - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), - // Pass multiple values /w an Array - attachments: [ - fs.createReadStream(__dirname + '/attachment1.jpg'), - fs.createReadStream(__dirname + '/attachment2.jpg') - ], - // Pass optional meta-data with an 'options' object with style: {value: DATA, options: OPTIONS} - // Use case: for some types of streams, you'll need to provide "file"-related information manually. - // See the `form-data` README for more information about options: https://github.com/felixge/node-form-data - custom_file: { - value: fs.createReadStream('/dev/urandom'), - options: { - filename: 'topsecret.jpg', - contentType: 'image/jpg' - } - } -}; -request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For advanced cases, you can access the form-data object itself via `r.form()`. This can be modified until the request is fired on the next cycle of the event-loop. (Note that this calling `form()` will clear the currently set form data for that request.) - -```js -// NOTE: Advanced use-case, for normal use see 'formData' usage above -var r = request.post('http://service.com/upload', function optionalCallback(err, httpResponse, body) {...}) -var form = r.form(); -form.append('my_field', 'my_value'); -form.append('my_buffer', new Buffer([1, 2, 3])); -form.append('custom_file', fs.createReadStream(__dirname + '/unicycle.jpg'), {filename: 'unicycle.jpg'}); -``` -See the [form-data README](https://github.com/felixge/node-form-data) for more information & examples. - - -#### multipart/related - -Some variations in different HTTP implementations require a newline/CRLF before, after, or both before and after the boundary of a `multipart/related` request (using the multipart option). This has been observed in the .NET WebAPI version 4.0. You can turn on a boundary preambleCRLF or postamble by passing them as `true` to your request options. - -```js - request({ - method: 'PUT', - preambleCRLF: true, - postambleCRLF: true, - uri: 'http://service.com/upload', - multipart: [ - { - 'content-type': 'application/json' - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' }, - { body: fs.createReadStream('image.png') } - ], - // alternatively pass an object containing additional options - multipart: { - chunked: false, - data: [ - { - 'content-type': 'application/json', - body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - }, - { body: 'I am an attachment' } - ] - } - }, - function (error, response, body) { - if (error) { - return console.error('upload failed:', error); - } - console.log('Upload successful! Server responded with:', body); - }) -``` - -[back to top](#table-of-contents) - - ---- - - -## HTTP Authentication - -```js -request.get('http://some.server.com/').auth('username', 'password', false); -// or -request.get('http://some.server.com/', { - 'auth': { - 'user': 'username', - 'pass': 'password', - 'sendImmediately': false - } -}); -// or -request.get('http://some.server.com/').auth(null, null, true, 'bearerToken'); -// or -request.get('http://some.server.com/', { - 'auth': { - 'bearer': 'bearerToken' - } -}); -``` - -If passed as an option, `auth` should be a hash containing values: - -- `user` || `username` -- `pass` || `password` -- `sendImmediately` (optional) -- `bearer` (optional) - -The method form takes parameters -`auth(username, password, sendImmediately, bearer)`. - -`sendImmediately` defaults to `true`, which causes a basic or bearer -authentication header to be sent. If `sendImmediately` is `false`, then -`request` will retry with a proper authentication header after receiving a -`401` response from the server (which must contain a `WWW-Authenticate` header -indicating the required authentication method). - -Note that you can also specify basic authentication using the URL itself, as -detailed in [RFC 1738](http://www.ietf.org/rfc/rfc1738.txt). Simply pass the -`user:password` before the host with an `@` sign: - -```js -var username = 'username', - password = 'password', - url = 'http://' + username + ':' + password + '@some.server.com'; - -request({url: url}, function (error, response, body) { - // Do more stuff with 'body' here -}); -``` - -Digest authentication is supported, but it only works with `sendImmediately` -set to `false`; otherwise `request` will send basic authentication on the -initial request, which will probably cause the request to fail. - -Bearer authentication is supported, and is activated when the `bearer` value is -available. The value may be either a `String` or a `Function` returning a -`String`. Using a function to supply the bearer token is particularly useful if -used in conjuction with `defaults` to allow a single function to supply the -last known token at the time of sending a request, or to compute one on the fly. - -[back to top](#table-of-contents) - - ---- - - -## Custom HTTP Headers - -HTTP Headers, such as `User-Agent`, can be set in the `options` object. -In the example below, we call the github API to find out the number -of stars and forks for the request repository. This requires a -custom `User-Agent` header as well as https. - -```js -var request = require('request'); - -var options = { - url: 'https://api.github.com/repos/request/request', - headers: { - 'User-Agent': 'request' - } -}; - -function callback(error, response, body) { - if (!error && response.statusCode == 200) { - var info = JSON.parse(body); - console.log(info.stargazers_count + " Stars"); - console.log(info.forks_count + " Forks"); - } -} - -request(options, callback); -``` - -[back to top](#table-of-contents) - - ---- - - -## OAuth Signing - -[OAuth version 1.0](https://tools.ietf.org/html/rfc5849) is supported. The -default signing algorithm is -[HMAC-SHA1](https://tools.ietf.org/html/rfc5849#section-3.4.2): - -```js -// OAuth1.0 - 3-legged server side flow (Twitter example) -// step 1 -var qs = require('querystring') - , oauth = - { callback: 'http://mysite.com/callback/' - , consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - } - , url = 'https://api.twitter.com/oauth/request_token' - ; -request.post({url:url, oauth:oauth}, function (e, r, body) { - // Ideally, you would take the body in the response - // and construct a URL that a user clicks on (like a sign in button). - // The verifier is only available in the response after a user has - // verified with twitter that they are authorizing your app. - - // step 2 - var req_data = qs.parse(body) - var uri = 'https://api.twitter.com/oauth/authenticate' - + '?' + qs.stringify({oauth_token: req_data.oauth_token}) - // redirect the user to the authorize uri - - // step 3 - // after the user is redirected back to your server - var auth_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: auth_data.oauth_token - , token_secret: req_data.oauth_token_secret - , verifier: auth_data.oauth_verifier - } - , url = 'https://api.twitter.com/oauth/access_token' - ; - request.post({url:url, oauth:oauth}, function (e, r, body) { - // ready to make signed requests on behalf of the user - var perm_data = qs.parse(body) - , oauth = - { consumer_key: CONSUMER_KEY - , consumer_secret: CONSUMER_SECRET - , token: perm_data.oauth_token - , token_secret: perm_data.oauth_token_secret - } - , url = 'https://api.twitter.com/1.1/users/show.json' - , qs = - { screen_name: perm_data.screen_name - , user_id: perm_data.user_id - } - ; - request.get({url:url, oauth:oauth, qs:qs, json:true}, function (e, r, user) { - console.log(user) - }) - }) -}) -``` - -For [RSA-SHA1 signing](https://tools.ietf.org/html/rfc5849#section-3.4.3), make -the following changes to the OAuth options object: -* Pass `signature_method : 'RSA-SHA1'` -* Instead of `consumer_secret`, specify a `private_key` string in - [PEM format](http://how2ssl.com/articles/working_with_pem_files/) - -For [PLAINTEXT signing](http://oauth.net/core/1.0/#anchor22), make -the following changes to the OAuth options object: -* Pass `signature_method : 'PLAINTEXT'` - -To send OAuth parameters via query params or in a post body as described in The -[Consumer Request Parameters](http://oauth.net/core/1.0/#consumer_req_param) -section of the oauth1 spec: -* Pass `transport_method : 'query'` or `transport_method : 'body'` in the OAuth - options object. -* `transport_method` defaults to `'header'` - -To use [Request Body Hash](https://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html) you can either -* Manually generate the body hash and pass it as a string `body_hash: '...'` -* Automatically generate the body hash by passing `body_hash: true` - -[back to top](#table-of-contents) - - ---- - - -## Proxies - -If you specify a `proxy` option, then the request (and any subsequent -redirects) will be sent via a connection to the proxy server. - -If your endpoint is an `https` url, and you are using a proxy, then -request will send a `CONNECT` request to the proxy server *first*, and -then use the supplied connection to connect to the endpoint. - -That is, first it will make a request like: - -``` -HTTP/1.1 CONNECT endpoint-server.com:80 -Host: proxy-server.com -User-Agent: whatever user agent you specify -``` - -and then the proxy server make a TCP connection to `endpoint-server` -on port `80`, and return a response that looks like: - -``` -HTTP/1.1 200 OK -``` - -At this point, the connection is left open, and the client is -communicating directly with the `endpoint-server.com` machine. - -See [the wikipedia page on HTTP Tunneling](http://en.wikipedia.org/wiki/HTTP_tunnel) -for more information. - -By default, when proxying `http` traffic, request will simply make a -standard proxied `http` request. This is done by making the `url` -section of the initial line of the request a fully qualified url to -the endpoint. - -For example, it will make a single request that looks like: - -``` -HTTP/1.1 GET http://endpoint-server.com/some-url -Host: proxy-server.com -Other-Headers: all go here - -request body or whatever -``` - -Because a pure "http over http" tunnel offers no additional security -or other features, it is generally simpler to go with a -straightforward HTTP proxy in this case. However, if you would like -to force a tunneling proxy, you may set the `tunnel` option to `true`. - -You can also make a standard proxied `http` request by explicitly setting -`tunnel : false`, but **note that this will allow the proxy to see the traffic -to/from the destination server**. - -If you are using a tunneling proxy, you may set the -`proxyHeaderWhiteList` to share certain headers with the proxy. - -You can also set the `proxyHeaderExclusiveList` to share certain -headers only with the proxy and not with destination host. - -By default, this set is: - -``` -accept -accept-charset -accept-encoding -accept-language -accept-ranges -cache-control -content-encoding -content-language -content-length -content-location -content-md5 -content-range -content-type -connection -date -expect -max-forwards -pragma -proxy-authorization -referer -te -transfer-encoding -user-agent -via -``` - -Note that, when using a tunneling proxy, the `proxy-authorization` -header and any headers from custom `proxyHeaderExclusiveList` are -*never* sent to the endpoint server, but only to the proxy server. - - -### Controlling proxy behaviour using environment variables - -The following environment variables are respected by `request`: - - * `HTTP_PROXY` / `http_proxy` - * `HTTPS_PROXY` / `https_proxy` - * `NO_PROXY` / `no_proxy` - -When `HTTP_PROXY` / `http_proxy` are set, they will be used to proxy non-SSL requests that do not have an explicit `proxy` configuration option present. Similarly, `HTTPS_PROXY` / `https_proxy` will be respected for SSL requests that do not have an explicit `proxy` configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the `proxy` configuration option. Furthermore, the `proxy` configuration option can be explicitly set to false / null to opt out of proxying altogether for that request. - -`request` is also aware of the `NO_PROXY`/`no_proxy` environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to `*` to opt out of the implicit proxy configuration of the other environment variables. - -Here's some examples of valid `no_proxy` values: - - * `google.com` - don't proxy HTTP/HTTPS requests to Google. - * `google.com:443` - don't proxy HTTPS requests to Google, but *do* proxy HTTP requests to Google. - * `google.com:443, yahoo.com:80` - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo! - * `*` - ignore `https_proxy`/`http_proxy` environment variables altogether. - -[back to top](#table-of-contents) - - ---- - - -## UNIX Domain Sockets - -`request` supports making requests to [UNIX Domain Sockets](http://en.wikipedia.org/wiki/Unix_domain_socket). To make one, use the following URL scheme: - -```js -/* Pattern */ 'http://unix:SOCKET:PATH' -/* Example */ request.get('http://unix:/absolute/path/to/unix.socket:/request/path') -``` - -Note: The `SOCKET` path is assumed to be absolute to the root of the host file system. - -[back to top](#table-of-contents) - - ---- - - -## TLS/SSL Protocol - -TLS/SSL Protocol options, such as `cert`, `key` and `passphrase`, can be -set directly in `options` object, in the `agentOptions` property of the `options` object, or even in `https.globalAgent.options`. Keep in mind that, although `agentOptions` allows for a slightly wider range of configurations, the recommendend way is via `options` object directly, as using `agentOptions` or `https.globalAgent.options` would not be applied in the same way in proxied environments (as data travels through a TLS connection instead of an http/https agent). - -```js -var fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , caFile = path.resolve(__dirname, 'ssl/ca.cert.pem') - , request = require('request'); - -var options = { - url: 'https://api.some-server.com/', - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - passphrase: 'password', - ca: fs.readFileSync(caFile) - } -}; - -request.get(options); -``` - -### Using `options.agentOptions` - -In the example below, we call an API requires client side SSL certificate -(in PEM format) with passphrase protected private key (in PEM format) and disable the SSLv3 protocol: - -```js -var fs = require('fs') - , path = require('path') - , certFile = path.resolve(__dirname, 'ssl/client.crt') - , keyFile = path.resolve(__dirname, 'ssl/client.key') - , request = require('request'); - -var options = { - url: 'https://api.some-server.com/', - agentOptions: { - cert: fs.readFileSync(certFile), - key: fs.readFileSync(keyFile), - // Or use `pfx` property replacing `cert` and `key` when using private key, certificate and CA certs in PFX or PKCS12 format: - // pfx: fs.readFileSync(pfxFilePath), - passphrase: 'password', - securityOptions: 'SSL_OP_NO_SSLv3' - } -}; - -request.get(options); -``` - -It is able to force using SSLv3 only by specifying `secureProtocol`: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - secureProtocol: 'SSLv3_method' - } -}); -``` - -It is possible to accept other certificates than those signed by generally allowed Certificate Authorities (CAs). -This can be useful, for example, when using self-signed certificates. -To allow a different certificate, you can specify the signing CA by adding the contents of the CA's certificate file to the `agentOptions`: - -```js -request.get({ - url: 'https://api.some-server.com/', - agentOptions: { - ca: fs.readFileSync('ca.cert.pem') - } -}); -``` - -[back to top](#table-of-contents) - - ---- - -## Support for HAR 1.2 - -The `options.har` property will override the values: `url`, `method`, `qs`, `headers`, `form`, `formData`, `body`, `json`, as well as construct multipart data and read files from disk when `request.postData.params[].fileName` is present without a matching `value`. - -a validation step will check if the HAR Request format matches the latest spec (v1.2) and will skip parsing if not matching. - -```js - var request = require('request') - request({ - // will be ignored - method: 'GET' - uri: 'http://www.google.com', - - // HTTP Archive Request Object - har: { - url: 'http://www.mockbin.com/har' - method: 'POST', - headers: [ - { - name: 'content-type', - value: 'application/x-www-form-urlencoded' - } - ], - postData: { - mimeType: 'application/x-www-form-urlencoded', - params: [ - { - name: 'foo', - value: 'bar' - }, - { - name: 'hello', - value: 'world' - } - ] - } - } - }) - - // a POST request will be sent to http://www.mockbin.com - // with body an application/x-www-form-urlencoded body: - // foo=bar&hello=world -``` - -[back to top](#table-of-contents) - - ---- - -## request(options, callback) - -The first argument can be either a `url` or an `options` object. The only required option is `uri`; all others are optional. - -- `uri` || `url` - fully qualified uri or a parsed url object from `url.parse()` -- `baseUrl` - fully qualified uri string used as the base url. Most useful with `request.defaults`, for example when you want to do many requests to the same domain. If `baseUrl` is `https://example.com/api/`, then requesting `/end/point?test=true` will fetch `https://example.com/api/end/point?test=true`. When `baseUrl` is given, `uri` must also be a string. -- `method` - http method (default: `"GET"`) -- `headers` - http headers (default: `{}`) - ---- - -- `qs` - object containing querystring values to be appended to the `uri` -- `qsParseOptions` - object containing options to pass to the [qs.parse](https://github.com/hapijs/qs#parsing-objects) method. Alternatively pass options to the [querystring.parse](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}` -- `qsStringifyOptions` - object containing options to pass to the [qs.stringify](https://github.com/hapijs/qs#stringifying) method. Alternatively pass options to the [querystring.stringify](https://nodejs.org/docs/v0.12.0/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) method using this format `{sep:';', eq:':', options:{}}`. For example, to change the way arrays are converted to query strings using the `qs` module pass the `arrayFormat` option with one of `indices|brackets|repeat` -- `useQuerystring` - If true, use `querystring` to stringify and parse - querystrings, otherwise use `qs` (default: `false`). Set this option to - `true` if you need arrays to be serialized as `foo=bar&foo=baz` instead of the - default `foo[0]=bar&foo[1]=baz`. - ---- - -- `body` - entity body for PATCH, POST and PUT requests. Must be a `Buffer` or `String`, unless `json` is `true`. If `json` is `true`, then `body` must be a JSON-serializable object. -- `form` - when passed an object or a querystring, this sets `body` to a querystring representation of value, and adds `Content-type: application/x-www-form-urlencoded` header. When passed no options, a `FormData` instance is returned (and is piped to request). See "Forms" section above. -- `formData` - Data to pass for a `multipart/form-data` request. See - [Forms](#forms) section above. -- `multipart` - array of objects which contain their own headers and `body` - attributes. Sends a `multipart/related` request. See [Forms](#forms) section - above. - - Alternatively you can pass in an object `{chunked: false, data: []}` where - `chunked` is used to specify whether the request is sent in - [chunked transfer encoding](https://en.wikipedia.org/wiki/Chunked_transfer_encoding) - In non-chunked requests, data items with body streams are not allowed. -- `preambleCRLF` - append a newline/CRLF before the boundary of your `multipart/form-data` request. -- `postambleCRLF` - append a newline/CRLF at the end of the boundary of your `multipart/form-data` request. -- `json` - sets `body` but to JSON representation of value and adds `Content-type: application/json` header. Additionally, parses the response body as JSON. -- `jsonReviver` - a [reviver function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) that will be passed to `JSON.parse()` when parsing a JSON response body. - ---- - -- `auth` - A hash containing values `user` || `username`, `pass` || `password`, and `sendImmediately` (optional). See documentation above. -- `oauth` - Options for OAuth HMAC-SHA1 signing. See documentation above. -- `hawk` - Options for [Hawk signing](https://github.com/hueniverse/hawk). The `credentials` key must contain the necessary signing info, [see hawk docs for details](https://github.com/hueniverse/hawk#usage-example). -- `aws` - `object` containing AWS signing information. Should have the properties `key`, `secret`. Also requires the property `bucket`, unless you’re specifying your `bucket` as part of the path, or the request doesn’t use a bucket (i.e. GET Services) -- `httpSignature` - Options for the [HTTP Signature Scheme](https://github.com/joyent/node-http-signature/blob/master/http_signing.md) using [Joyent's library](https://github.com/joyent/node-http-signature). The `keyId` and `key` properties must be specified. See the docs for other options. - ---- - -- `followRedirect` - follow HTTP 3xx responses as redirects (default: `true`). This property can also be implemented as function which gets `response` object as a single argument and should return `true` if redirects should continue or `false` otherwise. -- `followAllRedirects` - follow non-GET HTTP 3xx responses as redirects (default: `false`) -- `maxRedirects` - the maximum number of redirects to follow (default: `10`) -- `removeRefererHeader` - removes the referer header when a redirect happens (default: `false`). - ---- - -- `encoding` - Encoding to be used on `setEncoding` of response data. If `null`, the `body` is returned as a `Buffer`. Anything else **(including the default value of `undefined`)** will be passed as the [encoding](http://nodejs.org/api/buffer.html#buffer_buffer) parameter to `toString()` (meaning this is effectively `utf8` by default). -- `gzip` - If `true`, add an `Accept-Encoding` header to request compressed content encodings from the server (if not already present) and decode supported content encodings in the response. **Note:** Automatic decoding of the response content is performed on the body data returned through `request` (both through the `request` stream and passed to the callback function) but is not performed on the `response` stream (available from the `response` event) which is the unmodified `http.IncomingMessage` object which may contain compressed data. See example below. -- `jar` - If `true` and `tough-cookie` is installed, remember cookies for future use (or define your custom cookie jar; see examples section) - ---- - -- `pool` - An object describing which agents to use for the request. If this option is omitted the request will use the global agent (as long as [your options allow for it](request.js#L747)). Otherwise, request will search the pool for your custom agent. If no custom agent is found, a new agent will be created and added to the pool. - - A `maxSockets` property can also be provided on the `pool` object to set the max number of sockets for all agents created (ex: `pool: {maxSockets: Infinity}`). - - Note that if you are sending multiple requests in a loop and creating - multiple new `pool` objects, `maxSockets` will not work as intended. To - work around this, either use [`request.defaults`](#requestdefaultsoptions) - with your pool options or create the pool object with the `maxSockets` - property outside of the loop. -- `timeout` - Integer containing the number of milliseconds to wait for a - request to respond before aborting the request. Note that if the underlying - TCP connection cannot be established, the OS-wide TCP connection timeout will - overrule the `timeout` option ([the default in Linux is around 20 seconds](http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout)). -- `localAddress` - Local interface to bind for network connections. -- `proxy` - An HTTP proxy to be used. Supports proxy Auth with Basic Auth, identical to support for the `url` parameter (by embedding the auth info in the `uri`) -- `strictSSL` - If `true`, requires SSL certificates be valid. **Note:** to use your own certificate authority, you need to specify an agent that was created with that CA as an option. -- `agentOptions` - Object containing user agent options. See documentation above. **Note:** [see tls API doc for TLS/SSL options](http://nodejs.org/api/tls.html#tls_tls_connect_options_callback). -- `tunnel` - controls the behavior of - [HTTP `CONNECT` tunneling](https://en.wikipedia.org/wiki/HTTP_tunnel#HTTP_CONNECT_tunneling) - as follows: - - `undefined` (default) - `true` if the destination is `https` or a previous - request in the redirect chain used a tunneling proxy, `false` otherwise - - `true` - always tunnel to the destination by making a `CONNECT` request to - the proxy - - `false` - request the destination as a `GET` request. -- `proxyHeaderWhiteList` - A whitelist of headers to send to a - tunneling proxy. -- `proxyHeaderExclusiveList` - A whitelist of headers to send - exclusively to a tunneling proxy and not to destination. - ---- - -- `time` - If `true`, the request-response cycle (including all redirects) is timed at millisecond resolution, and the result provided on the response's `elapsedTime` property. - ---- - -- `har` - A [HAR 1.2 Request Object](http://www.softwareishard.com/blog/har-12-spec/#request), will be processed from HAR format into options overwriting matching values *(see the [HAR 1.2 section](#support-for-har-1.2) for details)* - -The callback argument gets 3 arguments: - -1. An `error` when applicable (usually from [`http.ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest) object) -2. An [`http.IncomingMessage`](http://nodejs.org/api/http.html#http_http_incomingmessage) object -3. The third is the `response` body (`String` or `Buffer`, or JSON object if the `json` option is supplied) - -[back to top](#table-of-contents) - - ---- - -## Convenience methods - -There are also shorthand methods for different HTTP METHODs and some other conveniences. - - -### request.defaults(options) - -This method **returns a wrapper** around the normal request API that defaults -to whatever options you pass to it. - -**Note:** `request.defaults()` **does not** modify the global request API; -instead, it **returns a wrapper** that has your default settings applied to it. - -**Note:** You can call `.defaults()` on the wrapper that is returned from -`request.defaults` to add/override defaults that were previously defaulted. - -For example: -```js -//requests using baseRequest() will set the 'x-token' header -var baseRequest = request.defaults({ - headers: {x-token: 'my-token'} -}) - -//requests using specialRequest() will include the 'x-token' header set in -//baseRequest and will also include the 'special' header -var specialRequest = baseRequest.defaults({ - headers: {special: 'special value'} -}) -``` - -### request.put - -Same as `request()`, but defaults to `method: "PUT"`. - -```js -request.put(url) -``` - -### request.patch - -Same as `request()`, but defaults to `method: "PATCH"`. - -```js -request.patch(url) -``` - -### request.post - -Same as `request()`, but defaults to `method: "POST"`. - -```js -request.post(url) -``` - -### request.head - -Same as `request()`, but defaults to `method: "HEAD"`. - -```js -request.head(url) -``` - -### request.del - -Same as `request()`, but defaults to `method: "DELETE"`. - -```js -request.del(url) -``` - -### request.get - -Same as `request()` (for uniformity). - -```js -request.get(url) -``` -### request.cookie - -Function that creates a new cookie. - -```js -request.cookie('key1=value1') -``` -### request.jar() - -Function that creates a new cookie jar. - -```js -request.jar() -``` - -[back to top](#table-of-contents) - - ---- - - -## Debugging - -There are at least three ways to debug the operation of `request`: - -1. Launch the node process like `NODE_DEBUG=request node script.js` - (`lib,request,otherlib` works too). - -2. Set `require('request').debug = true` at any time (this does the same thing - as #1). - -3. Use the [request-debug module](https://github.com/nylen/request-debug) to - view request and response headers and bodies. - -[back to top](#table-of-contents) - - ---- - - -## Examples: - -```js - var request = require('request') - , rand = Math.floor(Math.random()*100000000).toString() - ; - request( - { method: 'PUT' - , uri: 'http://mikeal.iriscouch.com/testjs/' + rand - , multipart: - [ { 'content-type': 'application/json' - , body: JSON.stringify({foo: 'bar', _attachments: {'message.txt': {follows: true, length: 18, 'content_type': 'text/plain' }}}) - } - , { body: 'I am an attachment' } - ] - } - , function (error, response, body) { - if(response.statusCode == 201){ - console.log('document saved as: http://mikeal.iriscouch.com/testjs/'+ rand) - } else { - console.log('error: '+ response.statusCode) - console.log(body) - } - } - ) -``` - -For backwards-compatibility, response compression is not supported by default. -To accept gzip-compressed responses, set the `gzip` option to `true`. Note -that the body data passed through `request` is automatically decompressed -while the response object is unmodified and will contain compressed data if -the server sent a compressed response. - -```js - var request = require('request') - request( - { method: 'GET' - , uri: 'http://www.google.com' - , gzip: true - } - , function (error, response, body) { - // body is the decompressed response body - console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity')) - console.log('the decoded data is: ' + body) - } - ).on('data', function(data) { - // decompressed data as it is received - console.log('decoded chunk: ' + data) - }) - .on('response', function(response) { - // unmodified http.IncomingMessage object - response.on('data', function(data) { - // compressed data as it is received - console.log('received ' + data.length + ' bytes of compressed data') - }) - }) -``` - -Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set `jar` to `true` (either in `defaults` or `options`) and install `tough-cookie`. - -```js -var request = request.defaults({jar: true}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie jar (instead of `request`’s global cookie jar), set `jar` to an instance of `request.jar()` (either in `defaults` or `options`) - -```js -var j = request.jar() -var request = request.defaults({jar:j}) -request('http://www.google.com', function () { - request('http://images.google.com') -}) -``` - -OR - -```js -var j = request.jar(); -var cookie = request.cookie('key1=value1'); -var url = 'http://www.google.com'; -j.setCookie(cookie, url); -request({url: url, jar: j}, function () { - request('http://images.google.com') -}) -``` - -To use a custom cookie store (such as a -[`FileCookieStore`](https://github.com/mitsuru/tough-cookie-filestore) -which supports saving to and restoring from JSON files), pass it as a parameter -to `request.jar()`: - -```js -var FileCookieStore = require('tough-cookie-filestore'); -// NOTE - currently the 'cookies.json' file must already exist! -var j = request.jar(new FileCookieStore('cookies.json')); -request = request.defaults({ jar : j }) -request('http://www.google.com', function() { - request('http://images.google.com') -}) -``` - -The cookie store must be a -[`tough-cookie`](https://github.com/goinstant/tough-cookie) -store and it must support synchronous operations; see the -[`CookieStore` API docs](https://github.com/goinstant/tough-cookie/#cookiestore-api) -for details. - -To inspect your cookie jar after a request: - -```js -var j = request.jar() -request({url: 'http://www.google.com', jar: j}, function () { - var cookie_string = j.getCookieString(uri); // "key1=value1; key2=value2; ..." - var cookies = j.getCookies(uri); - // [{key: 'key1', value: 'value1', domain: "www.google.com", ...}, ...] -}) -``` - -[back to top](#table-of-contents) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/disabled.appveyor.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/disabled.appveyor.yml deleted file mode 100644 index 238f3d69..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/disabled.appveyor.yml +++ /dev/null @@ -1,36 +0,0 @@ -# http://www.appveyor.com/docs/appveyor-yml - -# Fix line endings in Windows. (runs before repo cloning) -init: - - git config --global core.autocrlf input - -# Test against these versions of Node.js. -environment: - matrix: - - nodejs_version: "0.10" - - nodejs_version: "0.8" - - nodejs_version: "0.11" - -# Allow failing jobs for bleeding-edge Node.js versions. -matrix: - allow_failures: - - nodejs_version: "0.11" - -# Install scripts. (runs after repo cloning) -install: - # Get the latest stable version of Node 0.STABLE.latest - - ps: Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) - # Typical npm stuff. - - npm install - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - - ps: "npm test # PowerShell" # Pass comment to PS for easier debugging - - cmd: npm test - -# Don't actually build. -build: off - -# Set build version format here instead of in the admin panel. -version: "{build}" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/examples/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/examples/README.md deleted file mode 100644 index 526d71bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/examples/README.md +++ /dev/null @@ -1,115 +0,0 @@ - -# Authentication - -## OAuth - -### OAuth1.0 Refresh Token - -- http://oauth.googlecode.com/svn/spec/ext/session/1.0/drafts/1/spec.html#anchor4 -- https://developer.yahoo.com/oauth/guide/oauth-refreshaccesstoken.html - -```js -request.post('https://api.login.yahoo.com/oauth/v2/get_token', { - oauth: { - consumer_key: '...', - consumer_secret: '...', - token: '...', - token_secret: '...', - session_handle: '...' - } -}, function (err, res, body) { - var result = require('querystring').parse(body) - // assert.equal(typeof result, 'object') -}) -``` - -### OAuth2 Refresh Token - -- https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-6 - -```js -request.post('https://accounts.google.com/o/oauth2/token', { - form: { - grant_type: 'refresh_token', - client_id: '...', - client_secret: '...', - refresh_token: '...' - }, - json: true -}, function (err, res, body) { - // assert.equal(typeof body, 'object') -}) -``` - -# Multipart - -## multipart/form-data - -### Flickr Image Upload - -- https://www.flickr.com/services/api/upload.api.html - -```js -request.post('https://up.flickr.com/services/upload', { - oauth: { - consumer_key: '...', - consumer_secret: '...', - token: '...', - token_secret: '...' - }, - // all meta data should be included here for proper signing - qs: { - title: 'My cat is awesome', - description: 'Sent on ' + new Date(), - is_public: 1 - }, - // again the same meta data + the actual photo - formData: { - title: 'My cat is awesome', - description: 'Sent on ' + new Date(), - is_public: 1, - photo:fs.createReadStream('cat.png') - }, - json: true -}, function (err, res, body) { - // assert.equal(typeof body, 'object') -}) -``` - -# Streams - -## `POST` data - -Use Request as a Writable stream to easily `POST` Readable streams (like files, other HTTP requests, or otherwise). - -TL;DR: Pipe a Readable Stream onto Request via: - -``` -READABLE.pipe(request.post(URL)); -``` - -A more detailed example: - -```js -var fs = require('fs') - , path = require('path') - , http = require('http') - , request = require('request') - , TMP_FILE_PATH = path.join(path.sep, 'tmp', 'foo') -; - -// write a temporary file: -fs.writeFileSync(TMP_FILE_PATH, 'foo bar baz quk\n'); - -http.createServer(function(req, res) { - console.log('the server is receiving data!\n'); - req - .on('end', res.end.bind(res)) - .pipe(process.stdout) - ; -}).listen(3000).unref(); - -fs.createReadStream(TMP_FILE_PATH) - .pipe(request.post('http://127.0.0.1:3000')) -; -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/index.js deleted file mode 100755 index 3fe60017..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/index.js +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2010-2012 Mikeal Rogers -// -// 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. - -'use strict' - -var extend = require('extend') - , cookies = require('./lib/cookies') - , helpers = require('./lib/helpers') - -var isFunction = helpers.isFunction - , paramsHaveRequestBody = helpers.paramsHaveRequestBody - - -// organize params for patch, post, put, head, del -function initParams(uri, options, callback) { - if (typeof options === 'function') { - callback = options - } - - var params = {} - if (typeof options === 'object') { - extend(params, options, {uri: uri}) - } else if (typeof uri === 'string') { - extend(params, {uri: uri}) - } else { - extend(params, uri) - } - - params.callback = callback - return params -} - -function request (uri, options, callback) { - if (typeof uri === 'undefined') { - throw new Error('undefined is not a valid uri or options object.') - } - - var params = initParams(uri, options, callback) - - if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { - throw new Error('HTTP HEAD requests MUST NOT include a request body.') - } - - return new request.Request(params) -} - -function verbFunc (verb) { - var method = verb === 'del' ? 'DELETE' : verb.toUpperCase() - return function (uri, options, callback) { - var params = initParams(uri, options, callback) - params.method = method - return request(params, params.callback) - } -} - -// define like this to please codeintel/intellisense IDEs -request.get = verbFunc('get') -request.head = verbFunc('head') -request.post = verbFunc('post') -request.put = verbFunc('put') -request.patch = verbFunc('patch') -request.del = verbFunc('del') - -request.jar = function (store) { - return cookies.jar(store) -} - -request.cookie = function (str) { - return cookies.parse(str) -} - -function wrapRequestMethod (method, options, requester, verb) { - - return function (uri, opts, callback) { - var params = initParams(uri, opts, callback) - - var target = {} - extend(true, target, options, params) - - if (verb) { - target.method = (verb === 'del' ? 'DELETE' : verb.toUpperCase()) - } - - if (isFunction(requester)) { - method = requester - } - - return method(target, target.callback) - } -} - -request.defaults = function (options, requester) { - var self = this - - if (typeof options === 'function') { - requester = options - options = {} - } - - var defaults = wrapRequestMethod(self, options, requester) - - var verbs = ['get', 'head', 'post', 'put', 'patch', 'del'] - verbs.forEach(function(verb) { - defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) - }) - - defaults.cookie = wrapRequestMethod(self.cookie, options, requester) - defaults.jar = self.jar - defaults.defaults = self.defaults - return defaults -} - -request.forever = function (agentOptions, optionsArg) { - var options = {} - if (optionsArg) { - extend(options, optionsArg) - } - if (agentOptions) { - options.agentOptions = agentOptions - } - - options.forever = true - return request.defaults(options) -} - -// Exports - -module.exports = request -request.Request = require('./request') -request.initParams = initParams - -// Backwards compatibility for request.debug -Object.defineProperty(request, 'debug', { - enumerable : true, - get : function() { - return request.Request.debug - }, - set : function(debug) { - request.Request.debug = debug - } -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/auth.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/auth.js deleted file mode 100644 index 1be1f425..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/auth.js +++ /dev/null @@ -1,153 +0,0 @@ -'use strict' - -var caseless = require('caseless') - , uuid = require('node-uuid') - , helpers = require('./helpers') - -var md5 = helpers.md5 - , toBase64 = helpers.toBase64 - - -function Auth (request) { - // define all public properties here - this.request = request - this.hasAuth = false - this.sentAuth = false - this.bearerToken = null - this.user = null - this.pass = null -} - -Auth.prototype.basic = function (user, pass, sendImmediately) { - var self = this - if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { - self.request.emit('error', new Error('auth() received invalid user or password')) - } - self.user = user - self.pass = pass - self.hasAuth = true - var header = user + ':' + (pass || '') - if (sendImmediately || typeof sendImmediately === 'undefined') { - var authHeader = 'Basic ' + toBase64(header) - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.bearer = function (bearer, sendImmediately) { - var self = this - self.bearerToken = bearer - self.hasAuth = true - if (sendImmediately || typeof sendImmediately === 'undefined') { - if (typeof bearer === 'function') { - bearer = bearer() - } - var authHeader = 'Bearer ' + (bearer || '') - self.sentAuth = true - return authHeader - } -} - -Auth.prototype.digest = function (method, path, authHeader) { - // TODO: More complete implementation of RFC 2617. - // - check challenge.algorithm - // - support algorithm="MD5-sess" - // - handle challenge.domain - // - support qop="auth-int" only - // - handle Authentication-Info (not necessarily?) - // - check challenge.stale (not necessarily?) - // - increase nc (not necessarily?) - // For reference: - // http://tools.ietf.org/html/rfc2617#section-3 - // https://github.com/bagder/curl/blob/master/lib/http_digest.c - - var self = this - - var challenge = {} - var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi - for (;;) { - var match = re.exec(authHeader) - if (!match) { - break - } - challenge[match[1]] = match[2] || match[3] - } - - var ha1 = md5(self.user + ':' + challenge.realm + ':' + self.pass) - var ha2 = md5(method + ':' + path) - var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' - var nc = qop && '00000001' - var cnonce = qop && uuid().replace(/-/g, '') - var digestResponse = qop - ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) - : md5(ha1 + ':' + challenge.nonce + ':' + ha2) - var authValues = { - username: self.user, - realm: challenge.realm, - nonce: challenge.nonce, - uri: path, - qop: qop, - response: digestResponse, - nc: nc, - cnonce: cnonce, - algorithm: challenge.algorithm, - opaque: challenge.opaque - } - - authHeader = [] - for (var k in authValues) { - if (authValues[k]) { - if (k === 'qop' || k === 'nc' || k === 'algorithm') { - authHeader.push(k + '=' + authValues[k]) - } else { - authHeader.push(k + '="' + authValues[k] + '"') - } - } - } - authHeader = 'Digest ' + authHeader.join(', ') - self.sentAuth = true - return authHeader -} - -Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { - var self = this - , request = self.request - - var authHeader - if (bearer === undefined && user === undefined) { - self.request.emit('error', new Error('no auth mechanism defined')) - } else if (bearer !== undefined) { - authHeader = self.bearer(bearer, sendImmediately) - } else { - authHeader = self.basic(user, pass, sendImmediately) - } - if (authHeader) { - request.setHeader('authorization', authHeader) - } -} - -Auth.prototype.onResponse = function (response) { - var self = this - , request = self.request - - if (!self.hasAuth || self.sentAuth) { return null } - - var c = caseless(response.headers) - - var authHeader = c.get('www-authenticate') - var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() - request.debug('reauth', authVerb) - - switch (authVerb) { - case 'basic': - return self.basic(self.user, self.pass, true) - - case 'bearer': - return self.bearer(self.bearerToken, true) - - case 'digest': - return self.digest(request.method, request.path, authHeader) - } -} - -exports.Auth = Auth diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/cookies.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/cookies.js deleted file mode 100644 index adde7c60..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/cookies.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -var tough = require('tough-cookie') - -var Cookie = tough.Cookie - , CookieJar = tough.CookieJar - - -exports.parse = function(str) { - if (str && str.uri) { - str = str.uri - } - if (typeof str !== 'string') { - throw new Error('The cookie function only accepts STRING as param') - } - return Cookie.parse(str) -} - -// Adapt the sometimes-Async api of tough.CookieJar to our requirements -function RequestJar(store) { - var self = this - self._jar = new CookieJar(store) -} -RequestJar.prototype.setCookie = function(cookieOrStr, uri, options) { - var self = this - return self._jar.setCookieSync(cookieOrStr, uri, options || {}) -} -RequestJar.prototype.getCookieString = function(uri) { - var self = this - return self._jar.getCookieStringSync(uri) -} -RequestJar.prototype.getCookies = function(uri) { - var self = this - return self._jar.getCookiesSync(uri) -} - -exports.jar = function(store) { - return new RequestJar(store) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/getProxyFromURI.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/getProxyFromURI.js deleted file mode 100644 index c2013a6e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/getProxyFromURI.js +++ /dev/null @@ -1,79 +0,0 @@ -'use strict' - -function formatHostname(hostname) { - // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' - return hostname.replace(/^\.*/, '.').toLowerCase() -} - -function parseNoProxyZone(zone) { - zone = zone.trim().toLowerCase() - - var zoneParts = zone.split(':', 2) - , zoneHost = formatHostname(zoneParts[0]) - , zonePort = zoneParts[1] - , hasPort = zone.indexOf(':') > -1 - - return {hostname: zoneHost, port: zonePort, hasPort: hasPort} -} - -function uriInNoProxy(uri, noProxy) { - var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') - , hostname = formatHostname(uri.hostname) - , noProxyList = noProxy.split(',') - - // iterate through the noProxyList until it finds a match. - return noProxyList.map(parseNoProxyZone).some(function(noProxyZone) { - var isMatchedAt = hostname.indexOf(noProxyZone.hostname) - , hostnameMatched = ( - isMatchedAt > -1 && - (isMatchedAt === hostname.length - noProxyZone.hostname.length) - ) - - if (noProxyZone.hasPort) { - return (port === noProxyZone.port) && hostnameMatched - } - - return hostnameMatched - }) -} - -function getProxyFromURI(uri) { - // Decide the proper request proxy to use based on the request URI object and the - // environmental variables (NO_PROXY, HTTP_PROXY, etc.) - // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) - - var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' - - // if the noProxy is a wildcard then return null - - if (noProxy === '*') { - return null - } - - // if the noProxy is not empty and the uri is found return null - - if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { - return null - } - - // Check for HTTP or HTTPS Proxy in environment Else default to null - - if (uri.protocol === 'http:') { - return process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - if (uri.protocol === 'https:') { - return process.env.HTTPS_PROXY || - process.env.https_proxy || - process.env.HTTP_PROXY || - process.env.http_proxy || null - } - - // if none of that works, return null - // (What uri protocol are you using then?) - - return null -} - -module.exports = getProxyFromURI diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/har.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/har.js deleted file mode 100644 index 83453a32..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/har.js +++ /dev/null @@ -1,205 +0,0 @@ -'use strict' - -var fs = require('fs') -var qs = require('querystring') -var validate = require('har-validator') -var util = require('util') - -function Har (request) { - this.request = request -} - -Har.prototype.reducer = function (obj, pair) { - // new property ? - if (obj[pair.name] === undefined) { - obj[pair.name] = pair.value - return obj - } - - // existing? convert to array - var arr = [ - obj[pair.name], - pair.value - ] - - obj[pair.name] = arr - - return obj -} - -Har.prototype.prep = function (data) { - // construct utility properties - data.queryObj = {} - data.headersObj = {} - data.postData.jsonObj = false - data.postData.paramsObj = false - - // construct query objects - if (data.queryString && data.queryString.length) { - data.queryObj = data.queryString.reduce(this.reducer, {}) - } - - // construct headers objects - if (data.headers && data.headers.length) { - // loweCase header keys - data.headersObj = data.headers.reduceRight(function (headers, header) { - headers[header.name] = header.value - return headers - }, {}) - } - - // construct Cookie header - if (data.cookies && data.cookies.length) { - var cookies = data.cookies.map(function (cookie) { - return cookie.name + '=' + cookie.value - }) - - if (cookies.length) { - data.headersObj.cookie = cookies.join('; ') - } - } - - // prep body - switch (data.postData.mimeType) { - case 'multipart/mixed': - case 'multipart/related': - case 'multipart/form-data': - case 'multipart/alternative': - // reset values - data.postData.mimeType = 'multipart/form-data' - break - - case 'application/x-www-form-urlencoded': - if (!data.postData.params) { - data.postData.text = '' - } else { - data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) - - // always overwrite - data.postData.text = qs.stringify(data.postData.paramsObj) - } - break - - case 'text/json': - case 'text/x-json': - case 'application/json': - case 'application/x-json': - data.postData.mimeType = 'application/json' - - if (data.postData.text) { - try { - data.postData.jsonObj = JSON.parse(data.postData.text) - } catch (e) { - this.request.debug(e) - - // force back to text/plain - data.postData.mimeType = 'text/plain' - } - } - break - } - - return data -} - -Har.prototype.options = function (options) { - // skip if no har property defined - if (!options.har) { - return options - } - - var har = util._extend({}, options.har) - - // only process the first entry - if (har.log && har.log.entries) { - har = har.log.entries[0] - } - - // add optional properties to make validation successful - har.url = har.url || options.url || options.uri || options.baseUrl || '/' - har.httpVersion = har.httpVersion || 'HTTP/1.1' - har.queryString = har.queryString || [] - har.headers = har.headers || [] - har.cookies = har.cookies || [] - har.postData = har.postData || {} - har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' - - har.bodySize = 0 - har.headersSize = 0 - har.postData.size = 0 - - if (!validate.request(har)) { - return options - } - - // clean up and get some utility properties - var req = this.prep(har) - - // construct new options - if (req.url) { - options.url = req.url - } - - if (req.method) { - options.method = req.method - } - - if (Object.keys(req.queryObj).length) { - options.qs = req.queryObj - } - - if (Object.keys(req.headersObj).length) { - options.headers = req.headersObj - } - - switch (req.postData.mimeType) { - case 'application/x-www-form-urlencoded': - options.form = req.postData.paramsObj - break - - case 'application/json': - if (req.postData.jsonObj) { - options.body = req.postData.jsonObj - options.json = true - } - break - - case 'multipart/form-data': - options.formData = {} - - req.postData.params.forEach(function (param) { - var attachment = {} - - if (!param.fileName && !param.fileName && !param.contentType) { - options.formData[param.name] = param.value - return - } - - // attempt to read from disk! - if (param.fileName && !param.value) { - attachment.value = fs.createReadStream(param.fileName) - } else if (param.value) { - attachment.value = param.value - } - - if (param.fileName) { - attachment.options = { - filename: param.fileName, - contentType: param.contentType ? param.contentType : null - } - } - - options.formData[param.name] = attachment - }) - break - - default: - if (req.postData.text) { - options.body = req.postData.text - } - } - - return options -} - -exports.Har = Har diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/helpers.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/helpers.js deleted file mode 100644 index 5cc79da8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/helpers.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict' - -var jsonSafeStringify = require('json-stringify-safe') - , crypto = require('crypto') - -function deferMethod() { - if (typeof setImmediate === 'undefined') { - return process.nextTick - } - - return setImmediate -} - -function isFunction(value) { - return typeof value === 'function' -} - -function paramsHaveRequestBody(params) { - return ( - params.body || - params.requestBodyStream || - (params.json && typeof params.json !== 'boolean') || - params.multipart - ) -} - -function safeStringify (obj) { - var ret - try { - ret = JSON.stringify(obj) - } catch (e) { - ret = jsonSafeStringify(obj) - } - return ret -} - -function md5 (str) { - return crypto.createHash('md5').update(str).digest('hex') -} - -function isReadStream (rs) { - return rs.readable && rs.path && rs.mode -} - -function toBase64 (str) { - return (new Buffer(str || '', 'utf8')).toString('base64') -} - -function copy (obj) { - var o = {} - Object.keys(obj).forEach(function (i) { - o[i] = obj[i] - }) - return o -} - -exports.isFunction = isFunction -exports.paramsHaveRequestBody = paramsHaveRequestBody -exports.safeStringify = safeStringify -exports.md5 = md5 -exports.isReadStream = isReadStream -exports.toBase64 = toBase64 -exports.copy = copy -exports.defer = deferMethod() diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/multipart.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/multipart.js deleted file mode 100644 index 03618588..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/multipart.js +++ /dev/null @@ -1,109 +0,0 @@ -'use strict' - -var uuid = require('node-uuid') - , CombinedStream = require('combined-stream') - , isstream = require('isstream') - - -function Multipart (request) { - this.request = request - this.boundary = uuid() - this.chunked = false - this.body = null -} - -Multipart.prototype.isChunked = function (options) { - var self = this - , chunked = false - , parts = options.data || options - - if (!parts.forEach) { - self.request.emit('error', new Error('Argument error, options.multipart.')) - } - - if (options.chunked !== undefined) { - chunked = options.chunked - } - - if (self.request.getHeader('transfer-encoding') === 'chunked') { - chunked = true - } - - if (!chunked) { - parts.forEach(function (part) { - if (typeof part.body === 'undefined') { - self.request.emit('error', new Error('Body attribute missing in multipart.')) - } - if (isstream(part.body)) { - chunked = true - } - }) - } - - return chunked -} - -Multipart.prototype.setHeaders = function (chunked) { - var self = this - - if (chunked && !self.request.hasHeader('transfer-encoding')) { - self.request.setHeader('transfer-encoding', 'chunked') - } - - var header = self.request.getHeader('content-type') - - if (!header || header.indexOf('multipart') === -1) { - self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) - } else { - if (header.indexOf('boundary') !== -1) { - self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') - } else { - self.request.setHeader('content-type', header + '; boundary=' + self.boundary) - } - } -} - -Multipart.prototype.build = function (parts, chunked) { - var self = this - var body = chunked ? new CombinedStream() : [] - - function add (part) { - return chunked ? body.append(part) : body.push(new Buffer(part)) - } - - if (self.request.preambleCRLF) { - add('\r\n') - } - - parts.forEach(function (part) { - var preamble = '--' + self.boundary + '\r\n' - Object.keys(part).forEach(function (key) { - if (key === 'body') { return } - preamble += key + ': ' + part[key] + '\r\n' - }) - preamble += '\r\n' - add(preamble) - add(part.body) - add('\r\n') - }) - add('--' + self.boundary + '--') - - if (self.request.postambleCRLF) { - add('\r\n') - } - - return body -} - -Multipart.prototype.onRequest = function (options) { - var self = this - - var chunked = self.isChunked(options) - , parts = options.data || options - - self.setHeaders(chunked) - self.chunked = chunked - self.body = self.build(parts, chunked) -} - -exports.Multipart = Multipart diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/oauth.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/oauth.js deleted file mode 100644 index b0f7ab88..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/oauth.js +++ /dev/null @@ -1,147 +0,0 @@ -'use strict' - -var url = require('url') - , qs = require('qs') - , caseless = require('caseless') - , uuid = require('node-uuid') - , oauth = require('oauth-sign') - , crypto = require('crypto') - - -function OAuth (request) { - this.request = request - this.params = null -} - -OAuth.prototype.buildParams = function (_oauth, uri, method, query, form, qsLib) { - var oa = {} - for (var i in _oauth) { - oa['oauth_' + i] = _oauth[i] - } - if (!oa.oauth_version) { - oa.oauth_version = '1.0' - } - if (!oa.oauth_timestamp) { - oa.oauth_timestamp = Math.floor( Date.now() / 1000 ).toString() - } - if (!oa.oauth_nonce) { - oa.oauth_nonce = uuid().replace(/-/g, '') - } - if (!oa.oauth_signature_method) { - oa.oauth_signature_method = 'HMAC-SHA1' - } - - var consumer_secret_or_private_key = oa.oauth_consumer_secret || oa.oauth_private_key - delete oa.oauth_consumer_secret - delete oa.oauth_private_key - - var token_secret = oa.oauth_token_secret - delete oa.oauth_token_secret - - var realm = oa.oauth_realm - delete oa.oauth_realm - delete oa.oauth_transport_method - - var baseurl = uri.protocol + '//' + uri.host + uri.pathname - var params = qsLib.parse([].concat(query, form, qsLib.stringify(oa)).join('&')) - - oa.oauth_signature = oauth.sign( - oa.oauth_signature_method, - method, - baseurl, - params, - consumer_secret_or_private_key, - token_secret) - - if (realm) { - oa.realm = realm - } - - return oa -} - -OAuth.prototype.buildBodyHash = function(_oauth, body) { - if (['HMAC-SHA1', 'RSA-SHA1'].indexOf(_oauth.signature_method || 'HMAC-SHA1') < 0) { - this.request.emit('error', new Error('oauth: ' + _oauth.signature_method + - ' signature_method not supported with body_hash signing.')) - } - - var shasum = crypto.createHash('sha1') - shasum.update(body || '') - var sha1 = shasum.digest('hex') - - return new Buffer(sha1).toString('base64') -} - -OAuth.prototype.concatParams = function (oa, sep, wrap) { - wrap = wrap || '' - - var params = Object.keys(oa).filter(function (i) { - return i !== 'realm' && i !== 'oauth_signature' - }).sort() - - if (oa.realm) { - params.splice(0, 1, 'realm') - } - params.push('oauth_signature') - - return params.map(function (i) { - return i + '=' + wrap + oauth.rfc3986(oa[i]) + wrap - }).join(sep) -} - -OAuth.prototype.onRequest = function (_oauth) { - var self = this - self.params = _oauth - - var uri = self.request.uri || {} - , method = self.request.method || '' - , headers = caseless(self.request.headers) - , body = self.request.body || '' - , qsLib = self.request.qsLib || qs - - var form - , query - , contentType = headers.get('content-type') || '' - , formContentType = 'application/x-www-form-urlencoded' - , transport = _oauth.transport_method || 'header' - - if (contentType.slice(0, formContentType.length) === formContentType) { - contentType = formContentType - form = body - } - if (uri.query) { - query = uri.query - } - if (transport === 'body' && (method !== 'POST' || contentType !== formContentType)) { - self.request.emit('error', new Error('oauth: transport_method of body requires POST ' + - 'and content-type ' + formContentType)) - } - - if (!form && typeof _oauth.body_hash === 'boolean') { - _oauth.body_hash = self.buildBodyHash(_oauth, self.request.body.toString()) - } - - var oa = self.buildParams(_oauth, uri, method, query, form, qsLib) - - switch (transport) { - case 'header': - self.request.setHeader('Authorization', 'OAuth ' + self.concatParams(oa, ',', '"')) - break - - case 'query': - var href = self.request.uri.href += (query ? '&' : '?') + self.concatParams(oa, '&') - self.request.uri = url.parse(href) - self.request.path = self.request.uri.path - break - - case 'body': - self.request.body = (form ? form + '&' : '') + self.concatParams(oa, '&') - break - - default: - self.request.emit('error', new Error('oauth: transport_method invalid')) - } -} - -exports.OAuth = OAuth diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/querystring.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/querystring.js deleted file mode 100644 index baf5e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/querystring.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict' - -var qs = require('qs') - , querystring = require('querystring') - - -function Querystring (request) { - this.request = request - this.lib = null - this.useQuerystring = null - this.parseOptions = null - this.stringifyOptions = null -} - -Querystring.prototype.init = function (options) { - if (this.lib) {return} - - this.useQuerystring = options.useQuerystring - this.lib = (this.useQuerystring ? querystring : qs) - - this.parseOptions = options.qsParseOptions || {} - this.stringifyOptions = options.qsStringifyOptions || {} -} - -Querystring.prototype.stringify = function (obj) { - return (this.useQuerystring) - ? this.rfc3986(this.lib.stringify(obj, - this.stringifyOptions.sep || null, - this.stringifyOptions.eq || null, - this.stringifyOptions)) - : this.lib.stringify(obj, this.stringifyOptions) -} - -Querystring.prototype.parse = function (str) { - return (this.useQuerystring) - ? this.lib.parse(str, - this.parseOptions.sep || null, - this.parseOptions.eq || null, - this.parseOptions) - : this.lib.parse(str, this.parseOptions) -} - -Querystring.prototype.rfc3986 = function (str) { - return str.replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase() - }) -} - -Querystring.prototype.unescape = querystring.unescape - -exports.Querystring = Querystring diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/redirect.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/redirect.js deleted file mode 100644 index 1d465029..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/redirect.js +++ /dev/null @@ -1,153 +0,0 @@ -'use strict' - -var url = require('url') -var isUrl = /^https?:/ - -function Redirect (request) { - this.request = request - this.followRedirect = true - this.followRedirects = true - this.followAllRedirects = false - this.allowRedirect = function () {return true} - this.maxRedirects = 10 - this.redirects = [] - this.redirectsFollowed = 0 - this.removeRefererHeader = false -} - -Redirect.prototype.onRequest = function (options) { - var self = this - - if (options.maxRedirects !== undefined) { - self.maxRedirects = options.maxRedirects - } - if (typeof options.followRedirect === 'function') { - self.allowRedirect = options.followRedirect - } - if (options.followRedirect !== undefined) { - self.followRedirects = !!options.followRedirect - } - if (options.followAllRedirects !== undefined) { - self.followAllRedirects = options.followAllRedirects - } - if (self.followRedirects || self.followAllRedirects) { - self.redirects = self.redirects || [] - } - if (options.removeRefererHeader !== undefined) { - self.removeRefererHeader = options.removeRefererHeader - } -} - -Redirect.prototype.redirectTo = function (response) { - var self = this - , request = self.request - - var redirectTo = null - if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { - var location = response.caseless.get('location') - request.debug('redirect', location) - - if (self.followAllRedirects) { - redirectTo = location - } else if (self.followRedirects) { - switch (request.method) { - case 'PATCH': - case 'PUT': - case 'POST': - case 'DELETE': - // Do not follow redirects - break - default: - redirectTo = location - break - } - } - } else if (response.statusCode === 401) { - var authHeader = request._auth.onResponse(response) - if (authHeader) { - request.setHeader('authorization', authHeader) - redirectTo = request.uri - } - } - return redirectTo -} - -Redirect.prototype.onResponse = function (response) { - var self = this - , request = self.request - - var redirectTo = self.redirectTo(response) - if (!redirectTo || !self.allowRedirect.call(request, response)) { - return false - } - - request.debug('redirect to', redirectTo) - - // ignore any potential response body. it cannot possibly be useful - // to us at this point. - // response.resume should be defined, but check anyway before calling. Workaround for browserify. - if (response.resume) { - response.resume() - } - - if (self.redirectsFollowed >= self.maxRedirects) { - request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) - return false - } - self.redirectsFollowed += 1 - - if (!isUrl.test(redirectTo)) { - redirectTo = url.resolve(request.uri.href, redirectTo) - } - - var uriPrev = request.uri - request.uri = url.parse(redirectTo) - - // handle the case where we change protocol from https to http or vice versa - if (request.uri.protocol !== uriPrev.protocol) { - request._updateProtocol() - } - - self.redirects.push( - { statusCode : response.statusCode - , redirectUri: redirectTo - } - ) - if (self.followAllRedirects && response.statusCode !== 401 && response.statusCode !== 307) { - request.method = 'GET' - } - // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 - delete request.src - delete request.req - delete request.agent - delete request._started - if (response.statusCode !== 401 && response.statusCode !== 307) { - // Remove parameters from the previous response, unless this is the second request - // for a server that requires digest authentication. - delete request.body - delete request._form - if (request.headers) { - request.removeHeader('host') - request.removeHeader('content-type') - request.removeHeader('content-length') - if (request.uri.hostname !== request.originalHost.split(':')[0]) { - // Remove authorization if changing hostnames (but not if just - // changing ports or protocols). This matches the behavior of curl: - // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 - request.removeHeader('authorization') - } - } - } - - if (!self.removeRefererHeader) { - request.setHeader('referer', request.uri.href) - } - - request.emit('redirect') - - request.init() - - return true -} - -exports.Redirect = Redirect diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/tunnel.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/tunnel.js deleted file mode 100644 index cf28016e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/lib/tunnel.js +++ /dev/null @@ -1,183 +0,0 @@ -'use strict' - -var url = require('url') - , tunnel = require('tunnel-agent') - -var defaultProxyHeaderWhiteList = [ - 'accept', - 'accept-charset', - 'accept-encoding', - 'accept-language', - 'accept-ranges', - 'cache-control', - 'content-encoding', - 'content-language', - 'content-length', - 'content-location', - 'content-md5', - 'content-range', - 'content-type', - 'connection', - 'date', - 'expect', - 'max-forwards', - 'pragma', - 'referer', - 'te', - 'transfer-encoding', - 'user-agent', - 'via' -] - -var defaultProxyHeaderExclusiveList = [ - 'proxy-authorization' -] - -function constructProxyHost(uriObject) { - var port = uriObject.portA - , protocol = uriObject.protocol - , proxyHost = uriObject.hostname + ':' - - if (port) { - proxyHost += port - } else if (protocol === 'https:') { - proxyHost += '443' - } else { - proxyHost += '80' - } - - return proxyHost -} - -function constructProxyHeaderWhiteList(headers, proxyHeaderWhiteList) { - var whiteList = proxyHeaderWhiteList - .reduce(function (set, header) { - set[header.toLowerCase()] = true - return set - }, {}) - - return Object.keys(headers) - .filter(function (header) { - return whiteList[header.toLowerCase()] - }) - .reduce(function (set, header) { - set[header] = headers[header] - return set - }, {}) -} - -function constructTunnelOptions (request, proxyHeaders) { - var proxy = request.proxy - - var tunnelOptions = { - proxy : { - host : proxy.hostname, - port : +proxy.port, - proxyAuth : proxy.auth, - headers : proxyHeaders - }, - headers : request.headers, - ca : request.ca, - cert : request.cert, - key : request.key, - passphrase : request.passphrase, - pfx : request.pfx, - ciphers : request.ciphers, - rejectUnauthorized : request.rejectUnauthorized, - secureOptions : request.secureOptions, - secureProtocol : request.secureProtocol - } - - return tunnelOptions -} - -function constructTunnelFnName(uri, proxy) { - var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') - var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') - return [uriProtocol, proxyProtocol].join('Over') -} - -function getTunnelFn(request) { - var uri = request.uri - var proxy = request.proxy - var tunnelFnName = constructTunnelFnName(uri, proxy) - return tunnel[tunnelFnName] -} - - -function Tunnel (request) { - this.request = request - this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList - this.proxyHeaderExclusiveList = [] -} - -Tunnel.prototype.isEnabled = function (options) { - var request = this.request - // Tunnel HTTPS by default, or if a previous request in the redirect chain - // was tunneled. Allow the user to override this setting. - - // If self.tunnel is already set (because this is a redirect), use the - // existing value. - if (typeof request.tunnel !== 'undefined') { - return request.tunnel - } - - // If options.tunnel is set (the user specified a value), use it. - if (typeof options.tunnel !== 'undefined') { - return options.tunnel - } - - // If the destination is HTTPS, tunnel. - if (request.uri.protocol === 'https:') { - return true - } - - // Otherwise, leave tunnel unset, because if a later request in the redirect - // chain is HTTPS then that request (and any subsequent ones) should be - // tunneled. - return undefined -} - -Tunnel.prototype.setup = function (options) { - var self = this - , request = self.request - - options = options || {} - - if (typeof request.proxy === 'string') { - request.proxy = url.parse(request.proxy) - } - - if (!request.proxy || !request.tunnel) { - return false - } - - // Setup Proxy Header Exclusive List and White List - if (options.proxyHeaderWhiteList) { - self.proxyHeaderWhiteList = options.proxyHeaderWhiteList - } - if (options.proxyHeaderExclusiveList) { - self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList - } - - var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) - var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - - // Setup Proxy Headers and Proxy Headers Host - // Only send the Proxy White Listed Header names - var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) - proxyHeaders.host = constructProxyHost(request.uri) - - proxyHeaderExclusiveList.forEach(request.removeHeader, request) - - // Set Agent from Tunnel Data - var tunnelFn = getTunnelFn(request) - var tunnelOptions = constructTunnelOptions(request, proxyHeaders) - request.agent = tunnelFn(tunnelOptions) - - return true -} - -Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList -Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList -exports.Tunnel = Tunnel diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/package.json deleted file mode 100644 index 681928c2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/package.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "_args": [ - [ - "request@~2.58.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src" - ] - ], - "_from": "request@>=2.58.0 <2.59.0", - "_id": "request@2.58.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src/request", - "_nodeVersion": "0.12.4", - "_npmUser": { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "request", - "raw": "request@~2.58.0", - "rawSpec": "~2.58.0", - "scope": null, - "spec": ">=2.58.0 <2.59.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src" - ], - "_resolved": "https://registry.npmjs.org/request/-/request-2.58.0.tgz", - "_shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580", - "_shrinkwrap": null, - "_spec": "request@~2.58.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src", - "author": { - "email": "mikeal.rogers@gmail.com", - "name": "Mikeal Rogers" - }, - "bugs": { - "url": "http://github.com/request/request/issues" - }, - "dependencies": { - "aws-sign2": "~0.5.0", - "bl": "~0.9.0", - "caseless": "~0.10.0", - "combined-stream": "~1.0.1", - "extend": "~2.0.1", - "forever-agent": "~0.6.0", - "form-data": "~1.0.0-rc1", - "har-validator": "^1.6.1", - "hawk": "~2.3.0", - "http-signature": "~0.11.0", - "isstream": "~0.1.1", - "json-stringify-safe": "~5.0.0", - "mime-types": "~2.0.1", - "node-uuid": "~1.4.0", - "oauth-sign": "~0.8.0", - "qs": "~3.1.0", - "stringstream": "~0.0.4", - "tough-cookie": ">=0.12.0", - "tunnel-agent": "~0.4.0" - }, - "description": "Simplified HTTP request client.", - "devDependencies": { - "bluebird": "~2.9.21", - "browserify": "~5.9.1", - "browserify-istanbul": "~0.1.3", - "buffer-equal": "0.0.1", - "codecov.io": "~0.1.2", - "coveralls": "~2.11.2", - "eslint": "0.18.0", - "function-bind": "~1.0.0", - "istanbul": "~0.3.2", - "karma": "~0.12.21", - "karma-browserify": "~3.0.1", - "karma-cli": "0.0.4", - "karma-coverage": "0.2.6", - "karma-phantomjs-launcher": "~0.1.4", - "karma-tap": "~1.0.1", - "rimraf": "~2.2.8", - "server-destroy": "~1.0.0", - "tape": "~3.0.0", - "taper": "~0.4.0" - }, - "directories": {}, - "dist": { - "shasum": "b5f49c0b94aab7fad388612a1fb6ad03b6cc1580", - "tarball": "https://registry.npmjs.org/request/-/request-2.58.0.tgz" - }, - "engines": { - "node": ">=0.8.0" - }, - "gitHead": "ab40f9e61f813f9cc68257c17621b7879561486c", - "homepage": "https://github.com/request/request#readme", - "license": "Apache-2.0", - "main": "index.js", - "maintainers": [ - { - "email": "mikeal.rogers@gmail.com", - "name": "mikeal" - }, - { - "email": "jnylen@gmail.com", - "name": "nylen" - }, - { - "email": "fkschott@gmail.com", - "name": "fredkschott" - }, - { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - } - ], - "name": "request", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/request/request.git" - }, - "scripts": { - "lint": "eslint lib/ *.js tests/ && echo Lint passed.", - "test": "npm run lint && npm run test-ci && npm run test-browser", - "test-browser": "node tests/browser/start.js", - "test-ci": "taper tests/test-*.js", - "test-cov": "istanbul cover tape tests/test-*.js" - }, - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.58.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/release.sh b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/release.sh deleted file mode 100755 index 7678bf8d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/release.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -if [ -z "`which github-changes`" ]; then - # specify version because github-changes "is under heavy development. Things - # may break between releases" until 0.1.0 - echo "First, do: [sudo] npm install -g github-changes@0.0.14" - exit 1 -fi - -if [ -d .git/refs/remotes/upstream ]; then - remote=upstream -else - remote=origin -fi - -# Increment v2.x.y -> v2.x+1.0 -npm version minor || exit 1 - -# Generate changelog from pull requests -github-changes -o request -r request \ - --auth --verbose \ - --file CHANGELOG.md \ - --only-pulls --use-commit-body \ - --date-format '(YYYY/MM/DD)' \ - || exit 1 - -# Since the tag for the new version hasn't been pushed yet, any changes in it -# will be marked as "upcoming" -version="$(grep '"version"' package.json | cut -d'"' -f4)" -sed -i -e "s/^### upcoming/### v$version/" CHANGELOG.md - -# This may fail if no changelog updates -# TODO: would this ever actually happen? handle it better? -git add CHANGELOG.md; git commit -m 'Update changelog' - -# Publish the new version to npm -npm publish || exit 1 - -# Increment v2.x.0 -> v2.x.1 -# For rationale, see: -# https://github.com/request/oauth-sign/issues/10#issuecomment-58917018 -npm version patch || exit 1 - -# Push back to the main repo -git push $remote master --tags || exit 1 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/request.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/request.js deleted file mode 100644 index c032ea8f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/request/request.js +++ /dev/null @@ -1,1399 +0,0 @@ -'use strict' - -var http = require('http') - , https = require('https') - , url = require('url') - , util = require('util') - , stream = require('stream') - , zlib = require('zlib') - , bl = require('bl') - , hawk = require('hawk') - , aws = require('aws-sign2') - , httpSignature = require('http-signature') - , mime = require('mime-types') - , stringstream = require('stringstream') - , caseless = require('caseless') - , ForeverAgent = require('forever-agent') - , FormData = require('form-data') - , helpers = require('./lib/helpers') - , cookies = require('./lib/cookies') - , getProxyFromURI = require('./lib/getProxyFromURI') - , Querystring = require('./lib/querystring').Querystring - , Har = require('./lib/har').Har - , Auth = require('./lib/auth').Auth - , OAuth = require('./lib/oauth').OAuth - , Multipart = require('./lib/multipart').Multipart - , Redirect = require('./lib/redirect').Redirect - , Tunnel = require('./lib/tunnel').Tunnel - -var safeStringify = helpers.safeStringify - , isReadStream = helpers.isReadStream - , toBase64 = helpers.toBase64 - , defer = helpers.defer - , copy = helpers.copy - , globalCookieJar = cookies.jar() - - -var globalPool = {} - -function filterForNonReserved(reserved, options) { - // Filter out properties that are not reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var notReserved = (reserved.indexOf(i) === -1) - if (notReserved) { - object[i] = options[i] - } - } - return object -} - -function filterOutReservedFunctions(reserved, options) { - // Filter out properties that are functions and are reserved. - // Reserved values are passed in at call site. - - var object = {} - for (var i in options) { - var isReserved = !(reserved.indexOf(i) === -1) - var isFunction = (typeof options[i] === 'function') - if (!(isReserved && isFunction)) { - object[i] = options[i] - } - } - return object - -} - -// Function for properly handling a connection error -function connectionErrorHandler(error) { - var socket = this - if (socket.res) { - if (socket.res.request) { - socket.res.request.emit('error', error) - } else { - socket.res.emit('error', error) - } - } else { - socket._httpMessage.emit('error', error) - } -} - -// Return a simpler request object to allow serialization -function requestToJSON() { - var self = this - return { - uri: self.uri, - method: self.method, - headers: self.headers - } -} - -// Return a simpler response object to allow serialization -function responseToJSON() { - var self = this - return { - statusCode: self.statusCode, - body: self.body, - headers: self.headers, - request: requestToJSON.call(self.request) - } -} - -function Request (options) { - // if given the method property in options, set property explicitMethod to true - - // extend the Request instance with any non-reserved properties - // remove any reserved functions from the options object - // set Request instance to be readable and writable - // call init - - var self = this - - // start with HAR, then override with additional options - if (options.har) { - self._har = new Har(self) - options = self._har.options(options) - } - - stream.Stream.call(self) - var reserved = Object.keys(Request.prototype) - var nonReserved = filterForNonReserved(reserved, options) - - stream.Stream.call(self) - util._extend(self, nonReserved) - options = filterOutReservedFunctions(reserved, options) - - self.readable = true - self.writable = true - if (options.method) { - self.explicitMethod = true - } - self._qs = new Querystring(self) - self._auth = new Auth(self) - self._oauth = new OAuth(self) - self._multipart = new Multipart(self) - self._redirect = new Redirect(self) - self._tunnel = new Tunnel(self) - self.init(options) -} - -util.inherits(Request, stream.Stream) - -// Debugging -Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) -function debug() { - if (Request.debug) { - console.error('REQUEST %s', util.format.apply(util, arguments)) - } -} -Request.prototype.debug = debug - -Request.prototype.init = function (options) { - // init() contains all the code to setup the request object. - // the actual outgoing request is not started until start() is called - // this function is called from both the constructor and on redirect. - var self = this - if (!options) { - options = {} - } - self.headers = self.headers ? copy(self.headers) : {} - - // Delete headers with value undefined since they break - // ClientRequest.OutgoingMessage.setHeader in node 0.12 - for (var headerName in self.headers) { - if (typeof self.headers[headerName] === 'undefined') { - delete self.headers[headerName] - } - } - - caseless.httpify(self, self.headers) - - if (!self.method) { - self.method = options.method || 'GET' - } - if (!self.localAddress) { - self.localAddress = options.localAddress - } - - self._qs.init(options) - - debug(options) - if (!self.pool && self.pool !== false) { - self.pool = globalPool - } - self.dests = self.dests || [] - self.__isRequestRequest = true - - // Protect against double callback - if (!self._callback && self.callback) { - self._callback = self.callback - self.callback = function () { - if (self._callbackCalled) { - return // Print a warning maybe? - } - self._callbackCalled = true - self._callback.apply(self, arguments) - } - self.on('error', self.callback.bind()) - self.on('complete', self.callback.bind(self, null)) - } - - // People use this property instead all the time, so support it - if (!self.uri && self.url) { - self.uri = self.url - delete self.url - } - - // If there's a baseUrl, then use it as the base URL (i.e. uri must be - // specified as a relative path and is appended to baseUrl). - if (self.baseUrl) { - if (typeof self.baseUrl !== 'string') { - return self.emit('error', new Error('options.baseUrl must be a string')) - } - - if (typeof self.uri !== 'string') { - return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) - } - - if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { - return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) - } - - // Handle all cases to make sure that there's only one slash between - // baseUrl and uri. - var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 - var uriStartsWithSlash = self.uri.indexOf('/') === 0 - - if (baseUrlEndsWithSlash && uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri.slice(1) - } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { - self.uri = self.baseUrl + self.uri - } else if (self.uri === '') { - self.uri = self.baseUrl - } else { - self.uri = self.baseUrl + '/' + self.uri - } - delete self.baseUrl - } - - // A URI is needed by this point, emit error if we haven't been able to get one - if (!self.uri) { - return self.emit('error', new Error('options.uri is a required argument')) - } - - // If a string URI/URL was given, parse it into a URL object - if (typeof self.uri === 'string') { - self.uri = url.parse(self.uri) - } - - // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme - if (self.uri.protocol === 'unix:') { - return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) - } - - // Support Unix Sockets - if (self.uri.host === 'unix') { - // Get the socket & request paths from the URL - var unixParts = self.uri.path.split(':') - , host = unixParts[0] - , path = unixParts[1] - // Apply unix properties to request - self.socketPath = host - self.uri.pathname = path - self.uri.path = path - self.uri.host = host - self.uri.hostname = host - self.uri.isUnix = true - } - - if (self.strictSSL === false) { - self.rejectUnauthorized = false - } - - if (!self.uri.pathname) {self.uri.pathname = '/'} - - if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { - // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar - // Detect and reject it as soon as possible - var faultyUri = url.format(self.uri) - var message = 'Invalid URI "' + faultyUri + '"' - if (Object.keys(options).length === 0) { - // No option ? This can be the sign of a redirect - // As this is a case where the user cannot do anything (they didn't call request directly with this URL) - // they should be warned that it can be caused by a redirection (can save some hair) - message += '. This can be caused by a crappy redirection.' - } - // This error was fatal - return self.emit('error', new Error(message)) - } - - if (!self.hasOwnProperty('proxy')) { - self.proxy = getProxyFromURI(self.uri) - } - - self.tunnel = self._tunnel.isEnabled(options) - if (self.proxy) { - self._tunnel.setup(options) - } - - self._redirect.onRequest(options) - - self.setHost = false - if (!self.hasHeader('host')) { - var hostHeaderName = self.originalHostHeaderName || 'host' - self.setHeader(hostHeaderName, self.uri.hostname) - if (self.uri.port) { - if ( !(self.uri.port === 80 && self.uri.protocol === 'http:') && - !(self.uri.port === 443 && self.uri.protocol === 'https:') ) { - self.setHeader(hostHeaderName, self.getHeader('host') + (':' + self.uri.port) ) - } - } - self.setHost = true - } - - self.jar(self._jar || options.jar) - - if (!self.uri.port) { - if (self.uri.protocol === 'http:') {self.uri.port = 80} - else if (self.uri.protocol === 'https:') {self.uri.port = 443} - } - - if (self.proxy && !self.tunnel) { - self.port = self.proxy.port - self.host = self.proxy.hostname - } else { - self.port = self.uri.port - self.host = self.uri.hostname - } - - if (options.form) { - self.form(options.form) - } - - if (options.formData) { - var formData = options.formData - var requestForm = self.form() - var appendFormValue = function (key, value) { - if (value.hasOwnProperty('value') && value.hasOwnProperty('options')) { - requestForm.append(key, value.value, value.options) - } else { - requestForm.append(key, value) - } - } - for (var formKey in formData) { - if (formData.hasOwnProperty(formKey)) { - var formValue = formData[formKey] - if (formValue instanceof Array) { - for (var j = 0; j < formValue.length; j++) { - appendFormValue(formKey, formValue[j]) - } - } else { - appendFormValue(formKey, formValue) - } - } - } - } - - if (options.qs) { - self.qs(options.qs) - } - - if (self.uri.path) { - self.path = self.uri.path - } else { - self.path = self.uri.pathname + (self.uri.search || '') - } - - if (self.path.length === 0) { - self.path = '/' - } - - // Auth must happen last in case signing is dependent on other headers - if (options.aws) { - self.aws(options.aws) - } - - if (options.hawk) { - self.hawk(options.hawk) - } - - if (options.httpSignature) { - self.httpSignature(options.httpSignature) - } - - if (options.auth) { - if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { - options.auth.user = options.auth.username - } - if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { - options.auth.pass = options.auth.password - } - - self.auth( - options.auth.user, - options.auth.pass, - options.auth.sendImmediately, - options.auth.bearer - ) - } - - if (self.gzip && !self.hasHeader('accept-encoding')) { - self.setHeader('accept-encoding', 'gzip') - } - - if (self.uri.auth && !self.hasHeader('authorization')) { - var uriAuthPieces = self.uri.auth.split(':').map(function(item) {return self._qs.unescape(item)}) - self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) - } - - if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { - var proxyAuthPieces = self.proxy.auth.split(':').map(function(item) {return self._qs.unescape(item)}) - var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) - self.setHeader('proxy-authorization', authHeader) - } - - if (self.proxy && !self.tunnel) { - self.path = (self.uri.protocol + '//' + self.uri.host + self.path) - } - - if (options.json) { - self.json(options.json) - } - if (options.multipart) { - self.multipart(options.multipart) - } - - if (options.time) { - self.timing = true - self.elapsedTime = self.elapsedTime || 0 - } - - if (self.body) { - var length = 0 - if (!Buffer.isBuffer(self.body)) { - if (Array.isArray(self.body)) { - for (var i = 0; i < self.body.length; i++) { - length += self.body[i].length - } - } else { - self.body = new Buffer(self.body) - length = self.body.length - } - } else { - length = self.body.length - } - if (length) { - if (!self.hasHeader('content-length')) { - self.setHeader('content-length', length) - } - } else { - self.emit('error', new Error('Argument error, options.body.')) - } - } - - if (options.oauth) { - self.oauth(options.oauth) - } else if (self._oauth.params && self.hasHeader('authorization')) { - self.oauth(self._oauth.params) - } - - var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol - , defaultModules = {'http:':http, 'https:':https} - , httpModules = self.httpModules || {} - - self.httpModule = httpModules[protocol] || defaultModules[protocol] - - if (!self.httpModule) { - return self.emit('error', new Error('Invalid protocol: ' + protocol)) - } - - if (options.ca) { - self.ca = options.ca - } - - if (!self.agent) { - if (options.agentOptions) { - self.agentOptions = options.agentOptions - } - - if (options.agentClass) { - self.agentClass = options.agentClass - } else if (options.forever) { - self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL - } else { - self.agentClass = self.httpModule.Agent - } - } - - if (self.pool === false) { - self.agent = false - } else { - self.agent = self.agent || self.getNewAgent() - } - - self.on('pipe', function (src) { - if (self.ntick && self._started) { - self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) - } - self.src = src - if (isReadStream(src)) { - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', mime.lookup(src.path)) - } - } else { - if (src.headers) { - for (var i in src.headers) { - if (!self.hasHeader(i)) { - self.setHeader(i, src.headers[i]) - } - } - } - if (self._json && !self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - if (src.method && !self.explicitMethod) { - self.method = src.method - } - } - - // self.on('pipe', function () { - // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') - // }) - }) - - defer(function () { - if (self._aborted) { - return - } - - var end = function () { - if (self._form) { - if (!self._auth.hasAuth) { - self._form.pipe(self) - } - else if (self._auth.hasAuth && self._auth.sentAuth) { - self._form.pipe(self) - } - } - if (self._multipart && self._multipart.chunked) { - self._multipart.body.pipe(self) - } - if (self.body) { - if (Array.isArray(self.body)) { - self.body.forEach(function (part) { - self.write(part) - }) - } else { - self.write(self.body) - } - self.end() - } else if (self.requestBodyStream) { - console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') - self.requestBodyStream.pipe(self) - } else if (!self.src) { - if (self._auth.hasAuth && !self._auth.sentAuth) { - self.end() - return - } - if (self.method !== 'GET' && typeof self.method !== 'undefined') { - self.setHeader('content-length', 0) - } - self.end() - } - } - - if (self._form && !self.hasHeader('content-length')) { - // Before ending the request, we had to compute the length of the whole form, asyncly - self.setHeader(self._form.getHeaders()) - self._form.getLength(function (err, length) { - if (!err) { - self.setHeader('content-length', length) - } - end() - }) - } else { - end() - } - - self.ntick = true - }) - -} - -// Must call this when following a redirect from https to http or vice versa -// Attempts to keep everything as identical as possible, but update the -// httpModule, Tunneling agent, and/or Forever Agent in use. -Request.prototype._updateProtocol = function () { - var self = this - var protocol = self.uri.protocol - - if (protocol === 'https:' || self.tunnel) { - // previously was doing http, now doing https - // if it's https, then we might need to tunnel now. - if (self.proxy) { - if (self._tunnel.setup()) { - return - } - } - - self.httpModule = https - switch (self.agentClass) { - case ForeverAgent: - self.agentClass = ForeverAgent.SSL - break - case http.Agent: - self.agentClass = https.Agent - break - default: - // nothing we can do. Just hope for the best. - return - } - - // if there's an agent, we need to get a new one. - if (self.agent) { - self.agent = self.getNewAgent() - } - - } else { - // previously was doing https, now doing http - self.httpModule = http - switch (self.agentClass) { - case ForeverAgent.SSL: - self.agentClass = ForeverAgent - break - case https.Agent: - self.agentClass = http.Agent - break - default: - // nothing we can do. just hope for the best - return - } - - // if there's an agent, then get a new one. - if (self.agent) { - self.agent = null - self.agent = self.getNewAgent() - } - } -} - -Request.prototype.getNewAgent = function () { - var self = this - var Agent = self.agentClass - var options = {} - if (self.agentOptions) { - for (var i in self.agentOptions) { - options[i] = self.agentOptions[i] - } - } - if (self.ca) { - options.ca = self.ca - } - if (self.ciphers) { - options.ciphers = self.ciphers - } - if (self.secureProtocol) { - options.secureProtocol = self.secureProtocol - } - if (self.secureOptions) { - options.secureOptions = self.secureOptions - } - if (typeof self.rejectUnauthorized !== 'undefined') { - options.rejectUnauthorized = self.rejectUnauthorized - } - - if (self.cert && self.key) { - options.key = self.key - options.cert = self.cert - } - - if (self.pfx) { - options.pfx = self.pfx - } - - if (self.passphrase) { - options.passphrase = self.passphrase - } - - var poolKey = '' - - // different types of agents are in different pools - if (Agent !== self.httpModule.Agent) { - poolKey += Agent.name - } - - // ca option is only relevant if proxy or destination are https - var proxy = self.proxy - if (typeof proxy === 'string') { - proxy = url.parse(proxy) - } - var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - - if (isHttps) { - if (options.ca) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ca - } - - if (typeof options.rejectUnauthorized !== 'undefined') { - if (poolKey) { - poolKey += ':' - } - poolKey += options.rejectUnauthorized - } - - if (options.cert) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.cert.toString('ascii') + options.key.toString('ascii') - } - - if (options.pfx) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.pfx.toString('ascii') - } - - if (options.ciphers) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.ciphers - } - - if (options.secureProtocol) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureProtocol - } - - if (options.secureOptions) { - if (poolKey) { - poolKey += ':' - } - poolKey += options.secureOptions - } - } - - if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { - // not doing anything special. Use the globalAgent - return self.httpModule.globalAgent - } - - // we're using a stored agent. Make sure it's protocol-specific - poolKey = self.uri.protocol + poolKey - - // generate a new agent for this setting if none yet exists - if (!self.pool[poolKey]) { - self.pool[poolKey] = new Agent(options) - // properly set maxSockets on new agents - if (self.pool.maxSockets) { - self.pool[poolKey].maxSockets = self.pool.maxSockets - } - } - - return self.pool[poolKey] -} - -Request.prototype.start = function () { - // start() is called once we are ready to send the outgoing HTTP request. - // this is usually called on the first write(), end() or on nextTick() - var self = this - - if (self._aborted) { - return - } - - self._started = true - self.method = self.method || 'GET' - self.href = self.uri.href - - if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { - self.setHeader('content-length', self.src.stat.size) - } - if (self._aws) { - self.aws(self._aws, true) - } - - // We have a method named auth, which is completely different from the http.request - // auth option. If we don't remove it, we're gonna have a bad time. - var reqOptions = copy(self) - delete reqOptions.auth - - debug('make request', self.uri.href) - - self.req = self.httpModule.request(reqOptions) - - if (self.timing) { - self.startTime = new Date().getTime() - } - - if (self.timeout && !self.timeoutTimer) { - var timeout = self.timeout < 0 ? 0 : self.timeout - self.timeoutTimer = setTimeout(function () { - self.abort() - var e = new Error('ETIMEDOUT') - e.code = 'ETIMEDOUT' - self.emit('error', e) - }, timeout) - - // Set additional timeout on socket - in case if remote - // server freeze after sending headers - if (self.req.setTimeout) { // only works on node 0.6+ - self.req.setTimeout(timeout, function () { - if (self.req) { - self.req.abort() - var e = new Error('ESOCKETTIMEDOUT') - e.code = 'ESOCKETTIMEDOUT' - self.emit('error', e) - } - }) - } - } - - self.req.on('response', self.onRequestResponse.bind(self)) - self.req.on('error', self.onRequestError.bind(self)) - self.req.on('drain', function() { - self.emit('drain') - }) - self.req.on('socket', function(socket) { - self.emit('socket', socket) - }) - - self.on('end', function() { - if ( self.req.connection ) { - self.req.connection.removeListener('error', connectionErrorHandler) - } - }) - self.emit('request', self.req) -} - -Request.prototype.onRequestError = function (error) { - var self = this - if (self._aborted) { - return - } - if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' - && self.agent.addRequestNoreuse) { - self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } - self.start() - self.req.end() - return - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - self.emit('error', error) -} - -Request.prototype.onRequestResponse = function (response) { - var self = this - debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) - response.on('end', function() { - if (self.timing) { - self.elapsedTime += (new Date().getTime() - self.startTime) - debug('elapsed time', self.elapsedTime) - response.elapsedTime = self.elapsedTime - } - debug('response end', self.uri.href, response.statusCode, response.headers) - }) - - // The check on response.connection is a workaround for browserify. - if (response.connection && response.connection.listeners('error').indexOf(connectionErrorHandler) === -1) { - response.connection.setMaxListeners(0) - response.connection.once('error', connectionErrorHandler) - } - if (self._aborted) { - debug('aborted', self.uri.href) - response.resume() - return - } - - self.response = response - response.request = self - response.toJSON = responseToJSON - - // XXX This is different on 0.10, because SSL is strict by default - if (self.httpModule === https && - self.strictSSL && (!response.hasOwnProperty('socket') || - !response.socket.authorized)) { - debug('strict ssl error', self.uri.href) - var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' - self.emit('error', new Error('SSL Error: ' + sslErr)) - return - } - - // Save the original host before any redirect (if it changes, we need to - // remove any authorization headers). Also remember the case of the header - // name because lots of broken servers expect Host instead of host and we - // want the caller to be able to specify this. - self.originalHost = self.getHeader('host') - if (!self.originalHostHeaderName) { - self.originalHostHeaderName = self.hasHeader('host') - } - if (self.setHost) { - self.removeHeader('host') - } - if (self.timeout && self.timeoutTimer) { - clearTimeout(self.timeoutTimer) - self.timeoutTimer = null - } - - var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar - var addCookie = function (cookie) { - //set the cookie if it's domain in the href's domain. - try { - targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) - } catch (e) { - self.emit('error', e) - } - } - - response.caseless = caseless(response.headers) - - if (response.caseless.has('set-cookie') && (!self._disableCookies)) { - var headerName = response.caseless.has('set-cookie') - if (Array.isArray(response.headers[headerName])) { - response.headers[headerName].forEach(addCookie) - } else { - addCookie(response.headers[headerName]) - } - } - - if (self._redirect.onResponse(response)) { - return // Ignore the rest of the response - } else { - // Be a good stream and emit end when the response is finished. - // Hack to emit end on close because of a core bug that never fires end - response.on('close', function () { - if (!self._ended) { - self.response.emit('end') - } - }) - - response.on('end', function () { - self._ended = true - }) - - var responseContent - if (self.gzip) { - var contentEncoding = response.headers['content-encoding'] || 'identity' - contentEncoding = contentEncoding.trim().toLowerCase() - - if (contentEncoding === 'gzip') { - responseContent = zlib.createGunzip() - response.pipe(responseContent) - } else { - // Since previous versions didn't check for Content-Encoding header, - // ignore any invalid values to preserve backwards-compatibility - if (contentEncoding !== 'identity') { - debug('ignoring unrecognized Content-Encoding ' + contentEncoding) - } - responseContent = response - } - } else { - responseContent = response - } - - if (self.encoding) { - if (self.dests.length !== 0) { - console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') - } else if (responseContent.setEncoding) { - responseContent.setEncoding(self.encoding) - } else { - // Should only occur on node pre-v0.9.4 (joyent/node@9b5abe5) with - // zlib streams. - // If/When support for 0.9.4 is dropped, this should be unnecessary. - responseContent = responseContent.pipe(stringstream(self.encoding)) - } - } - - if (self._paused) { - responseContent.pause() - } - - self.responseContent = responseContent - - self.emit('response', response) - - self.dests.forEach(function (dest) { - self.pipeDest(dest) - }) - - responseContent.on('data', function (chunk) { - self._destdata = true - self.emit('data', chunk) - }) - responseContent.on('end', function (chunk) { - self.emit('end', chunk) - }) - responseContent.on('error', function (error) { - self.emit('error', error) - }) - responseContent.on('close', function () {self.emit('close')}) - - if (self.callback) { - var buffer = bl() - , strings = [] - - self.on('data', function (chunk) { - if (Buffer.isBuffer(chunk)) { - buffer.append(chunk) - } else { - strings.push(chunk) - } - }) - self.on('end', function () { - debug('end event', self.uri.href) - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - - if (buffer.length) { - debug('has body', self.uri.href, buffer.length) - if (self.encoding === null) { - // response.body = buffer - // can't move to this until https://github.com/rvagg/bl/issues/13 - response.body = buffer.slice() - } else { - response.body = buffer.toString(self.encoding) - } - } else if (strings.length) { - // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. - // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). - if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { - strings[0] = strings[0].substring(1) - } - response.body = strings.join('') - } - - if (self._json) { - try { - response.body = JSON.parse(response.body, self._jsonReviver) - } catch (e) { - // empty - } - } - debug('emitting complete', self.uri.href) - if (typeof response.body === 'undefined' && !self._json) { - response.body = self.encoding === null ? new Buffer(0) : '' - } - self.emit('complete', response, response.body) - }) - } - //if no callback - else { - self.on('end', function () { - if (self._aborted) { - debug('aborted', self.uri.href) - return - } - self.emit('complete', response) - }) - } - } - debug('finish init function', self.uri.href) -} - -Request.prototype.abort = function () { - var self = this - self._aborted = true - - if (self.req) { - self.req.abort() - } - else if (self.response) { - self.response.abort() - } - - self.emit('abort') -} - -Request.prototype.pipeDest = function (dest) { - var self = this - var response = self.response - // Called after the response is received - if (dest.headers && !dest.headersSent) { - if (response.caseless.has('content-type')) { - var ctname = response.caseless.has('content-type') - if (dest.setHeader) { - dest.setHeader(ctname, response.headers[ctname]) - } - else { - dest.headers[ctname] = response.headers[ctname] - } - } - - if (response.caseless.has('content-length')) { - var clname = response.caseless.has('content-length') - if (dest.setHeader) { - dest.setHeader(clname, response.headers[clname]) - } else { - dest.headers[clname] = response.headers[clname] - } - } - } - if (dest.setHeader && !dest.headersSent) { - for (var i in response.headers) { - // If the response content is being decoded, the Content-Encoding header - // of the response doesn't represent the piped content, so don't pass it. - if (!self.gzip || i !== 'content-encoding') { - dest.setHeader(i, response.headers[i]) - } - } - dest.statusCode = response.statusCode - } - if (self.pipefilter) { - self.pipefilter(response, dest) - } -} - -Request.prototype.qs = function (q, clobber) { - var self = this - var base - if (!clobber && self.uri.query) { - base = self._qs.parse(self.uri.query) - } else { - base = {} - } - - for (var i in q) { - base[i] = q[i] - } - - if (self._qs.stringify(base) === '') { - return self - } - - var qs = self._qs.stringify(base) - - self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) - self.url = self.uri - self.path = self.uri.path - - return self -} -Request.prototype.form = function (form) { - var self = this - if (form) { - self.setHeader('content-type', 'application/x-www-form-urlencoded') - self.body = (typeof form === 'string') - ? self._qs.rfc3986(form.toString('utf8')) - : self._qs.stringify(form).toString('utf8') - return self - } - // create form-data object - self._form = new FormData() - self._form.on('error', function(err) { - err.message = 'form-data: ' + err.message - self.emit('error', err) - self.abort() - }) - return self._form -} -Request.prototype.multipart = function (multipart) { - var self = this - - self._multipart.onRequest(multipart) - - if (!self._multipart.chunked) { - self.body = self._multipart.body - } - - return self -} -Request.prototype.json = function (val) { - var self = this - - if (!self.hasHeader('accept')) { - self.setHeader('accept', 'application/json') - } - - self._json = true - if (typeof val === 'boolean') { - if (self.body !== undefined) { - if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { - self.body = safeStringify(self.body) - } else { - self.body = self._qs.rfc3986(self.body) - } - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - } else { - self.body = safeStringify(val) - if (!self.hasHeader('content-type')) { - self.setHeader('content-type', 'application/json') - } - } - - if (typeof self.jsonReviver === 'function') { - self._jsonReviver = self.jsonReviver - } - - return self -} -Request.prototype.getHeader = function (name, headers) { - var self = this - var result, re, match - if (!headers) { - headers = self.headers - } - Object.keys(headers).forEach(function (key) { - if (key.length !== name.length) { - return - } - re = new RegExp(name, 'i') - match = key.match(re) - if (match) { - result = headers[key] - } - }) - return result -} - -Request.prototype.auth = function (user, pass, sendImmediately, bearer) { - var self = this - - self._auth.onRequest(user, pass, sendImmediately, bearer) - - return self -} -Request.prototype.aws = function (opts, now) { - var self = this - - if (!now) { - self._aws = opts - return self - } - var date = new Date() - self.setHeader('date', date.toUTCString()) - var auth = - { key: opts.key - , secret: opts.secret - , verb: self.method.toUpperCase() - , date: date - , contentType: self.getHeader('content-type') || '' - , md5: self.getHeader('content-md5') || '' - , amazonHeaders: aws.canonicalizeHeaders(self.headers) - } - var path = self.uri.path - if (opts.bucket && path) { - auth.resource = '/' + opts.bucket + path - } else if (opts.bucket && !path) { - auth.resource = '/' + opts.bucket - } else if (!opts.bucket && path) { - auth.resource = path - } else if (!opts.bucket && !path) { - auth.resource = '/' - } - auth.resource = aws.canonicalizeResource(auth.resource) - self.setHeader('authorization', aws.authorization(auth)) - - return self -} -Request.prototype.httpSignature = function (opts) { - var self = this - httpSignature.signRequest({ - getHeader: function(header) { - return self.getHeader(header, self.headers) - }, - setHeader: function(header, value) { - self.setHeader(header, value) - }, - method: self.method, - path: self.path - }, opts) - debug('httpSignature authorization', self.getHeader('authorization')) - - return self -} -Request.prototype.hawk = function (opts) { - var self = this - self.setHeader('Authorization', hawk.client.header(self.uri, self.method, opts).field) -} -Request.prototype.oauth = function (_oauth) { - var self = this - - self._oauth.onRequest(_oauth) - - return self -} - -Request.prototype.jar = function (jar) { - var self = this - var cookies - - if (self._redirect.redirectsFollowed === 0) { - self.originalCookieHeader = self.getHeader('cookie') - } - - if (!jar) { - // disable cookies - cookies = false - self._disableCookies = true - } else { - var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar - var urihref = self.uri.href - //fetch cookie in the Specified host - if (targetCookieJar) { - cookies = targetCookieJar.getCookieString(urihref) - } - } - - //if need cookie and cookie is not empty - if (cookies && cookies.length) { - if (self.originalCookieHeader) { - // Don't overwrite existing Cookie header - self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) - } else { - self.setHeader('cookie', cookies) - } - } - self._jar = jar - return self -} - - -// Stream API -Request.prototype.pipe = function (dest, opts) { - var self = this - - if (self.response) { - if (self._destdata) { - self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) - } else if (self._ended) { - self.emit('error', new Error('You cannot pipe after the response has been ended.')) - } else { - stream.Stream.prototype.pipe.call(self, dest, opts) - self.pipeDest(dest) - return dest - } - } else { - self.dests.push(dest) - stream.Stream.prototype.pipe.call(self, dest, opts) - return dest - } -} -Request.prototype.write = function () { - var self = this - if (!self._started) { - self.start() - } - return self.req.write.apply(self.req, arguments) -} -Request.prototype.end = function (chunk) { - var self = this - if (chunk) { - self.write(chunk) - } - if (!self._started) { - self.start() - } - self.req.end() -} -Request.prototype.pause = function () { - var self = this - if (!self.responseContent) { - self._paused = true - } else { - self.responseContent.pause.apply(self.responseContent, arguments) - } -} -Request.prototype.resume = function () { - var self = this - if (!self.responseContent) { - self._paused = false - } else { - self.responseContent.resume.apply(self.responseContent, arguments) - } -} -Request.prototype.destroy = function () { - var self = this - if (!self._ended) { - self.end() - } else if (self.response) { - self.response.destroy() - } -} - -Request.defaultProxyHeaderWhiteList = - Tunnel.defaultProxyHeaderWhiteList.slice() - -Request.defaultProxyHeaderExclusiveList = - Tunnel.defaultProxyHeaderExclusiveList.slice() - -// Exports - -Request.prototype.toJSON = requestToJSON -module.exports = Request diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/README.md deleted file mode 100644 index 33aa01ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# through2 - - - -[![NPM](https://nodei.co/npm/through2.png?compact=true)](https://nodei.co/npm/through2/) - - - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations [here](http://www.nearform.com/nodecrunch/dont-use-nodes-core-stream-module). - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - - this.push(data) - - callback() - - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, function (chunk, enc, cb) { - - this.push(new Buffer('wut?')) - cb() - - }) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -If you **do not provide a `transformFunction`** then you will get a simple simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/package.json deleted file mode 100644 index 751aefd9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "through2@~0.5.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src" - ] - ], - "_from": "through2@>=0.5.1 <0.6.0", - "_id": "through2@0.5.1", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src/through2", - "_npmUser": { - "email": "rod@vagg.org", - "name": "rvagg" - }, - "_npmVersion": "1.4.3", - "_phantomChildren": {}, - "_requested": { - "name": "through2", - "raw": "through2@~0.5.1", - "rawSpec": "~0.5.1", - "scope": null, - "spec": ">=0.5.1 <0.6.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "_shasum": "dfdd012eb9c700e2323fd334f38ac622ab372da7", - "_shrinkwrap": null, - "_spec": "through2@~0.5.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": "~1.0.17", - "xtend": "~3.0.0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": "~0.6.0", - "brtapsauce": "~0.2.2", - "stream-spigot": "~3.0.1", - "tape": "~2.3.0" - }, - "directories": {}, - "dist": { - "shasum": "dfdd012eb9c700e2323fd334f38ac622ab372da7", - "tarball": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz" - }, - "homepage": "https://github.com/rvagg/through2", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "0.5.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/through2.js deleted file mode 100644 index d3610aa5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/through2/through2.js +++ /dev/null @@ -1,78 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new Transform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - Transform.call(this, this.options) - } - - inherits(Through2, Transform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new Transform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.npmignore deleted file mode 100644 index b5ef13a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -.DS_Store -*.log -node_modules -build -*.node -components \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.travis.yml deleted file mode 100644 index 33ad9f8c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js -node_js: - - "0.9" - - "0.10" -after_script: - - npm run coveralls \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/LICENSE deleted file mode 100755 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/README.md deleted file mode 100644 index 3f97efc5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) - - -## Information - - - - - - - - - - - - - -
    Packagevinyl
    DescriptionA virtual file format
    Node Version>= 0.9
    - -## File - -```javascript -var File = require('vinyl'); - -var coffeeFile = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" - contents: new Buffer("test = 123") -}); -``` - -### constructor(options) - -#### options.cwd - -Type: `String` -Default: `process.cwd()` - -#### options.base - -Used for relative pathing. Typically where a glob starts. - -Type: `String` -Default: `options.cwd` - -#### options.path - -Full path to the file. - -Type: `String` -Default: `null` - -#### options.stat - -The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. - -Type: `fs.Stats` -Default: `null` - -#### options.contents - -File contents. - -Type: `Buffer, Stream, or null` -Default: `null` - -### isBuffer() - -Returns true if file.contents is a Buffer. - -### isStream() - -Returns true if file.contents is a Stream. - -### isNull() - -Returns true if file.contents is null. - -### clone() - -Returns a new File object with all attributes cloned. - -### pipe(stream[, opt]) - -If file.contents is a Buffer, it will write it to the stream. - -If file.contents is a Stream, it will pipe it to the stream. - -If file.contents is null, it will do nothing. - -If opt.end is true, the destination stream will not be ended (same as node core). - -Returns the stream. - -### inspect() - -Returns a pretty String interpretation of the File. Useful for console.log. - -### relative - -Returns path.relative for the file base and file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.relative); // file.coffee -``` - -[npm-url]: https://npmjs.org/package/vinyl -[npm-image]: https://badge.fury.io/js/vinyl.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl -[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl -[depstat-image]: https://david-dm.org/wearefractal/vinyl.png \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/index.js deleted file mode 100644 index 97f5c752..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/index.js +++ /dev/null @@ -1,128 +0,0 @@ -var path = require('path'); - -var cloneStats = require('clone-stats'); - -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var cloneBuffer = require('./lib/cloneBuffer'); - -function File(file) { - if (!file) file = {}; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - this.path = file.path || null; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function() { - var clonedContents = this.isBuffer() ? cloneBuffer(this.contents) : this.contents; - var clonedStat = this.stat ? cloneStats(this.stat) : null; - - return new File({ - cwd: this.cwd, - base: this.base, - path: this.path, - stat: clonedStat, - contents: clonedContents - }); -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - if (this.isNull()) { - if (opt.end) stream.end(); - return stream; - } - - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error("File.contents can only be a Buffer, a Stream, or null."); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -module.exports = File; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/cloneBuffer.js deleted file mode 100644 index 3a861f22..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/cloneBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/inspectStream.js deleted file mode 100644 index 2c906789..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/inspectStream.js +++ /dev/null @@ -1,12 +0,0 @@ -var Stream = require('stream').Stream; -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isBuffer.js deleted file mode 100644 index 0e23782c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isNull.js deleted file mode 100644 index 403bb30e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isStream.js deleted file mode 100644 index 9ce0929b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/package.json deleted file mode 100644 index 92a551b0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "vinyl@~0.2.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src" - ] - ], - "_from": "vinyl@>=0.2.3 <0.3.0", - "_id": "vinyl@0.2.3", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src/vinyl", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "1.3.23", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl", - "raw": "vinyl@~0.2.3", - "rawSpec": "~0.2.3", - "scope": null, - "spec": ">=0.2.3 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src" - ], - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "_shasum": "bca938209582ec5a49ad538a00fa1f125e513252", - "_shrinkwrap": null, - "_spec": "vinyl@~0.2.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "dependencies": { - "clone-stats": "~0.0.1" - }, - "description": "A virtual file format", - "devDependencies": { - "buffer-equal": "0.0.0", - "coveralls": "~2.6.1", - "event-stream": "~3.1.0", - "istanbul": "~0.2.3", - "jshint": "~2.4.1", - "lodash.templatesettings": "~2.4.1", - "mocha": "~1.17.0", - "mocha-lcov-reporter": "0.0.1", - "rimraf": "~2.2.5", - "should": "~2.1.1" - }, - "directories": {}, - "dist": { - "shasum": "bca938209582ec5a49ad538a00fa1f125e513252", - "tarball": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "homepage": "http://github.com/wearefractal/vinyl", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "vinyl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint" - }, - "version": "0.2.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/File.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/File.js deleted file mode 100644 index 1f2a83a0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/File.js +++ /dev/null @@ -1,540 +0,0 @@ -var File = require('../'); -var Stream = require('stream'); -var fs = require('fs'); - -var should = require('should'); -require('mocha'); - -describe('File', function() { - - describe('constructor()', function() { - it('should default cwd to process.cwd', function(done) { - var file = new File(); - file.cwd.should.equal(process.cwd()); - done(); - }); - - it('should default base to cwd', function(done) { - var cwd = "/"; - var file = new File({cwd: cwd}); - file.base.should.equal(cwd); - done(); - }); - - it('should default base to cwd even when none is given', function(done) { - var file = new File(); - file.base.should.equal(process.cwd()); - done(); - }); - - it('should default path to null', function(done) { - var file = new File(); - should.not.exist(file.path); - done(); - }); - - it('should default stat to null', function(done) { - var file = new File(); - should.not.exist(file.stat); - done(); - }); - - it('should default contents to null', function(done) { - var file = new File(); - should.not.exist(file.contents); - done(); - }); - - it('should set base to given value', function(done) { - var val = "/"; - var file = new File({base: val}); - file.base.should.equal(val); - done(); - }); - - it('should set cwd to given value', function(done) { - var val = "/"; - var file = new File({cwd: val}); - file.cwd.should.equal(val); - done(); - }); - - it('should set path to given value', function(done) { - var val = "/test.coffee"; - var file = new File({path: val}); - file.path.should.equal(val); - done(); - }); - - it('should set stat to given value', function(done) { - var val = {}; - var file = new File({stat: val}); - file.stat.should.equal(val); - done(); - }); - - it('should set contents to given value', function(done) { - var val = new Buffer("test"); - var file = new File({contents: val}); - file.contents.should.equal(val); - done(); - }); - }); - - describe('isBuffer()', function() { - it('should return true when the contents are a Buffer', function(done) { - var val = new Buffer("test"); - var file = new File({contents: val}); - file.isBuffer().should.equal(true); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isBuffer().should.equal(false); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isBuffer().should.equal(false); - done(); - }); - }); - - describe('isStream()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer("test"); - var file = new File({contents: val}); - file.isStream().should.equal(false); - done(); - }); - - it('should return true when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isStream().should.equal(true); - done(); - }); - - it('should return false when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isStream().should.equal(false); - done(); - }); - }); - - describe('isNull()', function() { - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer("test"); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val}); - file.isNull().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null}); - file.isNull().should.equal(true); - done(); - }); - }); - - describe('isDirectory()', function() { - var fakeStat = { - isDirectory: function() { - return true; - } - }; - - it('should return false when the contents are a Buffer', function(done) { - var val = new Buffer("test"); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return false when the contents are a Stream', function(done) { - var val = new Stream(); - var file = new File({contents: val, stat: fakeStat}); - file.isDirectory().should.equal(false); - done(); - }); - - it('should return true when the contents are a null', function(done) { - var file = new File({contents: null, stat: fakeStat}); - file.isDirectory().should.equal(true); - done(); - }); - }); - - describe('clone()', function() { - it('should copy all attributes over with Buffer', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Buffer("test") - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.not.equal(file.contents, 'buffer ref should be different'); - file2.contents.toString('utf8').should.equal(file.contents.toString('utf8')); - done(); - }); - - it('should copy all attributes over with Stream', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Stream() - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - file2.contents.should.equal(file.contents, 'stream ref should be the same'); - done(); - }); - - it('should copy all attributes over with null', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: null - }; - var file = new File(options); - var file2 = file.clone(); - - file2.should.not.equal(file, 'refs should be different'); - file2.cwd.should.equal(file.cwd); - file2.base.should.equal(file.base); - file2.path.should.equal(file.path); - should.not.exist(file2.contents); - done(); - }); - - it('should properly clone the `stat` property', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.js", - contents: new Buffer("test"), - stat: fs.statSync(__filename) - }; - - var file = new File(options); - var copy = file.clone(); - - copy.stat.isFile().should.be.true; - copy.stat.isDirectory().should.be.false; - should(file.stat instanceof fs.Stats).be.true; - should(copy.stat instanceof fs.Stats).be.true; - - done(); - }); - }); - - describe('pipe()', function() { - it('should write to stream with Buffer', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Buffer("test") - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - }); - stream.on('end', function(chunk) { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer("test"); - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - throw new Error("should not write"); - }); - stream.on('end', function() { - done(); - }); - var ret = file.pipe(stream); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should write to stream with Buffer', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Buffer("test") - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(options.contents.toString('utf8')); - done(); - }); - stream.on('end', function(chunk) { - throw new Error("should not end"); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - }); - - it('should pipe to stream with Stream', function(done) { - var testChunk = new Buffer("test"); - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Stream.PassThrough() - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - should.exist(chunk); - (chunk instanceof Buffer).should.equal(true, 'should write as a buffer'); - chunk.toString('utf8').should.equal(testChunk.toString('utf8')); - done(); - }); - stream.on('end', function(chunk) { - throw new Error("should not end"); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - - file.contents.write(testChunk); - }); - - it('should do nothing with null', function(done) { - var options = { - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: null - }; - var file = new File(options); - var stream = new Stream.PassThrough(); - stream.on('data', function(chunk) { - throw new Error("should not write"); - }); - stream.on('end', function(chunk) { - throw new Error("should not end"); - }); - var ret = file.pipe(stream, {end: false}); - ret.should.equal(stream, 'should return the stream'); - process.nextTick(done); - }); - }); - - describe('inspect()', function() { - it('should return correct format when no contents and no path', function(done) { - var file = new File(); - file.inspect().should.equal(''); - done(); - }); - - it('should return correct format when Buffer and no path', function(done) { - var val = new Buffer("test"); - var file = new File({ - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and relative path', function(done) { - var val = new Buffer("test"); - var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: val - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Buffer and only path and no base', function(done) { - var val = new Buffer("test"); - var file = new File({ - cwd: "/", - path: "/test/test.coffee", - contents: val - }); - delete file.base; - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when Stream and relative path', function(done) { - var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: new Stream.PassThrough() - }); - file.inspect().should.equal('>'); - done(); - }); - - it('should return correct format when null and relative path', function(done) { - var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/test.coffee", - contents: null - }); - file.inspect().should.equal(''); - done(); - }); - }); - - describe('contents get/set', function() { - it('should work with Buffer', function(done) { - var val = new Buffer("test"); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with Stream', function(done) { - var val = new Stream.PassThrough(); - var file = new File(); - file.contents = val; - file.contents.should.equal(val); - done(); - }); - - it('should work with null', function(done) { - var val = null; - var file = new File(); - file.contents = val; - (file.contents === null).should.equal(true); - done(); - }); - - it('should not work with string', function(done) { - var val = "test"; - var file = new File(); - try { - file.contents = val; - } catch (err) { - should.exist(err); - done(); - } - }); - }); - - describe('relative get/set', function() { - it('should error on set', function(done) { - var file = new File(); - try { - file.relative = "test"; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no base', function(done) { - var a; - var file = new File(); - delete file.base; - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should error on get when no path', function(done) { - var a; - var file = new File(); - try { - a = file.relative; - } catch (err) { - should.exist(err); - done(); - } - }); - - it('should return a relative path from base', function(done) { - var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/test.coffee" - }); - file.relative.should.equal("test.coffee"); - done(); - }); - - it('should return a relative path from cwd', function(done) { - var file = new File({ - cwd: "/", - path: "/test/test.coffee" - }); - file.relative.should.equal("test/test.coffee"); - done(); - }); - }); - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/cloneBuffer.js deleted file mode 100644 index 7d286814..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/cloneBuffer.js +++ /dev/null @@ -1,28 +0,0 @@ -var cloneBuffer = require('../lib/cloneBuffer'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('cloneBuffer()', function() { - it('should return a new Buffer reference', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - should.exist(testBuffer2, 'should return something'); - (testBuffer2 instanceof Buffer).should.equal(true, 'should return a Buffer'); - testBuffer2.should.not.equal(testBuffer, 'pointer should change'); - done(); - }); - - it('should not replicate modifications to the original buffer', function(done) { - var testBuffer = new Buffer('test'); - var testBuffer2 = cloneBuffer(testBuffer); - - // test that changes dont modify both pointers - testBuffer2.write('w'); - - testBuffer.toString('utf8').should.equal('test', 'original should stay the same'); - testBuffer2.toString('utf8').should.equal('west', 'new buffer should be modified'); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/inspectStream.js deleted file mode 100644 index fe1802c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/inspectStream.js +++ /dev/null @@ -1,53 +0,0 @@ -var inspectStream = require('../lib/inspectStream'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('inspectStream()', function() { - it('should work on a core Stream', function(done) { - var testStream = new Stream(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Readable Stream', function(done) { - var testStream = new Stream.Readable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Writable Stream', function(done) { - var testStream = new Stream.Writable(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Duplex Stream', function(done) { - var testStream = new Stream.Duplex(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core Transform Stream', function(done) { - var testStream = new Stream.Transform(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should work on a core PassThrough Stream', function(done) { - var testStream = new Stream.PassThrough(); - inspectStream(testStream).should.equal(''); - done(); - }); - - it('should not work on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - should.not.exist(inspectStream(testBuffer)); - done(); - }); - - it('should not work on a null', function(done) { - should.not.exist(inspectStream(null)); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isBuffer.js deleted file mode 100644 index 5bb1cb91..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isBuffer.js +++ /dev/null @@ -1,29 +0,0 @@ -var isBuffer = require('../lib/isBuffer'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('isBuffer()', function() { - it('should return true on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isBuffer(testBuffer).should.equal(true); - done(); - }); - - it('should return false on a Stream', function(done) { - var testStream = new Stream(); - isBuffer(testStream).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isBuffer(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isBuffer(testArray).should.equal(false); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isNull.js deleted file mode 100644 index db70c013..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isNull.js +++ /dev/null @@ -1,23 +0,0 @@ -var isNull = require('../lib/isNull'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('isNull()', function() { - it('should return true on null', function(done) { - isNull(null).should.equal(true); - done(); - }); - - it('should return false on undefined', function(done) { - isNull().should.equal(false); - isNull(undefined).should.equal(false); - done(); - }); - - it('should return false on defined values', function(done) { - isNull(1).should.equal(false); - isNull("test").should.equal(false); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isStream.js deleted file mode 100644 index f22584c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/vinyl/test/isStream.js +++ /dev/null @@ -1,29 +0,0 @@ -var isStream = require('../lib/isStream'); -var Stream = require('stream'); -var should = require('should'); -require('mocha'); - -describe('isStream()', function() { - it('should return true on a Stream', function(done) { - var testStream = new Stream(); - isStream(testStream).should.equal(true); - done(); - }); - - it('should return false on a Buffer', function(done) { - var testBuffer = new Buffer('test'); - isStream(testBuffer).should.equal(false); - done(); - }); - - it('should return false on a null', function(done) { - isStream(null).should.equal(false); - done(); - }); - - it('should return false on a array of numbers', function(done) { - var testArray = [1, 2, 3]; - isStream(testArray).should.equal(false); - done(); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.jshintrc deleted file mode 100644 index 77887b5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.jshintrc +++ /dev/null @@ -1,30 +0,0 @@ -{ - "maxdepth": 4, - "maxstatements": 200, - "maxcomplexity": 12, - "maxlen": 80, - "maxparams": 5, - - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": false, - "noarg": true, - "noempty": true, - "nonew": true, - "undef": true, - "unused": "vars", - "trailing": true, - - "quotmark": true, - "expr": true, - "asi": true, - - "browser": false, - "esnext": true, - "devel": false, - "node": false, - "nonstandard": false, - - "predef": ["require", "module", "__dirname", "__filename"] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/LICENCE deleted file mode 100644 index 1a14b437..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012-2014 Raynos. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/README.md deleted file mode 100644 index e7548318..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# xtend - -[![browser support][3]][4] - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes presedence. - -## Examples - -```js -var extend = require("xtend") - -// extend returns a new object. Does not mutate arguments -var combination = extend({ - a: "a" -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/index.js deleted file mode 100644 index 5b760152..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/index.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = extend - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (source.hasOwnProperty(key)) { - target[key] = source[key] - } - } - } - - return target -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/mutable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/mutable.js deleted file mode 100644 index a34475eb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/mutable.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = extend - -function extend(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (source.hasOwnProperty(key)) { - target[key] = source[key] - } - } - } - - return target -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/package.json deleted file mode 100644 index 4fcd7075..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "_args": [ - [ - "xtend@~3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src/node_modules/through2" - ] - ], - "_from": "xtend@>=3.0.0 <3.1.0", - "_id": "xtend@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src/xtend", - "_npmUser": { - "email": "raynos2@gmail.com", - "name": "raynos" - }, - "_npmVersion": "1.4.6", - "_phantomChildren": {}, - "_requested": { - "name": "xtend", - "raw": "xtend@~3.0.0", - "rawSpec": "~3.0.0", - "scope": null, - "spec": ">=3.0.0 <3.1.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src/through2" - ], - "_resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "_shasum": "5cce7407baf642cba7becda568111c493f59665a", - "_shrinkwrap": null, - "_spec": "xtend@~3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src/node_modules/through2", - "author": { - "email": "raynos2@gmail.com", - "name": "Raynos" - }, - "bugs": { - "email": "raynos2@gmail.com", - "url": "https://github.com/Raynos/xtend/issues" - }, - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "dependencies": {}, - "description": "extend like a boss", - "devDependencies": { - "tape": "~1.1.0" - }, - "directories": {}, - "dist": { - "shasum": "5cce7407baf642cba7becda568111c493f59665a", - "tarball": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz" - }, - "engines": { - "node": ">=0.4" - }, - "homepage": "https://github.com/Raynos/xtend", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/raynos/xtend/raw/master/LICENSE" - } - ], - "main": "index", - "maintainers": [ - { - "email": "raynos2@gmail.com", - "name": "raynos" - } - ], - "name": "xtend", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "scripts": { - "test": "node test" - }, - "testling": { - "browsers": [ - "ie/7..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ], - "files": "test.js" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/test.js deleted file mode 100644 index 3369d796..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/node_modules/xtend/test.js +++ /dev/null @@ -1,63 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/package.json deleted file mode 100644 index cd69243e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-remote-src/package.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "_args": [ - [ - "gulp-remote-src@^0.4.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vscode" - ] - ], - "_from": "gulp-remote-src@>=0.4.0 <0.5.0", - "_id": "gulp-remote-src@0.4.1", - "_inCache": true, - "_installable": true, - "_location": "/gulp-remote-src", - "_nodeVersion": "0.10.33", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/gulp-remote-src-0.4.1.tgz_1456456298464_0.2517261777538806" - }, - "_npmUser": { - "email": "ddliuhb@gmail.com", - "name": "dong" - }, - "_npmVersion": "2.7.4", - "_phantomChildren": { - "clone-stats": "0.0.1", - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - }, - "_requested": { - "name": "gulp-remote-src", - "raw": "gulp-remote-src@^0.4.0", - "rawSpec": "^0.4.0", - "scope": null, - "spec": ">=0.4.0 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/vscode" - ], - "_resolved": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.1.tgz", - "_shasum": "6c36004e57228c9df02fbea9727a8616baf87355", - "_shrinkwrap": null, - "_spec": "gulp-remote-src@^0.4.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vscode", - "author": { - "email": "ddliuhb@gmail.com", - "name": "dong" - }, - "bugs": { - "url": "https://github.com/ddliu/gulp-remote-src/issues" - }, - "dependencies": { - "event-stream": "~3.1.5", - "node.extend": "~1.1.2", - "request": "~2.58.0", - "through2": "~0.5.1", - "vinyl": "~0.2.3" - }, - "description": "Remote gulp.src", - "devDependencies": { - "gulp": "~3.8.5", - "gulp-clean": "~0.3.1", - "gulp-uglify": "~0.3.1" - }, - "directories": {}, - "dist": { - "shasum": "6c36004e57228c9df02fbea9727a8616baf87355", - "tarball": "https://registry.npmjs.org/gulp-remote-src/-/gulp-remote-src-0.4.1.tgz" - }, - "gitHead": "d688a024e876fb5d0a4aa5802ab25922018179a3", - "homepage": "https://github.com/ddliu/gulp-remote-src", - "keywords": [ - "gulpplugin", - "remote", - "src" - ], - "license": "MIT", - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/ddliu/gulp-remote-src/blob/master/LICENSE" - } - ], - "main": "index.js", - "maintainers": [ - { - "email": "ddliuhb@gmail.com", - "name": "dong" - } - ], - "name": "gulp-remote-src", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/ddliu/gulp-remote-src.git" - }, - "scripts": { - "test": "gulp test" - }, - "version": "0.4.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/LICENSE deleted file mode 100644 index ef0c60a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 João Moreno - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/README.md deleted file mode 100644 index e86a1bb5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# gulp-symdest - -Like gulp.dest, but handles symlinks. - -## Details - -It assumes that if a [vinyl](https://github.com/wearefractal/vinyl) file -has a field `symlink`, then it is a `string` with the value for the -symlink itself. - -## Usage - -```javascript -var gulp = require('gulp'); -var symdest = require('gulp-symdest'); - -gulp.task('default', function () { - return gulp.src('path_with_symlinks/**') - .pipe(symdest('out')); -}); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/index.js deleted file mode 100644 index 441cbbc4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/index.js +++ /dev/null @@ -1,50 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var mkdirp = require('mkdirp'); -var vfs = require('vinyl-fs'); -var es = require('event-stream'); -var queue = require('queue'); - -function createSymlink(dest, symlink, cb) { - mkdirp(path.dirname(dest), function (err) { - if (err) { return cb(err); } - - fs.symlink(symlink, dest, cb); - }); -} - -module.exports = function (out) { - var pass = es.through(); - var symlinks = []; - - return es.duplex(pass, - pass.pipe(es.mapSync(function (f) { - if (!f.symlink) { - return f; - } - - symlinks.push(f); - })) - .pipe(vfs.dest(out)) - .pipe(es.through(null, function () { - var q = queue(); - q.concurrency = 1; - q.timeout = 1000; - - var that = this; - symlinks.forEach(function (f) { - q.push(function (cb) { - createSymlink(path.join(out, f.relative), f.symlink, cb); - }); - }); - - q.start(function (err) { - if (err) { - that.emit('error', err); - } else { - that.emit('end'); - } - }); - })) - ); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/.bin/strip-bom b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/.bin/strip-bom deleted file mode 100755 index 2c1e7c4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/.bin/strip-bom +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var stripBom = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-bom > ', - ' cat | strip-bom > ', - '', - ' Example', - ' strip-bom unicorn.txt > unicorn-without-bom.txt' - ].join('\n')); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - fs.createReadStream(input).pipe(stripBom.stream()).pipe(process.stdout); -} else { - process.stdin.pipe(stripBom.stream()).pipe(process.stdout); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.travis.yml deleted file mode 100644 index 58f23716..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.10 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/LICENSE deleted file mode 100644 index fc808cce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright © 2011-2014 Paul Vorbach - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/README.md deleted file mode 100644 index d7231cfc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# clone - -[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) - -offers foolproof _deep cloning_ of variables in JavaScript. - - -## Installation - - npm install clone - -or - - ender build clone - - -## Example - -~~~ javascript -var clone = require('clone'); - -var a, b; - -a = { foo: { bar: 'baz' } }; // initial value of a - -b = clone(a); // clone a -> b -a.foo.bar = 'foo'; // change a - -console.log(a); // show a -console.log(b); // show b -~~~ - -This will print: - -~~~ javascript -{ foo: { bar: 'foo' } } -{ foo: { bar: 'baz' } } -~~~ - -**clone** masters cloning simple objects (even with custom prototype), arrays, -Date objects, and RegExp objects. Everything is cloned recursively, so that you -can clone dates in arrays in objects, for example. - - -## API - -`clone(val, circular, depth)` - - * `val` -- the value that you want to clone, any type allowed - * `circular` -- boolean - - Call `clone` with `circular` set to `false` if you are certain that `obj` - contains no circular references. This will give better performance if needed. - There is no error if `undefined` or `null` is passed as `obj`. - * `depth` -- depth to which the object is to be cloned (optional, - defaults to infinity) - -`clone.clonePrototype(obj)` - - * `obj` -- the object that you want to clone - -Does a prototype clone as -[described by Oran Looney](http://oranlooney.com/functional-javascript/). - - -## Circular References - -~~~ javascript -var a, b; - -a = { hello: 'world' }; - -a.myself = a; -b = clone(a); - -console.log(b); -~~~ - -This will print: - -~~~ javascript -{ hello: "world", myself: [Circular] } -~~~ - -So, `b.myself` points to `b`, not `a`. Neat! - - -## Test - - npm test - - -## Caveat - -Some special objects like a socket or `process.stdout`/`stderr` are known to not -be cloneable. If you find other objects that cannot be cloned, please [open an -issue](https://github.com/pvorb/node-clone/issues/new). - - -## Bugs and Issues - -If you encounter any bugs or issues, feel free to [open an issue at -github](https://github.com/pvorb/node-clone/issues) or send me an email to -. I also always like to hear from you, if you’re using my code. - -## License - -Copyright © 2011-2014 [Paul Vorbach](http://paul.vorba.ch/) and -[contributors](https://github.com/pvorb/node-clone/graphs/contributors). - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/clone.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/clone.js deleted file mode 100644 index f8fa3159..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/clone.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -// shim for Node's 'util' package -// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). -var util = { - isArray: function (ar) { - return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); - }, - isDate: function (d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; - }, - isRegExp: function (re) { - return typeof re === 'object' && objectToString(re) === '[object RegExp]'; - }, - getRegExpFlags: function (re) { - var flags = ''; - re.global && (flags += 'g'); - re.ignoreCase && (flags += 'i'); - re.multiline && (flags += 'm'); - return flags; - } -}; - - -if (typeof module === 'object') - module.exports = clone; - -/** - * Clones (copies) an Object using deep copying. - * - * This function supports circular references by default, but if you are certain - * there are no circular references in your object, you can save some CPU time - * by calling clone(obj, false). - * - * Caution: if `circular` is false and `parent` contains circular references, - * your program may enter an infinite loop and crash. - * - * @param `parent` - the object to be cloned - * @param `circular` - set to true if the object to be cloned may contain - * circular references. (optional - true by default) - * @param `depth` - set to a number if the object is only to be cloned to - * a particular depth. (optional - defaults to Infinity) - * @param `prototype` - sets the prototype to be used when cloning an object. - * (optional - defaults to parent prototype). -*/ - -function clone(parent, circular, depth, prototype) { - // maintain two arrays for circular references, where corresponding parents - // and children have the same index - var allParents = []; - var allChildren = []; - - var useBuffer = typeof Buffer != 'undefined'; - - if (typeof circular == 'undefined') - circular = true; - - if (typeof depth == 'undefined') - depth = Infinity; - - // recurse this function so we don't reset allParents and allChildren - function _clone(parent, depth) { - // cloning null always returns null - if (parent === null) - return null; - - if (depth == 0) - return parent; - - var child; - var proto; - if (typeof parent != 'object') { - return parent; - } - - if (util.isArray(parent)) { - child = []; - } else if (util.isRegExp(parent)) { - child = new RegExp(parent.source, util.getRegExpFlags(parent)); - if (parent.lastIndex) child.lastIndex = parent.lastIndex; - } else if (util.isDate(parent)) { - child = new Date(parent.getTime()); - } else if (useBuffer && Buffer.isBuffer(parent)) { - child = new Buffer(parent.length); - parent.copy(child); - return child; - } else { - if (typeof prototype == 'undefined') { - proto = Object.getPrototypeOf(parent); - child = Object.create(proto); - } - else { - child = Object.create(prototype); - proto = prototype; - } - } - - if (circular) { - var index = allParents.indexOf(parent); - - if (index != -1) { - return allChildren[index]; - } - allParents.push(parent); - allChildren.push(child); - } - - for (var i in parent) { - var attrs; - if (proto) { - attrs = Object.getOwnPropertyDescriptor(proto, i); - } - - if (attrs && attrs.set == null) { - continue; - } - child[i] = _clone(parent[i], depth - 1); - } - - return child; - } - - return _clone(parent, depth); -} - -/** - * Simple flat clone using prototype, accepts only objects, usefull for property - * override on FLAT configuration object (no nested props). - * - * USE WITH CAUTION! This may not behave as you wish if you do not know how this - * works. - */ -clone.clonePrototype = function(parent) { - if (parent === null) - return null; - - var c = function () {}; - c.prototype = parent; - return new c(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/package.json deleted file mode 100644 index 360b06ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/package.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_args": [ - [ - "clone@^0.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl" - ] - ], - "_from": "clone@>=0.2.0 <0.3.0", - "_id": "clone@0.2.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/clone", - "_npmUser": { - "email": "paul@vorba.ch", - "name": "pvorb" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "clone", - "raw": "clone@^0.2.0", - "rawSpec": "^0.2.0", - "scope": null, - "spec": ">=0.2.0 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl" - ], - "_resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "_shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "_shrinkwrap": null, - "_spec": "clone@^0.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl", - "author": { - "email": "paul@vorba.ch", - "name": "Paul Vorbach", - "url": "http://paul.vorba.ch/" - }, - "bugs": { - "url": "https://github.com/pvorb/node-clone/issues" - }, - "contributors": [ - { - "email": "miner.blake@gmail.com", - "name": "Blake Miner", - "url": "http://www.blakeminer.com/" - }, - { - "email": "axqd001@gmail.com", - "name": "Tian You", - "url": "http://blog.axqd.net/" - }, - { - "email": "gstagas@gmail.com", - "name": "George Stagas", - "url": "http://stagas.com/" - }, - { - "email": "tobiasz.cudnik@gmail.com", - "name": "Tobiasz Cudnik", - "url": "https://github.com/TobiaszCudnik" - }, - { - "email": "langpavel@phpskelet.org", - "name": "Pavel Lang", - "url": "https://github.com/langpavel" - }, - { - "name": "Dan MacTough", - "url": "http://yabfog.com/" - }, - { - "name": "w1nk", - "url": "https://github.com/w1nk" - }, - { - "name": "Hugh Kennedy", - "url": "http://twitter.com/hughskennedy" - }, - { - "name": "Dustin Diaz", - "url": "http://dustindiaz.com" - }, - { - "name": "Ilya Shaisultanov", - "url": "https://github.com/diversario" - }, - { - "email": "nathan@macinn.es", - "name": "Nathan MacInnes", - "url": "http://macinn.es/" - }, - { - "email": "ben@npmjs.com", - "name": "Benjamin E. Coe", - "url": "https://twitter.com/benjamincoe" - }, - { - "name": "Nathan Zadoks", - "url": "https://github.com/nathan7" - }, - { - "email": "robert+gh@oroszi.net", - "name": "Róbert Oroszi", - "url": "https://github.com/oroce" - } - ], - "dependencies": {}, - "description": "deep cloning of objects and arrays", - "devDependencies": { - "nodeunit": "*", - "underscore": "*" - }, - "directories": {}, - "dist": { - "shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "tarball": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "bb11a43363a0f69e8ac014cb5376ce215ea1f8fd", - "homepage": "https://github.com/pvorb/node-clone", - "license": "MIT", - "main": "clone.js", - "maintainers": [ - { - "email": "paul@vorb.de", - "name": "pvorb" - } - ], - "name": "clone", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/pvorb/node-clone.git" - }, - "scripts": { - "test": "nodeunit test.js" - }, - "tags": [ - "clone", - "object", - "array", - "function", - "date" - ], - "version": "0.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/test.js deleted file mode 100644 index cb3d1663..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/clone/test.js +++ /dev/null @@ -1,289 +0,0 @@ -if(module.parent === null) { - console.log('Run this test file with nodeunit:'); - console.log('$ nodeunit test.js'); -} - - -var clone = require('./'); -var util = require('util'); -var _ = require('underscore'); - - - -exports["clone string"] = function(test) { - test.expect(2); // how many tests? - - var a = "foo"; - test.strictEqual(clone(a), a); - a = ""; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone number"] = function(test) { - test.expect(5); // how many tests? - - var a = 0; - test.strictEqual(clone(a), a); - a = 1; - test.strictEqual(clone(a), a); - a = -1000; - test.strictEqual(clone(a), a); - a = 3.1415927; - test.strictEqual(clone(a), a); - a = -3.1415927; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone date"] = function(test) { - test.expect(3); // how many tests? - - var a = new Date; - var c = clone(a); - test.ok(a instanceof Date); - test.ok(c instanceof Date); - test.equal(c.getTime(), a.getTime()); - - test.done(); -}; - - - -exports["clone object"] = function(test) { - test.expect(2); // how many tests? - - var a = { foo: { bar: "baz" } }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone array"] = function(test) { - test.expect(2); // how many tests? - - var a = [ - { foo: "bar" }, - "baz" - ]; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone buffer"] = function(test) { - test.expect(1); - - var a = new Buffer("this is a test buffer"); - var b = clone(a); - - // no underscore equal since it has no concept of Buffers - test.deepEqual(b, a); - test.done(); -}; - - - -exports["clone regexp"] = function(test) { - test.expect(5); - - var a = /abc123/gi; - var b = clone(a); - - test.deepEqual(b, a); - - var c = /a/g; - test.ok(c.lastIndex === 0); - - c.exec('123a456a'); - test.ok(c.lastIndex === 4); - - var d = clone(c); - test.ok(d.global); - test.ok(d.lastIndex === 4); - - test.done(); -}; - - -exports["clone object containing array"] = function(test) { - test.expect(2); // how many tests? - - var a = { - arr1: [ { a: '1234', b: '2345' } ], - arr2: [ { c: '345', d: '456' } ] - }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone object with circular reference"] = function(test) { - test.expect(8); // how many tests? - - var _ = test.ok; - var c = [1, "foo", {'hello': 'bar'}, function() {}, false, [2]]; - var b = [c, 2, 3, 4]; - var a = {'b': b, 'c': c}; - a.loop = a; - a.loop2 = a; - c.loop = c; - c.aloop = a; - var aCopy = clone(a); - _(a != aCopy); - _(a.c != aCopy.c); - _(aCopy.c == aCopy.b[0]); - _(aCopy.c.loop.loop.aloop == aCopy); - _(aCopy.c[0] == a.c[0]); - - //console.log(util.inspect(aCopy, true, null) ); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(a, true, null) ); - _(eq(a, aCopy)); - aCopy.c[0] = 2; - _(!eq(a, aCopy)); - aCopy.c = "2"; - _(!eq(a, aCopy)); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(aCopy, true, null) ); - - function eq(x, y) { - return util.inspect(x, true, null) === util.inspect(y, true, null); - } - - test.done(); -}; - - - -exports['clonePrototype'] = function(test) { - test.expect(3); // how many tests? - - var a = { - a: "aaa", - x: 123, - y: 45.65 - }; - var b = clone.clonePrototype(a); - - test.strictEqual(b.a, a.a); - test.strictEqual(b.x, a.x); - test.strictEqual(b.y, a.y); - - test.done(); -} - -exports['cloneWithinNewVMContext'] = function(test) { - test.expect(3); - var vm = require('vm'); - var ctx = vm.createContext({ clone: clone }); - var script = "clone( {array: [1, 2, 3], date: new Date(), regex: /^foo$/ig} );"; - var results = vm.runInContext(script, ctx); - test.ok(results.array instanceof Array); - test.ok(results.date instanceof Date); - test.ok(results.regex instanceof RegExp); - test.done(); -} - -exports['cloneObjectWithNoConstructor'] = function(test) { - test.expect(3); - var n = null; - var a = { foo: 'bar' }; - a.__proto__ = n; - test.ok(typeof a === 'object'); - test.ok(typeof a !== null); - var b = clone(a); - test.ok(a.foo, b.foo); - test.done(); -} - -exports['clone object with depth argument'] = function (test) { - test.expect(6); - var a = { - foo: { - bar : { - baz : 'qux' - } - } - }; - var b = clone(a, false, 1); - test.deepEqual(b, a); - test.notEqual(b, a); - test.strictEqual(b.foo, a.foo); - - b = clone(a, true, 2); - test.deepEqual(b, a); - test.notEqual(b.foo, a.foo); - test.strictEqual(b.foo.bar, a.foo.bar); - test.done(); -} - -exports['maintain prototype chain in clones'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a); - test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); - test.done(); -} - -exports['parent prototype is overriden with prototype provided'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a, true, Infinity, null); - test.strictEqual(b.__defineSetter__, undefined); - test.done(); -} - -exports['clone object with null children'] = function(test) { - test.expect(1); - var a = { - foo: { - bar: null, - baz: { - qux: false - } - } - }; - var b = clone(a); - test.deepEqual(b, a); - test.done(); -} - -exports['clone instance with getter'] = function(test) { - test.expect(1); - function Ctor() {}; - Object.defineProperty(Ctor.prototype, 'prop', { - configurable: true, - enumerable: true, - get: function() { - return 'value'; - } - }); - - var a = new Ctor(); - var b = clone(a); - - test.strictEqual(b.prop, 'value'); - test.done(); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/LICENCE deleted file mode 100644 index 2af26fe7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/LICENCE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011 Dominic Tarr - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/examples/pretty.js deleted file mode 100644 index af043401..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/index.js deleted file mode 100644 index 593ef993..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/index.js +++ /dev/null @@ -1,312 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - -var Stream = require('stream').Stream - , es = exports - , through = require('through') - , from = require('from') - , duplex = require('duplexer') - , map = require('map-stream') - , pause = require('pause-stream') - , split = require('split') - , pipeline = require('stream-combiner') - , immediately = global.setImmediate || process.nextTick; - -es.Stream = Stream //re-export Stream from core -es.through = through -es.from = from -es.duplex = duplex -es.map = map -es.pause = pause -es.split = split -es.pipeline = es.connect = es.pipe = pipeline -// merge / concat -// -// combine multiple streams into a single stream. -// will emit end only once - -es.concat = //actually this should be called concat -es.merge = function (/*streams...*/) { - var toMerge = [].slice.call(arguments) - if (toMerge.length === 1 && (toMerge[0] instanceof Array)) { - toMerge = toMerge[0] //handle array as arguments object - } - var stream = new Stream() - stream.setMaxListeners(0) // allow adding more than 11 streams - var endCount = 0 - stream.writable = stream.readable = true - - toMerge.forEach(function (e) { - e.pipe(stream, {end: false}) - var ended = false - e.on('end', function () { - if(ended) return - ended = true - endCount ++ - if(endCount == toMerge.length) - stream.emit('end') - }) - }) - stream.write = function (data) { - this.emit('data', data) - } - stream.destroy = function () { - toMerge.forEach(function (e) { - if(e.destroy) e.destroy() - }) - } - return stream -} - - -// writable stream, collects all events into an array -// and calls back when 'end' occurs -// mainly I'm using this to test the other functions - -es.writeArray = function (done) { - if ('function' !== typeof done) - throw new Error('function writeArray (done): done must be function') - - var a = new Stream () - , array = [], isDone = false - a.write = function (l) { - array.push(l) - } - a.end = function () { - isDone = true - done(null, array) - } - a.writable = true - a.readable = false - a.destroy = function () { - a.writable = a.readable = false - if(isDone) return - done(new Error('destroyed before end'), array) - } - return a -} - -//return a Stream that reads the properties of an object -//respecting pause() and resume() - -es.readArray = function (array) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - - stream.readable = true - stream.writable = false - - if(!Array.isArray(array)) - throw new Error('event-stream.read expects an array') - - stream.resume = function () { - if(ended) return - paused = false - var l = array.length - while(i < l && !paused && !ended) { - stream.emit('data', array[i++]) - } - if(i == l && !ended) - ended = true, stream.readable = false, stream.emit('end') - } - process.nextTick(stream.resume) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - ended = true - stream.emit('close') - } - return stream -} - -// -// readable (asyncFunction) -// return a stream that calls an async function while the stream is not paused. -// -// the function must take: (count, callback) {... -// - -es.readable = -function (func, continueOnError) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - , reading = false - - stream.readable = true - stream.writable = false - - if('function' !== typeof func) - throw new Error('event-stream.readable expects async function') - - stream.on('end', function () { ended = true }) - - function get (err, data) { - - if(err) { - stream.emit('error', err) - if(!continueOnError) stream.emit('end') - } else if (arguments.length > 1) - stream.emit('data', data) - - immediately(function () { - if(ended || paused || reading) return - try { - reading = true - func.call(stream, i++, function () { - reading = false - get.apply(null, arguments) - }) - } catch (err) { - stream.emit('error', err) - } - }) - } - stream.resume = function () { - paused = false - get() - } - process.nextTick(get) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - stream.emit('end') - stream.emit('close') - ended = true - } - return stream -} - - -// -// map sync -// - -es.mapSync = function (sync) { - return es.through(function write(data) { - var mappedData = sync(data) - if (typeof mappedData !== 'undefined') - this.emit('data', mappedData) - }) -} - -// -// log just print out what is coming through the stream, for debugging -// - -es.log = function (name) { - return es.through(function (data) { - var args = [].slice.call(arguments) - if(name) console.error(name, data) - else console.error(data) - this.emit('data', data) - }) -} - - -// -// child -- pipe through a child process -// - -es.child = function (child) { - - return es.duplex(child.stdin, child.stdout) - -} - -// -// parse -// -// must be used after es.split() to ensure that each chunk represents a line -// source.pipe(es.split()).pipe(es.parse()) - -es.parse = function (options) { - var emitError = !!(options ? options.error : false) - return es.through(function (data) { - var obj - try { - if(data) //ignore empty lines - obj = JSON.parse(data.toString()) - } catch (err) { - if (emitError) - return this.emit('error', err) - return console.error(err, 'attempting to parse:', data) - } - //ignore lines that where only whitespace. - if(obj !== undefined) - this.emit('data', obj) - }) -} -// -// stringify -// - -es.stringify = function () { - var Buffer = require('buffer').Buffer - return es.mapSync(function (e){ - return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' - }) -} - -// -// replace a string within a stream. -// -// warn: just concatenates the string and then does str.split().join(). -// probably not optimal. -// for smallish responses, who cares? -// I need this for shadow-npm so it's only relatively small json files. - -es.replace = function (from, to) { - return es.pipeline(es.split(from), es.join(to)) -} - -// -// join chunks with a joiner. just like Array#join -// also accepts a callback that is passed the chunks appended together -// this is still supported for legacy reasons. -// - -es.join = function (str) { - - //legacy api - if('function' === typeof str) - return es.wait(str) - - var first = true - return es.through(function (data) { - if(!first) - this.emit('data', str) - first = false - this.emit('data', data) - return true - }) -} - - -// -// wait. callback when 'end' is emitted, with all chunks appended as string. -// - -es.wait = function (callback) { - var arr = [] - return es.through(function (data) { arr.push(data) }, - function () { - var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr) - : arr.join('') - this.emit('data', body) - this.emit('end') - if(callback) callback(null, body) - }) -} - -es.pipeable = function () { - throw new Error('[EVENT-STREAM] es.pipeable is deprecated') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/package.json deleted file mode 100644 index c873c898..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_args": [ - [ - "event-stream@^3.3.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest" - ] - ], - "_from": "event-stream@>=3.3.1 <4.0.0", - "_id": "event-stream@3.3.2", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/event-stream", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "event-stream", - "raw": "event-stream@^3.3.1", - "rawSpec": "^3.3.1", - "scope": null, - "spec": ">=3.3.1 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest" - ], - "_resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.2.tgz", - "_shasum": "3cc310feb1f28d2f62b2a085d736a9ef566378b8", - "_shrinkwrap": null, - "_spec": "event-stream@^3.3.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/event-stream/issues" - }, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - }, - "description": "construct pipes of streams of events", - "devDependencies": { - "asynct": "*", - "it-is": "1", - "stream-spec": "~0.3.5", - "tape": "~2.3.0", - "ubelt": "~3.2.2" - }, - "directories": {}, - "dist": { - "shasum": "3cc310feb1f28d2f62b2a085d736a9ef566378b8", - "tarball": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.2.tgz" - }, - "gitHead": "bbcefd4d2b52d25cf5dd3e6025a88a050a66a317", - "homepage": "http://github.com/dominictarr/event-stream", - "license": "MIT", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "event-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/event-stream.git" - }, - "scripts": { - "prepublish": "npm ls && npm test", - "test": "asynct test/", - "test_tap": "set -e; for t in test/*.js; do node $t; done" - }, - "testling": { - "browsers": { - "chrome": [ - 20 - ], - "firefox": [ - 13 - ], - "ie": [ - 8, - 9 - ], - "opera": [ - 12 - ], - "safari": [ - 5.1 - ] - }, - "files": "test/*.js" - }, - "version": "3.3.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/readme.markdown deleted file mode 100644 index 0150b055..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/readme.markdown +++ /dev/null @@ -1,314 +0,0 @@ -# EventStream - - - -[![browser status](http://ci.testling.com/dominictarr/event-stream.png)] -(http://ci.testling.com/dominictarr/event-stream) - -[Streams](http://nodejs.org/api/stream.html "Stream") are node's best and most misunderstood idea, and -_EventStream_ is a toolkit to make creating and working with streams easy. - -Normally, streams are only used for IO, -but in event stream we send all kinds of objects down the pipe. -If your application's input and output are streams, -shouldn't the throughput be a stream too? - -The *EventStream* functions resemble the array functions, -because Streams are like Arrays, but laid out in time, rather than in memory. - -All the `event-stream` functions return instances of `Stream`. - -`event-stream` creates -[0.8 streams](https://github.com/joyent/node/blob/v0.8/doc/api/stream.markdown) -, which are compatible with [0.10 streams](http://nodejs.org/api/stream.html "Stream"). - ->NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable. - -### [simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): - -``` js - -//pretty.js - -if(!module.parent) { - var es = require('event-stream') - var inspect = require('util').inspect - - process.stdin //connect streams together with `pipe` - .pipe(es.split()) //split stream to break on newlines - .pipe(es.map(function (data, cb) { //turn this async function into a stream - cb(null - , inspect(JSON.parse(data))) //render it nicely - })) - .pipe(process.stdout) // pipe it to stdout ! -} -``` -run it ... - -``` bash -curl -sS registry.npmjs.org/event-stream | node pretty.js -``` - -[node Stream documentation](http://nodejs.org/api/stream.html) - -## through (write?, end?) - -Re-emits data synchronously. Easy way to create synchronous through streams. -Pass in optional `write` and `end` methods. They will be called in the -context of the stream. Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the synchronous streams in `event-stream`. - -``` js - -es.through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -## map (asyncFunction) - -Create a through stream from an asynchronous function. - -``` js -var es = require('event-stream') - -es.map(function (data, callback) { - //transform data - // ... - callback(null, data) -}) - -``` - -Each map MUST call the callback. It may callback with data, with an error or with no arguments, - - * `callback()` drop this data. - this makes the map work like `filter`, - note:`callback(null,null)` is not the same, and will emit `null` - - * `callback(null, newData)` turn data into newData - - * `callback(error)` emit an error for this item. - ->Note: if a callback is not called, `map` will think that it is still being processed, ->every call must be answered or the stream will not know when to end. -> ->Also, if the callback is called more than once, every call but the first will be ignored. - -## mapSync (syncFunction) - -Same as `map`, but the callback is called synchronously. Based on `es.through` - -## split (matcher) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js -fs.createReadStream(file, {flags: 'r'}) - .pipe(es.split()) - .pipe(es.map(function (line, cb) { - //do something with the line - cb(null, line) - })) -``` - -`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` parameter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -## join (separator) - -Create a through stream that emits `separator` between each chunk, just like Array#join. - -(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) - -## merge (stream1,...,streamN) or merge (streamArray) -> concat → merge - -Merges streams into one and returns it. -Incoming data will be emitted as soon it comes into - no ordering will be applied (for example: `data1 data1 data2 data1 data2` - where `data1` and `data2` is data from two streams). -Counts how many streams were passed to it and emits end only when all streams emitted end. - -```js -es.merge( - process.stdout, - process.stderr -).pipe(fs.createWriteStream('output.log')); -``` - -It can also take an Array of streams as input like this: -```js -es.merge([ - fs.createReadStream('input1.txt'), - fs.createReadStream('input2.txt') -]).pipe(fs.createWriteStream('output.log')); -``` - -## replace (from, to) - -Replace all occurrences of `from` with `to`. `from` may be a `String` or a `RegExp`. -Works just like `string.split(from).join(to)`, but streaming. - - -## parse - -Convenience function for parsing JSON chunks. For newline separated JSON, -use with `es.split`. By default it logs parsing errors by `console.error`; -for another behaviour, transforms created by `es.parse({error: true})` will -emit error events for exceptions thrown from `JSON.parse`, unmodified. - -``` js -fs.createReadStream(filename) - .pipe(es.split()) //defaults to lines. - .pipe(es.parse()) -``` - -## stringify - -convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` - -``` js -objectStream - .pipe(es.stringify()) - .pipe(fs.createWriteStream(filename)) -``` - -## readable (asyncFunction) - -create a readable stream (that respects pause) from an async function. -while the stream is not paused, -the function will be polled with `(count, callback)`, -and `this` will be the readable stream. - -``` js - -es.readable(function (count, callback) { - if(streamHasEnded) - return this.emit('end') - - //... - - this.emit('data', data) //use this way to emit multiple chunks per call. - - callback() // you MUST always call the callback eventually. - // the function will not be called again until you do this. -}) -``` -you can also pass the data and the error to the callback. -you may only call the callback once. -calling the same callback more than once will have no effect. - -## readArray (array) - -Create a readable stream from an Array. - -Just emit each item as a data event, respecting `pause` and `resume`. - -``` js - var es = require('event-stream') - , reader = es.readArray([1,2,3]) - - reader.pipe(...) -``` - -If you want the stream behave like a 0.10 stream you will need to wrap it using [`Readable.wrap()`](http://nodejs.org/api/stream.html#stream_readable_wrap_stream) function. Example: - -``` js - var s = new stream.Readable({objectMode: true}).wrap(es.readArray([1,2,3])); -``` - -## writeArray (callback) - -create a writeable stream from a callback, -all `data` events are stored in an array, which is passed to the callback when the stream ends. - -``` js - var es = require('event-stream') - , reader = es.readArray([1, 2, 3]) - , writer = es.writeArray(function (err, array){ - //array deepEqual [1, 2, 3] - }) - - reader.pipe(writer) -``` - -## pause () - -A stream that buffers all chunks when paused. - - -``` js - var ps = es.pause() - ps.pause() //buffer the stream, also do not allow 'end' - ps.resume() //allow chunks through -``` - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -(This is used by `pipeline` and `child`.) - -``` js - var grep = cp.exec('grep Stream') - - es.duplex(grep.stdin, grep.stdout) -``` - -## child (child_process) - -Create a through stream from a child process ... - -``` js - var cp = require('child_process') - - es.child(cp.exec('grep Stream')) // a through stream - -``` - -## wait (callback) - -waits for stream to emit 'end'. -joins chunks of a stream into a single string or buffer. -takes an optional callback, which will be passed the -complete string/buffer when it receives the 'end' event. - -also, emits a single 'data' event. - -``` js - -readStream.pipe(es.wait(function (err, body) { - // have complete text here. -})) - -``` - -# Other Stream Modules - -These modules are not included as a part of *EventStream* but may be -useful when working with streams. - -## [reduce (syncFunction, initial)](https://github.com/parshap/node-stream-reduce) - -Like `Array.prototype.reduce` but for streams. Given a sync reduce -function and an initial value it will return a through stream that emits -a single data event with the reduced value once the input stream ends. - -``` js -var reduce = require("stream-reduce"); -process.stdin.pipe(reduce(function(acc, data) { - return acc + data.length; -}, 0)).on("data", function(length) { - console.log("stdin size:", length); -}); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/connect.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/connect.asynct.js deleted file mode 100644 index e6a442bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/connect.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function makeExamplePipe() { - - return es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - d.delay(callback)(null, data) - }), - es.map(function (data, callback) { - callback(null, data + 2) - })) -} - -exports['simple pipe'] = function (test) { - - var pipe = makeExamplePipe() - - pipe.on('data', function (data) { - it(data).equal(18) - test.done() - }) - - pipe.write(8) - -} - -exports['read array then map'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - , first = es.readArray(readThis) - , read = [] - , pipe = - es.connect( - first, - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.writeArray(function (err, array) { - it(array).deepEqual(d.map(readThis, function (data) { - return {data: {data: data}} - })) - test.done() - }) - ) -} - -exports ['connect returns a stream'] = function (test) { - - var rw = - es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - callback(null, data * 5) - }) - ) - - it(rw).has({readable: true, writable: true}) - - var array = [190, 24, 6, 7, 40, 57, 4, 6] - , _array = [] - , c = - es.connect( - es.readArray(array), - rw, - es.log('after rw:'), - es.writeArray(function (err, _array) { - it(_array).deepEqual(array.map(function (e) { return e * 10 })) - test.done() - }) - ) - -} - - -require('./helper')(module) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/helper/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/helper/index.js deleted file mode 100644 index 96abaebe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/helper/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var tape = require('tape') - -module.exports = function (m) { - if(m.parent) return - for(var name in m.exports) { - tape(name, function (t) { - console.log('start', name) - t.done = t.end - m.exports[name](t) - }) - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/merge.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/merge.asynct.js deleted file mode 100644 index 68f38ba9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/merge.asynct.js +++ /dev/null @@ -1,29 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports.merge = function (t) { - var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 - var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 - - var r1 = es.readArray(even) - var r2 = es.readArray(odd) - var endCount = 0 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - if (++endCount === 2) t.done() - }) - - var writer2 = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - if (++endCount === 2) t.done() - }) - - es.merge(r1, r2).pipe(writer) - es.merge([r1, r2]).pipe(writer2) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/parse.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/parse.asynct.js deleted file mode 100644 index a5fefcf9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/parse.asynct.js +++ /dev/null @@ -1,32 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - -exports ['es.parse() writes parsing errors with console.error'] = function (test) { - var parseStream = es.parse() - var oldConsoleError = console.error - console.error = function () { - console.error = oldConsoleError - it(arguments.length > 0).ok() - test.done() - } - - // bare word is not valid JSON - parseStream.write('A') -} - -exports ['es.parse({error: true(thy)}) emits error events from parsing'] = function (test) { - var parseStream = es.parse({error: 1}) - var expectedError - try { - JSON.parse('A') - } catch(e) { - expectedError = e - } - - parseStream.on('error', function (e) { - it(e).deepEqual(expectedError) - process.nextTick(function () { - test.done() - }) - }).write('A') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pause.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pause.asynct.js deleted file mode 100644 index b0736040..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pause.asynct.js +++ /dev/null @@ -1,39 +0,0 @@ - -var es = require('../') - , it = require('it-is') - , d = require('ubelt') - -exports ['gate buffers when shut'] = function (test) { - - var hundy = d.map(1,100, d.id) - , gate = es.pause() - , ten = 10 - es.connect( - es.readArray(hundy), - es.log('after readArray'), - gate, - //es.log('after gate'), - es.map(function (num, next) { - //stick a map in here to check that gate never emits when open - it(gate.paused).equal(false) - console.log('data', num) - if(!--ten) { - console.log('PAUSE') - gate.pause()//.resume() - d.delay(gate.resume.bind(gate), 10)() - ten = 10 - } - - next(null, num) - }), - es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted - console.log('eonuhoenuoecbulc') - it(array).deepEqual(hundy) - test.done() - }) - ) - - gate.resume() - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pipeline.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pipeline.asynct.js deleted file mode 100644 index f07c6fa5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/pipeline.asynct.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('..') - -exports['do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -exports['3 pipe do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readArray.asynct.js deleted file mode 100644 index 3eeb90a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readArray.asynct.js +++ /dev/null @@ -1,89 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function readStream(stream, pauseAt, done) { - if(!done) done = pauseAt, pauseAt = -1 - var array = [] - stream.on('data', function (data) { - array.push(data) - if(!--pauseAt ) - stream.pause(), done(null, array) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -exports ['read an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array and pause it.'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - readStream(reader, 10, function (err, data) { - if(err) throw err - it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) - readStream(reader, 10, function (err, data) { - it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) - test.done() - }) - reader.resume() - }) - -} - -exports ['reader is readable, but not writeable'] = function (test) { - var reader = es.readArray([1]) - it(reader).has({ - readable: true, - writable: false - }) - - test.done() -} - - -exports ['read one item per tick'] = function (test) { - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - var drains = 0 - var reader = es.readArray(readThis) - var tickMapper = es.map(function (data,callback) { - process.nextTick(function () { - callback(null, data) - }) - //since tickMapper is returning false - //pipe should pause the writer until a drain occurs - return false - }) - reader.pipe(tickMapper) - readStream(tickMapper, function (err, array) { - it(array).deepEqual(readThis) - it(array.length).deepEqual(readThis.length) - it(drains).equal(readThis.length) - test.done() - }) - tickMapper.on('drain', function () { - drains ++ - }) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readable.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readable.asynct.js deleted file mode 100644 index 6ea2fdbf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/readable.asynct.js +++ /dev/null @@ -1,197 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , u = require('ubelt') - -exports ['read an array'] = function (test) { - - - console.log('readable') - return test.end() - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - console.log('readable') - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - console.log('readable') - callback(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array - async'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - u.delay(callback)(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['emit data then call next() also works'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, next) { - if(i >= readThis.length) - return this.emit('end') - this.emit('data', readThis[i]) - next() - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['callback emits error, then stops'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , called = 0 - - var reader = - es.readable(function (i, callback) { - if(called++) - return - callback(err) - }) - - reader.on('error', function (_err){ - it(_err).deepEqual(err) - u.delay(function() { - it(called).equal(1) - test.done() - }, 50)() - }) -} - -exports['readable does not call read concurrently'] = function (test) { - - var current = 0 - var source = es.readable(function(count, cb){ - current ++ - if(count > 100) - return this.emit('end') - u.delay(function(){ - current -- - it(current).equal(0) - cb(null, {ok: true, n: count}); - })(); - }); - - var destination = es.map(function(data, cb){ - //console.info(data); - cb(); - }); - - var all = es.connect(source, destination); - - destination.on('end', test.done) -} - -exports ['does not raise a warning: Recursive process.nextTick detected'] = function (test) { - var readThisDelayed; - - u.delay(function () { - readThisDelayed = [1, 3, 5]; - })(); - - es.readable(function (count, callback) { - - if (readThisDelayed) { - var that = this; - readThisDelayed.forEach(function (item) { - that.emit('data', item); - }); - - this.emit('end'); - test.done(); - } - - callback(); - }); -}; - -// -// emitting multiple errors is not supported by stream. -// -// I do not think that this is a good idea, at least, there should be an option to pipe to -// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. -// an error might not necessarily mean the end of the stream. it depends on the error, at least. -// -// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. -// -// basically, I want to be able use pipe to transform objects, and if one object is invalid, -// the next might still be good, so I should get to choose if it's gonna stop. -// re-enstate this test when this issue progresses. -// -// hmm. I could add this to es.connect by deregistering the error listener, -// but I would rather it be an option in core. - -/* -exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { - - var readThis = d.map(1, 100, d.id) - , errors = 0 - var reader = - es.readable(function (i, callback) { - console.log(i, readThis.length) - if(i >= readThis.length) - return this.emit('end') - if(!(readThis[i] % 7)) - return callback(readThis[i]) - callback(null, readThis[i]) - }, true) - - var writer = es.writeArray(function (err, array) { - if(err) throw err - it(array).every(function (u){ - it(u % 7).notEqual(0) - }).property('length', 80) - it(errors).equal(14) - test.done() - }) - - reader.on('error', function (u) { - errors ++ - console.log(u) - if('number' !== typeof u) - throw u - - it(u % 7).equal(0) - - }) - - reader.pipe(writer) -} -*/ - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/replace.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/replace.asynct.js deleted file mode 100644 index 1c8735bd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/replace.asynct.js +++ /dev/null @@ -1,76 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , spec = require('stream-spec') - -var next = process.nextTick - -var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' - , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' - , fizzbuzzwhitespce = ' 12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB ' - -exports ['fizz buzz'] = function (test) { - - var readThis = d.map(1, 100, function (i) { - return ( - ! (i % 3 || i % 5) ? "FB" : - !(i % 3) ? "F" : - !(i % 5) ? "B" : - ''+i - ) - }) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - var join = es.wait(function (err, string){ - it(string).equal(fizzbuzz) - test.done() - }) - reader.pipe(join) - -} - - -exports ['fizz buzz replace'] = function (test) { - var split = es.split(/(1)/) - var replace = es.replace('7', 'seven') -// var x = spec(replace).through() - split - .pipe(replace) - .pipe(es.join(function (err, string) { - it(string).equal(fizz7buzz) - })) - - replace.on('close', function () { -// x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} - - -exports ['fizz buzz replace whitespace using regexp'] = function (test) { - var split = es.split(/(1)/) - var replaceLeading = es.replace(/^[\s]*/, '') - var replaceTrailing = es.replace(/[\s]*$/, '') -// var x = spec(replace).through() - split - .pipe(replaceLeading) - .pipe(replaceTrailing) - .pipe(es.join(function (err, string) { - it(string).equal(fizzbuzz) - })) - - replaceTrailing.on('close', function () { -// x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/simple-map.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/simple-map.asynct.js deleted file mode 100644 index 25121f93..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/simple-map.asynct.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -var es = require('../') - , it = require('it-is') - , u = require('ubelt') - , spec = require('stream-spec') - , Stream = require('stream') - , from = require('from') - , through = require('through') - -//REFACTOR THIS TEST TO USE es.readArray and es.writeArray - -function writeArray(array, stream) { - - array.forEach( function (j) { - stream.write(j) - }) - stream.end() - -} - -function readStream(stream, done) { - - var array = [] - stream.on('data', function (data) { - array.push(data) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -//call sink on each write, -//and complete when finished. - -function pauseStream (prob, delay) { - var pauseIf = ( - 'number' == typeof prob - ? function () { - return Math.random() < prob - } - : 'function' == typeof prob - ? prob - : 0.1 - ) - var delayer = ( - !delay - ? process.nextTick - : 'number' == typeof delay - ? function (next) { setTimeout(next, delay) } - : delay - ) - - return es.through(function (data) { - if(!this.paused && pauseIf()) { - console.log('PAUSE STREAM PAUSING') - this.pause() - var self = this - delayer(function () { - console.log('PAUSE STREAM RESUMING') - self.resume() - }) - } - console.log("emit ('data', " + data + ')') - this.emit('data', data) - }) -} - -exports ['simple map'] = function (test) { - - var input = u.map(1, 1000, function () { - return Math.random() - }) - var expected = input.map(function (v) { - return v * 2 - }) - - var pause = pauseStream(0.1) - var fs = from(input) - var ts = es.writeArray(function (err, ar) { - it(ar).deepEqual(expected) - test.done() - }) - var map = es.through(function (data) { - this.emit('data', data * 2) - }) - - spec(map).through().validateOnExit() - spec(pause).through().validateOnExit() - - fs.pipe(map).pipe(pause).pipe(ts) -} - -exports ['simple map applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - - var doubler = es.map(function (data, cb) { - cb(null, data * 2) - }) - - spec(doubler).through().validateOnExit() - - //a map is only a middle man, so it is both readable and writable - - it(doubler).has({ - readable: true, - writable: true, - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) -// process.nextTick(x.validate) - test.done() - }) - - writeArray(input, doubler) - -} - -exports['pipe two maps together'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - function dd (data, cb) { - cb(null, data * 2) - } - var doubler1 = es.map(dd), doubler2 = es.map(dd) - - doubler1.pipe(doubler2) - - spec(doubler1).through().validateOnExit() - spec(doubler2).through().validateOnExit() - - readStream(doubler2, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 4 - })) - test.done() - }) - - writeArray(input, doubler1) - -} - -//next: -// -// test pause, resume and drian. -// - -// then make a pipe joiner: -// -// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) -// -// will return a single stream that write goes to the first - -exports ['map will not call end until the callback'] = function (test) { - - var ticker = es.map(function (data, cb) { - process.nextTick(function () { - cb(null, data * 2) - }) - }) - - spec(ticker).through().validateOnExit() - - ticker.write('x') - ticker.end() - - ticker.on('end', function () { - test.done() - }) -} - - -exports ['emit error thrown'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function () { - throw err - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - -// onExit(spec(mapper).basic().validate) -//need spec that says stream may error. - - mapper.write('hello') - -} - -exports ['emit error calledback'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function (data, callback) { - callback(err) - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['do not emit drain if not paused'] = function (test) { - - var map = es.map(function (data, callback) { - u.delay(callback)(null, 1) - return true - }) - - spec(map).through().pausable().validateOnExit() - - map.on('drain', function () { - it(false).ok('should not emit drain unless the stream is paused') - }) - - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - setTimeout(function () {map.end()},10) - map.on('end', test.done) -} - -exports ['emits drain if paused, when all '] = function (test) { - var active = 0 - var drained = false - var map = es.map(function (data, callback) { - active ++ - u.delay(function () { - active -- - callback(null, 1) - })() - console.log('WRITE', false) - return false - }) - - spec(map).through().validateOnExit() - - map.on('drain', function () { - drained = true - it(active).equal(0, 'should emit drain when all maps are done') - }) - - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - - process.nextTick(function () {map.end()},10) - - map.on('end', function () { - console.log('end') - it(drained).ok('shoud have emitted drain before end') - test.done() - }) - -} - -exports ['map applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.map(function (data, callback) { - if (data % 2) - callback(null, data * 2) - else - callback() - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['simple mapSync applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['mapSync applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - if (data % 2) - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/spec.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/spec.asynct.js deleted file mode 100644 index 6d5fb6b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/spec.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - assert that data is called many times - assert that end is called eventually - - assert that when stream enters pause state, - on drain is emitted eventually. -*/ - -var es = require('..') -var it = require('it-is').style('colour') -var spec = require('stream-spec') - -exports['simple stream'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.pause() - stream.write(1) - stream.resume() - stream.write(1) - stream.end(2) //this will call write() - - process.nextTick(function (){ - x.validate() - test.done() - }) -} - -exports['throw on write when !writable'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.end(2) //this will call write() - stream.write(1) //this will be throwing..., but the spec will catch it. - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - -exports['end fast'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.end() //this will call write() - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - - -/* - okay, that was easy enough, whats next? - - say, after you call paused(), write should return false - until resume is called. - - simple way to implement this: - write must return !paused - after pause() paused = true - after resume() paused = false - - on resume, if !paused drain is emitted again. - after drain, !paused - - there are lots of subtle ordering bugs in streams. - - example, set !paused before emitting drain. - - the stream api is stateful. -*/ - - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/split.asynct.js deleted file mode 100644 index 7d44bac0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/split.asynct.js +++ /dev/null @@ -1,47 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['es.split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = es.split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/stringify.js deleted file mode 100644 index d158185a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/stringify.js +++ /dev/null @@ -1,15 +0,0 @@ - - - -var es = require('../') - -exports['handle buffer'] = function (t) { - - - es.stringify().on('data', function (d) { - t.equal(d.trim(), JSON.stringify('HELLO')) - t.end() - }).write(new Buffer('HELLO')) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/writeArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/writeArray.asynct.js deleted file mode 100644 index 5d705de8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/event-stream/test/writeArray.asynct.js +++ /dev/null @@ -1,31 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports ['write an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - d.each(readThis, writer.write.bind(writer)) - writer.end() - -} - - -exports ['writer is writable, but not readable'] = function (test) { - var reader = es.writeArray(function () {}) - it(reader).has({ - readable: false, - writable: true - }) - - test.done() -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/LICENSE deleted file mode 100755 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/README.md deleted file mode 100644 index 3dc0fafc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/README.md +++ /dev/null @@ -1,81 +0,0 @@ -# glob-stream [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url] - - -## Information - - - - - - - - - - - - - -
    Packageglob-stream
    DescriptionFile system globs as a stream
    Node Version>= 0.9
    - -This is a simple wrapper around node-glob to make it streamy. - -## Usage - -```javascript -var gs = require('glob-stream'); - -var stream = gs.create('./files/**/*.coffee', {options}); - -stream.on('data', function(file){ - // file has path, base, and cwd attrs -}); -``` - -You can pass any combination of globs. One caveat is that you can not only pass a glob negation, you must give it at least one positive glob so it knows where to start. All given must match for the file to be returned. - -### Options - -- cwd - - Default is `process.cwd()` -- base - - Default is everything before a glob starts (see [glob2base](https://github.com/wearefractal/glob2base)) -- cwdbase - - Default is `false` - - When true it is the same as saying opt.base = opt.cwd - -This argument is passed directly to [node-glob](https://github.com/isaacs/node-glob) so check there for more options - -#### Glob - -```js -var stream = gs.create(['./**/*.js', '!./node_modules/**/*']); -``` - -Globs are executed in order, so negations should follow positive globs. For example: - -```js -gulp.src(['!b*.js', '*.js']) -``` - -would not exclude any files, but this would - -```js -gulp.src(['*.js', '!b*.js']) -``` - -#### Related - -- [globby](https://github.com/sindresorhus/globby) - Non-streaming `glob` wrapper with support for multiple patterns. - - -[npm-url]: https://www.npmjs.com/package/glob-stream -[npm-image]: https://badge.fury.io/js/glob-stream.svg - -[travis-url]: https://travis-ci.org/wearefractal/glob-stream -[travis-image]: https://travis-ci.org/wearefractal/glob-stream.svg?branch=master - -[coveralls-url]: https://coveralls.io/r/wearefractal/glob-stream -[coveralls-image]: https://coveralls.io/repos/wearefractal/glob-stream/badge.svg - -[david-url]: https://david-dm.org/wearefractal/glob-stream -[david-image]: https://david-dm.org/wearefractal/glob-stream.svg diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/index.js deleted file mode 100644 index 60dd8580..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/index.js +++ /dev/null @@ -1,137 +0,0 @@ -/*jslint node: true */ - -'use strict'; - -var through2 = require('through2'); -var Combine = require('ordered-read-streams'); -var unique = require('unique-stream'); - -var glob = require('glob'); -var Minimatch = require('minimatch').Minimatch; -var glob2base = require('glob2base'); -var path = require('path'); - -var gs = { - // creates a stream for a single glob or filter - createStream: function(ourGlob, negatives, opt) { - // remove path relativity to make globs make sense - ourGlob = unrelative(opt.cwd, ourGlob); - - // create globbing stuff - var globber = new glob.Glob(ourGlob, opt); - - // extract base path from glob - var basePath = opt.base || glob2base(globber); - - // create stream and map events from globber to it - var stream = through2.obj(negatives.length ? filterNegatives : undefined); - - globber.on('error', stream.emit.bind(stream, 'error')); - globber.on('end', function(/* some args here so can't use bind directly */){ - stream.end(); - }); - globber.on('match', function(filename) { - stream.write({ - cwd: opt.cwd, - base: basePath, - path: path.resolve(opt.cwd, filename) - }); - }); - - return stream; - - function filterNegatives(filename, enc, cb) { - var matcha = isMatch.bind(null, filename); - if (negatives.every(matcha)) { - cb(null, filename); // pass - } else { - cb(); // ignore - } - } - }, - - // creates a stream for multiple globs or filters - create: function(globs, opt) { - if (!opt) opt = {}; - if (typeof opt.cwd !== 'string') opt.cwd = process.cwd(); - if (typeof opt.dot !== 'boolean') opt.dot = false; - if (typeof opt.silent !== 'boolean') opt.silent = true; - if (typeof opt.nonull !== 'boolean') opt.nonull = false; - if (typeof opt.cwdbase !== 'boolean') opt.cwdbase = false; - if (opt.cwdbase) opt.base = opt.cwd; - - // only one glob no need to aggregate - if (!Array.isArray(globs)) globs = [globs]; - - var positives = []; - var negatives = []; - - globs.forEach(function(glob, index) { - if (typeof glob !== 'string' && !(glob instanceof RegExp)) { - throw new Error('Invalid glob at index ' + index); - } - - var globArray = isNegative(glob) ? negatives : positives; - - // create Minimatch instances for negative glob patterns - if (globArray === negatives && typeof glob === 'string') { - glob = new Minimatch(unrelative(opt.cwd, glob), opt); - } - - globArray.push({ - index: index, - glob: glob - }); - }); - - if (positives.length === 0) throw new Error('Missing positive glob'); - - // only one positive glob no need to aggregate - if (positives.length === 1) return streamFromPositive(positives[0]); - - // create all individual streams - var streams = positives.map(streamFromPositive); - - // then just pipe them to a single unique stream and return it - var aggregate = new Combine(streams); - var uniqueStream = unique('path'); - - return aggregate.pipe(uniqueStream); - - function streamFromPositive(positive) { - var negativeGlobs = negatives.filter(indexGreaterThan(positive.index)).map(toGlob); - return gs.createStream(positive.glob, negativeGlobs, opt); - } - } -}; - -function isMatch(file, matcher) { - if (matcher instanceof Minimatch) return matcher.match(file.path); - if (matcher instanceof RegExp) return matcher.test(file.path); -} - -function isNegative(pattern) { - if (typeof pattern === 'string') return pattern[0] === '!'; - if (pattern instanceof RegExp) return true; -} - -function unrelative(cwd, glob) { - var mod = ''; - if (glob[0] === '!') { - mod = glob[0]; - glob = glob.slice(1); - } - return mod+path.resolve(cwd, glob); -} - -function indexGreaterThan(index) { - return function(obj) { - return obj.index > index; - }; -} - -function toGlob(obj) { - return obj.glob; -} - -module.exports = gs; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/package.json deleted file mode 100644 index ba5b20f5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "glob-stream@^4.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "glob-stream@>=4.0.1 <5.0.0", - "_id": "glob-stream@4.1.1", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/glob-stream", - "_nodeVersion": "1.5.1", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.7.0", - "_phantomChildren": {}, - "_requested": { - "name": "glob-stream", - "raw": "glob-stream@^4.0.1", - "rawSpec": "^4.0.1", - "scope": null, - "spec": ">=4.0.1 <5.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-4.1.1.tgz", - "_shasum": "b842df10d688c7eb6bcfcebd846f3852296b3200", - "_shrinkwrap": null, - "_spec": "glob-stream@^4.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/glob-stream/issues" - }, - "dependencies": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^2.0.2" - }, - "description": "File system globs as a stream", - "devDependencies": { - "coveralls": "^2.11.2", - "istanbul": "^0.3.0", - "istanbul-coveralls": "^1.0.1", - "jshint": "^2.5.10", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "0.0.1", - "rimraf": "^2.2.5", - "should": "^4.3.0" - }, - "directories": {}, - "dist": { - "shasum": "b842df10d688c7eb6bcfcebd846f3852296b3200", - "tarball": "https://registry.npmjs.org/glob-stream/-/glob-stream-4.1.1.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js" - ], - "gitHead": "6411ea4891d24227f94f302bd52d79584af8fa9b", - "homepage": "https://github.com/wearefractal/glob-stream", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/glob-stream/raw/master/LICENSE" - } - ], - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "glob-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/wearefractal/glob-stream.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly && istanbul-coveralls", - "test": "jshint && mocha" - }, - "version": "4.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/LICENSE deleted file mode 100755 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/README.md deleted file mode 100644 index 129311eb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# glob-watcher [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][david-image]][david-url] - -## Information - - - - - - - - - - - - - -
    Packageglob-watcher
    DescriptionWatch globs
    Node Version>= 0.9
    - -## Usage - -```javascript -var watch = require('glob-watcher'); - -// callback interface -watch(["./*.js", "!./something.js"], function(evt){ - // evt has what file changed and all that jazz -}); - -// EE interface -var watcher = watch(["./*.js", "!./something.js"]); -watcher.on('change', function(evt) { - // evt has what file changed and all that jazz -}); - -// add files after it has been created -watcher.add("./somefolder/somefile.js"); -``` - - -[npm-url]: https://npmjs.org/package/glob-watcher -[npm-image]: https://badge.fury.io/js/glob-watcher.png - -[travis-url]: https://travis-ci.org/wearefractal/glob-watcher -[travis-image]: https://travis-ci.org/wearefractal/glob-watcher.png?branch=master - -[coveralls-url]: https://coveralls.io/r/wearefractal/glob-watcher -[coveralls-image]: https://coveralls.io/repos/wearefractal/glob-watcher/badge.png - -[depstat-url]: https://david-dm.org/wearefractal/glob-watcher -[depstat-image]: https://david-dm.org/wearefractal/glob-watcher.png - -[david-url]: https://david-dm.org/wearefractal/glob-watcher -[david-image]: https://david-dm.org/wearefractal/glob-watcher.png?theme=shields.io diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/index.js deleted file mode 100644 index b31f1767..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var gaze = require('gaze'); -var EventEmitter = require('events').EventEmitter; - -module.exports = function(glob, opts, cb) { - var out = new EventEmitter(); - - if (typeof opts === 'function') { - cb = opts; - opts = {}; - } - - var watcher = gaze(glob, opts, function(err, rwatcher){ - if (err) out.emit('error', err); - rwatcher.on('all', function(evt, path, old){ - var outEvt = {type: evt, path: path}; - if(old) outEvt.old = old; - out.emit('change', outEvt); - if(cb) cb(outEvt); - }); - }); - - watcher.on('end', out.emit.bind(out, 'end')); - watcher.on('error', out.emit.bind(out, 'error')); - watcher.on('ready', out.emit.bind(out, 'ready')); - watcher.on('nomatch', out.emit.bind(out, 'nomatch')); - - out.end = function(){ - return watcher.close(); - }; - out.add = function(){ - return watcher.add.apply(watcher, arguments); - }; - out.remove = function(){ - return watcher.remove.apply(watcher, arguments); - }; - out._watcher = watcher; - - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/package.json deleted file mode 100644 index 6bb1e195..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob-watcher/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "glob-watcher@^0.0.8", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "glob-watcher@>=0.0.8 <0.0.9", - "_id": "glob-watcher@0.0.8", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/glob-watcher", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.5.0", - "_phantomChildren": {}, - "_requested": { - "name": "glob-watcher", - "raw": "glob-watcher@^0.0.8", - "rawSpec": "^0.0.8", - "scope": null, - "spec": ">=0.0.8 <0.0.9", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.8.tgz", - "_shasum": "68aeb661e7e2ce8d3634381b2ec415f00c6bc2a4", - "_shrinkwrap": null, - "_spec": "glob-watcher@^0.0.8", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/glob-watcher/issues" - }, - "dependencies": { - "gaze": "^0.5.1" - }, - "description": "Watch globs", - "devDependencies": { - "coveralls": "^2.6.1", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "mkdirp": "^0.5.0", - "mocha": "^2.0.1", - "mocha-lcov-reporter": "0.0.1", - "rimraf": "^2.2.5", - "should": "^5.0.0" - }, - "directories": {}, - "dist": { - "shasum": "68aeb661e7e2ce8d3634381b2ec415f00c6bc2a4", - "tarball": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.8.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "195a14d51b734fd2ce762f44ec00de97ecb56da7", - "homepage": "http://github.com/wearefractal/glob-watcher", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/glob-watcher/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "glob-watcher", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/glob-watcher.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint" - }, - "version": "0.0.8" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/README.md deleted file mode 100644 index 258257ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/README.md +++ /dev/null @@ -1,369 +0,0 @@ -[![Build Status](https://travis-ci.org/isaacs/node-glob.svg?branch=master)](https://travis-ci.org/isaacs/node-glob/) [![Dependency Status](https://david-dm.org/isaacs/node-glob.svg)](https://david-dm.org/isaacs/node-glob) [![devDependency Status](https://david-dm.org/isaacs/node-glob/dev-status.svg)](https://david-dm.org/isaacs/node-glob#info=devDependencies) [![optionalDependency Status](https://david-dm.org/isaacs/node-glob/optional-status.svg)](https://david-dm.org/isaacs/node-glob#info=optionalDependencies) - -# Glob - -Match files using the patterns the shell uses, like stars and stuff. - -This is a glob implementation in JavaScript. It uses the `minimatch` -library to do its matching. - -![](oh-my-glob.gif) - -## Usage - -```javascript -var glob = require("glob") - -// options is optional -glob("**/*.js", options, function (er, files) { - // files is an array of filenames. - // If the `nonull` option is set, and nothing - // was found, then files is ["**/*.js"] - // er is an error object or null. -}) -``` - -## Glob Primer - -"Globs" are the patterns you type when you do stuff like `ls *.js` on -the command line, or put `build/*` in a `.gitignore` file. - -Before parsing the path part patterns, braced sections are expanded -into a set. Braced sections start with `{` and end with `}`, with any -number of comma-delimited sections within. Braced sections may contain -slash characters, so `a{/b/c,bcd}` would expand into `a/b/c` and `abcd`. - -The following characters have special magic meaning when used in a -path portion: - -* `*` Matches 0 or more characters in a single path portion -* `?` Matches 1 character -* `[...]` Matches a range of characters, similar to a RegExp range. - If the first character of the range is `!` or `^` then it matches - any character not in the range. -* `!(pattern|pattern|pattern)` Matches anything that does not match - any of the patterns provided. -* `?(pattern|pattern|pattern)` Matches zero or one occurrence of the - patterns provided. -* `+(pattern|pattern|pattern)` Matches one or more occurrences of the - patterns provided. -* `*(a|b|c)` Matches zero or more occurrences of the patterns provided -* `@(pattern|pat*|pat?erN)` Matches exactly one of the patterns - provided -* `**` If a "globstar" is alone in a path portion, then it matches - zero or more directories and subdirectories searching for matches. - It does not crawl symlinked directories. - -### Dots - -If a file or directory path portion has a `.` as the first character, -then it will not match any glob pattern unless that pattern's -corresponding path part also has a `.` as its first character. - -For example, the pattern `a/.*/c` would match the file at `a/.b/c`. -However the pattern `a/*/c` would not, because `*` does not start with -a dot character. - -You can make glob treat dots as normal characters by setting -`dot:true` in the options. - -### Basename Matching - -If you set `matchBase:true` in the options, and the pattern has no -slashes in it, then it will seek for any file anywhere in the tree -with a matching basename. For example, `*.js` would match -`test/simple/basic.js`. - -### Negation - -The intent for negation would be for a pattern starting with `!` to -match everything that *doesn't* match the supplied pattern. However, -the implementation is weird, and for the time being, this should be -avoided. The behavior will change or be deprecated in version 5. - -### Empty Sets - -If no matching files are found, then an empty array is returned. This -differs from the shell, where the pattern itself is returned. For -example: - - $ echo a*s*d*f - a*s*d*f - -To get the bash-style behavior, set the `nonull:true` in the options. - -### See Also: - -* `man sh` -* `man bash` (Search for "Pattern Matching") -* `man 3 fnmatch` -* `man 5 gitignore` -* [minimatch documentation](https://github.com/isaacs/minimatch) - -## glob.hasMagic(pattern, [options]) - -Returns `true` if there are any special characters in the pattern, and -`false` otherwise. - -Note that the options affect the results. If `noext:true` is set in -the options object, then `+(a|b)` will not be considered a magic -pattern. If the pattern has a brace expansion, like `a/{b/c,x/y}` -then that is considered magical, unless `nobrace:true` is set in the -options. - -## glob(pattern, [options], cb) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* `cb` {Function} - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Perform an asynchronous glob search. - -## glob.sync(pattern, [options]) - -* `pattern` {String} Pattern to be matched -* `options` {Object} -* return: {Array} filenames found matching the pattern - -Perform a synchronous glob search. - -## Class: glob.Glob - -Create a Glob object by instantiating the `glob.Glob` class. - -```javascript -var Glob = require("glob").Glob -var mg = new Glob(pattern, options, cb) -``` - -It's an EventEmitter, and starts walking the filesystem to find matches -immediately. - -### new glob.Glob(pattern, [options], [cb]) - -* `pattern` {String} pattern to search for -* `options` {Object} -* `cb` {Function} Called when an error occurs, or matches are found - * `err` {Error | null} - * `matches` {Array} filenames found matching the pattern - -Note that if the `sync` flag is set in the options, then matches will -be immediately available on the `g.found` member. - -### Properties - -* `minimatch` The minimatch object that the glob uses. -* `options` The options object passed in. -* `aborted` Boolean which is set to true when calling `abort()`. There - is no way at this time to continue a glob search after aborting, but - you can re-use the statCache to avoid having to duplicate syscalls. -* `statCache` Collection of all the stat results the glob search - performed. -* `cache` Convenience object. Each field has the following possible - values: - * `false` - Path does not exist - * `true` - Path exists - * `'DIR'` - Path exists, and is not a directory - * `'FILE'` - Path exists, and is a directory - * `[file, entries, ...]` - Path exists, is a directory, and the - array value is the results of `fs.readdir` -* `statCache` Cache of `fs.stat` results, to prevent statting the same - path multiple times. -* `symlinks` A record of which paths are symbolic links, which is - relevant in resolving `**` patterns. -* `realpathCache` An optional object which is passed to `fs.realpath` - to minimize unnecessary syscalls. It is stored on the instantiated - Glob object, and may be re-used. - -### Events - -* `end` When the matching is finished, this is emitted with all the - matches found. If the `nonull` option is set, and no match was found, - then the `matches` list contains the original pattern. The matches - are sorted, unless the `nosort` flag is set. -* `match` Every time a match is found, this is emitted with the matched. -* `error` Emitted when an unexpected error is encountered, or whenever - any fs error occurs if `options.strict` is set. -* `abort` When `abort()` is called, this event is raised. - -### Methods - -* `pause` Temporarily stop the search -* `resume` Resume the search -* `abort` Stop the search forever - -### Options - -All the options that can be passed to Minimatch can also be passed to -Glob to change pattern matching behavior. Also, some have been added, -or have glob-specific ramifications. - -All options are false by default, unless otherwise noted. - -All options are added to the Glob object, as well. - -If you are running many `glob` operations, you can pass a Glob object -as the `options` argument to a subsequent operation to shortcut some -`stat` and `readdir` calls. At the very least, you may pass in shared -`symlinks`, `statCache`, `realpathCache`, and `cache` options, so that -parallel glob operations will be sped up by sharing information about -the filesystem. - -* `cwd` The current working directory in which to search. Defaults - to `process.cwd()`. -* `root` The place where patterns starting with `/` will be mounted - onto. Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix - systems, and `C:\` or some such on Windows.) -* `dot` Include `.dot` files in normal matches and `globstar` matches. - Note that an explicit dot in a portion of the pattern will always - match dot files. -* `nomount` By default, a pattern starting with a forward-slash will be - "mounted" onto the root setting, so that a valid filesystem path is - returned. Set this flag to disable that behavior. -* `mark` Add a `/` character to directory matches. Note that this - requires additional stat calls. -* `nosort` Don't sort the results. -* `stat` Set to true to stat *all* results. This reduces performance - somewhat, and is completely unnecessary, unless `readdir` is presumed - to be an untrustworthy indicator of file existence. -* `silent` When an unusual error is encountered when attempting to - read a directory, a warning will be printed to stderr. Set the - `silent` option to true to suppress these warnings. -* `strict` When an unusual error is encountered when attempting to - read a directory, the process will just continue on in search of - other matches. Set the `strict` option to raise an error in these - cases. -* `cache` See `cache` property above. Pass in a previously generated - cache object to save some fs calls. -* `statCache` A cache of results of filesystem information, to prevent - unnecessary stat calls. While it should not normally be necessary - to set this, you may pass the statCache from one glob() call to the - options object of another, if you know that the filesystem will not - change between calls. (See "Race Conditions" below.) -* `symlinks` A cache of known symbolic links. You may pass in a - previously generated `symlinks` object to save `lstat` calls when - resolving `**` matches. -* `sync` DEPRECATED: use `glob.sync(pattern, opts)` instead. -* `nounique` In some cases, brace-expanded patterns can result in the - same file showing up multiple times in the result set. By default, - this implementation prevents duplicates in the result set. Set this - flag to disable that behavior. -* `nonull` Set to never return an empty set, instead returning a set - containing the pattern itself. This is the default in glob(3). -* `debug` Set to enable debug logging in minimatch and glob. -* `nobrace` Do not expand `{a,b}` and `{1..3}` brace sets. -* `noglobstar` Do not match `**` against multiple filenames. (Ie, - treat it as a normal `*` instead.) -* `noext` Do not match `+(a|b)` "extglob" patterns. -* `nocase` Perform a case-insensitive match. Note: on - case-insensitive filesystems, non-magic patterns will match by - default, since `stat` and `readdir` will not raise errors. -* `matchBase` Perform a basename-only match if the pattern does not - contain any slash characters. That is, `*.js` would be treated as - equivalent to `**/*.js`, matching all js files in all directories. -* `nonegate` Suppress `negate` behavior. (See below.) -* `nocomment` Suppress `comment` behavior. (See below.) -* `nonull` Return the pattern when no matches are found. -* `nodir` Do not match directories, only files. (Note: to match - *only* directories, simply put a `/` at the end of the pattern.) -* `ignore` Add a pattern or an array of patterns to exclude matches. -* `follow` Follow symlinked directories when expanding `**` patterns. - Note that this can result in a lot of duplicate references in the - presence of cyclic links. -* `realpath` Set to true to call `fs.realpath` on all of the results. - In the case of a symlink that cannot be resolved, the full absolute - path to the matched entry is returned (though it will usually be a - broken symlink) - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between node-glob and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.3, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -Note that symlinked directories are not crawled as part of a `**`, -though their contents may match against subsequent portions of the -pattern. This prevents infinite loops and duplicates and the like. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then glob returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - -## Windows - -**Please only use forward-slashes in glob expressions.** - -Though windows uses either `/` or `\` as its path separator, only `/` -characters are used by this glob implementation. You must use -forward-slashes **only** in glob expressions. Back-slashes will always -be interpreted as escape characters, not path separators. - -Results from absolute patterns such as `/foo/*` are mounted onto the -root setting using `path.join`. On windows, this will by default result -in `/foo/*` matching `C:\foo\bar.txt`. - -## Race Conditions - -Glob searching, by its very nature, is susceptible to race conditions, -since it relies on directory walking and such. - -As a result, it is possible that a file that exists when glob looks for -it may have been deleted or modified by the time it returns the result. - -As part of its internal implementation, this program caches all stat -and readdir calls that it makes, in order to cut down on system -overhead. However, this also makes it even more susceptible to races, -especially if the cache or statCache objects are reused between glob -calls. - -Users are thus advised not to use a glob result as a guarantee of -filesystem state in the face of rapid changes. For the vast majority -of operations, this is never a problem. - -## Contributing - -Any change to behavior (including bugfixes) must come with a test. - -Patches that fail tests or reduce performance will be rejected. - -``` -# to run tests -npm test - -# to re-generate test fixtures -npm run test-regen - -# to benchmark against bash/zsh -npm run bench - -# to profile javascript -npm run prof -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/common.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/common.js deleted file mode 100644 index cd7c8244..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/common.js +++ /dev/null @@ -1,237 +0,0 @@ -exports.alphasort = alphasort -exports.alphasorti = alphasorti -exports.isAbsolute = process.platform === "win32" ? absWin : absUnix -exports.setopts = setopts -exports.ownProp = ownProp -exports.makeAbs = makeAbs -exports.finish = finish -exports.mark = mark -exports.isIgnored = isIgnored -exports.childrenIgnored = childrenIgnored - -function ownProp (obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field) -} - -var path = require("path") -var minimatch = require("minimatch") -var Minimatch = minimatch.Minimatch - -function absWin (p) { - if (absUnix(p)) return true - // pull off the device/UNC bit from a windows path. - // from node's lib/path.js - var splitDeviceRe = - /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/ - var result = splitDeviceRe.exec(p) - var device = result[1] || '' - var isUnc = device && device.charAt(1) !== ':' - var isAbsolute = !!result[2] || isUnc // UNC paths are always absolute - - return isAbsolute -} - -function absUnix (p) { - return p.charAt(0) === "/" || p === "" -} - -function alphasorti (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()) -} - -function alphasort (a, b) { - return a.localeCompare(b) -} - -function setupIgnores (self, options) { - self.ignore = options.ignore || [] - - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore] - - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap) - } -} - -function ignoreMap (pattern) { - var gmatcher = null - if (pattern.slice(-3) === '/**') { - var gpattern = pattern.replace(/(\/\*\*)+$/, '') - gmatcher = new Minimatch(gpattern, { nonegate: true }) - } - - return { - matcher: new Minimatch(pattern, { nonegate: true }), - gmatcher: gmatcher - } -} - -function setopts (self, pattern, options) { - if (!options) - options = {} - - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } - - self.pattern = pattern - self.strict = options.strict !== false - self.realpath = !!options.realpath - self.realpathCache = options.realpathCache || Object.create(null) - self.follow = !!options.follow - self.dot = !!options.dot - self.mark = !!options.mark - self.nodir = !!options.nodir - if (self.nodir) - self.mark = true - self.sync = !!options.sync - self.nounique = !!options.nounique - self.nonull = !!options.nonull - self.nosort = !!options.nosort - self.nocase = !!options.nocase - self.stat = !!options.stat - self.noprocess = !!options.noprocess - - self.maxLength = options.maxLength || Infinity - self.cache = options.cache || Object.create(null) - self.statCache = options.statCache || Object.create(null) - self.symlinks = options.symlinks || Object.create(null) - - setupIgnores(self, options) - - self.changedCwd = false - var cwd = process.cwd() - if (!ownProp(options, "cwd")) - self.cwd = cwd - else { - self.cwd = options.cwd - self.changedCwd = path.resolve(options.cwd) !== cwd - } - - self.root = options.root || path.resolve(self.cwd, "/") - self.root = path.resolve(self.root) - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/") - - self.nomount = !!options.nomount - - self.minimatch = new Minimatch(pattern, options) - self.options = self.minimatch.options -} - -function finish (self) { - var nou = self.nounique - var all = nou ? [] : Object.create(null) - - for (var i = 0, l = self.matches.length; i < l; i ++) { - var matches = self.matches[i] - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - // do like the shell, and spit out the literal glob - var literal = self.minimatch.globSet[i] - if (nou) - all.push(literal) - else - all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) - all.push.apply(all, m) - else - m.forEach(function (m) { - all[m] = true - }) - } - } - - if (!nou) - all = Object.keys(all) - - if (!self.nosort) - all = all.sort(self.nocase ? alphasorti : alphasort) - - // at *some* point we statted all of these - if (self.mark) { - for (var i = 0; i < all.length; i++) { - all[i] = self._mark(all[i]) - } - if (self.nodir) { - all = all.filter(function (e) { - return !(/\/$/.test(e)) - }) - } - } - - if (self.ignore.length) - all = all.filter(function(m) { - return !isIgnored(self, m) - }) - - self.found = all -} - -function mark (self, p) { - var abs = makeAbs(self, p) - var c = self.cache[abs] - var m = p - if (c) { - var isDir = c === 'DIR' || Array.isArray(c) - var slash = p.slice(-1) === '/' - - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) - - if (m !== p) { - var mabs = makeAbs(self, m) - self.statCache[mabs] = self.statCache[abs] - self.cache[mabs] = self.cache[abs] - } - } - - return m -} - -// lotta situps... -function makeAbs (self, f) { - var abs = f - if (f.charAt(0) === '/') { - abs = path.join(self.root, f) - } else if (exports.isAbsolute(f)) { - abs = f - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f) - } else if (self.realpath) { - abs = path.resolve(f) - } - return abs -} - - -// Return true, if pattern ends with globstar '**', for the accompanying parent directory. -// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents -function isIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) - }) -} - -function childrenIgnored (self, path) { - if (!self.ignore.length) - return false - - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path)) - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/glob.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/glob.js deleted file mode 100644 index eac0693c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/glob.js +++ /dev/null @@ -1,740 +0,0 @@ -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern, false) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern, inGlobStar) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// -// If inGlobStar and PREFIX is symlink and points to dir -// set ENTRIES = [] -// else readdir(PREFIX) as ENTRIES -// If fail, END -// -// with ENTRIES -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// // Mark that this entry is a globstar match -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. - -module.exports = glob - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var inherits = require('inherits') -var EE = require('events').EventEmitter -var path = require('path') -var assert = require('assert') -var globSync = require('./sync.js') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var isAbsolute = common.isAbsolute -var setopts = common.setopts -var ownProp = common.ownProp -var inflight = require('inflight') -var util = require('util') -var childrenIgnored = common.childrenIgnored - -var once = require('once') - -function glob (pattern, options, cb) { - if (typeof options === 'function') cb = options, options = {} - if (!options) options = {} - - if (options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return globSync(pattern, options) - } - - return new Glob(pattern, options, cb) -} - -glob.sync = globSync -var GlobSync = glob.GlobSync = globSync.GlobSync - -// old api surface -glob.glob = glob - -glob.hasMagic = function (pattern, options_) { - var options = util._extend({}, options_) - options.noprocess = true - - var g = new Glob(pattern, options) - var set = g.minimatch.set - if (set.length > 1) - return true - - for (var j = 0; j < set[0].length; j++) { - if (typeof set[0][j] !== 'string') - return true - } - - return false -} - -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - - if (options && options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return new GlobSync(pattern, options) - } - - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb) - - setopts(this, pattern, options) - this._didRealPath = false - - // process each pattern in the minimatch set - var n = this.minimatch.set.length - - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) - - if (typeof cb === 'function') { - cb = once(cb) - this.on('error', cb) - this.on('end', function (matches) { - cb(null, matches) - }) - } - - var self = this - var n = this.minimatch.set.length - this._processing = 0 - this.matches = new Array(n) - - this._emitQueue = [] - this._processQueue = [] - this.paused = false - - if (this.noprocess) - return this - - if (n === 0) - return done() - - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false, done) - } - - function done () { - --self._processing - if (self._processing <= 0) - self._finish() - } -} - -Glob.prototype._finish = function () { - assert(this instanceof Glob) - if (this.aborted) - return - - if (this.realpath && !this._didRealpath) - return this._realpath() - - common.finish(this) - this.emit('end', this.found) -} - -Glob.prototype._realpath = function () { - if (this._didRealpath) - return - - this._didRealpath = true - - var n = this.matches.length - if (n === 0) - return this._finish() - - var self = this - for (var i = 0; i < this.matches.length; i++) - this._realpathSet(i, next) - - function next () { - if (--n === 0) - self._finish() - } -} - -Glob.prototype._realpathSet = function (index, cb) { - var matchset = this.matches[index] - if (!matchset) - return cb() - - var found = Object.keys(matchset) - var self = this - var n = found.length - - if (n === 0) - return cb() - - var set = this.matches[index] = Object.create(null) - found.forEach(function (p, i) { - // If there's a problem with the stat, then it means that - // one or more of the links in the realpath couldn't be - // resolved. just return the abs value in that case. - p = self._makeAbs(p) - fs.realpath(p, self.realpathCache, function (er, real) { - if (!er) - set[real] = true - else if (er.syscall === 'stat') - set[p] = true - else - self.emit('error', er) // srsly wtf right here - - if (--n === 0) { - self.matches[index] = set - cb() - } - }) - }) -} - -Glob.prototype._mark = function (p) { - return common.mark(this, p) -} - -Glob.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} - -Glob.prototype.abort = function () { - this.aborted = true - this.emit('abort') -} - -Glob.prototype.pause = function () { - if (!this.paused) { - this.paused = true - this.emit('pause') - } -} - -Glob.prototype.resume = function () { - if (this.paused) { - this.emit('resume') - this.paused = false - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0) - this._emitQueue.length = 0 - for (var i = 0; i < eq.length; i ++) { - var e = eq[i] - this._emitMatch(e[0], e[1]) - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0) - this._processQueue.length = 0 - for (var i = 0; i < pq.length; i ++) { - var p = pq[i] - this._processing-- - this._process(p[0], p[1], p[2], p[3]) - } - } - } -} - -Glob.prototype._process = function (pattern, index, inGlobStar, cb) { - assert(this instanceof Glob) - assert(typeof cb === 'function') - - if (this.aborted) - return - - this._processing++ - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]) - return - } - - //console.error('PROCESS %d', this._processing, pattern) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index, cb) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip _processing - if (childrenIgnored(this, read)) - return cb() - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) -} - -Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - -Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return cb() - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return cb() - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return cb() - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - this._process([e].concat(remain), index, inGlobStar, cb) - } - cb() -} - -Glob.prototype._emitMatch = function (index, e) { - if (this.aborted) - return - - if (this.matches[index][e]) - return - - if (this.paused) { - this._emitQueue.push([index, e]) - return - } - - var abs = this._makeAbs(e) - - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return - } - - if (this.mark) - e = this._mark(e) - - this.matches[index][e] = true - - var st = this.statCache[abs] - if (st) - this.emit('stat', e, st) - - this.emit('match', e) -} - -Glob.prototype._readdirInGlobStar = function (abs, cb) { - if (this.aborted) - return - - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false, cb) - - var lstatkey = 'lstat\0' + abs - var self = this - var lstatcb = inflight(lstatkey, lstatcb_) - - if (lstatcb) - fs.lstat(abs, lstatcb) - - function lstatcb_ (er, lstat) { - if (er) - return cb() - - var isSym = lstat.isSymbolicLink() - self.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) { - self.cache[abs] = 'FILE' - cb() - } else - self._readdir(abs, false, cb) - } -} - -Glob.prototype._readdir = function (abs, inGlobStar, cb) { - if (this.aborted) - return - - cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) - if (!cb) - return - - //console.error('RD %j %j', +inGlobStar, abs) - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return cb() - - if (Array.isArray(c)) - return cb(null, c) - } - - var self = this - fs.readdir(abs, readdirCb(this, abs, cb)) -} - -function readdirCb (self, abs, cb) { - return function (er, entries) { - if (er) - self._readdirError(abs, er, cb) - else - self._readdirEntries(abs, entries, cb) - } -} - -Glob.prototype._readdirEntries = function (abs, entries, cb) { - if (this.aborted) - return - - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - return cb(null, entries) -} - -Glob.prototype._readdirError = function (f, er, cb) { - if (this.aborted) - return - - // handle errors, and cache the information - switch (er.code) { - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) return this.emit('error', er) - if (!this.silent) console.error('glob error', er) - break - } - return cb() -} - -Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} - - -Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - //console.error('pgs2', prefix, remain[0], entries) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return cb() - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false, cb) - - var isSym = this.symlinks[abs] - var len = entries.length - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return cb() - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true, cb) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true, cb) - } - - cb() -} - -Glob.prototype._processSimple = function (prefix, index, cb) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var self = this - this._stat(prefix, function (er, exists) { - self._processSimple2(prefix, index, er, exists, cb) - }) -} -Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { - - //console.error('ps2', prefix, exists) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return cb() - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this._emitMatch(index, prefix) - cb() -} - -// Returns either 'DIR', 'FILE', or false -Glob.prototype._stat = function (f, cb) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return cb() - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return cb(null, c) - - if (needDir && c === 'FILE') - return cb() - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (stat !== undefined) { - if (stat === false) - return cb(null, stat) - else { - var type = stat.isDirectory() ? 'DIR' : 'FILE' - if (needDir && type === 'FILE') - return cb() - else - return cb(null, type, stat) - } - } - - var self = this - var statcb = inflight('stat\0' + abs, lstatcb_) - if (statcb) - fs.lstat(abs, statcb) - - function lstatcb_ (er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - // If it's a symlink, then treat it as the target, unless - // the target does not exist, then treat it as a file. - return fs.stat(abs, function (er, stat) { - if (er) - self._stat2(f, abs, null, lstat, cb) - else - self._stat2(f, abs, er, stat, cb) - }) - } else { - self._stat2(f, abs, er, lstat, cb) - } - } -} - -Glob.prototype._stat2 = function (f, abs, er, stat, cb) { - if (er) { - this.statCache[abs] = false - return cb() - } - - var needDir = f.slice(-1) === '/' - this.statCache[abs] = stat - - if (abs.slice(-1) === '/' && !stat.isDirectory()) - return cb(null, false, stat) - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return cb() - - return cb(null, c, stat) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/package.json deleted file mode 100644 index d918ea02..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "glob@^4.3.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream" - ] - ], - "_from": "glob@>=4.3.1 <5.0.0", - "_id": "glob@4.5.3", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/glob", - "_nodeVersion": "1.4.2", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "2.7.1", - "_phantomChildren": {}, - "_requested": { - "name": "glob", - "raw": "glob@^4.3.1", - "rawSpec": "^4.3.1", - "scope": null, - "spec": ">=4.3.1 <5.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "_shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f", - "_shrinkwrap": null, - "_spec": "glob@^4.3.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/node-glob/issues" - }, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - }, - "description": "a little globber", - "devDependencies": { - "mkdirp": "0", - "rimraf": "^2.2.8", - "tap": "^0.5.0", - "tick": "0.0.6" - }, - "directories": {}, - "dist": { - "shasum": "c6cb73d3226c1efef04de3c56d012f03377ee15f", - "tarball": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" - }, - "engines": { - "node": "*" - }, - "files": [ - "glob.js", - "sync.js", - "common.js" - ], - "gitHead": "a4e461ab59a837eee80a4d8dbdbf5ae1054a646f", - "homepage": "https://github.com/isaacs/node-glob", - "license": "ISC", - "main": "glob.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "glob", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-glob.git" - }, - "scripts": { - "bench": "bash benchmark.sh", - "benchclean": "bash benchclean.sh", - "prepublish": "npm run benchclean", - "prof": "bash prof.sh && cat profile.txt", - "profclean": "rm -f v8.log profile.txt", - "test": "npm run profclean && tap test/*.js", - "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js" - }, - "version": "4.5.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/sync.js deleted file mode 100644 index f4f5e36d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/glob/sync.js +++ /dev/null @@ -1,457 +0,0 @@ -module.exports = globSync -globSync.GlobSync = GlobSync - -var fs = require('fs') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var Glob = require('./glob.js').Glob -var util = require('util') -var path = require('path') -var assert = require('assert') -var common = require('./common.js') -var alphasort = common.alphasort -var alphasorti = common.alphasorti -var isAbsolute = common.isAbsolute -var setopts = common.setopts -var ownProp = common.ownProp -var childrenIgnored = common.childrenIgnored - -function globSync (pattern, options) { - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - return new GlobSync(pattern, options).found -} - -function GlobSync (pattern, options) { - if (!pattern) - throw new Error('must provide pattern') - - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options) - - setopts(this, pattern, options) - - if (this.noprocess) - return this - - var n = this.minimatch.set.length - this.matches = new Array(n) - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false) - } - this._finish() -} - -GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) - if (this.realpath) { - var self = this - this.matches.forEach(function (matchset, index) { - var set = self.matches[index] = Object.create(null) - for (var p in matchset) { - try { - p = self._makeAbs(p) - var real = fs.realpathSync(p, this.realpathCache) - set[real] = true - } catch (er) { - if (er.syscall === 'stat') - set[self._makeAbs(p)] = true - else - throw er - } - } - }) - } - common.finish(this) -} - - -GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // See if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip processing - if (childrenIgnored(this, read)) - return - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar) -} - - -GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar) - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix.slice(-1) !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this.matches[index][e] = true - } - // This was the last one, and no stats were needed - return - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) - newPattern = [prefix, e] - else - newPattern = [e] - this._process(newPattern.concat(remain), index, inGlobStar) - } -} - - -GlobSync.prototype._emitMatch = function (index, e) { - var abs = this._makeAbs(e) - if (this.mark) - e = this._mark(e) - - if (this.matches[index][e]) - return - - if (this.nodir) { - var c = this.cache[this._makeAbs(e)] - if (c === 'DIR' || Array.isArray(c)) - return - } - - this.matches[index][e] = true - if (this.stat) - this._stat(e) -} - - -GlobSync.prototype._readdirInGlobStar = function (abs) { - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false) - - var entries - var lstat - var stat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - // lstat failed, doesn't exist - return null - } - - var isSym = lstat.isSymbolicLink() - this.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && !lstat.isDirectory()) - this.cache[abs] = 'FILE' - else - entries = this._readdir(abs, false) - - return entries -} - -GlobSync.prototype._readdir = function (abs, inGlobStar) { - var entries - - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return null - - if (Array.isArray(c)) - return c - } - - try { - return this._readdirEntries(abs, fs.readdirSync(abs)) - } catch (er) { - this._readdirError(abs, er) - return null - } -} - -GlobSync.prototype._readdirEntries = function (abs, entries) { - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - - // mark and cache dir-ness - return entries -} - -GlobSync.prototype._readdirError = function (f, er) { - // handle errors, and cache the information - switch (er.code) { - case 'ENOTDIR': // totally normal. means it *does* exist. - this.cache[this._makeAbs(f)] = 'FILE' - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) throw er - if (!this.silent) console.error('glob error', er) - break - } -} - -GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { - - var entries = this._readdir(abs, inGlobStar) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false) - - var len = entries.length - var isSym = this.symlinks[abs] - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true) - } -} - -GlobSync.prototype._processSimple = function (prefix, index) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var exists = this._stat(prefix) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this.matches[index][prefix] = true -} - -// Returns either 'DIR', 'FILE', or false -GlobSync.prototype._stat = function (f) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return false - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return c - - if (needDir && c === 'FILE') - return false - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (!stat) { - var lstat - try { - lstat = fs.lstatSync(abs) - } catch (er) { - return false - } - - if (lstat.isSymbolicLink()) { - try { - stat = fs.statSync(abs) - } catch (er) { - stat = lstat - } - } else { - stat = lstat - } - } - - this.statCache[abs] = stat - - var c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c - - if (needDir && c !== 'DIR') - return false - - return c -} - -GlobSync.prototype._mark = function (p) { - return common.mark(this, p) -} - -GlobSync.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e860..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad9802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/graceful-fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/package.json deleted file mode 100644 index d4d70e91..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "graceful-fs@>=3.0.0 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "deprecated": "graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.", - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/polyfills.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 42705391..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,255 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/max-open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f23..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/readdir-sort.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a684..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/write-then-read.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/README.md deleted file mode 100644 index d458bc2e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/README.md +++ /dev/null @@ -1,216 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself if this option is set. When not set, an empty list -is returned if there are no matches. - -### matchBase - -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`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) - - -## Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/browser.js deleted file mode 100644 index 7d051592..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/browser.js +++ /dev/null @@ -1,1159 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.minimatch = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new Error('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var plType - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - plType = stateChar - patternListStack.push({ - type: plType, - start: i - 1, - reStart: re.length - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - re += ')' - var pl = patternListStack.pop() - plType = pl.type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case '!': - negativeLists.push(pl) - re += ')[^/]*?)' - pl.reEnd = re.length - break - case '?': - case '+': - case '*': - re += plType - break - case '@': break // the default anyway - } - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - var regExp = new RegExp('^' + re + '$', flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} - -},{"brace-expansion":2,"path":undefined}],2:[function(require,module,exports){ -var concatMap = require('concat-map'); -var balanced = require('balanced-match'); - -module.exports = expandTop; - -var escSlash = '\0SLASH'+Math.random()+'\0'; -var escOpen = '\0OPEN'+Math.random()+'\0'; -var escClose = '\0CLOSE'+Math.random()+'\0'; -var escComma = '\0COMMA'+Math.random()+'\0'; -var escPeriod = '\0PERIOD'+Math.random()+'\0'; - -function numeric(str) { - return parseInt(str, 10) == str - ? parseInt(str, 10) - : str.charCodeAt(0); -} - -function escapeBraces(str) { - return str.split('\\\\').join(escSlash) - .split('\\{').join(escOpen) - .split('\\}').join(escClose) - .split('\\,').join(escComma) - .split('\\.').join(escPeriod); -} - -function unescapeBraces(str) { - return str.split(escSlash).join('\\') - .split(escOpen).join('{') - .split(escClose).join('}') - .split(escComma).join(',') - .split(escPeriod).join('.'); -} - - -// Basically just str.split(","), but handling cases -// where we have nested braced sections, which should be -// treated as individual members, like {a,{b,c},d} -function parseCommaParts(str) { - if (!str) - return ['']; - - var parts = []; - var m = balanced('{', '}', str); - - if (!m) - return str.split(','); - - var pre = m.pre; - var body = m.body; - var post = m.post; - var p = pre.split(','); - - p[p.length-1] += '{' + body + '}'; - var postParts = parseCommaParts(post); - if (post.length) { - p[p.length-1] += postParts.shift(); - p.push.apply(p, postParts); - } - - parts.push.apply(parts, p); - - return parts; -} - -function expandTop(str) { - if (!str) - return []; - - var expansions = expand(escapeBraces(str)); - return expansions.filter(identity).map(unescapeBraces); -} - -function identity(e) { - return e; -} - -function embrace(str) { - return '{' + str + '}'; -} -function isPadded(el) { - return /^-?0\d/.test(el); -} - -function lte(i, y) { - return i <= y; -} -function gte(i, y) { - return i >= y; -} - -function expand(str) { - var expansions = []; - - var m = balanced('{', '}', str); - if (!m || /\$$/.test(m.pre)) return [str]; - - var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); - var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); - var isSequence = isNumericSequence || isAlphaSequence; - var isOptions = /^(.*,)+(.+)?$/.test(m.body); - if (!isSequence && !isOptions) { - // {a},b} - if (m.post.match(/,.*}/)) { - str = m.pre + '{' + m.body + escClose + m.post; - return expand(str); - } - return [str]; - } - - var n; - if (isSequence) { - n = m.body.split(/\.\./); - } else { - n = parseCommaParts(m.body); - if (n.length === 1) { - // x{{a,b}}y ==> x{a}y x{b}y - n = expand(n[0]).map(embrace); - if (n.length === 1) { - var post = m.post.length - ? expand(m.post) - : ['']; - return post.map(function(p) { - return m.pre + n[0] + p; - }); - } - } - } - - // at this point, n is the parts, and we know it's not a comma set - // with a single entry. - - // no need to expand pre, since it is guaranteed to be free of brace-sets - var pre = m.pre; - var post = m.post.length - ? expand(m.post) - : ['']; - - var N; - - if (isSequence) { - var x = numeric(n[0]); - var y = numeric(n[1]); - var width = Math.max(n[0].length, n[1].length) - var incr = n.length == 3 - ? Math.abs(numeric(n[2])) - : 1; - var test = lte; - var reverse = y < x; - if (reverse) { - incr *= -1; - test = gte; - } - var pad = n.some(isPadded); - - N = []; - - for (var i = x; test(i, y); i += incr) { - var c; - if (isAlphaSequence) { - c = String.fromCharCode(i); - if (c === '\\') - c = ''; - } else { - c = String(i); - if (pad) { - var need = width - c.length; - if (need > 0) { - var z = new Array(need + 1).join('0'); - if (i < 0) - c = '-' + z + c.slice(1); - else - c = z + c; - } - } - } - N.push(c); - } - } else { - N = concatMap(n, function(el) { return expand(el) }); - } - - for (var j = 0; j < N.length; j++) { - for (var k = 0; k < post.length; k++) { - expansions.push([pre, N[j], post[k]].join('')) - } - } - - return expansions; -} - - -},{"balanced-match":3,"concat-map":4}],3:[function(require,module,exports){ -module.exports = balanced; -function balanced(a, b, str) { - var bal = 0; - var m = {}; - var ended = false; - - for (var i = 0; i < str.length; i++) { - if (a == str.substr(i, a.length)) { - if (!('start' in m)) m.start = i; - bal++; - } - else if (b == str.substr(i, b.length) && 'start' in m) { - ended = true; - bal--; - if (!bal) { - m.end = i; - m.pre = str.substr(0, m.start); - m.body = (m.end - m.start > 1) - ? str.substring(m.start + a.length, m.end) - : ''; - m.post = str.slice(m.end + b.length); - return m; - } - } - } - - // if we opened more than we closed, find the one we closed - if (bal && ended) { - var start = m.start + a.length; - m = balanced(a, b, str.substr(start)); - if (m) { - m.start += start; - m.end += start; - m.pre = str.slice(0, start) + m.pre; - } - return m; - } -} - -},{}],4:[function(require,module,exports){ -module.exports = function (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - var x = fn(xs[i], i); - if (Array.isArray(x)) res.push.apply(res, x); - else res.push(x); - } - return res; -}; - -},{}]},{},[1])(1) -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/minimatch.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/minimatch.js deleted file mode 100644 index ec4c05c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,912 +0,0 @@ -module.exports = minimatch -minimatch.Minimatch = Minimatch - -var path = { sep: '/' } -try { - path = require('path') -} catch (er) {} - -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = require('brace-expansion') - -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' - -// * => any number of characters -var star = qmark + '*?' - -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' - -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' - -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - -function minimatch (p, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - - // "" only matches "" - if (pattern.trim() === '') return p === '' - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - - if (typeof pattern !== 'string') { - throw new TypeError('glob pattern string required') - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows support: need to use /, not \ - if (path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.debug = function () {} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) this.debug = console.error - - this.debug(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - this.debug(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - - this.debug(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - - if (options.nonegate) return - - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} - -Minimatch.prototype.braceExpand = braceExpand - -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - - if (typeof pattern === 'undefined') { - throw new Error('undefined pattern') - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - return expand(pattern) -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === '**') return GLOBSTAR - if (pattern === '') return '' - - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var plType - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - - switch (c) { - case '/': - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case '\\': - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - plType = stateChar - patternListStack.push({ - type: plType, - start: i - 1, - reStart: re.length - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - - clearStateChar() - hasMagic = true - re += ')' - var pl = patternListStack.pop() - plType = pl.type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case '!': - negativeLists.push(pl) - re += ')[^/]*?)' - pl.reEnd = re.length - break - case '?': - case '+': - case '*': - re += plType - break - case '@': break // the default anyway - } - continue - - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - - clearStateChar() - re += '|' - continue - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - if (inClass) { - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '.': - case '[': - case '(': addPatternStart = true - } - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - - nlLast += nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? 'i' : '' - var regExp = new RegExp('^' + re + '$', flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) { - this.regexp = false - } - return this.regexp -} - -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - var options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') - return emptyFileEnd - } - - // should be unreachable. - throw new Error('wtf?') -} - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/package.json deleted file mode 100644 index 77cf738f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/minimatch/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "minimatch@^2.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream" - ] - ], - "_from": "minimatch@>=2.0.1 <3.0.0", - "_id": "minimatch@2.0.10", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/minimatch", - "_nodeVersion": "2.2.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "3.1.0", - "_phantomChildren": {}, - "_requested": { - "name": "minimatch", - "raw": "minimatch@^2.0.1", - "rawSpec": "^2.0.1", - "scope": null, - "spec": ">=2.0.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/glob", - "/gulp-symdest/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "_shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "_shrinkwrap": null, - "_spec": "minimatch@^2.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "dependencies": { - "brace-expansion": "^1.0.0" - }, - "description": "a glob matcher in javascript", - "devDependencies": { - "browserify": "^9.0.3", - "standard": "^3.7.2", - "tap": "^1.2.0" - }, - "directories": {}, - "dist": { - "shasum": "8d087c39c6b38c001b97fca7ce6d0e1e80afbac7", - "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" - }, - "engines": { - "node": "*" - }, - "files": [ - "minimatch.js", - "browser.js" - ], - "gitHead": "6afb85f0c324b321f76a38df81891e562693e257", - "homepage": "https://github.com/isaacs/minimatch#readme", - "license": "ISC", - "main": "minimatch.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "minimatch", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "scripts": { - "posttest": "standard minimatch.js test/*.js", - "prepublish": "browserify -o browser.js -e minimatch.js -s minimatch --bare", - "test": "tap test/*.js" - }, - "version": "2.0.10" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/index.js deleted file mode 100644 index 438b80ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/index.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -function ToObject(val) { - if (val == null) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -module.exports = Object.assign || function (target, source) { - var from; - var keys; - var to = ToObject(target); - - for (var s = 1; s < arguments.length; s++) { - from = arguments[s]; - keys = Object.keys(Object(from)); - - for (var i = 0; i < keys.length; i++) { - to[keys[i]] = from[keys[i]]; - } - } - - return to; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/package.json deleted file mode 100644 index 9cb09696..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "_args": [ - [ - "object-assign@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "object-assign@>=2.0.0 <3.0.0", - "_id": "object-assign@2.1.1", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/object-assign", - "_nodeVersion": "0.12.4", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "object-assign", - "raw": "object-assign@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "_shasum": "43c36e5d569ff8e4816c4efa8be02d26967c18aa", - "_shrinkwrap": null, - "_spec": "object-assign@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/object-assign/issues" - }, - "dependencies": {}, - "description": "ES6 Object.assign() ponyfill", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "43c36e5d569ff8e4816c4efa8be02d26967c18aa", - "tarball": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "4cd0365f5a78dd369473ca0bbd31f7b234148c42", - "homepage": "https://github.com/sindresorhus/object-assign", - "keywords": [ - "object", - "assign", - "extend", - "properties", - "es6", - "ecmascript", - "harmony", - "ponyfill", - "prollyfill", - "polyfill", - "shim", - "browser" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "object-assign", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/object-assign.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/readme.md deleted file mode 100644 index aee51c12..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/object-assign/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) - -> ES6 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -```sh -$ npm install --save object-assign -``` - - -## Usage - -```js -var objectAssign = require('object-assign'); - -objectAssign({foo: 0}, {bar: 1}); -//=> {foo: 0, bar: 1} - -// multiple sources -objectAssign({foo: 0}, {bar: 1}, {baz: 2}); -//=> {foo: 0, bar: 1, baz: 2} - -// overwrites equal keys -objectAssign({foo: 0}, {foo: 1}, {foo: 2}); -//=> {foo: 2} - -// ignores null and undefined sources -objectAssign({foo: 0}, null, {bar: 1}, undefined); -//=> {foo: 0, bar: 1} -``` - - -## API - -### objectAssign(target, source, [source, ...]) - -Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. - - -## Resources - -- [ES6 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 63072209..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/package.json deleted file mode 100644 index c208ef0e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@>=1.0.33-1 <1.1.0-0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/through2" - ] - ], - "_from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_id": "readable-stream@1.0.34", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@>=1.0.33-1 <1.1.0-0", - "rawSpec": ">=1.0.33-1 <1.1.0-0", - "scope": null, - "spec": ">=1.0.33-1 <1.1.0-0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "_shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "_shrinkwrap": null, - "_spec": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/through2", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "gitHead": "1227c7b66deedb1dc5284a89425854d5f7ad9576", - "homepage": "https://github.com/isaacs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "1.0.34" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/readable.js deleted file mode 100644 index 26511e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,11 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = require('stream'); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.travis.yml deleted file mode 100644 index dad2273c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/LICENCE deleted file mode 100644 index 171dd970..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/examples/pretty.js deleted file mode 100644 index 2e891316..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/examples/pretty.js +++ /dev/null @@ -1,26 +0,0 @@ - -var inspect = require('util').inspect -var es = require('event-stream') //load event-stream -var split = require('../') - -if(!module.parent) { - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/index.js deleted file mode 100644 index d856433c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/index.js +++ /dev/null @@ -1,63 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - - -var through = require('through') -var Decoder = require('string_decoder').StringDecoder - -module.exports = split - -//TODO pass in a function to map across the lines. - -function split (matcher, mapper, options) { - var decoder = new Decoder() - var soFar = '' - var maxLength = options && options.maxLength; - if('function' === typeof matcher) - mapper = matcher, matcher = null - if (!matcher) - matcher = /\r?\n/ - - function emit(stream, piece) { - if(mapper) { - try { - piece = mapper(piece) - } - catch (err) { - return stream.emit('error', err) - } - if('undefined' !== typeof piece) - stream.queue(piece) - } - else - stream.queue(piece) - } - - function next (stream, buffer) { - var pieces = ((soFar != null ? soFar : '') + buffer).split(matcher) - soFar = pieces.pop() - - if (maxLength && soFar.length > maxLength) - stream.emit('error', new Error('maximum buffer reached')) - - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i] - emit(stream, piece) - } - } - - return through(function (b) { - next(this, decoder.write(b)) - }, - function () { - if(decoder.end) - next(this, decoder.end()) - if(soFar != null) - emit(this, soFar) - this.queue(null) - }) -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/package.json deleted file mode 100644 index 93efc31b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - "split@0.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/event-stream" - ] - ], - "_from": "split@>=0.3.0 <0.4.0", - "_id": "split@0.3.3", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/split", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "2.2.0", - "_phantomChildren": {}, - "_requested": { - "name": "split", - "raw": "split@0.3", - "rawSpec": "0.3", - "scope": null, - "spec": ">=0.3.0 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/event-stream" - ], - "_resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "_shasum": "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f", - "_shrinkwrap": null, - "_spec": "split@0.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/split/issues" - }, - "dependencies": { - "through": "2" - }, - "description": "split a Text Stream into a Line Stream", - "devDependencies": { - "asynct": "*", - "event-stream": "~3.0.2", - "it-is": "1", - "stream-spec": "~0.2", - "string-to-stream": "~1.0.0", - "ubelt": "~2.9" - }, - "directories": {}, - "dist": { - "shasum": "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f", - "tarball": "https://registry.npmjs.org/split/-/split-0.3.3.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "3fe392ef2aabce9db7abe8185ec48389ae224883", - "homepage": "http://github.com/dominictarr/split", - "license": "MIT", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "split", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/split.git" - }, - "scripts": { - "test": "asynct test/" - }, - "version": "0.3.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/readme.markdown deleted file mode 100644 index 13854ae9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/readme.markdown +++ /dev/null @@ -1,66 +0,0 @@ -# Split (matcher) - -[![build status](https://secure.travis-ci.org/dominictarr/split.png)](http://travis-ci.org/dominictarr/split) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js - fs.createReadStream(file) - .pipe(split()) - .on('data', function (line) { - //each chunk now is a seperate line! - }) - -``` - -`split` takes the same arguments as `string.split` except it defaults to '/\r?\n/' instead of ',', and the optional `limit` paremeter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -`split` takes an optional options object on it's third argument. - -``` js - split(matcher, mapper, options) -``` - -Valid options: - -* maxLength - The maximum buffer length without seeing a newline or `matcher`, - if a single line exceeds this, the split stream will emit an error. - -``` js - split(JSON.parse, null, { maxLength: 2}) -``` - -## keep matched splitter - -As with `Array#split`, if you split by a regular expression with a matching group, -the matches will be retained in the collection. - -``` -stdin -.pipe(split(/(\r?\n)/)) -... //lines + separators. -``` - - -# NDJ - Newline Delimited Json - -`split` accepts a function which transforms each line. - -``` js -fs.createReadStream(file) - .pipe(split(JSON.parse)) - .on('data', function (obj) { - //each chunk now is a a js object - }) - .on('error', function (err) { - //syntax errors will land here - //note, this ends the stream. - }) -``` - -# License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/options.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/options.asynct.js deleted file mode 100644 index 6d34d875..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/options.asynct.js +++ /dev/null @@ -1,23 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['maximum buffer limit'] = function (test) { - var s = split(JSON.parse, null, { - maxLength: 2 - }) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - s.write('{ "') - it(caughtError).equal(true) - - s.end() - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/partitioned_unicode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/partitioned_unicode.js deleted file mode 100644 index aff3d5da..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/partitioned_unicode.js +++ /dev/null @@ -1,34 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['split data with partitioned unicode character'] = function (test) { - var s = split(/,/g) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - var x = 'テスト試験今日とても,よい天気で' - unicodeData = new Buffer(x); - - // partition of 日 - piece1 = unicodeData.slice(0, 20); - piece2 = unicodeData.slice(20, unicodeData.length); - - s.write(piece1); - s.write(piece2); - - s.end() - - it(caughtError).equal(false) - - it(rows).deepEqual(['テスト試験今日とても', 'よい天気で']); - - it(rows).deepEqual(x.split(',')) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/split.asynct.js deleted file mode 100644 index e5df026d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/split.asynct.js +++ /dev/null @@ -1,137 +0,0 @@ -var es = require('event-stream') - , it = require('it-is').style('colour') - , d = require('ubelt') - , split = require('..') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , Readable = require('stream').Readable - , spec = require('stream-spec') - , through = require('through') - , stringStream = require('string-to-stream') - -exports ['split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -exports ['split() takes mapper function'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split(function (line) { return line.toUpperCase() }) - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).equal(v.trim().toUpperCase()) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -exports ['split() works with empty string chunks'] = function (test) { - var str = ' foo' - , expected = str.split(/[\s]*/).reduce(splitBy(/[\s]*/), []) - , cs1 = split(/[\s]*/) - , cs2 = split(/[\s]*/) - , actual = [] - , ended = false - , x = spec(cs1).through() - , y = spec(cs2).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - y.validate() - }) - } - a.writable = true - - cs1.pipe(cs2) - cs2.pipe(a) - - cs1.write(str) - cs1.end() - -} - -function splitBy (delimeter) { - return function (arr, piece) { - return arr.concat(piece.split(delimeter)) - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/try_catch.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/try_catch.asynct.js deleted file mode 100644 index 39e49f73..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/split/test/try_catch.asynct.js +++ /dev/null @@ -1,51 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['emit mapper exceptions as error events'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}\n') - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - test.done() -} - -exports ['mapper error events on trailing chunks'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/cli.js deleted file mode 100755 index 2c1e7c4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/cli.js +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var stripBom = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-bom > ', - ' cat | strip-bom > ', - '', - ' Example', - ' strip-bom unicorn.txt > unicorn-without-bom.txt' - ].join('\n')); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - fs.createReadStream(input).pipe(stripBom.stream()).pipe(process.stdout); -} else { - process.stdin.pipe(stripBom.stream()).pipe(process.stdout); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/index.js deleted file mode 100644 index c085b4ce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var isUtf8 = require('is-utf8'); - -var stripBom = module.exports = function (arg) { - if (typeof arg === 'string') { - return arg.replace(/^\ufeff/g, ''); - } - - if (Buffer.isBuffer(arg) && isUtf8(arg) && - arg[0] === 0xef && arg[1] === 0xbb && arg[2] === 0xbf) { - return arg.slice(3); - } - - return arg; -}; - -stripBom.stream = function () { - var firstChunk = require('first-chunk-stream'); - - return firstChunk({minSize: 3}, function (chunk, enc, cb) { - this.push(stripBom(chunk)); - cb(); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/package.json deleted file mode 100644 index aef35df8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "strip-bom@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "strip-bom@>=1.0.0 <2.0.0", - "_id": "strip-bom@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/strip-bom", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "1.4.9", - "_phantomChildren": {}, - "_requested": { - "name": "strip-bom", - "raw": "strip-bom@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "_shasum": "85b8862f3844b5a6d5ec8467a93598173a36f794", - "_shrinkwrap": null, - "_spec": "strip-bom@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bin": { - "strip-bom": "cli.js" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-bom/issues" - }, - "dependencies": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" - }, - "description": "Strip UTF-8 byte order mark (BOM) from a string/buffer/stream", - "devDependencies": { - "concat-stream": "^1.4.5", - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "85b8862f3844b5a6d5ec8467a93598173a36f794", - "tarball": "http://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "cli.js", - "index.js" - ], - "homepage": "https://github.com/sindresorhus/strip-bom", - "keywords": [ - "cli", - "bin", - "app", - "bom", - "strip", - "byte", - "mark", - "unicode", - "utf8", - "utf-8", - "remove", - "trim", - "text", - "buffer", - "string", - "stream", - "streams" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "strip-bom", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-bom.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/readme.md deleted file mode 100644 index 10e1d8f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/strip-bom/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# strip-bom [![Build Status](https://travis-ci.org/sindresorhus/strip-bom.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-bom) - -> Strip UTF-8 [byte order mark](http://en.wikipedia.org/wiki/Byte_order_mark#UTF-8) (BOM) from a string/buffer/stream - -From Wikipedia: - -> The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8. - - -## Usage - -```sh -$ npm install --save strip-bom -``` - -```js -var fs = require('fs'); -var stripBom = require('strip-bom'); - -stripBom('\ufeffUnicorn'); -//=> Unicorn - -stripBom(fs.readFileSync('unicorn.txt')); -//=> Unicorn -``` - -Or as a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform): - -```js -var fs = require('fs'); -var stripBom = require('strip-bom'); - -fs.createReadStream('unicorn.txt') - .pipe(stripBom.stream()) - .pipe(fs.createWriteStream('unicorn.txt')); -``` - - -## CLI - -```sh -$ npm install --global strip-bom -``` - -``` -$ strip-bom --help - - Usage - strip-bom > - cat | strip-bom > - - Example - strip-bom unicorn.txt > unicorn-without-bom.txt -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/README.md deleted file mode 100644 index 11259a5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - function (chunk, enc, cb) { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/package.json deleted file mode 100644 index 04c1fe08..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "through2@^0.6.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "through2@>=0.6.1 <0.7.0", - "_id": "through2@0.6.5", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/through2", - "_npmUser": { - "email": "bryce@ravenwall.com", - "name": "bryce" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "through2", - "raw": "through2@^0.6.1", - "rawSpec": "^0.6.1", - "scope": null, - "spec": ">=0.6.1 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/glob-stream", - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "_shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "_shrinkwrap": null, - "_spec": "through2@^0.6.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": ">=0.9.0 <0.10.0-0", - "stream-spigot": ">=3.0.4 <3.1.0-0", - "tape": ">=2.14.0 <2.15.0-0" - }, - "directories": {}, - "dist": { - "shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "tarball": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "gitHead": "ba4a87875f2c82323c10023e36f4ae4b386c1bf8", - "homepage": "https://github.com/rvagg/through2", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "0.6.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/through2.js deleted file mode 100644 index 5b7a880e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/LICENSE deleted file mode 100644 index cd2225ad..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2014 Eugene Ware - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/README.md deleted file mode 100644 index fce2ec01..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# unique-stream - -node.js through stream that emits a unique stream of objects based on criteria - -[![Build Status](https://travis-ci.org/eugeneware/unique-stream.svg?branch=master)](https://travis-ci.org/eugeneware/unique-stream) -[![Coverage Status](https://coveralls.io/repos/eugeneware/unique-stream/badge.svg?branch=master&service=github)](https://coveralls.io/github/eugeneware/unique-stream?branch=master) - -## Installation - -Install via [npm](https://www.npmjs.com/): - -``` -$ npm install unique-stream -``` - -## Examples - -### Dedupe a ReadStream based on JSON.stringify: - -``` js -var unique = require('unique-stream') - , Stream = require('stream'); - -// return a stream of 3 identical objects -function makeStreamOfObjects() { - var s = new Stream; - s.readable = true; - var count = 3; - for (var i = 0; i < 3; i++) { - setImmediate(function () { - s.emit('data', { name: 'Bob', number: 123 }); - --count || end(); - }); - } - - function end() { - s.emit('end'); - } - - return s; -} - -// Will only print out one object as the rest are dupes. (Uses JSON.stringify) -makeStreamOfObjects() - .pipe(unique()) - .on('data', console.log); - -``` - -### Dedupe a ReadStream based on an object property: - -``` js -// Use name as the key field to dedupe on. Will only print one object -makeStreamOfObjects() - .pipe(unique('name')) - .on('data', console.log); -``` - -### Dedupe a ReadStream based on a custom function: - -``` js -// Use a custom function to dedupe on. Use the 'number' field. Will only print one object. -makeStreamOfObjects() - .pipe(function (data) { - return data.number; - }) - .on('data', console.log); -``` - -## Dedupe multiple streams - -The reason I wrote this was to dedupe multiple object streams: - -``` js -var aggregator = unique(); - -// Stream 1 -makeStreamOfObjects() - .pipe(aggregator); - -// Stream 2 -makeStreamOfObjects() - .pipe(aggregator); - -// Stream 3 -makeStreamOfObjects() - .pipe(aggregator); - -aggregator.on('data', console.log); -``` - -## Use a custom store to record keys that have been encountered - -By default a set is used to store keys encountered so far, in order to check new ones for -uniqueness. You can supply your own store instead, providing it supports the add(key) and -has(key) methods. This could allow you to use a persistant store so that already encountered -objects are not re-streamed when node is reloaded. - -``` js -var keyStore = { - store: {}, - - add: function(key) { - this.store[key] = true; - }, - - has: function(key) { - return this.store[key] !== undefined; - } -}; - -makeStreamOfObjects() - .pipe(unique('name', keyStore)) - .on('data', console.log); -``` - -## Contributing - -unique-stream is an **OPEN Open Source Project**. This means that: - -> Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project. - -See the [CONTRIBUTING.md](https://github.com/eugeneware/unique-stream/blob/master/CONTRIBUTING.md) file for more details. - -### Contributors - -unique-stream is only possible due to the excellent work of the following contributors: - - - - - -
    Eugene WareGitHub/eugeneware
    Craig AmbroseGitHub/craigambrose
    Shinnosuke WatanabeGitHub/shinnn
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/index.js deleted file mode 100644 index a2b29206..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/index.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict'; - -var filter = require('through2-filter').obj; -var stringify = require("json-stable-stringify"); - -var ES6Set; -if (typeof global.Set === 'function') { - ES6Set = global.Set; -} else { - ES6Set = function() { - this.keys = []; - this.has = function(val) { - return this.keys.indexOf(val) !== -1; - }, - this.add = function(val) { - this.keys.push(val); - } - } -} - -function prop(propName) { - return function (data) { - return data[propName]; - }; -} - -module.exports = unique; -function unique(propName, keyStore) { - keyStore = keyStore || new ES6Set(); - - var keyfn = stringify; - if (typeof propName === 'string') { - keyfn = prop(propName); - } else if (typeof propName === 'function') { - keyfn = propName; - } - - return filter(function (data) { - var key = keyfn(data); - - if (keyStore.has(key)) { - return false; - } - - keyStore.add(key); - return true; - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/package.json deleted file mode 100644 index ca6fbe60..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/unique-stream/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "unique-stream@^2.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream" - ] - ], - "_from": "unique-stream@>=2.0.2 <3.0.0", - "_id": "unique-stream@2.2.1", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/unique-stream", - "_nodeVersion": "5.6.0", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/unique-stream-2.2.1.tgz_1455624338144_0.2851575950626284" - }, - "_npmUser": { - "email": "snnskwtnb@gmail.com", - "name": "shinnn" - }, - "_npmVersion": "3.7.2", - "_phantomChildren": {}, - "_requested": { - "name": "unique-stream", - "raw": "unique-stream@^2.0.2", - "rawSpec": "^2.0.2", - "scope": null, - "spec": ">=2.0.2 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "_shasum": "5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369", - "_shrinkwrap": null, - "_spec": "unique-stream@^2.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/glob-stream", - "author": { - "email": "eugene@noblesamurai.com", - "name": "Eugene Ware" - }, - "bugs": { - "url": "https://github.com/eugeneware/unique-stream/issues" - }, - "dependencies": { - "json-stable-stringify": "^1.0.0", - "through2-filter": "^2.0.0" - }, - "description": "node.js through stream that emits a unique stream of objects based on criteria", - "devDependencies": { - "after": "~0.8.1", - "chai": "^3.0.0", - "istanbul": "^0.4.2", - "istanbul-coveralls": "^1.0.3", - "mocha": "^2.1.0" - }, - "directories": {}, - "dist": { - "shasum": "5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369", - "tarball": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz" - }, - "files": [ - "index.js" - ], - "gitHead": "44bb895ede1645668c4f62a81c7af8edaf47bff9", - "homepage": "https://github.com/eugeneware/unique-stream#readme", - "keywords": [ - "unique", - "stream", - "unique-stream", - "streaming", - "streams" - ], - "license": "MIT", - "maintainers": [ - { - "email": "eugene@noblesamurai.com", - "name": "eugeneware" - }, - { - "email": "snnskwtnb@gmail.com", - "name": "shinnn" - } - ], - "name": "unique-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/eugeneware/unique-stream.git" - }, - "scripts": { - "coverage": "istanbul cover _mocha", - "coveralls": "${npm_package_scripts_coverage} && istanbul-coveralls", - "test": "mocha" - }, - "version": "2.2.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/LICENSE deleted file mode 100755 index 7cbe012c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/README.md deleted file mode 100644 index 001bd197..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# vinyl-fs [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][depstat-image]][depstat-url] - -## Information - - - - - - - - - - - - - -
    Packagevinyl-fs
    DescriptionVinyl adapter for the file system
    Node Version>= 0.10
    - -## Usage - -```javascript -var map = require('map-stream'); -var fs = require('vinyl-fs'); - -var log = function(file, cb) { - console.log(file.path); - cb(null, file); -}; - -fs.src(['./js/**/*.js', '!./js/vendor/*.js']) - .pipe(map(log)) - .pipe(fs.dest('./output')); -``` - -## API - -### src(globs[, opt]) - -- Takes a glob string or an array of glob strings as the first argument. -- Globs are executed in order, so negations should follow positive globs. For example: - -```js -fs.src(['!b*.js', '*.js']) -``` - -would not exclude any files, but this would - -```js -fs.src(['*.js', '!b*.js']) -``` - -- Possible options for the second argument: - - cwd - Specify the working directory the folder is relative to. Default is `process.cwd()` - - base - Specify the folder relative to the cwd. Default is where the glob begins. This is used to determine the file names when saving in `.dest()` - - buffer - `true` or `false` if you want to buffer the file. - - Default value is `true` - - `false` will make file.contents a paused Stream - - read - `true` or `false` if you want the file to be read or not. Useful for stuff like `rm`ing files. - - Default value is `true` - - `false` will disable writing the file to disk via `.dest()` - - since - `Date` or `number` if you only want files that have been modified since the time specified. - - passthrough - `true` or `false` if you want a duplex stream which passes items through and emits globbed files. - - Any glob-related options are documented in [glob-stream] and [node-glob] -- Returns a Readable stream by default, or a Duplex stream if the `passthrough` option is set to `true`. -- This stream emits matching [vinyl] File objects - -### watch(globs[, opt, cb]) - -This is just [glob-watcher] - -- Takes a glob string or an array of glob strings as the first argument. -- Possible options for the second argument: - - Any options are passed to [gaze] -- Returns an EventEmitter - - 'changed' event is emitted on each file change -- Optionally calls the callback on each change event - -### dest(folder[, opt]) - -- Takes a folder path as the first argument. -- First argument can also be a function that takes in a file and returns a folder path. -- Possible options for the second argument: - - cwd - Specify the working directory the folder is relative to. Default is `process.cwd()` - - mode - Specify the mode the files should be created with. Default is the mode of the input file (file.stat.mode) or the process mode if the input file has no mode property. - - dirMode - Specify the mode the directory should be created with. Default is the process mode. - - overwrite - Specify if existing files with the same path should be overwritten or not. Default is `true`, to always overwrite existing files -- Returns a Readable/Writable stream. -- On write the stream will save the [vinyl] File to disk at the folder/cwd specified. -- After writing the file to disk, it will be emitted from the stream so you can keep piping these around. -- The file will be modified after being written to this stream: - - `cwd`, `base`, and `path` will be overwritten to match the folder - - `stat.mode` will be overwritten if you used a mode parameter - - `contents` will have it's position reset to the beginning if it is a stream - -### symlink(folder[, opt]) - -- Takes a folder path as the first argument. -- First argument can also be a function that takes in a file and returns a folder path. -- Possible options for the second argument: - - cwd - Specify the working directory the folder is relative to. Default is `process.cwd()` - - dirMode - Specify the mode the directory should be created with. Default is the process mode. -- Returns a Readable/Writable stream. -- On write the stream will create a symbolic link (i.e. symlink) on disk at the folder/cwd specified. -- After creating the symbolic link, it will be emitted from the stream so you can keep piping these around. -- The file will be modified after being written to this stream: - - `cwd`, `base`, and `path` will be overwritten to match the folder - -[glob-stream]: https://github.com/wearefractal/glob-stream -[node-glob]: https://github.com/isaacs/node-glob -[gaze]: https://github.com/shama/gaze -[glob-watcher]: https://github.com/wearefractal/glob-watcher -[vinyl]: https://github.com/wearefractal/vinyl - -[npm-url]: https://www.npmjs.com/package/vinyl-fs -[npm-image]: https://badge.fury.io/js/vinyl-fs.svg -[travis-url]: https://travis-ci.org/wearefractal/vinyl-fs -[travis-image]: https://travis-ci.org/wearefractal/vinyl-fs.svg?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl-fs -[coveralls-image]: https://img.shields.io/coveralls/wearefractal/vinyl-fs.svg?style=flat -[depstat-url]: https://david-dm.org/wearefractal/vinyl-fs -[depstat-image]: https://david-dm.org/wearefractal/vinyl-fs.svg diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/index.js deleted file mode 100644 index f05d2b80..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = { - src: require('./lib/src'), - dest: require('./lib/dest'), - symlink: require('./lib/symlink'), - watch: require('glob-watcher') -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/index.js deleted file mode 100644 index 390be2ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/index.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -var through2 = require('through2'); -var prepareWrite = require('../prepareWrite'); -var writeContents = require('./writeContents'); - -function dest(outFolder, opt) { - function saveFile(file, enc, cb) { - prepareWrite(outFolder, file, opt, function(err, writePath) { - if (err) { - return cb(err); - } - writeContents(writePath, file, cb); - }); - } - - var stream = through2.obj(saveFile); - // TODO: option for either backpressure or lossy - stream.resume(); - return stream; -} - -module.exports = dest; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/index.js deleted file mode 100644 index be759675..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/index.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var writeDir = require('./writeDir'); -var writeStream = require('./writeStream'); -var writeBuffer = require('./writeBuffer'); - -function writeContents(writePath, file, cb) { - // if directory then mkdirp it - if (file.isDirectory()) { - return writeDir(writePath, file, written); - } - - // stream it to disk yo - if (file.isStream()) { - return writeStream(writePath, file, written); - } - - // write it like normal - if (file.isBuffer()) { - return writeBuffer(writePath, file, written); - } - - // if no contents then do nothing - if (file.isNull()) { - return complete(); - } - - function complete(err) { - cb(err, file); - } - - function written(err) { - - if (isErrorFatal(err)) { - return complete(err); - } - - if (!file.stat || typeof file.stat.mode !== 'number') { - return complete(); - } - - fs.stat(writePath, function(err, st) { - if (err) { - return complete(err); - } - // octal 7777 = decimal 4095 - var currentMode = (st.mode & 4095); - if (currentMode === file.stat.mode) { - return complete(); - } - fs.chmod(writePath, file.stat.mode, complete); - }); - } - - function isErrorFatal(err) { - if (!err) { - return false; - } - - // Handle scenario for file overwrite failures. - else if (err.code === 'EEXIST' && file.flag === 'wx') { - return false; // "These aren't the droids you're looking for" - } - - // Otherwise, this is a fatal error - return true; - } -} - -module.exports = writeContents; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js deleted file mode 100644 index fd21ca5e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); - -function writeBuffer(writePath, file, cb) { - var opt = { - mode: file.stat.mode, - flag: file.flag - }; - - fs.writeFile(writePath, file.contents, opt, cb); -} - -module.exports = writeBuffer; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js deleted file mode 100644 index d0b46a49..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -var mkdirp = require('mkdirp'); - -function writeDir(writePath, file, cb) { - mkdirp(writePath, file.stat.mode, cb); -} - -module.exports = writeDir; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js deleted file mode 100644 index b55bb0c2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -var streamFile = require('../../src/getContents/streamFile'); -var fs = require('graceful-fs'); - -function writeStream(writePath, file, cb) { - var opt = { - mode: file.stat.mode, - flag: file.flag - }; - - var outStream = fs.createWriteStream(writePath, opt); - - file.contents.once('error', complete); - outStream.once('error', complete); - outStream.once('finish', success); - - file.contents.pipe(outStream); - - function success() { - streamFile(file, complete); - } - - // cleanup - function complete(err) { - file.contents.removeListener('error', cb); - outStream.removeListener('error', cb); - outStream.removeListener('finish', success); - cb(err); - } -} - -module.exports = writeStream; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/prepareWrite.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/prepareWrite.js deleted file mode 100644 index ec6e62dc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/prepareWrite.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -var assign = require('object-assign'); -var path = require('path'); -var mkdirp = require('mkdirp'); -var fs = require('graceful-fs'); - -function prepareWrite(outFolder, file, opt, cb) { - var options = assign({ - cwd: process.cwd(), - mode: (file.stat ? file.stat.mode : null), - dirMode: null, - overwrite: true - }, opt); - options.flag = (options.overwrite ? 'w' : 'wx'); - - var cwd = path.resolve(options.cwd); - - if (typeof outFolder !== 'string' && typeof outFolder !== 'function') { - throw new Error('Invalid output folder'); - } - - var outFolderPath = ( - typeof outFolder === 'string' ? outFolder : outFolder(file) - ); - var basePath = path.resolve(cwd, outFolderPath); - var writePath = path.resolve(basePath, file.relative); - var writeFolder = path.dirname(writePath); - - // wire up new properties - file.stat = (file.stat || new fs.Stats()); - file.stat.mode = options.mode; - file.flag = options.flag; - file.cwd = cwd; - file.base = basePath; - file.path = writePath; - - // mkdirp the folder the file is going in - mkdirp(writeFolder, options.dirMode, function(err){ - if (err) { - return cb(err); - } - cb(null, writePath); - }); -} - -module.exports = prepareWrite; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/filterSince.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/filterSince.js deleted file mode 100644 index 803091a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/filterSince.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -var through2 = require('through2'); - -function filterSince(since) { - return through2.obj(filter(since)); -} - -function filter(since) { - return function(file, enc, cb) { - if (since < file.stat.mtime) { - return cb(null, file); - } - cb(); - }; -} - -module.exports = filterSince; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js deleted file mode 100644 index f497edd4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); -var stripBom = require('strip-bom'); - -function bufferFile(file, cb) { - fs.readFile(file.path, function(err, data) { - if (err) { - return cb(err); - } - file.contents = stripBom(data); - cb(null, file); - }); -} - -module.exports = bufferFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/index.js deleted file mode 100644 index 55604920..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -var through2 = require('through2'); -var readDir = require('./readDir'); -var bufferFile = require('./bufferFile'); -var streamFile = require('./streamFile'); - -function getContents(opt) { - return through2.obj(function(file, enc, cb) { - // don't fail to read a directory - if (file.isDirectory()) { - return readDir(file, cb); - } - - // read and pass full contents - if (opt.buffer !== false) { - return bufferFile(file, cb); - } - - // dont buffer anything - just pass streams - return streamFile(file, cb); - }); -} - -module.exports = getContents; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/readDir.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/readDir.js deleted file mode 100644 index 783fac2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/readDir.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -function readDir(file, cb) { - // do nothing for now - cb(null, file); -} - -module.exports = readDir; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/streamFile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/streamFile.js deleted file mode 100644 index 1743edd7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/getContents/streamFile.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); -var stripBom = require('strip-bom'); - -function streamFile(file, cb) { - file.contents = fs.createReadStream(file.path) - .pipe(stripBom.stream()); - - cb(null, file); -} - -module.exports = streamFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/index.js deleted file mode 100644 index 6362e4af..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/index.js +++ /dev/null @@ -1,74 +0,0 @@ -'use strict'; - -var assign = require('object-assign'); -var through = require('through2'); -var gs = require('glob-stream'); -var File = require('vinyl'); -var duplexify = require('duplexify'); -var merge = require('merge-stream'); - -var filterSince = require('./filterSince'); -var getContents = require('./getContents'); -var resolveSymlinks = require('./resolveSymlinks'); - -function createFile(globFile, enc, cb) { - cb(null, new File(globFile)); -} - -function src(glob, opt) { - var options = assign({ - read: true, - buffer: true - }, opt); - var pass, inputPass; - - if (!isValidGlob(glob)) { - throw new Error('Invalid glob argument: ' + glob); - } - // return dead stream if empty array - if (Array.isArray(glob) && glob.length === 0) { - pass = through.obj(); - if (!options.passthrough) { - process.nextTick(pass.end.bind(pass)); - } - return pass; - } - - var globStream = gs.create(glob, options); - - var outputStream = globStream - .pipe(resolveSymlinks()) - .pipe(through.obj(createFile)); - - if (options.since) { - outputStream = outputStream - .pipe(filterSince(options.since)); - } - - if (options.read !== false) { - outputStream = outputStream - .pipe(getContents(options)); - } - - if (options.passthrough) { - inputPass = through.obj(); - outputStream = duplexify.obj(inputPass, merge(outputStream, inputPass)); - } - - return outputStream; -} - -function isValidGlob(glob) { - if (typeof glob === 'string') { - return true; - } - if (!Array.isArray(glob)) { - return false; - } - if (glob.length !== 0) { - return glob.every(isValidGlob); - } - return true; -} - -module.exports = src; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/resolveSymlinks.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/resolveSymlinks.js deleted file mode 100644 index 1b81b30d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/src/resolveSymlinks.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -var through2 = require('through2'); -var fs = require('graceful-fs'); -var path = require('path'); - -function resolveSymlinks() { - return through2.obj(resolveFile); -} - -// a stat property is exposed on file objects as a (wanted) side effect -function resolveFile(globFile, enc, cb) { - fs.lstat(globFile.path, function (err, stat) { - if (err) { - return cb(err); - } - - globFile.stat = stat; - - if (!stat.isSymbolicLink()) { - return cb(null, globFile); - } - - fs.realpath(globFile.path, function (err, filePath) { - if (err) { - return cb(err); - } - - globFile.base = path.dirname(filePath); - globFile.path = filePath; - - // recurse to get real file stat - resolveFile(globFile, enc, cb); - }); - }); -} - -module.exports = resolveSymlinks; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/symlink/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/symlink/index.js deleted file mode 100644 index 1f9f4d41..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/lib/symlink/index.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -var through2 = require('through2'); -var fs = require('graceful-fs'); -var prepareWrite = require('../prepareWrite'); - -function symlink(outFolder, opt) { - function linkFile(file, enc, cb) { - var srcPath = file.path; - - prepareWrite(outFolder, file, opt, function(err, writePath) { - if (err) { - return cb(err); - } - fs.symlink(srcPath, writePath, function(err) { - if (err && err.code !== 'EEXIST') { - return cb(err); - } - cb(null, file); - }); - }); - } - - var stream = through2.obj(linkFile); - // TODO: option for either backpressure or lossy - stream.resume(); - return stream; -} - -module.exports = symlink; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/package.json deleted file mode 100644 index 8d49c80c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl-fs/package.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_args": [ - [ - "vinyl-fs@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest" - ] - ], - "_from": "vinyl-fs@>=1.0.0 <2.0.0", - "_id": "vinyl-fs@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/vinyl-fs", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.6.0", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl-fs", - "raw": "vinyl-fs@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest" - ], - "_resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-1.0.0.tgz", - "_shasum": "d15752e68c2dad74364e7e853473735354692edf", - "_shrinkwrap": null, - "_spec": "vinyl-fs@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl-fs/issues" - }, - "dependencies": { - "duplexify": "^3.2.0", - "glob-stream": "^4.0.1", - "glob-watcher": "^0.0.8", - "graceful-fs": "^3.0.0", - "merge-stream": "^0.1.7", - "mkdirp": "^0.5.0", - "object-assign": "^2.0.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "description": "Vinyl adapter for the file system", - "devDependencies": { - "buffer-equal": "^0.0.1", - "istanbul": "^0.3.0", - "istanbul-coveralls": "^1.0.1", - "jshint": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.2", - "rimraf": "^2.2.5", - "should": "^5.0.0", - "sinon": "^1.10.3" - }, - "directories": {}, - "dist": { - "shasum": "d15752e68c2dad74364e7e853473735354692edf", - "tarball": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-1.0.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "db025fe85b190414b28512c1f5ef08662564d4eb", - "homepage": "http://github.com/wearefractal/vinyl-fs", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl-fs/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "vinyl-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl-fs.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha && istanbul-coveralls", - "test": "jshint lib && mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/LICENSE deleted file mode 100644 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/README.md deleted file mode 100644 index ae6f16f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) - - -## Information - - - - - - - - - - - - - -
    Packagevinyl
    DescriptionA virtual file format
    Node Version>= 0.9
    - -## What is this? - -Read this for more info about how this plays into the grand scheme of things https://medium.com/@eschoff/3828e8126466 - -## File - -```javascript -var File = require('vinyl'); - -var coffeeFile = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee", - contents: new Buffer("test = 123") -}); -``` - -### constructor(options) - -#### options.cwd - -Type: `String` -Default: `process.cwd()` - -#### options.base - -Used for relative pathing. Typically where a glob starts. - -Type: `String` -Default: `options.cwd` - -#### options.path - -Full path to the file. - -Type: `String` -Default: `null` - -#### options.stat - -The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. - -Type: `fs.Stats` -Default: `null` - -#### options.contents - -File contents. - -Type: `Buffer, Stream, or null` -Default: `null` - -### isBuffer() - -Returns true if file.contents is a Buffer. - -### isStream() - -Returns true if file.contents is a Stream. - -### isNull() - -Returns true if file.contents is null. - -### clone() - -Returns a new File object with all attributes cloned. Custom attributes are deep-cloned. - -### pipe(stream[, opt]) - -If file.contents is a Buffer, it will write it to the stream. - -If file.contents is a Stream, it will pipe it to the stream. - -If file.contents is null, it will do nothing. - -If opt.end is false, the destination stream will not be ended (same as node core). - -Returns the stream. - -### inspect() - -Returns a pretty String interpretation of the File. Useful for console.log. - -### relative - -Returns path.relative for the file base and file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.relative); // file.coffee -``` - -[npm-url]: https://npmjs.org/package/vinyl -[npm-image]: https://badge.fury.io/js/vinyl.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl -[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl -[depstat-image]: https://david-dm.org/wearefractal/vinyl.png diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/index.js deleted file mode 100644 index 9aa47b78..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/index.js +++ /dev/null @@ -1,175 +0,0 @@ -var path = require('path'); -var clone = require('clone'); -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: false, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/cloneBuffer.js deleted file mode 100644 index 89f09eda..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/cloneBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/inspectStream.js deleted file mode 100644 index d36df6ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/inspectStream.js +++ /dev/null @@ -1,11 +0,0 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isBuffer.js deleted file mode 100644 index 0e23782c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isNull.js deleted file mode 100644 index 7f22c63a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isStream.js deleted file mode 100644 index 9ce0929b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/package.json deleted file mode 100644 index 75508fac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/node_modules/vinyl/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "vinyl@^0.4.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs" - ] - ], - "_from": "vinyl@>=0.4.0 <0.5.0", - "_id": "vinyl@0.4.6", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest/vinyl", - "_nodeVersion": "0.10.33", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.1.6", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl", - "raw": "vinyl@^0.4.0", - "rawSpec": "^0.4.0", - "scope": null, - "spec": ">=0.4.0 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "_shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "_shrinkwrap": null, - "_spec": "vinyl@^0.4.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "dependencies": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - }, - "description": "A virtual file format", - "devDependencies": { - "buffer-equal": "0.0.1", - "coveralls": "^2.6.1", - "event-stream": "^3.1.0", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "lodash.templatesettings": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "rimraf": "^2.2.5", - "should": "^4.0.4" - }, - "directories": {}, - "dist": { - "shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "tarball": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "8255a5f1de7fecb1cd5e7ba7ac1ec997395f6be1", - "homepage": "http://github.com/wearefractal/vinyl", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "vinyl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint lib" - }, - "version": "0.4.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/package.json deleted file mode 100644 index 11614023..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-symdest/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "gulp-symdest@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vscode" - ] - ], - "_from": "gulp-symdest@>=1.0.0 <2.0.0", - "_id": "gulp-symdest@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-symdest", - "_nodeVersion": "0.12.6", - "_npmUser": { - "email": "mail@joaomoreno.com", - "name": "joaomoreno" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": { - "brace-expansion": "1.1.3", - "clone-stats": "0.0.1", - "core-util-is": "1.0.2", - "duplexer": "0.1.1", - "duplexify": "3.4.3", - "first-chunk-stream": "1.0.0", - "from": "0.1.3", - "gaze": "0.5.2", - "glob2base": "0.0.12", - "inflight": "1.0.4", - "inherits": "2.0.1", - "is-utf8": "0.2.1", - "isarray": "0.0.1", - "json-stable-stringify": "1.0.1", - "map-stream": "0.1.0", - "merge-stream": "0.1.8", - "mkdirp": "0.5.1", - "once": "1.3.3", - "ordered-read-streams": "0.1.0", - "pause-stream": "0.0.11", - "stream-combiner": "0.0.4", - "string_decoder": "0.10.31", - "through": "2.3.8", - "through2-filter": "2.0.0", - "xtend": "4.0.1" - }, - "_requested": { - "name": "gulp-symdest", - "raw": "gulp-symdest@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vscode" - ], - "_resolved": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.0.0.tgz", - "_shasum": "9ca48411b0ffbc23b71579d7df6bbfe91497da63", - "_shrinkwrap": null, - "_spec": "gulp-symdest@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vscode", - "author": { - "name": "João Moreno" - }, - "bugs": { - "url": "https://github.com/joaomoreno/gulp-symdest/issues" - }, - "dependencies": { - "event-stream": "^3.3.1", - "mkdirp": "^0.5.1", - "queue": "^3.1.0", - "vinyl-fs": "^1.0.0" - }, - "description": "Like gulp.dest, but handles symlinks", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "9ca48411b0ffbc23b71579d7df6bbfe91497da63", - "tarball": "https://registry.npmjs.org/gulp-symdest/-/gulp-symdest-1.0.0.tgz" - }, - "gitHead": "40abac52d0681b9f17cd86e06ba7cc84d851f5f5", - "homepage": "https://github.com/joaomoreno/gulp-symdest#readme", - "keywords": [ - "gulp", - "dest", - "symdest" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@joaomoreno.com", - "name": "joaomoreno" - } - ], - "name": "gulp-symdest", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/joaomoreno/gulp-symdest.git" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/LICENSE deleted file mode 100755 index 7cbe012c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/README.md deleted file mode 100644 index 8c25a4d6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# gulp-util [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status][depstat-image]][depstat-url] - -## Information - - - - - - - - - - - - - -
    Packagegulp-util
    DescriptionUtility functions for gulp plugins
    Node Version>= 0.10
    - -## Usage - -```javascript -var gutil = require('gulp-util'); - -gutil.log('stuff happened', 'Really it did', gutil.colors.magenta('123')); -gutil.beep(); - -gutil.replaceExtension('file.coffee', '.js'); // file.js - -var opt = { - name: 'todd', - file: someGulpFile -}; -gutil.template('test <%= name %> <%= file.path %>', opt) // test todd /js/hi.js -``` - -### log(msg...) - -Logs stuff. Already prefixed with [gulp] and all that. If you pass in multiple arguments it will join them by a space. - -The default gulp coloring using gutil.colors.: -``` -values (files, module names, etc.) = cyan -numbers (times, counts, etc) = magenta -``` - -### colors - -Is an instance of [chalk](https://github.com/sindresorhus/chalk). - -### replaceExtension(path, newExtension) - -Replaces a file extension in a path. Returns the new path. - -### isStream(obj) - -Returns true or false if an object is a stream. - -### isBuffer(obj) - -Returns true or false if an object is a Buffer. - -### template(string[, data]) - -This is a lodash.template function wrapper. You must pass in a valid gulp file object so it is available to the user or it will error. You can not configure any of the delimiters. Look at the [lodash docs](http://lodash.com/docs#template) for more info. - -## new File(obj) - -This is just [vinyl](https://github.com/wearefractal/vinyl) - -```javascript -var file = new gutil.File({ - base: path.join(__dirname, './fixtures/'), - cwd: __dirname, - path: path.join(__dirname, './fixtures/test.coffee') -}); -``` - -## noop() - -Returns a stream that does nothing but pass data straight through. - -```javascript -// gulp should be called like this : -// $ gulp --type production -gulp.task('scripts', function() { - gulp.src('src/**/*.js') - .pipe(concat('script.js')) - .pipe(gutil.env.type === 'production' ? uglify() : gutil.noop()) - .pipe(gulp.dest('dist/')); -}); -``` - -## buffer(cb) - -This is similar to es.wait but instead of buffering text into one string it buffers anything into an array (so very useful for file objects). - -Returns a stream that can be piped to. - -The stream will emit one data event after the stream piped to it has ended. The data will be the same array passed to the callback. - -Callback is optional and receives two arguments: error and data - -```javascript -gulp.src('stuff/*.js') - .pipe(gutil.buffer(function(err, files) { - - })); -``` - -## new PluginError(pluginName, message[, options]) - -- pluginName should be the module name of your plugin -- message can be a string or an existing error -- By default the stack will not be shown. Set `options.showStack` to true if you think the stack is important for your error. -- If you pass an error in as the message the stack will be pulled from that, otherwise one will be created. -- Note that if you pass in a custom stack string you need to include the message along with that. -- Error properties will be included in `err.toString()`. Can be omitted by including `{showProperties: false}` in the options. - -These are all acceptable forms of instantiation: - -```javascript -var err = new gutil.PluginError('test', { - message: 'something broke' -}); - -var err = new gutil.PluginError({ - plugin: 'test', - message: 'something broke' -}); - -var err = new gutil.PluginError('test', 'something broke'); - -var err = new gutil.PluginError('test', 'something broke', {showStack: true}); - -var existingError = new Error('OMG'); -var err = new gutil.PluginError('test', existingError, {showStack: true}); -``` - -[npm-url]: https://www.npmjs.com/package/gulp-util -[npm-image]: https://badge.fury.io/js/gulp-util.svg -[travis-url]: https://travis-ci.org/gulpjs/gulp-util -[travis-image]: https://img.shields.io/travis/gulpjs/gulp-util.svg?branch=master -[coveralls-url]: https://coveralls.io/r/gulpjs/gulp-util -[coveralls-image]: https://img.shields.io/coveralls/gulpjs/gulp-util.svg -[depstat-url]: https://david-dm.org/gulpjs/gulp-util -[depstat-image]: https://david-dm.org/gulpjs/gulp-util.svg diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/index.js deleted file mode 100644 index 199713c9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/index.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - File: require('vinyl'), - replaceExtension: require('replace-ext'), - colors: require('chalk'), - date: require('dateformat'), - log: require('./lib/log'), - template: require('./lib/template'), - env: require('./lib/env'), - beep: require('beeper'), - noop: require('./lib/noop'), - isStream: require('./lib/isStream'), - isBuffer: require('./lib/isBuffer'), - isNull: require('./lib/isNull'), - linefeed: '\n', - combine: require('./lib/combine'), - buffer: require('./lib/buffer'), - PluginError: require('./lib/PluginError') -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/PluginError.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/PluginError.js deleted file mode 100644 index d60159ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/PluginError.js +++ /dev/null @@ -1,130 +0,0 @@ -var util = require('util'); -var arrayDiffer = require('array-differ'); -var arrayUniq = require('array-uniq'); -var chalk = require('chalk'); -var objectAssign = require('object-assign'); - -var nonEnumberableProperties = ['name', 'message', 'stack']; -var propertiesNotToDisplay = nonEnumberableProperties.concat(['plugin', 'showStack', 'showProperties', '__safety', '_stack']); - -// wow what a clusterfuck -var parseOptions = function(plugin, message, opt) { - opt = opt || {}; - if (typeof plugin === 'object') { - opt = plugin; - } else { - if (message instanceof Error) { - opt.error = message; - } else if (typeof message === 'object') { - opt = message; - } else { - opt.message = message; - } - opt.plugin = plugin; - } - - return objectAssign({ - showStack: false, - showProperties: true - }, opt); -}; - -function PluginError(plugin, message, opt) { - if (!(this instanceof PluginError)) throw new Error('Call PluginError using new'); - - Error.call(this); - - var options = parseOptions(plugin, message, opt); - var self = this; - - // if options has an error, grab details from it - if (options.error) { - // These properties are not enumerable, so we have to add them explicitly. - arrayUniq(Object.keys(options.error).concat(nonEnumberableProperties)) - .forEach(function(prop) { - self[prop] = options.error[prop]; - }); - } - - var properties = ['name', 'message', 'fileName', 'lineNumber', 'stack', 'showStack', 'showProperties', 'plugin']; - - // options object can override - properties.forEach(function(prop) { - if (prop in options) this[prop] = options[prop]; - }, this); - - // defaults - if (!this.name) this.name = 'Error'; - - if (!this.stack) { - // Error.captureStackTrace appends a stack property which relies on the toString method of the object it is applied to. - // Since we are using our own toString method which controls when to display the stack trace if we don't go through this - // safety object, then we'll get stack overflow problems. - var safety = { - toString: function() { - return this._messageWithDetails() + '\nStack:'; - }.bind(this) - }; - Error.captureStackTrace(safety, arguments.callee || this.constructor); - this.__safety = safety; - } - - if (!this.plugin) throw new Error('Missing plugin name'); - if (!this.message) throw new Error('Missing error message'); -} - -util.inherits(PluginError, Error); - -PluginError.prototype._messageWithDetails = function() { - var messageWithDetails = 'Message:\n ' + this.message; - var details = this._messageDetails(); - - if (details !== '') { - messageWithDetails += '\n' + details; - } - - return messageWithDetails; -}; - -PluginError.prototype._messageDetails = function() { - if (!this.showProperties) { - return ''; - } - - var properties = arrayDiffer(Object.keys(this), propertiesNotToDisplay); - - if (properties.length === 0) { - return ''; - } - - var self = this; - properties = properties.map(function stringifyProperty(prop) { - return ' ' + prop + ': ' + self[prop]; - }); - - return 'Details:\n' + properties.join('\n'); -}; - -PluginError.prototype.toString = function () { - var sig = chalk.red(this.name) + ' in plugin \'' + chalk.cyan(this.plugin) + '\''; - var detailsWithStack = function(stack) { - return this._messageWithDetails() + '\nStack:\n' + stack; - }.bind(this); - - var msg; - if (this.showStack) { - if (this.__safety) { // There is no wrapped error, use the stack captured in the PluginError ctor - msg = this.__safety.stack; - } else if (this._stack) { - msg = detailsWithStack(this._stack); - } else { // Stack from wrapped error - msg = detailsWithStack(this.stack); - } - } else { - msg = this._messageWithDetails(); - } - - return sig + '\n' + msg; -}; - -module.exports = PluginError; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/buffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/buffer.js deleted file mode 100644 index 26c940db..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/buffer.js +++ /dev/null @@ -1,15 +0,0 @@ -var through = require('through2'); - -module.exports = function(fn) { - var buf = []; - var end = function(cb) { - this.push(buf); - cb(); - if(fn) fn(null, buf); - }; - var push = function(data, enc, cb) { - buf.push(data); - cb(); - }; - return through.obj(push, end); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/combine.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/combine.js deleted file mode 100644 index f20712d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/combine.js +++ /dev/null @@ -1,11 +0,0 @@ -var pipeline = require('multipipe'); - -module.exports = function(){ - var args = arguments; - if (args.length === 1 && Array.isArray(args[0])) { - args = args[0]; - } - return function(){ - return pipeline.apply(pipeline, args); - }; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/env.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/env.js deleted file mode 100644 index ee17c0e3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/env.js +++ /dev/null @@ -1,4 +0,0 @@ -var parseArgs = require('minimist'); -var argv = parseArgs(process.argv.slice(2)); - -module.exports = argv; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isBuffer.js deleted file mode 100644 index 7c52f78c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isNull.js deleted file mode 100644 index 7f22c63a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isStream.js deleted file mode 100644 index 6b54e123..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/log.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/log.js deleted file mode 100644 index bb843bee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/log.js +++ /dev/null @@ -1,14 +0,0 @@ -var hasGulplog = require('has-gulplog'); - -module.exports = function(){ - if(hasGulplog()){ - // specifically deferring loading here to keep from registering it globally - var gulplog = require('gulplog'); - gulplog.info.apply(gulplog, arguments); - } else { - // specifically defering loading because it might not be used - var fancylog = require('fancy-log'); - fancylog.apply(null, arguments); - } - return this; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/noop.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/noop.js deleted file mode 100644 index 7862cb16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/noop.js +++ /dev/null @@ -1,5 +0,0 @@ -var through = require('through2'); - -module.exports = function () { - return through.obj(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/template.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/template.js deleted file mode 100644 index eef3bb37..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/lib/template.js +++ /dev/null @@ -1,23 +0,0 @@ -var template = require('lodash.template'); -var reEscape = require('lodash._reescape'); -var reEvaluate = require('lodash._reevaluate'); -var reInterpolate = require('lodash._reinterpolate'); - -var forcedSettings = { - escape: reEscape, - evaluate: reEvaluate, - interpolate: reInterpolate -}; - -module.exports = function(tmpl, data) { - var fn = template(tmpl, forcedSettings); - - var wrapped = function(o) { - if (typeof o === 'undefined' || typeof o.file === 'undefined') { - throw new Error('Failed to provide the current file as "file" to the template'); - } - return fn(o); - }; - - return (data ? wrapped(data) : wrapped); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/package.json deleted file mode 100644 index 1c9c6881..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-util/package.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "_args": [ - [ - "gulp-util@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "gulp-util@>=3.0.0 <4.0.0", - "_id": "gulp-util@3.0.7", - "_inCache": true, - "_installable": true, - "_location": "/gulp-util", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.14.3", - "_phantomChildren": {}, - "_requested": { - "name": "gulp-util", - "raw": "gulp-util@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp", - "/gulp-shell", - "/gulp-tslint" - ], - "_resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "_shasum": "78925c4b8f8b49005ac01a011c557e6218941cbb", - "_shrinkwrap": null, - "_spec": "gulp-util@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/gulpjs/gulp-util/issues" - }, - "dependencies": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^1.0.11", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "description": "Utility functions for gulp plugins", - "devDependencies": { - "buffer-equal": "^0.0.1", - "coveralls": "^2.11.2", - "event-stream": "^3.1.7", - "istanbul": "^0.3.5", - "istanbul-coveralls": "^1.0.1", - "jshint": "^2.5.11", - "lodash.templatesettings": "^3.0.0", - "mocha": "^2.0.1", - "rimraf": "^2.2.8", - "should": "^7.0.1" - }, - "directories": {}, - "dist": { - "shasum": "78925c4b8f8b49005ac01a011c557e6218941cbb", - "tarball": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz" - }, - "engines": { - "node": ">=0.10" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "b74a5ff121471ed00b84fb1e73a0e75488d33ccd", - "homepage": "https://github.com/gulpjs/gulp-util#readme", - "license": "MIT", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "gulp-util", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/gulpjs/gulp-util.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha --report lcovonly && istanbul-coveralls", - "test": "jshint *.js lib/*.js test/*.js && mocha" - }, - "version": "3.0.7" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/.npmignore deleted file mode 100644 index fd4f2b06..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/README.md deleted file mode 100644 index ddd8f1fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/README.md +++ /dev/null @@ -1,76 +0,0 @@ -# gulp-vinyl-zip - -A library for creating and extracting ZIP archives from/to streams. - -Uses [yazl](https://github.com/thejoshwolfe/yazl) -and [yauzl](https://github.com/thejoshwolfe/yauzl). - -## Usage - -**Archive → Archive** - -```javascript -var gulp = require('gulp'); -var zip = require('gulp-vinyl-zip'); - -gulp.task('default', function () { - return zip.src('src.zip') - .pipe(/* knock yourself out */) - .pipe(zip.dest('out.zip')); -}); -``` - -or - -```javascript -var gulp = require('gulp'); -var zip = require('gulp-vinyl-zip'); - -gulp.task('default', function () { - return gulp.src('src.zip') - .pipe(zip.src()) - .pipe(/* knock yourself out */) - .pipe(zip.dest('out.zip')); -}); -``` - -**Archive → File System** - -```javascript -var gulp = require('gulp'); -var zip = require('gulp-vinyl-zip'); - -gulp.task('default', function () { - return zip.src('src.zip') - .pipe(/* knock yourself out */) - .pipe(gulp.dest('out')); -}); -``` - -**File System → Archive** - -```javascript -var gulp = require('gulp'); -var zip = require('gulp-vinyl-zip'); - -gulp.task('default', function () { - return gulp.src('src/**/*') - .pipe(/* knock yourself out */) - .pipe(zip.dest('out.zip')); -}); -``` - -**File System → Archive Stream → Disk** - -```javascript -var gulp = require('gulp'); -var zip = require('gulp-vinyl-zip').zip; // zip transform only - -gulp.task('default', function () { - return gulp.src('src/**/*') - .pipe(/* knock yourself out */) - .pipe(zip('out.zip')) - .pipe(/* knock your zip out */) - .pipe(gulp.dest('./')); -}); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/index.js deleted file mode 100644 index 36a6c743..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - src: require('./lib/src'), - zip: require('./lib/zip'), - dest: require('./lib/dest') -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/dest/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/dest/index.js deleted file mode 100644 index 875db468..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/dest/index.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -var through = require('through2'); -var vfs = require('vinyl-fs'); -var zip = require('../zip'); -var path = require('path'); - -function dest(zipPath, opts) { - var input = zip(path.basename(zipPath)); - var output = vfs.dest(path.dirname(zipPath), opts); - - var stream = through.obj(function(file, enc, cb) { - input.write(file); - cb(); - }, function(cb) { - input.end(); - output.on('end', function() { - stream.end(); - cb(); - }); - }); - - input.pipe(output); - output.on('data', function(data) { - stream.push(data); - }); - - stream.resume(); - return stream; -} - -module.exports = dest; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/src/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/src/index.js deleted file mode 100644 index 157e151e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/src/index.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var yauzl = require('yauzl'); -var through = require('through2'); -var es = require('event-stream'); -var File = require('../vinyl-zip'); -var queue = require('queue'); -var constants = require('constants'); - -function modeFromEntry(entry) { - var attr = entry.externalFileAttributes >> 16 || 33188; - - return [448 /* S_IRWXU */, 56 /* S_IRWXG */, 7 /* S_IRWXO */] - .map(function(mask) { return attr & mask; }) - .reduce(function(a, b) { return a + b; }, attr & 61440 /* S_IFMT */); -} - -function mtimeFromEntry(entry) { - return yauzl.dosDateTimeToDate(entry.lastModFileDate, entry.lastModFileTime); -} - -function toStream(zip) { - var result = es.through(); - var q = queue(); - var didErr = false; - - q.on('error', function (err) { - didErr = true; - result.emit('error', err); - }); - - zip.on('entry', function (entry) { - if (didErr) { return; } - - var stat = new fs.Stats(); - stat.mode = modeFromEntry(entry); - stat.mtime = mtimeFromEntry(entry); - - // directories - if (/\/$/.test(entry.fileName)) { - stat.mode = (stat.mode & ~constants.S_IFMT) | constants.S_IFDIR; - } - - var file = { - path: entry.fileName, - stat: stat - }; - - if (stat.isFile()) { - if (entry.uncompressedSize === 0) { - file.contents = new Buffer(0); - result.emit('data', new File(file)); - - } else { - q.push(function (cb) { - zip.openReadStream(entry, function(err, readStream) { - if (err) { return cb(err); } - - file.contents = readStream; - result.emit('data', new File(file)); - cb(); - }); - }); - - q.start(); - } - - } else if (stat.isSymbolicLink()) { - q.push(function (cb) { - zip.openReadStream(entry, function(err, readStream) { - if (err) { return cb(err); } - - file.symlink = ''; - readStream.on('data', function(c) { file.symlink += c }); - readStream.on('error', cb); - readStream.on('end', function () { - result.emit('data', new File(file)); - cb(); - }); - }); - }); - - q.start(); - - } else if (stat.isDirectory()) { - file.contents = null; - result.emit('data', new File(file)); - - } else { - result.emit('data', new File(file)); - } - }); - - zip.on('end', function() { - if (didErr) { - return; - } - - if (q.length === 0) { - result.end(); - } else { - q.on('end', function () { - result.end(); - }); - } - }); - - return result; -} - -function unzipBuffer(contents) { - var result = es.through(); - yauzl.fromBuffer(contents, function (err, zip) { - if (err) { return result.emit('error', err); } - toStream(zip).pipe(result); - }); - return result; -} - -function unzipFile(zipPath) { - var result = es.through(); - yauzl.open(zipPath, function (err, zip) { - if (err) { return result.emit('error', err); } - toStream(zip).pipe(result); - }); - return result; -} - -function unzip() { - var input = es.through(); - var result = es.through(); - var zips = []; - - var output = input.pipe(es.through(function (f) { - if (!f.isBuffer()) { - this.emit('error', new Error('Only supports buffers')); - } - - zips.push(f); - }, function () { - var streams = zips.map(function (f) { - return unzipBuffer(f.contents); - }); - - es.merge(streams).pipe(result); - this.emit('end'); - })); - - return es.duplex(input, es.merge(output, result)); -} - -function src(zipPath) { - return zipPath ? unzipFile(zipPath) : unzip(); -} - -module.exports = src; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/vinyl-zip.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/vinyl-zip.js deleted file mode 100644 index 3888859a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/vinyl-zip.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -var File = require('vinyl'); -var util = require('util'); - -function ZipFile(file) { - File.call(this, file); - - this.symlink = file.symlink || null; -} - -util.inherits(ZipFile, File); - -module.exports = ZipFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/zip/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/zip/index.js deleted file mode 100644 index 10c10166..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/lib/zip/index.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict'; - -var through = require('through2'); -var yazl = require('yazl'); -var File = require('../vinyl-zip'); - -function zip(zipPath) { - if (!zipPath) throw new Error('No zip path specified.'); - - var zip = new yazl.ZipFile(); - var output = through.obj(); - - var stream = through.obj(function(file, enc, cb) { - var stat = file.stat || {}; - - var opts = { - mtime: stat.mtime, - mode: stat.mode - }; - - var path = file.relative.replace(/\\/g, '/'); - - if (stat.isSymbolicLink && stat.isSymbolicLink()) { - zip.addBuffer(new Buffer(file.symlink), path, opts); - } else if (file.isDirectory()) { - // In Windows, directories have a 666 permissions. This doesn't go well - // on OS X and Linux, where directories are expected to be 755. - if (/win32/.test(process.platform)) { - opts.mode = 16877; - } - - zip.addEmptyDirectory(path, opts); - } else if (file.isBuffer()) { - zip.addBuffer(file.contents, path, opts); - } else if (file.isStream()) { - zip.addReadStream(file.contents, path, opts); - } - - cb(); - }, function(cb) { - stream.push(new File({path: zipPath, contents: zip.outputStream})); - zip.end(function(size) { - cb(); - }); - }); - - stream.resume(); - return stream; -} - -module.exports = zip; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.travis.yml deleted file mode 100644 index 58f23716..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.10 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/LICENSE deleted file mode 100644 index fc808cce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright © 2011-2014 Paul Vorbach - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/README.md deleted file mode 100644 index d7231cfc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# clone - -[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) - -offers foolproof _deep cloning_ of variables in JavaScript. - - -## Installation - - npm install clone - -or - - ender build clone - - -## Example - -~~~ javascript -var clone = require('clone'); - -var a, b; - -a = { foo: { bar: 'baz' } }; // initial value of a - -b = clone(a); // clone a -> b -a.foo.bar = 'foo'; // change a - -console.log(a); // show a -console.log(b); // show b -~~~ - -This will print: - -~~~ javascript -{ foo: { bar: 'foo' } } -{ foo: { bar: 'baz' } } -~~~ - -**clone** masters cloning simple objects (even with custom prototype), arrays, -Date objects, and RegExp objects. Everything is cloned recursively, so that you -can clone dates in arrays in objects, for example. - - -## API - -`clone(val, circular, depth)` - - * `val` -- the value that you want to clone, any type allowed - * `circular` -- boolean - - Call `clone` with `circular` set to `false` if you are certain that `obj` - contains no circular references. This will give better performance if needed. - There is no error if `undefined` or `null` is passed as `obj`. - * `depth` -- depth to which the object is to be cloned (optional, - defaults to infinity) - -`clone.clonePrototype(obj)` - - * `obj` -- the object that you want to clone - -Does a prototype clone as -[described by Oran Looney](http://oranlooney.com/functional-javascript/). - - -## Circular References - -~~~ javascript -var a, b; - -a = { hello: 'world' }; - -a.myself = a; -b = clone(a); - -console.log(b); -~~~ - -This will print: - -~~~ javascript -{ hello: "world", myself: [Circular] } -~~~ - -So, `b.myself` points to `b`, not `a`. Neat! - - -## Test - - npm test - - -## Caveat - -Some special objects like a socket or `process.stdout`/`stderr` are known to not -be cloneable. If you find other objects that cannot be cloned, please [open an -issue](https://github.com/pvorb/node-clone/issues/new). - - -## Bugs and Issues - -If you encounter any bugs or issues, feel free to [open an issue at -github](https://github.com/pvorb/node-clone/issues) or send me an email to -. I also always like to hear from you, if you’re using my code. - -## License - -Copyright © 2011-2014 [Paul Vorbach](http://paul.vorba.ch/) and -[contributors](https://github.com/pvorb/node-clone/graphs/contributors). - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/clone.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/clone.js deleted file mode 100644 index f8fa3159..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/clone.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -// shim for Node's 'util' package -// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). -var util = { - isArray: function (ar) { - return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); - }, - isDate: function (d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; - }, - isRegExp: function (re) { - return typeof re === 'object' && objectToString(re) === '[object RegExp]'; - }, - getRegExpFlags: function (re) { - var flags = ''; - re.global && (flags += 'g'); - re.ignoreCase && (flags += 'i'); - re.multiline && (flags += 'm'); - return flags; - } -}; - - -if (typeof module === 'object') - module.exports = clone; - -/** - * Clones (copies) an Object using deep copying. - * - * This function supports circular references by default, but if you are certain - * there are no circular references in your object, you can save some CPU time - * by calling clone(obj, false). - * - * Caution: if `circular` is false and `parent` contains circular references, - * your program may enter an infinite loop and crash. - * - * @param `parent` - the object to be cloned - * @param `circular` - set to true if the object to be cloned may contain - * circular references. (optional - true by default) - * @param `depth` - set to a number if the object is only to be cloned to - * a particular depth. (optional - defaults to Infinity) - * @param `prototype` - sets the prototype to be used when cloning an object. - * (optional - defaults to parent prototype). -*/ - -function clone(parent, circular, depth, prototype) { - // maintain two arrays for circular references, where corresponding parents - // and children have the same index - var allParents = []; - var allChildren = []; - - var useBuffer = typeof Buffer != 'undefined'; - - if (typeof circular == 'undefined') - circular = true; - - if (typeof depth == 'undefined') - depth = Infinity; - - // recurse this function so we don't reset allParents and allChildren - function _clone(parent, depth) { - // cloning null always returns null - if (parent === null) - return null; - - if (depth == 0) - return parent; - - var child; - var proto; - if (typeof parent != 'object') { - return parent; - } - - if (util.isArray(parent)) { - child = []; - } else if (util.isRegExp(parent)) { - child = new RegExp(parent.source, util.getRegExpFlags(parent)); - if (parent.lastIndex) child.lastIndex = parent.lastIndex; - } else if (util.isDate(parent)) { - child = new Date(parent.getTime()); - } else if (useBuffer && Buffer.isBuffer(parent)) { - child = new Buffer(parent.length); - parent.copy(child); - return child; - } else { - if (typeof prototype == 'undefined') { - proto = Object.getPrototypeOf(parent); - child = Object.create(proto); - } - else { - child = Object.create(prototype); - proto = prototype; - } - } - - if (circular) { - var index = allParents.indexOf(parent); - - if (index != -1) { - return allChildren[index]; - } - allParents.push(parent); - allChildren.push(child); - } - - for (var i in parent) { - var attrs; - if (proto) { - attrs = Object.getOwnPropertyDescriptor(proto, i); - } - - if (attrs && attrs.set == null) { - continue; - } - child[i] = _clone(parent[i], depth - 1); - } - - return child; - } - - return _clone(parent, depth); -} - -/** - * Simple flat clone using prototype, accepts only objects, usefull for property - * override on FLAT configuration object (no nested props). - * - * USE WITH CAUTION! This may not behave as you wish if you do not know how this - * works. - */ -clone.clonePrototype = function(parent) { - if (parent === null) - return null; - - var c = function () {}; - c.prototype = parent; - return new c(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/package.json deleted file mode 100644 index 4209c4e8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/package.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_args": [ - [ - "clone@^0.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/vinyl" - ] - ], - "_from": "clone@>=0.2.0 <0.3.0", - "_id": "clone@0.2.0", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/clone", - "_npmUser": { - "email": "paul@vorba.ch", - "name": "pvorb" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "clone", - "raw": "clone@^0.2.0", - "rawSpec": "^0.2.0", - "scope": null, - "spec": ">=0.2.0 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip/vinyl" - ], - "_resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "_shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "_shrinkwrap": null, - "_spec": "clone@^0.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/vinyl", - "author": { - "email": "paul@vorba.ch", - "name": "Paul Vorbach", - "url": "http://paul.vorba.ch/" - }, - "bugs": { - "url": "https://github.com/pvorb/node-clone/issues" - }, - "contributors": [ - { - "email": "miner.blake@gmail.com", - "name": "Blake Miner", - "url": "http://www.blakeminer.com/" - }, - { - "email": "axqd001@gmail.com", - "name": "Tian You", - "url": "http://blog.axqd.net/" - }, - { - "email": "gstagas@gmail.com", - "name": "George Stagas", - "url": "http://stagas.com/" - }, - { - "email": "tobiasz.cudnik@gmail.com", - "name": "Tobiasz Cudnik", - "url": "https://github.com/TobiaszCudnik" - }, - { - "email": "langpavel@phpskelet.org", - "name": "Pavel Lang", - "url": "https://github.com/langpavel" - }, - { - "name": "Dan MacTough", - "url": "http://yabfog.com/" - }, - { - "name": "w1nk", - "url": "https://github.com/w1nk" - }, - { - "name": "Hugh Kennedy", - "url": "http://twitter.com/hughskennedy" - }, - { - "name": "Dustin Diaz", - "url": "http://dustindiaz.com" - }, - { - "name": "Ilya Shaisultanov", - "url": "https://github.com/diversario" - }, - { - "email": "nathan@macinn.es", - "name": "Nathan MacInnes", - "url": "http://macinn.es/" - }, - { - "email": "ben@npmjs.com", - "name": "Benjamin E. Coe", - "url": "https://twitter.com/benjamincoe" - }, - { - "name": "Nathan Zadoks", - "url": "https://github.com/nathan7" - }, - { - "email": "robert+gh@oroszi.net", - "name": "Róbert Oroszi", - "url": "https://github.com/oroce" - } - ], - "dependencies": {}, - "description": "deep cloning of objects and arrays", - "devDependencies": { - "nodeunit": "*", - "underscore": "*" - }, - "directories": {}, - "dist": { - "shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "tarball": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "bb11a43363a0f69e8ac014cb5376ce215ea1f8fd", - "homepage": "https://github.com/pvorb/node-clone", - "license": "MIT", - "main": "clone.js", - "maintainers": [ - { - "email": "paul@vorb.de", - "name": "pvorb" - } - ], - "name": "clone", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/pvorb/node-clone.git" - }, - "scripts": { - "test": "nodeunit test.js" - }, - "tags": [ - "clone", - "object", - "array", - "function", - "date" - ], - "version": "0.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/test.js deleted file mode 100644 index cb3d1663..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/clone/test.js +++ /dev/null @@ -1,289 +0,0 @@ -if(module.parent === null) { - console.log('Run this test file with nodeunit:'); - console.log('$ nodeunit test.js'); -} - - -var clone = require('./'); -var util = require('util'); -var _ = require('underscore'); - - - -exports["clone string"] = function(test) { - test.expect(2); // how many tests? - - var a = "foo"; - test.strictEqual(clone(a), a); - a = ""; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone number"] = function(test) { - test.expect(5); // how many tests? - - var a = 0; - test.strictEqual(clone(a), a); - a = 1; - test.strictEqual(clone(a), a); - a = -1000; - test.strictEqual(clone(a), a); - a = 3.1415927; - test.strictEqual(clone(a), a); - a = -3.1415927; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone date"] = function(test) { - test.expect(3); // how many tests? - - var a = new Date; - var c = clone(a); - test.ok(a instanceof Date); - test.ok(c instanceof Date); - test.equal(c.getTime(), a.getTime()); - - test.done(); -}; - - - -exports["clone object"] = function(test) { - test.expect(2); // how many tests? - - var a = { foo: { bar: "baz" } }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone array"] = function(test) { - test.expect(2); // how many tests? - - var a = [ - { foo: "bar" }, - "baz" - ]; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone buffer"] = function(test) { - test.expect(1); - - var a = new Buffer("this is a test buffer"); - var b = clone(a); - - // no underscore equal since it has no concept of Buffers - test.deepEqual(b, a); - test.done(); -}; - - - -exports["clone regexp"] = function(test) { - test.expect(5); - - var a = /abc123/gi; - var b = clone(a); - - test.deepEqual(b, a); - - var c = /a/g; - test.ok(c.lastIndex === 0); - - c.exec('123a456a'); - test.ok(c.lastIndex === 4); - - var d = clone(c); - test.ok(d.global); - test.ok(d.lastIndex === 4); - - test.done(); -}; - - -exports["clone object containing array"] = function(test) { - test.expect(2); // how many tests? - - var a = { - arr1: [ { a: '1234', b: '2345' } ], - arr2: [ { c: '345', d: '456' } ] - }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone object with circular reference"] = function(test) { - test.expect(8); // how many tests? - - var _ = test.ok; - var c = [1, "foo", {'hello': 'bar'}, function() {}, false, [2]]; - var b = [c, 2, 3, 4]; - var a = {'b': b, 'c': c}; - a.loop = a; - a.loop2 = a; - c.loop = c; - c.aloop = a; - var aCopy = clone(a); - _(a != aCopy); - _(a.c != aCopy.c); - _(aCopy.c == aCopy.b[0]); - _(aCopy.c.loop.loop.aloop == aCopy); - _(aCopy.c[0] == a.c[0]); - - //console.log(util.inspect(aCopy, true, null) ); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(a, true, null) ); - _(eq(a, aCopy)); - aCopy.c[0] = 2; - _(!eq(a, aCopy)); - aCopy.c = "2"; - _(!eq(a, aCopy)); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(aCopy, true, null) ); - - function eq(x, y) { - return util.inspect(x, true, null) === util.inspect(y, true, null); - } - - test.done(); -}; - - - -exports['clonePrototype'] = function(test) { - test.expect(3); // how many tests? - - var a = { - a: "aaa", - x: 123, - y: 45.65 - }; - var b = clone.clonePrototype(a); - - test.strictEqual(b.a, a.a); - test.strictEqual(b.x, a.x); - test.strictEqual(b.y, a.y); - - test.done(); -} - -exports['cloneWithinNewVMContext'] = function(test) { - test.expect(3); - var vm = require('vm'); - var ctx = vm.createContext({ clone: clone }); - var script = "clone( {array: [1, 2, 3], date: new Date(), regex: /^foo$/ig} );"; - var results = vm.runInContext(script, ctx); - test.ok(results.array instanceof Array); - test.ok(results.date instanceof Date); - test.ok(results.regex instanceof RegExp); - test.done(); -} - -exports['cloneObjectWithNoConstructor'] = function(test) { - test.expect(3); - var n = null; - var a = { foo: 'bar' }; - a.__proto__ = n; - test.ok(typeof a === 'object'); - test.ok(typeof a !== null); - var b = clone(a); - test.ok(a.foo, b.foo); - test.done(); -} - -exports['clone object with depth argument'] = function (test) { - test.expect(6); - var a = { - foo: { - bar : { - baz : 'qux' - } - } - }; - var b = clone(a, false, 1); - test.deepEqual(b, a); - test.notEqual(b, a); - test.strictEqual(b.foo, a.foo); - - b = clone(a, true, 2); - test.deepEqual(b, a); - test.notEqual(b.foo, a.foo); - test.strictEqual(b.foo.bar, a.foo.bar); - test.done(); -} - -exports['maintain prototype chain in clones'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a); - test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); - test.done(); -} - -exports['parent prototype is overriden with prototype provided'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a, true, Infinity, null); - test.strictEqual(b.__defineSetter__, undefined); - test.done(); -} - -exports['clone object with null children'] = function(test) { - test.expect(1); - var a = { - foo: { - bar: null, - baz: { - qux: false - } - } - }; - var b = clone(a); - test.deepEqual(b, a); - test.done(); -} - -exports['clone instance with getter'] = function(test) { - test.expect(1); - function Ctor() {}; - Object.defineProperty(Ctor.prototype, 'prop', { - configurable: true, - enumerable: true, - get: function() { - return 'value'; - } - }); - - var a = new Ctor(); - var b = clone(a); - - test.strictEqual(b.prop, 'value'); - test.done(); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/LICENCE deleted file mode 100644 index 2af26fe7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/LICENCE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011 Dominic Tarr - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/examples/pretty.js deleted file mode 100644 index af043401..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/index.js deleted file mode 100644 index 593ef993..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/index.js +++ /dev/null @@ -1,312 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - -var Stream = require('stream').Stream - , es = exports - , through = require('through') - , from = require('from') - , duplex = require('duplexer') - , map = require('map-stream') - , pause = require('pause-stream') - , split = require('split') - , pipeline = require('stream-combiner') - , immediately = global.setImmediate || process.nextTick; - -es.Stream = Stream //re-export Stream from core -es.through = through -es.from = from -es.duplex = duplex -es.map = map -es.pause = pause -es.split = split -es.pipeline = es.connect = es.pipe = pipeline -// merge / concat -// -// combine multiple streams into a single stream. -// will emit end only once - -es.concat = //actually this should be called concat -es.merge = function (/*streams...*/) { - var toMerge = [].slice.call(arguments) - if (toMerge.length === 1 && (toMerge[0] instanceof Array)) { - toMerge = toMerge[0] //handle array as arguments object - } - var stream = new Stream() - stream.setMaxListeners(0) // allow adding more than 11 streams - var endCount = 0 - stream.writable = stream.readable = true - - toMerge.forEach(function (e) { - e.pipe(stream, {end: false}) - var ended = false - e.on('end', function () { - if(ended) return - ended = true - endCount ++ - if(endCount == toMerge.length) - stream.emit('end') - }) - }) - stream.write = function (data) { - this.emit('data', data) - } - stream.destroy = function () { - toMerge.forEach(function (e) { - if(e.destroy) e.destroy() - }) - } - return stream -} - - -// writable stream, collects all events into an array -// and calls back when 'end' occurs -// mainly I'm using this to test the other functions - -es.writeArray = function (done) { - if ('function' !== typeof done) - throw new Error('function writeArray (done): done must be function') - - var a = new Stream () - , array = [], isDone = false - a.write = function (l) { - array.push(l) - } - a.end = function () { - isDone = true - done(null, array) - } - a.writable = true - a.readable = false - a.destroy = function () { - a.writable = a.readable = false - if(isDone) return - done(new Error('destroyed before end'), array) - } - return a -} - -//return a Stream that reads the properties of an object -//respecting pause() and resume() - -es.readArray = function (array) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - - stream.readable = true - stream.writable = false - - if(!Array.isArray(array)) - throw new Error('event-stream.read expects an array') - - stream.resume = function () { - if(ended) return - paused = false - var l = array.length - while(i < l && !paused && !ended) { - stream.emit('data', array[i++]) - } - if(i == l && !ended) - ended = true, stream.readable = false, stream.emit('end') - } - process.nextTick(stream.resume) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - ended = true - stream.emit('close') - } - return stream -} - -// -// readable (asyncFunction) -// return a stream that calls an async function while the stream is not paused. -// -// the function must take: (count, callback) {... -// - -es.readable = -function (func, continueOnError) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - , reading = false - - stream.readable = true - stream.writable = false - - if('function' !== typeof func) - throw new Error('event-stream.readable expects async function') - - stream.on('end', function () { ended = true }) - - function get (err, data) { - - if(err) { - stream.emit('error', err) - if(!continueOnError) stream.emit('end') - } else if (arguments.length > 1) - stream.emit('data', data) - - immediately(function () { - if(ended || paused || reading) return - try { - reading = true - func.call(stream, i++, function () { - reading = false - get.apply(null, arguments) - }) - } catch (err) { - stream.emit('error', err) - } - }) - } - stream.resume = function () { - paused = false - get() - } - process.nextTick(get) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - stream.emit('end') - stream.emit('close') - ended = true - } - return stream -} - - -// -// map sync -// - -es.mapSync = function (sync) { - return es.through(function write(data) { - var mappedData = sync(data) - if (typeof mappedData !== 'undefined') - this.emit('data', mappedData) - }) -} - -// -// log just print out what is coming through the stream, for debugging -// - -es.log = function (name) { - return es.through(function (data) { - var args = [].slice.call(arguments) - if(name) console.error(name, data) - else console.error(data) - this.emit('data', data) - }) -} - - -// -// child -- pipe through a child process -// - -es.child = function (child) { - - return es.duplex(child.stdin, child.stdout) - -} - -// -// parse -// -// must be used after es.split() to ensure that each chunk represents a line -// source.pipe(es.split()).pipe(es.parse()) - -es.parse = function (options) { - var emitError = !!(options ? options.error : false) - return es.through(function (data) { - var obj - try { - if(data) //ignore empty lines - obj = JSON.parse(data.toString()) - } catch (err) { - if (emitError) - return this.emit('error', err) - return console.error(err, 'attempting to parse:', data) - } - //ignore lines that where only whitespace. - if(obj !== undefined) - this.emit('data', obj) - }) -} -// -// stringify -// - -es.stringify = function () { - var Buffer = require('buffer').Buffer - return es.mapSync(function (e){ - return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' - }) -} - -// -// replace a string within a stream. -// -// warn: just concatenates the string and then does str.split().join(). -// probably not optimal. -// for smallish responses, who cares? -// I need this for shadow-npm so it's only relatively small json files. - -es.replace = function (from, to) { - return es.pipeline(es.split(from), es.join(to)) -} - -// -// join chunks with a joiner. just like Array#join -// also accepts a callback that is passed the chunks appended together -// this is still supported for legacy reasons. -// - -es.join = function (str) { - - //legacy api - if('function' === typeof str) - return es.wait(str) - - var first = true - return es.through(function (data) { - if(!first) - this.emit('data', str) - first = false - this.emit('data', data) - return true - }) -} - - -// -// wait. callback when 'end' is emitted, with all chunks appended as string. -// - -es.wait = function (callback) { - var arr = [] - return es.through(function (data) { arr.push(data) }, - function () { - var body = Buffer.isBuffer(arr[0]) ? Buffer.concat(arr) - : arr.join('') - this.emit('data', body) - this.emit('end') - if(callback) callback(null, body) - }) -} - -es.pipeable = function () { - throw new Error('[EVENT-STREAM] es.pipeable is deprecated') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/package.json deleted file mode 100644 index 2f3b28a6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_args": [ - [ - "event-stream@^3.3.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip" - ] - ], - "_from": "event-stream@>=3.3.1 <4.0.0", - "_id": "event-stream@3.3.2", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/event-stream", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "event-stream", - "raw": "event-stream@^3.3.1", - "rawSpec": "^3.3.1", - "scope": null, - "spec": ">=3.3.1 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.2.tgz", - "_shasum": "3cc310feb1f28d2f62b2a085d736a9ef566378b8", - "_shrinkwrap": null, - "_spec": "event-stream@^3.3.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/event-stream/issues" - }, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - }, - "description": "construct pipes of streams of events", - "devDependencies": { - "asynct": "*", - "it-is": "1", - "stream-spec": "~0.3.5", - "tape": "~2.3.0", - "ubelt": "~3.2.2" - }, - "directories": {}, - "dist": { - "shasum": "3cc310feb1f28d2f62b2a085d736a9ef566378b8", - "tarball": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.2.tgz" - }, - "gitHead": "bbcefd4d2b52d25cf5dd3e6025a88a050a66a317", - "homepage": "http://github.com/dominictarr/event-stream", - "license": "MIT", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "event-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/event-stream.git" - }, - "scripts": { - "prepublish": "npm ls && npm test", - "test": "asynct test/", - "test_tap": "set -e; for t in test/*.js; do node $t; done" - }, - "testling": { - "browsers": { - "chrome": [ - 20 - ], - "firefox": [ - 13 - ], - "ie": [ - 8, - 9 - ], - "opera": [ - 12 - ], - "safari": [ - 5.1 - ] - }, - "files": "test/*.js" - }, - "version": "3.3.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/readme.markdown deleted file mode 100644 index 0150b055..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/readme.markdown +++ /dev/null @@ -1,314 +0,0 @@ -# EventStream - - - -[![browser status](http://ci.testling.com/dominictarr/event-stream.png)] -(http://ci.testling.com/dominictarr/event-stream) - -[Streams](http://nodejs.org/api/stream.html "Stream") are node's best and most misunderstood idea, and -_EventStream_ is a toolkit to make creating and working with streams easy. - -Normally, streams are only used for IO, -but in event stream we send all kinds of objects down the pipe. -If your application's input and output are streams, -shouldn't the throughput be a stream too? - -The *EventStream* functions resemble the array functions, -because Streams are like Arrays, but laid out in time, rather than in memory. - -All the `event-stream` functions return instances of `Stream`. - -`event-stream` creates -[0.8 streams](https://github.com/joyent/node/blob/v0.8/doc/api/stream.markdown) -, which are compatible with [0.10 streams](http://nodejs.org/api/stream.html "Stream"). - ->NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable. - -### [simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): - -``` js - -//pretty.js - -if(!module.parent) { - var es = require('event-stream') - var inspect = require('util').inspect - - process.stdin //connect streams together with `pipe` - .pipe(es.split()) //split stream to break on newlines - .pipe(es.map(function (data, cb) { //turn this async function into a stream - cb(null - , inspect(JSON.parse(data))) //render it nicely - })) - .pipe(process.stdout) // pipe it to stdout ! -} -``` -run it ... - -``` bash -curl -sS registry.npmjs.org/event-stream | node pretty.js -``` - -[node Stream documentation](http://nodejs.org/api/stream.html) - -## through (write?, end?) - -Re-emits data synchronously. Easy way to create synchronous through streams. -Pass in optional `write` and `end` methods. They will be called in the -context of the stream. Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the synchronous streams in `event-stream`. - -``` js - -es.through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -## map (asyncFunction) - -Create a through stream from an asynchronous function. - -``` js -var es = require('event-stream') - -es.map(function (data, callback) { - //transform data - // ... - callback(null, data) -}) - -``` - -Each map MUST call the callback. It may callback with data, with an error or with no arguments, - - * `callback()` drop this data. - this makes the map work like `filter`, - note:`callback(null,null)` is not the same, and will emit `null` - - * `callback(null, newData)` turn data into newData - - * `callback(error)` emit an error for this item. - ->Note: if a callback is not called, `map` will think that it is still being processed, ->every call must be answered or the stream will not know when to end. -> ->Also, if the callback is called more than once, every call but the first will be ignored. - -## mapSync (syncFunction) - -Same as `map`, but the callback is called synchronously. Based on `es.through` - -## split (matcher) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js -fs.createReadStream(file, {flags: 'r'}) - .pipe(es.split()) - .pipe(es.map(function (line, cb) { - //do something with the line - cb(null, line) - })) -``` - -`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` parameter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -## join (separator) - -Create a through stream that emits `separator` between each chunk, just like Array#join. - -(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) - -## merge (stream1,...,streamN) or merge (streamArray) -> concat → merge - -Merges streams into one and returns it. -Incoming data will be emitted as soon it comes into - no ordering will be applied (for example: `data1 data1 data2 data1 data2` - where `data1` and `data2` is data from two streams). -Counts how many streams were passed to it and emits end only when all streams emitted end. - -```js -es.merge( - process.stdout, - process.stderr -).pipe(fs.createWriteStream('output.log')); -``` - -It can also take an Array of streams as input like this: -```js -es.merge([ - fs.createReadStream('input1.txt'), - fs.createReadStream('input2.txt') -]).pipe(fs.createWriteStream('output.log')); -``` - -## replace (from, to) - -Replace all occurrences of `from` with `to`. `from` may be a `String` or a `RegExp`. -Works just like `string.split(from).join(to)`, but streaming. - - -## parse - -Convenience function for parsing JSON chunks. For newline separated JSON, -use with `es.split`. By default it logs parsing errors by `console.error`; -for another behaviour, transforms created by `es.parse({error: true})` will -emit error events for exceptions thrown from `JSON.parse`, unmodified. - -``` js -fs.createReadStream(filename) - .pipe(es.split()) //defaults to lines. - .pipe(es.parse()) -``` - -## stringify - -convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` - -``` js -objectStream - .pipe(es.stringify()) - .pipe(fs.createWriteStream(filename)) -``` - -## readable (asyncFunction) - -create a readable stream (that respects pause) from an async function. -while the stream is not paused, -the function will be polled with `(count, callback)`, -and `this` will be the readable stream. - -``` js - -es.readable(function (count, callback) { - if(streamHasEnded) - return this.emit('end') - - //... - - this.emit('data', data) //use this way to emit multiple chunks per call. - - callback() // you MUST always call the callback eventually. - // the function will not be called again until you do this. -}) -``` -you can also pass the data and the error to the callback. -you may only call the callback once. -calling the same callback more than once will have no effect. - -## readArray (array) - -Create a readable stream from an Array. - -Just emit each item as a data event, respecting `pause` and `resume`. - -``` js - var es = require('event-stream') - , reader = es.readArray([1,2,3]) - - reader.pipe(...) -``` - -If you want the stream behave like a 0.10 stream you will need to wrap it using [`Readable.wrap()`](http://nodejs.org/api/stream.html#stream_readable_wrap_stream) function. Example: - -``` js - var s = new stream.Readable({objectMode: true}).wrap(es.readArray([1,2,3])); -``` - -## writeArray (callback) - -create a writeable stream from a callback, -all `data` events are stored in an array, which is passed to the callback when the stream ends. - -``` js - var es = require('event-stream') - , reader = es.readArray([1, 2, 3]) - , writer = es.writeArray(function (err, array){ - //array deepEqual [1, 2, 3] - }) - - reader.pipe(writer) -``` - -## pause () - -A stream that buffers all chunks when paused. - - -``` js - var ps = es.pause() - ps.pause() //buffer the stream, also do not allow 'end' - ps.resume() //allow chunks through -``` - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -(This is used by `pipeline` and `child`.) - -``` js - var grep = cp.exec('grep Stream') - - es.duplex(grep.stdin, grep.stdout) -``` - -## child (child_process) - -Create a through stream from a child process ... - -``` js - var cp = require('child_process') - - es.child(cp.exec('grep Stream')) // a through stream - -``` - -## wait (callback) - -waits for stream to emit 'end'. -joins chunks of a stream into a single string or buffer. -takes an optional callback, which will be passed the -complete string/buffer when it receives the 'end' event. - -also, emits a single 'data' event. - -``` js - -readStream.pipe(es.wait(function (err, body) { - // have complete text here. -})) - -``` - -# Other Stream Modules - -These modules are not included as a part of *EventStream* but may be -useful when working with streams. - -## [reduce (syncFunction, initial)](https://github.com/parshap/node-stream-reduce) - -Like `Array.prototype.reduce` but for streams. Given a sync reduce -function and an initial value it will return a through stream that emits -a single data event with the reduced value once the input stream ends. - -``` js -var reduce = require("stream-reduce"); -process.stdin.pipe(reduce(function(acc, data) { - return acc + data.length; -}, 0)).on("data", function(length) { - console.log("stdin size:", length); -}); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/connect.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/connect.asynct.js deleted file mode 100644 index e6a442bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/connect.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function makeExamplePipe() { - - return es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - d.delay(callback)(null, data) - }), - es.map(function (data, callback) { - callback(null, data + 2) - })) -} - -exports['simple pipe'] = function (test) { - - var pipe = makeExamplePipe() - - pipe.on('data', function (data) { - it(data).equal(18) - test.done() - }) - - pipe.write(8) - -} - -exports['read array then map'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - , first = es.readArray(readThis) - , read = [] - , pipe = - es.connect( - first, - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.writeArray(function (err, array) { - it(array).deepEqual(d.map(readThis, function (data) { - return {data: {data: data}} - })) - test.done() - }) - ) -} - -exports ['connect returns a stream'] = function (test) { - - var rw = - es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - callback(null, data * 5) - }) - ) - - it(rw).has({readable: true, writable: true}) - - var array = [190, 24, 6, 7, 40, 57, 4, 6] - , _array = [] - , c = - es.connect( - es.readArray(array), - rw, - es.log('after rw:'), - es.writeArray(function (err, _array) { - it(_array).deepEqual(array.map(function (e) { return e * 10 })) - test.done() - }) - ) - -} - - -require('./helper')(module) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/helper/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/helper/index.js deleted file mode 100644 index 96abaebe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/helper/index.js +++ /dev/null @@ -1,12 +0,0 @@ -var tape = require('tape') - -module.exports = function (m) { - if(m.parent) return - for(var name in m.exports) { - tape(name, function (t) { - console.log('start', name) - t.done = t.end - m.exports[name](t) - }) - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/merge.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/merge.asynct.js deleted file mode 100644 index 68f38ba9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/merge.asynct.js +++ /dev/null @@ -1,29 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports.merge = function (t) { - var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 - var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 - - var r1 = es.readArray(even) - var r2 = es.readArray(odd) - var endCount = 0 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - if (++endCount === 2) t.done() - }) - - var writer2 = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - if (++endCount === 2) t.done() - }) - - es.merge(r1, r2).pipe(writer) - es.merge([r1, r2]).pipe(writer2) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/parse.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/parse.asynct.js deleted file mode 100644 index a5fefcf9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/parse.asynct.js +++ /dev/null @@ -1,32 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - -exports ['es.parse() writes parsing errors with console.error'] = function (test) { - var parseStream = es.parse() - var oldConsoleError = console.error - console.error = function () { - console.error = oldConsoleError - it(arguments.length > 0).ok() - test.done() - } - - // bare word is not valid JSON - parseStream.write('A') -} - -exports ['es.parse({error: true(thy)}) emits error events from parsing'] = function (test) { - var parseStream = es.parse({error: 1}) - var expectedError - try { - JSON.parse('A') - } catch(e) { - expectedError = e - } - - parseStream.on('error', function (e) { - it(e).deepEqual(expectedError) - process.nextTick(function () { - test.done() - }) - }).write('A') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pause.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pause.asynct.js deleted file mode 100644 index b0736040..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pause.asynct.js +++ /dev/null @@ -1,39 +0,0 @@ - -var es = require('../') - , it = require('it-is') - , d = require('ubelt') - -exports ['gate buffers when shut'] = function (test) { - - var hundy = d.map(1,100, d.id) - , gate = es.pause() - , ten = 10 - es.connect( - es.readArray(hundy), - es.log('after readArray'), - gate, - //es.log('after gate'), - es.map(function (num, next) { - //stick a map in here to check that gate never emits when open - it(gate.paused).equal(false) - console.log('data', num) - if(!--ten) { - console.log('PAUSE') - gate.pause()//.resume() - d.delay(gate.resume.bind(gate), 10)() - ten = 10 - } - - next(null, num) - }), - es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted - console.log('eonuhoenuoecbulc') - it(array).deepEqual(hundy) - test.done() - }) - ) - - gate.resume() - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pipeline.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pipeline.asynct.js deleted file mode 100644 index f07c6fa5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/pipeline.asynct.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('..') - -exports['do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -exports['3 pipe do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readArray.asynct.js deleted file mode 100644 index 3eeb90a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readArray.asynct.js +++ /dev/null @@ -1,89 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function readStream(stream, pauseAt, done) { - if(!done) done = pauseAt, pauseAt = -1 - var array = [] - stream.on('data', function (data) { - array.push(data) - if(!--pauseAt ) - stream.pause(), done(null, array) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -exports ['read an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array and pause it.'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - readStream(reader, 10, function (err, data) { - if(err) throw err - it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) - readStream(reader, 10, function (err, data) { - it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) - test.done() - }) - reader.resume() - }) - -} - -exports ['reader is readable, but not writeable'] = function (test) { - var reader = es.readArray([1]) - it(reader).has({ - readable: true, - writable: false - }) - - test.done() -} - - -exports ['read one item per tick'] = function (test) { - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - var drains = 0 - var reader = es.readArray(readThis) - var tickMapper = es.map(function (data,callback) { - process.nextTick(function () { - callback(null, data) - }) - //since tickMapper is returning false - //pipe should pause the writer until a drain occurs - return false - }) - reader.pipe(tickMapper) - readStream(tickMapper, function (err, array) { - it(array).deepEqual(readThis) - it(array.length).deepEqual(readThis.length) - it(drains).equal(readThis.length) - test.done() - }) - tickMapper.on('drain', function () { - drains ++ - }) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readable.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readable.asynct.js deleted file mode 100644 index 6ea2fdbf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/readable.asynct.js +++ /dev/null @@ -1,197 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , u = require('ubelt') - -exports ['read an array'] = function (test) { - - - console.log('readable') - return test.end() - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - console.log('readable') - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - console.log('readable') - callback(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array - async'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - u.delay(callback)(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['emit data then call next() also works'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, next) { - if(i >= readThis.length) - return this.emit('end') - this.emit('data', readThis[i]) - next() - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['callback emits error, then stops'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , called = 0 - - var reader = - es.readable(function (i, callback) { - if(called++) - return - callback(err) - }) - - reader.on('error', function (_err){ - it(_err).deepEqual(err) - u.delay(function() { - it(called).equal(1) - test.done() - }, 50)() - }) -} - -exports['readable does not call read concurrently'] = function (test) { - - var current = 0 - var source = es.readable(function(count, cb){ - current ++ - if(count > 100) - return this.emit('end') - u.delay(function(){ - current -- - it(current).equal(0) - cb(null, {ok: true, n: count}); - })(); - }); - - var destination = es.map(function(data, cb){ - //console.info(data); - cb(); - }); - - var all = es.connect(source, destination); - - destination.on('end', test.done) -} - -exports ['does not raise a warning: Recursive process.nextTick detected'] = function (test) { - var readThisDelayed; - - u.delay(function () { - readThisDelayed = [1, 3, 5]; - })(); - - es.readable(function (count, callback) { - - if (readThisDelayed) { - var that = this; - readThisDelayed.forEach(function (item) { - that.emit('data', item); - }); - - this.emit('end'); - test.done(); - } - - callback(); - }); -}; - -// -// emitting multiple errors is not supported by stream. -// -// I do not think that this is a good idea, at least, there should be an option to pipe to -// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. -// an error might not necessarily mean the end of the stream. it depends on the error, at least. -// -// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. -// -// basically, I want to be able use pipe to transform objects, and if one object is invalid, -// the next might still be good, so I should get to choose if it's gonna stop. -// re-enstate this test when this issue progresses. -// -// hmm. I could add this to es.connect by deregistering the error listener, -// but I would rather it be an option in core. - -/* -exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { - - var readThis = d.map(1, 100, d.id) - , errors = 0 - var reader = - es.readable(function (i, callback) { - console.log(i, readThis.length) - if(i >= readThis.length) - return this.emit('end') - if(!(readThis[i] % 7)) - return callback(readThis[i]) - callback(null, readThis[i]) - }, true) - - var writer = es.writeArray(function (err, array) { - if(err) throw err - it(array).every(function (u){ - it(u % 7).notEqual(0) - }).property('length', 80) - it(errors).equal(14) - test.done() - }) - - reader.on('error', function (u) { - errors ++ - console.log(u) - if('number' !== typeof u) - throw u - - it(u % 7).equal(0) - - }) - - reader.pipe(writer) -} -*/ - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/replace.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/replace.asynct.js deleted file mode 100644 index 1c8735bd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/replace.asynct.js +++ /dev/null @@ -1,76 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , spec = require('stream-spec') - -var next = process.nextTick - -var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' - , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' - , fizzbuzzwhitespce = ' 12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB ' - -exports ['fizz buzz'] = function (test) { - - var readThis = d.map(1, 100, function (i) { - return ( - ! (i % 3 || i % 5) ? "FB" : - !(i % 3) ? "F" : - !(i % 5) ? "B" : - ''+i - ) - }) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - var join = es.wait(function (err, string){ - it(string).equal(fizzbuzz) - test.done() - }) - reader.pipe(join) - -} - - -exports ['fizz buzz replace'] = function (test) { - var split = es.split(/(1)/) - var replace = es.replace('7', 'seven') -// var x = spec(replace).through() - split - .pipe(replace) - .pipe(es.join(function (err, string) { - it(string).equal(fizz7buzz) - })) - - replace.on('close', function () { -// x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} - - -exports ['fizz buzz replace whitespace using regexp'] = function (test) { - var split = es.split(/(1)/) - var replaceLeading = es.replace(/^[\s]*/, '') - var replaceTrailing = es.replace(/[\s]*$/, '') -// var x = spec(replace).through() - split - .pipe(replaceLeading) - .pipe(replaceTrailing) - .pipe(es.join(function (err, string) { - it(string).equal(fizzbuzz) - })) - - replaceTrailing.on('close', function () { -// x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/simple-map.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/simple-map.asynct.js deleted file mode 100644 index 25121f93..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/simple-map.asynct.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -var es = require('../') - , it = require('it-is') - , u = require('ubelt') - , spec = require('stream-spec') - , Stream = require('stream') - , from = require('from') - , through = require('through') - -//REFACTOR THIS TEST TO USE es.readArray and es.writeArray - -function writeArray(array, stream) { - - array.forEach( function (j) { - stream.write(j) - }) - stream.end() - -} - -function readStream(stream, done) { - - var array = [] - stream.on('data', function (data) { - array.push(data) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -//call sink on each write, -//and complete when finished. - -function pauseStream (prob, delay) { - var pauseIf = ( - 'number' == typeof prob - ? function () { - return Math.random() < prob - } - : 'function' == typeof prob - ? prob - : 0.1 - ) - var delayer = ( - !delay - ? process.nextTick - : 'number' == typeof delay - ? function (next) { setTimeout(next, delay) } - : delay - ) - - return es.through(function (data) { - if(!this.paused && pauseIf()) { - console.log('PAUSE STREAM PAUSING') - this.pause() - var self = this - delayer(function () { - console.log('PAUSE STREAM RESUMING') - self.resume() - }) - } - console.log("emit ('data', " + data + ')') - this.emit('data', data) - }) -} - -exports ['simple map'] = function (test) { - - var input = u.map(1, 1000, function () { - return Math.random() - }) - var expected = input.map(function (v) { - return v * 2 - }) - - var pause = pauseStream(0.1) - var fs = from(input) - var ts = es.writeArray(function (err, ar) { - it(ar).deepEqual(expected) - test.done() - }) - var map = es.through(function (data) { - this.emit('data', data * 2) - }) - - spec(map).through().validateOnExit() - spec(pause).through().validateOnExit() - - fs.pipe(map).pipe(pause).pipe(ts) -} - -exports ['simple map applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - - var doubler = es.map(function (data, cb) { - cb(null, data * 2) - }) - - spec(doubler).through().validateOnExit() - - //a map is only a middle man, so it is both readable and writable - - it(doubler).has({ - readable: true, - writable: true, - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) -// process.nextTick(x.validate) - test.done() - }) - - writeArray(input, doubler) - -} - -exports['pipe two maps together'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - function dd (data, cb) { - cb(null, data * 2) - } - var doubler1 = es.map(dd), doubler2 = es.map(dd) - - doubler1.pipe(doubler2) - - spec(doubler1).through().validateOnExit() - spec(doubler2).through().validateOnExit() - - readStream(doubler2, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 4 - })) - test.done() - }) - - writeArray(input, doubler1) - -} - -//next: -// -// test pause, resume and drian. -// - -// then make a pipe joiner: -// -// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) -// -// will return a single stream that write goes to the first - -exports ['map will not call end until the callback'] = function (test) { - - var ticker = es.map(function (data, cb) { - process.nextTick(function () { - cb(null, data * 2) - }) - }) - - spec(ticker).through().validateOnExit() - - ticker.write('x') - ticker.end() - - ticker.on('end', function () { - test.done() - }) -} - - -exports ['emit error thrown'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function () { - throw err - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - -// onExit(spec(mapper).basic().validate) -//need spec that says stream may error. - - mapper.write('hello') - -} - -exports ['emit error calledback'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function (data, callback) { - callback(err) - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['do not emit drain if not paused'] = function (test) { - - var map = es.map(function (data, callback) { - u.delay(callback)(null, 1) - return true - }) - - spec(map).through().pausable().validateOnExit() - - map.on('drain', function () { - it(false).ok('should not emit drain unless the stream is paused') - }) - - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - setTimeout(function () {map.end()},10) - map.on('end', test.done) -} - -exports ['emits drain if paused, when all '] = function (test) { - var active = 0 - var drained = false - var map = es.map(function (data, callback) { - active ++ - u.delay(function () { - active -- - callback(null, 1) - })() - console.log('WRITE', false) - return false - }) - - spec(map).through().validateOnExit() - - map.on('drain', function () { - drained = true - it(active).equal(0, 'should emit drain when all maps are done') - }) - - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - - process.nextTick(function () {map.end()},10) - - map.on('end', function () { - console.log('end') - it(drained).ok('shoud have emitted drain before end') - test.done() - }) - -} - -exports ['map applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.map(function (data, callback) { - if (data % 2) - callback(null, data * 2) - else - callback() - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['simple mapSync applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['mapSync applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - if (data % 2) - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/spec.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/spec.asynct.js deleted file mode 100644 index 6d5fb6b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/spec.asynct.js +++ /dev/null @@ -1,86 +0,0 @@ -/* - assert that data is called many times - assert that end is called eventually - - assert that when stream enters pause state, - on drain is emitted eventually. -*/ - -var es = require('..') -var it = require('it-is').style('colour') -var spec = require('stream-spec') - -exports['simple stream'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.pause() - stream.write(1) - stream.resume() - stream.write(1) - stream.end(2) //this will call write() - - process.nextTick(function (){ - x.validate() - test.done() - }) -} - -exports['throw on write when !writable'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.end(2) //this will call write() - stream.write(1) //this will be throwing..., but the spec will catch it. - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - -exports['end fast'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.end() //this will call write() - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - - -/* - okay, that was easy enough, whats next? - - say, after you call paused(), write should return false - until resume is called. - - simple way to implement this: - write must return !paused - after pause() paused = true - after resume() paused = false - - on resume, if !paused drain is emitted again. - after drain, !paused - - there are lots of subtle ordering bugs in streams. - - example, set !paused before emitting drain. - - the stream api is stateful. -*/ - - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/split.asynct.js deleted file mode 100644 index 7d44bac0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/split.asynct.js +++ /dev/null @@ -1,47 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['es.split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = es.split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/stringify.js deleted file mode 100644 index d158185a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/stringify.js +++ /dev/null @@ -1,15 +0,0 @@ - - - -var es = require('../') - -exports['handle buffer'] = function (t) { - - - es.stringify().on('data', function (d) { - t.equal(d.trim(), JSON.stringify('HELLO')) - t.end() - }).write(new Buffer('HELLO')) - -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/writeArray.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/writeArray.asynct.js deleted file mode 100644 index 5d705de8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/event-stream/test/writeArray.asynct.js +++ /dev/null @@ -1,31 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports ['write an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - d.each(readThis, writer.write.bind(writer)) - writer.end() - -} - - -exports ['writer is writable, but not readable'] = function (test) { - var reader = es.writeArray(function () {}) - it(reader).has({ - readable: false, - writable: true - }) - - test.done() -} -require('./helper')(module) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 63072209..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/package.json deleted file mode 100644 index c85591a7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@>=1.0.33-1 <1.1.0-0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/through2" - ] - ], - "_from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_id": "readable-stream@1.0.34", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@>=1.0.33-1 <1.1.0-0", - "rawSpec": ">=1.0.33-1 <1.1.0-0", - "scope": null, - "spec": ">=1.0.33-1 <1.1.0-0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "_shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "_shrinkwrap": null, - "_spec": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/through2", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "gitHead": "1227c7b66deedb1dc5284a89425854d5f7ad9576", - "homepage": "https://github.com/isaacs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "1.0.34" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/readable.js deleted file mode 100644 index 26511e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,11 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = require('stream'); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.travis.yml deleted file mode 100644 index dad2273c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/LICENCE deleted file mode 100644 index 171dd970..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/examples/pretty.js deleted file mode 100644 index 2e891316..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/examples/pretty.js +++ /dev/null @@ -1,26 +0,0 @@ - -var inspect = require('util').inspect -var es = require('event-stream') //load event-stream -var split = require('../') - -if(!module.parent) { - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/index.js deleted file mode 100644 index d856433c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/index.js +++ /dev/null @@ -1,63 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - - -var through = require('through') -var Decoder = require('string_decoder').StringDecoder - -module.exports = split - -//TODO pass in a function to map across the lines. - -function split (matcher, mapper, options) { - var decoder = new Decoder() - var soFar = '' - var maxLength = options && options.maxLength; - if('function' === typeof matcher) - mapper = matcher, matcher = null - if (!matcher) - matcher = /\r?\n/ - - function emit(stream, piece) { - if(mapper) { - try { - piece = mapper(piece) - } - catch (err) { - return stream.emit('error', err) - } - if('undefined' !== typeof piece) - stream.queue(piece) - } - else - stream.queue(piece) - } - - function next (stream, buffer) { - var pieces = ((soFar != null ? soFar : '') + buffer).split(matcher) - soFar = pieces.pop() - - if (maxLength && soFar.length > maxLength) - stream.emit('error', new Error('maximum buffer reached')) - - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i] - emit(stream, piece) - } - } - - return through(function (b) { - next(this, decoder.write(b)) - }, - function () { - if(decoder.end) - next(this, decoder.end()) - if(soFar != null) - emit(this, soFar) - this.queue(null) - }) -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/package.json deleted file mode 100644 index 678680e5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - "split@0.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/event-stream" - ] - ], - "_from": "split@>=0.3.0 <0.4.0", - "_id": "split@0.3.3", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/split", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "2.2.0", - "_phantomChildren": {}, - "_requested": { - "name": "split", - "raw": "split@0.3", - "rawSpec": "0.3", - "scope": null, - "spec": ">=0.3.0 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip/event-stream" - ], - "_resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "_shasum": "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f", - "_shrinkwrap": null, - "_spec": "split@0.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/split/issues" - }, - "dependencies": { - "through": "2" - }, - "description": "split a Text Stream into a Line Stream", - "devDependencies": { - "asynct": "*", - "event-stream": "~3.0.2", - "it-is": "1", - "stream-spec": "~0.2", - "string-to-stream": "~1.0.0", - "ubelt": "~2.9" - }, - "directories": {}, - "dist": { - "shasum": "cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f", - "tarball": "https://registry.npmjs.org/split/-/split-0.3.3.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "3fe392ef2aabce9db7abe8185ec48389ae224883", - "homepage": "http://github.com/dominictarr/split", - "license": "MIT", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "split", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/split.git" - }, - "scripts": { - "test": "asynct test/" - }, - "version": "0.3.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/readme.markdown deleted file mode 100644 index 13854ae9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/readme.markdown +++ /dev/null @@ -1,66 +0,0 @@ -# Split (matcher) - -[![build status](https://secure.travis-ci.org/dominictarr/split.png)](http://travis-ci.org/dominictarr/split) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js - fs.createReadStream(file) - .pipe(split()) - .on('data', function (line) { - //each chunk now is a seperate line! - }) - -``` - -`split` takes the same arguments as `string.split` except it defaults to '/\r?\n/' instead of ',', and the optional `limit` paremeter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -`split` takes an optional options object on it's third argument. - -``` js - split(matcher, mapper, options) -``` - -Valid options: - -* maxLength - The maximum buffer length without seeing a newline or `matcher`, - if a single line exceeds this, the split stream will emit an error. - -``` js - split(JSON.parse, null, { maxLength: 2}) -``` - -## keep matched splitter - -As with `Array#split`, if you split by a regular expression with a matching group, -the matches will be retained in the collection. - -``` -stdin -.pipe(split(/(\r?\n)/)) -... //lines + separators. -``` - - -# NDJ - Newline Delimited Json - -`split` accepts a function which transforms each line. - -``` js -fs.createReadStream(file) - .pipe(split(JSON.parse)) - .on('data', function (obj) { - //each chunk now is a a js object - }) - .on('error', function (err) { - //syntax errors will land here - //note, this ends the stream. - }) -``` - -# License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/options.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/options.asynct.js deleted file mode 100644 index 6d34d875..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/options.asynct.js +++ /dev/null @@ -1,23 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['maximum buffer limit'] = function (test) { - var s = split(JSON.parse, null, { - maxLength: 2 - }) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - s.write('{ "') - it(caughtError).equal(true) - - s.end() - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/partitioned_unicode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/partitioned_unicode.js deleted file mode 100644 index aff3d5da..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/partitioned_unicode.js +++ /dev/null @@ -1,34 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['split data with partitioned unicode character'] = function (test) { - var s = split(/,/g) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - var x = 'テスト試験今日とても,よい天気で' - unicodeData = new Buffer(x); - - // partition of 日 - piece1 = unicodeData.slice(0, 20); - piece2 = unicodeData.slice(20, unicodeData.length); - - s.write(piece1); - s.write(piece2); - - s.end() - - it(caughtError).equal(false) - - it(rows).deepEqual(['テスト試験今日とても', 'よい天気で']); - - it(rows).deepEqual(x.split(',')) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/split.asynct.js deleted file mode 100644 index e5df026d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/split.asynct.js +++ /dev/null @@ -1,137 +0,0 @@ -var es = require('event-stream') - , it = require('it-is').style('colour') - , d = require('ubelt') - , split = require('..') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , Readable = require('stream').Readable - , spec = require('stream-spec') - , through = require('through') - , stringStream = require('string-to-stream') - -exports ['split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -exports ['split() takes mapper function'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split(function (line) { return line.toUpperCase() }) - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).equal(v.trim().toUpperCase()) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -exports ['split() works with empty string chunks'] = function (test) { - var str = ' foo' - , expected = str.split(/[\s]*/).reduce(splitBy(/[\s]*/), []) - , cs1 = split(/[\s]*/) - , cs2 = split(/[\s]*/) - , actual = [] - , ended = false - , x = spec(cs1).through() - , y = spec(cs2).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - y.validate() - }) - } - a.writable = true - - cs1.pipe(cs2) - cs2.pipe(a) - - cs1.write(str) - cs1.end() - -} - -function splitBy (delimeter) { - return function (arr, piece) { - return arr.concat(piece.split(delimeter)) - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/try_catch.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/try_catch.asynct.js deleted file mode 100644 index 39e49f73..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/split/test/try_catch.asynct.js +++ /dev/null @@ -1,51 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['emit mapper exceptions as error events'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}\n') - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - test.done() -} - -exports ['mapper error events on trailing chunks'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/README.md deleted file mode 100644 index 11259a5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - function (chunk, enc, cb) { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/package.json deleted file mode 100644 index 760df808..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "through2@^0.6.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip" - ] - ], - "_from": "through2@>=0.6.3 <0.7.0", - "_id": "through2@0.6.5", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/through2", - "_npmUser": { - "email": "bryce@ravenwall.com", - "name": "bryce" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "through2", - "raw": "through2@^0.6.3", - "rawSpec": "^0.6.3", - "scope": null, - "spec": ">=0.6.3 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "_shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "_shrinkwrap": null, - "_spec": "through2@^0.6.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": ">=0.9.0 <0.10.0-0", - "stream-spigot": ">=3.0.4 <3.1.0-0", - "tape": ">=2.14.0 <2.15.0-0" - }, - "directories": {}, - "dist": { - "shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "tarball": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "gitHead": "ba4a87875f2c82323c10023e36f4ae4b386c1bf8", - "homepage": "https://github.com/rvagg/through2", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "0.6.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/through2.js deleted file mode 100644 index 5b7a880e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/LICENSE deleted file mode 100644 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/README.md deleted file mode 100644 index ae6f16f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) - - -## Information - - - - - - - - - - - - - -
    Packagevinyl
    DescriptionA virtual file format
    Node Version>= 0.9
    - -## What is this? - -Read this for more info about how this plays into the grand scheme of things https://medium.com/@eschoff/3828e8126466 - -## File - -```javascript -var File = require('vinyl'); - -var coffeeFile = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee", - contents: new Buffer("test = 123") -}); -``` - -### constructor(options) - -#### options.cwd - -Type: `String` -Default: `process.cwd()` - -#### options.base - -Used for relative pathing. Typically where a glob starts. - -Type: `String` -Default: `options.cwd` - -#### options.path - -Full path to the file. - -Type: `String` -Default: `null` - -#### options.stat - -The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. - -Type: `fs.Stats` -Default: `null` - -#### options.contents - -File contents. - -Type: `Buffer, Stream, or null` -Default: `null` - -### isBuffer() - -Returns true if file.contents is a Buffer. - -### isStream() - -Returns true if file.contents is a Stream. - -### isNull() - -Returns true if file.contents is null. - -### clone() - -Returns a new File object with all attributes cloned. Custom attributes are deep-cloned. - -### pipe(stream[, opt]) - -If file.contents is a Buffer, it will write it to the stream. - -If file.contents is a Stream, it will pipe it to the stream. - -If file.contents is null, it will do nothing. - -If opt.end is false, the destination stream will not be ended (same as node core). - -Returns the stream. - -### inspect() - -Returns a pretty String interpretation of the File. Useful for console.log. - -### relative - -Returns path.relative for the file base and file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.relative); // file.coffee -``` - -[npm-url]: https://npmjs.org/package/vinyl -[npm-image]: https://badge.fury.io/js/vinyl.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl -[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl -[depstat-image]: https://david-dm.org/wearefractal/vinyl.png diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/index.js deleted file mode 100644 index 9aa47b78..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/index.js +++ /dev/null @@ -1,175 +0,0 @@ -var path = require('path'); -var clone = require('clone'); -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: false, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/cloneBuffer.js deleted file mode 100644 index 89f09eda..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/cloneBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/inspectStream.js deleted file mode 100644 index d36df6ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/inspectStream.js +++ /dev/null @@ -1,11 +0,0 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isBuffer.js deleted file mode 100644 index 0e23782c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isNull.js deleted file mode 100644 index 7f22c63a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isStream.js deleted file mode 100644 index 9ce0929b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/package.json deleted file mode 100644 index 39f46634..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/node_modules/vinyl/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "vinyl@^0.4.6", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip" - ] - ], - "_from": "vinyl@>=0.4.6 <0.5.0", - "_id": "vinyl@0.4.6", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip/vinyl", - "_nodeVersion": "0.10.33", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.1.6", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl", - "raw": "vinyl@^0.4.6", - "rawSpec": "^0.4.6", - "scope": null, - "spec": ">=0.4.6 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "_shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "_shrinkwrap": null, - "_spec": "vinyl@^0.4.6", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "dependencies": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - }, - "description": "A virtual file format", - "devDependencies": { - "buffer-equal": "0.0.1", - "coveralls": "^2.6.1", - "event-stream": "^3.1.0", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "lodash.templatesettings": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "rimraf": "^2.2.5", - "should": "^4.0.4" - }, - "directories": {}, - "dist": { - "shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "tarball": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "8255a5f1de7fecb1cd5e7ba7ac1ec997395f6be1", - "homepage": "http://github.com/wearefractal/vinyl", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "vinyl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint lib" - }, - "version": "0.4.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/package.json deleted file mode 100644 index 832309bc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_args": [ - [ - "gulp-vinyl-zip@^1.1.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/vscode" - ] - ], - "_from": "gulp-vinyl-zip@>=1.1.2 <2.0.0", - "_id": "gulp-vinyl-zip@1.2.2", - "_inCache": true, - "_installable": true, - "_location": "/gulp-vinyl-zip", - "_nodeVersion": "4.4.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/gulp-vinyl-zip-1.2.2.tgz_1458150226491_0.719407380791381" - }, - "_npmUser": { - "email": "mail@joaomoreno.com", - "name": "joaomoreno" - }, - "_npmVersion": "2.14.20", - "_phantomChildren": { - "clone-stats": "0.0.1", - "core-util-is": "1.0.2", - "duplexer": "0.1.1", - "from": "0.1.3", - "inherits": "2.0.1", - "isarray": "0.0.1", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "stream-combiner": "0.0.4", - "string_decoder": "0.10.31", - "through": "2.3.8", - "xtend": "4.0.1" - }, - "_requested": { - "name": "gulp-vinyl-zip", - "raw": "gulp-vinyl-zip@^1.1.2", - "rawSpec": "^1.1.2", - "scope": null, - "spec": ">=1.1.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vscode" - ], - "_resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-1.2.2.tgz", - "_shasum": "d00504b350f4bf71ee460b3c1409a3ba668e3f6f", - "_shrinkwrap": null, - "_spec": "gulp-vinyl-zip@^1.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vscode", - "author": { - "name": "João Moreno" - }, - "bugs": { - "url": "https://github.com/joaomoreno/gulp-vinyl-zip/issues" - }, - "dependencies": { - "event-stream": "^3.3.1", - "queue": "^3.0.10", - "through2": "^0.6.3", - "vinyl": "^0.4.6", - "vinyl-fs": "^0.3.13", - "yauzl": "^2.2.1", - "yazl": "^2.2.1" - }, - "description": "Streaming vinyl adapter for zip archives", - "devDependencies": { - "rimraf": "^2.2.8", - "temp": "^0.8.1" - }, - "directories": {}, - "dist": { - "shasum": "d00504b350f4bf71ee460b3c1409a3ba668e3f6f", - "tarball": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-1.2.2.tgz" - }, - "gitHead": "c1d74963fd5bb997e435710b48ba85252001e65f", - "homepage": "https://github.com/joaomoreno/gulp-vinyl-zip", - "keywords": [ - "gulp", - "gulpplugin", - "yazl", - "yazul", - "zip", - "streams", - "vinyl", - "vinyl-zip" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@joaomoreno.com", - "name": "joaomoreno" - } - ], - "name": "gulp-vinyl-zip", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/joaomoreno/gulp-vinyl-zip.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.2.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/assets/archive.zip b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/assets/archive.zip deleted file mode 100644 index dc68b283..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/assets/archive.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35dde87d42fa322f1cb7927a363866ae914dcb8dea3c13e1d77f104854836e0b -size 1582 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/tests.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/tests.js deleted file mode 100644 index 73dd3f6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulp-vinyl-zip/test/tests.js +++ /dev/null @@ -1,134 +0,0 @@ -'use strict'; - -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var through = require('through2'); -var temp = require('temp').track(); -var vfs = require('vinyl-fs'); -var rimraf = require('rimraf'); -var lib = require('..'); - -describe('gulp-vinyl-zip', function () { - it('src should be able to read from archives', function (cb) { - var count = 0; - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(through.obj(function(chunk, enc, cb) { - count++; - cb(); - }, function () { - assert.equal(7, count); - cb(); - })); - }); - - it('src should be able to read from archives in streams', function (cb) { - var count = 0; - - vfs.src(path.join(__dirname, 'assets', '*.zip')) - .pipe(lib.src()) - .pipe(through.obj(function(chunk, enc, cb) { - count++; - cb(); - }, function () { - assert.equal(7, count); - cb(); - })); - }); - - it('dest should be able to create an archive from another archive', function (cb) { - var dest = temp.openSync('gulp-vinyl-zip-test').path; - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(lib.dest(dest)) - .on('end', function () { - assert(fs.existsSync(dest)); - cb(); - }); - }); - - it('dest should be able to create an archive\'s directory tree', function (cb) { - var dest = temp.mkdirSync('gulp-vinyl-zip-test'); - var archive = path.join(dest, 'foo', 'bar', 'archive.zip'); - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(lib.dest(archive)) - .on('end', function () { - assert(fs.existsSync(archive)); - cb(); - }); - }); - - it('should be compatible with vinyl-fs', function (cb) { - var dest = temp.mkdirSync('gulp-vinyl-zip-test'); - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(vfs.dest(dest)) - .on('end', function () { - assert(fs.existsSync(dest)); - - // TODO: this should be 4, but symlinks are not supported by vinyl-fs yet - assert.equal(3, fs.readdirSync(dest).length); - cb(); - }); - }); - - it('dest should preserve stat', function (cb) { - var dest = temp.openSync('gulp-vinyl-zip-test').path; - var stats = Object.create(null); - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(through.obj(function (file, enc, cb) { - assert(file.stat); - stats[file.path] = file.stat; - cb(null, file); - }, function (cb) { - this.emit('end'); - cb(); - })) - .pipe(lib.dest(dest)) - .on('end', function () { - var count = 0; - - lib.src(dest) - .pipe(through.obj(function (file, enc, cb) { - count++; - - if (stats[file.path].atime.valueOf() || file.stat.atime.valueOf()) { - assert.equal(stats[file.path].atime.getTime(), file.stat.atime.getTime()); - } - - if (stats[file.path].ctime.valueOf() || file.stat.ctime.valueOf()) { - assert.equal(stats[file.path].ctime.getTime(), file.stat.ctime.getTime()); - } - - if (stats[file.path].mtime.valueOf() || file.stat.mtime.valueOf()) { - assert.equal(stats[file.path].mtime.getTime(), file.stat.mtime.getTime()); - } - - assert.equal(stats[file.path].isFile(), file.stat.isFile()); - assert.equal(stats[file.path].isDirectory(), file.stat.isDirectory()); - assert.equal(stats[file.path].isSymbolicLink(), file.stat.isSymbolicLink()); - - cb(); - }, function () { - assert.equal(7, count); - cb(); - })); - }); - }); - - it('dest should not assume files have `stat`', function (cb) { - var dest = temp.openSync('gulp-vinyl-zip-test').path; - - lib.src(path.join(__dirname, 'assets', 'archive.zip')) - .pipe(through.obj(function(chunk, enc, cb) { - delete chunk.stat; - this.push(chunk); - cb(); - })) - .pipe(lib.dest(dest)) - .on('end', cb); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/CHANGELOG.md deleted file mode 100644 index 5f84e9bb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/CHANGELOG.md +++ /dev/null @@ -1,10 +0,0 @@ -# gulplog changelog - -## 1.0.0 - -- Initial release -- No implementation changed since initial commit - -## 0.0.0 - -- Experimentation diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/LICENSE deleted file mode 100644 index 8ac35549..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Blaine Bublitz, Eric Schoffstall and other contributors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/README.md deleted file mode 100644 index 484e939e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/README.md +++ /dev/null @@ -1,79 +0,0 @@ -

    - - - -

    - -# gulplog - -[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Gitter chat][gitter-image]][gitter-url] - -Logger for gulp and gulp plugins - -## Usage - -```js -var logger = require('gulplog'); - -// logs strings -logger.debug('The MOST verbose!'); -logger.info('Some important info'); -logger.warn('All the warnings to you'); -logger.error('OH NO! SOMETHING HAPPENED!'); - -// supports util.format! -logger.info('%s style!', 'printf'); - -// log anything -logger.debug({ my: 'obj' }); -logger.info([1, 2, 3]); -``` - -## API - -Logging (and level of logging) is controlled by [`gulp-cli`][gulp-cli-url] - -#### logger.debug(msg) - -Highest log level. Typically used for debugging purposes. - -If the first argument is a string, all arguments are passed to node's -[`util.format()`][util-format-url] before being emitted. - -#### logger.info(msg) - -Standard log level. Typically used for user information. - -If the first argument is a string, all arguments are passed to node's -[`util.format()`][util-format-url] before being emitted. - -#### logger.warn(msg) - -Warning log level. Typically used for warnings. - -If the first argument is a string, all arguments are passed to node's -[`util.format()`][util-format-url] before being emitted. - -#### logger.error(msg) - -Error log level. Typically used when things went horribly wrong. - -If the first argument is a string, all arguments are passed to node's -[`util.format()`][util-format-url] before being emitted. - -## License - -MIT - -[downloads-image]: http://img.shields.io/npm/dm/gulplog.svg -[npm-url]: https://npmjs.org/package/gulplog -[npm-image]: http://img.shields.io/npm/v/gulplog.svg - -[travis-url]: https://travis-ci.org/gulpjs/gulplog -[travis-image]: http://img.shields.io/travis/gulpjs/gulplog.svg - -[gitter-url]: https://gitter.im/gulpjs/gulp -[gitter-image]: https://badges.gitter.im/gulpjs/gulp.png - -[gulp-cli-url]: https://github.com/gulpjs/gulp-cli -[util-format-url]: https://nodejs.org/docs/latest/api/util.html#util_util_format_format diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/index.js deleted file mode 100644 index b92a6466..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -var getLogger = require('glogg'); - -var logger = getLogger('gulplog'); - -module.exports = logger; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/package.json deleted file mode 100644 index 2cf0ef9d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/gulplog/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "gulplog@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "gulplog@>=1.0.0 <2.0.0", - "_id": "gulplog@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/gulplog", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.14.3", - "_phantomChildren": {}, - "_requested": { - "name": "gulplog", - "raw": "gulplog@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "_shasum": "e28c4d45d05ecbbed818363ce8f9c5926229ffe5", - "_shrinkwrap": null, - "_spec": "gulplog@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://iceddev.com" - }, - "bugs": { - "url": "https://github.com/gulpjs/gulplog/issues" - }, - "contributors": [], - "dependencies": { - "glogg": "^1.0.0" - }, - "description": "Logger for gulp and gulp plugins", - "devDependencies": { - "eslint": "^1.5.1", - "eslint-config-node-style-guide": "^1.0.1", - "jscs": "^2.1.1" - }, - "directories": {}, - "dist": { - "shasum": "e28c4d45d05ecbbed818363ce8f9c5926229ffe5", - "tarball": "http://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "LICENSE", - "index.js" - ], - "gitHead": "c920ad89da5a8f3724d35c83b6cbd8e132dada2b", - "homepage": "https://github.com/gulpjs/gulplog#readme", - "keywords": [ - "gulp", - "gulp-util", - "log", - "logging" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "gulplog", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/gulpjs/gulplog.git" - }, - "scripts": { - "test": "eslint index.js && jscs index.js" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/LICENSE deleted file mode 100644 index ca55c91a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2015, Ahmad Nassri - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/README.md deleted file mode 100644 index f40ab755..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/README.md +++ /dev/null @@ -1,362 +0,0 @@ -# HAR Validator [![version][npm-version]][npm-url] [![License][npm-license]][license-url] - -Extremely fast HTTP Archive ([HAR](http://www.softwareishard.com/blog/har-12-spec/)) validator using JSON Schema. - -[![Build Status][travis-image]][travis-url] -[![Downloads][npm-downloads]][npm-url] -[![Code Climate][codeclimate-quality]][codeclimate-url] -[![Coverage Status][codeclimate-coverage]][codeclimate-url] -[![Dependencies][david-image]][david-url] - -## Install - -```shell -# to use in cli -npm install --global har-validator - -# to use as a module -npm install --save har-validator -``` - -## Usage - -``` - - Usage: har-validator [options] - - Options: - - -h, --help output usage information - -V, --version output the version number - -s, --schema [name] validate schema name (log, request, response, etc ...) - -``` - -###### Example - -```shell -har-validator har.json - -har-validator --schema request request.json -``` - -## API - -### Validate(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a full [HAR](http://www.softwareishard.com/blog/har-12-spec/) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var HAR = require('./har.json'); -var validate = require('har-validator'); - -validate(HAR, function (e, valid) { - if (e) console.log(e.errors) - - if (valid) console.log('horray!'); -}); -``` - -### Validate.log(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [log](http://www.softwareishard.com/blog/har-12-spec/#log) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.log(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.cache(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [cache](http://www.softwareishard.com/blog/har-12-spec/#cache) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.cache(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.cacheEntry(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a ["beforeRequest" or "afterRequest"](http://www.softwareishard.com/blog/har-12-spec/#cache) objects - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.cacheEntry(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.content(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [content](http://www.softwareishard.com/blog/har-12-spec/#content) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.content(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.cookie(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [cookie](http://www.softwareishard.com/blog/har-12-spec/#cookies) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.cookie(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.creator(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [creator](http://www.softwareishard.com/blog/har-12-spec/#creator) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.creator(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.entry(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - an [entry](http://www.softwareishard.com/blog/har-12-spec/#entries) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.entry(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.log(data [, callback]) - -alias of [`Validate(data [, callback])`](#validate-data-callback-) - -### Validate.page(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [page](http://www.softwareishard.com/blog/har-12-spec/#pages) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.page(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.pageTimings(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [pageTimings](http://www.softwareishard.com/blog/har-12-spec/#pageTimings) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.pageTimings(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.postData(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [postData](http://www.softwareishard.com/blog/har-12-spec/#postData) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.postData(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.record(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [record](http://www.softwareishard.com/blog/har-12-spec/#headers) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.record(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.request(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [request](http://www.softwareishard.com/blog/har-12-spec/#request) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.request(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.response(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [response](http://www.softwareishard.com/blog/har-12-spec/#response) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.cacheEntry(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -### Validate.timings(data [, callback]) - -Returns `true` or `false`. - -- **data**: `Object` *(Required)* - a [timings](http://www.softwareishard.com/blog/har-12-spec/#timings) object - -- **callback**: `Function` - gets two arguments (err, valid) - -```js -var validate = require('har-validator'); - -validate.timings(data, function (e, valid) { - if (e) console.log(e.errors) -}); -``` - -## Support - -Donations are welcome to help support the continuous development of this project. - -[![Gratipay][gratipay-image]][gratipay-url] -[![PayPal][paypal-image]][paypal-url] -[![Flattr][flattr-image]][flattr-url] -[![Bitcoin][bitcoin-image]][bitcoin-url] - -## License - -[ISC License](LICENSE) © [Ahmad Nassri](https://www.ahmadnassri.com/) - -[license-url]: https://github.com/ahmadnassri/har-validator/blob/master/LICENSE - -[travis-url]: https://travis-ci.org/ahmadnassri/har-validator -[travis-image]: https://img.shields.io/travis/ahmadnassri/har-validator.svg?style=flat-square - -[npm-url]: https://www.npmjs.com/package/har-validator -[npm-license]: https://img.shields.io/npm/l/har-validator.svg?style=flat-square -[npm-version]: https://img.shields.io/npm/v/har-validator.svg?style=flat-square -[npm-downloads]: https://img.shields.io/npm/dm/har-validator.svg?style=flat-square - -[codeclimate-url]: https://codeclimate.com/github/ahmadnassri/har-validator -[codeclimate-quality]: https://img.shields.io/codeclimate/github/ahmadnassri/har-validator.svg?style=flat-square -[codeclimate-coverage]: https://img.shields.io/codeclimate/coverage/github/ahmadnassri/har-validator.svg?style=flat-square - -[david-url]: https://david-dm.org/ahmadnassri/har-validator -[david-image]: https://img.shields.io/david/ahmadnassri/har-validator.svg?style=flat-square - -[gratipay-url]: https://www.gratipay.com/ahmadnassri/ -[gratipay-image]: https://img.shields.io/gratipay/ahmadnassri.svg?style=flat-square - -[paypal-url]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UJ2B2BTK9VLRS&on0=project&os0=har-validator -[paypal-image]: http://img.shields.io/badge/paypal-donate-green.svg?style=flat-square - -[flattr-url]: https://flattr.com/submit/auto?user_id=ahmadnassri&url=https://github.com/ahmadnassri/har-validator&title=har-validator&language=&tags=github&category=software -[flattr-image]: http://img.shields.io/badge/flattr-donate-green.svg?style=flat-square - -[bitcoin-image]: http://img.shields.io/badge/bitcoin-1Nb46sZRVG3or7pNaDjthcGJpWhvoPpCxy-green.svg?style=flat-square -[bitcoin-url]: https://www.coinbase.com/checkouts/ae383ae6bb931a2fa5ad11cec115191e?name=har-validator diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/bin/har-validator b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/bin/har-validator deleted file mode 100755 index ab1db256..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/bin/har-validator +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env node - -'use strict' - -var Promise = require('bluebird') - -var chalk = require('chalk') -var cmd = require('commander') -var fs = Promise.promisifyAll(require('fs')) -var path = require('path') -var pkg = require('../package.json') -var validate = Promise.promisifyAll(require('..')) - -cmd - .version(pkg.version) - .usage('[options] ') - .option('-s, --schema [name]', 'validate schema name (log, request, response, etc ...)') - .parse(process.argv) - -if (!cmd.args.length) { - cmd.help() -} - -if (!cmd.schema) { - cmd.schema = 'har' -} - -cmd.args.map(function (fileName) { - var file = chalk.yellow.italic(path.basename(fileName)) - - fs.readFileAsync(fileName) - .then(JSON.parse) - .then(validate[cmd.schema + 'Async']) - .then(function () { - console.log('%s [%s] is valid', chalk.green('✓'), file) - }) - .catch(SyntaxError, function (e) { - console.error('%s [%s] failed to read JSON: %s', chalk.red('✖'), file, chalk.red(e.message)) - }) - .catch(function (e) { - e.errors.map(function (err) { - console.error('%s [%s] failed validation: (%s: %s) %s', chalk.red('✖'), file, chalk.cyan.italic(err.field), chalk.magenta.italic(err.value), chalk.red(err.message)) - }) - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/error.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/error.js deleted file mode 100644 index fc08a872..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/error.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict' - -function ValidationError (errors) { - this.name = 'ValidationError' - this.errors = errors -} - -ValidationError.prototype = Error.prototype - -module.exports = ValidationError diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/index.js deleted file mode 100644 index 81d55607..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/index.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -var schemas = require('./schemas') -var ValidationError = require('./error') -var validator = require('is-my-json-valid') - -var runner = function (schema, data, cb) { - var validate = validator(schema, { - greedy: true, - verbose: true, - schemas: schemas - }) - - var valid = false - - if (data !== undefined) { - // execute is-my-json-valid - valid = validate(data) - } - - // callback? - if (!cb) { - return valid - } else { - return cb(validate.errors ? new ValidationError(validate.errors) : null, valid) - } - - return valid -} - -module.exports = function (data, cb) { - return runner(schemas.har, data, cb) -} - -Object.keys(schemas).map(function (name) { - module.exports[name] = function (data, cb) { - return runner(schemas[name], data, cb) - } -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cache.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cache.json deleted file mode 100644 index a3ab682d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cache.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "properties": { - "beforeRequest": { - "$ref": "#cacheEntry" - }, - "afterRequest": { - "$ref": "#cacheEntry" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cacheEntry.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cacheEntry.json deleted file mode 100644 index a397439f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cacheEntry.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "oneOf": [{ - "type": "object", - "optional": true, - "required": [ - "lastAccess", - "eTag", - "hitCount" - ], - "properties": { - "expires": { - "type": "string" - }, - "lastAccess": { - "type": "string" - }, - "eTag": { - "type": "string" - }, - "hitCount": { - "type": "integer" - }, - "comment": { - "type": "string" - } - } - }, { - "type": null, - "additionalProperties": false - }] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/content.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/content.json deleted file mode 100644 index 3710d793..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/content.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "object", - "required": [ - "size", - "mimeType" - ], - "properties": { - "size": { - "type": "integer" - }, - "compression": { - "type": "integer" - }, - "mimeType": { - "type": "string" - }, - "text": { - "type": "string" - }, - "encoding": { - "type": "string" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cookie.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cookie.json deleted file mode 100644 index 57681818..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/cookie.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - }, - "path": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "expires": { - "type": ["string", "null"], - "format": "date-time" - }, - "httpOnly": { - "type": "boolean" - }, - "secure": { - "type": "boolean" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/creator.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/creator.json deleted file mode 100644 index 50586006..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/creator.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/entry.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/entry.json deleted file mode 100644 index 8a9c022b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/entry.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "type": "object", - "optional": true, - "required": [ - "startedDateTime", - "time", - "request", - "response", - "cache", - "timings" - ], - "properties": { - "pageref": { - "type": "string" - }, - "startedDateTime": { - "type": "string", - "format": "date-time", - "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))" - }, - "time": { - "type": "number", - "min": 0 - }, - "request": { - "$ref": "#request" - }, - "response": { - "$ref": "#response" - }, - "cache": { - "$ref": "#cache" - }, - "timings": { - "$ref": "#timings" - }, - "serverIPAddress": { - "type": "string", - "oneOf": [ - { "format": "ipv4" }, - { "format": "ipv6" } - ] - }, - "connection": { - "type": "string" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/har.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/har.json deleted file mode 100644 index b542782d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/har.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "object", - "required": [ - "log" - ], - "properties": { - "log": { - "$ref": "#log" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/index.js deleted file mode 100644 index 7b6db7da..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/index.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict' - -var schemas = { - cache: require('./cache.json'), - cacheEntry: require('./cacheEntry.json'), - content: require('./content.json'), - cookie: require('./cookie.json'), - creator: require('./creator.json'), - entry: require('./entry.json'), - har: require('./har.json'), - log: require('./log.json'), - page: require('./page.json'), - pageTimings: require('./pageTimings.json'), - postData: require('./postData.json'), - record: require('./record.json'), - request: require('./request.json'), - response: require('./response.json'), - timings: require('./timings.json') -} - -// is-my-json-valid does not provide meaningful error messages for external schemas -// this is a workaround -schemas.cache.properties.beforeRequest = schemas.cacheEntry -schemas.cache.properties.afterRequest = schemas.cacheEntry - -schemas.page.properties.pageTimings = schemas.pageTimings - -schemas.request.properties.cookies.items = schemas.cookie -schemas.request.properties.headers.items = schemas.record -schemas.request.properties.queryString.items = schemas.record -schemas.request.properties.postData = schemas.postData - -schemas.response.properties.cookies.items = schemas.cookie -schemas.response.properties.headers.items = schemas.record -schemas.response.properties.content = schemas.content - -schemas.entry.properties.request = schemas.request -schemas.entry.properties.response = schemas.response -schemas.entry.properties.cache = schemas.cache -schemas.entry.properties.timings = schemas.timings - -schemas.log.properties.creator = schemas.creator -schemas.log.properties.browser = schemas.creator -schemas.log.properties.pages.items = schemas.page -schemas.log.properties.entries.items = schemas.entry - -schemas.har.properties.log = schemas.log - -module.exports = schemas diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/log.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/log.json deleted file mode 100644 index 0c91d38b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/log.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "object", - "required": [ - "version", - "creator", - "entries" - ], - "properties": { - "version": { - "type": "string" - }, - "creator": { - "$ref": "#creator" - }, - "browser": { - "$ref": "#creator" - }, - "pages": { - "type": "array", - "items": { - "$ref": "#page" - } - }, - "entries": { - "type": "array", - "items": { - "$ref": "#entry" - } - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/page.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/page.json deleted file mode 100644 index ef64abe5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/page.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "object", - "optional": true, - "required": [ - "startedDateTime", - "id", - "title", - "pageTimings" - ], - "properties": { - "startedDateTime": { - "type": "string", - "format": "date-time", - "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))" - }, - "id": { - "type": "string", - "unique": true - }, - "title": { - "type": "string" - }, - "pageTimings": { - "$ref": "#pageTimings" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/pageTimings.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/pageTimings.json deleted file mode 100644 index adc83ccc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/pageTimings.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "object", - "properties": { - "onContentLoad": { - "type": "number", - "min": -1 - }, - "onLoad": { - "type": "number", - "min": -1 - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/postData.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/postData.json deleted file mode 100644 index 91958b64..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/postData.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "type": "object", - "optional": true, - "required": [ - "mimeType" - ], - "properties": { - "mimeType": { - "type": "string" - }, - "text": { - "type": "string" - }, - "params": { - "type": "array", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "contentType": { - "type": "string" - }, - "comment": { - "type": "string" - } - } - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/record.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/record.json deleted file mode 100644 index 04acd519..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/record.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "object", - "required": [ - "name", - "value" - ], - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/request.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/request.json deleted file mode 100644 index 639af06d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/request.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "type": "object", - "required": [ - "method", - "url", - "httpVersion", - "cookies", - "headers", - "queryString", - "headersSize", - "bodySize" - ], - "properties": { - "method": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "httpVersion": { - "type": "string" - }, - "cookies": { - "type": "array", - "items": { - "$ref": "#cookie" - } - }, - "headers": { - "type": "array", - "items": { - "$ref": "#record" - } - }, - "queryString": { - "type": "array", - "items": { - "$ref": "#record" - } - }, - "postData": { - "$ref": "#postData" - }, - "headersSize": { - "type": "integer" - }, - "bodySize": { - "type": "integer" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/response.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/response.json deleted file mode 100644 index de99c55b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/response.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "object", - "required": [ - "status", - "statusText", - "httpVersion", - "cookies", - "headers", - "content", - "redirectURL", - "headersSize", - "bodySize" - ], - "properties": { - "status": { - "type": "integer" - }, - "statusText": { - "type": "string" - }, - "httpVersion": { - "type": "string" - }, - "cookies": { - "type": "array", - "items": { - "$ref": "#cookie" - } - }, - "headers": { - "type": "array", - "items": { - "$ref": "#record" - } - }, - "content": { - "$ref": "#content" - }, - "redirectURL": { - "type": "string" - }, - "headersSize": { - "type": "integer" - }, - "bodySize": { - "type": "integer" - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/timings.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/timings.json deleted file mode 100644 index 066ef71a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/lib/schemas/timings.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "required": [ - "send", - "wait", - "receive" - ], - "properties": { - "dns": { - "type": "number", - "min": -1 - }, - "connect": { - "type": "number", - "min": -1 - }, - "blocked": { - "type": "number", - "min": -1 - }, - "send": { - "type": "number", - "min": -1 - }, - "wait": { - "type": "number", - "min": -1 - }, - "receive": { - "type": "number", - "min": -1 - }, - "ssl": { - "type": "number", - "min": -1 - }, - "comment": { - "type": "string" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/package.json deleted file mode 100644 index 59f32a03..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/har-validator/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "_args": [ - [ - "har-validator@^1.6.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "har-validator@>=1.6.1 <2.0.0", - "_id": "har-validator@1.8.0", - "_inCache": true, - "_installable": true, - "_location": "/har-validator", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "ahmad@ahmadnassri.com", - "name": "ahmadnassri" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "har-validator", - "raw": "har-validator@^1.6.1", - "rawSpec": "^1.6.1", - "scope": null, - "spec": ">=1.6.1 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "_shasum": "d83842b0eb4c435960aeb108a067a3aa94c0eeb2", - "_shrinkwrap": null, - "_spec": "har-validator@^1.6.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "ahmad@ahmadnassri.com", - "name": "Ahmad Nassri", - "url": "https://www.ahmadnassri.com/" - }, - "bin": { - "har-validator": "bin/har-validator" - }, - "bugs": { - "url": "https://github.com/ahmadnassri/har-validator/issues" - }, - "dependencies": { - "bluebird": "^2.9.30", - "chalk": "^1.0.0", - "commander": "^2.8.1", - "is-my-json-valid": "^2.12.0" - }, - "description": "Extremely fast HTTP Archive (HAR) validator using JSON Schema", - "devDependencies": { - "codeclimate-test-reporter": "0.0.4", - "echint": "^1.3.0", - "istanbul": "^0.3.15", - "mocha": "^2.2.5", - "require-directory": "^2.1.1", - "should": "^7.0.1", - "standard": "^4.3.1" - }, - "directories": {}, - "dist": { - "shasum": "d83842b0eb4c435960aeb108a067a3aa94c0eeb2", - "tarball": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz" - }, - "echint": { - "ignore": [ - "coverage/**" - ] - }, - "engines": { - "node": ">=0.10" - }, - "files": [ - "bin", - "lib" - ], - "gitHead": "8fd21c30edb23a1fed2d50b934d055d1be3dd7c9", - "homepage": "https://github.com/ahmadnassri/har-validator", - "keywords": [ - "har", - "http", - "archive", - "validate", - "validator" - ], - "license": "ISC", - "main": "lib/index", - "maintainers": [ - { - "email": "ahmad@ahmadnassri.com", - "name": "ahmadnassri" - } - ], - "name": "har-validator", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/ahmadnassri/har-validator.git" - }, - "scripts": { - "codeclimate": "codeclimate < coverage/lcov.info", - "coverage": "istanbul cover --dir coverage _mocha -- -R dot", - "posttest": "npm run coverage", - "pretest": "standard && echint", - "test": "mocha" - }, - "version": "1.8.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/index.js deleted file mode 100644 index 98fae067..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -var ansiRegex = require('ansi-regex'); -var re = new RegExp(ansiRegex().source); // remove the `g` flag -module.exports = re.test.bind(re); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/package.json deleted file mode 100644 index dcae6d52..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/package.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "_args": [ - [ - "has-ansi@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/chalk" - ] - ], - "_from": "has-ansi@>=2.0.0 <3.0.0", - "_id": "has-ansi@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/has-ansi", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "has-ansi", - "raw": "has-ansi@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "_shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91", - "_shrinkwrap": null, - "_spec": "has-ansi@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/has-ansi/issues" - }, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "description": "Check if a string has ANSI escape codes", - "devDependencies": { - "ava": "0.0.4" - }, - "directories": {}, - "dist": { - "shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91", - "tarball": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "0722275e1bef139fcd09137da6e5550c3cd368b9", - "homepage": "https://github.com/sindresorhus/has-ansi", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "string", - "tty", - "escape", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern", - "has" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "has-ansi", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/has-ansi.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/readme.md deleted file mode 100644 index 02bc7c23..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-ansi/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi) - -> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -``` -$ npm install --save has-ansi -``` - - -## Usage - -```js -var hasAnsi = require('has-ansi'); - -hasAnsi('\u001b[4mcake\u001b[0m'); -//=> true - -hasAnsi('cake'); -//=> false -``` - - -## Related - -- [has-ansi-cli](https://github.com/sindresorhus/has-ansi-cli) - CLI for this module -- [strip-ansi](https://github.com/sindresorhus/strip-ansi) - Strip ANSI escape codes -- [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes -- [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/LICENSE deleted file mode 100644 index ce6aef79..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 gulp - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/README.md deleted file mode 100644 index 072cfa4c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# has-gulplog -Check if gulplog is available before attempting to use it diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/index.js deleted file mode 100644 index c78b51f2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/index.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -var sparkles = require('sparkles'); - -function hasGulplog(){ - return sparkles.exists('gulplog'); -} - -module.exports = hasGulplog; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/package.json deleted file mode 100644 index 889432af..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/has-gulplog/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "has-gulplog@^0.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "has-gulplog@>=0.1.0 <0.2.0", - "_id": "has-gulplog@0.1.0", - "_inCache": true, - "_installable": true, - "_location": "/has-gulplog", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "has-gulplog", - "raw": "has-gulplog@^0.1.0", - "rawSpec": "^0.1.0", - "scope": null, - "spec": ">=0.1.0 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "_shasum": "6414c82913697da51590397dafb12f22967811ce", - "_shrinkwrap": null, - "_spec": "has-gulplog@^0.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://iceddev.com" - }, - "bugs": { - "url": "https://github.com/gulpjs/has-gulplog/issues" - }, - "contributors": [], - "dependencies": { - "sparkles": "^1.0.0" - }, - "description": "Check if gulplog is available before attempting to use it", - "devDependencies": { - "eslint": "^1.3.1" - }, - "directories": {}, - "dist": { - "shasum": "6414c82913697da51590397dafb12f22967811ce", - "tarball": "http://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "index.js", - "LICENSE" - ], - "gitHead": "16ef7af9911ec91838b2762bf1ba38b4578e6f6f", - "homepage": "https://github.com/gulpjs/has-gulplog#readme", - "keywords": [ - "gulp-util", - "gulplog", - "logging" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "has-gulplog", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/gulpjs/has-gulplog.git" - }, - "scripts": { - "test": "eslint *.js" - }, - "version": "0.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.npmignore deleted file mode 100644 index 70febc05..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.npmignore +++ /dev/null @@ -1,20 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -components -build -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.travis.yml deleted file mode 100755 index 047f7e3d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js - -node_js: - - 0.10 - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/LICENSE deleted file mode 100755 index 78809368..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2012-2014, Eran Hammer and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hueniverse/hawk/graphs/contributors diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/Makefile deleted file mode 100755 index b102d5ab..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test: - @node node_modules/lab/bin/lab -a code -test-cov: - @node node_modules/lab/bin/lab -a code -t 100 -test-cov-html: - @node node_modules/lab/bin/lab -a code -r html -o coverage.html - -.PHONY: test test-cov test-cov-html diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/README.md deleted file mode 100755 index 0bcd2879..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/hawk/README.md +++ /dev/null @@ -1,635 +0,0 @@ -![hawk Logo](https://raw.github.com/hueniverse/hawk/master/images/hawk.png) - - **Hawk** is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial -HTTP request cryptographic verification. For more complex use cases such as access delegation, see [Oz](https://github.com/hueniverse/oz). - -Current version: **2.3** - -Note: 2.x is the same exact protocol as 1.1. The version increment reflects a change in the internal error format -used by the module and used by the node API. - -[![Build Status](https://secure.travis-ci.org/hueniverse/hawk.png)](http://travis-ci.org/hueniverse/hawk) - -# Table of Content - -- [**Introduction**](#introduction) - - [Replay Protection](#replay-protection) - - [Usage Example](#usage-example) - - [Protocol Example](#protocol-example) - - [Payload Validation](#payload-validation) - - [Response Payload Validation](#response-payload-validation) - - [Browser Support and Considerations](#browser-support-and-considerations) -

    -- [**Single URI Authorization**](#single-uri-authorization) - - [Usage Example](#bewit-usage-example) -

    -- [**Security Considerations**](#security-considerations) - - [MAC Keys Transmission](#mac-keys-transmission) - - [Confidentiality of Requests](#confidentiality-of-requests) - - [Spoofing by Counterfeit Servers](#spoofing-by-counterfeit-servers) - - [Plaintext Storage of Credentials](#plaintext-storage-of-credentials) - - [Entropy of Keys](#entropy-of-keys) - - [Coverage Limitations](#coverage-limitations) - - [Future Time Manipulation](#future-time-manipulation) - - [Client Clock Poisoning](#client-clock-poisoning) - - [Bewit Limitations](#bewit-limitations) - - [Host Header Forgery](#host-header-forgery) -

    -- [**Frequently Asked Questions**](#frequently-asked-questions) -

    -- [**Implementations**](#implementations) -- [**Acknowledgements**](#acknowledgements) - -# Introduction - -**Hawk** is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with -partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, -and optionally the request payload. - -Similar to the HTTP [Digest access authentication schemes](http://www.ietf.org/rfc/rfc2617.txt), **Hawk** uses a set of -client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme, -the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is -included in its place. - -However, **Hawk** has several differences from Digest. In particular, while both use a nonce to limit the possibility of -replay attacks, in **Hawk** the client generates the nonce and uses it in combination with a timestamp, leading to less -"chattiness" (interaction with the server). - -Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because -the client and server must both have access to the key material in the clear. - -The primary design goals of this scheme are to: -* simplify and improve HTTP authentication for services that are unwilling or unable to deploy TLS for all resources, -* secure credentials against leakage (e.g., when the client uses some form of dynamic configuration to determine where - to send an authenticated request), and -* avoid the exposure of credentials sent to a malicious server over an unauthenticated secure channel due to client - failure to validate the server's identity as part of its TLS handshake. - -In addition, **Hawk** supports a method for granting third-parties temporary access to individual resources using -a query parameter called _bewit_ (in falconry, a leather strap used to attach a tracking device to the leg of a hawk). - -The **Hawk** scheme requires the establishment of a shared symmetric key between the client and the server, -which is beyond the scope of this module. Typically, the shared credentials are established via an initial -TLS-protected phase or derived from some other shared confidential information available to both the client -and the server. - - -## Replay Protection - -Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more -than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when -making requests. This gives the server enough information to prevent replay attacks. - -The nonce is generated by the client, and is a string unique across all requests with the same timestamp and -key identifier combination. - -The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards -are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks. -By default, **Hawk** uses a time window of 1 minute to allow for time skew between the client and server (which in -practice translates to a maximum of 2 minutes as the skew can be positive or negative). - -Using a timestamp requires the client's clock to be in sync with the server's clock. **Hawk** requires both the client -clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types -(e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response -to a bad timestamp. - -There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a -potential attack vector). Instead, the client only uses the server's time to calculate an offset used only -for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing -the number of round trips required to authenticate the first request. - - -## Usage Example - -Server code: - -```javascript -var Http = require('http'); -var Hawk = require('hawk'); - - -// Credentials lookup function - -var credentialsFunc = function (id, callback) { - - var credentials = { - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256', - user: 'Steve' - }; - - return callback(null, credentials); -}; - -// Create HTTP server - -var handler = function (req, res) { - - // Authenticate incoming request - - Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { - - // Prepare response - - var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); - var headers = { 'Content-Type': 'text/plain' }; - - // Generate Server-Authorization response header - - var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] }); - headers['Server-Authorization'] = header; - - // Send the response back - - res.writeHead(!err ? 200 : 401, headers); - res.end(payload); - }); -}; - -// Start server - -Http.createServer(handler).listen(8000, 'example.com'); -``` - -Client code: - -```javascript -var Request = require('request'); -var Hawk = require('hawk'); - - -// Client credentials - -var credentials = { - id: 'dh37fgj492je', - key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', - algorithm: 'sha256' -} - -// Request options - -var requestOptions = { - uri: 'http://example.com:8000/resource/1?b=1&a=2', - method: 'GET', - headers: {} -}; - -// Generate Authorization request header - -var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' }); -requestOptions.headers.Authorization = header.field; - -// Send authenticated request - -Request(requestOptions, function (error, response, body) { - - // Authenticate the server's response - - var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); - - // Output results - - console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); -}); -``` - -**Hawk** utilized the [**SNTP**](https://github.com/hueniverse/sntp) module for time sync management. By default, the local -machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method. - -```javascript -Hawk.sntp.start(); -``` - - -## Protocol Example - -The client attempts to access a protected resource without authentication, sending the following HTTP request to -the resource server: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -``` - -The resource server returns an authentication challenge. - -``` -HTTP/1.1 401 Unauthorized -WWW-Authenticate: Hawk -``` - -The client has previously obtained a set of **Hawk** credentials for accessing resources on the "http://example.com/" -server. The **Hawk** credentials issued to the client include the following attributes: - -* Key identifier: dh37fgj492je -* Key: werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn -* Algorithm: sha256 - -The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1, -1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline -character): - -``` -hawk.1.header -1353832234 -j4h3g2 -GET -/resource/1?b=1&a=2 -example.com -8000 - -some-app-ext-data - -``` - -The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string. -The result is base64-encoded to produce the request MAC: - -``` -6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE= -``` - -The client includes the **Hawk** key identifier, timestamp, nonce, application specific data, and request MAC with the request using -the HTTP `Authorization` request header field: - -``` -GET /resource/1?b=1&a=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=" -``` - -The server validates the request by calculating the request MAC again based on the request received and verifies the validity -and scope of the **Hawk** credentials. If valid, the server responds with the requested resource. - - -### Payload Validation - -**Hawk** provides optional payload validation. When generating the authentication header, the client calculates a payload hash -using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character): -* `hawk.1.payload` -* the content-type in lowercase, without any parameters (e.g. `application/json`) -* the request payload prior to any content encoding (the exact representation requirements should be specified by the server for payloads other than simple single-part ascii to ensure interoperability) - -For example: - -* Payload: `Thank you for flying Hawk` -* Content Type: `text/plain` -* Hash (sha256): `Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=` - -Results in the following input to the payload hash function (newline terminated values): - -``` -hawk.1.payload -text/plain -Thank you for flying Hawk - -``` - -Which produces the following hash value: - -``` -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -``` - -The client constructs the normalized request string (newline terminated values): - -``` -hawk.1.header -1353832234 -j4h3g2 -POST -/resource/1?a=1&b=2 -example.com -8000 -Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY= -some-app-ext-data - -``` - -Then calculates the request MAC and includes the **Hawk** key identifier, timestamp, nonce, payload hash, application specific data, -and request MAC, with the request using the HTTP `Authorization` request header field: - -``` -POST /resource/1?a=1&b=2 HTTP/1.1 -Host: example.com:8000 -Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw=" -``` - -It is up to the server if and when it validates the payload for any given request, based solely on it's security policy -and the nature of the data included. - -If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct -the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value -with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash. - -However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed -at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value -provided by the client after validating the MAC. - -It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value -included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided -by the client, the payload may be modified by an attacker. - - -## Response Payload Validation - -**Hawk** provides partial response payload validation. The server includes the `Server-Authorization` response header which enables the -client to authenticate the response and ensure it is talking to the right server. **Hawk** defines the HTTP `Server-Authorization` header -as a response header using the exact same syntax as the `Authorization` request header field. - -The header is contructed using the same process as the client's request header. The server uses the same credentials and other -artifacts provided by the client to constructs the normalized request string. The `ext` and `hash` values are replaced with -new values based on the server response. The rest as identical to those used by the client. - -The result MAC digest is included with the optional `hash` and `ext` values: - -``` -Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific" -``` - - -## Browser Support and Considerations - -A browser script is provided for including using a `'); - expect(encoded).to.equal('\\x3cscript\\x3ealert\\x281\\x29\\x3c\\x2fscript\\x3e'); - done(); - }); - - it('encodes \' characters', function (done) { - - var encoded = Hoek.escapeJavaScript('something(\'param\')'); - expect(encoded).to.equal('something\\x28\\x27param\\x27\\x29'); - done(); - }); - - it('encodes large unicode characters with the correct padding', function (done) { - - var encoded = Hoek.escapeJavaScript(String.fromCharCode(500) + String.fromCharCode(1000)); - expect(encoded).to.equal('\\u0500\\u1000'); - done(); - }); - - it('doesn\'t throw an exception when passed null', function (done) { - - var encoded = Hoek.escapeJavaScript(null); - expect(encoded).to.equal(''); - done(); - }); -}); - -describe('escapeHtml()', function () { - - it('encodes / characters', function (done) { - - var encoded = Hoek.escapeHtml(''); - expect(encoded).to.equal('<script>alert(1)</script>'); - done(); - }); - - it('encodes < and > as named characters', function (done) { - - var encoded = Hoek.escapeHtml(''; - } -}; - -}); // module: filters.js - -require.register("inline-tags.js", function(module, exports, require){ - -/*! - * Jade - inline tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'a' - , 'abbr' - , 'acronym' - , 'b' - , 'br' - , 'code' - , 'em' - , 'font' - , 'i' - , 'img' - , 'ins' - , 'kbd' - , 'map' - , 'samp' - , 'small' - , 'span' - , 'strong' - , 'sub' - , 'sup' -]; -}); // module: inline-tags.js - -require.register("jade.js", function(module, exports, require){ -/*! - * Jade - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Parser = require('./parser') - , Lexer = require('./lexer') - , Compiler = require('./compiler') - , runtime = require('./runtime') - -/** - * Library version. - */ - -exports.version = '0.26.1'; - -/** - * Expose self closing tags. - */ - -exports.selfClosing = require('./self-closing'); - -/** - * Default supported doctypes. - */ - -exports.doctypes = require('./doctypes'); - -/** - * Text filters. - */ - -exports.filters = require('./filters'); - -/** - * Utilities. - */ - -exports.utils = require('./utils'); - -/** - * Expose `Compiler`. - */ - -exports.Compiler = Compiler; - -/** - * Expose `Parser`. - */ - -exports.Parser = Parser; - -/** - * Expose `Lexer`. - */ - -exports.Lexer = Lexer; - -/** - * Nodes. - */ - -exports.nodes = require('./nodes'); - -/** - * Jade runtime helpers. - */ - -exports.runtime = runtime; - -/** - * Template function cache. - */ - -exports.cache = {}; - -/** - * Parse the given `str` of jade and return a function body. - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api private - */ - -function parse(str, options){ - try { - // Parse - var parser = new Parser(str, options.filename, options); - - // Compile - var compiler = new (options.compiler || Compiler)(parser.parse(), options) - , js = compiler.compile(); - - // Debug compiler - if (options.debug) { - console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); - } - - return '' - + 'var buf = [];\n' - + (options.self - ? 'var self = locals || {};\n' + js - : 'with (locals || {}) {\n' + js + '\n}\n') - + 'return buf.join("");'; - } catch (err) { - parser = parser.context(); - runtime.rethrow(err, parser.filename, parser.lexer.lineno); - } -} - -/** - * Compile a `Function` representation of the given jade `str`. - * - * Options: - * - * - `compileDebug` when `false` debugging code is stripped from the compiled template - * - `client` when `true` the helper functions `escape()` etc will reference `jade.escape()` - * for use with the Jade client-side runtime.js - * - * @param {String} str - * @param {Options} options - * @return {Function} - * @api public - */ - -exports.compile = function(str, options){ - var options = options || {} - , client = options.client - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined' - , fn; - - if (options.compileDebug !== false) { - fn = [ - 'var __jade = [{ lineno: 1, filename: ' + filename + ' }];' - , 'try {' - , parse(String(str), options) - , '} catch (err) {' - , ' rethrow(err, __jade[0].filename, __jade[0].lineno);' - , '}' - ].join('\n'); - } else { - fn = parse(String(str), options); - } - - if (client) { - fn = 'attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n' + fn; - } - - fn = new Function('locals, attrs, escape, rethrow, merge', fn); - - if (client) return fn; - - return function(locals){ - return fn(locals, runtime.attrs, runtime.escape, runtime.rethrow, runtime.merge); - }; -}; - -/** - * Render the given `str` of jade and invoke - * the callback `fn(err, str)`. - * - * Options: - * - * - `cache` enable template caching - * - `filename` filename required for `include` / `extends` and caching - * - * @param {String} str - * @param {Object|Function} options or fn - * @param {Function} fn - * @api public - */ - -exports.render = function(str, options, fn){ - // swap args - if ('function' == typeof options) { - fn = options, options = {}; - } - - // cache requires .filename - if (options.cache && !options.filename) { - return fn(new Error('the "filename" option is required for caching')); - } - - try { - var path = options.filename; - var tmpl = options.cache - ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) - : exports.compile(str, options); - fn(null, tmpl(options)); - } catch (err) { - fn(err); - } -}; - -/** - * Render a Jade file at the given `path` and callback `fn(err, str)`. - * - * @param {String} path - * @param {Object|Function} options or callback - * @param {Function} fn - * @api public - */ - -exports.renderFile = function(path, options, fn){ - var key = path + ':string'; - - if ('function' == typeof options) { - fn = options, options = {}; - } - - try { - options.filename = path; - var str = options.cache - ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) - : fs.readFileSync(path, 'utf8'); - exports.render(str, options, fn); - } catch (err) { - fn(err); - } -}; - -/** - * Express support. - */ - -exports.__express = exports.renderFile; - -}); // module: jade.js - -require.register("lexer.js", function(module, exports, require){ - -/*! - * Jade - Lexer - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Initialize `Lexer` with the given `str`. - * - * Options: - * - * - `colons` allow colons for attr delimiters - * - * @param {String} str - * @param {Object} options - * @api private - */ - -var Lexer = module.exports = function Lexer(str, options) { - options = options || {}; - this.input = str.replace(/\r\n|\r/g, '\n'); - this.colons = options.colons; - this.deferredTokens = []; - this.lastIndents = 0; - this.lineno = 1; - this.stash = []; - this.indentStack = []; - this.indentRe = null; - this.pipeless = false; -}; - -/** - * Lexer prototype. - */ - -Lexer.prototype = { - - /** - * Construct a token with the given `type` and `val`. - * - * @param {String} type - * @param {String} val - * @return {Object} - * @api private - */ - - tok: function(type, val){ - return { - type: type - , line: this.lineno - , val: val - } - }, - - /** - * Consume the given `len` of input. - * - * @param {Number} len - * @api private - */ - - consume: function(len){ - this.input = this.input.substr(len); - }, - - /** - * Scan for `type` with the given `regexp`. - * - * @param {String} type - * @param {RegExp} regexp - * @return {Object} - * @api private - */ - - scan: function(regexp, type){ - var captures; - if (captures = regexp.exec(this.input)) { - this.consume(captures[0].length); - return this.tok(type, captures[1]); - } - }, - - /** - * Defer the given `tok`. - * - * @param {Object} tok - * @api private - */ - - defer: function(tok){ - this.deferredTokens.push(tok); - }, - - /** - * Lookahead `n` tokens. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - var fetch = n - this.stash.length; - while (fetch-- > 0) this.stash.push(this.next()); - return this.stash[--n]; - }, - - /** - * Return the indexOf `start` / `end` delimiters. - * - * @param {String} start - * @param {String} end - * @return {Number} - * @api private - */ - - indexOfDelimiters: function(start, end){ - var str = this.input - , nstart = 0 - , nend = 0 - , pos = 0; - for (var i = 0, len = str.length; i < len; ++i) { - if (start == str.charAt(i)) { - ++nstart; - } else if (end == str.charAt(i)) { - if (++nend == nstart) { - pos = i; - break; - } - } - } - return pos; - }, - - /** - * Stashed token. - */ - - stashed: function() { - return this.stash.length - && this.stash.shift(); - }, - - /** - * Deferred token. - */ - - deferred: function() { - return this.deferredTokens.length - && this.deferredTokens.shift(); - }, - - /** - * end-of-source. - */ - - eos: function() { - if (this.input.length) return; - if (this.indentStack.length) { - this.indentStack.shift(); - return this.tok('outdent'); - } else { - return this.tok('eos'); - } - }, - - /** - * Blank line. - */ - - blank: function() { - var captures; - if (captures = /^\n *\n/.exec(this.input)) { - this.consume(captures[0].length - 1); - if (this.pipeless) return this.tok('text', ''); - return this.next(); - } - }, - - /** - * Comment. - */ - - comment: function() { - var captures; - if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('comment', captures[2]); - tok.buffer = '-' != captures[1]; - return tok; - } - }, - - /** - * Interpolated tag. - */ - - interpolation: function() { - var captures; - if (captures = /^#\{(.*?)\}/.exec(this.input)) { - this.consume(captures[0].length); - return this.tok('interpolation', captures[1]); - } - }, - - /** - * Tag. - */ - - tag: function() { - var captures; - if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { - this.consume(captures[0].length); - var tok, name = captures[1]; - if (':' == name[name.length - 1]) { - name = name.slice(0, -1); - tok = this.tok('tag', name); - this.defer(this.tok(':')); - while (' ' == this.input[0]) this.input = this.input.substr(1); - } else { - tok = this.tok('tag', name); - } - tok.selfClosing = !! captures[2]; - return tok; - } - }, - - /** - * Filter. - */ - - filter: function() { - return this.scan(/^:(\w+)/, 'filter'); - }, - - /** - * Doctype. - */ - - doctype: function() { - return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); - }, - - /** - * Id. - */ - - id: function() { - return this.scan(/^#([\w-]+)/, 'id'); - }, - - /** - * Class. - */ - - className: function() { - return this.scan(/^\.([\w-]+)/, 'class'); - }, - - /** - * Text. - */ - - text: function() { - return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); - }, - - /** - * Extends. - */ - - "extends": function() { - return this.scan(/^extends? +([^\n]+)/, 'extends'); - }, - - /** - * Block prepend. - */ - - prepend: function() { - var captures; - if (captures = /^prepend +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'prepend' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block append. - */ - - append: function() { - var captures; - if (captures = /^append +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'append' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block. - */ - - block: function() { - var captures; - if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = captures[1] || 'replace' - , name = captures[2] - , tok = this.tok('block', name); - - tok.mode = mode; - return tok; - } - }, - - /** - * Yield. - */ - - yield: function() { - return this.scan(/^yield */, 'yield'); - }, - - /** - * Include. - */ - - include: function() { - return this.scan(/^include +([^\n]+)/, 'include'); - }, - - /** - * Case. - */ - - "case": function() { - return this.scan(/^case +([^\n]+)/, 'case'); - }, - - /** - * When. - */ - - when: function() { - return this.scan(/^when +([^:\n]+)/, 'when'); - }, - - /** - * Default. - */ - - "default": function() { - return this.scan(/^default */, 'default'); - }, - - /** - * Assignment. - */ - - assignment: function() { - var captures; - if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { - this.consume(captures[0].length); - var name = captures[1] - , val = captures[2]; - return this.tok('code', 'var ' + name + ' = (' + val + ');'); - } - }, - - /** - * Call mixin. - */ - - call: function(){ - var captures; - if (captures = /^\+([-\w]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('call', captures[1]); - - // Check for args (not attributes) - if (captures = /^ *\((.*?)\)/.exec(this.input)) { - if (!/^ *[-\w]+ *=/.test(captures[1])) { - this.consume(captures[0].length); - tok.args = captures[1]; - } - } - - return tok; - } - }, - - /** - * Mixin. - */ - - mixin: function(){ - var captures; - if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('mixin', captures[1]); - tok.args = captures[2]; - return tok; - } - }, - - /** - * Conditional. - */ - - conditional: function() { - var captures; - if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var type = captures[1] - , js = captures[2]; - - switch (type) { - case 'if': js = 'if (' + js + ')'; break; - case 'unless': js = 'if (!(' + js + '))'; break; - case 'else if': js = 'else if (' + js + ')'; break; - case 'else': js = 'else'; break; - } - - return this.tok('code', js); - } - }, - - /** - * While. - */ - - "while": function() { - var captures; - if (captures = /^while +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - return this.tok('code', 'while (' + captures[1] + ')'); - } - }, - - /** - * Each. - */ - - each: function() { - var captures; - if (captures = /^(?:- *)?(?:each|for) +(\w+)(?: *, *(\w+))? * in *([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('each', captures[1]); - tok.key = captures[2] || '$index'; - tok.code = captures[3]; - return tok; - } - }, - - /** - * Code. - */ - - code: function() { - var captures; - if (captures = /^(!?=|-)([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var flags = captures[1]; - captures[1] = captures[2]; - var tok = this.tok('code', captures[1]); - tok.escape = flags[0] === '='; - tok.buffer = flags[0] === '=' || flags[1] === '='; - return tok; - } - }, - - /** - * Attributes. - */ - - attrs: function() { - if ('(' == this.input.charAt(0)) { - var index = this.indexOfDelimiters('(', ')') - , str = this.input.substr(1, index-1) - , tok = this.tok('attrs') - , len = str.length - , colons = this.colons - , states = ['key'] - , escapedAttr - , key = '' - , val = '' - , quote - , c - , p; - - function state(){ - return states[states.length - 1]; - } - - function interpolate(attr) { - return attr.replace(/#\{([^}]+)\}/g, function(_, expr){ - return quote + " + (" + expr + ") + " + quote; - }); - } - - this.consume(index + 1); - tok.attrs = {}; - tok.escaped = {}; - - function parse(c) { - var real = c; - // TODO: remove when people fix ":" - if (colons && ':' == c) c = '='; - switch (c) { - case ',': - case '\n': - switch (state()) { - case 'expr': - case 'array': - case 'string': - case 'object': - val += c; - break; - default: - states.push('key'); - val = val.trim(); - key = key.trim(); - if ('' == key) return; - key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); - tok.escaped[key] = escapedAttr; - tok.attrs[key] = '' == val - ? true - : interpolate(val); - key = val = ''; - } - break; - case '=': - switch (state()) { - case 'key char': - key += real; - break; - case 'val': - case 'expr': - case 'array': - case 'string': - case 'object': - val += real; - break; - default: - escapedAttr = '!' != p; - states.push('val'); - } - break; - case '(': - if ('val' == state() - || 'expr' == state()) states.push('expr'); - val += c; - break; - case ')': - if ('expr' == state() - || 'val' == state()) states.pop(); - val += c; - break; - case '{': - if ('val' == state()) states.push('object'); - val += c; - break; - case '}': - if ('object' == state()) states.pop(); - val += c; - break; - case '[': - if ('val' == state()) states.push('array'); - val += c; - break; - case ']': - if ('array' == state()) states.pop(); - val += c; - break; - case '"': - case "'": - switch (state()) { - case 'key': - states.push('key char'); - break; - case 'key char': - states.pop(); - break; - case 'string': - if (c == quote) states.pop(); - val += c; - break; - default: - states.push('string'); - val += c; - quote = c; - } - break; - case '': - break; - default: - switch (state()) { - case 'key': - case 'key char': - key += c; - break; - default: - val += c; - } - } - p = c; - } - - for (var i = 0; i < len; ++i) { - parse(str.charAt(i)); - } - - parse(','); - - if ('/' == this.input.charAt(0)) { - this.consume(1); - tok.selfClosing = true; - } - - return tok; - } - }, - - /** - * Indent | Outdent | Newline. - */ - - indent: function() { - var captures, re; - - // established regexp - if (this.indentRe) { - captures = this.indentRe.exec(this.input); - // determine regexp - } else { - // tabs - re = /^\n(\t*) */; - captures = re.exec(this.input); - - // spaces - if (captures && !captures[1].length) { - re = /^\n( *)/; - captures = re.exec(this.input); - } - - // established - if (captures && captures[1].length) this.indentRe = re; - } - - if (captures) { - var tok - , indents = captures[1].length; - - ++this.lineno; - this.consume(indents + 1); - - if (' ' == this.input[0] || '\t' == this.input[0]) { - throw new Error('Invalid indentation, you can use tabs or spaces but not both'); - } - - // blank line - if ('\n' == this.input[0]) return this.tok('newline'); - - // outdent - if (this.indentStack.length && indents < this.indentStack[0]) { - while (this.indentStack.length && this.indentStack[0] > indents) { - this.stash.push(this.tok('outdent')); - this.indentStack.shift(); - } - tok = this.stash.pop(); - // indent - } else if (indents && indents != this.indentStack[0]) { - this.indentStack.unshift(indents); - tok = this.tok('indent', indents); - // newline - } else { - tok = this.tok('newline'); - } - - return tok; - } - }, - - /** - * Pipe-less text consumed only when - * pipeless is true; - */ - - pipelessText: function() { - if (this.pipeless) { - if ('\n' == this.input[0]) return; - var i = this.input.indexOf('\n'); - if (-1 == i) i = this.input.length; - var str = this.input.substr(0, i); - this.consume(str.length); - return this.tok('text', str); - } - }, - - /** - * ':' - */ - - colon: function() { - return this.scan(/^: */, ':'); - }, - - /** - * Return the next token object, or those - * previously stashed by lookahead. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.stashed() - || this.next(); - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - next: function() { - return this.deferred() - || this.blank() - || this.eos() - || this.pipelessText() - || this.yield() - || this.doctype() - || this.interpolation() - || this["case"]() - || this.when() - || this["default"]() - || this["extends"]() - || this.append() - || this.prepend() - || this.block() - || this.include() - || this.mixin() - || this.call() - || this.conditional() - || this.each() - || this["while"]() - || this.assignment() - || this.tag() - || this.filter() - || this.code() - || this.id() - || this.className() - || this.attrs() - || this.indent() - || this.comment() - || this.colon() - || this.text(); - } -}; - -}); // module: lexer.js - -require.register("nodes/attrs.js", function(module, exports, require){ - -/*! - * Jade - nodes - Attrs - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'), - Block = require('./block'); - -/** - * Initialize a `Attrs` node. - * - * @api public - */ - -var Attrs = module.exports = function Attrs() { - this.attrs = []; -}; - -/** - * Inherit from `Node`. - */ - -Attrs.prototype = new Node; -Attrs.prototype.constructor = Attrs; - - -/** - * Set attribute `name` to `val`, keep in mind these become - * part of a raw js object literal, so to quote a value you must - * '"quote me"', otherwise or example 'user.name' is literal JavaScript. - * - * @param {String} name - * @param {String} val - * @param {Boolean} escaped - * @return {Tag} for chaining - * @api public - */ - -Attrs.prototype.setAttribute = function(name, val, escaped){ - this.attrs.push({ name: name, val: val, escaped: escaped }); - return this; -}; - -/** - * Remove attribute `name` when present. - * - * @param {String} name - * @api public - */ - -Attrs.prototype.removeAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - delete this.attrs[i]; - } - } -}; - -/** - * Get attribute value by `name`. - * - * @param {String} name - * @return {String} - * @api public - */ - -Attrs.prototype.getAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - return this.attrs[i].val; - } - } -}; - -}); // module: nodes/attrs.js - -require.register("nodes/block-comment.js", function(module, exports, require){ - -/*! - * Jade - nodes - BlockComment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `BlockComment` with the given `block`. - * - * @param {String} val - * @param {Block} block - * @param {Boolean} buffer - * @api public - */ - -var BlockComment = module.exports = function BlockComment(val, block, buffer) { - this.block = block; - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -BlockComment.prototype = new Node; -BlockComment.prototype.constructor = BlockComment; - -}); // module: nodes/block-comment.js - -require.register("nodes/block.js", function(module, exports, require){ - -/*! - * Jade - nodes - Block - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Block` with an optional `node`. - * - * @param {Node} node - * @api public - */ - -var Block = module.exports = function Block(node){ - this.nodes = []; - if (node) this.push(node); -}; - -/** - * Inherit from `Node`. - */ - -Block.prototype = new Node; -Block.prototype.constructor = Block; - - -/** - * Block flag. - */ - -Block.prototype.isBlock = true; - -/** - * Replace the nodes in `other` with the nodes - * in `this` block. - * - * @param {Block} other - * @api private - */ - -Block.prototype.replace = function(other){ - other.nodes = this.nodes; -}; - -/** - * Pust the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.push = function(node){ - return this.nodes.push(node); -}; - -/** - * Check if this block is empty. - * - * @return {Boolean} - * @api public - */ - -Block.prototype.isEmpty = function(){ - return 0 == this.nodes.length; -}; - -/** - * Unshift the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.unshift = function(node){ - return this.nodes.unshift(node); -}; - -/** - * Return the "last" block, or the first `yield` node. - * - * @return {Block} - * @api private - */ - -Block.prototype.includeBlock = function(){ - var ret = this - , node; - - for (var i = 0, len = this.nodes.length; i < len; ++i) { - node = this.nodes[i]; - if (node.yield) return node; - else if (node.textOnly) continue; - else if (node.includeBlock) ret = node.includeBlock(); - else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); - } - - return ret; -}; - -/** - * Return a clone of this block. - * - * @return {Block} - * @api private - */ - -Block.prototype.clone = function(){ - var clone = new Block; - for (var i = 0, len = this.nodes.length; i < len; ++i) { - clone.push(this.nodes[i].clone()); - } - return clone; -}; - - -}); // module: nodes/block.js - -require.register("nodes/case.js", function(module, exports, require){ - -/*! - * Jade - nodes - Case - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Case` with `expr`. - * - * @param {String} expr - * @api public - */ - -var Case = exports = module.exports = function Case(expr, block){ - this.expr = expr; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Case.prototype = new Node; -Case.prototype.constructor = Case; - - -var When = exports.When = function When(expr, block){ - this.expr = expr; - this.block = block; - this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -When.prototype = new Node; -When.prototype.constructor = When; - - - -}); // module: nodes/case.js - -require.register("nodes/code.js", function(module, exports, require){ - -/*! - * Jade - nodes - Code - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Code` node with the given code `val`. - * Code may also be optionally buffered and escaped. - * - * @param {String} val - * @param {Boolean} buffer - * @param {Boolean} escape - * @api public - */ - -var Code = module.exports = function Code(val, buffer, escape) { - this.val = val; - this.buffer = buffer; - this.escape = escape; - if (val.match(/^ *else/)) this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -Code.prototype = new Node; -Code.prototype.constructor = Code; - -}); // module: nodes/code.js - -require.register("nodes/comment.js", function(module, exports, require){ - -/*! - * Jade - nodes - Comment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Comment` with the given `val`, optionally `buffer`, - * otherwise the comment may render in the output. - * - * @param {String} val - * @param {Boolean} buffer - * @api public - */ - -var Comment = module.exports = function Comment(val, buffer) { - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -Comment.prototype = new Node; -Comment.prototype.constructor = Comment; - -}); // module: nodes/comment.js - -require.register("nodes/doctype.js", function(module, exports, require){ - -/*! - * Jade - nodes - Doctype - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Doctype` with the given `val`. - * - * @param {String} val - * @api public - */ - -var Doctype = module.exports = function Doctype(val) { - this.val = val; -}; - -/** - * Inherit from `Node`. - */ - -Doctype.prototype = new Node; -Doctype.prototype.constructor = Doctype; - -}); // module: nodes/doctype.js - -require.register("nodes/each.js", function(module, exports, require){ - -/*! - * Jade - nodes - Each - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize an `Each` node, representing iteration - * - * @param {String} obj - * @param {String} val - * @param {String} key - * @param {Block} block - * @api public - */ - -var Each = module.exports = function Each(obj, val, key, block) { - this.obj = obj; - this.val = val; - this.key = key; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Each.prototype = new Node; -Each.prototype.constructor = Each; - -}); // module: nodes/each.js - -require.register("nodes/filter.js", function(module, exports, require){ - -/*! - * Jade - nodes - Filter - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node') - , Block = require('./block'); - -/** - * Initialize a `Filter` node with the given - * filter `name` and `block`. - * - * @param {String} name - * @param {Block|Node} block - * @api public - */ - -var Filter = module.exports = function Filter(name, block, attrs) { - this.name = name; - this.block = block; - this.attrs = attrs; - this.isASTFilter = !block.nodes.every(function(node){ return node.isText }); -}; - -/** - * Inherit from `Node`. - */ - -Filter.prototype = new Node; -Filter.prototype.constructor = Filter; - -}); // module: nodes/filter.js - -require.register("nodes/index.js", function(module, exports, require){ - -/*! - * Jade - nodes - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -exports.Node = require('./node'); -exports.Tag = require('./tag'); -exports.Code = require('./code'); -exports.Each = require('./each'); -exports.Case = require('./case'); -exports.Text = require('./text'); -exports.Block = require('./block'); -exports.Mixin = require('./mixin'); -exports.Filter = require('./filter'); -exports.Comment = require('./comment'); -exports.Literal = require('./literal'); -exports.BlockComment = require('./block-comment'); -exports.Doctype = require('./doctype'); - -}); // module: nodes/index.js - -require.register("nodes/literal.js", function(module, exports, require){ - -/*! - * Jade - nodes - Literal - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Literal` node with the given `str. - * - * @param {String} str - * @api public - */ - -var Literal = module.exports = function Literal(str) { - this.str = str - .replace(/\\/g, "\\\\") - .replace(/\n|\r\n/g, "\\n") - .replace(/'/g, "\\'"); -}; - -/** - * Inherit from `Node`. - */ - -Literal.prototype = new Node; -Literal.prototype.constructor = Literal; - - -}); // module: nodes/literal.js - -require.register("nodes/mixin.js", function(module, exports, require){ - -/*! - * Jade - nodes - Mixin - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'); - -/** - * Initialize a new `Mixin` with `name` and `block`. - * - * @param {String} name - * @param {String} args - * @param {Block} block - * @api public - */ - -var Mixin = module.exports = function Mixin(name, args, block, call){ - this.name = name; - this.args = args; - this.block = block; - this.attrs = []; - this.call = call; -}; - -/** - * Inherit from `Attrs`. - */ - -Mixin.prototype = new Attrs; -Mixin.prototype.constructor = Mixin; - - - -}); // module: nodes/mixin.js - -require.register("nodes/node.js", function(module, exports, require){ - -/*! - * Jade - nodes - Node - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Initialize a `Node`. - * - * @api public - */ - -var Node = module.exports = function Node(){}; - -/** - * Clone this node (return itself) - * - * @return {Node} - * @api private - */ - -Node.prototype.clone = function(){ - return this; -}; - -}); // module: nodes/node.js - -require.register("nodes/tag.js", function(module, exports, require){ - -/*! - * Jade - nodes - Tag - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'), - Block = require('./block'), - inlineTags = require('../inline-tags'); - -/** - * Initialize a `Tag` node with the given tag `name` and optional `block`. - * - * @param {String} name - * @param {Block} block - * @api public - */ - -var Tag = module.exports = function Tag(name, block) { - this.name = name; - this.attrs = []; - this.block = block || new Block; -}; - -/** - * Inherit from `Attrs`. - */ - -Tag.prototype = new Attrs; -Tag.prototype.constructor = Tag; - - -/** - * Clone this tag. - * - * @return {Tag} - * @api private - */ - -Tag.prototype.clone = function(){ - var clone = new Tag(this.name, this.block.clone()); - clone.line = this.line; - clone.attrs = this.attrs; - clone.textOnly = this.textOnly; - return clone; -}; - -/** - * Check if this tag is an inline tag. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.isInline = function(){ - return ~inlineTags.indexOf(this.name); -}; - -/** - * Check if this tag's contents can be inlined. Used for pretty printing. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.canInline = function(){ - var nodes = this.block.nodes; - - function isInline(node){ - // Recurse if the node is a block - if (node.isBlock) return node.nodes.every(isInline); - return node.isText || (node.isInline && node.isInline()); - } - - // Empty tag - if (!nodes.length) return true; - - // Text-only or inline-only tag - if (1 == nodes.length) return isInline(nodes[0]); - - // Multi-line inline-only tag - if (this.block.nodes.every(isInline)) { - for (var i = 1, len = nodes.length; i < len; ++i) { - if (nodes[i-1].isText && nodes[i].isText) - return false; - } - return true; - } - - // Mixed tag - return false; -}; -}); // module: nodes/tag.js - -require.register("nodes/text.js", function(module, exports, require){ - -/*! - * Jade - nodes - Text - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Text` node with optional `line`. - * - * @param {String} line - * @api public - */ - -var Text = module.exports = function Text(line) { - this.val = ''; - if ('string' == typeof line) this.val = line; -}; - -/** - * Inherit from `Node`. - */ - -Text.prototype = new Node; -Text.prototype.constructor = Text; - - -/** - * Flag as text. - */ - -Text.prototype.isText = true; -}); // module: nodes/text.js - -require.register("parser.js", function(module, exports, require){ - -/*! - * Jade - Parser - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Lexer = require('./lexer') - , nodes = require('./nodes'); - -/** - * Initialize `Parser` with the given input `str` and `filename`. - * - * @param {String} str - * @param {String} filename - * @param {Object} options - * @api public - */ - -var Parser = exports = module.exports = function Parser(str, filename, options){ - this.input = str; - this.lexer = new Lexer(str, options); - this.filename = filename; - this.blocks = {}; - this.mixins = {}; - this.options = options; - this.contexts = [this]; -}; - -/** - * Tags that may not contain tags. - */ - -var textOnly = exports.textOnly = ['script', 'style']; - -/** - * Parser prototype. - */ - -Parser.prototype = { - - /** - * Push `parser` onto the context stack, - * or pop and return a `Parser`. - */ - - context: function(parser){ - if (parser) { - this.contexts.push(parser); - } else { - return this.contexts.pop(); - } - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.lexer.advance(); - }, - - /** - * Skip `n` tokens. - * - * @param {Number} n - * @api private - */ - - skip: function(n){ - while (n--) this.advance(); - }, - - /** - * Single token lookahead. - * - * @return {Object} - * @api private - */ - - peek: function() { - return this.lookahead(1); - }, - - /** - * Return lexer lineno. - * - * @return {Number} - * @api private - */ - - line: function() { - return this.lexer.lineno; - }, - - /** - * `n` token lookahead. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - return this.lexer.lookahead(n); - }, - - /** - * Parse input returning a string of js for evaluation. - * - * @return {String} - * @api public - */ - - parse: function(){ - var block = new nodes.Block, parser; - block.line = this.line(); - - while ('eos' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - - if (parser = this.extending) { - this.context(parser); - var ast = parser.parse(); - this.context(); - // hoist mixins - for (var name in this.mixins) - ast.unshift(this.mixins[name]); - return ast; - } - - return block; - }, - - /** - * Expect the given type, or throw an exception. - * - * @param {String} type - * @api private - */ - - expect: function(type){ - if (this.peek().type === type) { - return this.advance(); - } else { - throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); - } - }, - - /** - * Accept the given `type`. - * - * @param {String} type - * @api private - */ - - accept: function(type){ - if (this.peek().type === type) { - return this.advance(); - } - }, - - /** - * tag - * | doctype - * | mixin - * | include - * | filter - * | comment - * | text - * | each - * | code - * | yield - * | id - * | class - * | interpolation - */ - - parseExpr: function(){ - switch (this.peek().type) { - case 'tag': - return this.parseTag(); - case 'mixin': - return this.parseMixin(); - case 'block': - return this.parseBlock(); - case 'case': - return this.parseCase(); - case 'when': - return this.parseWhen(); - case 'default': - return this.parseDefault(); - case 'extends': - return this.parseExtends(); - case 'include': - return this.parseInclude(); - case 'doctype': - return this.parseDoctype(); - case 'filter': - return this.parseFilter(); - case 'comment': - return this.parseComment(); - case 'text': - return this.parseText(); - case 'each': - return this.parseEach(); - case 'code': - return this.parseCode(); - case 'call': - return this.parseCall(); - case 'interpolation': - return this.parseInterpolation(); - case 'yield': - this.advance(); - var block = new nodes.Block; - block.yield = true; - return block; - case 'id': - case 'class': - var tok = this.advance(); - this.lexer.defer(this.lexer.tok('tag', 'div')); - this.lexer.defer(tok); - return this.parseExpr(); - default: - throw new Error('unexpected token "' + this.peek().type + '"'); - } - }, - - /** - * Text - */ - - parseText: function(){ - var tok = this.expect('text') - , node = new nodes.Text(tok.val); - node.line = this.line(); - return node; - }, - - /** - * ':' expr - * | block - */ - - parseBlockExpansion: function(){ - if (':' == this.peek().type) { - this.advance(); - return new nodes.Block(this.parseExpr()); - } else { - return this.block(); - } - }, - - /** - * case - */ - - parseCase: function(){ - var val = this.expect('case').val - , node = new nodes.Case(val); - node.line = this.line(); - node.block = this.block(); - return node; - }, - - /** - * when - */ - - parseWhen: function(){ - var val = this.expect('when').val - return new nodes.Case.When(val, this.parseBlockExpansion()); - }, - - /** - * default - */ - - parseDefault: function(){ - this.expect('default'); - return new nodes.Case.When('default', this.parseBlockExpansion()); - }, - - /** - * code - */ - - parseCode: function(){ - var tok = this.expect('code') - , node = new nodes.Code(tok.val, tok.buffer, tok.escape) - , block - , i = 1; - node.line = this.line(); - while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; - block = 'indent' == this.lookahead(i).type; - if (block) { - this.skip(i-1); - node.block = this.block(); - } - return node; - }, - - /** - * comment - */ - - parseComment: function(){ - var tok = this.expect('comment') - , node; - - if ('indent' == this.peek().type) { - node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); - } else { - node = new nodes.Comment(tok.val, tok.buffer); - } - - node.line = this.line(); - return node; - }, - - /** - * doctype - */ - - parseDoctype: function(){ - var tok = this.expect('doctype') - , node = new nodes.Doctype(tok.val); - node.line = this.line(); - return node; - }, - - /** - * filter attrs? text-block - */ - - parseFilter: function(){ - var block - , tok = this.expect('filter') - , attrs = this.accept('attrs'); - - this.lexer.pipeless = true; - block = this.parseTextBlock(); - this.lexer.pipeless = false; - - var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); - node.line = this.line(); - return node; - }, - - /** - * tag ':' attrs? block - */ - - parseASTFilter: function(){ - var block - , tok = this.expect('tag') - , attrs = this.accept('attrs'); - - this.expect(':'); - block = this.block(); - - var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); - node.line = this.line(); - return node; - }, - - /** - * each block - */ - - parseEach: function(){ - var tok = this.expect('each') - , node = new nodes.Each(tok.code, tok.val, tok.key); - node.line = this.line(); - node.block = this.block(); - return node; - }, - - /** - * 'extends' name - */ - - parseExtends: function(){ - var path = require('path') - , fs = require('fs') - , dirname = path.dirname - , basename = path.basename - , join = path.join; - - if (!this.filename) - throw new Error('the "filename" option is required to extend templates'); - - var path = this.expect('extends').val.trim() - , dir = dirname(this.filename); - - var path = join(dir, path + '.jade') - , str = fs.readFileSync(path, 'utf8') - , parser = new Parser(str, path, this.options); - - parser.blocks = this.blocks; - parser.contexts = this.contexts; - this.extending = parser; - - // TODO: null node - return new nodes.Literal(''); - }, - - /** - * 'block' name block - */ - - parseBlock: function(){ - var block = this.expect('block') - , mode = block.mode - , name = block.val.trim(); - - block = 'indent' == this.peek().type - ? this.block() - : new nodes.Block(new nodes.Literal('')); - - var prev = this.blocks[name]; - - if (prev) { - switch (prev.mode) { - case 'append': - block.nodes = block.nodes.concat(prev.nodes); - prev = block; - break; - case 'prepend': - block.nodes = prev.nodes.concat(block.nodes); - prev = block; - break; - } - } - - block.mode = mode; - return this.blocks[name] = prev || block; - }, - - /** - * include block? - */ - - parseInclude: function(){ - var path = require('path') - , fs = require('fs') - , dirname = path.dirname - , basename = path.basename - , join = path.join; - - var path = this.expect('include').val.trim() - , dir = dirname(this.filename); - - if (!this.filename) - throw new Error('the "filename" option is required to use includes'); - - // no extension - if (!~basename(path).indexOf('.')) { - path += '.jade'; - } - - // non-jade - if ('.jade' != path.substr(-5)) { - var path = join(dir, path) - , str = fs.readFileSync(path, 'utf8'); - return new nodes.Literal(str); - } - - var path = join(dir, path) - , str = fs.readFileSync(path, 'utf8') - , parser = new Parser(str, path, this.options); - parser.blocks = this.blocks; - parser.mixins = this.mixins; - - this.context(parser); - var ast = parser.parse(); - this.context(); - ast.filename = path; - - if ('indent' == this.peek().type) { - ast.includeBlock().push(this.block()); - } - - return ast; - }, - - /** - * call ident block - */ - - parseCall: function(){ - var tok = this.expect('call') - , name = tok.val - , args = tok.args - , mixin = new nodes.Mixin(name, args, new nodes.Block, true); - - this.tag(mixin); - if (mixin.block.isEmpty()) mixin.block = null; - return mixin; - }, - - /** - * mixin block - */ - - parseMixin: function(){ - var tok = this.expect('mixin') - , name = tok.val - , args = tok.args - , mixin; - - // definition - if ('indent' == this.peek().type) { - mixin = new nodes.Mixin(name, args, this.block(), false); - this.mixins[name] = mixin; - return mixin; - // call - } else { - return new nodes.Mixin(name, args, null, true); - } - }, - - /** - * indent (text | newline)* outdent - */ - - parseTextBlock: function(){ - var block = new nodes.Block; - block.line = this.line(); - var spaces = this.expect('indent').val; - if (null == this._spaces) this._spaces = spaces; - var indent = Array(spaces - this._spaces + 1).join(' '); - while ('outdent' != this.peek().type) { - switch (this.peek().type) { - case 'newline': - this.advance(); - break; - case 'indent': - this.parseTextBlock().nodes.forEach(function(node){ - block.push(node); - }); - break; - default: - var text = new nodes.Text(indent + this.advance().val); - text.line = this.line(); - block.push(text); - } - } - - if (spaces == this._spaces) this._spaces = null; - this.expect('outdent'); - return block; - }, - - /** - * indent expr* outdent - */ - - block: function(){ - var block = new nodes.Block; - block.line = this.line(); - this.expect('indent'); - while ('outdent' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - this.expect('outdent'); - return block; - }, - - /** - * interpolation (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseInterpolation: function(){ - var tok = this.advance(); - var tag = new nodes.Tag(tok.val); - tag.buffer = true; - return this.tag(tag); - }, - - /** - * tag (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseTag: function(){ - // ast-filter look-ahead - var i = 2; - if ('attrs' == this.lookahead(i).type) ++i; - if (':' == this.lookahead(i).type) { - if ('indent' == this.lookahead(++i).type) { - return this.parseASTFilter(); - } - } - - var tok = this.advance() - , tag = new nodes.Tag(tok.val); - - tag.selfClosing = tok.selfClosing; - - return this.tag(tag); - }, - - /** - * Parse tag. - */ - - tag: function(tag){ - var dot; - - tag.line = this.line(); - - // (attrs | class | id)* - out: - while (true) { - switch (this.peek().type) { - case 'id': - case 'class': - var tok = this.advance(); - tag.setAttribute(tok.type, "'" + tok.val + "'"); - continue; - case 'attrs': - var tok = this.advance() - , obj = tok.attrs - , escaped = tok.escaped - , names = Object.keys(obj); - - if (tok.selfClosing) tag.selfClosing = true; - - for (var i = 0, len = names.length; i < len; ++i) { - var name = names[i] - , val = obj[name]; - tag.setAttribute(name, val, escaped[name]); - } - continue; - default: - break out; - } - } - - // check immediate '.' - if ('.' == this.peek().val) { - dot = tag.textOnly = true; - this.advance(); - } - - // (text | code | ':')? - switch (this.peek().type) { - case 'text': - tag.block.push(this.parseText()); - break; - case 'code': - tag.code = this.parseCode(); - break; - case ':': - this.advance(); - tag.block = new nodes.Block; - tag.block.push(this.parseExpr()); - break; - } - - // newline* - while ('newline' == this.peek().type) this.advance(); - - tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); - - // script special-case - if ('script' == tag.name) { - var type = tag.getAttribute('type'); - if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { - tag.textOnly = false; - } - } - - // block? - if ('indent' == this.peek().type) { - if (tag.textOnly) { - this.lexer.pipeless = true; - tag.block = this.parseTextBlock(); - this.lexer.pipeless = false; - } else { - var block = this.block(); - if (tag.block) { - for (var i = 0, len = block.nodes.length; i < len; ++i) { - tag.block.push(block.nodes[i]); - } - } else { - tag.block = block; - } - } - } - - return tag; - } -}; - -}); // module: parser.js - -require.register("runtime.js", function(module, exports, require){ - -/*! - * Jade - runtime - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Lame Array.isArray() polyfill for now. - */ - -if (!Array.isArray) { - Array.isArray = function(arr){ - return '[object Array]' == Object.prototype.toString.call(arr); - }; -} - -/** - * Lame Object.keys() polyfill for now. - */ - -if (!Object.keys) { - Object.keys = function(obj){ - var arr = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - arr.push(key); - } - } - return arr; - } -} - -/** - * Merge two attribute objects giving precedence - * to values in object `b`. Classes are special-cased - * allowing for arrays and merging/joining appropriately - * resulting in a string. - * - * @param {Object} a - * @param {Object} b - * @return {Object} a - * @api private - */ - -exports.merge = function merge(a, b) { - var ac = a['class']; - var bc = b['class']; - - if (ac || bc) { - ac = ac || []; - bc = bc || []; - if (!Array.isArray(ac)) ac = [ac]; - if (!Array.isArray(bc)) bc = [bc]; - ac = ac.filter(nulls); - bc = bc.filter(nulls); - a['class'] = ac.concat(bc).join(' '); - } - - for (var key in b) { - if (key != 'class') { - a[key] = b[key]; - } - } - - return a; -}; - -/** - * Filter null `val`s. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function nulls(val) { - return val != null; -} - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} escaped - * @return {String} - * @api private - */ - -exports.attrs = function attrs(obj, escaped){ - var buf = [] - , terse = obj.terse; - - delete obj.terse; - var keys = Object.keys(obj) - , len = keys.length; - - if (len) { - buf.push(''); - for (var i = 0; i < len; ++i) { - var key = keys[i] - , val = obj[key]; - - if ('boolean' == typeof val || null == val) { - if (val) { - terse - ? buf.push(key) - : buf.push(key + '="' + key + '"'); - } - } else if (0 == key.indexOf('data') && 'string' != typeof val) { - buf.push(key + "='" + JSON.stringify(val) + "'"); - } else if ('class' == key && Array.isArray(val)) { - buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); - } else if (escaped && escaped[key]) { - buf.push(key + '="' + exports.escape(val) + '"'); - } else { - buf.push(key + '="' + val + '"'); - } - } - } - - return buf.join(' '); -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function escape(html){ - return String(html) - .replace(/&(?!(\w+|\#\d+);)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -/** - * Re-throw the given `err` in context to the - * the jade in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @api private - */ - -exports.rethrow = function rethrow(err, filename, lineno){ - if (!filename) throw err; - - var context = 3 - , str = require('fs').readFileSync(filename, 'utf8') - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Jade') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; - -}); // module: runtime.js - -require.register("self-closing.js", function(module, exports, require){ - -/*! - * Jade - self closing tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'meta' - , 'img' - , 'link' - , 'input' - , 'source' - , 'area' - , 'base' - , 'col' - , 'br' - , 'hr' -]; -}); // module: self-closing.js - -require.register("utils.js", function(module, exports, require){ - -/*! - * Jade - utils - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Convert interpolation in the given string to JavaScript. - * - * @param {String} str - * @return {String} - * @api private - */ - -var interpolate = exports.interpolate = function(str){ - return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){ - return escape - ? str - : "' + " - + ('!' == flag ? '' : 'escape') - + "((interp = " + code.replace(/\\'/g, "'") - + ") == null ? '' : interp) + '"; - }); -}; - -/** - * Escape single quotes in `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -var escape = exports.escape = function(str) { - return str.replace(/'/g, "\\'"); -}; - -/** - * Interpolate, and escape the given `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -exports.text = function(str){ - return interpolate(escape(str)); -}; -}); // module: utils.js - -window.jade = require("jade"); -})(); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.md deleted file mode 100644 index 051dc031..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.md +++ /dev/null @@ -1,510 +0,0 @@ - -# Jade - - The jade template engine for node.js - -## Synopsis - - jade [-h|--help] [-v|--version] [-o|--obj STR] - [-O|--out DIR] [-p|--path PATH] [-P|--pretty] - [-c|--client] [-D|--no-debug] - -## Examples - - translate jade the templates dir - - $ jade templates - - create {foo,bar}.html - - $ jade {foo,bar}.jade - - jade over stdio - - $ jade < my.jade > my.html - - jade over s - - $ echo "h1 Jade!" | jade - - foo, bar dirs rendering to /tmp - - $ jade foo bar --out /tmp - - compile client-side templates without debugging - instrumentation, making the output javascript - very light-weight. This requires runtime.js - in your projects. - - $ jade --client --no-debug < my.jade - -## Tags - - Tags are simply nested via whitespace, closing - tags defined for you. These indents are called "blocks". - - ul - li - a Foo - li - a Bar - - You may have several tags in one "block": - - ul - li - a Foo - a Bar - a Baz - -## Self-closing Tags - - Some tags are flagged as self-closing by default, such - as `meta`, `link`, and so on. To explicitly self-close - a tag simply append the `/` character: - - foo/ - foo(bar='baz')/ - - Would yield: - - - - -## Attributes - - Tag attributes look similar to HTML, however - the values are regular JavaScript, here are - some examples: - - a(href='google.com') Google - a(class='button', href='google.com') Google - - As mentioned the attribute values are just JavaScript, - this means ternary operations and other JavaScript expressions - work just fine: - - body(class=user.authenticated ? 'authenticated' : 'anonymous') - a(href=user.website || 'http://google.com') - - Multiple lines work too: - - input(type='checkbox', - name='agreement', - checked) - - Multiple lines without the comma work fine: - - input(type='checkbox' - name='agreement' - checked) - - Funky whitespace? fine: - - input( - type='checkbox' - name='agreement' - checked) - -## Boolean attributes - - Boolean attributes are mirrored by Jade, and accept - bools, aka _true_ or _false_. When no value is specified - _true_ is assumed. For example: - - input(type="checkbox", checked) - // => "" - - For example if the checkbox was for an agreement, perhaps `user.agreed` - was _true_ the following would also output 'checked="checked"': - - input(type="checkbox", checked=user.agreed) - -## Class attributes - - The _class_ attribute accepts an array of classes, - this can be handy when generated from a javascript - function etc: - - classes = ['foo', 'bar', 'baz'] - a(class=classes) - // => "" - -## Class literal - - Classes may be defined using a ".CLASSNAME" syntax: - - .button - // => "
    " - - Or chained: - - .large.button - // => "
    " - - The previous defaulted to divs, however you - may also specify the tag type: - - h1.title My Title - // => "

    My Title

    " - -## Id literal - - Much like the class literal there's an id literal: - - #user-1 - // => "
    " - - Again we may specify the tag as well: - - ul#menu - li: a(href='/home') Home - li: a(href='/store') Store - li: a(href='/contact') Contact - - Finally all of these may be used in any combination, - the following are all valid tags: - - a.button#contact(style: 'color: red') Contact - a.button(style: 'color: red')#contact Contact - a(style: 'color: red').button#contact Contact - -## Block expansion - - Jade supports the concept of "block expansion", in which - using a trailing ":" after a tag will inject a block: - - ul - li: a Foo - li: a Bar - li: a Baz - -## Text - - Arbitrary text may follow tags: - - p Welcome to my site - - yields: - -

    Welcome to my site

    - -## Pipe text - - Another form of text is "pipe" text. Pipes act - as the text margin for large bodies of text. - - p - | This is a large - | body of text for - | this tag. - | - | Nothing too - | exciting. - - yields: - -

    This is a large - body of text for - this tag. - - Nothing too - exciting. -

    - - Using pipes we can also specify regular Jade tags - within the text: - - p - | Click to visit - a(href='http://google.com') Google - | if you want. - -## Text only tags - - As an alternative to pipe text you may add - a trailing "." to indicate that the block - contains nothing but plain-text, no tags: - - p. - This is a large - body of text for - this tag. - - Nothing too - exciting. - - Some tags are text-only by default, for example - _script_, _textarea_, and _style_ tags do not - contain nested HTML so Jade implies the trailing ".": - - script - if (foo) { - bar(); - } - - style - body { - padding: 50px; - font: 14px Helvetica; - } - -## Template script tags - - Sometimes it's useful to define HTML in script - tags using Jade, typically for client-side templates. - - To do this simply give the _script_ tag an arbitrary - _type_ attribute such as _text/x-template_: - - script(type='text/template') - h1 Look! - p Jade still works in here! - -## Interpolation - - Both plain-text and piped-text support interpolation, - which comes in two forms, escapes and non-escaped. The - following will output the _user.name_ in the paragraph - but HTML within it will be escaped to prevent XSS attacks: - - p Welcome #{user.name} - - The following syntax is identical however it will _not_ escape - HTML, and should only be used with strings that you trust: - - p Welcome !{user.name} - -## Inline HTML - - Sometimes constructing small inline snippets of HTML - in Jade can be annoying, luckily we can add plain - HTML as well: - - p Welcome #{user.name} - -## Code - - To buffer output with Jade simply use _=_ at the beginning - of a line or after a tag. This method escapes any HTML - present in the string. - - p= user.description - - To buffer output unescaped use the _!=_ variant, but again - be careful of XSS. - - p!= user.description - - The final way to mess with JavaScript code in Jade is the unbuffered - _-_, which can be used for conditionals, defining variables etc: - - - var user = { description: 'foo bar baz' } - #user - - if (user.description) { - h2 Description - p.description= user.description - - } - - When compiled blocks are wrapped in anonymous functions, so the - following is also valid, without braces: - - - var user = { description: 'foo bar baz' } - #user - - if (user.description) - h2 Description - p.description= user.description - - If you really want you could even use `.forEach()` and others: - - - users.forEach(function(user){ - .user - h2= user.name - p User #{user.name} is #{user.age} years old - - }) - - Taking this further Jade provides some syntax for conditionals, - iteration, switch statements etc. Let's look at those next! - -## Assignment - - Jade's first-class assignment is simple, simply use the _=_ - operator and Jade will _var_ it for you. The following are equivalent: - - - var user = { name: 'tobi' } - user = { name: 'tobi' } - -## Conditionals - - Jade's first-class conditional syntax allows for optional - parenthesis, and you may now omit the leading _-_ otherwise - it's identical, still just regular javascript: - - user = { description: 'foo bar baz' } - #user - if user.description - h2 Description - p.description= user.description - - Jade provides the negated version, _unless_ as well, the following - are equivalent: - - - if (!(user.isAnonymous)) - p You're logged in as #{user.name} - - unless user.isAnonymous - p You're logged in as #{user.name} - -## Iteration - - JavaScript's _for_ loops don't look very declarative, so Jade - also provides its own _for_ loop construct, aliased as _each_: - - for user in users - .user - h2= user.name - p user #{user.name} is #{user.age} year old - - As mentioned _each_ is identical: - - each user in users - .user - h2= user.name - - If necessary the index is available as well: - - for user, i in users - .user(class='user-#{i}') - h2= user.name - - Remember, it's just JavaScript: - - ul#letters - for letter in ['a', 'b', 'c'] - li= letter - -## Mixins - - Mixins provide a way to define jade "functions" which "mix in" - their contents when called. This is useful for abstracting - out large fragments of Jade. - - The simplest possible mixin which accepts no arguments might - look like this: - - mixin hello - p Hello - - You use a mixin by placing `+` before the name: - - +hello - - For something a little more dynamic, mixins can take - arguments, the mixin itself is converted to a javascript - function internally: - - mixin hello(user) - p Hello #{user} - - +hello('Tobi') - - Yields: - -

    Hello Tobi

    - - Mixins may optionally take blocks, when a block is passed - its contents becomes the implicit `block` argument. For - example here is a mixin passed a block, and also invoked - without passing a block: - - mixin article(title) - .article - .article-wrapper - h1= title - if block - block - else - p No content provided - - +article('Hello world') - - +article('Hello world') - p This is my - p Amazing article - - yields: - -
    -
    -

    Hello world

    -

    No content provided

    -
    -
    - -
    -
    -

    Hello world

    -

    This is my

    -

    Amazing article

    -
    -
    - - Mixins can even take attributes, just like a tag. When - attributes are passed they become the implicit `attributes` - argument. Individual attributes can be accessed just like - normal object properties: - - mixin centered - .centered(class=attributes.class) - block - - +centered.bold Hello world - - +centered.red - p This is my - p Amazing article - - yields: - -
    Hello world
    -
    -

    This is my

    -

    Amazing article

    -
    - - If you use `attributes` directly, *all* passed attributes - get used: - - mixin link - a.menu(attributes) - block - - +link.highlight(href='#top') Top - +link#sec1.plain(href='#section1') Section 1 - +link#sec2.plain(href='#section2') Section 2 - - yields: - - Top - Section 1 - Section 2 - - If you pass arguments, they must directly follow the mixin: - - mixin list(arr) - if block - .title - block - ul(attributes) - each item in arr - li= item - - +list(['foo', 'bar', 'baz'])(id='myList', class='bold') - - yields: - -
      -
    • foo
    • -
    • bar
    • -
    • baz
    • -
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.min.js deleted file mode 100644 index 72e4535e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/jade.min.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){function require(p){var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');return mod.exports||(mod.exports={},mod.call(mod.exports,mod,mod.exports,require.relative(path))),mod.exports}require.modules={},require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&®||require.modules[index]&&index||orig},require.register=function(path,fn){require.modules[path]=fn},require.relative=function(parent){return function(p){if("."!=p.charAt(0))return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i",this.doctype=doctype,this.terse="5"==name||"html"==name,this.xml=0==this.doctype.indexOf("1&&!escape&&block.nodes[0].isText&&block.nodes[1].isText&&this.prettyIndent(1,!0);for(var i=0;i0&&!escape&&block.nodes[i].isText&&block.nodes[i-1].isText&&this.prettyIndent(1,!1),this.visit(block.nodes[i]),block.nodes[i+1]&&block.nodes[i].isText&&block.nodes[i+1].isText&&this.buffer("\\n")},visitDoctype:function(doctype){doctype&&(doctype.val||!this.doctype)&&this.setDoctype(doctype.val||"default"),this.doctype&&this.buffer(this.doctype),this.hasCompiledDoctype=!0},visitMixin:function(mixin){var name=mixin.name.replace(/-/g,"_")+"_mixin",args=mixin.args||"",block=mixin.block,attrs=mixin.attrs,pp=this.pp;if(mixin.call){pp&&this.buf.push("__indent.push('"+Array(this.indents+1).join(" ")+"');");if(block||attrs.length){this.buf.push(name+".call({");if(block){this.buf.push("block: function(){"),this.parentIndents++;var _indents=this.indents;this.indents=0,this.visit(mixin.block),this.indents=_indents,this.parentIndents--,attrs.length?this.buf.push("},"):this.buf.push("}")}if(attrs.length){var val=this.attrs(attrs);val.inherits?this.buf.push("attributes: merge({"+val.buf+"}, attributes), escaped: merge("+val.escaped+", escaped, true)"):this.buf.push("attributes: {"+val.buf+"}, escaped: "+val.escaped)}args?this.buf.push("}, "+args+");"):this.buf.push("});")}else this.buf.push(name+"("+args+");");pp&&this.buf.push("__indent.pop();")}else this.buf.push("var "+name+" = function("+args+"){"),this.buf.push("var block = this.block, attributes = this.attributes || {}, escaped = this.escaped || {};"),this.parentIndents++,this.visit(block),this.parentIndents--,this.buf.push("};")},visitTag:function(tag){this.indents++;var name=tag.name,pp=this.pp;tag.buffer&&(name="' + ("+name+") + '"),this.hasCompiledTag||(!this.hasCompiledDoctype&&"html"==name&&this.visitDoctype(),this.hasCompiledTag=!0),pp&&!tag.isInline()&&this.prettyIndent(0,!0),(~selfClosing.indexOf(name)||tag.selfClosing)&&!this.xml?(this.buffer("<"+name),this.visitAttributes(tag.attrs),this.terse?this.buffer(">"):this.buffer("/>")):(tag.attrs.length?(this.buffer("<"+name),tag.attrs.length&&this.visitAttributes(tag.attrs),this.buffer(">")):this.buffer("<"+name+">"),tag.code&&this.visitCode(tag.code),this.escape="pre"==tag.name,this.visit(tag.block),pp&&!tag.isInline()&&"pre"!=tag.name&&!tag.canInline()&&this.prettyIndent(0,!0),this.buffer("")),this.indents--},visitFilter:function(filter){var fn=filters[filter.name];if(!fn)throw filter.isASTFilter?new Error('unknown ast filter "'+filter.name+':"'):new Error('unknown filter ":'+filter.name+'"');if(filter.isASTFilter)this.buf.push(fn(filter.block,this,filter.attrs));else{var text=filter.block.nodes.map(function(node){return node.val}).join("\n");filter.attrs=filter.attrs||{},filter.attrs.filename=this.options.filename,this.buffer(utils.text(fn(text,filter.attrs)))}},visitText:function(text){text=utils.text(text.val.replace(/\\/g,"\\\\")),this.escape&&(text=escape(text)),this.buffer(text)},visitComment:function(comment){if(!comment.buffer)return;this.pp&&this.prettyIndent(1,!0),this.buffer("")},visitBlockComment:function(comment){if(!comment.buffer)return;0==comment.val.trim().indexOf("if")?(this.buffer("")):(this.buffer(""))},visitCode:function(code){if(code.buffer){var val=code.val.trimLeft();this.buf.push("var __val__ = "+val),val='null == __val__ ? "" : __val__',code.escape&&(val="escape("+val+")"),this.buf.push("buf.push("+val+");")}else this.buf.push(code.val);code.block&&(code.buffer||this.buf.push("{"),this.visit(code.block),code.buffer||this.buf.push("}"))},visitEach:function(each){this.buf.push("// iterate "+each.obj+"\n"+";(function(){\n"+" if ('number' == typeof "+each.obj+".length) {\n"+" for (var "+each.key+" = 0, $$l = "+each.obj+".length; "+each.key+" < $$l; "+each.key+"++) {\n"+" var "+each.val+" = "+each.obj+"["+each.key+"];\n"),this.visit(each.block),this.buf.push(" }\n } else {\n for (var "+each.key+" in "+each.obj+") {\n"+" if ("+each.obj+".hasOwnProperty("+each.key+")){"+" var "+each.val+" = "+each.obj+"["+each.key+"];\n"),this.visit(each.block),this.buf.push(" }\n"),this.buf.push(" }\n }\n}).call(this);\n")},visitAttributes:function(attrs){var val=this.attrs(attrs);val.inherits?this.buf.push("buf.push(attrs(merge({ "+val.buf+" }, attributes), merge("+val.escaped+", escaped, true)));"):val.constant?(eval("var buf={"+val.buf+"};"),this.buffer(runtime.attrs(buf,JSON.parse(val.escaped)),!0)):this.buf.push("buf.push(attrs({ "+val.buf+" }, "+val.escaped+"));")},attrs:function(attrs){var buf=[],classes=[],escaped={},constant=attrs.every(function(attr){return isConstant(attr.val)}),inherits=!1;return this.terse&&buf.push("terse: true"),attrs.forEach(function(attr){if(attr.name=="attributes")return inherits=!0;escaped[attr.name]=attr.escaped;if(attr.name=="class")classes.push("("+attr.val+")");else{var pair="'"+attr.name+"':("+attr.val+")";buf.push(pair)}}),classes.length&&(classes=classes.join(" + ' ' + "),buf.push("class: "+classes)),{buf:buf.join(", ").replace("class:",'"class":'),escaped:JSON.stringify(escaped),inherits:inherits,constant:constant}}};function isConstant(val){if(/^ *("([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'|true|false|null|undefined) *$/i.test(val))return!0;if(!isNaN(Number(val)))return!0;var matches;return(matches=/^ *\[(.*)\] *$/.exec(val))?matches[1].split(",").every(isConstant):!1}function escape(html){return String(html).replace(/&(?!\w+;)/g,"&").replace(//g,">").replace(/"/g,""")}}),require.register("doctypes.js",function(module,exports,require){module.exports={5:"","default":"",xml:'',transitional:'',strict:'',frameset:'',1.1:'',basic:'',mobile:''}}),require.register("filters.js",function(module,exports,require){module.exports={cdata:function(str){return""},sass:function(str){str=str.replace(/\\n/g,"\n");var sass=require("sass").render(str).replace(/\n/g,"\\n");return'"},stylus:function(str,options){var ret;str=str.replace(/\\n/g,"\n");var stylus=require("stylus");return stylus(str,options).render(function(err,css){if(err)throw err;ret=css.replace(/\n/g,"\\n")}),'"},less:function(str){var ret;return str=str.replace(/\\n/g,"\n"),require("less").render(str,function(err,css){if(err)throw err;ret='"}),ret},markdown:function(str){var md;try{md=require("markdown")}catch(err){try{md=require("discount")}catch(err){try{md=require("markdown-js")}catch(err){try{md=require("marked")}catch(err){throw new Error("Cannot find markdown library, install markdown, discount, or marked.")}}}}return str=str.replace(/\\n/g,"\n"),md.parse(str).replace(/\n/g,"\\n").replace(/'/g,"'")},coffeescript:function(str){str=str.replace(/\\n/g,"\n");var js=require("coffee-script").compile(str).replace(/\\/g,"\\\\").replace(/\n/g,"\\n");return'"}}}),require.register("inline-tags.js",function(module,exports,require){module.exports=["a","abbr","acronym","b","br","code","em","font","i","img","ins","kbd","map","samp","small","span","strong","sub","sup"]}),require.register("jade.js",function(module,exports,require){var Parser=require("./parser"),Lexer=require("./lexer"),Compiler=require("./compiler"),runtime=require("./runtime");exports.version="0.26.1",exports.selfClosing=require("./self-closing"),exports.doctypes=require("./doctypes"),exports.filters=require("./filters"),exports.utils=require("./utils"),exports.Compiler=Compiler,exports.Parser=Parser,exports.Lexer=Lexer,exports.nodes=require("./nodes"),exports.runtime=runtime,exports.cache={};function parse(str,options){try{var parser=new Parser(str,options.filename,options),compiler=new(options.compiler||Compiler)(parser.parse(),options),js=compiler.compile();return options.debug&&console.error("\nCompiled Function:\n\n%s",js.replace(/^/gm," ")),"var buf = [];\n"+(options.self?"var self = locals || {};\n"+js:"with (locals || {}) {\n"+js+"\n}\n")+'return buf.join("");'}catch(err){parser=parser.context(),runtime.rethrow(err,parser.filename,parser.lexer.lineno)}}exports.compile=function(str,options){var options=options||{},client=options.client,filename=options.filename?JSON.stringify(options.filename):"undefined",fn;return options.compileDebug!==!1?fn=["var __jade = [{ lineno: 1, filename: "+filename+" }];","try {",parse(String(str),options),"} catch (err) {"," rethrow(err, __jade[0].filename, __jade[0].lineno);","}"].join("\n"):fn=parse(String(str),options),client&&(fn="attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n"+fn),fn=new Function("locals, attrs, escape, rethrow, merge",fn),client?fn:function(locals){return fn(locals,runtime.attrs,runtime.escape,runtime.rethrow,runtime.merge)}},exports.render=function(str,options,fn){"function"==typeof options&&(fn=options,options={});if(options.cache&&!options.filename)return fn(new Error('the "filename" option is required for caching'));try{var path=options.filename,tmpl=options.cache?exports.cache[path]||(exports.cache[path]=exports.compile(str,options)):exports.compile(str,options);fn(null,tmpl(options))}catch(err){fn(err)}},exports.renderFile=function(path,options,fn){var key=path+":string";"function"==typeof options&&(fn=options,options={});try{options.filename=path;var str=options.cache?exports.cache[key]||(exports.cache[key]=fs.readFileSync(path,"utf8")):fs.readFileSync(path,"utf8");exports.render(str,options,fn)}catch(err){fn(err)}},exports.__express=exports.renderFile}),require.register("lexer.js",function(module,exports,require){var Lexer=module.exports=function Lexer(str,options){options=options||{},this.input=str.replace(/\r\n|\r/g,"\n"),this.colons=options.colons,this.deferredTokens=[],this.lastIndents=0,this.lineno=1,this.stash=[],this.indentStack=[],this.indentRe=null,this.pipeless=!1};Lexer.prototype={tok:function(type,val){return{type:type,line:this.lineno,val:val}},consume:function(len){this.input=this.input.substr(len)},scan:function(regexp,type){var captures;if(captures=regexp.exec(this.input))return this.consume(captures[0].length),this.tok(type,captures[1])},defer:function(tok){this.deferredTokens.push(tok)},lookahead:function(n){var fetch=n-this.stash.length;while(fetch-->0)this.stash.push(this.next());return this.stash[--n]},indexOfDelimiters:function(start,end){var str=this.input,nstart=0,nend=0,pos=0;for(var i=0,len=str.length;iindents)this.stash.push(this.tok("outdent")),this.indentStack.shift();tok=this.stash.pop()}else indents&&indents!=this.indentStack[0]?(this.indentStack.unshift(indents),tok=this.tok("indent",indents)):tok=this.tok("newline");return tok}},pipelessText:function(){if(this.pipeless){if("\n"==this.input[0])return;var i=this.input.indexOf("\n");-1==i&&(i=this.input.length);var str=this.input.substr(0,i);return this.consume(str.length),this.tok("text",str)}},colon:function(){return this.scan(/^: */,":")},advance:function(){return this.stashed()||this.next()},next:function(){return this.deferred()||this.blank()||this.eos()||this.pipelessText()||this.yield()||this.doctype()||this.interpolation()||this["case"]()||this.when()||this["default"]()||this["extends"]()||this.append()||this.prepend()||this.block()||this.include()||this.mixin()||this.call()||this.conditional()||this.each()||this["while"]()||this.assignment()||this.tag()||this.filter()||this.code()||this.id()||this.className()||this.attrs()||this.indent()||this.comment()||this.colon()||this.text()}}}),require.register("nodes/attrs.js",function(module,exports,require){var Node=require("./node"),Block=require("./block"),Attrs=module.exports=function Attrs(){this.attrs=[]};Attrs.prototype=new Node,Attrs.prototype.constructor=Attrs,Attrs.prototype.setAttribute=function(name,val,escaped){return this.attrs.push({name:name,val:val,escaped:escaped}),this},Attrs.prototype.removeAttribute=function(name){for(var i=0,len=this.attrs.length;i/g,">").replace(/"/g,""")},exports.rethrow=function rethrow(err,filename,lineno){if(!filename)throw err;var context=3,str=require("fs").readFileSync(filename,"utf8"),lines=str.split("\n"),start=Math.max(lineno-context,0),end=Math.min(lines.length,lineno+context),context=lines.slice(start,end).map(function(line,i){var curr=i+start+1;return(curr==lineno?" > ":" ")+curr+"| "+line}).join("\n");throw err.path=filename,err.message=(filename||"Jade")+":"+lineno+"\n"+context+"\n\n"+err.message,err}}),require.register("self-closing.js",function(module,exports,require){module.exports=["meta","img","link","input","source","area","base","col","br","hr"]}),require.register("utils.js",function(module,exports,require){var interpolate=exports.interpolate=function(str){return str.replace(/(\\)?([#!]){(.*?)}/g,function(str,escape,flag,code){return escape?str:"' + "+("!"==flag?"":"escape")+"((interp = "+code.replace(/\\'/g,"'")+") == null ? '' : interp) + '"})},escape=exports.escape=function(str){return str.replace(/'/g,"\\'")};exports.text=function(str){return interpolate(escape(str))}}),window.jade=require("jade")})(); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/compiler.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/compiler.js deleted file mode 100644 index 516ac83d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/compiler.js +++ /dev/null @@ -1,642 +0,0 @@ - -/*! - * Jade - Compiler - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var nodes = require('./nodes') - , filters = require('./filters') - , doctypes = require('./doctypes') - , selfClosing = require('./self-closing') - , runtime = require('./runtime') - , utils = require('./utils'); - -// if browser -// -// if (!Object.keys) { -// Object.keys = function(obj){ -// var arr = []; -// for (var key in obj) { -// if (obj.hasOwnProperty(key)) { -// arr.push(key); -// } -// } -// return arr; -// } -// } -// -// if (!String.prototype.trimLeft) { -// String.prototype.trimLeft = function(){ -// return this.replace(/^\s+/, ''); -// } -// } -// -// end - - -/** - * Initialize `Compiler` with the given `node`. - * - * @param {Node} node - * @param {Object} options - * @api public - */ - -var Compiler = module.exports = function Compiler(node, options) { - this.options = options = options || {}; - this.node = node; - this.hasCompiledDoctype = false; - this.hasCompiledTag = false; - this.pp = options.pretty || false; - this.debug = false !== options.compileDebug; - this.indents = 0; - this.parentIndents = 0; - if (options.doctype) this.setDoctype(options.doctype); -}; - -/** - * Compiler prototype. - */ - -Compiler.prototype = { - - /** - * Compile parse tree to JavaScript. - * - * @api public - */ - - compile: function(){ - this.buf = ['var interp;']; - if (this.pp) this.buf.push("var __indent = [];"); - this.lastBufferedIdx = -1; - this.visit(this.node); - return this.buf.join('\n'); - }, - - /** - * Sets the default doctype `name`. Sets terse mode to `true` when - * html 5 is used, causing self-closing tags to end with ">" vs "/>", - * and boolean attributes are not mirrored. - * - * @param {string} name - * @api public - */ - - setDoctype: function(name){ - var doctype = doctypes[(name || 'default').toLowerCase()]; - doctype = doctype || ''; - this.doctype = doctype; - this.terse = '5' == name || 'html' == name; - this.xml = 0 == this.doctype.indexOf(' 1 && !escape && block.nodes[0].isText && block.nodes[1].isText) - this.prettyIndent(1, true); - - for (var i = 0; i < len; ++i) { - // Pretty print text - if (pp && i > 0 && !escape && block.nodes[i].isText && block.nodes[i-1].isText) - this.prettyIndent(1, false); - - this.visit(block.nodes[i]); - // Multiple text nodes are separated by newlines - if (block.nodes[i+1] && block.nodes[i].isText && block.nodes[i+1].isText) - this.buffer('\\n'); - } - }, - - /** - * Visit `doctype`. Sets terse mode to `true` when html 5 - * is used, causing self-closing tags to end with ">" vs "/>", - * and boolean attributes are not mirrored. - * - * @param {Doctype} doctype - * @api public - */ - - visitDoctype: function(doctype){ - if (doctype && (doctype.val || !this.doctype)) { - this.setDoctype(doctype.val || 'default'); - } - - if (this.doctype) this.buffer(this.doctype); - this.hasCompiledDoctype = true; - }, - - /** - * Visit `mixin`, generating a function that - * may be called within the template. - * - * @param {Mixin} mixin - * @api public - */ - - visitMixin: function(mixin){ - var name = mixin.name.replace(/-/g, '_') + '_mixin' - , args = mixin.args || '' - , block = mixin.block - , attrs = mixin.attrs - , pp = this.pp; - - if (mixin.call) { - if (pp) this.buf.push("__indent.push('" + Array(this.indents + 1).join(' ') + "');") - if (block || attrs.length) { - - this.buf.push(name + '.call({'); - - if (block) { - this.buf.push('block: function(){'); - - // Render block with no indents, dynamically added when rendered - this.parentIndents++; - var _indents = this.indents; - this.indents = 0; - this.visit(mixin.block); - this.indents = _indents; - this.parentIndents--; - - if (attrs.length) { - this.buf.push('},'); - } else { - this.buf.push('}'); - } - } - - if (attrs.length) { - var val = this.attrs(attrs); - if (val.inherits) { - this.buf.push('attributes: merge({' + val.buf - + '}, attributes), escaped: merge(' + val.escaped + ', escaped, true)'); - } else { - this.buf.push('attributes: {' + val.buf + '}, escaped: ' + val.escaped); - } - } - - if (args) { - this.buf.push('}, ' + args + ');'); - } else { - this.buf.push('});'); - } - - } else { - this.buf.push(name + '(' + args + ');'); - } - if (pp) this.buf.push("__indent.pop();") - } else { - this.buf.push('var ' + name + ' = function(' + args + '){'); - this.buf.push('var block = this.block, attributes = this.attributes || {}, escaped = this.escaped || {};'); - this.parentIndents++; - this.visit(block); - this.parentIndents--; - this.buf.push('};'); - } - }, - - /** - * Visit `tag` buffering tag markup, generating - * attributes, visiting the `tag`'s code and block. - * - * @param {Tag} tag - * @api public - */ - - visitTag: function(tag){ - this.indents++; - var name = tag.name - , pp = this.pp; - - if (tag.buffer) name = "' + (" + name + ") + '"; - - if (!this.hasCompiledTag) { - if (!this.hasCompiledDoctype && 'html' == name) { - this.visitDoctype(); - } - this.hasCompiledTag = true; - } - - // pretty print - if (pp && !tag.isInline()) - this.prettyIndent(0, true); - - if ((~selfClosing.indexOf(name) || tag.selfClosing) && !this.xml) { - this.buffer('<' + name); - this.visitAttributes(tag.attrs); - this.terse - ? this.buffer('>') - : this.buffer('/>'); - } else { - // Optimize attributes buffering - if (tag.attrs.length) { - this.buffer('<' + name); - if (tag.attrs.length) this.visitAttributes(tag.attrs); - this.buffer('>'); - } else { - this.buffer('<' + name + '>'); - } - if (tag.code) this.visitCode(tag.code); - this.escape = 'pre' == tag.name; - this.visit(tag.block); - - // pretty print - if (pp && !tag.isInline() && 'pre' != tag.name && !tag.canInline()) - this.prettyIndent(0, true); - - this.buffer(''); - } - this.indents--; - }, - - /** - * Visit `filter`, throwing when the filter does not exist. - * - * @param {Filter} filter - * @api public - */ - - visitFilter: function(filter){ - var fn = filters[filter.name]; - - // unknown filter - if (!fn) { - if (filter.isASTFilter) { - throw new Error('unknown ast filter "' + filter.name + ':"'); - } else { - throw new Error('unknown filter ":' + filter.name + '"'); - } - } - - if (filter.isASTFilter) { - this.buf.push(fn(filter.block, this, filter.attrs)); - } else { - var text = filter.block.nodes.map(function(node){ return node.val }).join('\n'); - filter.attrs = filter.attrs || {}; - filter.attrs.filename = this.options.filename; - this.buffer(utils.text(fn(text, filter.attrs))); - } - }, - - /** - * Visit `text` node. - * - * @param {Text} text - * @api public - */ - - visitText: function(text){ - text = utils.text(text.val.replace(/\\/g, '\\\\')); - if (this.escape) text = escape(text); - this.buffer(text); - }, - - /** - * Visit a `comment`, only buffering when the buffer flag is set. - * - * @param {Comment} comment - * @api public - */ - - visitComment: function(comment){ - if (!comment.buffer) return; - if (this.pp) this.prettyIndent(1, true); - this.buffer(''); - }, - - /** - * Visit a `BlockComment`. - * - * @param {Comment} comment - * @api public - */ - - visitBlockComment: function(comment){ - if (!comment.buffer) return; - if (0 == comment.val.trim().indexOf('if')) { - this.buffer(''); - } else { - this.buffer(''); - } - }, - - /** - * Visit `code`, respecting buffer / escape flags. - * If the code is followed by a block, wrap it in - * a self-calling function. - * - * @param {Code} code - * @api public - */ - - visitCode: function(code){ - // Wrap code blocks with {}. - // we only wrap unbuffered code blocks ATM - // since they are usually flow control - - // Buffer code - if (code.buffer) { - var val = code.val.trimLeft(); - this.buf.push('var __val__ = ' + val); - val = 'null == __val__ ? "" : __val__'; - if (code.escape) val = 'escape(' + val + ')'; - this.buf.push("buf.push(" + val + ");"); - } else { - this.buf.push(code.val); - } - - // Block support - if (code.block) { - if (!code.buffer) this.buf.push('{'); - this.visit(code.block); - if (!code.buffer) this.buf.push('}'); - } - }, - - /** - * Visit `each` block. - * - * @param {Each} each - * @api public - */ - - visitEach: function(each){ - this.buf.push('' - + '// iterate ' + each.obj + '\n' - + ';(function(){\n' - + ' if (\'number\' == typeof ' + each.obj + '.length) {\n' - + ' for (var ' + each.key + ' = 0, $$l = ' + each.obj + '.length; ' + each.key + ' < $$l; ' + each.key + '++) {\n' - + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); - - this.visit(each.block); - - this.buf.push('' - + ' }\n' - + ' } else {\n' - + ' for (var ' + each.key + ' in ' + each.obj + ') {\n' - // if browser - // + ' if (' + each.obj + '.hasOwnProperty(' + each.key + ')){' - // end - + ' var ' + each.val + ' = ' + each.obj + '[' + each.key + '];\n'); - - this.visit(each.block); - - // if browser - // this.buf.push(' }\n'); - // end - - this.buf.push(' }\n }\n}).call(this);\n'); - }, - - /** - * Visit `attrs`. - * - * @param {Array} attrs - * @api public - */ - - visitAttributes: function(attrs){ - var val = this.attrs(attrs); - if (val.inherits) { - this.buf.push("buf.push(attrs(merge({ " + val.buf + - " }, attributes), merge(" + val.escaped + ", escaped, true)));"); - } else if (val.constant) { - eval('var buf={' + val.buf + '};'); - this.buffer(runtime.attrs(buf, JSON.parse(val.escaped)), true); - } else { - this.buf.push("buf.push(attrs({ " + val.buf + " }, " + val.escaped + "));"); - } - }, - - /** - * Compile attributes. - */ - - attrs: function(attrs){ - var buf = [] - , classes = [] - , escaped = {} - , constant = attrs.every(function(attr){ return isConstant(attr.val) }) - , inherits = false; - - if (this.terse) buf.push('terse: true'); - - attrs.forEach(function(attr){ - if (attr.name == 'attributes') return inherits = true; - escaped[attr.name] = attr.escaped; - if (attr.name == 'class') { - classes.push('(' + attr.val + ')'); - } else { - var pair = "'" + attr.name + "':(" + attr.val + ')'; - buf.push(pair); - } - }); - - if (classes.length) { - classes = classes.join(" + ' ' + "); - buf.push("class: " + classes); - } - - return { - buf: buf.join(', ').replace('class:', '"class":'), - escaped: JSON.stringify(escaped), - inherits: inherits, - constant: constant - }; - } -}; - -/** - * Check if expression can be evaluated to a constant - * - * @param {String} expression - * @return {Boolean} - * @api private - */ - -function isConstant(val){ - // Check strings/literals - if (/^ *("([^"\\]*(\\.[^"\\]*)*)"|'([^'\\]*(\\.[^'\\]*)*)'|true|false|null|undefined) *$/i.test(val)) - return true; - - // Check numbers - if (!isNaN(Number(val))) - return true; - - // Check arrays - var matches; - if (matches = /^ *\[(.*)\] *$/.exec(val)) - return matches[1].split(',').every(isConstant); - - return false; -} - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -function escape(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/doctypes.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/doctypes.js deleted file mode 100644 index e87ca1e4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/doctypes.js +++ /dev/null @@ -1,18 +0,0 @@ - -/*! - * Jade - doctypes - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = { - '5': '' - , 'default': '' - , 'xml': '' - , 'transitional': '' - , 'strict': '' - , 'frameset': '' - , '1.1': '' - , 'basic': '' - , 'mobile': '' -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/filters.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/filters.js deleted file mode 100644 index fdb634cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/filters.js +++ /dev/null @@ -1,97 +0,0 @@ - -/*! - * Jade - filters - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = { - - /** - * Wrap text with CDATA block. - */ - - cdata: function(str){ - return ''; - }, - - /** - * Transform sass to css, wrapped in style tags. - */ - - sass: function(str){ - str = str.replace(/\\n/g, '\n'); - var sass = require('sass').render(str).replace(/\n/g, '\\n'); - return ''; - }, - - /** - * Transform stylus to css, wrapped in style tags. - */ - - stylus: function(str, options){ - var ret; - str = str.replace(/\\n/g, '\n'); - var stylus = require('stylus'); - stylus(str, options).render(function(err, css){ - if (err) throw err; - ret = css.replace(/\n/g, '\\n'); - }); - return ''; - }, - - /** - * Transform less to css, wrapped in style tags. - */ - - less: function(str){ - var ret; - str = str.replace(/\\n/g, '\n'); - require('less').render(str, function(err, css){ - if (err) throw err; - ret = ''; - }); - return ret; - }, - - /** - * Transform markdown to html. - */ - - markdown: function(str){ - var md; - - // support markdown / discount - try { - md = require('markdown'); - } catch (err){ - try { - md = require('discount'); - } catch (err) { - try { - md = require('markdown-js'); - } catch (err) { - try { - md = require('marked'); - } catch (err) { - throw new - Error('Cannot find markdown library, install markdown, discount, or marked.'); - } - } - } - } - - str = str.replace(/\\n/g, '\n'); - return md.parse(str).replace(/\n/g, '\\n').replace(/'/g,'''); - }, - - /** - * Transform coffeescript to javascript. - */ - - coffeescript: function(str){ - str = str.replace(/\\n/g, '\n'); - var js = require('coffee-script').compile(str).replace(/\\/g, '\\\\').replace(/\n/g, '\\n'); - return ''; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/inline-tags.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/inline-tags.js deleted file mode 100644 index 491de0b5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/inline-tags.js +++ /dev/null @@ -1,28 +0,0 @@ - -/*! - * Jade - inline tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'a' - , 'abbr' - , 'acronym' - , 'b' - , 'br' - , 'code' - , 'em' - , 'font' - , 'i' - , 'img' - , 'ins' - , 'kbd' - , 'map' - , 'samp' - , 'small' - , 'span' - , 'strong' - , 'sub' - , 'sup' -]; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/jade.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/jade.js deleted file mode 100644 index 00f0abb1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/jade.js +++ /dev/null @@ -1,237 +0,0 @@ -/*! - * Jade - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Parser = require('./parser') - , Lexer = require('./lexer') - , Compiler = require('./compiler') - , runtime = require('./runtime') -// if node - , fs = require('fs'); -// end - -/** - * Library version. - */ - -exports.version = '0.26.3'; - -/** - * Expose self closing tags. - */ - -exports.selfClosing = require('./self-closing'); - -/** - * Default supported doctypes. - */ - -exports.doctypes = require('./doctypes'); - -/** - * Text filters. - */ - -exports.filters = require('./filters'); - -/** - * Utilities. - */ - -exports.utils = require('./utils'); - -/** - * Expose `Compiler`. - */ - -exports.Compiler = Compiler; - -/** - * Expose `Parser`. - */ - -exports.Parser = Parser; - -/** - * Expose `Lexer`. - */ - -exports.Lexer = Lexer; - -/** - * Nodes. - */ - -exports.nodes = require('./nodes'); - -/** - * Jade runtime helpers. - */ - -exports.runtime = runtime; - -/** - * Template function cache. - */ - -exports.cache = {}; - -/** - * Parse the given `str` of jade and return a function body. - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api private - */ - -function parse(str, options){ - try { - // Parse - var parser = new Parser(str, options.filename, options); - - // Compile - var compiler = new (options.compiler || Compiler)(parser.parse(), options) - , js = compiler.compile(); - - // Debug compiler - if (options.debug) { - console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); - } - - return '' - + 'var buf = [];\n' - + (options.self - ? 'var self = locals || {};\n' + js - : 'with (locals || {}) {\n' + js + '\n}\n') - + 'return buf.join("");'; - } catch (err) { - parser = parser.context(); - runtime.rethrow(err, parser.filename, parser.lexer.lineno); - } -} - -/** - * Compile a `Function` representation of the given jade `str`. - * - * Options: - * - * - `compileDebug` when `false` debugging code is stripped from the compiled template - * - `client` when `true` the helper functions `escape()` etc will reference `jade.escape()` - * for use with the Jade client-side runtime.js - * - * @param {String} str - * @param {Options} options - * @return {Function} - * @api public - */ - -exports.compile = function(str, options){ - var options = options || {} - , client = options.client - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined' - , fn; - - if (options.compileDebug !== false) { - fn = [ - 'var __jade = [{ lineno: 1, filename: ' + filename + ' }];' - , 'try {' - , parse(String(str), options) - , '} catch (err) {' - , ' rethrow(err, __jade[0].filename, __jade[0].lineno);' - , '}' - ].join('\n'); - } else { - fn = parse(String(str), options); - } - - if (client) { - fn = 'attrs = attrs || jade.attrs; escape = escape || jade.escape; rethrow = rethrow || jade.rethrow; merge = merge || jade.merge;\n' + fn; - } - - fn = new Function('locals, attrs, escape, rethrow, merge', fn); - - if (client) return fn; - - return function(locals){ - return fn(locals, runtime.attrs, runtime.escape, runtime.rethrow, runtime.merge); - }; -}; - -/** - * Render the given `str` of jade and invoke - * the callback `fn(err, str)`. - * - * Options: - * - * - `cache` enable template caching - * - `filename` filename required for `include` / `extends` and caching - * - * @param {String} str - * @param {Object|Function} options or fn - * @param {Function} fn - * @api public - */ - -exports.render = function(str, options, fn){ - // swap args - if ('function' == typeof options) { - fn = options, options = {}; - } - - // cache requires .filename - if (options.cache && !options.filename) { - return fn(new Error('the "filename" option is required for caching')); - } - - try { - var path = options.filename; - var tmpl = options.cache - ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) - : exports.compile(str, options); - fn(null, tmpl(options)); - } catch (err) { - fn(err); - } -}; - -/** - * Render a Jade file at the given `path` and callback `fn(err, str)`. - * - * @param {String} path - * @param {Object|Function} options or callback - * @param {Function} fn - * @api public - */ - -exports.renderFile = function(path, options, fn){ - var key = path + ':string'; - - if ('function' == typeof options) { - fn = options, options = {}; - } - - try { - options.filename = path; - var str = options.cache - ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) - : fs.readFileSync(path, 'utf8'); - exports.render(str, options, fn); - } catch (err) { - fn(err); - } -}; - -/** - * Express support. - */ - -exports.__express = exports.renderFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/lexer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/lexer.js deleted file mode 100644 index bca314a9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/lexer.js +++ /dev/null @@ -1,771 +0,0 @@ - -/*! - * Jade - Lexer - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Initialize `Lexer` with the given `str`. - * - * Options: - * - * - `colons` allow colons for attr delimiters - * - * @param {String} str - * @param {Object} options - * @api private - */ - -var Lexer = module.exports = function Lexer(str, options) { - options = options || {}; - this.input = str.replace(/\r\n|\r/g, '\n'); - this.colons = options.colons; - this.deferredTokens = []; - this.lastIndents = 0; - this.lineno = 1; - this.stash = []; - this.indentStack = []; - this.indentRe = null; - this.pipeless = false; -}; - -/** - * Lexer prototype. - */ - -Lexer.prototype = { - - /** - * Construct a token with the given `type` and `val`. - * - * @param {String} type - * @param {String} val - * @return {Object} - * @api private - */ - - tok: function(type, val){ - return { - type: type - , line: this.lineno - , val: val - } - }, - - /** - * Consume the given `len` of input. - * - * @param {Number} len - * @api private - */ - - consume: function(len){ - this.input = this.input.substr(len); - }, - - /** - * Scan for `type` with the given `regexp`. - * - * @param {String} type - * @param {RegExp} regexp - * @return {Object} - * @api private - */ - - scan: function(regexp, type){ - var captures; - if (captures = regexp.exec(this.input)) { - this.consume(captures[0].length); - return this.tok(type, captures[1]); - } - }, - - /** - * Defer the given `tok`. - * - * @param {Object} tok - * @api private - */ - - defer: function(tok){ - this.deferredTokens.push(tok); - }, - - /** - * Lookahead `n` tokens. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - var fetch = n - this.stash.length; - while (fetch-- > 0) this.stash.push(this.next()); - return this.stash[--n]; - }, - - /** - * Return the indexOf `start` / `end` delimiters. - * - * @param {String} start - * @param {String} end - * @return {Number} - * @api private - */ - - indexOfDelimiters: function(start, end){ - var str = this.input - , nstart = 0 - , nend = 0 - , pos = 0; - for (var i = 0, len = str.length; i < len; ++i) { - if (start == str.charAt(i)) { - ++nstart; - } else if (end == str.charAt(i)) { - if (++nend == nstart) { - pos = i; - break; - } - } - } - return pos; - }, - - /** - * Stashed token. - */ - - stashed: function() { - return this.stash.length - && this.stash.shift(); - }, - - /** - * Deferred token. - */ - - deferred: function() { - return this.deferredTokens.length - && this.deferredTokens.shift(); - }, - - /** - * end-of-source. - */ - - eos: function() { - if (this.input.length) return; - if (this.indentStack.length) { - this.indentStack.shift(); - return this.tok('outdent'); - } else { - return this.tok('eos'); - } - }, - - /** - * Blank line. - */ - - blank: function() { - var captures; - if (captures = /^\n *\n/.exec(this.input)) { - this.consume(captures[0].length - 1); - if (this.pipeless) return this.tok('text', ''); - return this.next(); - } - }, - - /** - * Comment. - */ - - comment: function() { - var captures; - if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('comment', captures[2]); - tok.buffer = '-' != captures[1]; - return tok; - } - }, - - /** - * Interpolated tag. - */ - - interpolation: function() { - var captures; - if (captures = /^#\{(.*?)\}/.exec(this.input)) { - this.consume(captures[0].length); - return this.tok('interpolation', captures[1]); - } - }, - - /** - * Tag. - */ - - tag: function() { - var captures; - if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { - this.consume(captures[0].length); - var tok, name = captures[1]; - if (':' == name[name.length - 1]) { - name = name.slice(0, -1); - tok = this.tok('tag', name); - this.defer(this.tok(':')); - while (' ' == this.input[0]) this.input = this.input.substr(1); - } else { - tok = this.tok('tag', name); - } - tok.selfClosing = !! captures[2]; - return tok; - } - }, - - /** - * Filter. - */ - - filter: function() { - return this.scan(/^:(\w+)/, 'filter'); - }, - - /** - * Doctype. - */ - - doctype: function() { - return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); - }, - - /** - * Id. - */ - - id: function() { - return this.scan(/^#([\w-]+)/, 'id'); - }, - - /** - * Class. - */ - - className: function() { - return this.scan(/^\.([\w-]+)/, 'class'); - }, - - /** - * Text. - */ - - text: function() { - return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); - }, - - /** - * Extends. - */ - - "extends": function() { - return this.scan(/^extends? +([^\n]+)/, 'extends'); - }, - - /** - * Block prepend. - */ - - prepend: function() { - var captures; - if (captures = /^prepend +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'prepend' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block append. - */ - - append: function() { - var captures; - if (captures = /^append +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'append' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block. - */ - - block: function() { - var captures; - if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = captures[1] || 'replace' - , name = captures[2] - , tok = this.tok('block', name); - - tok.mode = mode; - return tok; - } - }, - - /** - * Yield. - */ - - yield: function() { - return this.scan(/^yield */, 'yield'); - }, - - /** - * Include. - */ - - include: function() { - return this.scan(/^include +([^\n]+)/, 'include'); - }, - - /** - * Case. - */ - - "case": function() { - return this.scan(/^case +([^\n]+)/, 'case'); - }, - - /** - * When. - */ - - when: function() { - return this.scan(/^when +([^:\n]+)/, 'when'); - }, - - /** - * Default. - */ - - "default": function() { - return this.scan(/^default */, 'default'); - }, - - /** - * Assignment. - */ - - assignment: function() { - var captures; - if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { - this.consume(captures[0].length); - var name = captures[1] - , val = captures[2]; - return this.tok('code', 'var ' + name + ' = (' + val + ');'); - } - }, - - /** - * Call mixin. - */ - - call: function(){ - var captures; - if (captures = /^\+([-\w]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('call', captures[1]); - - // Check for args (not attributes) - if (captures = /^ *\((.*?)\)/.exec(this.input)) { - if (!/^ *[-\w]+ *=/.test(captures[1])) { - this.consume(captures[0].length); - tok.args = captures[1]; - } - } - - return tok; - } - }, - - /** - * Mixin. - */ - - mixin: function(){ - var captures; - if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('mixin', captures[1]); - tok.args = captures[2]; - return tok; - } - }, - - /** - * Conditional. - */ - - conditional: function() { - var captures; - if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var type = captures[1] - , js = captures[2]; - - switch (type) { - case 'if': js = 'if (' + js + ')'; break; - case 'unless': js = 'if (!(' + js + '))'; break; - case 'else if': js = 'else if (' + js + ')'; break; - case 'else': js = 'else'; break; - } - - return this.tok('code', js); - } - }, - - /** - * While. - */ - - "while": function() { - var captures; - if (captures = /^while +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - return this.tok('code', 'while (' + captures[1] + ')'); - } - }, - - /** - * Each. - */ - - each: function() { - var captures; - if (captures = /^(?:- *)?(?:each|for) +(\w+)(?: *, *(\w+))? * in *([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('each', captures[1]); - tok.key = captures[2] || '$index'; - tok.code = captures[3]; - return tok; - } - }, - - /** - * Code. - */ - - code: function() { - var captures; - if (captures = /^(!?=|-)([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var flags = captures[1]; - captures[1] = captures[2]; - var tok = this.tok('code', captures[1]); - tok.escape = flags[0] === '='; - tok.buffer = flags[0] === '=' || flags[1] === '='; - return tok; - } - }, - - /** - * Attributes. - */ - - attrs: function() { - if ('(' == this.input.charAt(0)) { - var index = this.indexOfDelimiters('(', ')') - , str = this.input.substr(1, index-1) - , tok = this.tok('attrs') - , len = str.length - , colons = this.colons - , states = ['key'] - , escapedAttr - , key = '' - , val = '' - , quote - , c - , p; - - function state(){ - return states[states.length - 1]; - } - - function interpolate(attr) { - return attr.replace(/#\{([^}]+)\}/g, function(_, expr){ - return quote + " + (" + expr + ") + " + quote; - }); - } - - this.consume(index + 1); - tok.attrs = {}; - tok.escaped = {}; - - function parse(c) { - var real = c; - // TODO: remove when people fix ":" - if (colons && ':' == c) c = '='; - switch (c) { - case ',': - case '\n': - switch (state()) { - case 'expr': - case 'array': - case 'string': - case 'object': - val += c; - break; - default: - states.push('key'); - val = val.trim(); - key = key.trim(); - if ('' == key) return; - key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); - tok.escaped[key] = escapedAttr; - tok.attrs[key] = '' == val - ? true - : interpolate(val); - key = val = ''; - } - break; - case '=': - switch (state()) { - case 'key char': - key += real; - break; - case 'val': - case 'expr': - case 'array': - case 'string': - case 'object': - val += real; - break; - default: - escapedAttr = '!' != p; - states.push('val'); - } - break; - case '(': - if ('val' == state() - || 'expr' == state()) states.push('expr'); - val += c; - break; - case ')': - if ('expr' == state() - || 'val' == state()) states.pop(); - val += c; - break; - case '{': - if ('val' == state()) states.push('object'); - val += c; - break; - case '}': - if ('object' == state()) states.pop(); - val += c; - break; - case '[': - if ('val' == state()) states.push('array'); - val += c; - break; - case ']': - if ('array' == state()) states.pop(); - val += c; - break; - case '"': - case "'": - switch (state()) { - case 'key': - states.push('key char'); - break; - case 'key char': - states.pop(); - break; - case 'string': - if (c == quote) states.pop(); - val += c; - break; - default: - states.push('string'); - val += c; - quote = c; - } - break; - case '': - break; - default: - switch (state()) { - case 'key': - case 'key char': - key += c; - break; - default: - val += c; - } - } - p = c; - } - - for (var i = 0; i < len; ++i) { - parse(str.charAt(i)); - } - - parse(','); - - if ('/' == this.input.charAt(0)) { - this.consume(1); - tok.selfClosing = true; - } - - return tok; - } - }, - - /** - * Indent | Outdent | Newline. - */ - - indent: function() { - var captures, re; - - // established regexp - if (this.indentRe) { - captures = this.indentRe.exec(this.input); - // determine regexp - } else { - // tabs - re = /^\n(\t*) */; - captures = re.exec(this.input); - - // spaces - if (captures && !captures[1].length) { - re = /^\n( *)/; - captures = re.exec(this.input); - } - - // established - if (captures && captures[1].length) this.indentRe = re; - } - - if (captures) { - var tok - , indents = captures[1].length; - - ++this.lineno; - this.consume(indents + 1); - - if (' ' == this.input[0] || '\t' == this.input[0]) { - throw new Error('Invalid indentation, you can use tabs or spaces but not both'); - } - - // blank line - if ('\n' == this.input[0]) return this.tok('newline'); - - // outdent - if (this.indentStack.length && indents < this.indentStack[0]) { - while (this.indentStack.length && this.indentStack[0] > indents) { - this.stash.push(this.tok('outdent')); - this.indentStack.shift(); - } - tok = this.stash.pop(); - // indent - } else if (indents && indents != this.indentStack[0]) { - this.indentStack.unshift(indents); - tok = this.tok('indent', indents); - // newline - } else { - tok = this.tok('newline'); - } - - return tok; - } - }, - - /** - * Pipe-less text consumed only when - * pipeless is true; - */ - - pipelessText: function() { - if (this.pipeless) { - if ('\n' == this.input[0]) return; - var i = this.input.indexOf('\n'); - if (-1 == i) i = this.input.length; - var str = this.input.substr(0, i); - this.consume(str.length); - return this.tok('text', str); - } - }, - - /** - * ':' - */ - - colon: function() { - return this.scan(/^: */, ':'); - }, - - /** - * Return the next token object, or those - * previously stashed by lookahead. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.stashed() - || this.next(); - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - next: function() { - return this.deferred() - || this.blank() - || this.eos() - || this.pipelessText() - || this.yield() - || this.doctype() - || this.interpolation() - || this["case"]() - || this.when() - || this["default"]() - || this["extends"]() - || this.append() - || this.prepend() - || this.block() - || this.include() - || this.mixin() - || this.call() - || this.conditional() - || this.each() - || this["while"]() - || this.assignment() - || this.tag() - || this.filter() - || this.code() - || this.id() - || this.className() - || this.attrs() - || this.indent() - || this.comment() - || this.colon() - || this.text(); - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/attrs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/attrs.js deleted file mode 100644 index 5de9b59c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/attrs.js +++ /dev/null @@ -1,77 +0,0 @@ - -/*! - * Jade - nodes - Attrs - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'), - Block = require('./block'); - -/** - * Initialize a `Attrs` node. - * - * @api public - */ - -var Attrs = module.exports = function Attrs() { - this.attrs = []; -}; - -/** - * Inherit from `Node`. - */ - -Attrs.prototype.__proto__ = Node.prototype; - -/** - * Set attribute `name` to `val`, keep in mind these become - * part of a raw js object literal, so to quote a value you must - * '"quote me"', otherwise or example 'user.name' is literal JavaScript. - * - * @param {String} name - * @param {String} val - * @param {Boolean} escaped - * @return {Tag} for chaining - * @api public - */ - -Attrs.prototype.setAttribute = function(name, val, escaped){ - this.attrs.push({ name: name, val: val, escaped: escaped }); - return this; -}; - -/** - * Remove attribute `name` when present. - * - * @param {String} name - * @api public - */ - -Attrs.prototype.removeAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - delete this.attrs[i]; - } - } -}; - -/** - * Get attribute value by `name`. - * - * @param {String} name - * @return {String} - * @api public - */ - -Attrs.prototype.getAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - return this.attrs[i].val; - } - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block-comment.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block-comment.js deleted file mode 100644 index 4f41e4a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block-comment.js +++ /dev/null @@ -1,33 +0,0 @@ - -/*! - * Jade - nodes - BlockComment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `BlockComment` with the given `block`. - * - * @param {String} val - * @param {Block} block - * @param {Boolean} buffer - * @api public - */ - -var BlockComment = module.exports = function BlockComment(val, block, buffer) { - this.block = block; - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -BlockComment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block.js deleted file mode 100644 index bb00a1d9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/block.js +++ /dev/null @@ -1,121 +0,0 @@ - -/*! - * Jade - nodes - Block - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Block` with an optional `node`. - * - * @param {Node} node - * @api public - */ - -var Block = module.exports = function Block(node){ - this.nodes = []; - if (node) this.push(node); -}; - -/** - * Inherit from `Node`. - */ - -Block.prototype.__proto__ = Node.prototype; - -/** - * Block flag. - */ - -Block.prototype.isBlock = true; - -/** - * Replace the nodes in `other` with the nodes - * in `this` block. - * - * @param {Block} other - * @api private - */ - -Block.prototype.replace = function(other){ - other.nodes = this.nodes; -}; - -/** - * Pust the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.push = function(node){ - return this.nodes.push(node); -}; - -/** - * Check if this block is empty. - * - * @return {Boolean} - * @api public - */ - -Block.prototype.isEmpty = function(){ - return 0 == this.nodes.length; -}; - -/** - * Unshift the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.unshift = function(node){ - return this.nodes.unshift(node); -}; - -/** - * Return the "last" block, or the first `yield` node. - * - * @return {Block} - * @api private - */ - -Block.prototype.includeBlock = function(){ - var ret = this - , node; - - for (var i = 0, len = this.nodes.length; i < len; ++i) { - node = this.nodes[i]; - if (node.yield) return node; - else if (node.textOnly) continue; - else if (node.includeBlock) ret = node.includeBlock(); - else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); - } - - return ret; -}; - -/** - * Return a clone of this block. - * - * @return {Block} - * @api private - */ - -Block.prototype.clone = function(){ - var clone = new Block; - for (var i = 0, len = this.nodes.length; i < len; ++i) { - clone.push(this.nodes[i].clone()); - } - return clone; -}; - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/case.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/case.js deleted file mode 100644 index 08ff0337..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/case.js +++ /dev/null @@ -1,43 +0,0 @@ - -/*! - * Jade - nodes - Case - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Case` with `expr`. - * - * @param {String} expr - * @api public - */ - -var Case = exports = module.exports = function Case(expr, block){ - this.expr = expr; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Case.prototype.__proto__ = Node.prototype; - -var When = exports.When = function When(expr, block){ - this.expr = expr; - this.block = block; - this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -When.prototype.__proto__ = Node.prototype; - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/code.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/code.js deleted file mode 100644 index babc6759..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/code.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Jade - nodes - Code - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Code` node with the given code `val`. - * Code may also be optionally buffered and escaped. - * - * @param {String} val - * @param {Boolean} buffer - * @param {Boolean} escape - * @api public - */ - -var Code = module.exports = function Code(val, buffer, escape) { - this.val = val; - this.buffer = buffer; - this.escape = escape; - if (val.match(/^ *else/)) this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -Code.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/comment.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/comment.js deleted file mode 100644 index 2e1469e7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/comment.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Jade - nodes - Comment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Comment` with the given `val`, optionally `buffer`, - * otherwise the comment may render in the output. - * - * @param {String} val - * @param {Boolean} buffer - * @api public - */ - -var Comment = module.exports = function Comment(val, buffer) { - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -Comment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/doctype.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/doctype.js deleted file mode 100644 index b8f33e56..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/doctype.js +++ /dev/null @@ -1,29 +0,0 @@ - -/*! - * Jade - nodes - Doctype - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Doctype` with the given `val`. - * - * @param {String} val - * @api public - */ - -var Doctype = module.exports = function Doctype(val) { - this.val = val; -}; - -/** - * Inherit from `Node`. - */ - -Doctype.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/each.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/each.js deleted file mode 100644 index f54101f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/each.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Jade - nodes - Each - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize an `Each` node, representing iteration - * - * @param {String} obj - * @param {String} val - * @param {String} key - * @param {Block} block - * @api public - */ - -var Each = module.exports = function Each(obj, val, key, block) { - this.obj = obj; - this.val = val; - this.key = key; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Each.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/filter.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/filter.js deleted file mode 100644 index 851a0040..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/filter.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Jade - nodes - Filter - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node') - , Block = require('./block'); - -/** - * Initialize a `Filter` node with the given - * filter `name` and `block`. - * - * @param {String} name - * @param {Block|Node} block - * @api public - */ - -var Filter = module.exports = function Filter(name, block, attrs) { - this.name = name; - this.block = block; - this.attrs = attrs; - this.isASTFilter = !block.nodes.every(function(node){ return node.isText }); -}; - -/** - * Inherit from `Node`. - */ - -Filter.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/index.js deleted file mode 100644 index 386ad2f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -/*! - * Jade - nodes - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -exports.Node = require('./node'); -exports.Tag = require('./tag'); -exports.Code = require('./code'); -exports.Each = require('./each'); -exports.Case = require('./case'); -exports.Text = require('./text'); -exports.Block = require('./block'); -exports.Mixin = require('./mixin'); -exports.Filter = require('./filter'); -exports.Comment = require('./comment'); -exports.Literal = require('./literal'); -exports.BlockComment = require('./block-comment'); -exports.Doctype = require('./doctype'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/literal.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/literal.js deleted file mode 100644 index fde586be..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/literal.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Jade - nodes - Literal - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Literal` node with the given `str. - * - * @param {String} str - * @api public - */ - -var Literal = module.exports = function Literal(str) { - this.str = str - .replace(/\\/g, "\\\\") - .replace(/\n|\r\n/g, "\\n") - .replace(/'/g, "\\'"); -}; - -/** - * Inherit from `Node`. - */ - -Literal.prototype.__proto__ = Node.prototype; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/mixin.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/mixin.js deleted file mode 100644 index 8407bc79..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/mixin.js +++ /dev/null @@ -1,36 +0,0 @@ - -/*! - * Jade - nodes - Mixin - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'); - -/** - * Initialize a new `Mixin` with `name` and `block`. - * - * @param {String} name - * @param {String} args - * @param {Block} block - * @api public - */ - -var Mixin = module.exports = function Mixin(name, args, block, call){ - this.name = name; - this.args = args; - this.block = block; - this.attrs = []; - this.call = call; -}; - -/** - * Inherit from `Attrs`. - */ - -Mixin.prototype.__proto__ = Attrs.prototype; - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/node.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/node.js deleted file mode 100644 index e98f042c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/node.js +++ /dev/null @@ -1,25 +0,0 @@ - -/*! - * Jade - nodes - Node - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Initialize a `Node`. - * - * @api public - */ - -var Node = module.exports = function Node(){}; - -/** - * Clone this node (return itself) - * - * @return {Node} - * @api private - */ - -Node.prototype.clone = function(){ - return this; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/tag.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/tag.js deleted file mode 100644 index 4b6728ad..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/tag.js +++ /dev/null @@ -1,95 +0,0 @@ - -/*! - * Jade - nodes - Tag - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'), - Block = require('./block'), - inlineTags = require('../inline-tags'); - -/** - * Initialize a `Tag` node with the given tag `name` and optional `block`. - * - * @param {String} name - * @param {Block} block - * @api public - */ - -var Tag = module.exports = function Tag(name, block) { - this.name = name; - this.attrs = []; - this.block = block || new Block; -}; - -/** - * Inherit from `Attrs`. - */ - -Tag.prototype.__proto__ = Attrs.prototype; - -/** - * Clone this tag. - * - * @return {Tag} - * @api private - */ - -Tag.prototype.clone = function(){ - var clone = new Tag(this.name, this.block.clone()); - clone.line = this.line; - clone.attrs = this.attrs; - clone.textOnly = this.textOnly; - return clone; -}; - -/** - * Check if this tag is an inline tag. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.isInline = function(){ - return ~inlineTags.indexOf(this.name); -}; - -/** - * Check if this tag's contents can be inlined. Used for pretty printing. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.canInline = function(){ - var nodes = this.block.nodes; - - function isInline(node){ - // Recurse if the node is a block - if (node.isBlock) return node.nodes.every(isInline); - return node.isText || (node.isInline && node.isInline()); - } - - // Empty tag - if (!nodes.length) return true; - - // Text-only or inline-only tag - if (1 == nodes.length) return isInline(nodes[0]); - - // Multi-line inline-only tag - if (this.block.nodes.every(isInline)) { - for (var i = 1, len = nodes.length; i < len; ++i) { - if (nodes[i-1].isText && nodes[i].isText) - return false; - } - return true; - } - - // Mixed tag - return false; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/text.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/text.js deleted file mode 100644 index 3b5dd557..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/nodes/text.js +++ /dev/null @@ -1,36 +0,0 @@ - -/*! - * Jade - nodes - Text - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Text` node with optional `line`. - * - * @param {String} line - * @api public - */ - -var Text = module.exports = function Text(line) { - this.val = ''; - if ('string' == typeof line) this.val = line; -}; - -/** - * Inherit from `Node`. - */ - -Text.prototype.__proto__ = Node.prototype; - -/** - * Flag as text. - */ - -Text.prototype.isText = true; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/parser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/parser.js deleted file mode 100644 index 92f2af0c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/parser.js +++ /dev/null @@ -1,710 +0,0 @@ - -/*! - * Jade - Parser - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Lexer = require('./lexer') - , nodes = require('./nodes'); - -/** - * Initialize `Parser` with the given input `str` and `filename`. - * - * @param {String} str - * @param {String} filename - * @param {Object} options - * @api public - */ - -var Parser = exports = module.exports = function Parser(str, filename, options){ - this.input = str; - this.lexer = new Lexer(str, options); - this.filename = filename; - this.blocks = {}; - this.mixins = {}; - this.options = options; - this.contexts = [this]; -}; - -/** - * Tags that may not contain tags. - */ - -var textOnly = exports.textOnly = ['script', 'style']; - -/** - * Parser prototype. - */ - -Parser.prototype = { - - /** - * Push `parser` onto the context stack, - * or pop and return a `Parser`. - */ - - context: function(parser){ - if (parser) { - this.contexts.push(parser); - } else { - return this.contexts.pop(); - } - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.lexer.advance(); - }, - - /** - * Skip `n` tokens. - * - * @param {Number} n - * @api private - */ - - skip: function(n){ - while (n--) this.advance(); - }, - - /** - * Single token lookahead. - * - * @return {Object} - * @api private - */ - - peek: function() { - return this.lookahead(1); - }, - - /** - * Return lexer lineno. - * - * @return {Number} - * @api private - */ - - line: function() { - return this.lexer.lineno; - }, - - /** - * `n` token lookahead. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - return this.lexer.lookahead(n); - }, - - /** - * Parse input returning a string of js for evaluation. - * - * @return {String} - * @api public - */ - - parse: function(){ - var block = new nodes.Block, parser; - block.line = this.line(); - - while ('eos' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - - if (parser = this.extending) { - this.context(parser); - var ast = parser.parse(); - this.context(); - // hoist mixins - for (var name in this.mixins) - ast.unshift(this.mixins[name]); - return ast; - } - - return block; - }, - - /** - * Expect the given type, or throw an exception. - * - * @param {String} type - * @api private - */ - - expect: function(type){ - if (this.peek().type === type) { - return this.advance(); - } else { - throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); - } - }, - - /** - * Accept the given `type`. - * - * @param {String} type - * @api private - */ - - accept: function(type){ - if (this.peek().type === type) { - return this.advance(); - } - }, - - /** - * tag - * | doctype - * | mixin - * | include - * | filter - * | comment - * | text - * | each - * | code - * | yield - * | id - * | class - * | interpolation - */ - - parseExpr: function(){ - switch (this.peek().type) { - case 'tag': - return this.parseTag(); - case 'mixin': - return this.parseMixin(); - case 'block': - return this.parseBlock(); - case 'case': - return this.parseCase(); - case 'when': - return this.parseWhen(); - case 'default': - return this.parseDefault(); - case 'extends': - return this.parseExtends(); - case 'include': - return this.parseInclude(); - case 'doctype': - return this.parseDoctype(); - case 'filter': - return this.parseFilter(); - case 'comment': - return this.parseComment(); - case 'text': - return this.parseText(); - case 'each': - return this.parseEach(); - case 'code': - return this.parseCode(); - case 'call': - return this.parseCall(); - case 'interpolation': - return this.parseInterpolation(); - case 'yield': - this.advance(); - var block = new nodes.Block; - block.yield = true; - return block; - case 'id': - case 'class': - var tok = this.advance(); - this.lexer.defer(this.lexer.tok('tag', 'div')); - this.lexer.defer(tok); - return this.parseExpr(); - default: - throw new Error('unexpected token "' + this.peek().type + '"'); - } - }, - - /** - * Text - */ - - parseText: function(){ - var tok = this.expect('text') - , node = new nodes.Text(tok.val); - node.line = this.line(); - return node; - }, - - /** - * ':' expr - * | block - */ - - parseBlockExpansion: function(){ - if (':' == this.peek().type) { - this.advance(); - return new nodes.Block(this.parseExpr()); - } else { - return this.block(); - } - }, - - /** - * case - */ - - parseCase: function(){ - var val = this.expect('case').val - , node = new nodes.Case(val); - node.line = this.line(); - node.block = this.block(); - return node; - }, - - /** - * when - */ - - parseWhen: function(){ - var val = this.expect('when').val - return new nodes.Case.When(val, this.parseBlockExpansion()); - }, - - /** - * default - */ - - parseDefault: function(){ - this.expect('default'); - return new nodes.Case.When('default', this.parseBlockExpansion()); - }, - - /** - * code - */ - - parseCode: function(){ - var tok = this.expect('code') - , node = new nodes.Code(tok.val, tok.buffer, tok.escape) - , block - , i = 1; - node.line = this.line(); - while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; - block = 'indent' == this.lookahead(i).type; - if (block) { - this.skip(i-1); - node.block = this.block(); - } - return node; - }, - - /** - * comment - */ - - parseComment: function(){ - var tok = this.expect('comment') - , node; - - if ('indent' == this.peek().type) { - node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); - } else { - node = new nodes.Comment(tok.val, tok.buffer); - } - - node.line = this.line(); - return node; - }, - - /** - * doctype - */ - - parseDoctype: function(){ - var tok = this.expect('doctype') - , node = new nodes.Doctype(tok.val); - node.line = this.line(); - return node; - }, - - /** - * filter attrs? text-block - */ - - parseFilter: function(){ - var block - , tok = this.expect('filter') - , attrs = this.accept('attrs'); - - this.lexer.pipeless = true; - block = this.parseTextBlock(); - this.lexer.pipeless = false; - - var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); - node.line = this.line(); - return node; - }, - - /** - * tag ':' attrs? block - */ - - parseASTFilter: function(){ - var block - , tok = this.expect('tag') - , attrs = this.accept('attrs'); - - this.expect(':'); - block = this.block(); - - var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); - node.line = this.line(); - return node; - }, - - /** - * each block - */ - - parseEach: function(){ - var tok = this.expect('each') - , node = new nodes.Each(tok.code, tok.val, tok.key); - node.line = this.line(); - node.block = this.block(); - return node; - }, - - /** - * 'extends' name - */ - - parseExtends: function(){ - var path = require('path') - , fs = require('fs') - , dirname = path.dirname - , basename = path.basename - , join = path.join; - - if (!this.filename) - throw new Error('the "filename" option is required to extend templates'); - - var path = this.expect('extends').val.trim() - , dir = dirname(this.filename); - - var path = join(dir, path + '.jade') - , str = fs.readFileSync(path, 'utf8') - , parser = new Parser(str, path, this.options); - - parser.blocks = this.blocks; - parser.contexts = this.contexts; - this.extending = parser; - - // TODO: null node - return new nodes.Literal(''); - }, - - /** - * 'block' name block - */ - - parseBlock: function(){ - var block = this.expect('block') - , mode = block.mode - , name = block.val.trim(); - - block = 'indent' == this.peek().type - ? this.block() - : new nodes.Block(new nodes.Literal('')); - - var prev = this.blocks[name]; - - if (prev) { - switch (prev.mode) { - case 'append': - block.nodes = block.nodes.concat(prev.nodes); - prev = block; - break; - case 'prepend': - block.nodes = prev.nodes.concat(block.nodes); - prev = block; - break; - } - } - - block.mode = mode; - return this.blocks[name] = prev || block; - }, - - /** - * include block? - */ - - parseInclude: function(){ - var path = require('path') - , fs = require('fs') - , dirname = path.dirname - , basename = path.basename - , join = path.join; - - var path = this.expect('include').val.trim() - , dir = dirname(this.filename); - - if (!this.filename) - throw new Error('the "filename" option is required to use includes'); - - // no extension - if (!~basename(path).indexOf('.')) { - path += '.jade'; - } - - // non-jade - if ('.jade' != path.substr(-5)) { - var path = join(dir, path) - , str = fs.readFileSync(path, 'utf8'); - return new nodes.Literal(str); - } - - var path = join(dir, path) - , str = fs.readFileSync(path, 'utf8') - , parser = new Parser(str, path, this.options); - parser.blocks = this.blocks; - parser.mixins = this.mixins; - - this.context(parser); - var ast = parser.parse(); - this.context(); - ast.filename = path; - - if ('indent' == this.peek().type) { - ast.includeBlock().push(this.block()); - } - - return ast; - }, - - /** - * call ident block - */ - - parseCall: function(){ - var tok = this.expect('call') - , name = tok.val - , args = tok.args - , mixin = new nodes.Mixin(name, args, new nodes.Block, true); - - this.tag(mixin); - if (mixin.block.isEmpty()) mixin.block = null; - return mixin; - }, - - /** - * mixin block - */ - - parseMixin: function(){ - var tok = this.expect('mixin') - , name = tok.val - , args = tok.args - , mixin; - - // definition - if ('indent' == this.peek().type) { - mixin = new nodes.Mixin(name, args, this.block(), false); - this.mixins[name] = mixin; - return mixin; - // call - } else { - return new nodes.Mixin(name, args, null, true); - } - }, - - /** - * indent (text | newline)* outdent - */ - - parseTextBlock: function(){ - var block = new nodes.Block; - block.line = this.line(); - var spaces = this.expect('indent').val; - if (null == this._spaces) this._spaces = spaces; - var indent = Array(spaces - this._spaces + 1).join(' '); - while ('outdent' != this.peek().type) { - switch (this.peek().type) { - case 'newline': - this.advance(); - break; - case 'indent': - this.parseTextBlock().nodes.forEach(function(node){ - block.push(node); - }); - break; - default: - var text = new nodes.Text(indent + this.advance().val); - text.line = this.line(); - block.push(text); - } - } - - if (spaces == this._spaces) this._spaces = null; - this.expect('outdent'); - return block; - }, - - /** - * indent expr* outdent - */ - - block: function(){ - var block = new nodes.Block; - block.line = this.line(); - this.expect('indent'); - while ('outdent' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - this.expect('outdent'); - return block; - }, - - /** - * interpolation (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseInterpolation: function(){ - var tok = this.advance(); - var tag = new nodes.Tag(tok.val); - tag.buffer = true; - return this.tag(tag); - }, - - /** - * tag (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseTag: function(){ - // ast-filter look-ahead - var i = 2; - if ('attrs' == this.lookahead(i).type) ++i; - if (':' == this.lookahead(i).type) { - if ('indent' == this.lookahead(++i).type) { - return this.parseASTFilter(); - } - } - - var tok = this.advance() - , tag = new nodes.Tag(tok.val); - - tag.selfClosing = tok.selfClosing; - - return this.tag(tag); - }, - - /** - * Parse tag. - */ - - tag: function(tag){ - var dot; - - tag.line = this.line(); - - // (attrs | class | id)* - out: - while (true) { - switch (this.peek().type) { - case 'id': - case 'class': - var tok = this.advance(); - tag.setAttribute(tok.type, "'" + tok.val + "'"); - continue; - case 'attrs': - var tok = this.advance() - , obj = tok.attrs - , escaped = tok.escaped - , names = Object.keys(obj); - - if (tok.selfClosing) tag.selfClosing = true; - - for (var i = 0, len = names.length; i < len; ++i) { - var name = names[i] - , val = obj[name]; - tag.setAttribute(name, val, escaped[name]); - } - continue; - default: - break out; - } - } - - // check immediate '.' - if ('.' == this.peek().val) { - dot = tag.textOnly = true; - this.advance(); - } - - // (text | code | ':')? - switch (this.peek().type) { - case 'text': - tag.block.push(this.parseText()); - break; - case 'code': - tag.code = this.parseCode(); - break; - case ':': - this.advance(); - tag.block = new nodes.Block; - tag.block.push(this.parseExpr()); - break; - } - - // newline* - while ('newline' == this.peek().type) this.advance(); - - tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); - - // script special-case - if ('script' == tag.name) { - var type = tag.getAttribute('type'); - if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { - tag.textOnly = false; - } - } - - // block? - if ('indent' == this.peek().type) { - if (tag.textOnly) { - this.lexer.pipeless = true; - tag.block = this.parseTextBlock(); - this.lexer.pipeless = false; - } else { - var block = this.block(); - if (tag.block) { - for (var i = 0, len = block.nodes.length; i < len; ++i) { - tag.block.push(block.nodes[i]); - } - } else { - tag.block = block; - } - } - } - - return tag; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/runtime.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/runtime.js deleted file mode 100644 index fb711f5e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/runtime.js +++ /dev/null @@ -1,174 +0,0 @@ - -/*! - * Jade - runtime - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Lame Array.isArray() polyfill for now. - */ - -if (!Array.isArray) { - Array.isArray = function(arr){ - return '[object Array]' == Object.prototype.toString.call(arr); - }; -} - -/** - * Lame Object.keys() polyfill for now. - */ - -if (!Object.keys) { - Object.keys = function(obj){ - var arr = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - arr.push(key); - } - } - return arr; - } -} - -/** - * Merge two attribute objects giving precedence - * to values in object `b`. Classes are special-cased - * allowing for arrays and merging/joining appropriately - * resulting in a string. - * - * @param {Object} a - * @param {Object} b - * @return {Object} a - * @api private - */ - -exports.merge = function merge(a, b) { - var ac = a['class']; - var bc = b['class']; - - if (ac || bc) { - ac = ac || []; - bc = bc || []; - if (!Array.isArray(ac)) ac = [ac]; - if (!Array.isArray(bc)) bc = [bc]; - ac = ac.filter(nulls); - bc = bc.filter(nulls); - a['class'] = ac.concat(bc).join(' '); - } - - for (var key in b) { - if (key != 'class') { - a[key] = b[key]; - } - } - - return a; -}; - -/** - * Filter null `val`s. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function nulls(val) { - return val != null; -} - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} escaped - * @return {String} - * @api private - */ - -exports.attrs = function attrs(obj, escaped){ - var buf = [] - , terse = obj.terse; - - delete obj.terse; - var keys = Object.keys(obj) - , len = keys.length; - - if (len) { - buf.push(''); - for (var i = 0; i < len; ++i) { - var key = keys[i] - , val = obj[key]; - - if ('boolean' == typeof val || null == val) { - if (val) { - terse - ? buf.push(key) - : buf.push(key + '="' + key + '"'); - } - } else if (0 == key.indexOf('data') && 'string' != typeof val) { - buf.push(key + "='" + JSON.stringify(val) + "'"); - } else if ('class' == key && Array.isArray(val)) { - buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); - } else if (escaped && escaped[key]) { - buf.push(key + '="' + exports.escape(val) + '"'); - } else { - buf.push(key + '="' + val + '"'); - } - } - } - - return buf.join(' '); -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function escape(html){ - return String(html) - .replace(/&(?!(\w+|\#\d+);)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -/** - * Re-throw the given `err` in context to the - * the jade in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @api private - */ - -exports.rethrow = function rethrow(err, filename, lineno){ - if (!filename) throw err; - - var context = 3 - , str = require('fs').readFileSync(filename, 'utf8') - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Jade') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/self-closing.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/self-closing.js deleted file mode 100644 index 05487712..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/self-closing.js +++ /dev/null @@ -1,19 +0,0 @@ - -/*! - * Jade - self closing tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'meta' - , 'img' - , 'link' - , 'input' - , 'source' - , 'area' - , 'base' - , 'col' - , 'br' - , 'hr' -]; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/utils.js deleted file mode 100644 index ff46d022..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/lib/utils.js +++ /dev/null @@ -1,49 +0,0 @@ - -/*! - * Jade - utils - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Convert interpolation in the given string to JavaScript. - * - * @param {String} str - * @return {String} - * @api private - */ - -var interpolate = exports.interpolate = function(str){ - return str.replace(/(\\)?([#!]){(.*?)}/g, function(str, escape, flag, code){ - return escape - ? str - : "' + " - + ('!' == flag ? '' : 'escape') - + "((interp = " + code.replace(/\\'/g, "'") - + ") == null ? '' : interp) + '"; - }); -}; - -/** - * Escape single quotes in `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -var escape = exports.escape = function(str) { - return str.replace(/'/g, "\\'"); -}; - -/** - * Interpolate, and escape the given `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -exports.text = function(str){ - return interpolate(escape(str)); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.travis.yml deleted file mode 100644 index f1d0f13c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/History.md deleted file mode 100644 index 4961d2e2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/History.md +++ /dev/null @@ -1,107 +0,0 @@ - -0.6.1 / 2012-06-01 -================== - - * Added: append (yes or no) on confirmation - * Added: allow node.js v0.7.x - -0.6.0 / 2012-04-10 -================== - - * Added `.prompt(obj, callback)` support. Closes #49 - * Added default support to .choose(). Closes #41 - * Fixed the choice example - -0.5.1 / 2011-12-20 -================== - - * Fixed `password()` for recent nodes. Closes #36 - -0.5.0 / 2011-12-04 -================== - - * Added sub-command option support [itay] - -0.4.3 / 2011-12-04 -================== - - * Fixed custom help ordering. Closes #32 - -0.4.2 / 2011-11-24 -================== - - * Added travis support - * Fixed: line-buffered input automatically trimmed. Closes #31 - -0.4.1 / 2011-11-18 -================== - - * Removed listening for "close" on --help - -0.4.0 / 2011-11-15 -================== - - * Added support for `--`. Closes #24 - -0.3.3 / 2011-11-14 -================== - - * Fixed: wait for close event when writing help info [Jerry Hamlet] - -0.3.2 / 2011-11-01 -================== - - * Fixed long flag definitions with values [felixge] - -0.3.1 / 2011-10-31 -================== - - * Changed `--version` short flag to `-V` from `-v` - * Changed `.version()` so it's configurable [felixge] - -0.3.0 / 2011-10-31 -================== - - * Added support for long flags only. Closes #18 - -0.2.1 / 2011-10-24 -================== - - * "node": ">= 0.4.x < 0.7.0". Closes #20 - -0.2.0 / 2011-09-26 -================== - - * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] - -0.1.0 / 2011-08-24 -================== - - * Added support for custom `--help` output - -0.0.5 / 2011-08-18 -================== - - * Changed: when the user enters nothing prompt for password again - * Fixed issue with passwords beginning with numbers [NuckChorris] - -0.0.4 / 2011-08-15 -================== - - * Fixed `Commander#args` - -0.0.3 / 2011-08-15 -================== - - * Added default option value support - -0.0.2 / 2011-08-15 -================== - - * Added mask support to `Command#password(str[, mask], fn)` - * Added `Command#password(str, fn)` - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Makefile deleted file mode 100644 index 00746255..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -TESTS = $(shell find test/test.*.js) - -test: - @./test/run $(TESTS) - -.PHONY: test \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Readme.md deleted file mode 100644 index b8328c37..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/Readme.md +++ /dev/null @@ -1,262 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineappe'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineappe - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .prompt(msg, fn) - - Single-line prompt: - -```js -program.prompt('name: ', function(name){ - console.log('hi %s', name); -}); -``` - - Multi-line prompt: - -```js -program.prompt('description:', function(name){ - console.log('hi %s', name); -}); -``` - - Coercion: - -```js -program.prompt('Age: ', Number, function(age){ - console.log('age: %j', age); -}); -``` - -```js -program.prompt('Birthdate: ', Date, function(date){ - console.log('date: %s', date); -}); -``` - -## .password(msg[, mask], fn) - -Prompt for password without echoing: - -```js -program.password('Password: ', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -Prompt for password with mask char "*": - -```js -program.password('Password: ', '*', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -## .confirm(msg, fn) - - Confirm with the given `msg`: - -```js -program.confirm('continue? ', function(ok){ - console.log(' got %j', ok); -}); -``` - -## .choose(list, fn) - - Let the user choose from a `list`: - -```js -var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - -console.log('Choose the coolest pet:'); -program.choose(list, function(i){ - console.log('you chose %d "%s"', i, list[i]); -}); -``` - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/index.js deleted file mode 100644 index 06ec1e4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/commander'); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/lib/commander.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/lib/commander.js deleted file mode 100644 index 5ba87ebb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/lib/commander.js +++ /dev/null @@ -1,1026 +0,0 @@ - -/*! - * commander - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , path = require('path') - , tty = require('tty') - , basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this.args = []; - this.name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name){ - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - return cmd; -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self.args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self.args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - this.parent.on(this.name, function(args, unknown){ - // Parse any so-far unknown options - unknown = unknown || []; - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - self.args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self.args.length) { - args[self.args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to false - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => true - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null != val && fn) val = fn(val); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // store raw args - this.rawArgs = argv; - - // guess name - if (!this.name) this.name = basename(argv[1]); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - this.args = parsed.args; - return this.parseArgs(this.args, parsed.unknown); -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - if ('-' == arg[0]) return this.optionMissingArgument(option, arg); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || '-' == arg[0]) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this.args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this.args.length ? ' ' + args : ''); - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd.args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return cmd.name - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args - + (cmd.description() - ? '\n' + cmd.description() - : ''); - }).join('\n\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this.name + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Prompt for a `Number`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForNumber = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseNumber(val){ - val = Number(val); - if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); - fn(val); - }); -}; - -/** - * Prompt for a `Date`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForDate = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseDate(val){ - val = new Date(val); - if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); - fn(val); - }); -}; - -/** - * Single-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptSingleLine = function(str, fn){ - if ('function' == typeof arguments[2]) { - return this['promptFor' + (fn.name || fn)](str, arguments[2]); - } - - process.stdout.write(str); - process.stdin.setEncoding('utf8'); - process.stdin.once('data', function(val){ - fn(val.trim()); - }).resume(); -}; - -/** - * Multi-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptMultiLine = function(str, fn){ - var buf = []; - console.log(str); - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function(val){ - if ('\n' == val || '\r\n' == val) { - process.stdin.removeAllListeners('data'); - fn(buf.join('\n')); - } else { - buf.push(val.trimRight()); - } - }).resume(); -}; - -/** - * Prompt `str` and callback `fn(val)` - * - * Commander supports single-line and multi-line prompts. - * To issue a single-line prompt simply add white-space - * to the end of `str`, something like "name: ", whereas - * for a multi-line prompt omit this "description:". - * - * - * Examples: - * - * program.prompt('Username: ', function(name){ - * console.log('hi %s', name); - * }); - * - * program.prompt('Description:', function(desc){ - * console.log('description was "%s"', desc.trim()); - * }); - * - * @param {String|Object} str - * @param {Function} fn - * @api public - */ - -Command.prototype.prompt = function(str, fn){ - var self = this; - - if ('string' == typeof str) { - if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); - this.promptMultiLine(str, fn); - } else { - var keys = Object.keys(str) - , obj = {}; - - function next() { - var key = keys.shift() - , label = str[key]; - - if (!key) return fn(obj); - self.prompt(label, function(val){ - obj[key] = val; - next(); - }); - } - - next(); - } -}; - -/** - * Prompt for password with `str`, `mask` char and callback `fn(val)`. - * - * The mask string defaults to '', aka no output is - * written while typing, you may want to use "*" etc. - * - * Examples: - * - * program.password('Password: ', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * program.password('Password: ', '*', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {String} mask - * @param {Function} fn - * @api public - */ - -Command.prototype.password = function(str, mask, fn){ - var self = this - , buf = ''; - - // default mask - if ('function' == typeof mask) { - fn = mask; - mask = ''; - } - - process.stdin.resume(); - tty.setRawMode(true); - process.stdout.write(str); - - // keypress - process.stdin.on('keypress', function(c, key){ - if (key && 'enter' == key.name) { - console.log(); - process.stdin.removeAllListeners('keypress'); - tty.setRawMode(false); - if (!buf.trim().length) return self.password(str, mask, fn); - fn(buf); - return; - } - - if (key && key.ctrl && 'c' == key.name) { - console.log('%s', buf); - process.exit(); - } - - process.stdout.write(mask); - buf += c; - }).resume(); -}; - -/** - * Confirmation prompt with `str` and callback `fn(bool)` - * - * Examples: - * - * program.confirm('continue? ', function(ok){ - * console.log(' got %j', ok); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {Function} fn - * @api public - */ - - -Command.prototype.confirm = function(str, fn, verbose){ - var self = this; - this.prompt(str, function(ok){ - if (!ok.trim()) { - if (!verbose) str += '(yes or no) '; - return self.confirm(str, fn, true); - } - fn(parseBool(ok)); - }); -}; - -/** - * Choice prompt with `list` of items and callback `fn(index, item)` - * - * Examples: - * - * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - * - * console.log('Choose the coolest pet:'); - * program.choose(list, function(i){ - * console.log('you chose %d "%s"', i, list[i]); - * process.stdin.destroy(); - * }); - * - * @param {Array} list - * @param {Number|Function} index or fn - * @param {Function} fn - * @api public - */ - -Command.prototype.choose = function(list, index, fn){ - var self = this - , hasDefault = 'number' == typeof index; - - if (!hasDefault) { - fn = index; - index = null; - } - - list.forEach(function(item, i){ - if (hasDefault && i == index) { - console.log('* %d) %s', i + 1, item); - } else { - console.log(' %d) %s', i + 1, item); - } - }); - - function again() { - self.prompt(' : ', function(val){ - val = parseInt(val, 10) - 1; - if (hasDefault && isNaN(val)) val = index; - - if (null == list[val]) { - again(); - } else { - fn(val, list[val]); - } - }); - } - - again(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Parse a boolean `str`. - * - * @param {String} str - * @return {Boolean} - * @api private - */ - -function parseBool(str) { - return /^y|yes|ok|true$/i.test(str); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - process.stdout.write(cmd.helpInformation()); - cmd.emit('--help'); - process.exit(0); - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/package.json deleted file mode 100644 index a1368341..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/commander/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_args": [ - [ - "commander@0.6.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/jade" - ] - ], - "_defaultsLoaded": true, - "_engineSupported": true, - "_from": "commander@0.6.1", - "_id": "commander@0.6.1", - "_inCache": true, - "_installable": true, - "_location": "/jade/commander", - "_nodeVersion": "v0.6.12", - "_npmUser": { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - }, - "_npmVersion": "1.1.0-3", - "_phantomChildren": {}, - "_requested": { - "name": "commander", - "raw": "commander@0.6.1", - "rawSpec": "0.6.1", - "scope": null, - "spec": "0.6.1", - "type": "version" - }, - "_requiredBy": [ - "/jade" - ], - "_resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "_shasum": "fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06", - "_shrinkwrap": null, - "_spec": "commander@0.6.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/jade", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "dependencies": {}, - "description": "the complete solution for node.js command-line programs", - "devDependencies": { - "should": ">= 0.0.1" - }, - "directories": {}, - "dist": { - "shasum": "fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06", - "tarball": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" - }, - "engines": { - "node": ">= 0.4.x" - }, - "homepage": "https://github.com/visionmedia/commander.js#readme", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "main": "index", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - } - ], - "name": "commander", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/commander.js.git" - }, - "scripts": { - "test": "make test" - }, - "version": "0.6.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.orig b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.orig deleted file mode 100644 index 9303c347..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.orig +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.rej b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.rej deleted file mode 100644 index 69244ff8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.gitignore.rej +++ /dev/null @@ -1,5 +0,0 @@ ---- /dev/null -+++ .gitignore -@@ -0,0 +1,2 @@ -+node_modules/ -+npm-debug.log \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c347..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1aeb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/README.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/README.markdown deleted file mode 100644 index b4dd75fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/README.markdown +++ /dev/null @@ -1,54 +0,0 @@ -mkdirp -====== - -Like `mkdir -p`, but in node.js! - -example -======= - -pow.js ------- - var mkdirp = require('mkdirp'); - - mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') - }); - -Output - pow! - -And now /tmp/foo/bar/baz exists, huzzah! - -methods -======= - -var mkdirp = require('mkdirp'); - -mkdirp(dir, mode, cb) ---------------------- - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -mkdirp.sync(dir, mode) ----------------------- - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install mkdirp - -license -======= - -MIT/X11 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e6924212..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig deleted file mode 100644 index 77414622..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.orig +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', 0755, function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej deleted file mode 100644 index 81e7f431..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/examples/pow.js.rej +++ /dev/null @@ -1,19 +0,0 @@ ---- examples/pow.js -+++ examples/pow.js -@@ -1,6 +1,15 @@ --var mkdirp = require('mkdirp').mkdirp; -+var mkdirp = require('../').mkdirp, -+ mkdirpSync = require('../').mkdirpSync; - - mkdirp('/tmp/foo/bar/baz', 0755, function (err) { - if (err) console.error(err) - else console.log('pow!') - }); -+ -+try { -+ mkdirpSync('/tmp/bar/foo/baz', 0755); -+ console.log('double pow!'); -+} -+catch (ex) { -+ console.log(ex); -+} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/index.js deleted file mode 100644 index 25f43adf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/index.js +++ /dev/null @@ -1,79 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) return cb(); - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er) { - if (er) cb(er); - else mkdirP(p, mode, cb); - }); - break; - - case 'EEXIST': - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original EEXIST be the failure reason. - if (er2 || !stat.isDirectory()) cb(er) - else cb(); - }); - break; - - default: - cb(er); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode) - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - var err1 = sync(path.dirname(p), mode) - if (err1) throw err1; - else return sync(p, mode); - break; - - case 'EEXIST' : - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0 - } - if (!stat.isDirectory()) throw err0; - else return null; - break; - default : - throw err0 - break; - } - } - - return null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/package.json deleted file mode 100644 index fc5cda74..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - "mkdirp@0.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/jade" - ] - ], - "_defaultsLoaded": true, - "_engineSupported": true, - "_from": "mkdirp@0.3.0", - "_id": "mkdirp@0.3.0", - "_inCache": true, - "_installable": true, - "_location": "/jade/mkdirp", - "_nodeVersion": "v0.4.12", - "_npmUser": { - "email": "mail@substack.net", - "name": "substack" - }, - "_npmVersion": "1.0.106", - "_phantomChildren": {}, - "_requested": { - "name": "mkdirp", - "raw": "mkdirp@0.3.0", - "rawSpec": "0.3.0", - "scope": null, - "spec": "0.3.0", - "type": "version" - }, - "_requiredBy": [ - "/jade" - ], - "_resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "_shasum": "1bbf5ab1ba827af23575143490426455f481fe1e", - "_shrinkwrap": null, - "_spec": "mkdirp@0.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/jade", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, - "dependencies": {}, - "description": "Recursively mkdir, like `mkdir -p`", - "devDependencies": { - "tap": "0.0.x" - }, - "directories": {}, - "dist": { - "shasum": "1bbf5ab1ba827af23575143490426455f481fe1e", - "tarball": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz" - }, - "engines": { - "node": "*" - }, - "homepage": "https://github.com/substack/node-mkdirp#readme", - "keywords": [ - "mkdir", - "directory" - ], - "license": "MIT/X11", - "main": "./index", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "mkdirp", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "0.3.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/chmod.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/clobber.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb70998..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/mkdirp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abbd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm_sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f609..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/race.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a04476..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/rel.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 79858243..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/sync.js deleted file mode 100644 index e0e389de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,27 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - var err = mkdirp.sync(file, 0755); - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask_sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 83cba560..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,27 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - var err = mkdirp.sync(file); - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/package.json deleted file mode 100644 index dcaded53..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_args": [ - [ - "jade@0.26.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/mocha" - ] - ], - "_from": "jade@0.26.3", - "_id": "jade@0.26.3", - "_inCache": true, - "_installable": true, - "_location": "/jade", - "_phantomChildren": {}, - "_requested": { - "name": "jade", - "raw": "jade@0.26.3", - "rawSpec": "0.26.3", - "scope": null, - "spec": "0.26.3", - "type": "version" - }, - "_requiredBy": [ - "/mocha" - ], - "_resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "_shasum": "8f10d7977d8d79f2f6ff862a81b0513ccb25686c", - "_shrinkwrap": null, - "_spec": "jade@0.26.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "bin": { - "jade": "./bin/jade" - }, - "bugs": { - "url": "https://github.com/visionmedia/jade/issues" - }, - "component": { - "scripts": { - "jade": "runtime.js" - } - }, - "dependencies": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "deprecated": "Jade has been renamed to pug, please install the latest version of pug instead of jade", - "description": "Jade template engine", - "devDependencies": { - "less": "*", - "markdown": "*", - "mocha": "*", - "should": "*", - "stylus": "*", - "uglify-js": "*", - "uubench": "*" - }, - "directories": {}, - "dist": { - "shasum": "8f10d7977d8d79f2f6ff862a81b0513ccb25686c", - "tarball": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz" - }, - "homepage": "https://github.com/visionmedia/jade#readme", - "main": "./index.js", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - } - ], - "man": [ - "./jade.1" - ], - "name": "jade", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/jade.git" - }, - "scripts": { - "prepublish": "npm prune" - }, - "version": "0.26.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.js deleted file mode 100644 index 0f549077..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.js +++ /dev/null @@ -1,179 +0,0 @@ - -jade = (function(exports){ -/*! - * Jade - runtime - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Lame Array.isArray() polyfill for now. - */ - -if (!Array.isArray) { - Array.isArray = function(arr){ - return '[object Array]' == Object.prototype.toString.call(arr); - }; -} - -/** - * Lame Object.keys() polyfill for now. - */ - -if (!Object.keys) { - Object.keys = function(obj){ - var arr = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - arr.push(key); - } - } - return arr; - } -} - -/** - * Merge two attribute objects giving precedence - * to values in object `b`. Classes are special-cased - * allowing for arrays and merging/joining appropriately - * resulting in a string. - * - * @param {Object} a - * @param {Object} b - * @return {Object} a - * @api private - */ - -exports.merge = function merge(a, b) { - var ac = a['class']; - var bc = b['class']; - - if (ac || bc) { - ac = ac || []; - bc = bc || []; - if (!Array.isArray(ac)) ac = [ac]; - if (!Array.isArray(bc)) bc = [bc]; - ac = ac.filter(nulls); - bc = bc.filter(nulls); - a['class'] = ac.concat(bc).join(' '); - } - - for (var key in b) { - if (key != 'class') { - a[key] = b[key]; - } - } - - return a; -}; - -/** - * Filter null `val`s. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - -function nulls(val) { - return val != null; -} - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} escaped - * @return {String} - * @api private - */ - -exports.attrs = function attrs(obj, escaped){ - var buf = [] - , terse = obj.terse; - - delete obj.terse; - var keys = Object.keys(obj) - , len = keys.length; - - if (len) { - buf.push(''); - for (var i = 0; i < len; ++i) { - var key = keys[i] - , val = obj[key]; - - if ('boolean' == typeof val || null == val) { - if (val) { - terse - ? buf.push(key) - : buf.push(key + '="' + key + '"'); - } - } else if (0 == key.indexOf('data') && 'string' != typeof val) { - buf.push(key + "='" + JSON.stringify(val) + "'"); - } else if ('class' == key && Array.isArray(val)) { - buf.push(key + '="' + exports.escape(val.join(' ')) + '"'); - } else if (escaped && escaped[key]) { - buf.push(key + '="' + exports.escape(val) + '"'); - } else { - buf.push(key + '="' + val + '"'); - } - } - } - - return buf.join(' '); -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function escape(html){ - return String(html) - .replace(/&(?!(\w+|\#\d+);)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -/** - * Re-throw the given `err` in context to the - * the jade in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @api private - */ - -exports.rethrow = function rethrow(err, filename, lineno){ - if (!filename) throw err; - - var context = 3 - , str = require('fs').readFileSync(filename, 'utf8') - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Jade') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; - - return exports; - -})({}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.min.js deleted file mode 100644 index 1714efb0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/runtime.min.js +++ /dev/null @@ -1 +0,0 @@ -jade=function(exports){Array.isArray||(Array.isArray=function(arr){return"[object Array]"==Object.prototype.toString.call(arr)}),Object.keys||(Object.keys=function(obj){var arr=[];for(var key in obj)obj.hasOwnProperty(key)&&arr.push(key);return arr}),exports.merge=function merge(a,b){var ac=a["class"],bc=b["class"];if(ac||bc)ac=ac||[],bc=bc||[],Array.isArray(ac)||(ac=[ac]),Array.isArray(bc)||(bc=[bc]),ac=ac.filter(nulls),bc=bc.filter(nulls),a["class"]=ac.concat(bc).join(" ");for(var key in b)key!="class"&&(a[key]=b[key]);return a};function nulls(val){return val!=null}return exports.attrs=function attrs(obj,escaped){var buf=[],terse=obj.terse;delete obj.terse;var keys=Object.keys(obj),len=keys.length;if(len){buf.push("");for(var i=0;i/g,">").replace(/"/g,""")},exports.rethrow=function rethrow(err,filename,lineno){if(!filename)throw err;var context=3,str=require("fs").readFileSync(filename,"utf8"),lines=str.split("\n"),start=Math.max(lineno-context,0),end=Math.min(lines.length,lineno+context),context=lines.slice(start,end).map(function(line,i){var curr=i+start+1;return(curr==lineno?" > ":" ")+curr+"| "+line}).join("\n");throw err.path=filename,err.message=(filename||"Jade")+":"+lineno+"\n"+context+"\n\n"+err.message,err},exports}({}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/test.jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/test.jade deleted file mode 100644 index b3a89889..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/test.jade +++ /dev/null @@ -1,7 +0,0 @@ -p. - This is a large - body of text for - this tag. - - Nothing too - exciting. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/head.jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/head.jade deleted file mode 100644 index 85154062..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/head.jade +++ /dev/null @@ -1,5 +0,0 @@ -head - script(src='/jquery.js') - yield - if false - script(src='/jquery.ui.js') diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.jade deleted file mode 100644 index 1032c5fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.jade +++ /dev/null @@ -1,22 +0,0 @@ - -tag = 'p' -foo = 'bar' - -#{tag} value -#{tag}(foo='bar') value -#{foo ? 'a' : 'li'}(something) here - -mixin item(icon) - li - if attributes.href - a(attributes) - img.icon(src=icon) - block - else - span(attributes) - img.icon(src=icon) - block - -ul - +item('contact') Contact - +item(href='/contact') Contact diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.js deleted file mode 100644 index 226e8c01..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/index.js +++ /dev/null @@ -1,11 +0,0 @@ - -/** - * Module dependencies. - */ - -var jade = require('../'); - -jade.renderFile('testing/index.jade', { pretty: true, debug: true, compileDebug: false }, function(err, str){ - if (err) throw err; - console.log(str); -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/layout.jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/layout.jade deleted file mode 100644 index 6923cf15..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/layout.jade +++ /dev/null @@ -1,6 +0,0 @@ -html - include head - script(src='/caustic.js') - script(src='/app.js') - body - block content \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.jade b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.jade deleted file mode 100644 index 3c636b7c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.jade +++ /dev/null @@ -1,7 +0,0 @@ -h1 Tobi -p Is a ferret - -ul - li: a foo - li: a bar - li: a baz \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.js deleted file mode 100644 index 2ecc45ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jade/testing/user.js +++ /dev/null @@ -1,27 +0,0 @@ -function anonymous(locals, attrs, escape, rethrow) { -var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow; -var __jade = [{ lineno: 1, filename: "testing/user.jade" }]; -try { -var buf = []; -with (locals || {}) { -var interp; -__jade.unshift({ lineno: 1, filename: __jade[0].filename }); -__jade.unshift({ lineno: 1, filename: __jade[0].filename }); -buf.push('

    Tobi'); -__jade.unshift({ lineno: undefined, filename: __jade[0].filename }); -__jade.shift(); -buf.push('

    '); -__jade.shift(); -__jade.unshift({ lineno: 2, filename: __jade[0].filename }); -buf.push('

    Is a ferret'); -__jade.unshift({ lineno: undefined, filename: __jade[0].filename }); -__jade.shift(); -buf.push('

    '); -__jade.shift(); -__jade.shift(); -} -return buf.join(""); -} catch (err) { - rethrow(err, __jade[0].filename, __jade[0].lineno); -} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.npmignore deleted file mode 100644 index 877830c0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.npmignore +++ /dev/null @@ -1,11 +0,0 @@ -# Editor, IDE and dev environment stuff -*~ -.project -.settings - -# Build files and directories -/coverage -/doc/api -/build/ -/test/ -/jodid25519-*.tgz diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.travis.yml deleted file mode 100644 index 92a990f6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.11" -branches: - only: - - master diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/AUTHORS.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/AUTHORS.md deleted file mode 100644 index 0c170973..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/AUTHORS.md +++ /dev/null @@ -1,3 +0,0 @@ -* Michele Bini (original Curve25519 core code: curve25519.js) -* Ron Garret (original Ed25519 code: fast-djbec.js) -* Guy Kloss (package refactoring, unit testing) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/LICENSE deleted file mode 100644 index c722113b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Ron Garret -Copyright (c) 2007, 2013, 2014 Michele Bini -Copyright (c) 2014 Mega Limited - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/README.md deleted file mode 100644 index 5335b2de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/README.md +++ /dev/null @@ -1,51 +0,0 @@ -Jodid25519 [![Build Status](https://secure.travis-ci.org/meganz/jodid25519.png)](https://travis-ci.org/meganz/jodid25519) -=================================================================================================================================== - -Javascript implementation of the Curve25519 and Ed25519 elliptic cryptography functions by Daniel J. Bernstein. - -For the API, please consult the generated documentation under doc/ (you can run `make` to generate it). - -To run the tests do the following on the console from the project's root directory: - - $ npm install - $ make test - - -Contributors ------------- - -If you are one of the contributors and want to add yourself or change the information here, please do submit a pull request. Contributors appear in no particular order. - -### For the Curve25519 submodule - -* [Graydon Hoare](https://github.com/graydon): suggested clamping the private key by default for increased safety and uniformity with other implementations. -* [liliakai](https://github.com/liliakai): spotted an unused argument in some of the functions -* [RyanC](https://github.com/ryancdotorg): removed dependency of a function to the Javascript Math library -* [Guy Kloss](https://github.com/pohutukawa): performance improvements through bit-shift operations, performance and conformance testing, documentation, compatibility with the npm package ecosystem, and more -* [Michele Bini](https://github.com/rev22): originally wrote the Javascript implementation - - -Copyright and MIT licensing ---------------------------- - -* Copyright (c) 2012 Ron Garret -* Copyright (c) 2007, 2013, 2014 Michele Bini -* Copyright (c) 2014 Mega Limited - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.0 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.0 deleted file mode 100644 index 55ffcc47..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.0 +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Curve 25519-based cryptography collection. - * - * EC Diffie-Hellman (ECDH) based on Curve25519 and digital signatures (EdDSA) - * based on Ed25519. - * - * Copyright (c) 2012 Ron Garret - * Copyright (c) 2007, 2013, 2014 Michele Bini - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * You should have received a copy of the license along with this program. - */ -// See https://github.com/jrburke/almond#exporting-a-public-api -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // Allow using this built library as an AMD module - // in another project. That other project will only - // see this AMD call, not the internal modules in - // the closure below. - define([], factory); - } else if (typeof module === 'object' && module.exports) { - // Allow using this built library as a CommonJS module - module.exports = factory(); - } else { - // Browser globals case. Just assign the - // result to a property on the global. - root.jodid25519 = factory(); - } -}(this, function () { - if (typeof module === 'object' && module.exports) { - // If we're running under CommonJS, our dependencies get confused and - // each clobber module.exports which leads to bad behaviour because - // almond does asynchronous loading. So just pretend we're in the - // browser globals case, and make them write to those values instead. - // TODO: ditch requirejs/almond and use browserify or something. - var __oldModule = module; - var __oldExports = exports; - var window = global; - module = undefined; - exports = undefined; - } diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.1 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.1 deleted file mode 100644 index cdb5e672..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/almond.1 +++ /dev/null @@ -1,13 +0,0 @@ - if (typeof module === 'object' && module.exports) { - // Restore CommonJS exports once our dependencies have all finished - // loading. - module = __oldModule; - exports = __oldExports; - } - // The modules for your project will be inlined above - // this snippet. Ask almond to synchronously require the - // module value for 'main' here and return it as the - // value to use for the public API for the built file. - return require('jodid25519'); -})); -// See https://github.com/jrburke/almond#exporting-a-public-api diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/index.js deleted file mode 100644 index 87098398..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/index.js +++ /dev/null @@ -1,35 +0,0 @@ -"use strict"; - -/* - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss - * - * You should have received a copy of the license along with this program. - */ - -var dh = require('./lib/dh'); -var eddsa = require('./lib/eddsa'); -var curve255 = require('./lib/curve255'); -var utils = require('./lib/utils'); - - /** - * @exports jodid25519 - * Curve 25519-based cryptography collection. - * - * @description - * EC Diffie-Hellman (ECDH) based on Curve25519 and digital signatures - * (EdDSA) based on Ed25519. - */ - var ns = {}; - - /** Module version indicator as string (format: [major.minor.patch]). */ - ns.VERSION = '0.7.1'; - - ns.dh = dh; - ns.eddsa = eddsa; - ns.curve255 = curve255; - ns.utils = utils; - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/jsdoc.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/jsdoc.json deleted file mode 100644 index 21eba9bd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/jsdoc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "templates": { - "applicationName": "jodid25519 Library", - "disqus": "", - "googleAnalytics": "", - "openGraph": { - "title": "jodid25519 Library", - "type": "website", - "image": "", - "site_name": "", - "url": "" - }, - "meta": { - "title": "jodid25519 Library", - "description": "", - "keyword": "" - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/core.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/core.js deleted file mode 100644 index f78fd74d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/core.js +++ /dev/null @@ -1,481 +0,0 @@ -"use strict"; -/** - * @fileOverview - * Core operations on curve 25519 required for the higher level modules. - */ - -/* - * Copyright (c) 2007, 2013, 2014 Michele Bini - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss, Michele Bini - * - * You should have received a copy of the license along with this program. - */ - -var crypto = require('crypto'); - - /** - * @exports jodid25519/core - * Core operations on curve 25519 required for the higher level modules. - * - * @description - * Core operations on curve 25519 required for the higher level modules. - * - *

    - * This core code is extracted from Michele Bini's curve255.js implementation, - * which is used as a base for Curve25519 ECDH and Ed25519 EdDSA operations. - *

    - */ - var ns = {}; - - function _setbit(n, c, v) { - var i = c >> 4; - var a = n[i]; - a = a + (1 << (c & 0xf)) * v; - n[i] = a; - } - - function _getbit(n, c) { - return (n[c >> 4] >> (c & 0xf)) & 1; - } - - function _ZERO() { - return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - - function _ONE() { - return [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - - // Basepoint. - function _BASE() { - return [9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } - - // return -1, 0, +1 when a is less than, equal, or greater than b - function _bigintcmp(a, b) { - // The following code is a bit tricky to avoid code branching - var c, abs_r, mask; - var r = 0; - for (c = 15; c >= 0; c--) { - var x = a[c]; - var y = b[c]; - r = r + (x - y) * (1 - r * r); - // http://graphics.stanford.edu/~seander/bithacks.html#IntegerAbs - // correct for [-294967295, 294967295] - mask = r >> 31; - abs_r = (r + mask) ^ mask; - // http://stackoverflow.com/questions/596467/how-do-i-convert-a-number-to-an-integer-in-javascript - // this rounds towards zero - r = ~~((r << 1) / (abs_r + 1)); - } - return r; - } - - function _bigintadd(a, b) { - var r = []; - var v; - r[0] = (v = a[0] + b[0]) & 0xffff; - r[1] = (v = (v >>> 16) + a[1] + b[1]) & 0xffff; - r[2] = (v = (v >>> 16) + a[2] + b[2]) & 0xffff; - r[3] = (v = (v >>> 16) + a[3] + b[3]) & 0xffff; - r[4] = (v = (v >>> 16) + a[4] + b[4]) & 0xffff; - r[5] = (v = (v >>> 16) + a[5] + b[5]) & 0xffff; - r[6] = (v = (v >>> 16) + a[6] + b[6]) & 0xffff; - r[7] = (v = (v >>> 16) + a[7] + b[7]) & 0xffff; - r[8] = (v = (v >>> 16) + a[8] + b[8]) & 0xffff; - r[9] = (v = (v >>> 16) + a[9] + b[9]) & 0xffff; - r[10] = (v = (v >>> 16) + a[10] + b[10]) & 0xffff; - r[11] = (v = (v >>> 16) + a[11] + b[11]) & 0xffff; - r[12] = (v = (v >>> 16) + a[12] + b[12]) & 0xffff; - r[13] = (v = (v >>> 16) + a[13] + b[13]) & 0xffff; - r[14] = (v = (v >>> 16) + a[14] + b[14]) & 0xffff; - r[15] = (v >>> 16) + a[15] + b[15]; - return r; - } - - function _bigintsub(a, b) { - var r = []; - var v; - r[0] = (v = 0x80000 + a[0] - b[0]) & 0xffff; - r[1] = (v = (v >>> 16) + 0x7fff8 + a[1] - b[1]) & 0xffff; - r[2] = (v = (v >>> 16) + 0x7fff8 + a[2] - b[2]) & 0xffff; - r[3] = (v = (v >>> 16) + 0x7fff8 + a[3] - b[3]) & 0xffff; - r[4] = (v = (v >>> 16) + 0x7fff8 + a[4] - b[4]) & 0xffff; - r[5] = (v = (v >>> 16) + 0x7fff8 + a[5] - b[5]) & 0xffff; - r[6] = (v = (v >>> 16) + 0x7fff8 + a[6] - b[6]) & 0xffff; - r[7] = (v = (v >>> 16) + 0x7fff8 + a[7] - b[7]) & 0xffff; - r[8] = (v = (v >>> 16) + 0x7fff8 + a[8] - b[8]) & 0xffff; - r[9] = (v = (v >>> 16) + 0x7fff8 + a[9] - b[9]) & 0xffff; - r[10] = (v = (v >>> 16) + 0x7fff8 + a[10] - b[10]) & 0xffff; - r[11] = (v = (v >>> 16) + 0x7fff8 + a[11] - b[11]) & 0xffff; - r[12] = (v = (v >>> 16) + 0x7fff8 + a[12] - b[12]) & 0xffff; - r[13] = (v = (v >>> 16) + 0x7fff8 + a[13] - b[13]) & 0xffff; - r[14] = (v = (v >>> 16) + 0x7fff8 + a[14] - b[14]) & 0xffff; - r[15] = (v >>> 16) - 8 + a[15] - b[15]; - return r; - } - - function _sqr8h(a7, a6, a5, a4, a3, a2, a1, a0) { - // 'division by 0x10000' can not be replaced by '>> 16' because - // more than 32 bits of precision are needed similarly - // 'multiplication by 2' cannot be replaced by '<< 1' - var r = []; - var v; - r[0] = (v = a0 * a0) & 0xffff; - r[1] = (v = (0 | (v / 0x10000)) + 2 * a0 * a1) & 0xffff; - r[2] = (v = (0 | (v / 0x10000)) + 2 * a0 * a2 + a1 * a1) & 0xffff; - r[3] = (v = (0 | (v / 0x10000)) + 2 * a0 * a3 + 2 * a1 * a2) & 0xffff; - r[4] = (v = (0 | (v / 0x10000)) + 2 * a0 * a4 + 2 * a1 * a3 + a2 - * a2) & 0xffff; - r[5] = (v = (0 | (v / 0x10000)) + 2 * a0 * a5 + 2 * a1 * a4 + 2 - * a2 * a3) & 0xffff; - r[6] = (v = (0 | (v / 0x10000)) + 2 * a0 * a6 + 2 * a1 * a5 + 2 - * a2 * a4 + a3 * a3) & 0xffff; - r[7] = (v = (0 | (v / 0x10000)) + 2 * a0 * a7 + 2 * a1 * a6 + 2 - * a2 * a5 + 2 * a3 * a4) & 0xffff; - r[8] = (v = (0 | (v / 0x10000)) + 2 * a1 * a7 + 2 * a2 * a6 + 2 - * a3 * a5 + a4 * a4) & 0xffff; - r[9] = (v = (0 | (v / 0x10000)) + 2 * a2 * a7 + 2 * a3 * a6 + 2 - * a4 * a5) & 0xffff; - r[10] = (v = (0 | (v / 0x10000)) + 2 * a3 * a7 + 2 * a4 * a6 - + a5 * a5) & 0xffff; - r[11] = (v = (0 | (v / 0x10000)) + 2 * a4 * a7 + 2 * a5 * a6) & 0xffff; - r[12] = (v = (0 | (v / 0x10000)) + 2 * a5 * a7 + a6 * a6) & 0xffff; - r[13] = (v = (0 | (v / 0x10000)) + 2 * a6 * a7) & 0xffff; - r[14] = (v = (0 | (v / 0x10000)) + a7 * a7) & 0xffff; - r[15] = 0 | (v / 0x10000); - return r; - } - - function _sqrmodp(a) { - var x = _sqr8h(a[15], a[14], a[13], a[12], a[11], a[10], a[9], - a[8]); - var z = _sqr8h(a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0]); - var y = _sqr8h(a[15] + a[7], a[14] + a[6], a[13] + a[5], a[12] - + a[4], - a[11] + a[3], a[10] + a[2], a[9] + a[1], a[8] - + a[0]); - var r = []; - var v; - r[0] = (v = 0x800000 + z[0] + (y[8] - x[8] - z[8] + x[0] - 0x80) - * 38) & 0xffff; - r[1] = (v = 0x7fff80 + (v >>> 16) + z[1] - + (y[9] - x[9] - z[9] + x[1]) * 38) & 0xffff; - r[2] = (v = 0x7fff80 + (v >>> 16) + z[2] - + (y[10] - x[10] - z[10] + x[2]) * 38) & 0xffff; - r[3] = (v = 0x7fff80 + (v >>> 16) + z[3] - + (y[11] - x[11] - z[11] + x[3]) * 38) & 0xffff; - r[4] = (v = 0x7fff80 + (v >>> 16) + z[4] - + (y[12] - x[12] - z[12] + x[4]) * 38) & 0xffff; - r[5] = (v = 0x7fff80 + (v >>> 16) + z[5] - + (y[13] - x[13] - z[13] + x[5]) * 38) & 0xffff; - r[6] = (v = 0x7fff80 + (v >>> 16) + z[6] - + (y[14] - x[14] - z[14] + x[6]) * 38) & 0xffff; - r[7] = (v = 0x7fff80 + (v >>> 16) + z[7] - + (y[15] - x[15] - z[15] + x[7]) * 38) & 0xffff; - r[8] = (v = 0x7fff80 + (v >>> 16) + z[8] + y[0] - x[0] - z[0] - + x[8] * 38) & 0xffff; - r[9] = (v = 0x7fff80 + (v >>> 16) + z[9] + y[1] - x[1] - z[1] - + x[9] * 38) & 0xffff; - r[10] = (v = 0x7fff80 + (v >>> 16) + z[10] + y[2] - x[2] - z[2] - + x[10] * 38) & 0xffff; - r[11] = (v = 0x7fff80 + (v >>> 16) + z[11] + y[3] - x[3] - z[3] - + x[11] * 38) & 0xffff; - r[12] = (v = 0x7fff80 + (v >>> 16) + z[12] + y[4] - x[4] - z[4] - + x[12] * 38) & 0xffff; - r[13] = (v = 0x7fff80 + (v >>> 16) + z[13] + y[5] - x[5] - z[5] - + x[13] * 38) & 0xffff; - r[14] = (v = 0x7fff80 + (v >>> 16) + z[14] + y[6] - x[6] - z[6] - + x[14] * 38) & 0xffff; - r[15] = 0x7fff80 + (v >>> 16) + z[15] + y[7] - x[7] - z[7] - + x[15] * 38; - _reduce(r); - return r; - } - - function _mul8h(a7, a6, a5, a4, a3, a2, a1, a0, b7, b6, b5, b4, b3, - b2, b1, b0) { - // 'division by 0x10000' can not be replaced by '>> 16' because - // more than 32 bits of precision are needed - var r = []; - var v; - r[0] = (v = a0 * b0) & 0xffff; - r[1] = (v = (0 | (v / 0x10000)) + a0 * b1 + a1 * b0) & 0xffff; - r[2] = (v = (0 | (v / 0x10000)) + a0 * b2 + a1 * b1 + a2 * b0) & 0xffff; - r[3] = (v = (0 | (v / 0x10000)) + a0 * b3 + a1 * b2 + a2 * b1 - + a3 * b0) & 0xffff; - r[4] = (v = (0 | (v / 0x10000)) + a0 * b4 + a1 * b3 + a2 * b2 - + a3 * b1 + a4 * b0) & 0xffff; - r[5] = (v = (0 | (v / 0x10000)) + a0 * b5 + a1 * b4 + a2 * b3 - + a3 * b2 + a4 * b1 + a5 * b0) & 0xffff; - r[6] = (v = (0 | (v / 0x10000)) + a0 * b6 + a1 * b5 + a2 * b4 - + a3 * b3 + a4 * b2 + a5 * b1 + a6 * b0) & 0xffff; - r[7] = (v = (0 | (v / 0x10000)) + a0 * b7 + a1 * b6 + a2 * b5 - + a3 * b4 + a4 * b3 + a5 * b2 + a6 * b1 + a7 * b0) & 0xffff; - r[8] = (v = (0 | (v / 0x10000)) + a1 * b7 + a2 * b6 + a3 * b5 - + a4 * b4 + a5 * b3 + a6 * b2 + a7 * b1) & 0xffff; - r[9] = (v = (0 | (v / 0x10000)) + a2 * b7 + a3 * b6 + a4 * b5 - + a5 * b4 + a6 * b3 + a7 * b2) & 0xffff; - r[10] = (v = (0 | (v / 0x10000)) + a3 * b7 + a4 * b6 + a5 * b5 - + a6 * b4 + a7 * b3) & 0xffff; - r[11] = (v = (0 | (v / 0x10000)) + a4 * b7 + a5 * b6 + a6 * b5 - + a7 * b4) & 0xffff; - r[12] = (v = (0 | (v / 0x10000)) + a5 * b7 + a6 * b6 + a7 * b5) & 0xffff; - r[13] = (v = (0 | (v / 0x10000)) + a6 * b7 + a7 * b6) & 0xffff; - r[14] = (v = (0 | (v / 0x10000)) + a7 * b7) & 0xffff; - r[15] = (0 | (v / 0x10000)); - return r; - } - - function _mulmodp(a, b) { - // Karatsuba multiplication scheme: x*y = (b^2+b)*x1*y1 - - // b*(x1-x0)*(y1-y0) + (b+1)*x0*y0 - var x = _mul8h(a[15], a[14], a[13], a[12], a[11], a[10], a[9], - a[8], b[15], b[14], b[13], b[12], b[11], b[10], - b[9], b[8]); - var z = _mul8h(a[7], a[6], a[5], a[4], a[3], a[2], a[1], a[0], - b[7], b[6], b[5], b[4], b[3], b[2], b[1], b[0]); - var y = _mul8h(a[15] + a[7], a[14] + a[6], a[13] + a[5], a[12] - + a[4], - a[11] + a[3], a[10] + a[2], a[9] + a[1], a[8] - + a[0], - b[15] + b[7], b[14] + b[6], b[13] + b[5], b[12] - + b[4], - b[11] + b[3], b[10] + b[2], b[9] + b[1], b[8] - + b[0]); - var r = []; - var v; - r[0] = (v = 0x800000 + z[0] + (y[8] - x[8] - z[8] + x[0] - 0x80) - * 38) & 0xffff; - r[1] = (v = 0x7fff80 + (v >>> 16) + z[1] - + (y[9] - x[9] - z[9] + x[1]) * 38) & 0xffff; - r[2] = (v = 0x7fff80 + (v >>> 16) + z[2] - + (y[10] - x[10] - z[10] + x[2]) * 38) & 0xffff; - r[3] = (v = 0x7fff80 + (v >>> 16) + z[3] - + (y[11] - x[11] - z[11] + x[3]) * 38) & 0xffff; - r[4] = (v = 0x7fff80 + (v >>> 16) + z[4] - + (y[12] - x[12] - z[12] + x[4]) * 38) & 0xffff; - r[5] = (v = 0x7fff80 + (v >>> 16) + z[5] - + (y[13] - x[13] - z[13] + x[5]) * 38) & 0xffff; - r[6] = (v = 0x7fff80 + (v >>> 16) + z[6] - + (y[14] - x[14] - z[14] + x[6]) * 38) & 0xffff; - r[7] = (v = 0x7fff80 + (v >>> 16) + z[7] - + (y[15] - x[15] - z[15] + x[7]) * 38) & 0xffff; - r[8] = (v = 0x7fff80 + (v >>> 16) + z[8] + y[0] - x[0] - z[0] - + x[8] * 38) & 0xffff; - r[9] = (v = 0x7fff80 + (v >>> 16) + z[9] + y[1] - x[1] - z[1] - + x[9] * 38) & 0xffff; - r[10] = (v = 0x7fff80 + (v >>> 16) + z[10] + y[2] - x[2] - z[2] - + x[10] * 38) & 0xffff; - r[11] = (v = 0x7fff80 + (v >>> 16) + z[11] + y[3] - x[3] - z[3] - + x[11] * 38) & 0xffff; - r[12] = (v = 0x7fff80 + (v >>> 16) + z[12] + y[4] - x[4] - z[4] - + x[12] * 38) & 0xffff; - r[13] = (v = 0x7fff80 + (v >>> 16) + z[13] + y[5] - x[5] - z[5] - + x[13] * 38) & 0xffff; - r[14] = (v = 0x7fff80 + (v >>> 16) + z[14] + y[6] - x[6] - z[6] - + x[14] * 38) & 0xffff; - r[15] = 0x7fff80 + (v >>> 16) + z[15] + y[7] - x[7] - z[7] - + x[15] * 38; - _reduce(r); - return r; - } - - function _reduce(arr) { - var aCopy = arr.slice(0); - var choice = [arr, aCopy]; - var v = arr[15]; - // Use the dummy copy instead of just returning to be more constant time. - var a = choice[(v < 0x8000) & 1]; - a[15] = v & 0x7fff; - // >32-bits of precision are required here so '/ 0x8000' can not be - // replaced by the arithmetic equivalent '>>> 15' - v = (0 | (v / 0x8000)) * 19; - a[0] = (v += a[0]) & 0xffff; - v = v >>> 16; - a[1] = (v += a[1]) & 0xffff; - v = v >>> 16; - a[2] = (v += a[2]) & 0xffff; - v = v >>> 16; - a[3] = (v += a[3]) & 0xffff; - v = v >>> 16; - a[4] = (v += a[4]) & 0xffff; - v = v >>> 16; - a[5] = (v += a[5]) & 0xffff; - v = v >>> 16; - a[6] = (v += a[6]) & 0xffff; - v = v >>> 16; - a[7] = (v += a[7]) & 0xffff; - v = v >>> 16; - a[8] = (v += a[8]) & 0xffff; - v = v >>> 16; - a[9] = (v += a[9]) & 0xffff; - v = v >>> 16; - a[10] = (v += a[10]) & 0xffff; - v = v >>> 16; - a[11] = (v += a[11]) & 0xffff; - v = v >>> 16; - a[12] = (v += a[12]) & 0xffff; - v = v >>> 16; - a[13] = (v += a[13]) & 0xffff; - v = v >>> 16; - a[14] = (v += a[14]) & 0xffff; - v = v >>> 16; - a[15] += v; - } - - function _addmodp(a, b) { - var r = []; - var v; - r[0] = (v = ((0 | (a[15] >>> 15)) + (0 | (b[15] >>> 15))) * 19 - + a[0] + b[0]) & 0xffff; - r[1] = (v = (v >>> 16) + a[1] + b[1]) & 0xffff; - r[2] = (v = (v >>> 16) + a[2] + b[2]) & 0xffff; - r[3] = (v = (v >>> 16) + a[3] + b[3]) & 0xffff; - r[4] = (v = (v >>> 16) + a[4] + b[4]) & 0xffff; - r[5] = (v = (v >>> 16) + a[5] + b[5]) & 0xffff; - r[6] = (v = (v >>> 16) + a[6] + b[6]) & 0xffff; - r[7] = (v = (v >>> 16) + a[7] + b[7]) & 0xffff; - r[8] = (v = (v >>> 16) + a[8] + b[8]) & 0xffff; - r[9] = (v = (v >>> 16) + a[9] + b[9]) & 0xffff; - r[10] = (v = (v >>> 16) + a[10] + b[10]) & 0xffff; - r[11] = (v = (v >>> 16) + a[11] + b[11]) & 0xffff; - r[12] = (v = (v >>> 16) + a[12] + b[12]) & 0xffff; - r[13] = (v = (v >>> 16) + a[13] + b[13]) & 0xffff; - r[14] = (v = (v >>> 16) + a[14] + b[14]) & 0xffff; - r[15] = (v >>> 16) + (a[15] & 0x7fff) + (b[15] & 0x7fff); - return r; - } - - function _submodp(a, b) { - var r = []; - var v; - r[0] = (v = 0x80000 - + ((0 | (a[15] >>> 15)) - (0 | (b[15] >>> 15)) - 1) - * 19 + a[0] - b[0]) & 0xffff; - r[1] = (v = (v >>> 16) + 0x7fff8 + a[1] - b[1]) & 0xffff; - r[2] = (v = (v >>> 16) + 0x7fff8 + a[2] - b[2]) & 0xffff; - r[3] = (v = (v >>> 16) + 0x7fff8 + a[3] - b[3]) & 0xffff; - r[4] = (v = (v >>> 16) + 0x7fff8 + a[4] - b[4]) & 0xffff; - r[5] = (v = (v >>> 16) + 0x7fff8 + a[5] - b[5]) & 0xffff; - r[6] = (v = (v >>> 16) + 0x7fff8 + a[6] - b[6]) & 0xffff; - r[7] = (v = (v >>> 16) + 0x7fff8 + a[7] - b[7]) & 0xffff; - r[8] = (v = (v >>> 16) + 0x7fff8 + a[8] - b[8]) & 0xffff; - r[9] = (v = (v >>> 16) + 0x7fff8 + a[9] - b[9]) & 0xffff; - r[10] = (v = (v >>> 16) + 0x7fff8 + a[10] - b[10]) & 0xffff; - r[11] = (v = (v >>> 16) + 0x7fff8 + a[11] - b[11]) & 0xffff; - r[12] = (v = (v >>> 16) + 0x7fff8 + a[12] - b[12]) & 0xffff; - r[13] = (v = (v >>> 16) + 0x7fff8 + a[13] - b[13]) & 0xffff; - r[14] = (v = (v >>> 16) + 0x7fff8 + a[14] - b[14]) & 0xffff; - r[15] = (v >>> 16) + 0x7ff8 + (a[15] & 0x7fff) - - (b[15] & 0x7fff); - return r; - } - - function _invmodp(a) { - var c = a; - var i = 250; - while (--i) { - a = _sqrmodp(a); - a = _mulmodp(a, c); - } - a = _sqrmodp(a); - a = _sqrmodp(a); - a = _mulmodp(a, c); - a = _sqrmodp(a); - a = _sqrmodp(a); - a = _mulmodp(a, c); - a = _sqrmodp(a); - a = _mulmodp(a, c); - return a; - } - - function _mulasmall(a) { - // 'division by 0x10000' can not be replaced by '>> 16' because - // more than 32 bits of precision are needed - var m = 121665; - var r = []; - var v; - r[0] = (v = a[0] * m) & 0xffff; - r[1] = (v = (0 | (v / 0x10000)) + a[1] * m) & 0xffff; - r[2] = (v = (0 | (v / 0x10000)) + a[2] * m) & 0xffff; - r[3] = (v = (0 | (v / 0x10000)) + a[3] * m) & 0xffff; - r[4] = (v = (0 | (v / 0x10000)) + a[4] * m) & 0xffff; - r[5] = (v = (0 | (v / 0x10000)) + a[5] * m) & 0xffff; - r[6] = (v = (0 | (v / 0x10000)) + a[6] * m) & 0xffff; - r[7] = (v = (0 | (v / 0x10000)) + a[7] * m) & 0xffff; - r[8] = (v = (0 | (v / 0x10000)) + a[8] * m) & 0xffff; - r[9] = (v = (0 | (v / 0x10000)) + a[9] * m) & 0xffff; - r[10] = (v = (0 | (v / 0x10000)) + a[10] * m) & 0xffff; - r[11] = (v = (0 | (v / 0x10000)) + a[11] * m) & 0xffff; - r[12] = (v = (0 | (v / 0x10000)) + a[12] * m) & 0xffff; - r[13] = (v = (0 | (v / 0x10000)) + a[13] * m) & 0xffff; - r[14] = (v = (0 | (v / 0x10000)) + a[14] * m) & 0xffff; - r[15] = (0 | (v / 0x10000)) + a[15] * m; - _reduce(r); - return r; - } - - function _dbl(x, z) { - var x_2, z_2, m, n, o; - m = _sqrmodp(_addmodp(x, z)); - n = _sqrmodp(_submodp(x, z)); - o = _submodp(m, n); - x_2 = _mulmodp(n, m); - z_2 = _mulmodp(_addmodp(_mulasmall(o), m), o); - return [x_2, z_2]; - } - - function _sum(x, z, x_p, z_p, x_1) { - var x_3, z_3, p, q; - p = _mulmodp(_submodp(x, z), _addmodp(x_p, z_p)); - q = _mulmodp(_addmodp(x, z), _submodp(x_p, z_p)); - x_3 = _sqrmodp(_addmodp(p, q)); - z_3 = _mulmodp(_sqrmodp(_submodp(p, q)), x_1); - return [x_3, z_3]; - } - - function _generateKey(curve25519) { - var buffer = crypto.randomBytes(32); - - // For Curve25519 DH keys, we need to apply some bit mask on generated - // keys: - // * clear bit 0, 1, 2 of first byte - // * clear bit 7 of last byte - // * set bit 6 of last byte - if (curve25519 === true) { - buffer[0] &= 0xf8; - buffer[31] = (buffer[31] & 0x7f) | 0x40; - } - var result = []; - for (var i = 0; i < buffer.length; i++) { - result.push(String.fromCharCode(buffer[i])); - } - return result.join(''); - } - - // Expose some functions to the outside through this name space. - // Note: This is not part of the public API. - ns.getbit = _getbit; - ns.setbit = _setbit; - ns.addmodp = _addmodp; - ns.invmodp = _invmodp; - ns.mulmodp = _mulmodp; - ns.reduce = _reduce; - ns.dbl = _dbl; - ns.sum = _sum; - ns.ZERO = _ZERO; - ns.ONE = _ONE; - ns.BASE = _BASE; - ns.bigintadd = _bigintadd; - ns.bigintsub = _bigintsub; - ns.bigintcmp = _bigintcmp; - ns.mulmodp = _mulmodp; - ns.sqrmodp = _sqrmodp; - ns.generateKey = _generateKey; - - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/curve255.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/curve255.js deleted file mode 100644 index 3978b46e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/curve255.js +++ /dev/null @@ -1,221 +0,0 @@ -"use strict"; -/** - * @fileOverview - * Core operations on curve 25519 required for the higher level modules. - */ - -/* - * Copyright (c) 2007, 2013, 2014 Michele Bini - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss, Michele Bini - * - * You should have received a copy of the license along with this program. - */ - -var core = require('./core'); -var utils = require('./utils'); - - /** - * @exports jodid25519/curve255 - * Legacy compatibility module for Michele Bini's previous curve255.js. - * - * @description - * Legacy compatibility module for Michele Bini's previous curve255.js. - * - *

    - * This code presents an API with all key formats as previously available - * from Michele Bini's curve255.js implementation. - *

    - */ - var ns = {}; - - function curve25519_raw(f, c) { - var a, x_1, q; - - x_1 = c; - a = core.dbl(x_1, core.ONE()); - q = [x_1, core.ONE()]; - - var n = 255; - - while (core.getbit(f, n) == 0) { - n--; - // For correct constant-time operation, bit 255 should always be - // set to 1 so the following 'while' loop is never entered. - if (n < 0) { - return core.ZERO(); - } - } - n--; - - var aq = [a, q]; - - while (n >= 0) { - var r, s; - var b = core.getbit(f, n); - r = core.sum(aq[0][0], aq[0][1], aq[1][0], aq[1][1], x_1); - s = core.dbl(aq[1 - b][0], aq[1 - b][1]); - aq[1 - b] = s; - aq[b] = r; - n--; - } - q = aq[1]; - - q[1] = core.invmodp(q[1]); - q[0] = core.mulmodp(q[0], q[1]); - core.reduce(q[0]); - return q[0]; - } - - function curve25519b32(a, b) { - return _base32encode(curve25519(_base32decode(a), - _base32decode(b))); - } - - function curve25519(f, c) { - if (!c) { - c = core.BASE(); - } - f[0] &= 0xFFF8; - f[15] = (f[15] & 0x7FFF) | 0x4000; - return curve25519_raw(f, c); - } - - function _hexEncodeVector(k) { - var hexKey = utils.hexEncode(k); - // Pad with '0' at the front. - hexKey = new Array(64 + 1 - hexKey.length).join('0') + hexKey; - // Invert bytes. - return hexKey.split(/(..)/).reverse().join(''); - } - - function _hexDecodeVector(v) { - // assert(length(x) == 64); - // Invert bytes. - var hexKey = v.split(/(..)/).reverse().join(''); - return utils.hexDecode(hexKey); - } - - - // Expose some functions to the outside through this name space. - - /** - * Computes the scalar product of a point on the curve 25519. - * - * This function is used for the DH key-exchange protocol. - * - * Before multiplication, some bit operations are applied to the - * private key to ensure it is a valid Curve25519 secret key. - * It is the user's responsibility to make sure that the private - * key is a uniformly random, secret value. - * - * @function - * @param f {array} - * Private key. - * @param c {array} - * Public point on the curve. If not given, the curve's base point is used. - * @returns {array} - * Key point resulting from scalar product. - */ - ns.curve25519 = curve25519; - - /** - * Computes the scalar product of a point on the curve 25519. - * - * This variant does not make sure that the private key is valid. - * The user has the responsibility to ensure the private key is - * valid or that this results in a safe protocol. Unless you know - * exactly what you are doing, you should not use this variant, - * please use 'curve25519' instead. - * - * @function - * @param f {array} - * Private key. - * @param c {array} - * Public point on the curve. If not given, the curve's base point is used. - * @returns {array} - * Key point resulting from scalar product. - */ - ns.curve25519_raw = curve25519_raw; - - /** - * Encodes the internal representation of a key to a canonical hex - * representation. - * - * This is the format commonly used in other libraries and for - * test vectors, and is equivalent to the hex dump of the key in - * little-endian binary format. - * - * @function - * @param n {array} - * Array representation of key. - * @returns {string} - * Hexadecimal string representation of key. - */ - ns.hexEncodeVector = _hexEncodeVector; - - /** - * Decodes a canonical hex representation of a key - * to an internally compatible array representation. - * - * @function - * @param n {string} - * Hexadecimal string representation of key. - * @returns {array} - * Array representation of key. - */ - ns.hexDecodeVector = _hexDecodeVector; - - /** - * Encodes the internal representation of a key into a - * hexadecimal representation. - * - * This is a strict positional notation, most significant digit first. - * - * @function - * @param n {array} - * Array representation of key. - * @returns {string} - * Hexadecimal string representation of key. - */ - ns.hexencode = utils.hexEncode; - - /** - * Decodes a hex representation of a key to an internally - * compatible array representation. - * - * @function - * @param n {string} - * Hexadecimal string representation of key. - * @returns {array} - * Array representation of key. - */ - ns.hexdecode = utils.hexDecode; - - /** - * Encodes the internal representation of a key to a base32 - * representation. - * - * @function - * @param n {array} - * Array representation of key. - * @returns {string} - * Base32 string representation of key. - */ - ns.base32encode = utils.base32encode; - - /** - * Decodes a base32 representation of a key to an internally - * compatible array representation. - * - * @function - * @param n {string} - * Base32 string representation of key. - * @returns {array} - * Array representation of key. - */ - ns.base32decode = utils.base32decode; - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/dh.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/dh.js deleted file mode 100644 index 2f75494a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/dh.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; -/** - * @fileOverview - * EC Diffie-Hellman operations on Curve25519. - */ - -/* - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss - * - * You should have received a copy of the license along with this program. - */ - -var core = require('./core'); -var utils = require('./utils'); -var curve255 = require('./curve255'); - - - /** - * @exports jodid25519/dh - * EC Diffie-Hellman operations on Curve25519. - * - * @description - * EC Diffie-Hellman operations on Curve25519. - */ - var ns = {}; - - - function _toString(vector) { - var u = new Uint16Array(vector); - return (new Buffer(new Uint8Array(u.buffer))); - } - - function _fromString(vector) { - if (Buffer.isBuffer(vector)) { - var u = new Uint8Array(vector); - return (new Uint16Array(u.buffer)); - } - - var result = new Array(16); - for (var i = 0, l = 0; i < vector.length; i += 2) { - result[l] = (vector.charCodeAt(i + 1) << 8) | vector.charCodeAt(i); - l++; - } - return result; - } - - - /** - * Computes a key through scalar multiplication of a point on the curve 25519. - * - * This function is used for the DH key-exchange protocol. It computes a - * key based on a secret key with a public component (opponent's public key - * or curve base point if not given) by using scalar multiplication. - * - * Before multiplication, some bit operations are applied to the - * private key to ensure it is a valid Curve25519 secret key. - * It is the user's responsibility to make sure that the private - * key is a uniformly random, secret value. - * - * @function - * @param privateComponent {string} - * Private point as byte string on the curve. - * @param publicComponent {string} - * Public point as byte string on the curve. If not given, the curve's - * base point is used. - * @returns {string} - * Key point as byte string resulting from scalar product. - */ - ns.computeKey = function(privateComponent, publicComponent) { - if (publicComponent) { - return _toString(curve255.curve25519(_fromString(privateComponent), - _fromString(publicComponent))); - } else { - return _toString(curve255.curve25519(_fromString(privateComponent))); - } - }; - - /** - * Computes the public key to a private key on the curve 25519. - * - * Before multiplication, some bit operations are applied to the - * private key to ensure it is a valid Curve25519 secret key. - * It is the user's responsibility to make sure that the private - * key is a uniformly random, secret value. - * - * @function - * @param privateKey {string} - * Private point as byte string on the curve. - * @returns {string} - * Public key point as byte string resulting from scalar product. - */ - ns.publicKey = function(privateKey) { - return _toString(curve255.curve25519(_fromString(privateKey))); - }; - - - /** - * Generates a new random private key of 32 bytes length (256 bit). - * - * @function - * @returns {string} - * Byte string containing a new random private key seed. - */ - ns.generateKey = function() { - return core.generateKey(true); - }; - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/eddsa.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/eddsa.js deleted file mode 100644 index c384f329..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/eddsa.js +++ /dev/null @@ -1,573 +0,0 @@ -"use strict"; -/** - * @fileOverview - * Digital signature scheme based on Curve25519 (Ed25519 or EdDSA). - */ - -/* - * Copyright (c) 2011, 2012, 2014 Ron Garret - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss, Ron Garret - * - * You should have received a copy of the license along with this program. - */ - -var core = require('./core'); -var curve255 = require('./curve255'); -var utils = require('./utils'); -var BigInteger = require('jsbn').BigInteger; -var crypto = require('crypto'); - - /** - * @exports jodid25519/eddsa - * Digital signature scheme based on Curve25519 (Ed25519 or EdDSA). - * - * @description - * Digital signature scheme based on Curve25519 (Ed25519 or EdDSA). - * - *

    - * This code is adapted from fast-djbec.js, a faster but more complicated - * version of the Ed25519 encryption scheme (as compared to djbec.js). - * It uses two different representations for big integers: The jsbn - * BigInteger class, which can represent arbitrary-length numbers, and a - * special fixed-length representation optimised for 256-bit integers. - * The reason both are needed is that the Ed25519 algorithm requires some - * 512-bit numbers.

    - */ - var ns = {}; - - function _bi255(value) { - if (!(this instanceof _bi255)) { - return new _bi255(value); - } - if (typeof value === 'undefined') { - return _ZERO; - } - var c = value.constructor; - if ((c === Array || c === Uint16Array || c === Uint32Array) && (value.length === 16)) { - this.n = value; - } else if ((c === Array) && (value.length === 32)) { - this.n = _bytes2bi255(value).n; - } else if (c === String) { - this.n = utils.hexDecode(value); - } else if (c === Number) { - this.n = [value & 0xffff, - value >> 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - } else if (value instanceof _bi255) { - this.n = value.n.slice(0); // Copy constructor - } else { - throw "Bad argument for bignum: " + value; - } - } - - _bi255.prototype = { - 'toString' : function() { - return utils.hexEncode(this.n); - }, - 'toSource' : function() { - return '_' + utils.hexEncode(this.n); - }, - 'plus' : function(n1) { - return _bi255(core.bigintadd(this.n, n1.n)); - }, - 'minus' : function(n1) { - return _bi255(core.bigintsub(this.n, n1.n)).modq(); - }, - 'times' : function(n1) { - return _bi255(core.mulmodp(this.n, n1.n)); - }, - 'divide' : function(n1) { - return this.times(n1.inv()); - }, - 'sqr' : function() { - return _bi255(core.sqrmodp(this.n)); - }, - 'cmp' : function(n1) { - return core.bigintcmp(this.n, n1.n); - }, - 'equals' : function(n1) { - return this.cmp(n1) === 0; - }, - 'isOdd' : function() { - return (this.n[0] & 1) === 1; - }, - 'shiftLeft' : function(cnt) { - _shiftL(this.n, cnt); - return this; - }, - 'shiftRight' : function(cnt) { - _shiftR(this.n, cnt); - return this; - }, - 'inv' : function() { - return _bi255(core.invmodp(this.n)); - }, - 'pow' : function(e) { - return _bi255(_pow(this.n, e.n)); - }, - 'modq' : function() { - return _modq(this); - }, - 'bytes' : function() { - return _bi255_bytes(this); - } - }; - - function _shiftL(n, cnt) { - var lastcarry = 0; - for (var i = 0; i < 16; i++) { - var carry = n[i] >> (16 - cnt); - n[i] = (n[i] << cnt) & 0xffff | lastcarry; - lastcarry = carry; - } - return n; - } - - function _shiftR(n, cnt) { - var lastcarry = 0; - for (var i = 15; i >= 0; i--) { - var carry = n[i] << (16 - cnt) & 0xffff; - n[i] = (n[i] >> cnt) | lastcarry; - lastcarry = carry; - } - return n; - } - - function _bi255_bytes(n) { - n = _bi255(n); // Make a copy because shiftRight is destructive - var a = new Array(32); - for (var i = 31; i >= 0; i--) { - a[i] = n.n[0] & 0xff; - n.shiftRight(8); - } - return a; - } - - function _bytes2bi255(a) { - var n = _ZERO; - for (var i = 0; i < 32; i++) { - n.shiftLeft(8); - n = n.plus(_bi255(a[i])); - } - return n; - } - - function _pow(n, e) { - var result = core.ONE(); - for (var i = 0; i < 256; i++) { - if (core.getbit(e, i) === 1) { - result = core.mulmodp(result, n); - } - n = core.sqrmodp(n); - } - return result; - } - - var _ZERO = _bi255(0); - var _ONE = _bi255(1); - var _TWO = _bi255(2); - // This is the core prime. - var _Q = _bi255([0xffff - 18, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, - 0xffff, 0xffff, 0x7fff]); - - function _modq(n) { - core.reduce(n.n); - if (n.cmp(_Q) >= 0) { - return _modq(n.minus(_Q)); - } - if (n.cmp(_ZERO) === -1) { - return _modq(n.plus(_Q)); - } else { - return n; - } - } - - // _RECOVERY_EXPONENT = _Q.plus(_bi255(3)).divide(_bi255(8)); - var _RECOVERY_EXPONENT = _bi255('0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe'); - // _D = _Q.minus(_bi255(121665)).divide(_bi255(121666)); - var _D = _bi255('52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'); - // _I = _TWO.pow(_Q.minus(_ONE).divide(_bi255(4))); - var _I = _bi255('2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0'); - // _L = _TWO.pow(_bi255(252)).plus(_bi255('14def9dea2f79cd65812631a5cf5d3ed')); - var _L = _bi255('1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'); - var _L_BI = _bi('1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed', 16); - - - // //////////////////////////////////////////////////////////// - - function _isoncurve(p) { - var x = p[0]; - var y = p[1]; - var xsqr = x.sqr(); - var ysqr = y.sqr(); - var v = _D.times(xsqr).times(ysqr); - return ysqr.minus(xsqr).minus(_ONE).minus(v).modq().equals(_ZERO); - } - - function _xrecover(y) { - var ysquared = y.sqr(); - var xx = ysquared.minus(_ONE).divide(_ONE.plus(_D.times(ysquared))); - var x = xx.pow(_RECOVERY_EXPONENT); - if (!(x.times(x).minus(xx).equals(_ZERO))) { - x = x.times(_I); - } - if (x.isOdd()) { - x = _Q.minus(x); - } - return x; - } - - function _x_pt_add(pt1, pt2) { - var x1 = pt1[0]; - var y1 = pt1[1]; - var z1 = pt1[2]; - var t1 = pt1[3]; - var x2 = pt2[0]; - var y2 = pt2[1]; - var z2 = pt2[2]; - var t2 = pt2[3]; - var A = y1.minus(x1).times(y2.plus(x2)); - var B = y1.plus(x1).times(y2.minus(x2)); - var C = z1.times(_TWO).times(t2); - var D = t1.times(_TWO).times(z2); - var E = D.plus(C); - var F = B.minus(A); - var G = B.plus(A); - var H = D.minus(C); - return [E.times(F), G.times(H), F.times(G), E.times(H)]; - } - - function _xpt_double(pt1) { - var x1 = pt1[0]; - var y1 = pt1[1]; - var z1 = pt1[2]; - var A = x1.times(x1); - var B = y1.times(y1); - var C = _TWO.times(z1).times(z1); - var D = _Q.minus(A); - var J = x1.plus(y1); - var E = J.times(J).minus(A).minus(B); - var G = D.plus(B); - var F = G.minus(C); - var H = D.minus(B); - return [E.times(F), G.times(H), F.times(G), E.times(H)]; - } - - function _xpt_mult(pt, n) { - if (n.equals(_ZERO)) { - return [_ZERO, _ONE, _ONE, _ZERO]; - } - var odd = n.isOdd(); - n.shiftRight(1); - var value = _xpt_double(_xpt_mult(pt, n)); - return odd ? _x_pt_add(value, pt) : value; - } - - function _pt_xform(pt) { - var x = pt[0]; - var y = pt[1]; - return [x, y, _ONE, x.times(y)]; - } - - function _pt_unxform(pt) { - var x = pt[0]; - var y = pt[1]; - var z = pt[2]; - var invz = z.inv(); - return [x.times(invz), y.times(invz)]; - } - - function _scalarmult(pt, n) { - return _pt_unxform(_xpt_mult(_pt_xform(pt), n)); - } - - function _bytesgetbit(bytes, n) { - return (bytes[bytes.length - (n >>> 3) - 1] >> (n & 7)) & 1; - } - - function _xpt_mult_bytes(pt, bytes) { - var r = [_ZERO, _ONE, _ONE, _ZERO]; - for (var i = (bytes.length << 3) - 1; i >= 0; i--) { - r = _xpt_double(r); - if (_bytesgetbit(bytes, i) === 1) { - r = _x_pt_add(r, pt); - } - } - return r; - } - - function _scalarmultBytes(pt, bytes) { - return _pt_unxform(_xpt_mult_bytes(_pt_xform(pt), bytes)); - } - - var _by = _bi255(4).divide(_bi255(5)); - var _bx = _xrecover(_by); - var _bp = [_bx, _by]; - - function _encodeint(n) { - return n.bytes(32).reverse(); - } - function _decodeint(b) { - return _bi255(b.slice(0).reverse()); - } - - function _encodepoint(p) { - var v = _encodeint(p[1]); - if (p[0].isOdd()) { - v[31] |= 0x80; - } - return v; - } - - function _decodepoint(v) { - v = v.slice(0); - var signbit = v[31] >> 7; - v[31] &= 127; - var y = _decodeint(v); - var x = _xrecover(y); - if ((x.n[0] & 1) !== signbit) { - x = _Q.minus(x); - } - var p = [x, y]; - if (!_isoncurve(p)) { - throw ('Point is not on curve'); - } - return p; - } - - // ////////////////////////////////////////////////// - - /** - * Factory function to create a suitable BigInteger. - * - * @param value - * The value for the big integer. - * @param base {integer} - * Base of the conversion of elements in ``value``. - * @returns - * A BigInteger object. - */ - function _bi(value, base) { - if (base !== undefined) { - if (base === 256) { - return _bi(utils.string2bytes(value)); - } - return new BigInteger(value, base); - } else if (typeof value === 'string') { - return new BigInteger(value, 10); - } else if ((value instanceof Array) || (value instanceof Uint8Array) - || Buffer.isBuffer(value)) { - return new BigInteger(value); - } else if (typeof value === 'number') { - return new BigInteger(value.toString(), 10); - } else { - throw "Can't convert " + value + " to BigInteger"; - } - } - - function _bi2bytes(n, cnt) { - if (cnt === undefined) { - cnt = (n.bitLength() + 7) >>> 3; - } - var bytes = new Array(cnt); - for (var i = cnt - 1; i >= 0; i--) { - bytes[i] = n[0] & 255; // n.and(0xff); - n = n.shiftRight(8); - } - return bytes; - } - - BigInteger.prototype.bytes = function(n) { - return _bi2bytes(this, n); - }; - - // ///////////////////////////////////////////////////////// - - function _bytehash(s) { - var sha = crypto.createHash('sha512').update(s).digest(); - return _bi2bytes(_bi(sha), 64).reverse(); - } - - function _stringhash(s) { - var sha = crypto.createHash('sha512').update(s).digest(); - return _map(_chr, _bi2bytes(_bi(sha), 64)).join(''); - } - - function _inthash(s) { - // Need a leading 0 to prevent sign extension - return _bi([0].concat(_bytehash(s))); - } - - function _inthash_lo(s) { - return _bi255(_bytehash(s).slice(32, 64)); - } - - function _inthash_mod_l(s) { - return _inthash(s).mod(_L_BI); - } - - function _get_a(sk) { - var a = _inthash_lo(sk); - a.n[0] &= 0xfff8; - a.n[15] &= 0x3fff; - a.n[15] |= 0x4000; - return a; - } - - function _publickey(sk) { - return _encodepoint(_scalarmult(_bp, _get_a(sk))); - } - - function _map(f, l) { - var result = new Array(l.length); - for (var i = 0; i < l.length; i++) { - result[i] = f(l[i]); - } - return result; - } - - function _chr(n) { - return String.fromCharCode(n); - } - - function _ord(c) { - return c.charCodeAt(0); - } - - function _pt_add(p1, p2) { - return _pt_unxform(_x_pt_add(_pt_xform(p1), _pt_xform(p2))); - } - - - // Exports for the API. - - /** - * Checks whether a point is on the curve. - * - * @function - * @param point {string} - * The point to check for in a byte string representation. - * @returns {boolean} - * true if the point is on the curve, false otherwise. - */ - ns.isOnCurve = function(point) { - try { - _isoncurve(_decodepoint(utils.string2bytes(point))); - } catch(e) { - if (e === 'Point is not on curve') { - return false; - } else { - throw e; - } - } - return true; - }; - - - /** - * Computes the EdDSA public key. - * - *

    Note: Seeds should be a byte string, not a unicode string containing - * multi-byte characters.

    - * - * @function - * @param keySeed {string} - * Private key seed in the form of a byte string. - * @returns {string} - * Public key as byte string computed from the private key seed - * (32 bytes). - */ - ns.publicKey = function(keySeed) { - return utils.bytes2string(_publickey(keySeed)); - }; - - - /** - * Computes an EdDSA signature of a message. - * - *

    Notes:

    - * - *
      - *
    • Unicode messages need to be converted to a byte representation - * (e. g. UTF-8).
    • - *
    • If `publicKey` is given, and it is *not* a point of the curve, - * the signature will be faulty, but no error will be thrown.
    • - *
    - * - * @function - * @param message {string} - * Message in the form of a byte string. - * @param keySeed {string} - * Private key seed in the form of a byte string. - * @param publicKey {string} - * Public key as byte string (if not present, it will be computed from - * the private key seed). - * @returns {string} - * Detached message signature in the form of a byte string (64 bytes). - */ - ns.sign = function(message, keySeed, publicKey) { - if (publicKey === undefined) { - publicKey = _publickey(keySeed); - } else { - publicKey = utils.string2bytes(publicKey); - } - var a = _bi(_get_a(keySeed).toString(), 16); - var hs = _stringhash(keySeed); - var r = _bytehash(hs.slice(32, 64) + message); - var rp = _scalarmultBytes(_bp, r); - var erp = _encodepoint(rp); - r = _bi(r).mod(_bi(1, 10).shiftLeft(512)); - var s = _map(_chr, erp).join('') + _map(_chr, publicKey).join('') + message; - s = _inthash_mod_l(s).multiply(a).add(r).mod(_L_BI); - return utils.bytes2string(erp.concat(_encodeint(s))); - }; - - - /** - * Verifies an EdDSA signature of a message with the public key. - * - *

    Note: Unicode messages need to be converted to a byte representation - * (e. g. UTF-8).

    - * - * @function - * @param signature {string} - * Message signature in the form of a byte string. Can be detached - * (64 bytes), or attached to be sliced off. - * @param message {string} - * Message in the form of a byte string. - * @param publicKey {string} - * Public key as byte string (if not present, it will be computed from - * the private key seed). - * @returns {boolean} - * true, if the signature verifies. - */ - ns.verify = function(signature, message, publicKey) { - signature = utils.string2bytes(signature.slice(0, 64)); - publicKey = utils.string2bytes(publicKey); - var rpe = signature.slice(0, 32); - var rp = _decodepoint(rpe); - var a = _decodepoint(publicKey); - var s = _decodeint(signature.slice(32, 64)); - var h = _inthash(utils.bytes2string(rpe.concat(publicKey)) + message); - var v1 = _scalarmult(_bp, s); - var value = _scalarmultBytes(a, _bi2bytes(h)); - var v2 = _pt_add(rp, value); - return v1[0].equals(v2[0]) && v1[1].equals(v2[1]); - }; - - - /** - * Generates a new random private key seed of 32 bytes length (256 bit). - * - * @function - * @returns {string} - * Byte string containing a new random private key seed. - */ - ns.generateKeySeed = function() { - return core.generateKey(false); - }; - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/utils.js deleted file mode 100644 index c795231a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/lib/utils.js +++ /dev/null @@ -1,198 +0,0 @@ -"use strict"; -/** - * @fileOverview - * A collection of general utility functions.. - */ - -/* - * Copyright (c) 2011, 2012, 2014 Ron Garret - * Copyright (c) 2007, 2013, 2014 Michele Bini - * Copyright (c) 2014 Mega Limited - * under the MIT License. - * - * Authors: Guy K. Kloss, Michele Bini, Ron Garret - * - * You should have received a copy of the license along with this program. - */ - -var core = require('./core'); - - /** - * @exports jodid25519/utils - * A collection of general utility functions.. - * - * @description - * A collection of general utility functions.. - */ - var ns = {}; - - var _HEXCHARS = "0123456789abcdef"; - - function _hexencode(vector) { - var result = []; - for (var i = vector.length - 1; i >= 0; i--) { - var value = vector[i]; - result.push(_HEXCHARS.substr((value >>> 12) & 0x0f, 1)); - result.push(_HEXCHARS.substr((value >>> 8) & 0x0f, 1)); - result.push(_HEXCHARS.substr((value >>> 4) & 0x0f, 1)); - result.push(_HEXCHARS.substr(value & 0x0f, 1)); - } - return result.join(''); - } - - function _hexdecode(vector) { - var result = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; - for (var i = vector.length - 1, l = 0; i >= 0; i -= 4) { - result[l] = (_HEXCHARS.indexOf(vector.charAt(i))) - | (_HEXCHARS.indexOf(vector.charAt(i - 1)) << 4) - | (_HEXCHARS.indexOf(vector.charAt(i - 2)) << 8) - | (_HEXCHARS.indexOf(vector.charAt(i - 3)) << 12); - l++; - } - return result; - } - - var _BASE32CHARS = "abcdefghijklmnopqrstuvwxyz234567"; - - var _BASE32VALUES = (function () { - var result = {}; - for (var i = 0; i < _BASE32CHARS.length; i++) { - result[_BASE32CHARS.charAt(i)] = i; - } - return result; - })(); - - function _base32encode(n) { - var c; - var r = ""; - for (c = 0; c < 255; c += 5) { - r = _BASE32CHARS.substr(core.getbit(n, c) - + (core.getbit(n, c + 1) << 1) - + (core.getbit(n, c + 2) << 2) - + (core.getbit(n, c + 3) << 3) - + (core.getbit(n, c + 4) << 4), 1) - + r; - } - return r; - } - - function _base32decode(n) { - var c = 0; - var r = core.ZERO(); - var l = n.length; - for (c = 0; (l > 0) && (c < 255); c += 5) { - l--; - var v = _BASE32VALUES[n.substr(l, 1)]; - core.setbit(r, c, v & 1); - v >>= 1; - core.setbit(r, c + 1, v & 1); - v >>= 1; - core.setbit(r, c + 2, v & 1); - v >>= 1; - core.setbit(r, c + 3, v & 1); - v >>= 1; - core.setbit(r, c + 4, v & 1); - } - return r; - } - - function _map(f, l) { - var result = new Array(l.length); - for (var i = 0; i < l.length; i++) { - result[i] = f(l[i]); - } - return result; - } - - function _chr(n) { - return String.fromCharCode(n); - } - - function _ord(c) { - return c.charCodeAt(0); - } - - function _bytes2string(bytes) { - return _map(_chr, bytes).join(''); - } - - function _string2bytes(s) { - return _map(_ord, s); - } - - - // Expose some functions to the outside through this name space. - - /** - * Encodes an array of unsigned 8-bit integers to a hex string. - * - * @function - * @param vector {array} - * Array containing the byte values. - * @returns {string} - * String containing vector in a hexadecimal representation. - */ - ns.hexEncode = _hexencode; - - - /** - * Decodes a hex string to an array of unsigned 8-bit integers. - * - * @function - * @param vector {string} - * String containing vector in a hexadecimal representation. - * @returns {array} - * Array containing the byte values. - */ - ns.hexDecode = _hexdecode; - - - /** - * Encodes an array of unsigned 8-bit integers using base32 encoding. - * - * @function - * @param vector {array} - * Array containing the byte values. - * @returns {string} - * String containing vector in a hexadecimal representation. - */ - ns.base32encode = _base32encode; - - - /** - * Decodes a base32 encoded string to an array of unsigned 8-bit integers. - * - * @function - * @param vector {string} - * String containing vector in a hexadecimal representation. - * @returns {array} - * Array containing the byte values. - */ - ns.base32decode = _base32decode; - - - /** - * Converts an unsigned 8-bit integer array representation to a byte string. - * - * @function - * @param vector {array} - * Array containing the byte values. - * @returns {string} - * Byte string representation of vector. - */ - ns.bytes2string = _bytes2string; - - - /** - * Converts a byte string representation to an array of unsigned - * 8-bit integers. - * - * @function - * @param vector {array} - * Array containing the byte values. - * @returns {string} - * Byte string representation of vector. - */ - ns.string2bytes = _string2bytes; - -module.exports = ns; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/package.json deleted file mode 100644 index fb6fc2cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jodid25519/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "jodid25519@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "jodid25519@>=1.0.0 <2.0.0", - "_id": "jodid25519@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/jodid25519", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "alex@cooperi.net", - "name": "arekinath" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "jodid25519", - "raw": "jodid25519@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "_shasum": "06d4912255093419477d425633606e0e90782967", - "_shrinkwrap": null, - "_spec": "jodid25519@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "name": "Michele Bini, Ron Garret, Guy K. Kloss" - }, - "bugs": { - "url": "https://github.com/meganz/jodid25519/issues" - }, - "dependencies": { - "jsbn": "~0.1.0" - }, - "description": "jodid25519 - Curve 25519-based cryptography", - "devDependencies": { - "almond": "~0.3.1", - "chai": "^3.0.0", - "dateformat": "~1.0.7-1.2.3", - "ibrik": "~2.0.0", - "istanbul": "~0.3.5", - "jsdoc": "<=3.3.0", - "mocha": "~2.0.1", - "sinon": "~1.10.3", - "sinon-chai": "^2.8.0" - }, - "directories": { - "doc": "doc", - "src": "src", - "test": "test" - }, - "dist": { - "shasum": "06d4912255093419477d425633606e0e90782967", - "tarball": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" - }, - "gitHead": "a83b9fcf7fd3be4f27cd4a57817aff171c7cd918", - "homepage": "https://github.com/meganz/jodid25519", - "keywords": [ - "Curve25519", - "Ed25519", - "ECDH", - "EdDSA", - "ECDSA", - "encryption", - "signing" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "alex@cooperi.net", - "name": "arekinath" - } - ], - "name": "jodid25519", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/meganz/jodid25519.git" - }, - "scripts": { - "test": "mocha test/*_test.js" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/.npmignore deleted file mode 100644 index 28f1ba75..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/LICENSE deleted file mode 100644 index 2a6457e9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/LICENSE +++ /dev/null @@ -1,40 +0,0 @@ -Licensing ---------- - -This software is covered under the following copyright: - -/* - * Copyright (c) 2003-2005 Tom Wu - * All Rights Reserved. - * - * 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" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER - * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF - * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT - * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * In addition, the following condition applies: - * - * All redistributions must retain an intact copy of this copyright notice - * and disclaimer. - */ - -Address all questions regarding this license to: - - Tom Wu - tjw@cs.Stanford.EDU \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/README.md deleted file mode 100644 index 7aac67f5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/README.md +++ /dev/null @@ -1,175 +0,0 @@ -# jsbn: javascript big number - -[Tom Wu's Original Website](http://www-cs-students.stanford.edu/~tjw/jsbn/) - -I felt compelled to put this on github and publish to npm. I haven't tested every other big integer library out there, but the few that I have tested in comparison to this one have not even come close in performance. I am aware of the `bi` module on npm, however it has been modified and I wanted to publish the original without modifications. This is jsbn and jsbn2 from Tom Wu's original website above, with the modular pattern applied to prevent global leaks and to allow for use with node.js on the server side. - -## usage - - var BigInteger = require('jsbn'); - - var a = new BigInteger('91823918239182398123'); - alert(a.bitLength()); // 67 - - -## API - -### bi.toString() - -returns the base-10 number as a string - -### bi.negate() - -returns a new BigInteger equal to the negation of `bi` - -### bi.abs - -returns new BI of absolute value - -### bi.compareTo - - - -### bi.bitLength - - - -### bi.mod - - - -### bi.modPowInt - - - -### bi.clone - - - -### bi.intValue - - - -### bi.byteValue - - - -### bi.shortValue - - - -### bi.signum - - - -### bi.toByteArray - - - -### bi.equals - - - -### bi.min - - - -### bi.max - - - -### bi.and - - - -### bi.or - - - -### bi.xor - - - -### bi.andNot - - - -### bi.not - - - -### bi.shiftLeft - - - -### bi.shiftRight - - - -### bi.getLowestSetBit - - - -### bi.bitCount - - - -### bi.testBit - - - -### bi.setBit - - - -### bi.clearBit - - - -### bi.flipBit - - - -### bi.add - - - -### bi.subtract - - - -### bi.multiply - - - -### bi.divide - - - -### bi.remainder - - - -### bi.divideAndRemainder - - - -### bi.modPow - - - -### bi.modInverse - - - -### bi.pow - - - -### bi.gcd - - - -### bi.isProbablePrime - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.html deleted file mode 100644 index 7c26a566..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.js deleted file mode 100644 index 664c1b45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/example.js +++ /dev/null @@ -1,3 +0,0 @@ -var BigInteger = require('./'); -var a = new BigInteger('91823918239182398123'); -console.log(a.bitLength()); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/index.js deleted file mode 100644 index e32fe13d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/index.js +++ /dev/null @@ -1,1358 +0,0 @@ -(function(){ - - // Copyright (c) 2005 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Basic JavaScript BN library - subset useful for RSA encryption. - - // Bits per digit - var dbits; - - // JavaScript engine analysis - var canary = 0xdeadbeefcafe; - var j_lm = ((canary&0xffffff)==0xefcafe); - - // (public) Constructor - function BigInteger(a,b,c) { - if(a != null) - if("number" == typeof a) this.fromNumber(a,b,c); - else if(b == null && "string" != typeof a) this.fromString(a,256); - else this.fromString(a,b); - } - - // return new, unset BigInteger - function nbi() { return new BigInteger(null); } - - // am: Compute w_j += (x*this_i), propagate carries, - // c is initial carry, returns final carry. - // c < 3*dvalue, x < 2*dvalue, this_i < dvalue - // We need to select the fastest one that works in this environment. - - // am1: use a single mult and divide to get the high bits, - // max digit bits should be 26 because - // max internal value = 2*dvalue^2-2*dvalue (< 2^53) - function am1(i,x,w,j,c,n) { - while(--n >= 0) { - var v = x*this[i++]+w[j]+c; - c = Math.floor(v/0x4000000); - w[j++] = v&0x3ffffff; - } - return c; - } - // am2 avoids a big mult-and-extract completely. - // Max digit bits should be <= 30 because we do bitwise ops - // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) - function am2(i,x,w,j,c,n) { - var xl = x&0x7fff, xh = x>>15; - while(--n >= 0) { - var l = this[i]&0x7fff; - var h = this[i++]>>15; - var m = xh*l+h*xl; - l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); - c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); - w[j++] = l&0x3fffffff; - } - return c; - } - // Alternately, set max digit bits to 28 since some - // browsers slow down when dealing with 32-bit numbers. - function am3(i,x,w,j,c,n) { - var xl = x&0x3fff, xh = x>>14; - while(--n >= 0) { - var l = this[i]&0x3fff; - var h = this[i++]>>14; - var m = xh*l+h*xl; - l = xl*l+((m&0x3fff)<<14)+w[j]+c; - c = (l>>28)+(m>>14)+xh*h; - w[j++] = l&0xfffffff; - } - return c; - } - var inBrowser = typeof navigator !== "undefined"; - if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { - BigInteger.prototype.am = am2; - dbits = 30; - } - else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { - BigInteger.prototype.am = am1; - dbits = 26; - } - else { // Mozilla/Netscape seems to prefer am3 - BigInteger.prototype.am = am3; - dbits = 28; - } - - BigInteger.prototype.DB = dbits; - BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; - r.t = this.t; - r.s = this.s; - } - - // (protected) set from integer value x, -DV <= x < DV - function bnpFromInt(x) { - this.t = 1; - this.s = (x<0)?-1:0; - if(x > 0) this[0] = x; - else if(x < -1) this[0] = x+this.DV; - else this.t = 0; - } - - // return bigint initialized to value - function nbv(i) { var r = nbi(); r.fromInt(i); return r; } - - // (protected) set from string and radix - function bnpFromString(s,b) { - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 256) k = 8; // byte array - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else { this.fromRadix(s,b); return; } - this.t = 0; - this.s = 0; - var i = s.length, mi = false, sh = 0; - while(--i >= 0) { - var x = (k==8)?s[i]&0xff:intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-") mi = true; - continue; - } - mi = false; - if(sh == 0) - this[this.t++] = x; - else if(sh+k > this.DB) { - this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); - } - else - this[this.t-1] |= x<= this.DB) sh -= this.DB; - } - if(k == 8 && (s[0]&0x80) != 0) { - this.s = -1; - if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; - } - - // (public) return string representation in given radix - function bnToString(b) { - if(this.s < 0) return "-"+this.negate().toString(b); - var k; - if(b == 16) k = 4; - else if(b == 8) k = 3; - else if(b == 2) k = 1; - else if(b == 32) k = 5; - else if(b == 4) k = 2; - else return this.toRadix(b); - var km = (1< 0) { - if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } - while(i >= 0) { - if(p < k) { - d = (this[i]&((1<>(p+=this.DB-k); - } - else { - d = (this[i]>>(p-=k))&km; - if(p <= 0) { p += this.DB; --i; } - } - if(d > 0) m = true; - if(m) r += int2char(d); - } - } - return m?r:"0"; - } - - // (public) -this - function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } - - // (public) |this| - function bnAbs() { return (this.s<0)?this.negate():this; } - - // (public) return + if this > a, - if this < a, 0 if equal - function bnCompareTo(a) { - var r = this.s-a.s; - if(r != 0) return r; - var i = this.t; - r = i-a.t; - if(r != 0) return (this.s<0)?-r:r; - while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; - return 0; - } - - // returns bit length of the integer x - function nbits(x) { - var r = 1, t; - if((t=x>>>16) != 0) { x = t; r += 16; } - if((t=x>>8) != 0) { x = t; r += 8; } - if((t=x>>4) != 0) { x = t; r += 4; } - if((t=x>>2) != 0) { x = t; r += 2; } - if((t=x>>1) != 0) { x = t; r += 1; } - return r; - } - - // (public) return the number of bits in "this" - function bnBitLength() { - if(this.t <= 0) return 0; - return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); - } - - // (protected) r = this << n*DB - function bnpDLShiftTo(n,r) { - var i; - for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; - for(i = n-1; i >= 0; --i) r[i] = 0; - r.t = this.t+n; - r.s = this.s; - } - - // (protected) r = this >> n*DB - function bnpDRShiftTo(n,r) { - for(var i = n; i < this.t; ++i) r[i-n] = this[i]; - r.t = Math.max(this.t-n,0); - r.s = this.s; - } - - // (protected) r = this << n - function bnpLShiftTo(n,r) { - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<= 0; --i) { - r[i+ds+1] = (this[i]>>cbs)|c; - c = (this[i]&bm)<= 0; --i) r[i] = 0; - r[ds] = c; - r.t = this.t+ds+1; - r.s = this.s; - r.clamp(); - } - - // (protected) r = this >> n - function bnpRShiftTo(n,r) { - r.s = this.s; - var ds = Math.floor(n/this.DB); - if(ds >= this.t) { r.t = 0; return; } - var bs = n%this.DB; - var cbs = this.DB-bs; - var bm = (1<>bs; - for(var i = ds+1; i < this.t; ++i) { - r[i-ds-1] |= (this[i]&bm)<>bs; - } - if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; - } - if(a.t < this.t) { - c -= a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c -= a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c -= a.s; - } - r.s = (c<0)?-1:0; - if(c < -1) r[i++] = this.DV+c; - else if(c > 0) r[i++] = c; - r.t = i; - r.clamp(); - } - - // (protected) r = this * a, r != this,a (HAC 14.12) - // "this" should be the larger one if appropriate. - function bnpMultiplyTo(a,r) { - var x = this.abs(), y = a.abs(); - var i = x.t; - r.t = i+y.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); - r.s = 0; - r.clamp(); - if(this.s != a.s) BigInteger.ZERO.subTo(r,r); - } - - // (protected) r = this^2, r != this (HAC 14.16) - function bnpSquareTo(r) { - var x = this.abs(); - var i = r.t = 2*x.t; - while(--i >= 0) r[i] = 0; - for(i = 0; i < x.t-1; ++i) { - var c = x.am(i,x[i],r,2*i,0,1); - if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { - r[i+x.t] -= x.DV; - r[i+x.t+1] = 1; - } - } - if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); - r.s = 0; - r.clamp(); - } - - // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) - // r != q, this != m. q or r may be null. - function bnpDivRemTo(m,q,r) { - var pm = m.abs(); - if(pm.t <= 0) return; - var pt = this.abs(); - if(pt.t < pm.t) { - if(q != null) q.fromInt(0); - if(r != null) this.copyTo(r); - return; - } - if(r == null) r = nbi(); - var y = nbi(), ts = this.s, ms = m.s; - var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus - if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } - else { pm.copyTo(y); pt.copyTo(r); } - var ys = y.t; - var y0 = y[ys-1]; - if(y0 == 0) return; - var yt = y0*(1<1)?y[ys-2]>>this.F2:0); - var d1 = this.FV/yt, d2 = (1<= 0) { - r[r.t++] = 1; - r.subTo(t,r); - } - BigInteger.ONE.dlShiftTo(ys,t); - t.subTo(y,y); // "negative" y so we can replace sub with am later - while(y.t < ys) y[y.t++] = 0; - while(--j >= 0) { - // Estimate quotient digit - var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); - if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out - y.dlShiftTo(j,t); - r.subTo(t,r); - while(r[i] < --qd) r.subTo(t,r); - } - } - if(q != null) { - r.drShiftTo(ys,q); - if(ts != ms) BigInteger.ZERO.subTo(q,q); - } - r.t = ys; - r.clamp(); - if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder - if(ts < 0) BigInteger.ZERO.subTo(r,r); - } - - // (public) this mod a - function bnMod(a) { - var r = nbi(); - this.abs().divRemTo(a,null,r); - if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); - return r; - } - - // Modular reduction using "classic" algorithm - function Classic(m) { this.m = m; } - function cConvert(x) { - if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); - else return x; - } - function cRevert(x) { return x; } - function cReduce(x) { x.divRemTo(this.m,null,x); } - function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - Classic.prototype.convert = cConvert; - Classic.prototype.revert = cRevert; - Classic.prototype.reduce = cReduce; - Classic.prototype.mulTo = cMulTo; - Classic.prototype.sqrTo = cSqrTo; - - // (protected) return "-1/this % 2^DB"; useful for Mont. reduction - // justification: - // xy == 1 (mod m) - // xy = 1+km - // xy(2-xy) = (1+km)(1-km) - // x[y(2-xy)] = 1-k^2m^2 - // x[y(2-xy)] == 1 (mod m^2) - // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 - // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. - // JS multiply "overflows" differently from C/C++, so care is needed here. - function bnpInvDigit() { - if(this.t < 1) return 0; - var x = this[0]; - if((x&1) == 0) return 0; - var y = x&3; // y == 1/x mod 2^2 - y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 - y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 - y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 - // last step - calculate inverse mod DV directly; - // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints - y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits - // we really want the negative inverse, and -DV < y < DV - return (y>0)?this.DV-y:-y; - } - - // Montgomery reduction - function Montgomery(m) { - this.m = m; - this.mp = m.invDigit(); - this.mpl = this.mp&0x7fff; - this.mph = this.mp>>15; - this.um = (1<<(m.DB-15))-1; - this.mt2 = 2*m.t; - } - - // xR mod m - function montConvert(x) { - var r = nbi(); - x.abs().dlShiftTo(this.m.t,r); - r.divRemTo(this.m,null,r); - if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); - return r; - } - - // x/R mod m - function montRevert(x) { - var r = nbi(); - x.copyTo(r); - this.reduce(r); - return r; - } - - // x = x/R mod m (HAC 14.32) - function montReduce(x) { - while(x.t <= this.mt2) // pad x so am has enough room later - x[x.t++] = 0; - for(var i = 0; i < this.m.t; ++i) { - // faster way of calculating u0 = x[i]*mp mod DV - var j = x[i]&0x7fff; - var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; - // use am to combine the multiply-shift-add into one call - j = i+this.m.t; - x[j] += this.m.am(0,u0,x,i,0,this.m.t); - // propagate carry - while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } - } - x.clamp(); - x.drShiftTo(this.m.t,x); - if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = "x^2/R mod m"; x != r - function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = "xy/R mod m"; x,y != r - function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Montgomery.prototype.convert = montConvert; - Montgomery.prototype.revert = montRevert; - Montgomery.prototype.reduce = montReduce; - Montgomery.prototype.mulTo = montMulTo; - Montgomery.prototype.sqrTo = montSqrTo; - - // (protected) true iff this is even - function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } - - // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) - function bnpExp(e,z) { - if(e > 0xffffffff || e < 1) return BigInteger.ONE; - var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; - g.copyTo(r); - while(--i >= 0) { - z.sqrTo(r,r2); - if((e&(1< 0) z.mulTo(r2,g,r); - else { var t = r; r = r2; r2 = t; } - } - return z.revert(r); - } - - // (public) this^e % m, 0 <= e < 2^32 - function bnModPowInt(e,m) { - var z; - if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); - return this.exp(e,z); - } - - // protected - BigInteger.prototype.copyTo = bnpCopyTo; - BigInteger.prototype.fromInt = bnpFromInt; - BigInteger.prototype.fromString = bnpFromString; - BigInteger.prototype.clamp = bnpClamp; - BigInteger.prototype.dlShiftTo = bnpDLShiftTo; - BigInteger.prototype.drShiftTo = bnpDRShiftTo; - BigInteger.prototype.lShiftTo = bnpLShiftTo; - BigInteger.prototype.rShiftTo = bnpRShiftTo; - BigInteger.prototype.subTo = bnpSubTo; - BigInteger.prototype.multiplyTo = bnpMultiplyTo; - BigInteger.prototype.squareTo = bnpSquareTo; - BigInteger.prototype.divRemTo = bnpDivRemTo; - BigInteger.prototype.invDigit = bnpInvDigit; - BigInteger.prototype.isEven = bnpIsEven; - BigInteger.prototype.exp = bnpExp; - - // public - BigInteger.prototype.toString = bnToString; - BigInteger.prototype.negate = bnNegate; - BigInteger.prototype.abs = bnAbs; - BigInteger.prototype.compareTo = bnCompareTo; - BigInteger.prototype.bitLength = bnBitLength; - BigInteger.prototype.mod = bnMod; - BigInteger.prototype.modPowInt = bnModPowInt; - - // "constants" - BigInteger.ZERO = nbv(0); - BigInteger.ONE = nbv(1); - - // Copyright (c) 2005-2009 Tom Wu - // All Rights Reserved. - // See "LICENSE" for details. - - // Extended JavaScript BN functions, required for RSA private ops. - - // Version 1.1: new BigInteger("0", 10) returns "proper" zero - // Version 1.2: square() API, isProbablePrime fix - - // (public) - function bnClone() { var r = nbi(); this.copyTo(r); return r; } - - // (public) return value as integer - function bnIntValue() { - if(this.s < 0) { - if(this.t == 1) return this[0]-this.DV; - else if(this.t == 0) return -1; - } - else if(this.t == 1) return this[0]; - else if(this.t == 0) return 0; - // assumes 16 < DB < 32 - return ((this[1]&((1<<(32-this.DB))-1))<>24; } - - // (public) return value as short (assumes DB>=16) - function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } - - // (protected) return x s.t. r^x < DV - function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } - - // (public) 0 if this == 0, 1 if this > 0 - function bnSigNum() { - if(this.s < 0) return -1; - else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; - else return 1; - } - - // (protected) convert to radix string - function bnpToRadix(b) { - if(b == null) b = 10; - if(this.signum() == 0 || b < 2 || b > 36) return "0"; - var cs = this.chunkSize(b); - var a = Math.pow(b,cs); - var d = nbv(a), y = nbi(), z = nbi(), r = ""; - this.divRemTo(d,y,z); - while(y.signum() > 0) { - r = (a+z.intValue()).toString(b).substr(1) + r; - y.divRemTo(d,y,z); - } - return z.intValue().toString(b) + r; - } - - // (protected) convert from radix string - function bnpFromRadix(s,b) { - this.fromInt(0); - if(b == null) b = 10; - var cs = this.chunkSize(b); - var d = Math.pow(b,cs), mi = false, j = 0, w = 0; - for(var i = 0; i < s.length; ++i) { - var x = intAt(s,i); - if(x < 0) { - if(s.charAt(i) == "-" && this.signum() == 0) mi = true; - continue; - } - w = b*w+x; - if(++j >= cs) { - this.dMultiply(d); - this.dAddOffset(w,0); - j = 0; - w = 0; - } - } - if(j > 0) { - this.dMultiply(Math.pow(b,j)); - this.dAddOffset(w,0); - } - if(mi) BigInteger.ZERO.subTo(this,this); - } - - // (protected) alternate constructor - function bnpFromNumber(a,b,c) { - if("number" == typeof b) { - // new BigInteger(int,int,RNG) - if(a < 2) this.fromInt(1); - else { - this.fromNumber(a,c); - if(!this.testBit(a-1)) // force MSB set - this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); - if(this.isEven()) this.dAddOffset(1,0); // force odd - while(!this.isProbablePrime(b)) { - this.dAddOffset(2,0); - if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); - } - } - } - else { - // new BigInteger(int,RNG) - var x = new Array(), t = a&7; - x.length = (a>>3)+1; - b.nextBytes(x); - if(t > 0) x[0] &= ((1< 0) { - if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) - r[k++] = d|(this.s<<(this.DB-p)); - while(i >= 0) { - if(p < 8) { - d = (this[i]&((1<>(p+=this.DB-8); - } - else { - d = (this[i]>>(p-=8))&0xff; - if(p <= 0) { p += this.DB; --i; } - } - if((d&0x80) != 0) d |= -256; - if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; - if(k > 0 || d != this.s) r[k++] = d; - } - } - return r; - } - - function bnEquals(a) { return(this.compareTo(a)==0); } - function bnMin(a) { return(this.compareTo(a)<0)?this:a; } - function bnMax(a) { return(this.compareTo(a)>0)?this:a; } - - // (protected) r = this op a (bitwise) - function bnpBitwiseTo(a,op,r) { - var i, f, m = Math.min(a.t,this.t); - for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); - if(a.t < this.t) { - f = a.s&this.DM; - for(i = m; i < this.t; ++i) r[i] = op(this[i],f); - r.t = this.t; - } - else { - f = this.s&this.DM; - for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); - r.t = a.t; - } - r.s = op(this.s,a.s); - r.clamp(); - } - - // (public) this & a - function op_and(x,y) { return x&y; } - function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } - - // (public) this | a - function op_or(x,y) { return x|y; } - function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } - - // (public) this ^ a - function op_xor(x,y) { return x^y; } - function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } - - // (public) this & ~a - function op_andnot(x,y) { return x&~y; } - function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } - - // (public) ~this - function bnNot() { - var r = nbi(); - for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; - r.t = this.t; - r.s = ~this.s; - return r; - } - - // (public) this << n - function bnShiftLeft(n) { - var r = nbi(); - if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); - return r; - } - - // (public) this >> n - function bnShiftRight(n) { - var r = nbi(); - if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); - return r; - } - - // return index of lowest 1-bit in x, x < 2^31 - function lbit(x) { - if(x == 0) return -1; - var r = 0; - if((x&0xffff) == 0) { x >>= 16; r += 16; } - if((x&0xff) == 0) { x >>= 8; r += 8; } - if((x&0xf) == 0) { x >>= 4; r += 4; } - if((x&3) == 0) { x >>= 2; r += 2; } - if((x&1) == 0) ++r; - return r; - } - - // (public) returns index of lowest 1-bit (or -1 if none) - function bnGetLowestSetBit() { - for(var i = 0; i < this.t; ++i) - if(this[i] != 0) return i*this.DB+lbit(this[i]); - if(this.s < 0) return this.t*this.DB; - return -1; - } - - // return number of 1 bits in x - function cbit(x) { - var r = 0; - while(x != 0) { x &= x-1; ++r; } - return r; - } - - // (public) return number of set bits - function bnBitCount() { - var r = 0, x = this.s&this.DM; - for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); - return r; - } - - // (public) true iff nth bit is set - function bnTestBit(n) { - var j = Math.floor(n/this.DB); - if(j >= this.t) return(this.s!=0); - return((this[j]&(1<<(n%this.DB)))!=0); - } - - // (protected) this op (1<>= this.DB; - } - if(a.t < this.t) { - c += a.s; - while(i < this.t) { - c += this[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += this.s; - } - else { - c += this.s; - while(i < a.t) { - c += a[i]; - r[i++] = c&this.DM; - c >>= this.DB; - } - c += a.s; - } - r.s = (c<0)?-1:0; - if(c > 0) r[i++] = c; - else if(c < -1) r[i++] = this.DV+c; - r.t = i; - r.clamp(); - } - - // (public) this + a - function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } - - // (public) this - a - function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } - - // (public) this * a - function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } - - // (public) this^2 - function bnSquare() { var r = nbi(); this.squareTo(r); return r; } - - // (public) this / a - function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } - - // (public) this % a - function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } - - // (public) [this/a,this%a] - function bnDivideAndRemainder(a) { - var q = nbi(), r = nbi(); - this.divRemTo(a,q,r); - return new Array(q,r); - } - - // (protected) this *= n, this >= 0, 1 < n < DV - function bnpDMultiply(n) { - this[this.t] = this.am(0,n-1,this,0,0,this.t); - ++this.t; - this.clamp(); - } - - // (protected) this += n << w words, this >= 0 - function bnpDAddOffset(n,w) { - if(n == 0) return; - while(this.t <= w) this[this.t++] = 0; - this[w] += n; - while(this[w] >= this.DV) { - this[w] -= this.DV; - if(++w >= this.t) this[this.t++] = 0; - ++this[w]; - } - } - - // A "null" reducer - function NullExp() {} - function nNop(x) { return x; } - function nMulTo(x,y,r) { x.multiplyTo(y,r); } - function nSqrTo(x,r) { x.squareTo(r); } - - NullExp.prototype.convert = nNop; - NullExp.prototype.revert = nNop; - NullExp.prototype.mulTo = nMulTo; - NullExp.prototype.sqrTo = nSqrTo; - - // (public) this^e - function bnPow(e) { return this.exp(e,new NullExp()); } - - // (protected) r = lower n words of "this * a", a.t <= n - // "this" should be the larger one if appropriate. - function bnpMultiplyLowerTo(a,n,r) { - var i = Math.min(this.t+a.t,n); - r.s = 0; // assumes a,this >= 0 - r.t = i; - while(i > 0) r[--i] = 0; - var j; - for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); - for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); - r.clamp(); - } - - // (protected) r = "this * a" without lower n words, n > 0 - // "this" should be the larger one if appropriate. - function bnpMultiplyUpperTo(a,n,r) { - --n; - var i = r.t = this.t+a.t-n; - r.s = 0; // assumes a,this >= 0 - while(--i >= 0) r[i] = 0; - for(i = Math.max(n-this.t,0); i < a.t; ++i) - r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); - r.clamp(); - r.drShiftTo(1,r); - } - - // Barrett modular reduction - function Barrett(m) { - // setup Barrett - this.r2 = nbi(); - this.q3 = nbi(); - BigInteger.ONE.dlShiftTo(2*m.t,this.r2); - this.mu = this.r2.divide(m); - this.m = m; - } - - function barrettConvert(x) { - if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); - else if(x.compareTo(this.m) < 0) return x; - else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } - } - - function barrettRevert(x) { return x; } - - // x = x mod m (HAC 14.42) - function barrettReduce(x) { - x.drShiftTo(this.m.t-1,this.r2); - if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } - this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); - this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); - while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); - x.subTo(this.r2,x); - while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); - } - - // r = x^2 mod m; x != r - function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } - - // r = x*y mod m; x,y != r - function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } - - Barrett.prototype.convert = barrettConvert; - Barrett.prototype.revert = barrettRevert; - Barrett.prototype.reduce = barrettReduce; - Barrett.prototype.mulTo = barrettMulTo; - Barrett.prototype.sqrTo = barrettSqrTo; - - // (public) this^e % m (HAC 14.85) - function bnModPow(e,m) { - var i = e.bitLength(), k, r = nbv(1), z; - if(i <= 0) return r; - else if(i < 18) k = 1; - else if(i < 48) k = 3; - else if(i < 144) k = 4; - else if(i < 768) k = 5; - else k = 6; - if(i < 8) - z = new Classic(m); - else if(m.isEven()) - z = new Barrett(m); - else - z = new Montgomery(m); - - // precomputation - var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { - var g2 = nbi(); - z.sqrTo(g[1],g2); - while(n <= km) { - g[n] = nbi(); - z.mulTo(g2,g[n-2],g[n]); - n += 2; - } - } - - var j = e.t-1, w, is1 = true, r2 = nbi(), t; - i = nbits(e[j])-1; - while(j >= 0) { - if(i >= k1) w = (e[j]>>(i-k1))&km; - else { - w = (e[j]&((1<<(i+1))-1))<<(k1-i); - if(j > 0) w |= e[j-1]>>(this.DB+i-k1); - } - - n = k; - while((w&1) == 0) { w >>= 1; --n; } - if((i -= n) < 0) { i += this.DB; --j; } - if(is1) { // ret == 1, don't bother squaring or multiplying it - g[w].copyTo(r); - is1 = false; - } - else { - while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } - if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } - z.mulTo(r2,g[w],r); - } - - while(j >= 0 && (e[j]&(1< 0) { - x.rShiftTo(g,x); - y.rShiftTo(g,y); - } - while(x.signum() > 0) { - if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); - if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); - if(x.compareTo(y) >= 0) { - x.subTo(y,x); - x.rShiftTo(1,x); - } - else { - y.subTo(x,y); - y.rShiftTo(1,y); - } - } - if(g > 0) y.lShiftTo(g,y); - return y; - } - - // (protected) this % n, n < 2^26 - function bnpModInt(n) { - if(n <= 0) return 0; - var d = this.DV%n, r = (this.s<0)?n-1:0; - if(this.t > 0) - if(d == 0) r = this[0]%n; - else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; - return r; - } - - // (public) 1/this % m (HAC 14.61) - function bnModInverse(m) { - var ac = m.isEven(); - if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; - var u = m.clone(), v = this.clone(); - var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); - while(u.signum() != 0) { - while(u.isEven()) { - u.rShiftTo(1,u); - if(ac) { - if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } - a.rShiftTo(1,a); - } - else if(!b.isEven()) b.subTo(m,b); - b.rShiftTo(1,b); - } - while(v.isEven()) { - v.rShiftTo(1,v); - if(ac) { - if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } - c.rShiftTo(1,c); - } - else if(!d.isEven()) d.subTo(m,d); - d.rShiftTo(1,d); - } - if(u.compareTo(v) >= 0) { - u.subTo(v,u); - if(ac) a.subTo(c,a); - b.subTo(d,b); - } - else { - v.subTo(u,v); - if(ac) c.subTo(a,c); - d.subTo(b,d); - } - } - if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; - if(d.compareTo(m) >= 0) return d.subtract(m); - if(d.signum() < 0) d.addTo(m,d); else return d; - if(d.signum() < 0) return d.add(m); else return d; - } - - var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; - var lplim = (1<<26)/lowprimes[lowprimes.length-1]; - - // (public) test primality with certainty >= 1-.5^t - function bnIsProbablePrime(t) { - var i, x = this.abs(); - if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { - for(i = 0; i < lowprimes.length; ++i) - if(x[0] == lowprimes[i]) return true; - return false; - } - if(x.isEven()) return false; - i = 1; - while(i < lowprimes.length) { - var m = lowprimes[i], j = i+1; - while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; - m = x.modInt(m); - while(i < j) if(m%lowprimes[i++] == 0) return false; - } - return x.millerRabin(t); - } - - // (protected) true if probably prime (HAC 4.24, Miller-Rabin) - function bnpMillerRabin(t) { - var n1 = this.subtract(BigInteger.ONE); - var k = n1.getLowestSetBit(); - if(k <= 0) return false; - var r = n1.shiftRight(k); - t = (t+1)>>1; - if(t > lowprimes.length) t = lowprimes.length; - var a = nbi(); - for(var i = 0; i < t; ++i) { - //Pick bases at random, instead of starting at 2 - a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); - var y = a.modPow(r,this); - if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { - var j = 1; - while(j++ < k && y.compareTo(n1) != 0) { - y = y.modPowInt(2,this); - if(y.compareTo(BigInteger.ONE) == 0) return false; - } - if(y.compareTo(n1) != 0) return false; - } - } - return true; - } - - // protected - BigInteger.prototype.chunkSize = bnpChunkSize; - BigInteger.prototype.toRadix = bnpToRadix; - BigInteger.prototype.fromRadix = bnpFromRadix; - BigInteger.prototype.fromNumber = bnpFromNumber; - BigInteger.prototype.bitwiseTo = bnpBitwiseTo; - BigInteger.prototype.changeBit = bnpChangeBit; - BigInteger.prototype.addTo = bnpAddTo; - BigInteger.prototype.dMultiply = bnpDMultiply; - BigInteger.prototype.dAddOffset = bnpDAddOffset; - BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; - BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; - BigInteger.prototype.modInt = bnpModInt; - BigInteger.prototype.millerRabin = bnpMillerRabin; - - // public - BigInteger.prototype.clone = bnClone; - BigInteger.prototype.intValue = bnIntValue; - BigInteger.prototype.byteValue = bnByteValue; - BigInteger.prototype.shortValue = bnShortValue; - BigInteger.prototype.signum = bnSigNum; - BigInteger.prototype.toByteArray = bnToByteArray; - BigInteger.prototype.equals = bnEquals; - BigInteger.prototype.min = bnMin; - BigInteger.prototype.max = bnMax; - BigInteger.prototype.and = bnAnd; - BigInteger.prototype.or = bnOr; - BigInteger.prototype.xor = bnXor; - BigInteger.prototype.andNot = bnAndNot; - BigInteger.prototype.not = bnNot; - BigInteger.prototype.shiftLeft = bnShiftLeft; - BigInteger.prototype.shiftRight = bnShiftRight; - BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; - BigInteger.prototype.bitCount = bnBitCount; - BigInteger.prototype.testBit = bnTestBit; - BigInteger.prototype.setBit = bnSetBit; - BigInteger.prototype.clearBit = bnClearBit; - BigInteger.prototype.flipBit = bnFlipBit; - BigInteger.prototype.add = bnAdd; - BigInteger.prototype.subtract = bnSubtract; - BigInteger.prototype.multiply = bnMultiply; - BigInteger.prototype.divide = bnDivide; - BigInteger.prototype.remainder = bnRemainder; - BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; - BigInteger.prototype.modPow = bnModPow; - BigInteger.prototype.modInverse = bnModInverse; - BigInteger.prototype.pow = bnPow; - BigInteger.prototype.gcd = bnGCD; - BigInteger.prototype.isProbablePrime = bnIsProbablePrime; - - // JSBN-specific extension - BigInteger.prototype.square = bnSquare; - - // Expose the Barrett function - BigInteger.prototype.Barrett = Barrett - - // BigInteger interfaces not implemented in jsbn: - - // BigInteger(int signum, byte[] magnitude) - // double doubleValue() - // float floatValue() - // int hashCode() - // long longValue() - // static BigInteger valueOf(long val) - - // Random number generator - requires a PRNG backend, e.g. prng4.js - - // For best results, put code like - // - // in your main HTML document. - - var rng_state; - var rng_pool; - var rng_pptr; - - // Mix in a 32-bit integer into the pool - function rng_seed_int(x) { - rng_pool[rng_pptr++] ^= x & 255; - rng_pool[rng_pptr++] ^= (x >> 8) & 255; - rng_pool[rng_pptr++] ^= (x >> 16) & 255; - rng_pool[rng_pptr++] ^= (x >> 24) & 255; - if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; - } - - // Mix in the current time (w/milliseconds) into the pool - function rng_seed_time() { - rng_seed_int(new Date().getTime()); - } - - // Initialize the pool with junk if needed. - if(rng_pool == null) { - rng_pool = new Array(); - rng_pptr = 0; - var t; - if(typeof window !== "undefined" && window.crypto) { - if (window.crypto.getRandomValues) { - // Use webcrypto if available - var ua = new Uint8Array(32); - window.crypto.getRandomValues(ua); - for(t = 0; t < 32; ++t) - rng_pool[rng_pptr++] = ua[t]; - } - else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { - // Extract entropy (256 bits) from NS4 RNG if available - var z = window.crypto.random(32); - for(t = 0; t < z.length; ++t) - rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; - } - } - while(rng_pptr < rng_psize) { // extract some randomness from Math.random() - t = Math.floor(65536 * Math.random()); - rng_pool[rng_pptr++] = t >>> 8; - rng_pool[rng_pptr++] = t & 255; - } - rng_pptr = 0; - rng_seed_time(); - //rng_seed_int(window.screenX); - //rng_seed_int(window.screenY); - } - - function rng_get_byte() { - if(rng_state == null) { - rng_seed_time(); - rng_state = prng_newstate(); - rng_state.init(rng_pool); - for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) - rng_pool[rng_pptr] = 0; - rng_pptr = 0; - //rng_pool = null; - } - // TODO: allow reseeding after first request - return rng_state.next(); - } - - function rng_get_bytes(ba) { - var i; - for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); - } - - function SecureRandom() {} - - SecureRandom.prototype.nextBytes = rng_get_bytes; - - // prng4.js - uses Arcfour as a PRNG - - function Arcfour() { - this.i = 0; - this.j = 0; - this.S = new Array(); - } - - // Initialize arcfour context from key, an array of ints, each from [0..255] - function ARC4init(key) { - var i, j, t; - for(i = 0; i < 256; ++i) - this.S[i] = i; - j = 0; - for(i = 0; i < 256; ++i) { - j = (j + this.S[i] + key[i % key.length]) & 255; - t = this.S[i]; - this.S[i] = this.S[j]; - this.S[j] = t; - } - this.i = 0; - this.j = 0; - } - - function ARC4next() { - var t; - this.i = (this.i + 1) & 255; - this.j = (this.j + this.S[this.i]) & 255; - t = this.S[this.i]; - this.S[this.i] = this.S[this.j]; - this.S[this.j] = t; - return this.S[(t + this.S[this.i]) & 255]; - } - - Arcfour.prototype.init = ARC4init; - Arcfour.prototype.next = ARC4next; - - // Plug in your RNG constructor here - function prng_newstate() { - return new Arcfour(); - } - - // Pool size must be a multiple of 4 and greater than 32. - // An array of bytes the size of the pool will be passed to init() - var rng_psize = 256; - - if (typeof exports !== 'undefined') { - exports = module.exports = { - BigInteger: BigInteger, - SecureRandom: SecureRandom, - }; - } else { - this.BigInteger = BigInteger; - this.SecureRandom = SecureRandom; - } - -}).call(this); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/package.json deleted file mode 100644 index 288d9b3c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsbn/package.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_args": [ - [ - "jsbn@~0.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "jsbn@>=0.1.0 <0.2.0", - "_id": "jsbn@0.1.0", - "_inCache": true, - "_installable": true, - "_location": "/jsbn", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "andyperlitch@gmail.com", - "name": "andyperlitch" - }, - "_npmVersion": "2.7.4", - "_phantomChildren": {}, - "_requested": { - "name": "jsbn", - "raw": "jsbn@~0.1.0", - "rawSpec": "~0.1.0", - "scope": null, - "spec": ">=0.1.0 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/ecc-jsbn", - "/jodid25519", - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", - "_shasum": "650987da0dd74f4ebf5a11377a2aa2d273e97dfd", - "_shrinkwrap": null, - "_spec": "jsbn@~0.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "name": "Tom Wu" - }, - "bugs": { - "url": "https://github.com/andyperlitch/jsbn/issues" - }, - "dependencies": {}, - "description": "The jsbn library is a fast, portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "650987da0dd74f4ebf5a11377a2aa2d273e97dfd", - "tarball": "http://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" - }, - "gitHead": "148a967b112806e63ddeeed78ee7938eef74c84a", - "homepage": "https://github.com/andyperlitch/jsbn", - "keywords": [ - "biginteger", - "bignumber", - "big", - "integer" - ], - "license": "BSD", - "main": "index.js", - "maintainers": [ - { - "email": "andyperlitch@gmail.com", - "name": "andyperlitch" - } - ], - "name": "jsbn", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/andyperlitch/jsbn.git" - }, - "scripts": { - "test": "mocha test.js" - }, - "version": "0.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/README.md deleted file mode 100644 index ccc591b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/README.md +++ /dev/null @@ -1,5 +0,0 @@ -JSON Schema is a repository for the JSON Schema specification, reference schemas and a CommonJS implementation of JSON Schema (not the only JavaScript implementation of JSON Schema, JSV is another excellent JavaScript validator). - -Code is licensed under the AFL or BSD license as part of the Persevere -project which is administered under the Dojo foundation, -and all contributions require a Dojo CLA. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/hyper-schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/hyper-schema deleted file mode 100644 index 12fe26b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/hyper-schema +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-00/hyper-schema#", - "id" : "http://json-schema.org/draft-00/hyper-schema#", - - "properties" : { - "links" : { - "type" : "array", - "items" : {"$ref" : "http://json-schema.org/draft-00/links#"}, - "optional" : true - }, - - "fragmentResolution" : { - "type" : "string", - "optional" : true, - "default" : "dot-delimited" - }, - - "root" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "readonly" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "pathStart" : { - "type" : "string", - "optional" : true, - "format" : "uri" - }, - - "mediaType" : { - "type" : "string", - "optional" : true, - "format" : "media-type" - }, - - "alternate" : { - "type" : "array", - "items" : {"$ref" : "#"}, - "optional" : true - } - }, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "dot-delimited", - "extends" : {"$ref" : "http://json-schema.org/draft-00/schema#"} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/json-ref b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/json-ref deleted file mode 100644 index 0c825bce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/json-ref +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-00/hyper-schema#", - "id" : "http://json-schema.org/draft-00/json-ref#", - - "items" : {"$ref" : "#"}, - "additionalProperties" : {"$ref" : "#"}, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "dot-delimited" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/links b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/links deleted file mode 100644 index c9b55177..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/links +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-00/hyper-schema#", - "id" : "http://json-schema.org/draft-00/links#", - "type" : "object", - - "properties" : { - "href" : { - "type" : "string" - }, - - "rel" : { - "type" : "string" - }, - - "method" : { - "type" : "string", - "default" : "GET", - "optional" : true - }, - - "enctype" : { - "type" : "string", - "requires" : "method", - "optional" : true - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "http://json-schema.org/draft-00/hyper-schema#"}, - "optional" : true - } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/schema deleted file mode 100644 index a3a21443..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-00/schema +++ /dev/null @@ -1,155 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-00/hyper-schema#", - "id" : "http://json-schema.org/draft-00/schema#", - "type" : "object", - - "properties" : { - "type" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "optional" : true, - "default" : "any" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "items" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "optional" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "additionalProperties" : { - "type" : [{"$ref" : "#"}, "boolean"], - "optional" : true, - "default" : {} - }, - - "requires" : { - "type" : ["string", {"$ref" : "#"}], - "optional" : true - }, - - "minimum" : { - "type" : "number", - "optional" : true - }, - - "maximum" : { - "type" : "number", - "optional" : true - }, - - "minimumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "minimum", - "default" : true - }, - - "maximumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "maximum", - "default" : true - }, - - "minItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0 - }, - - "pattern" : { - "type" : "string", - "optional" : true, - "format" : "regex" - }, - - "minLength" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxLength" : { - "type" : "integer", - "optional" : true - }, - - "enum" : { - "type" : "array", - "optional" : true, - "minItems" : 1 - }, - - "title" : { - "type" : "string", - "optional" : true - }, - - "description" : { - "type" : "string", - "optional" : true - }, - - "format" : { - "type" : "string", - "optional" : true - }, - - "contentEncoding" : { - "type" : "string", - "optional" : true - }, - - "default" : { - "type" : "any", - "optional" : true - }, - - "maxDecimal" : { - "type" : "integer", - "optional" : true, - "minimum" : 0 - }, - - "disallow" : { - "type" : ["string", "array"], - "items" : {"type" : "string"}, - "optional" : true - }, - - "extends" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - } - }, - - "optional" : true, - "default" : {} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/hyper-schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/hyper-schema deleted file mode 100644 index 66e835b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/hyper-schema +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-01/hyper-schema#", - "id" : "http://json-schema.org/draft-01/hyper-schema#", - - "properties" : { - "links" : { - "type" : "array", - "items" : {"$ref" : "http://json-schema.org/draft-01/links#"}, - "optional" : true - }, - - "fragmentResolution" : { - "type" : "string", - "optional" : true, - "default" : "dot-delimited" - }, - - "root" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "readonly" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "pathStart" : { - "type" : "string", - "optional" : true, - "format" : "uri" - }, - - "mediaType" : { - "type" : "string", - "optional" : true, - "format" : "media-type" - }, - - "alternate" : { - "type" : "array", - "items" : {"$ref" : "#"}, - "optional" : true - } - }, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "dot-delimited", - "extends" : {"$ref" : "http://json-schema.org/draft-01/schema#"} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/json-ref b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/json-ref deleted file mode 100644 index f2ad55b1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/json-ref +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-01/hyper-schema#", - "id" : "http://json-schema.org/draft-01/json-ref#", - - "items" : {"$ref" : "#"}, - "additionalProperties" : {"$ref" : "#"}, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "dot-delimited" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/links b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/links deleted file mode 100644 index cb183c4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/links +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-01/hyper-schema#", - "id" : "http://json-schema.org/draft-01/links#", - "type" : "object", - - "properties" : { - "href" : { - "type" : "string" - }, - - "rel" : { - "type" : "string" - }, - - "method" : { - "type" : "string", - "default" : "GET", - "optional" : true - }, - - "enctype" : { - "type" : "string", - "requires" : "method", - "optional" : true - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "http://json-schema.org/draft-01/hyper-schema#"}, - "optional" : true - } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/schema deleted file mode 100644 index e6b6aea4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-01/schema +++ /dev/null @@ -1,155 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-01/hyper-schema#", - "id" : "http://json-schema.org/draft-01/schema#", - "type" : "object", - - "properties" : { - "type" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "optional" : true, - "default" : "any" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "items" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "optional" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "additionalProperties" : { - "type" : [{"$ref" : "#"}, "boolean"], - "optional" : true, - "default" : {} - }, - - "requires" : { - "type" : ["string", {"$ref" : "#"}], - "optional" : true - }, - - "minimum" : { - "type" : "number", - "optional" : true - }, - - "maximum" : { - "type" : "number", - "optional" : true - }, - - "minimumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "minimum", - "default" : true - }, - - "maximumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "maximum", - "default" : true - }, - - "minItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0 - }, - - "pattern" : { - "type" : "string", - "optional" : true, - "format" : "regex" - }, - - "minLength" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxLength" : { - "type" : "integer", - "optional" : true - }, - - "enum" : { - "type" : "array", - "optional" : true, - "minItems" : 1 - }, - - "title" : { - "type" : "string", - "optional" : true - }, - - "description" : { - "type" : "string", - "optional" : true - }, - - "format" : { - "type" : "string", - "optional" : true - }, - - "contentEncoding" : { - "type" : "string", - "optional" : true - }, - - "default" : { - "type" : "any", - "optional" : true - }, - - "maxDecimal" : { - "type" : "integer", - "optional" : true, - "minimum" : 0 - }, - - "disallow" : { - "type" : ["string", "array"], - "items" : {"type" : "string"}, - "optional" : true - }, - - "extends" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - } - }, - - "optional" : true, - "default" : {} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/hyper-schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/hyper-schema deleted file mode 100644 index 2d2bc685..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/hyper-schema +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-02/hyper-schema#", - "id" : "http://json-schema.org/draft-02/hyper-schema#", - - "properties" : { - "links" : { - "type" : "array", - "items" : {"$ref" : "http://json-schema.org/draft-02/links#"}, - "optional" : true - }, - - "fragmentResolution" : { - "type" : "string", - "optional" : true, - "default" : "slash-delimited" - }, - - "root" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "readonly" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "pathStart" : { - "type" : "string", - "optional" : true, - "format" : "uri" - }, - - "mediaType" : { - "type" : "string", - "optional" : true, - "format" : "media-type" - }, - - "alternate" : { - "type" : "array", - "items" : {"$ref" : "#"}, - "optional" : true - } - }, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "slash-delimited", - "extends" : {"$ref" : "http://json-schema.org/draft-02/schema#"} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/json-ref b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/json-ref deleted file mode 100644 index 2b23fcdc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/json-ref +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-02/hyper-schema#", - "id" : "http://json-schema.org/draft-02/json-ref#", - - "items" : {"$ref" : "#"}, - "additionalProperties" : {"$ref" : "#"}, - - "links" : [ - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - }, - - { - "href" : "{id}", - "rel" : "self" - } - ], - - "fragmentResolution" : "dot-delimited" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/links b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/links deleted file mode 100644 index ab971b7c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/links +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-02/hyper-schema#", - "id" : "http://json-schema.org/draft-02/links#", - "type" : "object", - - "properties" : { - "href" : { - "type" : "string" - }, - - "rel" : { - "type" : "string" - }, - - "targetSchema" : {"$ref" : "http://json-schema.org/draft-02/hyper-schema#"}, - - "method" : { - "type" : "string", - "default" : "GET", - "optional" : true - }, - - "enctype" : { - "type" : "string", - "requires" : "method", - "optional" : true - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "http://json-schema.org/draft-02/hyper-schema#"}, - "optional" : true - } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/schema deleted file mode 100644 index cc2b6693..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-02/schema +++ /dev/null @@ -1,166 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-02/hyper-schema#", - "id" : "http://json-schema.org/draft-02/schema#", - "type" : "object", - - "properties" : { - "type" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "optional" : true, - "uniqueItems" : true, - "default" : "any" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "items" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - }, - - "optional" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "additionalProperties" : { - "type" : [{"$ref" : "#"}, "boolean"], - "optional" : true, - "default" : {} - }, - - "requires" : { - "type" : ["string", {"$ref" : "#"}], - "optional" : true - }, - - "minimum" : { - "type" : "number", - "optional" : true - }, - - "maximum" : { - "type" : "number", - "optional" : true - }, - - "minimumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "minimum", - "default" : true - }, - - "maximumCanEqual" : { - "type" : "boolean", - "optional" : true, - "requires" : "maximum", - "default" : true - }, - - "minItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxItems" : { - "type" : "integer", - "optional" : true, - "minimum" : 0 - }, - - "uniqueItems" : { - "type" : "boolean", - "optional" : true, - "default" : false - }, - - "pattern" : { - "type" : "string", - "optional" : true, - "format" : "regex" - }, - - "minLength" : { - "type" : "integer", - "optional" : true, - "minimum" : 0, - "default" : 0 - }, - - "maxLength" : { - "type" : "integer", - "optional" : true - }, - - "enum" : { - "type" : "array", - "optional" : true, - "minItems" : 1, - "uniqueItems" : true - }, - - "title" : { - "type" : "string", - "optional" : true - }, - - "description" : { - "type" : "string", - "optional" : true - }, - - "format" : { - "type" : "string", - "optional" : true - }, - - "contentEncoding" : { - "type" : "string", - "optional" : true - }, - - "default" : { - "type" : "any", - "optional" : true - }, - - "divisibleBy" : { - "type" : "number", - "minimum" : 0, - "minimumCanEqual" : false, - "optional" : true, - "default" : 1 - }, - - "disallow" : { - "type" : ["string", "array"], - "items" : {"type" : "string"}, - "optional" : true, - "uniqueItems" : true - }, - - "extends" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "optional" : true, - "default" : {} - } - }, - - "optional" : true, - "default" : {} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/address b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/address deleted file mode 100644 index 401f20f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/address +++ /dev/null @@ -1,20 +0,0 @@ -{ - "description" : "An Address following the convention of http://microformats.org/wiki/hcard", - "type" : "object", - "properties" : { - "post-office-box" : { "type" : "string" }, - "extended-address" : { "type" : "string" }, - "street-address" : { "type":"string" }, - "locality" : { "type" : "string", "required" : true }, - "region" : { "type" : "string", "required" : true }, - "postal-code" : { "type" : "string" }, - "country-name" : { "type" : "string", "required" : true } - }, - "dependencies" : { - "post-office-box" : "street-address", - "extended-address" : "street-address", - "street-address" : "region", - "locality" : "region", - "region" : "country-name" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/calendar b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/calendar deleted file mode 100644 index 0ec47c23..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/calendar +++ /dev/null @@ -1,53 +0,0 @@ -{ - "description" : "A representation of an event", - "type" : "object", - "properties" : { - "dtstart" : { - "format" : "date-time", - "type" : "string", - "description" : "Event starting time", - "required":true - }, - "summary" : { - "type":"string", - "required":true - }, - "location" : { - "type" : "string" - }, - "url" : { - "type" : "string", - "format" : "url" - }, - "dtend" : { - "format" : "date-time", - "type" : "string", - "description" : "Event ending time" - }, - "duration" : { - "format" : "date", - "type" : "string", - "description" : "Event duration" - }, - "rdate" : { - "format" : "date-time", - "type" : "string", - "description" : "Recurrence date" - }, - "rrule" : { - "type" : "string", - "description" : "Recurrence rule" - }, - "category" : { - "type" : "string" - }, - "description" : { - "type" : "string" - }, - "geo" : { "$ref" : "http://json-schema.org/draft-03/geo" } - } -} - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/card b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/card deleted file mode 100644 index a5667ffd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/card +++ /dev/null @@ -1,105 +0,0 @@ -{ - "description":"A representation of a person, company, organization, or place", - "type":"object", - "properties":{ - "fn":{ - "description":"Formatted Name", - "type":"string" - }, - "familyName":{ - "type":"string", - "required":true - }, - "givenName":{ - "type":"string", - "required":true - }, - "additionalName":{ - "type":"array", - "items":{ - "type":"string" - } - }, - "honorificPrefix":{ - "type":"array", - "items":{ - "type":"string" - } - }, - "honorificSuffix":{ - "type":"array", - "items":{ - "type":"string" - } - }, - "nickname":{ - "type":"string" - }, - "url":{ - "type":"string", - "format":"url" - }, - "email":{ - "type":"object", - "properties":{ - "type":{ - "type":"string" - }, - "value":{ - "type":"string", - "format":"email" - } - } - }, - "tel":{ - "type":"object", - "properties":{ - "type":{ - "type":"string" - }, - "value":{ - "type":"string", - "format":"phone" - } - } - }, - "adr":{"$ref" : "http://json-schema.org/address"}, - "geo":{"$ref" : "http://json-schema.org/geo"}, - "tz":{ - "type":"string" - }, - "photo":{ - "format":"image", - "type":"string" - }, - "logo":{ - "format":"image", - "type":"string" - }, - "sound":{ - "format":"attachment", - "type":"string" - }, - "bday":{ - "type":"string", - "format":"date" - }, - "title":{ - "type":"string" - }, - "role":{ - "type":"string" - }, - "org":{ - "type":"object", - "properties":{ - "organizationName":{ - "type":"string" - }, - "organizationUnit":{ - "type":"string" - } - } - } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/geo b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/geo deleted file mode 100644 index 4357a909..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/geo +++ /dev/null @@ -1,8 +0,0 @@ -{ - "description" : "A geographical coordinate", - "type" : "object", - "properties" : { - "latitude" : { "type" : "number" }, - "longitude" : { "type" : "number" } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/interfaces b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/interfaces deleted file mode 100644 index b8532f29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/examples/interfaces +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends":"http://json-schema.org/hyper-schema", - "description":"A schema for schema interface definitions that describe programmatic class structures using JSON schema syntax", - "properties":{ - "methods":{ - "type":"object", - "description":"This defines the set of methods available to the class instances", - "additionalProperties":{ - "type":"object", - "description":"The definition of the method", - "properties":{ - "parameters":{ - "type":"array", - "description":"The set of parameters that should be passed to the method when it is called", - "items":{"$ref":"#"}, - "required": true - }, - "returns":{"$ref":"#"} - } - } - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/hyper-schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/hyper-schema deleted file mode 100644 index 38ca2e10..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/hyper-schema +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-03/hyper-schema#", - "extends" : {"$ref" : "http://json-schema.org/draft-03/schema#"}, - "id" : "http://json-schema.org/draft-03/hyper-schema#", - - "properties" : { - "links" : { - "type" : "array", - "items" : {"$ref" : "http://json-schema.org/draft-03/links#"} - }, - - "fragmentResolution" : { - "type" : "string", - "default" : "slash-delimited" - }, - - "root" : { - "type" : "boolean", - "default" : false - }, - - "readonly" : { - "type" : "boolean", - "default" : false - }, - - "contentEncoding" : { - "type" : "string" - }, - - "pathStart" : { - "type" : "string", - "format" : "uri" - }, - - "mediaType" : { - "type" : "string", - "format" : "media-type" - } - }, - - "links" : [ - { - "href" : "{id}", - "rel" : "self" - }, - - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - } - ], - - "fragmentResolution" : "slash-delimited" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/json-ref b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/json-ref deleted file mode 100644 index 66e08f26..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/json-ref +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-03/hyper-schema#", - "id" : "http://json-schema.org/draft-03/json-ref#", - - "additionalItems" : {"$ref" : "#"}, - "additionalProperties" : {"$ref" : "#"}, - - "links" : [ - { - "href" : "{id}", - "rel" : "self" - }, - - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - } - ], - - "fragmentResolution" : "dot-delimited" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/links b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/links deleted file mode 100644 index 9fa63f98..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/links +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-03/hyper-schema#", - "id" : "http://json-schema.org/draft-03/links#", - "type" : "object", - - "properties" : { - "href" : { - "type" : "string", - "required" : true, - "format" : "link-description-object-template" - }, - - "rel" : { - "type" : "string", - "required" : true - }, - - "targetSchema" : {"$ref" : "http://json-schema.org/draft-03/hyper-schema#"}, - - "method" : { - "type" : "string", - "default" : "GET" - }, - - "enctype" : { - "type" : "string", - "requires" : "method" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "http://json-schema.org/draft-03/hyper-schema#"} - } - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/schema deleted file mode 100644 index 29d9469f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-03/schema +++ /dev/null @@ -1,174 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-03/schema#", - "id" : "http://json-schema.org/draft-03/schema#", - "type" : "object", - - "properties" : { - "type" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "uniqueItems" : true, - "default" : "any" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "default" : {} - }, - - "patternProperties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "default" : {} - }, - - "additionalProperties" : { - "type" : [{"$ref" : "#"}, "boolean"], - "default" : {} - }, - - "items" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "default" : {} - }, - - "additionalItems" : { - "type" : [{"$ref" : "#"}, "boolean"], - "default" : {} - }, - - "required" : { - "type" : "boolean", - "default" : false - }, - - "dependencies" : { - "type" : "object", - "additionalProperties" : { - "type" : ["string", "array", {"$ref" : "#"}], - "items" : { - "type" : "string" - } - }, - "default" : {} - }, - - "minimum" : { - "type" : "number" - }, - - "maximum" : { - "type" : "number" - }, - - "exclusiveMinimum" : { - "type" : "boolean", - "default" : false - }, - - "exclusiveMaximum" : { - "type" : "boolean", - "default" : false - }, - - "minItems" : { - "type" : "integer", - "minimum" : 0, - "default" : 0 - }, - - "maxItems" : { - "type" : "integer", - "minimum" : 0 - }, - - "uniqueItems" : { - "type" : "boolean", - "default" : false - }, - - "pattern" : { - "type" : "string", - "format" : "regex" - }, - - "minLength" : { - "type" : "integer", - "minimum" : 0, - "default" : 0 - }, - - "maxLength" : { - "type" : "integer" - }, - - "enum" : { - "type" : "array", - "minItems" : 1, - "uniqueItems" : true - }, - - "default" : { - "type" : "any" - }, - - "title" : { - "type" : "string" - }, - - "description" : { - "type" : "string" - }, - - "format" : { - "type" : "string" - }, - - "divisibleBy" : { - "type" : "number", - "minimum" : 0, - "exclusiveMinimum" : true, - "default" : 1 - }, - - "disallow" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "uniqueItems" : true - }, - - "extends" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "default" : {} - }, - - "id" : { - "type" : "string", - "format" : "uri" - }, - - "$ref" : { - "type" : "string", - "format" : "uri" - }, - - "$schema" : { - "type" : "string", - "format" : "uri" - } - }, - - "dependencies" : { - "exclusiveMinimum" : "minimum", - "exclusiveMaximum" : "maximum" - }, - - "default" : {} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/hyper-schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/hyper-schema deleted file mode 100644 index 63fb34d9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/hyper-schema +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-04/hyper-schema#", - "extends" : {"$ref" : "http://json-schema.org/draft-04/schema#"}, - "id" : "http://json-schema.org/draft-04/hyper-schema#", - - "properties" : { - "links" : { - "type" : "array", - "items" : {"$ref" : "http://json-schema.org/draft-04/links#"} - }, - - "fragmentResolution" : { - "type" : "string", - "default" : "json-pointer" - }, - - "root" : { - "type" : "boolean", - "default" : false - }, - - "readonly" : { - "type" : "boolean", - "default" : false - }, - - "contentEncoding" : { - "type" : "string" - }, - - "pathStart" : { - "type" : "string", - "format" : "uri" - }, - - "mediaType" : { - "type" : "string", - "format" : "media-type" - } - }, - - "links" : [ - { - "href" : "{id}", - "rel" : "self" - }, - - { - "href" : "{$ref}", - "rel" : "full" - }, - - { - "href" : "{$schema}", - "rel" : "describedby" - } - ], - - "fragmentResolution" : "json-pointer" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/links b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/links deleted file mode 100644 index 6c06d293..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/links +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-04/hyper-schema#", - "id" : "http://json-schema.org/draft-04/links#", - "type" : "object", - - "properties" : { - "rel" : { - "type" : "string" - }, - - "href" : { - "type" : "string" - }, - - "template" : { - "type" : "string" - }, - - "targetSchema" : {"$ref" : "http://json-schema.org/draft-04/hyper-schema#"}, - - "method" : { - "type" : "string", - "default" : "GET" - }, - - "enctype" : { - "type" : "string" - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "http://json-schema.org/draft-04/hyper-schema#"} - } - }, - - "required" : ["rel", "href"], - - "dependencies" : { - "enctype" : "method" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/schema b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/schema deleted file mode 100644 index 4231b169..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-04/schema +++ /dev/null @@ -1,189 +0,0 @@ -{ - "$schema" : "http://json-schema.org/draft-04/schema#", - "id" : "http://json-schema.org/draft-04/schema#", - "type" : "object", - - "properties" : { - "type" : { - "type" : [ - { - "id" : "#simple-type", - "type" : "string", - "enum" : ["object", "array", "string", "number", "boolean", "null", "any"] - }, - "array" - ], - "items" : { - "type" : [ - {"$ref" : "#simple-type"}, - {"$ref" : "#"} - ] - }, - "uniqueItems" : true, - "default" : "any" - }, - - "disallow" : { - "type" : ["string", "array"], - "items" : { - "type" : ["string", {"$ref" : "#"}] - }, - "uniqueItems" : true - }, - - "extends" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "default" : {} - }, - - "enum" : { - "type" : "array", - "minItems" : 1, - "uniqueItems" : true - }, - - "minimum" : { - "type" : "number" - }, - - "maximum" : { - "type" : "number" - }, - - "exclusiveMinimum" : { - "type" : "boolean", - "default" : false - }, - - "exclusiveMaximum" : { - "type" : "boolean", - "default" : false - }, - - "divisibleBy" : { - "type" : "number", - "minimum" : 0, - "exclusiveMinimum" : true, - "default" : 1 - }, - - "minLength" : { - "type" : "integer", - "minimum" : 0, - "default" : 0 - }, - - "maxLength" : { - "type" : "integer" - }, - - "pattern" : { - "type" : "string" - }, - - "items" : { - "type" : [{"$ref" : "#"}, "array"], - "items" : {"$ref" : "#"}, - "default" : {} - }, - - "additionalItems" : { - "type" : [{"$ref" : "#"}, "boolean"], - "default" : {} - }, - - "minItems" : { - "type" : "integer", - "minimum" : 0, - "default" : 0 - }, - - "maxItems" : { - "type" : "integer", - "minimum" : 0 - }, - - "uniqueItems" : { - "type" : "boolean", - "default" : false - }, - - "properties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "default" : {} - }, - - "patternProperties" : { - "type" : "object", - "additionalProperties" : {"$ref" : "#"}, - "default" : {} - }, - - "additionalProperties" : { - "type" : [{"$ref" : "#"}, "boolean"], - "default" : {} - }, - - "minProperties" : { - "type" : "integer", - "minimum" : 0, - "default" : 0 - }, - - "maxProperties" : { - "type" : "integer", - "minimum" : 0 - }, - - "required" : { - "type" : "array", - "items" : { - "type" : "string" - } - }, - - "dependencies" : { - "type" : "object", - "additionalProperties" : { - "type" : ["string", "array", {"$ref" : "#"}], - "items" : { - "type" : "string" - } - }, - "default" : {} - }, - - "id" : { - "type" : "string" - }, - - "$ref" : { - "type" : "string" - }, - - "$schema" : { - "type" : "string" - }, - - "title" : { - "type" : "string" - }, - - "description" : { - "type" : "string" - }, - - "default" : { - "type" : "any" - } - }, - - "dependencies" : { - "exclusiveMinimum" : "minimum", - "exclusiveMaximum" : "maximum" - }, - - "default" : {} -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-03.xml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-03.xml deleted file mode 100644 index cf606208..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-03.xml +++ /dev/null @@ -1,1120 +0,0 @@ - - - - - - - - - - - - - - - -]> - - - - - - - - - A JSON Media Type for Describing the Structure and Meaning of JSON Documents - - - SitePen (USA) -
    - - 530 Lytton Avenue - Palo Alto, CA 94301 - USA - - +1 650 968 8787 - kris@sitepen.com -
    -
    - - -
    - - - Calgary, AB - Canada - - gary.court@gmail.com -
    -
    - - - Internet Engineering Task Force - JSON - Schema - JavaScript - Object - Notation - Hyper Schema - Hypermedia - - - - JSON (JavaScript Object Notation) Schema defines the media type "application/schema+json", - a JSON based format for defining - the structure of JSON data. JSON Schema provides a contract for what JSON - data is required for a given application and how to interact with it. JSON - Schema is intended to define validation, documentation, hyperlink - navigation, and interaction control of JSON data. - - -
    - - -
    - - JSON (JavaScript Object Notation) Schema is a JSON media type for defining - the structure of JSON data. JSON Schema provides a contract for what JSON - data is required for a given application and how to interact with it. JSON - Schema is intended to define validation, documentation, hyperlink - navigation, and interaction control of JSON data. - -
    - -
    - - - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", - "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be - interpreted as described in RFC 2119. - -
    - - - -
    - - JSON Schema defines the media type "application/schema+json" for - describing the structure of other - JSON documents. JSON Schema is JSON-based and includes facilities - for describing the structure of JSON documents in terms of - allowable values, descriptions, and interpreting relations with other resources. - - - JSON Schema format is organized into several separate definitions. The first - definition is the core schema specification. This definition is primary - concerned with describing a JSON structure and specifying valid elements - in the structure. The second definition is the Hyper Schema specification - which is intended define elements in a structure that can be interpreted as - hyperlinks. - Hyper Schema builds on JSON Schema to describe the hyperlink structure of - other JSON documents and elements of interaction. This allows user agents to be able to successfully navigate - JSON documents based on their schemas. - - - Cumulatively JSON Schema acts as a meta-document that can be used to define the required type and constraints on - property values, as well as define the meaning of the property values - for the purpose of describing a resource and determining hyperlinks - within the representation. - -
    - An example JSON Schema that describes products might look like: - - - - - This schema defines the properties of the instance JSON documents, - the required properties (id, name, and price), as well as an optional - property (tags). This also defines the link relations of the instance - JSON documents. - -
    - -
    - - For this specification, schema will be used to denote a JSON Schema - definition, and an instance refers to a JSON value that the schema - will be describing and validating. - -
    - -
    - - The JSON Schema media type does not attempt to dictate the structure of JSON - representations that contain data, but rather provides a separate format - for flexibly communicating how a JSON representation should be - interpreted and validated, such that user agents can properly understand - acceptable structures and extrapolate hyperlink information - with the JSON document. It is acknowledged that JSON documents come - in a variety of structures, and JSON is unique in that the structure - of stored data structures often prescribes a non-ambiguous definite - JSON representation. Attempting to force a specific structure is generally - not viable, and therefore JSON Schema allows for a great flexibility - in the structure of the JSON data that it describes. - - - This specification is protocol agnostic. - The underlying protocol (such as HTTP) should sufficiently define the - semantics of the client-server interface, the retrieval of resource - representations linked to by JSON representations, and modification of - those resources. The goal of this - format is to sufficiently describe JSON structures such that one can - utilize existing information available in existing JSON - representations from a large variety of services that leverage a representational state transfer - architecture using existing protocols. - -
    -
    - -
    - - JSON Schema instances are correlated to their schema by the "describedby" - relation, where the schema is defined to be the target of the relation. - Instance representations may be of the "application/json" media type or - any other subtype. Consequently, dictating how an instance - representation should specify the relation to the schema is beyond the normative scope - of this document (since this document specifically defines the JSON - Schema media type, and no other), but it is recommended that instances - specify their schema so that user agents can interpret the instance - representation and messages may retain the self-descriptive - characteristic, avoiding the need for out-of-band information about - instance data. Two approaches are recommended for declaring the - relation to the schema that describes the meaning of a JSON instance's (or collection - of instances) structure. A MIME type parameter named - "profile" or a relation of "describedby" (which could be defined by a Link header) may be used: - -
    - - - -
    - - or if the content is being transferred by a protocol (such as HTTP) that - provides headers, a Link header can be used: - -
    - -; rel="describedby" -]]> - -
    - - Instances MAY specify multiple schemas, to indicate all the schemas that - are applicable to the data, and the data SHOULD be valid by all the schemas. - The instance data MAY have multiple schemas - that it is defined by (the instance data SHOULD be valid for those schemas). - Or if the document is a collection of instances, the collection MAY contain - instances from different schemas. When collections contain heterogeneous - instances, the "pathStart" attribute MAY be specified in the - schema to disambiguate which schema should be applied for each item in the - collection. However, ultimately, the mechanism for referencing a schema is up to the - media type of the instance documents (if they choose to specify that schemas - can be referenced). -
    - -
    - - JSON Schemas can themselves be described using JSON Schemas. - A self-describing JSON Schema for the core JSON Schema can - be found at http://json-schema.org/schema for the latest version or - http://json-schema.org/draft-03/schema for the draft-03 version. The hyper schema - self-description can be found at http://json-schema.org/hyper-schema - or http://json-schema.org/draft-03/hyper-schema. All schemas - used within a protocol with media type definitions - SHOULD include a MIME parameter that refers to the self-descriptive - hyper schema or another schema that extends this hyper schema: - -
    - - - -
    -
    -
    -
    - -
    - - A JSON Schema is a JSON Object that defines various attributes - (including usage and valid values) of a JSON value. JSON - Schema has recursive capabilities; there are a number of elements - in the structure that allow for nested JSON Schemas. - - -
    - An example JSON Schema definition could look like: - - - -
    - - - A JSON Schema object may have any of the following properties, called schema - attributes (all attributes are optional): - - -
    - - This attribute defines what the primitive type or the schema of the instance MUST be in order to validate. - This attribute can take one of two forms: - - - - A string indicating a primitive or simple type. The following are acceptable string values: - - - Value MUST be a string. - Value MUST be a number, floating point numbers are allowed. - Value MUST be an integer, no floating point numbers are allowed. This is a subset of the number type. - Value MUST be a boolean. - Value MUST be an object. - Value MUST be an array. - Value MUST be null. Note this is mainly for purpose of being able use union types to define nullability. If this type is not included in a union, null values are not allowed (the primitives listed above do not allow nulls on their own). - Value MAY be of any type including null. - - - If the property is not defined or is not in this list, then any type of value is acceptable. - Other type values MAY be used for custom purposes, but minimal validators of the specification - implementation can allow any instance value on unknown type values. - - - - An array of two or more simple type definitions. Each item in the array MUST be a simple type definition or a schema. - The instance value is valid if it is of the same type as one of the simple type definitions, or valid by one of the schemas, in the array. - - - - -
    - For example, a schema that defines if an instance can be a string or a number would be: - - -
    -
    - -
    - This attribute is an object with property definitions that define the valid values of instance object property values. When the instance value is an object, the property values of the instance object MUST conform to the property definitions in this object. In this object, each property definition's value MUST be a schema, and the property's name MUST be the name of the instance property that it defines. The instance property value MUST be valid according to the schema from the property definition. Properties are considered unordered, the order of the instance properties MAY be in any order. -
    - -
    - This attribute is an object that defines the schema for a set of property names of an object instance. The name of each property of this attribute's object is a regular expression pattern in the ECMA 262/Perl 5 format, while the value is a schema. If the pattern matches the name of a property on the instance object, the value of the instance's property MUST be valid against the pattern name's schema value. -
    - -
    - This attribute defines a schema for all properties that are not explicitly defined in an object type definition. If specified, the value MUST be a schema or a boolean. If false is provided, no additional properties are allowed beyond the properties defined in the schema. The default value is an empty schema which allows any value for additional properties. -
    - -
    - This attribute defines the allowed items in an instance array, and MUST be a schema or an array of schemas. The default value is an empty schema which allows any value for items in the instance array. - When this attribute value is a schema and the instance value is an array, then all the items in the array MUST be valid according to the schema. - When this attribute value is an array of schemas and the instance value is an array, each position in the instance array MUST conform to the schema in the corresponding position for this array. This called tuple typing. When tuple typing is used, additional items are allowed, disallowed, or constrained by the "additionalItems" attribute using the same rules as "additionalProperties" for objects. -
    - -
    - This provides a definition for additional items in an array instance when tuple definitions of the items is provided. This can be false to indicate additional items in the array are not allowed, or it can be a schema that defines the schema of the additional items. -
    - -
    - This attribute indicates if the instance must have a value, and not be undefined. This is false by default, making the instance optional. -
    - -
    - This attribute is an object that defines the requirements of a property on an instance object. If an object instance has a property with the same name as a property in this attribute's object, then the instance must be valid against the attribute's property value (hereafter referred to as the "dependency value"). - - The dependency value can take one of two forms: - - - - If the dependency value is a string, then the instance object MUST have a property with the same name as the dependency value. - If the dependency value is an array of strings, then the instance object MUST have a property with the same name as each string in the dependency value's array. - - - If the dependency value is a schema, then the instance object MUST be valid against the schema. - - - -
    - -
    - This attribute defines the minimum value of the instance property when the type of the instance value is a number. -
    - -
    - This attribute defines the maximum value of the instance property when the type of the instance value is a number. -
    - -
    - This attribute indicates if the value of the instance (if the instance is a number) can not equal the number defined by the "minimum" attribute. This is false by default, meaning the instance value can be greater then or equal to the minimum value. -
    - -
    - This attribute indicates if the value of the instance (if the instance is a number) can not equal the number defined by the "maximum" attribute. This is false by default, meaning the instance value can be less then or equal to the maximum value. -
    - -
    - This attribute defines the minimum number of values in an array when the array is the instance value. -
    - -
    - This attribute defines the maximum number of values in an array when the array is the instance value. -
    - -
    - This attribute indicates that all items in an array instance MUST be unique (contains no two identical values). - - Two instance are consider equal if they are both of the same type and: - - - are null; or - are booleans/numbers/strings and have the same value; or - are arrays, contains the same number of items, and each item in the array is equal to the corresponding item in the other array; or - are objects, contains the same property names, and each property in the object is equal to the corresponding property in the other object. - - -
    - -
    - When the instance value is a string, this provides a regular expression that a string instance MUST match in order to be valid. Regular expressions SHOULD follow the regular expression specification from ECMA 262/Perl 5 -
    - -
    - When the instance value is a string, this defines the minimum length of the string. -
    - -
    - When the instance value is a string, this defines the maximum length of the string. -
    - -
    - This provides an enumeration of all possible values that are valid for the instance property. This MUST be an array, and each item in the array represents a possible value for the instance value. If this attribute is defined, the instance value MUST be one of the values in the array in order for the schema to be valid. Comparison of enum values uses the same algorithm as defined in "uniqueItems". -
    - -
    - This attribute defines the default value of the instance when the instance is undefined. -
    - -
    - This attribute is a string that provides a short description of the instance property. -
    - -
    - This attribute is a string that provides a full description of the of purpose the instance property. -
    - -
    - This property defines the type of data, content type, or microformat to be expected in the instance property values. A format attribute MAY be one of the values listed below, and if so, SHOULD adhere to the semantics describing for the format. A format SHOULD only be used to give meaning to primitive types (string, integer, number, or boolean). Validators MAY (but are not required to) validate that the instance values conform to a format. - - - The following formats are predefined: - - - This SHOULD be a date in ISO 8601 format of YYYY-MM-DDThh:mm:ssZ in UTC time. This is the recommended form of date/timestamp. - This SHOULD be a date in the format of YYYY-MM-DD. It is recommended that you use the "date-time" format instead of "date" unless you need to transfer only the date part. - This SHOULD be a time in the format of hh:mm:ss. It is recommended that you use the "date-time" format instead of "time" unless you need to transfer only the time part. - This SHOULD be the difference, measured in milliseconds, between the specified time and midnight, 00:00 of January 1, 1970 UTC. The value SHOULD be a number (integer or float). - A regular expression, following the regular expression specification from ECMA 262/Perl 5. - This is a CSS color (like "#FF0000" or "red"), based on CSS 2.1. - This is a CSS style definition (like "color: red; background-color:#FFF"), based on CSS 2.1. - This SHOULD be a phone number (format MAY follow E.123). - This value SHOULD be a URI. - This SHOULD be an email address. - This SHOULD be an ip version 4 address. - This SHOULD be an ip version 6 address. - This SHOULD be a host-name. - - - - Additional custom formats MAY be created. These custom formats MAY be expressed as an URI, and this URI MAY reference a schema of that format. -
    - -
    - This attribute defines what value the number instance must be divisible by with no remainder (the result of the division must be an integer.) The value of this attribute SHOULD NOT be 0. -
    - -
    - This attribute takes the same values as the "type" attribute, however if the instance matches the type or if this value is an array and the instance matches any type or schema in the array, then this instance is not valid. -
    - -
    - The value of this property MUST be another schema which will provide a base schema which the current schema will inherit from. The inheritance rules are such that any instance that is valid according to the current schema MUST be valid according to the referenced schema. This MAY also be an array, in which case, the instance MUST be valid for all the schemas in the array. A schema that extends another schema MAY define additional attributes, constrain existing attributes, or add other constraints. - - Conceptually, the behavior of extends can be seen as validating an - instance against all constraints in the extending schema as well as - the extended schema(s). More optimized implementations that merge - schemas are possible, but are not required. Some examples of using "extends": - -
    - - - -
    - -
    - - - -
    -
    -
    - -
    - - This attribute defines the current URI of this schema (this attribute is - effectively a "self" link). This URI MAY be relative or absolute. If - the URI is relative it is resolved against the current URI of the parent - schema it is contained in. If this schema is not contained in any - parent schema, the current URI of the parent schema is held to be the - URI under which this schema was addressed. If id is missing, the current URI of a schema is - defined to be that of the parent schema. The current URI of the schema - is also used to construct relative references such as for $ref. - -
    - -
    - - This attribute defines a URI of a schema that contains the full representation of this schema. - When a validator encounters this attribute, it SHOULD replace the current schema with the schema referenced by the value's URI (if known and available) and re-validate the instance. - This URI MAY be relative or absolute, and relative URIs SHOULD be resolved against the URI of the current schema. - -
    - -
    - - This attribute defines a URI of a JSON Schema that is the schema of the current schema. - When this attribute is defined, a validator SHOULD use the schema referenced by the value's URI (if known and available) when resolving Hyper Schemalinks. - - - - A validator MAY use this attribute's value to determine which version of JSON Schema the current schema is written in, and provide the appropriate validation features and behavior. - Therefore, it is RECOMMENDED that all schema authors include this attribute in their schemas to prevent conflicts with future JSON Schema specification changes. - -
    -
    - -
    - - The following attributes are specified in addition to those - attributes that already provided by the core schema with the specific - purpose of informing user agents of relations between resources based - on JSON data. Just as with JSON - schema attributes, all the attributes in hyper schemas are optional. - Therefore, an empty object is a valid (non-informative) schema, and - essentially describes plain JSON (no constraints on the structures). - Addition of attributes provides additive information for user agents. - - -
    - - The value of the links property MUST be an array, where each item - in the array is a link description object which describes the link - relations of the instances. - - -
    - - A link description object is used to describe link relations. In - the context of a schema, it defines the link relations of the - instances of the schema, and can be parameterized by the instance - values. The link description format can be used on its own in - regular (non-schema documents), and use of this format can - be declared by referencing the normative link description - schema as the the schema for the data structure that uses the - links. The URI of the normative link description schema is: - http://json-schema.org/links (latest version) or - http://json-schema.org/draft-03/links (draft-03 version). - - -
    - - The value of the "href" link description property - indicates the target URI of the related resource. The value - of the instance property SHOULD be resolved as a URI-Reference per RFC 3986 - and MAY be a relative URI. The base URI to be used for relative resolution - SHOULD be the URI used to retrieve the instance object (not the schema) - when used within a schema. Also, when links are used within a schema, the URI - SHOULD be parametrized by the property values of the instance - object, if property values exist for the corresponding variables - in the template (otherwise they MAY be provided from alternate sources, like user input). - - - - Instance property values SHOULD be substituted into the URIs where - matching braces ('{', '}') are found surrounding zero or more characters, - creating an expanded URI. Instance property value substitutions are resolved - by using the text between the braces to denote the property name - from the instance to get the value to substitute. - -
    - For example, if an href value is defined: - - - - Then it would be resolved by replace the value of the "id" property value from the instance object. -
    - -
    - If the value of the "id" property was "45", the expanded URI would be: - - - -
    - - If matching braces are found with the string "@" (no quotes) between the braces, then the - actual instance value SHOULD be used to replace the braces, rather than a property value. - This should only be used in situations where the instance is a scalar (string, - boolean, or number), and not for objects or arrays. -
    -
    - -
    - - The value of the "rel" property indicates the name of the - relation to the target resource. The relation to the target SHOULD be interpreted as specifically from the instance object that the schema (or sub-schema) applies to, not just the top level resource that contains the object within its hierarchy. If a resource JSON representation contains a sub object with a property interpreted as a link, that sub-object holds the relation with the target. A relation to target from the top level resource MUST be indicated with the schema describing the top level JSON representation. - - - - Relationship definitions SHOULD NOT be media type dependent, and users are encouraged to utilize existing accepted relation definitions, including those in existing relation registries (see RFC 4287). However, we define these relations here for clarity of normative interpretation within the context of JSON hyper schema defined relations: - - - - If the relation value is "self", when this property is encountered in - the instance object, the object represents a resource and the instance object is - treated as a full representation of the target resource identified by - the specified URI. - - - - This indicates that the target of the link is the full representation for the instance object. The object that contains this link possibly may not be the full representation. - - - - This indicates the target of the link is the schema for the instance object. This MAY be used to specifically denote the schemas of objects within a JSON object hierarchy, facilitating polymorphic type data structures. - - - - This relation indicates that the target of the link - SHOULD be treated as the root or the body of the representation for the - purposes of user agent interaction or fragment resolution. All other - properties of the instance objects can be regarded as meta-data - descriptions for the data. - - - - - - The following relations are applicable for schemas (the schema as the "from" resource in the relation): - - - This indicates the target resource that represents collection of instances of a schema. - This indicates a target to use for creating new instances of a schema. This link definition SHOULD be a submission link with a non-safe method (like POST). - - - - -
    - For example, if a schema is defined: - - - -
    - -
    - And if a collection of instance resource's JSON representation was retrieved: - - - -
    - - This would indicate that for the first item in the collection, its own - (self) URI would resolve to "/Resource/thing" and the first item's "up" - relation SHOULD be resolved to the resource at "/Resource/parent". - The "children" collection would be located at "/Resource/?upId=thing". -
    -
    - -
    - This property value is a schema that defines the expected structure of the JSON representation of the target of the link. -
    - -
    - - The following properties also apply to link definition objects, and - provide functionality analogous to HTML forms, in providing a - means for submitting extra (often user supplied) information to send to a server. - - -
    - - This attribute defines which method can be used to access the target resource. - In an HTTP environment, this would be "GET" or "POST" (other HTTP methods - such as "PUT" and "DELETE" have semantics that are clearly implied by - accessed resources, and do not need to be defined here). - This defaults to "GET". - -
    - -
    - - If present, this property indicates a query media type format that the server - supports for querying or posting to the collection of instances at the target - resource. The query can be - suffixed to the target URI to query the collection with - property-based constraints on the resources that SHOULD be returned from - the server or used to post data to the resource (depending on the method). - -
    - For example, with the following schema: - - - - This indicates that the client can query the server for instances that have a specific name. -
    - -
    - For example: - - - -
    - - If no enctype or method is specified, only the single URI specified by - the href property is defined. If the method is POST, "application/json" is - the default media type. -
    -
    - -
    - - This attribute contains a schema which defines the acceptable structure of the submitted - request (for a GET request, this schema would define the properties for the query string - and for a POST request, this would define the body). - -
    -
    -
    -
    - -
    - - This property indicates the fragment resolution protocol to use for - resolving fragment identifiers in URIs within the instance - representations. This applies to the instance object URIs and all - children of the instance object's URIs. The default fragment resolution - protocol is "slash-delimited", which is defined below. Other fragment - resolution protocols MAY be used, but are not defined in this document. - - - - The fragment identifier is based on RFC 2396, Sec 5, and defines the - mechanism for resolving references to entities within a document. - - -
    - - With the slash-delimited fragment resolution protocol, the fragment - identifier is interpreted as a series of property reference tokens that start with and - are delimited by the "/" character (\x2F). Each property reference token - is a series of unreserved or escaped URI characters. Each property - reference token SHOULD be interpreted, starting from the beginning of - the fragment identifier, as a path reference in the target JSON - structure. The final target value of the fragment can be determined by - starting with the root of the JSON structure from the representation of - the resource identified by the pre-fragment URI. If the target is a JSON - object, then the new target is the value of the property with the name - identified by the next property reference token in the fragment. If the - target is a JSON array, then the target is determined by finding the - item in array the array with the index defined by the next property - reference token (which MUST be a number). The target is successively - updated for each property reference token, until the entire fragment has - been traversed. - - - - Property names SHOULD be URI-encoded. In particular, any "/" in a - property name MUST be encoded to avoid being interpreted as a property - delimiter. - - - -
    - For example, for the following JSON representation: - - - -
    - -
    - The following fragment identifiers would be resolved: - - - -
    -
    -
    - -
    - - The dot-delimited fragment resolution protocol is the same as - slash-delimited fragment resolution protocol except that the "." character - (\x2E) is used as the delimiter between property names (instead of "/") and - the path does not need to start with a ".". For example, #.foo and #foo are a valid fragment - identifiers for referencing the value of the foo propery. - -
    -
    - -
    - This attribute indicates that the instance property SHOULD NOT be changed. Attempts by a user agent to modify the value of this property are expected to be rejected by a server. -
    - -
    - If the instance property value is a string, this attribute defines that the string SHOULD be interpreted as binary data and decoded using the encoding named by this schema property. RFC 2045, Sec 6.1 lists the possible values for this property. -
    - -
    - - This attribute is a URI that defines what the instance's URI MUST start with in order to validate. - The value of the "pathStart" attribute MUST be resolved as per RFC 3986, Sec 5, - and is relative to the instance's URI. - - - - When multiple schemas have been referenced for an instance, the user agent - can determine if this schema is applicable for a particular instance by - determining if the URI of the instance begins with the the value of the "pathStart" - attribute. If the URI of the instance does not start with this URI, - or if another schema specifies a starting URI that is longer and also matches the - instance, this schema SHOULD NOT be applied to the instance. Any schema - that does not have a pathStart attribute SHOULD be considered applicable - to all the instances for which it is referenced. - -
    - -
    - This attribute defines the media type of the instance representations that this schema is defining. -
    -
    - -
    - - This specification is a sub-type of the JSON format, and - consequently the security considerations are generally the same as RFC 4627. - However, an additional issue is that when link relation of "self" - is used to denote a full representation of an object, the user agent - SHOULD NOT consider the representation to be the authoritative representation - of the resource denoted by the target URI if the target URI is not - equivalent to or a sub-path of the the URI used to request the resource - representation which contains the target URI with the "self" link. - -
    - For example, if a hyper schema was defined: - - - -
    - -
    - And a resource was requested from somesite.com: - - - -
    - -
    - With a response of: - - - -
    -
    -
    - -
    - The proposed MIME media type for JSON Schema is "application/schema+json". - Type name: application - Subtype name: schema+json - Required parameters: profile - - The value of the profile parameter SHOULD be a URI (relative or absolute) that - refers to the schema used to define the structure of this structure (the - meta-schema). Normally the value would be http://json-schema.org/draft-03/hyper-schema, - but it is allowable to use other schemas that extend the hyper schema's meta- - schema. - - Optional parameters: pretty - The value of the pretty parameter MAY be true or false to indicate if additional whitespace has been included to make the JSON representation easier to read. - -
    - - This registry is maintained by IANA per RFC 4287 and this specification adds - four values: "full", "create", "instances", "root". New - assignments are subject to IESG Approval, as outlined in RFC 5226. - Requests should be made by email to IANA, which will then forward the - request to the IESG, requesting approval. - -
    -
    -
    - - - - - &rfc2045; - &rfc2119; - &rfc2396; - &rfc3339; - &rfc3986; - &rfc4287; - - - &rfc2616; - &rfc4627; - &rfc5226; - &iddiscovery; - &uritemplate; - &linkheader; - &html401; - &css21; - - -
    - - - - - Added example and verbiage to "extends" attribute. - Defined slash-delimited to use a leading slash. - Made "root" a relation instead of an attribute. - Removed address values, and MIME media type from format to reduce confusion (mediaType already exists, so it can be used for MIME types). - Added more explanation of nullability. - Removed "alternate" attribute. - Upper cased many normative usages of must, may, and should. - Replaced the link submission "properties" attribute to "schema" attribute. - Replaced "optional" attribute with "required" attribute. - Replaced "maximumCanEqual" attribute with "exclusiveMaximum" attribute. - Replaced "minimumCanEqual" attribute with "exclusiveMinimum" attribute. - Replaced "requires" attribute with "dependencies" attribute. - Moved "contentEncoding" attribute to hyper schema. - Added "additionalItems" attribute. - Added "id" attribute. - Switched self-referencing variable substitution from "-this" to "@" to align with reserved characters in URI template. - Added "patternProperties" attribute. - Schema URIs are now namespace versioned. - Added "$ref" and "$schema" attributes. - - - - - - Replaced "maxDecimal" attribute with "divisibleBy" attribute. - Added slash-delimited fragment resolution protocol and made it the default. - Added language about using links outside of schemas by referencing its normative URI. - Added "uniqueItems" attribute. - Added "targetSchema" attribute to link description object. - - - - - - Fixed category and updates from template. - - - - - - Initial draft. - - - - -
    - -
    - - - Should we give a preference to MIME headers over Link headers (or only use one)? - Should "root" be a MIME parameter? - Should "format" be renamed to "mediaType" or "contentType" to reflect the usage MIME media types that are allowed? - How should dates be handled? - - -
    -
    -
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-04.xml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-04.xml deleted file mode 100644 index 8ede6bf9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/draft-zyp-json-schema-04.xml +++ /dev/null @@ -1,1072 +0,0 @@ - - - - - - - - - - - - - - -]> - - - - - - - - - A JSON Media Type for Describing the Structure and Meaning of JSON Documents - - - SitePen (USA) -
    - - 530 Lytton Avenue - Palo Alto, CA 94301 - USA - - +1 650 968 8787 - kris@sitepen.com -
    -
    - - -
    - - - Calgary, AB - Canada - - gary.court@gmail.com -
    -
    - - - Internet Engineering Task Force - JSON - Schema - JavaScript - Object - Notation - Hyper Schema - Hypermedia - - - - JSON (JavaScript Object Notation) Schema defines the media type "application/schema+json", - a JSON based format for defining the structure of JSON data. JSON Schema provides a contract for what JSON - data is required for a given application and how to interact with it. JSON - Schema is intended to define validation, documentation, hyperlink - navigation, and interaction control of JSON data. - - -
    - - -
    - - JSON (JavaScript Object Notation) Schema is a JSON media type for defining - the structure of JSON data. JSON Schema provides a contract for what JSON - data is required for a given application and how to interact with it. JSON - Schema is intended to define validation, documentation, hyperlink - navigation, and interaction control of JSON data. - -
    - -
    - - - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", - "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be - interpreted as described in RFC 2119. - - - - The terms "JSON", "JSON text", "JSON value", "member", "element", "object", - "array", "number", "string", "boolean", "true", "false", and "null" in this - document are to be interpreted as defined in RFC 4627. - - - - This specification also uses the following defined terms: - - - A JSON Schema object. - Equivalent to "JSON value" as defined in RFC 4627. - Equivalent to "member" as defined in RFC 4627. - Equivalent to "element" as defined in RFC 4627. - A property of a JSON Schema object. - - -
    - -
    - - JSON Schema defines the media type "application/schema+json" for - describing the structure of JSON text. JSON Schemas are also written in JSON and includes facilities - for describing the structure of JSON in terms of - allowable values, descriptions, and interpreting relations with other resources. - - - This document is organized into several separate definitions. The first - definition is the core schema specification. This definition is primary - concerned with describing a JSON structure and specifying valid elements - in the structure. The second definition is the Hyper Schema specification - which is intended to define elements in a structure that can be interpreted as - hyperlinks. - Hyper Schema builds on JSON Schema to describe the hyperlink structure of - JSON values. This allows user agents to be able to successfully navigate - documents containing JSON based on their schemas. - - - Cumulatively JSON Schema acts as meta-JSON that can be used to define the - required type and constraints on JSON values, as well as define the meaning - of the JSON values for the purpose of describing a resource and determining - hyperlinks within the representation. - -
    - An example JSON Schema that describes products might look like: - - - - - This schema defines the properties of the instance, - the required properties (id, name, and price), as well as an optional - property (tags). This also defines the link relations of the instance. - -
    - -
    - - The JSON Schema media type does not attempt to dictate the structure of JSON - values that contain data, but rather provides a separate format - for flexibly communicating how a JSON value should be - interpreted and validated, such that user agents can properly understand - acceptable structures and extrapolate hyperlink information - from the JSON. It is acknowledged that JSON values come - in a variety of structures, and JSON is unique in that the structure - of stored data structures often prescribes a non-ambiguous definite - JSON representation. Attempting to force a specific structure is generally - not viable, and therefore JSON Schema allows for a great flexibility - in the structure of the JSON data that it describes. - - - This specification is protocol agnostic. - The underlying protocol (such as HTTP) should sufficiently define the - semantics of the client-server interface, the retrieval of resource - representations linked to by JSON representations, and modification of - those resources. The goal of this - format is to sufficiently describe JSON structures such that one can - utilize existing information available in existing JSON - representations from a large variety of services that leverage a representational state transfer - architecture using existing protocols. - -
    -
    - -
    - - JSON values are correlated to their schema by the "describedby" - relation, where the schema is the target of the relation. - JSON values MUST be of the "application/json" media type or - any other subtype. Consequently, dictating how a JSON value should - specify the relation to the schema is beyond the normative scope - of this document since this document specifically defines the JSON - Schema media type, and no other. It is RECOMMNENDED that JSON values - specify their schema so that user agents can interpret the instance - and retain the self-descriptive characteristics. This avoides the need for out-of-band information about - instance data. Two approaches are recommended for declaring the - relation to the schema that describes the meaning of a JSON instance's (or collection - of instances) structure. A MIME type parameter named - "profile" or a relation of "describedby" (which could be specified by a Link header) may be used: - -
    - - - -
    - - or if the content is being transferred by a protocol (such as HTTP) that - provides headers, a Link header can be used: - -
    - -; rel="describedby" -]]> - -
    - - Instances MAY specify multiple schemas, to indicate all the schemas that - are applicable to the data, and the data SHOULD be valid by all the schemas. - The instance data MAY have multiple schemas - that it is described by (the instance data SHOULD be valid for those schemas). - Or if the document is a collection of instances, the collection MAY contain - instances from different schemas. The mechanism for referencing a schema is - determined by the media type of the instance (if it provides a method for - referencing schemas). -
    - -
    - - JSON Schemas can themselves be described using JSON Schemas. - A self-describing JSON Schema for the core JSON Schema can - be found at http://json-schema.org/schema for the latest version or - http://json-schema.org/draft-04/schema for the draft-04 version. The hyper schema - self-description can be found at http://json-schema.org/hyper-schema - or http://json-schema.org/draft-04/hyper-schema. All schemas - used within a protocol with a media type specified SHOULD include a MIME parameter that refers to the self-descriptive - hyper schema or another schema that extends this hyper schema: - -
    - - - -
    -
    -
    -
    - -
    - - A JSON Schema is a JSON object that defines various attributes - (including usage and valid values) of a JSON value. JSON - Schema has recursive capabilities; there are a number of elements - in the structure that allow for nested JSON Schemas. - - -
    - An example JSON Schema could look like: - - - -
    - - - A JSON Schema object MAY have any of the following optional properties: - - - - - -
    - - This attribute defines what the primitive type or the schema of the instance MUST be in order to validate. - This attribute can take one of two forms: - - - - A string indicating a primitive or simple type. The string MUST be one of the following values: - - - Instance MUST be an object. - Instance MUST be an array. - Instance MUST be a string. - Instance MUST be a number, including floating point numbers. - Instance MUST be the JSON literal "true" or "false". - Instance MUST be the JSON literal "null". Note that without this type, null values are not allowed. - Instance MAY be of any type, including null. - - - - - An array of one or more simple or schema types. - The instance value is valid if it is of the same type as one of the simple types, or valid by one of the schemas, in the array. - - - - If this attribute is not specified, then all value types are accepted. - - -
    - For example, a schema that defines if an instance can be a string or a number would be: - - -
    -
    - -
    - - This attribute is an object with properties that specify the schemas for the properties of the instance object. - In this attribute's object, each property value MUST be a schema. - When the instance value is an object, the value of the instance's properties MUST be valid according to the schemas with the same property names specified in this attribute. - Objects are unordered, so therefore the order of the instance properties or attribute properties MUST NOT determine validation success. - -
    - -
    - - This attribute is an object that defines the schema for a set of property names of an object instance. - The name of each property of this attribute's object is a regular expression pattern in the ECMA 262/Perl 5 format, while the value is a schema. - If the pattern matches the name of a property on the instance object, the value of the instance's property MUST be valid against the pattern name's schema value. - -
    - -
    - This attribute specifies how any instance property that is not explicitly defined by either the "properties" or "patternProperties" attributes (hereafter referred to as "additional properties") is handled. If specified, the value MUST be a schema or a boolean. - If a schema is provided, then all additional properties MUST be valid according to the schema. - If false is provided, then no additional properties are allowed. - The default value is an empty schema, which allows any value for additional properties. -
    - -
    - This attribute provides the allowed items in an array instance. If specified, this attribute MUST be a schema or an array of schemas. - When this attribute value is a schema and the instance value is an array, then all the items in the array MUST be valid according to the schema. - When this attribute value is an array of schemas and the instance value is an array, each position in the instance array MUST be valid according to the schema in the corresponding position for this array. This called tuple typing. When tuple typing is used, additional items are allowed, disallowed, or constrained by the "additionalItems" attribute the same way as "additionalProperties" for objects is. -
    - -
    - This attribute specifies how any item in the array instance that is not explicitly defined by "items" (hereafter referred to as "additional items") is handled. If specified, the value MUST be a schema or a boolean. - If a schema is provided: - - If the "items" attribute is unspecified, then all items in the array instance must be valid against this schema. - If the "items" attribute is a schema, then this attribute is ignored. - If the "items" attribute is an array (during tuple typing), then any additional items MUST be valid against this schema. - - - If false is provided, then any additional items in the array are not allowed. - The default value is an empty schema, which allows any value for additional items. -
    - -
    - This attribute is an array of strings that defines all the property names that must exist on the object instance. -
    - -
    - This attribute is an object that specifies the requirements of a property on an object instance. If an object instance has a property with the same name as a property in this attribute's object, then the instance must be valid against the attribute's property value (hereafter referred to as the "dependency value"). - - The dependency value can take one of two forms: - - - - If the dependency value is a string, then the instance object MUST have a property with the same name as the dependency value. - If the dependency value is an array of strings, then the instance object MUST have a property with the same name as each string in the dependency value's array. - - - If the dependency value is a schema, then the instance object MUST be valid against the schema. - - - -
    - -
    - This attribute defines the minimum value of the instance property when the type of the instance value is a number. -
    - -
    - This attribute defines the maximum value of the instance property when the type of the instance value is a number. -
    - -
    - This attribute indicates if the value of the instance (if the instance is a number) can not equal the number defined by the "minimum" attribute. This is false by default, meaning the instance value can be greater then or equal to the minimum value. -
    - -
    - This attribute indicates if the value of the instance (if the instance is a number) can not equal the number defined by the "maximum" attribute. This is false by default, meaning the instance value can be less then or equal to the maximum value. -
    - -
    - This attribute defines the minimum number of values in an array when the array is the instance value. -
    - -
    - This attribute defines the maximum number of values in an array when the array is the instance value. -
    - -
    - This attribute defines the minimum number of properties required on an object instance. -
    - -
    - This attribute defines the maximum number of properties the object instance can have. -
    - -
    - This attribute indicates that all items in an array instance MUST be unique (contains no two identical values). - - Two instance are consider equal if they are both of the same type and: - - - are null; or - are booleans/numbers/strings and have the same value; or - are arrays, contains the same number of items, and each item in the array is equal to the item at the corresponding index in the other array; or - are objects, contains the same property names, and each property in the object is equal to the corresponding property in the other object. - - -
    - -
    - When the instance value is a string, this provides a regular expression that a string instance MUST match in order to be valid. Regular expressions SHOULD follow the regular expression specification from ECMA 262/Perl 5 -
    - -
    - When the instance value is a string, this defines the minimum length of the string. -
    - -
    - When the instance value is a string, this defines the maximum length of the string. -
    - -
    - This provides an enumeration of all possible values that are valid for the instance property. This MUST be an array, and each item in the array represents a possible value for the instance value. If this attribute is defined, the instance value MUST be one of the values in the array in order for the schema to be valid. Comparison of enum values uses the same algorithm as defined in "uniqueItems". -
    - -
    - This attribute defines the default value of the instance when the instance is undefined. -
    - -
    - This attribute is a string that provides a short description of the instance property. -
    - -
    - This attribute is a string that provides a full description of the of purpose the instance property. -
    - -
    - This attribute defines what value the number instance must be divisible by with no remainder (the result of the division must be an integer.) The value of this attribute SHOULD NOT be 0. -
    - -
    - This attribute takes the same values as the "type" attribute, however if the instance matches the type or if this value is an array and the instance matches any type or schema in the array, then this instance is not valid. -
    - -
    - The value of this property MUST be another schema which will provide a base schema which the current schema will inherit from. The inheritance rules are such that any instance that is valid according to the current schema MUST be valid according to the referenced schema. This MAY also be an array, in which case, the instance MUST be valid for all the schemas in the array. A schema that extends another schema MAY define additional attributes, constrain existing attributes, or add other constraints. - - Conceptually, the behavior of extends can be seen as validating an - instance against all constraints in the extending schema as well as - the extended schema(s). More optimized implementations that merge - schemas are possible, but are not required. Some examples of using "extends": - -
    - - - -
    - -
    - - - -
    -
    -
    - -
    - - This attribute defines the current URI of this schema (this attribute is - effectively a "self" link). This URI MAY be relative or absolute. If - the URI is relative it is resolved against the current URI of the parent - schema it is contained in. If this schema is not contained in any - parent schema, the current URI of the parent schema is held to be the - URI under which this schema was addressed. If id is missing, the current URI of a schema is - defined to be that of the parent schema. The current URI of the schema - is also used to construct relative references such as for $ref. - -
    - -
    - - This attribute defines a URI of a schema that contains the full representation of this schema. - When a validator encounters this attribute, it SHOULD replace the current schema with the schema referenced by the value's URI (if known and available) and re-validate the instance. - This URI MAY be relative or absolute, and relative URIs SHOULD be resolved against the URI of the current schema. - -
    - -
    - - This attribute defines a URI of a JSON Schema that is the schema of the current schema. - When this attribute is defined, a validator SHOULD use the schema referenced by the value's URI (if known and available) when resolving Hyper Schemalinks. - - - - A validator MAY use this attribute's value to determine which version of JSON Schema the current schema is written in, and provide the appropriate validation features and behavior. - Therefore, it is RECOMMENDED that all schema authors include this attribute in their schemas to prevent conflicts with future JSON Schema specification changes. - -
    -
    - -
    - - The following attributes are specified in addition to those - attributes that already provided by the core schema with the specific - purpose of informing user agents of relations between resources based - on JSON data. Just as with JSON - schema attributes, all the attributes in hyper schemas are optional. - Therefore, an empty object is a valid (non-informative) schema, and - essentially describes plain JSON (no constraints on the structures). - Addition of attributes provides additive information for user agents. - - -
    - - The value of the links property MUST be an array, where each item - in the array is a link description object which describes the link - relations of the instances. - - - - -
    - - A link description object is used to describe link relations. In - the context of a schema, it defines the link relations of the - instances of the schema, and can be parameterized by the instance - values. The link description format can be used without JSON Schema, - and use of this format can - be declared by referencing the normative link description - schema as the the schema for the data structure that uses the - links. The URI of the normative link description schema is: - http://json-schema.org/links (latest version) or - http://json-schema.org/draft-04/links (draft-04 version). - - -
    - - The value of the "href" link description property - indicates the target URI of the related resource. The value - of the instance property SHOULD be resolved as a URI-Reference per RFC 3986 - and MAY be a relative URI. The base URI to be used for relative resolution - SHOULD be the URI used to retrieve the instance object (not the schema) - when used within a schema. Also, when links are used within a schema, the URI - SHOULD be parametrized by the property values of the instance - object, if property values exist for the corresponding variables - in the template (otherwise they MAY be provided from alternate sources, like user input). - - - - Instance property values SHOULD be substituted into the URIs where - matching braces ('{', '}') are found surrounding zero or more characters, - creating an expanded URI. Instance property value substitutions are resolved - by using the text between the braces to denote the property name - from the instance to get the value to substitute. - -
    - For example, if an href value is defined: - - - - Then it would be resolved by replace the value of the "id" property value from the instance object. -
    - -
    - If the value of the "id" property was "45", the expanded URI would be: - - - -
    - - If matching braces are found with the string "@" (no quotes) between the braces, then the - actual instance value SHOULD be used to replace the braces, rather than a property value. - This should only be used in situations where the instance is a scalar (string, - boolean, or number), and not for objects or arrays. -
    -
    - -
    - - The value of the "rel" property indicates the name of the - relation to the target resource. The relation to the target SHOULD be interpreted as specifically from the instance object that the schema (or sub-schema) applies to, not just the top level resource that contains the object within its hierarchy. If a resource JSON representation contains a sub object with a property interpreted as a link, that sub-object holds the relation with the target. A relation to target from the top level resource MUST be indicated with the schema describing the top level JSON representation. - - - - Relationship definitions SHOULD NOT be media type dependent, and users are encouraged to utilize existing accepted relation definitions, including those in existing relation registries (see RFC 4287). However, we define these relations here for clarity of normative interpretation within the context of JSON hyper schema defined relations: - - - - If the relation value is "self", when this property is encountered in - the instance object, the object represents a resource and the instance object is - treated as a full representation of the target resource identified by - the specified URI. - - - - This indicates that the target of the link is the full representation for the instance object. The object that contains this link possibly may not be the full representation. - - - - This indicates the target of the link is the schema for the instance object. This MAY be used to specifically denote the schemas of objects within a JSON object hierarchy, facilitating polymorphic type data structures. - - - - This relation indicates that the target of the link - SHOULD be treated as the root or the body of the representation for the - purposes of user agent interaction or fragment resolution. All other - properties of the instance objects can be regarded as meta-data - descriptions for the data. - - - - - - The following relations are applicable for schemas (the schema as the "from" resource in the relation): - - - This indicates the target resource that represents collection of instances of a schema. - This indicates a target to use for creating new instances of a schema. This link definition SHOULD be a submission link with a non-safe method (like POST). - - - - -
    - For example, if a schema is defined: - - - -
    - -
    - And if a collection of instance resource's JSON representation was retrieved: - - - -
    - - This would indicate that for the first item in the collection, its own - (self) URI would resolve to "/Resource/thing" and the first item's "up" - relation SHOULD be resolved to the resource at "/Resource/parent". - The "children" collection would be located at "/Resource/?upId=thing". -
    -
    - -
    - This property value is a string that defines the templating language used in the "href" attribute. If no templating language is defined, then the default Link Description Object templating langauge is used. -
    - -
    - This property value is a schema that defines the expected structure of the JSON representation of the target of the link. -
    - -
    - - The following properties also apply to link definition objects, and - provide functionality analogous to HTML forms, in providing a - means for submitting extra (often user supplied) information to send to a server. - - -
    - - This attribute defines which method can be used to access the target resource. - In an HTTP environment, this would be "GET" or "POST" (other HTTP methods - such as "PUT" and "DELETE" have semantics that are clearly implied by - accessed resources, and do not need to be defined here). - This defaults to "GET". - -
    - -
    - - If present, this property indicates a query media type format that the server - supports for querying or posting to the collection of instances at the target - resource. The query can be - suffixed to the target URI to query the collection with - property-based constraints on the resources that SHOULD be returned from - the server or used to post data to the resource (depending on the method). - -
    - For example, with the following schema: - - - - This indicates that the client can query the server for instances that have a specific name. -
    - -
    - For example: - - - -
    - - If no enctype or method is specified, only the single URI specified by - the href property is defined. If the method is POST, "application/json" is - the default media type. -
    -
    - -
    - - This attribute contains a schema which defines the acceptable structure of the submitted - request (for a GET request, this schema would define the properties for the query string - and for a POST request, this would define the body). - -
    -
    -
    -
    - -
    - - This property indicates the fragment resolution protocol to use for - resolving fragment identifiers in URIs within the instance - representations. This applies to the instance object URIs and all - children of the instance object's URIs. The default fragment resolution - protocol is "json-pointer", which is defined below. Other fragment - resolution protocols MAY be used, but are not defined in this document. - - - - The fragment identifier is based on RFC 3986, Sec 5, and defines the - mechanism for resolving references to entities within a document. - - -
    - The "json-pointer" fragment resolution protocol uses a JSON Pointer to resolve fragment identifiers in URIs within instance representations. -
    -
    - - - -
    - This attribute indicates that the instance value SHOULD NOT be changed. Attempts by a user agent to modify the value of this property are expected to be rejected by a server. -
    - -
    - If the instance property value is a string, this attribute defines that the string SHOULD be interpreted as binary data and decoded using the encoding named by this schema property. RFC 2045, Sec 6.1 lists the possible values for this property. -
    - -
    - - This attribute is a URI that defines what the instance's URI MUST start with in order to validate. - The value of the "pathStart" attribute MUST be resolved as per RFC 3986, Sec 5, - and is relative to the instance's URI. - - - - When multiple schemas have been referenced for an instance, the user agent - can determine if this schema is applicable for a particular instance by - determining if the URI of the instance begins with the the value of the "pathStart" - attribute. If the URI of the instance does not start with this URI, - or if another schema specifies a starting URI that is longer and also matches the - instance, this schema SHOULD NOT be applied to the instance. Any schema - that does not have a pathStart attribute SHOULD be considered applicable - to all the instances for which it is referenced. - -
    - -
    - This attribute defines the media type of the instance representations that this schema is defining. -
    -
    - -
    - - This specification is a sub-type of the JSON format, and - consequently the security considerations are generally the same as RFC 4627. - However, an additional issue is that when link relation of "self" - is used to denote a full representation of an object, the user agent - SHOULD NOT consider the representation to be the authoritative representation - of the resource denoted by the target URI if the target URI is not - equivalent to or a sub-path of the the URI used to request the resource - representation which contains the target URI with the "self" link. - -
    - For example, if a hyper schema was defined: - - - -
    - -
    - And a resource was requested from somesite.com: - - - -
    - -
    - With a response of: - - - -
    -
    -
    - -
    - The proposed MIME media type for JSON Schema is "application/schema+json". - Type name: application - Subtype name: schema+json - Required parameters: profile - - The value of the profile parameter SHOULD be a URI (relative or absolute) that - refers to the schema used to define the structure of this structure (the - meta-schema). Normally the value would be http://json-schema.org/draft-04/hyper-schema, - but it is allowable to use other schemas that extend the hyper schema's meta- - schema. - - Optional parameters: pretty - The value of the pretty parameter MAY be true or false to indicate if additional whitespace has been included to make the JSON representation easier to read. - -
    - - This registry is maintained by IANA per RFC 4287 and this specification adds - four values: "full", "create", "instances", "root". New - assignments are subject to IESG Approval, as outlined in RFC 5226. - Requests should be made by email to IANA, which will then forward the - request to the IESG, requesting approval. - -
    -
    -
    - - - - - &rfc2045; - &rfc2119; - &rfc3339; - &rfc3986; - &rfc4287; - - - JSON Pointer - - ForgeRock US, Inc. - - - SitePen (USA) - - - - - - - &rfc2616; - &rfc4627; - &rfc5226; - &iddiscovery; - &uritemplate; - &linkheader; - &html401; - &css21; - - -
    - - - - - Changed "required" attribute to an array of strings. - Removed "format" attribute. - Added "minProperties" and "maxProperties" attributes. - Replaced "slash-delimited" fragment resolution with "json-pointer". - Added "template" LDO attribute. - Removed irrelevant "Open Issues" section. - Merged Conventions and Terminology sections. - Defined terms used in specification. - Removed "integer" type in favor of {"type":"number", "divisibleBy":1}. - Restricted "type" to only the core JSON types. - Improved wording of many sections. - - - - - - Added example and verbiage to "extends" attribute. - Defined slash-delimited to use a leading slash. - Made "root" a relation instead of an attribute. - Removed address values, and MIME media type from format to reduce confusion (mediaType already exists, so it can be used for MIME types). - Added more explanation of nullability. - Removed "alternate" attribute. - Upper cased many normative usages of must, may, and should. - Replaced the link submission "properties" attribute to "schema" attribute. - Replaced "optional" attribute with "required" attribute. - Replaced "maximumCanEqual" attribute with "exclusiveMaximum" attribute. - Replaced "minimumCanEqual" attribute with "exclusiveMinimum" attribute. - Replaced "requires" attribute with "dependencies" attribute. - Moved "contentEncoding" attribute to hyper schema. - Added "additionalItems" attribute. - Added "id" attribute. - Switched self-referencing variable substitution from "-this" to "@" to align with reserved characters in URI template. - Added "patternProperties" attribute. - Schema URIs are now namespace versioned. - Added "$ref" and "$schema" attributes. - - - - - - Replaced "maxDecimal" attribute with "divisibleBy" attribute. - Added slash-delimited fragment resolution protocol and made it the default. - Added language about using links outside of schemas by referencing its normative URI. - Added "uniqueItems" attribute. - Added "targetSchema" attribute to link description object. - - - - - - Fixed category and updates from template. - - - - - - Initial draft. - - - - -
    -
    -
    diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/links.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/links.js deleted file mode 100644 index 1bea0aa3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/links.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * JSON Schema link handler - * Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com) - * Licensed under the MIT (MIT-LICENSE.txt) license. - */ -({define:typeof define!="undefined"?define:function(deps, factory){module.exports = factory();}}). -define([], function(){ -var exports = {}; -exports.cacheLinks = true; -exports.getLink = function(relation, instance, schema){ - // gets the URI of the link for the given relation based on the instance and schema - // for example: - // getLink( - // "brother", - // {"brother_id":33}, - // {links:[{rel:"brother", href:"Brother/{brother_id}"}]}) -> - // "Brother/33" - var links = schema.__linkTemplates; - if(!links){ - links = {}; - var schemaLinks = schema.links; - if(schemaLinks && schemaLinks instanceof Array){ - schemaLinks.forEach(function(link){ - /* // TODO: allow for multiple same-name relations - if(links[link.rel]){ - if(!(links[link.rel] instanceof Array)){ - links[link.rel] = [links[link.rel]]; - } - }*/ - links[link.rel] = link.href; - }); - } - if(exports.cacheLinks){ - schema.__linkTemplates = links; - } - } - var linkTemplate = links[relation]; - return linkTemplate && exports.substitute(linkTemplate, instance); -}; - -exports.substitute = function(linkTemplate, instance){ - return linkTemplate.replace(/\{([^\}]*)\}/g, function(t, property){ - var value = instance[decodeURIComponent(property)]; - if(value instanceof Array){ - // the value is an array, it should produce a URI like /Table/(4,5,8) and store.get() should handle that as an array of values - return '(' + value.join(',') + ')'; - } - return value; - }); -}; -return exports; -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/validate.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/validate.js deleted file mode 100644 index 55d4c3ae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/lib/validate.js +++ /dev/null @@ -1,260 +0,0 @@ -/** - * JSONSchema Validator - Validates JavaScript objects using JSON Schemas - * (http://www.json.com/json-schema-proposal/) - * - * Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com) - * Licensed under the MIT (MIT-LICENSE.txt) license. -To use the validator call the validate function with an instance object and an optional schema object. -If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), -that schema will be used to validate and the schema parameter is not necessary (if both exist, -both validations will occur). -The validate method will return an array of validation errors. If there are no errors, then an -empty list will be returned. A validation error will have two properties: -"property" which indicates which property had the error -"message" which indicates what the error was - */ -({define:typeof define!="undefined"?define:function(deps, factory){module.exports = factory();}}). -define([], function(){ -var exports = validate; -// setup primitive classes to be JSON Schema types -exports.Integer = {type:"integer"}; -var primitiveConstructors = { - String: String, - Boolean: Boolean, - Number: Number, - Object: Object, - Array: Array, - Date: Date -} -exports.validate = validate; -function validate(/*Any*/instance,/*Object*/schema) { - // Summary: - // To use the validator call JSONSchema.validate with an instance object and an optional schema object. - // If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), - // that schema will be used to validate and the schema parameter is not necessary (if both exist, - // both validations will occur). - // The validate method will return an object with two properties: - // valid: A boolean indicating if the instance is valid by the schema - // errors: An array of validation errors. If there are no errors, then an - // empty list will be returned. A validation error will have two properties: - // property: which indicates which property had the error - // message: which indicates what the error was - // - return validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false}); - }; -exports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) { - // Summary: - // The checkPropertyChange method will check to see if an value can legally be in property with the given schema - // This is slightly different than the validate method in that it will fail if the schema is readonly and it will - // not check for self-validation, it is assumed that the passed in value is already internally valid. - // The checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for - // information. - // - return validate(value, schema, {changing: property || "property"}); - }; -var validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) { - - if (!options) options = {}; - var _changing = options.changing; - - function getType(schema){ - return schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase()); - } - var errors = []; - // validate a value against a property definition - function checkProp(value, schema, path,i){ - - var l; - path += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i; - function addError(message){ - errors.push({property:path,message:message}); - } - - if((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){ - if(typeof schema == 'function'){ - if(!(value instanceof schema)){ - addError("is not an instance of the class/constructor " + schema.name); - } - }else if(schema){ - addError("Invalid schema/property definition " + schema); - } - return null; - } - if(_changing && schema.readonly){ - addError("is a readonly field, it can not be changed"); - } - if(schema['extends']){ // if it extends another schema, it must pass that schema as well - checkProp(value,schema['extends'],path,i); - } - // validate a value against a type definition - function checkType(type,value){ - if(type){ - if(typeof type == 'string' && type != 'any' && - (type == 'null' ? value !== null : typeof value != type) && - !(value instanceof Array && type == 'array') && - !(value instanceof Date && type == 'date') && - !(type == 'integer' && value%1===0)){ - return [{property:path,message:(typeof value) + " value found, but a " + type + " is required"}]; - } - if(type instanceof Array){ - var unionErrors=[]; - for(var j = 0; j < type.length; j++){ // a union type - if(!(unionErrors=checkType(type[j],value)).length){ - break; - } - } - if(unionErrors.length){ - return unionErrors; - } - }else if(typeof type == 'object'){ - var priorErrors = errors; - errors = []; - checkProp(value,type,path); - var theseErrors = errors; - errors = priorErrors; - return theseErrors; - } - } - return []; - } - if(value === undefined){ - if(schema.required){ - addError("is missing and it is required"); - } - }else{ - errors = errors.concat(checkType(getType(schema),value)); - if(schema.disallow && !checkType(schema.disallow,value).length){ - addError(" disallowed value was matched"); - } - if(value !== null){ - if(value instanceof Array){ - if(schema.items){ - var itemsIsArray = schema.items instanceof Array; - var propDef = schema.items; - for (i = 0, l = value.length; i < l; i += 1) { - if (itemsIsArray) - propDef = schema.items[i]; - if (options.coerce) - value[i] = options.coerce(value[i], propDef); - errors.concat(checkProp(value[i],propDef,path,i)); - } - } - if(schema.minItems && value.length < schema.minItems){ - addError("There must be a minimum of " + schema.minItems + " in the array"); - } - if(schema.maxItems && value.length > schema.maxItems){ - addError("There must be a maximum of " + schema.maxItems + " in the array"); - } - }else if(schema.properties || schema.additionalProperties){ - errors.concat(checkObj(value, schema.properties, path, schema.additionalProperties)); - } - if(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){ - addError("does not match the regex pattern " + schema.pattern); - } - if(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){ - addError("may only be " + schema.maxLength + " characters long"); - } - if(schema.minLength && typeof value == 'string' && value.length < schema.minLength){ - addError("must be at least " + schema.minLength + " characters long"); - } - if(typeof schema.minimum !== undefined && typeof value == typeof schema.minimum && - schema.minimum > value){ - addError("must have a minimum value of " + schema.minimum); - } - if(typeof schema.maximum !== undefined && typeof value == typeof schema.maximum && - schema.maximum < value){ - addError("must have a maximum value of " + schema.maximum); - } - if(schema['enum']){ - var enumer = schema['enum']; - l = enumer.length; - var found; - for(var j = 0; j < l; j++){ - if(enumer[j]===value){ - found=1; - break; - } - } - if(!found){ - addError("does not have a value in the enumeration " + enumer.join(", ")); - } - } - if(typeof schema.maxDecimal == 'number' && - (value.toString().match(new RegExp("\\.[0-9]{" + (schema.maxDecimal + 1) + ",}")))){ - addError("may only have " + schema.maxDecimal + " digits of decimal places"); - } - } - } - return null; - } - // validate an object against a schema - function checkObj(instance,objTypeDef,path,additionalProp){ - - if(typeof objTypeDef =='object'){ - if(typeof instance != 'object' || instance instanceof Array){ - errors.push({property:path,message:"an object is required"}); - } - - for(var i in objTypeDef){ - if(objTypeDef.hasOwnProperty(i)){ - var value = instance[i]; - // skip _not_ specified properties - if (value === undefined && options.existingOnly) continue; - var propDef = objTypeDef[i]; - // set default - if(value === undefined && propDef["default"]){ - value = instance[i] = propDef["default"]; - } - if(options.coerce && i in instance){ - value = instance[i] = options.coerce(value, propDef); - } - checkProp(value,propDef,path,i); - } - } - } - for(i in instance){ - if(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){ - if (options.filter) { - delete instance[i]; - continue; - } else { - errors.push({property:path,message:(typeof value) + "The property " + i + - " is not defined in the schema and the schema does not allow additional properties"}); - } - } - var requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires; - if(requires && !(requires in instance)){ - errors.push({property:path,message:"the presence of the property " + i + " requires that " + requires + " also be present"}); - } - value = instance[i]; - if(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){ - if(options.coerce){ - value = instance[i] = options.coerce(value, additionalProp); - } - checkProp(value,additionalProp,path,i); - } - if(!_changing && value && value.$schema){ - errors = errors.concat(checkProp(value,value.$schema,path,i)); - } - } - return errors; - } - if(schema){ - checkProp(instance,schema,'',_changing || ''); - } - if(!_changing && instance && instance.$schema){ - checkProp(instance,instance.$schema,'',''); - } - return {valid:!errors.length,errors:errors}; -}; -exports.mustBeValid = function(result){ - // summary: - // This checks to ensure that the result is valid and will throw an appropriate error message if it is not - // result: the result returned from checkPropertyChange or validate - if(!result.valid){ - throw new TypeError(result.errors.map(function(error){return "for property " + error.property + ': ' + error.message;}).join(", \n")); - } -} - -return exports; -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/package.json deleted file mode 100644 index d621cf6b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_args": [ - [ - "json-schema@0.2.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim" - ] - ], - "_from": "json-schema@0.2.2", - "_id": "json-schema@0.2.2", - "_inCache": true, - "_installable": true, - "_location": "/json-schema", - "_npmUser": { - "email": "kriszyp@gmail.com", - "name": "kriszyp" - }, - "_npmVersion": "1.1.59", - "_phantomChildren": {}, - "_requested": { - "name": "json-schema", - "raw": "json-schema@0.2.2", - "rawSpec": "0.2.2", - "scope": null, - "spec": "0.2.2", - "type": "version" - }, - "_requiredBy": [ - "/jsprim" - ], - "_resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", - "_shasum": "50354f19f603917c695f70b85afa77c3b0f23506", - "_shrinkwrap": null, - "_spec": "json-schema@0.2.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim", - "author": { - "name": "Kris Zyp" - }, - "bugs": { - "url": "https://github.com/kriszyp/json-schema/issues" - }, - "dependencies": {}, - "description": "JSON Schema validation and specifications", - "devDependencies": { - "vows": "*" - }, - "directories": { - "lib": "./lib" - }, - "dist": { - "shasum": "50354f19f603917c695f70b85afa77c3b0f23506", - "tarball": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz" - }, - "homepage": "https://github.com/kriszyp/json-schema#readme", - "keywords": [ - "json", - "schema" - ], - "licenses": [ - { - "type": "AFLv2.1", - "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L43" - }, - { - "type": "BSD", - "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L13" - } - ], - "main": "./lib/validate.js", - "maintainers": [ - { - "email": "kriszyp@gmail.com", - "name": "kriszyp" - } - ], - "name": "json-schema", - "optionalDependencies": {}, - "readme": "JSON Schema is a repository for the JSON Schema specification, reference schemas and a CommonJS implementation of JSON Schema (not the only JavaScript implementation of JSON Schema, JSV is another excellent JavaScript validator).\r\n\r\nCode is licensed under the AFL or BSD license as part of the Persevere \r\nproject which is administered under the Dojo foundation,\r\nand all contributions require a Dojo CLA.", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/kriszyp/json-schema.git" - }, - "scripts": { - "test": "echo TESTS DISABLED vows --spec test/*.js" - }, - "version": "0.2.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/test/tests.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/test/tests.js deleted file mode 100644 index 2938aea7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-schema/test/tests.js +++ /dev/null @@ -1,95 +0,0 @@ -var assert = require('assert'); -var vows = require('vows'); -var path = require('path'); -var fs = require('fs'); - -var validate = require('../lib/validate').validate; - - -var revision = 'draft-03'; -var schemaRoot = path.join(__dirname, '..', revision); -var schemaNames = ['schema', 'hyper-schema', 'links', 'json-ref' ]; -var schemas = {}; - -schemaNames.forEach(function(name) { - var file = path.join(schemaRoot, name); - schemas[name] = loadSchema(file); -}); - -schemaNames.forEach(function(name) { - var s, n = name+'-nsd', f = path.join(schemaRoot, name); - schemas[n] = loadSchema(f); - s = schemas[n]; - delete s['$schema']; -}); - -function loadSchema(path) { - var data = fs.readFileSync(path, 'utf-8'); - var schema = JSON.parse(data); - return schema; -} - -function resultIsValid() { - return function(result) { - assert.isObject(result); - //assert.isBoolean(result.valid); - assert.equal(typeof(result.valid), 'boolean'); - assert.isArray(result.errors); - for (var i = 0; i < result.errors.length; i++) { - assert.notEqual(result.errors[i], null, 'errors['+i+'] is null'); - } - } -} - -function assertValidates(doc, schema) { - var context = {}; - - context[': validate('+doc+', '+schema+')'] = { - topic: validate(schemas[doc], schemas[schema]), - 'returns valid result': resultIsValid(), - 'with valid=true': function(result) { assert.equal(result.valid, true); }, - 'and no errors': function(result) { - // XXX work-around for bug in vows: [null] chokes it - if (result.errors[0] == null) assert.fail('(errors contains null)'); - assert.length(result.errors, 0); - } - }; - - return context; -} - -function assertSelfValidates(doc) { - var context = {}; - - context[': validate('+doc+')'] = { - topic: validate(schemas[doc]), - 'returns valid result': resultIsValid(), - 'with valid=true': function(result) { assert.equal(result.valid, true); }, - 'and no errors': function(result) { assert.length(result.errors, 0); } - }; - - return context; -} - -var suite = vows.describe('JSON Schema').addBatch({ - 'Core-NSD self-validates': assertSelfValidates('schema-nsd'), - 'Core-NSD/Core-NSD': assertValidates('schema-nsd', 'schema-nsd'), - 'Core-NSD/Core': assertValidates('schema-nsd', 'schema'), - - 'Core self-validates': assertSelfValidates('schema'), - 'Core/Core': assertValidates('schema', 'schema'), - - 'Hyper-NSD self-validates': assertSelfValidates('hyper-schema-nsd'), - 'Hyper self-validates': assertSelfValidates('hyper-schema'), - 'Hyper/Hyper': assertValidates('hyper-schema', 'hyper-schema'), - 'Hyper/Core': assertValidates('hyper-schema', 'schema'), - - 'Links-NSD self-validates': assertSelfValidates('links-nsd'), - 'Links self-validates': assertSelfValidates('links'), - 'Links/Hyper': assertValidates('links', 'hyper-schema'), - 'Links/Core': assertValidates('links', 'schema'), - - 'Json-Ref self-validates': assertSelfValidates('json-ref'), - 'Json-Ref/Hyper': assertValidates('json-ref', 'hyper-schema'), - 'Json-Ref/Core': assertValidates('json-ref', 'schema') -}).export(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.travis.yml deleted file mode 100644 index cc4dba29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/key_cmp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/key_cmp.js deleted file mode 100644 index d5f66752..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/key_cmp.js +++ /dev/null @@ -1,7 +0,0 @@ -var stringify = require('../'); - -var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; -var s = stringify(obj, function (a, b) { - return a.key < b.key ? 1 : -1; -}); -console.log(s); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/nested.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/nested.js deleted file mode 100644 index 9a672fc6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/nested.js +++ /dev/null @@ -1,3 +0,0 @@ -var stringify = require('../'); -var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; -console.log(stringify(obj)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/str.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/str.js deleted file mode 100644 index 9b4b3cd2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/str.js +++ /dev/null @@ -1,3 +0,0 @@ -var stringify = require('../'); -var obj = { c: 6, b: [4,5], a: 3 }; -console.log(stringify(obj)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/value_cmp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/value_cmp.js deleted file mode 100644 index 09f1c5f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/example/value_cmp.js +++ /dev/null @@ -1,7 +0,0 @@ -var stringify = require('../'); - -var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 }; -var s = stringify(obj, function (a, b) { - return a.value < b.value ? 1 : -1; -}); -console.log(s); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/index.js deleted file mode 100644 index 6a4131d4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/index.js +++ /dev/null @@ -1,84 +0,0 @@ -var json = typeof JSON !== 'undefined' ? JSON : require('jsonify'); - -module.exports = function (obj, opts) { - if (!opts) opts = {}; - if (typeof opts === 'function') opts = { cmp: opts }; - var space = opts.space || ''; - if (typeof space === 'number') space = Array(space+1).join(' '); - var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; - var replacer = opts.replacer || function(key, value) { return value; }; - - var cmp = opts.cmp && (function (f) { - return function (node) { - return function (a, b) { - var aobj = { key: a, value: node[a] }; - var bobj = { key: b, value: node[b] }; - return f(aobj, bobj); - }; - }; - })(opts.cmp); - - var seen = []; - return (function stringify (parent, key, node, level) { - var indent = space ? ('\n' + new Array(level + 1).join(space)) : ''; - var colonSeparator = space ? ': ' : ':'; - - if (node && node.toJSON && typeof node.toJSON === 'function') { - node = node.toJSON(); - } - - node = replacer.call(parent, key, node); - - if (node === undefined) { - return; - } - if (typeof node !== 'object' || node === null) { - return json.stringify(node); - } - if (isArray(node)) { - var out = []; - for (var i = 0; i < node.length; i++) { - var item = stringify(node, i, node[i], level+1) || json.stringify(null); - out.push(indent + space + item); - } - return '[' + out.join(',') + indent + ']'; - } - else { - if (seen.indexOf(node) !== -1) { - if (cycles) return json.stringify('__cycle__'); - throw new TypeError('Converting circular structure to JSON'); - } - else seen.push(node); - - var keys = objectKeys(node).sort(cmp && cmp(node)); - var out = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = stringify(node, key, node[key], level+1); - - if(!value) continue; - - var keyValue = json.stringify(key) - + colonSeparator - + value; - ; - out.push(indent + space + keyValue); - } - seen.splice(seen.indexOf(node), 1); - return '{' + out.join(',') + indent + '}'; - } - })({ '': obj }, '', obj, 0); -}; - -var isArray = Array.isArray || function (x) { - return {}.toString.call(x) === '[object Array]'; -}; - -var objectKeys = Object.keys || function (obj) { - var has = Object.prototype.hasOwnProperty || function () { return true }; - var keys = []; - for (var key in obj) { - if (has.call(obj, key)) keys.push(key); - } - return keys; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/package.json deleted file mode 100644 index f7f9cbbc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "json-stable-stringify@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/unique-stream" - ] - ], - "_from": "json-stable-stringify@>=1.0.0 <2.0.0", - "_id": "json-stable-stringify@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/json-stable-stringify", - "_nodeVersion": "4.2.1", - "_npmOperationalInternal": { - "host": "packages-5-east.internal.npmjs.com", - "tmp": "tmp/json-stable-stringify-1.0.1.tgz_1454436356521_0.9410459187347442" - }, - "_npmUser": { - "email": "substack@gmail.com", - "name": "substack" - }, - "_npmVersion": "3.4.1", - "_phantomChildren": {}, - "_requested": { - "name": "json-stable-stringify", - "raw": "json-stable-stringify@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/unique-stream" - ], - "_resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "_shasum": "9a759d39c5f2ff503fd5300646ed445f88c4f9af", - "_shrinkwrap": null, - "_spec": "json-stable-stringify@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/unique-stream", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/json-stable-stringify/issues" - }, - "dependencies": { - "jsonify": "~0.0.0" - }, - "description": "deterministic JSON.stringify() with custom sorting to get deterministic hashes from stringified results", - "devDependencies": { - "tape": "~1.0.4" - }, - "directories": {}, - "dist": { - "shasum": "9a759d39c5f2ff503fd5300646ed445f88c4f9af", - "tarball": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, - "gitHead": "4a3ac9cc006a91e64901f8ebe78d23bf9fc9fbd0", - "homepage": "https://github.com/substack/json-stable-stringify", - "keywords": [ - "json", - "stringify", - "deterministic", - "hash", - "sort", - "stable" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "json-stable-stringify", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/json-stable-stringify.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "testling": { - "browsers": [ - "ie/8..latest", - "ff/5", - "ff/latest", - "chrome/15", - "chrome/latest", - "safari/latest", - "opera/latest" - ], - "files": "test/*.js" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/readme.markdown deleted file mode 100644 index 406c3c72..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/readme.markdown +++ /dev/null @@ -1,130 +0,0 @@ -# json-stable-stringify - -deterministic version of `JSON.stringify()` so you can get a consistent hash -from stringified results - -You can also pass in a custom comparison function. - -[![browser support](https://ci.testling.com/substack/json-stable-stringify.png)](https://ci.testling.com/substack/json-stable-stringify) - -[![build status](https://secure.travis-ci.org/substack/json-stable-stringify.png)](http://travis-ci.org/substack/json-stable-stringify) - -# example - -``` js -var stringify = require('json-stable-stringify'); -var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; -console.log(stringify(obj)); -``` - -output: - -``` -{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8} -``` - -# methods - -``` js -var stringify = require('json-stable-stringify') -``` - -## var str = stringify(obj, opts) - -Return a deterministic stringified string `str` from the object `obj`. - -## options - -### cmp - -If `opts` is given, you can supply an `opts.cmp` to have a custom comparison -function for object keys. Your function `opts.cmp` is called with these -parameters: - -``` js -opts.cmp({ key: akey, value: avalue }, { key: bkey, value: bvalue }) -``` - -For example, to sort on the object key names in reverse order you could write: - -``` js -var stringify = require('json-stable-stringify'); - -var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; -var s = stringify(obj, function (a, b) { - return a.key < b.key ? 1 : -1; -}); -console.log(s); -``` - -which results in the output string: - -``` -{"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3} -``` - -Or if you wanted to sort on the object values in reverse order, you could write: - -``` -var stringify = require('json-stable-stringify'); - -var obj = { d: 6, c: 5, b: [{z:3,y:2,x:1},9], a: 10 }; -var s = stringify(obj, function (a, b) { - return a.value < b.value ? 1 : -1; -}); -console.log(s); -``` - -which outputs: - -``` -{"d":6,"c":5,"b":[{"z":3,"y":2,"x":1},9],"a":10} -``` - -### space - -If you specify `opts.space`, it will indent the output for pretty-printing. -Valid values are strings (e.g. `{space: \t}`) or a number of spaces -(`{space: 3}`). - -For example: - -```js -var obj = { b: 1, a: { foo: 'bar', and: [1, 2, 3] } }; -var s = stringify(obj, { space: ' ' }); -console.log(s); -``` - -which outputs: - -``` -{ - "a": { - "and": [ - 1, - 2, - 3 - ], - "foo": "bar" - }, - "b": 1 -} -``` - -### replacer - -The replacer parameter is a function `opts.replacer(key, value)` that behaves -the same as the replacer -[from the core JSON object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_native_JSON#The_replacer_parameter). - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install json-stable-stringify -``` - -# license - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/cmp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/cmp.js deleted file mode 100644 index 2dbb3935..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/cmp.js +++ /dev/null @@ -1,11 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('custom comparison function', function (t) { - t.plan(1); - var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; - var s = stringify(obj, function (a, b) { - return a.key < b.key ? 1 : -1; - }); - t.equal(s, '{"c":8,"b":[{"z":6,"y":5,"x":4},7],"a":3}'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/nested.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/nested.js deleted file mode 100644 index 026ebd59..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/nested.js +++ /dev/null @@ -1,35 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('nested', function (t) { - t.plan(1); - var obj = { c: 8, b: [{z:6,y:5,x:4},7], a: 3 }; - t.equal(stringify(obj), '{"a":3,"b":[{"x":4,"y":5,"z":6},7],"c":8}'); -}); - -test('cyclic (default)', function (t) { - t.plan(1); - var one = { a: 1 }; - var two = { a: 2, one: one }; - one.two = two; - try { - stringify(one); - } catch (ex) { - t.equal(ex.toString(), 'TypeError: Converting circular structure to JSON'); - } -}); - -test('cyclic (specifically allowed)', function (t) { - t.plan(1); - var one = { a: 1 }; - var two = { a: 2, one: one }; - one.two = two; - t.equal(stringify(one, {cycles:true}), '{"a":1,"two":{"a":2,"one":"__cycle__"}}'); -}); - -test('repeated non-cyclic value', function(t) { - t.plan(1); - var one = { x: 1 }; - var two = { a: one, b: one }; - t.equal(stringify(two), '{"a":{"x":1},"b":{"x":1}}'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/replacer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/replacer.js deleted file mode 100644 index 98802a72..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/replacer.js +++ /dev/null @@ -1,74 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('replace root', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: false }; - var replacer = function(key, value) { return 'one'; }; - - t.equal(stringify(obj, { replacer: replacer }), '"one"'); -}); - -test('replace numbers', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: false }; - var replacer = function(key, value) { - if(value === 1) return 'one'; - if(value === 2) return 'two'; - return value; - }; - - t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":"two","c":false}'); -}); - -test('replace with object', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: false }; - var replacer = function(key, value) { - if(key === 'b') return { d: 1 }; - if(value === 1) return 'one'; - return value; - }; - - t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":{"d":"one"},"c":false}'); -}); - -test('replace with undefined', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: false }; - var replacer = function(key, value) { - if(value === false) return; - return value; - }; - - t.equal(stringify(obj, { replacer: replacer }), '{"a":1,"b":2}'); -}); - -test('replace with array', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: false }; - var replacer = function(key, value) { - if(key === 'b') return ['one', 'two']; - return value; - }; - - t.equal(stringify(obj, { replacer: replacer }), '{"a":1,"b":["one","two"],"c":false}'); -}); - -test('replace array item', function (t) { - t.plan(1); - - var obj = { a: 1, b: 2, c: [1,2] }; - var replacer = function(key, value) { - if(value === 1) return 'one'; - if(value === 2) return 'two'; - return value; - }; - - t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":"two","c":["one","two"]}'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/space.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/space.js deleted file mode 100644 index 2621122a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/space.js +++ /dev/null @@ -1,59 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('space parameter', function (t) { - t.plan(1); - var obj = { one: 1, two: 2 }; - t.equal(stringify(obj, {space: ' '}), '' - + '{\n' - + ' "one": 1,\n' - + ' "two": 2\n' - + '}' - ); -}); - -test('space parameter (with tabs)', function (t) { - t.plan(1); - var obj = { one: 1, two: 2 }; - t.equal(stringify(obj, {space: '\t'}), '' - + '{\n' - + '\t"one": 1,\n' - + '\t"two": 2\n' - + '}' - ); -}); - -test('space parameter (with a number)', function (t) { - t.plan(1); - var obj = { one: 1, two: 2 }; - t.equal(stringify(obj, {space: 3}), '' - + '{\n' - + ' "one": 1,\n' - + ' "two": 2\n' - + '}' - ); -}); - -test('space parameter (nested objects)', function (t) { - t.plan(1); - var obj = { one: 1, two: { b: 4, a: [2,3] } }; - t.equal(stringify(obj, {space: ' '}), '' - + '{\n' - + ' "one": 1,\n' - + ' "two": {\n' - + ' "a": [\n' - + ' 2,\n' - + ' 3\n' - + ' ],\n' - + ' "b": 4\n' - + ' }\n' - + '}' - ); -}); - -test('space parameter (same as native)', function (t) { - t.plan(1); - // for this test, properties need to be in alphabetical order - var obj = { one: 1, two: { a: [2,3], b: 4 } }; - t.equal(stringify(obj, {space: ' '}), JSON.stringify(obj, null, ' ')); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/str.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/str.js deleted file mode 100644 index 67426b99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/str.js +++ /dev/null @@ -1,32 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('simple object', function (t) { - t.plan(1); - var obj = { c: 6, b: [4,5], a: 3, z: null }; - t.equal(stringify(obj), '{"a":3,"b":[4,5],"c":6,"z":null}'); -}); - -test('object with undefined', function (t) { - t.plan(1); - var obj = { a: 3, z: undefined }; - t.equal(stringify(obj), '{"a":3}'); -}); - -test('array with undefined', function (t) { - t.plan(1); - var obj = [4, undefined, 6]; - t.equal(stringify(obj), '[4,null,6]'); -}); - -test('object with empty string', function (t) { - t.plan(1); - var obj = { a: 3, z: '' }; - t.equal(stringify(obj), '{"a":3,"z":""}'); -}); - -test('array with empty string', function (t) { - t.plan(1); - var obj = [4, '', 6]; - t.equal(stringify(obj), '[4,"",6]'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/to-json.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/to-json.js deleted file mode 100644 index ef9a9809..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stable-stringify/test/to-json.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require('tape'); -var stringify = require('../'); - -test('toJSON function', function (t) { - t.plan(1); - var obj = { one: 1, two: 2, toJSON: function() { return { one: 1 }; } }; - t.equal(stringify(obj), '{"one":1}' ); -}); - -test('toJSON returns string', function (t) { - t.plan(1); - var obj = { one: 1, two: 2, toJSON: function() { return 'one'; } }; - t.equal(stringify(obj), '"one"'); -}); - -test('toJSON returns array', function (t) { - t.plan(1); - var obj = { one: 1, two: 2, toJSON: function() { return ['one']; } }; - t.equal(stringify(obj), '["one"]'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/.npmignore deleted file mode 100644 index 17d6b367..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/*.tgz diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/CHANGELOG.md deleted file mode 100644 index 42bcb60a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/CHANGELOG.md +++ /dev/null @@ -1,14 +0,0 @@ -## Unreleased -- Fixes stringify to only take ancestors into account when checking - circularity. - It previously assumed every visited object was circular which led to [false - positives][issue9]. - Uses the tiny serializer I wrote for [Must.js][must] a year and a half ago. -- Fixes calling the `replacer` function in the proper context (`thisArg`). -- Fixes calling the `cycleReplacer` function in the proper context (`thisArg`). -- Speeds serializing by a factor of - Big-O(h-my-god-it-linearly-searched-every-object) it had ever seen. Searching - only the ancestors for a circular references speeds up things considerably. - -[must]: https://github.com/moll/js-must -[issue9]: https://github.com/isaacs/json-stringify-safe/issues/9 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/Makefile deleted file mode 100644 index 36088c72..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -NODE_OPTS = -TEST_OPTS = - -love: - @echo "Feel like makin' love." - -test: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot $(TEST_OPTS) - -spec: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec $(TEST_OPTS) - -autotest: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R dot --watch $(TEST_OPTS) - -autospec: - @node $(NODE_OPTS) ./node_modules/.bin/_mocha -R spec --watch $(TEST_OPTS) - -pack: - @file=$$(npm pack); echo "$$file"; tar tf "$$file" - -publish: - npm publish - -tag: - git tag "v$$(node -e 'console.log(require("./package").version)')" - -clean: - rm -f *.tgz - npm prune --production - -.PHONY: love -.PHONY: test spec autotest autospec -.PHONY: pack publish tag -.PHONY: clean diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/README.md deleted file mode 100644 index a11f302a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# json-stringify-safe - -Like JSON.stringify, but doesn't throw on circular references. - -## Usage - -Takes the same arguments as `JSON.stringify`. - -```javascript -var stringify = require('json-stringify-safe'); -var circularObj = {}; -circularObj.circularRef = circularObj; -circularObj.list = [ circularObj, circularObj ]; -console.log(stringify(circularObj, null, 2)); -``` - -Output: - -```json -{ - "circularRef": "[Circular]", - "list": [ - "[Circular]", - "[Circular]" - ] -} -``` - -## Details - -``` -stringify(obj, serializer, indent, decycler) -``` - -The first three arguments are the same as to JSON.stringify. The last -is an argument that's only used when the object has been seen already. - -The default `decycler` function returns the string `'[Circular]'`. -If, for example, you pass in `function(k,v){}` (return nothing) then it -will prune cycles. If you pass in `function(k,v){ return {foo: 'bar'}}`, -then cyclical objects will always be represented as `{"foo":"bar"}` in -the result. - -``` -stringify.getSerialize(serializer, decycler) -``` - -Returns a serializer that can be used elsewhere. This is the actual -function that's passed to JSON.stringify. - -**Note** that the function returned from `getSerialize` is stateful for now, so -do **not** use it more than once. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/package.json deleted file mode 100644 index 6729198e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "_args": [ - [ - "json-stringify-safe@~5.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "json-stringify-safe@>=5.0.0 <5.1.0", - "_id": "json-stringify-safe@5.0.1", - "_inCache": true, - "_installable": true, - "_location": "/json-stringify-safe", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.0", - "_phantomChildren": {}, - "_requested": { - "name": "json-stringify-safe", - "raw": "json-stringify-safe@~5.0.0", - "rawSpec": "~5.0.0", - "scope": null, - "spec": ">=5.0.0 <5.1.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "_shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb", - "_shrinkwrap": null, - "_spec": "json-stringify-safe@~5.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/json-stringify-safe/issues" - }, - "contributors": [ - { - "email": "andri@dot.ee", - "name": "Andri Möll", - "url": "http://themoll.com" - } - ], - "dependencies": {}, - "description": "Like JSON.stringify, but doesn't blow up on circular refs.", - "devDependencies": { - "mocha": ">= 2.1.0 < 3", - "must": ">= 0.12 < 0.13", - "sinon": ">= 1.12.2 < 2" - }, - "directories": {}, - "dist": { - "shasum": "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb", - "tarball": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "gitHead": "3890dceab3ad14f8701e38ca74f38276abc76de5", - "homepage": "https://github.com/isaacs/json-stringify-safe", - "keywords": [ - "json", - "stringify", - "circular", - "safe" - ], - "license": "ISC", - "main": "stringify.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - }, - { - "email": "andri@dot.ee", - "name": "moll" - } - ], - "name": "json-stringify-safe", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/json-stringify-safe.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "5.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/stringify.js deleted file mode 100644 index 124a4521..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/stringify.js +++ /dev/null @@ -1,27 +0,0 @@ -exports = module.exports = stringify -exports.getSerialize = serializer - -function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) -} - -function serializer(replacer, cycleReplacer) { - var stack = [], keys = [] - - if (cycleReplacer == null) cycleReplacer = function(key, value) { - if (stack[0] === value) return "[Circular ~]" - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" - } - - return function(key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this) - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) - } - else stack.push(value) - - return replacer == null ? value : replacer.call(this, key, value) - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/mocha.opts b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/mocha.opts deleted file mode 100644 index 2544e586..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/mocha.opts +++ /dev/null @@ -1,2 +0,0 @@ ---recursive ---require must diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/stringify_test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/stringify_test.js deleted file mode 100644 index 5b325831..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/json-stringify-safe/test/stringify_test.js +++ /dev/null @@ -1,246 +0,0 @@ -var Sinon = require("sinon") -var stringify = require("..") -function jsonify(obj) { return JSON.stringify(obj, null, 2) } - -describe("Stringify", function() { - it("must stringify circular objects", function() { - var obj = {name: "Alice"} - obj.self = obj - var json = stringify(obj, null, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - }) - - it("must stringify circular objects with intermediaries", function() { - var obj = {name: "Alice"} - obj.identity = {self: obj} - var json = stringify(obj, null, 2) - json.must.eql(jsonify({name: "Alice", identity: {self: "[Circular ~]"}})) - }) - - it("must stringify circular objects deeper", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - obj.child.self = obj.child - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - child: {name: "Bob", self: "[Circular ~.child]"} - })) - }) - - it("must stringify circular objects deeper with intermediaries", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - obj.child.identity = {self: obj.child} - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - child: {name: "Bob", identity: {self: "[Circular ~.child]"}} - })) - }) - - it("must stringify circular objects in an array", function() { - var obj = {name: "Alice"} - obj.self = [obj, obj] - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", self: ["[Circular ~]", "[Circular ~]"] - })) - }) - - it("must stringify circular objects deeper in an array", function() { - var obj = {name: "Alice", children: [{name: "Bob"}, {name: "Eve"}]} - obj.children[0].self = obj.children[0] - obj.children[1].self = obj.children[1] - - stringify(obj, null, 2).must.eql(jsonify({ - name: "Alice", - children: [ - {name: "Bob", self: "[Circular ~.children.0]"}, - {name: "Eve", self: "[Circular ~.children.1]"} - ] - })) - }) - - it("must stringify circular arrays", function() { - var obj = [] - obj.push(obj) - obj.push(obj) - var json = stringify(obj, null, 2) - json.must.eql(jsonify(["[Circular ~]", "[Circular ~]"])) - }) - - it("must stringify circular arrays with intermediaries", function() { - var obj = [] - obj.push({name: "Alice", self: obj}) - obj.push({name: "Bob", self: obj}) - - stringify(obj, null, 2).must.eql(jsonify([ - {name: "Alice", self: "[Circular ~]"}, - {name: "Bob", self: "[Circular ~]"} - ])) - }) - - it("must stringify repeated objects in objects", function() { - var obj = {} - var alice = {name: "Alice"} - obj.alice1 = alice - obj.alice2 = alice - - stringify(obj, null, 2).must.eql(jsonify({ - alice1: {name: "Alice"}, - alice2: {name: "Alice"} - })) - }) - - it("must stringify repeated objects in arrays", function() { - var alice = {name: "Alice"} - var obj = [alice, alice] - var json = stringify(obj, null, 2) - json.must.eql(jsonify([{name: "Alice"}, {name: "Alice"}])) - }) - - it("must call given decycler and use its output", function() { - var obj = {} - obj.a = obj - obj.b = obj - - var decycle = Sinon.spy(function() { return decycle.callCount }) - var json = stringify(obj, null, 2, decycle) - json.must.eql(jsonify({a: 1, b: 2}, null, 2)) - - decycle.callCount.must.equal(2) - decycle.thisValues[0].must.equal(obj) - decycle.args[0][0].must.equal("a") - decycle.args[0][1].must.equal(obj) - decycle.thisValues[1].must.equal(obj) - decycle.args[1][0].must.equal("b") - decycle.args[1][1].must.equal(obj) - }) - - it("must call replacer and use its output", function() { - var obj = {name: "Alice", child: {name: "Bob"}} - - var replacer = Sinon.spy(bangString) - var json = stringify(obj, replacer, 2) - json.must.eql(jsonify({name: "Alice!", child: {name: "Bob!"}})) - - replacer.callCount.must.equal(4) - replacer.args[0][0].must.equal("") - replacer.args[0][1].must.equal(obj) - replacer.thisValues[1].must.equal(obj) - replacer.args[1][0].must.equal("name") - replacer.args[1][1].must.equal("Alice") - replacer.thisValues[2].must.equal(obj) - replacer.args[2][0].must.equal("child") - replacer.args[2][1].must.equal(obj.child) - replacer.thisValues[3].must.equal(obj.child) - replacer.args[3][0].must.equal("name") - replacer.args[3][1].must.equal("Bob") - }) - - it("must call replacer after describing circular references", function() { - var obj = {name: "Alice"} - obj.self = obj - - var replacer = Sinon.spy(bangString) - var json = stringify(obj, replacer, 2) - json.must.eql(jsonify({name: "Alice!", self: "[Circular ~]!"})) - - replacer.callCount.must.equal(3) - replacer.args[0][0].must.equal("") - replacer.args[0][1].must.equal(obj) - replacer.thisValues[1].must.equal(obj) - replacer.args[1][0].must.equal("name") - replacer.args[1][1].must.equal("Alice") - replacer.thisValues[2].must.equal(obj) - replacer.args[2][0].must.equal("self") - replacer.args[2][1].must.equal("[Circular ~]") - }) - - it("must call given decycler and use its output for nested objects", - function() { - var obj = {} - obj.a = obj - obj.b = {self: obj} - - var decycle = Sinon.spy(function() { return decycle.callCount }) - var json = stringify(obj, null, 2, decycle) - json.must.eql(jsonify({a: 1, b: {self: 2}})) - - decycle.callCount.must.equal(2) - decycle.args[0][0].must.equal("a") - decycle.args[0][1].must.equal(obj) - decycle.args[1][0].must.equal("self") - decycle.args[1][1].must.equal(obj) - }) - - it("must use decycler's output when it returned null", function() { - var obj = {a: "b"} - obj.self = obj - obj.selves = [obj, obj] - - function decycle() { return null } - stringify(obj, null, 2, decycle).must.eql(jsonify({ - a: "b", - self: null, - selves: [null, null] - })) - }) - - it("must use decycler's output when it returned undefined", function() { - var obj = {a: "b"} - obj.self = obj - obj.selves = [obj, obj] - - function decycle() {} - stringify(obj, null, 2, decycle).must.eql(jsonify({ - a: "b", - selves: [null, null] - })) - }) - - it("must throw given a decycler that returns a cycle", function() { - var obj = {} - obj.self = obj - var err - function identity(key, value) { return value } - try { stringify(obj, null, 2, identity) } catch (ex) { err = ex } - err.must.be.an.instanceof(TypeError) - }) - - describe(".getSerialize", function() { - it("must stringify circular objects", function() { - var obj = {a: "b"} - obj.circularRef = obj - obj.list = [obj, obj] - - var json = JSON.stringify(obj, stringify.getSerialize(), 2) - json.must.eql(jsonify({ - "a": "b", - "circularRef": "[Circular ~]", - "list": ["[Circular ~]", "[Circular ~]"] - })) - }) - - // This is the behavior as of Mar 3, 2015. - // The serializer function keeps state inside the returned function and - // so far I'm not sure how to not do that. JSON.stringify's replacer is not - // called _after_ serialization. - xit("must return a function that could be called twice", function() { - var obj = {name: "Alice"} - obj.self = obj - - var json - var serializer = stringify.getSerialize() - - json = JSON.stringify(obj, serializer, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - - json = JSON.stringify(obj, serializer, 2) - json.must.eql(jsonify({name: "Alice", self: "[Circular ~]"})) - }) - }) -}) - -function bangString(key, value) { - return typeof value == "string" ? value + "!" : value -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/README.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/README.markdown deleted file mode 100644 index 71d9a93b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/README.markdown +++ /dev/null @@ -1,34 +0,0 @@ -jsonify -======= - -This module provides Douglas Crockford's JSON implementation without modifying -any globals. - -`stringify` and `parse` are merely exported without respect to whether or not a -global `JSON` object exists. - -methods -======= - -var json = require('jsonify'); - -json.parse(source, reviver) ---------------------------- - -Return a new javascript object from a parse of the `source` string. - -If a `reviver` function is specified, walk the structure passing each name/value -pair to `reviver.call(parent, key, value)` to transform the `value` before -parsing it. - -json.stringify(value, replacer, space) --------------------------------------- - -Return a string representation for `value`. - -If `replacer` is specified, walk the structure passing each name/value pair to -`replacer.call(parent, key, value)` to transform the `value` before stringifying -it. - -If `space` is a number, indent the result by that many spaces. -If `space` is a string, use `space` as the indentation. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/index.js deleted file mode 100644 index f728a160..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/index.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.parse = require('./lib/parse'); -exports.stringify = require('./lib/stringify'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/parse.js deleted file mode 100644 index 30e2f014..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/parse.js +++ /dev/null @@ -1,273 +0,0 @@ -var at, // The index of the current character - ch, // The current character - escapee = { - '"': '"', - '\\': '\\', - '/': '/', - b: '\b', - f: '\f', - n: '\n', - r: '\r', - t: '\t' - }, - text, - - error = function (m) { - // Call error when something is wrong. - throw { - name: 'SyntaxError', - message: m, - at: at, - text: text - }; - }, - - next = function (c) { - // If a c parameter is provided, verify that it matches the current character. - if (c && c !== ch) { - error("Expected '" + c + "' instead of '" + ch + "'"); - } - - // Get the next character. When there are no more characters, - // return the empty string. - - ch = text.charAt(at); - at += 1; - return ch; - }, - - number = function () { - // Parse a number value. - var number, - string = ''; - - if (ch === '-') { - string = '-'; - next('-'); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - if (ch === '.') { - string += '.'; - while (next() && ch >= '0' && ch <= '9') { - string += ch; - } - } - if (ch === 'e' || ch === 'E') { - string += ch; - next(); - if (ch === '-' || ch === '+') { - string += ch; - next(); - } - while (ch >= '0' && ch <= '9') { - string += ch; - next(); - } - } - number = +string; - if (!isFinite(number)) { - error("Bad number"); - } else { - return number; - } - }, - - string = function () { - // Parse a string value. - var hex, - i, - string = '', - uffff; - - // When parsing for string values, we must look for " and \ characters. - if (ch === '"') { - while (next()) { - if (ch === '"') { - next(); - return string; - } else if (ch === '\\') { - next(); - if (ch === 'u') { - uffff = 0; - for (i = 0; i < 4; i += 1) { - hex = parseInt(next(), 16); - if (!isFinite(hex)) { - break; - } - uffff = uffff * 16 + hex; - } - string += String.fromCharCode(uffff); - } else if (typeof escapee[ch] === 'string') { - string += escapee[ch]; - } else { - break; - } - } else { - string += ch; - } - } - } - error("Bad string"); - }, - - white = function () { - -// Skip whitespace. - - while (ch && ch <= ' ') { - next(); - } - }, - - word = function () { - -// true, false, or null. - - switch (ch) { - case 't': - next('t'); - next('r'); - next('u'); - next('e'); - return true; - case 'f': - next('f'); - next('a'); - next('l'); - next('s'); - next('e'); - return false; - case 'n': - next('n'); - next('u'); - next('l'); - next('l'); - return null; - } - error("Unexpected '" + ch + "'"); - }, - - value, // Place holder for the value function. - - array = function () { - -// Parse an array value. - - var array = []; - - if (ch === '[') { - next('['); - white(); - if (ch === ']') { - next(']'); - return array; // empty array - } - while (ch) { - array.push(value()); - white(); - if (ch === ']') { - next(']'); - return array; - } - next(','); - white(); - } - } - error("Bad array"); - }, - - object = function () { - -// Parse an object value. - - var key, - object = {}; - - if (ch === '{') { - next('{'); - white(); - if (ch === '}') { - next('}'); - return object; // empty object - } - while (ch) { - key = string(); - white(); - next(':'); - if (Object.hasOwnProperty.call(object, key)) { - error('Duplicate key "' + key + '"'); - } - object[key] = value(); - white(); - if (ch === '}') { - next('}'); - return object; - } - next(','); - white(); - } - } - error("Bad object"); - }; - -value = function () { - -// Parse a JSON value. It could be an object, an array, a string, a number, -// or a word. - - white(); - switch (ch) { - case '{': - return object(); - case '[': - return array(); - case '"': - return string(); - case '-': - return number(); - default: - return ch >= '0' && ch <= '9' ? number() : word(); - } -}; - -// Return the json_parse function. It will have access to all of the above -// functions and variables. - -module.exports = function (source, reviver) { - var result; - - text = source; - at = 0; - ch = ' '; - result = value(); - white(); - if (ch) { - error("Syntax error"); - } - - // If there is a reviver function, we recursively walk the new structure, - // passing each name/value pair to the reviver function for possible - // transformation, starting with a temporary root object that holds the result - // in an empty key. If there is not a reviver function, we simply return the - // result. - - return typeof reviver === 'function' ? (function walk(holder, key) { - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - }({'': result}, '')) : result; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/stringify.js deleted file mode 100644 index 13458708..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/lib/stringify.js +++ /dev/null @@ -1,154 +0,0 @@ -var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - -function quote(string) { - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; -} - -function str(key, holder) { - // Produce a string from holder[key]. - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - // JSON numbers must be finite. Encode non-finite numbers as null. - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - return String(value); - - case 'object': - if (!value) return 'null'; - gap += indent; - partial = []; - - // Array.isArray - if (Object.prototype.toString.apply(value) === '[object Array]') { - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and - // wrap them in brackets. - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be - // stringified. - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - else { - // Otherwise, iterate through all of the keys in the object. - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } -} - -module.exports = function (value, replacer, space) { - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - } - // If the space parameter is a string, it will be used as the indent string. - else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - rep = replacer; - if (replacer && typeof replacer !== 'function' - && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - return str('', {'': value}); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/package.json deleted file mode 100644 index 03068346..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_args": [ - [ - "jsonify@~0.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/json-stable-stringify" - ] - ], - "_defaultsLoaded": true, - "_engineSupported": true, - "_from": "jsonify@>=0.0.0 <0.1.0", - "_id": "jsonify@0.0.0", - "_inCache": true, - "_installable": true, - "_location": "/jsonify", - "_nodeVersion": "v0.5.0-pre", - "_npmVersion": "1.0.10", - "_phantomChildren": {}, - "_requested": { - "name": "jsonify", - "raw": "jsonify@~0.0.0", - "rawSpec": "~0.0.0", - "scope": null, - "spec": ">=0.0.0 <0.1.0", - "type": "range" - }, - "_requiredBy": [ - "/json-stable-stringify" - ], - "_resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "_shasum": "2c74b6ee41d93ca51b7b5aaee8f503631d252a73", - "_shrinkwrap": null, - "_spec": "jsonify@~0.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/json-stable-stringify", - "author": { - "name": "Douglas Crockford", - "url": "http://crockford.com/" - }, - "bugs": { - "url": "https://github.com/substack/jsonify/issues" - }, - "dependencies": {}, - "description": "JSON without touching any globals", - "devDependencies": { - "garbage": "0.0.x", - "tap": "0.0.x" - }, - "directories": { - "lib": ".", - "test": "test" - }, - "dist": { - "shasum": "2c74b6ee41d93ca51b7b5aaee8f503631d252a73", - "tarball": "http://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - }, - "engines": { - "node": "*" - }, - "homepage": "https://github.com/substack/jsonify#readme", - "keywords": [ - "json", - "browser" - ], - "license": "Public Domain", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "jsonify", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/jsonify.git" - }, - "scripts": { - "test": "tap test" - }, - "version": "0.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/parse.js deleted file mode 100644 index e2313f55..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/parse.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tap').test; -var json = require('../'); -var garbage = require('garbage'); - -test('parse', function (t) { - for (var i = 0; i < 50; i++) { - var s = JSON.stringify(garbage(50)); - - t.deepEqual( - json.parse(s), - JSON.parse(s) - ); - } - - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/stringify.js deleted file mode 100644 index 89b0b670..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonify/test/stringify.js +++ /dev/null @@ -1,15 +0,0 @@ -var test = require('tap').test; -var json = require('../'); -var garbage = require('garbage'); - -test('stringify', function (t) { - for (var i = 0; i < 50; i++) { - var obj = garbage(50); - t.equal( - json.stringify(obj), - JSON.stringify(obj) - ); - } - - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/.travis.yml deleted file mode 100644 index 9338bf14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: "node_js" -node_js: - - 0.6 - - 0.8 - - 0.10 - - 0.11 - - 0.12 - - iojs-v1.0 - - iojs-v2.0 - - iojs diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/README.md deleted file mode 100644 index e096dfa5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# JSON Pointer for nodejs - -This is an implementation of [JSON Pointer](http://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-08). - -## Usage - - var jsonpointer = require("jsonpointer"); - var obj = { foo: 1, bar: { baz: 2}, qux: [3, 4, 5]}; - var one = jsonpointer.get(obj, "/foo"); - var two = jsonpointer.get(obj, "/bar/baz"); - var three = jsonpointer.get(obj, "/qux/0"); - var four = jsonpointer.get(obj, "/qux/1"); - var five = jsonpointer.get(obj, "/qux/2"); - var notfound = jsonpointer.get(obj, "/quo"); // returns null - - jsonpointer.set(obj, "/foo", 6); // obj.foo = 6; - -## Testing - - $ node test.js - All tests pass. - $ - -[![Build Status](https://travis-ci.org/janl/node-jsonpointer.png?branch=master)](https://travis-ci.org/janl/node-jsonpointer) - -## Author - -(c) 2011 Jan Lehnardt - -## License - -MIT License. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/jsonpointer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/jsonpointer.js deleted file mode 100644 index 006f85ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/jsonpointer.js +++ /dev/null @@ -1,76 +0,0 @@ -var untilde = function(str) { - return str.replace(/~./g, function(m) { - switch (m) { - case "~0": - return "~"; - case "~1": - return "/"; - } - throw new Error("Invalid tilde escape: " + m); - }); -} - -var traverse = function(obj, pointer, value) { - // assert(isArray(pointer)) - var part = untilde(pointer.shift()); - if(!obj.hasOwnProperty(part)) { - return null; - } - if(pointer.length !== 0) { // keep traversin! - return traverse(obj[part], pointer, value); - } - // we're done - if(typeof value === "undefined") { - // just reading - return obj[part]; - } - // set new value, return old value - var old_value = obj[part]; - if(value === null) { - delete obj[part]; - } else { - obj[part] = value; - } - return old_value; -} - -var validate_input = function(obj, pointer) { - if(typeof obj !== "object") { - throw new Error("Invalid input object."); - } - - if(pointer === "") { - return []; - } - - if(!pointer) { - throw new Error("Invalid JSON pointer."); - } - - pointer = pointer.split("/"); - var first = pointer.shift(); - if (first !== "") { - throw new Error("Invalid JSON pointer."); - } - - return pointer; -} - -var get = function(obj, pointer) { - pointer = validate_input(obj, pointer); - if (pointer.length === 0) { - return obj; - } - return traverse(obj, pointer); -} - -var set = function(obj, pointer, value) { - pointer = validate_input(obj, pointer); - if (pointer.length === 0) { - throw new Error("Invalid JSON pointer for set.") - } - return traverse(obj, pointer, value); -} - -exports.get = get -exports.set = set diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/package.json deleted file mode 100644 index 4b3f15cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "jsonpointer@2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid" - ] - ], - "_from": "jsonpointer@2.0.0", - "_id": "jsonpointer@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/jsonpointer", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "marc.brookman@gmail.com", - "name": "marcbachmann" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "jsonpointer", - "raw": "jsonpointer@2.0.0", - "rawSpec": "2.0.0", - "scope": null, - "spec": "2.0.0", - "type": "version" - }, - "_requiredBy": [ - "/is-my-json-valid" - ], - "_resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz", - "_shasum": "3af1dd20fe85463910d469a385e33017d2a030d9", - "_shrinkwrap": null, - "_spec": "jsonpointer@2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/is-my-json-valid", - "author": { - "email": "jan@apache.org", - "name": "Jan Lehnardt" - }, - "bugs": { - "url": "http://github.com/janl/node-jsonpointer/issues" - }, - "contributors": [ - { - "email": "joe-github@cursive.net", - "name": "Joe Hildebrand" - } - ], - "dependencies": {}, - "description": "Simple JSON Addressing.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "3af1dd20fe85463910d469a385e33017d2a030d9", - "tarball": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "engines": { - "node": ">=0.6.0" - }, - "gitHead": "26ea4a5c0fcb6d9a2e87f733403791dd05637af8", - "homepage": "https://github.com/janl/node-jsonpointer#readme", - "license": "MIT", - "main": "./jsonpointer", - "maintainers": [ - { - "email": "jan@apache.org", - "name": "jan" - }, - { - "email": "marc.brookman@gmail.com", - "name": "marcbachmann" - } - ], - "name": "jsonpointer", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/janl/node-jsonpointer.git" - }, - "scripts": { - "test": "node test.js" - }, - "tags": [ - "util", - "simple", - "util", - "utility" - ], - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/test.js deleted file mode 100644 index 1c67d7f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsonpointer/test.js +++ /dev/null @@ -1,98 +0,0 @@ -var assert = require("assert"); -var jsonpointer = require("./jsonpointer"); - -var obj = { - a: 1, - b: { - c: 2 - }, - d: { - e: [{a:3}, {b:4}, {c:5}] - } -}; - -assert.equal(jsonpointer.get(obj, "/a"), 1); -assert.equal(jsonpointer.get(obj, "/b/c"), 2); -assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 3); -assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 4); -assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 5); - -// set returns old value -assert.equal(jsonpointer.set(obj, "/a", 2), 1); -assert.equal(jsonpointer.set(obj, "/b/c", 3), 2); -assert.equal(jsonpointer.set(obj, "/d/e/0/a", 4), 3); -assert.equal(jsonpointer.set(obj, "/d/e/1/b", 5), 4); -assert.equal(jsonpointer.set(obj, "/d/e/2/c", 6), 5); - -assert.equal(jsonpointer.get(obj, "/a"), 2); -assert.equal(jsonpointer.get(obj, "/b/c"), 3); -assert.equal(jsonpointer.get(obj, "/d/e/0/a"), 4); -assert.equal(jsonpointer.get(obj, "/d/e/1/b"), 5); -assert.equal(jsonpointer.get(obj, "/d/e/2/c"), 6); - -assert.equal(jsonpointer.get(obj, ""), obj); -assert.throws(function(){ jsonpointer.get(obj, "a"); }, validateError); -assert.throws(function(){ jsonpointer.get(obj, "a/"); }, validateError); - -function validateError(err) { - if ( (err instanceof Error) && /Invalid JSON pointer/.test(err.message) ) { - return true; - } -} - -var complexKeys = { - "a/b": { - c: 1 - }, - d: { - "e/f": 2 - }, - "~1": 3, - "01": 4 -} - -assert.equal(jsonpointer.get(complexKeys, "/a~1b/c"), 1); -assert.equal(jsonpointer.get(complexKeys, "/d/e~1f"), 2); -assert.equal(jsonpointer.get(complexKeys, "/~01"), 3); -assert.equal(jsonpointer.get(complexKeys, "/01"), 4); -assert.equal(jsonpointer.get(complexKeys, "/a/b/c"), null); -assert.equal(jsonpointer.get(complexKeys, "/~1"), null); - -// draft-ietf-appsawg-json-pointer-08 has special array rules -var ary = [ "zero", "one", "two" ]; -assert.equal(jsonpointer.get(ary, "/01"), null); - -//assert.equal(jsonpointer.set(ary, "/-", "three"), null); -//assert.equal(ary[3], "three"); - -// Examples from the draft: -var example = { - "foo": ["bar", "baz"], - "": 0, - "a/b": 1, - "c%d": 2, - "e^f": 3, - "g|h": 4, - "i\\j": 5, - "k\"l": 6, - " ": 7, - "m~n": 8 -}; - -assert.equal(jsonpointer.get(example, ""), example); -var ans = jsonpointer.get(example, "/foo"); -assert.equal(ans.length, 2); -assert.equal(ans[0], "bar"); -assert.equal(ans[1], "baz"); -assert.equal(jsonpointer.get(example, "/foo/0"), "bar"); -assert.equal(jsonpointer.get(example, "/"), 0); -assert.equal(jsonpointer.get(example, "/a~1b"), 1); -assert.equal(jsonpointer.get(example, "/c%d"), 2); -assert.equal(jsonpointer.get(example, "/e^f"), 3); -assert.equal(jsonpointer.get(example, "/g|h"), 4); -assert.equal(jsonpointer.get(example, "/i\\j"), 5); -assert.equal(jsonpointer.get(example, "/k\"l"), 6); -assert.equal(jsonpointer.get(example, "/ "), 7); -assert.equal(jsonpointer.get(example, "/m~0n"), 8); - -console.log("All tests pass."); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/CHANGES.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/CHANGES.md deleted file mode 100644 index 75bc4f02..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/CHANGES.md +++ /dev/null @@ -1,30 +0,0 @@ -# Changelog - -## not yet released - -None yet. - -## v1.2.2 (2015-10-15) - -* #11 NPM package shouldn't include any code that does `require('JSV')` -* #12 jsl.node.conf missing definition for "module" - -## v1.2.1 (2015-10-14) - -* #8 odd date parsing behaviour - -## v1.2.0 (2015-10-13) - -* #9 want function for returning RFC1123 dates - -## v1.1.0 (2015-09-02) - -* #6 a new suite of hrtime manipulation routines: `hrtimeAdd()`, - `hrtimeAccum()`, `hrtimeNanosec()`, `hrtimeMicrosec()` and - `hrtimeMillisec()`. - -## v1.0.0 (2015-09-01) - -First tracked release. Includes everything in previous releases, plus: - -* #4 want function for merging objects diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/LICENSE deleted file mode 100644 index cbc0bb3b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012, Joyent, Inc. All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/README.md deleted file mode 100644 index b502b2d3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/README.md +++ /dev/null @@ -1,228 +0,0 @@ -# jsprim: utilities for primitive JavaScript types - -This module provides miscellaneous facilities for working with strings, -numbers, dates, and objects and arrays of these basic types. - - -### deepCopy(obj) - -Creates a deep copy of a primitive type, object, or array of primitive types. - - -### deepEqual(obj1, obj2) - -Returns whether two objects are equal. - - -### isEmpty(obj) - -Returns true if the given object has no properties and false otherwise. This -is O(1) (unlike `Object.keys(obj).length === 0`, which is O(N)). - - -### forEachKey(obj, callback) - -Like Array.forEach, but iterates properties of an object rather than elements -of an array. Equivalent to: - - for (var key in obj) - callback(key, obj[key]); - - -### flattenObject(obj, depth) - -Flattens an object up to a given level of nesting, returning an array of arrays -of length "depth + 1", where the first "depth" elements correspond to flattened -columns and the last element contains the remaining object . For example: - - flattenObject({ - 'I': { - 'A': { - 'i': { - 'datum1': [ 1, 2 ], - 'datum2': [ 3, 4 ] - }, - 'ii': { - 'datum1': [ 3, 4 ] - } - }, - 'B': { - 'i': { - 'datum1': [ 5, 6 ] - }, - 'ii': { - 'datum1': [ 7, 8 ], - 'datum2': [ 3, 4 ], - }, - 'iii': { - } - } - }, - 'II': { - 'A': { - 'i': { - 'datum1': [ 1, 2 ], - 'datum2': [ 3, 4 ] - } - } - } - }, 3) - -becomes: - - [ - [ 'I', 'A', 'i', { 'datum1': [ 1, 2 ], 'datum2': [ 3, 4 ] } ], - [ 'I', 'A', 'ii', { 'datum1': [ 3, 4 ] } ], - [ 'I', 'B', 'i', { 'datum1': [ 5, 6 ] } ], - [ 'I', 'B', 'ii', { 'datum1': [ 7, 8 ], 'datum2': [ 3, 4 ] } ], - [ 'I', 'B', 'iii', {} ], - [ 'II', 'A', 'i', { 'datum1': [ 1, 2 ], 'datum2': [ 3, 4 ] } ] - ] - -This function is strict: "depth" must be a non-negative integer and "obj" must -be a non-null object with at least "depth" levels of nesting under all keys. - - -### flattenIter(obj, depth, func) - -This is similar to `flattenObject` except that instead of returning an array, -this function invokes `func(entry)` for each `entry` in the array that -`flattenObject` would return. `flattenIter(obj, depth, func)` is logically -equivalent to `flattenObject(obj, depth).forEach(func)`. Importantly, this -version never constructs the full array. Its memory usage is O(depth) rather -than O(n) (where `n` is the number of flattened elements). - -There's another difference between `flattenObject` and `flattenIter` that's -related to the special case where `depth === 0`. In this case, `flattenObject` -omits the array wrapping `obj` (which is regrettable). - - -### pluck(obj, key) - -Fetch nested property "key" from object "obj", traversing objects as needed. -For example, `pluck(obj, "foo.bar.baz")` is roughly equivalent to -`obj.foo.bar.baz`, except that: - -1. If traversal fails, the resulting value is undefined, and no error is - thrown. For example, `pluck({}, "foo.bar")` is just undefined. -2. If "obj" has property "key" directly (without traversing), the - corresponding property is returned. For example, - `pluck({ 'foo.bar': 1 }, 'foo.bar')` is 1, not undefined. This is also - true recursively, so `pluck({ 'a': { 'foo.bar': 1 } }, 'a.foo.bar')` is - also 1, not undefined. - - -### randElt(array) - -Returns an element from "array" selected uniformly at random. If "array" is -empty, throws an Error. - - -### startsWith(str, prefix) - -Returns true if the given string starts with the given prefix and false -otherwise. - - -### endsWith(str, suffix) - -Returns true if the given string ends with the given suffix and false -otherwise. - - -### iso8601(date) - -Converts a Date object to an ISO8601 date string of the form -"YYYY-MM-DDTHH:MM:SS.sssZ". This format is not customizable. - - -### parseDateTime(str) - -Parses a date expressed as a string, as either a number of milliseconds since -the epoch or any string format that Date accepts, giving preference to the -former where these two sets overlap (e.g., strings containing small numbers). - - -### hrtimeDiff(timeA, timeB) - -Given two hrtime readings (as from Node's `process.hrtime()`), where timeA is -later than timeB, compute the difference and return that as an hrtime. It is -illegal to invoke this for a pair of times where timeB is newer than timeA. - -### hrtimeAdd(timeA, timeB) - -Add two hrtime intervals (as from Node's `process.hrtime()`), returning a new -hrtime interval array. This function does not modify either input argument. - - -### hrtimeAccum(timeA, timeB) - -Add two hrtime intervals (as from Node's `process.hrtime()`), storing the -result in `timeA`. This function overwrites (and returns) the first argument -passed in. - - -### hrtimeNanosec(timeA), hrtimeMicrosec(timeA), hrtimeMillisec(timeA) - -This suite of functions converts a hrtime interval (as from Node's -`process.hrtime()`) into a scalar number of nanoseconds, microseconds or -milliseconds. Results are truncated, as with `Math.floor()`. - - -### validateJsonObject(schema, object) - -Uses JSON validation (via JSV) to validate the given object against the given -schema. On success, returns null. On failure, *returns* (does not throw) a -useful Error object. - - -### extraProperties(object, allowed) - -Check an object for unexpected properties. Accepts the object to check, and an -array of allowed property name strings. If extra properties are detected, an -array of extra property names is returned. If no properties other than those -in the allowed list are present on the object, the returned array will be of -zero length. - -### mergeObjects(provided, overrides, defaults) - -Merge properties from objects "provided", "overrides", and "defaults". The -intended use case is for functions that accept named arguments in an "args" -object, but want to provide some default values and override other values. In -that case, "provided" is what the caller specified, "overrides" are what the -function wants to override, and "defaults" contains default values. - -The function starts with the values in "defaults", overrides them with the -values in "provided", and then overrides those with the values in "overrides". -For convenience, any of these objects may be falsey, in which case they will be -ignored. The input objects are never modified, but properties in the returned -object are not deep-copied. - -For example: - - mergeObjects(undefined, { 'objectMode': true }, { 'highWaterMark': 0 }) - -returns: - - { 'objectMode': true, 'highWaterMark': 0 } - -For another example: - - mergeObjects( - { 'highWaterMark': 16, 'objectMode': 7 }, /* from caller */ - { 'objectMode': true }, /* overrides */ - { 'highWaterMark': 0 }); /* default */ - -returns: - - { 'objectMode': true, 'highWaterMark': 16 } - - -# Contributing - -Code should be "make check" clean. This target assumes that -[jsl](http://github.com/davepacheco/javascriptlint) and -[jsstyle](http://github.com/davepacheco/jsstyle) are on your path. - -New tests should generally accompany new functions and bug fixes. The tests -should pass cleanly (run tests/basic.js). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/lib/jsprim.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/lib/jsprim.js deleted file mode 100644 index 5ee46889..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/lib/jsprim.js +++ /dev/null @@ -1,478 +0,0 @@ -/* - * lib/jsprim.js: utilities for primitive JavaScript types - */ - -var mod_assert = require('assert'); -var mod_util = require('util'); - -var mod_extsprintf = require('extsprintf'); -var mod_verror = require('verror'); -var mod_jsonschema = require('json-schema'); - -/* - * Public interface - */ -exports.deepCopy = deepCopy; -exports.deepEqual = deepEqual; -exports.isEmpty = isEmpty; -exports.forEachKey = forEachKey; -exports.pluck = pluck; -exports.flattenObject = flattenObject; -exports.flattenIter = flattenIter; -exports.validateJsonObject = validateJsonObjectJS; -exports.validateJsonObjectJS = validateJsonObjectJS; -exports.randElt = randElt; -exports.extraProperties = extraProperties; -exports.mergeObjects = mergeObjects; - -exports.startsWith = startsWith; -exports.endsWith = endsWith; - -exports.iso8601 = iso8601; -exports.rfc1123 = rfc1123; -exports.parseDateTime = parseDateTime; - -exports.hrtimediff = hrtimeDiff; -exports.hrtimeDiff = hrtimeDiff; -exports.hrtimeAccum = hrtimeAccum; -exports.hrtimeAdd = hrtimeAdd; -exports.hrtimeNanosec = hrtimeNanosec; -exports.hrtimeMicrosec = hrtimeMicrosec; -exports.hrtimeMillisec = hrtimeMillisec; - - -/* - * Deep copy an acyclic *basic* Javascript object. This only handles basic - * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects - * containing these. This does *not* handle instances of other classes. - */ -function deepCopy(obj) -{ - var ret, key; - var marker = '__deepCopy'; - - if (obj && obj[marker]) - throw (new Error('attempted deep copy of cyclic object')); - - if (obj && obj.constructor == Object) { - ret = {}; - obj[marker] = true; - - for (key in obj) { - if (key == marker) - continue; - - ret[key] = deepCopy(obj[key]); - } - - delete (obj[marker]); - return (ret); - } - - if (obj && obj.constructor == Array) { - ret = []; - obj[marker] = true; - - for (key = 0; key < obj.length; key++) - ret.push(deepCopy(obj[key])); - - delete (obj[marker]); - return (ret); - } - - /* - * It must be a primitive type -- just return it. - */ - return (obj); -} - -function deepEqual(obj1, obj2) -{ - if (typeof (obj1) != typeof (obj2)) - return (false); - - if (obj1 === null || obj2 === null || typeof (obj1) != 'object') - return (obj1 === obj2); - - if (obj1.constructor != obj2.constructor) - return (false); - - var k; - for (k in obj1) { - if (!obj2.hasOwnProperty(k)) - return (false); - - if (!deepEqual(obj1[k], obj2[k])) - return (false); - } - - for (k in obj2) { - if (!obj1.hasOwnProperty(k)) - return (false); - } - - return (true); -} - -function isEmpty(obj) -{ - var key; - for (key in obj) - return (false); - return (true); -} - -function forEachKey(obj, callback) -{ - for (var key in obj) - callback(key, obj[key]); -} - -function pluck(obj, key) -{ - mod_assert.equal(typeof (key), 'string'); - return (pluckv(obj, key)); -} - -function pluckv(obj, key) -{ - if (obj === null || typeof (obj) !== 'object') - return (undefined); - - if (obj.hasOwnProperty(key)) - return (obj[key]); - - var i = key.indexOf('.'); - if (i == -1) - return (undefined); - - var key1 = key.substr(0, i); - if (!obj.hasOwnProperty(key1)) - return (undefined); - - return (pluckv(obj[key1], key.substr(i + 1))); -} - -/* - * Invoke callback(row) for each entry in the array that would be returned by - * flattenObject(data, depth). This is just like flattenObject(data, - * depth).forEach(callback), except that the intermediate array is never - * created. - */ -function flattenIter(data, depth, callback) -{ - doFlattenIter(data, depth, [], callback); -} - -function doFlattenIter(data, depth, accum, callback) -{ - var each; - var key; - - if (depth === 0) { - each = accum.slice(0); - each.push(data); - callback(each); - return; - } - - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); - - for (key in data) { - each = accum.slice(0); - each.push(key); - doFlattenIter(data[key], depth - 1, each, callback); - } -} - -function flattenObject(data, depth) -{ - if (depth === 0) - return ([ data ]); - - mod_assert.ok(data !== null); - mod_assert.equal(typeof (data), 'object'); - mod_assert.equal(typeof (depth), 'number'); - mod_assert.ok(depth >= 0); - - var rv = []; - var key; - - for (key in data) { - flattenObject(data[key], depth - 1).forEach(function (p) { - rv.push([ key ].concat(p)); - }); - } - - return (rv); -} - -function startsWith(str, prefix) -{ - return (str.substr(0, prefix.length) == prefix); -} - -function endsWith(str, suffix) -{ - return (str.substr( - str.length - suffix.length, suffix.length) == suffix); -} - -function iso8601(d) -{ - if (typeof (d) == 'number') - d = new Date(d); - mod_assert.ok(d.constructor === Date); - return (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ', - d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), - d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), - d.getUTCMilliseconds())); -} - -var RFC1123_MONTHS = [ - 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', - 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -var RFC1123_DAYS = [ - 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; - -function rfc1123(date) { - return (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', - RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(), - RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(), - date.getUTCHours(), date.getUTCMinutes(), - date.getUTCSeconds())); -} - -/* - * Parses a date expressed as a string, as either a number of milliseconds since - * the epoch or any string format that Date accepts, giving preference to the - * former where these two sets overlap (e.g., small numbers). - */ -function parseDateTime(str) -{ - /* - * This is irritatingly implicit, but significantly more concise than - * alternatives. The "+str" will convert a string containing only a - * number directly to a Number, or NaN for other strings. Thus, if the - * conversion succeeds, we use it (this is the milliseconds-since-epoch - * case). Otherwise, we pass the string directly to the Date - * constructor to parse. - */ - var numeric = +str; - if (!isNaN(numeric)) { - return (new Date(numeric)); - } else { - return (new Date(str)); - } -} - -function validateJsonObjectJS(schema, input) -{ - var report = mod_jsonschema.validate(input, schema); - - if (report.errors.length === 0) - return (null); - - /* Currently, we only do anything useful with the first error. */ - var error = report.errors[0]; - - /* The failed property is given by a URI with an irrelevant prefix. */ - var propname = error['property']; - var reason = error['message'].toLowerCase(); - var i, j; - - /* - * There's at least one case where the property error message is - * confusing at best. We work around this here. - */ - if ((i = reason.indexOf('the property ')) != -1 && - (j = reason.indexOf(' is not defined in the schema and the ' + - 'schema does not allow additional properties')) != -1) { - i += 'the property '.length; - if (propname === '') - propname = reason.substr(i, j - i); - else - propname = propname + '.' + reason.substr(i, j - i); - - reason = 'unsupported property'; - } - - var rv = new mod_verror.VError('property "%s": %s', propname, reason); - rv.jsv_details = error; - return (rv); -} - -function randElt(arr) -{ - mod_assert.ok(Array.isArray(arr) && arr.length > 0, - 'randElt argument must be a non-empty array'); - - return (arr[Math.floor(Math.random() * arr.length)]); -} - -function assertHrtime(a) -{ - mod_assert.ok(a[0] >= 0 && a[1] >= 0, - 'negative numbers not allowed in hrtimes'); - mod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow'); -} - -/* - * Compute the time elapsed between hrtime readings A and B, where A is later - * than B. hrtime readings come from Node's process.hrtime(). There is no - * defined way to represent negative deltas, so it's illegal to diff B from A - * where the time denoted by B is later than the time denoted by A. If this - * becomes valuable, we can define a representation and extend the - * implementation to support it. - */ -function hrtimeDiff(a, b) -{ - assertHrtime(a); - assertHrtime(b); - mod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]), - 'negative differences not allowed'); - - var rv = [ a[0] - b[0], 0 ]; - - if (a[1] >= b[1]) { - rv[1] = a[1] - b[1]; - } else { - rv[0]--; - rv[1] = 1e9 - (b[1] - a[1]); - } - - return (rv); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of nanoseconds. - */ -function hrtimeNanosec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e9 + a[1])); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of microseconds. - */ -function hrtimeMicrosec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e6 + a[1] / 1e3)); -} - -/* - * Convert a hrtime reading from the array format returned by Node's - * process.hrtime() into a scalar number of milliseconds. - */ -function hrtimeMillisec(a) -{ - assertHrtime(a); - - return (Math.floor(a[0] * 1e3 + a[1] / 1e6)); -} - -/* - * Add two hrtime readings A and B, overwriting A with the result of the - * addition. This function is useful for accumulating several hrtime intervals - * into a counter. Returns A. - */ -function hrtimeAccum(a, b) -{ - assertHrtime(a); - assertHrtime(b); - - /* - * Accumulate the nanosecond component. - */ - a[1] += b[1]; - if (a[1] >= 1e9) { - /* - * The nanosecond component overflowed, so carry to the seconds - * field. - */ - a[0]++; - a[1] -= 1e9; - } - - /* - * Accumulate the seconds component. - */ - a[0] += b[0]; - - return (a); -} - -/* - * Add two hrtime readings A and B, returning the result as a new hrtime array. - * Does not modify either input argument. - */ -function hrtimeAdd(a, b) -{ - assertHrtime(a); - - var rv = [ a[0], a[1] ]; - - return (hrtimeAccum(rv, b)); -} - - -/* - * Check an object for unexpected properties. Accepts the object to check, and - * an array of allowed property names (strings). Returns an array of key names - * that were found on the object, but did not appear in the list of allowed - * properties. If no properties were found, the returned array will be of - * zero length. - */ -function extraProperties(obj, allowed) -{ - mod_assert.ok(typeof (obj) === 'object' && obj !== null, - 'obj argument must be a non-null object'); - mod_assert.ok(Array.isArray(allowed), - 'allowed argument must be an array of strings'); - for (var i = 0; i < allowed.length; i++) { - mod_assert.ok(typeof (allowed[i]) === 'string', - 'allowed argument must be an array of strings'); - } - - return (Object.keys(obj).filter(function (key) { - return (allowed.indexOf(key) === -1); - })); -} - -/* - * Given three sets of properties "provided" (may be undefined), "overrides" - * (required), and "defaults" (may be undefined), construct an object containing - * the union of these sets with "overrides" overriding "provided", and - * "provided" overriding "defaults". None of the input objects are modified. - */ -function mergeObjects(provided, overrides, defaults) -{ - var rv, k; - - rv = {}; - if (defaults) { - for (k in defaults) - rv[k] = defaults[k]; - } - - if (provided) { - for (k in provided) - rv[k] = provided[k]; - } - - if (overrides) { - for (k in overrides) - rv[k] = overrides[k]; - } - - return (rv); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/package.json deleted file mode 100644 index ab4cd456..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/jsprim/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "_args": [ - [ - "jsprim@^1.2.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/request/node_modules/http-signature" - ] - ], - "_from": "jsprim@>=1.2.2 <2.0.0", - "_id": "jsprim@1.2.2", - "_inCache": true, - "_installable": true, - "_location": "/jsprim", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "dap@cs.brown.edu", - "name": "dap" - }, - "_npmVersion": "2.7.4", - "_phantomChildren": {}, - "_requested": { - "name": "jsprim", - "raw": "jsprim@^1.2.2", - "rawSpec": "^1.2.2", - "scope": null, - "spec": ">=1.2.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/request/http-signature" - ], - "_resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz", - "_shasum": "f20c906ac92abd58e3b79ac8bc70a48832512da1", - "_shrinkwrap": null, - "_spec": "jsprim@^1.2.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request/node_modules/http-signature", - "bugs": { - "url": "https://github.com/davepacheco/node-jsprim/issues" - }, - "dependencies": { - "extsprintf": "1.0.2", - "json-schema": "0.2.2", - "verror": "1.3.6" - }, - "description": "utilities for primitive JavaScript types", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "f20c906ac92abd58e3b79ac8bc70a48832512da1", - "tarball": "http://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz" - }, - "engines": [ - "node >=0.6.0" - ], - "gitHead": "0e709876c35eddfe4c1f95104ac3c4abfc9dab84", - "homepage": "https://github.com/davepacheco/node-jsprim", - "license": "MIT", - "main": "./lib/jsprim.js", - "maintainers": [ - { - "email": "dap@cs.brown.edu", - "name": "dap" - } - ], - "name": "jsprim", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/davepacheco/node-jsprim.git" - }, - "scripts": {}, - "version": "1.2.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jscsrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jscsrc deleted file mode 100644 index af3c78ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jscsrc +++ /dev/null @@ -1,60 +0,0 @@ -{ - "esnext": true, - "disallowMixedSpacesAndTabs": true, - "disallowSpaceAfterObjectKeys": true, - "disallowSpaceBeforeBinaryOperators": [ - "," - ], - "disallowSpacesInsideArrayBrackets": true, - "disallowSpacesInsideParentheses": true, - "disallowTrailingWhitespace": true, - "requireCommaBeforeLineBreak": true, - "requireLineFeedAtFileEnd": true, - "requireSpaceAfterBinaryOperators": [ - "=", - ",", - "+", - "-", - "/", - "*", - "==", - "===", - "!=", - "!==", - ":", - "&&", - "||" - ], - "requireSpaceAfterKeywords": [ - "if", - "else", - "for", - "while", - "do", - "switch", - "return", - "try", - "catch" - ], - "requireSpaceBeforeBinaryOperators": [ - "=", - "+", - "-", - "/", - "*", - "==", - "===", - "!=", - "!==", - "&&", - "||" - ], - "requireSpaceBeforeBlockStatements": true, - "requireSpacesInFunctionExpression": { - "beforeOpeningCurlyBrace": true - }, - "validateQuoteMarks": { - "escape": true, - "mark": "'" - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jshintrc deleted file mode 100644 index 68710840..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.jshintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "undef": true, - "unused": true, - "node": true, - "esnext": true, - "expr": true, - "globals": { - "describe": true, - "it": true - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.npmignore deleted file mode 100644 index 9c9c73b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test -artwork diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.travis.yml deleted file mode 100644 index 20fed570..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.12" - - "iojs" -before_install: - - npm update -g npm -matrix: - fast_finish: true diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/CHANGELOG b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/CHANGELOG deleted file mode 100644 index 9454e72c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/CHANGELOG +++ /dev/null @@ -1,123 +0,0 @@ -v2.2.1: - date: 2016-03-23 - changes: - - Make sure that v8 flags are passed properly through the `respawn` event -v2.1.0: - date: 2015-05-20 - changes: - - Use rechoir to autoload modules. -v2.0.3: - date: 2015-03-31 - changes: - - Internal bugfix, don't wrap callback error in another error, idiot. -v2.0.2: - date: 2015-02-24 - changes: - - Support process.env.NODE_PATH when resolving module. -v2.0.1: - date: 2015-02-01 - changes: - - Find modulePath correctly when devving against yourself. -v2.0.0: - date: 2015-01-15 - changes: - - Rename `nodeFlags` to `v8Flags` and make it async. -v1.0.4: - date: 2015-01-04 - changes: - - Detect config extension using basename, not full path. -v1.0.0: - date: 2014-12-16 - changes: - - Update dependencies -v0.13.6: - date: 2014-11-07 - changes: - - Don't include artwork on npm. -v0.13.5: - date: 2014-10-10 - changes: - - Only attempt to resolve the real path of configFile if it is actually a symlink. -v0.13.4: - date: 2014-10-07 - changes: - - Set configBase to the directory of the symlink, not the directory of its real location. -v0.13.3: - date: 2014-10-06 - changes: - - Return the real location of symlinked config files. -v0.13.2: - date: 2014-09-12 - changes: - - Include flags in respawn event. I really miss `npm publish --force`. -v0.13.1: - date: 2014-09-12 - changes: - - Slight performance tweak. -v0.13.0: - date: 2014-09-12 - changes: - - Support passing flags to node with `nodeFlags` option. -v0.12.1: - date: 2014-06-27 - changes: - - Support preloading modules for compound extensions like `.coffee.md`. -v0.12.0: - date: 2014-06-27 - changes: - - Respect order of extensions when searching for config. - - Rename `configNameRegex` environment property to `configNameSearch`. -v0.11.3: - date: 2014-06-09 - changes: - - Make cwd match configBase if cwd isn't explictly provided -v0.11.2: - date: 2014-06-04 - changes: - - Regression fix: coerce preloads into array before attempting to push more -v0.11.1: - date: 2014-06-02 - changes: - - Update dependencies. -v0.11.0: - date: 2014-05-27 - changes: - - Refactor and remove options parsing. -v0.10.0: - date: 2014-05-06 - changes: - - Remove `addExtension` in favor of `extension` option. - - Support preloading modules based on extension. -v0.9.7: - date: 2014-04-28 - changes: - - Locate local module in cwd even if config isn't present. -v0.9.6: - date: 2014-04-02 - changes: - - Fix regression where external modules are not properly required. - - Ignore configPathFlag / cwdFlag if the value isn't a string -v0.9.3: - date: 2014-02-28 - changes: - - Fix regression where developing against self doesn't correctly set cwd. -v0.9.0: - date: 2014-02-28 - changes: - - Use liftoff instance as context (`this`) for launch callback. - - Support split --cwd and --configfile locations. - - Rename `configLocationFlag` to `configPathFlag` - - Support node 0.8+ -v0.8.7: - date: 2014-02-24 - changes: - - Pass environment as first argument to `launch`. -v0.8.5: - date: 2014-02-19 - changes: - - Implement `addExtensions` option. - - Default to `index.js` if `modulePackage` has no `main` property. -v0.8.4: - date: 2014-02-05 - changes: - - Initial public release. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/LICENSE deleted file mode 100644 index a55f5b74..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 Tyler Kellen - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/README.md deleted file mode 100644 index b76eda12..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/README.md +++ /dev/null @@ -1,304 +0,0 @@ -
    - -# liftoff [![Build Status](https://secure.travis-ci.org/js-cli/js-liftoff.svg)](http://travis-ci.org/js-cli/js-liftoff) [![Build status](https://ci.appveyor.com/api/projects/status/5a6w8xuq8ed1ilc4/branch/master?svg=true)](https://ci.appveyor.com/project/js-cli/js-liftoff/branch/master) - -> Launch your command line tool with ease. - -[![NPM](https://nodei.co/npm/liftoff.png)](https://nodei.co/npm/liftoff/) - -## What is it? -[See this blog post](http://weblog.bocoup.com/building-command-line-tools-in-node-with-liftoff/), [check out this proof of concept](https://github.com/js-cli/js-hacker), or read on. - -Say you're writing a CLI tool. Let's call it [hacker](https://github.com/js-cli/js-hacker). You want to configure it using a `Hackerfile`. This is node, so you install `hacker` locally for each project you use it in. But, in order to get the `hacker` command in your PATH, you also install it globally. - -Now, when you run `hacker`, you want to configure what it does using the `Hackerfile` in your current directory, and you want it to execute using the local installation of your tool. Also, it'd be nice if the `hacker` command was smart enough to traverse up your folders until it finds a `Hackerfile`—for those times when you're not in the root directory of your project. Heck, you might even want to launch `hacker` from a folder outside of your project by manually specifying a working directory. Liftoff manages this for you. - -So, everything is working great. Now you can find your local `hacker` and `Hackerfile` with ease. Unfortunately, it turns out you've authored your `Hackerfile` in coffee-script, or some other JS variant. In order to support *that*, you have to load the compiler for it, and then register the extension for it with node. Good news, Liftoff can do that, and a whole lot more, too. - -## API - -### constructor(opts) - -Create an instance of Liftoff to invoke your application. - -An example utilizing all options: -```js -const Hacker = new Liftoff({ - name: 'hacker', - processTitle: 'hacker', - moduleName: 'hacker', - configName: 'hackerfile', - extensions: { - '.js': null, - '.json': null, - '.coffee': 'coffee-script/register' - }, - v8flags: ['--harmony'] // or v8flags: require('v8flags') -}); -``` - -#### opts.name - -Sugar for setting `processTitle`, `moduleName`, `configName` automatically. - -Type: `String` -Default: `null` - -These are equivalent: -```js -const Hacker = Liftoff({ - processTitle: 'hacker', - moduleName: 'hacker', - configName: 'hackerfile' -}); -``` -```js -const Hacker = Liftoff({name:'hacker'}); -``` - -#### opts.moduleName - -Sets which module your application expects to find locally when being run. - -Type: `String` -Default: `null` - -#### opts.configName - -Sets the name of the configuration file Liftoff will attempt to find. Case-insensitive. - -Type: `String` -Default: `null` - -#### opts.extensions - -Set extensions to include when searching for a configuration file. If an external module is needed to load a given extension (e.g. `.coffee`), the module name should be specified as the value for the key. - -Type: `Object` -Default: `{".js":null,".json":null}` - -**Examples:** - -In this example Liftoff will look for `myappfile{.js,.json,.coffee}`. If a config with the extension `.coffee` is found, Liftoff will try to require `coffee-script/require` from the current working directory. -```js -const MyApp = new Liftoff({ - name: 'myapp', - extensions: { - '.js': null, - '.json': null, - '.coffee': 'coffee-script/register' - } -}); -``` - -In this example, Liftoff will look for `.myapp{rc}`. -```js -const MyApp = new Liftoff({ - name: 'myapp', - configName: '.myapp', - extensions: { - 'rc': null - } -}); -``` - -In this example, Liftoff will automatically attempt to load the correct module for any javascript variant supported by [node-interpret](https://github.com/tkellen/node-interpret) (as long as it does not require a register method). - -```js -const MyApp = new Liftoff({ - name: 'myapp', - extensions: require('interpret').jsVariants -}); -``` -#### opts.v8flags - -Any flag specified here will be applied to node, not your program. Useful for supporting invocations like `myapp --harmony command`, where `--harmony` should be passed to node, not your program. This functionality is implemented using [flagged-respawn](http://github.com/tkellen/node-flagged-respawn). To support all v8flags, see [node-v8flags](https://github.com/tkellen/node-v8flags). - -Type: `Array|Function` -Default: `null` - -If this method is a function, it should take a node-style callback that yields an array of flags. - -#### opts.processTitle - -Sets what the [process title](http://nodejs.org/api/process.html#process_process_title) will be. - -Type: `String` -Default: `null` - -#### opts.completions(type) - -A method to handle bash/zsh/whatever completions. - -Type: `Function` -Default: `null` - -## launch(opts, callback(env)) -Launches your application with provided options, builds an environment, and invokes your callback, passing the calculated environment as the first argument. - -##### Example Configuration w/ Options Parsing: -```js -const Liftoff = require('liftoff'); -const MyApp = new Liftoff({name:'myapp'}); -const argv = require('minimist')(process.argv.slice(2)); -const invoke = function (env) { - console.log('my environment is:', env); - console.log('my cli options are:', argv); - console.log('my liftoff config is:', this); -}; -MyApp.launch({ - cwd: argv.cwd, - configPath: argv.myappfile, - require: argv.require, - completion: argv.completion -}, invoke); -``` - -#### opts.cwd - -Change the current working directory for this launch. Relative paths are calculated against `process.cwd()`. - -Type: `String` -Default: `process.cwd()` - -**Example Configuration:** -```js -const argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - cwd: argv.cwd -}, invoke); -``` - -**Matching CLI Invocation:** -``` -myapp --cwd ../ -``` - -#### opts.configPath - -Don't search for a config, use the one provided. **Note:** Liftoff will assume the current working directory is the directory containing the config file unless an alternate location is explicitly specified using `cwd`. - -Type: `String` -Default: `null` - -**Example Configuration:** -```js -var argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - configPath: argv.myappfile -}, invoke); -``` - -**Matching CLI Invocation:** -``` -myapp --myappfile /var/www/project/Myappfile.js -``` - -**Examples using `cwd` and `configPath` together:** - -These are functionally identical: -``` -myapp --myappfile /var/www/project/Myappfile.js -myapp --cwd /var/www/project -``` - -These can run myapp from a shared directory as though it were located in another project: -``` -myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project1 -myapp --myappfile /Users/name/Myappfile.js --cwd /var/www/project2 -``` - -#### opts.require - -A string or array of modules to attempt requiring from the local working directory before invoking the launch callback. - -Type: `String|Array` -Default: `null` - -**Example Configuration:** -```js -var argv = require('minimist')(process.argv.slice(2)); -MyApp.launch({ - require: argv.require -}, invoke); -``` - -**Matching CLI Invocation:** -```js -myapp --require coffee-script/register -``` - -#### callback(env) - -A function to start your application. When invoked, `this` will be your instance of Liftoff. The `env` param will contain the following keys: - -- `cwd`: the current working directory -- `require`: an array of modules that liftoff tried to pre-load -- `configNameSearch`: the config files searched for -- `configPath`: the full path to your configuration file (if found) -- `configBase`: the base directory of your configuration file (if found) -- `modulePath`: the full path to the local module your project relies on (if found) -- `modulePackage`: the contents of the local module's package.json (if found) - -### events - -#### require(name, module) - -Emitted when a module is pre-loaded. - -```js -var Hacker = new Liftoff({name:'hacker'}); -Hacker.on('require', function (name, module) { - console.log('Requiring external module: '+name+'...'); - // automatically register coffee-script extensions - if (name === 'coffee-script') { - module.register(); - } -}); -``` - -#### requireFail(name, err) - -Emitted when a requested module cannot be preloaded. - -```js -var Hacker = new Liftoff({name:'hacker'}); -Hacker.on('requireFail', function (name, err) { - console.log('Unable to load:', name, err); -}); -``` - -#### respawn(flags, child) - -Emitted when Liftoff re-spawns your process (when a [`nodeFlag`](#optsnodeflags) is detected). - -```js -var Hacker = new Liftoff({ - name: 'hacker', - nodeFlags: ['--harmony'] -}); -Hacker.on('respawn', function (flags, child) { - console.log('Detected node flags:', flags); - console.log('Respawned to PID:', child.pid); -}); -``` - -Event will be triggered for this command: -`hacker --harmony commmand` - -## Examples - -Check out how [gulp](https://github.com/gulpjs/gulp/blob/master/bin/gulp.js) uses Liftoff. - -For a bare-bones example, try [the hacker project](https://github.com/js-cli/js-hacker/blob/master/bin/hacker.js). - -To try the example, do the following: - -1. Install the sample project `hacker` with `npm install -g hacker`. -2. Make a `Hackerfile.js` with some arbitrary javascript it. -3. Install hacker next to it with `npm install hacker`. -3. Run `hacker` while in the same parent folder. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/UPGRADING.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/UPGRADING.md deleted file mode 100644 index 7f95e3ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/UPGRADING.md +++ /dev/null @@ -1,28 +0,0 @@ -# 1.0.0 -> 2.0.0 -The option `nodeFlags` was renamed to `v8flags` for accuracy. It can now be a callback taking method that yields an array of flags, **or** an array literal. - -# 0.11 -> 0.12 -For the environment passed into the `launch` callback, `configNameRegex` has been renamed to `configNameSearch`. It now returns an array of valid config names instead of a regular expression. - -# 0.10 -> 0.11 -The method signature for `launch` was changed in this version of Liftoff. - -You must now provide your own options parser and pass your desired params directly into `launch` as the first argument. The second argument is now the invocation callback that starts your application. - -To replicate the default functionality of 0.10, use the following: -```js -const Liftoff = require('liftoff'); -const MyApp = new Liftoff({name:'myapp'}); -const argv = require('minimist')(process.argv.slice(2)); -const invoke = function (env) { - console.log('my environment is:', env); - console.log('my cli options are:', argv); - console.log('my liftoff config is:', this); -}; -MyApp.launch({ - cwd: argv.cwd, - configPath: argv.myappfile, - require: argv.require, - completion: argv.completion -}, invoke); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/appveyor.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/appveyor.yml deleted file mode 100644 index 961d4101..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/appveyor.yml +++ /dev/null @@ -1,26 +0,0 @@ -# http://www.appveyor.com/docs/appveyor-yml -# http://www.appveyor.com/docs/lang/nodejs-iojs - -environment: - matrix: - # node.js - - nodejs_version: "0.10" - - nodejs_version: "0.12" - # io.js - - nodejs_version: "1" - -install: - - ps: Install-Product node $env:nodejs_version - - npm install - -test_script: - - node --version - - npm --version - # power shell - - ps: "npm test" - # standard command line - - cmd: npm test - -build: off - -version: "{build}" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/index.js deleted file mode 100644 index 3f9dfc0f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/index.js +++ /dev/null @@ -1,205 +0,0 @@ -const fs = require('fs'); -const util = require('util'); -const path = require('path'); -const EE = require('events').EventEmitter; - -const extend = require('extend'); -const resolve = require('resolve'); -const flaggedRespawn = require('flagged-respawn'); -const rechoir = require('rechoir'); - -const findCwd = require('./lib/find_cwd'); -const findConfig = require('./lib/find_config'); -const fileSearch = require('./lib/file_search'); -const parseOptions = require('./lib/parse_options'); -const silentRequire = require('./lib/silent_require'); -const buildConfigName = require('./lib/build_config_name'); - - -function Liftoff (opts) { - EE.call(this); - extend(this, parseOptions(opts)); -} -util.inherits(Liftoff, EE); - -Liftoff.prototype.requireLocal = function (module, basedir) { - try { - var result = require(resolve.sync(module, {basedir: basedir})); - this.emit('require', module, result); - return result; - } catch (e) { - this.emit('requireFail', module, e); - } -}; - -Liftoff.prototype.buildEnvironment = function (opts) { - opts = opts || {}; - - // get modules we want to preload - var preload = opts.require || []; - - // ensure items to preload is an array - if (!Array.isArray(preload)) { - preload = [preload]; - } - - // make a copy of search paths that can be mutated for this run - var searchPaths = this.searchPaths.slice(); - - // calculate current cwd - var cwd = findCwd(opts); - - // if cwd was provided explicitly, only use it for searching config - if (opts.cwd) { - searchPaths = [cwd]; - } else { - // otherwise just search in cwd first - searchPaths.unshift(cwd); - } - - // calculate the regex to use for finding the config file - var configNameSearch = buildConfigName({ - configName: this.configName, - extensions: Object.keys(this.extensions) - }); - - // calculate configPath - var configPath = findConfig({ - configNameSearch: configNameSearch, - searchPaths: searchPaths, - configPath: opts.configPath - }); - - // if we have a config path, save the directory it resides in. - var configBase; - if (configPath) { - configBase = path.dirname(configPath); - // if cwd wasn't provided explicitly, it should match configBase - if (!opts.cwd) { - cwd = configBase; - } - // resolve symlink if needed - if (fs.lstatSync(configPath).isSymbolicLink()) { - configPath = fs.realpathSync(configPath); - } - } - - // TODO: break this out into lib/ - // locate local module and package next to config or explicitly provided cwd - var modulePath, modulePackage; - try { - var delim = (process.platform === 'win32' ? ';' : ':'), - paths = (process.env.NODE_PATH ? process.env.NODE_PATH.split(delim) : []); - modulePath = resolve.sync(this.moduleName, {basedir: configBase || cwd, paths: paths}); - modulePackage = silentRequire(fileSearch('package.json', [modulePath])); - } catch (e) {} - - // if we have a configuration but we failed to find a local module, maybe - // we are developing against ourselves? - if (!modulePath && configPath) { - // check the package.json sibling to our config to see if its `name` - // matches the module we're looking for - var modulePackagePath = fileSearch('package.json', [configBase]); - modulePackage = silentRequire(modulePackagePath); - if (modulePackage && modulePackage.name === this.moduleName) { - // if it does, our module path is `main` inside package.json - modulePath = path.join(path.dirname(modulePackagePath), modulePackage.main || 'index.js'); - cwd = configBase; - } else { - // clear if we just required a package for some other project - modulePackage = {}; - } - } - - // load any modules which were requested to be required - if (preload.length) { - // unique results first - preload.filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (dep) { - this.requireLocal(dep, findCwd(opts)); - }, this); - } - - // use rechoir to autoload any required modules - var autoloads; - if (configPath) { - autoloads = rechoir.prepare(this.extensions, configPath, cwd, true); - if (autoloads instanceof Error) { - autoloads = autoloads.failures; - } - if (Array.isArray(autoloads)) { - autoloads.forEach(function (attempt) { - if (attempt.error) { - this.emit('requireFail', attempt.moduleName, attempt.error); - } else { - this.emit('require', attempt.moduleName, attempt.module); - } - }, this); - } - } - - return { - cwd: cwd, - require: preload, - configNameSearch: configNameSearch, - configPath: configPath, - configBase: configBase, - modulePath: modulePath, - modulePackage: modulePackage || {} - }; -}; - -Liftoff.prototype.handleFlags = function (cb) { - if (typeof this.v8flags === 'function') { - this.v8flags(function (err, flags) { - if (err) { - cb(err); - } else { - cb(null, flags); - } - }); - } else { - process.nextTick(function () { - cb(null, this.v8flags); - }.bind(this)); - } -}; - -Liftoff.prototype.launch = function (opts, fn) { - if (typeof fn !== 'function') { - throw new Error('You must provide a callback function.'); - } - process.title = this.processTitle; - - var completion = opts.completion; - if (completion && this.completions) { - return this.completions(completion); - } - - this.handleFlags(function (err, flags) { - if (err) { - throw err; - } else { - if (flags) { - flaggedRespawn(flags, process.argv, function (ready, child) { - if (child !== process) { - this.emit('respawn', process.argv.filter(function (arg) { - var flag = arg.split('=')[0]; - return flags.indexOf(flag) !== -1; - }.bind(this)), child); - } - if (ready) { - fn.call(this, this.buildEnvironment(opts)); - } - }.bind(this)); - } else { - fn.call(this, this.buildEnvironment(opts)); - } - } - }.bind(this)); -}; - - - -module.exports = Liftoff; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/build_config_name.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/build_config_name.js deleted file mode 100644 index b83e1850..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/build_config_name.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = function (opts) { - opts = opts || {}; - var configName = opts.configName; - var extensions = opts.extensions; - if (!configName) { - throw new Error('Please specify a configName.'); - } - if (configName instanceof RegExp) { - return [configName]; - } - if (!Array.isArray(extensions)) { - throw new Error('Please provide an array of valid extensions.'); - } - return extensions.map(function (ext) { - return configName + ext; - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/file_search.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/file_search.js deleted file mode 100644 index 76dadd67..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/file_search.js +++ /dev/null @@ -1,14 +0,0 @@ -const findup = require('findup-sync'); - -module.exports = function (search, paths) { - var path; - var len = paths.length; - for (var i = 0; i < len; i++) { - if (path) { - break; - } else { - path = findup(search, {cwd: paths[i], nocase: true}); - } - } - return path; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_config.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_config.js deleted file mode 100644 index 71c3f077..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_config.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const fileSearch = require('./file_search'); - -module.exports = function (opts) { - opts = opts || {}; - var configNameSearch = opts.configNameSearch; - var configPath = opts.configPath; - var searchPaths = opts.searchPaths; - // only search for a config if a path to one wasn't explicitly provided - if (!configPath) { - if (!Array.isArray(searchPaths)) { - throw new Error('Please provide an array of paths to search for config in.'); - } - if (!configNameSearch) { - throw new Error('Please provide a configNameSearch.'); - } - configPath = fileSearch(configNameSearch, searchPaths); - } - // confirm the configPath exists and return an absolute path to it - if (fs.existsSync(configPath)) { - return path.resolve(configPath); - } - return null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_cwd.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_cwd.js deleted file mode 100644 index 2a029b97..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/find_cwd.js +++ /dev/null @@ -1,18 +0,0 @@ -const path = require('path'); - -module.exports = function (opts) { - if (!opts) { - opts = {}; - } - var cwd = opts.cwd; - var configPath = opts.configPath; - // if a path to the desired config was specified - // but no cwd was provided, use configPath dir - if (typeof configPath === 'string' && !cwd) { - cwd = path.dirname(path.resolve(configPath)); - } - if (typeof cwd === 'string') { - return path.resolve(cwd); - } - return process.cwd(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/parse_options.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/parse_options.js deleted file mode 100644 index ab416b52..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/parse_options.js +++ /dev/null @@ -1,35 +0,0 @@ -const extend = require('extend'); - -module.exports = function (opts) { - var defaults = { - extensions: { - '.js': null, - '.json': null - }, - searchPaths: [] - }; - if (!opts) { - opts = {}; - } - if (opts.name) { - if (!opts.processTitle) { - opts.processTitle = opts.name; - } - if (!opts.configName) { - opts.configName = opts.name + 'file'; - } - if (!opts.moduleName) { - opts.moduleName = opts.name; - } - } - if (!opts.processTitle) { - throw new Error('You must specify a processTitle.'); - } - if (!opts.configName) { - throw new Error('You must specify a configName.'); - } - if (!opts.moduleName) { - throw new Error('You must specify a moduleName.'); - } - return extend(defaults, opts); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/silent_require.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/silent_require.js deleted file mode 100644 index 7b4dfe4e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/lib/silent_require.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = function (path) { - try { - return require(path); - } catch (e) {} -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/package.json deleted file mode 100644 index 36a8c211..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/liftoff/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "liftoff@^2.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "liftoff@>=2.1.0 <3.0.0", - "_id": "liftoff@2.2.1", - "_inCache": true, - "_installable": true, - "_location": "/liftoff", - "_nodeVersion": "5.9.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/liftoff-2.2.1.tgz_1458739983596_0.09431072394363582" - }, - "_npmUser": { - "email": "b@pk.am", - "name": "tusbar" - }, - "_npmVersion": "3.7.3", - "_phantomChildren": {}, - "_requested": { - "name": "liftoff", - "raw": "liftoff@^2.1.0", - "rawSpec": "^2.1.0", - "scope": null, - "spec": ">=2.1.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.1.tgz", - "_shasum": "8dfef848d3f441921c4a311fc3203ae9c34c41a7", - "_shrinkwrap": null, - "_spec": "liftoff@^2.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "name": "Tyler Kellen", - "url": "http://goingslowly.com/" - }, - "bugs": { - "url": "https://github.com/js-cli/js-liftoff/issues" - }, - "dependencies": { - "extend": "^2.0.1", - "findup-sync": "^0.3.0", - "flagged-respawn": "^0.3.2", - "rechoir": "^0.6.0", - "resolve": "^1.1.6" - }, - "description": "Launch your command line tool with ease.", - "devDependencies": { - "chai": "^2.3.0", - "coffee-script": "^1.9.2", - "istanbul": "^0.3.14", - "jscs": "^1.13.1", - "jshint": "^2.7.0", - "mocha": "^2.1.0", - "sinon": "~1.12.2" - }, - "directories": {}, - "dist": { - "shasum": "8dfef848d3f441921c4a311fc3203ae9c34c41a7", - "tarball": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.1.tgz" - }, - "engines": { - "node": ">= 0.8" - }, - "gitHead": "82a6911aff57aee0b1bf121015fcc492d1129238", - "homepage": "https://github.com/js-cli/js-liftoff", - "keywords": [ - "command line" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine.bublitz@gmail.com", - "name": "phated" - }, - { - "email": "tyler@sleekcode.net", - "name": "tkellen" - }, - { - "email": "b@pk.am", - "name": "tusbar" - } - ], - "name": "liftoff", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/js-cli/js-liftoff.git" - }, - "scripts": { - "test": "jshint lib index.js && jscs lib index.js && mocha -t 5000 -b -R spec test/index" - }, - "version": "2.2.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/index.js deleted file mode 100644 index 96d4d9f6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/index.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; -var path = require('path'); -var fs = require('graceful-fs'); -var stripBom = require('strip-bom'); -var parseJson = require('parse-json'); -var Promise = require('pinkie-promise'); -var pify = require('pify'); - -function parse(x, fp) { - return parseJson(stripBom(x), path.relative(process.cwd(), fp)); -} - -module.exports = function (fp) { - return pify(fs.readFile, Promise)(fp, 'utf8').then(function (data) { - return parse(data, fp); - }); -}; - -module.exports.sync = function (fp) { - return parse(fs.readFileSync(fp, 'utf8'), fp); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/package.json deleted file mode 100644 index 91545ca4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "load-json-file@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/read-pkg" - ] - ], - "_from": "load-json-file@>=1.0.0 <2.0.0", - "_id": "load-json-file@1.1.0", - "_inCache": true, - "_installable": true, - "_location": "/load-json-file", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "load-json-file", - "raw": "load-json-file@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/read-pkg" - ], - "_resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "_shasum": "956905708d58b4bab4c2261b04f59f31c99374c0", - "_shrinkwrap": null, - "_spec": "load-json-file@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/read-pkg", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/load-json-file/issues" - }, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "description": "Read and parse a JSON file", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "956905708d58b4bab4c2261b04f59f31c99374c0", - "tarball": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "115157a417380d3160da418d4ff25bb33b0051eb", - "homepage": "https://github.com/sindresorhus/load-json-file", - "keywords": [ - "json", - "read", - "parse", - "file", - "fs", - "graceful", - "load" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "load-json-file", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/load-json-file.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.1.0", - "xo": { - "ignores": [ - "test.js" - ] - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/readme.md deleted file mode 100644 index fa982b54..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/load-json-file/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# load-json-file [![Build Status](https://travis-ci.org/sindresorhus/load-json-file.svg?branch=master)](https://travis-ci.org/sindresorhus/load-json-file) - -> Read and parse a JSON file - -[Strips UTF-8 BOM](https://github.com/sindresorhus/strip-bom), uses [`graceful-fs`](https://github.com/isaacs/node-graceful-fs), and throws more [helpful JSON errors](https://github.com/sindresorhus/parse-json). - - -## Install - -``` -$ npm install --save load-json-file -``` - - -## Usage - -```js -const loadJsonFile = require('load-json-file'); - -loadJsonFile('foo.json').then(json => { - console.log(json); - //=> {foo: true} -}); -``` - - -## API - -### loadJsonFile(filepath) - -Returns a promise that resolves to the parsed JSON. - -### loadJsonFile.sync(filepath) - -Returns the parsed JSON. - - -## Related - -- [write-json-file](https://github.com/sindresorhus/write-json-file) - Stringify and write JSON to a file atomically - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/LICENSE.txt deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/README.md deleted file mode 100644 index acdfa29d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._basecopy v3.0.1 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `baseCopy` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._basecopy -``` - -In Node.js/io.js: - -```js -var baseCopy = require('lodash._basecopy'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.1-npm-packages/lodash._basecopy) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/index.js deleted file mode 100644 index b586d31d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/index.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * lodash 3.0.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property names to copy. - * @param {Object} [object={}] The object to copy properties to. - * @returns {Object} Returns `object`. - */ -function baseCopy(source, props, object) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - object[key] = source[key]; - } - return object; -} - -module.exports = baseCopy; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/package.json deleted file mode 100644 index 4b1f04d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basecopy/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - "lodash._basecopy@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash._basecopy@>=3.0.0 <4.0.0", - "_id": "lodash._basecopy@3.0.1", - "_inCache": true, - "_installable": true, - "_location": "/lodash._basecopy", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.7.6", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._basecopy", - "raw": "lodash._basecopy@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "_shasum": "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36", - "_shrinkwrap": null, - "_spec": "lodash._basecopy@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `baseCopy` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "8da0e6a876cf344c0ad8a54882111dd3c5c7ca36", - "tarball": "http://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash._basecopy", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/LICENSE deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/README.md deleted file mode 100644 index f81145e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._basetostring v3.0.1 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `baseToString` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._basetostring -``` - -In Node.js/io.js: - -```js -var baseToString = require('lodash._basetostring'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.1-npm-packages/lodash._basetostring) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/index.js deleted file mode 100644 index db8ecc9f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * lodash 3.0.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - return value == null ? '' : (value + ''); -} - -module.exports = baseToString; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/package.json deleted file mode 100644 index 7f045283..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basetostring/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - "lodash._basetostring@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash._basetostring@>=3.0.0 <4.0.0", - "_id": "lodash._basetostring@3.0.1", - "_inCache": true, - "_installable": true, - "_location": "/lodash._basetostring", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.12.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._basetostring", - "raw": "lodash._basetostring@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "_shasum": "d1861d877f824a52f669832dcaf3ee15566a07d5", - "_shrinkwrap": null, - "_spec": "lodash._basetostring@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `baseToString` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "d1861d877f824a52f669832dcaf3ee15566a07d5", - "tarball": "http://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash._basetostring", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/LICENSE.txt deleted file mode 100644 index 17764328..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js 1.7.0, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/README.md deleted file mode 100644 index 206ba718..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._basevalues v3.0.0 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `baseValues` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._basevalues -``` - -In Node.js/io.js: - -```js -var baseValues = require('lodash._basevalues'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.0-npm-packages/lodash._basevalues) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/index.js deleted file mode 100644 index 28c8215e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/index.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * lodash 3.0.0 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.7.0 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * returned by `keysFunc`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - var index = -1, - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; -} - -module.exports = baseValues; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/package.json deleted file mode 100644 index 50522232..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._basevalues/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "lodash._basevalues@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash._basevalues@>=3.0.0 <4.0.0", - "_id": "lodash._basevalues@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/lodash._basevalues", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.3.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._basevalues", - "raw": "lodash._basevalues@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "_shasum": "5b775762802bde3d3297503e26300820fdf661b7", - "_shrinkwrap": null, - "_spec": "lodash._basevalues@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `baseValues` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "5b775762802bde3d3297503e26300820fdf661b7", - "tarball": "http://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - } - ], - "name": "lodash._basevalues", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/LICENSE deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/README.md deleted file mode 100644 index 7835cec0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._getnative v3.9.1 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `getNative` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._getnative -``` - -In Node.js/io.js: - -```js -var getNative = require('lodash._getnative'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.9.1-npm-packages/lodash._getnative) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/index.js deleted file mode 100644 index a32063d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/index.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * lodash 3.9.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var funcTag = '[object Function]'; - -/** Used to detect host constructors (Safari > 5). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var fnToString = Function.prototype.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; -} - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return isObject(value) && objToString.call(value) == funcTag; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (value == null) { - return false; - } - if (isFunction(value)) { - return reIsNative.test(fnToString.call(value)); - } - return isObjectLike(value) && reIsHostCtor.test(value); -} - -module.exports = getNative; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/package.json deleted file mode 100644 index 68908ef0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._getnative/package.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_args": [ - [ - "lodash._getnative@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys" - ] - ], - "_from": "lodash._getnative@>=3.0.0 <4.0.0", - "_id": "lodash._getnative@3.9.1", - "_inCache": true, - "_installable": true, - "_location": "/lodash._getnative", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.12.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._getnative", - "raw": "lodash._getnative@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.keys" - ], - "_resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "_shasum": "570bc7dede46d61cdcde687d65d3eecbaa3aaff5", - "_shrinkwrap": null, - "_spec": "lodash._getnative@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `getNative` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "570bc7dede46d61cdcde687d65d3eecbaa3aaff5", - "tarball": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash._getnative", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.9.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/LICENSE.txt deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/README.md deleted file mode 100644 index 0c5c701d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._isiterateecall v3.0.9 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `isIterateeCall` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._isiterateecall -``` - -In Node.js/io.js: - -```js -var isIterateeCall = require('lodash._isiterateecall'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.9-npm-packages/lodash._isiterateecall) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/index.js deleted file mode 100644 index ea3761b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/index.js +++ /dev/null @@ -1,132 +0,0 @@ -/** - * lodash 3.0.9 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to detect unsigned integer values. */ -var reIsUint = /^\d+$/; - -/** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ -var getLength = baseProperty('length'); - -/** - * Checks if `value` is array-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -function isArrayLike(value) { - return value != null && isLength(getLength(value)); -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; -} - -/** - * Checks if the provided arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object)) { - var other = object[index]; - return value === value ? (value === other) : (other !== other); - } - return false; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -module.exports = isIterateeCall; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/package.json deleted file mode 100644 index 7614c21a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._isiterateecall/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - "lodash._isiterateecall@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash._isiterateecall@>=3.0.0 <4.0.0", - "_id": "lodash._isiterateecall@3.0.9", - "_inCache": true, - "_installable": true, - "_location": "/lodash._isiterateecall", - "_nodeVersion": "2.0.2", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._isiterateecall", - "raw": "lodash._isiterateecall@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "_shasum": "5203ad7ba425fae842460e696db9cf3e6aac057c", - "_shrinkwrap": null, - "_spec": "lodash._isiterateecall@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `isIterateeCall` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "5203ad7ba425fae842460e696db9cf3e6aac057c", - "tarball": "http://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash._isiterateecall", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.9" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/LICENSE.txt deleted file mode 100644 index 17764328..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js 1.7.0, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/README.md deleted file mode 100644 index c80ae07c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._reescape v3.0.0 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `reEscape` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._reescape -``` - -In Node.js/io.js: - -```js -var reEscape = require('lodash._reescape'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.0-npm-packages/lodash._reescape) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/index.js deleted file mode 100644 index 1a3b8cf3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/index.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * lodash 3.0.0 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.7.0 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to match template delimiters. */ -var reEscape = /<%-([\s\S]+?)%>/g; - -module.exports = reEscape; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/package.json deleted file mode 100644 index 5e50c282..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reescape/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "lodash._reescape@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "lodash._reescape@>=3.0.0 <4.0.0", - "_id": "lodash._reescape@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/lodash._reescape", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.3.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._reescape", - "raw": "lodash._reescape@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "_shasum": "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a", - "_shrinkwrap": null, - "_spec": "lodash._reescape@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `reEscape` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a", - "tarball": "http://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - } - ], - "name": "lodash._reescape", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/LICENSE.txt deleted file mode 100644 index 17764328..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js 1.7.0, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/README.md deleted file mode 100644 index a69b8aac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._reevaluate v3.0.0 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `reEvaluate` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._reevaluate -``` - -In Node.js/io.js: - -```js -var reEvaluate = require('lodash._reevaluate'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.0-npm-packages/lodash._reevaluate) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/index.js deleted file mode 100644 index 16d76098..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/index.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * lodash 3.0.0 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.7.0 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to match template delimiters. */ -var reEvaluate = /<%([\s\S]+?)%>/g; - -module.exports = reEvaluate; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/package.json deleted file mode 100644 index 21246e71..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reevaluate/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "lodash._reevaluate@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "lodash._reevaluate@>=3.0.0 <4.0.0", - "_id": "lodash._reevaluate@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/lodash._reevaluate", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.3.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._reevaluate", - "raw": "lodash._reevaluate@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "_shasum": "58bc74c40664953ae0b124d806996daca431e2ed", - "_shrinkwrap": null, - "_spec": "lodash._reevaluate@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `reEvaluate` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "58bc74c40664953ae0b124d806996daca431e2ed", - "tarball": "http://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - } - ], - "name": "lodash._reevaluate", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/LICENSE.txt deleted file mode 100644 index 17764328..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js 1.7.0, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/README.md deleted file mode 100644 index 1423e502..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash._reinterpolate v3.0.0 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `reInterpolate` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._reinterpolate -``` - -In Node.js/io.js: - -```js -var reInterpolate = require('lodash._reinterpolate'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.0-npm-packages/lodash._reinterpolate) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/index.js deleted file mode 100644 index 5c06abcf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/index.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * lodash 3.0.0 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.7.0 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to match template delimiters. */ -var reInterpolate = /<%=([\s\S]+?)%>/g; - -module.exports = reInterpolate; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/package.json deleted file mode 100644 index 99677b3e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._reinterpolate/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_args": [ - [ - "lodash._reinterpolate@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "lodash._reinterpolate@>=3.0.0 <4.0.0", - "_id": "lodash._reinterpolate@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/lodash._reinterpolate", - "_nodeVersion": "0.10.35", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.3.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._reinterpolate", - "raw": "lodash._reinterpolate@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util", - "/lodash.template", - "/lodash.templatesettings" - ], - "_resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "_shasum": "0ccf2d89166af03b3663c796538b75ac6e114d9d", - "_shrinkwrap": null, - "_spec": "lodash._reinterpolate@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s internal `reInterpolate` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "0ccf2d89166af03b3663c796538b75ac6e114d9d", - "tarball": "http://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash._reinterpolate", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/LICENSE deleted file mode 100644 index bcbe13d6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/README.md deleted file mode 100644 index 0329abf2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash._root v3.0.1 - -The internal [lodash](https://lodash.com/) function `root` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash._root -``` - -In Node.js: -```js -var root = require('lodash._root'); -``` - -See the [package source](https://github.com/lodash/lodash/blob/3.0.1-npm-packages/lodash._root) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/index.js deleted file mode 100644 index 2d8ba0af..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/index.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * lodash 3.0.1 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to determine if values are of the language type `Object`. */ -var objectTypes = { - 'function': true, - 'object': true -}; - -/** Detect free variable `exports`. */ -var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) - ? exports - : undefined; - -/** Detect free variable `module`. */ -var freeModule = (objectTypes[typeof module] && module && !module.nodeType) - ? module - : undefined; - -/** Detect free variable `global` from Node.js. */ -var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); - -/** Detect free variable `self`. */ -var freeSelf = checkGlobal(objectTypes[typeof self] && self); - -/** Detect free variable `window`. */ -var freeWindow = checkGlobal(objectTypes[typeof window] && window); - -/** Detect `this` as the global object. */ -var thisGlobal = checkGlobal(objectTypes[typeof this] && this); - -/** - * Used as a reference to the global object. - * - * The `this` value is used if it's the global object to avoid Greasemonkey's - * restricted `window` object, otherwise the `window` object is used. - */ -var root = freeGlobal || - ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || - freeSelf || thisGlobal || Function('return this')(); - -/** - * Checks if `value` is a global object. - * - * @private - * @param {*} value The value to check. - * @returns {null|Object} Returns `value` if it's a global object, else `null`. - */ -function checkGlobal(value) { - return (value && value.Object === Object) ? value : null; -} - -module.exports = root; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/package.json deleted file mode 100644 index 91017625..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash._root/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "lodash._root@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.escape" - ] - ], - "_from": "lodash._root@>=3.0.0 <4.0.0", - "_id": "lodash._root@3.0.1", - "_inCache": true, - "_installable": true, - "_location": "/lodash._root", - "_nodeVersion": "5.5.0", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/lodash._root-3.0.1.tgz_1455615057559_0.24128212919458747" - }, - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.14.18", - "_phantomChildren": {}, - "_requested": { - "name": "lodash._root", - "raw": "lodash._root@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.escape" - ], - "_resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "_shasum": "fba1c4524c19ee9a5f8136b4609f017cf4ded692", - "_shrinkwrap": null, - "_spec": "lodash._root@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.escape", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "https://github.com/phated" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The internal lodash function `root` exported as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "fba1c4524c19ee9a5f8136b4609f017cf4ded692", - "tarball": "http://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine.bublitz@gmail.com", - "name": "phated" - } - ], - "name": "lodash._root", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/LICENSE deleted file mode 100644 index b054ca5a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/README.md deleted file mode 100644 index b012def3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.escape v3.2.0 - -The [lodash](https://lodash.com/) method `_.escape` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.escape -``` - -In Node.js: -```js -var escape = require('lodash.escape'); -``` - -See the [documentation](https://lodash.com/docs#escape) or [package source](https://github.com/lodash/lodash/blob/3.2.0-npm-packages/lodash.escape) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/index.js deleted file mode 100644 index 0971ae8e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/index.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * lodash 3.2.0 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var root = require('lodash._root'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** Used to match HTML entities and HTML characters. */ -var reUnescapedHtml = /[&<>"'`]/g, - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - -/** Used to map characters to HTML entities. */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' -}; - -/** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeHtmlChar(chr) { - return htmlEscapes[chr]; -} - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var Symbol = root.Symbol; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = Symbol ? symbolProto.toString : undefined; - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -/** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (value == null) { - return ''; - } - if (isSymbol(value)) { - return Symbol ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -/** - * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. - * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in IE < 9, they can break out of - * attribute values or HTML comments. See [#59](https://html5sec.org/#59), - * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and - * [#133](https://html5sec.org/#133) of the [HTML5 Security Cheatsheet](https://html5sec.org/) - * for more details. - * - * When working with HTML you should always [quote attribute values](http://wonko.com/post/html-escaping) - * to reduce XSS vectors. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ -function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; -} - -module.exports = escape; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/package.json deleted file mode 100644 index 86be7bc1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.escape/package.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "_args": [ - [ - "lodash.escape@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash.escape@>=3.0.0 <4.0.0", - "_id": "lodash.escape@3.2.0", - "_inCache": true, - "_installable": true, - "_location": "/lodash.escape", - "_nodeVersion": "5.5.0", - "_npmOperationalInternal": { - "host": "packages-9-west.internal.npmjs.com", - "tmp": "tmp/lodash.escape-3.2.0.tgz_1454898355271_0.9197692747693509" - }, - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.14.18", - "_phantomChildren": {}, - "_requested": { - "name": "lodash.escape", - "raw": "lodash.escape@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template", - "/lodash.templatesettings" - ], - "_resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "_shasum": "995ee0dc18c1b48cc92effae71a10aab5b487698", - "_shrinkwrap": null, - "_spec": "lodash.escape@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "https://github.com/phated" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": { - "lodash._root": "^3.0.0" - }, - "description": "The lodash method `_.escape` exported as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "995ee0dc18c1b48cc92effae71a10aab5b487698", - "tarball": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "keywords": [ - "lodash-modularized", - "escape" - ], - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash.escape", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/LICENSE deleted file mode 100644 index bcbe13d6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright 2012-2016 The Dojo Foundation -Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/README.md deleted file mode 100644 index 32ac7613..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# lodash.isarguments v3.0.8 - -The [lodash](https://lodash.com/) method `_.isArguments` exported as a [Node.js](https://nodejs.org/) module. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isarguments -``` - -In Node.js: -```js -var isArguments = require('lodash.isarguments'); -``` - -See the [documentation](https://lodash.com/docs#isArguments) or [package source](https://github.com/lodash/lodash/blob/3.0.8-npm-packages/lodash.isarguments) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/index.js deleted file mode 100644 index bd8ce5cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/index.js +++ /dev/null @@ -1,243 +0,0 @@ -/** - * lodash 3.0.8 (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright 2012-2016 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ -var getLength = baseProperty('length'); - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -function isArguments(value) { - // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); -} - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(getLength(value)) && !isFunction(value); -} - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8 which returns 'object' for typed array and weak map constructors, - // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -module.exports = isArguments; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/package.json deleted file mode 100644 index f6864428..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarguments/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "lodash.isarguments@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys" - ] - ], - "_from": "lodash.isarguments@>=3.0.0 <4.0.0", - "_id": "lodash.isarguments@3.0.8", - "_inCache": true, - "_installable": true, - "_location": "/lodash.isarguments", - "_nodeVersion": "5.5.0", - "_npmOperationalInternal": { - "host": "packages-13-west.internal.npmjs.com", - "tmp": "tmp/lodash.isarguments-3.0.8.tgz_1456896618197_0.925266777863726" - }, - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.14.17", - "_phantomChildren": {}, - "_requested": { - "name": "lodash.isarguments", - "raw": "lodash.isarguments@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.keys" - ], - "_resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz", - "_shasum": "5bf8da887f01f2a9e49c0a175cdaeb318a0e43dc", - "_shrinkwrap": null, - "_spec": "lodash.isarguments@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "blaine.bublitz@gmail.com", - "name": "Blaine Bublitz", - "url": "https://github.com/phated" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The lodash method `_.isArguments` exported as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "5bf8da887f01f2a9e49c0a175cdaeb318a0e43dc", - "tarball": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.8.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "keywords": [ - "lodash-modularized", - "isarguments" - ], - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash.isarguments", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.8" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/LICENSE deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/README.md deleted file mode 100644 index ea274aae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash.isarray v3.0.4 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) `_.isArray` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.isarray -``` - -In Node.js/io.js: - -```js -var isArray = require('lodash.isarray'); -``` - -See the [documentation](https://lodash.com/docs#isArray) or [package source](https://github.com/lodash/lodash/blob/3.0.4-npm-packages/lodash.isarray) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/index.js deleted file mode 100644 index dd246584..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/index.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * lodash 3.0.4 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var arrayTag = '[object Array]', - funcTag = '[object Function]'; - -/** Used to detect host constructors (Safari > 5). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var fnToString = Function.prototype.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeIsArray = getNative(Array, 'isArray'); - -/** - * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(function() { return arguments; }()); - * // => false - */ -var isArray = nativeIsArray || function(value) { - return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; -}; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return isObject(value) && objToString.call(value) == funcTag; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (value == null) { - return false; - } - if (isFunction(value)) { - return reIsNative.test(fnToString.call(value)); - } - return isObjectLike(value) && reIsHostCtor.test(value); -} - -module.exports = isArray; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/package.json deleted file mode 100644 index f1979d5c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.isarray/package.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "_args": [ - [ - "lodash.isarray@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys" - ] - ], - "_from": "lodash.isarray@>=3.0.0 <4.0.0", - "_id": "lodash.isarray@3.0.4", - "_inCache": true, - "_installable": true, - "_location": "/lodash.isarray", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.12.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash.isarray", - "raw": "lodash.isarray@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.keys" - ], - "_resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "_shasum": "79e4eb88c36a8122af86f844aa9bcd851b5fbb55", - "_shrinkwrap": null, - "_spec": "lodash.isarray@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.keys", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s `_.isArray` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "79e4eb88c36a8122af86f844aa9bcd851b5fbb55", - "tarball": "http://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "keywords": [ - "lodash", - "lodash-modularized", - "stdlib", - "util" - ], - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - } - ], - "name": "lodash.isarray", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.0.4" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/LICENSE deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/README.md deleted file mode 100644 index 5f69a182..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash.keys v3.1.2 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) `_.keys` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.keys -``` - -In Node.js/io.js: - -```js -var keys = require('lodash.keys'); -``` - -See the [documentation](https://lodash.com/docs#keys) or [package source](https://github.com/lodash/lodash/blob/3.1.2-npm-packages/lodash.keys) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/index.js deleted file mode 100644 index f4c17749..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/index.js +++ /dev/null @@ -1,236 +0,0 @@ -/** - * lodash 3.1.2 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var getNative = require('lodash._getnative'), - isArguments = require('lodash.isarguments'), - isArray = require('lodash.isarray'); - -/** Used to detect unsigned integer values. */ -var reIsUint = /^\d+$/; - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeKeys = getNative(Object, 'keys'); - -/** - * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ -var getLength = baseProperty('length'); - -/** - * Checks if `value` is array-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -function isArrayLike(value) { - return value != null && isLength(getLength(value)); -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * A fallback implementation of `Object.keys` which creates an array of the - * own enumerable property names of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function shimKeys(object) { - var props = keysIn(object), - propsLength = props.length, - length = propsLength && object.length; - - var allowIndexes = !!length && isLength(length) && - (isArray(object) || isArguments(object)); - - var index = -1, - result = []; - - while (++index < propsLength) { - var key = props[index]; - if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { - result.push(key); - } - } - return result; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) - * for more details. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? undefined : object.constructor; - if ((typeof Ctor == 'function' && Ctor.prototype === object) || - (typeof object != 'function' && isArrayLike(object))) { - return shimKeys(object); - } - return isObject(object) ? nativeKeys(object) : []; -}; - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - if (object == null) { - return []; - } - if (!isObject(object)) { - object = Object(object); - } - var length = object.length; - length = (length && isLength(length) && - (isArray(object) || isArguments(object)) && length) || 0; - - var Ctor = object.constructor, - index = -1, - isProto = typeof Ctor == 'function' && Ctor.prototype === object, - result = Array(length), - skipIndexes = length > 0; - - while (++index < length) { - result[index] = (index + ''); - } - for (var key in object) { - if (!(skipIndexes && isIndex(key, length)) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} - -module.exports = keys; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/package.json deleted file mode 100644 index 35eb50d4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.keys/package.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "_args": [ - [ - "lodash.keys@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash.keys@>=3.0.0 <4.0.0", - "_id": "lodash.keys@3.1.2", - "_inCache": true, - "_installable": true, - "_location": "/lodash.keys", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.12.0", - "_phantomChildren": {}, - "_requested": { - "name": "lodash.keys", - "raw": "lodash.keys@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "_shasum": "4dbc0472b156be50a0b286855d1bd0b0c656098a", - "_shrinkwrap": null, - "_spec": "lodash.keys@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - }, - "description": "The modern build of lodash’s `_.keys` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "4dbc0472b156be50a0b286855d1bd0b0c656098a", - "tarball": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "keywords": [ - "lodash", - "lodash-modularized", - "stdlib", - "util" - ], - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - } - ], - "name": "lodash.keys", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.1.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/LICENSE.txt deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/README.md deleted file mode 100644 index 80e47a4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash.restparam v3.6.1 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) `_.restParam` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.restparam -``` - -In Node.js/io.js: - -```js -var restParam = require('lodash.restparam'); -``` - -See the [documentation](https://lodash.com/docs#restParam) or [package source](https://github.com/lodash/lodash/blob/3.6.1-npm-packages/lodash.restparam) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/index.js deleted file mode 100644 index 932f47ac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/index.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * lodash 3.6.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as an array. - * - * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters). - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.restParam(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ -function restParam(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - rest = Array(length); - - while (++index < length) { - rest[index] = args[start + index]; - } - switch (start) { - case 0: return func.call(this, rest); - case 1: return func.call(this, args[0], rest); - case 2: return func.call(this, args[0], args[1], rest); - } - var otherArgs = Array(start + 1); - index = -1; - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = rest; - return func.apply(this, otherArgs); - }; -} - -module.exports = restParam; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/package.json deleted file mode 100644 index 98b05d16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.restparam/package.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "_args": [ - [ - "lodash.restparam@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template" - ] - ], - "_from": "lodash.restparam@>=3.0.0 <4.0.0", - "_id": "lodash.restparam@3.6.1", - "_inCache": true, - "_installable": true, - "_location": "/lodash.restparam", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - "_npmVersion": "2.7.6", - "_phantomChildren": {}, - "_requested": { - "name": "lodash.restparam", - "raw": "lodash.restparam@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/lodash.template" - ], - "_resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "_shasum": "936a4e309ef330a7645ed4145986c85ae5b20805", - "_shrinkwrap": null, - "_spec": "lodash.restparam@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/lodash.template", - "author": { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - "bugs": { - "url": "https://github.com/lodash/lodash/issues" - }, - "contributors": [ - { - "email": "john.david.dalton@gmail.com", - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - }, - { - "email": "demoneaux@gmail.com", - "name": "Benjamin Tan", - "url": "https://d10.github.io/" - }, - { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://www.iceddev.com/" - }, - { - "email": "github@kitcambridge.be", - "name": "Kit Cambridge", - "url": "http://kitcambridge.be/" - }, - { - "email": "mathias@qiwi.be", - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - } - ], - "dependencies": {}, - "description": "The modern build of lodash’s `_.restParam` as a module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "936a4e309ef330a7645ed4145986c85ae5b20805", - "tarball": "http://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" - }, - "homepage": "https://lodash.com/", - "icon": "https://lodash.com/icon.svg", - "keywords": [ - "lodash", - "lodash-modularized", - "stdlib", - "util" - ], - "license": "MIT", - "maintainers": [ - { - "email": "john.david.dalton@gmail.com", - "name": "jdalton" - }, - { - "email": "demoneaux@gmail.com", - "name": "d10" - }, - { - "email": "github@kitcambridge.be", - "name": "kitcambridge" - }, - { - "email": "mathias@qiwi.be", - "name": "mathias" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "lodash.restparam", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/lodash/lodash.git" - }, - "scripts": { - "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" - }, - "version": "3.6.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/LICENSE deleted file mode 100644 index 9cd87e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2015 The Dojo Foundation -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/README.md deleted file mode 100644 index f542f713..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# lodash.template v3.6.2 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) `_.template` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash.template -``` - -In Node.js/io.js: - -```js -var template = require('lodash.template'); -``` - -See the [documentation](https://lodash.com/docs#template) or [package source](https://github.com/lodash/lodash/blob/3.6.2-npm-packages/lodash.template) for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/index.js deleted file mode 100644 index e5a9629b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash.template/index.js +++ /dev/null @@ -1,389 +0,0 @@ -/** - * lodash 3.6.2 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCopy = require('lodash._basecopy'), - baseToString = require('lodash._basetostring'), - baseValues = require('lodash._basevalues'), - isIterateeCall = require('lodash._isiterateecall'), - reInterpolate = require('lodash._reinterpolate'), - keys = require('lodash.keys'), - restParam = require('lodash.restparam'), - templateSettings = require('lodash.templatesettings'); - -/** `Object#toString` result references. */ -var errorTag = '[object Error]'; - -/** Used to match empty string literals in compiled template source. */ -var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - -/** Used to match [ES template delimiters](http://ecma-international.org/ecma-262/6.0/#sec-template-literal-lexical-components). */ -var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - -/** Used to ensure capturing order of template delimiters. */ -var reNoMatch = /($^)/; - -/** Used to match unescaped characters in compiled string literals. */ -var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - -/** Used to escape characters for inclusion in compiled string literals. */ -var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' -}; - -/** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; -} - -/** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** - * Used by `_.template` to customize its `_.assign` use. - * - * **Note:** This function is like `assignDefaults` except that it ignores - * inherited property values when checking if a property is `undefined`. - * - * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @param {string} key The key associated with the object and source values. - * @param {Object} object The destination object. - * @returns {*} Returns the value to assign to the destination object. - */ -function assignOwnDefaults(objectValue, sourceValue, key, object) { - return (objectValue === undefined || !hasOwnProperty.call(object, key)) - ? sourceValue - : objectValue; -} - -/** - * A specialized version of `_.assign` for customizing assigned values without - * support for argument juggling, multiple sources, and `this` binding `customizer` - * functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - */ -function assignWith(object, source, customizer) { - var index = -1, - props = keys(source), - length = props.length; - - while (++index < length) { - var key = props[index], - value = object[key], - result = customizer(value, source[key], key, object, source); - - if ((result === result ? (result !== value) : (value === value)) || - (value === undefined && !(key in object))) { - object[key] = result; - } - } - return object; -} - -/** - * The base implementation of `_.assign` without support for argument juggling, - * multiple sources, and `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return source == null - ? object - : baseCopy(source, keys(source), object); -} - -/** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ -function isError(value) { - return isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag; -} - -/** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is provided it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as free variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. - * @param {string} [options.variable] The data object variable name. - * @param- {Object} [otherOptions] Enables the legacy `options` param signature. - * @returns {Function} Returns the compiled template function. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // using the HTML "escape" delimiter to escape data property values - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': ' -``` - -Using [`npm`](http://npmjs.org/): - -```bash -npm install lodash - -npm install -g lodash -npm link lodash -``` - -To avoid potential issues, update `npm` before installing Lo-Dash: - -```bash -npm install npm -g -``` - -In [Node.js](http://nodejs.org/) and [RingoJS v0.8.0+](http://ringojs.org/): - -```js -var _ = require('lodash'); - -// or as a drop-in replacement for Underscore -var _ = require('lodash/lodash.underscore'); -``` - -**Note:** If Lo-Dash is installed globally, run [`npm link lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory before requiring it. - -In [RingoJS v0.7.0-](http://ringojs.org/): - -```js -var _ = require('lodash')._; -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('lodash.js'); -``` - -In an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require({ - 'paths': { - 'underscore': 'path/to/lodash' - } -}, -['underscore'], function(_) { - console.log(_.VERSION); -}); -``` - -## Resources - -For more information check out these articles, screencasts, and other videos over Lo-Dash: - - * Posts - - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/) - - * Videos - - [Introducing Lo-Dash](https://vimeo.com/44154599) - - [Lo-Dash optimizations and custom builds](https://vimeo.com/44154601) - - [Lo-Dash’s origin and why it’s a better utility belt](https://vimeo.com/44154600) - - [Unit testing in Lo-Dash](https://vimeo.com/45865290) - - [Lo-Dash’s approach to native method use](https://vimeo.com/48576012) - - [CascadiaJS: Lo-Dash for a better utility belt](http://www.youtube.com/watch?v=dpPy4f_SeEk) - -## Features - - * AMD loader support ([RequireJS](http://requirejs.org/), [curl.js](https://github.com/cujojs/curl), etc.) - * [_(…)](http://lodash.com/docs#_) supports intuitive chaining - * [_.at](http://lodash.com/docs#at) for cherry-picking collection values - * [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”* defined](http://michaux.ca/articles/lazy-function-definition-pattern) methods - * [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays and objects - * [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex` argument - * [_.forEach](http://lodash.com/docs#forEach) is chainable and supports exiting iteration early - * [_.forIn](http://lodash.com/docs#forIn) for iterating over an object’s own and inherited properties - * [_.forOwn](http://lodash.com/docs#forOwn) for iterating over an object’s own properties - * [_.isPlainObject](http://lodash.com/docs#isPlainObject) checks if values are created by the `Object` constructor - * [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend) - * [_.partial](http://lodash.com/docs#partial) and [_.partialRight](http://lodash.com/docs#partialRight) for partial application without `this` binding - * [_.template](http://lodash.com/docs#template) supports [*“imports”* options](http://lodash.com/docs#templateSettings_imports), [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6), and [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * [_.where](http://lodash.com/docs#where) supports deep object comparisons - * [_.clone](http://lodash.com/docs#clone), [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), - [and more…](http://lodash.com/docs "_.assign, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept `callback` and `thisArg` arguments - * [_.contains](http://lodash.com/docs#contains), [_.size](http://lodash.com/docs#size), [_.toArray](http://lodash.com/docs#toArray), - [and more…](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.some, _.sortBy, _.where") accept strings - * [_.filter](http://lodash.com/docs#filter), [_.find](http://lodash.com/docs#find), [_.map](http://lodash.com/docs#map), - [and more…](http://lodash.com/docs "_.countBy, _.every, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* and *“_.where”* `callback` shorthands - -## Support - -Lo-Dash has been tested in at least Chrome 5~24, Firefox 1~18, IE 6-10, Opera 9.25-12, Safari 3-6, Node.js 0.4.8-0.8.20, Narwhal 0.3.2, PhantomJS 1.8.1, RingoJS 0.9, and Rhino 1.7RC5. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.compat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.compat.js deleted file mode 100644 index 925e7fc3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/lodash/dist/lodash.compat.js +++ /dev/null @@ -1,5152 +0,0 @@ -/** - * @license - * Lo-Dash 1.0.2 (Custom Build) - * Build: `lodash -o ./dist/lodash.compat.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.4.4 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. - * Available under MIT license - */ -;(function(window, undefined) { - - /** Detect free variable `exports` */ - var freeExports = typeof exports == 'object' && exports; - - /** Detect free variable `module` */ - var freeModule = typeof module == 'object' && module && module.exports == freeExports && module; - - /** Detect free variable `global` and use it as `window` */ - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal) { - window = freeGlobal; - } - - /** Used for array and object method references */ - var arrayRef = [], - objectRef = {}; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used internally to indicate various things */ - var indicatorObject = objectRef; - - /** Used by `cachedContains` as the default size when optimizations are enabled for large arrays */ - var largeArraySize = 30; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = window._; - - /** Used to match HTML entities */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g; - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - (objectRef.valueOf + '') - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/valueOf|for [^\]]+/g, '.+?') + '$' - ); - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6 - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to match HTML characters */ - var reUnescapedHtml = /[&<>"']/g; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to fix the JScript [[DontEnum]] bug */ - var shadowed = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** Native method shortcuts */ - var ceil = Math.ceil, - concat = arrayRef.concat, - floor = Math.floor, - getPrototypeOf = reNative.test(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectRef.hasOwnProperty, - push = arrayRef.push, - toString = objectRef.toString; - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeBind = reNative.test(nativeBind = slice.bind) && nativeBind, - nativeIsArray = reNative.test(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = window.isFinite, - nativeIsNaN = window.isNaN, - nativeKeys = reNative.test(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeRandom = Math.random; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Detect various environments */ - var isIeOpera = !!window.attachEvent, - isV8 = nativeBind && !/\n|true/.test(nativeBind + isIeOpera); - - /* Detect if `Function#bind` exists and is inferred to be fast (all but V8) */ - var isBindFast = nativeBind && !isV8; - - /* Detect if `Object.keys` exists and is inferred to be fast (IE, Opera, V8) */ - var isKeysFast = nativeKeys && (isIeOpera || isV8); - - /** - * Detect the JScript [[DontEnum]] bug: - * - * In IE < 9 an objects own properties, shadowing non-enumerable ones, are - * made non-enumerable as well. - */ - var hasDontEnumBug; - - /** - * Detect if a `prototype` properties are enumerable by default: - * - * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 - * (if the prototype or a property on the prototype has been set) - * incorrectly sets a function's `prototype` property [[Enumerable]] - * value to `true`. - */ - var hasEnumPrototype; - - /** Detect if own properties are iterated after inherited properties (IE < 9) */ - var iteratesOwnLast; - - /** - * Detect if `Array#shift` and `Array#splice` augment array-like objects - * incorrectly: - * - * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()` - * and `splice()` functions that fail to remove the last element, `value[0]`, - * of array-like objects even though the `length` property is set to `0`. - * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()` - * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9. - */ - var hasObjectSpliceBug = (hasObjectSpliceBug = { '0': 1, 'length': 1 }, - arrayRef.splice.call(hasObjectSpliceBug, 0, 1), hasObjectSpliceBug[0]); - - /** Detect if `arguments` object indexes are non-enumerable (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1) */ - var nonEnumArgs = true; - - (function() { - var props = []; - function ctor() { this.x = 1; } - ctor.prototype = { 'valueOf': 1, 'y': 1 }; - for (var prop in new ctor) { props.push(prop); } - for (prop in arguments) { nonEnumArgs = !prop; } - - hasDontEnumBug = !/valueOf/.test(props); - hasEnumPrototype = ctor.propertyIsEnumerable('prototype'); - iteratesOwnLast = props[0] != 'x'; - }(1)); - - /** Detect if `arguments` objects are `Object` objects (all but Opera < 10.5) */ - var argsAreObjects = arguments.constructor == Object; - - /** Detect if `arguments` objects [[Class]] is unresolvable (Firefox < 4, IE < 9) */ - var noArgsClass = !isArguments(arguments); - - /** - * Detect lack of support for accessing string characters by index: - * - * IE < 8 can't access characters by index and IE 8 can only access - * characters by index on string literals. - */ - var noCharByIndex = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if a DOM node's [[Class]] is unresolvable (IE < 9) - * and that the JS engine won't error when attempting to coerce an object to - * a string without a `toString` function. - */ - try { - var noNodeClass = toString.call(document) == objectClass && !({ 'toString': 0 } + ''); - } catch(e) { } - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object, that wraps the given `value`, to enable method - * chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, `compose`, - * `concat`, `countBy`, `debounce`, `defaults`, `defer`, `delay`, `difference`, - * `filter`, `flatten`, `forEach`, `forIn`, `forOwn`, `functions`, `groupBy`, - * `initial`, `intersection`, `invert`, `invoke`, `keys`, `map`, `max`, `memoize`, - * `merge`, `min`, `object`, `omit`, `once`, `pairs`, `partial`, `partialRight`, - * `pick`, `pluck`, `push`, `range`, `reject`, `rest`, `reverse`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, - * `union`, `uniq`, `unshift`, `values`, `where`, `without`, `wrap`, and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, - * `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, `isObject`, - * `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, `lastIndexOf`, - * `mixin`, `noConflict`, `pop`, `random`, `reduce`, `reduceRight`, `result`, - * `shift`, `size`, `some`, `sortedIndex`, `template`, `unescape`, and `uniqueId` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * passed, otherwise they return unwrapped values. - * - * @name _ - * @constructor - * @category Chaining - * @param {Mixed} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - */ - function lodash(value) { - // exit early if already wrapped, even if wrapped by a different `lodash` constructor - if (value && typeof value == 'object' && value.__wrapped__) { - return value; - } - // allow invoking `lodash` without the `new` operator - if (!(this instanceof lodash)) { - return new lodash(value); - } - this.__wrapped__ = value; - } - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type String - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The template used to create iterator functions. - * - * @private - * @param {Obect} data The data object used to populate the text. - * @returns {String} Returns the interpolated text. - */ - var iteratorTemplate = function(obj) { - - var __p = 'var index, iterable = ' + - (obj.firstArg ) + - ', result = iterable;\nif (!iterable) return result;\n' + - (obj.top ) + - ';\n'; - if (obj.arrays) { - __p += 'var length = iterable.length; index = -1;\nif (' + - (obj.arrays ) + - ') { '; - if (obj.noCharByIndex) { - __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } '; - } ; - __p += '\n while (++index < length) {\n ' + - (obj.loop ) + - '\n }\n}\nelse { '; - } else if (obj.nonEnumArgs) { - __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' + - (obj.loop ) + - '\n }\n } else { '; - } ; - - if (obj.hasEnumPrototype) { - __p += '\n var skipProto = typeof iterable == \'function\';\n '; - } ; - - if (obj.isKeysFast && obj.useHas) { - __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] ? nativeKeys(iterable) : [],\n length = ownProps.length;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n '; - if (obj.hasEnumPrototype) { - __p += 'if (!(skipProto && index == \'prototype\')) {\n '; - } ; - __p += - (obj.loop ) + - ''; - if (obj.hasEnumPrototype) { - __p += '}\n'; - } ; - __p += ' } '; - } else { - __p += '\n for (index in iterable) {'; - if (obj.hasEnumPrototype || obj.useHas) { - __p += '\n if ('; - if (obj.hasEnumPrototype) { - __p += '!(skipProto && index == \'prototype\')'; - } if (obj.hasEnumPrototype && obj.useHas) { - __p += ' && '; - } if (obj.useHas) { - __p += 'hasOwnProperty.call(iterable, index)'; - } ; - __p += ') { '; - } ; - __p += - (obj.loop ) + - '; '; - if (obj.hasEnumPrototype || obj.useHas) { - __p += '\n }'; - } ; - __p += '\n } '; - } ; - - if (obj.hasDontEnumBug) { - __p += '\n\n var ctor = iterable.constructor;\n '; - for (var k = 0; k < 7; k++) { - __p += '\n index = \'' + - (obj.shadowed[k] ) + - '\';\n if ('; - if (obj.shadowed[k] == 'constructor') { - __p += '!(ctor && ctor.prototype === iterable) && '; - } ; - __p += 'hasOwnProperty.call(iterable, index)) {\n ' + - (obj.loop ) + - '\n } '; - } ; - - } ; - - if (obj.arrays || obj.nonEnumArgs) { - __p += '\n}'; - } ; - __p += - (obj.bottom ) + - ';\nreturn result'; - - - return __p - }; - - /** Reusable iterator options for `assign` and `defaults` */ - var defaultsIteratorOptions = { - 'args': 'object, source, guard', - 'top': - 'var args = arguments,\n' + - ' argsIndex = 0,\n' + - " argsLength = typeof guard == 'number' ? 2 : args.length;\n" + - 'while (++argsIndex < argsLength) {\n' + - ' iterable = args[argsIndex];\n' + - ' if (iterable && objectTypes[typeof iterable]) {', - 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]", - 'bottom': ' }\n}' - }; - - /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */ - var eachIteratorOptions = { - 'args': 'collection, callback, thisArg', - 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg)", - 'arrays': "typeof length == 'number'", - 'loop': 'if (callback(iterable[index], index, collection) === false) return result' - }; - - /** Reusable iterator options for `forIn` and `forOwn` */ - var forOwnIteratorOptions = { - 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top, - 'arrays': false - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function optimized to search large arrays for a given `value`, - * starting at `fromIndex`, using strict equality for comparisons, i.e. `===`. - * - * @private - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Number} [fromIndex=0] The index to search from. - * @param {Number} [largeSize=30] The length at which an array is considered large. - * @returns {Boolean} Returns `true`, if `value` is found, else `false`. - */ - function cachedContains(array, fromIndex, largeSize) { - fromIndex || (fromIndex = 0); - - var length = array.length, - isLarge = (length - fromIndex) >= (largeSize || largeArraySize); - - if (isLarge) { - var cache = {}, - index = fromIndex - 1; - - while (++index < length) { - // manually coerce `value` to a string because `hasOwnProperty`, in some - // older versions of Firefox, coerces objects incorrectly - var key = array[index] + ''; - (hasOwnProperty.call(cache, key) ? cache[key] : (cache[key] = [])).push(array[index]); - } - } - return function(value) { - if (isLarge) { - var key = value + ''; - return hasOwnProperty.call(cache, key) && indexOf(cache[key], value) > -1; - } - return indexOf(array, value, fromIndex) > -1; - } - } - - /** - * Used by `_.max` and `_.min` as the default `callback` when a given - * `collection` is a string value. - * - * @private - * @param {String} value The character to inspect. - * @returns {Number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` values, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {Number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ai = a.index, - bi = b.index; - - a = a.criteria; - b = b.criteria; - - // ensure a stable sort in V8 and other engines - // http://code.google.com/p/v8/issues/detail?id=90 - if (a !== b) { - if (a > b || typeof a == 'undefined') { - return 1; - } - if (a < b || typeof b == 'undefined') { - return -1; - } - } - return ai < bi ? -1 : 1; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` binding - * of `thisArg` and prepends any `partialArgs` to the arguments passed to the - * bound function. - * - * @private - * @param {Function|String} func The function to bind or the method name. - * @param {Mixed} [thisArg] The `this` binding of `func`. - * @param {Array} partialArgs An array of arguments to be partially applied. - * @param {Object} [rightIndicator] Used to indicate partially applying arguments from the right. - * @returns {Function} Returns the new bound function. - */ - function createBound(func, thisArg, partialArgs, rightIndicator) { - var isFunc = isFunction(func), - isPartial = !partialArgs, - key = thisArg; - - // juggle arguments - if (isPartial) { - partialArgs = thisArg; - } - if (!isFunc) { - thisArg = func; - } - - function bound() { - // `Function#bind` spec - // http://es5.github.com/#x15.3.4.5 - var args = arguments, - thisBinding = isPartial ? this : thisArg; - - if (!isFunc) { - func = thisArg[key]; - } - if (partialArgs.length) { - args = args.length - ? (args = slice(args), rightIndicator ? args.concat(partialArgs) : partialArgs.concat(args)) - : partialArgs; - } - if (this instanceof bound) { - // ensure `new bound` is an instance of `bound` and `func` - noop.prototype = func.prototype; - thisBinding = new noop; - noop.prototype = null; - - // mimic the constructor's `return` behavior - // http://es5.github.com/#x13.2.2 - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - return bound; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name, the created callback will return the property value for a given element. - * If `func` is an object, the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @private - * @param {Mixed} [func=identity] The value to convert to a callback. - * @param {Mixed} [thisArg] The `this` binding of the created callback. - * @param {Number} [argCount=3] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function createCallback(func, thisArg, argCount) { - if (func == null) { - return identity; - } - var type = typeof func; - if (type != 'function') { - if (type != 'object') { - return function(object) { - return object[func]; - }; - } - var props = keys(func); - return function(object) { - var length = props.length, - result = false; - while (length--) { - if (!(result = isEqual(object[props[length]], func[props[length]], indicatorObject))) { - break; - } - } - return result; - }; - } - if (typeof thisArg != 'undefined') { - if (argCount === 1) { - return function(value) { - return func.call(thisArg, value); - }; - } - if (argCount === 2) { - return function(a, b) { - return func.call(thisArg, a, b); - }; - } - if (argCount === 4) { - return function(accumulator, value, index, object) { - return func.call(thisArg, accumulator, value, index, object); - }; - } - return function(value, index, object) { - return func.call(thisArg, value, index, object); - }; - } - return func; - } - - /** - * Creates compiled iteration functions. - * - * @private - * @param {Object} [options1, options2, ...] The compile options object(s). - * arrays - A string of code to determine if the iterable is an array or array-like. - * useHas - A boolean to specify using `hasOwnProperty` checks in the object loop. - * args - A string of comma separated arguments the iteration function will accept. - * top - A string of code to execute before the iteration branches. - * loop - A string of code to execute in the object loop. - * bottom - A string of code to execute after the iteration branches. - * - * @returns {Function} Returns the compiled function. - */ - function createIterator() { - var data = { - // support properties - 'hasDontEnumBug': hasDontEnumBug, - 'hasEnumPrototype': hasEnumPrototype, - 'isKeysFast': isKeysFast, - 'nonEnumArgs': nonEnumArgs, - 'noCharByIndex': noCharByIndex, - 'shadowed': shadowed, - - // iterator options - 'arrays': 'isArray(iterable)', - 'bottom': '', - 'loop': '', - 'top': '', - 'useHas': true - }; - - // merge options into a template data object - for (var object, index = 0; object = arguments[index]; index++) { - for (var key in object) { - data[key] = object[key]; - } - } - var args = data.args; - data.firstArg = /^[^,]+/.exec(args)[0]; - - // create the function factory - var factory = Function( - 'createCallback, hasOwnProperty, isArguments, isArray, isString, ' + - 'objectTypes, nativeKeys', - 'return function(' + args + ') {\n' + iteratorTemplate(data) + '\n}' - ); - // return the compiled function - return factory( - createCallback, hasOwnProperty, isArguments, isArray, isString, - objectTypes, nativeKeys - ); - } - - /** - * A function compiled to iterate `arguments` objects, arrays, objects, and - * strings consistenly across environments, executing the `callback` for each - * element in the `collection`. The `callback` is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @private - * @type Function - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|String} Returns `collection`. - */ - var each = createIterator(eachIteratorOptions); - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {String} match The matched character to escape. - * @returns {String} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {String} match The matched character to escape. - * @returns {String} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Checks if `value` is a DOM node in IE < 9. - * - * @private - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true` if the `value` is a DOM node, else `false`. - */ - function isNode(value) { - // IE < 9 presents DOM nodes as `Object` objects except they have `toString` - // methods that are `typeof` "string" and still can coerce nodes to strings - return typeof value.toString != 'function' && typeof (value + '') == 'string'; - } - - /** - * A no-operation function. - * - * @private - */ - function noop() { - // no operation performed - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used, instead of `Array#slice`, to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|String} collection The collection to slice. - * @param {Number} start The start index. - * @param {Number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {String} match The matched character to unescape. - * @returns {String} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return toString.call(value) == argsClass; - } - // fallback for browsers that can't detect `arguments` objects by [[Class]] - if (noArgsClass) { - isArguments = function(value) { - return value ? hasOwnProperty.call(value, 'callee') : false; - }; - } - - /** - * Iterates over `object`'s own and inherited enumerable properties, executing - * the `callback` for each property. The `callback` is bound to `thisArg` and - * invoked with three arguments; (value, key, object). Callbacks may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Dog(name) { - * this.name = name; - * } - * - * Dog.prototype.bark = function() { - * alert('Woof, woof!'); - * }; - * - * _.forIn(new Dog('Dagny'), function(value, key) { - * alert(key); - * }); - * // => alerts 'name' and 'bark' (order is not guaranteed) - */ - var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, { - 'useHas': false - }); - - /** - * Iterates over an object's own enumerable properties, executing the `callback` - * for each property. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by explicitly - * returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * alert(key); - * }); - * // => alerts '0', '1', and 'length' (order is not guaranteed) - */ - var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions); - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - // `instanceof` may cause a memory leak in IE 7 if `value` is a host object - // http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak - return (argsAreObjects && value instanceof Array) || toString.call(value) == arrayClass; - }; - - /** - * Creates an array composed of the own enumerable property names of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (order is not guaranteed) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - if ((hasEnumPrototype && typeof object == 'function') || - (nonEnumArgs && object.length && isArguments(object))) { - return shimKeys(object); - } - return nativeKeys(object); - }; - - /** - * A fallback implementation of `isPlainObject` that checks if a given `value` - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - // avoid non-objects and false positives for `arguments` objects - var result = false; - if (!(value && typeof value == 'object') || isArguments(value)) { - return result; - } - // check that the constructor is `Object` (i.e. `Object instanceof Object`) - var ctor = value.constructor; - if ((!isFunction(ctor) && (!noNodeClass || !isNode(value))) || ctor instanceof ctor) { - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - if (iteratesOwnLast) { - forIn(value, function(value, key, object) { - result = !hasOwnProperty.call(object, key); - return false; - }); - return result === false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return result === false || hasOwnProperty.call(value, result); - } - return result; - } - - /** - * A fallback implementation of `Object.keys` that produces an array of the - * given object's own enumerable property names. - * - * @private - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names. - */ - function shimKeys(object) { - var result = []; - forOwn(object, function(value, key) { - result.push(key); - }); - return result; - } - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite propery assignments of previous - * sources. If a `callback` function is passed, it will be executed to produce - * the assigned values. The `callback` is bound to `thisArg` and invoked with - * two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'moe' }, { 'age': 40 }); - * // => { 'name': 'moe', 'age': 40 } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var food = { 'name': 'apple' }; - * defaults(food, { 'name': 'banana', 'type': 'fruit' }); - * // => { 'name': 'apple', 'type': 'fruit' } - */ - var assign = createIterator(defaultsIteratorOptions, { - 'top': - defaultsIteratorOptions.top.replace(';', - ';\n' + - "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" + - ' var callback = createCallback(args[--argsLength - 1], args[argsLength--], 2);\n' + - "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" + - ' callback = args[--argsLength];\n' + - '}' - ), - 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]' - }); - - /** - * Creates a clone of `value`. If `deep` is `true`, nested objects will also - * be cloned, otherwise they will be assigned by reference. If a `callback` - * function is passed, it will be executed to produce the cloned values. If - * `callback` returns `undefined`, cloning will be handled by the method instead. - * The `callback` is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to clone. - * @param {Boolean} [deep=false] A flag to indicate a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Array} [stackA=[]] Internally used to track traversed source objects. - * @param- {Array} [stackB=[]] Internally used to associate clones with source counterparts. - * @returns {Mixed} Returns the cloned `value`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * var shallow = _.clone(stooges); - * shallow[0] === stooges[0]; - * // => true - * - * var deep = _.clone(stooges, true); - * deep[0] === stooges[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, deep, callback, thisArg, stackA, stackB) { - var result = value; - - // allows working with "Collections" methods without using their `callback` - // argument, `index|key`, for this method's `callback` - if (typeof deep == 'function') { - thisArg = callback; - callback = deep; - deep = false; - } - if (typeof callback == 'function') { - callback = typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg, 1); - result = callback(result); - - var done = typeof result != 'undefined'; - if (!done) { - result = value; - } - } - // inspect [[Class]] - var isObj = isObject(result); - if (isObj) { - var className = toString.call(result); - if (!cloneableClasses[className] || (noNodeClass && isNode(result))) { - return result; - } - var isArr = isArray(result); - } - // shallow clone - if (!isObj || !deep) { - return isObj && !done - ? (isArr ? slice(result) : assign({}, result)) - : result; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return done ? result : new ctor(+result); - - case numberClass: - case stringClass: - return done ? result : new ctor(result); - - case regexpClass: - return done ? result : ctor(result.source, reFlags.exec(result)); - } - // check for circular references and return corresponding clone - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - // init cloned object - if (!done) { - result = isArr ? ctor(result.length) : {}; - - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? forEach : forOwn)(done ? result : value, function(objValue, key) { - result[key] = clone(objValue, deep, callback, undefined, stackA, stackB); - }); - - return result; - } - - /** - * Creates a deep clone of `value`. If a `callback` function is passed, it will - * be executed to produce the cloned values. If `callback` returns the value it - * was passed, cloning will be handled by the method instead. The `callback` is - * bound to `thisArg` and invoked with one argument; (value). - * - * Note: This function is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the deep cloned `value`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * var deep = _.cloneDeep(stooges); - * deep[0] === stooges[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : value; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return clone(value, true, callback, thisArg); - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param- {Object} [guard] Internally used to allow working with `_.reduce` - * without using its callback's `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var food = { 'name': 'apple' }; - * _.defaults(food, { 'name': 'banana', 'type': 'fruit' }); - * // => { 'name': 'apple', 'type': 'fruit' } - */ - var defaults = createIterator(defaultsIteratorOptions); - - /** - * Creates a sorted array of all enumerable properties, own and inherited, - * of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified object `property` exists and is a direct property, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to check. - * @param {String} property The property to check for. - * @returns {Boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, property) { - return object ? hasOwnProperty.call(object, property) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'moe', 'second': 'larry' }); - * // => { 'moe': 'first', 'larry': 'second' } (order is not guaranteed) - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || toString.call(value) == boolClass; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value instanceof Date || toString.call(value) == dateClass; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value ? value.nodeType === 1 : false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|String} value The value to inspect. - * @returns {Boolean} Returns `true`, if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || - className == argsClass || (noArgsClass && isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If `callback` is passed, it will be executed to - * compare values. If `callback` returns `undefined`, comparisons will be handled - * by the method instead. The `callback` is bound to `thisArg` and invoked with - * two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} a The value to compare. - * @param {Mixed} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Object} [stackA=[]] Internally used track traversed `a` objects. - * @param- {Object} [stackB=[]] Internally used track traversed `b` objects. - * @returns {Boolean} Returns `true`, if the values are equvalent, else `false`. - * @example - * - * var moe = { 'name': 'moe', 'age': 40 }; - * var copy = { 'name': 'moe', 'age': 40 }; - * - * moe == copy; - * // => false - * - * _.isEqual(moe, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - var whereIndicator = callback === indicatorObject; - if (callback && !whereIndicator) { - callback = typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg, 2); - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - (!a || (type != 'function' && type != 'object')) && - (!b || (otherType != 'function' && otherType != 'object'))) { - return false; - } - // exit early for `null` and `undefined`, avoiding ES3's Function#call behavior - // http://es5.github.com/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0`, treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return a != +a - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.com/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == b + ''; - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - if (a.__wrapped__ || b.__wrapped__) { - return isEqual(a.__wrapped__ || a, b.__wrapped__ || b, callback, thisArg, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass || (noNodeClass && (isNode(a) || isNode(b)))) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = !argsAreObjects && isArguments(a) ? Object : a.constructor, - ctorB = !argsAreObjects && isArguments(b) ? Object : b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && !( - isFunction(ctorA) && ctorA instanceof ctorA && - isFunction(ctorB) && ctorB instanceof ctorB - )) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.com/#x15.12.3) - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - length = a.length; - size = b.length; - - // compare lengths to determine if a deep comparison is necessary - result = size == a.length; - if (!result && !whereIndicator) { - return result; - } - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (whereIndicator) { - while (index--) { - if ((result = isEqual(a[index], value, callback, thisArg, stackA, stackB))) { - break; - } - } - } else if (!(result = isEqual(a[size], value, callback, thisArg, stackA, stackB))) { - break; - } - } - return result; - } - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && isEqual(a[key], value, callback, thisArg, stackA, stackB)); - } - }); - - if (result && !whereIndicator) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - return result; - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite`, which will return true for - * booleans and empty strings. See http://es5.github.com/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - // fallback for older versions of Chrome and Safari - if (isFunction(/x/)) { - isFunction = function(value) { - return value instanceof Function || toString.call(value) == funcClass; - }; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.com/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return value ? objectTypes[typeof value] : false; - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN`, which will return `true` for - * `undefined` and other values. See http://es5.github.com/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || toString.call(value) == numberClass; - } - - /** - * Checks if a given `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if `value` is a plain object, else `false`. - * @example - * - * function Stooge(name, age) { - * this.name = name; - * this.age = age; - * } - * - * _.isPlainObject(new Stooge('moe', 40)); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'name': 'moe', 'age': 40 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && typeof value == 'object')) { - return false; - } - var valueOf = value.valueOf, - objProto = typeof valueOf == 'function' && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? value == objProto || (getPrototypeOf(value) == objProto && !isArguments(value)) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/moe/); - * // => true - */ - function isRegExp(value) { - return value instanceof RegExp || toString.call(value) == regexpClass; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is a string, else `false`. - * @example - * - * _.isString('moe'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || toString.call(value) == stringClass; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Mixed} value The value to check. - * @returns {Boolean} Returns `true`, if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined`, into the destination object. Subsequent sources - * will overwrite propery assignments of previous sources. If a `callback` function - * is passed, it will be executed to produce the merged values of the destination - * and source properties. If `callback` returns `undefined`, merging will be - * handled by the method instead. The `callback` is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {Object} [source1, source2, ...] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @param- {Object} [deepIndicator] Internally used to indicate that `stackA` - * and `stackB` are arrays of traversed objects instead of source objects. - * @param- {Array} [stackA=[]] Internally used to track traversed source objects. - * @param- {Array} [stackB=[]] Internally used to associate values with their - * source counterparts. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'stooges': [ - * { 'name': 'moe' }, - * { 'name': 'larry' } - * ] - * }; - * - * var ages = { - * 'stooges': [ - * { 'age': 40 }, - * { 'age': 50 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'stooges': [{ 'name': 'moe', 'age': 40 }, { 'name': 'larry', 'age': 50 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object, source, deepIndicator) { - var args = arguments, - index = 0, - length = 2; - - if (!isObject(object)) { - return object; - } - if (deepIndicator === indicatorObject) { - var callback = args[3], - stackA = args[4], - stackB = args[5]; - } else { - stackA = []; - stackB = []; - - // allows working with `_.reduce` and `_.reduceRight` without - // using their `callback` arguments, `index|key` and `collection` - if (typeof deepIndicator != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - callback = createCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - } - while (++index < length) { - (isArray(args[index]) ? forEach : forOwn)(args[index], function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - - if (callback) { - result = callback(value, source); - if (typeof result != 'undefined') { - value = result; - } - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!callback) { - value = merge(value, source, indicatorObject, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a `callback` function is passed, it will be executed - * for each property in the `object`, omitting the properties `callback` - * returns truthy for. The `callback` is bound to `thisArg` and invoked - * with three arguments; (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|String} callback|[prop1, prop2, ...] The properties to omit - * or the function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'moe', 'age': 40 }, 'age'); - * // => { 'name': 'moe' } - * - * _.omit({ 'name': 'moe', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'moe' } - */ - function omit(object, callback, thisArg) { - var isFunc = typeof callback == 'function', - result = {}; - - if (isFunc) { - callback = createCallback(callback, thisArg); - } else { - var props = concat.apply(arrayRef, arguments); - } - forIn(object, function(value, key, object) { - if (isFunc - ? !callback(value, key, object) - : indexOf(props, key, 1) < 0 - ) { - result[key] = value; - } - }); - return result; - } - - /** - * Creates a two dimensional array of the given object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'moe': 30, 'larry': 40 }); - * // => [['moe', 30], ['larry', 40]] (order is not guaranteed) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of property - * names. If `callback` is passed, it will be executed for each property in the - * `object`, picking the properties `callback` returns truthy for. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Array|Function|String} callback|[prop1, prop2, ...] The function called - * per iteration or properties to pick, either as individual arguments or arrays. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'moe', '_userid': 'moe1' }, 'name'); - * // => { 'name': 'moe' } - * - * _.pick({ 'name': 'moe', '_userid': 'moe1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'moe' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = 0, - props = concat.apply(arrayRef, arguments), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = createCallback(callback, thisArg); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns a new array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Array|Number|String} [index1, index2, ...] The indexes of - * `collection` to retrieve, either as individual arguments or arrays. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['moe', 'larry', 'curly'], 0, 2); - * // => ['moe', 'curly'] - */ - function at(collection) { - var index = -1, - props = concat.apply(arrayRef, slice(arguments, 1)), - length = props.length, - result = Array(length); - - if (noCharByIndex && isString(collection)) { - collection = collection.split(''); - } - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given `target` element is present in a `collection` using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Mixed} target The value to check for. - * @param {Number} [fromIndex=0] The index to search from. - * @returns {Boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'moe', 'age': 40 }, 'moe'); - * // => true - * - * _.contains('curly', 'ur'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (typeof length == 'number') { - result = (isString(collection) - ? collection.indexOf(target, fromIndex) - : indexOf(collection, target, fromIndex) - ) > -1; - } else { - each(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys returned from running each element of the - * `collection` through the given `callback`. The corresponding value of each key - * is the number of times the key was returned by the `callback`. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - function countBy(collection, callback, thisArg) { - var result = {}; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, key, collection) { - key = callback(value, key, collection) + ''; - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - return result; - } - - /** - * Checks if the `callback` returns a truthy value for **all** elements of a - * `collection`. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Boolean} Returns `true` if all elements pass the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(stooges, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(stooges, { 'age': 50 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - each(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Examines each element in a `collection`, returning an array of all elements - * the `callback` returns truthy for. The `callback` is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(food, 'organic'); - * // => [{ 'name': 'carrot', 'organic': true, 'type': 'vegetable' }] - * - * // using "_.where" callback shorthand - * _.filter(food, { 'type': 'fruit' }); - * // => [{ 'name': 'apple', 'organic': false, 'type': 'fruit' }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - each(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Examines each element in a `collection`, returning the first that the `callback` - * returns truthy for. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the element that passed the callback check, - * else `undefined`. - * @example - * - * var even = _.find([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => 2 - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'banana', 'organic': true, 'type': 'fruit' }, - * { 'name': 'beet', 'organic': false, 'type': 'vegetable' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * var veggie = _.find(food, { 'type': 'vegetable' }); - * // => { 'name': 'beet', 'organic': false, 'type': 'vegetable' } - * - * // using "_.pluck" callback shorthand - * var healthy = _.find(food, 'organic'); - * // => { 'name': 'banana', 'organic': true, 'type': 'fruit' } - */ - function find(collection, callback, thisArg) { - var result; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over a `collection`, executing the `callback` for each element in - * the `collection`. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). Callbacks may exit iteration early - * by explicitly returning `false`. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|String} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(alert).join(','); - * // => alerts each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, alert); - * // => alerts each number value (order is not guaranteed) - */ - function forEach(collection, callback, thisArg) { - if (callback && typeof thisArg == 'undefined' && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - each(collection, callback, thisArg); - } - return collection; - } - - /** - * Creates an object composed of keys returned from running each element of the - * `collection` through the `callback`. The corresponding value of each key is - * an array of elements passed to `callback` that returned the key. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - function groupBy(collection, callback, thisArg) { - var result = {}; - callback = createCallback(callback, thisArg); - - forEach(collection, function(value, key, collection) { - key = callback(value, key, collection) + ''; - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - return result; - } - - /** - * Invokes the method named by `methodName` on each element in the `collection`, - * returning an array of the results of each invoked method. Additional arguments - * will be passed to each invoked method. If `methodName` is a function, it will - * be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|String} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the `collection` - * through the `callback`. The `callback` is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (order is not guaranteed) - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(stooges, 'name'); - * // => ['moe', 'larry'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = createCallback(callback, thisArg); - if (isArray(collection)) { - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - each(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of an `array`. If `callback` is passed, - * it will be executed for each value in the `array` to generate the - * criterion by which the value is ranked. The `callback` is bound to - * `thisArg` and invoked with three arguments; (value, index, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.max(stooges, function(stooge) { return stooge.age; }); - * // => { 'name': 'larry', 'age': 50 }; - * - * // using "_.pluck" callback shorthand - * _.max(stooges, 'age'); - * // => { 'name': 'larry', 'age': 50 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - if (!callback && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = !callback && isString(collection) - ? charAtCallback - : createCallback(callback, thisArg); - - each(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of an `array`. If `callback` is passed, - * it will be executed for each value in the `array` to generate the - * criterion by which the value is ranked. The `callback` is bound to `thisArg` - * and invoked with three arguments; (value, index, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.min(stooges, function(stooge) { return stooge.age; }); - * // => { 'name': 'moe', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.min(stooges, 'age'); - * // => { 'name': 'moe', 'age': 40 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - if (!callback && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = !callback && isString(collection) - ? charAtCallback - : createCallback(callback, thisArg); - - each(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the `collection`. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {String} property The property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.pluck(stooges, 'name'); - * // => ['moe', 'larry'] - */ - var pluck = map; - - /** - * Reduces a `collection` to a value that is the accumulated result of running - * each element in the `collection` through the `callback`, where each successive - * `callback` execution consumes the return value of the previous execution. - * If `accumulator` is not passed, the first element of the `collection` will be - * used as the initial `accumulator` value. The `callback` is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [accumulator] Initial value of the accumulator. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = createCallback(callback, thisArg, 4); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - each(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is similar to `_.reduce`, except that it iterates over a - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {Mixed} [accumulator] Initial value of the accumulator. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var iterable = collection, - length = collection ? collection.length : 0, - noaccum = arguments.length < 3; - - if (typeof length != 'number') { - var props = keys(collection); - length = props.length; - } else if (noCharByIndex && isString(collection)) { - iterable = collection.split(''); - } - callback = createCallback(callback, thisArg, 4); - forEach(collection, function(value, index, collection) { - index = props ? props[--length] : --length; - accumulator = noaccum - ? (noaccum = false, iterable[index]) - : callback(accumulator, iterable[index], index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter`, this method returns the elements of a - * `collection` that `callback` does **not** return truthy for. - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that did **not** pass the - * callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(food, 'organic'); - * // => [{ 'name': 'apple', 'organic': false, 'type': 'fruit' }] - * - * // using "_.where" callback shorthand - * _.reject(food, { 'type': 'fruit' }); - * // => [{ 'name': 'carrot', 'organic': true, 'type': 'vegetable' }] - */ - function reject(collection, callback, thisArg) { - callback = createCallback(callback, thisArg); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Creates an array of shuffled `array` values, using a version of the - * Fisher-Yates shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = floor(nativeRandom() * (++index + 1)); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to inspect. - * @returns {Number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('curly'); - * // => 5 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the `callback` returns a truthy value for **any** element of a - * `collection`. The function returns as soon as it finds passing value, and - * does not iterate over the entire `collection`. The `callback` is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Boolean} Returns `true` if any element passes the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var food = [ - * { 'name': 'apple', 'organic': false, 'type': 'fruit' }, - * { 'name': 'carrot', 'organic': true, 'type': 'vegetable' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(food, 'organic'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(food, { 'type': 'meat' }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = createCallback(callback, thisArg); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - each(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in the `collection` through the `callback`. This method - * performs a stable sort, that is, it will preserve the original sort order of - * equal elements. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * // using "_.pluck" callback shorthand - * _.sortBy(['banana', 'strawberry', 'apple'], 'length'); - * // => ['apple', 'banana', 'strawberry'] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = createCallback(callback, thisArg); - forEach(collection, function(value, key, collection) { - result[++index] = { - 'criteria': callback(value, key, collection), - 'index': index, - 'value': value - }; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - result[length] = result[length].value; - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|String} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return noCharByIndex && isString(collection) - ? collection.split('') - : slice(collection); - } - return values(collection); - } - - /** - * Examines each element in a `collection`, returning an array of all elements - * that have the given `properties`. When checking `properties`, this method - * performs a deep comparison between values to determine if they are equivalent - * to each other. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|String} collection The collection to iterate over. - * @param {Object} properties The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given `properties`. - * @example - * - * var stooges = [ - * { 'name': 'moe', 'age': 40 }, - * { 'name': 'larry', 'age': 50 } - * ]; - * - * _.where(stooges, { 'age': 40 }); - * // => [{ 'name': 'moe', 'age': 40 }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values of `array` removed. The values - * `false`, `null`, `0`, `""`, `undefined` and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new filtered array. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array of `array` elements not present in the other arrays - * using strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {Array} [array1, array2, ...] Arrays to check. - * @returns {Array} Returns a new array of `array` elements not present in the - * other arrays. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - var index = -1, - length = array ? array.length : 0, - flattened = concat.apply(arrayRef, arguments), - contains = cachedContains(flattened, length), - result = []; - - while (++index < length) { - var value = array[index]; - if (!contains(value)) { - result.push(value); - } - } - return result; - } - - /** - * Gets the first element of the `array`. If a number `n` is passed, the first - * `n` elements of the `array` are returned. If a `callback` function is passed, - * the first elements the `callback` returns truthy for are returned. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n] The function called - * per element or the number of elements to return. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var food = [ - * { 'name': 'banana', 'organic': true }, - * { 'name': 'beet', 'organic': false }, - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(food, 'organic'); - * // => [{ 'name': 'banana', 'organic': true }] - * - * var food = [ - * { 'name': 'apple', 'type': 'fruit' }, - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.first(food, { 'type': 'fruit' }); - * // => [{ 'name': 'apple', 'type': 'fruit' }, { 'name': 'banana', 'type': 'fruit' }] - */ - function first(array, callback, thisArg) { - if (array) { - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = createCallback(callback, thisArg); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array[0]; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `shallow` is - * truthy, `array` will only be flattened a single level. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @param {Boolean} shallow A flag to indicate only flattening a single level. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - */ - function flatten(array, shallow) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - // recursively flatten arrays (susceptible to call stack limits) - if (isArray(value)) { - push.apply(result, shallow ? value : flatten(value)); - } else { - result.push(value); - } - } - return result; - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the `array` is already - * sorted, passing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Boolean|Number} [fromIndex=0] The index to search from or `true` to - * perform a binary search on a sorted `array`. - * @returns {Number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - var index = -1, - length = array ? array.length : 0; - - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0) - 1; - } else if (fromIndex) { - index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Gets all but the last element of `array`. If a number `n` is passed, the - * last `n` elements are excluded from the result. If a `callback` function - * is passed, the last elements the `callback` returns truthy for are excluded - * from the result. The `callback` is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var food = [ - * { 'name': 'beet', 'organic': false }, - * { 'name': 'carrot', 'organic': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(food, 'organic'); - * // => [{ 'name': 'beet', 'organic': false }] - * - * var food = [ - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' }, - * { 'name': 'carrot', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.initial(food, { 'type': 'vegetable' }); - * // => [{ 'name': 'banana', 'type': 'fruit' }] - */ - function initial(array, callback, thisArg) { - if (!array) { - return []; - } - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Computes the intersection of all the passed-in arrays using strict equality - * for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of unique elements that are present - * in **all** of the arrays. - * @example - * - * _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); - * // => [1, 2] - */ - function intersection(array) { - var args = arguments, - argsLength = args.length, - cache = { '0': {} }, - index = -1, - length = array ? array.length : 0, - isLarge = length >= 100, - result = [], - seen = result; - - outer: - while (++index < length) { - var value = array[index]; - if (isLarge) { - var key = value + ''; - var inited = hasOwnProperty.call(cache[0], key) - ? !(seen = cache[0][key]) - : (seen = cache[0][key] = []); - } - if (inited || indexOf(seen, value) < 0) { - if (isLarge) { - seen.push(value); - } - var argsIndex = argsLength; - while (--argsIndex) { - if (!(cache[argsIndex] || (cache[argsIndex] = cachedContains(args[argsIndex], 0, 100)))(value)) { - continue outer; - } - } - result.push(value); - } - } - return result; - } - - /** - * Gets the last element of the `array`. If a number `n` is passed, the last - * `n` elements of the `array` are returned. If a `callback` function is passed, - * the last elements the `callback` returns truthy for are returned. The `callback` - * is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n] The function called - * per element or the number of elements to return. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Mixed} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var food = [ - * { 'name': 'beet', 'organic': false }, - * { 'name': 'carrot', 'organic': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.last(food, 'organic'); - * // => [{ 'name': 'carrot', 'organic': true }] - * - * var food = [ - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' }, - * { 'name': 'carrot', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.last(food, { 'type': 'vegetable' }); - * // => [{ 'name': 'beet', 'type': 'vegetable' }, { 'name': 'carrot', 'type': 'vegetable' }] - */ - function last(array, callback, thisArg) { - if (array) { - var n = 0, - length = array.length; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = createCallback(callback, thisArg); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array[length - 1]; - } - } - return slice(array, nativeMax(0, length - n)); - } - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Mixed} value The value to search for. - * @param {Number} [fromIndex=array.length-1] The index to search from. - * @returns {Number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Pass either - * a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]`, or - * two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.object(['moe', 'larry'], [30, 40]); - * // => { 'moe': 30, 'larry': 40 } - */ - function object(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else { - result[key[0]] = key[1]; - } - } - return result; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Number} [start=0] The start of the range. - * @param {Number} end The end of the range. - * @param {Number} [step=1] The value to increment or descrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(10); - * // => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - * - * _.range(1, 11); - * // => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - * - * _.range(0, 30, 5); - * // => [0, 5, 10, 15, 20, 25] - * - * _.range(0, -10, -1); - * // => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = +step || 1; - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so V8 will avoid the slower "dictionary" mode - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / step)), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * The opposite of `_.initial`, this method gets all but the first value of `array`. - * If a number `n` is passed, the first `n` values are excluded from the result. - * If a `callback` function is passed, the first elements the `callback` returns - * truthy for are excluded from the result. The `callback` is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|Number|String} [callback|n=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is passed, it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var food = [ - * { 'name': 'banana', 'organic': true }, - * { 'name': 'beet', 'organic': false }, - * ]; - * - * // using "_.pluck" callback shorthand - * _.rest(food, 'organic'); - * // => [{ 'name': 'beet', 'organic': false }] - * - * var food = [ - * { 'name': 'apple', 'type': 'fruit' }, - * { 'name': 'banana', 'type': 'fruit' }, - * { 'name': 'beet', 'type': 'vegetable' } - * ]; - * - * // using "_.where" callback shorthand - * _.rest(food, { 'type': 'fruit' }); - * // => [{ 'name': 'beet', 'type': 'vegetable' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = createCallback(callback, thisArg); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which the `value` - * should be inserted into `array` in order to maintain the sort order of the - * sorted `array`. If `callback` is passed, it will be executed for `value` and - * each element in `array` to compute their sort ranking. The `callback` is - * bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to iterate over. - * @param {Mixed} value The value to evaluate. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Number} Returns the index at which the value should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - callback(array[mid]) < value - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Computes the union of the passed-in arrays using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of unique values, in order, that are - * present in one or more of the arrays. - * @example - * - * _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); - * // => [1, 2, 3, 101, 10] - */ - function union() { - return uniq(concat.apply(arrayRef, arguments)); - } - - /** - * Creates a duplicate-value-free version of the `array` using strict equality - * for comparisons, i.e. `===`. If the `array` is already sorted, passing `true` - * for `isSorted` will run a faster algorithm. If `callback` is passed, each - * element of `array` is passed through a callback` before uniqueness is computed. - * The `callback` is bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is passed for `callback`, the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is passed for `callback`, the created "_.where" style callback - * will return `true` for elements that have the propeties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {Boolean} [isSorted=false] A flag to indicate that the `array` is already sorted. - * @param {Function|Object|String} [callback=identity] The function called per - * iteration. If a property name or object is passed, it will be used to create - * a "_.pluck" or "_.where" style callback, respectively. - * @param {Mixed} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq([1, 2, 1.5, 3, 2.5], function(num) { return Math.floor(num); }); - * // => [1, 2, 3] - * - * _.uniq([1, 2, 1.5, 3, 2.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = [], - seen = result; - - // juggle arguments - if (typeof isSorted == 'function') { - thisArg = callback; - callback = isSorted; - isSorted = false; - } - // init value cache for large arrays - var isLarge = !isSorted && length >= 75; - if (isLarge) { - var cache = {}; - } - if (callback) { - seen = []; - callback = createCallback(callback, thisArg); - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isLarge) { - var key = computed + ''; - var inited = hasOwnProperty.call(cache, key) - ? !(seen = cache[key]) - : (seen = cache[key] = []); - } - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : inited || indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * Creates an array with all occurrences of the passed values removed using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {Mixed} [value1, value2, ...] Values to remove. - * @returns {Array} Returns a new filtered array. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - var index = -1, - length = array ? array.length : 0, - contains = cachedContains(arguments, 1), - result = []; - - while (++index < length) { - var value = array[index]; - if (!contains(value)) { - result.push(value); - } - } - return result; - } - - /** - * Groups the elements of each array at their corresponding indexes. Useful for - * separate data sources that are coordinated through matching array indexes. - * For a matrix of nested arrays, `_.zip.apply(...)` can transpose the matrix - * in a similar fashion. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} [array1, array2, ...] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['moe', 'larry'], [30, 40], [true, false]); - * // => [['moe', 30, true], ['larry', 40, false]] - */ - function zip(array) { - var index = -1, - length = array ? max(pluck(arguments, 'length')) : 0, - result = Array(length); - - while (++index < length) { - result[index] = pluck(arguments, index); - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that is restricted to executing `func` only after it is - * called `n` times. The `func` is executed with the `this` binding of the - * created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Number} n The number of times the function must be called before - * it is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var renderNotes = _.after(notes.length, render); - * _.forEach(notes, function(note) { - * note.asyncSave({ 'success': renderNotes }); - * }); - * // `renderNotes` is run once, after all notes have saved - */ - function after(n, func) { - if (n < 1) { - return func(); - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * passed to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {Mixed} [thisArg] The `this` binding of `func`. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'moe' }, 'hi'); - * func(); - * // => 'hi moe' - */ - function bind(func, thisArg) { - // use `Function#bind` if it exists and is fast - // (in V8 `Function#bind` is slower except when partially applied) - return isBindFast || (nativeBind && arguments.length > 2) - ? nativeBind.call.apply(nativeBind, arguments) - : createBound(func, thisArg, slice(arguments, 2)); - } - - /** - * Binds methods on `object` to `object`, overwriting the existing method. - * Method names may be specified as individual arguments or as arrays of method - * names. If no method names are provided, all the function properties of `object` - * will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {String} [methodName1, methodName2, ...] Method names on the object to bind. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { alert('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => alerts 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = concat.apply(arrayRef, arguments), - index = funcs.length > 1 ? 0 : (funcs = functions(object), -1), - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = bind(object[key], object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those passed to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {String} key The key of the method. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'moe', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi moe' - * - * object.greet = function(greeting) { - * return greeting + ', ' + this.name + '!'; - * }; - * - * func(); - * // => 'hi, moe!' - */ - function bindKey(object, key) { - return createBound(object, key, slice(arguments, 2)); - } - - /** - * Creates a function that is the composition of the passed functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} [func1, func2, ...] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var greet = function(name) { return 'hi ' + name; }; - * var exclaim = function(statement) { return statement + '!'; }; - * var welcome = _.compose(exclaim, greet); - * welcome('moe'); - * // => 'hi moe!' - */ - function compose() { - var funcs = arguments; - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. Pass - * `true` for `immediate` to cause debounce to invoke `func` on the leading, - * instead of the trailing, edge of the `wait` timeout. Subsequent calls to - * the debounced function will return the result of the last `func` call. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {Number} wait The number of milliseconds to delay. - * @param {Boolean} immediate A flag to indicate execution is on the leading - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * var lazyLayout = _.debounce(calculateLayout, 300); - * jQuery(window).on('resize', lazyLayout); - */ - function debounce(func, wait, immediate) { - var args, - result, - thisArg, - timeoutId; - - function delayed() { - timeoutId = null; - if (!immediate) { - result = func.apply(thisArg, args); - } - } - return function() { - var isImmediate = immediate && !timeoutId; - args = arguments; - thisArg = this; - - clearTimeout(timeoutId); - timeoutId = setTimeout(delayed, wait); - - if (isImmediate) { - result = func.apply(thisArg, args); - } - return result; - }; - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be passed to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {Number} wait The number of milliseconds to delay execution. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the function with. - * @returns {Number} Returns the `setTimeout` timeout id. - * @example - * - * var log = _.bind(console.log, console); - * _.delay(log, 1000, 'logged later'); - * // => 'logged later' (Appears after one second.) - */ - function delay(func, wait) { - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be passed to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {Mixed} [arg1, arg2, ...] Arguments to invoke the function with. - * @returns {Number} Returns the `setTimeout` timeout id. - * @example - * - * _.defer(function() { alert('deferred'); }); - * // returns from the function before `alert` is called - */ - function defer(func) { - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - // use `setImmediate` if it's available in Node.js - if (isV8 && freeModule && typeof setImmediate == 'function') { - defer = bind(setImmediate, window); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * passed, it will be used to determine the cache key for storing the result - * based on the arguments passed to the memoized function. By default, the first - * argument passed to the memoized function is used as the cache key. The `func` - * is executed with the `this` binding of the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - */ - function memoize(func, resolver) { - var cache = {}; - return function() { - var key = (resolver ? resolver.apply(this, arguments) : arguments[0]) + ''; - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - }; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those passed to the new function. This - * method is similar to `_.bind`, except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('moe'); - * // => 'hi moe' - */ - function partial(func) { - return createBound(func, slice(arguments, 1)); - } - - /** - * This method is similar to `_.partial`, except that `partial` arguments are - * appended to those passed to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createBound(func, slice(arguments, 1), null, indicatorObject); - } - - /** - * Creates a function that, when executed, will only call the `func` - * function at most once per every `wait` milliseconds. If the throttled - * function is invoked more than once during the `wait` timeout, `func` will - * also be called on the trailing edge of the timeout. Subsequent calls to the - * throttled function will return the result of the last `func` call. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {Number} wait The number of milliseconds to throttle executions to. - * @returns {Function} Returns the new throttled function. - * @example - * - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - */ - function throttle(func, wait) { - var args, - result, - thisArg, - timeoutId, - lastCalled = 0; - - function trailingCall() { - lastCalled = new Date; - timeoutId = null; - result = func.apply(thisArg, args); - } - return function() { - var now = new Date, - remaining = wait - (now - lastCalled); - - args = arguments; - thisArg = this; - - if (remaining <= 0) { - clearTimeout(timeoutId); - timeoutId = null; - lastCalled = now; - result = func.apply(thisArg, args); - } - else if (!timeoutId) { - timeoutId = setTimeout(trailingCall, remaining); - } - return result; - }; - } - - /** - * Creates a function that passes `value` to the `wrapper` function as its - * first argument. Additional arguments passed to the function are appended - * to those passed to the `wrapper` function. The `wrapper` is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Mixed} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var hello = function(name) { return 'hello ' + name; }; - * hello = _.wrap(hello, function(func) { - * return 'before, ' + func('moe') + ', after'; - * }); - * hello(); - * // => 'before, hello moe, after' - */ - function wrap(value, wrapper) { - return function() { - var args = [value]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {String} string The string to escape. - * @returns {String} Returns the escaped string. - * @example - * - * _.escape('Moe, Larry & Curly'); - * // => 'Moe, Larry & Curly' - */ - function escape(string) { - return string == null ? '' : (string + '').replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This function returns the first argument passed to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Mixed} value Any value. - * @returns {Mixed} Returns `value`. - * @example - * - * var moe = { 'name': 'moe' }; - * moe === _.identity(moe); - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds functions properties of `object` to the `lodash` function and chainable - * wrapper. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object of function properties to add to `lodash`. - * @example - * - * _.mixin({ - * 'capitalize': function(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * }); - * - * _.capitalize('moe'); - * // => 'Moe' - * - * _('moe').capitalize(); - * // => 'Moe' - */ - function mixin(object) { - forEach(functions(object), function(methodName) { - var func = lodash[methodName] = object[methodName]; - - lodash.prototype[methodName] = function() { - var args = [this.__wrapped__]; - push.apply(args, arguments); - return new lodash(func.apply(lodash, args)); - }; - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - window._ = oldDash; - return this; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is passed, a number between `0` and the given number will be returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Number} [min=0] The minimum possible value. - * @param {Number} [max=1] The maximum possible value. - * @returns {Number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => a number between 0 and 5 - * - * _.random(5); - * // => also a number between 0 and 5 - */ - function random(min, max) { - if (min == null && max == null) { - max = 1; - } - min = +min || 0; - if (max == null) { - max = min; - min = 0; - } - return min + floor(nativeRandom() * ((+max || 0) - min + 1)); - } - - /** - * Resolves the value of `property` on `object`. If `property` is a function, - * it will be invoked and its result returned, else the property value is - * returned. If `object` is falsey, then `null` is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {String} property The property to get the value of. - * @returns {Mixed} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, property) { - var value = object ? object[property] : undefined; - return isFunction(value) ? object[property]() : value; - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * Note: Lo-Dash may be used in Chrome extensions by either creating a `lodash csp` - * build and using precompiled templates, or loading Lo-Dash in a sandbox. - * - * For more information on precompiling templates see: - * http://lodash.com/#custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {String} text The template text. - * @param {Obect} data The data object used to populate the text. - * @param {Object} options The options object. - * escape - The "escape" delimiter regexp. - * evaluate - The "evaluate" delimiter regexp. - * interpolate - The "interpolate" delimiter regexp. - * sourceURL - The sourceURL of the template's compiled source. - * variable - The data object variable name. - * - * @returns {Function|String} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'moe' }); - * // => 'hello moe' - * - * var list = '<% _.forEach(people, function(name) { %>
  • <%= name %>
  • <% }); %>'; - * _.template(list, { 'people': ['moe', 'larry'] }); - * // => '
  • moe
  • larry
  • ' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/style.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/style.html deleted file mode 100644 index 4c9c37cf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/templates/style.html +++ /dev/null @@ -1,324 +0,0 @@ - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/xunit.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/xunit.js deleted file mode 100644 index 01d9d878..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/reporters/xunit.js +++ /dev/null @@ -1,174 +0,0 @@ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); -var inherits = utils.inherits; -var fs = require('fs'); -var escape = utils.escape; -var mkdirp = require('mkdirp'); -var path = require('path'); - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Expose `XUnit`. - */ - -exports = module.exports = XUnit; - -/** - * Initialize a new `XUnit` reporter. - * - * @api public - * @param {Runner} runner - */ -function XUnit(runner, options) { - Base.call(this, runner); - - var stats = this.stats; - var tests = []; - var self = this; - - if (options.reporterOptions && options.reporterOptions.output) { - if (!fs.createWriteStream) { - throw new Error('file output not supported in browser'); - } - mkdirp.sync(path.dirname(options.reporterOptions.output)); - self.fileStream = fs.createWriteStream(options.reporterOptions.output); - } - - runner.on('pending', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - tests.push(test); - }); - - runner.on('fail', function(test) { - tests.push(test); - }); - - runner.on('end', function() { - self.write(tag('testsuite', { - name: 'Mocha Tests', - tests: stats.tests, - failures: stats.failures, - errors: stats.failures, - skipped: stats.tests - stats.failures - stats.passes, - timestamp: (new Date()).toUTCString(), - time: (stats.duration / 1000) || 0 - }, false)); - - tests.forEach(function(t) { - self.test(t); - }); - - self.write(''); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(XUnit, Base); - -/** - * Override done to close the stream (if it's a file). - * - * @param failures - * @param {Function} fn - */ -XUnit.prototype.done = function(failures, fn) { - if (this.fileStream) { - this.fileStream.end(function() { - fn(failures); - }); - } else { - fn(failures); - } -}; - -/** - * Write out the given line. - * - * @param {string} line - */ -XUnit.prototype.write = function(line) { - if (this.fileStream) { - this.fileStream.write(line + '\n'); - } else if (typeof process === 'object' && process.stdout) { - process.stdout.write(line + '\n'); - } else { - console.log(line); - } -}; - -/** - * Output tag for the given `test.` - * - * @param {Test} test - */ -XUnit.prototype.test = function(test) { - var attrs = { - classname: test.parent.fullTitle(), - name: test.title, - time: (test.duration / 1000) || 0 - }; - - if (test.state === 'failed') { - var err = test.err; - this.write(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)))); - } else if (test.pending) { - this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); - } else { - this.write(tag('testcase', attrs, true)); - } -}; - -/** - * HTML tag helper. - * - * @param name - * @param attrs - * @param close - * @param content - * @return {string} - */ -function tag(name, attrs, close, content) { - var end = close ? '/>' : '>'; - var pairs = []; - var tag; - - for (var key in attrs) { - if (Object.prototype.hasOwnProperty.call(attrs, key)) { - pairs.push(key + '="' + escape(attrs[key]) + '"'); - } - } - - tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; - if (content) { - tag += content + ''; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runnable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runnable.js deleted file mode 100644 index 9ac45de3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runnable.js +++ /dev/null @@ -1,352 +0,0 @@ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Pending = require('./pending'); -var debug = require('debug')('mocha:runnable'); -var milliseconds = require('./ms'); -var utils = require('./utils'); -var inherits = utils.inherits; - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Object#toString(). - */ - -var toString = Object.prototype.toString; - -/** - * Expose `Runnable`. - */ - -module.exports = Runnable; - -/** - * Initialize a new `Runnable` with the given `title` and callback `fn`. - * - * @param {String} title - * @param {Function} fn - * @api private - * @param {string} title - * @param {Function} fn - */ -function Runnable(title, fn) { - this.title = title; - this.fn = fn; - this.async = fn && fn.length; - this.sync = !this.async; - this._timeout = 2000; - this._slow = 75; - this._enableTimeouts = true; - this.timedOut = false; - this._trace = new Error('done() called multiple times'); - this._retries = -1; - this._currentRetry = 0; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Runnable, EventEmitter); - -/** - * Set & get timeout `ms`. - * - * @api private - * @param {number|string} ms - * @return {Runnable|number} ms or Runnable instance. - */ -Runnable.prototype.timeout = function(ms) { - if (!arguments.length) { - return this._timeout; - } - if (ms === 0) { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = ms; - if (this.timer) { - this.resetTimeout(); - } - return this; -}; - -/** - * Set & get slow `ms`. - * - * @api private - * @param {number|string} ms - * @return {Runnable|number} ms or Runnable instance. - */ -Runnable.prototype.slow = function(ms) { - if (!arguments.length) { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._slow = ms; - return this; -}; - -/** - * Set and get whether timeout is `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Runnable|boolean} enabled or Runnable instance. - */ -Runnable.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Halt and mark as pending. - * - * @api private - */ -Runnable.prototype.skip = function() { - throw new Pending(); -}; - -/** - * Set number of retries. - * - * @api private - */ -Runnable.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - this._retries = n; -}; - -/** - * Get current retry - * - * @api private - */ -Runnable.prototype.currentRetry = function(n) { - if (!arguments.length) { - return this._currentRetry; - } - this._currentRetry = n; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Runnable.prototype.fullTitle = function() { - return this.parent.fullTitle() + ' ' + this.title; -}; - -/** - * Clear the timeout. - * - * @api private - */ -Runnable.prototype.clearTimeout = function() { - clearTimeout(this.timer); -}; - -/** - * Inspect the runnable void of private properties. - * - * @api private - * @return {string} - */ -Runnable.prototype.inspect = function() { - return JSON.stringify(this, function(key, val) { - if (key[0] === '_') { - return; - } - if (key === 'parent') { - return '#'; - } - if (key === 'ctx') { - return '#'; - } - return val; - }, 2); -}; - -/** - * Reset the timeout. - * - * @api private - */ -Runnable.prototype.resetTimeout = function() { - var self = this; - var ms = this.timeout() || 1e9; - - if (!this._enableTimeouts) { - return; - } - this.clearTimeout(); - this.timer = setTimeout(function() { - if (!self._enableTimeouts) { - return; - } - self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); - self.timedOut = true; - }, ms); -}; - -/** - * Whitelist a list of globals for this test run. - * - * @api private - * @param {string[]} globals - */ -Runnable.prototype.globals = function(globals) { - if (!arguments.length) { - return this._allowedGlobals; - } - this._allowedGlobals = globals; -}; - -/** - * Run the test and invoke `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runnable.prototype.run = function(fn) { - var self = this; - var start = new Date(); - var ctx = this.ctx; - var finished; - var emitted; - - // Sometimes the ctx exists, but it is not runnable - if (ctx && ctx.runnable) { - ctx.runnable(this); - } - - // called multiple times - function multiple(err) { - if (emitted) { - return; - } - emitted = true; - self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); - } - - // finished - function done(err) { - var ms = self.timeout(); - if (self.timedOut) { - return; - } - if (finished) { - return multiple(err || self._trace); - } - - self.clearTimeout(); - self.duration = new Date() - start; - finished = true; - if (!err && self.duration > ms && self._enableTimeouts) { - err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); - } - fn(err); - } - - // for .resetTimeout() - this.callback = done; - - // explicit async with `done` argument - if (this.async) { - this.resetTimeout(); - - if (this.allowUncaught) { - return callFnAsync(this.fn); - } - try { - callFnAsync(this.fn); - } catch (err) { - done(utils.getError(err)); - } - return; - } - - if (this.allowUncaught) { - callFn(this.fn); - done(); - return; - } - - // sync or promise-returning - try { - if (this.pending) { - done(); - } else { - callFn(this.fn); - } - } catch (err) { - done(utils.getError(err)); - } - - function callFn(fn) { - var result = fn.call(ctx); - if (result && typeof result.then === 'function') { - self.resetTimeout(); - result - .then(function() { - done(); - // Return null so libraries like bluebird do not warn about - // subsequently constructed Promises. - return null; - }, - function(reason) { - done(reason || new Error('Promise rejected with no or falsy reason')); - }); - } else { - if (self.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); - } - - done(); - } - } - - function callFnAsync(fn) { - fn.call(ctx, function(err) { - if (err instanceof Error || toString.call(err) === '[object Error]') { - return done(err); - } - if (err) { - if (Object.prototype.toString.call(err) === '[object Object]') { - return done(new Error('done() invoked with non-Error: ' - + JSON.stringify(err))); - } - return done(new Error('done() invoked with non-Error: ' + err)); - } - done(); - }); - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runner.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runner.js deleted file mode 100644 index e4d935e8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/runner.js +++ /dev/null @@ -1,899 +0,0 @@ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Pending = require('./pending'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:runner'); -var Runnable = require('./runnable'); -var filter = utils.filter; -var indexOf = utils.indexOf; -var keys = utils.keys; -var stackFilter = utils.stackTraceFilter(); -var stringify = utils.stringify; -var type = utils.type; -var undefinedError = utils.undefinedError; -var isArray = utils.isArray; - -/** - * Non-enumerable globals. - */ - -var globals = [ - 'setTimeout', - 'clearTimeout', - 'setInterval', - 'clearInterval', - 'XMLHttpRequest', - 'Date', - 'setImmediate', - 'clearImmediate' -]; - -/** - * Expose `Runner`. - */ - -module.exports = Runner; - -/** - * Initialize a `Runner` for the given `suite`. - * - * Events: - * - * - `start` execution started - * - `end` execution complete - * - `suite` (suite) test suite execution started - * - `suite end` (suite) all tests (and sub-suites) have finished - * - `test` (test) test execution started - * - `test end` (test) test completed - * - `hook` (hook) hook execution started - * - `hook end` (hook) hook complete - * - `pass` (test) test passed - * - `fail` (test, err) test failed - * - `pending` (test) test pending - * - * @api public - * @param {Suite} suite Root suite - * @param {boolean} [delay] Whether or not to delay execution of root suite - * until ready. - */ -function Runner(suite, delay) { - var self = this; - this._globals = []; - this._abort = false; - this._delay = delay; - this.suite = suite; - this.started = false; - this.total = suite.total(); - this.failures = 0; - this.on('test end', function(test) { - self.checkGlobals(test); - }); - this.on('hook end', function(hook) { - self.checkGlobals(hook); - }); - this._defaultGrep = /.*/; - this.grep(this._defaultGrep); - this.globals(this.globalProps().concat(extraGlobals())); -} - -/** - * Wrapper for setImmediate, process.nextTick, or browser polyfill. - * - * @param {Function} fn - * @api private - */ -Runner.immediately = global.setImmediate || process.nextTick; - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Runner, EventEmitter); - -/** - * Run tests with full titles matching `re`. Updates runner.total - * with number of tests matched. - * - * @param {RegExp} re - * @param {Boolean} invert - * @return {Runner} for chaining - * @api public - * @param {RegExp} re - * @param {boolean} invert - * @return {Runner} Runner instance. - */ -Runner.prototype.grep = function(re, invert) { - debug('grep %s', re); - this._grep = re; - this._invert = invert; - this.total = this.grepTotal(this.suite); - return this; -}; - -/** - * Returns the number of tests matching the grep search for the - * given suite. - * - * @param {Suite} suite - * @return {Number} - * @api public - * @param {Suite} suite - * @return {number} - */ -Runner.prototype.grepTotal = function(suite) { - var self = this; - var total = 0; - - suite.eachTest(function(test) { - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (match) { - total++; - } - }); - - return total; -}; - -/** - * Return a list of global properties. - * - * @return {Array} - * @api private - */ -Runner.prototype.globalProps = function() { - var props = keys(global); - - // non-enumerables - for (var i = 0; i < globals.length; ++i) { - if (~indexOf(props, globals[i])) { - continue; - } - props.push(globals[i]); - } - - return props; -}; - -/** - * Allow the given `arr` of globals. - * - * @param {Array} arr - * @return {Runner} for chaining - * @api public - * @param {Array} arr - * @return {Runner} Runner instance. - */ -Runner.prototype.globals = function(arr) { - if (!arguments.length) { - return this._globals; - } - debug('globals %j', arr); - this._globals = this._globals.concat(arr); - return this; -}; - -/** - * Check for global variable leaks. - * - * @api private - */ -Runner.prototype.checkGlobals = function(test) { - if (this.ignoreLeaks) { - return; - } - var ok = this._globals; - - var globals = this.globalProps(); - var leaks; - - if (test) { - ok = ok.concat(test._allowedGlobals || []); - } - - if (this.prevGlobalsLength === globals.length) { - return; - } - this.prevGlobalsLength = globals.length; - - leaks = filterLeaks(ok, globals); - this._globals = this._globals.concat(leaks); - - if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); - } else if (leaks.length) { - this.fail(test, new Error('global leak detected: ' + leaks[0])); - } -}; - -/** - * Fail the given `test`. - * - * @api private - * @param {Test} test - * @param {Error} err - */ -Runner.prototype.fail = function(test, err) { - ++this.failures; - test.state = 'failed'; - - if (!(err instanceof Error || err && typeof err.message === 'string')) { - err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); - } - - err.stack = (this.fullStackTrace || !err.stack) - ? err.stack - : stackFilter(err.stack); - - this.emit('fail', test, err); -}; - -/** - * Fail the given `hook` with `err`. - * - * Hook failures work in the following pattern: - * - If bail, then exit - * - Failed `before` hook skips all tests in a suite and subsuites, - * but jumps to corresponding `after` hook - * - Failed `before each` hook skips remaining tests in a - * suite and jumps to corresponding `after each` hook, - * which is run only once - * - Failed `after` hook does not alter - * execution order - * - Failed `after each` hook skips remaining tests in a - * suite and subsuites, but executes other `after each` - * hooks - * - * @api private - * @param {Hook} hook - * @param {Error} err - */ -Runner.prototype.failHook = function(hook, err) { - if (hook.ctx && hook.ctx.currentTest) { - hook.originalTitle = hook.originalTitle || hook.title; - hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; - } - - this.fail(hook, err); - if (this.suite.bail()) { - this.emit('end'); - } -}; - -/** - * Run hook `name` callbacks and then invoke `fn()`. - * - * @api private - * @param {string} name - * @param {Function} fn - */ - -Runner.prototype.hook = function(name, fn) { - var suite = this.suite; - var hooks = suite['_' + name]; - var self = this; - - function next(i) { - var hook = hooks[i]; - if (!hook) { - return fn(); - } - self.currentRunnable = hook; - - hook.ctx.currentTest = self.test; - - self.emit('hook', hook); - - if (!hook.listeners('error').length) { - hook.on('error', function(err) { - self.failHook(hook, err); - }); - } - - hook.run(function(err) { - var testError = hook.error(); - if (testError) { - self.fail(self.test, testError); - } - if (err) { - if (err instanceof Pending) { - suite.pending = true; - } else { - self.failHook(hook, err); - - // stop executing hooks, notify callee of hook err - return fn(err); - } - } - self.emit('hook end', hook); - delete hook.ctx.currentTest; - next(++i); - }); - } - - Runner.immediately(function() { - next(0); - }); -}; - -/** - * Run hook `name` for the given array of `suites` - * in order, and callback `fn(err, errSuite)`. - * - * @api private - * @param {string} name - * @param {Array} suites - * @param {Function} fn - */ -Runner.prototype.hooks = function(name, suites, fn) { - var self = this; - var orig = this.suite; - - function next(suite) { - self.suite = suite; - - if (!suite) { - self.suite = orig; - return fn(); - } - - self.hook(name, function(err) { - if (err) { - var errSuite = self.suite; - self.suite = orig; - return fn(err, errSuite); - } - - next(suites.pop()); - }); - } - - next(suites.pop()); -}; - -/** - * Run hooks from the top level down. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookUp = function(name, fn) { - var suites = [this.suite].concat(this.parents()).reverse(); - this.hooks(name, suites, fn); -}; - -/** - * Run hooks from the bottom up. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookDown = function(name, fn) { - var suites = [this.suite].concat(this.parents()); - this.hooks(name, suites, fn); -}; - -/** - * Return an array of parent Suites from - * closest to furthest. - * - * @return {Array} - * @api private - */ -Runner.prototype.parents = function() { - var suite = this.suite; - var suites = []; - while (suite.parent) { - suite = suite.parent; - suites.push(suite); - } - return suites; -}; - -/** - * Run the current test and callback `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runner.prototype.runTest = function(fn) { - var self = this; - var test = this.test; - - if (this.asyncOnly) { - test.asyncOnly = true; - } - - if (this.allowUncaught) { - test.allowUncaught = true; - return test.run(fn); - } - try { - test.on('error', function(err) { - self.fail(test, err); - }); - test.run(fn); - } catch (err) { - fn(err); - } -}; - -/** - * Run tests in the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runTests = function(suite, fn) { - var self = this; - var tests = suite.tests.slice(); - var test; - - function hookErr(_, errSuite, after) { - // before/after Each hook for errSuite failed: - var orig = self.suite; - - // for failed 'after each' hook start from errSuite parent, - // otherwise start from errSuite itself - self.suite = after ? errSuite.parent : errSuite; - - if (self.suite) { - // call hookUp afterEach - self.hookUp('afterEach', function(err2, errSuite2) { - self.suite = orig; - // some hooks may fail even now - if (err2) { - return hookErr(err2, errSuite2, true); - } - // report error suite - fn(errSuite); - }); - } else { - // there is no need calling other 'after each' hooks - self.suite = orig; - fn(errSuite); - } - } - - function next(err, errSuite) { - // if we bail after first err - if (self.failures && suite._bail) { - return fn(); - } - - if (self._abort) { - return fn(); - } - - if (err) { - return hookErr(err, errSuite, true); - } - - // next test - test = tests.shift(); - - // all done - if (!test) { - return fn(); - } - - // grep - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (!match) { - // Run immediately only if we have defined a grep. When we - // define a grep — It can cause maximum callstack error if - // the grep is doing a large recursive loop by neglecting - // all tests. The run immediately function also comes with - // a performance cost. So we don't want to run immediately - // if we run the whole test suite, because running the whole - // test suite don't do any immediate recursive loops. Thus, - // allowing a JS runtime to breathe. - if (self._grep !== self._defaultGrep) { - Runner.immediately(next); - } else { - next(); - } - return; - } - - function parentPending(suite) { - return suite.pending || (suite.parent && parentPending(suite.parent)); - } - - // pending - if (test.pending || parentPending(test.parent)) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - - // execute test and hook(s) - self.emit('test', self.test = test); - self.hookDown('beforeEach', function(err, errSuite) { - if (suite.pending) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - if (err) { - return hookErr(err, errSuite, false); - } - self.currentRunnable = self.test; - self.runTest(function(err) { - test = self.test; - if (err) { - var retry = test.currentRetry(); - if (err instanceof Pending) { - test.pending = true; - self.emit('pending', test); - } else if (retry < test.retries()) { - var clonedTest = test.clone(); - clonedTest.currentRetry(retry + 1); - tests.unshift(clonedTest); - - // Early return + hook trigger so that it doesn't - // increment the count wrong - return self.hookUp('afterEach', next); - } else { - self.fail(test, err); - } - self.emit('test end', test); - - if (err instanceof Pending) { - return next(); - } - - return self.hookUp('afterEach', next); - } - - test.state = 'passed'; - self.emit('pass', test); - self.emit('test end', test); - self.hookUp('afterEach', next); - }); - }); - } - - this.next = next; - this.hookErr = hookErr; - next(); -}; - -/** - * Run the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runSuite = function(suite, fn) { - var i = 0; - var self = this; - var total = this.grepTotal(suite); - var afterAllHookCalled = false; - - debug('run suite %s', suite.fullTitle()); - - if (!total || (self.failures && suite._bail)) { - return fn(); - } - - this.emit('suite', this.suite = suite); - - function next(errSuite) { - if (errSuite) { - // current suite failed on a hook from errSuite - if (errSuite === suite) { - // if errSuite is current suite - // continue to the next sibling suite - return done(); - } - // errSuite is among the parents of current suite - // stop execution of errSuite and all sub-suites - return done(errSuite); - } - - if (self._abort) { - return done(); - } - - var curr = suite.suites[i++]; - if (!curr) { - return done(); - } - - // Avoid grep neglecting large number of tests causing a - // huge recursive loop and thus a maximum call stack error. - // See comment in `this.runTests()` for more information. - if (self._grep !== self._defaultGrep) { - Runner.immediately(function() { - self.runSuite(curr, next); - }); - } else { - self.runSuite(curr, next); - } - } - - function done(errSuite) { - self.suite = suite; - self.nextSuite = next; - - if (afterAllHookCalled) { - fn(errSuite); - } else { - // mark that the afterAll block has been called once - // and so can be skipped if there is an error in it. - afterAllHookCalled = true; - - // remove reference to test - delete self.test; - - self.hook('afterAll', function() { - self.emit('suite end', suite); - fn(errSuite); - }); - } - } - - this.nextSuite = next; - - this.hook('beforeAll', function(err) { - if (err) { - return done(); - } - self.runTests(suite, next); - }); -}; - -/** - * Handle uncaught exceptions. - * - * @param {Error} err - * @api private - */ -Runner.prototype.uncaught = function(err) { - if (err) { - debug('uncaught exception %s', err !== function() { - return this; - }.call(err) ? err : (err.message || err)); - } else { - debug('uncaught undefined exception'); - err = undefinedError(); - } - err.uncaught = true; - - var runnable = this.currentRunnable; - - if (!runnable) { - runnable = new Runnable('Uncaught error outside test suite'); - runnable.parent = this.suite; - - if (this.started) { - this.fail(runnable, err); - } else { - // Can't recover from this failure - this.emit('start'); - this.fail(runnable, err); - this.emit('end'); - } - - return; - } - - runnable.clearTimeout(); - - // Ignore errors if complete - if (runnable.state) { - return; - } - this.fail(runnable, err); - - // recover from test - if (runnable.type === 'test') { - this.emit('test end', runnable); - this.hookUp('afterEach', this.next); - return; - } - - // recover from hooks - if (runnable.type === 'hook') { - var errSuite = this.suite; - // if hook failure is in afterEach block - if (runnable.fullTitle().indexOf('after each') > -1) { - return this.hookErr(err, errSuite, true); - } - // if hook failure is in beforeEach block - if (runnable.fullTitle().indexOf('before each') > -1) { - return this.hookErr(err, errSuite, false); - } - // if hook failure is in after or before blocks - return this.nextSuite(errSuite); - } - - // bail - this.emit('end'); -}; - -/** - * Cleans up the references to all the deferred functions - * (before/after/beforeEach/afterEach) and tests of a Suite. - * These must be deleted otherwise a memory leak can happen, - * as those functions may reference variables from closures, - * thus those variables can never be garbage collected as long - * as the deferred functions exist. - * - * @param {Suite} suite - */ -function cleanSuiteReferences(suite) { - function cleanArrReferences(arr) { - for (var i = 0; i < arr.length; i++) { - delete arr[i].fn; - } - } - - if (isArray(suite._beforeAll)) { - cleanArrReferences(suite._beforeAll); - } - - if (isArray(suite._beforeEach)) { - cleanArrReferences(suite._beforeEach); - } - - if (isArray(suite._afterAll)) { - cleanArrReferences(suite._afterAll); - } - - if (isArray(suite._afterEach)) { - cleanArrReferences(suite._afterEach); - } - - for (var i = 0; i < suite.tests.length; i++) { - delete suite.tests[i].fn; - } -} - -/** - * Run the root suite and invoke `fn(failures)` - * on completion. - * - * @param {Function} fn - * @return {Runner} for chaining - * @api public - * @param {Function} fn - * @return {Runner} Runner instance. - */ -Runner.prototype.run = function(fn) { - var self = this; - var rootSuite = this.suite; - - fn = fn || function() {}; - - function uncaught(err) { - self.uncaught(err); - } - - function start() { - self.started = true; - self.emit('start'); - self.runSuite(rootSuite, function() { - debug('finished running'); - self.emit('end'); - }); - } - - debug('start'); - - // references cleanup to avoid memory leaks - this.on('suite end', cleanSuiteReferences); - - // callback - this.on('end', function() { - debug('end'); - process.removeListener('uncaughtException', uncaught); - fn(self.failures); - }); - - // uncaught exception - process.on('uncaughtException', uncaught); - - if (this._delay) { - // for reporters, I guess. - // might be nice to debounce some dots while we wait. - this.emit('waiting', rootSuite); - rootSuite.once('run', start); - } else { - start(); - } - - return this; -}; - -/** - * Cleanly abort execution. - * - * @api public - * @return {Runner} Runner instance. - */ -Runner.prototype.abort = function() { - debug('aborting'); - this._abort = true; - - return this; -}; - -/** - * Filter leaks with the given globals flagged as `ok`. - * - * @api private - * @param {Array} ok - * @param {Array} globals - * @return {Array} - */ -function filterLeaks(ok, globals) { - return filter(globals, function(key) { - // Firefox and Chrome exposes iframes as index inside the window object - if (/^d+/.test(key)) { - return false; - } - - // in firefox - // if runner runs in an iframe, this iframe's window.getInterface method not init at first - // it is assigned in some seconds - if (global.navigator && (/^getInterface/).test(key)) { - return false; - } - - // an iframe could be approached by window[iframeIndex] - // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && (/^\d+/).test(key)) { - return false; - } - - // Opera and IE expose global variables for HTML element IDs (issue #243) - if (/^mocha-/.test(key)) { - return false; - } - - var matched = filter(ok, function(ok) { - if (~ok.indexOf('*')) { - return key.indexOf(ok.split('*')[0]) === 0; - } - return key === ok; - }); - return !matched.length && (!global.navigator || key !== 'onerror'); - }); -} - -/** - * Array of globals dependent on the environment. - * - * @return {Array} - * @api private - */ -function extraGlobals() { - if (typeof process === 'object' && typeof process.version === 'string') { - var parts = process.version.split('.'); - var nodeVersion = utils.reduce(parts, function(a, v) { - return a << 8 | v; - }); - - // 'errno' was renamed to process._errno in v0.9.11. - - if (nodeVersion < 0x00090B) { - return ['errno']; - } - } - - return []; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/suite.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/suite.js deleted file mode 100644 index 8e6f393e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/suite.js +++ /dev/null @@ -1,389 +0,0 @@ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Hook = require('./hook'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:suite'); -var milliseconds = require('./ms'); - -/** - * Expose `Suite`. - */ - -exports = module.exports = Suite; - -/** - * Create a new `Suite` with the given `title` and parent `Suite`. When a suite - * with the same title is already present, that suite is returned to provide - * nicer reporter and more flexible meta-testing. - * - * @api public - * @param {Suite} parent - * @param {string} title - * @return {Suite} - */ -exports.create = function(parent, title) { - var suite = new Suite(title, parent.ctx); - suite.parent = parent; - if (parent.pending) { - suite.pending = true; - } - title = suite.fullTitle(); - parent.addSuite(suite); - return suite; -}; - -/** - * Initialize a new `Suite` with the given `title` and `ctx`. - * - * @api private - * @param {string} title - * @param {Context} parentContext - */ -function Suite(title, parentContext) { - this.title = title; - function Context() {} - Context.prototype = parentContext; - this.ctx = new Context(); - this.suites = []; - this.tests = []; - this.pending = false; - this._beforeEach = []; - this._beforeAll = []; - this._afterEach = []; - this._afterAll = []; - this.root = !title; - this._timeout = 2000; - this._enableTimeouts = true; - this._slow = 75; - this._bail = false; - this._retries = -1; - this.delayed = false; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Suite, EventEmitter); - -/** - * Return a clone of this `Suite`. - * - * @api private - * @return {Suite} - */ -Suite.prototype.clone = function() { - var suite = new Suite(this.title); - debug('clone'); - suite.ctx = this.ctx; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - return suite; -}; - -/** - * Set timeout `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.timeout = function(ms) { - if (!arguments.length) { - return this._timeout; - } - if (ms.toString() === '0') { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = parseInt(ms, 10); - return this; -}; - -/** - * Set number of times to retry a failed test. - * - * @api private - * @param {number|string} n - * @return {Suite|number} for chaining - */ -Suite.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - debug('retries %d', n); - this._retries = parseInt(n, 10) || 0; - return this; -}; - -/** - * Set timeout to `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Suite|boolean} self or enabled - */ -Suite.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Set slow `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.slow = function(ms) { - if (!arguments.length) { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('slow %d', ms); - this._slow = ms; - return this; -}; - -/** - * Sets whether to bail after first error. - * - * @api private - * @param {boolean} bail - * @return {Suite|number} for chaining - */ -Suite.prototype.bail = function(bail) { - if (!arguments.length) { - return this._bail; - } - debug('bail %s', bail); - this._bail = bail; - return this; -}; - -/** - * Run `fn(test[, done])` before running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeAll = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeAll.push(hook); - this.emit('beforeAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterAll = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterAll.push(hook); - this.emit('afterAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` before each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeEach = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeEach.push(hook); - this.emit('beforeEach', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterEach = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterEach.push(hook); - this.emit('afterEach', hook); - return this; -}; - -/** - * Add a test `suite`. - * - * @api private - * @param {Suite} suite - * @return {Suite} for chaining - */ -Suite.prototype.addSuite = function(suite) { - suite.parent = this; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - this.suites.push(suite); - this.emit('suite', suite); - return this; -}; - -/** - * Add a `test` to this suite. - * - * @api private - * @param {Test} test - * @return {Suite} for chaining - */ -Suite.prototype.addTest = function(test) { - test.parent = this; - test.timeout(this.timeout()); - test.retries(this.retries()); - test.enableTimeouts(this.enableTimeouts()); - test.slow(this.slow()); - test.ctx = this.ctx; - this.tests.push(test); - this.emit('test', test); - return this; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Suite.prototype.fullTitle = function() { - if (this.parent) { - var full = this.parent.fullTitle(); - if (full) { - return full + ' ' + this.title; - } - } - return this.title; -}; - -/** - * Return the total number of tests. - * - * @api public - * @return {number} - */ -Suite.prototype.total = function() { - return utils.reduce(this.suites, function(sum, suite) { - return sum + suite.total(); - }, 0) + this.tests.length; -}; - -/** - * Iterates through each suite recursively to find all tests. Applies a - * function in the format `fn(test)`. - * - * @api private - * @param {Function} fn - * @return {Suite} - */ -Suite.prototype.eachTest = function(fn) { - utils.forEach(this.tests, fn); - utils.forEach(this.suites, function(suite) { - suite.eachTest(fn); - }); - return this; -}; - -/** - * This will run the root suite if we happen to be running in delayed mode. - */ -Suite.prototype.run = function run() { - if (this.root) { - this.emit('run'); - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/template.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/template.html deleted file mode 100644 index 36c5e0b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/template.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Mocha - - - - - -
    - - - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/test.js deleted file mode 100644 index b39ce42c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/test.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Module dependencies. - */ - -var Runnable = require('./runnable'); -var inherits = require('./utils').inherits; - -/** - * Expose `Test`. - */ - -module.exports = Test; - -/** - * Initialize a new `Test` with the given `title` and callback `fn`. - * - * @api private - * @param {String} title - * @param {Function} fn - */ -function Test(title, fn) { - Runnable.call(this, title, fn); - this.pending = !fn; - this.type = 'test'; - this.body = (fn || '').toString(); -} - -/** - * Inherit from `Runnable.prototype`. - */ -inherits(Test, Runnable); - -Test.prototype.clone = function() { - var test = new Test(this.title, this.fn); - test.timeout(this.timeout()); - test.slow(this.slow()); - test.enableTimeouts(this.enableTimeouts()); - test.retries(this.retries()); - test.currentRetry(this.currentRetry()); - test.globals(this.globals()); - test.parent = this.parent; - test.file = this.file; - test.ctx = this.ctx; - return test; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/utils.js deleted file mode 100644 index 7a65f92e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/lib/utils.js +++ /dev/null @@ -1,740 +0,0 @@ -/* eslint-env browser */ - -/** - * Module dependencies. - */ - -var basename = require('path').basename; -var debug = require('debug')('mocha:watch'); -var exists = require('fs').existsSync || require('path').existsSync; -var glob = require('glob'); -var join = require('path').join; -var readdirSync = require('fs').readdirSync; -var statSync = require('fs').statSync; -var watchFile = require('fs').watchFile; - -/** - * Ignored directories. - */ - -var ignore = ['node_modules', '.git']; - -exports.inherits = require('util').inherits; - -/** - * Escape special characters in the given string of html. - * - * @api private - * @param {string} html - * @return {string} - */ -exports.escape = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -}; - -/** - * Array#forEach (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - */ -exports.forEach = function(arr, fn, scope) { - for (var i = 0, l = arr.length; i < l; i++) { - fn.call(scope, arr[i], i); - } -}; - -/** - * Test if the given obj is type of string. - * - * @api private - * @param {Object} obj - * @return {boolean} - */ -exports.isString = function(obj) { - return typeof obj === 'string'; -}; - -/** - * Array#map (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - * @return {Array} - */ -exports.map = function(arr, fn, scope) { - var result = []; - for (var i = 0, l = arr.length; i < l; i++) { - result.push(fn.call(scope, arr[i], i, arr)); - } - return result; -}; - -/** - * Array#indexOf (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Object} obj to find index of - * @param {number} start - * @return {number} - */ -exports.indexOf = function(arr, obj, start) { - for (var i = start || 0, l = arr.length; i < l; i++) { - if (arr[i] === obj) { - return i; - } - } - return -1; -}; - -/** - * Array#reduce (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} val Initial value. - * @return {*} - */ -exports.reduce = function(arr, fn, val) { - var rval = val; - - for (var i = 0, l = arr.length; i < l; i++) { - rval = fn(rval, arr[i], i, arr); - } - - return rval; -}; - -/** - * Array#filter (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @return {Array} - */ -exports.filter = function(arr, fn) { - var ret = []; - - for (var i = 0, l = arr.length; i < l; i++) { - var val = arr[i]; - if (fn(val, i, arr)) { - ret.push(val); - } - } - - return ret; -}; - -/** - * Object.keys (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Array} keys - */ -exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { - var keys = []; - var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 - - for (var key in obj) { - if (has.call(obj, key)) { - keys.push(key); - } - } - - return keys; -}; - -/** - * Watch the given `files` for changes - * and invoke `fn(file)` on modification. - * - * @api private - * @param {Array} files - * @param {Function} fn - */ -exports.watch = function(files, fn) { - var options = { interval: 100 }; - files.forEach(function(file) { - debug('file %s', file); - watchFile(file, options, function(curr, prev) { - if (prev.mtime < curr.mtime) { - fn(file); - } - }); - }); -}; - -/** - * Array.isArray (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Boolean} - */ -var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -exports.isArray = isArray; - -/** - * Buffer.prototype.toJSON polyfill. - * - * @type {Function} - */ -if (typeof Buffer !== 'undefined' && Buffer.prototype) { - Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { - return Array.prototype.slice.call(this, 0); - }; -} - -/** - * Ignored files. - * - * @api private - * @param {string} path - * @return {boolean} - */ -function ignored(path) { - return !~ignore.indexOf(path); -} - -/** - * Lookup files in the given `dir`. - * - * @api private - * @param {string} dir - * @param {string[]} [ext=['.js']] - * @param {Array} [ret=[]] - * @return {Array} - */ -exports.files = function(dir, ext, ret) { - ret = ret || []; - ext = ext || ['js']; - - var re = new RegExp('\\.(' + ext.join('|') + ')$'); - - readdirSync(dir) - .filter(ignored) - .forEach(function(path) { - path = join(dir, path); - if (statSync(path).isDirectory()) { - exports.files(path, ext, ret); - } else if (path.match(re)) { - ret.push(path); - } - }); - - return ret; -}; - -/** - * Compute a slug from the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.slug = function(str) { - return str - .toLowerCase() - .replace(/ +/g, '-') - .replace(/[^-\w]/g, ''); -}; - -/** - * Strip the function definition from `str`, and re-indent for pre whitespace. - * - * @param {string} str - * @return {string} - */ -exports.clean = function(str) { - str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') - .replace(/^function *\(.*\)\s*\{|\(.*\) *=> *\{?/, '') - .replace(/\s+\}$/, ''); - - var spaces = str.match(/^\n?( *)/)[1].length; - var tabs = str.match(/^\n?(\t*)/)[1].length; - var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); - - str = str.replace(re, ''); - - return exports.trim(str); -}; - -/** - * Trim the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.trim = function(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; - -/** - * Parse the given `qs`. - * - * @api private - * @param {string} qs - * @return {Object} - */ -exports.parseQuery = function(qs) { - return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { - var i = pair.indexOf('='); - var key = pair.slice(0, i); - var val = pair.slice(++i); - - obj[key] = decodeURIComponent(val); - return obj; - }, {}); -}; - -/** - * Highlight the given string of `js`. - * - * @api private - * @param {string} js - * @return {string} - */ -function highlight(js) { - return js - .replace(//g, '>') - .replace(/\/\/(.*)/gm, '//$1') - .replace(/('.*?')/gm, '$1') - .replace(/(\d+\.\d+)/gm, '$1') - .replace(/(\d+)/gm, '$1') - .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') - .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); -} - -/** - * Highlight the contents of tag `name`. - * - * @api private - * @param {string} name - */ -exports.highlightTags = function(name) { - var code = document.getElementById('mocha').getElementsByTagName(name); - for (var i = 0, len = code.length; i < len; ++i) { - code[i].innerHTML = highlight(code[i].innerHTML); - } -}; - -/** - * If a value could have properties, and has none, this function is called, - * which returns a string representation of the empty value. - * - * Functions w/ no properties return `'[Function]'` - * Arrays w/ length === 0 return `'[]'` - * Objects w/ no properties return `'{}'` - * All else: return result of `value.toString()` - * - * @api private - * @param {*} value The value to inspect. - * @param {string} [type] The type of the value, if known. - * @returns {string} - */ -function emptyRepresentation(value, type) { - type = type || exports.type(value); - - switch (type) { - case 'function': - return '[Function]'; - case 'object': - return '{}'; - case 'array': - return '[]'; - default: - return value.toString(); - } -} - -/** - * Takes some variable and asks `Object.prototype.toString()` what it thinks it - * is. - * - * @api private - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString - * @param {*} value The value to test. - * @returns {string} - * @example - * type({}) // 'object' - * type([]) // 'array' - * type(1) // 'number' - * type(false) // 'boolean' - * type(Infinity) // 'number' - * type(null) // 'null' - * type(new Date()) // 'date' - * type(/foo/) // 'regexp' - * type('type') // 'string' - * type(global) // 'global' - */ -exports.type = function type(value) { - if (value === undefined) { - return 'undefined'; - } else if (value === null) { - return 'null'; - } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - return 'buffer'; - } - return Object.prototype.toString.call(value) - .replace(/^\[.+\s(.+?)\]$/, '$1') - .toLowerCase(); -}; - -/** - * Stringify `value`. Different behavior depending on type of value: - * - * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. - * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. - * - If `value` is an *empty* object, function, or array, return result of function - * {@link emptyRepresentation}. - * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of - * JSON.stringify(). - * - * @api private - * @see exports.type - * @param {*} value - * @return {string} - */ -exports.stringify = function(value) { - var type = exports.type(value); - - if (!~exports.indexOf(['object', 'array', 'function'], type)) { - if (type !== 'buffer') { - return jsonStringify(value); - } - var json = value.toJSON(); - // Based on the toJSON result - return jsonStringify(json.data && json.type ? json.data : json, 2) - .replace(/,(\n|$)/g, '$1'); - } - - for (var prop in value) { - if (Object.prototype.hasOwnProperty.call(value, prop)) { - return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); - } - } - - return emptyRepresentation(value, type); -}; - -/** - * like JSON.stringify but more sense. - * - * @api private - * @param {Object} object - * @param {number=} spaces - * @param {number=} depth - * @returns {*} - */ -function jsonStringify(object, spaces, depth) { - if (typeof spaces === 'undefined') { - // primitive types - return _stringify(object); - } - - depth = depth || 1; - var space = spaces * depth; - var str = isArray(object) ? '[' : '{'; - var end = isArray(object) ? ']' : '}'; - var length = object.length || exports.keys(object).length; - // `.repeat()` polyfill - function repeat(s, n) { - return new Array(n).join(s); - } - - function _stringify(val) { - switch (exports.type(val)) { - case 'null': - case 'undefined': - val = '[' + val + ']'; - break; - case 'array': - case 'object': - val = jsonStringify(val, spaces, depth + 1); - break; - case 'boolean': - case 'regexp': - case 'number': - val = val === 0 && (1 / val) === -Infinity // `-0` - ? '-0' - : val.toString(); - break; - case 'date': - var sDate = isNaN(val.getTime()) // Invalid date - ? val.toString() - : val.toISOString(); - val = '[Date: ' + sDate + ']'; - break; - case 'buffer': - var json = val.toJSON(); - // Based on the toJSON result - json = json.data && json.type ? json.data : json; - val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; - break; - default: - val = (val === '[Function]' || val === '[Circular]') - ? val - : JSON.stringify(val); // string - } - return val; - } - - for (var i in object) { - if (!object.hasOwnProperty(i)) { - continue; // not my business - } - --length; - str += '\n ' + repeat(' ', space) - + (isArray(object) ? '' : '"' + i + '": ') // key - + _stringify(object[i]) // value - + (length ? ',' : ''); // comma - } - - return str - // [], {} - + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); -} - -/** - * Test if a value is a buffer. - * - * @api private - * @param {*} value The value to test. - * @return {boolean} True if `value` is a buffer, otherwise false - */ -exports.isBuffer = function(value) { - return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); -}; - -/** - * Return a new Thing that has the keys in sorted order. Recursive. - * - * If the Thing... - * - has already been seen, return string `'[Circular]'` - * - is `undefined`, return string `'[undefined]'` - * - is `null`, return value `null` - * - is some other primitive, return the value - * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method - * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. - * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` - * - * @api private - * @see {@link exports.stringify} - * @param {*} value Thing to inspect. May or may not have properties. - * @param {Array} [stack=[]] Stack of seen values - * @return {(Object|Array|Function|string|undefined)} - */ -exports.canonicalize = function(value, stack) { - var canonicalizedObj; - /* eslint-disable no-unused-vars */ - var prop; - /* eslint-enable no-unused-vars */ - var type = exports.type(value); - function withStack(value, fn) { - stack.push(value); - fn(); - stack.pop(); - } - - stack = stack || []; - - if (exports.indexOf(stack, value) !== -1) { - return '[Circular]'; - } - - switch (type) { - case 'undefined': - case 'buffer': - case 'null': - canonicalizedObj = value; - break; - case 'array': - withStack(value, function() { - canonicalizedObj = exports.map(value, function(item) { - return exports.canonicalize(item, stack); - }); - }); - break; - case 'function': - /* eslint-disable guard-for-in */ - for (prop in value) { - canonicalizedObj = {}; - break; - } - /* eslint-enable guard-for-in */ - if (!canonicalizedObj) { - canonicalizedObj = emptyRepresentation(value, type); - break; - } - /* falls through */ - case 'object': - canonicalizedObj = canonicalizedObj || {}; - withStack(value, function() { - exports.forEach(exports.keys(value).sort(), function(key) { - canonicalizedObj[key] = exports.canonicalize(value[key], stack); - }); - }); - break; - case 'date': - case 'number': - case 'regexp': - case 'boolean': - canonicalizedObj = value; - break; - default: - canonicalizedObj = value + ''; - } - - return canonicalizedObj; -}; - -/** - * Lookup file names at the given `path`. - * - * @api public - * @param {string} path Base path to start searching from. - * @param {string[]} extensions File extensions to look for. - * @param {boolean} recursive Whether or not to recurse into subdirectories. - * @return {string[]} An array of paths. - */ -exports.lookupFiles = function lookupFiles(path, extensions, recursive) { - var files = []; - var re = new RegExp('\\.(' + extensions.join('|') + ')$'); - - if (!exists(path)) { - if (exists(path + '.js')) { - path += '.js'; - } else { - files = glob.sync(path); - if (!files.length) { - throw new Error("cannot resolve path (or pattern) '" + path + "'"); - } - return files; - } - } - - try { - var stat = statSync(path); - if (stat.isFile()) { - return path; - } - } catch (err) { - // ignore error - return; - } - - readdirSync(path).forEach(function(file) { - file = join(path, file); - try { - var stat = statSync(file); - if (stat.isDirectory()) { - if (recursive) { - files = files.concat(lookupFiles(file, extensions, recursive)); - } - return; - } - } catch (err) { - // ignore error - return; - } - if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { - return; - } - files.push(file); - }); - - return files; -}; - -/** - * Generate an undefined error with a message warning the user. - * - * @return {Error} - */ - -exports.undefinedError = function() { - return new Error('Caught undefined error, did you throw without specifying what?'); -}; - -/** - * Generate an undefined error if `err` is not defined. - * - * @param {Error} err - * @return {Error} - */ - -exports.getError = function(err) { - return err || exports.undefinedError(); -}; - -/** - * @summary - * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) - * @description - * When invoking this function you get a filter function that get the Error.stack as an input, - * and return a prettify output. - * (i.e: strip Mocha and internal node functions from stack trace). - * @returns {Function} - */ -exports.stackTraceFilter = function() { - // TODO: Replace with `process.browser` - var slash = '/'; - var is = typeof document === 'undefined' ? { node: true } : { browser: true }; - var cwd = is.node - ? process.cwd() + slash - : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); - - function isMochaInternal(line) { - return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) - || (~line.indexOf('components' + slash + 'mochajs' + slash)) - || (~line.indexOf('components' + slash + 'mocha' + slash)) - || (~line.indexOf(slash + 'mocha.js')); - } - - function isNodeInternal(line) { - return (~line.indexOf('(timers.js:')) - || (~line.indexOf('(events.js:')) - || (~line.indexOf('(node.js:')) - || (~line.indexOf('(module.js:')) - || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) - || false; - } - - return function(stack) { - stack = stack.split('\n'); - - stack = exports.reduce(stack, function(list, line) { - if (isMochaInternal(line)) { - return list; - } - - if (is.node && isNodeInternal(line)) { - return list; - } - - // Clean up cwd(absolute) - list.push(line.replace(cwd, '')); - return list; - }, []); - - return stack.join('\n'); - }; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.css b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.css deleted file mode 100644 index 3b82ae91..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.css +++ /dev/null @@ -1,305 +0,0 @@ -@charset "utf-8"; - -body { - margin:0; -} - -#mocha { - font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; - margin: 60px 50px; -} - -#mocha ul, -#mocha li { - margin: 0; - padding: 0; -} - -#mocha ul { - list-style: none; -} - -#mocha h1, -#mocha h2 { - margin: 0; -} - -#mocha h1 { - margin-top: 15px; - font-size: 1em; - font-weight: 200; -} - -#mocha h1 a { - text-decoration: none; - color: inherit; -} - -#mocha h1 a:hover { - text-decoration: underline; -} - -#mocha .suite .suite h1 { - margin-top: 0; - font-size: .8em; -} - -#mocha .hidden { - display: none; -} - -#mocha h2 { - font-size: 12px; - font-weight: normal; - cursor: pointer; -} - -#mocha .suite { - margin-left: 15px; -} - -#mocha .test { - margin-left: 15px; - overflow: hidden; -} - -#mocha .test.pending:hover h2::after { - content: '(pending)'; - font-family: arial, sans-serif; -} - -#mocha .test.pass.medium .duration { - background: #c09853; -} - -#mocha .test.pass.slow .duration { - background: #b94a48; -} - -#mocha .test.pass::before { - content: '✓'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #00d6b2; -} - -#mocha .test.pass .duration { - font-size: 9px; - margin-left: 5px; - padding: 2px 5px; - color: #fff; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; -} - -#mocha .test.pass.fast .duration { - display: none; -} - -#mocha .test.pending { - color: #0b97c4; -} - -#mocha .test.pending::before { - content: '◦'; - color: #0b97c4; -} - -#mocha .test.fail { - color: #c00; -} - -#mocha .test.fail pre { - color: black; -} - -#mocha .test.fail::before { - content: '✖'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #c00; -} - -#mocha .test pre.error { - color: #c00; - max-height: 300px; - overflow: auto; -} - -#mocha .test .html-error { - overflow: auto; - color: black; - line-height: 1.5; - display: block; - float: left; - clear: left; - font: 12px/1.5 monaco, monospace; - margin: 5px; - padding: 15px; - border: 1px solid #eee; - max-width: 85%; /*(1)*/ - max-width: calc(100% - 42px); /*(2)*/ - max-height: 300px; - word-wrap: break-word; - border-bottom-color: #ddd; - -webkit-border-radius: 3px; - -webkit-box-shadow: 0 1px 3px #eee; - -moz-border-radius: 3px; - -moz-box-shadow: 0 1px 3px #eee; - border-radius: 3px; -} - -#mocha .test .html-error pre.error { - border: none; - -webkit-border-radius: none; - -webkit-box-shadow: none; - -moz-border-radius: none; - -moz-box-shadow: none; - padding: 0; - margin: 0; - margin-top: 18px; - max-height: none; -} - -/** - * (1): approximate for browsers not supporting calc - * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border) - * ^^ seriously - */ -#mocha .test pre { - display: block; - float: left; - clear: left; - font: 12px/1.5 monaco, monospace; - margin: 5px; - padding: 15px; - border: 1px solid #eee; - max-width: 85%; /*(1)*/ - max-width: calc(100% - 42px); /*(2)*/ - word-wrap: break-word; - border-bottom-color: #ddd; - -webkit-border-radius: 3px; - -webkit-box-shadow: 0 1px 3px #eee; - -moz-border-radius: 3px; - -moz-box-shadow: 0 1px 3px #eee; - border-radius: 3px; -} - -#mocha .test h2 { - position: relative; -} - -#mocha .test a.replay { - position: absolute; - top: 3px; - right: 0; - text-decoration: none; - vertical-align: middle; - display: block; - width: 15px; - height: 15px; - line-height: 15px; - text-align: center; - background: #eee; - font-size: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - -webkit-transition: opacity 200ms; - -moz-transition: opacity 200ms; - transition: opacity 200ms; - opacity: 0.3; - color: #888; -} - -#mocha .test:hover a.replay { - opacity: 1; -} - -#mocha-report.pass .test.fail { - display: none; -} - -#mocha-report.fail .test.pass { - display: none; -} - -#mocha-report.pending .test.pass, -#mocha-report.pending .test.fail { - display: none; -} -#mocha-report.pending .test.pass.pending { - display: block; -} - -#mocha-error { - color: #c00; - font-size: 1.5em; - font-weight: 100; - letter-spacing: 1px; -} - -#mocha-stats { - position: fixed; - top: 15px; - right: 10px; - font-size: 12px; - margin: 0; - color: #888; - z-index: 1; -} - -#mocha-stats .progress { - float: right; - padding-top: 0; -} - -#mocha-stats em { - color: black; -} - -#mocha-stats a { - text-decoration: none; - color: inherit; -} - -#mocha-stats a:hover { - border-bottom: 1px solid #eee; -} - -#mocha-stats li { - display: inline-block; - margin: 0 5px; - list-style: none; - padding-top: 11px; -} - -#mocha-stats canvas { - width: 40px; - height: 40px; -} - -#mocha code .comment { color: #ddd; } -#mocha code .init { color: #2f6fad; } -#mocha code .string { color: #5890ad; } -#mocha code .keyword { color: #8a6343; } -#mocha code .number { color: #2f6fad; } - -@media screen and (max-device-width: 480px) { - #mocha { - margin: 60px 0px; - } - - #mocha #stats { - position: absolute; - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.js deleted file mode 100644 index 19561978..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/mocha.js +++ /dev/null @@ -1,12710 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { - suites.shift(); - } - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - return suite; - }; - - /** - * Exclusive test-case. - */ - - context.suite.only = function(title, fn) { - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; - - /** - * Describe a specification or test-case - * with the given `title` and callback `fn` - * acting as a thunk. - */ - - context.test = function(title, fn) { - var test = new Test(title, fn); - test.file = file; - suites[0].addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; - - context.test.skip = common.test.skip; - context.test.retries = common.test.retries; - }); -}; - -},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],13:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Suite = require('../suite'); -var Test = require('../test'); -var escapeRe = require('escape-string-regexp'); - -/** - * TDD-style interface: - * - * suite('Array', function() { - * suite('#indexOf()', function() { - * suiteSetup(function() { - * - * }); - * - * test('should return -1 when not present', function() { - * - * }); - * - * test('should return the index when present', function() { - * - * }); - * - * suiteTeardown(function() { - * - * }); - * }); - * }); - * - * @param {Suite} suite Root suite. - */ -module.exports = function(suite) { - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha) { - var common = require('./common')(suites, context); - - context.setup = common.beforeEach; - context.teardown = common.afterEach; - context.suiteSetup = common.before; - context.suiteTeardown = common.after; - context.run = mocha.options.delay && common.runWithSuite(suite); - - /** - * Describe a "suite" with the given `title` and callback `fn` containing - * nested suites and/or tests. - */ - context.suite = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.file = file; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - return suite; - }; - - /** - * Pending suite. - */ - context.suite.skip = function(title, fn) { - var suite = Suite.create(suites[0], title); - suite.pending = true; - suites.unshift(suite); - fn.call(suite); - suites.shift(); - }; - - /** - * Exclusive test-case. - */ - context.suite.only = function(title, fn) { - var suite = context.suite(title, fn); - mocha.grep(suite.fullTitle()); - }; - - /** - * Describe a specification or test-case with the given `title` and - * callback `fn` acting as a thunk. - */ - context.test = function(title, fn) { - var suite = suites[0]; - if (suite.pending) { - fn = null; - } - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - var test = context.test(title, fn); - var reString = '^' + escapeRe(test.fullTitle()) + '$'; - mocha.grep(new RegExp(reString)); - }; - - context.test.skip = common.test.skip; - context.test.retries = common.test.retries; - }); -}; - -},{"../suite":37,"../test":38,"./common":9,"escape-string-regexp":68}],14:[function(require,module,exports){ -(function (process,global,__dirname){ -/*! - * mocha - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var escapeRe = require('escape-string-regexp'); -var path = require('path'); -var reporters = require('./reporters'); -var utils = require('./utils'); - -/** - * Expose `Mocha`. - */ - -exports = module.exports = Mocha; - -/** - * To require local UIs and reporters when running in node. - */ - -if (!process.browser) { - var cwd = process.cwd(); - module.paths.push(cwd, path.join(cwd, 'node_modules')); -} - -/** - * Expose internals. - */ - -exports.utils = utils; -exports.interfaces = require('./interfaces'); -exports.reporters = reporters; -exports.Runnable = require('./runnable'); -exports.Context = require('./context'); -exports.Runner = require('./runner'); -exports.Suite = require('./suite'); -exports.Hook = require('./hook'); -exports.Test = require('./test'); - -/** - * Return image `name` path. - * - * @api private - * @param {string} name - * @return {string} - */ -function image(name) { - return path.join(__dirname, '../images', name + '.png'); -} - -/** - * Set up mocha with `options`. - * - * Options: - * - * - `ui` name "bdd", "tdd", "exports" etc - * - `reporter` reporter instance, defaults to `mocha.reporters.spec` - * - `globals` array of accepted globals - * - `timeout` timeout in milliseconds - * - `retries` number of times to retry failed tests - * - `bail` bail on the first test failure - * - `slow` milliseconds to wait before considering a test slow - * - `ignoreLeaks` ignore global leaks - * - `fullTrace` display the full stack-trace on failing - * - `grep` string or regexp to filter tests with - * - * @param {Object} options - * @api public - */ -function Mocha(options) { - options = options || {}; - this.files = []; - this.options = options; - if (options.grep) { - this.grep(new RegExp(options.grep)); - } - if (options.fgrep) { - this.grep(options.fgrep); - } - this.suite = new exports.Suite('', new exports.Context()); - this.ui(options.ui); - this.bail(options.bail); - this.reporter(options.reporter, options.reporterOptions); - if (typeof options.timeout !== 'undefined' && options.timeout !== null) { - this.timeout(options.timeout); - } - if (typeof options.retries !== 'undefined' && options.retries !== null) { - this.retries(options.retries); - } - this.useColors(options.useColors); - if (options.enableTimeouts !== null) { - this.enableTimeouts(options.enableTimeouts); - } - if (options.slow) { - this.slow(options.slow); - } - - this.suite.on('pre-require', function(context) { - exports.afterEach = context.afterEach || context.teardown; - exports.after = context.after || context.suiteTeardown; - exports.beforeEach = context.beforeEach || context.setup; - exports.before = context.before || context.suiteSetup; - exports.describe = context.describe || context.suite; - exports.it = context.it || context.test; - exports.setup = context.setup || context.beforeEach; - exports.suiteSetup = context.suiteSetup || context.before; - exports.suiteTeardown = context.suiteTeardown || context.after; - exports.suite = context.suite || context.describe; - exports.teardown = context.teardown || context.afterEach; - exports.test = context.test || context.it; - exports.run = context.run; - }); -} - -/** - * Enable or disable bailing on the first failure. - * - * @api public - * @param {boolean} [bail] - */ -Mocha.prototype.bail = function(bail) { - if (!arguments.length) { - bail = true; - } - this.suite.bail(bail); - return this; -}; - -/** - * Add test `file`. - * - * @api public - * @param {string} file - */ -Mocha.prototype.addFile = function(file) { - this.files.push(file); - return this; -}; - -/** - * Set reporter to `reporter`, defaults to "spec". - * - * @param {String|Function} reporter name or constructor - * @param {Object} reporterOptions optional options - * @api public - * @param {string|Function} reporter name or constructor - * @param {Object} reporterOptions optional options - */ -Mocha.prototype.reporter = function(reporter, reporterOptions) { - if (typeof reporter === 'function') { - this._reporter = reporter; - } else { - reporter = reporter || 'spec'; - var _reporter; - // Try to load a built-in reporter. - if (reporters[reporter]) { - _reporter = reporters[reporter]; - } - // Try to load reporters from process.cwd() and node_modules - if (!_reporter) { - try { - _reporter = require(reporter); - } catch (err) { - err.message.indexOf('Cannot find module') !== -1 - ? console.warn('"' + reporter + '" reporter not found') - : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); - } - } - if (!_reporter && reporter === 'teamcity') { - console.warn('The Teamcity reporter was moved to a package named ' - + 'mocha-teamcity-reporter ' - + '(https://npmjs.org/package/mocha-teamcity-reporter).'); - } - if (!_reporter) { - throw new Error('invalid reporter "' + reporter + '"'); - } - this._reporter = _reporter; - } - this.options.reporterOptions = reporterOptions; - return this; -}; - -/** - * Set test UI `name`, defaults to "bdd". - * - * @api public - * @param {string} bdd - */ -Mocha.prototype.ui = function(name) { - name = name || 'bdd'; - this._ui = exports.interfaces[name]; - if (!this._ui) { - try { - this._ui = require(name); - } catch (err) { - throw new Error('invalid interface "' + name + '"'); - } - } - this._ui = this._ui(this.suite); - return this; -}; - -/** - * Load registered files. - * - * @api private - */ -Mocha.prototype.loadFiles = function(fn) { - var self = this; - var suite = this.suite; - this.files.forEach(function(file) { - file = path.resolve(file); - suite.emit('pre-require', global, file, self); - suite.emit('require', require(file), file, self); - suite.emit('post-require', global, file, self); - }); - fn && fn(); -}; - -/** - * Enable growl support. - * - * @api private - */ -Mocha.prototype._growl = function(runner, reporter) { - var notify = require('growl'); - - runner.on('end', function() { - var stats = reporter.stats; - if (stats.failures) { - var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); - } else { - notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { - name: 'mocha', - title: 'Passed', - image: image('ok') - }); - } - }); -}; - -/** - * Add regexp to grep, if `re` is a string it is escaped. - * - * @param {RegExp|String} re - * @return {Mocha} - * @api public - * @param {RegExp|string} re - * @return {Mocha} - */ -Mocha.prototype.grep = function(re) { - this.options.grep = typeof re === 'string' ? new RegExp(escapeRe(re)) : re; - return this; -}; - -/** - * Invert `.grep()` matches. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.invert = function() { - this.options.invert = true; - return this; -}; - -/** - * Ignore global leaks. - * - * @param {Boolean} ignore - * @return {Mocha} - * @api public - * @param {boolean} ignore - * @return {Mocha} - */ -Mocha.prototype.ignoreLeaks = function(ignore) { - this.options.ignoreLeaks = Boolean(ignore); - return this; -}; - -/** - * Enable global leak checking. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.checkLeaks = function() { - this.options.ignoreLeaks = false; - return this; -}; - -/** - * Display long stack-trace on failing - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.fullTrace = function() { - this.options.fullStackTrace = true; - return this; -}; - -/** - * Enable growl support. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.growl = function() { - this.options.growl = true; - return this; -}; - -/** - * Ignore `globals` array or string. - * - * @param {Array|String} globals - * @return {Mocha} - * @api public - * @param {Array|string} globals - * @return {Mocha} - */ -Mocha.prototype.globals = function(globals) { - this.options.globals = (this.options.globals || []).concat(globals); - return this; -}; - -/** - * Emit color output. - * - * @param {Boolean} colors - * @return {Mocha} - * @api public - * @param {boolean} colors - * @return {Mocha} - */ -Mocha.prototype.useColors = function(colors) { - if (colors !== undefined) { - this.options.useColors = colors; - } - return this; -}; - -/** - * Use inline diffs rather than +/-. - * - * @param {Boolean} inlineDiffs - * @return {Mocha} - * @api public - * @param {boolean} inlineDiffs - * @return {Mocha} - */ -Mocha.prototype.useInlineDiffs = function(inlineDiffs) { - this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; - return this; -}; - -/** - * Set the timeout in milliseconds. - * - * @param {Number} timeout - * @return {Mocha} - * @api public - * @param {number} timeout - * @return {Mocha} - */ -Mocha.prototype.timeout = function(timeout) { - this.suite.timeout(timeout); - return this; -}; - -/** - * Set the number of times to retry failed tests. - * - * @param {Number} retry times - * @return {Mocha} - * @api public - */ -Mocha.prototype.retries = function(n) { - this.suite.retries(n); - return this; -}; - -/** - * Set slowness threshold in milliseconds. - * - * @param {Number} slow - * @return {Mocha} - * @api public - * @param {number} slow - * @return {Mocha} - */ -Mocha.prototype.slow = function(slow) { - this.suite.slow(slow); - return this; -}; - -/** - * Enable timeouts. - * - * @param {Boolean} enabled - * @return {Mocha} - * @api public - * @param {boolean} enabled - * @return {Mocha} - */ -Mocha.prototype.enableTimeouts = function(enabled) { - this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); - return this; -}; - -/** - * Makes all tests async (accepting a callback) - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.asyncOnly = function() { - this.options.asyncOnly = true; - return this; -}; - -/** - * Disable syntax highlighting (in browser). - * - * @api public - */ -Mocha.prototype.noHighlighting = function() { - this.options.noHighlighting = true; - return this; -}; - -/** - * Enable uncaught errors to propagate (in browser). - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.allowUncaught = function() { - this.options.allowUncaught = true; - return this; -}; - -/** - * Delay root suite execution. - * @returns {Mocha} - */ -Mocha.prototype.delay = function delay() { - this.options.delay = true; - return this; -}; - -/** - * Run tests and invoke `fn()` when complete. - * - * @api public - * @param {Function} fn - * @return {Runner} - */ -Mocha.prototype.run = function(fn) { - if (this.files.length) { - this.loadFiles(); - } - var suite = this.suite; - var options = this.options; - options.files = this.files; - var runner = new exports.Runner(suite, options.delay); - var reporter = new this._reporter(runner, options); - runner.ignoreLeaks = options.ignoreLeaks !== false; - runner.fullStackTrace = options.fullStackTrace; - runner.asyncOnly = options.asyncOnly; - runner.allowUncaught = options.allowUncaught; - if (options.grep) { - runner.grep(options.grep, options.invert); - } - if (options.globals) { - runner.globals(options.globals); - } - if (options.growl) { - this._growl(runner, reporter); - } - if (options.useColors !== undefined) { - exports.reporters.Base.useColors = options.useColors; - } - exports.reporters.Base.inlineDiffs = options.useInlineDiffs; - - function done(failures) { - if (reporter.done) { - reporter.done(failures, fn); - } else { - fn && fn(failures); - } - } - - return runner.run(done); -}; - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},"/lib") -},{"./context":6,"./hook":7,"./interfaces":11,"./reporters":22,"./runnable":35,"./runner":36,"./suite":37,"./test":38,"./utils":39,"_process":51,"escape-string-regexp":68,"growl":69,"path":41}],15:[function(require,module,exports){ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @api public - * @param {string|number} val - * @param {Object} options - * @return {string|number} - */ -module.exports = function(val, options) { - options = options || {}; - if (typeof val === 'string') { - return parse(val); - } - // https://github.com/mochajs/mocha/pull/1035 - return options['long'] ? longFormat(val) : shortFormat(val); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @api private - * @param {string} str - * @return {number} - */ -function parse(str) { - var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - default: - // No default case - } -} - -/** - * Short format for `ms`. - * - * @api private - * @param {number} ms - * @return {string} - */ -function shortFormat(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @api private - * @param {number} ms - * @return {string} - */ -function longFormat(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} - -/** - * Pluralization helper. - * - * @api private - * @param {number} ms - * @param {number} n - * @param {string} name - */ -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} - -},{}],16:[function(require,module,exports){ - -/** - * Expose `Pending`. - */ - -module.exports = Pending; - -/** - * Initialize a new `Pending` error with the given message. - * - * @param {string} message - */ -function Pending(message) { - this.message = message; -} - -},{}],17:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var diff = require('diff'); -var ms = require('../ms'); -var utils = require('../utils'); -var supportsColor = process.browser ? null : require('supports-color'); - -/** - * Expose `Base`. - */ - -exports = module.exports = Base; - -/** - * Save timer references to avoid Sinon interfering. - * See: https://github.com/mochajs/mocha/issues/237 - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Check if both stdio streams are associated with a tty. - */ - -var isatty = tty.isatty(1) && tty.isatty(2); - -/** - * Enable coloring by default, except in the browser interface. - */ - -exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined)); - -/** - * Inline diffs instead of +/- - */ - -exports.inlineDiffs = false; - -/** - * Default color map. - */ - -exports.colors = { - pass: 90, - fail: 31, - 'bright pass': 92, - 'bright fail': 91, - 'bright yellow': 93, - pending: 36, - suite: 0, - 'error title': 0, - 'error message': 31, - 'error stack': 90, - checkmark: 32, - fast: 90, - medium: 33, - slow: 31, - green: 32, - light: 90, - 'diff gutter': 90, - 'diff added': 32, - 'diff removed': 31 -}; - -/** - * Default symbol map. - */ - -exports.symbols = { - ok: '✓', - err: '✖', - dot: '․' -}; - -// With node.js on Windows: use symbols available in terminal default fonts -if (process.platform === 'win32') { - exports.symbols.ok = '\u221A'; - exports.symbols.err = '\u00D7'; - exports.symbols.dot = '.'; -} - -/** - * Color `str` with the given `type`, - * allowing colors to be disabled, - * as well as user-defined color - * schemes. - * - * @param {string} type - * @param {string} str - * @return {string} - * @api private - */ -var color = exports.color = function(type, str) { - if (!exports.useColors) { - return String(str); - } - return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; -}; - -/** - * Expose term window size, with some defaults for when stderr is not a tty. - */ - -exports.window = { - width: 75 -}; - -if (isatty) { - exports.window.width = process.stdout.getWindowSize - ? process.stdout.getWindowSize(1)[0] - : tty.getWindowSize()[1]; -} - -/** - * Expose some basic cursor interactions that are common among reporters. - */ - -exports.cursor = { - hide: function() { - isatty && process.stdout.write('\u001b[?25l'); - }, - - show: function() { - isatty && process.stdout.write('\u001b[?25h'); - }, - - deleteLine: function() { - isatty && process.stdout.write('\u001b[2K'); - }, - - beginningOfLine: function() { - isatty && process.stdout.write('\u001b[0G'); - }, - - CR: function() { - if (isatty) { - exports.cursor.deleteLine(); - exports.cursor.beginningOfLine(); - } else { - process.stdout.write('\r'); - } - } -}; - -/** - * Outut the given `failures` as a list. - * - * @param {Array} failures - * @api public - */ - -exports.list = function(failures) { - console.log(); - failures.forEach(function(test, i) { - // format - var fmt = color('error title', ' %s) %s:\n') - + color('error message', ' %s') - + color('error stack', '\n%s\n'); - - // msg - var msg; - var err = test.err; - var message; - if (err.message) { - message = err.message; - } else if (typeof err.inspect === 'function') { - message = err.inspect() + ''; - } else { - message = ''; - } - var stack = err.stack || message; - var index = stack.indexOf(message); - var actual = err.actual; - var expected = err.expected; - var escape = true; - - if (index === -1) { - msg = message; - } else { - index += message.length; - msg = stack.slice(0, index); - // remove msg from stack - stack = stack.slice(index + 1); - } - - // uncaught - if (err.uncaught) { - msg = 'Uncaught ' + msg; - } - // explicitly show diff - if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) { - escape = false; - if (!(utils.isString(actual) && utils.isString(expected))) { - err.actual = actual = utils.stringify(actual); - err.expected = expected = utils.stringify(expected); - } - - fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); - var match = message.match(/^([^:]+): expected/); - msg = '\n ' + color('error message', match ? match[1] : msg); - - if (exports.inlineDiffs) { - msg += inlineDiff(err, escape); - } else { - msg += unifiedDiff(err, escape); - } - } - - // indent stack trace - stack = stack.replace(/^/gm, ' '); - - console.log(fmt, (i + 1), test.fullTitle(), msg, stack); - }); -}; - -/** - * Initialize a new `Base` reporter. - * - * All other reporters generally - * inherit from this reporter, providing - * stats such as test duration, number - * of tests passed / failed etc. - * - * @param {Runner} runner - * @api public - */ - -function Base(runner) { - var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; - var failures = this.failures = []; - - if (!runner) { - return; - } - this.runner = runner; - - runner.stats = stats; - - runner.on('start', function() { - stats.start = new Date(); - }); - - runner.on('suite', function(suite) { - stats.suites = stats.suites || 0; - suite.root || stats.suites++; - }); - - runner.on('test end', function() { - stats.tests = stats.tests || 0; - stats.tests++; - }); - - runner.on('pass', function(test) { - stats.passes = stats.passes || 0; - - if (test.duration > test.slow()) { - test.speed = 'slow'; - } else if (test.duration > test.slow() / 2) { - test.speed = 'medium'; - } else { - test.speed = 'fast'; - } - - stats.passes++; - }); - - runner.on('fail', function(test, err) { - stats.failures = stats.failures || 0; - stats.failures++; - test.err = err; - failures.push(test); - }); - - runner.on('end', function() { - stats.end = new Date(); - stats.duration = new Date() - stats.start; - }); - - runner.on('pending', function() { - stats.pending++; - }); -} - -/** - * Output common epilogue used by many of - * the bundled reporters. - * - * @api public - */ -Base.prototype.epilogue = function() { - var stats = this.stats; - var fmt; - - console.log(); - - // passes - fmt = color('bright pass', ' ') - + color('green', ' %d passing') - + color('light', ' (%s)'); - - console.log(fmt, - stats.passes || 0, - ms(stats.duration)); - - // pending - if (stats.pending) { - fmt = color('pending', ' ') - + color('pending', ' %d pending'); - - console.log(fmt, stats.pending); - } - - // failures - if (stats.failures) { - fmt = color('fail', ' %d failing'); - - console.log(fmt, stats.failures); - - Base.list(this.failures); - console.log(); - } - - console.log(); -}; - -/** - * Pad the given `str` to `len`. - * - * @api private - * @param {string} str - * @param {string} len - * @return {string} - */ -function pad(str, len) { - str = String(str); - return Array(len - str.length + 1).join(' ') + str; -} - -/** - * Returns an inline diff between 2 strings with coloured ANSI output - * - * @api private - * @param {Error} err with actual/expected - * @param {boolean} escape - * @return {string} Diff - */ -function inlineDiff(err, escape) { - var msg = errorDiff(err, 'WordsWithSpace', escape); - - // linenos - var lines = msg.split('\n'); - if (lines.length > 4) { - var width = String(lines.length).length; - msg = lines.map(function(str, i) { - return pad(++i, width) + ' |' + ' ' + str; - }).join('\n'); - } - - // legend - msg = '\n' - + color('diff removed', 'actual') - + ' ' - + color('diff added', 'expected') - + '\n\n' - + msg - + '\n'; - - // indent - msg = msg.replace(/^/gm, ' '); - return msg; -} - -/** - * Returns a unified diff between two strings. - * - * @api private - * @param {Error} err with actual/expected - * @param {boolean} escape - * @return {string} The diff. - */ -function unifiedDiff(err, escape) { - var indent = ' '; - function cleanUp(line) { - if (escape) { - line = escapeInvisibles(line); - } - if (line[0] === '+') { - return indent + colorLines('diff added', line); - } - if (line[0] === '-') { - return indent + colorLines('diff removed', line); - } - if (line.match(/\@\@/)) { - return null; - } - if (line.match(/\\ No newline/)) { - return null; - } - return indent + line; - } - function notBlank(line) { - return typeof line !== 'undefined' && line !== null; - } - var msg = diff.createPatch('string', err.actual, err.expected); - var lines = msg.split('\n').splice(4); - return '\n ' - + colorLines('diff added', '+ expected') + ' ' - + colorLines('diff removed', '- actual') - + '\n\n' - + lines.map(cleanUp).filter(notBlank).join('\n'); -} - -/** - * Return a character diff for `err`. - * - * @api private - * @param {Error} err - * @param {string} type - * @param {boolean} escape - * @return {string} - */ -function errorDiff(err, type, escape) { - var actual = escape ? escapeInvisibles(err.actual) : err.actual; - var expected = escape ? escapeInvisibles(err.expected) : err.expected; - return diff['diff' + type](actual, expected).map(function(str) { - if (str.added) { - return colorLines('diff added', str.value); - } - if (str.removed) { - return colorLines('diff removed', str.value); - } - return str.value; - }).join(''); -} - -/** - * Returns a string with all invisible characters in plain text - * - * @api private - * @param {string} line - * @return {string} - */ -function escapeInvisibles(line) { - return line.replace(/\t/g, '') - .replace(/\r/g, '') - .replace(/\n/g, '\n'); -} - -/** - * Color lines for `str`, using the color `name`. - * - * @api private - * @param {string} name - * @param {string} str - * @return {string} - */ -function colorLines(name, str) { - return str.split('\n').map(function(str) { - return color(name, str); - }).join('\n'); -} - -/** - * Object#toString reference. - */ -var objToString = Object.prototype.toString; - -/** - * Check that a / b have the same type. - * - * @api private - * @param {Object} a - * @param {Object} b - * @return {boolean} - */ -function sameType(a, b) { - return objToString.call(a) === objToString.call(b); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../ms":15,"../utils":39,"_process":51,"diff":67,"supports-color":41,"tty":5}],18:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); - -/** - * Expose `Doc`. - */ - -exports = module.exports = Doc; - -/** - * Initialize a new `Doc` reporter. - * - * @param {Runner} runner - * @api public - */ -function Doc(runner) { - Base.call(this, runner); - - var indents = 2; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('suite', function(suite) { - if (suite.root) { - return; - } - ++indents; - console.log('%s
    ', indent()); - ++indents; - console.log('%s

    %s

    ', indent(), utils.escape(suite.title)); - console.log('%s
    ', indent()); - }); - - runner.on('suite end', function(suite) { - if (suite.root) { - return; - } - console.log('%s
    ', indent()); - --indents; - console.log('%s
    ', indent()); - --indents; - }); - - runner.on('pass', function(test) { - console.log('%s
    %s
    ', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.body)); - console.log('%s
    %s
    ', indent(), code); - }); - - runner.on('fail', function(test, err) { - console.log('%s
    %s
    ', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.fn.body)); - console.log('%s
    %s
    ', indent(), code); - console.log('%s
    %s
    ', indent(), utils.escape(err)); - }); -} - -},{"../utils":39,"./base":17}],19:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; - -/** - * Expose `Dot`. - */ - -exports = module.exports = Dot; - -/** - * Initialize a new `Dot` matrix test reporter. - * - * @api public - * @param {Runner} runner - */ -function Dot(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var n = -1; - - runner.on('start', function() { - process.stdout.write('\n'); - }); - - runner.on('pending', function() { - if (++n % width === 0) { - process.stdout.write('\n '); - } - process.stdout.write(color('pending', Base.symbols.dot)); - }); - - runner.on('pass', function(test) { - if (++n % width === 0) { - process.stdout.write('\n '); - } - if (test.speed === 'slow') { - process.stdout.write(color('bright yellow', Base.symbols.dot)); - } else { - process.stdout.write(color(test.speed, Base.symbols.dot)); - } - }); - - runner.on('fail', function() { - if (++n % width === 0) { - process.stdout.write('\n '); - } - process.stdout.write(color('fail', Base.symbols.dot)); - }); - - runner.on('end', function() { - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Dot, Base); - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],20:[function(require,module,exports){ -(function (process,__dirname){ -/** - * Module dependencies. - */ - -var JSONCov = require('./json-cov'); -var readFileSync = require('fs').readFileSync; -var join = require('path').join; - -/** - * Expose `HTMLCov`. - */ - -exports = module.exports = HTMLCov; - -/** - * Initialize a new `JsCoverage` reporter. - * - * @api public - * @param {Runner} runner - */ -function HTMLCov(runner) { - var jade = require('jade'); - var file = join(__dirname, '/templates/coverage.jade'); - var str = readFileSync(file, 'utf8'); - var fn = jade.compile(str, { filename: file }); - var self = this; - - JSONCov.call(this, runner, false); - - runner.on('end', function() { - process.stdout.write(fn({ - cov: self.cov, - coverageClass: coverageClass - })); - }); -} - -/** - * Return coverage class for a given coverage percentage. - * - * @api private - * @param {number} coveragePctg - * @return {string} - */ -function coverageClass(coveragePctg) { - if (coveragePctg >= 75) { - return 'high'; - } - if (coveragePctg >= 50) { - return 'medium'; - } - if (coveragePctg >= 25) { - return 'low'; - } - return 'terrible'; -} - -}).call(this,require('_process'),"/lib/reporters") -},{"./json-cov":23,"_process":51,"fs":41,"jade":41,"path":41}],21:[function(require,module,exports){ -(function (global){ -/* eslint-env browser */ - -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); -var Progress = require('../browser/progress'); -var escapeRe = require('escape-string-regexp'); -var escape = utils.escape; - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Expose `HTML`. - */ - -exports = module.exports = HTML; - -/** - * Stats template. - */ - -var statsTemplate = ''; - -/** - * Initialize a new `HTML` reporter. - * - * @api public - * @param {Runner} runner - */ -function HTML(runner) { - Base.call(this, runner); - - var self = this; - var stats = this.stats; - var stat = fragment(statsTemplate); - var items = stat.getElementsByTagName('li'); - var passes = items[1].getElementsByTagName('em')[0]; - var passesLink = items[1].getElementsByTagName('a')[0]; - var failures = items[2].getElementsByTagName('em')[0]; - var failuresLink = items[2].getElementsByTagName('a')[0]; - var duration = items[3].getElementsByTagName('em')[0]; - var canvas = stat.getElementsByTagName('canvas')[0]; - var report = fragment('
      '); - var stack = [report]; - var progress; - var ctx; - var root = document.getElementById('mocha'); - - if (canvas.getContext) { - var ratio = window.devicePixelRatio || 1; - canvas.style.width = canvas.width; - canvas.style.height = canvas.height; - canvas.width *= ratio; - canvas.height *= ratio; - ctx = canvas.getContext('2d'); - ctx.scale(ratio, ratio); - progress = new Progress(); - } - - if (!root) { - return error('#mocha div missing, add it to your document'); - } - - // pass toggle - on(passesLink, 'click', function() { - unhide(); - var name = (/pass/).test(report.className) ? '' : ' pass'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) { - hideSuitesWithout('test pass'); - } - }); - - // failure toggle - on(failuresLink, 'click', function() { - unhide(); - var name = (/fail/).test(report.className) ? '' : ' fail'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) { - hideSuitesWithout('test fail'); - } - }); - - root.appendChild(stat); - root.appendChild(report); - - if (progress) { - progress.size(40); - } - - runner.on('suite', function(suite) { - if (suite.root) { - return; - } - - // suite - var url = self.suiteURL(suite); - var el = fragment('
    • %s

    • ', url, escape(suite.title)); - - // container - stack[0].appendChild(el); - stack.unshift(document.createElement('ul')); - el.appendChild(stack[0]); - }); - - runner.on('suite end', function(suite) { - if (suite.root) { - return; - } - stack.shift(); - }); - - runner.on('fail', function(test) { - // For type = 'test' its possible that the test failed due to multiple - // done() calls. So report the issue here. - if (test.type === 'hook' - || test.type === 'test') { - runner.emit('test end', test); - } - }); - - runner.on('test end', function(test) { - // TODO: add to stats - var percent = stats.tests / this.total * 100 | 0; - if (progress) { - progress.update(percent).draw(ctx); - } - - // update stats - var ms = new Date() - stats.start; - text(passes, stats.passes); - text(failures, stats.failures); - text(duration, (ms / 1000).toFixed(2)); - - // test - var el; - if (test.state === 'passed') { - var url = self.testURL(test); - el = fragment('
    • %e%ems

    • ', test.speed, test.title, test.duration, url); - } else if (test.pending) { - el = fragment('
    • %e

    • ', test.title); - } else { - el = fragment('
    • %e

    • ', test.title, self.testURL(test)); - var stackString; // Note: Includes leading newline - var message = test.err.toString(); - - // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we - // check for the result of the stringifying. - if (message === '[object Error]') { - message = test.err.message; - } - - if (test.err.stack) { - var indexOfMessage = test.err.stack.indexOf(test.err.message); - if (indexOfMessage === -1) { - stackString = test.err.stack; - } else { - stackString = test.err.stack.substr(test.err.message.length + indexOfMessage); - } - } else if (test.err.sourceURL && test.err.line !== undefined) { - // Safari doesn't give you a stack. Let's at least provide a source line. - stackString = '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; - } - - stackString = stackString || ''; - - if (test.err.htmlMessage && stackString) { - el.appendChild(fragment('
      %s\n
      %e
      ', test.err.htmlMessage, stackString)); - } else if (test.err.htmlMessage) { - el.appendChild(fragment('
      %s
      ', test.err.htmlMessage)); - } else { - el.appendChild(fragment('
      %e%e
      ', message, stackString)); - } - } - - // toggle code - // TODO: defer - if (!test.pending) { - var h2 = el.getElementsByTagName('h2')[0]; - - on(h2, 'click', function() { - pre.style.display = pre.style.display === 'none' ? 'block' : 'none'; - }); - - var pre = fragment('
      %e
      ', utils.clean(test.body)); - el.appendChild(pre); - pre.style.display = 'none'; - } - - // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. - if (stack[0]) { - stack[0].appendChild(el); - } - }); -} - -/** - * Makes a URL, preserving querystring ("search") parameters. - * - * @param {string} s - * @return {string} A new URL. - */ -function makeUrl(s) { - var search = window.location.search; - - // Remove previous grep query parameter if present - if (search) { - search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?'); - } - - return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s)); -} - -/** - * Provide suite URL. - * - * @param {Object} [suite] - */ -HTML.prototype.suiteURL = function(suite) { - return makeUrl(suite.fullTitle()); -}; - -/** - * Provide test URL. - * - * @param {Object} [test] - */ -HTML.prototype.testURL = function(test) { - return makeUrl(test.fullTitle()); -}; - -/** - * Display error `msg`. - * - * @param {string} msg - */ -function error(msg) { - document.body.appendChild(fragment('
      %s
      ', msg)); -} - -/** - * Return a DOM fragment from `html`. - * - * @param {string} html - */ -function fragment(html) { - var args = arguments; - var div = document.createElement('div'); - var i = 1; - - div.innerHTML = html.replace(/%([se])/g, function(_, type) { - switch (type) { - case 's': return String(args[i++]); - case 'e': return escape(args[i++]); - // no default - } - }); - - return div.firstChild; -} - -/** - * Check for suites that do not have elements - * with `classname`, and hide them. - * - * @param {text} classname - */ -function hideSuitesWithout(classname) { - var suites = document.getElementsByClassName('suite'); - for (var i = 0; i < suites.length; i++) { - var els = suites[i].getElementsByClassName(classname); - if (!els.length) { - suites[i].className += ' hidden'; - } - } -} - -/** - * Unhide .hidden suites. - */ -function unhide() { - var els = document.getElementsByClassName('suite hidden'); - for (var i = 0; i < els.length; ++i) { - els[i].className = els[i].className.replace('suite hidden', 'suite'); - } -} - -/** - * Set an element's text contents. - * - * @param {HTMLElement} el - * @param {string} contents - */ -function text(el, contents) { - if (el.textContent) { - el.textContent = contents; - } else { - el.innerText = contents; - } -} - -/** - * Listen on `event` with callback `fn`. - */ -function on(el, event, fn) { - if (el.addEventListener) { - el.addEventListener(event, fn, false); - } else { - el.attachEvent('on' + event, fn); - } -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../browser/progress":4,"../utils":39,"./base":17,"escape-string-regexp":68}],22:[function(require,module,exports){ -// Alias exports to a their normalized format Mocha#reporter to prevent a need -// for dynamic (try/catch) requires, which Browserify doesn't handle. -exports.Base = exports.base = require('./base'); -exports.Dot = exports.dot = require('./dot'); -exports.Doc = exports.doc = require('./doc'); -exports.TAP = exports.tap = require('./tap'); -exports.JSON = exports.json = require('./json'); -exports.HTML = exports.html = require('./html'); -exports.List = exports.list = require('./list'); -exports.Min = exports.min = require('./min'); -exports.Spec = exports.spec = require('./spec'); -exports.Nyan = exports.nyan = require('./nyan'); -exports.XUnit = exports.xunit = require('./xunit'); -exports.Markdown = exports.markdown = require('./markdown'); -exports.Progress = exports.progress = require('./progress'); -exports.Landing = exports.landing = require('./landing'); -exports.JSONCov = exports['json-cov'] = require('./json-cov'); -exports.HTMLCov = exports['html-cov'] = require('./html-cov'); -exports.JSONStream = exports['json-stream'] = require('./json-stream'); - -},{"./base":17,"./doc":18,"./dot":19,"./html":21,"./html-cov":20,"./json":25,"./json-cov":23,"./json-stream":24,"./landing":26,"./list":27,"./markdown":28,"./min":29,"./nyan":30,"./progress":31,"./spec":32,"./tap":33,"./xunit":34}],23:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `JSONCov`. - */ - -exports = module.exports = JSONCov; - -/** - * Initialize a new `JsCoverage` reporter. - * - * @api public - * @param {Runner} runner - * @param {boolean} output - */ -function JSONCov(runner, output) { - Base.call(this, runner); - - output = arguments.length === 1 || output; - var self = this; - var tests = []; - var failures = []; - var passes = []; - - runner.on('test end', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - passes.push(test); - }); - - runner.on('fail', function(test) { - failures.push(test); - }); - - runner.on('end', function() { - var cov = global._$jscoverage || {}; - var result = self.cov = map(cov); - result.stats = self.stats; - result.tests = tests.map(clean); - result.failures = failures.map(clean); - result.passes = passes.map(clean); - if (!output) { - return; - } - process.stdout.write(JSON.stringify(result, null, 2)); - }); -} - -/** - * Map jscoverage data to a JSON structure - * suitable for reporting. - * - * @api private - * @param {Object} cov - * @return {Object} - */ - -function map(cov) { - var ret = { - instrumentation: 'node-jscoverage', - sloc: 0, - hits: 0, - misses: 0, - coverage: 0, - files: [] - }; - - for (var filename in cov) { - if (Object.prototype.hasOwnProperty.call(cov, filename)) { - var data = coverage(filename, cov[filename]); - ret.files.push(data); - ret.hits += data.hits; - ret.misses += data.misses; - ret.sloc += data.sloc; - } - } - - ret.files.sort(function(a, b) { - return a.filename.localeCompare(b.filename); - }); - - if (ret.sloc > 0) { - ret.coverage = (ret.hits / ret.sloc) * 100; - } - - return ret; -} - -/** - * Map jscoverage data for a single source file - * to a JSON structure suitable for reporting. - * - * @api private - * @param {string} filename name of the source file - * @param {Object} data jscoverage coverage data - * @return {Object} - */ -function coverage(filename, data) { - var ret = { - filename: filename, - coverage: 0, - hits: 0, - misses: 0, - sloc: 0, - source: {} - }; - - data.source.forEach(function(line, num) { - num++; - - if (data[num] === 0) { - ret.misses++; - ret.sloc++; - } else if (data[num] !== undefined) { - ret.hits++; - ret.sloc++; - } - - ret.source[num] = { - source: line, - coverage: data[num] === undefined ? '' : data[num] - }; - }); - - ret.coverage = ret.hits / ret.sloc * 100; - - return ret; -} - -/** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @api private - * @param {Object} test - * @return {Object} - */ -function clean(test) { - return { - duration: test.duration, - currentRetry: test.currentRetry(), - fullTitle: test.fullTitle(), - title: test.title - }; -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./base":17,"_process":51}],24:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `List`. - */ - -exports = module.exports = List; - -/** - * Initialize a new `List` test reporter. - * - * @api public - * @param {Runner} runner - */ -function List(runner) { - Base.call(this, runner); - - var self = this; - var total = runner.total; - - runner.on('start', function() { - console.log(JSON.stringify(['start', { total: total }])); - }); - - runner.on('pass', function(test) { - console.log(JSON.stringify(['pass', clean(test)])); - }); - - runner.on('fail', function(test, err) { - test = clean(test); - test.err = err.message; - test.stack = err.stack || null; - console.log(JSON.stringify(['fail', test])); - }); - - runner.on('end', function() { - process.stdout.write(JSON.stringify(['end', self.stats])); - }); -} - -/** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @api private - * @param {Object} test - * @return {Object} - */ -function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - currentRetry: test.currentRetry() - }; -} - -}).call(this,require('_process')) -},{"./base":17,"_process":51}],25:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `JSON`. - */ - -exports = module.exports = JSONReporter; - -/** - * Initialize a new `JSON` reporter. - * - * @api public - * @param {Runner} runner - */ -function JSONReporter(runner) { - Base.call(this, runner); - - var self = this; - var tests = []; - var pending = []; - var failures = []; - var passes = []; - - runner.on('test end', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - passes.push(test); - }); - - runner.on('fail', function(test) { - failures.push(test); - }); - - runner.on('pending', function(test) { - pending.push(test); - }); - - runner.on('end', function() { - var obj = { - stats: self.stats, - tests: tests.map(clean), - pending: pending.map(clean), - failures: failures.map(clean), - passes: passes.map(clean) - }; - - runner.testResults = obj; - - process.stdout.write(JSON.stringify(obj, null, 2)); - }); -} - -/** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @api private - * @param {Object} test - * @return {Object} - */ -function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - currentRetry: test.currentRetry(), - err: errorJSON(test.err || {}) - }; -} - -/** - * Transform `error` into a JSON object. - * - * @api private - * @param {Error} err - * @return {Object} - */ -function errorJSON(err) { - var res = {}; - Object.getOwnPropertyNames(err).forEach(function(key) { - res[key] = err[key]; - }, err); - return res; -} - -}).call(this,require('_process')) -},{"./base":17,"_process":51}],26:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var cursor = Base.cursor; -var color = Base.color; - -/** - * Expose `Landing`. - */ - -exports = module.exports = Landing; - -/** - * Airplane color. - */ - -Base.colors.plane = 0; - -/** - * Airplane crash color. - */ - -Base.colors['plane crash'] = 31; - -/** - * Runway color. - */ - -Base.colors.runway = 90; - -/** - * Initialize a new `Landing` reporter. - * - * @api public - * @param {Runner} runner - */ -function Landing(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var total = runner.total; - var stream = process.stdout; - var plane = color('plane', '✈'); - var crashed = -1; - var n = 0; - - function runway() { - var buf = Array(width).join('-'); - return ' ' + color('runway', buf); - } - - runner.on('start', function() { - stream.write('\n\n\n '); - cursor.hide(); - }); - - runner.on('test end', function(test) { - // check if the plane crashed - var col = crashed === -1 ? width * ++n / total | 0 : crashed; - - // show the crash - if (test.state === 'failed') { - plane = color('plane crash', '✈'); - crashed = col; - } - - // render landing strip - stream.write('\u001b[' + (width + 1) + 'D\u001b[2A'); - stream.write(runway()); - stream.write('\n '); - stream.write(color('runway', Array(col).join('⋅'))); - stream.write(plane); - stream.write(color('runway', Array(width - col).join('⋅') + '\n')); - stream.write(runway()); - stream.write('\u001b[0m'); - }); - - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Landing, Base); - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],27:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; -var cursor = Base.cursor; - -/** - * Expose `List`. - */ - -exports = module.exports = List; - -/** - * Initialize a new `List` test reporter. - * - * @api public - * @param {Runner} runner - */ -function List(runner) { - Base.call(this, runner); - - var self = this; - var n = 0; - - runner.on('start', function() { - console.log(); - }); - - runner.on('test', function(test) { - process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); - }); - - runner.on('pending', function(test) { - var fmt = color('checkmark', ' -') - + color('pending', ' %s'); - console.log(fmt, test.fullTitle()); - }); - - runner.on('pass', function(test) { - var fmt = color('checkmark', ' ' + Base.symbols.dot) - + color('pass', ' %s: ') - + color(test.speed, '%dms'); - cursor.CR(); - console.log(fmt, test.fullTitle(), test.duration); - }); - - runner.on('fail', function(test) { - cursor.CR(); - console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); - }); - - runner.on('end', self.epilogue.bind(self)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(List, Base); - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],28:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); - -/** - * Constants - */ - -var SUITE_PREFIX = '$'; - -/** - * Expose `Markdown`. - */ - -exports = module.exports = Markdown; - -/** - * Initialize a new `Markdown` reporter. - * - * @api public - * @param {Runner} runner - */ -function Markdown(runner) { - Base.call(this, runner); - - var level = 0; - var buf = ''; - - function title(str) { - return Array(level).join('#') + ' ' + str; - } - - function mapTOC(suite, obj) { - var ret = obj; - var key = SUITE_PREFIX + suite.title; - - obj = obj[key] = obj[key] || { suite: suite }; - suite.suites.forEach(function(suite) { - mapTOC(suite, obj); - }); - - return ret; - } - - function stringifyTOC(obj, level) { - ++level; - var buf = ''; - var link; - for (var key in obj) { - if (key === 'suite') { - continue; - } - if (key !== SUITE_PREFIX) { - link = ' - [' + key.substring(1) + ']'; - link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; - buf += Array(level).join(' ') + link; - } - buf += stringifyTOC(obj[key], level); - } - return buf; - } - - function generateTOC(suite) { - var obj = mapTOC(suite, {}); - return stringifyTOC(obj, 0); - } - - generateTOC(runner.suite); - - runner.on('suite', function(suite) { - ++level; - var slug = utils.slug(suite.fullTitle()); - buf += '' + '\n'; - buf += title(suite.title) + '\n'; - }); - - runner.on('suite end', function() { - --level; - }); - - runner.on('pass', function(test) { - var code = utils.clean(test.body); - buf += test.title + '.\n'; - buf += '\n```js\n'; - buf += code + '\n'; - buf += '```\n\n'; - }); - - runner.on('end', function() { - process.stdout.write('# TOC\n'); - process.stdout.write(generateTOC(runner.suite)); - process.stdout.write(buf); - }); -} - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],29:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; - -/** - * Expose `Min`. - */ - -exports = module.exports = Min; - -/** - * Initialize a new `Min` minimal test reporter (best used with --watch). - * - * @api public - * @param {Runner} runner - */ -function Min(runner) { - Base.call(this, runner); - - runner.on('start', function() { - // clear screen - process.stdout.write('\u001b[2J'); - // set cursor position - process.stdout.write('\u001b[1;3H'); - }); - - runner.on('end', this.epilogue.bind(this)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Min, Base); - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],30:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; - -/** - * Expose `Dot`. - */ - -exports = module.exports = NyanCat; - -/** - * Initialize a new `Dot` matrix test reporter. - * - * @param {Runner} runner - * @api public - */ - -function NyanCat(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var nyanCatWidth = this.nyanCatWidth = 11; - - this.colorIndex = 0; - this.numberOfLines = 4; - this.rainbowColors = self.generateColors(); - this.scoreboardWidth = 5; - this.tick = 0; - this.trajectories = [[], [], [], []]; - this.trajectoryWidthMax = (width - nyanCatWidth); - - runner.on('start', function() { - Base.cursor.hide(); - self.draw(); - }); - - runner.on('pending', function() { - self.draw(); - }); - - runner.on('pass', function() { - self.draw(); - }); - - runner.on('fail', function() { - self.draw(); - }); - - runner.on('end', function() { - Base.cursor.show(); - for (var i = 0; i < self.numberOfLines; i++) { - write('\n'); - } - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(NyanCat, Base); - -/** - * Draw the nyan cat - * - * @api private - */ - -NyanCat.prototype.draw = function() { - this.appendRainbow(); - this.drawScoreboard(); - this.drawRainbow(); - this.drawNyanCat(); - this.tick = !this.tick; -}; - -/** - * Draw the "scoreboard" showing the number - * of passes, failures and pending tests. - * - * @api private - */ - -NyanCat.prototype.drawScoreboard = function() { - var stats = this.stats; - - function draw(type, n) { - write(' '); - write(Base.color(type, n)); - write('\n'); - } - - draw('green', stats.passes); - draw('fail', stats.failures); - draw('pending', stats.pending); - write('\n'); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Append the rainbow. - * - * @api private - */ - -NyanCat.prototype.appendRainbow = function() { - var segment = this.tick ? '_' : '-'; - var rainbowified = this.rainbowify(segment); - - for (var index = 0; index < this.numberOfLines; index++) { - var trajectory = this.trajectories[index]; - if (trajectory.length >= this.trajectoryWidthMax) { - trajectory.shift(); - } - trajectory.push(rainbowified); - } -}; - -/** - * Draw the rainbow. - * - * @api private - */ - -NyanCat.prototype.drawRainbow = function() { - var self = this; - - this.trajectories.forEach(function(line) { - write('\u001b[' + self.scoreboardWidth + 'C'); - write(line.join('')); - write('\n'); - }); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Draw the nyan cat - * - * @api private - */ -NyanCat.prototype.drawNyanCat = function() { - var self = this; - var startWidth = this.scoreboardWidth + this.trajectories[0].length; - var dist = '\u001b[' + startWidth + 'C'; - var padding = ''; - - write(dist); - write('_,------,'); - write('\n'); - - write(dist); - padding = self.tick ? ' ' : ' '; - write('_|' + padding + '/\\_/\\ '); - write('\n'); - - write(dist); - padding = self.tick ? '_' : '__'; - var tail = self.tick ? '~' : '^'; - write(tail + '|' + padding + this.face() + ' '); - write('\n'); - - write(dist); - padding = self.tick ? ' ' : ' '; - write(padding + '"" "" '); - write('\n'); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Draw nyan cat face. - * - * @api private - * @return {string} - */ - -NyanCat.prototype.face = function() { - var stats = this.stats; - if (stats.failures) { - return '( x .x)'; - } else if (stats.pending) { - return '( o .o)'; - } else if (stats.passes) { - return '( ^ .^)'; - } - return '( - .-)'; -}; - -/** - * Move cursor up `n`. - * - * @api private - * @param {number} n - */ - -NyanCat.prototype.cursorUp = function(n) { - write('\u001b[' + n + 'A'); -}; - -/** - * Move cursor down `n`. - * - * @api private - * @param {number} n - */ - -NyanCat.prototype.cursorDown = function(n) { - write('\u001b[' + n + 'B'); -}; - -/** - * Generate rainbow colors. - * - * @api private - * @return {Array} - */ -NyanCat.prototype.generateColors = function() { - var colors = []; - - for (var i = 0; i < (6 * 7); i++) { - var pi3 = Math.floor(Math.PI / 3); - var n = (i * (1.0 / 6)); - var r = Math.floor(3 * Math.sin(n) + 3); - var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); - var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); - colors.push(36 * r + 6 * g + b + 16); - } - - return colors; -}; - -/** - * Apply rainbow to the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -NyanCat.prototype.rainbowify = function(str) { - if (!Base.useColors) { - return str; - } - var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; - this.colorIndex += 1; - return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; -}; - -/** - * Stdout helper. - * - * @param {string} string A message to write to stdout. - */ -function write(string) { - process.stdout.write(string); -} - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],31:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; -var cursor = Base.cursor; - -/** - * Expose `Progress`. - */ - -exports = module.exports = Progress; - -/** - * General progress bar color. - */ - -Base.colors.progress = 90; - -/** - * Initialize a new `Progress` bar test reporter. - * - * @api public - * @param {Runner} runner - * @param {Object} options - */ -function Progress(runner, options) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .50 | 0; - var total = runner.total; - var complete = 0; - var lastN = -1; - - // default chars - options = options || {}; - options.open = options.open || '['; - options.complete = options.complete || '▬'; - options.incomplete = options.incomplete || Base.symbols.dot; - options.close = options.close || ']'; - options.verbose = false; - - // tests started - runner.on('start', function() { - console.log(); - cursor.hide(); - }); - - // tests complete - runner.on('test end', function() { - complete++; - - var percent = complete / total; - var n = width * percent | 0; - var i = width - n; - - if (n === lastN && !options.verbose) { - // Don't re-render the line if it hasn't changed - return; - } - lastN = n; - - cursor.CR(); - process.stdout.write('\u001b[J'); - process.stdout.write(color('progress', ' ' + options.open)); - process.stdout.write(Array(n).join(options.complete)); - process.stdout.write(Array(i).join(options.incomplete)); - process.stdout.write(color('progress', options.close)); - if (options.verbose) { - process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); - } - }); - - // tests are complete, output some stats - // and the failures if any - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Progress, Base); - -}).call(this,require('_process')) -},{"../utils":39,"./base":17,"_process":51}],32:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; -var cursor = Base.cursor; - -/** - * Expose `Spec`. - */ - -exports = module.exports = Spec; - -/** - * Initialize a new `Spec` test reporter. - * - * @api public - * @param {Runner} runner - */ -function Spec(runner) { - Base.call(this, runner); - - var self = this; - var indents = 0; - var n = 0; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('start', function() { - console.log(); - }); - - runner.on('suite', function(suite) { - ++indents; - console.log(color('suite', '%s%s'), indent(), suite.title); - }); - - runner.on('suite end', function() { - --indents; - if (indents === 1) { - console.log(); - } - }); - - runner.on('pending', function(test) { - var fmt = indent() + color('pending', ' - %s'); - console.log(fmt, test.title); - }); - - runner.on('pass', function(test) { - var fmt; - if (test.speed === 'fast') { - fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s'); - cursor.CR(); - console.log(fmt, test.title); - } else { - fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s') - + color(test.speed, ' (%dms)'); - cursor.CR(); - console.log(fmt, test.title, test.duration); - } - }); - - runner.on('fail', function(test) { - cursor.CR(); - console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); - }); - - runner.on('end', self.epilogue.bind(self)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Spec, Base); - -},{"../utils":39,"./base":17}],33:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `TAP`. - */ - -exports = module.exports = TAP; - -/** - * Initialize a new `TAP` reporter. - * - * @api public - * @param {Runner} runner - */ -function TAP(runner) { - Base.call(this, runner); - - var n = 1; - var passes = 0; - var failures = 0; - - runner.on('start', function() { - var total = runner.grepTotal(runner.suite); - console.log('%d..%d', 1, total); - }); - - runner.on('test end', function() { - ++n; - }); - - runner.on('pending', function(test) { - console.log('ok %d %s # SKIP -', n, title(test)); - }); - - runner.on('pass', function(test) { - passes++; - console.log('ok %d %s', n, title(test)); - }); - - runner.on('fail', function(test, err) { - failures++; - console.log('not ok %d %s', n, title(test)); - if (err.stack) { - console.log(err.stack.replace(/^/gm, ' ')); - } - }); - - runner.on('end', function() { - console.log('# tests ' + (passes + failures)); - console.log('# pass ' + passes); - console.log('# fail ' + failures); - }); -} - -/** - * Return a TAP-safe title of `test` - * - * @api private - * @param {Object} test - * @return {String} - */ -function title(test) { - return test.fullTitle().replace(/#/g, ''); -} - -},{"./base":17}],34:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); -var inherits = utils.inherits; -var fs = require('fs'); -var escape = utils.escape; -var mkdirp = require('mkdirp'); -var path = require('path'); - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Expose `XUnit`. - */ - -exports = module.exports = XUnit; - -/** - * Initialize a new `XUnit` reporter. - * - * @api public - * @param {Runner} runner - */ -function XUnit(runner, options) { - Base.call(this, runner); - - var stats = this.stats; - var tests = []; - var self = this; - - if (options.reporterOptions && options.reporterOptions.output) { - if (!fs.createWriteStream) { - throw new Error('file output not supported in browser'); - } - mkdirp.sync(path.dirname(options.reporterOptions.output)); - self.fileStream = fs.createWriteStream(options.reporterOptions.output); - } - - runner.on('pending', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - tests.push(test); - }); - - runner.on('fail', function(test) { - tests.push(test); - }); - - runner.on('end', function() { - self.write(tag('testsuite', { - name: 'Mocha Tests', - tests: stats.tests, - failures: stats.failures, - errors: stats.failures, - skipped: stats.tests - stats.failures - stats.passes, - timestamp: (new Date()).toUTCString(), - time: (stats.duration / 1000) || 0 - }, false)); - - tests.forEach(function(t) { - self.test(t); - }); - - self.write(''); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(XUnit, Base); - -/** - * Override done to close the stream (if it's a file). - * - * @param failures - * @param {Function} fn - */ -XUnit.prototype.done = function(failures, fn) { - if (this.fileStream) { - this.fileStream.end(function() { - fn(failures); - }); - } else { - fn(failures); - } -}; - -/** - * Write out the given line. - * - * @param {string} line - */ -XUnit.prototype.write = function(line) { - if (this.fileStream) { - this.fileStream.write(line + '\n'); - } else if (typeof process === 'object' && process.stdout) { - process.stdout.write(line + '\n'); - } else { - console.log(line); - } -}; - -/** - * Output tag for the given `test.` - * - * @param {Test} test - */ -XUnit.prototype.test = function(test) { - var attrs = { - classname: test.parent.fullTitle(), - name: test.title, - time: (test.duration / 1000) || 0 - }; - - if (test.state === 'failed') { - var err = test.err; - this.write(tag('testcase', attrs, false, tag('failure', {}, false, cdata(escape(err.message) + '\n' + err.stack)))); - } else if (test.pending) { - this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); - } else { - this.write(tag('testcase', attrs, true)); - } -}; - -/** - * HTML tag helper. - * - * @param name - * @param attrs - * @param close - * @param content - * @return {string} - */ -function tag(name, attrs, close, content) { - var end = close ? '/>' : '>'; - var pairs = []; - var tag; - - for (var key in attrs) { - if (Object.prototype.hasOwnProperty.call(attrs, key)) { - pairs.push(key + '="' + escape(attrs[key]) + '"'); - } - } - - tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; - if (content) { - tag += content + ''; -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../utils":39,"./base":17,"_process":51,"fs":41,"mkdirp":70,"path":41}],35:[function(require,module,exports){ -(function (global){ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Pending = require('./pending'); -var debug = require('debug')('mocha:runnable'); -var milliseconds = require('./ms'); -var utils = require('./utils'); -var inherits = utils.inherits; - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Object#toString(). - */ - -var toString = Object.prototype.toString; - -/** - * Expose `Runnable`. - */ - -module.exports = Runnable; - -/** - * Initialize a new `Runnable` with the given `title` and callback `fn`. - * - * @param {String} title - * @param {Function} fn - * @api private - * @param {string} title - * @param {Function} fn - */ -function Runnable(title, fn) { - this.title = title; - this.fn = fn; - this.async = fn && fn.length; - this.sync = !this.async; - this._timeout = 2000; - this._slow = 75; - this._enableTimeouts = true; - this.timedOut = false; - this._trace = new Error('done() called multiple times'); - this._retries = -1; - this._currentRetry = 0; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Runnable, EventEmitter); - -/** - * Set & get timeout `ms`. - * - * @api private - * @param {number|string} ms - * @return {Runnable|number} ms or Runnable instance. - */ -Runnable.prototype.timeout = function(ms) { - if (!arguments.length) { - return this._timeout; - } - if (ms === 0) { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = ms; - if (this.timer) { - this.resetTimeout(); - } - return this; -}; - -/** - * Set & get slow `ms`. - * - * @api private - * @param {number|string} ms - * @return {Runnable|number} ms or Runnable instance. - */ -Runnable.prototype.slow = function(ms) { - if (!arguments.length) { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._slow = ms; - return this; -}; - -/** - * Set and get whether timeout is `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Runnable|boolean} enabled or Runnable instance. - */ -Runnable.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Halt and mark as pending. - * - * @api private - */ -Runnable.prototype.skip = function() { - throw new Pending(); -}; - -/** - * Set number of retries. - * - * @api private - */ -Runnable.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - this._retries = n; -}; - -/** - * Get current retry - * - * @api private - */ -Runnable.prototype.currentRetry = function(n) { - if (!arguments.length) { - return this._currentRetry; - } - this._currentRetry = n; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Runnable.prototype.fullTitle = function() { - return this.parent.fullTitle() + ' ' + this.title; -}; - -/** - * Clear the timeout. - * - * @api private - */ -Runnable.prototype.clearTimeout = function() { - clearTimeout(this.timer); -}; - -/** - * Inspect the runnable void of private properties. - * - * @api private - * @return {string} - */ -Runnable.prototype.inspect = function() { - return JSON.stringify(this, function(key, val) { - if (key[0] === '_') { - return; - } - if (key === 'parent') { - return '#'; - } - if (key === 'ctx') { - return '#'; - } - return val; - }, 2); -}; - -/** - * Reset the timeout. - * - * @api private - */ -Runnable.prototype.resetTimeout = function() { - var self = this; - var ms = this.timeout() || 1e9; - - if (!this._enableTimeouts) { - return; - } - this.clearTimeout(); - this.timer = setTimeout(function() { - if (!self._enableTimeouts) { - return; - } - self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); - self.timedOut = true; - }, ms); -}; - -/** - * Whitelist a list of globals for this test run. - * - * @api private - * @param {string[]} globals - */ -Runnable.prototype.globals = function(globals) { - if (!arguments.length) { - return this._allowedGlobals; - } - this._allowedGlobals = globals; -}; - -/** - * Run the test and invoke `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runnable.prototype.run = function(fn) { - var self = this; - var start = new Date(); - var ctx = this.ctx; - var finished; - var emitted; - - // Sometimes the ctx exists, but it is not runnable - if (ctx && ctx.runnable) { - ctx.runnable(this); - } - - // called multiple times - function multiple(err) { - if (emitted) { - return; - } - emitted = true; - self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); - } - - // finished - function done(err) { - var ms = self.timeout(); - if (self.timedOut) { - return; - } - if (finished) { - return multiple(err || self._trace); - } - - self.clearTimeout(); - self.duration = new Date() - start; - finished = true; - if (!err && self.duration > ms && self._enableTimeouts) { - err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); - } - fn(err); - } - - // for .resetTimeout() - this.callback = done; - - // explicit async with `done` argument - if (this.async) { - this.resetTimeout(); - - if (this.allowUncaught) { - return callFnAsync(this.fn); - } - try { - callFnAsync(this.fn); - } catch (err) { - done(utils.getError(err)); - } - return; - } - - if (this.allowUncaught) { - callFn(this.fn); - done(); - return; - } - - // sync or promise-returning - try { - if (this.pending) { - done(); - } else { - callFn(this.fn); - } - } catch (err) { - done(utils.getError(err)); - } - - function callFn(fn) { - var result = fn.call(ctx); - if (result && typeof result.then === 'function') { - self.resetTimeout(); - result - .then(function() { - done(); - // Return null so libraries like bluebird do not warn about - // subsequently constructed Promises. - return null; - }, - function(reason) { - done(reason || new Error('Promise rejected with no or falsy reason')); - }); - } else { - if (self.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); - } - - done(); - } - } - - function callFnAsync(fn) { - fn.call(ctx, function(err) { - if (err instanceof Error || toString.call(err) === '[object Error]') { - return done(err); - } - if (err) { - if (Object.prototype.toString.call(err) === '[object Object]') { - return done(new Error('done() invoked with non-Error: ' - + JSON.stringify(err))); - } - return done(new Error('done() invoked with non-Error: ' + err)); - } - done(); - }); - } -}; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./ms":15,"./pending":16,"./utils":39,"debug":2,"events":3}],36:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Pending = require('./pending'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:runner'); -var Runnable = require('./runnable'); -var filter = utils.filter; -var indexOf = utils.indexOf; -var keys = utils.keys; -var stackFilter = utils.stackTraceFilter(); -var stringify = utils.stringify; -var type = utils.type; -var undefinedError = utils.undefinedError; -var isArray = utils.isArray; - -/** - * Non-enumerable globals. - */ - -var globals = [ - 'setTimeout', - 'clearTimeout', - 'setInterval', - 'clearInterval', - 'XMLHttpRequest', - 'Date', - 'setImmediate', - 'clearImmediate' -]; - -/** - * Expose `Runner`. - */ - -module.exports = Runner; - -/** - * Initialize a `Runner` for the given `suite`. - * - * Events: - * - * - `start` execution started - * - `end` execution complete - * - `suite` (suite) test suite execution started - * - `suite end` (suite) all tests (and sub-suites) have finished - * - `test` (test) test execution started - * - `test end` (test) test completed - * - `hook` (hook) hook execution started - * - `hook end` (hook) hook complete - * - `pass` (test) test passed - * - `fail` (test, err) test failed - * - `pending` (test) test pending - * - * @api public - * @param {Suite} suite Root suite - * @param {boolean} [delay] Whether or not to delay execution of root suite - * until ready. - */ -function Runner(suite, delay) { - var self = this; - this._globals = []; - this._abort = false; - this._delay = delay; - this.suite = suite; - this.started = false; - this.total = suite.total(); - this.failures = 0; - this.on('test end', function(test) { - self.checkGlobals(test); - }); - this.on('hook end', function(hook) { - self.checkGlobals(hook); - }); - this._defaultGrep = /.*/; - this.grep(this._defaultGrep); - this.globals(this.globalProps().concat(extraGlobals())); -} - -/** - * Wrapper for setImmediate, process.nextTick, or browser polyfill. - * - * @param {Function} fn - * @api private - */ -Runner.immediately = global.setImmediate || process.nextTick; - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Runner, EventEmitter); - -/** - * Run tests with full titles matching `re`. Updates runner.total - * with number of tests matched. - * - * @param {RegExp} re - * @param {Boolean} invert - * @return {Runner} for chaining - * @api public - * @param {RegExp} re - * @param {boolean} invert - * @return {Runner} Runner instance. - */ -Runner.prototype.grep = function(re, invert) { - debug('grep %s', re); - this._grep = re; - this._invert = invert; - this.total = this.grepTotal(this.suite); - return this; -}; - -/** - * Returns the number of tests matching the grep search for the - * given suite. - * - * @param {Suite} suite - * @return {Number} - * @api public - * @param {Suite} suite - * @return {number} - */ -Runner.prototype.grepTotal = function(suite) { - var self = this; - var total = 0; - - suite.eachTest(function(test) { - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (match) { - total++; - } - }); - - return total; -}; - -/** - * Return a list of global properties. - * - * @return {Array} - * @api private - */ -Runner.prototype.globalProps = function() { - var props = keys(global); - - // non-enumerables - for (var i = 0; i < globals.length; ++i) { - if (~indexOf(props, globals[i])) { - continue; - } - props.push(globals[i]); - } - - return props; -}; - -/** - * Allow the given `arr` of globals. - * - * @param {Array} arr - * @return {Runner} for chaining - * @api public - * @param {Array} arr - * @return {Runner} Runner instance. - */ -Runner.prototype.globals = function(arr) { - if (!arguments.length) { - return this._globals; - } - debug('globals %j', arr); - this._globals = this._globals.concat(arr); - return this; -}; - -/** - * Check for global variable leaks. - * - * @api private - */ -Runner.prototype.checkGlobals = function(test) { - if (this.ignoreLeaks) { - return; - } - var ok = this._globals; - - var globals = this.globalProps(); - var leaks; - - if (test) { - ok = ok.concat(test._allowedGlobals || []); - } - - if (this.prevGlobalsLength === globals.length) { - return; - } - this.prevGlobalsLength = globals.length; - - leaks = filterLeaks(ok, globals); - this._globals = this._globals.concat(leaks); - - if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); - } else if (leaks.length) { - this.fail(test, new Error('global leak detected: ' + leaks[0])); - } -}; - -/** - * Fail the given `test`. - * - * @api private - * @param {Test} test - * @param {Error} err - */ -Runner.prototype.fail = function(test, err) { - ++this.failures; - test.state = 'failed'; - - if (!(err instanceof Error || err && typeof err.message === 'string')) { - err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); - } - - err.stack = (this.fullStackTrace || !err.stack) - ? err.stack - : stackFilter(err.stack); - - this.emit('fail', test, err); -}; - -/** - * Fail the given `hook` with `err`. - * - * Hook failures work in the following pattern: - * - If bail, then exit - * - Failed `before` hook skips all tests in a suite and subsuites, - * but jumps to corresponding `after` hook - * - Failed `before each` hook skips remaining tests in a - * suite and jumps to corresponding `after each` hook, - * which is run only once - * - Failed `after` hook does not alter - * execution order - * - Failed `after each` hook skips remaining tests in a - * suite and subsuites, but executes other `after each` - * hooks - * - * @api private - * @param {Hook} hook - * @param {Error} err - */ -Runner.prototype.failHook = function(hook, err) { - if (hook.ctx && hook.ctx.currentTest) { - hook.originalTitle = hook.originalTitle || hook.title; - hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; - } - - this.fail(hook, err); - if (this.suite.bail()) { - this.emit('end'); - } -}; - -/** - * Run hook `name` callbacks and then invoke `fn()`. - * - * @api private - * @param {string} name - * @param {Function} fn - */ - -Runner.prototype.hook = function(name, fn) { - var suite = this.suite; - var hooks = suite['_' + name]; - var self = this; - - function next(i) { - var hook = hooks[i]; - if (!hook) { - return fn(); - } - self.currentRunnable = hook; - - hook.ctx.currentTest = self.test; - - self.emit('hook', hook); - - if (!hook.listeners('error').length) { - hook.on('error', function(err) { - self.failHook(hook, err); - }); - } - - hook.run(function(err) { - var testError = hook.error(); - if (testError) { - self.fail(self.test, testError); - } - if (err) { - if (err instanceof Pending) { - suite.pending = true; - } else { - self.failHook(hook, err); - - // stop executing hooks, notify callee of hook err - return fn(err); - } - } - self.emit('hook end', hook); - delete hook.ctx.currentTest; - next(++i); - }); - } - - Runner.immediately(function() { - next(0); - }); -}; - -/** - * Run hook `name` for the given array of `suites` - * in order, and callback `fn(err, errSuite)`. - * - * @api private - * @param {string} name - * @param {Array} suites - * @param {Function} fn - */ -Runner.prototype.hooks = function(name, suites, fn) { - var self = this; - var orig = this.suite; - - function next(suite) { - self.suite = suite; - - if (!suite) { - self.suite = orig; - return fn(); - } - - self.hook(name, function(err) { - if (err) { - var errSuite = self.suite; - self.suite = orig; - return fn(err, errSuite); - } - - next(suites.pop()); - }); - } - - next(suites.pop()); -}; - -/** - * Run hooks from the top level down. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookUp = function(name, fn) { - var suites = [this.suite].concat(this.parents()).reverse(); - this.hooks(name, suites, fn); -}; - -/** - * Run hooks from the bottom up. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookDown = function(name, fn) { - var suites = [this.suite].concat(this.parents()); - this.hooks(name, suites, fn); -}; - -/** - * Return an array of parent Suites from - * closest to furthest. - * - * @return {Array} - * @api private - */ -Runner.prototype.parents = function() { - var suite = this.suite; - var suites = []; - while (suite.parent) { - suite = suite.parent; - suites.push(suite); - } - return suites; -}; - -/** - * Run the current test and callback `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runner.prototype.runTest = function(fn) { - var self = this; - var test = this.test; - - if (this.asyncOnly) { - test.asyncOnly = true; - } - - if (this.allowUncaught) { - test.allowUncaught = true; - return test.run(fn); - } - try { - test.on('error', function(err) { - self.fail(test, err); - }); - test.run(fn); - } catch (err) { - fn(err); - } -}; - -/** - * Run tests in the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runTests = function(suite, fn) { - var self = this; - var tests = suite.tests.slice(); - var test; - - function hookErr(_, errSuite, after) { - // before/after Each hook for errSuite failed: - var orig = self.suite; - - // for failed 'after each' hook start from errSuite parent, - // otherwise start from errSuite itself - self.suite = after ? errSuite.parent : errSuite; - - if (self.suite) { - // call hookUp afterEach - self.hookUp('afterEach', function(err2, errSuite2) { - self.suite = orig; - // some hooks may fail even now - if (err2) { - return hookErr(err2, errSuite2, true); - } - // report error suite - fn(errSuite); - }); - } else { - // there is no need calling other 'after each' hooks - self.suite = orig; - fn(errSuite); - } - } - - function next(err, errSuite) { - // if we bail after first err - if (self.failures && suite._bail) { - return fn(); - } - - if (self._abort) { - return fn(); - } - - if (err) { - return hookErr(err, errSuite, true); - } - - // next test - test = tests.shift(); - - // all done - if (!test) { - return fn(); - } - - // grep - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (!match) { - // Run immediately only if we have defined a grep. When we - // define a grep — It can cause maximum callstack error if - // the grep is doing a large recursive loop by neglecting - // all tests. The run immediately function also comes with - // a performance cost. So we don't want to run immediately - // if we run the whole test suite, because running the whole - // test suite don't do any immediate recursive loops. Thus, - // allowing a JS runtime to breathe. - if (self._grep !== self._defaultGrep) { - Runner.immediately(next); - } else { - next(); - } - return; - } - - function parentPending(suite) { - return suite.pending || (suite.parent && parentPending(suite.parent)); - } - - // pending - if (test.pending || parentPending(test.parent)) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - - // execute test and hook(s) - self.emit('test', self.test = test); - self.hookDown('beforeEach', function(err, errSuite) { - if (suite.pending) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - if (err) { - return hookErr(err, errSuite, false); - } - self.currentRunnable = self.test; - self.runTest(function(err) { - test = self.test; - if (err) { - var retry = test.currentRetry(); - if (err instanceof Pending) { - test.pending = true; - self.emit('pending', test); - } else if (retry < test.retries()) { - var clonedTest = test.clone(); - clonedTest.currentRetry(retry + 1); - tests.unshift(clonedTest); - - // Early return + hook trigger so that it doesn't - // increment the count wrong - return self.hookUp('afterEach', next); - } else { - self.fail(test, err); - } - self.emit('test end', test); - - if (err instanceof Pending) { - return next(); - } - - return self.hookUp('afterEach', next); - } - - test.state = 'passed'; - self.emit('pass', test); - self.emit('test end', test); - self.hookUp('afterEach', next); - }); - }); - } - - this.next = next; - this.hookErr = hookErr; - next(); -}; - -/** - * Run the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runSuite = function(suite, fn) { - var i = 0; - var self = this; - var total = this.grepTotal(suite); - var afterAllHookCalled = false; - - debug('run suite %s', suite.fullTitle()); - - if (!total || (self.failures && suite._bail)) { - return fn(); - } - - this.emit('suite', this.suite = suite); - - function next(errSuite) { - if (errSuite) { - // current suite failed on a hook from errSuite - if (errSuite === suite) { - // if errSuite is current suite - // continue to the next sibling suite - return done(); - } - // errSuite is among the parents of current suite - // stop execution of errSuite and all sub-suites - return done(errSuite); - } - - if (self._abort) { - return done(); - } - - var curr = suite.suites[i++]; - if (!curr) { - return done(); - } - - // Avoid grep neglecting large number of tests causing a - // huge recursive loop and thus a maximum call stack error. - // See comment in `this.runTests()` for more information. - if (self._grep !== self._defaultGrep) { - Runner.immediately(function() { - self.runSuite(curr, next); - }); - } else { - self.runSuite(curr, next); - } - } - - function done(errSuite) { - self.suite = suite; - self.nextSuite = next; - - if (afterAllHookCalled) { - fn(errSuite); - } else { - // mark that the afterAll block has been called once - // and so can be skipped if there is an error in it. - afterAllHookCalled = true; - - // remove reference to test - delete self.test; - - self.hook('afterAll', function() { - self.emit('suite end', suite); - fn(errSuite); - }); - } - } - - this.nextSuite = next; - - this.hook('beforeAll', function(err) { - if (err) { - return done(); - } - self.runTests(suite, next); - }); -}; - -/** - * Handle uncaught exceptions. - * - * @param {Error} err - * @api private - */ -Runner.prototype.uncaught = function(err) { - if (err) { - debug('uncaught exception %s', err !== function() { - return this; - }.call(err) ? err : (err.message || err)); - } else { - debug('uncaught undefined exception'); - err = undefinedError(); - } - err.uncaught = true; - - var runnable = this.currentRunnable; - - if (!runnable) { - runnable = new Runnable('Uncaught error outside test suite'); - runnable.parent = this.suite; - - if (this.started) { - this.fail(runnable, err); - } else { - // Can't recover from this failure - this.emit('start'); - this.fail(runnable, err); - this.emit('end'); - } - - return; - } - - runnable.clearTimeout(); - - // Ignore errors if complete - if (runnable.state) { - return; - } - this.fail(runnable, err); - - // recover from test - if (runnable.type === 'test') { - this.emit('test end', runnable); - this.hookUp('afterEach', this.next); - return; - } - - // recover from hooks - if (runnable.type === 'hook') { - var errSuite = this.suite; - // if hook failure is in afterEach block - if (runnable.fullTitle().indexOf('after each') > -1) { - return this.hookErr(err, errSuite, true); - } - // if hook failure is in beforeEach block - if (runnable.fullTitle().indexOf('before each') > -1) { - return this.hookErr(err, errSuite, false); - } - // if hook failure is in after or before blocks - return this.nextSuite(errSuite); - } - - // bail - this.emit('end'); -}; - -/** - * Cleans up the references to all the deferred functions - * (before/after/beforeEach/afterEach) and tests of a Suite. - * These must be deleted otherwise a memory leak can happen, - * as those functions may reference variables from closures, - * thus those variables can never be garbage collected as long - * as the deferred functions exist. - * - * @param {Suite} suite - */ -function cleanSuiteReferences(suite) { - function cleanArrReferences(arr) { - for (var i = 0; i < arr.length; i++) { - delete arr[i].fn; - } - } - - if (isArray(suite._beforeAll)) { - cleanArrReferences(suite._beforeAll); - } - - if (isArray(suite._beforeEach)) { - cleanArrReferences(suite._beforeEach); - } - - if (isArray(suite._afterAll)) { - cleanArrReferences(suite._afterAll); - } - - if (isArray(suite._afterEach)) { - cleanArrReferences(suite._afterEach); - } - - for (var i = 0; i < suite.tests.length; i++) { - delete suite.tests[i].fn; - } -} - -/** - * Run the root suite and invoke `fn(failures)` - * on completion. - * - * @param {Function} fn - * @return {Runner} for chaining - * @api public - * @param {Function} fn - * @return {Runner} Runner instance. - */ -Runner.prototype.run = function(fn) { - var self = this; - var rootSuite = this.suite; - - fn = fn || function() {}; - - function uncaught(err) { - self.uncaught(err); - } - - function start() { - self.started = true; - self.emit('start'); - self.runSuite(rootSuite, function() { - debug('finished running'); - self.emit('end'); - }); - } - - debug('start'); - - // references cleanup to avoid memory leaks - this.on('suite end', cleanSuiteReferences); - - // callback - this.on('end', function() { - debug('end'); - process.removeListener('uncaughtException', uncaught); - fn(self.failures); - }); - - // uncaught exception - process.on('uncaughtException', uncaught); - - if (this._delay) { - // for reporters, I guess. - // might be nice to debounce some dots while we wait. - this.emit('waiting', rootSuite); - rootSuite.once('run', start); - } else { - start(); - } - - return this; -}; - -/** - * Cleanly abort execution. - * - * @api public - * @return {Runner} Runner instance. - */ -Runner.prototype.abort = function() { - debug('aborting'); - this._abort = true; - - return this; -}; - -/** - * Filter leaks with the given globals flagged as `ok`. - * - * @api private - * @param {Array} ok - * @param {Array} globals - * @return {Array} - */ -function filterLeaks(ok, globals) { - return filter(globals, function(key) { - // Firefox and Chrome exposes iframes as index inside the window object - if (/^d+/.test(key)) { - return false; - } - - // in firefox - // if runner runs in an iframe, this iframe's window.getInterface method not init at first - // it is assigned in some seconds - if (global.navigator && (/^getInterface/).test(key)) { - return false; - } - - // an iframe could be approached by window[iframeIndex] - // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && (/^\d+/).test(key)) { - return false; - } - - // Opera and IE expose global variables for HTML element IDs (issue #243) - if (/^mocha-/.test(key)) { - return false; - } - - var matched = filter(ok, function(ok) { - if (~ok.indexOf('*')) { - return key.indexOf(ok.split('*')[0]) === 0; - } - return key === ok; - }); - return !matched.length && (!global.navigator || key !== 'onerror'); - }); -} - -/** - * Array of globals dependent on the environment. - * - * @return {Array} - * @api private - */ -function extraGlobals() { - if (typeof process === 'object' && typeof process.version === 'string') { - var parts = process.version.split('.'); - var nodeVersion = utils.reduce(parts, function(a, v) { - return a << 8 | v; - }); - - // 'errno' was renamed to process._errno in v0.9.11. - - if (nodeVersion < 0x00090B) { - return ['errno']; - } - } - - return []; -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./pending":16,"./runnable":35,"./utils":39,"_process":51,"debug":2,"events":3}],37:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Hook = require('./hook'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:suite'); -var milliseconds = require('./ms'); - -/** - * Expose `Suite`. - */ - -exports = module.exports = Suite; - -/** - * Create a new `Suite` with the given `title` and parent `Suite`. When a suite - * with the same title is already present, that suite is returned to provide - * nicer reporter and more flexible meta-testing. - * - * @api public - * @param {Suite} parent - * @param {string} title - * @return {Suite} - */ -exports.create = function(parent, title) { - var suite = new Suite(title, parent.ctx); - suite.parent = parent; - if (parent.pending) { - suite.pending = true; - } - title = suite.fullTitle(); - parent.addSuite(suite); - return suite; -}; - -/** - * Initialize a new `Suite` with the given `title` and `ctx`. - * - * @api private - * @param {string} title - * @param {Context} parentContext - */ -function Suite(title, parentContext) { - this.title = title; - function Context() {} - Context.prototype = parentContext; - this.ctx = new Context(); - this.suites = []; - this.tests = []; - this.pending = false; - this._beforeEach = []; - this._beforeAll = []; - this._afterEach = []; - this._afterAll = []; - this.root = !title; - this._timeout = 2000; - this._enableTimeouts = true; - this._slow = 75; - this._bail = false; - this._retries = -1; - this.delayed = false; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Suite, EventEmitter); - -/** - * Return a clone of this `Suite`. - * - * @api private - * @return {Suite} - */ -Suite.prototype.clone = function() { - var suite = new Suite(this.title); - debug('clone'); - suite.ctx = this.ctx; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - return suite; -}; - -/** - * Set timeout `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.timeout = function(ms) { - if (!arguments.length) { - return this._timeout; - } - if (ms.toString() === '0') { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = parseInt(ms, 10); - return this; -}; - -/** - * Set number of times to retry a failed test. - * - * @api private - * @param {number|string} n - * @return {Suite|number} for chaining - */ -Suite.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - debug('retries %d', n); - this._retries = parseInt(n, 10) || 0; - return this; -}; - -/** - * Set timeout to `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Suite|boolean} self or enabled - */ -Suite.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Set slow `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.slow = function(ms) { - if (!arguments.length) { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('slow %d', ms); - this._slow = ms; - return this; -}; - -/** - * Sets whether to bail after first error. - * - * @api private - * @param {boolean} bail - * @return {Suite|number} for chaining - */ -Suite.prototype.bail = function(bail) { - if (!arguments.length) { - return this._bail; - } - debug('bail %s', bail); - this._bail = bail; - return this; -}; - -/** - * Run `fn(test[, done])` before running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeAll = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeAll.push(hook); - this.emit('beforeAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterAll = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterAll.push(hook); - this.emit('afterAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` before each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeEach = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeEach.push(hook); - this.emit('beforeEach', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterEach = function(title, fn) { - if (this.pending) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterEach.push(hook); - this.emit('afterEach', hook); - return this; -}; - -/** - * Add a test `suite`. - * - * @api private - * @param {Suite} suite - * @return {Suite} for chaining - */ -Suite.prototype.addSuite = function(suite) { - suite.parent = this; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - this.suites.push(suite); - this.emit('suite', suite); - return this; -}; - -/** - * Add a `test` to this suite. - * - * @api private - * @param {Test} test - * @return {Suite} for chaining - */ -Suite.prototype.addTest = function(test) { - test.parent = this; - test.timeout(this.timeout()); - test.retries(this.retries()); - test.enableTimeouts(this.enableTimeouts()); - test.slow(this.slow()); - test.ctx = this.ctx; - this.tests.push(test); - this.emit('test', test); - return this; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Suite.prototype.fullTitle = function() { - if (this.parent) { - var full = this.parent.fullTitle(); - if (full) { - return full + ' ' + this.title; - } - } - return this.title; -}; - -/** - * Return the total number of tests. - * - * @api public - * @return {number} - */ -Suite.prototype.total = function() { - return utils.reduce(this.suites, function(sum, suite) { - return sum + suite.total(); - }, 0) + this.tests.length; -}; - -/** - * Iterates through each suite recursively to find all tests. Applies a - * function in the format `fn(test)`. - * - * @api private - * @param {Function} fn - * @return {Suite} - */ -Suite.prototype.eachTest = function(fn) { - utils.forEach(this.tests, fn); - utils.forEach(this.suites, function(suite) { - suite.eachTest(fn); - }); - return this; -}; - -/** - * This will run the root suite if we happen to be running in delayed mode. - */ -Suite.prototype.run = function run() { - if (this.root) { - this.emit('run'); - } -}; - -},{"./hook":7,"./ms":15,"./utils":39,"debug":2,"events":3}],38:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Runnable = require('./runnable'); -var inherits = require('./utils').inherits; - -/** - * Expose `Test`. - */ - -module.exports = Test; - -/** - * Initialize a new `Test` with the given `title` and callback `fn`. - * - * @api private - * @param {String} title - * @param {Function} fn - */ -function Test(title, fn) { - Runnable.call(this, title, fn); - this.pending = !fn; - this.type = 'test'; - this.body = (fn || '').toString(); -} - -/** - * Inherit from `Runnable.prototype`. - */ -inherits(Test, Runnable); - -Test.prototype.clone = function() { - var test = new Test(this.title, this.fn); - test.timeout(this.timeout()); - test.slow(this.slow()); - test.enableTimeouts(this.enableTimeouts()); - test.retries(this.retries()); - test.currentRetry(this.currentRetry()); - test.globals(this.globals()); - test.parent = this.parent; - test.file = this.file; - test.ctx = this.ctx; - return test; -}; - -},{"./runnable":35,"./utils":39}],39:[function(require,module,exports){ -(function (process,Buffer){ -/* eslint-env browser */ - -/** - * Module dependencies. - */ - -var basename = require('path').basename; -var debug = require('debug')('mocha:watch'); -var exists = require('fs').existsSync || require('path').existsSync; -var glob = require('glob'); -var join = require('path').join; -var readdirSync = require('fs').readdirSync; -var statSync = require('fs').statSync; -var watchFile = require('fs').watchFile; - -/** - * Ignored directories. - */ - -var ignore = ['node_modules', '.git']; - -exports.inherits = require('util').inherits; - -/** - * Escape special characters in the given string of html. - * - * @api private - * @param {string} html - * @return {string} - */ -exports.escape = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -}; - -/** - * Array#forEach (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - */ -exports.forEach = function(arr, fn, scope) { - for (var i = 0, l = arr.length; i < l; i++) { - fn.call(scope, arr[i], i); - } -}; - -/** - * Test if the given obj is type of string. - * - * @api private - * @param {Object} obj - * @return {boolean} - */ -exports.isString = function(obj) { - return typeof obj === 'string'; -}; - -/** - * Array#map (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - * @return {Array} - */ -exports.map = function(arr, fn, scope) { - var result = []; - for (var i = 0, l = arr.length; i < l; i++) { - result.push(fn.call(scope, arr[i], i, arr)); - } - return result; -}; - -/** - * Array#indexOf (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Object} obj to find index of - * @param {number} start - * @return {number} - */ -exports.indexOf = function(arr, obj, start) { - for (var i = start || 0, l = arr.length; i < l; i++) { - if (arr[i] === obj) { - return i; - } - } - return -1; -}; - -/** - * Array#reduce (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} val Initial value. - * @return {*} - */ -exports.reduce = function(arr, fn, val) { - var rval = val; - - for (var i = 0, l = arr.length; i < l; i++) { - rval = fn(rval, arr[i], i, arr); - } - - return rval; -}; - -/** - * Array#filter (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @return {Array} - */ -exports.filter = function(arr, fn) { - var ret = []; - - for (var i = 0, l = arr.length; i < l; i++) { - var val = arr[i]; - if (fn(val, i, arr)) { - ret.push(val); - } - } - - return ret; -}; - -/** - * Object.keys (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Array} keys - */ -exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { - var keys = []; - var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 - - for (var key in obj) { - if (has.call(obj, key)) { - keys.push(key); - } - } - - return keys; -}; - -/** - * Watch the given `files` for changes - * and invoke `fn(file)` on modification. - * - * @api private - * @param {Array} files - * @param {Function} fn - */ -exports.watch = function(files, fn) { - var options = { interval: 100 }; - files.forEach(function(file) { - debug('file %s', file); - watchFile(file, options, function(curr, prev) { - if (prev.mtime < curr.mtime) { - fn(file); - } - }); - }); -}; - -/** - * Array.isArray (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Boolean} - */ -var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -exports.isArray = isArray; - -/** - * Buffer.prototype.toJSON polyfill. - * - * @type {Function} - */ -if (typeof Buffer !== 'undefined' && Buffer.prototype) { - Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { - return Array.prototype.slice.call(this, 0); - }; -} - -/** - * Ignored files. - * - * @api private - * @param {string} path - * @return {boolean} - */ -function ignored(path) { - return !~ignore.indexOf(path); -} - -/** - * Lookup files in the given `dir`. - * - * @api private - * @param {string} dir - * @param {string[]} [ext=['.js']] - * @param {Array} [ret=[]] - * @return {Array} - */ -exports.files = function(dir, ext, ret) { - ret = ret || []; - ext = ext || ['js']; - - var re = new RegExp('\\.(' + ext.join('|') + ')$'); - - readdirSync(dir) - .filter(ignored) - .forEach(function(path) { - path = join(dir, path); - if (statSync(path).isDirectory()) { - exports.files(path, ext, ret); - } else if (path.match(re)) { - ret.push(path); - } - }); - - return ret; -}; - -/** - * Compute a slug from the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.slug = function(str) { - return str - .toLowerCase() - .replace(/ +/g, '-') - .replace(/[^-\w]/g, ''); -}; - -/** - * Strip the function definition from `str`, and re-indent for pre whitespace. - * - * @param {string} str - * @return {string} - */ -exports.clean = function(str) { - str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') - .replace(/^function *\(.*\)\s*\{|\(.*\) *=> *\{?/, '') - .replace(/\s+\}$/, ''); - - var spaces = str.match(/^\n?( *)/)[1].length; - var tabs = str.match(/^\n?(\t*)/)[1].length; - var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); - - str = str.replace(re, ''); - - return exports.trim(str); -}; - -/** - * Trim the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.trim = function(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; - -/** - * Parse the given `qs`. - * - * @api private - * @param {string} qs - * @return {Object} - */ -exports.parseQuery = function(qs) { - return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { - var i = pair.indexOf('='); - var key = pair.slice(0, i); - var val = pair.slice(++i); - - obj[key] = decodeURIComponent(val); - return obj; - }, {}); -}; - -/** - * Highlight the given string of `js`. - * - * @api private - * @param {string} js - * @return {string} - */ -function highlight(js) { - return js - .replace(//g, '>') - .replace(/\/\/(.*)/gm, '//$1') - .replace(/('.*?')/gm, '$1') - .replace(/(\d+\.\d+)/gm, '$1') - .replace(/(\d+)/gm, '$1') - .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') - .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); -} - -/** - * Highlight the contents of tag `name`. - * - * @api private - * @param {string} name - */ -exports.highlightTags = function(name) { - var code = document.getElementById('mocha').getElementsByTagName(name); - for (var i = 0, len = code.length; i < len; ++i) { - code[i].innerHTML = highlight(code[i].innerHTML); - } -}; - -/** - * If a value could have properties, and has none, this function is called, - * which returns a string representation of the empty value. - * - * Functions w/ no properties return `'[Function]'` - * Arrays w/ length === 0 return `'[]'` - * Objects w/ no properties return `'{}'` - * All else: return result of `value.toString()` - * - * @api private - * @param {*} value The value to inspect. - * @param {string} [type] The type of the value, if known. - * @returns {string} - */ -function emptyRepresentation(value, type) { - type = type || exports.type(value); - - switch (type) { - case 'function': - return '[Function]'; - case 'object': - return '{}'; - case 'array': - return '[]'; - default: - return value.toString(); - } -} - -/** - * Takes some variable and asks `Object.prototype.toString()` what it thinks it - * is. - * - * @api private - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString - * @param {*} value The value to test. - * @returns {string} - * @example - * type({}) // 'object' - * type([]) // 'array' - * type(1) // 'number' - * type(false) // 'boolean' - * type(Infinity) // 'number' - * type(null) // 'null' - * type(new Date()) // 'date' - * type(/foo/) // 'regexp' - * type('type') // 'string' - * type(global) // 'global' - */ -exports.type = function type(value) { - if (value === undefined) { - return 'undefined'; - } else if (value === null) { - return 'null'; - } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - return 'buffer'; - } - return Object.prototype.toString.call(value) - .replace(/^\[.+\s(.+?)\]$/, '$1') - .toLowerCase(); -}; - -/** - * Stringify `value`. Different behavior depending on type of value: - * - * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. - * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. - * - If `value` is an *empty* object, function, or array, return result of function - * {@link emptyRepresentation}. - * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of - * JSON.stringify(). - * - * @api private - * @see exports.type - * @param {*} value - * @return {string} - */ -exports.stringify = function(value) { - var type = exports.type(value); - - if (!~exports.indexOf(['object', 'array', 'function'], type)) { - if (type !== 'buffer') { - return jsonStringify(value); - } - var json = value.toJSON(); - // Based on the toJSON result - return jsonStringify(json.data && json.type ? json.data : json, 2) - .replace(/,(\n|$)/g, '$1'); - } - - for (var prop in value) { - if (Object.prototype.hasOwnProperty.call(value, prop)) { - return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); - } - } - - return emptyRepresentation(value, type); -}; - -/** - * like JSON.stringify but more sense. - * - * @api private - * @param {Object} object - * @param {number=} spaces - * @param {number=} depth - * @returns {*} - */ -function jsonStringify(object, spaces, depth) { - if (typeof spaces === 'undefined') { - // primitive types - return _stringify(object); - } - - depth = depth || 1; - var space = spaces * depth; - var str = isArray(object) ? '[' : '{'; - var end = isArray(object) ? ']' : '}'; - var length = object.length || exports.keys(object).length; - // `.repeat()` polyfill - function repeat(s, n) { - return new Array(n).join(s); - } - - function _stringify(val) { - switch (exports.type(val)) { - case 'null': - case 'undefined': - val = '[' + val + ']'; - break; - case 'array': - case 'object': - val = jsonStringify(val, spaces, depth + 1); - break; - case 'boolean': - case 'regexp': - case 'number': - val = val === 0 && (1 / val) === -Infinity // `-0` - ? '-0' - : val.toString(); - break; - case 'date': - var sDate = isNaN(val.getTime()) // Invalid date - ? val.toString() - : val.toISOString(); - val = '[Date: ' + sDate + ']'; - break; - case 'buffer': - var json = val.toJSON(); - // Based on the toJSON result - json = json.data && json.type ? json.data : json; - val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; - break; - default: - val = (val === '[Function]' || val === '[Circular]') - ? val - : JSON.stringify(val); // string - } - return val; - } - - for (var i in object) { - if (!object.hasOwnProperty(i)) { - continue; // not my business - } - --length; - str += '\n ' + repeat(' ', space) - + (isArray(object) ? '' : '"' + i + '": ') // key - + _stringify(object[i]) // value - + (length ? ',' : ''); // comma - } - - return str - // [], {} - + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); -} - -/** - * Test if a value is a buffer. - * - * @api private - * @param {*} value The value to test. - * @return {boolean} True if `value` is a buffer, otherwise false - */ -exports.isBuffer = function(value) { - return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); -}; - -/** - * Return a new Thing that has the keys in sorted order. Recursive. - * - * If the Thing... - * - has already been seen, return string `'[Circular]'` - * - is `undefined`, return string `'[undefined]'` - * - is `null`, return value `null` - * - is some other primitive, return the value - * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method - * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. - * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` - * - * @api private - * @see {@link exports.stringify} - * @param {*} value Thing to inspect. May or may not have properties. - * @param {Array} [stack=[]] Stack of seen values - * @return {(Object|Array|Function|string|undefined)} - */ -exports.canonicalize = function(value, stack) { - var canonicalizedObj; - /* eslint-disable no-unused-vars */ - var prop; - /* eslint-enable no-unused-vars */ - var type = exports.type(value); - function withStack(value, fn) { - stack.push(value); - fn(); - stack.pop(); - } - - stack = stack || []; - - if (exports.indexOf(stack, value) !== -1) { - return '[Circular]'; - } - - switch (type) { - case 'undefined': - case 'buffer': - case 'null': - canonicalizedObj = value; - break; - case 'array': - withStack(value, function() { - canonicalizedObj = exports.map(value, function(item) { - return exports.canonicalize(item, stack); - }); - }); - break; - case 'function': - /* eslint-disable guard-for-in */ - for (prop in value) { - canonicalizedObj = {}; - break; - } - /* eslint-enable guard-for-in */ - if (!canonicalizedObj) { - canonicalizedObj = emptyRepresentation(value, type); - break; - } - /* falls through */ - case 'object': - canonicalizedObj = canonicalizedObj || {}; - withStack(value, function() { - exports.forEach(exports.keys(value).sort(), function(key) { - canonicalizedObj[key] = exports.canonicalize(value[key], stack); - }); - }); - break; - case 'date': - case 'number': - case 'regexp': - case 'boolean': - canonicalizedObj = value; - break; - default: - canonicalizedObj = value + ''; - } - - return canonicalizedObj; -}; - -/** - * Lookup file names at the given `path`. - * - * @api public - * @param {string} path Base path to start searching from. - * @param {string[]} extensions File extensions to look for. - * @param {boolean} recursive Whether or not to recurse into subdirectories. - * @return {string[]} An array of paths. - */ -exports.lookupFiles = function lookupFiles(path, extensions, recursive) { - var files = []; - var re = new RegExp('\\.(' + extensions.join('|') + ')$'); - - if (!exists(path)) { - if (exists(path + '.js')) { - path += '.js'; - } else { - files = glob.sync(path); - if (!files.length) { - throw new Error("cannot resolve path (or pattern) '" + path + "'"); - } - return files; - } - } - - try { - var stat = statSync(path); - if (stat.isFile()) { - return path; - } - } catch (err) { - // ignore error - return; - } - - readdirSync(path).forEach(function(file) { - file = join(path, file); - try { - var stat = statSync(file); - if (stat.isDirectory()) { - if (recursive) { - files = files.concat(lookupFiles(file, extensions, recursive)); - } - return; - } - } catch (err) { - // ignore error - return; - } - if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { - return; - } - files.push(file); - }); - - return files; -}; - -/** - * Generate an undefined error with a message warning the user. - * - * @return {Error} - */ - -exports.undefinedError = function() { - return new Error('Caught undefined error, did you throw without specifying what?'); -}; - -/** - * Generate an undefined error if `err` is not defined. - * - * @param {Error} err - * @return {Error} - */ - -exports.getError = function(err) { - return err || exports.undefinedError(); -}; - -/** - * @summary - * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) - * @description - * When invoking this function you get a filter function that get the Error.stack as an input, - * and return a prettify output. - * (i.e: strip Mocha and internal node functions from stack trace). - * @returns {Function} - */ -exports.stackTraceFilter = function() { - // TODO: Replace with `process.browser` - var slash = '/'; - var is = typeof document === 'undefined' ? { node: true } : { browser: true }; - var cwd = is.node - ? process.cwd() + slash - : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); - - function isMochaInternal(line) { - return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) - || (~line.indexOf('components' + slash + 'mochajs' + slash)) - || (~line.indexOf('components' + slash + 'mocha' + slash)) - || (~line.indexOf(slash + 'mocha.js')); - } - - function isNodeInternal(line) { - return (~line.indexOf('(timers.js:')) - || (~line.indexOf('(events.js:')) - || (~line.indexOf('(node.js:')) - || (~line.indexOf('(module.js:')) - || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) - || false; - } - - return function(stack) { - stack = stack.split('\n'); - - stack = exports.reduce(stack, function(list, line) { - if (isMochaInternal(line)) { - return list; - } - - if (is.node && isNodeInternal(line)) { - return list; - } - - // Clean up cwd(absolute) - list.push(line.replace(cwd, '')); - return list; - }, []); - - return stack.join('\n'); - }; -}; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"_process":51,"buffer":43,"debug":2,"fs":41,"glob":41,"path":41,"util":66}],40:[function(require,module,exports){ -(function (process){ -var WritableStream = require('stream').Writable -var inherits = require('util').inherits - -module.exports = BrowserStdout - - -inherits(BrowserStdout, WritableStream) - -function BrowserStdout(opts) { - if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts) - - opts = opts || {} - WritableStream.call(this, opts) - this.label = (opts.label !== undefined) ? opts.label : 'stdout' -} - -BrowserStdout.prototype._write = function(chunks, encoding, cb) { - var output = chunks.toString ? chunks.toString() : chunks - if (this.label === false) { - console.log(output) - } else { - console.log(this.label+':', output) - } - process.nextTick(cb) -} - -}).call(this,require('_process')) -},{"_process":51,"stream":63,"util":66}],41:[function(require,module,exports){ - -},{}],42:[function(require,module,exports){ -arguments[4][41][0].apply(exports,arguments) -},{"dup":41}],43:[function(require,module,exports){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('is-array') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 -Buffer.poolSize = 8192 // not used by this implementation - -var rootParent = {} - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property - * on objects. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = (function () { - function Bar () {} - try { - var arr = new Uint8Array(1) - arr.foo = function () { return 42 } - arr.constructor = Bar - return arr.foo() === 42 && // typed array instances can be augmented - arr.constructor === Bar && // constructor can be set - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -})() - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -/** - * Class: Buffer - * ============= - * - * The Buffer constructor returns instances of `Uint8Array` that are augmented - * with function properties for all the node `Buffer` API functions. We use - * `Uint8Array` so that square bracket notation works as expected -- it returns - * a single octet. - * - * By augmenting the instances, we can avoid modifying the `Uint8Array` - * prototype. - */ -function Buffer (arg) { - if (!(this instanceof Buffer)) { - // Avoid going through an ArgumentsAdaptorTrampoline in the common case. - if (arguments.length > 1) return new Buffer(arg, arguments[1]) - return new Buffer(arg) - } - - this.length = 0 - this.parent = undefined - - // Common case. - if (typeof arg === 'number') { - return fromNumber(this, arg) - } - - // Slightly less common case. - if (typeof arg === 'string') { - return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8') - } - - // Unusual. - return fromObject(this, arg) -} - -function fromNumber (that, length) { - that = allocate(that, length < 0 ? 0 : checked(length) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < length; i++) { - that[i] = 0 - } - } - return that -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8' - - // Assumption: byteLength() return value is always < kMaxLength. - var length = byteLength(string, encoding) | 0 - that = allocate(that, length) - - that.write(string, encoding) - return that -} - -function fromObject (that, object) { - if (Buffer.isBuffer(object)) return fromBuffer(that, object) - - if (isArray(object)) return fromArray(that, object) - - if (object == null) { - throw new TypeError('must start with number, buffer, array or string') - } - - if (typeof ArrayBuffer !== 'undefined') { - if (object.buffer instanceof ArrayBuffer) { - return fromTypedArray(that, object) - } - if (object instanceof ArrayBuffer) { - return fromArrayBuffer(that, object) - } - } - - if (object.length) return fromArrayLike(that, object) - - return fromJsonObject(that, object) -} - -function fromBuffer (that, buffer) { - var length = checked(buffer.length) | 0 - that = allocate(that, length) - buffer.copy(that, 0, 0, length) - return that -} - -function fromArray (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -// Duplicate of fromArray() to keep fromArray() monomorphic. -function fromTypedArray (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - // Truncating the elements is probably not what people expect from typed - // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior - // of the old Buffer constructor. - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayBuffer (that, array) { - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - array.byteLength - that = Buffer._augment(new Uint8Array(array)) - } else { - // Fallback: Return an object instance of the Buffer class - that = fromTypedArray(that, new Uint8Array(array)) - } - return that -} - -function fromArrayLike (that, array) { - var length = checked(array.length) | 0 - that = allocate(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object. -// Returns a zero-length buffer for inputs that don't conform to the spec. -function fromJsonObject (that, object) { - var array - var length = 0 - - if (object.type === 'Buffer' && isArray(object.data)) { - array = object.data - length = checked(array.length) | 0 - } - that = allocate(that, length) - - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function allocate (that, length) { - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = Buffer._augment(new Uint8Array(length)) - } else { - // Fallback: Return an object instance of the Buffer class - that.length = length - that._isBuffer = true - } - - var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1 - if (fromPool) that.parent = rootParent - - return that -} - -function checked (length) { - // Note: cannot use `length < kMaxLength` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (subject, encoding) { - if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding) - - var buf = new Buffer(subject, encoding) - delete buf.parent - return buf -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - var i = 0 - var len = Math.min(x, y) - while (i < len) { - if (a[i] !== b[i]) break - - ++i - } - - if (i !== len) { - x = a[i] - y = b[i] - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'binary': - case 'base64': - case 'raw': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.') - - if (list.length === 0) { - return new Buffer(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; i++) { - length += list[i].length - } - } - - var buf = new Buffer(length) - var pos = 0 - for (i = 0; i < list.length; i++) { - var item = list[i] - item.copy(buf, pos) - pos += item.length - } - return buf -} - -function byteLength (string, encoding) { - if (typeof string !== 'string') string = '' + string - - var len = string.length - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'binary': - // Deprecated - case 'raw': - case 'raws': - return len - case 'utf8': - case 'utf-8': - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -// pre-set for values that may exist in the future -Buffer.prototype.length = undefined -Buffer.prototype.parent = undefined - -function slowToString (encoding, start, end) { - var loweredCase = false - - start = start | 0 - end = end === undefined || end === Infinity ? this.length : end | 0 - - if (!encoding) encoding = 'utf8' - if (start < 0) start = 0 - if (end > this.length) end = this.length - if (end <= start) return '' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'binary': - return binarySlice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return 0 - return Buffer.compare(this, b) -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset) { - if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff - else if (byteOffset < -0x80000000) byteOffset = -0x80000000 - byteOffset >>= 0 - - if (this.length === 0) return -1 - if (byteOffset >= this.length) return -1 - - // Negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0) - - if (typeof val === 'string') { - if (val.length === 0) return -1 // special case: looking for empty string always fails - return String.prototype.indexOf.call(this, val, byteOffset) - } - if (Buffer.isBuffer(val)) { - return arrayIndexOf(this, val, byteOffset) - } - if (typeof val === 'number') { - if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') { - return Uint8Array.prototype.indexOf.call(this, val, byteOffset) - } - return arrayIndexOf(this, [ val ], byteOffset) - } - - function arrayIndexOf (arr, val, byteOffset) { - var foundIndex = -1 - for (var i = 0; byteOffset + i < arr.length; i++) { - if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex - } else { - foundIndex = -1 - } - } - return -1 - } - - throw new TypeError('val must be string, number or Buffer') -} - -// `get` is deprecated -Buffer.prototype.get = function get (offset) { - console.log('.get() is deprecated. Access using array indexes instead.') - return this.readUInt8(offset) -} - -// `set` is deprecated -Buffer.prototype.set = function set (v, offset) { - console.log('.set() is deprecated. Access using array indexes instead.') - return this.writeUInt8(v, offset) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - if (strLen % 2 !== 0) throw new Error('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; i++) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) throw new Error('Invalid hex string') - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function binaryWrite (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - var swap = encoding - encoding = offset - offset = length | 0 - length = swap - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'binary': - return binaryWrite(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function binarySlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; i++) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; i++) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = Buffer._augment(this.subarray(start, end)) - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; i++) { - newBuf[i] = this[i + start] - } - } - - if (newBuf.length) newBuf.parent = this.parent || this - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') - if (value > max || value < min) throw new RangeError('value is out of bounds') - if (offset + ext > buf.length) throw new RangeError('index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = value - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = value - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = value - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = value - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = value < 0 ? 1 : 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = value < 0 ? 1 : 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = value - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = value - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = value - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = value - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (value > max || value < min) throw new RangeError('value is out of bounds') - if (offset + ext > buf.length) throw new RangeError('index out of range') - if (offset < 0) throw new RangeError('index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - var i - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; i--) { - target[i + targetStart] = this[i + start] - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; i++) { - target[i + targetStart] = this[i + start] - } - } else { - target._set(this.subarray(start, start + len), targetStart) - } - - return len -} - -// fill(value, start=0, end=buffer.length) -Buffer.prototype.fill = function fill (value, start, end) { - if (!value) value = 0 - if (!start) start = 0 - if (!end) end = this.length - - if (end < start) throw new RangeError('end < start') - - // Fill 0 bytes; we're done - if (end === start) return - if (this.length === 0) return - - if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') - if (end < 0 || end > this.length) throw new RangeError('end out of bounds') - - var i - if (typeof value === 'number') { - for (i = start; i < end; i++) { - this[i] = value - } - } else { - var bytes = utf8ToBytes(value.toString()) - var len = bytes.length - for (i = start; i < end; i++) { - this[i] = bytes[i % len] - } - } - - return this -} - -/** - * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. - * Added in Node 0.12. Only available in browsers that support ArrayBuffer. - */ -Buffer.prototype.toArrayBuffer = function toArrayBuffer () { - if (typeof Uint8Array !== 'undefined') { - if (Buffer.TYPED_ARRAY_SUPPORT) { - return (new Buffer(this)).buffer - } else { - var buf = new Uint8Array(this.length) - for (var i = 0, len = buf.length; i < len; i += 1) { - buf[i] = this[i] - } - return buf.buffer - } - } else { - throw new TypeError('Buffer.toArrayBuffer not supported in this browser') - } -} - -// HELPER FUNCTIONS -// ================ - -var BP = Buffer.prototype - -/** - * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods - */ -Buffer._augment = function _augment (arr) { - arr.constructor = Buffer - arr._isBuffer = true - - // save reference to original Uint8Array set method before overwriting - arr._set = arr.set - - // deprecated - arr.get = BP.get - arr.set = BP.set - - arr.write = BP.write - arr.toString = BP.toString - arr.toLocaleString = BP.toString - arr.toJSON = BP.toJSON - arr.equals = BP.equals - arr.compare = BP.compare - arr.indexOf = BP.indexOf - arr.copy = BP.copy - arr.slice = BP.slice - arr.readUIntLE = BP.readUIntLE - arr.readUIntBE = BP.readUIntBE - arr.readUInt8 = BP.readUInt8 - arr.readUInt16LE = BP.readUInt16LE - arr.readUInt16BE = BP.readUInt16BE - arr.readUInt32LE = BP.readUInt32LE - arr.readUInt32BE = BP.readUInt32BE - arr.readIntLE = BP.readIntLE - arr.readIntBE = BP.readIntBE - arr.readInt8 = BP.readInt8 - arr.readInt16LE = BP.readInt16LE - arr.readInt16BE = BP.readInt16BE - arr.readInt32LE = BP.readInt32LE - arr.readInt32BE = BP.readInt32BE - arr.readFloatLE = BP.readFloatLE - arr.readFloatBE = BP.readFloatBE - arr.readDoubleLE = BP.readDoubleLE - arr.readDoubleBE = BP.readDoubleBE - arr.writeUInt8 = BP.writeUInt8 - arr.writeUIntLE = BP.writeUIntLE - arr.writeUIntBE = BP.writeUIntBE - arr.writeUInt16LE = BP.writeUInt16LE - arr.writeUInt16BE = BP.writeUInt16BE - arr.writeUInt32LE = BP.writeUInt32LE - arr.writeUInt32BE = BP.writeUInt32BE - arr.writeIntLE = BP.writeIntLE - arr.writeIntBE = BP.writeIntBE - arr.writeInt8 = BP.writeInt8 - arr.writeInt16LE = BP.writeInt16LE - arr.writeInt16BE = BP.writeInt16BE - arr.writeInt32LE = BP.writeInt32LE - arr.writeInt32BE = BP.writeInt32BE - arr.writeFloatLE = BP.writeFloatLE - arr.writeFloatBE = BP.writeFloatBE - arr.writeDoubleLE = BP.writeDoubleLE - arr.writeDoubleBE = BP.writeDoubleBE - arr.fill = BP.fill - arr.inspect = BP.inspect - arr.toArrayBuffer = BP.toArrayBuffer - - return arr -} - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; i++) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; i++) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; i++) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; i++) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -},{"base64-js":44,"ieee754":45,"is-array":46}],44:[function(require,module,exports){ -var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - -;(function (exports) { - 'use strict'; - - var Arr = (typeof Uint8Array !== 'undefined') - ? Uint8Array - : Array - - var PLUS = '+'.charCodeAt(0) - var SLASH = '/'.charCodeAt(0) - var NUMBER = '0'.charCodeAt(0) - var LOWER = 'a'.charCodeAt(0) - var UPPER = 'A'.charCodeAt(0) - var PLUS_URL_SAFE = '-'.charCodeAt(0) - var SLASH_URL_SAFE = '_'.charCodeAt(0) - - function decode (elt) { - var code = elt.charCodeAt(0) - if (code === PLUS || - code === PLUS_URL_SAFE) - return 62 // '+' - if (code === SLASH || - code === SLASH_URL_SAFE) - return 63 // '/' - if (code < NUMBER) - return -1 //no match - if (code < NUMBER + 10) - return code - NUMBER + 26 + 26 - if (code < UPPER + 26) - return code - UPPER - if (code < LOWER + 26) - return code - LOWER + 26 - } - - function b64ToByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - - if (b64.length % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - var len = b64.length - placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(b64.length * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? b64.length - 4 : b64.length - - var L = 0 - - function push (v) { - arr[L++] = v - } - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) - push((tmp & 0xFF0000) >> 16) - push((tmp & 0xFF00) >> 8) - push(tmp & 0xFF) - } - - if (placeHolders === 2) { - tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) - push(tmp & 0xFF) - } else if (placeHolders === 1) { - tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) - push((tmp >> 8) & 0xFF) - push(tmp & 0xFF) - } - - return arr - } - - function uint8ToBase64 (uint8) { - var i, - extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes - output = "", - temp, length - - function encode (num) { - return lookup.charAt(num) - } - - function tripletToBase64 (num) { - return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) - } - - // go through the array every three bytes, we'll deal with trailing stuff later - for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { - temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output += tripletToBase64(temp) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - switch (extraBytes) { - case 1: - temp = uint8[uint8.length - 1] - output += encode(temp >> 2) - output += encode((temp << 4) & 0x3F) - output += '==' - break - case 2: - temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) - output += encode(temp >> 10) - output += encode((temp >> 4) & 0x3F) - output += encode((temp << 2) & 0x3F) - output += '=' - break - } - - return output - } - - exports.toByteArray = b64ToByteArray - exports.fromByteArray = uint8ToBase64 -}(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) - -},{}],45:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} - -},{}],46:[function(require,module,exports){ - -/** - * isArray - */ - -var isArray = Array.isArray; - -/** - * toString - */ - -var str = Object.prototype.toString; - -/** - * Whether or not the given `val` - * is an array. - * - * example: - * - * isArray([]); - * // > true - * isArray(arguments); - * // > false - * isArray(''); - * // > false - * - * @param {mixed} val - * @return {bool} - */ - -module.exports = isArray || function (val) { - return !! val && '[object Array]' == str.call(val); -}; - -},{}],47:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } - throw TypeError('Uncaught, unspecified "error" event.'); - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - handler.apply(this, args); - } - } else if (isObject(handler)) { - len = arguments.length; - args = new Array(len - 1); - for (i = 1; i < len; i++) - args[i - 1] = arguments[i]; - - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - var m; - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.listenerCount = function(emitter, type) { - var ret; - if (!emitter._events || !emitter._events[type]) - ret = 0; - else if (isFunction(emitter._events[type])) - ret = 1; - else - ret = emitter._events[type].length; - return ret; -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],48:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],49:[function(require,module,exports){ -module.exports = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]'; -}; - -},{}],50:[function(require,module,exports){ -exports.endianness = function () { return 'LE' }; - -exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname - } - else return ''; -}; - -exports.loadavg = function () { return [] }; - -exports.uptime = function () { return 0 }; - -exports.freemem = function () { - return Number.MAX_VALUE; -}; - -exports.totalmem = function () { - return Number.MAX_VALUE; -}; - -exports.cpus = function () { return [] }; - -exports.type = function () { return 'Browser' }; - -exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; -}; - -exports.networkInterfaces -= exports.getNetworkInterfaces -= function () { return {} }; - -exports.arch = function () { return 'javascript' }; - -exports.platform = function () { return 'browser' }; - -exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; -}; - -exports.EOL = '\n'; - -},{}],51:[function(require,module,exports){ -// shim for using process in browser - -var process = module.exports = {}; -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = setTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - clearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - setTimeout(drainQueue, 0); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],52:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") - -},{"./lib/_stream_duplex.js":53}],53:[function(require,module,exports){ -(function (process){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -}).call(this,require('_process')) -},{"./_stream_readable":55,"./_stream_writable":57,"_process":51,"core-util-is":58,"inherits":48}],54:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; - -},{"./_stream_transform":56,"core-util-is":58,"inherits":48}],55:[function(require,module,exports){ -(function (process){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - - -/**/ -var debug = require('util'); -if (debug && debug.debuglog) { - debug = debug.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) - this.objectMode = this.objectMode || !!options.readableObjectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - var Duplex = require('./_stream_duplex'); - - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (util.isString(chunk) && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (util.isNullOrUndefined(chunk)) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - if (!addToFront) - state.reading = false; - - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) - state.buffer.unshift(chunk); - else - state.buffer.push(chunk); - - if (state.needReadable) - emitReadable(stream); - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (isNaN(n) || util.isNull(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; - - if (!util.isNumber(n) || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) - endReadable(this); - else - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) - endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } - - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (util.isNull(ret)) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) - endReadable(this); - - if (!util.isNull(ret)) - this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && - (!dest._writableState || dest._writableState.needDrain)) - ondrain(); - } - - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - debug('false write response, pause', - src._readableState.awaitDrain); - src._readableState.awaitDrain++; - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) - state.awaitDrain--; - if (state.awaitDrain === 0 && EE.listenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - var self = this; - process.nextTick(function() { - debug('readable nexttick read 0'); - self.read(0); - }); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - if (!state.reading) { - debug('resume read 0'); - this.read(0); - } - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - process.nextTick(function() { - resume_(stream, state); - }); - } -} - -function resume_(stream, state) { - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) - stream.read(0); -} - -Readable.prototype.pause = function() { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - debug('wrapped data'); - if (state.decoder) - chunk = state.decoder.write(chunk); - if (!chunk || !state.objectMode && !chunk.length) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (util.isFunction(stream[i]) && util.isUndefined(this[i])) { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} - -}).call(this,require('_process')) -},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"events":47,"inherits":48,"isarray":49,"stream":63,"string_decoder/":64,"util":42}],56:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (!util.isNullOrUndefined(data)) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('prefinish', function() { - if (util.isFunction(this._flush)) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (!util.isNull(ts.writechunk) && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} - -},{"./_stream_duplex":53,"core-util-is":58,"inherits":48}],57:[function(require,module,exports){ -(function (process){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - var Duplex = require('./_stream_duplex'); - - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = options.objectMode ? 16 : 16 * 1024; - this.highWaterMark = (hwm || hwm === 0) ? hwm : defaultHwm; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) - this.objectMode = this.objectMode || !!options.writableObjectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!util.isBuffer(chunk) && - !util.isString(chunk) && - !util.isNullOrUndefined(chunk) && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (util.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (!util.isFunction(cb)) - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function() { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function() { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && - !state.corked && - !state.finished && - !state.bufferProcessing && - state.buffer.length) - clearBuffer(this, state); - } -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - util.isString(chunk)) { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (util.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing || state.corked) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, false, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) - stream._writev(chunk, state.onwrite); - else - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - state.pendingcb--; - cb(er); - }); - else { - state.pendingcb--; - cb(er); - } - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && - !state.corked && - !state.bufferProcessing && - state.buffer.length) { - clearBuffer(stream, state); - } - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - if (stream._writev && state.buffer.length > 1) { - // Fast case, write everything using _writev() - var cbs = []; - for (var c = 0; c < state.buffer.length; c++) - cbs.push(state.buffer[c].callback); - - // count the one we are adding, as well. - // TODO(isaacs) clean this up - state.pendingcb++; - doWrite(stream, state, true, state.length, state.buffer, '', function(err) { - for (var i = 0; i < cbs.length; i++) { - state.pendingcb--; - cbs[i](err); - } - }); - - // Clear buffer - state.buffer = []; - } else { - // Slow case, write chunks one-by-one - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; - } - - state.bufferProcessing = false; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); - -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (util.isFunction(chunk)) { - cb = chunk; - chunk = null; - encoding = null; - } else if (util.isFunction(encoding)) { - cb = encoding; - encoding = null; - } - - if (!util.isNullOrUndefined(chunk)) - this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else - prefinish(stream, state); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} - -}).call(this,require('_process')) -},{"./_stream_duplex":53,"_process":51,"buffer":43,"core-util-is":58,"inherits":48,"stream":63}],58:[function(require,module,exports){ -(function (Buffer){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -function isBuffer(arg) { - return Buffer.isBuffer(arg); -} -exports.isBuffer = isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} -}).call(this,require("buffer").Buffer) -},{"buffer":43}],59:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") - -},{"./lib/_stream_passthrough.js":54}],60:[function(require,module,exports){ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = require('stream'); -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -},{"./lib/_stream_duplex.js":53,"./lib/_stream_passthrough.js":54,"./lib/_stream_readable.js":55,"./lib/_stream_transform.js":56,"./lib/_stream_writable.js":57,"stream":63}],61:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") - -},{"./lib/_stream_transform.js":56}],62:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") - -},{"./lib/_stream_writable.js":57}],63:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Stream; - -var EE = require('events').EventEmitter; -var inherits = require('inherits'); - -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); - -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; - - - -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. - -function Stream() { - EE.call(this); -} - -Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; - -},{"events":47,"inherits":48,"readable-stream/duplex.js":52,"readable-stream/passthrough.js":59,"readable-stream/readable.js":60,"readable-stream/transform.js":61,"readable-stream/writable.js":62}],64:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} - -},{"buffer":43}],65:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],66:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":65,"_process":51,"inherits":48}],67:[function(require,module,exports){ -/* See LICENSE file for terms of use */ - -/* - * Text diff implementation. - * - * This library supports the following APIS: - * JsDiff.diffChars: Character by character diff - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace - * JsDiff.diffLines: Line based diff - * - * JsDiff.diffCss: Diff targeted at CSS content - * - * These methods are based on the implementation proposed in - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - */ -(function(global, undefined) { - var objectPrototypeToString = Object.prototype.toString; - - /*istanbul ignore next*/ - function map(arr, mapper, that) { - if (Array.prototype.map) { - return Array.prototype.map.call(arr, mapper, that); - } - - var other = new Array(arr.length); - - for (var i = 0, n = arr.length; i < n; i++) { - other[i] = mapper.call(that, arr[i], i, arr); - } - return other; - } - function clonePath(path) { - return { newPos: path.newPos, components: path.components.slice(0) }; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, '&'); - n = n.replace(//g, '>'); - n = n.replace(/"/g, '"'); - - return n; - } - - // This function handles the presence of circular references by bailing out when encountering an - // object that is already on the "stack" of items being processed. - function canonicalize(obj, stack, replacementStack) { - stack = stack || []; - replacementStack = replacementStack || []; - - var i; - - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - - var canonicalizedObj; - - if ('[object Array]' === objectPrototypeToString.call(obj)) { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack); - } - stack.pop(); - replacementStack.pop(); - } else if (typeof obj === 'object' && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], - key; - for (key in obj) { - sortedKeys.push(key); - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - key = sortedKeys[i]; - canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; - } - - function buildValues(components, newString, oldString, useLongestToken) { - var componentPos = 0, - componentLen = components.length, - newPos = 0, - oldPos = 0; - - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = map(value, function(value, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value.length ? oldValue : value; - }); - - component.value = value.join(''); - } else { - component.value = newString.slice(newPos, newPos + component.count).join(''); - } - newPos += component.count; - - // Common case - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = oldString.slice(oldPos, oldPos + component.count).join(''); - oldPos += component.count; - - // Reverse add and remove so removes are output first to match common convention - // The diffing algorithm is tied to add then remove output and this is the simplest - // route to get the desired output with minimal overhead. - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - - return components; - } - - function Diff(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - } - Diff.prototype = { - diff: function(oldString, newString, callback) { - var self = this; - - function done(value) { - if (callback) { - setTimeout(function() { callback(undefined, value); }, 0); - return true; - } else { - return value; - } - } - - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString === oldString) { - return done([{ value: newString }]); - } - if (!newString) { - return done([{ value: oldString, removed: true }]); - } - if (!oldString) { - return done([{ value: newString, added: true }]); - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - var bestPath = [{ newPos: -1, components: [] }]; - - // Seed editLength = 0, i.e. the content starts with the same values - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - // Identity per the equality and tokenizer - return done([{value: newString.join('')}]); - } - - // Main worker method. checks all permutations of a given edit length for acceptance. - function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { - var basePath; - var addPath = bestPath[diagonalPath - 1], - removePath = bestPath[diagonalPath + 1], - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath - 1] = undefined; - } - - var canAdd = addPath && addPath.newPos + 1 < newLen, - canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - // If this path is a terminal then prune - bestPath[diagonalPath] = undefined; - continue; - } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - self.pushComponent(basePath.components, undefined, true); - } else { - basePath = addPath; // No need to clone, we've pulled it from the list - basePath.newPos++; - self.pushComponent(basePath.components, true, undefined); - } - - oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); - - // If we have hit the end of both strings, then we are done - if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return done(buildValues(basePath.components, newString, oldString, self.useLongestToken)); - } else { - // Otherwise track this path as a potential candidate and continue. - bestPath[diagonalPath] = basePath; - } - } - - editLength++; - } - - // Performs the length of edit iteration. Is a bit fugly as this has to support the - // sync and async mode which is never fun. Loops over execEditLength until a value - // is produced. - if (callback) { - (function exec() { - setTimeout(function() { - // This should not happen, but we want to be safe. - /*istanbul ignore next */ - if (editLength > maxEditLength) { - return callback(); - } - - if (!execEditLength()) { - exec(); - } - }, 0); - }()); - } else { - while (editLength <= maxEditLength) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - - pushComponent: function(components, added, removed) { - var last = components[components.length - 1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length - 1] = {count: last.count + 1, added: added, removed: removed }; - } else { - components.push({count: 1, added: added, removed: removed }); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath, - - commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - - if (commonCount) { - basePath.components.push({count: commonCount}); - } - - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)); - }, - tokenize: function(value) { - return value.split(''); - } - }; - - var CharDiff = new Diff(); - - var WordDiff = new Diff(true); - var WordWithSpaceDiff = new Diff(); - WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/)); - }; - - var CssDiff = new Diff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/)); - }; - - var LineDiff = new Diff(); - - var TrimmedLineDiff = new Diff(); - TrimmedLineDiff.ignoreTrim = true; - - LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) { - var retLines = [], - lines = value.split(/^/m); - for (var i = 0; i < lines.length; i++) { - var line = lines[i], - lastLine = lines[i - 1], - lastLineLastChar = lastLine && lastLine[lastLine.length - 1]; - - // Merge lines that may contain windows new lines - if (line === '\n' && lastLineLastChar === '\r') { - retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n'; - } else { - if (this.ignoreTrim) { - line = line.trim(); - // add a newline unless this is the last line. - if (i < lines.length - 1) { - line += '\n'; - } - } - retLines.push(line); - } - } - - return retLines; - }; - - var PatchDiff = new Diff(); - PatchDiff.tokenize = function(value) { - var ret = [], - linesAndNewlines = value.split(/(\n|\r\n)/); - - // Ignore the final empty token that occurs if the string ends with a new line - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - - // Merge the content and line separators into single tokens - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - - if (i % 2) { - ret[ret.length - 1] += line; - } else { - ret.push(line); - } - } - return ret; - }; - - var SentenceDiff = new Diff(); - SentenceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/)); - }; - - var JsonDiff = new Diff(); - // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a - // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: - JsonDiff.useLongestToken = true; - JsonDiff.tokenize = LineDiff.tokenize; - JsonDiff.equals = function(left, right) { - return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); - }; - - var JsDiff = { - Diff: Diff, - - diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); }, - diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); }, - diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); }, - diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); }, - diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); }, - - diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); }, - - diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); }, - diffJson: function(oldObj, newObj, callback) { - return JsonDiff.diff( - typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, ' '), - typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, ' '), - callback - ); - }, - - createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; - - if (oldFileName == newFileName) { - ret.push('Index: ' + oldFileName); - } - ret.push('==================================================================='); - ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); - ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); - - var diff = PatchDiff.diff(oldStr, newStr); - diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier - - // Formats a given set of lines for printing as context lines in a patch - function contextLines(lines) { - return map(lines, function(entry) { return ' ' + entry; }); - } - - // Outputs the no newline at end of file warning if needed - function eofNL(curRange, i, current) { - var last = diff[diff.length - 2], - isLast = i === diff.length - 2, - isLastOfType = i === diff.length - 3 && current.added !== last.added; - - // Figure out if this is the last line for the given file and missing NL - if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) { - curRange.push('\\ No newline at end of file'); - } - } - - var oldRangeStart = 0, newRangeStart = 0, curRange = [], - oldLine = 1, newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - // If we have previous context, start with that - if (!oldRangeStart) { - var prev = diff[i - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = contextLines(prev.lines.slice(-4)); - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - - // Output our changes - curRange.push.apply(curRange, map(lines, function(entry) { - return (current.added ? '+' : '-') + entry; - })); - eofNL(curRange, i, current); - - // Track the updated file position - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - // Identical context lines. Track line changes - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= 8 && i < diff.length - 2) { - // Overlapping - curRange.push.apply(curRange, contextLines(lines)); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize) - + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize) - + ' @@'); - ret.push.apply(ret, curRange); - ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); - if (lines.length <= 4) { - eofNL(ret, i, current); - } - - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - - return ret.join('\n') + '\n'; - }, - - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader); - }, - - applyPatch: function(oldStr, uniDiff) { - var diffstr = uniDiff.split('\n'), - hunks = [], - i = 0, - remEOFNL = false, - addEOFNL = false; - - // Skip to the first change hunk - while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) { - i++; - } - - // Parse the unified diff - for (; i < diffstr.length; i++) { - if (diffstr[i][0] === '@') { - var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); - hunks.unshift({ - start: chnukHeader[3], - oldlength: +chnukHeader[2], - removed: [], - newlength: chnukHeader[4], - added: [] - }); - } else if (diffstr[i][0] === '+') { - hunks[0].added.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '-') { - hunks[0].removed.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === ' ') { - hunks[0].added.push(diffstr[i].substr(1)); - hunks[0].removed.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '\\') { - if (diffstr[i - 1][0] === '+') { - remEOFNL = true; - } else if (diffstr[i - 1][0] === '-') { - addEOFNL = true; - } - } - } - - // Apply the diff to the input - var lines = oldStr.split('\n'); - for (i = hunks.length - 1; i >= 0; i--) { - var hunk = hunks[i]; - // Sanity check the input string. Bail if we don't match. - for (var j = 0; j < hunk.oldlength; j++) { - if (lines[hunk.start - 1 + j] !== hunk.removed[j]) { - return false; - } - } - Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added)); - } - - // Handle EOFNL insertion/removal - if (remEOFNL) { - while (!lines[lines.length - 1]) { - lines.pop(); - } - } else if (addEOFNL) { - lines.push(''); - } - return lines.join('\n'); - }, - - convertChangesToXML: function(changes) { - var ret = []; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - - ret.push(escapeHTML(change.value)); - - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - } - return ret.join(''); - }, - - // See: http://code.google.com/p/google-diff-match-patch/wiki/API - convertChangesToDMP: function(changes) { - var ret = [], - change, - operation; - for (var i = 0; i < changes.length; i++) { - change = changes[i]; - if (change.added) { - operation = 1; - } else if (change.removed) { - operation = -1; - } else { - operation = 0; - } - - ret.push([operation, change.value]); - } - return ret; - }, - - canonicalize: canonicalize - }; - - /*istanbul ignore next */ - /*global module */ - if (typeof module !== 'undefined' && module.exports) { - module.exports = JsDiff; - } else if (typeof define === 'function' && define.amd) { - /*global define */ - define([], function() { return JsDiff; }); - } else if (typeof global.JsDiff === 'undefined') { - global.JsDiff = JsDiff; - } -}(this)); - -},{}],68:[function(require,module,exports){ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; - -},{}],69:[function(require,module,exports){ -(function (process){ -// Growl - Copyright TJ Holowaychuk (MIT Licensed) - -/** - * Module dependencies. - */ - -var exec = require('child_process').exec - , fs = require('fs') - , path = require('path') - , exists = fs.existsSync || path.existsSync - , os = require('os') - , quote = JSON.stringify - , cmd; - -function which(name) { - var paths = process.env.PATH.split(':'); - var loc; - - for (var i = 0, len = paths.length; i < len; ++i) { - loc = path.join(paths[i], name); - if (exists(loc)) return loc; - } -} - -switch(os.type()) { - case 'Darwin': - if (which('terminal-notifier')) { - cmd = { - type: "Darwin-NotificationCenter" - , pkg: "terminal-notifier" - , msg: '-message' - , title: '-title' - , subtitle: '-subtitle' - , priority: { - cmd: '-execute' - , range: [] - } - }; - } else { - cmd = { - type: "Darwin-Growl" - , pkg: "growlnotify" - , msg: '-m' - , sticky: '--sticky' - , priority: { - cmd: '--priority' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - , "Very Low" - , "Moderate" - , "Normal" - , "High" - , "Emergency" - ] - } - }; - } - break; - case 'Linux': - cmd = { - type: "Linux" - , pkg: "notify-send" - , msg: '' - , sticky: '-t 0' - , icon: '-i' - , priority: { - cmd: '-u' - , range: [ - "low" - , "normal" - , "critical" - ] - } - }; - break; - case 'Windows_NT': - cmd = { - type: "Windows" - , pkg: "growlnotify" - , msg: '' - , sticky: '/s:true' - , title: '/t:' - , icon: '/i:' - , priority: { - cmd: '/p:' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - ] - } - }; - break; -} - -/** - * Expose `growl`. - */ - -exports = module.exports = growl; - -/** - * Node-growl version. - */ - -exports.version = '1.4.1' - -/** - * Send growl notification _msg_ with _options_. - * - * Options: - * - * - title Notification title - * - sticky Make the notification stick (defaults to false) - * - priority Specify an int or named key (default is 0) - * - name Application name (defaults to growlnotify) - * - image - * - path to an icon sets --iconpath - * - path to an image sets --image - * - capitalized word sets --appIcon - * - filename uses extname as --icon - * - otherwise treated as --icon - * - * Examples: - * - * growl('New email') - * growl('5 new emails', { title: 'Thunderbird' }) - * growl('Email sent', function(){ - * // ... notification sent - * }) - * - * @param {string} msg - * @param {object} options - * @param {function} fn - * @api public - */ - -function growl(msg, options, fn) { - var image - , args - , options = options || {} - , fn = fn || function(){}; - - // noop - if (!cmd) return fn(new Error('growl not supported on this platform')); - args = [cmd.pkg]; - - // image - if (image = options.image) { - switch(cmd.type) { - case 'Darwin-Growl': - var flag, ext = path.extname(image).substr(1) - flag = flag || ext == 'icns' && 'iconpath' - flag = flag || /^[A-Z]/.test(image) && 'appIcon' - flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image' - flag = flag || ext && (image = ext) && 'icon' - flag = flag || 'icon' - args.push('--' + flag, quote(image)) - break; - case 'Linux': - args.push(cmd.icon, quote(image)); - // libnotify defaults to sticky, set a hint for transient notifications - if (!options.sticky) args.push('--hint=int:transient:1'); - break; - case 'Windows': - args.push(cmd.icon + quote(image)); - break; - } - } - - // sticky - if (options.sticky) args.push(cmd.sticky); - - // priority - if (options.priority) { - var priority = options.priority + ''; - var checkindexOf = cmd.priority.range.indexOf(priority); - if (~cmd.priority.range.indexOf(priority)) { - args.push(cmd.priority, options.priority); - } - } - - // name - if (options.name && cmd.type === "Darwin-Growl") { - args.push('--name', options.name); - } - - switch(cmd.type) { - case 'Darwin-Growl': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) args.push(quote(options.title)); - break; - case 'Darwin-NotificationCenter': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) { - args.push(cmd.title); - args.push(quote(options.title)); - } - if (options.subtitle) { - args.push(cmd.subtitle); - args.push(quote(options.subtitle)); - } - break; - case 'Darwin-Growl': - args.push(cmd.msg); - args.push(quote(msg)); - if (options.title) args.push(quote(options.title)); - break; - case 'Linux': - if (options.title) { - args.push(quote(options.title)); - args.push(cmd.msg); - args.push(quote(msg)); - } else { - args.push(quote(msg)); - } - break; - case 'Windows': - args.push(quote(msg)); - if (options.title) args.push(cmd.title + quote(options.title)); - break; - } - - // execute - exec(args.join(' '), fn); -}; - -}).call(this,require('_process')) -},{"_process":51,"child_process":41,"fs":41,"os":50,"path":41}],70:[function(require,module,exports){ -(function (process){ -var path = require('path'); -var fs = require('fs'); -var _0777 = parseInt('0777', 8); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, opts, f, made) { - if (typeof opts === 'function') { - f = opts; - opts = {}; - } - else if (!opts || typeof opts !== 'object') { - opts = { mode: opts }; - } - - var mode = opts.mode; - var xfs = opts.fs || fs; - - if (mode === undefined) { - mode = _0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - p = path.resolve(p); - - xfs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), opts, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, opts, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - xfs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, opts, made) { - if (!opts || typeof opts !== 'object') { - opts = { mode: opts }; - } - - var mode = opts.mode; - var xfs = opts.fs || fs; - - if (mode === undefined) { - mode = _0777 & (~process.umask()); - } - if (!made) made = null; - - p = path.resolve(p); - - try { - xfs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), opts, made); - sync(p, opts, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = xfs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; - -}).call(this,require('_process')) -},{"_process":51,"fs":41,"path":41}],71:[function(require,module,exports){ -(function (process,global){ -/** - * Shim process.stdout. - */ - -process.stdout = require('browser-stdout')(); - -var Mocha = require('../'); - -/** - * Create a Mocha instance. - * - * @return {undefined} - */ - -var mocha = new Mocha({ reporter: 'html' }); - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; - -var uncaughtExceptionHandlers = []; - -var originalOnerrorHandler = global.onerror; - -/** - * Remove uncaughtException listener. - * Revert to original onerror handler if previously defined. - */ - -process.removeListener = function(e, fn){ - if ('uncaughtException' == e) { - if (originalOnerrorHandler) { - global.onerror = originalOnerrorHandler; - } else { - global.onerror = function() {}; - } - var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn); - if (i != -1) { uncaughtExceptionHandlers.splice(i, 1); } - } -}; - -/** - * Implements uncaughtException listener. - */ - -process.on = function(e, fn){ - if ('uncaughtException' == e) { - global.onerror = function(err, url, line){ - fn(new Error(err + ' (' + url + ':' + line + ')')); - return !mocha.allowUncaught; - }; - uncaughtExceptionHandlers.push(fn); - } -}; - -// The BDD UI is registered by default, but no UI will be functional in the -// browser without an explicit call to the overridden `mocha.ui` (see below). -// Ensure that this default UI does not expose its methods to the global scope. -mocha.suite.removeAllListeners('pre-require'); - -var immediateQueue = [] - , immediateTimeout; - -function timeslice() { - var immediateStart = new Date().getTime(); - while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) { - immediateQueue.shift()(); - } - if (immediateQueue.length) { - immediateTimeout = setTimeout(timeslice, 0); - } else { - immediateTimeout = null; - } -} - -/** - * High-performance override of Runner.immediately. - */ - -Mocha.Runner.immediately = function(callback) { - immediateQueue.push(callback); - if (!immediateTimeout) { - immediateTimeout = setTimeout(timeslice, 0); - } -}; - -/** - * Function to allow assertion libraries to throw errors directly into mocha. - * This is useful when running tests in a browser because window.onerror will - * only receive the 'message' attribute of the Error. - */ -mocha.throwError = function(err) { - Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) { - fn(err); - }); - throw err; -}; - -/** - * Override ui to ensure that the ui functions are initialized. - * Normally this would happen in Mocha.prototype.loadFiles. - */ - -mocha.ui = function(ui){ - Mocha.prototype.ui.call(this, ui); - this.suite.emit('pre-require', global, null, this); - return this; -}; - -/** - * Setup mocha with the given setting options. - */ - -mocha.setup = function(opts){ - if ('string' == typeof opts) opts = { ui: opts }; - for (var opt in opts) this[opt](opts[opt]); - return this; -}; - -/** - * Run mocha, returning the Runner. - */ - -mocha.run = function(fn){ - var options = mocha.options; - mocha.globals('location'); - - var query = Mocha.utils.parseQuery(global.location.search || ''); - if (query.grep) mocha.grep(new RegExp(query.grep)); - if (query.fgrep) mocha.grep(query.fgrep); - if (query.invert) mocha.invert(); - - return Mocha.prototype.run.call(mocha, function(err){ - // The DOM Document is not available in Web Workers. - var document = global.document; - if (document && document.getElementById('mocha') && options.noHighlighting !== true) { - Mocha.utils.highlightTags('code'); - } - if (fn) fn(err); - }); -}; - -/** - * Expose the process shim. - * https://github.com/mochajs/mocha/pull/916 - */ - -Mocha.process = process; - -/** - * Expose mocha. - */ - -global.Mocha = Mocha; -global.mocha = mocha; - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../":1,"_process":51,"browser-stdout":40}]},{},[71]); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/.bin/supports-color b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/.bin/supports-color deleted file mode 100755 index e7469876..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/.bin/supports-color +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var supportsColor = require('./'); -var argv = process.argv.slice(2); - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' supports-color', - '', - ' Exits with code 0 if color is supported and 1 if not' - ].join('\n')); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -process.exit(supportsColor ? 0 : 1); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/Readme.md deleted file mode 100644 index 7bb60b2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/Readme.md +++ /dev/null @@ -1,208 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://api.travis-ci.org/visionmedia/commander.js.svg)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineapple'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineapple - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -function collect(val, memo) { - memo.push(val); - return memo; -} - -function increaseVerbosity(v, total) { - return total + 1; -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .option('-c, --collect [value]', 'A repeatable value', collect, []) - .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' collect: %j', program.collect); -console.log(' verbosity: %j', program.verbose); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .outputHelp() - - Output help information without exiting. - -## .help() - - Output help information and exit immediately. - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/index.js deleted file mode 100644 index 8378d19a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/index.js +++ /dev/null @@ -1,876 +0,0 @@ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var spawn = require('child_process').spawn; -var path = require('path'); -var dirname = path.dirname; -var basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description || ''; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this._execs = []; - this._args = []; - this._name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @param {String} [desc] - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name, desc) { - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - if (desc) cmd.description(desc); - if (desc) this.executables = true; - if (desc) this._execs[cmd._name] = true; - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - if (desc) return this; - return cmd; -}; - -/** - * Add an implicit `help [cmd]` subcommand - * which invokes `--help` for the given command. - * - * @api private - */ - -Command.prototype.addImplicitHelpCommand = function() { - this.command('help [cmd]', 'display help for [cmd]'); -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self._args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self._args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - var listener = function(args, unknown){ - // Parse any so-far unknown options - args = args || []; - unknown = unknown || []; - - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - // Leftover arguments need to be pushed back. Fixes issue #56 - if (parsed.args.length) args = parsed.args.concat(args); - - self._args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self._args.length) { - args[self._args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }; - this.parent.on(this._name, listener); - if (this._alias) this.parent.on(this._alias, listener); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to true - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => false - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null !== val && fn) val = fn(val, undefined === self[name] ? defaultValue : self[name]); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // implicit help - if (this.executables) this.addImplicitHelpCommand(); - - // store raw args - this.rawArgs = argv; - - // guess name - this._name = this._name || basename(argv[1], '.js'); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - var args = this.args = parsed.args; - - var result = this.parseArgs(this.args, parsed.unknown); - - // executable sub-commands - var name = result.args[0]; - if (this._execs[name]) return this.executeSubCommand(argv, args, parsed.unknown); - - return result; -}; - -/** - * Execute a sub-command executable. - * - * @param {Array} argv - * @param {Array} args - * @param {Array} unknown - * @api private - */ - -Command.prototype.executeSubCommand = function(argv, args, unknown) { - args = args.concat(unknown); - - if (!args.length) this.help(); - if ('help' == args[0] && 1 == args.length) this.help(); - - // --help - if ('help' == args[0]) { - args[0] = args[1]; - args[1] = '--help'; - } - - // executable - var dir = dirname(argv[1]); - var bin = basename(argv[1], '.js') + '-' + args[0]; - - // check for ./ first - var local = path.join(dir, bin); - - // run it - args = args.slice(1); - args.unshift(local); - var proc = spawn('node', args, { stdio: 'inherit', customFds: [0, 1, 2] }); - proc.on('error', function(err){ - if (err.code == "ENOENT") { - console.error('\n %s(1) does not exist, try --help\n', bin); - } else if (err.code == "EACCES") { - console.error('\n %s(1) not executable. try chmod or run with root\n', bin); - } - }); - - this.runningCommand = proc; -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * This also normalizes equal sign and splits "--abc=def" into "--abc def". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg - , lastOpt - , index; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - i > 0 && (lastOpt = this.optionFor(args[i-1])); - - if (lastOpt && lastOpt.required) { - ret.push(arg); - } else if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { - ret.push(arg.slice(0, index), arg.slice(index + 1)); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || ('-' == arg[0] && '-' != arg)) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set an alias for the command - * - * @param {String} alias - * @return {String|Command} - * @api public - */ - -Command.prototype.alias = function(alias){ - if (0 == arguments.length) return this._alias; - this._alias = alias; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this._args.length ? ' ' + args : ''); - - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return cmd._name - + (cmd._alias - ? '|' + cmd._alias - : '') - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args - + (cmd.description() - ? '\n ' + cmd.description() - : '') - + '\n'; - }).join('\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this._name - + (this._alias - ? '|' + this._alias - : '') - + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Output help information for this command - * - * @api public - */ - -Command.prototype.outputHelp = function(){ - process.stdout.write(this.helpInformation()); - this.emit('--help'); -}; - -/** - * Output help information and exit. - * - * @api public - */ - -Command.prototype.help = function(){ - this.outputHelp(); - process.exit(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - cmd.outputHelp(); - process.exit(0); - } - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/package.json deleted file mode 100644 index fa46d8fb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/commander/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "commander@2.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/mocha" - ] - ], - "_from": "commander@2.3.0", - "_id": "commander@2.3.0", - "_inCache": true, - "_installable": true, - "_location": "/mocha/commander", - "_npmUser": { - "email": "rkoutnik@gmail.com", - "name": "somekittens" - }, - "_npmVersion": "1.4.21", - "_phantomChildren": {}, - "_requested": { - "name": "commander", - "raw": "commander@2.3.0", - "rawSpec": "2.3.0", - "scope": null, - "spec": "2.3.0", - "type": "version" - }, - "_requiredBy": [ - "/mocha" - ], - "_resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "_shasum": "fd430e889832ec353b9acd1de217c11cb3eef873", - "_shrinkwrap": null, - "_spec": "commander@2.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha", - "author": { - "email": "tj@vision-media.ca", - "name": "TJ Holowaychuk" - }, - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "dependencies": {}, - "description": "the complete solution for node.js command-line programs", - "devDependencies": { - "should": ">= 0.0.1" - }, - "directories": {}, - "dist": { - "shasum": "fd430e889832ec353b9acd1de217c11cb3eef873", - "tarball": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" - }, - "engines": { - "node": ">= 0.6.x" - }, - "files": [ - "index.js" - ], - "gitHead": "7e9f407ec03d4371a478c2fe417db4998ecb6169", - "homepage": "https://github.com/visionmedia/commander.js", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "main": "index", - "maintainers": [ - { - "email": "tj@vision-media.ca", - "name": "tjholowaychuk" - }, - { - "email": "rkoutnik@gmail.com", - "name": "somekittens" - }, - { - "email": "zhiyelee@gmail.com", - "name": "zhiyelee" - }, - { - "email": "thethomaseffect@gmail.com", - "name": "thethomaseffect" - } - ], - "name": "commander", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/visionmedia/commander.js.git" - }, - "scripts": { - "test": "make test" - }, - "version": "2.3.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/README.md deleted file mode 100644 index b867e19a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# jsdiff - -[![Build Status](https://secure.travis-ci.org/kpdecker/jsdiff.png)](http://travis-ci.org/kpdecker/jsdiff) - -A javascript text differencing implementation. - -Based on the algorithm proposed in -["An O(ND) Difference Algorithm and its Variations" (Myers, 1986)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927). - -## Installation - - npm install diff - -or - - bower install jsdiff - -or - - git clone git://github.com/kpdecker/jsdiff.git - -## API - -* `JsDiff.diffChars(oldStr, newStr[, callback])` - diffs two blocks of text, comparing character by character. - - Returns a list of change objects (See below). - -* `JsDiff.diffWords(oldStr, newStr[, callback])` - diffs two blocks of text, comparing word by word, ignoring whitespace. - - Returns a list of change objects (See below). - -* `JsDiff.diffWordsWithSpace(oldStr, newStr[, callback])` - diffs two blocks of text, comparing word by word, treating whitespace as significant. - - Returns a list of change objects (See below). - -* `JsDiff.diffLines(oldStr, newStr[, callback])` - diffs two blocks of text, comparing line by line. - - Returns a list of change objects (See below). - -* `JsDiff.diffTrimmedLines(oldStr, newStr[, callback])` - diffs two blocks of text, comparing line by line, ignoring leading and trailing whitespace. - - Returns a list of change objects (See below). - -* `JsDiff.diffSentences(oldStr, newStr[, callback])` - diffs two blocks of text, comparing sentence by sentence. - - Returns a list of change objects (See below). - -* `JsDiff.diffCss(oldStr, newStr[, callback])` - diffs two blocks of text, comparing CSS tokens. - - Returns a list of change objects (See below). - -* `JsDiff.diffJson(oldObj, newObj[, callback])` - diffs two JSON objects, comparing the fields defined on each. The order of fields, etc does not matter in this comparison. - - Returns a list of change objects (See below). - -* `JsDiff.createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. - - Parameters: - * `oldFileName` : String to be output in the filename section of the patch for the removals - * `newFileName` : String to be output in the filename section of the patch for the additions - * `oldStr` : Original string value - * `newStr` : New string value - * `oldHeader` : Additional information to include in the old file header - * `newHeader` : Additional information to include in thew new file header - -* `JsDiff.createPatch(fileName, oldStr, newStr, oldHeader, newHeader)` - creates a unified diff patch. - - Just like JsDiff.createTwoFilesPatch, but with oldFileName being equal to newFileName. - -* `JsDiff.applyPatch(oldStr, diffStr)` - applies a unified diff patch. - - Return a string containing new version of provided data. - -* `convertChangesToXML(changes)` - converts a list of changes to a serialized XML format - - -All methods above which accept the optional callback method will run in sync mode when that parameter is omitted and in async mode when supplied. This allows for larger diffs without blocking the event loop. - -### Change Objects -Many of the methods above return change objects. These objects are consist of the following fields: - -* `value`: Text content -* `added`: True if the value was inserted into the new string -* `removed`: True of the value was removed from the old string - -Note that some cases may omit a particular flag field. Comparison on the flag fields should always be done in a truthy or falsy manner. - -## Examples - -Basic example in Node - -```js -require('colors') -var jsdiff = require('diff'); - -var one = 'beep boop'; -var other = 'beep boob blah'; - -var diff = jsdiff.diffChars(one, other); - -diff.forEach(function(part){ - // green for additions, red for deletions - // grey for common parts - var color = part.added ? 'green' : - part.removed ? 'red' : 'grey'; - process.stderr.write(part.value[color]); -}); - -console.log() -``` -Running the above program should yield - -Node Example - -Basic example in a web page - -```html -
      
      -
      -
      -```
      -
      -Open the above .html file in a browser and you should see
      -
      -Node Example
      -
      -**[Full online demo](http://kpdecker.github.com/jsdiff)**
      -
      -## License
      -
      -Software License Agreement (BSD License)
      -
      -Copyright (c) 2009-2011, Kevin Decker kpdecker@gmail.com
      -
      -All rights reserved.
      -
      -Redistribution and use of this software in source and binary forms, with or without modification,
      -are permitted provided that the following conditions are met:
      -
      -* Redistributions of source code must retain the above
      -  copyright notice, this list of conditions and the
      -  following disclaimer.
      -
      -* Redistributions in binary form must reproduce the above
      -  copyright notice, this list of conditions and the
      -  following disclaimer in the documentation and/or other
      -  materials provided with the distribution.
      -
      -* Neither the name of Kevin Decker nor the names of its
      -  contributors may be used to endorse or promote products
      -  derived from this software without specific prior
      -  written permission.
      -
      -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
      -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
      -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
      -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
      -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
      -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      -
      -
      -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/kpdecker/jsdiff/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/diff.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/diff.js
      deleted file mode 100644
      index 421854a1..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/diff.js
      +++ /dev/null
      @@ -1,619 +0,0 @@
      -/* See LICENSE file for terms of use */
      -
      -/*
      - * Text diff implementation.
      - *
      - * This library supports the following APIS:
      - * JsDiff.diffChars: Character by character diff
      - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
      - * JsDiff.diffLines: Line based diff
      - *
      - * JsDiff.diffCss: Diff targeted at CSS content
      - *
      - * These methods are based on the implementation proposed in
      - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
      - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
      - */
      -(function(global, undefined) {
      -  var objectPrototypeToString = Object.prototype.toString;
      -
      -  /*istanbul ignore next*/
      -  function map(arr, mapper, that) {
      -    if (Array.prototype.map) {
      -      return Array.prototype.map.call(arr, mapper, that);
      -    }
      -
      -    var other = new Array(arr.length);
      -
      -    for (var i = 0, n = arr.length; i < n; i++) {
      -      other[i] = mapper.call(that, arr[i], i, arr);
      -    }
      -    return other;
      -  }
      -  function clonePath(path) {
      -    return { newPos: path.newPos, components: path.components.slice(0) };
      -  }
      -  function removeEmpty(array) {
      -    var ret = [];
      -    for (var i = 0; i < array.length; i++) {
      -      if (array[i]) {
      -        ret.push(array[i]);
      -      }
      -    }
      -    return ret;
      -  }
      -  function escapeHTML(s) {
      -    var n = s;
      -    n = n.replace(/&/g, '&');
      -    n = n.replace(//g, '>');
      -    n = n.replace(/"/g, '"');
      -
      -    return n;
      -  }
      -
      -  // This function handles the presence of circular references by bailing out when encountering an
      -  // object that is already on the "stack" of items being processed.
      -  function canonicalize(obj, stack, replacementStack) {
      -    stack = stack || [];
      -    replacementStack = replacementStack || [];
      -
      -    var i;
      -
      -    for (i = 0; i < stack.length; i += 1) {
      -      if (stack[i] === obj) {
      -        return replacementStack[i];
      -      }
      -    }
      -
      -    var canonicalizedObj;
      -
      -    if ('[object Array]' === objectPrototypeToString.call(obj)) {
      -      stack.push(obj);
      -      canonicalizedObj = new Array(obj.length);
      -      replacementStack.push(canonicalizedObj);
      -      for (i = 0; i < obj.length; i += 1) {
      -        canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
      -      }
      -      stack.pop();
      -      replacementStack.pop();
      -    } else if (typeof obj === 'object' && obj !== null) {
      -      stack.push(obj);
      -      canonicalizedObj = {};
      -      replacementStack.push(canonicalizedObj);
      -      var sortedKeys = [],
      -          key;
      -      for (key in obj) {
      -        sortedKeys.push(key);
      -      }
      -      sortedKeys.sort();
      -      for (i = 0; i < sortedKeys.length; i += 1) {
      -        key = sortedKeys[i];
      -        canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
      -      }
      -      stack.pop();
      -      replacementStack.pop();
      -    } else {
      -      canonicalizedObj = obj;
      -    }
      -    return canonicalizedObj;
      -  }
      -
      -  function buildValues(components, newString, oldString, useLongestToken) {
      -    var componentPos = 0,
      -        componentLen = components.length,
      -        newPos = 0,
      -        oldPos = 0;
      -
      -    for (; componentPos < componentLen; componentPos++) {
      -      var component = components[componentPos];
      -      if (!component.removed) {
      -        if (!component.added && useLongestToken) {
      -          var value = newString.slice(newPos, newPos + component.count);
      -          value = map(value, function(value, i) {
      -            var oldValue = oldString[oldPos + i];
      -            return oldValue.length > value.length ? oldValue : value;
      -          });
      -
      -          component.value = value.join('');
      -        } else {
      -          component.value = newString.slice(newPos, newPos + component.count).join('');
      -        }
      -        newPos += component.count;
      -
      -        // Common case
      -        if (!component.added) {
      -          oldPos += component.count;
      -        }
      -      } else {
      -        component.value = oldString.slice(oldPos, oldPos + component.count).join('');
      -        oldPos += component.count;
      -
      -        // Reverse add and remove so removes are output first to match common convention
      -        // The diffing algorithm is tied to add then remove output and this is the simplest
      -        // route to get the desired output with minimal overhead.
      -        if (componentPos && components[componentPos - 1].added) {
      -          var tmp = components[componentPos - 1];
      -          components[componentPos - 1] = components[componentPos];
      -          components[componentPos] = tmp;
      -        }
      -      }
      -    }
      -
      -    return components;
      -  }
      -
      -  function Diff(ignoreWhitespace) {
      -    this.ignoreWhitespace = ignoreWhitespace;
      -  }
      -  Diff.prototype = {
      -    diff: function(oldString, newString, callback) {
      -      var self = this;
      -
      -      function done(value) {
      -        if (callback) {
      -          setTimeout(function() { callback(undefined, value); }, 0);
      -          return true;
      -        } else {
      -          return value;
      -        }
      -      }
      -
      -      // Handle the identity case (this is due to unrolling editLength == 0
      -      if (newString === oldString) {
      -        return done([{ value: newString }]);
      -      }
      -      if (!newString) {
      -        return done([{ value: oldString, removed: true }]);
      -      }
      -      if (!oldString) {
      -        return done([{ value: newString, added: true }]);
      -      }
      -
      -      newString = this.tokenize(newString);
      -      oldString = this.tokenize(oldString);
      -
      -      var newLen = newString.length, oldLen = oldString.length;
      -      var editLength = 1;
      -      var maxEditLength = newLen + oldLen;
      -      var bestPath = [{ newPos: -1, components: [] }];
      -
      -      // Seed editLength = 0, i.e. the content starts with the same values
      -      var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
      -      if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
      -        // Identity per the equality and tokenizer
      -        return done([{value: newString.join('')}]);
      -      }
      -
      -      // Main worker method. checks all permutations of a given edit length for acceptance.
      -      function execEditLength() {
      -        for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
      -          var basePath;
      -          var addPath = bestPath[diagonalPath - 1],
      -              removePath = bestPath[diagonalPath + 1],
      -              oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
      -          if (addPath) {
      -            // No one else is going to attempt to use this value, clear it
      -            bestPath[diagonalPath - 1] = undefined;
      -          }
      -
      -          var canAdd = addPath && addPath.newPos + 1 < newLen,
      -              canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
      -          if (!canAdd && !canRemove) {
      -            // If this path is a terminal then prune
      -            bestPath[diagonalPath] = undefined;
      -            continue;
      -          }
      -
      -          // Select the diagonal that we want to branch from. We select the prior
      -          // path whose position in the new string is the farthest from the origin
      -          // and does not pass the bounds of the diff graph
      -          if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
      -            basePath = clonePath(removePath);
      -            self.pushComponent(basePath.components, undefined, true);
      -          } else {
      -            basePath = addPath;   // No need to clone, we've pulled it from the list
      -            basePath.newPos++;
      -            self.pushComponent(basePath.components, true, undefined);
      -          }
      -
      -          oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
      -
      -          // If we have hit the end of both strings, then we are done
      -          if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
      -            return done(buildValues(basePath.components, newString, oldString, self.useLongestToken));
      -          } else {
      -            // Otherwise track this path as a potential candidate and continue.
      -            bestPath[diagonalPath] = basePath;
      -          }
      -        }
      -
      -        editLength++;
      -      }
      -
      -      // Performs the length of edit iteration. Is a bit fugly as this has to support the
      -      // sync and async mode which is never fun. Loops over execEditLength until a value
      -      // is produced.
      -      if (callback) {
      -        (function exec() {
      -          setTimeout(function() {
      -            // This should not happen, but we want to be safe.
      -            /*istanbul ignore next */
      -            if (editLength > maxEditLength) {
      -              return callback();
      -            }
      -
      -            if (!execEditLength()) {
      -              exec();
      -            }
      -          }, 0);
      -        }());
      -      } else {
      -        while (editLength <= maxEditLength) {
      -          var ret = execEditLength();
      -          if (ret) {
      -            return ret;
      -          }
      -        }
      -      }
      -    },
      -
      -    pushComponent: function(components, added, removed) {
      -      var last = components[components.length - 1];
      -      if (last && last.added === added && last.removed === removed) {
      -        // We need to clone here as the component clone operation is just
      -        // as shallow array clone
      -        components[components.length - 1] = {count: last.count + 1, added: added, removed: removed };
      -      } else {
      -        components.push({count: 1, added: added, removed: removed });
      -      }
      -    },
      -    extractCommon: function(basePath, newString, oldString, diagonalPath) {
      -      var newLen = newString.length,
      -          oldLen = oldString.length,
      -          newPos = basePath.newPos,
      -          oldPos = newPos - diagonalPath,
      -
      -          commonCount = 0;
      -      while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
      -        newPos++;
      -        oldPos++;
      -        commonCount++;
      -      }
      -
      -      if (commonCount) {
      -        basePath.components.push({count: commonCount});
      -      }
      -
      -      basePath.newPos = newPos;
      -      return oldPos;
      -    },
      -
      -    equals: function(left, right) {
      -      var reWhitespace = /\S/;
      -      return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right));
      -    },
      -    tokenize: function(value) {
      -      return value.split('');
      -    }
      -  };
      -
      -  var CharDiff = new Diff();
      -
      -  var WordDiff = new Diff(true);
      -  var WordWithSpaceDiff = new Diff();
      -  WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) {
      -    return removeEmpty(value.split(/(\s+|\b)/));
      -  };
      -
      -  var CssDiff = new Diff(true);
      -  CssDiff.tokenize = function(value) {
      -    return removeEmpty(value.split(/([{}:;,]|\s+)/));
      -  };
      -
      -  var LineDiff = new Diff();
      -
      -  var TrimmedLineDiff = new Diff();
      -  TrimmedLineDiff.ignoreTrim = true;
      -
      -  LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) {
      -    var retLines = [],
      -        lines = value.split(/^/m);
      -    for (var i = 0; i < lines.length; i++) {
      -      var line = lines[i],
      -          lastLine = lines[i - 1],
      -          lastLineLastChar = lastLine && lastLine[lastLine.length - 1];
      -
      -      // Merge lines that may contain windows new lines
      -      if (line === '\n' && lastLineLastChar === '\r') {
      -          retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n';
      -      } else {
      -        if (this.ignoreTrim) {
      -          line = line.trim();
      -          // add a newline unless this is the last line.
      -          if (i < lines.length - 1) {
      -            line += '\n';
      -          }
      -        }
      -        retLines.push(line);
      -      }
      -    }
      -
      -    return retLines;
      -  };
      -
      -  var PatchDiff = new Diff();
      -  PatchDiff.tokenize = function(value) {
      -    var ret = [],
      -        linesAndNewlines = value.split(/(\n|\r\n)/);
      -
      -    // Ignore the final empty token that occurs if the string ends with a new line
      -    if (!linesAndNewlines[linesAndNewlines.length - 1]) {
      -      linesAndNewlines.pop();
      -    }
      -
      -    // Merge the content and line separators into single tokens
      -    for (var i = 0; i < linesAndNewlines.length; i++) {
      -      var line = linesAndNewlines[i];
      -
      -      if (i % 2) {
      -        ret[ret.length - 1] += line;
      -      } else {
      -        ret.push(line);
      -      }
      -    }
      -    return ret;
      -  };
      -
      -  var SentenceDiff = new Diff();
      -  SentenceDiff.tokenize = function(value) {
      -    return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/));
      -  };
      -
      -  var JsonDiff = new Diff();
      -  // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
      -  // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
      -  JsonDiff.useLongestToken = true;
      -  JsonDiff.tokenize = LineDiff.tokenize;
      -  JsonDiff.equals = function(left, right) {
      -    return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
      -  };
      -
      -  var JsDiff = {
      -    Diff: Diff,
      -
      -    diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); },
      -    diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); },
      -    diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); },
      -    diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); },
      -    diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); },
      -
      -    diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); },
      -
      -    diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); },
      -    diffJson: function(oldObj, newObj, callback) {
      -      return JsonDiff.diff(
      -        typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, '  '),
      -        typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, '  '),
      -        callback
      -      );
      -    },
      -
      -    createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) {
      -      var ret = [];
      -
      -      if (oldFileName == newFileName) {
      -        ret.push('Index: ' + oldFileName);
      -      }
      -      ret.push('===================================================================');
      -      ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader));
      -      ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader));
      -
      -      var diff = PatchDiff.diff(oldStr, newStr);
      -      diff.push({value: '', lines: []});   // Append an empty value to make cleanup easier
      -
      -      // Formats a given set of lines for printing as context lines in a patch
      -      function contextLines(lines) {
      -        return map(lines, function(entry) { return ' ' + entry; });
      -      }
      -
      -      // Outputs the no newline at end of file warning if needed
      -      function eofNL(curRange, i, current) {
      -        var last = diff[diff.length - 2],
      -            isLast = i === diff.length - 2,
      -            isLastOfType = i === diff.length - 3 && current.added !== last.added;
      -
      -        // Figure out if this is the last line for the given file and missing NL
      -        if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) {
      -          curRange.push('\\ No newline at end of file');
      -        }
      -      }
      -
      -      var oldRangeStart = 0, newRangeStart = 0, curRange = [],
      -          oldLine = 1, newLine = 1;
      -      for (var i = 0; i < diff.length; i++) {
      -        var current = diff[i],
      -            lines = current.lines || current.value.replace(/\n$/, '').split('\n');
      -        current.lines = lines;
      -
      -        if (current.added || current.removed) {
      -          // If we have previous context, start with that
      -          if (!oldRangeStart) {
      -            var prev = diff[i - 1];
      -            oldRangeStart = oldLine;
      -            newRangeStart = newLine;
      -
      -            if (prev) {
      -              curRange = contextLines(prev.lines.slice(-4));
      -              oldRangeStart -= curRange.length;
      -              newRangeStart -= curRange.length;
      -            }
      -          }
      -
      -          // Output our changes
      -          curRange.push.apply(curRange, map(lines, function(entry) {
      -            return (current.added ? '+' : '-') + entry;
      -          }));
      -          eofNL(curRange, i, current);
      -
      -          // Track the updated file position
      -          if (current.added) {
      -            newLine += lines.length;
      -          } else {
      -            oldLine += lines.length;
      -          }
      -        } else {
      -          // Identical context lines. Track line changes
      -          if (oldRangeStart) {
      -            // Close out any changes that have been output (or join overlapping)
      -            if (lines.length <= 8 && i < diff.length - 2) {
      -              // Overlapping
      -              curRange.push.apply(curRange, contextLines(lines));
      -            } else {
      -              // end the range and output
      -              var contextSize = Math.min(lines.length, 4);
      -              ret.push(
      -                  '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize)
      -                  + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize)
      -                  + ' @@');
      -              ret.push.apply(ret, curRange);
      -              ret.push.apply(ret, contextLines(lines.slice(0, contextSize)));
      -              if (lines.length <= 4) {
      -                eofNL(ret, i, current);
      -              }
      -
      -              oldRangeStart = 0;
      -              newRangeStart = 0;
      -              curRange = [];
      -            }
      -          }
      -          oldLine += lines.length;
      -          newLine += lines.length;
      -        }
      -      }
      -
      -      return ret.join('\n') + '\n';
      -    },
      -
      -    createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) {
      -      return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader);
      -    },
      -
      -    applyPatch: function(oldStr, uniDiff) {
      -      var diffstr = uniDiff.split('\n'),
      -          hunks = [],
      -          i = 0,
      -          remEOFNL = false,
      -          addEOFNL = false;
      -
      -      // Skip to the first change hunk
      -      while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) {
      -        i++;
      -      }
      -
      -      // Parse the unified diff
      -      for (; i < diffstr.length; i++) {
      -        if (diffstr[i][0] === '@') {
      -          var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/);
      -          hunks.unshift({
      -            start: chnukHeader[3],
      -            oldlength: +chnukHeader[2],
      -            removed: [],
      -            newlength: chnukHeader[4],
      -            added: []
      -          });
      -        } else if (diffstr[i][0] === '+') {
      -          hunks[0].added.push(diffstr[i].substr(1));
      -        } else if (diffstr[i][0] === '-') {
      -          hunks[0].removed.push(diffstr[i].substr(1));
      -        } else if (diffstr[i][0] === ' ') {
      -          hunks[0].added.push(diffstr[i].substr(1));
      -          hunks[0].removed.push(diffstr[i].substr(1));
      -        } else if (diffstr[i][0] === '\\') {
      -          if (diffstr[i - 1][0] === '+') {
      -            remEOFNL = true;
      -          } else if (diffstr[i - 1][0] === '-') {
      -            addEOFNL = true;
      -          }
      -        }
      -      }
      -
      -      // Apply the diff to the input
      -      var lines = oldStr.split('\n');
      -      for (i = hunks.length - 1; i >= 0; i--) {
      -        var hunk = hunks[i];
      -        // Sanity check the input string. Bail if we don't match.
      -        for (var j = 0; j < hunk.oldlength; j++) {
      -          if (lines[hunk.start - 1 + j] !== hunk.removed[j]) {
      -            return false;
      -          }
      -        }
      -        Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added));
      -      }
      -
      -      // Handle EOFNL insertion/removal
      -      if (remEOFNL) {
      -        while (!lines[lines.length - 1]) {
      -          lines.pop();
      -        }
      -      } else if (addEOFNL) {
      -        lines.push('');
      -      }
      -      return lines.join('\n');
      -    },
      -
      -    convertChangesToXML: function(changes) {
      -      var ret = [];
      -      for (var i = 0; i < changes.length; i++) {
      -        var change = changes[i];
      -        if (change.added) {
      -          ret.push('');
      -        } else if (change.removed) {
      -          ret.push('');
      -        }
      -
      -        ret.push(escapeHTML(change.value));
      -
      -        if (change.added) {
      -          ret.push('');
      -        } else if (change.removed) {
      -          ret.push('');
      -        }
      -      }
      -      return ret.join('');
      -    },
      -
      -    // See: http://code.google.com/p/google-diff-match-patch/wiki/API
      -    convertChangesToDMP: function(changes) {
      -      var ret = [],
      -          change,
      -          operation;
      -      for (var i = 0; i < changes.length; i++) {
      -        change = changes[i];
      -        if (change.added) {
      -          operation = 1;
      -        } else if (change.removed) {
      -          operation = -1;
      -        } else {
      -          operation = 0;
      -        }
      -
      -        ret.push([operation, change.value]);
      -      }
      -      return ret;
      -    },
      -
      -    canonicalize: canonicalize
      -  };
      -
      -  /*istanbul ignore next */
      -  /*global module */
      -  if (typeof module !== 'undefined' && module.exports) {
      -    module.exports = JsDiff;
      -  } else if (typeof define === 'function' && define.amd) {
      -    /*global define */
      -    define([], function() { return JsDiff; });
      -  } else if (typeof global.JsDiff === 'undefined') {
      -    global.JsDiff = JsDiff;
      -  }
      -}(this));
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/package.json
      deleted file mode 100644
      index 2b2fbaf0..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/diff/package.json
      +++ /dev/null
      @@ -1,88 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "diff@1.4.0",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha"
      -    ]
      -  ],
      -  "_from": "diff@1.4.0",
      -  "_id": "diff@1.4.0",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/diff",
      -  "_npmUser": {
      -    "email": "kpdecker@gmail.com",
      -    "name": "kpdecker"
      -  },
      -  "_npmVersion": "1.4.28",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "diff",
      -    "raw": "diff@1.4.0",
      -    "rawSpec": "1.4.0",
      -    "scope": null,
      -    "spec": "1.4.0",
      -    "type": "version"
      -  },
      -  "_requiredBy": [
      -    "/mocha"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
      -  "_shasum": "7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf",
      -  "_shrinkwrap": null,
      -  "_spec": "diff@1.4.0",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha",
      -  "bugs": {
      -    "email": "kpdecker@gmail.com",
      -    "url": "http://github.com/kpdecker/jsdiff/issues"
      -  },
      -  "dependencies": {},
      -  "description": "A javascript text diff implementation.",
      -  "devDependencies": {
      -    "colors": "^1.1.0",
      -    "istanbul": "^0.3.2",
      -    "mocha": "^2.2.4",
      -    "should": "^6.0.1"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf",
      -    "tarball": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz"
      -  },
      -  "engines": {
      -    "node": ">=0.3.1"
      -  },
      -  "files": [
      -    "diff.js"
      -  ],
      -  "gitHead": "27a750e9116e6ade6303bc24a9be72f6845e00ed",
      -  "homepage": "https://github.com/kpdecker/jsdiff",
      -  "keywords": [
      -    "diff",
      -    "javascript"
      -  ],
      -  "licenses": [
      -    {
      -      "type": "BSD",
      -      "url": "http://github.com/kpdecker/jsdiff/blob/master/LICENSE"
      -    }
      -  ],
      -  "main": "./diff",
      -  "maintainers": [
      -    {
      -      "email": "kpdecker@gmail.com",
      -      "name": "kpdecker"
      -    }
      -  ],
      -  "name": "diff",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/kpdecker/jsdiff.git"
      -  },
      -  "scripts": {
      -    "test": "istanbul cover node_modules/.bin/_mocha test/*.js && istanbul check-coverage --statements 100 --functions 100 --branches 100 --lines 100 coverage/coverage.json"
      -  },
      -  "version": "1.4.0"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/index.js
      deleted file mode 100644
      index ac6572ca..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/index.js
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -'use strict';
      -
      -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
      -
      -module.exports = function (str) {
      -	if (typeof str !== 'string') {
      -		throw new TypeError('Expected a string');
      -	}
      -
      -	return str.replace(matchOperatorsRe,  '\\$&');
      -};
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/package.json
      deleted file mode 100644
      index 271ec661..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/package.json
      +++ /dev/null
      @@ -1,95 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "escape-string-regexp@1.0.2",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha"
      -    ]
      -  ],
      -  "_from": "escape-string-regexp@1.0.2",
      -  "_id": "escape-string-regexp@1.0.2",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/escape-string-regexp",
      -  "_npmUser": {
      -    "email": "jappelman@xebia.com",
      -    "name": "jbnicolai"
      -  },
      -  "_npmVersion": "1.4.23",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "escape-string-regexp",
      -    "raw": "escape-string-regexp@1.0.2",
      -    "rawSpec": "1.0.2",
      -    "scope": null,
      -    "spec": "1.0.2",
      -    "type": "version"
      -  },
      -  "_requiredBy": [
      -    "/mocha"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz",
      -  "_shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1",
      -  "_shrinkwrap": null,
      -  "_spec": "escape-string-regexp@1.0.2",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha",
      -  "author": {
      -    "email": "sindresorhus@gmail.com",
      -    "name": "Sindre Sorhus",
      -    "url": "http://sindresorhus.com"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/sindresorhus/escape-string-regexp/issues"
      -  },
      -  "dependencies": {},
      -  "description": "Escape RegExp special characters",
      -  "devDependencies": {
      -    "mocha": "*"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1",
      -    "tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
      -  },
      -  "engines": {
      -    "node": ">=0.8.0"
      -  },
      -  "files": [
      -    "index.js"
      -  ],
      -  "gitHead": "0587ee0ee03ea3fcbfa3c15cf67b47f214e20987",
      -  "homepage": "https://github.com/sindresorhus/escape-string-regexp",
      -  "keywords": [
      -    "regex",
      -    "regexp",
      -    "re",
      -    "regular",
      -    "expression",
      -    "escape",
      -    "string",
      -    "str",
      -    "special",
      -    "characters"
      -  ],
      -  "license": "MIT",
      -  "maintainers": [
      -    {
      -      "email": "sindresorhus@gmail.com",
      -      "name": "sindresorhus"
      -    },
      -    {
      -      "email": "jappelman@xebia.com",
      -      "name": "jbnicolai"
      -    }
      -  ],
      -  "name": "escape-string-regexp",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git+https://github.com/sindresorhus/escape-string-regexp.git"
      -  },
      -  "scripts": {
      -    "test": "mocha"
      -  },
      -  "version": "1.0.2"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/readme.md
      deleted file mode 100644
      index 808a963a..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/escape-string-regexp/readme.md
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)
      -
      -> Escape RegExp special characters
      -
      -
      -## Install
      -
      -```sh
      -$ npm install --save escape-string-regexp
      -```
      -
      -
      -## Usage
      -
      -```js
      -var escapeStringRegexp = require('escape-string-regexp');
      -
      -var escapedString = escapeStringRegexp('how much $ for a unicorn?');
      -//=> how much \$ for a unicorn\?
      -
      -new RegExp(escapedString);
      -```
      -
      -
      -## License
      -
      -MIT © [Sindre Sorhus](http://sindresorhus.com)
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.npmignore
      deleted file mode 100644
      index 2af4b71c..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.npmignore
      +++ /dev/null
      @@ -1,2 +0,0 @@
      -.*.swp
      -test/a/
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.travis.yml
      deleted file mode 100644
      index baa0031d..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/.travis.yml
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -language: node_js
      -node_js:
      -  - 0.8
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/LICENSE
      deleted file mode 100644
      index 0c44ae71..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/LICENSE
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -Copyright (c) Isaac Z. Schlueter ("Author")
      -All rights reserved.
      -
      -The BSD License
      -
      -Redistribution and use in source and binary forms, with or without
      -modification, are permitted provided that the following conditions
      -are met:
      -
      -1. Redistributions of source code must retain the above copyright
      -   notice, this list of conditions and the following disclaimer.
      -
      -2. Redistributions in binary form must reproduce the above copyright
      -   notice, this list of conditions and the following disclaimer in the
      -   documentation and/or other materials provided with the distribution.
      -
      -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
      -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      -PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
      -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
      -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
      -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
      -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
      -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/README.md
      deleted file mode 100644
      index cc691645..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/README.md
      +++ /dev/null
      @@ -1,250 +0,0 @@
      -# Glob
      -
      -Match files using the patterns the shell uses, like stars and stuff.
      -
      -This is a glob implementation in JavaScript.  It uses the `minimatch`
      -library to do its matching.
      -
      -## Attention: node-glob users!
      -
      -The API has changed dramatically between 2.x and 3.x. This library is
      -now 100% JavaScript, and the integer flags have been replaced with an
      -options object.
      -
      -Also, there's an event emitter class, proper tests, and all the other
      -things you've come to expect from node modules.
      -
      -And best of all, no compilation!
      -
      -## Usage
      -
      -```javascript
      -var glob = require("glob")
      -
      -// options is optional
      -glob("**/*.js", options, function (er, files) {
      -  // files is an array of filenames.
      -  // If the `nonull` option is set, and nothing
      -  // was found, then files is ["**/*.js"]
      -  // er is an error object or null.
      -})
      -```
      -
      -## Features
      -
      -Please see the [minimatch
      -documentation](https://github.com/isaacs/minimatch) for more details.
      -
      -Supports these glob features:
      -
      -* Brace Expansion
      -* Extended glob matching
      -* "Globstar" `**` matching
      -
      -See:
      -
      -* `man sh`
      -* `man bash`
      -* `man 3 fnmatch`
      -* `man 5 gitignore`
      -* [minimatch documentation](https://github.com/isaacs/minimatch)
      -
      -## glob(pattern, [options], cb)
      -
      -* `pattern` {String} Pattern to be matched
      -* `options` {Object}
      -* `cb` {Function}
      -  * `err` {Error | null}
      -  * `matches` {Array} filenames found matching the pattern
      -
      -Perform an asynchronous glob search.
      -
      -## glob.sync(pattern, [options])
      -
      -* `pattern` {String} Pattern to be matched
      -* `options` {Object}
      -* return: {Array} filenames found matching the pattern
      -
      -Perform a synchronous glob search.
      -
      -## Class: glob.Glob
      -
      -Create a Glob object by instanting the `glob.Glob` class.
      -
      -```javascript
      -var Glob = require("glob").Glob
      -var mg = new Glob(pattern, options, cb)
      -```
      -
      -It's an EventEmitter, and starts walking the filesystem to find matches
      -immediately.
      -
      -### new glob.Glob(pattern, [options], [cb])
      -
      -* `pattern` {String} pattern to search for
      -* `options` {Object}
      -* `cb` {Function} Called when an error occurs, or matches are found
      -  * `err` {Error | null}
      -  * `matches` {Array} filenames found matching the pattern
      -
      -Note that if the `sync` flag is set in the options, then matches will
      -be immediately available on the `g.found` member.
      -
      -### Properties
      -
      -* `minimatch` The minimatch object that the glob uses.
      -* `options` The options object passed in.
      -* `error` The error encountered.  When an error is encountered, the
      -  glob object is in an undefined state, and should be discarded.
      -* `aborted` Boolean which is set to true when calling `abort()`.  There
      -  is no way at this time to continue a glob search after aborting, but
      -  you can re-use the statCache to avoid having to duplicate syscalls.
      -* `statCache` Collection of all the stat results the glob search
      -  performed.
      -* `cache` Convenience object.  Each field has the following possible
      -  values:
      -  * `false` - Path does not exist
      -  * `true` - Path exists
      -  * `1` - Path exists, and is not a directory
      -  * `2` - Path exists, and is a directory
      -  * `[file, entries, ...]` - Path exists, is a directory, and the
      -    array value is the results of `fs.readdir`
      -
      -### Events
      -
      -* `end` When the matching is finished, this is emitted with all the
      -  matches found.  If the `nonull` option is set, and no match was found,
      -  then the `matches` list contains the original pattern.  The matches
      -  are sorted, unless the `nosort` flag is set.
      -* `match` Every time a match is found, this is emitted with the matched.
      -* `error` Emitted when an unexpected error is encountered, or whenever
      -  any fs error occurs if `options.strict` is set.
      -* `abort` When `abort()` is called, this event is raised.
      -
      -### Methods
      -
      -* `abort` Stop the search.
      -
      -### Options
      -
      -All the options that can be passed to Minimatch can also be passed to
      -Glob to change pattern matching behavior.  Also, some have been added,
      -or have glob-specific ramifications.
      -
      -All options are false by default, unless otherwise noted.
      -
      -All options are added to the glob object, as well.
      -
      -* `cwd` The current working directory in which to search.  Defaults
      -  to `process.cwd()`.
      -* `root` The place where patterns starting with `/` will be mounted
      -  onto.  Defaults to `path.resolve(options.cwd, "/")` (`/` on Unix
      -  systems, and `C:\` or some such on Windows.)
      -* `dot` Include `.dot` files in normal matches and `globstar` matches.
      -  Note that an explicit dot in a portion of the pattern will always
      -  match dot files.
      -* `nomount` By default, a pattern starting with a forward-slash will be
      -  "mounted" onto the root setting, so that a valid filesystem path is
      -  returned.  Set this flag to disable that behavior.
      -* `mark` Add a `/` character to directory matches.  Note that this
      -  requires additional stat calls.
      -* `nosort` Don't sort the results.
      -* `stat` Set to true to stat *all* results.  This reduces performance
      -  somewhat, and is completely unnecessary, unless `readdir` is presumed
      -  to be an untrustworthy indicator of file existence.  It will cause
      -  ELOOP to be triggered one level sooner in the case of cyclical
      -  symbolic links.
      -* `silent` When an unusual error is encountered
      -  when attempting to read a directory, a warning will be printed to
      -  stderr.  Set the `silent` option to true to suppress these warnings.
      -* `strict` When an unusual error is encountered
      -  when attempting to read a directory, the process will just continue on
      -  in search of other matches.  Set the `strict` option to raise an error
      -  in these cases.
      -* `cache` See `cache` property above.  Pass in a previously generated
      -  cache object to save some fs calls.
      -* `statCache` A cache of results of filesystem information, to prevent
      -  unnecessary stat calls.  While it should not normally be necessary to
      -  set this, you may pass the statCache from one glob() call to the
      -  options object of another, if you know that the filesystem will not
      -  change between calls.  (See "Race Conditions" below.)
      -* `sync` Perform a synchronous glob search.
      -* `nounique` In some cases, brace-expanded patterns can result in the
      -  same file showing up multiple times in the result set.  By default,
      -  this implementation prevents duplicates in the result set.
      -  Set this flag to disable that behavior.
      -* `nonull` Set to never return an empty set, instead returning a set
      -  containing the pattern itself.  This is the default in glob(3).
      -* `nocase` Perform a case-insensitive match.  Note that case-insensitive
      -  filesystems will sometimes result in glob returning results that are
      -  case-insensitively matched anyway, since readdir and stat will not
      -  raise an error.
      -* `debug` Set to enable debug logging in minimatch and glob.
      -* `globDebug` Set to enable debug logging in glob, but not minimatch.
      -
      -## Comparisons to other fnmatch/glob implementations
      -
      -While strict compliance with the existing standards is a worthwhile
      -goal, some discrepancies exist between node-glob and other
      -implementations, and are intentional.
      -
      -If the pattern starts with a `!` character, then it is negated.  Set the
      -`nonegate` flag to suppress this behavior, and treat leading `!`
      -characters normally.  This is perhaps relevant if you wish to start the
      -pattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`
      -characters at the start of a pattern will negate the pattern multiple
      -times.
      -
      -If a pattern starts with `#`, then it is treated as a comment, and
      -will not match anything.  Use `\#` to match a literal `#` at the
      -start of a line, or set the `nocomment` flag to suppress this behavior.
      -
      -The double-star character `**` is supported by default, unless the
      -`noglobstar` flag is set.  This is supported in the manner of bsdglob
      -and bash 4.1, where `**` only has special significance if it is the only
      -thing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but
      -`a/**b` will not.
      -
      -If an escaped pattern has no matches, and the `nonull` flag is set,
      -then glob returns the pattern as-provided, rather than
      -interpreting the character escapes.  For example,
      -`glob.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
      -`"*a?"`.  This is akin to setting the `nullglob` option in bash, except
      -that it does not resolve escaped pattern characters.
      -
      -If brace expansion is not disabled, then it is performed before any
      -other interpretation of the glob pattern.  Thus, a pattern like
      -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
      -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
      -checked for validity.  Since those two are valid, matching proceeds.
      -
      -## Windows
      -
      -**Please only use forward-slashes in glob expressions.**
      -
      -Though windows uses either `/` or `\` as its path separator, only `/`
      -characters are used by this glob implementation.  You must use
      -forward-slashes **only** in glob expressions.  Back-slashes will always
      -be interpreted as escape characters, not path separators.
      -
      -Results from absolute patterns such as `/foo/*` are mounted onto the
      -root setting using `path.join`.  On windows, this will by default result
      -in `/foo/*` matching `C:\foo\bar.txt`.
      -
      -## Race Conditions
      -
      -Glob searching, by its very nature, is susceptible to race conditions,
      -since it relies on directory walking and such.
      -
      -As a result, it is possible that a file that exists when glob looks for
      -it may have been deleted or modified by the time it returns the result.
      -
      -As part of its internal implementation, this program caches all stat
      -and readdir calls that it makes, in order to cut down on system
      -overhead.  However, this also makes it even more susceptible to races,
      -especially if the cache or statCache objects are reused between glob
      -calls.
      -
      -Users are thus advised not to use a glob result as a guarantee of
      -filesystem state in the face of rapid changes.  For the vast majority
      -of operations, this is never a problem.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/g.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/g.js
      deleted file mode 100644
      index be122df0..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/g.js
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -var Glob = require("../").Glob
      -
      -var pattern = "test/a/**/[cg]/../[cg]"
      -console.log(pattern)
      -
      -var mg = new Glob(pattern, {mark: true, sync:true}, function (er, matches) {
      -  console.log("matches", matches)
      -})
      -console.log("after")
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/usr-local.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/usr-local.js
      deleted file mode 100644
      index 327a425e..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/examples/usr-local.js
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -var Glob = require("../").Glob
      -
      -var pattern = "{./*/*,/*,/usr/local/*}"
      -console.log(pattern)
      -
      -var mg = new Glob(pattern, {mark: true}, function (er, matches) {
      -  console.log("matches", matches)
      -})
      -console.log("after")
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/glob.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/glob.js
      deleted file mode 100644
      index f0118a4f..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/glob.js
      +++ /dev/null
      @@ -1,675 +0,0 @@
      -// Approach:
      -//
      -// 1. Get the minimatch set
      -// 2. For each pattern in the set, PROCESS(pattern)
      -// 3. Store matches per-set, then uniq them
      -//
      -// PROCESS(pattern)
      -// Get the first [n] items from pattern that are all strings
      -// Join these together.  This is PREFIX.
      -//   If there is no more remaining, then stat(PREFIX) and
      -//   add to matches if it succeeds.  END.
      -// readdir(PREFIX) as ENTRIES
      -//   If fails, END
      -//   If pattern[n] is GLOBSTAR
      -//     // handle the case where the globstar match is empty
      -//     // by pruning it out, and testing the resulting pattern
      -//     PROCESS(pattern[0..n] + pattern[n+1 .. $])
      -//     // handle other cases.
      -//     for ENTRY in ENTRIES (not dotfiles)
      -//       // attach globstar + tail onto the entry
      -//       PROCESS(pattern[0..n] + ENTRY + pattern[n .. $])
      -//
      -//   else // not globstar
      -//     for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
      -//       Test ENTRY against pattern[n]
      -//       If fails, continue
      -//       If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
      -//
      -// Caveat:
      -//   Cache all stats and readdirs results to minimize syscall.  Since all
      -//   we ever care about is existence and directory-ness, we can just keep
      -//   `true` for files, and [children,...] for directories, or `false` for
      -//   things that don't exist.
      -
      -
      -
      -module.exports = glob
      -
      -var fs = require("graceful-fs")
      -, minimatch = require("minimatch")
      -, Minimatch = minimatch.Minimatch
      -, inherits = require("inherits")
      -, EE = require("events").EventEmitter
      -, path = require("path")
      -, isDir = {}
      -, assert = require("assert").ok
      -
      -function glob (pattern, options, cb) {
      -  if (typeof options === "function") cb = options, options = {}
      -  if (!options) options = {}
      -
      -  if (typeof options === "number") {
      -    deprecated()
      -    return
      -  }
      -
      -  var g = new Glob(pattern, options, cb)
      -  return g.sync ? g.found : g
      -}
      -
      -glob.fnmatch = deprecated
      -
      -function deprecated () {
      -  throw new Error("glob's interface has changed. Please see the docs.")
      -}
      -
      -glob.sync = globSync
      -function globSync (pattern, options) {
      -  if (typeof options === "number") {
      -    deprecated()
      -    return
      -  }
      -
      -  options = options || {}
      -  options.sync = true
      -  return glob(pattern, options)
      -}
      -
      -
      -glob.Glob = Glob
      -inherits(Glob, EE)
      -function Glob (pattern, options, cb) {
      -  if (!(this instanceof Glob)) {
      -    return new Glob(pattern, options, cb)
      -  }
      -
      -  if (typeof cb === "function") {
      -    this.on("error", cb)
      -    this.on("end", function (matches) {
      -      cb(null, matches)
      -    })
      -  }
      -
      -  options = options || {}
      -
      -  this.EOF = {}
      -  this._emitQueue = []
      -
      -  this.maxDepth = options.maxDepth || 1000
      -  this.maxLength = options.maxLength || Infinity
      -  this.cache = options.cache || {}
      -  this.statCache = options.statCache || {}
      -
      -  this.changedCwd = false
      -  var cwd = process.cwd()
      -  if (!options.hasOwnProperty("cwd")) this.cwd = cwd
      -  else {
      -    this.cwd = options.cwd
      -    this.changedCwd = path.resolve(options.cwd) !== cwd
      -  }
      -
      -  this.root = options.root || path.resolve(this.cwd, "/")
      -  this.root = path.resolve(this.root)
      -  if (process.platform === "win32")
      -    this.root = this.root.replace(/\\/g, "/")
      -
      -  this.nomount = !!options.nomount
      -
      -  if (!pattern) {
      -    throw new Error("must provide pattern")
      -  }
      -
      -  // base-matching: just use globstar for that.
      -  if (options.matchBase && -1 === pattern.indexOf("/")) {
      -    if (options.noglobstar) {
      -      throw new Error("base matching requires globstar")
      -    }
      -    pattern = "**/" + pattern
      -  }
      -
      -  this.strict = options.strict !== false
      -  this.dot = !!options.dot
      -  this.mark = !!options.mark
      -  this.sync = !!options.sync
      -  this.nounique = !!options.nounique
      -  this.nonull = !!options.nonull
      -  this.nosort = !!options.nosort
      -  this.nocase = !!options.nocase
      -  this.stat = !!options.stat
      -
      -  this.debug = !!options.debug || !!options.globDebug
      -  if (this.debug)
      -    this.log = console.error
      -
      -  this.silent = !!options.silent
      -
      -  var mm = this.minimatch = new Minimatch(pattern, options)
      -  this.options = mm.options
      -  pattern = this.pattern = mm.pattern
      -
      -  this.error = null
      -  this.aborted = false
      -
      -  // list of all the patterns that ** has resolved do, so
      -  // we can avoid visiting multiple times.
      -  this._globstars = {}
      -
      -  EE.call(this)
      -
      -  // process each pattern in the minimatch set
      -  var n = this.minimatch.set.length
      -
      -  // The matches are stored as {: true,...} so that
      -  // duplicates are automagically pruned.
      -  // Later, we do an Object.keys() on these.
      -  // Keep them as a list so we can fill in when nonull is set.
      -  this.matches = new Array(n)
      -
      -  this.minimatch.set.forEach(iterator.bind(this))
      -  function iterator (pattern, i, set) {
      -    this._process(pattern, 0, i, function (er) {
      -      if (er) this.emit("error", er)
      -      if (-- n <= 0) this._finish()
      -    })
      -  }
      -}
      -
      -Glob.prototype.log = function () {}
      -
      -Glob.prototype._finish = function () {
      -  assert(this instanceof Glob)
      -
      -  var nou = this.nounique
      -  , all = nou ? [] : {}
      -
      -  for (var i = 0, l = this.matches.length; i < l; i ++) {
      -    var matches = this.matches[i]
      -    this.log("matches[%d] =", i, matches)
      -    // do like the shell, and spit out the literal glob
      -    if (!matches) {
      -      if (this.nonull) {
      -        var literal = this.minimatch.globSet[i]
      -        if (nou) all.push(literal)
      -        else all[literal] = true
      -      }
      -    } else {
      -      // had matches
      -      var m = Object.keys(matches)
      -      if (nou) all.push.apply(all, m)
      -      else m.forEach(function (m) {
      -        all[m] = true
      -      })
      -    }
      -  }
      -
      -  if (!nou) all = Object.keys(all)
      -
      -  if (!this.nosort) {
      -    all = all.sort(this.nocase ? alphasorti : alphasort)
      -  }
      -
      -  if (this.mark) {
      -    // at *some* point we statted all of these
      -    all = all.map(function (m) {
      -      var sc = this.cache[m]
      -      if (!sc)
      -        return m
      -      var isDir = (Array.isArray(sc) || sc === 2)
      -      if (isDir && m.slice(-1) !== "/") {
      -        return m + "/"
      -      }
      -      if (!isDir && m.slice(-1) === "/") {
      -        return m.replace(/\/+$/, "")
      -      }
      -      return m
      -    }, this)
      -  }
      -
      -  this.log("emitting end", all)
      -
      -  this.EOF = this.found = all
      -  this.emitMatch(this.EOF)
      -}
      -
      -function alphasorti (a, b) {
      -  a = a.toLowerCase()
      -  b = b.toLowerCase()
      -  return alphasort(a, b)
      -}
      -
      -function alphasort (a, b) {
      -  return a > b ? 1 : a < b ? -1 : 0
      -}
      -
      -Glob.prototype.abort = function () {
      -  this.aborted = true
      -  this.emit("abort")
      -}
      -
      -Glob.prototype.pause = function () {
      -  if (this.paused) return
      -  if (this.sync)
      -    this.emit("error", new Error("Can't pause/resume sync glob"))
      -  this.paused = true
      -  this.emit("pause")
      -}
      -
      -Glob.prototype.resume = function () {
      -  if (!this.paused) return
      -  if (this.sync)
      -    this.emit("error", new Error("Can't pause/resume sync glob"))
      -  this.paused = false
      -  this.emit("resume")
      -  this._processEmitQueue()
      -  //process.nextTick(this.emit.bind(this, "resume"))
      -}
      -
      -Glob.prototype.emitMatch = function (m) {
      -  if (!this.stat || this.statCache[m] || m === this.EOF) {
      -    this._emitQueue.push(m)
      -    this._processEmitQueue()
      -  } else {
      -    this._stat(m, function(exists, isDir) {
      -      if (exists) {
      -        this._emitQueue.push(m)
      -        this._processEmitQueue()
      -      }
      -    })
      -  }
      -}
      -
      -Glob.prototype._processEmitQueue = function (m) {
      -  while (!this._processingEmitQueue &&
      -         !this.paused) {
      -    this._processingEmitQueue = true
      -    var m = this._emitQueue.shift()
      -    if (!m) {
      -      this._processingEmitQueue = false
      -      break
      -    }
      -
      -    this.log('emit!', m === this.EOF ? "end" : "match")
      -
      -    this.emit(m === this.EOF ? "end" : "match", m)
      -    this._processingEmitQueue = false
      -  }
      -}
      -
      -Glob.prototype._process = function (pattern, depth, index, cb_) {
      -  assert(this instanceof Glob)
      -
      -  var cb = function cb (er, res) {
      -    assert(this instanceof Glob)
      -    if (this.paused) {
      -      if (!this._processQueue) {
      -        this._processQueue = []
      -        this.once("resume", function () {
      -          var q = this._processQueue
      -          this._processQueue = null
      -          q.forEach(function (cb) { cb() })
      -        })
      -      }
      -      this._processQueue.push(cb_.bind(this, er, res))
      -    } else {
      -      cb_.call(this, er, res)
      -    }
      -  }.bind(this)
      -
      -  if (this.aborted) return cb()
      -
      -  if (depth > this.maxDepth) return cb()
      -
      -  // Get the first [n] parts of pattern that are all strings.
      -  var n = 0
      -  while (typeof pattern[n] === "string") {
      -    n ++
      -  }
      -  // now n is the index of the first one that is *not* a string.
      -
      -  // see if there's anything else
      -  var prefix
      -  switch (n) {
      -    // if not, then this is rather simple
      -    case pattern.length:
      -      prefix = pattern.join("/")
      -      this._stat(prefix, function (exists, isDir) {
      -        // either it's there, or it isn't.
      -        // nothing more to do, either way.
      -        if (exists) {
      -          if (prefix && isAbsolute(prefix) && !this.nomount) {
      -            if (prefix.charAt(0) === "/") {
      -              prefix = path.join(this.root, prefix)
      -            } else {
      -              prefix = path.resolve(this.root, prefix)
      -            }
      -          }
      -
      -          if (process.platform === "win32")
      -            prefix = prefix.replace(/\\/g, "/")
      -
      -          this.matches[index] = this.matches[index] || {}
      -          this.matches[index][prefix] = true
      -          this.emitMatch(prefix)
      -        }
      -        return cb()
      -      })
      -      return
      -
      -    case 0:
      -      // pattern *starts* with some non-trivial item.
      -      // going to readdir(cwd), but not include the prefix in matches.
      -      prefix = null
      -      break
      -
      -    default:
      -      // pattern has some string bits in the front.
      -      // whatever it starts with, whether that's "absolute" like /foo/bar,
      -      // or "relative" like "../baz"
      -      prefix = pattern.slice(0, n)
      -      prefix = prefix.join("/")
      -      break
      -  }
      -
      -  // get the list of entries.
      -  var read
      -  if (prefix === null) read = "."
      -  else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) {
      -    if (!prefix || !isAbsolute(prefix)) {
      -      prefix = path.join("/", prefix)
      -    }
      -    read = prefix = path.resolve(prefix)
      -
      -    // if (process.platform === "win32")
      -    //   read = prefix = prefix.replace(/^[a-zA-Z]:|\\/g, "/")
      -
      -    this.log('absolute: ', prefix, this.root, pattern, read)
      -  } else {
      -    read = prefix
      -  }
      -
      -  this.log('readdir(%j)', read, this.cwd, this.root)
      -
      -  return this._readdir(read, function (er, entries) {
      -    if (er) {
      -      // not a directory!
      -      // this means that, whatever else comes after this, it can never match
      -      return cb()
      -    }
      -
      -    // globstar is special
      -    if (pattern[n] === minimatch.GLOBSTAR) {
      -      // test without the globstar, and with every child both below
      -      // and replacing the globstar.
      -      var s = [ pattern.slice(0, n).concat(pattern.slice(n + 1)) ]
      -      entries.forEach(function (e) {
      -        if (e.charAt(0) === "." && !this.dot) return
      -        // instead of the globstar
      -        s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1)))
      -        // below the globstar
      -        s.push(pattern.slice(0, n).concat(e).concat(pattern.slice(n)))
      -      }, this)
      -
      -      s = s.filter(function (pattern) {
      -        var key = gsKey(pattern)
      -        var seen = !this._globstars[key]
      -        this._globstars[key] = true
      -        return seen
      -      }, this)
      -
      -      if (!s.length)
      -        return cb()
      -
      -      // now asyncForEach over this
      -      var l = s.length
      -      , errState = null
      -      s.forEach(function (gsPattern) {
      -        this._process(gsPattern, depth + 1, index, function (er) {
      -          if (errState) return
      -          if (er) return cb(errState = er)
      -          if (--l <= 0) return cb()
      -        })
      -      }, this)
      -
      -      return
      -    }
      -
      -    // not a globstar
      -    // It will only match dot entries if it starts with a dot, or if
      -    // dot is set.  Stuff like @(.foo|.bar) isn't allowed.
      -    var pn = pattern[n]
      -    var rawGlob = pattern[n]._glob
      -    , dotOk = this.dot || rawGlob.charAt(0) === "."
      -
      -    entries = entries.filter(function (e) {
      -      return (e.charAt(0) !== "." || dotOk) &&
      -             e.match(pattern[n])
      -    })
      -
      -    // If n === pattern.length - 1, then there's no need for the extra stat
      -    // *unless* the user has specified "mark" or "stat" explicitly.
      -    // We know that they exist, since the readdir returned them.
      -    if (n === pattern.length - 1 &&
      -        !this.mark &&
      -        !this.stat) {
      -      entries.forEach(function (e) {
      -        if (prefix) {
      -          if (prefix !== "/") e = prefix + "/" + e
      -          else e = prefix + e
      -        }
      -        if (e.charAt(0) === "/" && !this.nomount) {
      -          e = path.join(this.root, e)
      -        }
      -
      -        if (process.platform === "win32")
      -          e = e.replace(/\\/g, "/")
      -
      -        this.matches[index] = this.matches[index] || {}
      -        this.matches[index][e] = true
      -        this.emitMatch(e)
      -      }, this)
      -      return cb.call(this)
      -    }
      -
      -
      -    // now test all the remaining entries as stand-ins for that part
      -    // of the pattern.
      -    var l = entries.length
      -    , errState = null
      -    if (l === 0) return cb() // no matches possible
      -    entries.forEach(function (e) {
      -      var p = pattern.slice(0, n).concat(e).concat(pattern.slice(n + 1))
      -      this._process(p, depth + 1, index, function (er) {
      -        if (errState) return
      -        if (er) return cb(errState = er)
      -        if (--l === 0) return cb.call(this)
      -      })
      -    }, this)
      -  })
      -
      -}
      -
      -function gsKey (pattern) {
      -  return '**' + pattern.map(function (p) {
      -    return (p === minimatch.GLOBSTAR) ? '**' : (''+p)
      -  }).join('/')
      -}
      -
      -Glob.prototype._stat = function (f, cb) {
      -  assert(this instanceof Glob)
      -  var abs = f
      -  if (f.charAt(0) === "/") {
      -    abs = path.join(this.root, f)
      -  } else if (this.changedCwd) {
      -    abs = path.resolve(this.cwd, f)
      -  }
      -
      -  if (f.length > this.maxLength) {
      -    var er = new Error("Path name too long")
      -    er.code = "ENAMETOOLONG"
      -    er.path = f
      -    return this._afterStat(f, abs, cb, er)
      -  }
      -
      -  this.log('stat', [this.cwd, f, '=', abs])
      -
      -  if (!this.stat && this.cache.hasOwnProperty(f)) {
      -    var exists = this.cache[f]
      -    , isDir = exists && (Array.isArray(exists) || exists === 2)
      -    if (this.sync) return cb.call(this, !!exists, isDir)
      -    return process.nextTick(cb.bind(this, !!exists, isDir))
      -  }
      -
      -  var stat = this.statCache[abs]
      -  if (this.sync || stat) {
      -    var er
      -    try {
      -      stat = fs.statSync(abs)
      -    } catch (e) {
      -      er = e
      -    }
      -    this._afterStat(f, abs, cb, er, stat)
      -  } else {
      -    fs.stat(abs, this._afterStat.bind(this, f, abs, cb))
      -  }
      -}
      -
      -Glob.prototype._afterStat = function (f, abs, cb, er, stat) {
      -  var exists
      -  assert(this instanceof Glob)
      -
      -  if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) {
      -    this.log("should be ENOTDIR, fake it")
      -
      -    er = new Error("ENOTDIR, not a directory '" + abs + "'")
      -    er.path = abs
      -    er.code = "ENOTDIR"
      -    stat = null
      -  }
      -
      -  var emit = !this.statCache[abs]
      -  this.statCache[abs] = stat
      -
      -  if (er || !stat) {
      -    exists = false
      -  } else {
      -    exists = stat.isDirectory() ? 2 : 1
      -    if (emit)
      -      this.emit('stat', f, stat)
      -  }
      -  this.cache[f] = this.cache[f] || exists
      -  cb.call(this, !!exists, exists === 2)
      -}
      -
      -Glob.prototype._readdir = function (f, cb) {
      -  assert(this instanceof Glob)
      -  var abs = f
      -  if (f.charAt(0) === "/") {
      -    abs = path.join(this.root, f)
      -  } else if (isAbsolute(f)) {
      -    abs = f
      -  } else if (this.changedCwd) {
      -    abs = path.resolve(this.cwd, f)
      -  }
      -
      -  if (f.length > this.maxLength) {
      -    var er = new Error("Path name too long")
      -    er.code = "ENAMETOOLONG"
      -    er.path = f
      -    return this._afterReaddir(f, abs, cb, er)
      -  }
      -
      -  this.log('readdir', [this.cwd, f, abs])
      -  if (this.cache.hasOwnProperty(f)) {
      -    var c = this.cache[f]
      -    if (Array.isArray(c)) {
      -      if (this.sync) return cb.call(this, null, c)
      -      return process.nextTick(cb.bind(this, null, c))
      -    }
      -
      -    if (!c || c === 1) {
      -      // either ENOENT or ENOTDIR
      -      var code = c ? "ENOTDIR" : "ENOENT"
      -      , er = new Error((c ? "Not a directory" : "Not found") + ": " + f)
      -      er.path = f
      -      er.code = code
      -      this.log(f, er)
      -      if (this.sync) return cb.call(this, er)
      -      return process.nextTick(cb.bind(this, er))
      -    }
      -
      -    // at this point, c === 2, meaning it's a dir, but we haven't
      -    // had to read it yet, or c === true, meaning it's *something*
      -    // but we don't have any idea what.  Need to read it, either way.
      -  }
      -
      -  if (this.sync) {
      -    var er, entries
      -    try {
      -      entries = fs.readdirSync(abs)
      -    } catch (e) {
      -      er = e
      -    }
      -    return this._afterReaddir(f, abs, cb, er, entries)
      -  }
      -
      -  fs.readdir(abs, this._afterReaddir.bind(this, f, abs, cb))
      -}
      -
      -Glob.prototype._afterReaddir = function (f, abs, cb, er, entries) {
      -  assert(this instanceof Glob)
      -  if (entries && !er) {
      -    this.cache[f] = entries
      -    // if we haven't asked to stat everything for suresies, then just
      -    // assume that everything in there exists, so we can avoid
      -    // having to stat it a second time.  This also gets us one step
      -    // further into ELOOP territory.
      -    if (!this.mark && !this.stat) {
      -      entries.forEach(function (e) {
      -        if (f === "/") e = f + e
      -        else e = f + "/" + e
      -        this.cache[e] = true
      -      }, this)
      -    }
      -
      -    return cb.call(this, er, entries)
      -  }
      -
      -  // now handle errors, and cache the information
      -  if (er) switch (er.code) {
      -    case "ENOTDIR": // totally normal. means it *does* exist.
      -      this.cache[f] = 1
      -      return cb.call(this, er)
      -    case "ENOENT": // not terribly unusual
      -    case "ELOOP":
      -    case "ENAMETOOLONG":
      -    case "UNKNOWN":
      -      this.cache[f] = false
      -      return cb.call(this, er)
      -    default: // some unusual error.  Treat as failure.
      -      this.cache[f] = false
      -      if (this.strict) this.emit("error", er)
      -      if (!this.silent) console.error("glob error", er)
      -      return cb.call(this, er)
      -  }
      -}
      -
      -var isAbsolute = process.platform === "win32" ? absWin : absUnix
      -
      -function absWin (p) {
      -  if (absUnix(p)) return true
      -  // pull off the device/UNC bit from a windows path.
      -  // from node's lib/path.js
      -  var splitDeviceRe =
      -      /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/
      -    , result = splitDeviceRe.exec(p)
      -    , device = result[1] || ''
      -    , isUnc = device && device.charAt(1) !== ':'
      -    , isAbsolute = !!result[2] || isUnc // UNC paths are always absolute
      -
      -  return isAbsolute
      -}
      -
      -function absUnix (p) {
      -  return p.charAt(0) === "/" || p === ""
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/package.json
      deleted file mode 100644
      index be63a88e..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/package.json
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "glob@3.2.3",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha"
      -    ]
      -  ],
      -  "_from": "glob@3.2.3",
      -  "_id": "glob@3.2.3",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/glob",
      -  "_npmUser": {
      -    "email": "i@izs.me",
      -    "name": "isaacs"
      -  },
      -  "_npmVersion": "1.3.2",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "glob",
      -    "raw": "glob@3.2.3",
      -    "rawSpec": "3.2.3",
      -    "scope": null,
      -    "spec": "3.2.3",
      -    "type": "version"
      -  },
      -  "_requiredBy": [
      -    "/mocha"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz",
      -  "_shasum": "e313eeb249c7affaa5c475286b0e115b59839467",
      -  "_shrinkwrap": null,
      -  "_spec": "glob@3.2.3",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha",
      -  "author": {
      -    "email": "i@izs.me",
      -    "name": "Isaac Z. Schlueter",
      -    "url": "http://blog.izs.me/"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/isaacs/node-glob/issues"
      -  },
      -  "dependencies": {
      -    "graceful-fs": "~2.0.0",
      -    "inherits": "2",
      -    "minimatch": "~0.2.11"
      -  },
      -  "description": "a little globber",
      -  "devDependencies": {
      -    "mkdirp": "0",
      -    "rimraf": "1",
      -    "tap": "~0.4.0"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "e313eeb249c7affaa5c475286b0e115b59839467",
      -    "tarball": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz"
      -  },
      -  "engines": {
      -    "node": "*"
      -  },
      -  "homepage": "https://github.com/isaacs/node-glob#readme",
      -  "license": "BSD",
      -  "main": "glob.js",
      -  "maintainers": [
      -    {
      -      "email": "i@izs.me",
      -      "name": "isaacs"
      -    }
      -  ],
      -  "name": "glob",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/isaacs/node-glob.git"
      -  },
      -  "scripts": {
      -    "test": "tap test/*.js"
      -  },
      -  "version": "3.2.3"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/00-setup.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/00-setup.js
      deleted file mode 100644
      index 245afafd..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/00-setup.js
      +++ /dev/null
      @@ -1,176 +0,0 @@
      -// just a little pre-run script to set up the fixtures.
      -// zz-finish cleans it up
      -
      -var mkdirp = require("mkdirp")
      -var path = require("path")
      -var i = 0
      -var tap = require("tap")
      -var fs = require("fs")
      -var rimraf = require("rimraf")
      -
      -var files =
      -[ "a/.abcdef/x/y/z/a"
      -, "a/abcdef/g/h"
      -, "a/abcfed/g/h"
      -, "a/b/c/d"
      -, "a/bc/e/f"
      -, "a/c/d/c/b"
      -, "a/cb/e/f"
      -]
      -
      -var symlinkTo = path.resolve(__dirname, "a/symlink/a/b/c")
      -var symlinkFrom = "../.."
      -
      -files = files.map(function (f) {
      -  return path.resolve(__dirname, f)
      -})
      -
      -tap.test("remove fixtures", function (t) {
      -  rimraf(path.resolve(__dirname, "a"), function (er) {
      -    t.ifError(er, "remove fixtures")
      -    t.end()
      -  })
      -})
      -
      -files.forEach(function (f) {
      -  tap.test(f, function (t) {
      -    var d = path.dirname(f)
      -    mkdirp(d, 0755, function (er) {
      -      if (er) {
      -        t.fail(er)
      -        return t.bailout()
      -      }
      -      fs.writeFile(f, "i like tests", function (er) {
      -        t.ifError(er, "make file")
      -        t.end()
      -      })
      -    })
      -  })
      -})
      -
      -if (process.platform !== "win32") {
      -  tap.test("symlinky", function (t) {
      -    var d = path.dirname(symlinkTo)
      -    console.error("mkdirp", d)
      -    mkdirp(d, 0755, function (er) {
      -      t.ifError(er)
      -      fs.symlink(symlinkFrom, symlinkTo, "dir", function (er) {
      -        t.ifError(er, "make symlink")
      -        t.end()
      -      })
      -    })
      -  })
      -}
      -
      -;["foo","bar","baz","asdf","quux","qwer","rewq"].forEach(function (w) {
      -  w = "/tmp/glob-test/" + w
      -  tap.test("create " + w, function (t) {
      -    mkdirp(w, function (er) {
      -      if (er)
      -        throw er
      -      t.pass(w)
      -      t.end()
      -    })
      -  })
      -})
      -
      -
      -// generate the bash pattern test-fixtures if possible
      -if (process.platform === "win32" || !process.env.TEST_REGEN) {
      -  console.error("Windows, or TEST_REGEN unset.  Using cached fixtures.")
      -  return
      -}
      -
      -var spawn = require("child_process").spawn;
      -var globs =
      -  // put more patterns here.
      -  // anything that would be directly in / should be in /tmp/glob-test
      -  ["test/a/*/+(c|g)/./d"
      -  ,"test/a/**/[cg]/../[cg]"
      -  ,"test/a/{b,c,d,e,f}/**/g"
      -  ,"test/a/b/**"
      -  ,"test/**/g"
      -  ,"test/a/abc{fed,def}/g/h"
      -  ,"test/a/abc{fed/g,def}/**/"
      -  ,"test/a/abc{fed/g,def}/**///**/"
      -  ,"test/**/a/**/"
      -  ,"test/+(a|b|c)/a{/,bc*}/**"
      -  ,"test/*/*/*/f"
      -  ,"test/**/f"
      -  ,"test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**"
      -  ,"{./*/*,/tmp/glob-test/*}"
      -  ,"{/tmp/glob-test/*,*}" // evil owl face!  how you taunt me!
      -  ,"test/a/!(symlink)/**"
      -  ]
      -var bashOutput = {}
      -var fs = require("fs")
      -
      -globs.forEach(function (pattern) {
      -  tap.test("generate fixture " + pattern, function (t) {
      -    var cmd = "shopt -s globstar && " +
      -              "shopt -s extglob && " +
      -              "shopt -s nullglob && " +
      -              // "shopt >&2; " +
      -              "eval \'for i in " + pattern + "; do echo $i; done\'"
      -    var cp = spawn("bash", ["-c", cmd], { cwd: path.dirname(__dirname) })
      -    var out = []
      -    cp.stdout.on("data", function (c) {
      -      out.push(c)
      -    })
      -    cp.stderr.pipe(process.stderr)
      -    cp.on("close", function (code) {
      -      out = flatten(out)
      -      if (!out)
      -        out = []
      -      else
      -        out = cleanResults(out.split(/\r*\n/))
      -
      -      bashOutput[pattern] = out
      -      t.notOk(code, "bash test should finish nicely")
      -      t.end()
      -    })
      -  })
      -})
      -
      -tap.test("save fixtures", function (t) {
      -  var fname = path.resolve(__dirname, "bash-results.json")
      -  var data = JSON.stringify(bashOutput, null, 2) + "\n"
      -  fs.writeFile(fname, data, function (er) {
      -    t.ifError(er)
      -    t.end()
      -  })
      -})
      -
      -function cleanResults (m) {
      -  // normalize discrepancies in ordering, duplication,
      -  // and ending slashes.
      -  return m.map(function (m) {
      -    return m.replace(/\/+/g, "/").replace(/\/$/, "")
      -  }).sort(alphasort).reduce(function (set, f) {
      -    if (f !== set[set.length - 1]) set.push(f)
      -    return set
      -  }, []).sort(alphasort).map(function (f) {
      -    // de-windows
      -    return (process.platform !== 'win32') ? f
      -           : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/')
      -  })
      -}
      -
      -function flatten (chunks) {
      -  var s = 0
      -  chunks.forEach(function (c) { s += c.length })
      -  var out = new Buffer(s)
      -  s = 0
      -  chunks.forEach(function (c) {
      -    c.copy(out, s)
      -    s += c.length
      -  })
      -
      -  return out.toString().trim()
      -}
      -
      -function alphasort (a, b) {
      -  a = a.toLowerCase()
      -  b = b.toLowerCase()
      -  return a > b ? 1 : a < b ? -1 : 0
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-comparison.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-comparison.js
      deleted file mode 100644
      index 239ed1a9..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-comparison.js
      +++ /dev/null
      @@ -1,63 +0,0 @@
      -// basic test
      -// show that it does the same thing by default as the shell.
      -var tap = require("tap")
      -, child_process = require("child_process")
      -, bashResults = require("./bash-results.json")
      -, globs = Object.keys(bashResults)
      -, glob = require("../")
      -, path = require("path")
      -
      -// run from the root of the project
      -// this is usually where you're at anyway, but be sure.
      -process.chdir(path.resolve(__dirname, ".."))
      -
      -function alphasort (a, b) {
      -  a = a.toLowerCase()
      -  b = b.toLowerCase()
      -  return a > b ? 1 : a < b ? -1 : 0
      -}
      -
      -globs.forEach(function (pattern) {
      -  var expect = bashResults[pattern]
      -  // anything regarding the symlink thing will fail on windows, so just skip it
      -  if (process.platform === "win32" &&
      -      expect.some(function (m) {
      -        return /\/symlink\//.test(m)
      -      }))
      -    return
      -
      -  tap.test(pattern, function (t) {
      -    glob(pattern, function (er, matches) {
      -      if (er)
      -        throw er
      -
      -      // sort and unmark, just to match the shell results
      -      matches = cleanResults(matches)
      -
      -      t.deepEqual(matches, expect, pattern)
      -      t.end()
      -    })
      -  })
      -
      -  tap.test(pattern + " sync", function (t) {
      -    var matches = cleanResults(glob.sync(pattern))
      -
      -    t.deepEqual(matches, expect, "should match shell")
      -    t.end()
      -  })
      -})
      -
      -function cleanResults (m) {
      -  // normalize discrepancies in ordering, duplication,
      -  // and ending slashes.
      -  return m.map(function (m) {
      -    return m.replace(/\/+/g, "/").replace(/\/$/, "")
      -  }).sort(alphasort).reduce(function (set, f) {
      -    if (f !== set[set.length - 1]) set.push(f)
      -    return set
      -  }, []).sort(alphasort).map(function (f) {
      -    // de-windows
      -    return (process.platform !== 'win32') ? f
      -           : f.replace(/^[a-zA-Z]:[\/\\]+/, '/').replace(/[\\\/]+/g, '/')
      -  })
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-results.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-results.json
      deleted file mode 100644
      index a9bc347d..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/bash-results.json
      +++ /dev/null
      @@ -1,350 +0,0 @@
      -{
      -  "test/a/*/+(c|g)/./d": [
      -    "test/a/b/c/./d"
      -  ],
      -  "test/a/**/[cg]/../[cg]": [
      -    "test/a/abcdef/g/../g",
      -    "test/a/abcfed/g/../g",
      -    "test/a/b/c/../c",
      -    "test/a/c/../c",
      -    "test/a/c/d/c/../c",
      -    "test/a/symlink/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/../c"
      -  ],
      -  "test/a/{b,c,d,e,f}/**/g": [],
      -  "test/a/b/**": [
      -    "test/a/b",
      -    "test/a/b/c",
      -    "test/a/b/c/d"
      -  ],
      -  "test/**/g": [
      -    "test/a/abcdef/g",
      -    "test/a/abcfed/g"
      -  ],
      -  "test/a/abc{fed,def}/g/h": [
      -    "test/a/abcdef/g/h",
      -    "test/a/abcfed/g/h"
      -  ],
      -  "test/a/abc{fed/g,def}/**/": [
      -    "test/a/abcdef",
      -    "test/a/abcdef/g",
      -    "test/a/abcfed/g"
      -  ],
      -  "test/a/abc{fed/g,def}/**///**/": [
      -    "test/a/abcdef",
      -    "test/a/abcdef/g",
      -    "test/a/abcfed/g"
      -  ],
      -  "test/**/a/**/": [
      -    "test/a",
      -    "test/a/abcdef",
      -    "test/a/abcdef/g",
      -    "test/a/abcfed",
      -    "test/a/abcfed/g",
      -    "test/a/b",
      -    "test/a/b/c",
      -    "test/a/bc",
      -    "test/a/bc/e",
      -    "test/a/c",
      -    "test/a/c/d",
      -    "test/a/c/d/c",
      -    "test/a/cb",
      -    "test/a/cb/e",
      -    "test/a/symlink",
      -    "test/a/symlink/a",
      -    "test/a/symlink/a/b",
      -    "test/a/symlink/a/b/c",
      -    "test/a/symlink/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b"
      -  ],
      -  "test/+(a|b|c)/a{/,bc*}/**": [
      -    "test/a/abcdef",
      -    "test/a/abcdef/g",
      -    "test/a/abcdef/g/h",
      -    "test/a/abcfed",
      -    "test/a/abcfed/g",
      -    "test/a/abcfed/g/h"
      -  ],
      -  "test/*/*/*/f": [
      -    "test/a/bc/e/f",
      -    "test/a/cb/e/f"
      -  ],
      -  "test/**/f": [
      -    "test/a/bc/e/f",
      -    "test/a/cb/e/f"
      -  ],
      -  "test/a/symlink/a/b/c/a/b/c/a/b/c//a/b/c////a/b/c/**/b/c/**": [
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b",
      -    "test/a/symlink/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c/a/b/c"
      -  ],
      -  "{./*/*,/tmp/glob-test/*}": [
      -    "./examples/g.js",
      -    "./examples/usr-local.js",
      -    "./node_modules/graceful-fs",
      -    "./node_modules/inherits",
      -    "./node_modules/minimatch",
      -    "./node_modules/mkdirp",
      -    "./node_modules/rimraf",
      -    "./node_modules/tap",
      -    "./test/00-setup.js",
      -    "./test/a",
      -    "./test/bash-comparison.js",
      -    "./test/bash-results.json",
      -    "./test/cwd-test.js",
      -    "./test/globstar-match.js",
      -    "./test/mark.js",
      -    "./test/nocase-nomagic.js",
      -    "./test/pause-resume.js",
      -    "./test/root-nomount.js",
      -    "./test/root.js",
      -    "./test/stat.js",
      -    "./test/zz-cleanup.js",
      -    "/tmp/glob-test/asdf",
      -    "/tmp/glob-test/bar",
      -    "/tmp/glob-test/baz",
      -    "/tmp/glob-test/foo",
      -    "/tmp/glob-test/quux",
      -    "/tmp/glob-test/qwer",
      -    "/tmp/glob-test/rewq"
      -  ],
      -  "{/tmp/glob-test/*,*}": [
      -    "/tmp/glob-test/asdf",
      -    "/tmp/glob-test/bar",
      -    "/tmp/glob-test/baz",
      -    "/tmp/glob-test/foo",
      -    "/tmp/glob-test/quux",
      -    "/tmp/glob-test/qwer",
      -    "/tmp/glob-test/rewq",
      -    "examples",
      -    "glob.js",
      -    "LICENSE",
      -    "node_modules",
      -    "package.json",
      -    "README.md",
      -    "test"
      -  ],
      -  "test/a/!(symlink)/**": [
      -    "test/a/abcdef",
      -    "test/a/abcdef/g",
      -    "test/a/abcdef/g/h",
      -    "test/a/abcfed",
      -    "test/a/abcfed/g",
      -    "test/a/abcfed/g/h",
      -    "test/a/b",
      -    "test/a/b/c",
      -    "test/a/b/c/d",
      -    "test/a/bc",
      -    "test/a/bc/e",
      -    "test/a/bc/e/f",
      -    "test/a/c",
      -    "test/a/c/d",
      -    "test/a/c/d/c",
      -    "test/a/c/d/c/b",
      -    "test/a/cb",
      -    "test/a/cb/e",
      -    "test/a/cb/e/f"
      -  ]
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/cwd-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/cwd-test.js
      deleted file mode 100644
      index 352c27ef..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/cwd-test.js
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -var tap = require("tap")
      -
      -var origCwd = process.cwd()
      -process.chdir(__dirname)
      -
      -tap.test("changing cwd and searching for **/d", function (t) {
      -  var glob = require('../')
      -  var path = require('path')
      -  t.test('.', function (t) {
      -    glob('**/d', function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ 'a/b/c/d', 'a/c/d' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('a', function (t) {
      -    glob('**/d', {cwd:path.resolve('a')}, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ 'b/c/d', 'c/d' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('a/b', function (t) {
      -    glob('**/d', {cwd:path.resolve('a/b')}, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ 'c/d' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('a/b/', function (t) {
      -    glob('**/d', {cwd:path.resolve('a/b/')}, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ 'c/d' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('.', function (t) {
      -    glob('**/d', {cwd: process.cwd()}, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ 'a/b/c/d', 'a/c/d' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('cd -', function (t) {
      -    process.chdir(origCwd)
      -    t.end()
      -  })
      -
      -  t.end()
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/globstar-match.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/globstar-match.js
      deleted file mode 100644
      index 9b234fa2..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/globstar-match.js
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -var Glob = require("../glob.js").Glob
      -var test = require('tap').test
      -
      -test('globstar should not have dupe matches', function(t) {
      -  var pattern = 'a/**/[gh]'
      -  var g = new Glob(pattern, { cwd: __dirname })
      -  var matches = []
      -  g.on('match', function(m) {
      -    console.error('match %j', m)
      -    matches.push(m)
      -  })
      -  g.on('end', function(set) {
      -    console.error('set', set)
      -    matches = matches.sort()
      -    set = set.sort()
      -    t.same(matches, set, 'should have same set of matches')
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/mark.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/mark.js
      deleted file mode 100644
      index ed68a335..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/mark.js
      +++ /dev/null
      @@ -1,74 +0,0 @@
      -var test = require("tap").test
      -var glob = require('../')
      -process.chdir(__dirname)
      -
      -test("mark, no / on pattern", function (t) {
      -  glob("a/*", {mark: true}, function (er, results) {
      -    if (er)
      -      throw er
      -    var expect = [ 'a/abcdef/',
      -                   'a/abcfed/',
      -                   'a/b/',
      -                   'a/bc/',
      -                   'a/c/',
      -                   'a/cb/' ]
      -
      -    if (process.platform !== "win32")
      -      expect.push('a/symlink/')
      -
      -    t.same(results, expect)
      -    t.end()
      -  })
      -})
      -
      -test("mark=false, no / on pattern", function (t) {
      -  glob("a/*", function (er, results) {
      -    if (er)
      -      throw er
      -    var expect = [ 'a/abcdef',
      -                   'a/abcfed',
      -                   'a/b',
      -                   'a/bc',
      -                   'a/c',
      -                   'a/cb' ]
      -
      -    if (process.platform !== "win32")
      -      expect.push('a/symlink')
      -    t.same(results, expect)
      -    t.end()
      -  })
      -})
      -
      -test("mark=true, / on pattern", function (t) {
      -  glob("a/*/", {mark: true}, function (er, results) {
      -    if (er)
      -      throw er
      -    var expect = [ 'a/abcdef/',
      -                    'a/abcfed/',
      -                    'a/b/',
      -                    'a/bc/',
      -                    'a/c/',
      -                    'a/cb/' ]
      -    if (process.platform !== "win32")
      -      expect.push('a/symlink/')
      -    t.same(results, expect)
      -    t.end()
      -  })
      -})
      -
      -test("mark=false, / on pattern", function (t) {
      -  glob("a/*/", function (er, results) {
      -    if (er)
      -      throw er
      -    var expect = [ 'a/abcdef/',
      -                   'a/abcfed/',
      -                   'a/b/',
      -                   'a/bc/',
      -                   'a/c/',
      -                   'a/cb/' ]
      -    if (process.platform !== "win32")
      -      expect.push('a/symlink/')
      -    t.same(results, expect)
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js
      deleted file mode 100644
      index d8629709..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/nocase-nomagic.js
      +++ /dev/null
      @@ -1,113 +0,0 @@
      -var fs = require('graceful-fs');
      -var test = require('tap').test;
      -var glob = require('../');
      -
      -test('mock fs', function(t) {
      -  var stat = fs.stat
      -  var statSync = fs.statSync
      -  var readdir = fs.readdir
      -  var readdirSync = fs.readdirSync
      -
      -  function fakeStat(path) {
      -    var ret
      -    switch (path.toLowerCase()) {
      -      case '/tmp': case '/tmp/':
      -        ret = { isDirectory: function() { return true } }
      -        break
      -      case '/tmp/a':
      -        ret = { isDirectory: function() { return false } }
      -        break
      -    }
      -    return ret
      -  }
      -
      -  fs.stat = function(path, cb) {
      -    var f = fakeStat(path);
      -    if (f) {
      -      process.nextTick(function() {
      -        cb(null, f)
      -      })
      -    } else {
      -      stat.call(fs, path, cb)
      -    }
      -  }
      -
      -  fs.statSync = function(path) {
      -    return fakeStat(path) || statSync.call(fs, path)
      -  }
      -
      -  function fakeReaddir(path) {
      -    var ret
      -    switch (path.toLowerCase()) {
      -      case '/tmp': case '/tmp/':
      -        ret = [ 'a', 'A' ]
      -        break
      -      case '/':
      -        ret = ['tmp', 'tMp', 'tMP', 'TMP']
      -    }
      -    return ret
      -  }
      -
      -  fs.readdir = function(path, cb) {
      -    var f = fakeReaddir(path)
      -    if (f)
      -      process.nextTick(function() {
      -        cb(null, f)
      -      })
      -    else
      -      readdir.call(fs, path, cb)
      -  }
      -
      -  fs.readdirSync = function(path) {
      -    return fakeReaddir(path) || readdirSync.call(fs, path)
      -  }
      -
      -  t.pass('mocked')
      -  t.end()
      -})
      -
      -test('nocase, nomagic', function(t) {
      -  var n = 2
      -  var want = [ '/TMP/A',
      -               '/TMP/a',
      -               '/tMP/A',
      -               '/tMP/a',
      -               '/tMp/A',
      -               '/tMp/a',
      -               '/tmp/A',
      -               '/tmp/a' ]
      -  glob('/tmp/a', { nocase: true }, function(er, res) {
      -    if (er)
      -      throw er
      -    t.same(res.sort(), want)
      -    if (--n === 0) t.end()
      -  })
      -  glob('/tmp/A', { nocase: true }, function(er, res) {
      -    if (er)
      -      throw er
      -    t.same(res.sort(), want)
      -    if (--n === 0) t.end()
      -  })
      -})
      -
      -test('nocase, with some magic', function(t) {
      -  t.plan(2)
      -  var want = [ '/TMP/A',
      -               '/TMP/a',
      -               '/tMP/A',
      -               '/tMP/a',
      -               '/tMp/A',
      -               '/tMp/a',
      -               '/tmp/A',
      -               '/tmp/a' ]
      -  glob('/tmp/*', { nocase: true }, function(er, res) {
      -    if (er)
      -      throw er
      -    t.same(res.sort(), want)
      -  })
      -  glob('/tmp/*', { nocase: true }, function(er, res) {
      -    if (er)
      -      throw er
      -    t.same(res.sort(), want)
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/pause-resume.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/pause-resume.js
      deleted file mode 100644
      index e1ffbab1..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/pause-resume.js
      +++ /dev/null
      @@ -1,73 +0,0 @@
      -// show that no match events happen while paused.
      -var tap = require("tap")
      -, child_process = require("child_process")
      -// just some gnarly pattern with lots of matches
      -, pattern = "test/a/!(symlink)/**"
      -, bashResults = require("./bash-results.json")
      -, patterns = Object.keys(bashResults)
      -, glob = require("../")
      -, Glob = glob.Glob
      -, path = require("path")
      -
      -// run from the root of the project
      -// this is usually where you're at anyway, but be sure.
      -process.chdir(path.resolve(__dirname, ".."))
      -
      -function alphasort (a, b) {
      -  a = a.toLowerCase()
      -  b = b.toLowerCase()
      -  return a > b ? 1 : a < b ? -1 : 0
      -}
      -
      -function cleanResults (m) {
      -  // normalize discrepancies in ordering, duplication,
      -  // and ending slashes.
      -  return m.map(function (m) {
      -    return m.replace(/\/+/g, "/").replace(/\/$/, "")
      -  }).sort(alphasort).reduce(function (set, f) {
      -    if (f !== set[set.length - 1]) set.push(f)
      -    return set
      -  }, []).sort(alphasort).map(function (f) {
      -    // de-windows
      -    return (process.platform !== 'win32') ? f
      -           : f.replace(/^[a-zA-Z]:\\\\/, '/').replace(/\\/g, '/')
      -  })
      -}
      -
      -var globResults = []
      -tap.test("use a Glob object, and pause/resume it", function (t) {
      -  var g = new Glob(pattern)
      -  , paused = false
      -  , res = []
      -  , expect = bashResults[pattern]
      -
      -  g.on("pause", function () {
      -    console.error("pause")
      -  })
      -
      -  g.on("resume", function () {
      -    console.error("resume")
      -  })
      -
      -  g.on("match", function (m) {
      -    t.notOk(g.paused, "must not be paused")
      -    globResults.push(m)
      -    g.pause()
      -    t.ok(g.paused, "must be paused")
      -    setTimeout(g.resume.bind(g), 10)
      -  })
      -
      -  g.on("end", function (matches) {
      -    t.pass("reached glob end")
      -    globResults = cleanResults(globResults)
      -    matches = cleanResults(matches)
      -    t.deepEqual(matches, globResults,
      -      "end event matches should be the same as match events")
      -
      -    t.deepEqual(matches, expect,
      -      "glob matches should be the same as bash results")
      -
      -    t.end()
      -  })
      -})
      -
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root-nomount.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root-nomount.js
      deleted file mode 100644
      index 3ac5979b..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root-nomount.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -var tap = require("tap")
      -
      -var origCwd = process.cwd()
      -process.chdir(__dirname)
      -
      -tap.test("changing root and searching for /b*/**", function (t) {
      -  var glob = require('../')
      -  var path = require('path')
      -  t.test('.', function (t) {
      -    glob('/b*/**', { globDebug: true, root: '.', nomount: true }, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('a', function (t) {
      -    glob('/b*/**', { globDebug: true, root: path.resolve('a'), nomount: true }, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('root=a, cwd=a/b', function (t) {
      -    glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b'), nomount: true }, function (er, matches) {
      -      t.ifError(er)
      -      t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ])
      -      t.end()
      -    })
      -  })
      -
      -  t.test('cd -', function (t) {
      -    process.chdir(origCwd)
      -    t.end()
      -  })
      -
      -  t.end()
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root.js
      deleted file mode 100644
      index 95c23f99..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/root.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -var t = require("tap")
      -
      -var origCwd = process.cwd()
      -process.chdir(__dirname)
      -
      -var glob = require('../')
      -var path = require('path')
      -
      -t.test('.', function (t) {
      -  glob('/b*/**', { globDebug: true, root: '.' }, function (er, matches) {
      -    t.ifError(er)
      -    t.like(matches, [])
      -    t.end()
      -  })
      -})
      -
      -
      -t.test('a', function (t) {
      -  console.error("root=" + path.resolve('a'))
      -  glob('/b*/**', { globDebug: true, root: path.resolve('a') }, function (er, matches) {
      -    t.ifError(er)
      -    var wanted = [
      -        '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f'
      -      ].map(function (m) {
      -        return path.join(path.resolve('a'), m).replace(/\\/g, '/')
      -      })
      -
      -    t.like(matches, wanted)
      -    t.end()
      -  })
      -})
      -
      -t.test('root=a, cwd=a/b', function (t) {
      -  glob('/b*/**', { globDebug: true, root: 'a', cwd: path.resolve('a/b') }, function (er, matches) {
      -    t.ifError(er)
      -    t.like(matches, [ '/b', '/b/c', '/b/c/d', '/bc', '/bc/e', '/bc/e/f' ].map(function (m) {
      -      return path.join(path.resolve('a'), m).replace(/\\/g, '/')
      -    }))
      -    t.end()
      -  })
      -})
      -
      -t.test('cd -', function (t) {
      -  process.chdir(origCwd)
      -  t.end()
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/stat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/stat.js
      deleted file mode 100644
      index 62917114..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/stat.js
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -var glob = require('../')
      -var test = require('tap').test
      -var path = require('path')
      -
      -test('stat all the things', function(t) {
      -  var g = new glob.Glob('a/*abc*/**', { stat: true, cwd: __dirname })
      -  var matches = []
      -  g.on('match', function(m) {
      -    matches.push(m)
      -  })
      -  var stats = []
      -  g.on('stat', function(m) {
      -    stats.push(m)
      -  })
      -  g.on('end', function(eof) {
      -    stats = stats.sort()
      -    matches = matches.sort()
      -    eof = eof.sort()
      -    t.same(stats, matches)
      -    t.same(eof, matches)
      -    var cache = Object.keys(this.statCache)
      -    t.same(cache.map(function (f) {
      -      return path.relative(__dirname, f)
      -    }).sort(), matches)
      -
      -    cache.forEach(function(c) {
      -      t.equal(typeof this.statCache[c], 'object')
      -    }, this)
      -
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/zz-cleanup.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/zz-cleanup.js
      deleted file mode 100644
      index e085f0fa..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/glob/test/zz-cleanup.js
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -// remove the fixtures
      -var tap = require("tap")
      -, rimraf = require("rimraf")
      -, path = require("path")
      -
      -tap.test("cleanup fixtures", function (t) {
      -  rimraf(path.resolve(__dirname, "a"), function (er) {
      -    t.ifError(er, "removed")
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/.npmignore
      deleted file mode 100644
      index c2658d7d..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/.npmignore
      +++ /dev/null
      @@ -1 +0,0 @@
      -node_modules/
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/LICENSE
      deleted file mode 100644
      index 0c44ae71..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/LICENSE
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -Copyright (c) Isaac Z. Schlueter ("Author")
      -All rights reserved.
      -
      -The BSD License
      -
      -Redistribution and use in source and binary forms, with or without
      -modification, are permitted provided that the following conditions
      -are met:
      -
      -1. Redistributions of source code must retain the above copyright
      -   notice, this list of conditions and the following disclaimer.
      -
      -2. Redistributions in binary form must reproduce the above copyright
      -   notice, this list of conditions and the following disclaimer in the
      -   documentation and/or other materials provided with the distribution.
      -
      -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
      -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      -PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
      -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
      -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
      -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
      -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
      -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/README.md
      deleted file mode 100644
      index eb1a1093..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/README.md
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -# graceful-fs
      -
      -graceful-fs functions as a drop-in replacement for the fs module,
      -making various improvements.
      -
      -The improvements are meant to normalize behavior across different
      -platforms and environments, and to make filesystem access more
      -resilient to errors.
      -
      -## Improvements over fs module
      -
      -graceful-fs:
      -
      -* Queues up `open` and `readdir` calls, and retries them once
      -  something closes if there is an EMFILE error from too many file
      -  descriptors.
      -* fixes `lchmod` for Node versions prior to 0.6.2.
      -* implements `fs.lutimes` if possible. Otherwise it becomes a noop.
      -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or
      -  `lchown` if the user isn't root.
      -* makes `lchmod` and `lchown` become noops, if not available.
      -* retries reading a file if `read` results in EAGAIN error.
      -
      -On Windows, it retries renaming a file for up to one second if `EACCESS`
      -or `EPERM` error occurs, likely because antivirus software has locked
      -the directory.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/graceful-fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/graceful-fs.js
      deleted file mode 100644
      index c84db910..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/graceful-fs.js
      +++ /dev/null
      @@ -1,160 +0,0 @@
      -// Monkey-patching the fs module.
      -// It's ugly, but there is simply no other way to do this.
      -var fs = module.exports = require('fs')
      -
      -var assert = require('assert')
      -
      -// fix up some busted stuff, mostly on windows and old nodes
      -require('./polyfills.js')
      -
      -// The EMFILE enqueuing stuff
      -
      -var util = require('util')
      -
      -function noop () {}
      -
      -var debug = noop
      -if (util.debuglog)
      -  debug = util.debuglog('gfs')
      -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || ''))
      -  debug = function() {
      -    var m = util.format.apply(util, arguments)
      -    m = 'GFS: ' + m.split(/\n/).join('\nGFS: ')
      -    console.error(m)
      -  }
      -
      -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) {
      -  process.on('exit', function() {
      -    debug('fds', fds)
      -    debug(queue)
      -    assert.equal(queue.length, 0)
      -  })
      -}
      -
      -
      -var originalOpen = fs.open
      -fs.open = open
      -
      -function open(path, flags, mode, cb) {
      -  if (typeof mode === "function") cb = mode, mode = null
      -  if (typeof cb !== "function") cb = noop
      -  new OpenReq(path, flags, mode, cb)
      -}
      -
      -function OpenReq(path, flags, mode, cb) {
      -  this.path = path
      -  this.flags = flags
      -  this.mode = mode
      -  this.cb = cb
      -  Req.call(this)
      -}
      -
      -util.inherits(OpenReq, Req)
      -
      -OpenReq.prototype.process = function() {
      -  originalOpen.call(fs, this.path, this.flags, this.mode, this.done)
      -}
      -
      -var fds = {}
      -OpenReq.prototype.done = function(er, fd) {
      -  debug('open done', er, fd)
      -  if (fd)
      -    fds['fd' + fd] = this.path
      -  Req.prototype.done.call(this, er, fd)
      -}
      -
      -
      -var originalReaddir = fs.readdir
      -fs.readdir = readdir
      -
      -function readdir(path, cb) {
      -  if (typeof cb !== "function") cb = noop
      -  new ReaddirReq(path, cb)
      -}
      -
      -function ReaddirReq(path, cb) {
      -  this.path = path
      -  this.cb = cb
      -  Req.call(this)
      -}
      -
      -util.inherits(ReaddirReq, Req)
      -
      -ReaddirReq.prototype.process = function() {
      -  originalReaddir.call(fs, this.path, this.done)
      -}
      -
      -ReaddirReq.prototype.done = function(er, files) {
      -  if (files && files.sort)
      -    files = files.sort()
      -  Req.prototype.done.call(this, er, files)
      -  onclose()
      -}
      -
      -
      -var originalClose = fs.close
      -fs.close = close
      -
      -function close (fd, cb) {
      -  debug('close', fd)
      -  if (typeof cb !== "function") cb = noop
      -  delete fds['fd' + fd]
      -  originalClose.call(fs, fd, function(er) {
      -    onclose()
      -    cb(er)
      -  })
      -}
      -
      -
      -var originalCloseSync = fs.closeSync
      -fs.closeSync = closeSync
      -
      -function closeSync (fd) {
      -  try {
      -    return originalCloseSync(fd)
      -  } finally {
      -    onclose()
      -  }
      -}
      -
      -
      -// Req class
      -function Req () {
      -  // start processing
      -  this.done = this.done.bind(this)
      -  this.failures = 0
      -  this.process()
      -}
      -
      -Req.prototype.done = function (er, result) {
      -  var tryAgain = false
      -  if (er) {
      -    var code = er.code
      -    var tryAgain = code === "EMFILE"
      -    if (process.platform === "win32")
      -      tryAgain = tryAgain || code === "OK"
      -  }
      -
      -  if (tryAgain) {
      -    this.failures ++
      -    enqueue(this)
      -  } else {
      -    var cb = this.cb
      -    cb(er, result)
      -  }
      -}
      -
      -var queue = []
      -
      -function enqueue(req) {
      -  queue.push(req)
      -  debug('enqueue %d %s', queue.length, req.constructor.name, req)
      -}
      -
      -function onclose() {
      -  var req = queue.shift()
      -  if (req) {
      -    debug('process', req.constructor.name, req)
      -    req.process()
      -  }
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/package.json
      deleted file mode 100644
      index 32e545d4..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/package.json
      +++ /dev/null
      @@ -1,93 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "graceful-fs@~2.0.0",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha/node_modules/glob"
      -    ]
      -  ],
      -  "_from": "graceful-fs@>=2.0.0 <2.1.0",
      -  "_id": "graceful-fs@2.0.3",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/graceful-fs",
      -  "_npmUser": {
      -    "email": "i@izs.me",
      -    "name": "isaacs"
      -  },
      -  "_npmVersion": "1.4.6",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "graceful-fs",
      -    "raw": "graceful-fs@~2.0.0",
      -    "rawSpec": "~2.0.0",
      -    "scope": null,
      -    "spec": ">=2.0.0 <2.1.0",
      -    "type": "range"
      -  },
      -  "_requiredBy": [
      -    "/mocha/glob"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz",
      -  "_shasum": "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0",
      -  "_shrinkwrap": null,
      -  "_spec": "graceful-fs@~2.0.0",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha/node_modules/glob",
      -  "author": {
      -    "email": "i@izs.me",
      -    "name": "Isaac Z. Schlueter",
      -    "url": "http://blog.izs.me"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/isaacs/node-graceful-fs/issues"
      -  },
      -  "dependencies": {},
      -  "deprecated": "graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.",
      -  "description": "A drop-in replacement for fs, making various improvements.",
      -  "devDependencies": {},
      -  "directories": {
      -    "test": "test"
      -  },
      -  "dist": {
      -    "shasum": "7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0",
      -    "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
      -  },
      -  "engines": {
      -    "node": ">=0.4.0"
      -  },
      -  "homepage": "https://github.com/isaacs/node-graceful-fs",
      -  "keywords": [
      -    "fs",
      -    "module",
      -    "reading",
      -    "retry",
      -    "retries",
      -    "queue",
      -    "error",
      -    "errors",
      -    "handling",
      -    "EMFILE",
      -    "EAGAIN",
      -    "EINVAL",
      -    "EPERM",
      -    "EACCESS"
      -  ],
      -  "license": "BSD",
      -  "main": "graceful-fs.js",
      -  "maintainers": [
      -    {
      -      "email": "i@izs.me",
      -      "name": "isaacs"
      -    }
      -  ],
      -  "name": "graceful-fs",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/isaacs/node-graceful-fs.git"
      -  },
      -  "scripts": {
      -    "test": "tap test/*.js"
      -  },
      -  "version": "2.0.3"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/polyfills.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/polyfills.js
      deleted file mode 100644
      index afc83b3f..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/polyfills.js
      +++ /dev/null
      @@ -1,228 +0,0 @@
      -var fs = require('fs')
      -var constants = require('constants')
      -
      -var origCwd = process.cwd
      -var cwd = null
      -process.cwd = function() {
      -  if (!cwd)
      -    cwd = origCwd.call(process)
      -  return cwd
      -}
      -var chdir = process.chdir
      -process.chdir = function(d) {
      -  cwd = null
      -  chdir.call(process, d)
      -}
      -
      -// (re-)implement some things that are known busted or missing.
      -
      -// lchmod, broken prior to 0.6.2
      -// back-port the fix here.
      -if (constants.hasOwnProperty('O_SYMLINK') &&
      -    process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
      -  fs.lchmod = function (path, mode, callback) {
      -    callback = callback || noop
      -    fs.open( path
      -           , constants.O_WRONLY | constants.O_SYMLINK
      -           , mode
      -           , function (err, fd) {
      -      if (err) {
      -        callback(err)
      -        return
      -      }
      -      // prefer to return the chmod error, if one occurs,
      -      // but still try to close, and report closing errors if they occur.
      -      fs.fchmod(fd, mode, function (err) {
      -        fs.close(fd, function(err2) {
      -          callback(err || err2)
      -        })
      -      })
      -    })
      -  }
      -
      -  fs.lchmodSync = function (path, mode) {
      -    var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)
      -
      -    // prefer to return the chmod error, if one occurs,
      -    // but still try to close, and report closing errors if they occur.
      -    var err, err2
      -    try {
      -      var ret = fs.fchmodSync(fd, mode)
      -    } catch (er) {
      -      err = er
      -    }
      -    try {
      -      fs.closeSync(fd)
      -    } catch (er) {
      -      err2 = er
      -    }
      -    if (err || err2) throw (err || err2)
      -    return ret
      -  }
      -}
      -
      -
      -// lutimes implementation, or no-op
      -if (!fs.lutimes) {
      -  if (constants.hasOwnProperty("O_SYMLINK")) {
      -    fs.lutimes = function (path, at, mt, cb) {
      -      fs.open(path, constants.O_SYMLINK, function (er, fd) {
      -        cb = cb || noop
      -        if (er) return cb(er)
      -        fs.futimes(fd, at, mt, function (er) {
      -          fs.close(fd, function (er2) {
      -            return cb(er || er2)
      -          })
      -        })
      -      })
      -    }
      -
      -    fs.lutimesSync = function (path, at, mt) {
      -      var fd = fs.openSync(path, constants.O_SYMLINK)
      -        , err
      -        , err2
      -        , ret
      -
      -      try {
      -        var ret = fs.futimesSync(fd, at, mt)
      -      } catch (er) {
      -        err = er
      -      }
      -      try {
      -        fs.closeSync(fd)
      -      } catch (er) {
      -        err2 = er
      -      }
      -      if (err || err2) throw (err || err2)
      -      return ret
      -    }
      -
      -  } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) {
      -    // maybe utimensat will be bound soonish?
      -    fs.lutimes = function (path, at, mt, cb) {
      -      fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb)
      -    }
      -
      -    fs.lutimesSync = function (path, at, mt) {
      -      return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW)
      -    }
      -
      -  } else {
      -    fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) }
      -    fs.lutimesSync = function () {}
      -  }
      -}
      -
      -
      -// https://github.com/isaacs/node-graceful-fs/issues/4
      -// Chown should not fail on einval or eperm if non-root.
      -
      -fs.chown = chownFix(fs.chown)
      -fs.fchown = chownFix(fs.fchown)
      -fs.lchown = chownFix(fs.lchown)
      -
      -fs.chownSync = chownFixSync(fs.chownSync)
      -fs.fchownSync = chownFixSync(fs.fchownSync)
      -fs.lchownSync = chownFixSync(fs.lchownSync)
      -
      -function chownFix (orig) {
      -  if (!orig) return orig
      -  return function (target, uid, gid, cb) {
      -    return orig.call(fs, target, uid, gid, function (er, res) {
      -      if (chownErOk(er)) er = null
      -      cb(er, res)
      -    })
      -  }
      -}
      -
      -function chownFixSync (orig) {
      -  if (!orig) return orig
      -  return function (target, uid, gid) {
      -    try {
      -      return orig.call(fs, target, uid, gid)
      -    } catch (er) {
      -      if (!chownErOk(er)) throw er
      -    }
      -  }
      -}
      -
      -function chownErOk (er) {
      -  // if there's no getuid, or if getuid() is something other than 0,
      -  // and the error is EINVAL or EPERM, then just ignore it.
      -  // This specific case is a silent failure in cp, install, tar,
      -  // and most other unix tools that manage permissions.
      -  // When running as root, or if other types of errors are encountered,
      -  // then it's strict.
      -  if (!er || (!process.getuid || process.getuid() !== 0)
      -      && (er.code === "EINVAL" || er.code === "EPERM")) return true
      -}
      -
      -
      -// if lchmod/lchown do not exist, then make them no-ops
      -if (!fs.lchmod) {
      -  fs.lchmod = function (path, mode, cb) {
      -    process.nextTick(cb)
      -  }
      -  fs.lchmodSync = function () {}
      -}
      -if (!fs.lchown) {
      -  fs.lchown = function (path, uid, gid, cb) {
      -    process.nextTick(cb)
      -  }
      -  fs.lchownSync = function () {}
      -}
      -
      -
      -
      -// on Windows, A/V software can lock the directory, causing this
      -// to fail with an EACCES or EPERM if the directory contains newly
      -// created files.  Try again on failure, for up to 1 second.
      -if (process.platform === "win32") {
      -  var rename_ = fs.rename
      -  fs.rename = function rename (from, to, cb) {
      -    var start = Date.now()
      -    rename_(from, to, function CB (er) {
      -      if (er
      -          && (er.code === "EACCES" || er.code === "EPERM")
      -          && Date.now() - start < 1000) {
      -        return rename_(from, to, CB)
      -      }
      -      cb(er)
      -    })
      -  }
      -}
      -
      -
      -// if read() returns EAGAIN, then just try it again.
      -var read = fs.read
      -fs.read = function (fd, buffer, offset, length, position, callback_) {
      -  var callback
      -  if (callback_ && typeof callback_ === 'function') {
      -    var eagCounter = 0
      -    callback = function (er, _, __) {
      -      if (er && er.code === 'EAGAIN' && eagCounter < 10) {
      -        eagCounter ++
      -        return read.call(fs, fd, buffer, offset, length, position, callback)
      -      }
      -      callback_.apply(this, arguments)
      -    }
      -  }
      -  return read.call(fs, fd, buffer, offset, length, position, callback)
      -}
      -
      -var readSync = fs.readSync
      -fs.readSync = function (fd, buffer, offset, length, position) {
      -  var eagCounter = 0
      -  while (true) {
      -    try {
      -      return readSync.call(fs, fd, buffer, offset, length, position)
      -    } catch (er) {
      -      if (er.code === 'EAGAIN' && eagCounter < 10) {
      -        eagCounter ++
      -        continue
      -      }
      -      throw er
      -    }
      -  }
      -}
      -
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/open.js
      deleted file mode 100644
      index 104f36b0..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/open.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -var test = require('tap').test
      -var fs = require('../graceful-fs.js')
      -
      -test('graceful fs is monkeypatched fs', function (t) {
      -  t.equal(fs, require('fs'))
      -  t.end()
      -})
      -
      -test('open an existing file works', function (t) {
      -  var fd = fs.openSync(__filename, 'r')
      -  fs.closeSync(fd)
      -  fs.open(__filename, 'r', function (er, fd) {
      -    if (er) throw er
      -    fs.close(fd, function (er) {
      -      if (er) throw er
      -      t.pass('works')
      -      t.end()
      -    })
      -  })
      -})
      -
      -test('open a non-existing file throws', function (t) {
      -  var er
      -  try {
      -    var fd = fs.openSync('this file does not exist', 'r')
      -  } catch (x) {
      -    er = x
      -  }
      -  t.ok(er, 'should throw')
      -  t.notOk(fd, 'should not get an fd')
      -  t.equal(er.code, 'ENOENT')
      -
      -  fs.open('neither does this file', 'r', function (er, fd) {
      -    t.ok(er, 'should throw')
      -    t.notOk(fd, 'should not get an fd')
      -    t.equal(er.code, 'ENOENT')
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/readdir-sort.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/readdir-sort.js
      deleted file mode 100644
      index aeaedf1c..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/graceful-fs/test/readdir-sort.js
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -var test = require("tap").test
      -var fs = require("fs")
      -
      -var readdir = fs.readdir
      -fs.readdir = function(path, cb) {
      -  process.nextTick(function() {
      -    cb(null, ["b", "z", "a"])
      -  })
      -}
      -
      -var g = require("../")
      -
      -test("readdir reorder", function (t) {
      -  g.readdir("whatevers", function (er, files) {
      -    if (er)
      -      throw er
      -    console.error(files)
      -    t.same(files, [ "a", "b", "z" ])
      -    t.end()
      -  })
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/.npmignore
      deleted file mode 100644
      index 3c3629e6..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/.npmignore
      +++ /dev/null
      @@ -1 +0,0 @@
      -node_modules
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/LICENSE
      deleted file mode 100644
      index 05a40109..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/LICENSE
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -Copyright 2009, 2010, 2011 Isaac Z. Schlueter.
      -All rights reserved.
      -
      -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/README.md
      deleted file mode 100644
      index 978268e2..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/README.md
      +++ /dev/null
      @@ -1,218 +0,0 @@
      -# minimatch
      -
      -A minimal matching utility.
      -
      -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)
      -
      -
      -This is the matching library used internally by npm.
      -
      -Eventually, it will replace the C binding in node-glob.
      -
      -It works by converting glob expressions into JavaScript `RegExp`
      -objects.
      -
      -## Usage
      -
      -```javascript
      -var minimatch = require("minimatch")
      -
      -minimatch("bar.foo", "*.foo") // true!
      -minimatch("bar.foo", "*.bar") // false!
      -minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true, and noisy!
      -```
      -
      -## Features
      -
      -Supports these glob features:
      -
      -* Brace Expansion
      -* Extended glob matching
      -* "Globstar" `**` matching
      -
      -See:
      -
      -* `man sh`
      -* `man bash`
      -* `man 3 fnmatch`
      -* `man 5 gitignore`
      -
      -## Minimatch Class
      -
      -Create a minimatch object by instanting the `minimatch.Minimatch` class.
      -
      -```javascript
      -var Minimatch = require("minimatch").Minimatch
      -var mm = new Minimatch(pattern, options)
      -```
      -
      -### Properties
      -
      -* `pattern` The original pattern the minimatch object represents.
      -* `options` The options supplied to the constructor.
      -* `set` A 2-dimensional array of regexp or string expressions.
      -  Each row in the
      -  array corresponds to a brace-expanded pattern.  Each item in the row
      -  corresponds to a single path-part.  For example, the pattern
      -  `{a,b/c}/d` would expand to a set of patterns like:
      -
      -        [ [ a, d ]
      -        , [ b, c, d ] ]
      -
      -    If a portion of the pattern doesn't have any "magic" in it
      -    (that is, it's something like `"foo"` rather than `fo*o?`), then it
      -    will be left as a string rather than converted to a regular
      -    expression.
      -
      -* `regexp` Created by the `makeRe` method.  A single regular expression
      -  expressing the entire pattern.  This is useful in cases where you wish
      -  to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
      -* `negate` True if the pattern is negated.
      -* `comment` True if the pattern is a comment.
      -* `empty` True if the pattern is `""`.
      -
      -### Methods
      -
      -* `makeRe` Generate the `regexp` member if necessary, and return it.
      -  Will return `false` if the pattern is invalid.
      -* `match(fname)` Return true if the filename matches the pattern, or
      -  false otherwise.
      -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split
      -  filename, and match it against a single row in the `regExpSet`.  This
      -  method is mainly for internal use, but is exposed so that it can be
      -  used by a glob-walker that needs to avoid excessive filesystem calls.
      -
      -All other methods are internal, and will be called as necessary.
      -
      -## Functions
      -
      -The top-level exported function has a `cache` property, which is an LRU
      -cache set to store 100 items.  So, calling these methods repeatedly
      -with the same pattern and options will use the same Minimatch object,
      -saving the cost of parsing it multiple times.
      -
      -### minimatch(path, pattern, options)
      -
      -Main export.  Tests a path against the pattern using the options.
      -
      -```javascript
      -var isJS = minimatch(file, "*.js", { matchBase: true })
      -```
      -
      -### minimatch.filter(pattern, options)
      -
      -Returns a function that tests its
      -supplied argument, suitable for use with `Array.filter`.  Example:
      -
      -```javascript
      -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true}))
      -```
      -
      -### minimatch.match(list, pattern, options)
      -
      -Match against the list of
      -files, in the style of fnmatch or glob.  If nothing is matched, and
      -options.nonull is set, then return a list containing the pattern itself.
      -
      -```javascript
      -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true}))
      -```
      -
      -### minimatch.makeRe(pattern, options)
      -
      -Make a regular expression object from the pattern.
      -
      -## Options
      -
      -All options are `false` by default.
      -
      -### debug
      -
      -Dump a ton of stuff to stderr.
      -
      -### nobrace
      -
      -Do not expand `{a,b}` and `{1..3}` brace sets.
      -
      -### noglobstar
      -
      -Disable `**` matching against multiple folder names.
      -
      -### dot
      -
      -Allow patterns to match filenames starting with a period, even if
      -the pattern does not explicitly have a period in that spot.
      -
      -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
      -is set.
      -
      -### noext
      -
      -Disable "extglob" style patterns like `+(a|b)`.
      -
      -### nocase
      -
      -Perform a case-insensitive match.
      -
      -### nonull
      -
      -When a match is not found by `minimatch.match`, return a list containing
      -the pattern itself.  When set, an empty list is returned if there are
      -no matches.
      -
      -### matchBase
      -
      -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`.
      -
      -### nocomment
      -
      -Suppress the behavior of treating `#` at the start of a pattern as a
      -comment.
      -
      -### nonegate
      -
      -Suppress the behavior of treating a leading `!` character as negation.
      -
      -### flipNegate
      -
      -Returns from negate expressions the same as if they were not negated.
      -(Ie, true on a hit, false on a miss.)
      -
      -
      -## Comparisons to other fnmatch/glob implementations
      -
      -While strict compliance with the existing standards is a worthwhile
      -goal, some discrepancies exist between minimatch and other
      -implementations, and are intentional.
      -
      -If the pattern starts with a `!` character, then it is negated.  Set the
      -`nonegate` flag to suppress this behavior, and treat leading `!`
      -characters normally.  This is perhaps relevant if you wish to start the
      -pattern with a negative extglob pattern like `!(a|B)`.  Multiple `!`
      -characters at the start of a pattern will negate the pattern multiple
      -times.
      -
      -If a pattern starts with `#`, then it is treated as a comment, and
      -will not match anything.  Use `\#` to match a literal `#` at the
      -start of a line, or set the `nocomment` flag to suppress this behavior.
      -
      -The double-star character `**` is supported by default, unless the
      -`noglobstar` flag is set.  This is supported in the manner of bsdglob
      -and bash 4.1, where `**` only has special significance if it is the only
      -thing in a path part.  That is, `a/**/b` will match `a/x/y/b`, but
      -`a/**b` will not.
      -
      -If an escaped pattern has no matches, and the `nonull` flag is set,
      -then minimatch.match returns the pattern as-provided, rather than
      -interpreting the character escapes.  For example,
      -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
      -`"*a?"`.  This is akin to setting the `nullglob` option in bash, except
      -that it does not resolve escaped pattern characters.
      -
      -If brace expansion is not disabled, then it is performed before any
      -other interpretation of the glob pattern.  Thus, a pattern like
      -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
      -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
      -checked for validity.  Since those two are valid, matching proceeds.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/minimatch.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/minimatch.js
      deleted file mode 100644
      index c633f89f..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/minimatch.js
      +++ /dev/null
      @@ -1,1055 +0,0 @@
      -;(function (require, exports, module, platform) {
      -
      -if (module) module.exports = minimatch
      -else exports.minimatch = minimatch
      -
      -if (!require) {
      -  require = function (id) {
      -    switch (id) {
      -      case "sigmund": return function sigmund (obj) {
      -        return JSON.stringify(obj)
      -      }
      -      case "path": return { basename: function (f) {
      -        f = f.split(/[\/\\]/)
      -        var e = f.pop()
      -        if (!e) e = f.pop()
      -        return e
      -      }}
      -      case "lru-cache": return function LRUCache () {
      -        // not quite an LRU, but still space-limited.
      -        var cache = {}
      -        var cnt = 0
      -        this.set = function (k, v) {
      -          cnt ++
      -          if (cnt >= 100) cache = {}
      -          cache[k] = v
      -        }
      -        this.get = function (k) { return cache[k] }
      -      }
      -    }
      -  }
      -}
      -
      -minimatch.Minimatch = Minimatch
      -
      -var LRU = require("lru-cache")
      -  , cache = minimatch.cache = new LRU({max: 100})
      -  , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
      -  , sigmund = require("sigmund")
      -
      -var path = require("path")
      -  // any single thing other than /
      -  // don't need to escape / when using new RegExp()
      -  , qmark = "[^/]"
      -
      -  // * => any number of characters
      -  , star = qmark + "*?"
      -
      -  // ** when dots are allowed.  Anything goes, except .. and .
      -  // not (^ or / followed by one or two dots followed by $ or /),
      -  // followed by anything, any number of times.
      -  , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?"
      -
      -  // not a ^ or / followed by a dot,
      -  // followed by anything, any number of times.
      -  , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?"
      -
      -  // characters that need to be escaped in RegExp.
      -  , reSpecials = charSet("().*{}+?[]^$\\!")
      -
      -// "abc" -> { a:true, b:true, c:true }
      -function charSet (s) {
      -  return s.split("").reduce(function (set, c) {
      -    set[c] = true
      -    return set
      -  }, {})
      -}
      -
      -// normalizes slashes.
      -var slashSplit = /\/+/
      -
      -minimatch.filter = filter
      -function filter (pattern, options) {
      -  options = options || {}
      -  return function (p, i, list) {
      -    return minimatch(p, pattern, options)
      -  }
      -}
      -
      -function ext (a, b) {
      -  a = a || {}
      -  b = b || {}
      -  var t = {}
      -  Object.keys(b).forEach(function (k) {
      -    t[k] = b[k]
      -  })
      -  Object.keys(a).forEach(function (k) {
      -    t[k] = a[k]
      -  })
      -  return t
      -}
      -
      -minimatch.defaults = function (def) {
      -  if (!def || !Object.keys(def).length) return minimatch
      -
      -  var orig = minimatch
      -
      -  var m = function minimatch (p, pattern, options) {
      -    return orig.minimatch(p, pattern, ext(def, options))
      -  }
      -
      -  m.Minimatch = function Minimatch (pattern, options) {
      -    return new orig.Minimatch(pattern, ext(def, options))
      -  }
      -
      -  return m
      -}
      -
      -Minimatch.defaults = function (def) {
      -  if (!def || !Object.keys(def).length) return Minimatch
      -  return minimatch.defaults(def).Minimatch
      -}
      -
      -
      -function minimatch (p, pattern, options) {
      -  if (typeof pattern !== "string") {
      -    throw new TypeError("glob pattern string required")
      -  }
      -
      -  if (!options) options = {}
      -
      -  // shortcut: comments match nothing.
      -  if (!options.nocomment && pattern.charAt(0) === "#") {
      -    return false
      -  }
      -
      -  // "" only matches ""
      -  if (pattern.trim() === "") return p === ""
      -
      -  return new Minimatch(pattern, options).match(p)
      -}
      -
      -function Minimatch (pattern, options) {
      -  if (!(this instanceof Minimatch)) {
      -    return new Minimatch(pattern, options, cache)
      -  }
      -
      -  if (typeof pattern !== "string") {
      -    throw new TypeError("glob pattern string required")
      -  }
      -
      -  if (!options) options = {}
      -  pattern = pattern.trim()
      -
      -  // windows: need to use /, not \
      -  // On other platforms, \ is a valid (albeit bad) filename char.
      -  if (platform === "win32") {
      -    pattern = pattern.split("\\").join("/")
      -  }
      -
      -  // lru storage.
      -  // these things aren't particularly big, but walking down the string
      -  // and turning it into a regexp can get pretty costly.
      -  var cacheKey = pattern + "\n" + sigmund(options)
      -  var cached = minimatch.cache.get(cacheKey)
      -  if (cached) return cached
      -  minimatch.cache.set(cacheKey, this)
      -
      -  this.options = options
      -  this.set = []
      -  this.pattern = pattern
      -  this.regexp = null
      -  this.negate = false
      -  this.comment = false
      -  this.empty = false
      -
      -  // make the set of regexps etc.
      -  this.make()
      -}
      -
      -Minimatch.prototype.debug = function() {}
      -
      -Minimatch.prototype.make = make
      -function make () {
      -  // don't do it more than once.
      -  if (this._made) return
      -
      -  var pattern = this.pattern
      -  var options = this.options
      -
      -  // empty patterns and comments match nothing.
      -  if (!options.nocomment && pattern.charAt(0) === "#") {
      -    this.comment = true
      -    return
      -  }
      -  if (!pattern) {
      -    this.empty = true
      -    return
      -  }
      -
      -  // step 1: figure out negation, etc.
      -  this.parseNegate()
      -
      -  // step 2: expand braces
      -  var set = this.globSet = this.braceExpand()
      -
      -  if (options.debug) this.debug = console.error
      -
      -  this.debug(this.pattern, set)
      -
      -  // step 3: now we have a set, so turn each one into a series of path-portion
      -  // matching patterns.
      -  // These will be regexps, except in the case of "**", which is
      -  // set to the GLOBSTAR object for globstar behavior,
      -  // and will not contain any / characters
      -  set = this.globParts = set.map(function (s) {
      -    return s.split(slashSplit)
      -  })
      -
      -  this.debug(this.pattern, set)
      -
      -  // glob --> regexps
      -  set = set.map(function (s, si, set) {
      -    return s.map(this.parse, this)
      -  }, this)
      -
      -  this.debug(this.pattern, set)
      -
      -  // filter out everything that didn't compile properly.
      -  set = set.filter(function (s) {
      -    return -1 === s.indexOf(false)
      -  })
      -
      -  this.debug(this.pattern, set)
      -
      -  this.set = set
      -}
      -
      -Minimatch.prototype.parseNegate = parseNegate
      -function parseNegate () {
      -  var pattern = this.pattern
      -    , negate = false
      -    , options = this.options
      -    , negateOffset = 0
      -
      -  if (options.nonegate) return
      -
      -  for ( var i = 0, l = pattern.length
      -      ; i < l && pattern.charAt(i) === "!"
      -      ; i ++) {
      -    negate = !negate
      -    negateOffset ++
      -  }
      -
      -  if (negateOffset) this.pattern = pattern.substr(negateOffset)
      -  this.negate = negate
      -}
      -
      -// Brace expansion:
      -// a{b,c}d -> abd acd
      -// a{b,}c -> abc ac
      -// a{0..3}d -> a0d a1d a2d a3d
      -// a{b,c{d,e}f}g -> abg acdfg acefg
      -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
      -//
      -// Invalid sets are not expanded.
      -// a{2..}b -> a{2..}b
      -// a{b}c -> a{b}c
      -minimatch.braceExpand = function (pattern, options) {
      -  return new Minimatch(pattern, options).braceExpand()
      -}
      -
      -Minimatch.prototype.braceExpand = braceExpand
      -function braceExpand (pattern, options) {
      -  options = options || this.options
      -  pattern = typeof pattern === "undefined"
      -    ? this.pattern : pattern
      -
      -  if (typeof pattern === "undefined") {
      -    throw new Error("undefined pattern")
      -  }
      -
      -  if (options.nobrace ||
      -      !pattern.match(/\{.*\}/)) {
      -    // shortcut. no need to expand.
      -    return [pattern]
      -  }
      -
      -  var escaping = false
      -
      -  // examples and comments refer to this crazy pattern:
      -  // a{b,c{d,e},{f,g}h}x{y,z}
      -  // expected:
      -  // abxy
      -  // abxz
      -  // acdxy
      -  // acdxz
      -  // acexy
      -  // acexz
      -  // afhxy
      -  // afhxz
      -  // aghxy
      -  // aghxz
      -
      -  // everything before the first \{ is just a prefix.
      -  // So, we pluck that off, and work with the rest,
      -  // and then prepend it to everything we find.
      -  if (pattern.charAt(0) !== "{") {
      -    this.debug(pattern)
      -    var prefix = null
      -    for (var i = 0, l = pattern.length; i < l; i ++) {
      -      var c = pattern.charAt(i)
      -      this.debug(i, c)
      -      if (c === "\\") {
      -        escaping = !escaping
      -      } else if (c === "{" && !escaping) {
      -        prefix = pattern.substr(0, i)
      -        break
      -      }
      -    }
      -
      -    // actually no sets, all { were escaped.
      -    if (prefix === null) {
      -      this.debug("no sets")
      -      return [pattern]
      -    }
      -
      -   var tail = braceExpand.call(this, pattern.substr(i), options)
      -    return tail.map(function (t) {
      -      return prefix + t
      -    })
      -  }
      -
      -  // now we have something like:
      -  // {b,c{d,e},{f,g}h}x{y,z}
      -  // walk through the set, expanding each part, until
      -  // the set ends.  then, we'll expand the suffix.
      -  // If the set only has a single member, then'll put the {} back
      -
      -  // first, handle numeric sets, since they're easier
      -  var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/)
      -  if (numset) {
      -    this.debug("numset", numset[1], numset[2])
      -    var suf = braceExpand.call(this, pattern.substr(numset[0].length), options)
      -      , start = +numset[1]
      -      , end = +numset[2]
      -      , inc = start > end ? -1 : 1
      -      , set = []
      -    for (var i = start; i != (end + inc); i += inc) {
      -      // append all the suffixes
      -      for (var ii = 0, ll = suf.length; ii < ll; ii ++) {
      -        set.push(i + suf[ii])
      -      }
      -    }
      -    return set
      -  }
      -
      -  // ok, walk through the set
      -  // We hope, somewhat optimistically, that there
      -  // will be a } at the end.
      -  // If the closing brace isn't found, then the pattern is
      -  // interpreted as braceExpand("\\" + pattern) so that
      -  // the leading \{ will be interpreted literally.
      -  var i = 1 // skip the \{
      -    , depth = 1
      -    , set = []
      -    , member = ""
      -    , sawEnd = false
      -    , escaping = false
      -
      -  function addMember () {
      -    set.push(member)
      -    member = ""
      -  }
      -
      -  this.debug("Entering for")
      -  FOR: for (i = 1, l = pattern.length; i < l; i ++) {
      -    var c = pattern.charAt(i)
      -    this.debug("", i, c)
      -
      -    if (escaping) {
      -      escaping = false
      -      member += "\\" + c
      -    } else {
      -      switch (c) {
      -        case "\\":
      -          escaping = true
      -          continue
      -
      -        case "{":
      -          depth ++
      -          member += "{"
      -          continue
      -
      -        case "}":
      -          depth --
      -          // if this closes the actual set, then we're done
      -          if (depth === 0) {
      -            addMember()
      -            // pluck off the close-brace
      -            i ++
      -            break FOR
      -          } else {
      -            member += c
      -            continue
      -          }
      -
      -        case ",":
      -          if (depth === 1) {
      -            addMember()
      -          } else {
      -            member += c
      -          }
      -          continue
      -
      -        default:
      -          member += c
      -          continue
      -      } // switch
      -    } // else
      -  } // for
      -
      -  // now we've either finished the set, and the suffix is
      -  // pattern.substr(i), or we have *not* closed the set,
      -  // and need to escape the leading brace
      -  if (depth !== 0) {
      -    this.debug("didn't close", pattern)
      -    return braceExpand.call(this, "\\" + pattern, options)
      -  }
      -
      -  // x{y,z} -> ["xy", "xz"]
      -  this.debug("set", set)
      -  this.debug("suffix", pattern.substr(i))
      -  var suf = braceExpand.call(this, pattern.substr(i), options)
      -  // ["b", "c{d,e}","{f,g}h"] ->
      -  //   [["b"], ["cd", "ce"], ["fh", "gh"]]
      -  var addBraces = set.length === 1
      -  this.debug("set pre-expanded", set)
      -  set = set.map(function (p) {
      -    return braceExpand.call(this, p, options)
      -  }, this)
      -  this.debug("set expanded", set)
      -
      -
      -  // [["b"], ["cd", "ce"], ["fh", "gh"]] ->
      -  //   ["b", "cd", "ce", "fh", "gh"]
      -  set = set.reduce(function (l, r) {
      -    return l.concat(r)
      -  })
      -
      -  if (addBraces) {
      -    set = set.map(function (s) {
      -      return "{" + s + "}"
      -    })
      -  }
      -
      -  // now attach the suffixes.
      -  var ret = []
      -  for (var i = 0, l = set.length; i < l; i ++) {
      -    for (var ii = 0, ll = suf.length; ii < ll; ii ++) {
      -      ret.push(set[i] + suf[ii])
      -    }
      -  }
      -  return ret
      -}
      -
      -// parse a component of the expanded set.
      -// At this point, no pattern may contain "/" in it
      -// so we're going to return a 2d array, where each entry is the full
      -// pattern, split on '/', and then turned into a regular expression.
      -// A regexp is made at the end which joins each array with an
      -// escaped /, and another full one which joins each regexp with |.
      -//
      -// Following the lead of Bash 4.1, note that "**" only has special meaning
      -// when it is the *only* thing in a path portion.  Otherwise, any series
      -// of * is equivalent to a single *.  Globstar behavior is enabled by
      -// default, and can be disabled by setting options.noglobstar.
      -Minimatch.prototype.parse = parse
      -var SUBPARSE = {}
      -function parse (pattern, isSub) {
      -  var options = this.options
      -
      -  // shortcuts
      -  if (!options.noglobstar && pattern === "**") return GLOBSTAR
      -  if (pattern === "") return ""
      -
      -  var re = ""
      -    , hasMagic = !!options.nocase
      -    , escaping = false
      -    // ? => one single character
      -    , patternListStack = []
      -    , plType
      -    , stateChar
      -    , inClass = false
      -    , reClassStart = -1
      -    , classStart = -1
      -    // . and .. never match anything that doesn't start with .,
      -    // even when options.dot is set.
      -    , patternStart = pattern.charAt(0) === "." ? "" // anything
      -      // not (start or / followed by . or .. followed by / or end)
      -      : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))"
      -      : "(?!\\.)"
      -    , self = this
      -
      -  function clearStateChar () {
      -    if (stateChar) {
      -      // we had some state-tracking character
      -      // that wasn't consumed by this pass.
      -      switch (stateChar) {
      -        case "*":
      -          re += star
      -          hasMagic = true
      -          break
      -        case "?":
      -          re += qmark
      -          hasMagic = true
      -          break
      -        default:
      -          re += "\\"+stateChar
      -          break
      -      }
      -      self.debug('clearStateChar %j %j', stateChar, re)
      -      stateChar = false
      -    }
      -  }
      -
      -  for ( var i = 0, len = pattern.length, c
      -      ; (i < len) && (c = pattern.charAt(i))
      -      ; i ++ ) {
      -
      -    this.debug("%s\t%s %s %j", pattern, i, re, c)
      -
      -    // skip over any that are escaped.
      -    if (escaping && reSpecials[c]) {
      -      re += "\\" + c
      -      escaping = false
      -      continue
      -    }
      -
      -    SWITCH: switch (c) {
      -      case "/":
      -        // completely not allowed, even escaped.
      -        // Should already be path-split by now.
      -        return false
      -
      -      case "\\":
      -        clearStateChar()
      -        escaping = true
      -        continue
      -
      -      // the various stateChar values
      -      // for the "extglob" stuff.
      -      case "?":
      -      case "*":
      -      case "+":
      -      case "@":
      -      case "!":
      -        this.debug("%s\t%s %s %j <-- stateChar", pattern, i, re, c)
      -
      -        // all of those are literals inside a class, except that
      -        // the glob [!a] means [^a] in regexp
      -        if (inClass) {
      -          this.debug('  in class')
      -          if (c === "!" && i === classStart + 1) c = "^"
      -          re += c
      -          continue
      -        }
      -
      -        // if we already have a stateChar, then it means
      -        // that there was something like ** or +? in there.
      -        // Handle the stateChar, then proceed with this one.
      -        self.debug('call clearStateChar %j', stateChar)
      -        clearStateChar()
      -        stateChar = c
      -        // if extglob is disabled, then +(asdf|foo) isn't a thing.
      -        // just clear the statechar *now*, rather than even diving into
      -        // the patternList stuff.
      -        if (options.noext) clearStateChar()
      -        continue
      -
      -      case "(":
      -        if (inClass) {
      -          re += "("
      -          continue
      -        }
      -
      -        if (!stateChar) {
      -          re += "\\("
      -          continue
      -        }
      -
      -        plType = stateChar
      -        patternListStack.push({ type: plType
      -                              , start: i - 1
      -                              , reStart: re.length })
      -        // negation is (?:(?!js)[^/]*)
      -        re += stateChar === "!" ? "(?:(?!" : "(?:"
      -        this.debug('plType %j %j', stateChar, re)
      -        stateChar = false
      -        continue
      -
      -      case ")":
      -        if (inClass || !patternListStack.length) {
      -          re += "\\)"
      -          continue
      -        }
      -
      -        clearStateChar()
      -        hasMagic = true
      -        re += ")"
      -        plType = patternListStack.pop().type
      -        // negation is (?:(?!js)[^/]*)
      -        // The others are (?:)
      -        switch (plType) {
      -          case "!":
      -            re += "[^/]*?)"
      -            break
      -          case "?":
      -          case "+":
      -          case "*": re += plType
      -          case "@": break // the default anyway
      -        }
      -        continue
      -
      -      case "|":
      -        if (inClass || !patternListStack.length || escaping) {
      -          re += "\\|"
      -          escaping = false
      -          continue
      -        }
      -
      -        clearStateChar()
      -        re += "|"
      -        continue
      -
      -      // these are mostly the same in regexp and glob
      -      case "[":
      -        // swallow any state-tracking char before the [
      -        clearStateChar()
      -
      -        if (inClass) {
      -          re += "\\" + c
      -          continue
      -        }
      -
      -        inClass = true
      -        classStart = i
      -        reClassStart = re.length
      -        re += c
      -        continue
      -
      -      case "]":
      -        //  a right bracket shall lose its special
      -        //  meaning and represent itself in
      -        //  a bracket expression if it occurs
      -        //  first in the list.  -- POSIX.2 2.8.3.2
      -        if (i === classStart + 1 || !inClass) {
      -          re += "\\" + c
      -          escaping = false
      -          continue
      -        }
      -
      -        // finish up the class.
      -        hasMagic = true
      -        inClass = false
      -        re += c
      -        continue
      -
      -      default:
      -        // swallow any state char that wasn't consumed
      -        clearStateChar()
      -
      -        if (escaping) {
      -          // no need
      -          escaping = false
      -        } else if (reSpecials[c]
      -                   && !(c === "^" && inClass)) {
      -          re += "\\"
      -        }
      -
      -        re += c
      -
      -    } // switch
      -  } // for
      -
      -
      -  // handle the case where we left a class open.
      -  // "[abc" is valid, equivalent to "\[abc"
      -  if (inClass) {
      -    // split where the last [ was, and escape it
      -    // this is a huge pita.  We now have to re-walk
      -    // the contents of the would-be class to re-translate
      -    // any characters that were passed through as-is
      -    var cs = pattern.substr(classStart + 1)
      -      , sp = this.parse(cs, SUBPARSE)
      -    re = re.substr(0, reClassStart) + "\\[" + sp[0]
      -    hasMagic = hasMagic || sp[1]
      -  }
      -
      -  // handle the case where we had a +( thing at the *end*
      -  // of the pattern.
      -  // each pattern list stack adds 3 chars, and we need to go through
      -  // and escape any | chars that were passed through as-is for the regexp.
      -  // Go through and escape them, taking care not to double-escape any
      -  // | chars that were already escaped.
      -  var pl
      -  while (pl = patternListStack.pop()) {
      -    var tail = re.slice(pl.reStart + 3)
      -    // maybe some even number of \, then maybe 1 \, followed by a |
      -    tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
      -      if (!$2) {
      -        // the | isn't already escaped, so escape it.
      -        $2 = "\\"
      -      }
      -
      -      // need to escape all those slashes *again*, without escaping the
      -      // one that we need for escaping the | character.  As it works out,
      -      // escaping an even number of slashes can be done by simply repeating
      -      // it exactly after itself.  That's why this trick works.
      -      //
      -      // I am sorry that you have to see this.
      -      return $1 + $1 + $2 + "|"
      -    })
      -
      -    this.debug("tail=%j\n   %s", tail, tail)
      -    var t = pl.type === "*" ? star
      -          : pl.type === "?" ? qmark
      -          : "\\" + pl.type
      -
      -    hasMagic = true
      -    re = re.slice(0, pl.reStart)
      -       + t + "\\("
      -       + tail
      -  }
      -
      -  // handle trailing things that only matter at the very end.
      -  clearStateChar()
      -  if (escaping) {
      -    // trailing \\
      -    re += "\\\\"
      -  }
      -
      -  // only need to apply the nodot start if the re starts with
      -  // something that could conceivably capture a dot
      -  var addPatternStart = false
      -  switch (re.charAt(0)) {
      -    case ".":
      -    case "[":
      -    case "(": addPatternStart = true
      -  }
      -
      -  // if the re is not "" at this point, then we need to make sure
      -  // it doesn't match against an empty path part.
      -  // Otherwise a/* will match a/, which it should not.
      -  if (re !== "" && hasMagic) re = "(?=.)" + re
      -
      -  if (addPatternStart) re = patternStart + re
      -
      -  // parsing just a piece of a larger pattern.
      -  if (isSub === SUBPARSE) {
      -    return [ re, hasMagic ]
      -  }
      -
      -  // skip the regexp for non-magical patterns
      -  // unescape anything in it, though, so that it'll be
      -  // an exact match against a file etc.
      -  if (!hasMagic) {
      -    return globUnescape(pattern)
      -  }
      -
      -  var flags = options.nocase ? "i" : ""
      -    , regExp = new RegExp("^" + re + "$", flags)
      -
      -  regExp._glob = pattern
      -  regExp._src = re
      -
      -  return regExp
      -}
      -
      -minimatch.makeRe = function (pattern, options) {
      -  return new Minimatch(pattern, options || {}).makeRe()
      -}
      -
      -Minimatch.prototype.makeRe = makeRe
      -function makeRe () {
      -  if (this.regexp || this.regexp === false) return this.regexp
      -
      -  // at this point, this.set is a 2d array of partial
      -  // pattern strings, or "**".
      -  //
      -  // It's better to use .match().  This function shouldn't
      -  // be used, really, but it's pretty convenient sometimes,
      -  // when you just want to work with a regex.
      -  var set = this.set
      -
      -  if (!set.length) return this.regexp = false
      -  var options = this.options
      -
      -  var twoStar = options.noglobstar ? star
      -      : options.dot ? twoStarDot
      -      : twoStarNoDot
      -    , flags = options.nocase ? "i" : ""
      -
      -  var re = set.map(function (pattern) {
      -    return pattern.map(function (p) {
      -      return (p === GLOBSTAR) ? twoStar
      -           : (typeof p === "string") ? regExpEscape(p)
      -           : p._src
      -    }).join("\\\/")
      -  }).join("|")
      -
      -  // must match entire pattern
      -  // ending in a * or ** will make it less strict.
      -  re = "^(?:" + re + ")$"
      -
      -  // can match anything, as long as it's not this.
      -  if (this.negate) re = "^(?!" + re + ").*$"
      -
      -  try {
      -    return this.regexp = new RegExp(re, flags)
      -  } catch (ex) {
      -    return this.regexp = false
      -  }
      -}
      -
      -minimatch.match = function (list, pattern, options) {
      -  var mm = new Minimatch(pattern, options)
      -  list = list.filter(function (f) {
      -    return mm.match(f)
      -  })
      -  if (options.nonull && !list.length) {
      -    list.push(pattern)
      -  }
      -  return list
      -}
      -
      -Minimatch.prototype.match = match
      -function match (f, partial) {
      -  this.debug("match", f, this.pattern)
      -  // short-circuit in the case of busted things.
      -  // comments, etc.
      -  if (this.comment) return false
      -  if (this.empty) return f === ""
      -
      -  if (f === "/" && partial) return true
      -
      -  var options = this.options
      -
      -  // windows: need to use /, not \
      -  // On other platforms, \ is a valid (albeit bad) filename char.
      -  if (platform === "win32") {
      -    f = f.split("\\").join("/")
      -  }
      -
      -  // treat the test path as a set of pathparts.
      -  f = f.split(slashSplit)
      -  this.debug(this.pattern, "split", f)
      -
      -  // just ONE of the pattern sets in this.set needs to match
      -  // in order for it to be valid.  If negating, then just one
      -  // match means that we have failed.
      -  // Either way, return on the first hit.
      -
      -  var set = this.set
      -  this.debug(this.pattern, "set", set)
      -
      -  var splitFile = path.basename(f.join("/")).split("/")
      -
      -  for (var i = 0, l = set.length; i < l; i ++) {
      -    var pattern = set[i], file = f
      -    if (options.matchBase && pattern.length === 1) {
      -      file = splitFile
      -    }
      -    var hit = this.matchOne(file, pattern, partial)
      -    if (hit) {
      -      if (options.flipNegate) return true
      -      return !this.negate
      -    }
      -  }
      -
      -  // didn't get any hits.  this is success if it's a negative
      -  // pattern, failure otherwise.
      -  if (options.flipNegate) return false
      -  return this.negate
      -}
      -
      -// set partial to true to test if, for example,
      -// "/a/b" matches the start of "/*/b/*/d"
      -// Partial means, if you run out of file before you run
      -// out of pattern, then that's fine, as long as all
      -// the parts match.
      -Minimatch.prototype.matchOne = function (file, pattern, partial) {
      -  var options = this.options
      -
      -  this.debug("matchOne",
      -              { "this": this
      -              , file: file
      -              , pattern: pattern })
      -
      -  this.debug("matchOne", file.length, pattern.length)
      -
      -  for ( var fi = 0
      -          , pi = 0
      -          , fl = file.length
      -          , pl = pattern.length
      -      ; (fi < fl) && (pi < pl)
      -      ; fi ++, pi ++ ) {
      -
      -    this.debug("matchOne loop")
      -    var p = pattern[pi]
      -      , f = file[fi]
      -
      -    this.debug(pattern, p, f)
      -
      -    // should be impossible.
      -    // some invalid regexp stuff in the set.
      -    if (p === false) return false
      -
      -    if (p === GLOBSTAR) {
      -      this.debug('GLOBSTAR', [pattern, p, f])
      -
      -      // "**"
      -      // a/**/b/**/c would match the following:
      -      // a/b/x/y/z/c
      -      // a/x/y/z/b/c
      -      // a/b/x/b/x/c
      -      // a/b/c
      -      // To do this, take the rest of the pattern after
      -      // the **, and see if it would match the file remainder.
      -      // If so, return success.
      -      // If not, the ** "swallows" a segment, and try again.
      -      // This is recursively awful.
      -      //
      -      // a/**/b/**/c matching a/b/x/y/z/c
      -      // - a matches a
      -      // - doublestar
      -      //   - matchOne(b/x/y/z/c, b/**/c)
      -      //     - b matches b
      -      //     - doublestar
      -      //       - matchOne(x/y/z/c, c) -> no
      -      //       - matchOne(y/z/c, c) -> no
      -      //       - matchOne(z/c, c) -> no
      -      //       - matchOne(c, c) yes, hit
      -      var fr = fi
      -        , pr = pi + 1
      -      if (pr === pl) {
      -        this.debug('** at the end')
      -        // a ** at the end will just swallow the rest.
      -        // We have found a match.
      -        // however, it will not swallow /.x, unless
      -        // options.dot is set.
      -        // . and .. are *never* matched by **, for explosively
      -        // exponential reasons.
      -        for ( ; fi < fl; fi ++) {
      -          if (file[fi] === "." || file[fi] === ".." ||
      -              (!options.dot && file[fi].charAt(0) === ".")) return false
      -        }
      -        return true
      -      }
      -
      -      // ok, let's see if we can swallow whatever we can.
      -      WHILE: while (fr < fl) {
      -        var swallowee = file[fr]
      -
      -        this.debug('\nglobstar while',
      -                    file, fr, pattern, pr, swallowee)
      -
      -        // XXX remove this slice.  Just pass the start index.
      -        if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
      -          this.debug('globstar found match!', fr, fl, swallowee)
      -          // found a match.
      -          return true
      -        } else {
      -          // can't swallow "." or ".." ever.
      -          // can only swallow ".foo" when explicitly asked.
      -          if (swallowee === "." || swallowee === ".." ||
      -              (!options.dot && swallowee.charAt(0) === ".")) {
      -            this.debug("dot detected!", file, fr, pattern, pr)
      -            break WHILE
      -          }
      -
      -          // ** swallows a segment, and continue.
      -          this.debug('globstar swallow a segment, and continue')
      -          fr ++
      -        }
      -      }
      -      // no match was found.
      -      // However, in partial mode, we can't say this is necessarily over.
      -      // If there's more *pattern* left, then 
      -      if (partial) {
      -        // ran out of file
      -        this.debug("\n>>> no match, partial?", file, fr, pattern, pr)
      -        if (fr === fl) return true
      -      }
      -      return false
      -    }
      -
      -    // something other than **
      -    // non-magic patterns just have to match exactly
      -    // patterns with magic have been turned into regexps.
      -    var hit
      -    if (typeof p === "string") {
      -      if (options.nocase) {
      -        hit = f.toLowerCase() === p.toLowerCase()
      -      } else {
      -        hit = f === p
      -      }
      -      this.debug("string match", p, f, hit)
      -    } else {
      -      hit = f.match(p)
      -      this.debug("pattern match", p, f, hit)
      -    }
      -
      -    if (!hit) return false
      -  }
      -
      -  // Note: ending in / means that we'll get a final ""
      -  // at the end of the pattern.  This can only match a
      -  // corresponding "" at the end of the file.
      -  // If the file ends in /, then it can only match a
      -  // a pattern that ends in /, unless the pattern just
      -  // doesn't have any more for it. But, a/b/ should *not*
      -  // match "a/b/*", even though "" matches against the
      -  // [^/]*? pattern, except in partial mode, where it might
      -  // simply not be reached yet.
      -  // However, a/b/ should still satisfy a/*
      -
      -  // now either we fell off the end of the pattern, or we're done.
      -  if (fi === fl && pi === pl) {
      -    // ran out of pattern and filename at the same time.
      -    // an exact hit!
      -    return true
      -  } else if (fi === fl) {
      -    // ran out of file, but still had pattern left.
      -    // this is ok if we're doing the match as part of
      -    // a glob fs traversal.
      -    return partial
      -  } else if (pi === pl) {
      -    // ran out of pattern, still have file left.
      -    // this is only acceptable if we're on the very last
      -    // empty segment of a file with a trailing slash.
      -    // a/* should match a/b/
      -    var emptyFileEnd = (fi === fl - 1) && (file[fi] === "")
      -    return emptyFileEnd
      -  }
      -
      -  // should be unreachable.
      -  throw new Error("wtf?")
      -}
      -
      -
      -// replace stuff like \* with *
      -function globUnescape (s) {
      -  return s.replace(/\\(.)/g, "$1")
      -}
      -
      -
      -function regExpEscape (s) {
      -  return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
      -}
      -
      -})( typeof require === "function" ? require : null,
      -    this,
      -    typeof module === "object" ? module : null,
      -    typeof process === "object" ? process.platform : "win32"
      -  )
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/package.json
      deleted file mode 100644
      index 4acd495a..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/package.json
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "minimatch@~0.2.11",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha/node_modules/glob"
      -    ]
      -  ],
      -  "_from": "minimatch@>=0.2.11 <0.3.0",
      -  "_id": "minimatch@0.2.14",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/minimatch",
      -  "_npmUser": {
      -    "email": "i@izs.me",
      -    "name": "isaacs"
      -  },
      -  "_npmVersion": "1.3.17",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "minimatch",
      -    "raw": "minimatch@~0.2.11",
      -    "rawSpec": "~0.2.11",
      -    "scope": null,
      -    "spec": ">=0.2.11 <0.3.0",
      -    "type": "range"
      -  },
      -  "_requiredBy": [
      -    "/mocha/glob"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
      -  "_shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a",
      -  "_shrinkwrap": null,
      -  "_spec": "minimatch@~0.2.11",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha/node_modules/glob",
      -  "author": {
      -    "email": "i@izs.me",
      -    "name": "Isaac Z. Schlueter",
      -    "url": "http://blog.izs.me"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/isaacs/minimatch/issues"
      -  },
      -  "dependencies": {
      -    "lru-cache": "2",
      -    "sigmund": "~1.0.0"
      -  },
      -  "description": "a glob matcher in javascript",
      -  "devDependencies": {
      -    "tap": ""
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "c74e780574f63c6f9a090e90efbe6ef53a6a756a",
      -    "tarball": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz"
      -  },
      -  "engines": {
      -    "node": "*"
      -  },
      -  "homepage": "https://github.com/isaacs/minimatch",
      -  "license": {
      -    "type": "MIT",
      -    "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE"
      -  },
      -  "main": "minimatch.js",
      -  "maintainers": [
      -    {
      -      "email": "i@izs.me",
      -      "name": "isaacs"
      -    }
      -  ],
      -  "name": "minimatch",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/isaacs/minimatch.git"
      -  },
      -  "scripts": {
      -    "test": "tap test/*.js"
      -  },
      -  "version": "0.2.14"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/basic.js
      deleted file mode 100644
      index ae7ac73c..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/basic.js
      +++ /dev/null
      @@ -1,399 +0,0 @@
      -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test
      -//
      -// TODO: Some of these tests do very bad things with backslashes, and will
      -// most likely fail badly on windows.  They should probably be skipped.
      -
      -var tap = require("tap")
      -  , globalBefore = Object.keys(global)
      -  , mm = require("../")
      -  , files = [ "a", "b", "c", "d", "abc"
      -            , "abd", "abe", "bb", "bcd"
      -            , "ca", "cb", "dd", "de"
      -            , "bdir/", "bdir/cfile"]
      -  , next = files.concat([ "a-b", "aXb"
      -                        , ".x", ".y" ])
      -
      -
      -var patterns =
      -  [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test"
      -  , ["a*", ["a", "abc", "abd", "abe"]]
      -  , ["X*", ["X*"], {nonull: true}]
      -
      -  // allow null glob expansion
      -  , ["X*", []]
      -
      -  // isaacs: Slightly different than bash/sh/ksh
      -  // \\* is not un-escaped to literal "*" in a failed match,
      -  // but it does make it get treated as a literal star
      -  , ["\\*", ["\\*"], {nonull: true}]
      -  , ["\\**", ["\\**"], {nonull: true}]
      -  , ["\\*\\*", ["\\*\\*"], {nonull: true}]
      -
      -  , ["b*/", ["bdir/"]]
      -  , ["c*", ["c", "ca", "cb"]]
      -  , ["**", files]
      -
      -  , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}]
      -  , ["s/\\..*//", ["s/\\..*//"], {nonull: true}]
      -
      -  , "legendary larry crashes bashes"
      -  , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"
      -    , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}]
      -  , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"
      -    , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}]
      -
      -  , "character classes"
      -  , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]]
      -  , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd",
      -     "bdir/", "ca", "cb", "dd", "de"]]
      -  , ["a*[^c]", ["abd", "abe"]]
      -  , function () { files.push("a-b", "aXb") }
      -  , ["a[X-]b", ["a-b", "aXb"]]
      -  , function () { files.push(".x", ".y") }
      -  , ["[^a-c]*", ["d", "dd", "de"]]
      -  , function () { files.push("a*b/", "a*b/ooo") }
      -  , ["a\\*b/*", ["a*b/ooo"]]
      -  , ["a\\*?/*", ["a*b/ooo"]]
      -  , ["*\\\\!*", [], {null: true}, ["echo !7"]]
      -  , ["*\\!*", ["echo !7"], null, ["echo !7"]]
      -  , ["*.\\*", ["r.*"], null, ["r.*"]]
      -  , ["a[b]c", ["abc"]]
      -  , ["a[\\b]c", ["abc"]]
      -  , ["a?c", ["abc"]]
      -  , ["a\\*c", [], {null: true}, ["abc"]]
      -  , ["", [""], { null: true }, [""]]
      -
      -  , "http://www.opensource.apple.com/source/bash/bash-23/" +
      -    "bash/tests/glob-test"
      -  , function () { files.push("man/", "man/man1/", "man/man1/bash.1") }
      -  , ["*/man*/bash.*", ["man/man1/bash.1"]]
      -  , ["man/man1/bash.1", ["man/man1/bash.1"]]
      -  , ["a***c", ["abc"], null, ["abc"]]
      -  , ["a*****?c", ["abc"], null, ["abc"]]
      -  , ["?*****??", ["abc"], null, ["abc"]]
      -  , ["*****??", ["abc"], null, ["abc"]]
      -  , ["?*****?c", ["abc"], null, ["abc"]]
      -  , ["?***?****c", ["abc"], null, ["abc"]]
      -  , ["?***?****?", ["abc"], null, ["abc"]]
      -  , ["?***?****", ["abc"], null, ["abc"]]
      -  , ["*******c", ["abc"], null, ["abc"]]
      -  , ["*******?", ["abc"], null, ["abc"]]
      -  , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -  , ["[-abc]", ["-"], null, ["-"]]
      -  , ["[abc-]", ["-"], null, ["-"]]
      -  , ["\\", ["\\"], null, ["\\"]]
      -  , ["[\\\\]", ["\\"], null, ["\\"]]
      -  , ["[[]", ["["], null, ["["]]
      -  , ["[", ["["], null, ["["]]
      -  , ["[*", ["[abc"], null, ["[abc"]]
      -  , "a right bracket shall lose its special meaning and\n" +
      -    "represent itself in a bracket expression if it occurs\n" +
      -    "first in the list.  -- POSIX.2 2.8.3.2"
      -  , ["[]]", ["]"], null, ["]"]]
      -  , ["[]-]", ["]"], null, ["]"]]
      -  , ["[a-\z]", ["p"], null, ["p"]]
      -  , ["??**********?****?", [], { null: true }, ["abc"]]
      -  , ["??**********?****c", [], { null: true }, ["abc"]]
      -  , ["?************c****?****", [], { null: true }, ["abc"]]
      -  , ["*c*?**", [], { null: true }, ["abc"]]
      -  , ["a*****c*?**", [], { null: true }, ["abc"]]
      -  , ["a********???*******", [], { null: true }, ["abc"]]
      -  , ["[]", [], { null: true }, ["a"]]
      -  , ["[abc", [], { null: true }, ["["]]
      -
      -  , "nocase tests"
      -  , ["XYZ", ["xYz"], { nocase: true, null: true }
      -    , ["xYz", "ABC", "IjK"]]
      -  , ["ab*", ["ABC"], { nocase: true, null: true }
      -    , ["xYz", "ABC", "IjK"]]
      -  , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true }
      -    , ["xYz", "ABC", "IjK"]]
      -
      -  // [ pattern, [matches], MM opts, files, TAP opts]
      -  , "onestar/twostar"
      -  , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]]
      -  , ["{/?,*}", ["/a", "bb"], {null: true}
      -    , ["/a", "/b/b", "/a/b/c", "bb"]]
      -
      -  , "dots should not match unless requested"
      -  , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]]
      -
      -  // .. and . can only match patterns starting with .,
      -  // even when options.dot is set.
      -  , function () {
      -      files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"]
      -    }
      -  , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}]
      -  , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}]
      -  , ["a/*/b", ["a/c/b"], {dot:false}]
      -  , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}]
      -
      -
      -  // this also tests that changing the options needs
      -  // to change the cache key, even if the pattern is
      -  // the same!
      -  , ["**", ["a/b","a/.d",".a/.d"], { dot: true }
      -    , [ ".a/.d", "a/.d", "a/b"]]
      -
      -  , "paren sets cannot contain slashes"
      -  , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]]
      -
      -  // brace sets trump all else.
      -  //
      -  // invalid glob pattern.  fails on bash4 and bsdglob.
      -  // however, in this implementation, it's easier just
      -  // to do the intuitive thing, and let brace-expansion
      -  // actually come before parsing any extglob patterns,
      -  // like the documentation seems to say.
      -  //
      -  // XXX: if anyone complains about this, either fix it
      -  // or tell them to grow up and stop complaining.
      -  //
      -  // bash/bsdglob says this:
      -  // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]]
      -  // but we do this instead:
      -  , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]]
      -
      -  // test partial parsing in the presence of comment/negation chars
      -  , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]]
      -  , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]]
      -
      -  // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped.
      -  , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g"
      -    , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"]
      -    , {}
      -    , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]]
      -
      -
      -  // crazy nested {,,} and *(||) tests.
      -  , function () {
      -      files = [ "a", "b", "c", "d"
      -              , "ab", "ac", "ad"
      -              , "bc", "cb"
      -              , "bc,d", "c,db", "c,d"
      -              , "d)", "(b|c", "*(b|c"
      -              , "b|c", "b|cc", "cb|c"
      -              , "x(a|b|c)", "x(a|c)"
      -              , "(a|b|c)", "(a|c)"]
      -    }
      -  , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]]
      -  , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]]
      -  // a
      -  // *(b|c)
      -  // *(b|d)
      -  , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]]
      -  , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]]
      -
      -
      -  // test various flag settings.
      -  , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"]
      -    , { noext: true } ]
      -  , ["a?b", ["x/y/acb", "acb/"], {matchBase: true}
      -    , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ]
      -  , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]]
      -
      -
      -  // begin channelling Boole and deMorgan...
      -  , "negation tests"
      -  , function () {
      -      files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"]
      -    }
      -
      -  // anything that is NOT a* matches.
      -  , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]]
      -
      -  // anything that IS !a* matches.
      -  , ["!a*", ["!ab", "!abc"], {nonegate: true}]
      -
      -  // anything that IS a* matches
      -  , ["!!a*", ["a!b"]]
      -
      -  // anything that is NOT !a* matches
      -  , ["!\\!a*", ["a!b", "d", "e", "\\!a"]]
      -
      -  // negation nestled within a pattern
      -  , function () {
      -      files = [ "foo.js"
      -              , "foo.bar"
      -              // can't match this one without negative lookbehind.
      -              , "foo.js.js"
      -              , "blar.js"
      -              , "foo."
      -              , "boo.js.boo" ]
      -    }
      -  , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ]
      -
      -  // https://github.com/isaacs/minimatch/issues/5
      -  , function () {
      -      files = [ 'a/b/.x/c'
      -              , 'a/b/.x/c/d'
      -              , 'a/b/.x/c/d/e'
      -              , 'a/b/.x'
      -              , 'a/b/.x/'
      -              , 'a/.x/b'
      -              , '.x'
      -              , '.x/'
      -              , '.x/a'
      -              , '.x/a/b'
      -              , 'a/.x/b/.x/c'
      -              , '.x/.x' ]
      -  }
      -  , ["**/.x/**", [ '.x/'
      -                 , '.x/a'
      -                 , '.x/a/b'
      -                 , 'a/.x/b'
      -                 , 'a/b/.x/'
      -                 , 'a/b/.x/c'
      -                 , 'a/b/.x/c/d'
      -                 , 'a/b/.x/c/d/e' ] ]
      -
      -  ]
      -
      -var regexps =
      -  [ '/^(?:(?=.)a[^/]*?)$/',
      -    '/^(?:(?=.)X[^/]*?)$/',
      -    '/^(?:(?=.)X[^/]*?)$/',
      -    '/^(?:\\*)$/',
      -    '/^(?:(?=.)\\*[^/]*?)$/',
      -    '/^(?:\\*\\*)$/',
      -    '/^(?:(?=.)b[^/]*?\\/)$/',
      -    '/^(?:(?=.)c[^/]*?)$/',
      -    '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/',
      -    '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/',
      -    '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/',
      -    '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/',
      -    '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/',
      -    '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/',
      -    '/^(?:(?=.)a[^/]*?[^c])$/',
      -    '/^(?:(?=.)a[X-]b)$/',
      -    '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/',
      -    '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/',
      -    '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/',
      -    '/^(?:(?=.)a[b]c)$/',
      -    '/^(?:(?=.)a[b]c)$/',
      -    '/^(?:(?=.)a[^/]c)$/',
      -    '/^(?:a\\*c)$/',
      -    'false',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/',
      -    '/^(?:man\\/man1\\/bash\\.1)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/',
      -    '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[-abc])$/',
      -    '/^(?:(?!\\.)(?=.)[abc-])$/',
      -    '/^(?:\\\\)$/',
      -    '/^(?:(?!\\.)(?=.)[\\\\])$/',
      -    '/^(?:(?!\\.)(?=.)[\\[])$/',
      -    '/^(?:\\[)$/',
      -    '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[\\]])$/',
      -    '/^(?:(?!\\.)(?=.)[\\]-])$/',
      -    '/^(?:(?!\\.)(?=.)[a-z])$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/',
      -    '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/',
      -    '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/',
      -    '/^(?:\\[\\])$/',
      -    '/^(?:\\[abc)$/',
      -    '/^(?:(?=.)XYZ)$/i',
      -    '/^(?:(?=.)ab[^/]*?)$/i',
      -    '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i',
      -    '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/',
      -    '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/',
      -    '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/',
      -    '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/',
      -    '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/',
      -    '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/',
      -    '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/',
      -    '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/',
      -    '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/',
      -    '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/',
      -    '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/',
      -    '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/',
      -    '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/',
      -    '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/',
      -    '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/',
      -    '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/',
      -    '/^(?:(?=.)a[^/]b)$/',
      -    '/^(?:(?=.)#[^/]*?)$/',
      -    '/^(?!^(?:(?=.)a[^/]*?)$).*$/',
      -    '/^(?:(?=.)\\!a[^/]*?)$/',
      -    '/^(?:(?=.)a[^/]*?)$/',
      -    '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/',
      -    '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/',
      -    '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ]
      -var re = 0;
      -
      -tap.test("basic tests", function (t) {
      -  var start = Date.now()
      -
      -  // [ pattern, [matches], MM opts, files, TAP opts]
      -  patterns.forEach(function (c) {
      -    if (typeof c === "function") return c()
      -    if (typeof c === "string") return t.comment(c)
      -
      -    var pattern = c[0]
      -      , expect = c[1].sort(alpha)
      -      , options = c[2] || {}
      -      , f = c[3] || files
      -      , tapOpts = c[4] || {}
      -
      -    // options.debug = true
      -    var m = new mm.Minimatch(pattern, options)
      -    var r = m.makeRe()
      -    var expectRe = regexps[re++]
      -    tapOpts.re = String(r) || JSON.stringify(r)
      -    tapOpts.files = JSON.stringify(f)
      -    tapOpts.pattern = pattern
      -    tapOpts.set = m.set
      -    tapOpts.negated = m.negate
      -
      -    var actual = mm.match(f, pattern, options)
      -    actual.sort(alpha)
      -
      -    t.equivalent( actual, expect
      -                , JSON.stringify(pattern) + " " + JSON.stringify(expect)
      -                , tapOpts )
      -
      -    t.equal(tapOpts.re, expectRe, tapOpts)
      -  })
      -
      -  t.comment("time=" + (Date.now() - start) + "ms")
      -  t.end()
      -})
      -
      -tap.test("global leak test", function (t) {
      -  var globalAfter = Object.keys(global)
      -  t.equivalent(globalAfter, globalBefore, "no new globals, please")
      -  t.end()
      -})
      -
      -function alpha (a, b) {
      -  return a > b ? 1 : -1
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/brace-expand.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/brace-expand.js
      deleted file mode 100644
      index 7ee278a2..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/brace-expand.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -var tap = require("tap")
      -  , minimatch = require("../")
      -
      -tap.test("brace expansion", function (t) {
      -  // [ pattern, [expanded] ]
      -  ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}"
      -      , [ "abxy"
      -        , "abxz"
      -        , "acdxy"
      -        , "acdxz"
      -        , "acexy"
      -        , "acexz"
      -        , "afhxy"
      -        , "afhxz"
      -        , "aghxy"
      -        , "aghxz" ] ]
      -    , [ "a{1..5}b"
      -      , [ "a1b"
      -        , "a2b"
      -        , "a3b"
      -        , "a4b"
      -        , "a5b" ] ]
      -    , [ "a{b}c", ["a{b}c"] ]
      -  ].forEach(function (tc) {
      -    var p = tc[0]
      -      , expect = tc[1]
      -    t.equivalent(minimatch.braceExpand(p), expect, p)
      -  })
      -  console.error("ending")
      -  t.end()
      -})
      -
      -
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/caching.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/caching.js
      deleted file mode 100644
      index 0fec4b0f..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/caching.js
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -var Minimatch = require("../minimatch.js").Minimatch
      -var tap = require("tap")
      -tap.test("cache test", function (t) {
      -  var mm1 = new Minimatch("a?b")
      -  var mm2 = new Minimatch("a?b")
      -  t.equal(mm1, mm2, "should get the same object")
      -  // the lru should drop it after 100 entries
      -  for (var i = 0; i < 100; i ++) {
      -    new Minimatch("a"+i)
      -  }
      -  mm2 = new Minimatch("a?b")
      -  t.notEqual(mm1, mm2, "cache should have dropped")
      -  t.end()
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/defaults.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/defaults.js
      deleted file mode 100644
      index 25f1f601..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/defaults.js
      +++ /dev/null
      @@ -1,274 +0,0 @@
      -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test
      -//
      -// TODO: Some of these tests do very bad things with backslashes, and will
      -// most likely fail badly on windows.  They should probably be skipped.
      -
      -var tap = require("tap")
      -  , globalBefore = Object.keys(global)
      -  , mm = require("../")
      -  , files = [ "a", "b", "c", "d", "abc"
      -            , "abd", "abe", "bb", "bcd"
      -            , "ca", "cb", "dd", "de"
      -            , "bdir/", "bdir/cfile"]
      -  , next = files.concat([ "a-b", "aXb"
      -                        , ".x", ".y" ])
      -
      -tap.test("basic tests", function (t) {
      -  var start = Date.now()
      -
      -  // [ pattern, [matches], MM opts, files, TAP opts]
      -  ; [ "http://www.bashcookbook.com/bashinfo" +
      -      "/source/bash-1.14.7/tests/glob-test"
      -    , ["a*", ["a", "abc", "abd", "abe"]]
      -    , ["X*", ["X*"], {nonull: true}]
      -
      -    // allow null glob expansion
      -    , ["X*", []]
      -
      -    // isaacs: Slightly different than bash/sh/ksh
      -    // \\* is not un-escaped to literal "*" in a failed match,
      -    // but it does make it get treated as a literal star
      -    , ["\\*", ["\\*"], {nonull: true}]
      -    , ["\\**", ["\\**"], {nonull: true}]
      -    , ["\\*\\*", ["\\*\\*"], {nonull: true}]
      -
      -    , ["b*/", ["bdir/"]]
      -    , ["c*", ["c", "ca", "cb"]]
      -    , ["**", files]
      -
      -    , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}]
      -    , ["s/\\..*//", ["s/\\..*//"], {nonull: true}]
      -
      -    , "legendary larry crashes bashes"
      -    , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"
      -      , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}]
      -    , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"
      -      , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}]
      -
      -    , "character classes"
      -    , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]]
      -    , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd",
      -       "bdir/", "ca", "cb", "dd", "de"]]
      -    , ["a*[^c]", ["abd", "abe"]]
      -    , function () { files.push("a-b", "aXb") }
      -    , ["a[X-]b", ["a-b", "aXb"]]
      -    , function () { files.push(".x", ".y") }
      -    , ["[^a-c]*", ["d", "dd", "de"]]
      -    , function () { files.push("a*b/", "a*b/ooo") }
      -    , ["a\\*b/*", ["a*b/ooo"]]
      -    , ["a\\*?/*", ["a*b/ooo"]]
      -    , ["*\\\\!*", [], {null: true}, ["echo !7"]]
      -    , ["*\\!*", ["echo !7"], null, ["echo !7"]]
      -    , ["*.\\*", ["r.*"], null, ["r.*"]]
      -    , ["a[b]c", ["abc"]]
      -    , ["a[\\b]c", ["abc"]]
      -    , ["a?c", ["abc"]]
      -    , ["a\\*c", [], {null: true}, ["abc"]]
      -    , ["", [""], { null: true }, [""]]
      -
      -    , "http://www.opensource.apple.com/source/bash/bash-23/" +
      -      "bash/tests/glob-test"
      -    , function () { files.push("man/", "man/man1/", "man/man1/bash.1") }
      -    , ["*/man*/bash.*", ["man/man1/bash.1"]]
      -    , ["man/man1/bash.1", ["man/man1/bash.1"]]
      -    , ["a***c", ["abc"], null, ["abc"]]
      -    , ["a*****?c", ["abc"], null, ["abc"]]
      -    , ["?*****??", ["abc"], null, ["abc"]]
      -    , ["*****??", ["abc"], null, ["abc"]]
      -    , ["?*****?c", ["abc"], null, ["abc"]]
      -    , ["?***?****c", ["abc"], null, ["abc"]]
      -    , ["?***?****?", ["abc"], null, ["abc"]]
      -    , ["?***?****", ["abc"], null, ["abc"]]
      -    , ["*******c", ["abc"], null, ["abc"]]
      -    , ["*******?", ["abc"], null, ["abc"]]
      -    , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]]
      -    , ["[-abc]", ["-"], null, ["-"]]
      -    , ["[abc-]", ["-"], null, ["-"]]
      -    , ["\\", ["\\"], null, ["\\"]]
      -    , ["[\\\\]", ["\\"], null, ["\\"]]
      -    , ["[[]", ["["], null, ["["]]
      -    , ["[", ["["], null, ["["]]
      -    , ["[*", ["[abc"], null, ["[abc"]]
      -    , "a right bracket shall lose its special meaning and\n" +
      -      "represent itself in a bracket expression if it occurs\n" +
      -      "first in the list.  -- POSIX.2 2.8.3.2"
      -    , ["[]]", ["]"], null, ["]"]]
      -    , ["[]-]", ["]"], null, ["]"]]
      -    , ["[a-\z]", ["p"], null, ["p"]]
      -    , ["??**********?****?", [], { null: true }, ["abc"]]
      -    , ["??**********?****c", [], { null: true }, ["abc"]]
      -    , ["?************c****?****", [], { null: true }, ["abc"]]
      -    , ["*c*?**", [], { null: true }, ["abc"]]
      -    , ["a*****c*?**", [], { null: true }, ["abc"]]
      -    , ["a********???*******", [], { null: true }, ["abc"]]
      -    , ["[]", [], { null: true }, ["a"]]
      -    , ["[abc", [], { null: true }, ["["]]
      -
      -    , "nocase tests"
      -    , ["XYZ", ["xYz"], { nocase: true, null: true }
      -      , ["xYz", "ABC", "IjK"]]
      -    , ["ab*", ["ABC"], { nocase: true, null: true }
      -      , ["xYz", "ABC", "IjK"]]
      -    , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true }
      -      , ["xYz", "ABC", "IjK"]]
      -
      -    // [ pattern, [matches], MM opts, files, TAP opts]
      -    , "onestar/twostar"
      -    , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]]
      -    , ["{/?,*}", ["/a", "bb"], {null: true}
      -      , ["/a", "/b/b", "/a/b/c", "bb"]]
      -
      -    , "dots should not match unless requested"
      -    , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]]
      -
      -    // .. and . can only match patterns starting with .,
      -    // even when options.dot is set.
      -    , function () {
      -        files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"]
      -      }
      -    , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}]
      -    , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}]
      -    , ["a/*/b", ["a/c/b"], {dot:false}]
      -    , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}]
      -
      -
      -    // this also tests that changing the options needs
      -    // to change the cache key, even if the pattern is
      -    // the same!
      -    , ["**", ["a/b","a/.d",".a/.d"], { dot: true }
      -      , [ ".a/.d", "a/.d", "a/b"]]
      -
      -    , "paren sets cannot contain slashes"
      -    , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]]
      -
      -    // brace sets trump all else.
      -    //
      -    // invalid glob pattern.  fails on bash4 and bsdglob.
      -    // however, in this implementation, it's easier just
      -    // to do the intuitive thing, and let brace-expansion
      -    // actually come before parsing any extglob patterns,
      -    // like the documentation seems to say.
      -    //
      -    // XXX: if anyone complains about this, either fix it
      -    // or tell them to grow up and stop complaining.
      -    //
      -    // bash/bsdglob says this:
      -    // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]]
      -    // but we do this instead:
      -    , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]]
      -
      -    // test partial parsing in the presence of comment/negation chars
      -    , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]]
      -    , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]]
      -
      -    // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped.
      -    , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g"
      -      , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"]
      -      , {}
      -      , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]]
      -
      -
      -    // crazy nested {,,} and *(||) tests.
      -    , function () {
      -        files = [ "a", "b", "c", "d"
      -                , "ab", "ac", "ad"
      -                , "bc", "cb"
      -                , "bc,d", "c,db", "c,d"
      -                , "d)", "(b|c", "*(b|c"
      -                , "b|c", "b|cc", "cb|c"
      -                , "x(a|b|c)", "x(a|c)"
      -                , "(a|b|c)", "(a|c)"]
      -      }
      -    , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]]
      -    , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]]
      -    // a
      -    // *(b|c)
      -    // *(b|d)
      -    , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]]
      -    , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]]
      -
      -
      -    // test various flag settings.
      -    , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"]
      -      , { noext: true } ]
      -    , ["a?b", ["x/y/acb", "acb/"], {matchBase: true}
      -      , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ]
      -    , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]]
      -
      -
      -    // begin channelling Boole and deMorgan...
      -    , "negation tests"
      -    , function () {
      -        files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"]
      -      }
      -
      -    // anything that is NOT a* matches.
      -    , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]]
      -
      -    // anything that IS !a* matches.
      -    , ["!a*", ["!ab", "!abc"], {nonegate: true}]
      -
      -    // anything that IS a* matches
      -    , ["!!a*", ["a!b"]]
      -
      -    // anything that is NOT !a* matches
      -    , ["!\\!a*", ["a!b", "d", "e", "\\!a"]]
      -
      -    // negation nestled within a pattern
      -    , function () {
      -        files = [ "foo.js"
      -                , "foo.bar"
      -                // can't match this one without negative lookbehind.
      -                , "foo.js.js"
      -                , "blar.js"
      -                , "foo."
      -                , "boo.js.boo" ]
      -      }
      -    , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ]
      -
      -    ].forEach(function (c) {
      -      if (typeof c === "function") return c()
      -      if (typeof c === "string") return t.comment(c)
      -
      -      var pattern = c[0]
      -        , expect = c[1].sort(alpha)
      -        , options = c[2] || {}
      -        , f = c[3] || files
      -        , tapOpts = c[4] || {}
      -
      -      // options.debug = true
      -      var Class = mm.defaults(options).Minimatch
      -      var m = new Class(pattern, {})
      -      var r = m.makeRe()
      -      tapOpts.re = String(r) || JSON.stringify(r)
      -      tapOpts.files = JSON.stringify(f)
      -      tapOpts.pattern = pattern
      -      tapOpts.set = m.set
      -      tapOpts.negated = m.negate
      -
      -      var actual = mm.match(f, pattern, options)
      -      actual.sort(alpha)
      -
      -      t.equivalent( actual, expect
      -                  , JSON.stringify(pattern) + " " + JSON.stringify(expect)
      -                  , tapOpts )
      -    })
      -
      -  t.comment("time=" + (Date.now() - start) + "ms")
      -  t.end()
      -})
      -
      -tap.test("global leak test", function (t) {
      -  var globalAfter = Object.keys(global)
      -  t.equivalent(globalAfter, globalBefore, "no new globals, please")
      -  t.end()
      -})
      -
      -function alpha (a, b) {
      -  return a > b ? 1 : -1
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js
      deleted file mode 100644
      index 6676e262..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/minimatch/test/extglob-ending-with-state-char.js
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -var test = require('tap').test
      -var minimatch = require('../')
      -
      -test('extglob ending with statechar', function(t) {
      -  t.notOk(minimatch('ax', 'a?(b*)'))
      -  t.ok(minimatch('ax', '?(a*|b)'))
      -  t.end()
      -})
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/cli.js
      deleted file mode 100755
      index e7469876..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/cli.js
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -#!/usr/bin/env node
      -'use strict';
      -var pkg = require('./package.json');
      -var supportsColor = require('./');
      -var argv = process.argv.slice(2);
      -
      -function help() {
      -	console.log([
      -		'',
      -		'  ' + pkg.description,
      -		'',
      -		'  Usage',
      -		'    supports-color',
      -		'',
      -		'  Exits with code 0 if color is supported and 1 if not'
      -	].join('\n'));
      -}
      -
      -if (argv.indexOf('--help') !== -1) {
      -	help();
      -	return;
      -}
      -
      -if (argv.indexOf('--version') !== -1) {
      -	console.log(pkg.version);
      -	return;
      -}
      -
      -process.exit(supportsColor ? 0 : 1);
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/index.js
      deleted file mode 100644
      index a2b97845..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/index.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -'use strict';
      -var argv = process.argv;
      -
      -module.exports = (function () {
      -	if (argv.indexOf('--no-color') !== -1 ||
      -		argv.indexOf('--no-colors') !== -1 ||
      -		argv.indexOf('--color=false') !== -1) {
      -		return false;
      -	}
      -
      -	if (argv.indexOf('--color') !== -1 ||
      -		argv.indexOf('--colors') !== -1 ||
      -		argv.indexOf('--color=true') !== -1 ||
      -		argv.indexOf('--color=always') !== -1) {
      -		return true;
      -	}
      -
      -	if (process.stdout && !process.stdout.isTTY) {
      -		return false;
      -	}
      -
      -	if (process.platform === 'win32') {
      -		return true;
      -	}
      -
      -	if ('COLORTERM' in process.env) {
      -		return true;
      -	}
      -
      -	if (process.env.TERM === 'dumb') {
      -		return false;
      -	}
      -
      -	if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
      -		return true;
      -	}
      -
      -	return false;
      -})();
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/package.json
      deleted file mode 100644
      index 88a0107e..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/package.json
      +++ /dev/null
      @@ -1,111 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "supports-color@1.2.0",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/mocha"
      -    ]
      -  ],
      -  "_from": "supports-color@1.2.0",
      -  "_id": "supports-color@1.2.0",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha/supports-color",
      -  "_nodeVersion": "0.10.32",
      -  "_npmUser": {
      -    "email": "sindresorhus@gmail.com",
      -    "name": "sindresorhus"
      -  },
      -  "_npmVersion": "2.1.2",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "supports-color",
      -    "raw": "supports-color@1.2.0",
      -    "rawSpec": "1.2.0",
      -    "scope": null,
      -    "spec": "1.2.0",
      -    "type": "version"
      -  },
      -  "_requiredBy": [
      -    "/mocha"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz",
      -  "_shasum": "ff1ed1e61169d06b3cf2d588e188b18d8847e17e",
      -  "_shrinkwrap": null,
      -  "_spec": "supports-color@1.2.0",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/mocha",
      -  "author": {
      -    "email": "sindresorhus@gmail.com",
      -    "name": "Sindre Sorhus",
      -    "url": "http://sindresorhus.com"
      -  },
      -  "bin": {
      -    "supports-color": "cli.js"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/sindresorhus/supports-color/issues"
      -  },
      -  "dependencies": {},
      -  "description": "Detect whether a terminal supports color",
      -  "devDependencies": {
      -    "mocha": "*",
      -    "require-uncached": "^1.0.2"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "ff1ed1e61169d06b3cf2d588e188b18d8847e17e",
      -    "tarball": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz"
      -  },
      -  "engines": {
      -    "node": ">=0.10.0"
      -  },
      -  "files": [
      -    "index.js",
      -    "cli.js"
      -  ],
      -  "gitHead": "e1815a472ebb59612e485096ae31a394e47d3c93",
      -  "homepage": "https://github.com/sindresorhus/supports-color",
      -  "keywords": [
      -    "cli",
      -    "bin",
      -    "color",
      -    "colour",
      -    "colors",
      -    "terminal",
      -    "console",
      -    "cli",
      -    "ansi",
      -    "styles",
      -    "tty",
      -    "rgb",
      -    "256",
      -    "shell",
      -    "xterm",
      -    "command-line",
      -    "support",
      -    "supports",
      -    "capability",
      -    "detect"
      -  ],
      -  "license": "MIT",
      -  "maintainers": [
      -    {
      -      "email": "sindresorhus@gmail.com",
      -      "name": "sindresorhus"
      -    },
      -    {
      -      "email": "jappelman@xebia.com",
      -      "name": "jbnicolai"
      -    }
      -  ],
      -  "name": "supports-color",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git+https://github.com/sindresorhus/supports-color.git"
      -  },
      -  "scripts": {
      -    "test": "mocha"
      -  },
      -  "version": "1.2.0"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/readme.md
      deleted file mode 100644
      index 32d4f46e..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/node_modules/supports-color/readme.md
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -# supports-color [![Build Status](https://travis-ci.org/sindresorhus/supports-color.svg?branch=master)](https://travis-ci.org/sindresorhus/supports-color)
      -
      -> Detect whether a terminal supports color
      -
      -
      -## Install
      -
      -```sh
      -$ npm install --save supports-color
      -```
      -
      -
      -## Usage
      -
      -```js
      -var supportsColor = require('supports-color');
      -
      -if (supportsColor) {
      -	console.log('Terminal supports color');
      -}
      -```
      -
      -It obeys the `--color` and `--no-color` CLI flags.
      -
      -
      -## CLI
      -
      -```sh
      -$ npm install --global supports-color
      -```
      -
      -```
      -$ supports-color --help
      -
      -  Usage
      -    supports-color
      -
      -  Exits with code 0 if color is supported and 1 if not
      -```
      -
      -
      -## License
      -
      -MIT © [Sindre Sorhus](http://sindresorhus.com)
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/package.json
      deleted file mode 100644
      index 1930dc34..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/mocha/package.json
      +++ /dev/null
      @@ -1,1102 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "mocha@^2.3.3",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/vscode"
      -    ]
      -  ],
      -  "_from": "mocha@>=2.3.3 <3.0.0",
      -  "_id": "mocha@2.4.5",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/mocha",
      -  "_nodeVersion": "5.5.0",
      -  "_npmUser": {
      -    "email": "boneskull@boneskull.com",
      -    "name": "boneskull"
      -  },
      -  "_npmVersion": "3.5.3",
      -  "_phantomChildren": {
      -    "inherits": "2.0.1",
      -    "lru-cache": "2.7.3",
      -    "sigmund": "1.0.1"
      -  },
      -  "_requested": {
      -    "name": "mocha",
      -    "raw": "mocha@^2.3.3",
      -    "rawSpec": "^2.3.3",
      -    "scope": null,
      -    "spec": ">=2.3.3 <3.0.0",
      -    "type": "range"
      -  },
      -  "_requiredBy": [
      -    "/vscode"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz",
      -  "_shasum": "151768dd2875eb51bc8295e9800026e9f2bb398f",
      -  "_shrinkwrap": null,
      -  "_spec": "mocha@^2.3.3",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vscode",
      -  "author": {
      -    "email": "tj@vision-media.ca",
      -    "name": "TJ Holowaychuk"
      -  },
      -  "bin": {
      -    "_mocha": "./bin/_mocha",
      -    "mocha": "./bin/mocha"
      -  },
      -  "browser": {
      -    "debug": "./lib/browser/debug.js",
      -    "events": "./lib/browser/events.js",
      -    "tty": "./lib/browser/tty.js"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/mochajs/mocha/issues"
      -  },
      -  "contributors": [
      -    {
      -      "email": "tj@travisjeffery.com",
      -      "name": "Travis Jeffery"
      -    },
      -    {
      -      "email": "boneskull@boneskull.com",
      -      "name": "Christopher Hiller"
      -    },
      -    {
      -      "email": "jappelman@xebia.com",
      -      "name": "Joshua Appelman"
      -    },
      -    {
      -      "email": "rauchg@gmail.com",
      -      "name": "Guillermo Rauch"
      -    },
      -    {
      -      "email": "dasilvacontin@gmail.com",
      -      "name": "David da Silva Contín"
      -    },
      -    {
      -      "email": "danielst.jules@gmail.com",
      -      "name": "Daniel St. Jules"
      -    },
      -    {
      -      "email": "ariel@mashraki.co.il",
      -      "name": "Ariel Mashraki"
      -    },
      -    {
      -      "email": "adomokos@gmail.com",
      -      "name": "Attila Domokos"
      -    },
      -    {
      -      "email": "john.firebaugh@gmail.com",
      -      "name": "John Firebaugh"
      -    },
      -    {
      -      "email": "nathan@tootallnate.net",
      -      "name": "Nathan Rajlich"
      -    },
      -    {
      -      "email": "joliss42@gmail.com",
      -      "name": "Jo Liss"
      -    },
      -    {
      -      "email": "mike@mikepennisi.com",
      -      "name": "Mike Pennisi"
      -    },
      -    {
      -      "email": "brendan.nee@gmail.com",
      -      "name": "Brendan Nee"
      -    },
      -    {
      -      "email": "james.r.carr@gmail.com",
      -      "name": "James Carr"
      -    },
      -    {
      -      "email": "tricknotes.rs@gmail.com",
      -      "name": "Ryunosuke SATO"
      -    },
      -    {
      -      "email": "aaron.heckmann+github@gmail.com",
      -      "name": "Aaron Heckmann"
      -    },
      -    {
      -      "email": "jonathanrichardong@gmail.com",
      -      "name": "Jonathan Ong"
      -    },
      -    {
      -      "email": "forbes@lindesay.co.uk",
      -      "name": "Forbes Lindesay"
      -    },
      -    {
      -      "email": "raynos2@gmail.com",
      -      "name": "Raynos"
      -    },
      -    {
      -      "email": "xavier@antoviaque.org",
      -      "name": "Xavier Antoviaque"
      -    },
      -    {
      -      "email": "k.hokamura@gmail.com",
      -      "name": "hokaccha"
      -    },
      -    {
      -      "email": "joshuakrall@pobox.com",
      -      "name": "Joshua Krall"
      -    },
      -    {
      -      "email": "domenic@domenicdenicola.com",
      -      "name": "Domenic Denicola"
      -    },
      -    {
      -      "email": "glenjamin@gmail.com",
      -      "name": "Glen Mailer"
      -    },
      -    {
      -      "email": "mathieudesve@MacBook-Pro-de-Mathieu.local",
      -      "name": "Mathieu Desvé"
      -    },
      -    {
      -      "email": "cory.thomas@bazaarvoice.com",
      -      "name": "Cory Thomas"
      -    },
      -    {
      -      "email": "fredrik@devloop.se",
      -      "name": "Fredrik Enestad"
      -    },
      -    {
      -      "email": "ben@bradleyit.com",
      -      "name": "Ben Bradley"
      -    },
      -    {
      -      "email": "sindresorhus@gmail.com",
      -      "name": "Sindre Sorhus"
      -    },
      -    {
      -      "email": "jesse.dailey@gmail.com",
      -      "name": "Jesse Dailey"
      -    },
      -    {
      -      "email": "ben.lindsey@vungle.com",
      -      "name": "Ben Lindsey"
      -    },
      -    {
      -      "email": "mail@maxantoni.de",
      -      "name": "Maximilian Antoni"
      -    },
      -    {
      -      "email": "merrick.christensen@gmail.com",
      -      "name": "Merrick Christensen"
      -    },
      -    {
      -      "email": "demmer@jut.io",
      -      "name": "Michael Demmer"
      -    },
      -    {
      -      "email": "tyson@tysontate.com",
      -      "name": "Tyson Tate"
      -    },
      -    {
      -      "email": "github-com@agachi.name",
      -      "name": "Valentin Agachi"
      -    },
      -    {
      -      "email": "wil.moore@wilmoore.com",
      -      "name": "Wil Moore III"
      -    },
      -    {
      -      "email": "benjie@jemjie.com",
      -      "name": "Benjie Gillam"
      -    },
      -    {
      -      "email": "nathan.bowser@spiderstrategies.com",
      -      "name": "Nathan Bowser"
      -    },
      -    {
      -      "email": "eiji.ienaga@gmail.com",
      -      "name": "eiji.ienaga"
      -    },
      -    {
      -      "email": "fool2fish@gmail.com",
      -      "name": "fool2fish"
      -    },
      -    {
      -      "email": "paul@paulmillr.com",
      -      "name": "Paul Miller"
      -    },
      -    {
      -      "email": "andreas@one.com",
      -      "name": "Andreas Lind Petersen"
      -    },
      -    {
      -      "email": "krinklemail@gmail.com",
      -      "name": "Timo Tijhof"
      -    },
      -    {
      -      "email": "nathan.alderson@adtran.com",
      -      "name": "Nathan Alderson"
      -    },
      -    {
      -      "email": "ian@ianstormtaylor.com",
      -      "name": "Ian Storm Taylor"
      -    },
      -    {
      -      "email": "arian@aryweb.nl",
      -      "name": "Arian Stolwijk"
      -    },
      -    {
      -      "email": "rstacruz@users.noreply.github.com",
      -      "name": "Rico Sta. Cruz"
      -    },
      -    {
      -      "email": "domenic@domenicdenicola.com",
      -      "name": "domenic"
      -    },
      -    {
      -      "email": "jacob@wejendorp.dk",
      -      "name": "Jacob Wejendorp"
      -    },
      -    {
      -      "email": "fabio.crisci@amadeus.com",
      -      "name": "fcrisci"
      -    },
      -    {
      -      "email": "gaeremyncks@gmail.com",
      -      "name": "Simon Gaeremynck"
      -    },
      -    {
      -      "email": "jnylen@gmail.com",
      -      "name": "James Nylen"
      -    },
      -    {
      -      "email": "telaviv@github",
      -      "name": "Shawn Krisman"
      -    },
      -    {
      -      "email": "slang800@gmail.com",
      -      "name": "Sean Lang"
      -    },
      -    {
      -      "email": "david.henderson@triggeredmessaging.com",
      -      "name": "David Henderson"
      -    },
      -    {
      -      "email": "js.developer.undefined@gmail.com",
      -      "name": "jsdevel"
      -    },
      -    {
      -      "email": "alexander.early@gmail.com",
      -      "name": "Alexander Early"
      -    },
      -    {
      -      "email": "parkrmoore@gmail.com",
      -      "name": "Parker Moore"
      -    },
      -    {
      -      "email": "paul@paularmstrongdesigns.com",
      -      "name": "Paul Armstrong"
      -    },
      -    {
      -      "email": "monowerker@gmail.com",
      -      "name": "monowerker"
      -    },
      -    {
      -      "email": "github@kkaefer.com",
      -      "name": "Konstantin Käfer"
      -    },
      -    {
      -      "email": "justin.dujardin@sococo.com",
      -      "name": "Justin DuJardin"
      -    },
      -    {
      -      "email": "er.juzerali@gmail.com",
      -      "name": "Juzer Ali"
      -    },
      -    {
      -      "email": "dominique@quatravaux.org",
      -      "name": "Dominique Quatravaux"
      -    },
      -    {
      -      "email": "quangvvv@gmail.com",
      -      "name": "Quang Van"
      -    },
      -    {
      -      "email": "kyan.ql.he@gmail.com",
      -      "name": "Quanlong He"
      -    },
      -    {
      -      "email": "vlad@webflow.com",
      -      "name": "Vlad Magdalin"
      -    },
      -    {
      -      "email": "exogen@gmail.com",
      -      "name": "Brian Beck"
      -    },
      -    {
      -      "email": "jonas.westerlund@me.com",
      -      "name": "Jonas Westerlund"
      -    },
      -    {
      -      "email": "michael.riley@autodesk.com",
      -      "name": "Michael Riley"
      -    },
      -    {
      -      "email": "b@chromatin.ca",
      -      "name": "Buck Doyle"
      -    },
      -    {
      -      "email": "mate.farkas@virtual-call-center.eu",
      -      "name": "FARKAS Máté"
      -    },
      -    {
      -      "email": "sune@we-knowhow.dk",
      -      "name": "Sune Simonsen"
      -    },
      -    {
      -      "email": "github@keithcirkel.co.uk",
      -      "name": "Keith Cirkel"
      -    },
      -    {
      -      "email": "kent+github@doddsfamily.us",
      -      "name": "Kent C. Dodds"
      -    },
      -    {
      -      "email": "kevinjacobconway@gmail.com",
      -      "name": "Kevin Conway"
      -    },
      -    {
      -      "email": "Kev.Kirsche+GitHub@gmail.com",
      -      "name": "Kevin Kirsche"
      -    },
      -    {
      -      "email": "kirill.korolyov@gmail.com",
      -      "name": "Kirill Korolyov"
      -    },
      -    {
      -      "email": "koen@koenpunt.nl",
      -      "name": "Koen Punt"
      -    },
      -    {
      -      "email": "kyle@kemitchell.com",
      -      "name": "Kyle Mitchell"
      -    },
      -    {
      -      "email": "lackac@lackac.hu",
      -      "name": "Laszlo Bacsi"
      -    },
      -    {
      -      "email": "bitwiseman@gmail.com",
      -      "name": "Liam Newman"
      -    },
      -    {
      -      "email": "linus@folkdatorn.se",
      -      "name": "Linus Unnebäck"
      -    },
      -    {
      -      "email": "lackac@lackac.hu",
      -      "name": "László Bácsi"
      -    },
      -    {
      -      "email": "maciej.malecki@notimplemented.org",
      -      "name": "Maciej Małecki"
      -    },
      -    {
      -      "email": "mal.graty@googlemail.com",
      -      "name": "Mal Graty"
      -    },
      -    {
      -      "email": "kuomarc2@gmail.com",
      -      "name": "Marc Kuo"
      -    },
      -    {
      -      "email": "marcello@cellosoft.com",
      -      "name": "Marcello Bastea-Forte"
      -    },
      -    {
      -      "email": "marcus@gratex.com",
      -      "name": "Martin Marko"
      -    },
      -    {
      -      "email": "matija.marohnic@gmail.com",
      -      "name": "Matija Marohnić"
      -    },
      -    {
      -      "email": "matt@ydekproductions.com",
      -      "name": "Matt Robenolt"
      -    },
      -    {
      -      "email": "matthewgarysmith@gmail.com",
      -      "name": "Matt Smith"
      -    },
      -    {
      -      "email": "matthewshanley@littlesecretsrecords.com",
      -      "name": "Matthew Shanley"
      -    },
      -    {
      -      "email": "mattias.tidlund@learningwell.se",
      -      "name": "Mattias Tidlund"
      -    },
      -    {
      -      "email": "mjijackson@gmail.com",
      -      "name": "Michael Jackson"
      -    },
      -    {
      -      "email": "mwolson@member.fsf.org",
      -      "name": "Michael Olson"
      -    },
      -    {
      -      "email": "michael.r.schoonmaker@gmail.com",
      -      "name": "Michael Schoonmaker"
      -    },
      -    {
      -      "email": "michalcharemza@gmail.com",
      -      "name": "Michal Charemza"
      -    },
      -    {
      -      "email": "mkolodny@integralads.com",
      -      "name": "Moshe Kolodny"
      -    },
      -    {
      -      "email": "nathan@nathanblack.org",
      -      "name": "Nathan Black"
      -    },
      -    {
      -      "email": "fitzgen@gmail.com",
      -      "name": "Nick Fitzgerald"
      -    },
      -    {
      -      "email": "taddei.uk@gmail.com",
      -      "name": "Nicolo Taddei"
      -    },
      -    {
      -      "email": "nosh@blackpiano.com",
      -      "name": "Noshir Patel"
      -    },
      -    {
      -      "email": "panu.horsmalahti@iki.fi",
      -      "name": "Panu Horsmalahti"
      -    },
      -    {
      -      "email": "pete@petes-imac.frontinternal.net",
      -      "name": "Pete Hawkins"
      -    },
      -    {
      -      "email": "pete@phawk.co.uk",
      -      "name": "Pete Hawkins"
      -    },
      -    {
      -      "email": "psung@dnanexus.com",
      -      "name": "Phil Sung"
      -    },
      -    {
      -      "email": "rviskus@gmail.com",
      -      "name": "R56"
      -    },
      -    {
      -      "email": "=",
      -      "name": "Raynos"
      -    },
      -    {
      -      "email": "refael@empeeric.com",
      -      "name": "Refael Ackermann"
      -    },
      -    {
      -      "email": "rdingwall@gmail.com",
      -      "name": "Richard Dingwall"
      -    },
      -    {
      -      "email": "RichardKnop@users.noreply.github.com",
      -      "name": "Richard Knop"
      -    },
      -    {
      -      "email": "rob@robwu.nl",
      -      "name": "Rob Wu"
      -    },
      -    {
      -      "email": "romain.prieto@gmail.com",
      -      "name": "Romain Prieto"
      -    },
      -    {
      -      "email": "rneuhauser@suse.cz",
      -      "name": "Roman Neuhauser"
      -    },
      -    {
      -      "email": "shtylman@gmail.com",
      -      "name": "Roman Shtylman"
      -    },
      -    {
      -      "email": "devdazed@me.com",
      -      "name": "Russ Bradberry"
      -    },
      -    {
      -      "email": "rmunson@github.com",
      -      "name": "Russell Munson"
      -    },
      -    {
      -      "email": "mustafin@kt-labs.com",
      -      "name": "Rustem Mustafin"
      -    },
      -    {
      -      "email": "ryanmhubbard@gmail.com",
      -      "name": "Ryan Hubbard"
      -    },
      -    {
      -      "email": "salehen.rahman@gmail.com",
      -      "name": "Salehen Shovon Rahman"
      -    },
      -    {
      -      "email": "smussell@gmail.com",
      -      "name": "Sam Mussell"
      -    },
      -    {
      -      "email": "koss@nocorp.me",
      -      "name": "Sasha Koss"
      -    },
      -    {
      -      "email": "nulltask@gmail.com",
      -      "name": "Seiya Konno"
      -    },
      -    {
      -      "email": "shaine@squidtree.com",
      -      "name": "Shaine Hatch"
      -    },
      -    {
      -      "email": "simon@attentif.ch",
      -      "name": "Simon Goumaz"
      -    },
      -    {
      -      "email": "opichals@gmail.com",
      -      "name": "Standa Opichal"
      -    },
      -    {
      -      "email": "smath23@gmail.com",
      -      "name": "Stephen Mathieson"
      -    },
      -    {
      -      "email": "stevem@brandwatch.com",
      -      "name": "Steve Mason"
      -    },
      -    {
      -      "email": "stewart.taylor1@gmail.com",
      -      "name": "Stewart Taylor"
      -    },
      -    {
      -      "email": "tapiwa@munzwa.tk",
      -      "name": "Tapiwa Kelvin"
      -    },
      -    {
      -      "email": "teddyzeenny@gmail.com",
      -      "name": "Teddy Zeenny"
      -    },
      -    {
      -      "email": "timehat@gmail.com",
      -      "name": "Tim Ehat"
      -    },
      -    {
      -      "email": "tagulnick@onjack.com",
      -      "name": "Todd Agulnick"
      -    },
      -    {
      -      "email": "tom@thau.me",
      -      "name": "Tom Coquereau"
      -    },
      -    {
      -      "email": "vnikiti@ncsu.edu",
      -      "name": "Vadim Nikitin"
      -    },
      -    {
      -      "email": "costan@gmail.com",
      -      "name": "Victor Costan"
      -    },
      -    {
      -      "email": "william.langstroth@gmail.com",
      -      "name": "Will Langstroth"
      -    },
      -    {
      -      "email": "yanis.wang@gmail.com",
      -      "name": "Yanis Wang"
      -    },
      -    {
      -      "email": "yuestwang@gmail.com",
      -      "name": "Yuest Wang"
      -    },
      -    {
      -      "email": "zsolt@takacs.cc",
      -      "name": "Zsolt Takács"
      -    },
      -    {
      -      "email": "a@abrkn.com",
      -      "name": "abrkn"
      -    },
      -    {
      -      "email": "airportyh@gmail.com",
      -      "name": "airportyh"
      -    },
      -    {
      -      "email": "baduncaduncan@gmail.com",
      -      "name": "badunk"
      -    },
      -    {
      -      "email": "claudyus@HEX.(none)",
      -      "name": "claudyus",
      -      "url": "none"
      -    },
      -    {
      -      "email": "daviddasilvacontin@gmail.com",
      -      "name": "dasilvacontin"
      -    },
      -    {
      -      "email": "fengmk2@gmail.com",
      -      "name": "fengmk2"
      -    },
      -    {
      -      "email": "gaye@mozilla.com",
      -      "name": "gaye"
      -    },
      -    {
      -      "email": "me@grasgendar.me",
      -      "name": "grasGendarme"
      -    },
      -    {
      -      "email": "klaemo@fastmail.fm",
      -      "name": "klaemo"
      -    },
      -    {
      -      "email": "lakmeerkravid@gmail.com",
      -      "name": "lakmeer"
      -    },
      -    {
      -      "email": "salva@unoyunodiez.com",
      -      "name": "lodr"
      -    },
      -    {
      -      "email": "mrshturman@gmail.com",
      -      "name": "mrShturman"
      -    },
      -    {
      -      "email": "Takuya_Nishigori@voyagegroup.com",
      -      "name": "nishigori"
      -    },
      -    {
      -      "email": "thedelarosa@gmail.com",
      -      "name": "omardelarosa"
      -    },
      -    {
      -      "email": "qiuzuhui@users.noreply.github.com",
      -      "name": "qiuzuhui"
      -    },
      -    {
      -      "email": "samuel.goldszmidt@gmail.com",
      -      "name": "samuel goldszmidt"
      -    },
      -    {
      -      "email": "seb.vincent@gmail.com",
      -      "name": "sebv"
      -    },
      -    {
      -      "email": "syl.faucherand@gmail.com",
      -      "name": "slyg"
      -    },
      -    {
      -      "email": "jake.mc@icloud.com",
      -      "name": "startswithaj"
      -    },
      -    {
      -      "email": "tgautier@gmail.com",
      -      "name": "tgautier@yahoo.com"
      -    },
      -    {
      -      "email": "darkphoenix739@gmail.com",
      -      "name": "traleig1"
      -    },
      -    {
      -      "email": "iamvlad@gmail.com",
      -      "name": "vlad"
      -    },
      -    {
      -      "email": "yuitest@cjhat.net",
      -      "name": "yuitest"
      -    },
      -    {
      -      "email": "zhiyelee@gmail.com",
      -      "name": "zhiyelee"
      -    },
      -    {
      -      "email": "adam.crabtree@redrobotlabs.com",
      -      "name": "Adam Crabtree"
      -    },
      -    {
      -      "email": "talknmime@gmail.com",
      -      "name": "Adam Gruber"
      -    },
      -    {
      -      "email": "andreas@opuno.com",
      -      "name": "Andreas Brekken"
      -    },
      -    {
      -      "email": "andrewnez@gmail.com",
      -      "name": "Andrew Nesbitt"
      -    },
      -    {
      -      "email": "8mayday@gmail.com",
      -      "name": "Andrey Popp"
      -    },
      -    {
      -      "email": "eagleeyes91@gmail.com",
      -      "name": "Andrii Shumada"
      -    },
      -    {
      -      "email": "anis.safine.ext@francetv.fr",
      -      "name": "Anis Safine"
      -    },
      -    {
      -      "email": "arnaud.brousseau@gmail.com",
      -      "name": "Arnaud Brousseau"
      -    },
      -    {
      -      "email": "asoftonight@gmail.com",
      -      "name": "Atsuya Takagi"
      -    },
      -    {
      -      "email": "mraustinbirch@gmail.com",
      -      "name": "Austin Birch"
      -    },
      -    {
      -      "email": "info@bnoordhuis.nl",
      -      "name": "Ben Noordhuis"
      -    },
      -    {
      -      "email": "bzugmeyer@gmail.com",
      -      "name": "Benoît Zugmeyer"
      -    },
      -    {
      -      "email": "bjoerge@origo.no",
      -      "name": "Bjørge Næss"
      -    },
      -    {
      -      "email": "blalor@bravo5.org",
      -      "name": "Brian Lalor"
      -    },
      -    {
      -      "email": "brian.m.carlson@gmail.com",
      -      "name": "Brian M. Carlson"
      -    },
      -    {
      -      "email": "guardbionic-github@yahoo.com",
      -      "name": "Brian Moore"
      -    },
      -    {
      -      "email": "bdondo@gmail.com",
      -      "name": "Bryan Donovan"
      -    },
      -    {
      -      "email": "cscott@cscott.net",
      -      "name": "C. Scott Ananian"
      -    },
      -    {
      -      "email": "casey@caseywebdev.com",
      -      "name": "Casey Foster"
      -    },
      -    {
      -      "email": "chris@cmbuckley.co.uk",
      -      "name": "Chris Buckley"
      -    },
      -    {
      -      "email": "cthewren@gmail.com",
      -      "name": "ChrisWren"
      -    },
      -    {
      -      "email": "connorhd@gmail.com",
      -      "name": "Connor Dunn"
      -    },
      -    {
      -      "email": "corey@coreybutler.com",
      -      "name": "Corey Butler"
      -    },
      -    {
      -      "email": "daniel.stockman@gmail.com",
      -      "name": "Daniel Stockman"
      -    },
      -    {
      -      "email": "davemckenna01@gmail.com",
      -      "name": "Dave McKenna"
      -    },
      -    {
      -      "email": "bardadymchik@gmail.com",
      -      "name": "Denis Bardadym"
      -    },
      -    {
      -      "email": "suki@tritarget.org",
      -      "name": "Devin Weaver"
      -    },
      -    {
      -      "email": "dwu@palantir.com",
      -      "name": "Di Wu"
      -    },
      -    {
      -      "email": "diogo.gmt@gmail.com",
      -      "name": "Diogo Monteiro"
      -    },
      -    {
      -      "email": "deadrunk@gmail.com",
      -      "name": "Dmitry Shirokov"
      -    },
      -    {
      -      "email": "dominic@dbarnes.info",
      -      "name": "Dominic Barnes"
      -    },
      -    {
      -      "email": "doug@somethingdoug.com",
      -      "name": "Douglas Christopher Wilson"
      -    },
      -    {
      -      "email": "i@2fd.me",
      -      "name": "Fede Ramirez"
      -    },
      -    {
      -      "email": "fedor.indutny@gmail.com",
      -      "name": "Fedor Indutny"
      -    },
      -    {
      -      "email": "florian@margaine.com",
      -      "name": "Florian Margaine"
      -    },
      -    {
      -      "email": "frederico.silva@gmail.com",
      -      "name": "Frederico Silva"
      -    },
      -    {
      -      "email": "fredriklindin@gmail.com",
      -      "name": "Fredrik Lindin"
      -    },
      -    {
      -      "email": "gaye@mozilla.com",
      -      "name": "Gareth Aye"
      -    },
      -    {
      -      "email": "gareth.cpm@gmail.com",
      -      "name": "Gareth Murphy"
      -    },
      -    {
      -      "email": "GavinM@airg.com",
      -      "name": "Gavin Mogan"
      -    },
      -    {
      -      "email": "giggio@giggio.net",
      -      "name": "Giovanni Bassi"
      -    },
      -    {
      -      "email": "curvedmark@gmail.com",
      -      "name": "Glen Huang"
      -    },
      -    {
      -      "email": "gregperkins@alum.mit.edu",
      -      "name": "Greg Perkins"
      -    },
      -    {
      -      "email": "hyeluri@gmail.com",
      -      "name": "Harish"
      -    },
      -    {
      -      "email": "harry.brundage@gmail.com",
      -      "name": "Harry Brundage"
      -    },
      -    {
      -      "email": "herman@geekli.st",
      -      "name": "Herman Junge"
      -    },
      -    {
      -      "email": "ian.greenleaf@gmail.com",
      -      "name": "Ian Young"
      -    },
      -    {
      -      "email": "ian@thesecretlocation.net",
      -      "name": "Ian Zamojc"
      -    },
      -    {
      -      "email": "ivan@kinvey.com",
      -      "name": "Ivan"
      -    },
      -    {
      -      "email": "jpbochi@gmail.com",
      -      "name": "JP Bochi"
      -    },
      -    {
      -      "email": "jaakko.salonen@iki.fi",
      -      "name": "Jaakko Salonen"
      -    },
      -    {
      -      "email": "james.craige@gmail.com",
      -      "name": "Jake Craige"
      -    },
      -    {
      -      "email": "jakemmarsh@gmail.com",
      -      "name": "Jake Marsh"
      -    },
      -    {
      -      "email": "jakub@apiary.io",
      -      "name": "Jakub Nešetřil"
      -    },
      -    {
      -      "email": "jbowes@repl.ca",
      -      "name": "James Bowes"
      -    },
      -    {
      -      "email": "james@lightsofapollo.com",
      -      "name": "James Lal"
      -    },
      -    {
      -      "email": "jan.kopriva@gooddata.com",
      -      "name": "Jan Kopriva"
      -    },
      -    {
      -      "email": "jay@jcbarry.com",
      -      "name": "Jason Barry"
      -    },
      -    {
      -      "email": "javierav@javierav.com",
      -      "name": "Javier Aranda"
      -    },
      -    {
      -      "email": "gelule@gmail.com",
      -      "name": "Jean Ponchon"
      -    },
      -    {
      -      "email": "jeff.kunkle@nearinfinity.com",
      -      "name": "Jeff Kunkle"
      -    },
      -    {
      -      "email": "jeff.schilling@q2ebanking.com",
      -      "name": "Jeff Schilling"
      -    },
      -    {
      -      "email": "jmar777@gmail.com",
      -      "name": "Jeremy Martin"
      -    },
      -    {
      -      "email": "jimmy@jimmycuadra.com",
      -      "name": "Jimmy Cuadra"
      -    },
      -    {
      -      "email": "jrhdoty@gmail.com",
      -      "name": "John Doty"
      -    },
      -    {
      -      "email": "outdooricon@gmail.com",
      -      "name": "Johnathon Sanders"
      -    },
      -    {
      -      "email": "jonas@mbr-targeting.com",
      -      "name": "Jonas Dohse"
      -    },
      -    {
      -      "email": "matrixhasyou2k4@gmail.com",
      -      "name": "Jonathan Creamer"
      -    },
      -    {
      -      "email": "jdelgado@rewip.com",
      -      "name": "Jonathan Delgado"
      -    },
      -    {
      -      "email": "jpark@daptiv.com",
      -      "name": "Jonathan Park"
      -    },
      -    {
      -      "email": "jordan@jordansexton.com",
      -      "name": "Jordan Sexton"
      -    },
      -    {
      -      "email": "jussi.k.virtanen@gmail.com",
      -      "name": "Jussi Virtanen"
      -    },
      -    {
      -      "email": "katiegengler@gmail.com",
      -      "name": "Katie Gengler"
      -    },
      -    {
      -      "email": "k.hokamura@gmail.com",
      -      "name": "Kazuhito Hokamura"
      -    }
      -  ],
      -  "dependencies": {
      -    "commander": "2.3.0",
      -    "debug": "2.2.0",
      -    "diff": "1.4.0",
      -    "escape-string-regexp": "1.0.2",
      -    "glob": "3.2.3",
      -    "growl": "1.8.1",
      -    "jade": "0.26.3",
      -    "mkdirp": "0.5.1",
      -    "supports-color": "1.2.0"
      -  },
      -  "description": "simple, flexible, fun test framework",
      -  "devDependencies": {
      -    "browser-stdout": "^1.2.0",
      -    "browserify": "10.2.4",
      -    "coffee-script": "~1.8.0",
      -    "eslint": "^1.2.1",
      -    "should": "~8.0.0",
      -    "through2": "~0.6.5"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "151768dd2875eb51bc8295e9800026e9f2bb398f",
      -    "tarball": "https://registry.npmjs.org/mocha/-/mocha-2.4.5.tgz"
      -  },
      -  "engines": {
      -    "node": ">= 0.8.x"
      -  },
      -  "files": [
      -    "bin",
      -    "images",
      -    "lib",
      -    "index.js",
      -    "mocha.css",
      -    "mocha.js",
      -    "LICENSE"
      -  ],
      -  "gitHead": "2a8594424c73ffeca41ef1668446372160528b4a",
      -  "homepage": "https://github.com/mochajs/mocha#readme",
      -  "keywords": [
      -    "mocha",
      -    "test",
      -    "bdd",
      -    "tdd",
      -    "tap"
      -  ],
      -  "license": "MIT",
      -  "licenses": [
      -    {
      -      "type": "MIT",
      -      "url": "https://raw.github.com/mochajs/mocha/master/LICENSE"
      -    }
      -  ],
      -  "main": "./index",
      -  "maintainers": [
      -    {
      -      "email": "tj@vision-media.ca",
      -      "name": "tjholowaychuk"
      -    },
      -    {
      -      "email": "tj@travisjeffery.com",
      -      "name": "travisjeffery"
      -    },
      -    {
      -      "email": "boneskull@boneskull.com",
      -      "name": "boneskull"
      -    },
      -    {
      -      "email": "jappelman@xebia.com",
      -      "name": "jbnicolai"
      -    }
      -  ],
      -  "name": "mocha",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/mochajs/mocha.git"
      -  },
      -  "scripts": {
      -    "test": "make test-all"
      -  },
      -  "version": "2.4.5"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/.npmignore
      deleted file mode 100644
      index d1aa0ce4..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/.npmignore
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -node_modules
      -test
      -History.md
      -Makefile
      -component.json
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/History.md
      deleted file mode 100644
      index 32fdfc17..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/History.md
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -
      -0.7.1 / 2015-04-20
      -==================
      -
      -  * prevent extraordinary long inputs (@evilpacket)
      -  * Fixed broken readme link
      -
      -0.7.0 / 2014-11-24
      -==================
      -
      - * add time abbreviations, updated tests and readme for the new units
      - * fix example in the readme.
      - * add LICENSE file
      -
      -0.6.2 / 2013-12-05
      -==================
      -
      - * Adding repository section to package.json to suppress warning from NPM.
      -
      -0.6.1 / 2013-05-10
      -==================
      -
      -  * fix singularization [visionmedia]
      -
      -0.6.0 / 2013-03-15
      -==================
      -
      -  * fix minutes
      -
      -0.5.1 / 2013-02-24
      -==================
      -
      -  * add component namespace
      -
      -0.5.0 / 2012-11-09
      -==================
      -
      -  * add short formatting as default and .long option
      -  * add .license property to component.json
      -  * add version to component.json
      -
      -0.4.0 / 2012-10-22
      -==================
      -
      -  * add rounding to fix crazy decimals
      -
      -0.3.0 / 2012-09-07
      -==================
      -
      -  * fix `ms()` [visionmedia]
      -
      -0.2.0 / 2012-09-03
      -==================
      -
      -  * add component.json [visionmedia]
      -  * add days support [visionmedia]
      -  * add hours support [visionmedia]
      -  * add minutes support [visionmedia]
      -  * add seconds support [visionmedia]
      -  * add ms string support [visionmedia]
      -  * refactor tests to facilitate ms(number) [visionmedia]
      -
      -0.1.0 / 2012-03-07
      -==================
      -
      -  * Initial release
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/LICENSE
      deleted file mode 100644
      index 6c07561b..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/LICENSE
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -(The MIT License)
      -
      -Copyright (c) 2014 Guillermo Rauch 
      -
      -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/README.md
      deleted file mode 100644
      index 9b4fd035..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/README.md
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -# ms.js: miliseconds conversion utility
      -
      -```js
      -ms('2 days')  // 172800000
      -ms('1d')      // 86400000
      -ms('10h')     // 36000000
      -ms('2.5 hrs') // 9000000
      -ms('2h')      // 7200000
      -ms('1m')      // 60000
      -ms('5s')      // 5000
      -ms('100')     // 100
      -```
      -
      -```js
      -ms(60000)             // "1m"
      -ms(2 * 60000)         // "2m"
      -ms(ms('10 hours'))    // "10h"
      -```
      -
      -```js
      -ms(60000, { long: true })             // "1 minute"
      -ms(2 * 60000, { long: true })         // "2 minutes"
      -ms(ms('10 hours'), { long: true })    // "10 hours"
      -```
      -
      -- Node/Browser compatible. Published as [`ms`](https://www.npmjs.org/package/ms) in [NPM](http://nodejs.org/download).
      -- If a number is supplied to `ms`, a string with a unit is returned.
      -- If a string that contains the number is supplied, it returns it as
      -a number (e.g: it returns `100` for `'100'`).
      -- If you pass a string with a number and a valid unit, the number of
      -equivalent ms is returned.
      -
      -## License
      -
      -MIT
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/index.js
      deleted file mode 100644
      index 4f927716..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/index.js
      +++ /dev/null
      @@ -1,125 +0,0 @@
      -/**
      - * Helpers.
      - */
      -
      -var s = 1000;
      -var m = s * 60;
      -var h = m * 60;
      -var d = h * 24;
      -var y = d * 365.25;
      -
      -/**
      - * Parse or format the given `val`.
      - *
      - * Options:
      - *
      - *  - `long` verbose formatting [false]
      - *
      - * @param {String|Number} val
      - * @param {Object} options
      - * @return {String|Number}
      - * @api public
      - */
      -
      -module.exports = function(val, options){
      -  options = options || {};
      -  if ('string' == typeof val) return parse(val);
      -  return options.long
      -    ? long(val)
      -    : short(val);
      -};
      -
      -/**
      - * Parse the given `str` and return milliseconds.
      - *
      - * @param {String} str
      - * @return {Number}
      - * @api private
      - */
      -
      -function parse(str) {
      -  str = '' + str;
      -  if (str.length > 10000) return;
      -  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
      -  if (!match) return;
      -  var n = parseFloat(match[1]);
      -  var type = (match[2] || 'ms').toLowerCase();
      -  switch (type) {
      -    case 'years':
      -    case 'year':
      -    case 'yrs':
      -    case 'yr':
      -    case 'y':
      -      return n * y;
      -    case 'days':
      -    case 'day':
      -    case 'd':
      -      return n * d;
      -    case 'hours':
      -    case 'hour':
      -    case 'hrs':
      -    case 'hr':
      -    case 'h':
      -      return n * h;
      -    case 'minutes':
      -    case 'minute':
      -    case 'mins':
      -    case 'min':
      -    case 'm':
      -      return n * m;
      -    case 'seconds':
      -    case 'second':
      -    case 'secs':
      -    case 'sec':
      -    case 's':
      -      return n * s;
      -    case 'milliseconds':
      -    case 'millisecond':
      -    case 'msecs':
      -    case 'msec':
      -    case 'ms':
      -      return n;
      -  }
      -}
      -
      -/**
      - * Short format for `ms`.
      - *
      - * @param {Number} ms
      - * @return {String}
      - * @api private
      - */
      -
      -function short(ms) {
      -  if (ms >= d) return Math.round(ms / d) + 'd';
      -  if (ms >= h) return Math.round(ms / h) + 'h';
      -  if (ms >= m) return Math.round(ms / m) + 'm';
      -  if (ms >= s) return Math.round(ms / s) + 's';
      -  return ms + 'ms';
      -}
      -
      -/**
      - * Long format for `ms`.
      - *
      - * @param {Number} ms
      - * @return {String}
      - * @api private
      - */
      -
      -function long(ms) {
      -  return plural(ms, d, 'day')
      -    || plural(ms, h, 'hour')
      -    || plural(ms, m, 'minute')
      -    || plural(ms, s, 'second')
      -    || ms + ' ms';
      -}
      -
      -/**
      - * Pluralization helper.
      - */
      -
      -function plural(ms, n, name) {
      -  if (ms < n) return;
      -  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
      -  return Math.ceil(ms / n) + ' ' + name + 's';
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/package.json
      deleted file mode 100644
      index c50840b0..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ms/package.json
      +++ /dev/null
      @@ -1,74 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "ms@0.7.1",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/debug"
      -    ]
      -  ],
      -  "_from": "ms@0.7.1",
      -  "_id": "ms@0.7.1",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/ms",
      -  "_nodeVersion": "0.12.2",
      -  "_npmUser": {
      -    "email": "rauchg@gmail.com",
      -    "name": "rauchg"
      -  },
      -  "_npmVersion": "2.7.5",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "ms",
      -    "raw": "ms@0.7.1",
      -    "rawSpec": "0.7.1",
      -    "scope": null,
      -    "spec": "0.7.1",
      -    "type": "version"
      -  },
      -  "_requiredBy": [
      -    "/debug"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
      -  "_shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
      -  "_shrinkwrap": null,
      -  "_spec": "ms@0.7.1",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/debug",
      -  "bugs": {
      -    "url": "https://github.com/guille/ms.js/issues"
      -  },
      -  "component": {
      -    "scripts": {
      -      "ms/index.js": "index.js"
      -    }
      -  },
      -  "dependencies": {},
      -  "description": "Tiny ms conversion utility",
      -  "devDependencies": {
      -    "expect.js": "*",
      -    "mocha": "*",
      -    "serve": "*"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "9cd13c03adbff25b65effde7ce864ee952017098",
      -    "tarball": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz"
      -  },
      -  "gitHead": "713dcf26d9e6fd9dbc95affe7eff9783b7f1b909",
      -  "homepage": "https://github.com/guille/ms.js",
      -  "main": "./index",
      -  "maintainers": [
      -    {
      -      "email": "rauchg@gmail.com",
      -      "name": "rauchg"
      -    }
      -  ],
      -  "name": "ms",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/guille/ms.js.git"
      -  },
      -  "scripts": {},
      -  "version": "0.7.1"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.npmignore
      deleted file mode 100644
      index 3c3629e6..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.npmignore
      +++ /dev/null
      @@ -1 +0,0 @@
      -node_modules
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.travis.yml
      deleted file mode 100644
      index 6e5919de..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/.travis.yml
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -language: node_js
      -node_js:
      -  - "0.10"
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/History.md
      deleted file mode 100644
      index 52f6e858..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/History.md
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -
      -0.1.1 / 2014-06-01
      -==================
      -
      - * update duplexer2 dep
      -
      -0.1.0 / 2014-05-24
      -==================
      -
      - * add optional callback
      -
      -0.0.2 / 2014-02-20 
      -==================
      -
      - * fix infinite loop
      -
      -0.0.1 / 2014-01-15
      -==================
      -
      -* fix error bubbling
      -
      -0.0.0 / 2014-01-13
      -==================
      -
      -* initial release
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Makefile
      deleted file mode 100644
      index d1df0ab3..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Makefile
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -
      -node_modules: package.json
      -	@npm install
      -
      -test:
      -	@./node_modules/.bin/mocha \
      -		--reporter spec \
      -		--timeout 100
      -
      -.PHONY: test
      \ No newline at end of file
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Readme.md
      deleted file mode 100644
      index fe8c221a..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/Readme.md
      +++ /dev/null
      @@ -1,102 +0,0 @@
      -# multipipe
      -
      -A better `Stream#pipe` that creates duplex streams and lets you handle errors in one place.
      -
      -[![build status](https://secure.travis-ci.org/segmentio/multipipe.png)](http://travis-ci.org/segmentio/multipipe)
      -
      -## Example
      -
      -```js
      -var pipe = require('multipipe');
      -
      -// pipe streams
      -var stream = pipe(streamA, streamB, streamC);
      -
      -// centralized error handling
      -stream.on('error', fn);
      -
      -// creates a new stream
      -source.pipe(stream).pipe(dest);
      -
      -// optional callback on finish or error
      -pipe(streamA, streamB, streamC, function(err){
      -  // ...
      -});
      -```
      -
      -## Duplex streams
      -
      -  Write to the pipe and you'll really write to the first stream, read from the pipe and you'll read from the last stream.
      -
      -```js
      -var stream = pipe(a, b, c);
      -
      -source
      -  .pipe(stream)
      -  .pipe(destination);
      -```
      -
      -  In this example the flow of data is:
      -
      -  * source ->
      -  * a ->
      -  * b ->
      -  * c ->
      -  * destination
      -
      -## Error handling
      -
      -  Each `pipe` forwards the errors the streams it wraps emit, so you have one central place to handle errors:
      -
      -```js
      -var stream = pipe(a, b, c);
      -
      -stream.on('error', function(err){
      -  // called three times
      -});
      -
      -a.emit('error', new Error);
      -b.emit('error', new Error);
      -c.emit('error', new Error);
      -```
      -
      -## API
      -
      -### pipe(stream, ...)
      -
      -Pass a variable number of streams and each will be piped to the next one.
      -
      -A stream will be returned that wraps passed in streams in a way that errors will be forwarded and you can write to and/or read from it.
      -
      -Pass a function as last argument to be called on `error` or `finish` of the last stream.
      -
      -## Installation
      -
      -```bash
      -$ npm install multipipe
      -```
      -
      -## License
      -
      -The MIT License (MIT)
      -
      -Copyright (c) 2014 Segment.io Inc. <friends@segment.io>
      -Copyright (c) 2014 Julian Gruber <julian@juliangruber.com>
      -
      -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/index.js
      deleted file mode 100644
      index 5e406db8..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/index.js
      +++ /dev/null
      @@ -1,72 +0,0 @@
      -
      -/**
      - * Module dependencies.
      - */
      -
      -var duplexer = require('duplexer2');
      -var Stream = require('stream');
      -
      -/**
      - * Slice reference.
      - */
      -
      -var slice = [].slice;
      -
      -/**
      - * Duplexer options.
      - */
      -
      -var opts = {
      -  bubbleErrors: false
      -};
      -
      -/**
      - * Expose `pipe`.
      - */
      -
      -module.exports = pipe;
      -
      -/**
      - * Pipe.
      - *
      - * @param {Stream,...,[Function]}
      - * @return {Stream}
      - * @api public
      - */
      -
      -function pipe(){
      -  if (arguments.length == 1) return arguments[0];
      -  var streams = slice.call(arguments);
      -  var cb;
      -  if ('function' == typeof streams[streams.length - 1]) {
      -    cb = streams.splice(-1)[0];
      -  }
      -  var first = streams[0];
      -  var last = streams[streams.length - 1];
      -  var ret;
      -  
      -  if (first.writable && last.readable) ret = duplexer(opts, first, last);
      -  else if (first.writable) ret = first;
      -  else if (last.readable) ret = last;
      -  else ret = new Stream;
      -  
      -  streams.forEach(function(stream, i){
      -    var next = streams[i+1];
      -    if (next) stream.pipe(next);
      -    if (stream != ret) stream.on('error', ret.emit.bind(ret, 'error'));
      -  });
      -
      -  if (cb) {
      -    var ended = false;
      -    ret.on('error', end);
      -    last.on('finish', end);
      -    function end(err){
      -      if (ended) return;
      -      ended = true;
      -      cb(err);
      -    }
      -  }
      -
      -  return ret;
      -}
      -
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/package.json
      deleted file mode 100644
      index 7d65aa64..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/package.json
      +++ /dev/null
      @@ -1,71 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "multipipe@^0.1.2",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util"
      -    ]
      -  ],
      -  "_from": "multipipe@>=0.1.2 <0.2.0",
      -  "_id": "multipipe@0.1.2",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/multipipe",
      -  "_nodeVersion": "0.10.32",
      -  "_npmUser": {
      -    "email": "julian@juliangruber.com",
      -    "name": "juliangruber"
      -  },
      -  "_npmVersion": "2.1.5",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "multipipe",
      -    "raw": "multipipe@^0.1.2",
      -    "rawSpec": "^0.1.2",
      -    "scope": null,
      -    "spec": ">=0.1.2 <0.2.0",
      -    "type": "range"
      -  },
      -  "_requiredBy": [
      -    "/gulp-util"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
      -  "_shasum": "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b",
      -  "_shrinkwrap": null,
      -  "_spec": "multipipe@^0.1.2",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util",
      -  "bugs": {
      -    "url": "https://github.com/juliangruber/multipipe/issues"
      -  },
      -  "dependencies": {
      -    "duplexer2": "0.0.2"
      -  },
      -  "description": "pipe streams with centralized error handling",
      -  "devDependencies": {
      -    "mocha": "~1.17.0"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "2a8f2ddf70eed564dff2d57f1e1a137d9f05078b",
      -    "tarball": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz"
      -  },
      -  "gitHead": "df434f568b85de914ee7f6ad714343b8736e3315",
      -  "homepage": "https://github.com/juliangruber/multipipe",
      -  "license": "MIT",
      -  "maintainers": [
      -    {
      -      "email": "julian@juliangruber.com",
      -      "name": "juliangruber"
      -    }
      -  ],
      -  "name": "multipipe",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git+https://github.com/juliangruber/multipipe.git"
      -  },
      -  "scripts": {
      -    "test": "make test"
      -  },
      -  "version": "0.1.2"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/test/multipipe.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/test/multipipe.js
      deleted file mode 100644
      index 078d2e03..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/multipipe/test/multipipe.js
      +++ /dev/null
      @@ -1,141 +0,0 @@
      -var assert = require('assert');
      -var pipe = require('..');
      -var Stream = require('stream');
      -
      -describe('pipe(a)', function(){
      -  it('should return a', function(){
      -    var readable = Readable();
      -    var stream = pipe(readable);
      -    assert.equal(stream, readable);
      -  });
      -});
      -
      -describe('pipe(a, b, c)', function(){
      -  it('should pipe internally', function(done){
      -    pipe(Readable(), Transform(), Writable(done));
      -  });
      -  
      -  it('should be writable', function(done){
      -    var stream = pipe(Transform(), Writable(done));
      -    assert(stream.writable);
      -    Readable().pipe(stream);
      -  });
      -
      -  it('should be readable', function(done){
      -    var stream = pipe(Readable(), Transform());
      -    assert(stream.readable);
      -    stream.pipe(Writable(done));
      -  });
      -  
      -  it('should be readable and writable', function(done){
      -    var stream = pipe(Transform(), Transform());
      -    assert(stream.readable);
      -    assert(stream.writable);
      -    Readable()
      -    .pipe(stream)
      -    .pipe(Writable(done));
      -  });
      - 
      -  describe('errors', function(){
      -    it('should reemit', function(done){
      -      var a = Transform();
      -      var b = Transform();
      -      var c = Transform();
      -      var stream = pipe(a, b, c);
      -      var err = new Error;
      -      var i = 0;
      -      
      -      stream.on('error', function(_err){
      -        i++;
      -        assert.equal(_err, err);
      -        assert(i <= 3);
      -        if (i == 3) done();
      -      });
      -      
      -      a.emit('error', err);
      -      b.emit('error', err);
      -      c.emit('error', err);
      -    });
      -
      -    it('should not reemit endlessly', function(done){
      -      var a = Transform();
      -      var b = Transform();
      -      var c = Transform();
      -      c.readable = false;
      -      var stream = pipe(a, b, c);
      -      var err = new Error;
      -      var i = 0;
      -      
      -      stream.on('error', function(_err){
      -        i++;
      -        assert.equal(_err, err);
      -        assert(i <= 3);
      -        if (i == 3) done();
      -      });
      -      
      -      a.emit('error', err);
      -      b.emit('error', err);
      -      c.emit('error', err);
      -    });
      -  });
      -});
      -
      -describe('pipe(a, b, c, fn)', function(){
      -  it('should call on finish', function(done){
      -    var finished = false;
      -    var a = Readable();
      -    var b = Transform();
      -    var c = Writable(function(){
      -      finished = true;
      -    });
      -
      -    pipe(a, b, c, function(err){
      -      assert(!err);
      -      assert(finished);
      -      done();
      -    });
      -  });
      -
      -  it('should call with error once', function(done){
      -    var a = Readable();
      -    var b = Transform();
      -    var c = Writable();
      -    var err = new Error;
      -
      -    pipe(a, b, c, function(err){
      -      assert(err);
      -      done();
      -    });
      -
      -    a.emit('error', err);
      -    b.emit('error', err);
      -    c.emit('error', err);
      -  });
      -});
      -
      -function Readable(){
      -  var readable = new Stream.Readable({ objectMode: true });
      -  readable._read = function(){
      -    this.push('a');
      -    this.push(null);
      -  };
      -  return readable;
      -}
      -
      -function Transform(){
      -  var transform = new Stream.Transform({ objectMode: true });
      -  transform._transform = function(chunk, _, done){
      -    done(null, chunk.toUpperCase());
      -  };
      -  return transform;
      -}
      -
      -function Writable(cb){
      -  var writable = new Stream.Writable({ objectMode: true });
      -  writable._write = function(chunk, _, done){
      -    assert.equal(chunk, 'A');
      -    done();
      -    cb();
      -  };
      -  return writable;
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/.npmignore
      deleted file mode 100644
      index 88861393..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/.npmignore
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -node_modules
      -.DS_Store
      -.nyc_output
      -coverage
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/LICENSE.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/LICENSE.md
      deleted file mode 100644
      index 652609b3..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/LICENSE.md
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -The MIT License (MIT)
      -
      -Copyright (c)  2010-2012 Robert Kieffer 
      -
      -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/README.md
      deleted file mode 100644
      index 5cd85550..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/README.md
      +++ /dev/null
      @@ -1,254 +0,0 @@
      -# node-uuid
      -
      -Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.
      -
      -Features:
      -
      -* Generate RFC4122 version 1 or version 4 UUIDs
      -* Runs in node.js and all browsers.
      -* Registered as a [ComponentJS](https://github.com/component/component) [component](https://github.com/component/component/wiki/Components) ('broofa/node-uuid').
      -* Cryptographically strong random # generation
      -  * `crypto.randomBytes(n)` in node.js
      -  * `window.crypto.getRandomValues(ta)` in [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues#Browser_Compatibility)
      -* 1.1K minified and gzip'ed  (Want something smaller?  Check this [crazy shit](https://gist.github.com/982883) out! )
      -* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)
      -* Comes with a Command Line Interface for generating uuids on the command line
      -
      -## Getting Started
      -
      -Install it in your browser:
      -
      -```html
      -
      -```
      -
      -Or in node.js:
      -
      -```
      -npm install node-uuid
      -```
      -
      -```javascript
      -var uuid = require('node-uuid');
      -```
      -
      -Then create some ids ...
      -
      -```javascript
      -// Generate a v1 (time-based) id
      -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
      -
      -// Generate a v4 (random) id
      -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'
      -```
      -
      -## API
      -
      -### uuid.v1([`options` [, `buffer` [, `offset`]]])
      -
      -Generate and return a RFC4122 v1 (timestamp-based) UUID.
      -
      -* `options` - (Object) Optional uuid state to apply. Properties may include:
      -
      -  * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID.  See note 1.
      -  * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence.  Default: An internally maintained clockseq is used.
      -  * `msecs` - (Number | Date) Time in milliseconds since unix Epoch.  Default: The current time is used.
      -  * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.
      -
      -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
      -* `offset` - (Number) Starting index in `buffer` at which to begin writing.
      -
      -Returns `buffer`, if specified, otherwise the string form of the UUID
      -
      -Notes:
      -
      -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)
      -
      -Example: Generate string UUID with fully-specified options
      -
      -```javascript
      -uuid.v1({
      -  node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
      -  clockseq: 0x1234,
      -  msecs: new Date('2011-11-01').getTime(),
      -  nsecs: 5678
      -});   // -> "710b962e-041c-11e1-9234-0123456789ab"
      -```
      -
      -Example: In-place generation of two binary IDs
      -
      -```javascript
      -// Generate two ids in an array
      -var arr = new Array(32); // -> []
      -uuid.v1(null, arr, 0);   // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]
      -uuid.v1(null, arr, 16);  // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]
      -
      -// Optionally use uuid.unparse() to get stringify the ids
      -uuid.unparse(buffer);    // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'
      -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'
      -```
      -
      -### uuid.v4([`options` [, `buffer` [, `offset`]]])
      -
      -Generate and return a RFC4122 v4 UUID.
      -
      -* `options` - (Object) Optional uuid state to apply. Properties may include:
      -
      -  * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values
      -  * `rng` - (Function) Random # generator to use.  Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.
      -
      -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
      -* `offset` - (Number) Starting index in `buffer` at which to begin writing.
      -
      -Returns `buffer`, if specified, otherwise the string form of the UUID
      -
      -Example: Generate string UUID with fully-specified options
      -
      -```javascript
      -uuid.v4({
      -  random: [
      -    0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,
      -    0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36
      -  ]
      -});
      -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836"
      -```
      -
      -Example: Generate two IDs in a single buffer
      -
      -```javascript
      -var buffer = new Array(32); // (or 'new Buffer' in node.js)
      -uuid.v4(null, buffer, 0);
      -uuid.v4(null, buffer, 16);
      -```
      -
      -### uuid.parse(id[, buffer[, offset]])
      -### uuid.unparse(buffer[, offset])
      -
      -Parse and unparse UUIDs
      -
      -  * `id` - (String) UUID(-like) string
      -  * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used
      -  * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0
      -
      -Example parsing and unparsing a UUID string
      -
      -```javascript
      -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> 
      -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'
      -```
      -
      -### uuid.noConflict()
      -
      -(Browsers only) Set `uuid` property back to it's previous value.
      -
      -Returns the node-uuid object.
      -
      -Example:
      -
      -```javascript
      -var myUuid = uuid.noConflict();
      -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
      -```
      -
      -## Deprecated APIs
      -
      -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.
      -
      -### uuid([format [, buffer [, offset]]])
      -
      -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).
      -
      -### uuid.BufferClass
      -
      -The class of container created when generating binary uuid data if no buffer argument is specified.  This is expected to go away, with no replacement API.
      -
      -## Command Line Interface
      -
      -To use the executable, it's probably best to install this library globally.
      -
      -`npm install -g node-uuid`
      -
      -Usage:
      -
      -```
      -USAGE: uuid [version] [options]
      -
      -
      -options:
      -
      ---help                     Display this message and exit
      -```
      -
      -`version` must be an RFC4122 version that is supported by this library, which is currently version 1 and version 4 (denoted by "v1" and "v4", respectively). `version` defaults to version 4 when not supplied.
      -
      -### Examples
      -
      -```
      -> uuid
      -3a91f950-dec8-4688-ba14-5b7bbfc7a563
      -```
      -
      -```
      -> uuid v1
      -9d0b43e0-7696-11e3-964b-250efa37a98e
      -```
      -
      -```
      -> uuid v4
      -6790ac7c-24ac-4f98-8464-42f6d98a53ae
      -```
      -
      -## Testing
      -
      -In node.js
      -
      -```
      -npm test
      -```
      -
      -In Browser
      -
      -```
      -open test/test.html
      -```
      -
      -### Benchmarking
      -
      -Requires node.js
      -
      -```
      -npm install uuid uuid-js
      -node benchmark/benchmark.js
      -```
      -
      -For a more complete discussion of node-uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/node-uuid/wiki/Benchmark)
      -
      -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).
      -
      -## Release notes
      -
      -### 1.4.6
      -
      -* Properly detect node crypto and whatwg crypto
      -* Workaround phantomjs/browserify bug
      -* Explicit check for `window` rather implicit this-global
      -* Issue warning if Math.random() is being used
      -* "use strict";
      -* A few jshint / stylistic updates (=== and such)
      -
      -### 1.4.0
      -
      -* Improved module context detection
      -* Removed public RNG functions
      -
      -### 1.3.2
      -
      -* Improve tests and handling of v1() options (Issue #24)
      -* Expose RNG option to allow for perf testing with different generators
      -
      -### 1.3.0
      -
      -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
      -* Support for node.js crypto API
      -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/README.md
      deleted file mode 100644
      index aaeb2ea0..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/README.md
      +++ /dev/null
      @@ -1,53 +0,0 @@
      -# node-uuid Benchmarks
      -
      -### Results
      -
      -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark
      -
      -### Run them yourself
      -
      -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`.
      -
      -To prepare and run the benchmark issue;
      -
      -```
      -npm install uuid uuid-js
      -node benchmark/benchmark.js
      -```
      -
      -You'll see an output like this one:
      -
      -```
      -# v4
      -nodeuuid.v4(): 854700 uuids/second
      -nodeuuid.v4('binary'): 788643 uuids/second
      -nodeuuid.v4('binary', buffer): 1336898 uuids/second
      -uuid(): 479386 uuids/second
      -uuid('binary'): 582072 uuids/second
      -uuidjs.create(4): 312304 uuids/second
      -
      -# v1
      -nodeuuid.v1(): 938086 uuids/second
      -nodeuuid.v1('binary'): 683060 uuids/second
      -nodeuuid.v1('binary', buffer): 1644736 uuids/second
      -uuidjs.create(1): 190621 uuids/second
      -```
      -
      -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library.
      -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK.
      -
      -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file:
      -
      -```
      -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done;
      -```
      -
      -If you're interested in how performance varies between different node versions, you can issue the above command multiple times.
      -
      -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot:
      -
      -```
      -(cd benchmark/ && ./bench.sh)
      -```
      -
      -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then.
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.gnu b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.gnu
      deleted file mode 100644
      index a342fbbe..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.gnu
      +++ /dev/null
      @@ -1,174 +0,0 @@
      -#!/opt/local/bin/gnuplot -persist
      -#
      -#    
      -#    	G N U P L O T
      -#    	Version 4.4 patchlevel 3
      -#    	last modified March 2011
      -#    	System: Darwin 10.8.0
      -#    
      -#    	Copyright (C) 1986-1993, 1998, 2004, 2007-2010
      -#    	Thomas Williams, Colin Kelley and many others
      -#    
      -#    	gnuplot home:     http://www.gnuplot.info
      -#    	faq, bugs, etc:   type "help seeking-assistance"
      -#    	immediate help:   type "help"
      -#    	plot window:      hit 'h'
      -set terminal postscript eps noenhanced defaultplex \
      - leveldefault color colortext \
      - solid linewidth 1.2 butt noclip \
      - palfuncparam 2000,0.003 \
      - "Helvetica" 14 
      -set output 'bench.eps'
      -unset clip points
      -set clip one
      -unset clip two
      -set bar 1.000000 front
      -set border 31 front linetype -1 linewidth 1.000
      -set xdata
      -set ydata
      -set zdata
      -set x2data
      -set y2data
      -set timefmt x "%d/%m/%y,%H:%M"
      -set timefmt y "%d/%m/%y,%H:%M"
      -set timefmt z "%d/%m/%y,%H:%M"
      -set timefmt x2 "%d/%m/%y,%H:%M"
      -set timefmt y2 "%d/%m/%y,%H:%M"
      -set timefmt cb "%d/%m/%y,%H:%M"
      -set boxwidth
      -set style fill  empty border
      -set style rectangle back fc lt -3 fillstyle   solid 1.00 border lt -1
      -set style circle radius graph 0.02, first 0, 0 
      -set dummy x,y
      -set format x "% g"
      -set format y "% g"
      -set format x2 "% g"
      -set format y2 "% g"
      -set format z "% g"
      -set format cb "% g"
      -set angles radians
      -unset grid
      -set key title ""
      -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox
      -set key noinvert samplen 4 spacing 1 width 0 height 0 
      -set key maxcolumns 2 maxrows 0
      -unset label
      -unset arrow
      -set style increment default
      -unset style line
      -set style line 1  linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0
      -unset style arrow
      -set style histogram clustered gap 2 title  offset character 0, 0, 0
      -unset logscale
      -set offsets graph 0.05, 0.15, 0, 0
      -set pointsize 1.5
      -set pointintervalbox 1
      -set encoding default
      -unset polar
      -unset parametric
      -unset decimalsign
      -set view 60, 30, 1, 1
      -set samples 100, 100
      -set isosamples 10, 10
      -set surface
      -unset contour
      -set clabel '%8.3g'
      -set mapping cartesian
      -set datafile separator whitespace
      -unset hidden3d
      -set cntrparam order 4
      -set cntrparam linear
      -set cntrparam levels auto 5
      -set cntrparam points 5
      -set size ratio 0 1,1
      -set origin 0,0
      -set style data points
      -set style function lines
      -set xzeroaxis linetype -2 linewidth 1.000
      -set yzeroaxis linetype -2 linewidth 1.000
      -set zzeroaxis linetype -2 linewidth 1.000
      -set x2zeroaxis linetype -2 linewidth 1.000
      -set y2zeroaxis linetype -2 linewidth 1.000
      -set ticslevel 0.5
      -set mxtics default
      -set mytics default
      -set mztics default
      -set mx2tics default
      -set my2tics default
      -set mcbtics default
      -set xtics border in scale 1,0.5 mirror norotate  offset character 0, 0, 0
      -set xtics  norangelimit
      -set xtics   ()
      -set ytics border in scale 1,0.5 mirror norotate  offset character 0, 0, 0
      -set ytics autofreq  norangelimit
      -set ztics border in scale 1,0.5 nomirror norotate  offset character 0, 0, 0
      -set ztics autofreq  norangelimit
      -set nox2tics
      -set noy2tics
      -set cbtics border in scale 1,0.5 mirror norotate  offset character 0, 0, 0
      -set cbtics autofreq  norangelimit
      -set title "" 
      -set title  offset character 0, 0, 0 font "" norotate
      -set timestamp bottom 
      -set timestamp "" 
      -set timestamp  offset character 0, 0, 0 font "" norotate
      -set rrange [ * : * ] noreverse nowriteback  # (currently [8.98847e+307:-8.98847e+307] )
      -set autoscale rfixmin
      -set autoscale rfixmax
      -set trange [ * : * ] noreverse nowriteback  # (currently [-5.00000:5.00000] )
      -set autoscale tfixmin
      -set autoscale tfixmax
      -set urange [ * : * ] noreverse nowriteback  # (currently [-10.0000:10.0000] )
      -set autoscale ufixmin
      -set autoscale ufixmax
      -set vrange [ * : * ] noreverse nowriteback  # (currently [-10.0000:10.0000] )
      -set autoscale vfixmin
      -set autoscale vfixmax
      -set xlabel "" 
      -set xlabel  offset character 0, 0, 0 font "" textcolor lt -1 norotate
      -set x2label "" 
      -set x2label  offset character 0, 0, 0 font "" textcolor lt -1 norotate
      -set xrange [ * : * ] noreverse nowriteback  # (currently [-0.150000:3.15000] )
      -set autoscale xfixmin
      -set autoscale xfixmax
      -set x2range [ * : * ] noreverse nowriteback  # (currently [0.00000:3.00000] )
      -set autoscale x2fixmin
      -set autoscale x2fixmax
      -set ylabel "" 
      -set ylabel  offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
      -set y2label "" 
      -set y2label  offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
      -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback  # (currently [:] )
      -set autoscale yfixmin
      -set autoscale yfixmax
      -set y2range [ * : * ] noreverse nowriteback  # (currently [0.00000:1.90000e+06] )
      -set autoscale y2fixmin
      -set autoscale y2fixmax
      -set zlabel "" 
      -set zlabel  offset character 0, 0, 0 font "" textcolor lt -1 norotate
      -set zrange [ * : * ] noreverse nowriteback  # (currently [-10.0000:10.0000] )
      -set autoscale zfixmin
      -set autoscale zfixmax
      -set cblabel "" 
      -set cblabel  offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270
      -set cbrange [ * : * ] noreverse nowriteback  # (currently [8.98847e+307:-8.98847e+307] )
      -set autoscale cbfixmin
      -set autoscale cbfixmax
      -set zero 1e-08
      -set lmargin  -1
      -set bmargin  -1
      -set rmargin  -1
      -set tmargin  -1
      -set pm3d explicit at s
      -set pm3d scansautomatic
      -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean
      -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB 
      -set palette rgbformulae 7, 5, 15
      -set colorbox default
      -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault
      -set loadpath 
      -set fontpath 
      -set fit noerrorvariables
      -GNUTERM = "aqua"
      -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2
      -#    EOF
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.sh b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.sh
      deleted file mode 100755
      index d870a0cb..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/bench.sh
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -#!/bin/bash
      -
      -# for a given node version run:
      -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done;
      -
      -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte')
      -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es)
      -INDICES=(2 3 2 3 2 2 2 2 2)
      -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " )
      -TMPJOIN="tmp_join"
      -OUTPUT="bench_results.txt"
      -
      -for I in ${!FILES[*]}; do
      -  F=${FILES[$I]}
      -  P=${PATTERNS[$I]}
      -  INDEX=${INDICES[$I]}
      -  echo "version $F" > $F
      -  for V in $VERSIONS; do
      -    (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F
      -  done
      -  if [ $I == 0 ]; then
      -    cat $F > $TMPJOIN
      -  else
      -    join $TMPJOIN $F > $OUTPUT
      -    cp $OUTPUT $TMPJOIN
      -  fi
      -  rm $F
      -done
      -
      -rm $TMPJOIN
      -
      -gnuplot bench.gnu
      -convert -density 200 -resize 800x560 -flatten bench.eps bench.png
      -rm bench.eps
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark-native.c b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark-native.c
      deleted file mode 100644
      index dbfc75f6..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark-native.c
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -/*
      -Test performance of native C UUID generation
      -
      -To Compile: cc -luuid benchmark-native.c -o benchmark-native
      -*/
      -
      -#include 
      -#include 
      -#include 
      -#include 
      -
      -int main() {
      -  uuid_t myid;
      -  char buf[36+1];
      -  int i;
      -  struct timeval t;
      -  double start, finish;
      -
      -  gettimeofday(&t, NULL);
      -  start = t.tv_sec + t.tv_usec/1e6;
      -
      -  int n = 2e5;
      -  for (i = 0; i < n; i++) {
      -    uuid_generate(myid);
      -    uuid_unparse(myid, buf);
      -  }
      -
      -  gettimeofday(&t, NULL);
      -  finish = t.tv_sec + t.tv_usec/1e6;
      -  double dur = finish - start;
      -
      -  printf("%d uuids/sec", (int)(n/dur));
      -  return 0;
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark.js
      deleted file mode 100644
      index 40e6efbe..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/benchmark/benchmark.js
      +++ /dev/null
      @@ -1,84 +0,0 @@
      -try {
      -  var nodeuuid = require('../uuid');
      -} catch (e) {
      -  console.error('node-uuid require failed - skipping tests');
      -}
      -
      -try {
      -  var uuid = require('uuid');
      -} catch (e) {
      -  console.error('uuid require failed - skipping tests');
      -}
      -
      -try {
      -  var uuidjs = require('uuid-js');
      -} catch (e) {
      -  console.error('uuid-js require failed - skipping tests');
      -}
      -
      -var N = 5e5;
      -
      -function rate(msg, t) {
      -  console.log(msg + ': ' +
      -    (N / (Date.now() - t) * 1e3 | 0) +
      -    ' uuids/second');
      -}
      -
      -console.log('# v4');
      -
      -// node-uuid - string form
      -if (nodeuuid) {
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4();
      -  rate('nodeuuid.v4() - using node.js crypto RNG', t);
      -
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG});
      -  rate('nodeuuid.v4() - using Math.random() RNG', t);
      -
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary');
      -  rate('nodeuuid.v4(\'binary\')', t);
      -
      -  var buffer = new nodeuuid.BufferClass(16);
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer);
      -  rate('nodeuuid.v4(\'binary\', buffer)', t);
      -}
      -
      -// libuuid - string form
      -if (uuid) {
      -  for (var i = 0, t = Date.now(); i < N; i++) uuid();
      -  rate('uuid()', t);
      -
      -  for (var i = 0, t = Date.now(); i < N; i++) uuid('binary');
      -  rate('uuid(\'binary\')', t);
      -}
      -
      -// uuid-js - string form
      -if (uuidjs) {
      -  for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4);
      -  rate('uuidjs.create(4)', t);
      -}
      -
      -// 140byte.es
      -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)});
      -rate('140byte.es_v4', t);
      -
      -console.log('');
      -console.log('# v1');
      -
      -// node-uuid - v1 string form
      -if (nodeuuid) {
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1();
      -  rate('nodeuuid.v1()', t);
      -
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary');
      -  rate('nodeuuid.v1(\'binary\')', t);
      -
      -  var buffer = new nodeuuid.BufferClass(16);
      -  for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer);
      -  rate('nodeuuid.v1(\'binary\', buffer)', t);
      -}
      -
      -// uuid-js - v1 string form
      -if (uuidjs) {
      -  for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1);
      -  rate('uuidjs.create(1)', t);
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bin/uuid b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bin/uuid
      deleted file mode 100755
      index f732e991..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bin/uuid
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -#!/usr/bin/env node
      -
      -var path = require('path');
      -var uuid = require(path.join(__dirname, '..'));
      -
      -var arg = process.argv[2];
      -
      -if ('--help' === arg) {
      -  console.log('\n  USAGE: uuid [version] [options]\n\n');
      -  console.log('  options:\n');
      -  console.log('  --help                     Display this message and exit\n');
      -  process.exit(0);
      -}
      -
      -if (null == arg) {
      -  console.log(uuid());
      -  process.exit(0);
      -}
      -
      -if ('v1' !== arg && 'v4' !== arg) {
      -  console.error('Version must be RFC4122 version 1 or version 4, denoted as "v1" or "v4"');
      -  process.exit(1);
      -}
      -
      -console.log(uuid[arg]());
      -process.exit(0);
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bower.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bower.json
      deleted file mode 100644
      index c0925e19..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/bower.json
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -{
      -  "name": "node-uuid",
      -  "version": "1.4.7",
      -  "homepage": "https://github.com/broofa/node-uuid",
      -  "authors": [
      -    "Robert Kieffer "
      -  ],
      -  "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
      -  "main": "uuid.js",
      -  "keywords": [
      -    "uuid",
      -    "gid",
      -    "rfc4122"
      -  ],
      -  "license": "MIT",
      -  "ignore": [
      -    "**/.*",
      -    "node_modules",
      -    "bower_components",
      -    "test",
      -    "tests"
      -  ]
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/component.json
      deleted file mode 100644
      index 3ff46336..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/component.json
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -{
      -  "name": "node-uuid",
      -  "repo": "broofa/node-uuid",
      -  "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
      -  "version": "1.4.7",
      -  "author": "Robert Kieffer ",
      -  "contributors": [
      -    {
      -      "name": "Christoph Tavan ",
      -      "github": "https://github.com/ctavan"
      -    }
      -  ],
      -  "keywords": [
      -    "uuid",
      -    "guid",
      -    "rfc4122"
      -  ],
      -  "dependencies": {},
      -  "development": {},
      -  "main": "uuid.js",
      -  "scripts": [
      -    "uuid.js"
      -  ],
      -  "license": "MIT"
      -}
      \ No newline at end of file
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/package.json
      deleted file mode 100644
      index 8941604c..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/package.json
      +++ /dev/null
      @@ -1,105 +0,0 @@
      -{
      -  "_args": [
      -    [
      -      "node-uuid@~1.4.0",
      -      "/Users/sid/Desktop/code/RustyCode/node_modules/request"
      -    ]
      -  ],
      -  "_from": "node-uuid@>=1.4.0 <1.5.0",
      -  "_id": "node-uuid@1.4.7",
      -  "_inCache": true,
      -  "_installable": true,
      -  "_location": "/node-uuid",
      -  "_nodeVersion": "5.0.0",
      -  "_npmUser": {
      -    "email": "coolaj86@gmail.com",
      -    "name": "coolaj86"
      -  },
      -  "_npmVersion": "3.3.6",
      -  "_phantomChildren": {},
      -  "_requested": {
      -    "name": "node-uuid",
      -    "raw": "node-uuid@~1.4.0",
      -    "rawSpec": "~1.4.0",
      -    "scope": null,
      -    "spec": ">=1.4.0 <1.5.0",
      -    "type": "range"
      -  },
      -  "_requiredBy": [
      -    "/request"
      -  ],
      -  "_resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz",
      -  "_shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f",
      -  "_shrinkwrap": null,
      -  "_spec": "node-uuid@~1.4.0",
      -  "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request",
      -  "author": {
      -    "email": "robert@broofa.com",
      -    "name": "Robert Kieffer"
      -  },
      -  "bin": {
      -    "uuid": "./bin/uuid"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/broofa/node-uuid/issues"
      -  },
      -  "contributors": [
      -    {
      -      "email": "coolaj86@gmail.com",
      -      "name": "AJ ONeal"
      -    },
      -    {
      -      "email": "dev@tavan.de",
      -      "name": "Christoph Tavan"
      -    }
      -  ],
      -  "dependencies": {},
      -  "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.",
      -  "devDependencies": {
      -    "nyc": "^2.2.0"
      -  },
      -  "directories": {},
      -  "dist": {
      -    "shasum": "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f",
      -    "tarball": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
      -  },
      -  "gitHead": "309512573ec1c60143c257157479a20f7f1f51cd",
      -  "homepage": "https://github.com/broofa/node-uuid",
      -  "installable": true,
      -  "keywords": [
      -    "guid",
      -    "rfc4122",
      -    "uuid"
      -  ],
      -  "lib": ".",
      -  "licenses": [
      -    {
      -      "type": "MIT",
      -      "url": "https://raw.github.com/broofa/node-uuid/master/LICENSE.md"
      -    }
      -  ],
      -  "main": "./uuid.js",
      -  "maintainers": [
      -    {
      -      "email": "robert@broofa.com",
      -      "name": "broofa"
      -    },
      -    {
      -      "email": "coolaj86@gmail.com",
      -      "name": "coolaj86"
      -    }
      -  ],
      -  "name": "node-uuid",
      -  "optionalDependencies": {},
      -  "readme": "ERROR: No README data found!",
      -  "repository": {
      -    "type": "git",
      -    "url": "git+https://github.com/broofa/node-uuid.git"
      -  },
      -  "scripts": {
      -    "coverage": "nyc npm test && nyc report",
      -    "test": "node test/test.js"
      -  },
      -  "url": "http://github.com/broofa/node-uuid",
      -  "version": "1.4.7"
      -}
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/compare_v1.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/compare_v1.js
      deleted file mode 100644
      index 05af8221..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/compare_v1.js
      +++ /dev/null
      @@ -1,63 +0,0 @@
      -var assert = require('assert'),
      -    nodeuuid = require('../uuid'),
      -    uuidjs = require('uuid-js'),
      -    libuuid = require('uuid').generate,
      -    util = require('util'),
      -    exec = require('child_process').exec,
      -    os = require('os');
      -
      -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid
      -// On Linux there's uuid-runtime which provides uuidgen
      -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t';
      -
      -function compare(ids) {
      -  console.log(ids);
      -  for (var i = 0; i < ids.length; i++) {
      -    var id = ids[i].split('-');
      -    id = [id[2], id[1], id[0]].join('');
      -    ids[i] = id;
      -  }
      -  var sorted = ([].concat(ids)).sort();
      -
      -  if (sorted.toString() !== ids.toString()) {
      -    console.log('Warning: sorted !== ids');
      -  } else {
      -    console.log('everything in order!');
      -  }
      -}
      -
      -// Test time order of v1 uuids
      -var ids = [];
      -while (ids.length < 10e3) ids.push(nodeuuid.v1());
      -
      -var max = 10;
      -console.log('node-uuid:');
      -ids = [];
      -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1());
      -compare(ids);
      -
      -console.log('');
      -console.log('uuidjs:');
      -ids = [];
      -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString());
      -compare(ids);
      -
      -console.log('');
      -console.log('libuuid:');
      -ids = [];
      -var count = 0;
      -var last = function() {
      -  compare(ids);
      -}
      -var cb = function(err, stdout, stderr) {
      -  ids.push(stdout.substring(0, stdout.length-1));
      -  count++;
      -  if (count < max) {
      -    return next();
      -  }
      -  last();
      -};
      -var next = function() {
      -  exec(uuidCmd, cb);
      -};
      -next();
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.html
      deleted file mode 100644
      index d80326ec..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.html
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -
      -  
      -    
      -    
      -  
      -  
      -    
      -  
      -
      diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.js
      deleted file mode 100644
      index 5f1113d8..00000000
      --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/test/test.js
      +++ /dev/null
      @@ -1,231 +0,0 @@
      -if (!this.uuid) {
      -  // node.js
      -  uuid = require('../uuid');
      -  if (!/_rb/.test(uuid._rng.toString())) {
      -    throw new Error("should use crypto for node.js");
      -  }
      -}
      -
      -//
      -// x-platform log/assert shims
      -//
      -
      -function _log(msg, type) {
      -  type = type || 'log';
      -
      -  if (typeof(document) != 'undefined') {
      -    document.write('
      ' + msg.replace(/\n/g, '
      ') + '
      '); - } - if (typeof(console) != 'undefined') { - var color = { - log: '\033[39m', - warn: '\033[33m', - error: '\033[31m' - }; - console[type](color[type] + msg + color.log); - } -} - -function log(msg) {_log(msg, 'log');} -function warn(msg) {_log(msg, 'warn');} -function error(msg) {_log(msg, 'error');} - -function assert(res, msg) { - if (!res) { - error('FAIL: ' + msg); - } else { - log('Pass: ' + msg); - } -} - -// -// Unit tests -// - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - ids = ids.map(function(id) { - return id.split('-').reverse().join('-'); - }).sort(); - var sorted = ([].concat(ids)).sort(); - - assert(sorted.toString() == ids.toString(), name + ' have expected order'); -} - -// Verify ordering of v1 ids created using default behavior -compare('uuids with current time', [ - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1(), - uuid.v1() -]); - -// Verify ordering of v1 ids created with explicit times -compare('uuids with time option', [ - uuid.v1({msecs: TIME - 10*3600*1000}), - uuid.v1({msecs: TIME - 1}), - uuid.v1({msecs: TIME}), - uuid.v1({msecs: TIME + 1}), - uuid.v1({msecs: TIME + 28*24*3600*1000}) -]); - -assert( - uuid.v1({msecs: TIME}) != uuid.v1({msecs: TIME}), - 'IDs created at same msec are different' -); - -// Verify throw if too many ids created -var thrown = false; -try { - uuid.v1({msecs: TIME, nsecs: 10000}); -} catch (e) { - thrown = true; -} -assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); - -// Verify clock regression bumps clockseq -var uidt = uuid.v1({msecs: TIME}); -var uidtb = uuid.v1({msecs: TIME - 1}); -assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' -); - -// Verify clock regression bumps clockseq -var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); -var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); -assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' -); - -// Verify explicit options produce expected id -var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] -}); -assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); - -// Verify adjacent ids across a msec boundary are 1 time unit apart -var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); -var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - -var before = u0.split('-')[0], after = u1.split('-')[0]; -var dt = parseInt(after, 16) - parseInt(before, 16); -assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); - -// -// Test parse/unparse -// - -id = '00112233445566778899aabbccddeeff'; -assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); -assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); - -// -// Perf tests -// - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/uuid.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/uuid.js deleted file mode 100644 index 89c5b8fb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node-uuid/uuid.js +++ /dev/null @@ -1,272 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -/*global window, require, define */ -(function(_window) { - 'use strict'; - - // Unique ID creation requires a high quality random # generator. We feature - // detect to determine the best RNG source, normalizing to a function that - // returns 128-bits of randomness, since that's what's usually required - var _rng, _mathRNG, _nodeRNG, _whatwgRNG, _previousRoot; - - function setupBrowser() { - // Allow for MSIE11 msCrypto - var _crypto = _window.crypto || _window.msCrypto; - - if (!_rng && _crypto && _crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // - // Moderately fast, high quality - try { - var _rnds8 = new Uint8Array(16); - _whatwgRNG = _rng = function whatwgRNG() { - _crypto.getRandomValues(_rnds8); - return _rnds8; - }; - _rng(); - } catch(e) {} - } - - if (!_rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - _mathRNG = _rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) { r = Math.random() * 0x100000000; } - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; - if ('undefined' !== typeof console && console.warn) { - console.warn("[SECURITY] node-uuid: crypto not usable, falling back to insecure Math.random()"); - } - } - } - - function setupNode() { - // Node.js crypto-based RNG - http://nodejs.org/docs/v0.6.2/api/crypto.html - // - // Moderately fast, high quality - if ('function' === typeof require) { - try { - var _rb = require('crypto').randomBytes; - _nodeRNG = _rng = _rb && function() {return _rb(16);}; - _rng(); - } catch(e) {} - } - } - - if (_window) { - setupBrowser(); - } else { - setupNode(); - } - - // Buffer class to use - var BufferClass = ('function' === typeof Buffer) ? Buffer : Array; - - // Maps for number <-> hex string conversion - var _byteToHex = []; - var _hexToByte = {}; - for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; - } - - // **`parse()` - Parse a UUID into it's component bytes** - function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; - } - - // **`unparse()` - Convert UUID byte array (ala parse()) into a string** - function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; - } - - // **`v1()` - Generate time-based UUID** - // - // Inspired by https://github.com/LiosK/UUID.js - // and http://docs.python.org/library/uuid.html - - // random #'s we need to init node and clockseq - var _seedBytes = _rng(); - - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] - ]; - - // Per 4.2.2, randomize (14 bit) clockseq - var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - - // Previous uuid creation time - var _lastMSecs = 0, _lastNSecs = 0; - - // See https://github.com/broofa/node-uuid for API details - function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = (options.clockseq != null) ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = (options.msecs != null) ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = (options.nsecs != null) ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq == null) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); - } - - // **`v4()` - Generate random UUID** - - // See https://github.com/broofa/node-uuid for API details - function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) === 'string') { - buf = (options === 'binary') ? new BufferClass(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); - } - - // Export public API - var uuid = v4; - uuid.v1 = v1; - uuid.v4 = v4; - uuid.parse = parse; - uuid.unparse = unparse; - uuid.BufferClass = BufferClass; - uuid._rng = _rng; - uuid._mathRNG = _mathRNG; - uuid._nodeRNG = _nodeRNG; - uuid._whatwgRNG = _whatwgRNG; - - if (('undefined' !== typeof module) && module.exports) { - // Publish as node.js module - module.exports = uuid; - } else if (typeof define === 'function' && define.amd) { - // Publish as AMD module - define(function() {return uuid;}); - - - } else { - // Publish as global (in browsers) - _previousRoot = _window.uuid; - - // **`noConflict()` - (browser only) to reset global 'uuid' var** - uuid.noConflict = function() { - _window.uuid = _previousRoot; - return uuid; - }; - - _window.uuid = uuid; - } -})('undefined' !== typeof window ? window : null); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.jscs.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.jscs.json deleted file mode 100644 index 496777b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.jscs.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "additionalRules": [], - - "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], - - "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], - - "disallowSpaceAfterKeywords": [], - - "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, - "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, - "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, - "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, - - "requireSpaceBetweenArguments": true, - - "disallowSpacesInsideParentheses": true, - - "disallowSpacesInsideArrayBrackets": true, - - "disallowQuotedKeysInObjects": "allButReserved", - - "disallowSpaceAfterObjectKeys": true, - - "requireCommaBeforeLineBreak": true, - - "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], - "requireSpaceAfterPrefixUnaryOperators": [], - - "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], - "requireSpaceBeforePostfixUnaryOperators": [], - - "disallowSpaceBeforeBinaryOperators": [], - "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - - "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], - "disallowSpaceAfterBinaryOperators": [], - - "disallowImplicitTypeConversion": ["binary", "string"], - - "disallowKeywords": ["with", "eval"], - - "requireKeywordsOnNewLine": [], - "disallowKeywordsOnNewLine": ["else"], - - "requireLineFeedAtFileEnd": true, - - "disallowTrailingWhitespace": true, - - "disallowTrailingComma": true, - - "excludeFiles": ["node_modules/**", "vendor/**"], - - "disallowMultipleLineStrings": true, - - "requireDotNotation": true, - - "requireParenthesesAroundIIFE": true, - - "validateLineBreaks": "LF", - - "validateQuoteMarks": { - "escape": true, - "mark": "'" - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.npmignore deleted file mode 100644 index f1250e58..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.travis.yml deleted file mode 100644 index 617b9f33..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: node_js -node_js: - - "iojs-v1.1" - - "iojs-v1.0" - - "0.12" - - "0.11" - - "0.10" - - "0.9" - - "0.8" - - "0.6" - - "0.4" -before_install: - - '[ "${TRAVIS_NODE_VERSION}" == "0.6" ] || npm install -g npm@~1.4.6' -matrix: - fast_finish: true - allow_failures: - - node_js: "0.11" - - node_js: "0.9" - - node_js: "0.8" - - node_js: "0.6" - - node_js: "0.4" -sudo: false diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/History.md deleted file mode 100644 index 633fb930..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/History.md +++ /dev/null @@ -1,21 +0,0 @@ -## 1.0.1 / 2013-04-02 - - - Fix tests - - - -## 1.0.0 / 2012-02-28 - - - Add tests for the stable release - - - -## 0.0.2 / 2012-01-11 - - - Add repository to package.json - - - -## 0.0.1 / 2012-01-10 - - - Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/Readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/Readme.md deleted file mode 100644 index df4bf669..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/Readme.md +++ /dev/null @@ -1,77 +0,0 @@ -# node.extend - -A port of jQuery.extend that **actually works** on node.js - -[![Build Status][travis-svg]][travis-url] -[![dependency status][deps-svg]][deps-url] -[![dev dependency status][dev-deps-svg]][dev-deps-url] - -[![browser support][testling-png]][testling-url] - - -## Description - -None of the existing ones on npm really work therefore I ported it myself. - - - -## Usage - -To install this module in your current working directory (which should already contain a package.json), run - -``` -npm install node.extend -``` - -You can additionally just list the module in your [package.json](https://npmjs.org/doc/json.html) and run npm install. - -Then, require this package where you need it: - -``` -var extend = require('node.extend'); -``` - -The syntax for merging two objects is as follows: - -``` -var destObject = extend({}, sourceObject); -// Where sourceObject is the object whose properties will be copied into another. -// NOTE: In this situation, this is not a deep merge. See below on how to handle a deep merge. -``` - -For information about how the clone works internally, view source in lib/extend.js or checkout the doc from [jQuery][] - -### A Note About Deep Merge (avoiding pass-by-reference cloning) - -In order to force a deep merge, when extending an object, you must pass boolean true as the first argument to extend: - -``` -var destObject = extend(true, {}, sourceObject); -// Where sourceObject is the object whose properties will be copied into another. -``` - -See [this article](http://www.jon-carlos.com/2013/is-javascript-call-by-value-or-call-by-reference/) for more information about the need for deep merges in JavaScript. - -## Credit - -- Jordan Harband [@ljharb][] - - - -## License - -Copyright 2011, John Resig -Dual licensed under the MIT or GPL Version 2 licenses. -http://jquery.org/license - -[testling-png]: https://ci.testling.com/dreamerslab/node.extend.png -[testling-url]: https://ci.testling.com/dreamerslab/node.extend -[travis-svg]: https://travis-ci.org/dreamerslab/node.extend.svg -[travis-url]: https://travis-ci.org/dreamerslab/node.extend -[deps-svg]: https://david-dm.org/dreamerslab/node.extend.svg -[deps-url]: https://david-dm.org/dreamerslab/node.extend -[dev-deps-svg]: https://david-dm.org/dreamerslab/node.extend/dev-status.svg -[dev-deps-url]: https://david-dm.org/dreamerslab/node.extend#info=devDependencies -[jQuery]: http://api.jquery.com/jQuery.extend/ -[@ljharb]: https://twitter.com/ljharb - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/index.js deleted file mode 100644 index 52ee121a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/index.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = require('./lib/extend'); - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/lib/extend.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/lib/extend.js deleted file mode 100644 index 90aecd20..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/lib/extend.js +++ /dev/null @@ -1,82 +0,0 @@ -/*! - * node.extend - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * @fileoverview - * Port of jQuery.extend that actually works on node.js - */ -var is = require('is'); - -function extend() { - var target = arguments[0] || {}; - var i = 1; - var length = arguments.length; - var deep = false; - var options, name, src, copy, copy_is_array, clone; - - // Handle a deep copy situation - if (typeof target === 'boolean') { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if (typeof target !== 'object' && !is.fn(target)) { - target = {}; - } - - for (; i < length; i++) { - // Only deal with non-null/undefined values - options = arguments[i] - if (options != null) { - if (typeof options === 'string') { - options = options.split(''); - } - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target === copy) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if (deep && copy && (is.hash(copy) || (copy_is_array = is.array(copy)))) { - if (copy_is_array) { - copy_is_array = false; - clone = src && is.array(src) ? src : []; - } else { - clone = src && is.hash(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (typeof copy !== 'undefined') { - target[name] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -/** - * @public - */ -extend.version = '1.1.3'; - -/** - * Exports module. - */ -module.exports = extend; - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/package.json deleted file mode 100644 index 23ea3533..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/node.extend/package.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "_args": [ - [ - "node.extend@~1.1.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src" - ] - ], - "_from": "node.extend@>=1.1.2 <1.2.0", - "_id": "node.extend@1.1.5", - "_inCache": true, - "_installable": true, - "_location": "/node.extend", - "_nodeVersion": "2.1.0", - "_npmUser": { - "email": "ljharb@gmail.com", - "name": "ljharb" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "node.extend", - "raw": "node.extend@~1.1.2", - "rawSpec": "~1.1.2", - "scope": null, - "spec": ">=1.1.2 <1.2.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-remote-src" - ], - "_resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.5.tgz", - "_shasum": "336bd4d9bf9f8a13028c153e67bf5dc506ac0093", - "_shrinkwrap": null, - "_spec": "node.extend@~1.1.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-remote-src", - "author": { - "email": "ben@dreamerslab.com", - "name": "dreamerslab" - }, - "bugs": { - "url": "https://github.com/dreamerslab/node.extend/issues" - }, - "contributors": [ - { - "name": "Jordan Harband" - } - ], - "dependencies": { - "is": "^3.0.1" - }, - "description": "A port of jQuery.extend that actually works on node.js", - "devDependencies": { - "covert": "^1.1.0", - "jscs": "^1.13.1", - "tape": "^4.0.0" - }, - "directories": {}, - "dist": { - "shasum": "336bd4d9bf9f8a13028c153e67bf5dc506ac0093", - "tarball": "http://registry.npmjs.org/node.extend/-/node.extend-1.1.5.tgz" - }, - "engines": [ - "node >= 0.4" - ], - "gitHead": "e92f03dc1d62d8d18245a4200720f7e181663c0f", - "homepage": "https://github.com/dreamerslab/node.extend#readme", - "keywords": [ - "extend", - "jQuery", - "jQuery extend", - "clone", - "copy", - "inherit" - ], - "license": "(MIT OR GPL-2.0)", - "main": "index", - "maintainers": [ - { - "email": "ben@dreamerslab.com", - "name": "dreamerslab" - }, - { - "email": "ljharb@gmail.com", - "name": "ljharb" - } - ], - "name": "node.extend", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/dreamerslab/node.extend.git" - }, - "scripts": { - "coverage": "covert test/index.js", - "coverage-quiet": "covert test/index.js --quiet", - "lint": "jscs *.js */*.js", - "test": "npm run lint && node test/index.js && npm run coverage-quiet" - }, - "testling": { - "browsers": [ - "iexplore/6.0..latest", - "firefox/3.0..6.0", - "firefox/15.0..latest", - "firefox/nightly", - "chrome/4.0..10.0", - "chrome/20.0..latest", - "chrome/canary", - "opera/10.0..latest", - "opera/next", - "safari/4.0..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ], - "files": "test/index.js" - }, - "version": "1.1.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.npmignore deleted file mode 100644 index 096746c1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules/ \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/AUTHORS b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/AUTHORS deleted file mode 100644 index 10860f72..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/AUTHORS +++ /dev/null @@ -1,4 +0,0 @@ -# Names sorted by how much code was originally theirs. -Isaac Z. Schlueter -Meryn Stol -Robert Kowalski \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/LICENSE deleted file mode 100644 index 9cea2e3c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -This package contains code originally written by Isaac Z. Schlueter. -Used with permission. - -Copyright (c) Meryn Stol ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/README.md deleted file mode 100644 index 526745ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# normalize-package-data [![Build Status](https://travis-ci.org/npm/normalize-package-data.png?branch=master)](https://travis-ci.org/npm/normalize-package-data) - -normalize-package data exports a function that normalizes package metadata. This data is typically found in a package.json file, but in principle could come from any source - for example the npm registry. - -normalize-package-data is used by [read-package-json](https://npmjs.org/package/read-package-json) to normalize the data it reads from a package.json file. In turn, read-package-json is used by [npm](https://npmjs.org/package/npm) and various npm-related tools. - -## Installation - -``` -npm install normalize-package-data -``` - -## Usage - -Basic usage is really simple. You call the function that normalize-package-data exports. Let's call it `normalizeData`. - -```javascript -normalizeData = require('normalize-package-data') -packageData = fs.readFileSync("package.json") -normalizeData(packageData) -// packageData is now normalized -``` - -#### Strict mode - -You may activate strict validation by passing true as the second argument. - -```javascript -normalizeData = require('normalize-package-data') -packageData = fs.readFileSync("package.json") -warnFn = function(msg) { console.error(msg) } -normalizeData(packageData, true) -// packageData is now normalized -``` - -If strict mode is activated, only Semver 2.0 version strings are accepted. Otherwise, Semver 1.0 strings are accepted as well. Packages must have a name, and the name field must not have contain leading or trailing whitespace. - -#### Warnings - -Optionally, you may pass a "warning" function. It gets called whenever the `normalizeData` function encounters something that doesn't look right. It indicates less than perfect input data. - -```javascript -normalizeData = require('normalize-package-data') -packageData = fs.readFileSync("package.json") -warnFn = function(msg) { console.error(msg) } -normalizeData(packageData, warnFn) -// packageData is now normalized. Any number of warnings may have been logged. -``` - -You may combine strict validation with warnings by passing `true` as the second argument, and `warnFn` as third. - -When `private` field is set to `true`, warnings will be suppressed. - -### Potential exceptions - -If the supplied data has an invalid name or version vield, `normalizeData` will throw an error. Depending on where you call `normalizeData`, you may want to catch these errors so can pass them to a callback. - -## What normalization (currently) entails - -* The value of `name` field gets trimmed (unless in strict mode). -* The value of the `version` field gets cleaned by `semver.clean`. See [documentation for the semver module](https://github.com/isaacs/node-semver). -* If `name` and/or `version` fields are missing, they are set to empty strings. -* If `files` field is not an array, it will be removed. -* If `bin` field is a string, then `bin` field will become an object with `name` set to the value of the `name` field, and `bin` set to the original string value. -* If `man` field is a string, it will become an array with the original string as its sole member. -* If `keywords` field is string, it is considered to be a list of keywords separated by one or more white-space characters. It gets converted to an array by splitting on `\s+`. -* All people fields (`author`, `maintainers`, `contributors`) get converted into objects with name, email and url properties. -* If `bundledDependencies` field (a typo) exists and `bundleDependencies` field does not, `bundledDependencies` will get renamed to `bundleDependencies`. -* If the value of any of the dependencies fields (`dependencies`, `devDependencies`, `optionalDependencies`) is a string, it gets converted into an object with familiar `name=>value` pairs. -* The values in `optionalDependencies` get added to `dependencies`. The `optionalDependencies` array is left untouched. -* As of v2: Dependencies that point at known hosted git providers (currently: github, bitbucket, gitlab) will have their URLs canonicalized, but protocols will be preserved. -* As of v2: Dependencies that use shortcuts for hosted git providers (`org/proj`, `github:org/proj`, `bitbucket:org/proj`, `gitlab:org/proj`, `gist:docid`) will have the shortcut left in place. (In the case of github, the `org/proj` form will be expanded to `github:org/proj`.) THIS MARKS A BREAKING CHANGE FROM V1, where the shorcut was previously expanded to a URL. -* If `description` field does not exist, but `readme` field does, then (more or less) the first paragraph of text that's found in the readme is taken as value for `description`. -* If `repository` field is a string, it will become an object with `url` set to the original string value, and `type` set to `"git"`. -* If `repository.url` is not a valid url, but in the style of "[owner-name]/[repo-name]", `repository.url` will be set to git+https://github.com/[owner-name]/[repo-name].git -* If `bugs` field is a string, the value of `bugs` field is changed into an object with `url` set to the original string value. -* If `bugs` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `bugs` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/issues . If the repository field points to a GitHub Gist repo url, the associated http url is chosen. -* If `bugs` field is an object, the resulting value only has email and url properties. If email and url properties are not strings, they are ignored. If no valid values for either email or url is found, bugs field will be removed. -* If `homepage` field is not a string, it will be removed. -* If the url in the `homepage` field does not specify a protocol, then http is assumed. For example, `myproject.org` will be changed to `http://myproject.org`. -* If `homepage` field does not exist, but `repository` field points to a repository hosted on GitHub, the value of the `homepage` field gets set to an url in the form of https://github.com/[owner-name]/[repo-name]/ . If the repository field points to a GitHub Gist repo url, the associated http url is chosen. - -### Rules for name field - -If `name` field is given, the value of the name field must be a string. The string may not: - -* start with a period. -* contain the following characters: `/@\s+%` -* contain and characters that would need to be encoded for use in urls. -* resemble the word `node_modules` or `favicon.ico` (case doesn't matter). - -### Rules for version field - -If `version` field is given, the value of the version field must be a valid *semver* string, as determined by the `semver.valid` method. See [documentation for the semver module](https://github.com/isaacs/node-semver). - -### Rules for license field - -The `license` field should be a valid *SPDX license expression* or one of the special values allowed by [validate-npm-package-license](https://npmjs.com/packages/validate-npm-package-license). See [documentation for the license field in package.json](https://docs.npmjs.com/files/package.json#license). - -## Credits - -This package contains code based on read-package-json written by Isaac Z. Schlueter. Used with permisson. - -## License - -normalize-package-data is released under the [BSD 2-Clause License](http://opensource.org/licenses/MIT). -Copyright (c) 2013 Meryn Stol diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/extract_description.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/extract_description.js deleted file mode 100644 index 83f10aa0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/extract_description.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = extractDescription - -// Extracts description from contents of a readme file in markdown format -function extractDescription (d) { - if (!d) return; - if (d === "ERROR: No README data found!") return; - // the first block of text before the first heading - // that isn't the first line heading - d = d.trim().split('\n') - for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++); - var l = d.length - for (var e = s + 1; e < l && d[e].trim(); e ++); - return d.slice(s, e).join(' ').trim() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/fixer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/fixer.js deleted file mode 100644 index 1409c69c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/fixer.js +++ /dev/null @@ -1,418 +0,0 @@ -var semver = require("semver") -var validateLicense = require('validate-npm-package-license'); -var hostedGitInfo = require("hosted-git-info") -var isBuiltinModule = require("is-builtin-module") -var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = require("./extract_description") -var url = require("url") -var typos = require("./typos") - -var fixer = module.exports = { - // default warning function - warn: function() {}, - - fixRepositoryField: function(data) { - if (data.repositories) { - this.warn("repositories"); - data.repository = data.repositories[0] - } - if (!data.repository) return this.warn("missingRepository") - if (typeof data.repository === "string") { - data.repository = { - type: "git", - url: data.repository - } - } - var r = data.repository.url || "" - if (r) { - var hosted = hostedGitInfo.fromUrl(r) - if (hosted) { - r = data.repository.url - = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString() - } - } - - if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) { - this.warn("brokenGitUrl", r) - } - } - -, fixTypos: function(data) { - Object.keys(typos.topLevel).forEach(function (d) { - if (data.hasOwnProperty(d)) { - this.warn("typo", d, typos.topLevel[d]) - } - }, this) - } - -, fixScriptsField: function(data) { - if (!data.scripts) return - if (typeof data.scripts !== "object") { - this.warn("nonObjectScripts") - delete data.scripts - return - } - Object.keys(data.scripts).forEach(function (k) { - if (typeof data.scripts[k] !== "string") { - this.warn("nonStringScript") - delete data.scripts[k] - } else if (typos.script[k] && !data.scripts[typos.script[k]]) { - this.warn("typo", k, typos.script[k], "scripts") - } - }, this) - } - -, fixFilesField: function(data) { - var files = data.files - if (files && !Array.isArray(files)) { - this.warn("nonArrayFiles") - delete data.files - } else if (data.files) { - data.files = data.files.filter(function(file) { - if (!file || typeof file !== "string") { - this.warn("invalidFilename", file) - return false - } else { - return true - } - }, this) - } - } - -, fixBinField: function(data) { - if (!data.bin) return; - if (typeof data.bin === "string") { - var b = {} - var match - if (match = data.name.match(/^@[^/]+[/](.*)$/)) { - b[match[1]] = data.bin - } else { - b[data.name] = data.bin - } - data.bin = b - } - } - -, fixManField: function(data) { - if (!data.man) return; - if (typeof data.man === "string") { - data.man = [ data.man ] - } - } -, fixBundleDependenciesField: function(data) { - var bdd = "bundledDependencies" - var bd = "bundleDependencies" - if (data[bdd] && !data[bd]) { - data[bd] = data[bdd] - delete data[bdd] - } - if (data[bd] && !Array.isArray(data[bd])) { - this.warn("nonArrayBundleDependencies") - delete data[bd] - } else if (data[bd]) { - data[bd] = data[bd].filter(function(bd) { - if (!bd || typeof bd !== 'string') { - this.warn("nonStringBundleDependency", bd) - return false - } else { - if (!data.dependencies) { - data.dependencies = {} - } - if (!data.dependencies.hasOwnProperty(bd)) { - this.warn("nonDependencyBundleDependency", bd) - data.dependencies[bd] = "*" - } - return true - } - }, this) - } - } - -, fixDependencies: function(data, strict) { - var loose = !strict - objectifyDeps(data, this.warn) - addOptionalDepsToDeps(data, this.warn) - this.fixBundleDependenciesField(data) - - ;['dependencies','devDependencies'].forEach(function(deps) { - if (!(deps in data)) return - if (!data[deps] || typeof data[deps] !== "object") { - this.warn("nonObjectDependencies", deps) - delete data[deps] - return - } - Object.keys(data[deps]).forEach(function (d) { - var r = data[deps][d] - if (typeof r !== 'string') { - this.warn("nonStringDependency", d, JSON.stringify(r)) - delete data[deps][d] - } - var hosted = hostedGitInfo.fromUrl(data[deps][d]) - if (hosted) data[deps][d] = hosted.toString() - }, this) - }, this) - } - -, fixModulesField: function (data) { - if (data.modules) { - this.warn("deprecatedModules") - delete data.modules - } - } - -, fixKeywordsField: function (data) { - if (typeof data.keywords === "string") { - data.keywords = data.keywords.split(/,\s+/) - } - if (data.keywords && !Array.isArray(data.keywords)) { - delete data.keywords - this.warn("nonArrayKeywords") - } else if (data.keywords) { - data.keywords = data.keywords.filter(function(kw) { - if (typeof kw !== "string" || !kw) { - this.warn("nonStringKeyword"); - return false - } else { - return true - } - }, this) - } - } - -, fixVersionField: function(data, strict) { - // allow "loose" semver 1.0 versions in non-strict mode - // enforce strict semver 2.0 compliance in strict mode - var loose = !strict - if (!data.version) { - data.version = "" - return true - } - if (!semver.valid(data.version, loose)) { - throw new Error('Invalid version: "'+ data.version + '"') - } - data.version = semver.clean(data.version, loose) - return true - } - -, fixPeople: function(data) { - modifyPeople(data, unParsePerson) - modifyPeople(data, parsePerson) - } - -, fixNameField: function(data, options) { - if (typeof options === "boolean") options = {strict: options} - else if (typeof options === "undefined") options = {} - var strict = options.strict - if (!data.name && !strict) { - data.name = "" - return - } - if (typeof data.name !== "string") { - throw new Error("name field must be a string.") - } - if (!strict) - data.name = data.name.trim() - ensureValidName(data.name, strict, options.allowLegacyCase) - if (isBuiltinModule(data.name)) - this.warn("conflictingName", data.name) - } - - -, fixDescriptionField: function (data) { - if (data.description && typeof data.description !== 'string') { - this.warn("nonStringDescription") - delete data.description - } - if (data.readme && !data.description) - data.description = extractDescription(data.readme) - if(data.description === undefined) delete data.description; - if (!data.description) this.warn("missingDescription") - } - -, fixReadmeField: function (data) { - if (!data.readme) { - this.warn("missingReadme") - data.readme = "ERROR: No README data found!" - } - } - -, fixBugsField: function(data) { - if (!data.bugs && data.repository && data.repository.url) { - var hosted = hostedGitInfo.fromUrl(data.repository.url) - if(hosted && hosted.bugs()) { - data.bugs = {url: hosted.bugs()} - } - } - else if(data.bugs) { - var emailRe = /^.+@.*\..+$/ - if(typeof data.bugs == "string") { - if(emailRe.test(data.bugs)) - data.bugs = {email:data.bugs} - else if(url.parse(data.bugs).protocol) - data.bugs = {url: data.bugs} - else - this.warn("nonEmailUrlBugsString") - } - else { - bugsTypos(data.bugs, this.warn) - var oldBugs = data.bugs - data.bugs = {} - if(oldBugs.url) { - if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol) - data.bugs.url = oldBugs.url - else - this.warn("nonUrlBugsUrlField") - } - if(oldBugs.email) { - if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email)) - data.bugs.email = oldBugs.email - else - this.warn("nonEmailBugsEmailField") - } - } - if(!data.bugs.email && !data.bugs.url) { - delete data.bugs - this.warn("emptyNormalizedBugs") - } - } - } - -, fixHomepageField: function(data) { - if (!data.homepage && data.repository && data.repository.url) { - var hosted = hostedGitInfo.fromUrl(data.repository.url) - if (hosted && hosted.docs()) data.homepage = hosted.docs() - } - if (!data.homepage) return - - if(typeof data.homepage !== "string") { - this.warn("nonUrlHomepage") - return delete data.homepage - } - if(!url.parse(data.homepage).protocol) { - this.warn("missingProtocolHomepage") - data.homepage = "http://" + data.homepage - } - } - -, fixLicenseField: function(data) { - if (!data.license) { - return this.warn("missingLicense") - } else{ - if ( - typeof(data.license) !== 'string' || - data.license.length < 1 - ) { - this.warn("invalidLicense") - } else { - if (!validateLicense(data.license).validForNewPackages) - this.warn("invalidLicense") - } - } - } -} - -function isValidScopedPackageName(spec) { - if (spec.charAt(0) !== '@') return false - - var rest = spec.slice(1).split('/') - if (rest.length !== 2) return false - - return rest[0] && rest[1] && - rest[0] === encodeURIComponent(rest[0]) && - rest[1] === encodeURIComponent(rest[1]) -} - -function isCorrectlyEncodedName(spec) { - return !spec.match(/[\/@\s\+%:]/) && - spec === encodeURIComponent(spec) -} - -function ensureValidName (name, strict, allowLegacyCase) { - if (name.charAt(0) === "." || - !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) || - (strict && (!allowLegacyCase) && name !== name.toLowerCase()) || - name.toLowerCase() === "node_modules" || - name.toLowerCase() === "favicon.ico") { - throw new Error("Invalid name: " + JSON.stringify(name)) - } -} - -function modifyPeople (data, fn) { - if (data.author) data.author = fn(data.author) - ;["maintainers", "contributors"].forEach(function (set) { - if (!Array.isArray(data[set])) return; - data[set] = data[set].map(fn) - }) - return data -} - -function unParsePerson (person) { - if (typeof person === "string") return person - var name = person.name || "" - var u = person.url || person.web - var url = u ? (" ("+u+")") : "" - var e = person.email || person.mail - var email = e ? (" <"+e+">") : "" - return name+email+url -} - -function parsePerson (person) { - if (typeof person !== "string") return person - var name = person.match(/^([^\(<]+)/) - var url = person.match(/\(([^\)]+)\)/) - var email = person.match(/<([^>]+)>/) - var obj = {} - if (name && name[0].trim()) obj.name = name[0].trim() - if (email) obj.email = email[1]; - if (url) obj.url = url[1]; - return obj -} - -function addOptionalDepsToDeps (data, warn) { - var o = data.optionalDependencies - if (!o) return; - var d = data.dependencies || {} - Object.keys(o).forEach(function (k) { - d[k] = o[k] - }) - data.dependencies = d -} - -function depObjectify (deps, type, warn) { - if (!deps) return {} - if (typeof deps === "string") { - deps = deps.trim().split(/[\n\r\s\t ,]+/) - } - if (!Array.isArray(deps)) return deps - warn("deprecatedArrayDependencies", type) - var o = {} - deps.filter(function (d) { - return typeof d === "string" - }).forEach(function(d) { - d = d.trim().split(/(:?[@\s><=])/) - var dn = d.shift() - var dv = d.join("") - dv = dv.trim() - dv = dv.replace(/^@/, "") - o[dn] = dv - }) - return o -} - -function objectifyDeps (data, warn) { - depTypes.forEach(function (type) { - if (!data[type]) return; - data[type] = depObjectify(data[type], type, warn) - }) -} - -function bugsTypos(bugs, warn) { - if (!bugs) return - Object.keys(bugs).forEach(function (k) { - if (typos.bugs[k]) { - warn("typo", k, typos.bugs[k], "bugs") - bugs[typos.bugs[k]] = bugs[k] - delete bugs[k] - } - }) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/make_warning.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/make_warning.js deleted file mode 100644 index 0f3aad5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/make_warning.js +++ /dev/null @@ -1,23 +0,0 @@ -var util = require("util") -var messages = require("./warning_messages.json") - -module.exports = function() { - var args = Array.prototype.slice.call(arguments, 0) - var warningName = args.shift() - if (warningName == "typo") { - return makeTypoWarning.apply(null,args) - } - else { - var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'" - args.unshift(msgTemplate) - return util.format.apply(null, args) - } -} - -function makeTypoWarning (providedName, probableName, field) { - if (field) { - providedName = field + "['" + providedName + "']" - probableName = field + "['" + probableName + "']" - } - return util.format(messages.typo, providedName, probableName) -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/normalize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/normalize.js deleted file mode 100644 index 7e68c69a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/normalize.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = normalize - -var fixer = require("./fixer") -normalize.fixer = fixer - -var makeWarning = require("./make_warning") - -var fieldsToFix = ['name','version','description','repository','modules','scripts' - ,'files','bin','man','bugs','keywords','readme','homepage','license'] -var otherThingsToFix = ['dependencies','people', 'typos'] - -var thingsToFix = fieldsToFix.map(function(fieldName) { - return ucFirst(fieldName) + "Field" -}) -// two ways to do this in CoffeeScript on only one line, sub-70 chars: -// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field" -// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix) -thingsToFix = thingsToFix.concat(otherThingsToFix) - -function normalize (data, warn, strict) { - if(warn === true) warn = null, strict = true - if(!strict) strict = false - if(!warn || data.private) warn = function(msg) { /* noop */ } - - if (data.scripts && - data.scripts.install === "node-gyp rebuild" && - !data.scripts.preinstall) { - data.gypfile = true - } - fixer.warn = function() { warn(makeWarning.apply(null, arguments)) } - thingsToFix.forEach(function(thingName) { - fixer["fix" + ucFirst(thingName)](data, strict) - }) - data._id = data.name + "@" + data.version -} - -function ucFirst (string) { - return string.charAt(0).toUpperCase() + string.slice(1); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/safe_format.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/safe_format.js deleted file mode 100644 index 08517f14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/safe_format.js +++ /dev/null @@ -1,9 +0,0 @@ -var util = require('util') - -module.exports = function() { - var args = Array.prototype.slice.call(arguments, 0) - args.forEach(function(arg) { - if (!arg) throw new TypeError('Bad arguments.') - }) - return util.format.apply(null, arguments) -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/typos.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/typos.json deleted file mode 100644 index 73590c0a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/typos.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "topLevel": { - "dependancies": "dependencies" - ,"dependecies": "dependencies" - ,"depdenencies": "dependencies" - ,"devEependencies": "devDependencies" - ,"depends": "dependencies" - ,"dev-dependencies": "devDependencies" - ,"devDependences": "devDependencies" - ,"devDepenencies": "devDependencies" - ,"devdependencies": "devDependencies" - ,"repostitory": "repository" - ,"repo": "repository" - ,"prefereGlobal": "preferGlobal" - ,"hompage": "homepage" - ,"hampage": "homepage" - ,"autohr": "author" - ,"autor": "author" - ,"contributers": "contributors" - ,"publicationConfig": "publishConfig" - ,"script": "scripts" - }, - "bugs": { "web": "url", "name": "url" }, - "script": { "server": "start", "tests": "test" } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/warning_messages.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/warning_messages.json deleted file mode 100644 index 5fd19f32..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/lib/warning_messages.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "repositories": "'repositories' (plural) Not supported. Please pick one as the 'repository' field" - ,"missingRepository": "No repository field." - ,"brokenGitUrl": "Probably broken git url: %s" - ,"nonObjectScripts": "scripts must be an object" - ,"nonStringScript": "script values must be string commands" - ,"nonArrayFiles": "Invalid 'files' member" - ,"invalidFilename": "Invalid filename in 'files' list: %s" - ,"nonArrayBundleDependencies": "Invalid 'bundleDependencies' list. Must be array of package names" - ,"nonStringBundleDependency": "Invalid bundleDependencies member: %s" - ,"nonDependencyBundleDependency": "Non-dependency in bundleDependencies: %s" - ,"nonObjectDependencies": "%s field must be an object" - ,"nonStringDependency": "Invalid dependency: %s %s" - ,"deprecatedArrayDependencies": "specifying %s as array is deprecated" - ,"deprecatedModules": "modules field is deprecated" - ,"nonArrayKeywords": "keywords should be an array of strings" - ,"nonStringKeyword": "keywords should be an array of strings" - ,"conflictingName": "%s is also the name of a node core module." - ,"nonStringDescription": "'description' field should be a string" - ,"missingDescription": "No description" - ,"missingReadme": "No README data" - ,"missingLicense": "No license field." - ,"nonEmailUrlBugsString": "Bug string field must be url, email, or {email,url}" - ,"nonUrlBugsUrlField": "bugs.url field must be a string url. Deleted." - ,"nonEmailBugsEmailField": "bugs.email field must be a string email. Deleted." - ,"emptyNormalizedBugs": "Normalized value of bugs field is an empty object. Deleted." - ,"nonUrlHomepage": "homepage field must be a string url. Deleted." - ,"invalidLicense": "license should be a valid SPDX license expression" - ,"missingProtocolHomepage": "homepage field must start with a protocol." - ,"typo": "%s should probably be %s." -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/package.json deleted file mode 100644 index 1ba46747..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "_args": [ - [ - "normalize-package-data@^2.3.4", - "/Users/sid/Desktop/code/RustyCode/node_modules/meow" - ] - ], - "_from": "normalize-package-data@>=2.3.4 <3.0.0", - "_id": "normalize-package-data@2.3.5", - "_inCache": true, - "_installable": true, - "_location": "/normalize-package-data", - "_nodeVersion": "5.0.0", - "_npmUser": { - "email": "me@re-becca.org", - "name": "iarna" - }, - "_npmVersion": "3.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "normalize-package-data", - "raw": "normalize-package-data@^2.3.4", - "rawSpec": "^2.3.4", - "scope": null, - "spec": ">=2.3.4 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/meow", - "/read-pkg" - ], - "_resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "_shasum": "8d924f142960e1777e7ffe170543631cc7cb02df", - "_shrinkwrap": null, - "_spec": "normalize-package-data@^2.3.4", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/meow", - "author": { - "email": "merynstol@gmail.com", - "name": "Meryn Stol" - }, - "bugs": { - "url": "https://github.com/npm/normalize-package-data/issues" - }, - "contributors": [ - { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter" - }, - { - "email": "merynstol@gmail.com", - "name": "Meryn Stol" - }, - { - "email": "rok@kowalski.gd", - "name": "Robert Kowalski" - } - ], - "dependencies": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "description": "Normalizes data that can be found in package.json files.", - "devDependencies": { - "async": "^1.5.0", - "tap": "^2.2.0", - "underscore": "^1.8.3" - }, - "directories": {}, - "dist": { - "shasum": "8d924f142960e1777e7ffe170543631cc7cb02df", - "tarball": "http://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz" - }, - "gitHead": "3dc7756af20b3b1b24c6d75302448ca3659e0a65", - "homepage": "https://github.com/npm/normalize-package-data#readme", - "license": "BSD-2-Clause", - "main": "lib/normalize.js", - "maintainers": [ - { - "email": "me@re-becca.org", - "name": "iarna" - }, - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "merynstol@gmail.com", - "name": "meryn" - }, - { - "email": "ogd@aoaioxxysz.net", - "name": "othiym23" - }, - { - "email": "kat@sykosomatic.org", - "name": "zkat" - } - ], - "name": "normalize-package-data", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/npm/normalize-package-data.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "2.3.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/basic.js deleted file mode 100644 index 12c403ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/basic.js +++ /dev/null @@ -1,34 +0,0 @@ -var tap = require("tap") -var normalize = require("../lib/normalize") -var path = require("path") -var fs = require("fs") - -tap.test("basic test", function (t) { - var p = path.resolve(__dirname, "./fixtures/read-package-json.json") - fs.readFile (p, function (err, contents) { - if (err) throw err; - var originalData = JSON.parse(contents.toString()) - var data = JSON.parse(contents.toString()) - normalize(data) - t.ok(data) - verifyFields(t, data, originalData) - t.end() - }) -}) - -function verifyFields (t, normalized, original) { - t.equal(normalized.version, original.version, "Version field stays same") - t.equal(normalized._id, normalized.name + "@" + normalized.version, "It gets good id.") - t.equal(normalized.name, original.name, "Name stays the same.") - t.type(normalized.author, "object", "author field becomes object") - t.deepEqual(normalized.scripts, original.scripts, "scripts field (object) stays same") - t.equal(normalized.main, original.main) - // optional deps are folded in. - t.deepEqual(normalized.optionalDependencies, - original.optionalDependencies) - t.has(normalized.dependencies, original.optionalDependencies, "opt depedencies are copied into dependencies") - t.has(normalized.dependencies, original.dependencies, "regular depedencies stay in place") - t.deepEqual(normalized.devDependencies, original.devDependencies) - t.type(normalized.bugs, "object", "bugs should become object") - t.equal(normalized.bugs.url, "https://github.com/isaacs/read-package-json/issues") -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/consistency.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/consistency.js deleted file mode 100644 index 4082be25..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/consistency.js +++ /dev/null @@ -1,36 +0,0 @@ -var tap = require("tap") -var normalize = require("../lib/normalize") -var path = require("path") -var fs = require("fs") -var _ = require("underscore") -var async = require("async") - -var data, clonedData -var warn - -tap.test("consistent normalization", function(t) { - path.resolve(__dirname, "./fixtures/read-package-json.json") - fs.readdir (__dirname + "/fixtures", function (err, entries) { - // entries = ['coffee-script.json'] // uncomment to limit to a specific file - verifyConsistency = function(entryName, next) { - warn = function(msg) { - // t.equal("",msg) // uncomment to have some kind of logging of warnings - } - filename = __dirname + "/fixtures/" + entryName - fs.readFile(filename, function(err, contents) { - if (err) return next(err) - data = JSON.parse(contents.toString()) - normalize(data, warn) - clonedData = _.clone(data) - normalize(data, warn) - t.deepEqual(clonedData, data, - "Normalization of " + entryName + " is consistent.") - next(null) - }) // fs.readFile - } // verifyConsistency - async.forEach(entries, verifyConsistency, function(err) { - if (err) throw err - t.end() - }) - }) // fs.readdir -}) // tap.test \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/dependencies.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/dependencies.js deleted file mode 100644 index 3e493ab0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/dependencies.js +++ /dev/null @@ -1,44 +0,0 @@ -var tap = require("tap") -var normalize = require("../lib/normalize") - -var warningMessages = require("../lib/warning_messages.json") -var safeFormat = require("../lib/safe_format") - -tap.test("warn if dependency contains anything else but a string", function(t) { - var a - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize(a={ - dependencies: { "a": 123}, - devDependencies: { "b": 456}, - optionalDependencies: { "c": 789} - }, warn) - - var wanted1 = safeFormat(warningMessages.nonStringDependency, "a", 123) - var wanted2 = safeFormat(warningMessages.nonStringDependency, "b", 456) - var wanted3 = safeFormat(warningMessages.nonStringDependency, "c", 789) - t.ok(~warnings.indexOf(wanted1), wanted1) - t.ok(~warnings.indexOf(wanted2), wanted2) - t.ok(~warnings.indexOf(wanted3), wanted3) - t.end() -}) - -tap.test("warn if bundleDependencies array contains anything else but strings", function(t) { - var a - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize(a={ - bundleDependencies: ["abc", 123, {foo:"bar"}] - }, warn) - - var wanted1 = safeFormat(warningMessages.nonStringBundleDependency, 123) - var wanted2 = safeFormat(warningMessages.nonStringBundleDependency, {foo:"bar"}) - var wanted2 = safeFormat(warningMessages.nonDependencyBundleDependency, "abc") - t.ok(~warnings.indexOf(wanted1), wanted1) - t.ok(~warnings.indexOf(wanted2), wanted2) - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/async.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/async.json deleted file mode 100644 index 5e652a6c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/async.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "async", - "description": "Higher-order functions and common patterns for asynchronous code", - "main": "./lib/async", - "author": "Caolan McMahon", - "version": "0.2.6", - "repository" : { - "type" : "git", - "url" : "http://github.com/caolan/async.git" - }, - "bugs" : { - "url" : "http://github.com/caolan/async/issues" - }, - "licenses" : [ - { - "type" : "MIT", - "url" : "http://github.com/caolan/async/raw/master/LICENSE" - } - ], - "devDependencies": { - "nodeunit": ">0.0.0", - "uglify-js": "1.2.x", - "nodelint": ">0.0.0" - }, - "jam": { - "main": "lib/async.js", - "include": [ - "lib/async.js", - "README.md", - "LICENSE" - ] - }, - "scripts": { - "test": "nodeunit test/test-async.js" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/badscripts.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/badscripts.json deleted file mode 100644 index 25feb4c8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/badscripts.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "bad-scripts-package", - "version": "0.0.1", - "scripts": "foo" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/bcrypt.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/bcrypt.json deleted file mode 100644 index 56e6d81b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/bcrypt.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "bcrypt", - "description": "A bcrypt library for NodeJS.", - "keywords": [ - "bcrypt", - "password", - "auth", - "authentication", - "encryption", - "crypt", - "crypto" - ], - "main": "./bcrypt", - "version": "0.7.5", - "author": "Nick Campbell (http://github.com/ncb000gt)", - "engines": { - "node": ">= 0.6.0" - }, - "repository": { - "type": "git", - "url": "http://github.com/ncb000gt/node.bcrypt.js.git" - }, - "licenses": [ - { - "type": "MIT" - } - ], - "bugs": { - "url": "http://github.com/ncb000gt/node.bcrypt.js/issues" - }, - "scripts": { - "test": "node-gyp configure build && nodeunit test" - }, - "dependencies": { - "bindings": "1.0.0" - }, - "devDependencies": { - "nodeunit": ">=0.6.4" - }, - "contributors": [ - "Antonio Salazar Cardozo (https://github.com/Shadowfiend)", - "Van Nguyen (https://github.com/thegoleffect)", - "David Trejo (https://github.com/dtrejo)", - "Ben Glow (https://github.com/pixelglow)", - "NewITFarmer.com <> (https://github.com/newitfarmer)", - "Alfred Westerveld (https://github.com/alfredwesterveld)", - "Vincent Côté-Roy (https://github.com/vincentcr)", - "Lloyd Hilaiel (https://github.com/lloyd)", - "Roman Shtylman (https://github.com/shtylman)", - "Vadim Graboys (https://github.com/vadimg)", - "Ben Noorduis <> (https://github.com/bnoordhuis)", - "Nate Rajlich (https://github.com/tootallnate)", - "Sean McArthur (https://github.com/seanmonstar)", - "Fanie Oosthuysen (https://github.com/weareu)" - ] -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/coffee-script.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/coffee-script.json deleted file mode 100644 index a0b60a9d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/coffee-script.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "coffee-script", - "description": "Unfancy JavaScript", - "keywords": ["javascript", "language", "coffeescript", "compiler"], - "author": "Jeremy Ashkenas", - "version": "1.6.2", - "licenses": [{ - "type": "MIT", - "url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE" - }], - "engines": { - "node": ">=0.8.0" - }, - "directories" : { - "lib" : "./lib/coffee-script" - }, - "main" : "./lib/coffee-script/coffee-script", - "bin": { - "coffee": "./bin/coffee", - "cake": "./bin/cake" - }, - "scripts": { - "test": "node ./bin/cake test" - }, - "homepage": "http://coffeescript.org", - "bugs": "https://github.com/jashkenas/coffee-script/issues", - "repository": { - "type": "git", - "url": "git://github.com/jashkenas/coffee-script.git" - }, - "devDependencies": { - "uglify-js": "~2.2", - "jison": ">=0.2.0" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/http-server.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/http-server.json deleted file mode 100644 index 90c28863..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/http-server.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "http-server", - "preferGlobal": true, - "version": "0.3.0", - "author": "Nodejitsu ", - "description": "a simple zero-configuration command-line http server", - "contributors": [ - { - "name": "Marak Squires", - "email": "marak@nodejitsu.com" - } - ], - "bin": { - "http-server": "./bin/http-server" - }, - "scripts": { - "start": "node ./bin/http-server", - "test": "vows --spec --isolate", - "predeploy": "echo This will be run before deploying the app", - "postdeploy": "echo This will be run after deploying the app" - }, - "main": "./lib/http-server", - "repository": { - "type": "git", - "url": "https://github.com/nodejitsu/http-server.git" - }, - "keywords": [ - "cli", - "http", - "server" - ], - "dependencies" : { - "colors" : "*", - "flatiron" : "0.1.x", - "optimist" : "0.2.x", - "union" : "0.1.x", - "ecstatic" : "0.1.x", - "plates" : "https://github.com/flatiron/plates/tarball/master" - }, - "analyze": false, - "devDependencies": { - "vows" : "0.5.x", - "request" : "2.1.x" - }, - "bundledDependencies": [ - "union", - "ecstatic" - ], - "license": "MIT", - "engines": { - "node": ">=0.6" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/movefile.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/movefile.json deleted file mode 100644 index 59338757..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/movefile.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "movefile", - "description": "rename implementation working over devices", - "version": "0.2.0", - "author": "yazgazan ", - "main": "./build/Release/movefile", - "keywords": ["move", "file", "rename"], - "repository": "git://github.com/yazgazan/movefile.git", - "directories": { - "lib": "./build/Release/" - }, - "scripts": { - "install": "./node_modules/node-gyp/bin/node-gyp.js configure && ./node_modules/node-gyp/bin/node-gyp.js build" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "node-gyp": "~0.9.1" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/no-description.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/no-description.json deleted file mode 100644 index 9ea70b6b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/no-description.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "foo-bar-package", - "version": "0.0.1" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/node-module_exist.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/node-module_exist.json deleted file mode 100644 index acc05382..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/node-module_exist.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "node-module_exist", - "description": "Find if a NodeJS module is available to require or not", - "version": "0.0.1", - "main": "module_exist.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git@gist.github.com:3135914.git" - }, - "homepage": "https://github.com/FGRibreau", - "author": { - "name": "Francois-Guillaume Ribreau", - "url": "http://fgribreau.com.com/" - }, - "devDependencies": { - "nodeunit": "~0.7.4" - }, - "keywords": [ - "core", - "modules" - ], - "license": "MIT" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/npm.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/npm.json deleted file mode 100644 index 2262b313..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/npm.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "version": "1.2.17", - "name": "npm", - "publishConfig": { - "proprietary-attribs": false - }, - "description": "A package manager for node", - "keywords": [ - "package manager", - "modules", - "install", - "package.json" - ], - "preferGlobal": true, - "config": { - "publishtest": false - }, - "homepage": "https://npmjs.org/doc/", - "author": "Isaac Z. Schlueter (http://blog.izs.me)", - "repository": { - "type": "git", - "url": "https://github.com/isaacs/npm" - }, - "bugs": { - "email": "npm-@googlegroups.com", - "url": "http://github.com/isaacs/npm/issues" - }, - "directories": { - "doc": "./doc", - "man": "./man", - "lib": "./lib", - "bin": "./bin" - }, - "main": "./lib/npm.js", - "bin": "./bin/npm-cli.js", - "dependencies": { - "semver": "~1.1.2", - "ini": "~1.1.0", - "slide": "1", - "abbrev": "~1.0.4", - "graceful-fs": "~1.2.0", - "minimatch": "~0.2.11", - "nopt": "~2.1.1", - "rimraf": "2", - "request": "~2.9", - "which": "1", - "tar": "~0.1.17", - "fstream": "~0.1.22", - "block-stream": "*", - "inherits": "1", - "mkdirp": "~0.3.3", - "read": "~1.0.4", - "lru-cache": "~2.3.0", - "node-gyp": "~0.9.3", - "fstream-npm": "~0.1.3", - "uid-number": "0", - "archy": "0", - "chownr": "0", - "npmlog": "0", - "ansi": "~0.1.2", - "npm-registry-client": "~0.2.18", - "read-package-json": "~0.3.0", - "read-installed": "0", - "glob": "~3.1.21", - "init-package-json": "0.0.6", - "osenv": "0", - "lockfile": "~0.3.0", - "retry": "~0.6.0", - "once": "~1.1.1", - "npmconf": "0", - "opener": "~1.3.0", - "chmodr": "~0.1.0", - "cmd-shim": "~1.1.0" - }, - "bundleDependencies": [ - "semver", - "ini", - "slide", - "abbrev", - "graceful-fs", - "minimatch", - "nopt", - "rimraf", - "request", - "which", - "tar", - "fstream", - "block-stream", - "inherits", - "mkdirp", - "read", - "lru-cache", - "node-gyp", - "fstream-npm", - "uid-number", - "archy", - "chownr", - "npmlog", - "ansi", - "npm-registry-client", - "read-package-json", - "read-installed", - "glob", - "init-package-json", - "osenv", - "lockfile", - "retry", - "once", - "npmconf", - "opener", - "chmodr", - "cmd-shim" - ], - "devDependencies": { - "ronn": "~0.3.6", - "tap": "~0.4.0" - }, - "engines": { - "node": ">=0.6", - "npm": "1" - }, - "scripts": { - "test": "node ./test/run.js && tap test/tap/*.js", - "tap": "tap test/tap/*.js", - "prepublish": "node bin/npm-cli.js prune ; rm -rf test/*/*/node_modules ; make -j4 doc", - "dumpconf": "env | grep npm | sort | uniq", - "echo": "node bin/npm-cli.js" - }, - "licenses": [ - { - "type": "MIT +no-false-attribs", - "url": "https://github.com/isaacs/npm/raw/master/LICENSE" - } - ] -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/read-package-json.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/read-package-json.json deleted file mode 100644 index 7d0dae1d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/read-package-json.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "read-package-json", - "version": "0.1.1", - "author": "Isaac Z. Schlueter (http://blog.izs.me/)", - "description": "The thing npm uses to read package.json files with semantics and defaults and validation", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/read-package-json.git" - }, - "license": "MIT", - "main": "read-json.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "glob": "~3.1.9", - "lru-cache": "~1.1.0", - "semver": "~1.0.14", - "slide": "~1.1.3" - }, - "devDependencies": { - "tap": "~0.2.5" - }, - "optionalDependencies": { - "npmlog": "0", - "graceful-fs": "~1.1.8" - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/request.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/request.json deleted file mode 100644 index 24189a55..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/request.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "request", - "description": "Simplified HTTP request client.", - "tags": [ - "http", - "simple", - "util", - "utility" - ], - "version": "2.16.7", - "author": "Mikeal Rogers ", - "repository": { - "type": "git", - "url": "http://github.com/mikeal/request.git" - }, - "bugs": { - "url": "http://github.com/mikeal/request/issues" - }, - "engines": [ - "node >= 0.8.0" - ], - "main": "index.js", - "dependencies": { - "form-data": "~0.0.3", - "mime": "~1.2.7", - "hawk": "~0.10.2", - "node-uuid": "~1.4.0", - "cookie-jar": "~0.2.0", - "aws-sign": "~0.2.0", - "oauth-sign": "~0.2.0", - "forever-agent": "~0.2.0", - "tunnel-agent": "~0.2.0", - "json-stringify-safe": "~3.0.0", - "qs": "~0.5.4" - }, - "scripts": { - "test": "node tests/run.js" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/underscore.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/underscore.json deleted file mode 100644 index bfc8b3d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/fixtures/underscore.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name" : "underscore", - "description" : "JavaScript's functional programming helper library.", - "homepage" : "http://underscorejs.org", - "keywords" : ["util", "functional", "server", "client", "browser"], - "author" : "Jeremy Ashkenas ", - "repository" : {"type": "git", "url": "git://github.com/documentcloud/underscore.git"}, - "main" : "underscore.js", - "version" : "1.4.4", - "devDependencies": { - "phantomjs": "1.9.0-1" - }, - "scripts": { - "test": "phantomjs test/vendor/runner.js test/index.html?noglobals=true" - }, - "license" : "MIT" -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/github-urls.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/github-urls.js deleted file mode 100644 index da78160a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/github-urls.js +++ /dev/null @@ -1,44 +0,0 @@ -var tap = require("tap") -var normalize = require("../lib/normalize") -var fs = require("fs") -var async = require("async") - -var data -var warn - -tap.test("consistent normalization", function(t) { - var entries = [ - 'read-package-json.json', - 'http-server.json', - "movefile.json", - "node-module_exist.json" - ] - var verifyConsistency = function(entryName, next) { - warn = function(msg) { - // t.equal("",msg) // uncomment to have some kind of logging of warnings - } - var filename = __dirname + "/fixtures/" + entryName - fs.readFile(filename, function(err, contents) { - if (err) return next(err) - data = JSON.parse(contents.toString()) - normalize(data, warn) - if(data.name == "node-module_exist") { - t.same(data.bugs.url, "https://gist.github.com/3135914") - } - if(data.name == "read-package-json") { - t.same(data.bugs.url, "https://github.com/isaacs/read-package-json/issues") - } - if(data.name == "http-server") { - t.same(data.bugs.url, "https://github.com/nodejitsu/http-server/issues") - } - if(data.name == "movefile") { - t.same(data.bugs.url, "https://github.com/yazgazan/movefile/issues") - } - next(null) - }) // fs.readFile - } // verifyConsistency - async.forEach(entries, verifyConsistency, function(err) { - if (err) throw err - t.end() - }) -}) // tap.test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/mixedcase-names.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/mixedcase-names.js deleted file mode 100644 index a62b6993..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/mixedcase-names.js +++ /dev/null @@ -1,32 +0,0 @@ -var test = require('tap').test - -var normalize = require('../') -var fixer = normalize.fixer - -test('mixedcase', function (t) { - t.doesNotThrow(function () { - fixer.fixNameField({name: 'foo'}, true) - }) - - t.doesNotThrow(function () { - fixer.fixNameField({name: 'foo'}, false) - }) - - t.doesNotThrow(function () { - fixer.fixNameField({name: 'foo'}) - }) - - t.throws(function () { - fixer.fixNameField({name: 'Foo'}, true) - }, new Error('Invalid name: "Foo"'), 'should throw an error') - - t.throws(function () { - fixer.fixNameField({name: 'Foo'}, {strict: true}) - }, new Error('Invalid name: "Foo"'), 'should throw an error') - - t.doesNotThrow(function () { - fixer.fixNameField({name: 'Foo'}, {strict: true, allowLegacyCase: true}) - }) - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js deleted file mode 100644 index 3926938b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js +++ /dev/null @@ -1,246 +0,0 @@ -var tap = require("tap") -var fs = require("fs") -var path = require("path") - -var normalize = require("../lib/normalize") -var warningMessages = require("../lib/warning_messages.json") -var safeFormat = require("../lib/safe_format") - -var rpjPath = path.resolve(__dirname,"./fixtures/read-package-json.json") - -tap.test("normalize some package data", function(t) { - var packageData = require(rpjPath) - var warnings = [] - normalize(packageData, function(warning) { - warnings.push(warning) - }) - // there's no readme data in this particular object - t.equal( warnings.length, 1, "There's exactly one warning.") - fs.readFile(rpjPath, function(err, data) { - if(err) throw err - // Various changes have been made - t.notEqual(packageData, JSON.parse(data), "Output is different from input.") - t.end() - }) -}) - -tap.test("runs without passing warning function", function(t) { - var packageData = require(rpjPath) - fs.readFile(rpjPath, function(err, data) { - if(err) throw err - normalize(JSON.parse(data)) - t.ok(true, "If you read this, this means I'm still alive.") - t.end() - }) -}) - -tap.test("empty object", function(t) { - var packageData = {} - var expect = - { name: '', - version: '', - readme: 'ERROR: No README data found!', - _id: '@' } - - var warnings = [] - function warn(m) { - warnings.push(m) - } - normalize(packageData, warn) - t.same(packageData, expect) - t.same(warnings, [ - warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingLicense - ]) - t.end() -}) - -tap.test("core module name", function(t) { - var warnings = [] - function warn(m) { - warnings.push(m) - } - var a - normalize(a={ - name: "http", - readme: "read yourself how about", - homepage: 123, - bugs: "what is this i don't even", - repository: "Hello." - }, warn) - - var expect = [ - safeFormat(warningMessages.conflictingName, 'http'), - warningMessages.nonEmailUrlBugsString, - warningMessages.emptyNormalizedBugs, - warningMessages.nonUrlHomepage, - warningMessages.missingLicense - ] - t.same(warnings, expect) - t.end() -}) - -tap.test("urls required", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize({ - bugs: { - url: "/1", - email: "not an email address" - } - }, warn) - var a - normalize(a={ - readme: "read yourself how about", - homepage: 123, - bugs: "what is this i don't even", - repository: "Hello." - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.nonUrlBugsUrlField, - warningMessages.nonEmailBugsEmailField, - warningMessages.emptyNormalizedBugs, - warningMessages.missingReadme, - warningMessages.missingLicense, - warningMessages.nonEmailUrlBugsString, - warningMessages.emptyNormalizedBugs, - warningMessages.nonUrlHomepage, - warningMessages.missingLicense] - t.same(warnings, expect) - t.end() -}) - -tap.test("homepage field must start with a protocol.", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - var a - normalize(a={ - homepage: 'example.org' - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingProtocolHomepage, - warningMessages.missingLicense] - t.same(warnings, expect) - t.same(a.homepage, 'http://example.org') - t.end() -}) - -tap.test("license field should be a valid SPDX expression", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - var a - normalize(a={ - license: 'Apache 2' - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.invalidLicense] - t.same(warnings, expect) - t.end() -}) - -tap.test("gist bugs url", function(t) { - var d = { - repository: "git@gist.github.com:123456.git" - } - normalize(d) - t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' }) - t.same(d.bugs, { url: 'https://gist.github.com/123456' }) - t.end(); -}); - -tap.test("singularize repositories", function(t) { - var d = {repositories:["git@gist.github.com:123456.git"]} - normalize(d) - t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' }) - t.end() -}); - -tap.test("treat visionmedia/express as github repo", function(t) { - var d = {repository: {type: "git", url: "visionmedia/express"}} - normalize(d) - t.same(d.repository, { type: "git", url: "git+https://github.com/visionmedia/express.git" }) - t.end() -}); - -tap.test("treat isaacs/node-graceful-fs as github repo", function(t) { - var d = {repository: {type: "git", url: "isaacs/node-graceful-fs"}} - normalize(d) - t.same(d.repository, { type: "git", url: "git+https://github.com/isaacs/node-graceful-fs.git" }) - t.end() -}); - -tap.test("homepage field will set to github url if repository is a github repo", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "https://github.com/isaacs/node-graceful-fs" } - }) - t.same(a.homepage, 'https://github.com/isaacs/node-graceful-fs#readme') - t.end() -}) - -tap.test("homepage field will set to github gist url if repository is a gist", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "git@gist.github.com:123456.git" } - }) - t.same(a.homepage, 'https://gist.github.com/123456') - t.end() -}) - -tap.test("homepage field will set to github gist url if repository is a shorthand reference", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "sindresorhus/chalk" } - }) - t.same(a.homepage, 'https://github.com/sindresorhus/chalk#readme') - t.end() -}) - -tap.test("don't mangle github shortcuts in dependencies", function(t) { - var d = {dependencies: {"node-graceful-fs": "isaacs/node-graceful-fs"}} - normalize(d) - t.same(d.dependencies, {"node-graceful-fs": "github:isaacs/node-graceful-fs" }) - t.end() -}); - -tap.test("deprecation warning for array in dependencies fields", function(t) { - var a - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize(a={ - dependencies: [], - devDependencies: [], - optionalDependencies: [] - }, warn) - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'dependencies')), "deprecation warning") - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'devDependencies')), "deprecation warning") - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'optionalDependencies')), "deprecation warning") - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js~ b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js~ deleted file mode 100644 index de6f1ce5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/normalize.js~ +++ /dev/null @@ -1,253 +0,0 @@ -var tap = require("tap") -var fs = require("fs") -var path = require("path") - -var globals = Object.keys(global) - -var normalize = require("../lib/normalize") -var warningMessages = require("../lib/warning_messages.json") -var safeFormat = require("../lib/safe_format") - -var rpjPath = path.resolve(__dirname,"./fixtures/read-package-json.json") - -tap.test("normalize some package data", function(t) { - var packageData = require(rpjPath) - var warnings = [] - normalize(packageData, function(warning) { - warnings.push(warning) - }) - // there's no readme data in this particular object - t.equal( warnings.length, 1, "There's exactly one warning.") - fs.readFile(rpjPath, function(err, data) { - if(err) throw err - // Various changes have been made - t.notEqual(packageData, JSON.parse(data), "Output is different from input.") - t.end() - }) -}) - -tap.test("runs without passing warning function", function(t) { - var packageData = require(rpjPath) - fs.readFile(rpjPath, function(err, data) { - if(err) throw err - normalize(JSON.parse(data)) - t.ok(true, "If you read this, this means I'm still alive.") - t.end() - }) -}) - -tap.test("empty object", function(t) { - var packageData = {} - var expect = - { name: '', - version: '', - readme: 'ERROR: No README data found!', - _id: '@' } - - var warnings = [] - function warn(m) { - warnings.push(m) - } - normalize(packageData, warn) - t.same(packageData, expect) - t.same(warnings, [ - warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingLicense - ]) - t.end() -}) - -tap.test("core module name", function(t) { - var warnings = [] - function warn(m) { - warnings.push(m) - } - var a - normalize(a={ - name: "http", - readme: "read yourself how about", - homepage: 123, - bugs: "what is this i don't even", - repository: "Hello." - }, warn) - - var expect = [ - safeFormat(warningMessages.conflictingName, 'http'), - warningMessages.nonEmailUrlBugsString, - warningMessages.emptyNormalizedBugs, - warningMessages.nonUrlHomepage, - warningMessages.missingLicense - ] - t.same(warnings, expect) - t.end() -}) - -tap.test("urls required", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize({ - bugs: { - url: "/1", - email: "not an email address" - } - }, warn) - var a - normalize(a={ - readme: "read yourself how about", - homepage: 123, - bugs: "what is this i don't even", - repository: "Hello." - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.nonUrlBugsUrlField, - warningMessages.nonEmailBugsEmailField, - warningMessages.emptyNormalizedBugs, - warningMessages.missingReadme, - warningMessages.missingLicense, - warningMessages.nonEmailUrlBugsString, - warningMessages.emptyNormalizedBugs, - warningMessages.nonUrlHomepage, - warningMessages.missingLicense] - t.same(warnings, expect) - t.end() -}) - -tap.test("homepage field must start with a protocol.", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - var a - normalize(a={ - homepage: 'example.org' - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingProtocolHomepage, - warningMessages.missingLicense] - t.same(warnings, expect) - t.same(a.homepage, 'http://example.org') - t.end() -}) - -tap.test("license field should be a valid SPDX expression", function(t) { - var warnings = [] - function warn(w) { - warnings.push(w) - } - var a - normalize(a={ - license: 'Apache 2' - }, warn) - - console.error(a) - - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.invalidLicense] - t.same(warnings, expect) - t.end() -}) - -tap.test("gist bugs url", function(t) { - var d = { - repository: "git@gist.github.com:123456.git" - } - normalize(d) - t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' }) - t.same(d.bugs, { url: 'https://gist.github.com/123456' }) - t.end(); -}); - -tap.test("singularize repositories", function(t) { - var d = {repositories:["git@gist.github.com:123456.git"]} - normalize(d) - t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' }) - t.end() -}); - -tap.test("treat visionmedia/express as github repo", function(t) { - var d = {repository: {type: "git", url: "visionmedia/express"}} - normalize(d) - t.same(d.repository, { type: "git", url: "git+https://github.com/visionmedia/express.git" }) - t.end() -}); - -tap.test("treat isaacs/node-graceful-fs as github repo", function(t) { - var d = {repository: {type: "git", url: "isaacs/node-graceful-fs"}} - normalize(d) - t.same(d.repository, { type: "git", url: "git+https://github.com/isaacs/node-graceful-fs.git" }) - t.end() -}); - -tap.test("homepage field will set to github url if repository is a github repo", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "https://github.com/isaacs/node-graceful-fs" } - }) - t.same(a.homepage, 'https://github.com/isaacs/node-graceful-fs#readme') - t.end() -}) - -tap.test("homepage field will set to github gist url if repository is a gist", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "git@gist.github.com:123456.git" } - }) - t.same(a.homepage, 'https://gist.github.com/123456') - t.end() -}) - -tap.test("homepage field will set to github gist url if repository is a shorthand reference", function(t) { - var a - normalize(a={ - repository: { type: "git", url: "sindresorhus/chalk" } - }) - t.same(a.homepage, 'https://github.com/sindresorhus/chalk#readme') - t.end() -}) - -tap.test("don't mangle github shortcuts in dependencies", function(t) { - var d = {dependencies: {"node-graceful-fs": "isaacs/node-graceful-fs"}} - normalize(d) - t.same(d.dependencies, {"node-graceful-fs": "github:isaacs/node-graceful-fs" }) - t.end() -}); - -tap.test("deprecation warning for array in dependencies fields", function(t) { - var a - var warnings = [] - function warn(w) { - warnings.push(w) - } - normalize(a={ - dependencies: [], - devDependencies: [], - optionalDependencies: [] - }, warn) - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'dependencies')), "deprecation warning") - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'devDependencies')), "deprecation warning") - t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'optionalDependencies')), "deprecation warning") - t.end() -}) - -tap.test('no new globals', function(t) { - t.same(Object.keys(global), globals) - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scoped.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scoped.js deleted file mode 100644 index 82d2a543..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scoped.js +++ /dev/null @@ -1,59 +0,0 @@ -var test = require("tap").test - -var fixNameField = require("../lib/fixer.js").fixNameField -var fixBinField = require("../lib/fixer.js").fixBinField - -test("a simple scoped module has a valid name", function (t) { - var data = {name : "@org/package"} - fixNameField(data, false) - t.equal(data.name, "@org/package", "name was unchanged") - - t.end() -}) - -test("'org@package' is not a valid name", function (t) { - t.throws(function () { - fixNameField({name : "org@package"}, false) - }, "blows up as expected") - - t.end() -}) - -test("'org=package' is not a valid name", function (t) { - t.throws(function () { - fixNameField({name : "org=package"}, false) - }, "blows up as expected") - - t.end() -}) - -test("'@org=sub/package' is not a valid name", function (t) { - t.throws(function () { - fixNameField({name : "@org=sub/package"}, false) - }, "blows up as expected") - - t.end() -}) - -test("'@org/' is not a valid name", function (t) { - t.throws(function () { - fixNameField({name : "@org/"}, false) - }, "blows up as expected") - - t.end() -}) - -test("'@/package' is not a valid name", function (t) { - t.throws(function () { - fixNameField({name : "@/package"}, false) - }, "blows up as expected") - - t.end() -}) - -test("name='@org/package', bin='bin.js' is bin={package:'bin.js'}", function (t) { - var obj = {name : "@org/package", bin: "bin.js"} - fixBinField(obj) - t.isDeeply(obj.bin, {package: 'bin.js'}) - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scripts.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scripts.js deleted file mode 100644 index 473596ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/scripts.js +++ /dev/null @@ -1,24 +0,0 @@ -var tap = require("tap") -var normalize = require("../lib/normalize") -var path = require("path") -var fs = require("fs") - -tap.test("bad scripts", function (t) { - var p = path.resolve(__dirname, "./fixtures/badscripts.json") - fs.readFile (p, function (err, contents) { - if (err) throw err - var originalData = JSON.parse(contents.toString()) - var data = JSON.parse(contents.toString()) - normalize(data) - t.ok(data) - verifyFields(t, data, originalData) - t.end() - }) -}) - -function verifyFields (t, normalized, original) { - t.equal(normalized.version, original.version, "Version field stays same") - t.equal(normalized.name, original.name, "Name stays the same.") - // scripts is not an object, so it should be deleted - t.notOk(normalized.scripts) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/strict.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/strict.js deleted file mode 100644 index 40e09dcf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/strict.js +++ /dev/null @@ -1,54 +0,0 @@ -var test = require("tap").test - -var normalize = require("../") - -test("strict", function(t) { - var threw - - try { - threw = false - normalize({name: "X"}, true) - } catch (er) { - threw = true - t.equal(er.message, 'Invalid name: "X"') - } finally { - t.equal(threw, true) - } - - try { - threw = false - normalize({name:" x "}, true) - } catch (er) { - threw = true - t.equal(er.message, 'Invalid name: " x "') - } finally { - t.equal(threw, true) - } - - try { - threw = false - normalize({name:"x",version:"01.02.03"}, true) - } catch (er) { - threw = true - t.equal(er.message, 'Invalid version: "01.02.03"') - } finally { - t.equal(threw, true) - } - - // these should not throw - var slob = {name:" X ",version:"01.02.03",dependencies:{ - y:">01.02.03", - z:"! 99 $$ASFJ(Aawenf90awenf as;naw.3j3qnraw || an elephant" - }} - normalize(slob, false) - t.same(slob, - { name: 'X', - version: '1.2.3', - dependencies: - { y: '>01.02.03', - z: '! 99 $$ASFJ(Aawenf90awenf as;naw.3j3qnraw || an elephant' }, - readme: 'ERROR: No README data found!', - _id: 'X@1.2.3' }) - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/typo.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/typo.js deleted file mode 100644 index 0cd3eb49..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/normalize-package-data/test/typo.js +++ /dev/null @@ -1,133 +0,0 @@ -var test = require('tap').test - -var normalize = require('../') -var typos = require('../lib/typos.json') -var warningMessages = require("../lib/warning_messages.json") -var safeFormat = require("../lib/safe_format") - -test('typos', function(t) { - var warnings = [] - function warn(m) { - warnings.push(m) - } - - var typoMessage = safeFormat.bind(undefined, warningMessages.typo) - - var expect = - [ warningMessages.missingRepository, - warningMessages.missingLicense, - typoMessage('dependancies', 'dependencies'), - typoMessage('dependecies', 'dependencies'), - typoMessage('depdenencies', 'dependencies'), - typoMessage('devEependencies', 'devDependencies'), - typoMessage('depends', 'dependencies'), - typoMessage('dev-dependencies', 'devDependencies'), - typoMessage('devDependences', 'devDependencies'), - typoMessage('devDepenencies', 'devDependencies'), - typoMessage('devdependencies', 'devDependencies'), - typoMessage('repostitory', 'repository'), - typoMessage('repo', 'repository'), - typoMessage('prefereGlobal', 'preferGlobal'), - typoMessage('hompage', 'homepage'), - typoMessage('hampage', 'homepage'), - typoMessage('autohr', 'author'), - typoMessage('autor', 'author'), - typoMessage('contributers', 'contributors'), - typoMessage('publicationConfig', 'publishConfig') ] - - normalize({"dependancies": "dependencies" - ,"dependecies": "dependencies" - ,"depdenencies": "dependencies" - ,"devEependencies": "devDependencies" - ,"depends": "dependencies" - ,"dev-dependencies": "devDependencies" - ,"devDependences": "devDependencies" - ,"devDepenencies": "devDependencies" - ,"devdependencies": "devDependencies" - ,"repostitory": "repository" - ,"repo": "repository" - ,"prefereGlobal": "preferGlobal" - ,"hompage": "homepage" - ,"hampage": "homepage" - ,"autohr": "author" - ,"autor": "author" - ,"contributers": "contributors" - ,"publicationConfig": "publishConfig" - ,readme:"asdf" - ,name:"name" - ,version:"1.2.5"}, warn) - - t.same(warnings, expect) - - warnings.length = 0 - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - typoMessage("bugs['web']", "bugs['url']"), - typoMessage("bugs['name']", "bugs['url']"), - warningMessages.nonUrlBugsUrlField, - warningMessages.emptyNormalizedBugs, - warningMessages.missingReadme, - warningMessages.missingLicense] - - normalize({name:"name" - ,version:"1.2.5" - ,bugs:{web:"url",name:"url"}}, warn) - - t.same(warnings, expect) - - warnings.length = 0 - var expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingLicense, - typoMessage('script', 'scripts') ] - - normalize({name:"name" - ,version:"1.2.5" - ,script:{server:"start",tests:"test"}}, warn) - - t.same(warnings, expect) - - warnings.length = 0 - expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - typoMessage("scripts['server']", "scripts['start']"), - typoMessage("scripts['tests']", "scripts['test']"), - warningMessages.missingReadme, - warningMessages.missingLicense] - - normalize({name:"name" - ,version:"1.2.5" - ,scripts:{server:"start",tests:"test"}}, warn) - - t.same(warnings, expect) - - warnings.length = 0 - expect = - [ warningMessages.missingDescription, - warningMessages.missingRepository, - warningMessages.missingReadme, - warningMessages.missingLicense] - - normalize({name:"name" - ,version:"1.2.5" - ,scripts:{server:"start",tests:"test" - ,start:"start",test:"test"}}, warn) - - t.same(warnings, expect) - - warnings.length = 0 - expect = [] - - normalize({private: true - ,name:"name" - ,version:"1.2.5" - ,scripts:{server:"start",tests:"test"}}, warn) - - t.same(warnings, expect) - - t.end(); -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/index.js deleted file mode 100644 index 79be4b9c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; -module.exports = Number.isNaN || function (x) { - return x !== x; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/package.json deleted file mode 100644 index 3efe361f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "number-is-nan@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/is-finite" - ] - ], - "_from": "number-is-nan@>=1.0.0 <2.0.0", - "_id": "number-is-nan@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/number-is-nan", - "_nodeVersion": "0.12.3", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.10.0", - "_phantomChildren": {}, - "_requested": { - "name": "number-is-nan", - "raw": "number-is-nan@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/is-finite" - ], - "_resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "_shasum": "c020f529c5282adfdd233d91d4b181c3d686dc4b", - "_shrinkwrap": null, - "_spec": "number-is-nan@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/is-finite", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/number-is-nan/issues" - }, - "dependencies": {}, - "description": "ES6 Number.isNaN() ponyfill", - "devDependencies": { - "ava": "0.0.4" - }, - "directories": {}, - "dist": { - "shasum": "c020f529c5282adfdd233d91d4b181c3d686dc4b", - "tarball": "http://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "0f394b1bc33185c40304363b209e3f0588dbeeb3", - "homepage": "https://github.com/sindresorhus/number-is-nan#readme", - "keywords": [ - "es6", - "es2015", - "ecmascript", - "harmony", - "ponyfill", - "polyfill", - "shim", - "number", - "is", - "nan", - "not" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "number-is-nan", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/number-is-nan.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/readme.md deleted file mode 100644 index 93d851a1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/number-is-nan/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# number-is-nan [![Build Status](https://travis-ci.org/sindresorhus/number-is-nan.svg?branch=master)](https://travis-ci.org/sindresorhus/number-is-nan) - -> ES6 [`Number.isNaN()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -``` -$ npm install --save number-is-nan -``` - - -## Usage - -```js -var numberIsNan = require('number-is-nan'); - -numberIsNan(NaN); -//=> true - -numberIsNan('unicorn'); -//=> false -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/README.md deleted file mode 100644 index 34c4a85d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/README.md +++ /dev/null @@ -1,4 +0,0 @@ -oauth-sign -========== - -OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/index.js deleted file mode 100644 index dadcba97..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/index.js +++ /dev/null @@ -1,136 +0,0 @@ -var crypto = require('crypto') - , qs = require('querystring') - ; - -function sha1 (key, body) { - return crypto.createHmac('sha1', key).update(body).digest('base64') -} - -function rsa (key, body) { - return crypto.createSign("RSA-SHA1").update(body).sign(key, 'base64'); -} - -function rfc3986 (str) { - return encodeURIComponent(str) - .replace(/!/g,'%21') - .replace(/\*/g,'%2A') - .replace(/\(/g,'%28') - .replace(/\)/g,'%29') - .replace(/'/g,'%27') - ; -} - -// Maps object to bi-dimensional array -// Converts { foo: 'A', bar: [ 'b', 'B' ]} to -// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ] -function map (obj) { - var key, val, arr = [] - for (key in obj) { - val = obj[key] - if (Array.isArray(val)) - for (var i = 0; i < val.length; i++) - arr.push([key, val[i]]) - else if (typeof val === "object") - for (var prop in val) - arr.push([key + '[' + prop + ']', val[prop]]); - else - arr.push([key, val]) - } - return arr -} - -// Compare function for sort -function compare (a, b) { - return a > b ? 1 : a < b ? -1 : 0 -} - -function generateBase (httpMethod, base_uri, params) { - // adapted from https://dev.twitter.com/docs/auth/oauth and - // https://dev.twitter.com/docs/auth/creating-signature - - // Parameter normalization - // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 - var normalized = map(params) - // 1. First, the name and value of each parameter are encoded - .map(function (p) { - return [ rfc3986(p[0]), rfc3986(p[1] || '') ] - }) - // 2. The parameters are sorted by name, using ascending byte value - // ordering. If two or more parameters share the same name, they - // are sorted by their value. - .sort(function (a, b) { - return compare(a[0], b[0]) || compare(a[1], b[1]) - }) - // 3. The name of each parameter is concatenated to its corresponding - // value using an "=" character (ASCII code 61) as a separator, even - // if the value is empty. - .map(function (p) { return p.join('=') }) - // 4. The sorted name/value pairs are concatenated together into a - // single string by using an "&" character (ASCII code 38) as - // separator. - .join('&') - - var base = [ - rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), - rfc3986(base_uri), - rfc3986(normalized) - ].join('&') - - return base -} - -function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return sha1(key, base) -} - -function rsasign (httpMethod, base_uri, params, private_key, token_secret) { - var base = generateBase(httpMethod, base_uri, params) - var key = private_key || '' - - return rsa(key, base) -} - -function plaintext (consumer_secret, token_secret) { - var key = [ - consumer_secret || '', - token_secret || '' - ].map(rfc3986).join('&') - - return key -} - -function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) { - var method - var skipArgs = 1 - - switch (signMethod) { - case 'RSA-SHA1': - method = rsasign - break - case 'HMAC-SHA1': - method = hmacsign - break - case 'PLAINTEXT': - method = plaintext - skipArgs = 4 - break - default: - throw new Error("Signature method not supported: " + signMethod) - } - - return method.apply(null, [].slice.call(arguments, skipArgs)) -} - -exports.hmacsign = hmacsign -exports.rsasign = rsasign -exports.plaintext = plaintext -exports.sign = sign -exports.rfc3986 = rfc3986 -exports.generateBase = generateBase - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/package.json deleted file mode 100644 index 5754a5f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - "oauth-sign@~0.8.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "oauth-sign@>=0.8.0 <0.9.0", - "_id": "oauth-sign@0.8.1", - "_inCache": true, - "_installable": true, - "_location": "/oauth-sign", - "_nodeVersion": "5.5.0", - "_npmUser": { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - }, - "_npmVersion": "3.6.0", - "_phantomChildren": {}, - "_requested": { - "name": "oauth-sign", - "raw": "oauth-sign@~0.8.0", - "rawSpec": "~0.8.0", - "scope": null, - "spec": ">=0.8.0 <0.9.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz", - "_shasum": "182439bdb91378bf7460e75c64ea43e6448def06", - "_shrinkwrap": null, - "_spec": "oauth-sign@~0.8.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "mikeal.rogers@gmail.com", - "name": "Mikeal Rogers", - "url": "http://www.futurealoof.com" - }, - "bugs": { - "url": "https://github.com/mikeal/oauth-sign/issues" - }, - "dependencies": {}, - "description": "OAuth 1 signing. Formerly a vendor lib in mikeal/request, now a standalone module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "182439bdb91378bf7460e75c64ea43e6448def06", - "tarball": "http://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.1.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "9c7229a336c9face98b83f93b72cb7c80dbba08d", - "homepage": "https://github.com/mikeal/oauth-sign#readme", - "license": "Apache-2.0", - "main": "index.js", - "maintainers": [ - { - "email": "mikeal.rogers@gmail.com", - "name": "mikeal" - }, - { - "email": "jnylen@gmail.com", - "name": "nylen" - }, - { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - } - ], - "name": "oauth-sign", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "url": "git+https://github.com/mikeal/oauth-sign.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "0.8.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/test.js deleted file mode 100644 index a8847270..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/oauth-sign/test.js +++ /dev/null @@ -1,89 +0,0 @@ -var oauth = require('./index') - , hmacsign = oauth.hmacsign - , assert = require('assert') - , qs = require('querystring') - ; - -// Tests from Twitter documentation https://dev.twitter.com/docs/auth/oauth - -var reqsign = hmacsign('POST', 'https://api.twitter.com/oauth/request_token', - { oauth_callback: 'http://localhost:3005/the_dance/process_callback?service_provider_id=11' - , oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: 'QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_timestamp: '1272323042' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98") - -console.log(reqsign) -console.log('8wUi7m5HFQy76nowoCThusfgB+Q=') -assert.equal(reqsign, '8wUi7m5HFQy76nowoCThusfgB+Q=') - -var accsign = hmacsign('POST', 'https://api.twitter.com/oauth/access_token', - { oauth_consumer_key: 'GDdmIQH6jhtmLUypg82g' - , oauth_nonce: '9zWH6qe0qG7Lc1telCn7FhUbLyVdjEaL3MO5uHxn8' - , oauth_signature_method: 'HMAC-SHA1' - , oauth_token: '8ldIZyxQeVrFZXFOZH5tAwj6vzJYuLQpl0WUEYtWc' - , oauth_timestamp: '1272323047' - , oauth_verifier: 'pDNg57prOHapMbhv25RNf75lVRd6JDsni1AJJIDYoTY' - , oauth_version: '1.0' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "x6qpRnlEmW9JbQn4PQVVeVG8ZLPEx6A0TOebgwcuA") - -console.log(accsign) -console.log('PUw/dHA4fnlJYM6RhXk5IU/0fCc=') -assert.equal(accsign, 'PUw/dHA4fnlJYM6RhXk5IU/0fCc=') - -var upsign = hmacsign('POST', 'http://api.twitter.com/1/statuses/update.json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , status: 'setting up my twitter 私のさえずりを設定する' - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('yOahq5m0YjDDjfjxHaXEsW9D+X0=') -assert.equal(upsign, 'yOahq5m0YjDDjfjxHaXEsW9D+X0=') - -// handle objects in params (useful for Wordpress REST API) -var upsign = hmacsign('POST', 'http://wordpress.com/wp-json', - { oauth_consumer_key: "GDdmIQH6jhtmLUypg82g" - , oauth_nonce: "oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y" - , oauth_signature_method: "HMAC-SHA1" - , oauth_token: "819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw" - , oauth_timestamp: "1272325550" - , oauth_version: "1.0" - , filter: { number: "-1" } - }, "MCD8BKwGdgPHvAuvgvz4EQpqDAtx89grbuNMRd7Eh98", "J6zix3FfA9LofH0awS24M3HcBYXO5nI1iYe8EfBA") - -console.log(upsign) -console.log('YrJFBdwnjuIitGpKrxLUplcuuUQ=') -assert.equal(upsign, 'YrJFBdwnjuIitGpKrxLUplcuuUQ=') - -// example in rfc5849 -var params = qs.parse('b5=%3D%253D&a3=a&c%40=&a2=r%20b' + '&' + 'c2&a3=2+q') -params.oauth_consumer_key = '9djdj82h48djs9d2' -params.oauth_token = 'kkk9d7dh3k39sjv7' -params.oauth_nonce = '7d8f3e4a' -params.oauth_signature_method = 'HMAC-SHA1' -params.oauth_timestamp = '137131201' - -var rfc5849sign = hmacsign('POST', 'http://example.com/request', - params, "j49sk3j29djd", "dh893hdasih9") - -console.log(rfc5849sign) -console.log('r6/TJjbCOr97/+UU0NsvSne7s5g=') -assert.equal(rfc5849sign, 'r6/TJjbCOr97/+UU0NsvSne7s5g=') - - -// PLAINTEXT - -var plainSign = oauth.sign('PLAINTEXT', 'GET', 'http://dummy.com', {}, 'consumer_secret', 'token_secret') -console.log(plainSign) -assert.equal(plainSign, 'consumer_secret&token_secret') - -plainSign = oauth.plaintext('consumer_secret', 'token_secret') -console.log(plainSign) -assert.equal(plainSign, 'consumer_secret&token_secret') diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/index.js deleted file mode 100644 index 2164f93d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/index.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function ToObject(val) { - if (val == null) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function ownEnumerableKeys(obj) { - var keys = Object.getOwnPropertyNames(obj); - - if (Object.getOwnPropertySymbols) { - keys = keys.concat(Object.getOwnPropertySymbols(obj)); - } - - return keys.filter(function (key) { - return propIsEnumerable.call(obj, key); - }); -} - -module.exports = Object.assign || function (target, source) { - var from; - var keys; - var to = ToObject(target); - - for (var s = 1; s < arguments.length; s++) { - from = arguments[s]; - keys = ownEnumerableKeys(Object(from)); - - for (var i = 0; i < keys.length; i++) { - to[keys[i]] = from[keys[i]]; - } - } - - return to; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/package.json deleted file mode 100644 index 8621ebd6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "_args": [ - [ - "object-assign@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "object-assign@>=3.0.0 <4.0.0", - "_id": "object-assign@3.0.0", - "_inCache": true, - "_installable": true, - "_location": "/object-assign", - "_nodeVersion": "0.12.4", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "object-assign", - "raw": "object-assign@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "_shasum": "9bedd5ca0897949bca47e7ff408062d549f587f2", - "_shrinkwrap": null, - "_spec": "object-assign@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/object-assign/issues" - }, - "dependencies": {}, - "description": "ES6 Object.assign() ponyfill", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "9bedd5ca0897949bca47e7ff408062d549f587f2", - "tarball": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "02622dcb0d82bd81a071ed0b04fedf5e5eea7059", - "homepage": "https://github.com/sindresorhus/object-assign", - "keywords": [ - "object", - "assign", - "extend", - "properties", - "es6", - "ecmascript", - "harmony", - "ponyfill", - "prollyfill", - "polyfill", - "shim", - "browser" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "object-assign", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/object-assign.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "3.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/readme.md deleted file mode 100644 index aee51c12..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/object-assign/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) - -> ES6 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -```sh -$ npm install --save object-assign -``` - - -## Usage - -```js -var objectAssign = require('object-assign'); - -objectAssign({foo: 0}, {bar: 1}); -//=> {foo: 0, bar: 1} - -// multiple sources -objectAssign({foo: 0}, {bar: 1}, {baz: 2}); -//=> {foo: 0, bar: 1, baz: 2} - -// overwrites equal keys -objectAssign({foo: 0}, {foo: 1}, {foo: 2}); -//=> {foo: 2} - -// ignores null and undefined sources -objectAssign({foo: 0}, null, {bar: 1}, undefined); -//=> {foo: 0, bar: 1} -``` - - -## API - -### objectAssign(target, source, [source, ...]) - -Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. - - -## Resources - -- [ES6 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/README.md deleted file mode 100644 index a2981ea0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/README.md +++ /dev/null @@ -1,51 +0,0 @@ -# once - -Only call a function once. - -## usage - -```javascript -var once = require('once') - -function load (file, cb) { - cb = once(cb) - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Or add to the Function.prototype in a responsible way: - -```javascript -// only has to be done once -require('once').proto() - -function load (file, cb) { - cb = cb.once() - loader.load('file') - loader.once('load', cb) - loader.once('error', cb) -} -``` - -Ironically, the prototype feature makes this module twice as -complicated as necessary. - -To check whether you function has been called, use `fn.called`. Once the -function is called for the first time the return value of the original -function is saved in `fn.value` and subsequent calls will continue to -return this value. - -```javascript -var once = require('once') - -function load (cb) { - cb = once(cb) - var stream = createStream() - stream.once('data', cb) - stream.once('end', function () { - if (!cb.called) cb(new Error('not found')) - }) -} -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/once.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/once.js deleted file mode 100644 index 2e1e721b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/once.js +++ /dev/null @@ -1,21 +0,0 @@ -var wrappy = require('wrappy') -module.exports = wrappy(once) - -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) -}) - -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/package.json deleted file mode 100644 index 170bf666..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/once/package.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "_args": [ - [ - "once@^1.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob" - ] - ], - "_from": "once@>=1.3.0 <2.0.0", - "_id": "once@1.3.3", - "_inCache": true, - "_installable": true, - "_location": "/once", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "3.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "once", - "raw": "once@^1.3.0", - "rawSpec": "^1.3.0", - "scope": null, - "spec": ">=1.3.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/duplexify/end-of-stream", - "/end-of-stream", - "/glob", - "/glob-stream/glob", - "/gulp-symdest/glob", - "/inflight", - "/tslint/glob" - ], - "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "_shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20", - "_shrinkwrap": null, - "_spec": "once@^1.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/once/issues" - }, - "dependencies": { - "wrappy": "1" - }, - "description": "Run a function exactly one time", - "devDependencies": { - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20", - "tarball": "http://registry.npmjs.org/once/-/once-1.3.3.tgz" - }, - "files": [ - "once.js" - ], - "gitHead": "2ad558657e17fafd24803217ba854762842e4178", - "homepage": "https://github.com/isaacs/once#readme", - "keywords": [ - "once", - "function", - "one", - "single" - ], - "license": "ISC", - "main": "once.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "once", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/once.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "1.3.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/.travis.yml deleted file mode 100644 index cc4dba29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/LICENSE deleted file mode 100644 index 432d1aeb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/bool.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/bool.js deleted file mode 100644 index a998fb7a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/bool.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_double.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_double.js deleted file mode 100644 index a35a7e6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_double.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_single.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_single.js deleted file mode 100644 index 017bb689..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/boolean_single.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv.v); -console.dir(argv._); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_hash.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_hash.js deleted file mode 100644 index ade77681..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_hash.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; - -console.log(argv.x + argv.y); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_singles.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_singles.js deleted file mode 100644 index d9b1ff45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/default_singles.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/divide.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/divide.js deleted file mode 100644 index 5e2ee82f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/divide.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count.js deleted file mode 100644 index b5f95bf6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_options.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_options.js deleted file mode 100644 index d9ac7090..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_options.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .options({ - file : { - demand : true, - alias : 'f', - description : 'Load a file' - }, - base : { - alias : 'b', - description : 'Numeric base to use for output', - default : 10, - }, - }) - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_wrap.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_wrap.js deleted file mode 100644 index 42675111..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/line_count_wrap.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .wrap(80) - .demand('f') - .alias('f', [ 'file', 'filename' ]) - .describe('f', - "Load a file. It's pretty important." - + " Required even. So you'd better specify it." - ) - .alias('b', 'base') - .describe('b', 'Numeric base to display the number of lines in') - .default('b', 10) - .describe('x', 'Super-secret optional parameter which is secret') - .default('x', '') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/nonopt.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/nonopt.js deleted file mode 100644 index ee633eed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/nonopt.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/reflect.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/reflect.js deleted file mode 100644 index 816b3e11..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/reflect.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.dir(require('optimist').argv); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/short.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/short.js deleted file mode 100644 index 1db0ad0f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/short.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/string.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/string.js deleted file mode 100644 index a8e5aeb2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/string.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .string('x', 'y') - .argv -; -console.dir([ argv.x, argv.y ]); - -/* Turns off numeric coercion: - ./node string.js -x 000123 -y 9876 - [ '000123', '9876' ] -*/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/usage-options.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/usage-options.js deleted file mode 100644 index b9999776..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/usage-options.js +++ /dev/null @@ -1,19 +0,0 @@ -var optimist = require('./../index'); - -var argv = optimist.usage('This is my awesome program', { - 'about': { - description: 'Provide some details about the author of this program', - required: true, - short: 'a', - }, - 'info': { - description: 'Provide some information about the node.js agains!!!!!!', - boolean: true, - short: 'i' - } -}).argv; - -optimist.showHelp(); - -console.log('\n\nInspecting options'); -console.dir(argv); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/xup.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/xup.js deleted file mode 100644 index 8f6ecd20..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/example/xup.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/index.js deleted file mode 100644 index 4da5a6d8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/index.js +++ /dev/null @@ -1,343 +0,0 @@ -var path = require('path'); -var minimist = require('minimist'); -var wordwrap = require('wordwrap'); - -/* Hack an instance of Argv with process.argv into Argv - so people can do - require('optimist')(['--beeble=1','-z','zizzle']).argv - to parse a list of args and - require('optimist').argv - to get a parsed version of process.argv. -*/ - -var inst = Argv(process.argv.slice(2)); -Object.keys(inst).forEach(function (key) { - Argv[key] = typeof inst[key] == 'function' - ? inst[key].bind(inst) - : inst[key]; -}); - -var exports = module.exports = Argv; -function Argv (processArgs, cwd) { - var self = {}; - if (!cwd) cwd = process.cwd(); - - self.$0 = process.argv - .slice(0,2) - .map(function (x) { - var b = rebase(cwd, x); - return x.match(/^\//) && b.length < x.length - ? b : x - }) - .join(' ') - ; - - if (process.env._ != undefined && process.argv[1] == process.env._) { - self.$0 = process.env._.replace( - path.dirname(process.execPath) + '/', '' - ); - } - - var options = { - boolean: [], - string: [], - alias: {}, - default: [] - }; - - self.boolean = function (bools) { - options.boolean.push.apply(options.boolean, [].concat(bools)); - return self; - }; - - self.string = function (strings) { - options.string.push.apply(options.string, [].concat(strings)); - return self; - }; - - self.default = function (key, value) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.default(k, key[k]); - }); - } - else { - options.default[key] = value; - } - return self; - }; - - self.alias = function (x, y) { - if (typeof x === 'object') { - Object.keys(x).forEach(function (key) { - self.alias(key, x[key]); - }); - } - else { - options.alias[x] = (options.alias[x] || []).concat(y); - } - return self; - }; - - var demanded = {}; - self.demand = function (keys) { - if (typeof keys == 'number') { - if (!demanded._) demanded._ = 0; - demanded._ += keys; - } - else if (Array.isArray(keys)) { - keys.forEach(function (key) { - self.demand(key); - }); - } - else { - demanded[keys] = true; - } - - return self; - }; - - var usage; - self.usage = function (msg, opts) { - if (!opts && typeof msg === 'object') { - opts = msg; - msg = null; - } - - usage = msg; - - if (opts) self.options(opts); - - return self; - }; - - function fail (msg) { - self.showHelp(); - if (msg) console.error(msg); - process.exit(1); - } - - var checks = []; - self.check = function (f) { - checks.push(f); - return self; - }; - - var descriptions = {}; - self.describe = function (key, desc) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.describe(k, key[k]); - }); - } - else { - descriptions[key] = desc; - } - return self; - }; - - self.parse = function (args) { - return parseArgs(args); - }; - - self.option = self.options = function (key, opt) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.options(k, key[k]); - }); - } - else { - if (opt.alias) self.alias(key, opt.alias); - if (opt.demand) self.demand(key); - if (typeof opt.default !== 'undefined') { - self.default(key, opt.default); - } - - if (opt.boolean || opt.type === 'boolean') { - self.boolean(key); - } - if (opt.string || opt.type === 'string') { - self.string(key); - } - - var desc = opt.describe || opt.description || opt.desc; - if (desc) { - self.describe(key, desc); - } - } - - return self; - }; - - var wrap = null; - self.wrap = function (cols) { - wrap = cols; - return self; - }; - - self.showHelp = function (fn) { - if (!fn) fn = console.error; - fn(self.help()); - }; - - self.help = function () { - var keys = Object.keys( - Object.keys(descriptions) - .concat(Object.keys(demanded)) - .concat(Object.keys(options.default)) - .reduce(function (acc, key) { - if (key !== '_') acc[key] = true; - return acc; - }, {}) - ); - - var help = keys.length ? [ 'Options:' ] : []; - - if (usage) { - help.unshift(usage.replace(/\$0/g, self.$0), ''); - } - - var switches = keys.reduce(function (acc, key) { - acc[key] = [ key ].concat(options.alias[key] || []) - .map(function (sw) { - return (sw.length > 1 ? '--' : '-') + sw - }) - .join(', ') - ; - return acc; - }, {}); - - var switchlen = longest(Object.keys(switches).map(function (s) { - return switches[s] || ''; - })); - - var desclen = longest(Object.keys(descriptions).map(function (d) { - return descriptions[d] || ''; - })); - - keys.forEach(function (key) { - var kswitch = switches[key]; - var desc = descriptions[key] || ''; - - if (wrap) { - desc = wordwrap(switchlen + 4, wrap)(desc) - .slice(switchlen + 4) - ; - } - - var spadding = new Array( - Math.max(switchlen - kswitch.length + 3, 0) - ).join(' '); - - var dpadding = new Array( - Math.max(desclen - desc.length + 1, 0) - ).join(' '); - - var type = null; - - if (options.boolean[key]) type = '[boolean]'; - if (options.string[key]) type = '[string]'; - - if (!wrap && dpadding.length > 0) { - desc += dpadding; - } - - var prelude = ' ' + kswitch + spadding; - var extra = [ - type, - demanded[key] - ? '[required]' - : null - , - options.default[key] !== undefined - ? '[default: ' + JSON.stringify(options.default[key]) + ']' - : null - , - ].filter(Boolean).join(' '); - - var body = [ desc, extra ].filter(Boolean).join(' '); - - if (wrap) { - var dlines = desc.split('\n'); - var dlen = dlines.slice(-1)[0].length - + (dlines.length === 1 ? prelude.length : 0) - - body = desc + (dlen + extra.length > wrap - 2 - ? '\n' - + new Array(wrap - extra.length + 1).join(' ') - + extra - : new Array(wrap - extra.length - dlen + 1).join(' ') - + extra - ); - } - - help.push(prelude + body); - }); - - help.push(''); - return help.join('\n'); - }; - - Object.defineProperty(self, 'argv', { - get : function () { return parseArgs(processArgs) }, - enumerable : true, - }); - - function parseArgs (args) { - var argv = minimist(args, options); - argv.$0 = self.$0; - - if (demanded._ && argv._.length < demanded._) { - fail('Not enough non-option arguments: got ' - + argv._.length + ', need at least ' + demanded._ - ); - } - - var missing = []; - Object.keys(demanded).forEach(function (key) { - if (!argv[key]) missing.push(key); - }); - - if (missing.length) { - fail('Missing required arguments: ' + missing.join(', ')); - } - - checks.forEach(function (f) { - try { - if (f(argv) === false) { - fail('Argument check failed: ' + f.toString()); - } - } - catch (err) { - fail(err) - } - }); - - return argv; - } - - function longest (xs) { - return Math.max.apply( - null, - xs.map(function (x) { return x.length }) - ); - } - - return self; -}; - -// rebase an absolute path to a relative one with respect to a base directory -// exported for tests -exports.rebase = rebase; -function rebase (base, dir) { - var ds = path.normalize(dir).split('/').slice(1); - var bs = path.normalize(base).split('/').slice(1); - - for (var i = 0; ds[i] && ds[i] == bs[i]; i++); - ds.splice(0, i); bs.splice(0, i); - - var p = path.normalize( - bs.map(function () { return '..' }).concat(ds).join('/') - ).replace(/\/$/,'').replace(/^$/, '.'); - return p.match(/^[.\/]/) ? p : './' + p; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/.travis.yml deleted file mode 100644 index cc4dba29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/example/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/example/parse.js deleted file mode 100644 index abff3e8e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/example/parse.js +++ /dev/null @@ -1,2 +0,0 @@ -var argv = require('../')(process.argv.slice(2)); -console.dir(argv); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/index.js deleted file mode 100644 index 71fb8305..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/index.js +++ /dev/null @@ -1,187 +0,0 @@ -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {} }; - - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); - }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; - } - }); - - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; - - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } - - function setArg (key, val) { - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - setArg(m[1], m[2]); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true); - } - } - } - else { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); - }); - } - }); - - notFlags.forEach(function(key) { - argv._.push(key); - }); - - return argv; -}; - -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); - - var key = keys[keys.length - 1]; - return key in o; -} - -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} - -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/package.json deleted file mode 100644 index 4628b9dd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_args": [ - [ - "minimist@~0.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/optimist" - ] - ], - "_from": "minimist@>=0.0.1 <0.1.0", - "_id": "minimist@0.0.10", - "_inCache": true, - "_installable": true, - "_location": "/optimist/minimist", - "_npmUser": { - "email": "mail@substack.net", - "name": "substack" - }, - "_npmVersion": "1.4.3", - "_phantomChildren": {}, - "_requested": { - "name": "minimist", - "raw": "minimist@~0.0.1", - "rawSpec": "~0.0.1", - "scope": null, - "spec": ">=0.0.1 <0.1.0", - "type": "range" - }, - "_requiredBy": [ - "/optimist" - ], - "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "_shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "_shrinkwrap": null, - "_spec": "minimist@~0.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/optimist", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/minimist/issues" - }, - "dependencies": {}, - "description": "parse argument options", - "devDependencies": { - "tap": "~0.4.0", - "tape": "~1.0.4" - }, - "directories": {}, - "dist": { - "shasum": "de3f98543dbf96082be48ad1a0c7cda836301dcf", - "tarball": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - }, - "homepage": "https://github.com/substack/minimist", - "keywords": [ - "argv", - "getopt", - "parser", - "optimist" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "minimist", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/minimist.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "browsers": [ - "ie/6..latest", - "ff/5", - "firefox/latest", - "chrome/10", - "chrome/latest", - "safari/5.1", - "safari/latest", - "opera/12" - ], - "files": "test/*.js" - }, - "version": "0.0.10" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/readme.markdown deleted file mode 100644 index c2563532..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/readme.markdown +++ /dev/null @@ -1,73 +0,0 @@ -# minimist - -parse argument options - -This module is the guts of optimist's argument parser without all the -fanciful decoration. - -[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist) - -[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist) - -# example - -``` js -var argv = require('minimist')(process.argv.slice(2)); -console.dir(argv); -``` - -``` -$ node example/parse.js -a beep -b boop -{ _: [], a: 'beep', b: 'boop' } -``` - -``` -$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz -{ _: [ 'foo', 'bar', 'baz' ], - x: 3, - y: 4, - n: 5, - a: true, - b: true, - c: true, - beep: 'boop' } -``` - -# methods - -``` js -var parseArgs = require('minimist') -``` - -## var argv = parseArgs(args, opts={}) - -Return an argument object `argv` populated with the array arguments from `args`. - -`argv._` contains all the arguments that didn't have an option associated with -them. - -Numeric-looking arguments will be returned as numbers unless `opts.string` or -`opts.boolean` is set for that argument name. - -Any arguments after `'--'` will not be parsed and will end up in `argv._`. - -options can be: - -* `opts.string` - a string or array of strings argument names to always treat as -strings -* `opts.boolean` - a string or array of strings to always treat as booleans -* `opts.alias` - an object mapping string names to strings or arrays of string -argument names to use as aliases -* `opts.default` - an object mapping string argument names to default values - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install minimist -``` - -# license - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/bool.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/bool.js deleted file mode 100644 index 749e083c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/bool.js +++ /dev/null @@ -1,119 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('flag boolean default false', function (t) { - var argv = parse(['moo'], { - boolean: ['t', 'verbose'], - default: { verbose: false, t: false } - }); - - t.deepEqual(argv, { - verbose: false, - t: false, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { - boolean: ['x','y','z'] - }); - - t.deepEqual(argv, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ] - }); - - t.deepEqual(typeof argv.x, 'boolean'); - t.deepEqual(typeof argv.y, 'boolean'); - t.deepEqual(typeof argv.z, 'boolean'); - t.end(); -}); -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = parse(aliased, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var propertyArgv = parse(regular, { - boolean: 'herp', - alias: { h: 'herp' } - }); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - alias: { 'h': 'herp' }, - boolean: 'herp' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ 'derp' ] - }; - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - alias: { h: 'herp' }, - boolean: 'h' - }; - var aliasedArgv = parse(aliased, opts); - var propertyArgv = parse(regular, opts); - var expected = { - herp: true, - h: true, - '_': [ ] - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = parse(['--boool', '--other=true'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = parse(['--boool', '--other=false'], { - boolean: 'boool' - }); - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dash.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dash.js deleted file mode 100644 index 8b034b99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dash.js +++ /dev/null @@ -1,24 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('-', function (t) { - t.plan(5); - t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); - t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); - t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); - t.deepEqual( - parse([ '-b', '-' ], { boolean: 'b' }), - { b: true, _: [ '-' ] } - ); - t.deepEqual( - parse([ '-s', '-' ], { string: 's' }), - { s: '-', _: [] } - ); -}); - -test('-a -- b', function (t) { - t.plan(3); - t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); - t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); - t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/default_bool.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/default_bool.js deleted file mode 100644 index f0041ee4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/default_bool.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require('tape'); -var parse = require('../'); - -test('boolean default true', function (t) { - var argv = parse([], { - boolean: 'sometrue', - default: { sometrue: true } - }); - t.equal(argv.sometrue, true); - t.end(); -}); - -test('boolean default false', function (t) { - var argv = parse([], { - boolean: 'somefalse', - default: { somefalse: false } - }); - t.equal(argv.somefalse, false); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dotted.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dotted.js deleted file mode 100644 index d8b3e856..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/dotted.js +++ /dev/null @@ -1,22 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('dotted alias', function (t) { - var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); - t.equal(argv.a.b, 22); - t.equal(argv.aa.bb, 22); - t.end(); -}); - -test('dotted default', function (t) { - var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); - t.equal(argv.a.b, 11); - t.equal(argv.aa.bb, 11); - t.end(); -}); - -test('dotted default with no alias', function (t) { - var argv = parse('', {default: {'a.b': 11}}); - t.equal(argv.a.b, 11); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/long.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/long.js deleted file mode 100644 index 5d3a1e09..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/long.js +++ /dev/null @@ -1,31 +0,0 @@ -var test = require('tape'); -var parse = require('../'); - -test('long opts', function (t) { - t.deepEqual( - parse([ '--bool' ]), - { bool : true, _ : [] }, - 'long boolean' - ); - t.deepEqual( - parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [] }, - 'long capture sp' - ); - t.deepEqual( - parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [] }, - 'long capture eq' - ); - t.deepEqual( - parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [] }, - 'long captures sp' - ); - t.deepEqual( - parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [] }, - 'long captures eq' - ); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/num.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/num.js deleted file mode 100644 index 2cc77f4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/num.js +++ /dev/null @@ -1,36 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('nums', function (t) { - var argv = parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789' - ]); - t.deepEqual(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ] - }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv.y, 'number'); - t.deepEqual(typeof argv.z, 'number'); - t.deepEqual(typeof argv.w, 'string'); - t.deepEqual(typeof argv.hex, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); - -test('already a number', function (t) { - var argv = parse([ '-x', 1234, 789 ]); - t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); - t.deepEqual(typeof argv.x, 'number'); - t.deepEqual(typeof argv._[0], 'number'); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse.js deleted file mode 100644 index 7b4a2a17..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse.js +++ /dev/null @@ -1,197 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('parse args', function (t) { - t.deepEqual( - parse([ '--no-moo' ]), - { moo : false, _ : [] }, - 'no' - ); - t.deepEqual( - parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [] }, - 'multi' - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.deepEqual( - parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ] - } - ); - t.end(); -}); - -test('flag boolean', function (t) { - var argv = parse([ '-t', 'moo' ], { boolean: 't' }); - t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { - boolean: [ 't', 'verbose' ], - default: { verbose: true } - }); - - t.deepEqual(argv, { - verbose: false, - t: true, - _: ['moo'] - }); - - t.deepEqual(typeof argv.verbose, 'boolean'); - t.deepEqual(typeof argv.t, 'boolean'); - t.end(); -}); - -test('newlines in params' , function (t) { - var args = parse([ '-s', "X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - - // reproduce in bash: - // VALUE="new - // line" - // node program.js --s="$VALUE" - args = parse([ "--s=X\nX" ]) - t.deepEqual(args, { _ : [], s : "X\nX" }); - t.end(); -}); - -test('strings' , function (t) { - var s = parse([ '-s', '0001234' ], { string: 's' }).s; - t.equal(s, '0001234'); - t.equal(typeof s, 'string'); - - var x = parse([ '-x', '56' ], { string: 'x' }).x; - t.equal(x, '56'); - t.equal(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = parse([ ' ', ' ' ], { string: '_' })._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('empty strings', function(t) { - var s = parse([ '-s' ], { string: 's' }).s; - t.equal(s, ''); - t.equal(typeof s, 'string'); - - var str = parse([ '--str' ], { string: 'str' }).str; - t.equal(str, ''); - t.equal(typeof str, 'string'); - - var letters = parse([ '-art' ], { - string: [ 'a', 't' ] - }); - - t.equal(letters.a, ''); - t.equal(letters.r, true); - t.equal(letters.t, ''); - - t.end(); -}); - - -test('string and alias', function(t) { - var x = parse([ '--str', '000123' ], { - string: 's', - alias: { s: 'str' } - }); - - t.equal(x.str, '000123'); - t.equal(typeof x.str, 'string'); - t.equal(x.s, '000123'); - t.equal(typeof x.s, 'string'); - - var y = parse([ '-s', '000123' ], { - string: 'str', - alias: { str: 's' } - }); - - t.equal(y.str, '000123'); - t.equal(typeof y.str, 'string'); - t.equal(y.s, '000123'); - t.equal(typeof y.s, 'string'); - t.end(); -}); - -test('slashBreak', function (t) { - t.same( - parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [] } - ); - t.same( - parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [] } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: 'zoom' } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = parse([ '-f', '11', '--zoom', '55' ], { - alias: { z: [ 'zm', 'zoom' ] } - }); - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = parse([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]); - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - } - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse_modified.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse_modified.js deleted file mode 100644 index 21851b03..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/parse_modified.js +++ /dev/null @@ -1,9 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('parse with modifier functions' , function (t) { - t.plan(1); - - var argv = parse([ '-b', '123' ], { boolean: 'b' }); - t.deepEqual(argv, { b: true, _: ['123'] }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/short.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/short.js deleted file mode 100644 index d513a1c2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/short.js +++ /dev/null @@ -1,67 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('numeric short args', function (t) { - t.plan(2); - t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); - t.deepEqual( - parse([ '-123', '456' ]), - { 1: true, 2: true, 3: 456, _: [] } - ); -}); - -test('short', function (t) { - t.deepEqual( - parse([ '-b' ]), - { b : true, _ : [] }, - 'short boolean' - ); - t.deepEqual( - parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ] }, - 'bare' - ); - t.deepEqual( - parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [] }, - 'group' - ); - t.deepEqual( - parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [] }, - 'short group next' - ); - t.deepEqual( - parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [] }, - 'short capture' - ); - t.deepEqual( - parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [] }, - 'short captures' - ); - t.end(); -}); - -test('mixed short bool and capture', function (t) { - t.same( - parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ] - } - ); - t.end(); -}); - -test('short and long', function (t) { - t.deepEqual( - parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ] - } - ); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/whitespace.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/whitespace.js deleted file mode 100644 index 8a52a58c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/node_modules/minimist/test/whitespace.js +++ /dev/null @@ -1,8 +0,0 @@ -var parse = require('../'); -var test = require('tape'); - -test('whitespace should be whitespace' , function (t) { - t.plan(1); - var x = parse([ '-x', '\t' ]).x; - t.equal(x, '\t'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/package.json deleted file mode 100644 index fc9cd08f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "optimist@~0.6.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/tslint" - ] - ], - "_from": "optimist@>=0.6.0 <0.7.0", - "_id": "optimist@0.6.1", - "_inCache": true, - "_installable": true, - "_location": "/optimist", - "_npmUser": { - "email": "mail@substack.net", - "name": "substack" - }, - "_npmVersion": "1.3.21", - "_phantomChildren": {}, - "_requested": { - "name": "optimist", - "raw": "optimist@~0.6.0", - "rawSpec": "~0.6.0", - "scope": null, - "spec": ">=0.6.0 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/tslint" - ], - "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "_shasum": "da3ea74686fa21a19a111c326e90eb15a0196686", - "_shrinkwrap": null, - "_spec": "optimist@~0.6.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tslint", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-optimist/issues" - }, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "description": "Light-weight option parsing with an argv hash. No optstrings attached.", - "devDependencies": { - "hashish": "~0.0.4", - "tap": "~0.4.0" - }, - "directories": {}, - "dist": { - "shasum": "da3ea74686fa21a19a111c326e90eb15a0196686", - "tarball": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" - }, - "engine": { - "node": ">=0.4" - }, - "homepage": "https://github.com/substack/node-optimist", - "keywords": [ - "argument", - "args", - "option", - "parser", - "parsing", - "cli", - "command" - ], - "license": "MIT/X11", - "main": "./index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "optimist", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/substack/node-optimist.git" - }, - "scripts": { - "test": "tap ./test/*.js" - }, - "version": "0.6.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/readme.markdown deleted file mode 100644 index b74b4372..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/readme.markdown +++ /dev/null @@ -1,513 +0,0 @@ -# DEPRECATION NOTICE - -I don't want to maintain this module anymore since I just use -[minimist](https://npmjs.org/package/minimist), the argument parsing engine, -directly instead nowadays. - -See [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed -successor to optimist. - -[![yarrrrrrrgs!](http://i.imgur.com/4WFGVJ9.png)](https://github.com/chevex/yargs) - -You should also consider [nomnom](https://github.com/harthur/nomnom). - -optimist -======== - -Optimist is a node.js library for option parsing for people who hate option -parsing. More specifically, this module is for people who like all the --bells -and -whistlz of program usage but think optstrings are a waste of time. - -With optimist, option parsing doesn't have to suck (as much). - -[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) - -examples -======== - -With Optimist, the options are just a hash! No optstrings attached. -------------------------------------------------------------------- - -xup.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} -```` - -*** - - $ ./xup.js --rif=55 --xup=9.52 - Buy more riffiwobbles - - $ ./xup.js --rif 12 --xup 8.1 - Sell the xupptumblers - -![This one's optimistic.](http://substack.net/images/optimistic.png) - -But wait! There's more! You can do short options: -------------------------------------------------- - -short.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -```` - -*** - - $ ./short.js -x 10 -y 21 - (10,21) - -And booleans, both long and short (and grouped): ----------------------------------- - -bool.js: - -````javascript -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); -```` - -*** - - $ ./bool.js -s - The cat says: meow - - $ ./bool.js -sp - The cat says: meow. - - $ ./bool.js -sp --fr - Le chat dit: miaou. - -And non-hypenated options too! Just use `argv._`! -------------------------------------------------- - -nonopt.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); -```` - -*** - - $ ./nonopt.js -x 6.82 -y 3.35 moo - (6.82,3.35) - [ 'moo' ] - - $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz - (0.54,1.12) - [ 'foo', 'bar', 'baz' ] - -Plus, Optimist comes with .usage() and .demand()! -------------------------------------------------- - -divide.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); -```` - -*** - - $ ./divide.js -x 55 -y 11 - 5 - - $ node ./divide.js -x 4.91 -z 2.51 - Usage: node ./divide.js -x [num] -y [num] - - Options: - -x [required] - -y [required] - - Missing required arguments: y - -EVEN MORE HOLY COW ------------------- - -default_singles.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_singles.js -x 5 - 15 - -default_hash.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_hash.js -y 7 - 17 - -And if you really want to get all descriptive about it... ---------------------------------------------------------- - -boolean_single.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv); -```` - -*** - - $ ./boolean_single.js -v foo bar baz - true - [ 'bar', 'baz', 'foo' ] - -boolean_double.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); -```` - -*** - - $ ./boolean_double.js -x -z one two three - [ true, false, true ] - [ 'one', 'two', 'three' ] - -Optimist is here to help... ---------------------------- - -You can describe parameters for help messages and set aliases. Optimist figures -out how to format a handy help string automatically. - -line_count.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); -```` - -*** - - $ node line_count.js - Count the lines in a file. - Usage: node ./line_count.js - - Options: - -f, --file Load a file [required] - - Missing required arguments: f - - $ node line_count.js --file line_count.js - 20 - - $ node line_count.js -f line_count.js - 20 - -methods -======= - -By itself, - -````javascript -require('optimist').argv -````` - -will use `process.argv` array to construct the `argv` object. - -You can pass in the `process.argv` yourself: - -````javascript -require('optimist')([ '-x', '1', '-y', '2' ]).argv -```` - -or use .parse() to do the same thing: - -````javascript -require('optimist').parse([ '-x', '1', '-y', '2' ]) -```` - -The rest of these methods below come in just before the terminating `.argv`. - -.alias(key, alias) ------------------- - -Set key names as equivalent such that updates to a key will propagate to aliases -and vice-versa. - -Optionally `.alias()` can take an object that maps keys to aliases. - -.default(key, value) --------------------- - -Set `argv[key]` to `value` if no option was specified on `process.argv`. - -Optionally `.default()` can take an object that maps keys to default values. - -.demand(key) ------------- - -If `key` is a string, show the usage information and exit if `key` wasn't -specified in `process.argv`. - -If `key` is a number, demand at least as many non-option arguments, which show -up in `argv._`. - -If `key` is an Array, demand each element. - -.describe(key, desc) --------------------- - -Describe a `key` for the generated usage information. - -Optionally `.describe()` can take an object that maps keys to descriptions. - -.options(key, opt) ------------------- - -Instead of chaining together `.alias().demand().default()`, you can specify -keys in `opt` for each of the chainable methods. - -For example: - -````javascript -var argv = require('optimist') - .options('f', { - alias : 'file', - default : '/etc/passwd', - }) - .argv -; -```` - -is the same as - -````javascript -var argv = require('optimist') - .alias('f', 'file') - .default('f', '/etc/passwd') - .argv -; -```` - -Optionally `.options()` can take an object that maps keys to `opt` parameters. - -.usage(message) ---------------- - -Set a usage message to show which commands to use. Inside `message`, the string -`$0` will get interpolated to the current script name or node command for the -present script similar to how `$0` works in bash or perl. - -.check(fn) ----------- - -Check that certain conditions are met in the provided arguments. - -If `fn` throws or returns `false`, show the thrown error, usage information, and -exit. - -.boolean(key) -------------- - -Interpret `key` as a boolean. If a non-flag option follows `key` in -`process.argv`, that string won't get set as the value of `key`. - -If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be -`false`. - -If `key` is an Array, interpret all the elements as booleans. - -.string(key) ------------- - -Tell the parser logic not to interpret `key` as a number or boolean. -This can be useful if you need to preserve leading zeros in an input. - -If `key` is an Array, interpret all the elements as strings. - -.wrap(columns) --------------- - -Format usage output to wrap at `columns` many columns. - -.help() -------- - -Return the generated usage string. - -.showHelp(fn=console.error) ---------------------------- - -Print the usage data using `fn` for printing. - -.parse(args) ------------- - -Parse `args` instead of `process.argv`. Returns the `argv` object. - -.argv ------ - -Get the arguments as a plain old object. - -Arguments without a corresponding flag show up in the `argv._` array. - -The script name or node command is available at `argv.$0` similarly to how `$0` -works in bash or perl. - -parsing tricks -============== - -stop parsing ------------- - -Use `--` to stop parsing flags and stuff the remainder into `argv._`. - - $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 - { _: [ '-c', '3', '-d', '4' ], - '$0': 'node ./examples/reflect.js', - a: 1, - b: 2 } - -negate fields -------------- - -If you want to explicity set a field to false instead of just leaving it -undefined or to override a default you can do `--no-key`. - - $ node examples/reflect.js -a --no-b - { _: [], - '$0': 'node ./examples/reflect.js', - a: true, - b: false } - -numbers -------- - -Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to -one. This way you can just `net.createConnection(argv.port)` and you can add -numbers out of `argv` with `+` without having that mean concatenation, -which is super frustrating. - -duplicates ----------- - -If you specify a flag multiple times it will get turned into an array containing -all the values in order. - - $ node examples/reflect.js -x 5 -x 8 -x 0 - { _: [], - '$0': 'node ./examples/reflect.js', - x: [ 5, 8, 0 ] } - -dot notation ------------- - -When you use dots (`.`s) in argument names, an implicit object path is assumed. -This lets you organize arguments into nested objects. - - $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 - { _: [], - '$0': 'node ./examples/reflect.js', - foo: { bar: { baz: 33 }, quux: 5 } } - -short numbers -------------- - -Short numeric `head -n5` style argument work too: - - $ node reflect.js -n123 -m456 - { '3': true, - '6': true, - _: [], - '$0': 'node ./reflect.js', - n: 123, - m: 456 } - -installation -============ - -With [npm](http://github.com/isaacs/npm), just do: - npm install optimist - -or clone this project on github: - - git clone http://github.com/substack/node-optimist.git - -To run the tests with [expresso](http://github.com/visionmedia/expresso), -just do: - - expresso - -inspired By -=========== - -This module is loosely inspired by Perl's -[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_.js deleted file mode 100644 index d9c58b36..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_.js +++ /dev/null @@ -1,71 +0,0 @@ -var spawn = require('child_process').spawn; -var test = require('tap').test; - -test('dotSlashEmpty', testCmd('./bin.js', [])); - -test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); - -test('nodeEmpty', testCmd('node bin.js', [])); - -test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); - -test('whichNodeEmpty', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', []) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - assert.error(err); - t.end(); - }); -}); - -test('whichNodeArgs', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); -}); - -function testCmd (cmd, args) { - - return function (t) { - var to = setTimeout(function () { - assert.fail('Never got stdout data.') - }, 5000); - - var oldDir = process.cwd(); - process.chdir(__dirname + '/_'); - - var cmds = cmd.split(' '); - - var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); - process.chdir(oldDir); - - bin.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); - - bin.stdout.on('data', function (buf) { - clearTimeout(to); - var _ = JSON.parse(buf.toString()); - t.same(_.map(String), args.map(String)); - t.end(); - }); - }; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/argv.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/argv.js deleted file mode 100644 index 3d096062..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/argv.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.log(JSON.stringify(process.argv)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/bin.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/bin.js deleted file mode 100755 index 4a18d85f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/_/bin.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('../../index').argv -console.log(JSON.stringify(argv._)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/dash.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/dash.js deleted file mode 100644 index af8ed6fc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/dash.js +++ /dev/null @@ -1,31 +0,0 @@ -var optimist = require('../index'); -var test = require('tap').test; - -test('-', function (t) { - t.plan(5); - t.deepEqual( - fix(optimist.parse([ '-n', '-' ])), - { n: '-', _: [] } - ); - t.deepEqual( - fix(optimist.parse([ '-' ])), - { _: [ '-' ] } - ); - t.deepEqual( - fix(optimist.parse([ '-f-' ])), - { f: '-', _: [] } - ); - t.deepEqual( - fix(optimist([ '-b', '-' ]).boolean('b').argv), - { b: true, _: [ '-' ] } - ); - t.deepEqual( - fix(optimist([ '-s', '-' ]).string('s').argv), - { s: '-', _: [] } - ); -}); - -function fix (obj) { - delete obj.$0; - return obj; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse.js deleted file mode 100644 index d320f433..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse.js +++ /dev/null @@ -1,446 +0,0 @@ -var optimist = require('../index'); -var path = require('path'); -var test = require('tap').test; - -var $0 = 'node ./' + path.relative(process.cwd(), __filename); - -test('short boolean', function (t) { - var parse = optimist.parse([ '-b' ]); - t.same(parse, { b : true, _ : [], $0 : $0 }); - t.same(typeof parse.b, 'boolean'); - t.end(); -}); - -test('long boolean', function (t) { - t.same( - optimist.parse([ '--bool' ]), - { bool : true, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('bare', function (t) { - t.same( - optimist.parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } - ); - t.end(); -}); - -test('short group', function (t) { - t.same( - optimist.parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short group next', function (t) { - t.same( - optimist.parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short captures', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long capture sp', function (t) { - t.same( - optimist.parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long capture eq', function (t) { - t.same( - optimist.parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [], $0 : $0 } - ); - t.end() -}); - -test('long captures sp', function (t) { - t.same( - optimist.parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long captures eq', function (t) { - t.same( - optimist.parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('mixed short bool and capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : $0, - } - ); - t.end(); -}); - -test('short and long', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : $0, - } - ); - t.end(); -}); - -test('no', function (t) { - t.same( - optimist.parse([ '--no-moo' ]), - { moo : false, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('multi', function (t) { - t.same( - optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [], $0 : $0 } - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.same( - optimist.parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ], - $0 : $0 - } - ); - t.end(); -}); - -test('nums', function (t) { - var argv = optimist.parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789', - ]); - t.same(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ], - $0 : $0 - }); - t.same(typeof argv.x, 'number'); - t.same(typeof argv.y, 'number'); - t.same(typeof argv.z, 'number'); - t.same(typeof argv.w, 'string'); - t.same(typeof argv.hex, 'number'); - t.same(typeof argv._[0], 'number'); - t.end(); -}); - -test('flag boolean', function (t) { - var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; - t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) - .boolean(['t', 'verbose']).default('verbose', true).argv; - - t.same(parse, { - verbose: false, - t: true, - _: ['moo'], - $0 : $0 - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean default false', function (t) { - var parse = optimist(['moo']) - .boolean(['t', 'verbose']) - .default('verbose', false) - .default('t', false).argv; - - t.same(parse, { - verbose: false, - t: false, - _: ['moo'], - $0 : $0 - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) - .boolean(['x','y','z']).argv; - - t.same(parse, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ], - $0 : $0 - }); - - t.same(typeof parse.x, 'boolean'); - t.same(typeof parse.y, 'boolean'); - t.same(typeof parse.z, 'boolean'); - t.end(); -}); - -test('newlines in params' , function (t) { - var args = optimist.parse([ '-s', "X\nX" ]) - t.same(args, { _ : [], s : "X\nX", $0 : $0 }); - - // reproduce in bash: - // VALUE="new - // line" - // node program.js --s="$VALUE" - args = optimist.parse([ "--s=X\nX" ]) - t.same(args, { _ : [], s : "X\nX", $0 : $0 }); - t.end(); -}); - -test('strings' , function (t) { - var s = optimist([ '-s', '0001234' ]).string('s').argv.s; - t.same(s, '0001234'); - t.same(typeof s, 'string'); - - var x = optimist([ '-x', '56' ]).string('x').argv.x; - t.same(x, '56'); - t.same(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = optimist([ ' ', ' ' ]).string('_').argv._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('slashBreak', function (t) { - t.same( - optimist.parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [], $0 : $0 } - ); - t.same( - optimist.parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', 'zoom') - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', [ 'zm', 'zoom' ]) - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('boolean default true', function (t) { - var argv = optimist.options({ - sometrue: { - boolean: true, - default: true - } - }).argv; - - t.equal(argv.sometrue, true); - t.end(); -}); - -test('boolean default false', function (t) { - var argv = optimist.options({ - somefalse: { - boolean: true, - default: false - } - }).argv; - - t.equal(argv.somefalse, false); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = optimist([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]).argv; - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - }, - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); - -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('herp') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('herp') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .options(opts) - .argv; - var propertyArgv = optimist(regular).options(opts).argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('h') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('h') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse_modified.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse_modified.js deleted file mode 100644 index a57dc84e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/parse_modified.js +++ /dev/null @@ -1,14 +0,0 @@ -var optimist = require('../'); -var test = require('tap').test; - -test('parse with modifier functions' , function (t) { - t.plan(1); - - var argv = optimist().boolean('b').parse([ '-b', '123' ]); - t.deepEqual(fix(argv), { b: true, _: ['123'] }); -}); - -function fix (obj) { - delete obj.$0; - return obj; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/short.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/short.js deleted file mode 100644 index b2c38ad8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/short.js +++ /dev/null @@ -1,16 +0,0 @@ -var optimist = require('../index'); -var test = require('tap').test; - -test('-n123', function (t) { - t.plan(1); - var parse = optimist.parse([ '-n123' ]); - t.equal(parse.n, 123); -}); - -test('-123', function (t) { - t.plan(3); - var parse = optimist.parse([ '-123', '456' ]); - t.equal(parse['1'], true); - t.equal(parse['2'], true); - t.equal(parse['3'], 456); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/usage.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/usage.js deleted file mode 100644 index 300454c1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/usage.js +++ /dev/null @@ -1,292 +0,0 @@ -var Hash = require('hashish'); -var optimist = require('../index'); -var test = require('tap').test; - -test('usageFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'Options:', - ' -x [required]', - ' -y [required]', - 'Missing required arguments: y', - ] - ); - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - - -test('usagePass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkPass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'You forgot about -y' - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('checkCondPass', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkCondFail', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/).join('\n'), - 'Usage: ./usage -x NUM -y NUM\n' - + 'Argument check failed: ' + checker.toString() - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('countPass', function (t) { - var r = checkUsage(function () { - return optimist('1 2 3 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same(r, { - result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('countFail', function (t) { - var r = checkUsage(function () { - return optimist('1 2 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same( - r.result, - { _ : [ '1', '2' ], moo : true, $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage [x] [y] [z] {OPTIONS}', - 'Not enough non-option arguments: got 2, need at least 3', - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('defaultSingles', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70 --powsy'.split(' ')) - .default('foo', 5) - .default('bar', 6) - .default('baz', 7) - .argv - ; - }); - t.same(r.result, { - foo : '50', - bar : 6, - baz : '70', - powsy : true, - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultAliases', function (t) { - var r = checkUsage(function () { - return optimist('') - .alias('f', 'foo') - .default('f', 5) - .argv - ; - }); - t.same(r.result, { - f : '5', - foo : '5', - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultHash', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70'.split(' ')) - .default({ foo : 10, bar : 20, quux : 30 }) - .argv - ; - }); - t.same(r.result, { - _ : [], - $0 : './usage', - foo : 50, - baz : 70, - bar : 20, - quux : 30, - }); - t.end(); -}); - -test('rebase', function (t) { - t.equal( - optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), - './foo/bar/baz' - ); - t.equal( - optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), - '../../..' - ); - t.equal( - optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), - '../pow/zoom.txt' - ); - t.end(); -}); - -function checkUsage (f) { - - var exit = false; - - process._exit = process.exit; - process._env = process.env; - process._argv = process.argv; - - process.exit = function (t) { exit = true }; - process.env = Hash.merge(process.env, { _ : 'node' }); - process.argv = [ './usage' ]; - - var errors = []; - var logs = []; - - console._error = console.error; - console.error = function (msg) { errors.push(msg) }; - console._log = console.log; - console.log = function (msg) { logs.push(msg) }; - - var result = f(); - - process.exit = process._exit; - process.env = process._env; - process.argv = process._argv; - - console.error = console._error; - console.log = console._log; - - return { - errors : errors, - logs : logs, - exit : exit, - result : result, - }; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/whitespace.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/whitespace.js deleted file mode 100644 index 90b90752..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/optimist/test/whitespace.js +++ /dev/null @@ -1,8 +0,0 @@ -var optimist = require('../'); -var test = require('tap').test; - -test('whitespace should be whitespace' , function (t) { - t.plan(1); - var x = optimist.parse([ '-x', '\t' ]).x; - t.equal(x, '\t'); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/.npmignore deleted file mode 100644 index 2422e204..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/.npmignore +++ /dev/null @@ -1,10 +0,0 @@ -.DS_Store -*.log -node_modules -build -*.node -components -*.orig -.idea -test -.travis.yml diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/LICENSE deleted file mode 100644 index 3d20afd9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 [Richardson & Sons, LLC](http://richardsonandsons.com/) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/README.md deleted file mode 100644 index 3d3fee45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/README.md +++ /dev/null @@ -1,286 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/orchestrator/orchestrator.svg?branch=master)](https://travis-ci.org/orchestrator/orchestrator) -[![Dependency Status](https://david-dm.org/orchestrator/orchestrator.svg)](https://david-dm.org/orchestrator/orchestrator) - -Orchestrator -============ - -A module for sequencing and executing tasks and dependencies in maximum concurrency - -Usage ------ - -### 1. Get a reference: - -```javascript -var Orchestrator = require('orchestrator'); -var orchestrator = new Orchestrator(); -``` - -### 2. Load it up with stuff to do: - -```javascript -orchestrator.add('thing1', function(){ - // do stuff -}); -orchestrator.add('thing2', function(){ - // do stuff -}); -``` - -### 3. Run the tasks: - -```javascript -orchestrator.start('thing1', 'thing2', function (err) { - // all done -}); -``` - -API ---- - -### orchestrator.add(name[, deps][, function]); - -Define a task - -```javascript -orchestrator.add('thing1', function(){ - // do stuff -}); -``` - -#### name -Type: `String` - -The name of the task. - -#### deps -Type: `Array` - -An array of task names to be executed and completed before your task will run. - -```javascript -orchestrator.add('mytask', ['array', 'of', 'task', 'names'], function() { - // Do stuff -}); -``` - -**Note:** Are your tasks running before the dependencies are complete? Make sure your dependency tasks -are correctly using the async run hints: take in a callback or return a promise or event stream. - -#### fn -Type: `function` - -The function that performs the task's operations. For asynchronous tasks, you need to provide a hint when the task is complete: - -- Take in a callback -- Return a stream or a promise - -#### examples: - -**Accept a callback:** - -```javascript -orchestrator.add('thing2', function(callback){ - // do stuff - callback(err); -}); -``` - -**Return a promise:** - -```javascript -var Q = require('q'); - -orchestrator.add('thing3', function(){ - var deferred = Q.defer(); - - // do async stuff - setTimeout(function () { - deferred.resolve(); - }, 1); - - return deferred.promise; -}); -``` - -**Return a stream:** (task is marked complete when stream ends) - -```javascript -var map = require('map-stream'); - -orchestrator.add('thing4', function(){ - var stream = map(function (args, cb) { - cb(null, args); - }); - // do stream stuff - return stream; -}); -``` - -**Note:** By default, tasks run with maximum concurrency -- e.g. it launches all the tasks at once and waits for nothing. -If you want to create a series where tasks run in a particular order, you need to do two things: - -- give it a hint to tell it when the task is done, -- and give it a hint that a task depends on completion of another. - -For these examples, let's presume you have two tasks, "one" and "two" that you specifically want to run in this order: - -1. In task "one" you add a hint to tell it when the task is done. Either take in a callback and call it when you're -done or return a promise or stream that the engine should wait to resolve or end respectively. - -2. In task "two" you add a hint telling the engine that it depends on completion of the first task. - -So this example would look like this: - -```javascript -var Orchestrator = require('orchestrator'); -var orchestrator = new Orchestrator(); - -// takes in a callback so the engine knows when it'll be done -orchestrator.add('one', function (cb) { - // do stuff -- async or otherwise - cb(err); // if err is not null or undefined, the orchestration will stop, and note that it failed -}); - -// identifies a dependent task must be complete before this one begins -orchestrator.add('two', ['one'], function () { - // task 'one' is done now -}); - -orchestrator.start('one', 'two'); -``` - -### orchestrator.hasTask(name); - -Have you defined a task with this name? - -#### name -Type: `String` - -The task name to query - -### orchestrator.start(tasks...[, cb]); - -Start running the tasks - -#### tasks -Type: `String` or `Array` of `String`s - -Tasks to be executed. You may pass any number of tasks as individual arguments. - -#### cb -Type: `function`: `function (err) {` - -Callback to call after run completed. - -Passes single argument: `err`: did the orchestration succeed? - -**Note:** Tasks run concurrently and therefore may not complete in order. -**Note:** Orchestrator uses `sequencify` to resolve dependencies before running, and therefore may not start in order. -Listen to orchestration events to watch task running. - -```javascript -orchestrator.start('thing1', 'thing2', 'thing3', 'thing4', function (err) { - // all done -}); -``` -```javascript -orchestrator.start(['thing1','thing2'], ['thing3','thing4']); -``` - -**FRAGILE:** Orchestrator catches exceptions on sync runs to pass to your callback -but doesn't hook to process.uncaughtException so it can't pass those exceptions -to your callback - -**FRAGILE:** Orchestrator will ensure each task and each dependency is run once during an orchestration run -even if you specify it to run more than once. (e.g. `orchestrator.start('thing1', 'thing1')` -will only run 'thing1' once.) If you need it to run a task multiple times, wait for -the orchestration to end (start's callback) then call start again. -(e.g. `orchestrator.start('thing1', function () {orchestrator.start('thing1');})`.) -Alternatively create a second orchestrator instance. - -### orchestrator.stop() - -Stop an orchestration run currently in process - -**Note:** It will call the `start()` callback with an `err` noting the orchestration was aborted - -### orchestrator.on(event, cb); - -Listen to orchestrator internals - -#### event -Type: `String` - -Event name to listen to: -- start: from start() method, shows you the task sequence -- stop: from stop() method, the queue finished successfully -- err: from stop() method, the queue was aborted due to a task error -- task_start: from _runTask() method, task was started -- task_stop: from _runTask() method, task completed successfully -- task_err: from _runTask() method, task errored -- task_not_found: from start() method, you're trying to start a task that doesn't exist -- task_recursion: from start() method, there are recursive dependencies in your task list - -#### cb -Type: `function`: `function (e) {` - -Passes single argument: `e`: event details - -```javascript -orchestrator.on('task_start', function (e) { - // e.message is the log message - // e.task is the task name if the message applies to a task else `undefined` - // e.err is the error if event is 'err' else `undefined` -}); -// for task_end and task_err: -orchestrator.on('task_stop', function (e) { - // e is the same object from task_start - // e.message is updated to show how the task ended - // e.duration is the task run duration (in seconds) -}); -``` - -**Note:** fires either *stop or *err but not both. - -### orchestrator.onAll(cb); - -Listen to all orchestrator events from one callback - -#### cb -Type: `function`: `function (e) {` - -Passes single argument: `e`: event details - -```javascript -orchestrator.onAll(function (e) { - // e is the original event args - // e.src is event name -}); -``` - -LICENSE -------- - -(MIT License) - -Copyright (c) 2013 [Richardson & Sons, LLC](http://richardsonandsons.com/) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/index.js deleted file mode 100644 index b13d9927..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/index.js +++ /dev/null @@ -1,304 +0,0 @@ -/*jshint node:true */ - -"use strict"; - -var util = require('util'); -var events = require('events'); -var EventEmitter = events.EventEmitter; -var runTask = require('./lib/runTask'); - -var Orchestrator = function () { - EventEmitter.call(this); - this.doneCallback = undefined; // call this when all tasks in the queue are done - this.seq = []; // the order to run the tasks - this.tasks = {}; // task objects: name, dep (list of names of dependencies), fn (the task to run) - this.isRunning = false; // is the orchestrator running tasks? .start() to start, .stop() to stop -}; -util.inherits(Orchestrator, EventEmitter); - - Orchestrator.prototype.reset = function () { - if (this.isRunning) { - this.stop(null); - } - this.tasks = {}; - this.seq = []; - this.isRunning = false; - this.doneCallback = undefined; - return this; - }; - Orchestrator.prototype.add = function (name, dep, fn) { - if (!fn && typeof dep === 'function') { - fn = dep; - dep = undefined; - } - dep = dep || []; - fn = fn || function () {}; // no-op - if (!name) { - throw new Error('Task requires a name'); - } - // validate name is a string, dep is an array of strings, and fn is a function - if (typeof name !== 'string') { - throw new Error('Task requires a name that is a string'); - } - if (typeof fn !== 'function') { - throw new Error('Task '+name+' requires a function that is a function'); - } - if (!Array.isArray(dep)) { - throw new Error('Task '+name+' can\'t support dependencies that is not an array of strings'); - } - dep.forEach(function (item) { - if (typeof item !== 'string') { - throw new Error('Task '+name+' dependency '+item+' is not a string'); - } - }); - this.tasks[name] = { - fn: fn, - dep: dep, - name: name - }; - return this; - }; - Orchestrator.prototype.task = function (name, dep, fn) { - if (dep || fn) { - // alias for add, return nothing rather than this - this.add(name, dep, fn); - } else { - return this.tasks[name]; - } - }; - Orchestrator.prototype.hasTask = function (name) { - return !!this.tasks[name]; - }; - // tasks and optionally a callback - Orchestrator.prototype.start = function() { - var args, arg, names = [], lastTask, i, seq = []; - args = Array.prototype.slice.call(arguments, 0); - if (args.length) { - lastTask = args[args.length-1]; - if (typeof lastTask === 'function') { - this.doneCallback = lastTask; - args.pop(); - } - for (i = 0; i < args.length; i++) { - arg = args[i]; - if (typeof arg === 'string') { - names.push(arg); - } else if (Array.isArray(arg)) { - names = names.concat(arg); // FRAGILE: ASSUME: it's an array of strings - } else { - throw new Error('pass strings or arrays of strings'); - } - } - } - if (this.isRunning) { - // reset specified tasks (and dependencies) as not run - this._resetSpecificTasks(names); - } else { - // reset all tasks as not run - this._resetAllTasks(); - } - if (this.isRunning) { - // if you call start() again while a previous run is still in play - // prepend the new tasks to the existing task queue - names = names.concat(this.seq); - } - if (names.length < 1) { - // run all tasks - for (i in this.tasks) { - if (this.tasks.hasOwnProperty(i)) { - names.push(this.tasks[i].name); - } - } - } - seq = []; - try { - this.sequence(this.tasks, names, seq, []); - } catch (err) { - // Is this a known error? - if (err) { - if (err.missingTask) { - this.emit('task_not_found', {message: err.message, task:err.missingTask, err: err}); - } - if (err.recursiveTasks) { - this.emit('task_recursion', {message: err.message, recursiveTasks:err.recursiveTasks, err: err}); - } - } - this.stop(err); - return this; - } - this.seq = seq; - this.emit('start', {message:'seq: '+this.seq.join(',')}); - if (!this.isRunning) { - this.isRunning = true; - } - this._runStep(); - return this; - }; - Orchestrator.prototype.stop = function (err, successfulFinish) { - this.isRunning = false; - if (err) { - this.emit('err', {message:'orchestration failed', err:err}); - } else if (successfulFinish) { - this.emit('stop', {message:'orchestration succeeded'}); - } else { - // ASSUME - err = 'orchestration aborted'; - this.emit('err', {message:'orchestration aborted', err: err}); - } - if (this.doneCallback) { - // Avoid calling it multiple times - this.doneCallback(err); - } else if (err && !this.listeners('err').length) { - // No one is listening for the error so speak louder - throw err; - } - }; - Orchestrator.prototype.sequence = require('sequencify'); - Orchestrator.prototype.allDone = function () { - var i, task, allDone = true; // nothing disputed it yet - for (i = 0; i < this.seq.length; i++) { - task = this.tasks[this.seq[i]]; - if (!task.done) { - allDone = false; - break; - } - } - return allDone; - }; - Orchestrator.prototype._resetTask = function(task) { - if (task) { - if (task.done) { - task.done = false; - } - delete task.start; - delete task.stop; - delete task.duration; - delete task.hrDuration; - delete task.args; - } - }; - Orchestrator.prototype._resetAllTasks = function() { - var task; - for (task in this.tasks) { - if (this.tasks.hasOwnProperty(task)) { - this._resetTask(this.tasks[task]); - } - } - }; - Orchestrator.prototype._resetSpecificTasks = function (names) { - var i, name, t; - - if (names && names.length) { - for (i = 0; i < names.length; i++) { - name = names[i]; - t = this.tasks[name]; - if (t) { - this._resetTask(t); - if (t.dep && t.dep.length) { - this._resetSpecificTasks(t.dep); // recurse - } - //} else { - // FRAGILE: ignore that the task doesn't exist - } - } - } - }; - Orchestrator.prototype._runStep = function () { - var i, task; - if (!this.isRunning) { - return; // user aborted, ASSUME: stop called previously - } - for (i = 0; i < this.seq.length; i++) { - task = this.tasks[this.seq[i]]; - if (!task.done && !task.running && this._readyToRunTask(task)) { - this._runTask(task); - } - if (!this.isRunning) { - return; // task failed or user aborted, ASSUME: stop called previously - } - } - if (this.allDone()) { - this.stop(null, true); - } - }; - Orchestrator.prototype._readyToRunTask = function (task) { - var ready = true, // no one disproved it yet - i, name, t; - if (task.dep.length) { - for (i = 0; i < task.dep.length; i++) { - name = task.dep[i]; - t = this.tasks[name]; - if (!t) { - // FRAGILE: this should never happen - this.stop("can't run "+task.name+" because it depends on "+name+" which doesn't exist"); - ready = false; - break; - } - if (!t.done) { - ready = false; - break; - } - } - } - return ready; - }; - Orchestrator.prototype._stopTask = function (task, meta) { - task.duration = meta.duration; - task.hrDuration = meta.hrDuration; - task.running = false; - task.done = true; - }; - Orchestrator.prototype._emitTaskDone = function (task, message, err) { - if (!task.args) { - task.args = {task:task.name}; - } - task.args.duration = task.duration; - task.args.hrDuration = task.hrDuration; - task.args.message = task.name+' '+message; - var evt = 'stop'; - if (err) { - task.args.err = err; - evt = 'err'; - } - // 'task_stop' or 'task_err' - this.emit('task_'+evt, task.args); - }; - Orchestrator.prototype._runTask = function (task) { - var that = this; - - task.args = {task:task.name, message:task.name+' started'}; - this.emit('task_start', task.args); - task.running = true; - - runTask(task.fn.bind(this), function (err, meta) { - that._stopTask.call(that, task, meta); - that._emitTaskDone.call(that, task, meta.runMethod, err); - if (err) { - return that.stop.call(that, err); - } - that._runStep.call(that); - }); - }; - -// FRAGILE: ASSUME: this list is an exhaustive list of events emitted -var events = ['start','stop','err','task_start','task_stop','task_err','task_not_found','task_recursion']; - -var listenToEvent = function (target, event, callback) { - target.on(event, function (e) { - e.src = event; - callback(e); - }); -}; - - Orchestrator.prototype.onAll = function (callback) { - var i; - if (typeof callback !== 'function') { - throw new Error('No callback specified'); - } - - for (i = 0; i < events.length; i++) { - listenToEvent(this, events[i], callback); - } - }; - -module.exports = Orchestrator; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/lib/runTask.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/lib/runTask.js deleted file mode 100644 index 97dae22c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/lib/runTask.js +++ /dev/null @@ -1,66 +0,0 @@ -/*jshint node:true */ - -"use strict"; - -var eos = require('end-of-stream'); -var consume = require('stream-consume'); - -module.exports = function (task, done) { - var that = this, finish, cb, isDone = false, start, r; - - finish = function (err, runMethod) { - var hrDuration = process.hrtime(start); - - if (isDone && !err) { - err = new Error('task completion callback called too many times'); - } - isDone = true; - - var duration = hrDuration[0] + (hrDuration[1] / 1e9); // seconds - - done.call(that, err, { - duration: duration, // seconds - hrDuration: hrDuration, // [seconds,nanoseconds] - runMethod: runMethod - }); - }; - - cb = function (err) { - finish(err, 'callback'); - }; - - try { - start = process.hrtime(); - r = task(cb); - } catch (err) { - return finish(err, 'catch'); - } - - if (r && typeof r.then === 'function') { - // wait for promise to resolve - // FRAGILE: ASSUME: Promises/A+, see http://promises-aplus.github.io/promises-spec/ - r.then(function () { - finish(null, 'promise'); - }, function(err) { - finish(err, 'promise'); - }); - - } else if (r && typeof r.pipe === 'function') { - // wait for stream to end - - eos(r, { error: true, readable: r.readable, writable: r.writable && !r.readable }, function(err){ - finish(err, 'stream'); - }); - - // Ensure that the stream completes - consume(r); - - } else if (task.length === 0) { - // synchronous, function took in args.length parameters, and the callback was extra - finish(null, 'sync'); - - //} else { - // FRAGILE: ASSUME: callback - - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/package.json deleted file mode 100644 index d7d1ea30..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/orchestrator/package.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "_args": [ - [ - "orchestrator@^0.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "orchestrator@>=0.3.0 <0.4.0", - "_id": "orchestrator@0.3.7", - "_inCache": true, - "_installable": true, - "_location": "/orchestrator", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "orchestrator", - "raw": "orchestrator@^0.3.0", - "rawSpec": "^0.3.0", - "scope": null, - "spec": ">=0.3.0 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz", - "_shasum": "c45064e22c5a2a7b99734f409a95ffedc7d3c3df", - "_shrinkwrap": null, - "_spec": "orchestrator@^0.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "name": "Rob Richardson", - "url": "http://robrich.org/" - }, - "bugs": { - "url": "https://github.com/robrich/orchestrator/issues" - }, - "dependencies": { - "end-of-stream": "~0.1.5", - "sequencify": "~0.0.7", - "stream-consume": "~0.1.0" - }, - "description": "A module for sequencing and executing tasks and dependencies in maximum concurrency", - "devDependencies": { - "event-stream": "~3.1.5", - "gulp-jshint": "~1.6.3", - "map-stream": "~0.1.0", - "merge-stream": "~0.1.2", - "mocha": "~1.17.0", - "q": "~1.0.0", - "should": "~3.0.1", - "vinyl-fs": "~0.3.4" - }, - "directories": {}, - "dist": { - "shasum": "c45064e22c5a2a7b99734f409a95ffedc7d3c3df", - "tarball": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.7.tgz" - }, - "engines": { - "node": ">= 0.8" - }, - "gitHead": "f3fcb93e3560afd0bc0c4acd5c5db7bd109414e7", - "homepage": "https://github.com/robrich/orchestrator", - "keywords": [ - "async", - "task", - "parallel", - "compose" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/robrich/orchestrator/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "robrich@robrich.org", - "name": "robrich" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - }, - { - "email": "contra@wearefractal.com", - "name": "contra" - } - ], - "name": "orchestrator", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/robrich/orchestrator.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.3.7" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.npmignore deleted file mode 100644 index a74dcace..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.npmignore +++ /dev/null @@ -1,16 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -coverage -pids -logs -results -node_modules - -npm-debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.travis.yml deleted file mode 100644 index 18ae2d89..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/LICENSE deleted file mode 100644 index 16fd4281..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Artem Medeusheyev - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/README.md deleted file mode 100644 index 8f8be53b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# ordered-read-streams [![NPM version](https://badge.fury.io/js/ordered-read-streams.png)](http://badge.fury.io/js/ordered-read-streams) [![Build Status](https://travis-ci.org/armed/ordered-read-streams.png?branch=master)](https://travis-ci.org/armed/ordered-read-streams) - -Combines array of streams into one read stream in strict order. - -## Installation - -`npm install ordered-read-streams` - -## Overview - -`ordered-read-streams` handles all data/errors from input streams in parallel, but emits data/errors in strict order in which streams are passed to constructor. This is `objectMode = true` stream. - -## Example - -```js -var through = require('through2'); -var Ordered = require('ordered-read-streams'); - -var s1 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 200) -}); -var s2 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 30) -}); -var s3 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 100) -}); - -var streams = new Ordered([s1, s2, s3]); -streams.on('data', function (data) { - console.log(data); -}) - -s1.write('stream 1'); -s1.end(); - -s2.write('stream 2'); -s2.end(); - -s3.write('stream 3'); -s3.end(); -``` -Ouput will be: - -``` -stream 1 -stream 2 -stream 3 -``` - -## Licence - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/index.js deleted file mode 100644 index f58ccf1d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/index.js +++ /dev/null @@ -1,87 +0,0 @@ -var Readable = require('stream').Readable; -var util = require('util'); - - -function addStream(streams, stream) -{ - if(!stream.readable) throw new Error('All input streams must be readable'); - - if(this._readableState.ended) throw new Error('Adding streams after ended'); - - - var self = this; - - stream._buffer = []; - - stream.on('data', function(chunk) - { - if(this === streams[0]) - self.push(chunk); - - else - this._buffer.push(chunk); - }); - - stream.on('end', function() - { - for(var stream = streams[0]; - stream && stream._readableState.ended; - stream = streams[0]) - { - while(stream._buffer.length) - self.push(stream._buffer.shift()); - - streams.shift(); - } - - if(!streams.length) self.push(null); - }); - - stream.on('error', this.emit.bind(this, 'error')); - - - streams.push(stream); -} - - -function OrderedStreams(streams, options) { - if (!(this instanceof(OrderedStreams))) { - return new OrderedStreams(streams, options); - } - - streams = streams || []; - options = options || {}; - - options.objectMode = true; - - Readable.call(this, options); - - - if(!Array.isArray(streams)) streams = [streams]; - if(!streams.length) return this.push(null); // no streams, close - - - var addStream_bind = addStream.bind(this, []); - - - this.concat = function() - { - Array.prototype.forEach.call(arguments, function(item) - { - if(Array.isArray(item)) - item.forEach(addStream_bind); - - else - addStream_bind(item); - }); - }; - - - this.concat(streams); -} -util.inherits(OrderedStreams, Readable); - -OrderedStreams.prototype._read = function () {}; - - -module.exports = OrderedStreams; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/package.json deleted file mode 100644 index ea200329..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_args": [ - [ - "ordered-read-streams@^0.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "ordered-read-streams@>=0.1.0 <0.2.0", - "_id": "ordered-read-streams@0.1.0", - "_inCache": true, - "_installable": true, - "_location": "/ordered-read-streams", - "_npmUser": { - "email": "artem.medeusheyev@gmail.com", - "name": "armed" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "ordered-read-streams", - "raw": "ordered-read-streams@^0.1.0", - "rawSpec": "^0.1.0", - "scope": null, - "spec": ">=0.1.0 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream", - "/gulp-symdest/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "_shasum": "fd565a9af8eb4473ba69b6ed8a34352cb552f126", - "_shrinkwrap": null, - "_spec": "ordered-read-streams@^0.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "artem.medeusheyev@gmail.com", - "name": "Artem Medeusheyev" - }, - "bugs": { - "url": "https://github.com/armed/ordered-read-streams/issues" - }, - "dependencies": {}, - "description": "Combines array of streams into one read stream in strict order", - "devDependencies": { - "jshint": "~2.4.1", - "mocha": "~1.17.0", - "pre-commit": "0.0.4", - "should": "~3.0.1", - "through2": "~0.4.0" - }, - "directories": {}, - "dist": { - "shasum": "fd565a9af8eb4473ba69b6ed8a34352cb552f126", - "tarball": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz" - }, - "gitHead": "0a7e487d8734978c0cc29d4dc3bfbdb8e82f865b", - "homepage": "https://github.com/armed/ordered-read-streams", - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "artem.medeusheyev@gmail.com", - "name": "armed" - } - ], - "name": "ordered-read-streams", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/armed/ordered-read-streams.git" - }, - "scripts": { - "test": "jshint *.js test/*.js && mocha -R spec" - }, - "version": "0.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/test/main.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/test/main.js deleted file mode 100644 index 81f80403..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/ordered-read-streams/test/main.js +++ /dev/null @@ -1,160 +0,0 @@ -var should = require('should'); -var through = require('through2'); -var OrderedStreams = require('../'); - -describe('ordered-read-streams', function () { - it('should end if no streams are given', function (done) { - var streams = OrderedStreams(); - streams.on('data', function () { - done('error'); - }); - streams.on('end', done); - }); - - it('should throw error if one or more streams are not readable', function (done) { - var writable = { readable: false }; - - try { - new OrderedStreams(writable); - } catch (e) { - e.message.should.equal('All input streams must be readable'); - done(); - } - }); - - it('should emit data from all streams', function(done) { - var s1 = through.obj(function (data, enc, next) { - this.push(data); - next(); - }); - var s2 = through.obj(function (data, enc, next) { - this.push(data); - next(); - }); - var s3 = through.obj(function (data, enc, next) { - this.push(data); - next(); - }); - - var streams = new OrderedStreams([s1, s2, s3]); - var results = []; - streams.on('data', function (data) { - results.push(data); - }); - streams.on('end', function () { - results.length.should.be.exactly(3); - results[0].should.equal('stream 1'); - results[1].should.equal('stream 2'); - results[2].should.equal('stream 3'); - done(); - }); - - s1.write('stream 1'); - s1.end(); - - s2.write('stream 2'); - s2.end(); - - s3.write('stream 3'); - s3.end(); - }); - - it('should emit all data event from each stream', function (done) { - var s = through.obj(function (data, enc, next) { - this.push(data); - next(); - }); - - var streams = new OrderedStreams(s); - var results = []; - streams.on('data', function (data) { - results.push(data); - }); - streams.on('end', function () { - results.length.should.be.exactly(3); - done(); - }); - - s.write('data1'); - s.write('data2'); - s.write('data3'); - s.end(); - }); - - it('should preserve streams order', function(done) { - var s1 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 200); - }); - var s2 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 30); - }); - var s3 = through.obj(function (data, enc, next) { - var self = this; - setTimeout(function () { - self.push(data); - next(); - }, 100); - }); - - var streams = new OrderedStreams([s1, s2, s3]); - var results = []; - streams.on('data', function (data) { - results.push(data); - }); - streams.on('end', function () { - results.length.should.be.exactly(3); - results[0].should.equal('stream 1'); - results[1].should.equal('stream 2'); - results[2].should.equal('stream 3'); - done(); - }); - - s1.write('stream 1'); - s1.end(); - - s2.write('stream 2'); - s2.end(); - - s3.write('stream 3'); - s3.end(); - }); - - it('should emit stream errors downstream', function (done) { - var s = through.obj(function (data, enc, next) { - this.emit('error', new Error('stahp!')); - next(); - }); - var s2 = through.obj(function (data, enc, next) { - this.push(data); - next(); - }); - - var errMsg; - var streamData; - var streams = new OrderedStreams([s, s2]); - streams.on('data', function (data) { - streamData = data; - }); - streams.on('error', function (err) { - errMsg = err.message; - }); - streams.on('end', function () { - errMsg.should.equal('stahp!'); - streamData.should.equal('Im ok!'); - done(); - }); - - s.write('go'); - s.end(); - s2.write('Im ok!'); - s2.end(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/index.js deleted file mode 100644 index 33066166..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var os = require('os'); - -function homedir() { - var env = process.env; - var home = env.HOME; - var user = env.LOGNAME || env.USER || env.LNAME || env.USERNAME; - - if (process.platform === 'win32') { - return env.USERPROFILE || env.HOMEDRIVE + env.HOMEPATH || home || null; - } - - if (process.platform === 'darwin') { - return home || (user ? '/Users/' + user : null); - } - - if (process.platform === 'linux') { - return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); - } - - return home || null; -} - -module.exports = typeof os.homedir === 'function' ? os.homedir : homedir; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/package.json deleted file mode 100644 index 5a6190d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "os-homedir@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/tildify" - ] - ], - "_from": "os-homedir@>=1.0.0 <2.0.0", - "_id": "os-homedir@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/os-homedir", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "os-homedir", - "raw": "os-homedir@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/tildify" - ], - "_resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz", - "_shasum": "0d62bdf44b916fd3bbdcf2cab191948fb094f007", - "_shrinkwrap": null, - "_spec": "os-homedir@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tildify", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/os-homedir/issues" - }, - "dependencies": {}, - "description": "io.js 2.3.0 os.homedir() ponyfill", - "devDependencies": { - "ava": "0.0.4", - "path-exists": "^1.0.0" - }, - "directories": {}, - "dist": { - "shasum": "0d62bdf44b916fd3bbdcf2cab191948fb094f007", - "tarball": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "13ff83fbd13ebe286a6092286b2c634ab4534c5f", - "homepage": "https://github.com/sindresorhus/os-homedir", - "keywords": [ - "built-in", - "core", - "ponyfill", - "polyfill", - "shim", - "os", - "homedir", - "home", - "dir", - "directory", - "folder", - "user", - "path" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "os-homedir", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/os-homedir.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/readme.md deleted file mode 100644 index 4851f104..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-homedir/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# os-homedir [![Build Status](https://travis-ci.org/sindresorhus/os-homedir.svg?branch=master)](https://travis-ci.org/sindresorhus/os-homedir) - -> io.js 2.3.0 [`os.homedir()`](https://iojs.org/api/os.html#os_os_homedir) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -``` -$ npm install --save os-homedir -``` - - -## Usage - -```js -var osHomedir = require('os-homedir'); - -console.log(osHomedir()); -//=> /Users/sindresorhus -``` - - -## Related - -- [user-home](https://github.com/sindresorhus/user-home) - Same as this module but caches the result -- [home-or-tmp](https://github.com/sindresorhus/home-or-tmp) - Get the user home directory with fallback to the system temp directory - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/index.js deleted file mode 100644 index 52d90bf2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; -var isWindows = process.platform === 'win32'; -var trailingSlashRe = isWindows ? /[^:]\\$/ : /.\/$/; - -// https://github.com/nodejs/io.js/blob/3e7a14381497a3b73dda68d05b5130563cdab420/lib/os.js#L25-L43 -module.exports = function () { - var path; - - if (isWindows) { - path = process.env.TEMP || - process.env.TMP || - (process.env.SystemRoot || process.env.windir) + '\\temp'; - } else { - path = process.env.TMPDIR || - process.env.TMP || - process.env.TEMP || - '/tmp'; - } - - if (trailingSlashRe.test(path)) { - path = path.slice(0, -1); - } - - return path; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/package.json deleted file mode 100644 index 5b50901d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "os-tmpdir@~1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/tmp" - ] - ], - "_from": "os-tmpdir@>=1.0.1 <1.1.0", - "_id": "os-tmpdir@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/os-tmpdir", - "_nodeVersion": "0.12.3", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.9.1", - "_phantomChildren": {}, - "_requested": { - "name": "os-tmpdir", - "raw": "os-tmpdir@~1.0.1", - "rawSpec": "~1.0.1", - "scope": null, - "spec": ">=1.0.1 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/tmp" - ], - "_resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", - "_shasum": "e9b423a1edaf479882562e92ed71d7743a071b6e", - "_shrinkwrap": null, - "_spec": "os-tmpdir@~1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tmp", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/os-tmpdir/issues" - }, - "dependencies": {}, - "description": "Node.js os.tmpdir() ponyfill", - "devDependencies": { - "ava": "0.0.4" - }, - "directories": {}, - "dist": { - "shasum": "e9b423a1edaf479882562e92ed71d7743a071b6e", - "tarball": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "5c5d355f81378980db629d60128ad03e02b1c1e5", - "homepage": "https://github.com/sindresorhus/os-tmpdir", - "keywords": [ - "built-in", - "core", - "ponyfill", - "polyfill", - "shim", - "os", - "tmpdir", - "tempdir", - "tmp", - "temp", - "dir", - "directory", - "env", - "environment" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "os-tmpdir", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/os-tmpdir.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/readme.md deleted file mode 100644 index 54d4c6ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/os-tmpdir/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# os-tmpdir [![Build Status](https://travis-ci.org/sindresorhus/os-tmpdir.svg?branch=master)](https://travis-ci.org/sindresorhus/os-tmpdir) - -> Node.js [`os.tmpdir()`](https://nodejs.org/api/os.html#os_os_tmpdir) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - -Use this instead of `require('os').tmpdir()` to get a consistent behaviour on different Node.js versions (even 0.8). - -*This is actually taken from io.js 2.0.2 as it contains some fixes that haven't bubbled up to Node.js yet.* - - -## Install - -``` -$ npm install --save os-tmpdir -``` - - -## Usage - -```js -var osTmpdir = require('os-tmpdir'); - -osTmpdir(); -//=> /var/folders/m3/5574nnhn0yj488ccryqr7tc80000gn/T -``` - - -## API - -See the [`os.tmpdir()` docs](https://nodejs.org/api/os.html#os_os_tmpdir). - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/index.js deleted file mode 100644 index 04add8ae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/index.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var errorEx = require('error-ex'); -var fallback = require('./vendor/parse'); - -var JSONError = errorEx('JSONError', { - fileName: errorEx.append('in %s') -}); - -module.exports = function (x, reviver, filename) { - if (typeof reviver === 'string') { - filename = reviver; - reviver = null; - } - - try { - try { - return JSON.parse(x, reviver); - } catch (err) { - fallback.parse(x, { - mode: 'json', - reviver: reviver - }); - - throw err; - } - } catch (err) { - var jsonErr = new JSONError(err); - - if (filename) { - jsonErr.fileName = filename; - } - - throw jsonErr; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/package.json deleted file mode 100644 index dbd9aaa8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "parse-json@^2.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file" - ] - ], - "_from": "parse-json@>=2.2.0 <3.0.0", - "_id": "parse-json@2.2.0", - "_inCache": true, - "_installable": true, - "_location": "/parse-json", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "parse-json", - "raw": "parse-json@^2.2.0", - "rawSpec": "^2.2.0", - "scope": null, - "spec": ">=2.2.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/load-json-file" - ], - "_resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "_shasum": "f480f40434ef80741f8469099f8dea18f55a4dc9", - "_shrinkwrap": null, - "_spec": "parse-json@^2.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/parse-json/issues" - }, - "dependencies": { - "error-ex": "^1.2.0" - }, - "description": "Parse JSON with more helpful errors", - "devDependencies": { - "ava": "0.0.4", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "f480f40434ef80741f8469099f8dea18f55a4dc9", - "tarball": "http://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "vendor" - ], - "gitHead": "419b0cbb83e67af53f9fd3f7ff98605ea2020eb6", - "homepage": "https://github.com/sindresorhus/parse-json", - "keywords": [ - "parse", - "json", - "graceful", - "error", - "message", - "humanize", - "friendly", - "helpful", - "string", - "str" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "parse-json", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/parse-json.git" - }, - "scripts": { - "test": "xo && node test.js" - }, - "version": "2.2.0", - "xo": { - "ignores": [ - "vendor/**" - ] - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/readme.md deleted file mode 100644 index ca96e60a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/readme.md +++ /dev/null @@ -1,83 +0,0 @@ -# parse-json [![Build Status](https://travis-ci.org/sindresorhus/parse-json.svg?branch=master)](https://travis-ci.org/sindresorhus/parse-json) - -> Parse JSON with more helpful errors - - -## Install - -``` -$ npm install --save parse-json -``` - - -## Usage - -```js -var parseJson = require('parse-json'); -var json = '{\n\t"foo": true,\n}'; - - -JSON.parse(json); -/* -undefined:3 -} -^ -SyntaxError: Unexpected token } -*/ - - -parseJson(json); -/* -JSONError: Trailing comma in object at 3:1 -} -^ -*/ - - -parseJson(json, 'foo.json'); -/* -JSONError: Trailing comma in object at 3:1 in foo.json -} -^ -*/ - - -// you can also add the filename at a later point -try { - parseJson(json); -} catch (err) { - err.fileName = 'foo.json'; - throw err; -} -/* -JSONError: Trailing comma in object at 3:1 in foo.json -} -^ -*/ -``` - -## API - -### parseJson(input, [reviver], [filename]) - -#### input - -Type: `string` - -#### reviver - -Type: `function` - -Prescribes how the value originally produced by parsing is transformed, before being returned. See [`JSON.parse` docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter -) for more. - -#### filename - -Type: `string` - -Filename displayed in the error message. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/parse.js deleted file mode 100644 index 5f9fe998..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/parse.js +++ /dev/null @@ -1,752 +0,0 @@ -/* - * Author: Alex Kocharin - * GIT: https://github.com/rlidwka/jju - * License: WTFPL, grab your copy here: http://www.wtfpl.net/txt/copying/ - */ - -// RTFM: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf - -var Uni = require('./unicode') - -function isHexDigit(x) { - return (x >= '0' && x <= '9') - || (x >= 'A' && x <= 'F') - || (x >= 'a' && x <= 'f') -} - -function isOctDigit(x) { - return x >= '0' && x <= '7' -} - -function isDecDigit(x) { - return x >= '0' && x <= '9' -} - -var unescapeMap = { - '\'': '\'', - '"' : '"', - '\\': '\\', - 'b' : '\b', - 'f' : '\f', - 'n' : '\n', - 'r' : '\r', - 't' : '\t', - 'v' : '\v', - '/' : '/', -} - -function formatError(input, msg, position, lineno, column, json5) { - var result = msg + ' at ' + (lineno + 1) + ':' + (column + 1) - , tmppos = position - column - 1 - , srcline = '' - , underline = '' - - var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON - - // output no more than 70 characters before the wrong ones - if (tmppos < position - 70) { - tmppos = position - 70 - } - - while (1) { - var chr = input[++tmppos] - - if (isLineTerminator(chr) || tmppos === input.length) { - if (position >= tmppos) { - // ending line error, so show it after the last char - underline += '^' - } - break - } - srcline += chr - - if (position === tmppos) { - underline += '^' - } else if (position > tmppos) { - underline += input[tmppos] === '\t' ? '\t' : ' ' - } - - // output no more than 78 characters on the string - if (srcline.length > 78) break - } - - return result + '\n' + srcline + '\n' + underline -} - -function parse(input, options) { - // parse as a standard JSON mode - var json5 = !(options.mode === 'json' || options.legacy) - var isLineTerminator = json5 ? Uni.isLineTerminator : Uni.isLineTerminatorJSON - var isWhiteSpace = json5 ? Uni.isWhiteSpace : Uni.isWhiteSpaceJSON - - var length = input.length - , lineno = 0 - , linestart = 0 - , position = 0 - , stack = [] - - var tokenStart = function() {} - var tokenEnd = function(v) {return v} - - /* tokenize({ - raw: '...', - type: 'whitespace'|'comment'|'key'|'literal'|'separator'|'newline', - value: 'number'|'string'|'whatever', - path: [...], - }) - */ - if (options._tokenize) { - ;(function() { - var start = null - tokenStart = function() { - if (start !== null) throw Error('internal error, token overlap') - start = position - } - - tokenEnd = function(v, type) { - if (start != position) { - var hash = { - raw: input.substr(start, position-start), - type: type, - stack: stack.slice(0), - } - if (v !== undefined) hash.value = v - options._tokenize.call(null, hash) - } - start = null - return v - } - })() - } - - function fail(msg) { - var column = position - linestart - - if (!msg) { - if (position < length) { - var token = '\'' + - JSON - .stringify(input[position]) - .replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') - + '\'' - - if (!msg) msg = 'Unexpected token ' + token - } else { - if (!msg) msg = 'Unexpected end of input' - } - } - - var error = SyntaxError(formatError(input, msg, position, lineno, column, json5)) - error.row = lineno + 1 - error.column = column + 1 - throw error - } - - function newline(chr) { - // account for - if (chr === '\r' && input[position] === '\n') position++ - linestart = position - lineno++ - } - - function parseGeneric() { - var result - - while (position < length) { - tokenStart() - var chr = input[position++] - - if (chr === '"' || (chr === '\'' && json5)) { - return tokenEnd(parseString(chr), 'literal') - - } else if (chr === '{') { - tokenEnd(undefined, 'separator') - return parseObject() - - } else if (chr === '[') { - tokenEnd(undefined, 'separator') - return parseArray() - - } else if (chr === '-' - || chr === '.' - || isDecDigit(chr) - // + number Infinity NaN - || (json5 && (chr === '+' || chr === 'I' || chr === 'N')) - ) { - return tokenEnd(parseNumber(), 'literal') - - } else if (chr === 'n') { - parseKeyword('null') - return tokenEnd(null, 'literal') - - } else if (chr === 't') { - parseKeyword('true') - return tokenEnd(true, 'literal') - - } else if (chr === 'f') { - parseKeyword('false') - return tokenEnd(false, 'literal') - - } else { - position-- - return tokenEnd(undefined) - } - } - } - - function parseKey() { - var result - - while (position < length) { - tokenStart() - var chr = input[position++] - - if (chr === '"' || (chr === '\'' && json5)) { - return tokenEnd(parseString(chr), 'key') - - } else if (chr === '{') { - tokenEnd(undefined, 'separator') - return parseObject() - - } else if (chr === '[') { - tokenEnd(undefined, 'separator') - return parseArray() - - } else if (chr === '.' - || isDecDigit(chr) - ) { - return tokenEnd(parseNumber(true), 'key') - - } else if (json5 - && Uni.isIdentifierStart(chr) || (chr === '\\' && input[position] === 'u')) { - // unicode char or a unicode sequence - var rollback = position - 1 - var result = parseIdentifier() - - if (result === undefined) { - position = rollback - return tokenEnd(undefined) - } else { - return tokenEnd(result, 'key') - } - - } else { - position-- - return tokenEnd(undefined) - } - } - } - - function skipWhiteSpace() { - tokenStart() - while (position < length) { - var chr = input[position++] - - if (isLineTerminator(chr)) { - position-- - tokenEnd(undefined, 'whitespace') - tokenStart() - position++ - newline(chr) - tokenEnd(undefined, 'newline') - tokenStart() - - } else if (isWhiteSpace(chr)) { - // nothing - - } else if (chr === '/' - && json5 - && (input[position] === '/' || input[position] === '*') - ) { - position-- - tokenEnd(undefined, 'whitespace') - tokenStart() - position++ - skipComment(input[position++] === '*') - tokenEnd(undefined, 'comment') - tokenStart() - - } else { - position-- - break - } - } - return tokenEnd(undefined, 'whitespace') - } - - function skipComment(multi) { - while (position < length) { - var chr = input[position++] - - if (isLineTerminator(chr)) { - // LineTerminator is an end of singleline comment - if (!multi) { - // let parent function deal with newline - position-- - return - } - - newline(chr) - - } else if (chr === '*' && multi) { - // end of multiline comment - if (input[position] === '/') { - position++ - return - } - - } else { - // nothing - } - } - - if (multi) { - fail('Unclosed multiline comment') - } - } - - function parseKeyword(keyword) { - // keyword[0] is not checked because it should've checked earlier - var _pos = position - var len = keyword.length - for (var i=1; i= length || keyword[i] != input[position]) { - position = _pos-1 - fail() - } - position++ - } - } - - function parseObject() { - var result = options.null_prototype ? Object.create(null) : {} - , empty_object = {} - , is_non_empty = false - - while (position < length) { - skipWhiteSpace() - var item1 = parseKey() - skipWhiteSpace() - tokenStart() - var chr = input[position++] - tokenEnd(undefined, 'separator') - - if (chr === '}' && item1 === undefined) { - if (!json5 && is_non_empty) { - position-- - fail('Trailing comma in object') - } - return result - - } else if (chr === ':' && item1 !== undefined) { - skipWhiteSpace() - stack.push(item1) - var item2 = parseGeneric() - stack.pop() - - if (item2 === undefined) fail('No value found for key ' + item1) - if (typeof(item1) !== 'string') { - if (!json5 || typeof(item1) !== 'number') { - fail('Wrong key type: ' + item1) - } - } - - if ((item1 in empty_object || empty_object[item1] != null) && options.reserved_keys !== 'replace') { - if (options.reserved_keys === 'throw') { - fail('Reserved key: ' + item1) - } else { - // silently ignore it - } - } else { - if (typeof(options.reviver) === 'function') { - item2 = options.reviver.call(null, item1, item2) - } - - if (item2 !== undefined) { - is_non_empty = true - Object.defineProperty(result, item1, { - value: item2, - enumerable: true, - configurable: true, - writable: true, - }) - } - } - - skipWhiteSpace() - - tokenStart() - var chr = input[position++] - tokenEnd(undefined, 'separator') - - if (chr === ',') { - continue - - } else if (chr === '}') { - return result - - } else { - fail() - } - - } else { - position-- - fail() - } - } - - fail() - } - - function parseArray() { - var result = [] - - while (position < length) { - skipWhiteSpace() - stack.push(result.length) - var item = parseGeneric() - stack.pop() - skipWhiteSpace() - tokenStart() - var chr = input[position++] - tokenEnd(undefined, 'separator') - - if (item !== undefined) { - if (typeof(options.reviver) === 'function') { - item = options.reviver.call(null, String(result.length), item) - } - if (item === undefined) { - result.length++ - item = true // hack for check below, not included into result - } else { - result.push(item) - } - } - - if (chr === ',') { - if (item === undefined) { - fail('Elisions are not supported') - } - - } else if (chr === ']') { - if (!json5 && item === undefined && result.length) { - position-- - fail('Trailing comma in array') - } - return result - - } else { - position-- - fail() - } - } - } - - function parseNumber() { - // rewind because we don't know first char - position-- - - var start = position - , chr = input[position++] - , t - - var to_num = function(is_octal) { - var str = input.substr(start, position - start) - - if (is_octal) { - var result = parseInt(str.replace(/^0o?/, ''), 8) - } else { - var result = Number(str) - } - - if (Number.isNaN(result)) { - position-- - fail('Bad numeric literal - "' + input.substr(start, position - start + 1) + '"') - } else if (!json5 && !str.match(/^-?(0|[1-9][0-9]*)(\.[0-9]+)?(e[+-]?[0-9]+)?$/i)) { - // additional restrictions imposed by json - position-- - fail('Non-json numeric literal - "' + input.substr(start, position - start + 1) + '"') - } else { - return result - } - } - - // ex: -5982475.249875e+29384 - // ^ skipping this - if (chr === '-' || (chr === '+' && json5)) chr = input[position++] - - if (chr === 'N' && json5) { - parseKeyword('NaN') - return NaN - } - - if (chr === 'I' && json5) { - parseKeyword('Infinity') - - // returning +inf or -inf - return to_num() - } - - if (chr >= '1' && chr <= '9') { - // ex: -5982475.249875e+29384 - // ^^^ skipping these - while (position < length && isDecDigit(input[position])) position++ - chr = input[position++] - } - - // special case for leading zero: 0.123456 - if (chr === '0') { - chr = input[position++] - - // new syntax, "0o777" old syntax, "0777" - var is_octal = chr === 'o' || chr === 'O' || isOctDigit(chr) - var is_hex = chr === 'x' || chr === 'X' - - if (json5 && (is_octal || is_hex)) { - while (position < length - && (is_hex ? isHexDigit : isOctDigit)( input[position] ) - ) position++ - - var sign = 1 - if (input[start] === '-') { - sign = -1 - start++ - } else if (input[start] === '+') { - start++ - } - - return sign * to_num(is_octal) - } - } - - if (chr === '.') { - // ex: -5982475.249875e+29384 - // ^^^ skipping these - while (position < length && isDecDigit(input[position])) position++ - chr = input[position++] - } - - if (chr === 'e' || chr === 'E') { - chr = input[position++] - if (chr === '-' || chr === '+') position++ - // ex: -5982475.249875e+29384 - // ^^^ skipping these - while (position < length && isDecDigit(input[position])) position++ - chr = input[position++] - } - - // we have char in the buffer, so count for it - position-- - return to_num() - } - - function parseIdentifier() { - // rewind because we don't know first char - position-- - - var result = '' - - while (position < length) { - var chr = input[position++] - - if (chr === '\\' - && input[position] === 'u' - && isHexDigit(input[position+1]) - && isHexDigit(input[position+2]) - && isHexDigit(input[position+3]) - && isHexDigit(input[position+4]) - ) { - // UnicodeEscapeSequence - chr = String.fromCharCode(parseInt(input.substr(position+1, 4), 16)) - position += 5 - } - - if (result.length) { - // identifier started - if (Uni.isIdentifierPart(chr)) { - result += chr - } else { - position-- - return result - } - - } else { - if (Uni.isIdentifierStart(chr)) { - result += chr - } else { - return undefined - } - } - } - - fail() - } - - function parseString(endChar) { - // 7.8.4 of ES262 spec - var result = '' - - while (position < length) { - var chr = input[position++] - - if (chr === endChar) { - return result - - } else if (chr === '\\') { - if (position >= length) fail() - chr = input[position++] - - if (unescapeMap[chr] && (json5 || (chr != 'v' && chr != "'"))) { - result += unescapeMap[chr] - - } else if (json5 && isLineTerminator(chr)) { - // line continuation - newline(chr) - - } else if (chr === 'u' || (chr === 'x' && json5)) { - // unicode/character escape sequence - var off = chr === 'u' ? 4 : 2 - - // validation for \uXXXX - for (var i=0; i= length) fail() - if (!isHexDigit(input[position])) fail('Bad escape sequence') - position++ - } - - result += String.fromCharCode(parseInt(input.substr(position-off, off), 16)) - } else if (json5 && isOctDigit(chr)) { - if (chr < '4' && isOctDigit(input[position]) && isOctDigit(input[position+1])) { - // three-digit octal - var digits = 3 - } else if (isOctDigit(input[position])) { - // two-digit octal - var digits = 2 - } else { - var digits = 1 - } - position += digits - 1 - result += String.fromCharCode(parseInt(input.substr(position-digits, digits), 8)) - /*if (!isOctDigit(input[position])) { - // \0 is allowed still - result += '\0' - } else { - fail('Octal literals are not supported') - }*/ - - } else if (json5) { - // \X -> x - result += chr - - } else { - position-- - fail() - } - - } else if (isLineTerminator(chr)) { - fail() - - } else { - if (!json5 && chr.charCodeAt(0) < 32) { - position-- - fail('Unexpected control character') - } - - // SourceCharacter but not one of " or \ or LineTerminator - result += chr - } - } - - fail() - } - - skipWhiteSpace() - var return_value = parseGeneric() - if (return_value !== undefined || position < length) { - skipWhiteSpace() - - if (position >= length) { - if (typeof(options.reviver) === 'function') { - return_value = options.reviver.call(null, '', return_value) - } - return return_value - } else { - fail() - } - - } else { - if (position) { - fail('No data, only a whitespace') - } else { - fail('No data, empty input') - } - } -} - -/* - * parse(text, options) - * or - * parse(text, reviver) - * - * where: - * text - string - * options - object - * reviver - function - */ -module.exports.parse = function parseJSON(input, options) { - // support legacy functions - if (typeof(options) === 'function') { - options = { - reviver: options - } - } - - if (input === undefined) { - // parse(stringify(x)) should be equal x - // with JSON functions it is not 'cause of undefined - // so we're fixing it - return undefined - } - - // JSON.parse compat - if (typeof(input) !== 'string') input = String(input) - if (options == null) options = {} - if (options.reserved_keys == null) options.reserved_keys = 'ignore' - - if (options.reserved_keys === 'throw' || options.reserved_keys === 'ignore') { - if (options.null_prototype == null) { - options.null_prototype = true - } - } - - try { - return parse(input, options) - } catch(err) { - // jju is a recursive parser, so JSON.parse("{{{{{{{") could blow up the stack - // - // this catch is used to skip all those internal calls - if (err instanceof SyntaxError && err.row != null && err.column != null) { - var old_err = err - err = SyntaxError(old_err.message) - err.column = old_err.column - err.row = old_err.row - } - throw err - } -} - -module.exports.tokenize = function tokenizeJSON(input, options) { - if (options == null) options = {} - - options._tokenize = function(smth) { - if (options._addstack) smth.stack.unshift.apply(smth.stack, options._addstack) - tokens.push(smth) - } - - var tokens = [] - tokens.data = module.exports.parse(input, options) - return tokens -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/unicode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/unicode.js deleted file mode 100644 index 1a29143c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/parse-json/vendor/unicode.js +++ /dev/null @@ -1,71 +0,0 @@ - -// This is autogenerated with esprima tools, see: -// https://github.com/ariya/esprima/blob/master/esprima.js -// -// PS: oh God, I hate Unicode - -// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierStart: - -var Uni = module.exports - -module.exports.isWhiteSpace = function isWhiteSpace(x) { - // section 7.2, table 2 - return x === '\u0020' - || x === '\u00A0' - || x === '\uFEFF' // <-- this is not a Unicode WS, only a JS one - || (x >= '\u0009' && x <= '\u000D') // 9 A B C D - - // + whitespace characters from unicode, category Zs - || x === '\u1680' - || x === '\u180E' - || (x >= '\u2000' && x <= '\u200A') // 0 1 2 3 4 5 6 7 8 9 A - || x === '\u2028' - || x === '\u2029' - || x === '\u202F' - || x === '\u205F' - || x === '\u3000' -} - -module.exports.isWhiteSpaceJSON = function isWhiteSpaceJSON(x) { - return x === '\u0020' - || x === '\u0009' - || x === '\u000A' - || x === '\u000D' -} - -module.exports.isLineTerminator = function isLineTerminator(x) { - // ok, here is the part when JSON is wrong - // section 7.3, table 3 - return x === '\u000A' - || x === '\u000D' - || x === '\u2028' - || x === '\u2029' -} - -module.exports.isLineTerminatorJSON = function isLineTerminatorJSON(x) { - return x === '\u000A' - || x === '\u000D' -} - -module.exports.isIdentifierStart = function isIdentifierStart(x) { - return x === '$' - || x === '_' - || (x >= 'A' && x <= 'Z') - || (x >= 'a' && x <= 'z') - || (x >= '\u0080' && Uni.NonAsciiIdentifierStart.test(x)) -} - -module.exports.isIdentifierPart = function isIdentifierPart(x) { - return x === '$' - || x === '_' - || (x >= 'A' && x <= 'Z') - || (x >= 'a' && x <= 'z') - || (x >= '0' && x <= '9') // <-- addition to Start - || (x >= '\u0080' && Uni.NonAsciiIdentifierPart.test(x)) -} - -module.exports.NonAsciiIdentifierStart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ - -// ECMAScript 5.1/Unicode v6.3.0 NonAsciiIdentifierPart: - -module.exports.NonAsciiIdentifierPart = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/index.js deleted file mode 100644 index a7e680a7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var fs = require('fs'); -var Promise = require('pinkie-promise'); - -module.exports = function (fp) { - var fn = typeof fs.access === 'function' ? fs.access : fs.stat; - - return new Promise(function (resolve) { - fn(fp, function (err) { - resolve(!err); - }); - }); -}; - -module.exports.sync = function (fp) { - var fn = typeof fs.accessSync === 'function' ? fs.accessSync : fs.statSync; - - try { - fn(fp); - return true; - } catch (err) { - return false; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/package.json deleted file mode 100644 index e0fb8af3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/package.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "_args": [ - [ - "path-exists@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/find-up" - ] - ], - "_from": "path-exists@>=2.0.0 <3.0.0", - "_id": "path-exists@2.1.0", - "_inCache": true, - "_installable": true, - "_location": "/path-exists", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "path-exists", - "raw": "path-exists@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/find-up" - ], - "_resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "_shasum": "0feb6c64f0fc518d9a754dd5efb62c7022761f4b", - "_shrinkwrap": null, - "_spec": "path-exists@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/find-up", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/path-exists/issues" - }, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "description": "Check if a path exists", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "0feb6c64f0fc518d9a754dd5efb62c7022761f4b", - "tarball": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "3af423661e78466764f87c5712263c5d7a1ce5b7", - "homepage": "https://github.com/sindresorhus/path-exists", - "keywords": [ - "path", - "exists", - "exist", - "file", - "filepath", - "fs", - "filesystem", - "file-system", - "access", - "stat" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "path-exists", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/path-exists.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "2.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/readme.md deleted file mode 100644 index 8fbcd68d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-exists/readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# path-exists [![Build Status](https://travis-ci.org/sindresorhus/path-exists.svg?branch=master)](https://travis-ci.org/sindresorhus/path-exists) - -> Check if a path exists - -Because [`fs.exists()`](https://nodejs.org/api/fs.html#fs_fs_exists_path_callback) is being [deprecated](https://github.com/iojs/io.js/issues/103), but there's still a genuine use-case of being able to check if a path exists for other purposes than doing IO with it. - -Never use this before handling a file though: - -> In particular, checking if a file exists before opening it is an anti-pattern that leaves you vulnerable to race conditions: another process may remove the file between the calls to `fs.exists()` and `fs.open()`. Just open the file and handle the error when it's not there. - - -## Install - -``` -$ npm install --save path-exists -``` - - -## Usage - -```js -// foo.js -var pathExists = require('path-exists'); - -pathExists('foo.js').then(function (exists) { - console.log(exists); - //=> true -}); -``` - - -## API - -### pathExists(path) - -Returns a promise that resolves to a boolean of whether the path exists. - -### pathExists.sync(path) - -Returns a boolean of whether the path exists. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/index.js deleted file mode 100644 index 19f103f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/index.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -function posix(path) { - return path.charAt(0) === '/'; -}; - -function win32(path) { - // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ''; - var isUnc = !!device && device.charAt(1) !== ':'; - - // UNC paths are always absolute - return !!result[2] || isUnc; -}; - -module.exports = process.platform === 'win32' ? win32 : posix; -module.exports.posix = posix; -module.exports.win32 = win32; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/package.json deleted file mode 100644 index 25d74fcf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "path-is-absolute@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob" - ] - ], - "_from": "path-is-absolute@>=1.0.0 <2.0.0", - "_id": "path-is-absolute@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/path-is-absolute", - "_nodeVersion": "0.12.0", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.5.1", - "_phantomChildren": {}, - "_requested": { - "name": "path-is-absolute", - "raw": "path-is-absolute@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/glob", - "/tslint", - "/tslint/glob" - ], - "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", - "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912", - "_shrinkwrap": null, - "_spec": "path-is-absolute@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/path-is-absolute/issues" - }, - "dependencies": {}, - "description": "Node.js 0.12 path.isAbsolute() ponyfill", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912", - "tarball": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1", - "homepage": "https://github.com/sindresorhus/path-is-absolute", - "keywords": [ - "path", - "paths", - "file", - "dir", - "absolute", - "isabsolute", - "is-absolute", - "built-in", - "util", - "utils", - "core", - "ponyfill", - "polyfill", - "shim", - "is", - "detect", - "check" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "path-is-absolute", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/path-is-absolute.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/readme.md deleted file mode 100644 index cdf94f43..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-is-absolute/readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# path-is-absolute [![Build Status](https://travis-ci.org/sindresorhus/path-is-absolute.svg?branch=master)](https://travis-ci.org/sindresorhus/path-is-absolute) - -> Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill - -> Ponyfill: A polyfill that doesn't overwrite the native method - - -## Install - -``` -$ npm install --save path-is-absolute -``` - - -## Usage - -```js -var pathIsAbsolute = require('path-is-absolute'); - -// Linux -pathIsAbsolute('/home/foo'); -//=> true - -// Windows -pathIsAbsolute('C:/Users/'); -//=> true - -// Any OS -pathIsAbsolute.posix('/home/foo'); -//=> true -``` - - -## API - -See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path). - -### pathIsAbsolute(path) - -### pathIsAbsolute.posix(path) - -The Posix specific version. - -### pathIsAbsolute.win32(path) - -The Windows specific version. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/index.js deleted file mode 100644 index 207a1d19..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/index.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; -var fs = require('graceful-fs'); -var Promise = require('pinkie-promise'); -var pify = require('pify'); - -function type(fn, fn2, fp) { - if (typeof fp !== 'string') { - return Promise.reject(new TypeError('Expected a string')); - } - - return pify(fs[fn], Promise)(fp).then(function (stats) { - return stats[fn2](); - }); -} - -function typeSync(fn, fn2, fp) { - if (typeof fp !== 'string') { - throw new TypeError('Expected a string'); - } - - return fs[fn](fp)[fn2](); -} - -exports.file = type.bind(null, 'stat', 'isFile'); -exports.dir = type.bind(null, 'stat', 'isDirectory'); -exports.symlink = type.bind(null, 'lstat', 'isSymbolicLink'); -exports.fileSync = typeSync.bind(null, 'statSync', 'isFile'); -exports.dirSync = typeSync.bind(null, 'statSync', 'isDirectory'); -exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/package.json deleted file mode 100644 index d2a76196..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "path-type@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/read-pkg" - ] - ], - "_from": "path-type@>=1.0.0 <2.0.0", - "_id": "path-type@1.1.0", - "_inCache": true, - "_installable": true, - "_location": "/path-type", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "path-type", - "raw": "path-type@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/read-pkg" - ], - "_resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "_shasum": "59c44f7ee491da704da415da5a4070ba4f8fe441", - "_shrinkwrap": null, - "_spec": "path-type@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/read-pkg", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/path-type/issues" - }, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "description": "Check if a path is a file, directory, or symlink", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "59c44f7ee491da704da415da5a4070ba4f8fe441", - "tarball": "http://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "dff5c2a62f89efe7e0cce600bf38e76196d8b4b2", - "homepage": "https://github.com/sindresorhus/path-type", - "keywords": [ - "path", - "fs", - "type", - "is", - "check", - "directory", - "dir", - "file", - "filepath", - "symlink", - "symbolic", - "link", - "stat", - "stats", - "filesystem" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "path-type", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/path-type.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.1.0", - "xo": { - "ignores": [ - "test.js" - ] - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/readme.md deleted file mode 100644 index eac12d60..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/path-type/readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# path-type [![Build Status](https://travis-ci.org/sindresorhus/path-type.svg?branch=master)](https://travis-ci.org/sindresorhus/path-type) - -> Check if a path is a file, directory, or symlink - - -## Install - -``` -$ npm install --save path-type -``` - - -## Usage - -```js -var pathType = require('path-type'); - -pathType.file('package.json').then(function (isFile) { - console.log(isFile); - //=> true -}) -``` - - -## API - -### .file(path) -### .dir(path) -### .symlink(path) - -Returns a promise that resolves to a boolean of whether the path is the checked type. - -### .fileSync(path) -### .dirSync(path) -### .symlinkSync(path) - -Returns a boolean of whether the path is the checked type. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/LICENSE deleted file mode 100644 index 6a477d4c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/LICENSE +++ /dev/null @@ -1,231 +0,0 @@ -Dual Licensed MIT and Apache 2 - -The MIT License - -Copyright (c) 2013 Dominic Tarr - -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. - - - ----------------------------------------------------------------------- - - 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 (c) 2013 Dominic Tarr - - 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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/index.js deleted file mode 100644 index 0e0bf96b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/index.js +++ /dev/null @@ -1,3 +0,0 @@ -//through@2 handles this by default! -module.exports = require('through') - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/package.json deleted file mode 100644 index c5183ee4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "pause-stream@0.0.11", - "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream" - ] - ], - "_from": "pause-stream@0.0.11", - "_id": "pause-stream@0.0.11", - "_inCache": true, - "_installable": true, - "_location": "/pause-stream", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "1.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "pause-stream", - "raw": "pause-stream@0.0.11", - "rawSpec": "0.0.11", - "scope": null, - "spec": "0.0.11", - "type": "version" - }, - "_requiredBy": [ - "/event-stream", - "/gulp-symdest/event-stream", - "/gulp-vinyl-zip/event-stream" - ], - "_resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "_shasum": "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445", - "_shrinkwrap": null, - "_spec": "pause-stream@0.0.11", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "dominictarr.com" - }, - "bugs": { - "url": "https://github.com/dominictarr/pause-stream/issues" - }, - "dependencies": { - "through": "~2.3" - }, - "description": "a ThroughStream that strictly buffers all readable events when paused.", - "devDependencies": { - "stream-spec": "~0.2.0", - "stream-tester": "0.0.2" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445", - "tarball": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" - }, - "homepage": "https://github.com/dominictarr/pause-stream#readme", - "keywords": [ - "stream", - "pipe", - "pause", - "drain", - "buffer" - ], - "license": [ - "MIT", - "Apache2" - ], - "main": "index.js", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "pause-stream", - "optionalDependencies": {}, - "readme": "# PauseStream\n\nThis is a `Stream` that will strictly buffer when paused.\nConnect it to anything you need buffered.\n\n``` js\n var ps = require('pause-stream')();\n\n badlyBehavedStream.pipe(ps.pause())\n\n aLittleLater(function (err, data) {\n ps.pipe(createAnotherStream(data))\n ps.resume()\n })\n```\n\n`PauseStream` will buffer whenever paused.\nit will buffer when yau have called `pause` manually.\nbut also when it's downstream `dest.write()===false`.\nit will attempt to drain the buffer when you call resume\nor the downstream emits `'drain'`\n\n`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec)\nand [stream-tester](https://github.com/dominictarr/stream-tester)\n\nThis is now the default case of \n[through](https://github.com/dominictarr/through)\n\nhttps://github.com/dominictarr/pause-stream/commit/4a6fe3dc2c11091b1efbfde912e0473719ed9cc0\n", - "readmeFilename": "readme.markdown", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/pause-stream.git" - }, - "scripts": { - "test": "node test/index.js && node test/pause-end.js" - }, - "version": "0.0.11" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/readme.markdown deleted file mode 100644 index 23669391..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/readme.markdown +++ /dev/null @@ -1,29 +0,0 @@ -# PauseStream - -This is a `Stream` that will strictly buffer when paused. -Connect it to anything you need buffered. - -``` js - var ps = require('pause-stream')(); - - badlyBehavedStream.pipe(ps.pause()) - - aLittleLater(function (err, data) { - ps.pipe(createAnotherStream(data)) - ps.resume() - }) -``` - -`PauseStream` will buffer whenever paused. -it will buffer when yau have called `pause` manually. -but also when it's downstream `dest.write()===false`. -it will attempt to drain the buffer when you call resume -or the downstream emits `'drain'` - -`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec) -and [stream-tester](https://github.com/dominictarr/stream-tester) - -This is now the default case of -[through](https://github.com/dominictarr/through) - -https://github.com/dominictarr/pause-stream/commit/4a6fe3dc2c11091b1efbfde912e0473719ed9cc0 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/index.js deleted file mode 100644 index db8778da..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/index.js +++ /dev/null @@ -1,17 +0,0 @@ -var spec = require('stream-spec') -var tester = require('stream-tester') -var ps = require('..')() - -spec(ps) - .through({strict: false}) - .validateOnExit() - -var master = tester.createConsistent - -tester.createRandomStream(1000) //1k random numbers - .pipe(master = tester.createConsistentStream()) - .pipe(tester.createUnpauseStream()) - .pipe(ps) - .pipe(tester.createPauseStream()) - .pipe(master.createSlave()) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/pause-end.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/pause-end.js deleted file mode 100644 index a6c27ef1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pause-stream/test/pause-end.js +++ /dev/null @@ -1,33 +0,0 @@ - -var pause = require('..') -var assert = require('assert') - -var ps = pause() -var read = [], ended = false - -ps.on('data', function (i) { - read.push(i) -}) - -ps.on('end', function () { - ended = true -}) - -assert.deepEqual(read, []) - -ps.write(0) -ps.write(1) -ps.write(2) - -assert.deepEqual(read, [0, 1, 2]) - -ps.pause() - -assert.deepEqual(read, [0, 1, 2]) - -ps.end() -assert.equal(ended, false) -ps.resume() -assert.equal(ended, true) - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/LICENSE deleted file mode 100644 index 0bbb53ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (Expat) - -Copyright (c) 2014 Andrew Kelley - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/README.md deleted file mode 100644 index bb40a07c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/README.md +++ /dev/null @@ -1,41 +0,0 @@ -# Pend - -Dead-simple optimistic async helper. - -## Usage - -```js -var Pend = require('pend'); -var pend = new Pend(); -pend.max = 10; // defaults to Infinity -setTimeout(pend.hold(), 1000); // pend.wait will have to wait for this hold to finish -pend.go(function(cb) { - console.log("this function is immediately executed"); - setTimeout(function() { - console.log("calling cb 1"); - cb(); - }, 500); -}); -pend.go(function(cb) { - console.log("this function is also immediately executed"); - setTimeout(function() { - console.log("calling cb 2"); - cb(); - }, 1000); -}); -pend.wait(function(err) { - console.log("this is excuted when the first 2 have returned."); - console.log("err is a possible error in the standard callback style."); -}); -``` - -Output: - -``` -this function is immediately executed -this function is also immediately executed -calling cb 1 -calling cb 2 -this is excuted when the first 2 have returned. -err is a possible error in the standard callback style. -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/index.js deleted file mode 100644 index 3bf485ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/index.js +++ /dev/null @@ -1,55 +0,0 @@ -module.exports = Pend; - -function Pend() { - this.pending = 0; - this.max = Infinity; - this.listeners = []; - this.waiting = []; - this.error = null; -} - -Pend.prototype.go = function(fn) { - if (this.pending < this.max) { - pendGo(this, fn); - } else { - this.waiting.push(fn); - } -}; - -Pend.prototype.wait = function(cb) { - if (this.pending === 0) { - cb(this.error); - } else { - this.listeners.push(cb); - } -}; - -Pend.prototype.hold = function() { - return pendHold(this); -}; - -function pendHold(self) { - self.pending += 1; - var called = false; - return onCb; - function onCb(err) { - if (called) throw new Error("callback called twice"); - called = true; - self.error = self.error || err; - self.pending -= 1; - if (self.waiting.length > 0 && self.pending < self.max) { - pendGo(self, self.waiting.shift()); - } else if (self.pending === 0) { - var listeners = self.listeners; - self.listeners = []; - listeners.forEach(cbListener); - } - } - function cbListener(listener) { - listener(self.error); - } -} - -function pendGo(self, fn) { - fn(pendHold(self)); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/package.json deleted file mode 100644 index 30798a7c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_args": [ - [ - "pend@~1.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/fd-slicer" - ] - ], - "_from": "pend@>=1.2.0 <1.3.0", - "_id": "pend@1.2.0", - "_inCache": true, - "_installable": true, - "_location": "/pend", - "_npmUser": { - "email": "superjoe30@gmail.com", - "name": "superjoe" - }, - "_npmVersion": "1.4.21", - "_phantomChildren": {}, - "_requested": { - "name": "pend", - "raw": "pend@~1.2.0", - "rawSpec": "~1.2.0", - "scope": null, - "spec": ">=1.2.0 <1.3.0", - "type": "range" - }, - "_requiredBy": [ - "/fd-slicer" - ], - "_resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "_shasum": "7a57eb550a6783f9115331fcf4663d5c8e007a50", - "_shrinkwrap": null, - "_spec": "pend@~1.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/fd-slicer", - "author": { - "email": "superjoe30@gmail.com", - "name": "Andrew Kelley" - }, - "bugs": { - "url": "https://github.com/andrewrk/node-pend/issues" - }, - "dependencies": {}, - "description": "dead-simple optimistic async helper", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "7a57eb550a6783f9115331fcf4663d5c8e007a50", - "tarball": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - }, - "gitHead": "ed57bbe8520518dca24d0c6bb847ffb6b68ae6f9", - "homepage": "https://github.com/andrewrk/node-pend#readme", - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "superjoe30@gmail.com", - "name": "superjoe" - } - ], - "name": "pend", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/andrewrk/node-pend.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/test.js deleted file mode 100644 index 75c0f2ac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pend/test.js +++ /dev/null @@ -1,137 +0,0 @@ -var assert = require('assert'); -var Pend = require('./'); - -var tests = [ - { - name: "basic", - fn: testBasic, - }, - { - name: "max", - fn: testWithMax, - }, - { - name: "callback twice", - fn: testCallbackTwice, - }, - { - name: "calling wait twice", - fn: testCallingWaitTwice, - }, - { - name: "hold()", - fn: testHoldFn, - }, -]; -var testCount = tests.length; - -doOneTest(); - -function doOneTest() { - var test = tests.shift(); - if (!test) { - console.log(testCount + " tests passed."); - return; - } - process.stdout.write(test.name + "..."); - test.fn(function() { - process.stdout.write("OK\n"); - doOneTest(); - }); -} - -function testBasic(cb) { - var pend = new Pend(); - var results = []; - pend.go(function(cb) { - results.push(1); - setTimeout(function() { - results.push(3); - cb(); - }, 500); - }); - pend.go(function(cb) { - results.push(2); - setTimeout(function() { - results.push(4); - cb(); - }, 1000); - }); - pend.wait(function(err) { - assert.deepEqual(results, [1,2,3,4]); - cb(); - }); - assert.deepEqual(results, [1, 2]); -} - -function testWithMax(cb) { - var pend = new Pend(); - var results = []; - pend.max = 2; - pend.go(function(cb) { - results.push('a'); - setTimeout(function() { - results.push(1); - cb(); - }, 500); - }); - pend.go(function(cb) { - results.push('b'); - setTimeout(function() { - results.push(1); - cb(); - }, 500); - }); - pend.go(function(cb) { - results.push('c'); - setTimeout(function() { - results.push(2); - cb(); - }, 100); - }); - pend.wait(function(err) { - assert.deepEqual(results, ['a', 'b', 1, 'c', 1, 2]); - cb(); - }); - assert.deepEqual(results, ['a', 'b']); -} - -function testCallbackTwice(cb) { - var pend = new Pend(); - pend.go(function(cb) { - setTimeout(cb, 100); - }); - pend.go(function(cb) { - cb(); - assert.throws(cb, /callback called twice/); - }); - pend.wait(cb); -} - -function testCallingWaitTwice(cb) { - var pend = new Pend(); - pend.go(function(cb) { - setTimeout(cb, 100); - }); - pend.wait(function() { - pend.go(function(cb) { - setTimeout(cb, 50); - }); - pend.go(function(cb) { - setTimeout(cb, 10); - }); - pend.go(function(cb) { - setTimeout(cb, 20); - }); - pend.wait(cb); - }); -} - -function testHoldFn(cb) { - var pend = new Pend(); - setTimeout(pend.hold(), 100); - pend.go(function(cb) { - cb(); - }); - pend.wait(cb); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/index.js deleted file mode 100644 index 7c720ebe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/index.js +++ /dev/null @@ -1,68 +0,0 @@ -'use strict'; - -var processFn = function (fn, P, opts) { - return function () { - var that = this; - var args = new Array(arguments.length); - - for (var i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P(function (resolve, reject) { - args.push(function (err, result) { - if (err) { - reject(err); - } else if (opts.multiArgs) { - var results = new Array(arguments.length - 1); - - for (var i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - resolve(results); - } else { - resolve(result); - } - }); - - fn.apply(that, args); - }); - }; -}; - -var pify = module.exports = function (obj, P, opts) { - if (typeof P !== 'function') { - opts = P; - P = Promise; - } - - opts = opts || {}; - opts.exclude = opts.exclude || [/.+Sync$/]; - - var filter = function (key) { - var match = function (pattern) { - return typeof pattern === 'string' ? key === pattern : pattern.test(key); - }; - - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - var ret = typeof obj === 'function' ? function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, P, opts).apply(this, arguments); - } : {}; - - return Object.keys(obj).reduce(function (ret, key) { - var x = obj[key]; - - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x; - - return ret; - }, ret); -}; - -pify.all = pify; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/package.json deleted file mode 100644 index 231c58b6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "pify@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file" - ] - ], - "_from": "pify@>=2.0.0 <3.0.0", - "_id": "pify@2.3.0", - "_inCache": true, - "_installable": true, - "_location": "/pify", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "pify", - "raw": "pify@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/load-json-file", - "/path-type" - ], - "_resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "_shasum": "ed141a6ac043a849ea588498e7dca8b15330e90c", - "_shrinkwrap": null, - "_spec": "pify@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/pify/issues" - }, - "dependencies": {}, - "description": "Promisify a callback-style function", - "devDependencies": { - "ava": "*", - "pinkie-promise": "^1.0.0", - "v8-natives": "0.0.2", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "ed141a6ac043a849ea588498e7dca8b15330e90c", - "tarball": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "2dd0d8b880e4ebcc5cc33ae126b02647418e4440", - "homepage": "https://github.com/sindresorhus/pify", - "keywords": [ - "promise", - "promises", - "promisify", - "denodify", - "denodeify", - "callback", - "cb", - "node", - "then", - "thenify", - "convert", - "transform", - "wrap", - "wrapper", - "bind", - "to", - "async", - "es2015" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "pify", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/pify.git" - }, - "scripts": { - "optimization-test": "node --allow-natives-syntax optimization-test.js", - "test": "xo && ava && npm run optimization-test" - }, - "version": "2.3.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/readme.md deleted file mode 100644 index c79ca8bf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pify/readme.md +++ /dev/null @@ -1,119 +0,0 @@ -# pify [![Build Status](https://travis-ci.org/sindresorhus/pify.svg?branch=master)](https://travis-ci.org/sindresorhus/pify) - -> Promisify a callback-style function - - -## Install - -``` -$ npm install --save pify -``` - - -## Usage - -```js -const fs = require('fs'); -const pify = require('pify'); - -// promisify a single function - -pify(fs.readFile)('package.json', 'utf8').then(data => { - console.log(JSON.parse(data).name); - //=> 'pify' -}); - -// or promisify all methods in a module - -pify(fs).readFile('package.json', 'utf8').then(data => { - console.log(JSON.parse(data).name); - //=> 'pify' -}); -``` - - -## API - -### pify(input, [promiseModule], [options]) - -Returns a promise wrapped version of the supplied function or module. - -#### input - -Type: `function`, `object` - -Callback-style function or module whose methods you want to promisify. - -#### promiseModule - -Type: `function` - -Custom promise module to use instead of the native one. - -Check out [`pinkie-promise`](https://github.com/floatdrop/pinkie-promise) if you need a tiny promise polyfill. - -#### options - -##### multiArgs - -Type: `boolean` -Default: `false` - -By default, the promisified function will only return the second argument from the callback, which works fine for most APIs. This option can be useful for modules like `request` that return multiple arguments. Turning this on will make it return an array of all arguments from the callback, excluding the error argument, instead of just the second argument. - -```js -const request = require('request'); -const pify = require('pify'); - -pify(request, {multiArgs: true})('https://sindresorhus.com').then(result => { - const [httpResponse, body] = result; -}); -``` - -##### include - -Type: `array` of (`string`|`regex`) - -Methods in a module to promisify. Remaining methods will be left untouched. - -##### exclude - -Type: `array` of (`string`|`regex`) -Default: `[/.+Sync$/]` - -Methods in a module **not** to promisify. Methods with names ending with `'Sync'` are excluded by default. - -##### excludeMain - -Type: `boolean` -Default: `false` - -By default, if given module is a function itself, this function will be promisified. Turn this option on if you want to promisify only methods of the module. - -```js -const pify = require('pify'); - -function fn() { - return true; -} - -fn.method = (data, callback) => { - setImmediate(() => { - callback(data, null); - }); -}; - -// promisify methods but not fn() -const promiseFn = pify(fn, {excludeMain: true}); - -if (promiseFn()) { - promiseFn.method('hi').then(data => { - console.log(data); - }); -} -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/index.js deleted file mode 100644 index 777377a1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -module.exports = typeof Promise === 'function' ? Promise : require('pinkie'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/license deleted file mode 100644 index 1aeb74fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/package.json deleted file mode 100644 index 5bdd941a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "pinkie-promise@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/find-up" - ] - ], - "_from": "pinkie-promise@>=2.0.0 <3.0.0", - "_id": "pinkie-promise@2.0.1", - "_inCache": true, - "_installable": true, - "_location": "/pinkie-promise", - "_nodeVersion": "4.4.1", - "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/pinkie-promise-2.0.1.tgz_1460309839126_0.3422858319245279" - }, - "_npmUser": { - "email": "floatdrop@gmail.com", - "name": "floatdrop" - }, - "_npmVersion": "2.14.20", - "_phantomChildren": {}, - "_requested": { - "name": "pinkie-promise", - "raw": "pinkie-promise@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/find-up", - "/load-json-file", - "/path-exists", - "/path-type" - ], - "_resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "_shasum": "2135d6dfa7a358c069ac9b178776288228450ffa", - "_shrinkwrap": null, - "_spec": "pinkie-promise@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/find-up", - "author": { - "email": "floatdrop@gmail.com", - "name": "Vsevolod Strukchinsky", - "url": "github.com/floatdrop" - }, - "bugs": { - "url": "https://github.com/floatdrop/pinkie-promise/issues" - }, - "dependencies": { - "pinkie": "^2.0.0" - }, - "description": "ES2015 Promise ponyfill", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "2135d6dfa7a358c069ac9b178776288228450ffa", - "tarball": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "4a936c09c34ad591a25db93f1216d242de0d6184", - "homepage": "https://github.com/floatdrop/pinkie-promise", - "keywords": [ - "promise", - "promises", - "es2015", - "es6", - "polyfill", - "ponyfill" - ], - "license": "MIT", - "maintainers": [ - { - "email": "floatdrop@gmail.com", - "name": "floatdrop" - } - ], - "name": "pinkie-promise", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/floatdrop/pinkie-promise.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/readme.md deleted file mode 100644 index 78477f42..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie-promise/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -# pinkie-promise [![Build Status](https://travis-ci.org/floatdrop/pinkie-promise.svg?branch=master)](https://travis-ci.org/floatdrop/pinkie-promise) - -> [ES2015 Promise](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-promise-objects) ponyfill - -Module exports global Promise object (if available) or [`pinkie`](http://github.com/floatdrop/pinkie) Promise polyfill. - -## Install - -``` -$ npm install --save pinkie-promise -``` - -## Usage - -```js -var Promise = require('pinkie-promise'); - -new Promise(function (resolve) { resolve('unicorns'); }); -//=> Promise { 'unicorns' } -``` - -## Related - -- [pify](https://github.com/sindresorhus/pify) - Promisify a callback-style function - -## License - -MIT © [Vsevolod Strukchinsky](http://github.com/floatdrop) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/index.js deleted file mode 100644 index 14ce1bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/index.js +++ /dev/null @@ -1,292 +0,0 @@ -'use strict'; - -var PENDING = 'pending'; -var SETTLED = 'settled'; -var FULFILLED = 'fulfilled'; -var REJECTED = 'rejected'; -var NOOP = function () {}; -var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function'; - -var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate; -var asyncQueue = []; -var asyncTimer; - -function asyncFlush() { - // run promise callbacks - for (var i = 0; i < asyncQueue.length; i++) { - asyncQueue[i][0](asyncQueue[i][1]); - } - - // reset async asyncQueue - asyncQueue = []; - asyncTimer = false; -} - -function asyncCall(callback, arg) { - asyncQueue.push([callback, arg]); - - if (!asyncTimer) { - asyncTimer = true; - asyncSetTimer(asyncFlush, 0); - } -} - -function invokeResolver(resolver, promise) { - function resolvePromise(value) { - resolve(promise, value); - } - - function rejectPromise(reason) { - reject(promise, reason); - } - - try { - resolver(resolvePromise, rejectPromise); - } catch (e) { - rejectPromise(e); - } -} - -function invokeCallback(subscriber) { - var owner = subscriber.owner; - var settled = owner._state; - var value = owner._data; - var callback = subscriber[settled]; - var promise = subscriber.then; - - if (typeof callback === 'function') { - settled = FULFILLED; - try { - value = callback(value); - } catch (e) { - reject(promise, e); - } - } - - if (!handleThenable(promise, value)) { - if (settled === FULFILLED) { - resolve(promise, value); - } - - if (settled === REJECTED) { - reject(promise, value); - } - } -} - -function handleThenable(promise, value) { - var resolved; - - try { - if (promise === value) { - throw new TypeError('A promises callback cannot return that same promise.'); - } - - if (value && (typeof value === 'function' || typeof value === 'object')) { - // then should be retrieved only once - var then = value.then; - - if (typeof then === 'function') { - then.call(value, function (val) { - if (!resolved) { - resolved = true; - - if (value === val) { - fulfill(promise, val); - } else { - resolve(promise, val); - } - } - }, function (reason) { - if (!resolved) { - resolved = true; - - reject(promise, reason); - } - }); - - return true; - } - } - } catch (e) { - if (!resolved) { - reject(promise, e); - } - - return true; - } - - return false; -} - -function resolve(promise, value) { - if (promise === value || !handleThenable(promise, value)) { - fulfill(promise, value); - } -} - -function fulfill(promise, value) { - if (promise._state === PENDING) { - promise._state = SETTLED; - promise._data = value; - - asyncCall(publishFulfillment, promise); - } -} - -function reject(promise, reason) { - if (promise._state === PENDING) { - promise._state = SETTLED; - promise._data = reason; - - asyncCall(publishRejection, promise); - } -} - -function publish(promise) { - promise._then = promise._then.forEach(invokeCallback); -} - -function publishFulfillment(promise) { - promise._state = FULFILLED; - publish(promise); -} - -function publishRejection(promise) { - promise._state = REJECTED; - publish(promise); - if (!promise._handled && isNode) { - global.process.emit('unhandledRejection', promise._data, promise); - } -} - -function notifyRejectionHandled(promise) { - global.process.emit('rejectionHandled', promise); -} - -/** - * @class - */ -function Promise(resolver) { - if (typeof resolver !== 'function') { - throw new TypeError('Promise resolver ' + resolver + ' is not a function'); - } - - if (this instanceof Promise === false) { - throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.'); - } - - this._then = []; - - invokeResolver(resolver, this); -} - -Promise.prototype = { - constructor: Promise, - - _state: PENDING, - _then: null, - _data: undefined, - _handled: false, - - then: function (onFulfillment, onRejection) { - var subscriber = { - owner: this, - then: new this.constructor(NOOP), - fulfilled: onFulfillment, - rejected: onRejection - }; - - if ((onRejection || onFulfillment) && !this._handled) { - this._handled = true; - if (this._state === REJECTED && isNode) { - asyncCall(notifyRejectionHandled, this); - } - } - - if (this._state === FULFILLED || this._state === REJECTED) { - // already resolved, call callback async - asyncCall(invokeCallback, subscriber); - } else { - // subscribe - this._then.push(subscriber); - } - - return subscriber.then; - }, - - catch: function (onRejection) { - return this.then(null, onRejection); - } -}; - -Promise.all = function (promises) { - if (!Array.isArray(promises)) { - throw new TypeError('You must pass an array to Promise.all().'); - } - - return new Promise(function (resolve, reject) { - var results = []; - var remaining = 0; - - function resolver(index) { - remaining++; - return function (value) { - results[index] = value; - if (!--remaining) { - resolve(results); - } - }; - } - - for (var i = 0, promise; i < promises.length; i++) { - promise = promises[i]; - - if (promise && typeof promise.then === 'function') { - promise.then(resolver(i), reject); - } else { - results[i] = promise; - } - } - - if (!remaining) { - resolve(results); - } - }); -}; - -Promise.race = function (promises) { - if (!Array.isArray(promises)) { - throw new TypeError('You must pass an array to Promise.race().'); - } - - return new Promise(function (resolve, reject) { - for (var i = 0, promise; i < promises.length; i++) { - promise = promises[i]; - - if (promise && typeof promise.then === 'function') { - promise.then(resolve, reject); - } else { - resolve(promise); - } - } - }); -}; - -Promise.resolve = function (value) { - if (value && typeof value === 'object' && value.constructor === Promise) { - return value; - } - - return new Promise(function (resolve) { - resolve(value); - }); -}; - -Promise.reject = function (reason) { - return new Promise(function (resolve, reject) { - reject(reason); - }); -}; - -module.exports = Promise; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/license deleted file mode 100644 index 1aeb74fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Vsevolod Strukchinsky (github.com/floatdrop) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/package.json deleted file mode 100644 index d2f7b626..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "pinkie@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/pinkie-promise" - ] - ], - "_from": "pinkie@>=2.0.0 <3.0.0", - "_id": "pinkie@2.0.4", - "_inCache": true, - "_installable": true, - "_location": "/pinkie", - "_nodeVersion": "4.2.4", - "_npmUser": { - "email": "floatdrop@gmail.com", - "name": "floatdrop" - }, - "_npmVersion": "2.14.12", - "_phantomChildren": {}, - "_requested": { - "name": "pinkie", - "raw": "pinkie@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/pinkie-promise" - ], - "_resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "_shasum": "72556b80cfa0d48a974e80e77248e80ed4f7f870", - "_shrinkwrap": null, - "_spec": "pinkie@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/pinkie-promise", - "author": { - "email": "floatdrop@gmail.com", - "name": "Vsevolod Strukchinsky", - "url": "github.com/floatdrop" - }, - "bugs": { - "url": "https://github.com/floatdrop/pinkie/issues" - }, - "dependencies": {}, - "description": "Itty bitty little widdle twinkie pinkie ES2015 Promise implementation", - "devDependencies": { - "core-assert": "^0.1.1", - "coveralls": "^2.11.4", - "mocha": "*", - "nyc": "^3.2.2", - "promises-aplus-tests": "*", - "xo": "^0.10.1" - }, - "directories": {}, - "dist": { - "shasum": "72556b80cfa0d48a974e80e77248e80ed4f7f870", - "tarball": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "8d4a92447a5c62bff9f89756caeb4c9c8770579b", - "homepage": "https://github.com/floatdrop/pinkie", - "keywords": [ - "promise", - "promises", - "es2015", - "es6" - ], - "license": "MIT", - "maintainers": [ - { - "email": "floatdrop@gmail.com", - "name": "floatdrop" - } - ], - "name": "pinkie", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/floatdrop/pinkie.git" - }, - "scripts": { - "coverage": "nyc report --reporter=text-lcov | coveralls", - "test": "xo && nyc mocha" - }, - "version": "2.0.4" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/readme.md deleted file mode 100644 index 1565f958..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pinkie/readme.md +++ /dev/null @@ -1,83 +0,0 @@ -

      -
      - pinkie -
      -
      -

      - -> Itty bitty little widdle twinkie pinkie [ES2015 Promise](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-promise-objects) implementation - -[![Build Status](https://travis-ci.org/floatdrop/pinkie.svg?branch=master)](https://travis-ci.org/floatdrop/pinkie) [![Coverage Status](https://coveralls.io/repos/floatdrop/pinkie/badge.svg?branch=master&service=github)](https://coveralls.io/github/floatdrop/pinkie?branch=master) - -There are [tons of Promise implementations](https://github.com/promises-aplus/promises-spec/blob/master/implementations.md#standalone) out there, but all of them focus on browser compatibility and are often bloated with functionality. - -This module is an exact Promise specification polyfill (like [native-promise-only](https://github.com/getify/native-promise-only)), but in Node.js land (it should be browserify-able though). - - -## Install - -``` -$ npm install --save pinkie -``` - - -## Usage - -```js -var fs = require('fs'); -var Promise = require('pinkie'); - -new Promise(function (resolve, reject) { - fs.readFile('foo.json', 'utf8', function (err, data) { - if (err) { - reject(err); - return; - } - - resolve(data); - }); -}); -//=> Promise -``` - - -### API - -`pinkie` exports bare [ES2015 Promise](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-promise-objects) implementation and polyfills [Node.js rejection events](https://nodejs.org/api/process.html#process_event_unhandledrejection). In case you forgot: - -#### new Promise(executor) - -Returns new instance of `Promise`. - -##### executor - -*Required* -Type: `function` - -Function with two arguments `resolve` and `reject`. The first argument fulfills the promise, the second argument rejects it. - -#### pinkie.all(promises) - -Returns a promise that resolves when all of the promises in the `promises` Array argument have resolved. - -#### pinkie.race(promises) - -Returns a promise that resolves or rejects as soon as one of the promises in the `promises` Array resolves or rejects, with the value or reason from that promise. - -#### pinkie.reject(reason) - -Returns a Promise object that is rejected with the given `reason`. - -#### pinkie.resolve(value) - -Returns a Promise object that is resolved with the given `value`. If the `value` is a thenable (i.e. has a then method), the returned promise will "follow" that thenable, adopting its eventual state; otherwise the returned promise will be fulfilled with the `value`. - - -## Related - -- [pinkie-promise](https://github.com/floatdrop/pinkie-promise) - Returns the native Promise or this module - - -## License - -MIT © [Vsevolod Strukchinsky](http://github.com/floatdrop) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.jshintignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.jshintignore deleted file mode 100644 index cb28eb3c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/** diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.npmignore deleted file mode 100644 index 094a5f35..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/.npmignore +++ /dev/null @@ -1,10 +0,0 @@ -.DS_Store -*.log -node_modules -build -*.node -components -*.orig -.idea -test -.travis.yml diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/LICENSE deleted file mode 100644 index b7346abd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 [Richardson & Sons, LLC](http://richardsonandsons.com/) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/README.md deleted file mode 100644 index f4be28dd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/README.md +++ /dev/null @@ -1,57 +0,0 @@ -[![Build Status](https://secure.travis-ci.org/robrich/pretty-hrtime.png?branch=master)](https://travis-ci.org/robrich/pretty-hrtime) -[![Dependency Status](https://david-dm.org/robrich/pretty-hrtime.png)](https://david-dm.org/robrich/pretty-hrtime) - -pretty-hrtime -============ - -[process.hrtime()](http://nodejs.org/api/process.html#process_process_hrtime) to words - -Usage ------ - -```javascript -var prettyHrtime = require('pretty-hrtime'); - -var start = process.hrtime(); -// do stuff -var end = process.hrtime(start); - -var words = prettyHrtime(end); -console.log(words); // '1.2 ms' - -words = prettyHrtime(end, {verbose:true}); -console.log(words); // '1 millisecond 209 microseconds' - -words = prettyHrtime(end, {precise:true}); -console.log(words); // '1.20958 ms' -``` - -Note: process.hrtime() has been available since 0.7.6. -See [http://nodejs.org/changelog.html](http://nodejs.org/changelog.html) -and [https://github.com/joyent/node/commit/f06abd](https://github.com/joyent/node/commit/f06abd). - -LICENSE -------- - -(MIT License) - -Copyright (c) 2013 [Richardson & Sons, LLC](http://richardsonandsons.com/) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/index.js deleted file mode 100644 index bed3f899..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/index.js +++ /dev/null @@ -1,80 +0,0 @@ -/*jshint node:true */ - -"use strict"; - -var minimalDesc = ['h', 'min', 's', 'ms', 'μs', 'ns']; -var verboseDesc = ['hour', 'minute', 'second', 'millisecond', 'microsecond', 'nanosecond']; -var convert = [60*60, 60, 1, 1e6, 1e3, 1]; - -module.exports = function (source, opts) { - var verbose, precise, i, spot, sourceAtStep, valAtStep, decimals, strAtStep, results, totalSeconds; - - verbose = false; - precise = false; - if (opts) { - verbose = opts.verbose || false; - precise = opts.precise || false; - } - - if (!Array.isArray(source) || source.length !== 2) { - return ''; - } - if (typeof source[0] !== 'number' || typeof source[1] !== 'number') { - return ''; - } - - // normalize source array due to changes in node v5.4+ - if (source[1] < 0) { - totalSeconds = source[0] + source[1] / 1e9; - source[0] = parseInt(totalSeconds); - source[1] = parseFloat((totalSeconds % 1).toPrecision(9)) * 1e9; - } - - results = ''; - - // foreach unit - for (i = 0; i < 6; i++) { - spot = i < 3 ? 0 : 1; // grabbing first or second spot in source array - sourceAtStep = source[spot]; - if (i !== 3 && i !== 0) { - sourceAtStep = sourceAtStep % convert[i-1]; // trim off previous portions - } - if (i === 2) { - sourceAtStep += source[1]/1e9; // get partial seconds from other portion of the array - } - valAtStep = sourceAtStep / convert[i]; // val at this unit - if (valAtStep >= 1) { - if (verbose) { - valAtStep = Math.floor(valAtStep); // deal in whole units, subsequent laps will get the decimal portion - } - if (!precise) { - // don't fling too many decimals - decimals = valAtStep >= 10 ? 0 : 2; - strAtStep = valAtStep.toFixed(decimals); - } else { - strAtStep = valAtStep.toString(); - } - if (strAtStep.indexOf('.') > -1 && strAtStep[strAtStep.length-1] === '0') { - strAtStep = strAtStep.replace(/\.?0+$/,''); // remove trailing zeros - } - if (results) { - results += ' '; // append space if we have a previous value - } - results += strAtStep; // append the value - // append units - if (verbose) { - results += ' '+verboseDesc[i]; - if (strAtStep !== '1') { - results += 's'; - } - } else { - results += ' '+minimalDesc[i]; - } - if (!verbose) { - break; // verbose gets as many groups as necessary, the rest get only one - } - } - } - - return results; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/package.json deleted file mode 100644 index c3c38c3e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pretty-hrtime/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_args": [ - [ - "pretty-hrtime@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "pretty-hrtime@>=1.0.0 <2.0.0", - "_id": "pretty-hrtime@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/pretty-hrtime", - "_nodeVersion": "4.3.0", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/pretty-hrtime-1.0.2.tgz_1455771577547_0.672698044218123" - }, - "_npmUser": { - "email": "robrich@robrich.org", - "name": "robrich" - }, - "_npmVersion": "2.14.18", - "_phantomChildren": {}, - "_requested": { - "name": "pretty-hrtime", - "raw": "pretty-hrtime@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz", - "_shasum": "70ca96f4d0628a443b918758f79416a9a7bc9fa8", - "_shrinkwrap": null, - "_spec": "pretty-hrtime@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "name": "Rob Richardson", - "url": "http://robrich.org/" - }, - "bugs": { - "url": "https://github.com/robrich/pretty-hrtime/issues" - }, - "dependencies": {}, - "description": "process.hrtime() to words", - "devDependencies": { - "jshint": "^2.8.0", - "mocha": "^2.3.3", - "should": "^7.1.0" - }, - "directories": {}, - "dist": { - "shasum": "70ca96f4d0628a443b918758f79416a9a7bc9fa8", - "tarball": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz" - }, - "engines": { - "node": ">= 0.8" - }, - "gitHead": "3ac6e19e8d9cc65e29ce9e45e81fc4f331d4a71a", - "homepage": "https://github.com/robrich/pretty-hrtime", - "keywords": [ - "hrtime", - "benchmark" - ], - "license": "MIT", - "main": "./index.js", - "maintainers": [ - { - "email": "robrich@robrich.org", - "name": "robrich" - } - ], - "name": "pretty-hrtime", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/robrich/pretty-hrtime.git" - }, - "scripts": { - "test": "mocha && jshint ." - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/.travis.yml deleted file mode 100644 index 36201b10..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" - - "0.11" - - "0.12" - - "1.7.1" - - 1 - - 2 - - 3 - - 4 - - 5 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/index.js deleted file mode 100644 index 571c2767..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/index.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -if (!process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = nextTick; -} else { - module.exports = process.nextTick; -} - -function nextTick(fn) { - var args = new Array(arguments.length - 1); - var i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - process.nextTick(function afterTick() { - fn.apply(null, args); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/license.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/license.md deleted file mode 100644 index c67e3532..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/license.md +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (c) 2015 Calvin Metcalf - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/package.json deleted file mode 100644 index c0c091f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "_args": [ - [ - "process-nextick-args@~1.0.6", - "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream" - ] - ], - "_from": "process-nextick-args@>=1.0.6 <1.1.0", - "_id": "process-nextick-args@1.0.6", - "_inCache": true, - "_installable": true, - "_location": "/process-nextick-args", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "process-nextick-args", - "raw": "process-nextick-args@~1.0.6", - "rawSpec": "~1.0.6", - "scope": null, - "spec": ">=1.0.6 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/duplexify/readable-stream", - "/through2/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz", - "_shasum": "0f96b001cea90b12592ce566edb97ec11e69bd05", - "_shrinkwrap": null, - "_spec": "process-nextick-args@~1.0.6", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream", - "author": "", - "bugs": { - "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" - }, - "dependencies": {}, - "description": "process.nextTick but always with args", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "0f96b001cea90b12592ce566edb97ec11e69bd05", - "tarball": "http://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz" - }, - "gitHead": "e85787b05a8c3c1adb714f332d822e9162699c78", - "homepage": "https://github.com/calvinmetcalf/process-nextick-args", - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "process-nextick-args", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/calvinmetcalf/process-nextick-args.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.0.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/readme.md deleted file mode 100644 index 78e7cfae..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -process-nextick-args -===== - -[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) - -```bash -npm install --save process-nextick-args -``` - -Always be able to pass arguments to process.nextTick, no matter the platform - -```js -var nextTick = require('process-nextick-args'); - -nextTick(function (a, b, c) { - console.log(a, b, c); -}, 'step', 3, 'profit'); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/test.js deleted file mode 100644 index ef157215..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/process-nextick-args/test.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require("tap").test; -var nextTick = require('./'); - -test('should work', function (t) { - t.plan(5); - nextTick(function (a) { - t.ok(a); - nextTick(function (thing) { - t.equals(thing, 7); - }, 7); - }, true); - nextTick(function (a, b, c) { - t.equals(a, 'step'); - t.equals(b, 3); - t.equals(c, 'profit'); - }, 'step', 3, 'profit'); -}); - -test('correct number of arguments', function (t) { - t.plan(1); - nextTick(function () { - t.equals(2, arguments.length, 'correct number'); - }, 1, 2); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/README.md deleted file mode 100644 index 778bf01d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# pseudomap - -A thing that is a lot like ES6 `Map`, but without iterators, for use -in environments where `for..of` syntax and `Map` are not available. - -If you need iterators, or just in general a more faithful polyfill to -ES6 Maps, check out [es6-map](http://npm.im/es6-map). - -If you are in an environment where `Map` is supported, then that will -be returned instead, unless `process.env.TEST_PSEUDOMAP` is set. - -You can use any value as keys, and any value as data. Setting again -with the identical key will overwrite the previous value. - -Internally, data is stored on an `Object.create(null)` style object. -The key is coerced to a string to generate the key on the internal -data-bag object. The original key used is stored along with the data. - -In the event of a stringified-key collision, a new key is generated by -appending an increasing number to the stringified-key until finding -either the intended key or an empty spot. - -Note that because object traversal order of plain objects is not -guaranteed to be identical to insertion order, the insertion order -guarantee of `Map.prototype.forEach` is not guaranteed in this -implementation. However, in all versions of Node.js and V8 where this -module works, `forEach` does traverse data in insertion order. - -## API - -Most of the [Map -API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map), -with the following exceptions: - -1. A `Map` object is not an iterator. -2. `values`, `keys`, and `entries` methods are not implemented, - because they return iterators. -3. The argument to the constructor can be an Array of `[key, value]` - pairs, or a `Map` or `PseudoMap` object. But, since iterators - aren't used, passing any plain-old iterator won't initialize the - map properly. - -## USAGE - -Use just like a regular ES6 Map. - -```javascript -var PseudoMap = require('pseudomap') - -// optionally provide a pseudomap, or an array of [key,value] pairs -// as the argument to initialize the map with -var myMap = new PseudoMap() - -myMap.set(1, 'number 1') -myMap.set('1', 'string 1') -var akey = {} -var bkey = {} -myMap.set(akey, { some: 'data' }) -myMap.set(bkey, { some: 'other data' }) -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/map.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/map.js deleted file mode 100644 index 7db15994..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/map.js +++ /dev/null @@ -1,9 +0,0 @@ -if (process.env.npm_package_name === 'pseudomap' && - process.env.npm_lifecycle_script === 'test') - process.env.TEST_PSEUDOMAP = 'true' - -if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) { - module.exports = Map -} else { - module.exports = require('./pseudomap') -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/package.json deleted file mode 100644 index 20971c58..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_args": [ - [ - "pseudomap@^1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/aws4/node_modules/lru-cache" - ] - ], - "_from": "pseudomap@>=1.0.1 <2.0.0", - "_id": "pseudomap@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/pseudomap", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "3.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "pseudomap", - "raw": "pseudomap@^1.0.1", - "rawSpec": "^1.0.1", - "scope": null, - "spec": ">=1.0.1 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/aws4/lru-cache" - ], - "_resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "_shasum": "f052a28da70e618917ef0a8ac34c1ae5a68286b3", - "_shrinkwrap": null, - "_spec": "pseudomap@^1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/aws4/node_modules/lru-cache", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/pseudomap/issues" - }, - "dependencies": {}, - "description": "A thing that is a lot like ES6 `Map`, but without iterators, for use in environments where `for..of` syntax and `Map` are not available.", - "devDependencies": { - "tap": "^2.3.1" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "f052a28da70e618917ef0a8ac34c1ae5a68286b3", - "tarball": "http://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - }, - "gitHead": "b6dc728207a0321ede6479e34506d3e0e13a940b", - "homepage": "https://github.com/isaacs/pseudomap#readme", - "license": "ISC", - "main": "map.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "pseudomap", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/pseudomap.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/pseudomap.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/pseudomap.js deleted file mode 100644 index 25a21d82..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/pseudomap.js +++ /dev/null @@ -1,113 +0,0 @@ -var hasOwnProperty = Object.prototype.hasOwnProperty - -module.exports = PseudoMap - -function PseudoMap (set) { - if (!(this instanceof PseudoMap)) // whyyyyyyy - throw new TypeError("Constructor PseudoMap requires 'new'") - - this.clear() - - if (set) { - if ((set instanceof PseudoMap) || - (typeof Map === 'function' && set instanceof Map)) - set.forEach(function (value, key) { - this.set(key, value) - }, this) - else if (Array.isArray(set)) - set.forEach(function (kv) { - this.set(kv[0], kv[1]) - }, this) - else - throw new TypeError('invalid argument') - } -} - -PseudoMap.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - Object.keys(this._data).forEach(function (k) { - if (k !== 'size') - fn.call(thisp, this._data[k].value, this._data[k].key) - }, this) -} - -PseudoMap.prototype.has = function (k) { - return !!find(this._data, k) -} - -PseudoMap.prototype.get = function (k) { - var res = find(this._data, k) - return res && res.value -} - -PseudoMap.prototype.set = function (k, v) { - set(this._data, k, v) -} - -PseudoMap.prototype.delete = function (k) { - var res = find(this._data, k) - if (res) { - delete this._data[res._index] - this._data.size-- - } -} - -PseudoMap.prototype.clear = function () { - var data = Object.create(null) - data.size = 0 - - Object.defineProperty(this, '_data', { - value: data, - enumerable: false, - configurable: true, - writable: false - }) -} - -Object.defineProperty(PseudoMap.prototype, 'size', { - get: function () { - return this._data.size - }, - set: function (n) {}, - enumerable: true, - configurable: true -}) - -PseudoMap.prototype.values = -PseudoMap.prototype.keys = -PseudoMap.prototype.entries = function () { - throw new Error('iterators are not implemented in this version') -} - -// Either identical, or both NaN -function same (a, b) { - return a === b || a !== a && b !== b -} - -function Entry (k, v, i) { - this.key = k - this.value = v - this._index = i -} - -function find (data, k) { - for (var i = 0, s = '_' + k, key = s; - hasOwnProperty.call(data, key); - key = s + i++) { - if (same(data[key].key, k)) - return data[key] - } -} - -function set (data, k, v) { - for (var i = 0, s = '_' + k, key = s; - hasOwnProperty.call(data, key); - key = s + i++) { - if (same(data[key].key, k)) { - data[key].value = v - return - } - } - data.size++ - data[key] = new Entry(k, v, key) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/test/basic.js deleted file mode 100644 index 4378e454..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/pseudomap/test/basic.js +++ /dev/null @@ -1,86 +0,0 @@ -var t = require('tap') - -process.env.TEST_PSEUDOMAP = 'true' - -var PM = require('../') -runTests(PM) - -// if possible, verify that Map also behaves the same way -if (typeof Map === 'function') - runTests(Map) - - -function runTests (Map) { - t.throws(Map) - - var m = new Map() - - t.equal(m.size, 0) - - m.set(1, '1 string') - t.equal(m.get(1), '1 string') - t.equal(m.size, 1) - m.size = 1000 - t.equal(m.size, 1) - m.size = 0 - t.equal(m.size, 1) - - m = new Map([[1, 'number 1'], ['1', 'string 1']]) - t.equal(m.get(1), 'number 1') - t.equal(m.get('1'), 'string 1') - t.equal(m.size, 2) - - m = new Map(m) - t.equal(m.get(1), 'number 1') - t.equal(m.get('1'), 'string 1') - t.equal(m.size, 2) - - var akey = {} - var bkey = {} - m.set(akey, { some: 'data' }) - m.set(bkey, { some: 'other data' }) - t.same(m.get(akey), { some: 'data' }) - t.same(m.get(bkey), { some: 'other data' }) - t.equal(m.size, 4) - - var x = /x/ - var y = /x/ - m.set(x, 'x regex') - m.set(y, 'y regex') - t.equal(m.get(x), 'x regex') - m.set(x, 'x again') - t.equal(m.get(x), 'x again') - t.equal(m.size, 6) - - m.set(NaN, 'not a number') - t.equal(m.get(NaN), 'not a number') - m.set(NaN, 'it is a ' + typeof NaN) - t.equal(m.get(NaN), 'it is a number') - m.set('NaN', 'stringie nan') - t.equal(m.get(NaN), 'it is a number') - t.equal(m.get('NaN'), 'stringie nan') - t.equal(m.size, 8) - - m.delete(NaN) - t.equal(m.get(NaN), undefined) - t.equal(m.size, 7) - - var expect = [ - { value: 'number 1', key: 1 }, - { value: 'string 1', key: '1' }, - { value: { some: 'data' }, key: {} }, - { value: { some: 'other data' }, key: {} }, - { value: 'x again', key: /x/ }, - { value: 'y regex', key: /x/ }, - { value: 'stringie nan', key: 'NaN' } - ] - var actual = [] - - m.forEach(function (value, key) { - actual.push({ value: value, key: key }) - }) - t.same(actual, expect) - - m.clear() - t.equal(m.size, 0) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.eslintignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.eslintignore deleted file mode 100644 index 1521c8b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintrc deleted file mode 100644 index 997b3f7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.jshintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "node": true, - - "curly": true, - "latedef": true, - "quotmark": true, - "undef": true, - "unused": true, - "trailing": true -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.npmignore deleted file mode 100644 index 2abba8d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.npmignore +++ /dev/null @@ -1,19 +0,0 @@ -.idea -*.iml -npm-debug.log -dump.rdb -node_modules -results.tap -results.xml -npm-shrinkwrap.json -config.json -.DS_Store -*/.DS_Store -*/*/.DS_Store -._* -*/._* -*/*/._* -coverage.* -lib-cov -complexity.md -dist diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.travis.yml deleted file mode 100644 index f5021788..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: node_js - -node_js: - - 0.10 - - 0.12 - - iojs diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CHANGELOG.md deleted file mode 100644 index 1fadc78e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CHANGELOG.md +++ /dev/null @@ -1,88 +0,0 @@ - -## [**3.1.0**](https://github.com/hapijs/qs/issues?milestone=24&state=open) -- [**#89**](https://github.com/hapijs/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" - -## [**3.0.0**](https://github.com/hapijs/qs/issues?milestone=23&state=closed) -- [**#77**](https://github.com/hapijs/qs/issues/77) Perf boost -- [**#60**](https://github.com/hapijs/qs/issues/60) Add explicit option to disable array parsing -- [**#80**](https://github.com/hapijs/qs/issues/80) qs.parse silently drops properties -- [**#74**](https://github.com/hapijs/qs/issues/74) Bad parse when turning array into object -- [**#81**](https://github.com/hapijs/qs/issues/81) Add a `filter` option -- [**#68**](https://github.com/hapijs/qs/issues/68) Fixed issue with recursion and passing strings into objects. -- [**#66**](https://github.com/hapijs/qs/issues/66) Add mixed array and object dot notation support Closes: #47 -- [**#76**](https://github.com/hapijs/qs/issues/76) RFC 3986 -- [**#85**](https://github.com/hapijs/qs/issues/85) No equal sign -- [**#84**](https://github.com/hapijs/qs/issues/84) update license attribute - -## [**2.4.1**](https://github.com/hapijs/qs/issues?milestone=20&state=closed) -- [**#73**](https://github.com/hapijs/qs/issues/73) Property 'hasOwnProperty' of object # is not a function - -## [**2.4.0**](https://github.com/hapijs/qs/issues?milestone=19&state=closed) -- [**#70**](https://github.com/hapijs/qs/issues/70) Add arrayFormat option - -## [**2.3.3**](https://github.com/hapijs/qs/issues?milestone=18&state=closed) -- [**#59**](https://github.com/hapijs/qs/issues/59) make sure array indexes are >= 0, closes #57 -- [**#58**](https://github.com/hapijs/qs/issues/58) make qs usable for browser loader - -## [**2.3.2**](https://github.com/hapijs/qs/issues?milestone=17&state=closed) -- [**#55**](https://github.com/hapijs/qs/issues/55) allow merging a string into an object - -## [**2.3.1**](https://github.com/hapijs/qs/issues?milestone=16&state=closed) -- [**#52**](https://github.com/hapijs/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". - -## [**2.3.0**](https://github.com/hapijs/qs/issues?milestone=15&state=closed) -- [**#50**](https://github.com/hapijs/qs/issues/50) add option to omit array indices, closes #46 - -## [**2.2.5**](https://github.com/hapijs/qs/issues?milestone=14&state=closed) -- [**#39**](https://github.com/hapijs/qs/issues/39) Is there an alternative to Buffer.isBuffer? -- [**#49**](https://github.com/hapijs/qs/issues/49) refactor utils.merge, fixes #45 -- [**#41**](https://github.com/hapijs/qs/issues/41) avoid browserifying Buffer, for #39 - -## [**2.2.4**](https://github.com/hapijs/qs/issues?milestone=13&state=closed) -- [**#38**](https://github.com/hapijs/qs/issues/38) how to handle object keys beginning with a number - -## [**2.2.3**](https://github.com/hapijs/qs/issues?milestone=12&state=closed) -- [**#37**](https://github.com/hapijs/qs/issues/37) parser discards first empty value in array -- [**#36**](https://github.com/hapijs/qs/issues/36) Update to lab 4.x - -## [**2.2.2**](https://github.com/hapijs/qs/issues?milestone=11&state=closed) -- [**#33**](https://github.com/hapijs/qs/issues/33) Error when plain object in a value -- [**#34**](https://github.com/hapijs/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty -- [**#24**](https://github.com/hapijs/qs/issues/24) Changelog? Semver? - -## [**2.2.1**](https://github.com/hapijs/qs/issues?milestone=10&state=closed) -- [**#32**](https://github.com/hapijs/qs/issues/32) account for circular references properly, closes #31 -- [**#31**](https://github.com/hapijs/qs/issues/31) qs.parse stackoverflow on circular objects - -## [**2.2.0**](https://github.com/hapijs/qs/issues?milestone=9&state=closed) -- [**#26**](https://github.com/hapijs/qs/issues/26) Don't use Buffer global if it's not present -- [**#30**](https://github.com/hapijs/qs/issues/30) Bug when merging non-object values into arrays -- [**#29**](https://github.com/hapijs/qs/issues/29) Don't call Utils.clone at the top of Utils.merge -- [**#23**](https://github.com/hapijs/qs/issues/23) Ability to not limit parameters? - -## [**2.1.0**](https://github.com/hapijs/qs/issues?milestone=8&state=closed) -- [**#22**](https://github.com/hapijs/qs/issues/22) Enable using a RegExp as delimiter - -## [**2.0.0**](https://github.com/hapijs/qs/issues?milestone=7&state=closed) -- [**#18**](https://github.com/hapijs/qs/issues/18) Why is there arrayLimit? -- [**#20**](https://github.com/hapijs/qs/issues/20) Configurable parametersLimit -- [**#21**](https://github.com/hapijs/qs/issues/21) make all limits optional, for #18, for #20 - -## [**1.2.2**](https://github.com/hapijs/qs/issues?milestone=6&state=closed) -- [**#19**](https://github.com/hapijs/qs/issues/19) Don't overwrite null values - -## [**1.2.1**](https://github.com/hapijs/qs/issues?milestone=5&state=closed) -- [**#16**](https://github.com/hapijs/qs/issues/16) ignore non-string delimiters -- [**#15**](https://github.com/hapijs/qs/issues/15) Close code block - -## [**1.2.0**](https://github.com/hapijs/qs/issues?milestone=4&state=closed) -- [**#12**](https://github.com/hapijs/qs/issues/12) Add optional delim argument -- [**#13**](https://github.com/hapijs/qs/issues/13) fix #11: flattened keys in array are now correctly parsed - -## [**1.1.0**](https://github.com/hapijs/qs/issues?milestone=3&state=closed) -- [**#7**](https://github.com/hapijs/qs/issues/7) Empty values of a POST array disappear after being submitted -- [**#9**](https://github.com/hapijs/qs/issues/9) Should not omit equals signs (=) when value is null -- [**#6**](https://github.com/hapijs/qs/issues/6) Minor grammar fix in README - -## [**1.0.2**](https://github.com/hapijs/qs/issues?milestone=2&state=closed) -- [**#5**](https://github.com/hapijs/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CONTRIBUTING.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CONTRIBUTING.md deleted file mode 100644 index 89283615..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please view our [hapijs contributing guide](https://github.com/hapijs/hapi/blob/master/CONTRIBUTING.md). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/LICENSE deleted file mode 100644 index d4569487..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2014 Nathan LaFreniere and other contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * The names of any contributors may not be used to endorse or promote - products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - * * * - -The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/Makefile deleted file mode 100644 index 31cc899d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -test: - @node node_modules/lab/bin/lab -a code -L -test-cov: - @node node_modules/lab/bin/lab -a code -t 100 -L -test-cov-html: - @node node_modules/lab/bin/lab -a code -L -r html -o coverage.html - -.PHONY: test test-cov test-cov-html diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/README.md deleted file mode 100644 index 0c72aba5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/README.md +++ /dev/null @@ -1,303 +0,0 @@ -# qs - -A querystring parsing and stringifying library with some added security. - -[![Build Status](https://secure.travis-ci.org/hapijs/qs.svg)](http://travis-ci.org/hapijs/qs) - -Lead Maintainer: [Nathan LaFreniere](https://github.com/nlf) - -The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). - -## Usage - -```javascript -var Qs = require('qs'); - -var obj = Qs.parse('a=c'); // { a: 'c' } -var str = Qs.stringify(obj); // 'a=c' -``` - -### Parsing Objects - -```javascript -Qs.parse(string, [options]); -``` - -**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`, or prefixing the sub-key with a dot `.`. -For example, the string `'foo[bar]=baz'` converts to: - -```javascript -{ - foo: { - bar: 'baz' - } -} -``` - -The parsed value is returned as a plain object, created via `Object.create(null)` and as such you should be aware that prototype methods do not exist on it and a user may set those names to whatever value they like: - -```javascript -Qs.parse('a.hasOwnProperty=b'); -// { a: { hasOwnProperty: 'b' } } -``` - -URI encoded strings work too: - -```javascript -Qs.parse('a%5Bb%5D=c'); -// { a: { b: 'c' } } -``` - -You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: - -```javascript -{ - foo: { - bar: { - baz: 'foobarbaz' - } - } -} -``` - -By default, when nesting objects **qs** will only parse up to 5 children deep. This means if you attempt to parse a string like -`'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: - -```javascript -{ - a: { - b: { - c: { - d: { - e: { - f: { - '[g][h][i]': 'j' - } - } - } - } - } - } -} -``` - -This depth can be overridden by passing a `depth` option to `Qs.parse(string, [options])`: - -```javascript -Qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); -// { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } } -``` - -The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. - -For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: - -```javascript -Qs.parse('a=b&c=d', { parameterLimit: 1 }); -// { a: 'b' } -``` - -An optional delimiter can also be passed: - -```javascript -Qs.parse('a=b;c=d', { delimiter: ';' }); -// { a: 'b', c: 'd' } -``` - -Delimiters can be a regular expression too: - -```javascript -Qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); -// { a: 'b', c: 'd', e: 'f' } -``` - -### Parsing Arrays - -**qs** can also parse arrays using a similar `[]` notation: - -```javascript -Qs.parse('a[]=b&a[]=c'); -// { a: ['b', 'c'] } -``` - -You may specify an index as well: - -```javascript -Qs.parse('a[1]=c&a[0]=b'); -// { a: ['b', 'c'] } -``` - -Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number -to create an array. When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving -their order: - -```javascript -Qs.parse('a[1]=b&a[15]=c'); -// { a: ['b', 'c'] } -``` - -Note that an empty string is also a value, and will be preserved: - -```javascript -Qs.parse('a[]=&a[]=b'); -// { a: ['', 'b'] } -Qs.parse('a[0]=b&a[1]=&a[2]=c'); -// { a: ['b', '', 'c'] } -``` - -**qs** will also limit specifying indices in an array to a maximum index of `20`. Any array members with an index of greater than `20` will -instead be converted to an object with the index as the key: - -```javascript -Qs.parse('a[100]=b'); -// { a: { '100': 'b' } } -``` - -This limit can be overridden by passing an `arrayLimit` option: - -```javascript -Qs.parse('a[1]=b', { arrayLimit: 0 }); -// { a: { '1': 'b' } } -``` - -To disable array parsing entirely, set `parseArrays` to `false`. - -```javascript -Qs.parse('a[]=b', { parseArrays: false }); -// { a: { '0': 'b' } } -``` - -If you mix notations, **qs** will merge the two items into an object: - -```javascript -Qs.parse('a[0]=b&a[b]=c'); -// { a: { '0': 'b', b: 'c' } } -``` - -You can also create arrays of objects: - -```javascript -Qs.parse('a[][b]=c'); -// { a: [{ b: 'c' }] } -``` - -### Stringifying - -```javascript -Qs.stringify(object, [options]); -``` - -When stringifying, **qs** always URI encodes output. Objects are stringified as you would expect: - -```javascript -Qs.stringify({ a: 'b' }); -// 'a=b' -Qs.stringify({ a: { b: 'c' } }); -// 'a%5Bb%5D=c' -``` - -Examples beyond this point will be shown as though the output is not URI encoded for clarity. Please note that the return values in these cases *will* be URI encoded during real usage. - -When arrays are stringified, by default they are given explicit indices: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }); -// 'a[0]=b&a[1]=c&a[2]=d' -``` - -You may override this by setting the `indices` option to `false`: - -```javascript -Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); -// 'a=b&a=c&a=d' -``` - -You may use the `arrayFormat` option to specify the format of the output array - -```javascript -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) -// 'a[0]=b&a[1]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) -// 'a[]=b&a[]=c' -Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) -// 'a=b&a=c' -``` - -Empty strings and null values will omit the value, but the equals sign (=) remains in place: - -```javascript -Qs.stringify({ a: '' }); -// 'a=' -``` - -Properties that are set to `undefined` will be omitted entirely: - -```javascript -Qs.stringify({ a: null, b: undefined }); -// 'a=' -``` - -The delimiter may be overridden with stringify as well: - -```javascript -Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }); -// 'a=b;c=d' -``` - -Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. -If you pass a function, it will be called for each key to obtain the replacement value. Otherwise, if you -pass an array, it will be used to select properties and array indices for stringification: - -```javascript -function filterFunc(prefix, value) { - if (prefix == 'b') { - // Return an `undefined` value to omit a property. - return; - } - if (prefix == 'e[f]') { - return value.getTime(); - } - if (prefix == 'e[g][0]') { - return value * 2; - } - return value; -} -Qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }) -// 'a=b&c=d&e[f]=123&e[g][0]=4' -Qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }) -// 'a=b&e=f' -Qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }) -// 'a[0]=b&a[2]=d' -``` - -### Handling of `null` values - -By default, `null` values are treated like empty strings: - -```javascript -Qs.stringify({ a: null, b: '' }); -// 'a=&b=' -``` - -Parsing does not distinguish between parameters with and without equal signs. Both are converted to empty strings. - -```javascript -Qs.parse('a&b=') -// { a: '', b: '' } -``` - -To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` -values have no `=` sign: - -```javascript -Qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); -// 'a&b=' -``` - -To parse values without `=` back to `null` use the `strictNullHandling` flag: - -```javascript -Qs.parse('a&b=', { strictNullHandling: true }); -// { a: null, b: '' } - -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/bower.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/bower.json deleted file mode 100644 index ffd0641d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "qs", - "main": "dist/qs.js", - "version": "3.0.0", - "homepage": "https://github.com/hapijs/qs", - "authors": [ - "Nathan LaFreniere " - ], - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/index.js deleted file mode 100644 index 2291cd85..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/index.js deleted file mode 100644 index 0e094933..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load modules - -var Stringify = require('./stringify'); -var Parse = require('./parse'); - - -// Declare internals - -var internals = {}; - - -module.exports = { - stringify: Stringify, - parse: Parse -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/parse.js deleted file mode 100644 index 1a1e205e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/parse.js +++ /dev/null @@ -1,166 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - depth: 5, - arrayLimit: 20, - parameterLimit: 1000, - strictNullHandling: false -}; - - -internals.parseValues = function (str, options) { - - var obj = {}; - var parts = str.split(options.delimiter, options.parameterLimit === Infinity ? undefined : options.parameterLimit); - - for (var i = 0, il = parts.length; i < il; ++i) { - var part = parts[i]; - var pos = part.indexOf(']=') === -1 ? part.indexOf('=') : part.indexOf(']=') + 1; - - if (pos === -1) { - obj[Utils.decode(part)] = ''; - - if (options.strictNullHandling) { - obj[Utils.decode(part)] = null; - } - } - else { - var key = Utils.decode(part.slice(0, pos)); - var val = Utils.decode(part.slice(pos + 1)); - - if (!Object.prototype.hasOwnProperty.call(obj, key)) { - obj[key] = val; - } - else { - obj[key] = [].concat(obj[key]).concat(val); - } - } - } - - return obj; -}; - - -internals.parseObject = function (chain, val, options) { - - if (!chain.length) { - return val; - } - - var root = chain.shift(); - - var obj; - if (root === '[]') { - obj = []; - obj = obj.concat(internals.parseObject(chain, val, options)); - } - else { - obj = Object.create(null); - var cleanRoot = root[0] === '[' && root[root.length - 1] === ']' ? root.slice(1, root.length - 1) : root; - var index = parseInt(cleanRoot, 10); - var indexString = '' + index; - if (!isNaN(index) && - root !== cleanRoot && - indexString === cleanRoot && - index >= 0 && - (options.parseArrays && - index <= options.arrayLimit)) { - - obj = []; - obj[index] = internals.parseObject(chain, val, options); - } - else { - obj[cleanRoot] = internals.parseObject(chain, val, options); - } - } - - return obj; -}; - - -internals.parseKeys = function (key, val, options) { - - if (!key) { - return; - } - - // Transform dot notation to bracket notation - - if (options.allowDots) { - key = key.replace(/\.([^\.\[]+)/g, '[$1]'); - } - - // The regex chunks - - var parent = /^([^\[\]]*)/; - var child = /(\[[^\[\]]*\])/g; - - // Get the parent - - var segment = parent.exec(key); - - // Stash the parent if it exists - - var keys = []; - if (segment[1]) { - keys.push(segment[1]); - } - - // Loop through children appending to the array until we hit depth - - var i = 0; - while ((segment = child.exec(key)) !== null && i < options.depth) { - - ++i; - keys.push(segment[1]); - } - - // If there's a remainder, just add whatever is left - - if (segment) { - keys.push('[' + key.slice(segment.index) + ']'); - } - - return internals.parseObject(keys, val, options); -}; - - -module.exports = function (str, options) { - - if (str === '' || - str === null || - typeof str === 'undefined') { - - return Object.create(null); - } - - options = options || {}; - options.delimiter = typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter : internals.delimiter; - options.depth = typeof options.depth === 'number' ? options.depth : internals.depth; - options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : internals.arrayLimit; - options.parseArrays = options.parseArrays !== false; - options.allowDots = options.allowDots !== false; - options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : internals.parameterLimit; - options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - - - var tempObj = typeof str === 'string' ? internals.parseValues(str, options) : str; - var obj = Object.create(null); - - // Iterate over the keys and setup the new object - - var keys = Object.keys(tempObj); - for (var i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - var newObj = internals.parseKeys(key, tempObj[key], options); - obj = Utils.merge(obj, newObj); - } - - return Utils.compact(obj); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/stringify.js deleted file mode 100644 index 7414284c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/stringify.js +++ /dev/null @@ -1,121 +0,0 @@ -// Load modules - -var Utils = require('./utils'); - - -// Declare internals - -var internals = { - delimiter: '&', - arrayPrefixGenerators: { - brackets: function (prefix, key) { - - return prefix + '[]'; - }, - indices: function (prefix, key) { - - return prefix + '[' + key + ']'; - }, - repeat: function (prefix, key) { - - return prefix; - } - }, - strictNullHandling: false -}; - - -internals.stringify = function (obj, prefix, generateArrayPrefix, strictNullHandling, filter) { - - if (typeof filter === 'function') { - obj = filter(prefix, obj); - } - else if (Utils.isBuffer(obj)) { - obj = obj.toString(); - } - else if (obj instanceof Date) { - obj = obj.toISOString(); - } - else if (obj === null) { - if (strictNullHandling) { - return Utils.encode(prefix); - } - - obj = ''; - } - - if (typeof obj === 'string' || - typeof obj === 'number' || - typeof obj === 'boolean') { - - return [Utils.encode(prefix) + '=' + Utils.encode(obj)]; - } - - var values = []; - - if (typeof obj === 'undefined') { - return values; - } - - var objKeys = Array.isArray(filter) ? filter : Object.keys(obj); - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - - if (Array.isArray(obj)) { - values = values.concat(internals.stringify(obj[key], generateArrayPrefix(prefix, key), generateArrayPrefix, strictNullHandling, filter)); - } - else { - values = values.concat(internals.stringify(obj[key], prefix + '[' + key + ']', generateArrayPrefix, strictNullHandling, filter)); - } - } - - return values; -}; - - -module.exports = function (obj, options) { - - options = options || {}; - var delimiter = typeof options.delimiter === 'undefined' ? internals.delimiter : options.delimiter; - var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : internals.strictNullHandling; - var objKeys; - var filter; - if (typeof options.filter === 'function') { - filter = options.filter; - obj = filter('', obj); - } - else if (Array.isArray(options.filter)) { - objKeys = filter = options.filter; - } - - var keys = []; - - if (typeof obj !== 'object' || - obj === null) { - - return ''; - } - - var arrayFormat; - if (options.arrayFormat in internals.arrayPrefixGenerators) { - arrayFormat = options.arrayFormat; - } - else if ('indices' in options) { - arrayFormat = options.indices ? 'indices' : 'repeat'; - } - else { - arrayFormat = 'indices'; - } - - var generateArrayPrefix = internals.arrayPrefixGenerators[arrayFormat]; - - if (!objKeys) { - objKeys = Object.keys(obj); - } - for (var i = 0, il = objKeys.length; i < il; ++i) { - var key = objKeys[i]; - keys = keys.concat(internals.stringify(obj[key], key, generateArrayPrefix, strictNullHandling, filter)); - } - - return keys.join(delimiter); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/utils.js deleted file mode 100644 index ec93afcd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/lib/utils.js +++ /dev/null @@ -1,190 +0,0 @@ -// Load modules - - -// Declare internals - -var internals = {}; -internals.hexTable = new Array(256); -for (var i = 0; i < 256; ++i) { - internals.hexTable[i] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase(); -} - - -exports.arrayToObject = function (source) { - - var obj = Object.create(null); - for (var i = 0, il = source.length; i < il; ++i) { - if (typeof source[i] !== 'undefined') { - - obj[i] = source[i]; - } - } - - return obj; -}; - - -exports.merge = function (target, source) { - - if (!source) { - return target; - } - - if (typeof source !== 'object') { - if (Array.isArray(target)) { - target.push(source); - } - else if (typeof target === 'object') { - target[source] = true; - } - else { - target = [target, source]; - } - - return target; - } - - if (typeof target !== 'object') { - target = [target].concat(source); - return target; - } - - if (Array.isArray(target) && - !Array.isArray(source)) { - - target = exports.arrayToObject(target); - } - - var keys = Object.keys(source); - for (var k = 0, kl = keys.length; k < kl; ++k) { - var key = keys[k]; - var value = source[key]; - - if (!target[key]) { - target[key] = value; - } - else { - target[key] = exports.merge(target[key], value); - } - } - - return target; -}; - - -exports.decode = function (str) { - - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (e) { - return str; - } -}; - -exports.encode = function (str) { - - // This code was originally written by Brian White (mscdex) for the io.js core querystring library. - // It has been adapted here for stricter adherence to RFC 3986 - if (str.length === 0) { - return str; - } - - if (typeof str !== 'string') { - str = '' + str; - } - - var out = ''; - for (var i = 0, il = str.length; i < il; ++i) { - var c = str.charCodeAt(i); - - if (c === 0x2D || // - - c === 0x2E || // . - c === 0x5F || // _ - c === 0x7E || // ~ - (c >= 0x30 && c <= 0x39) || // 0-9 - (c >= 0x41 && c <= 0x5A) || // a-z - (c >= 0x61 && c <= 0x7A)) { // A-Z - - out += str[i]; - continue; - } - - if (c < 0x80) { - out += internals.hexTable[c]; - continue; - } - - if (c < 0x800) { - out += internals.hexTable[0xC0 | (c >> 6)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - if (c < 0xD800 || c >= 0xE000) { - out += internals.hexTable[0xE0 | (c >> 12)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - continue; - } - - ++i; - c = 0x10000 + (((c & 0x3FF) << 10) | (str.charCodeAt(i) & 0x3FF)); - out += internals.hexTable[0xF0 | (c >> 18)] + internals.hexTable[0x80 | ((c >> 12) & 0x3F)] + internals.hexTable[0x80 | ((c >> 6) & 0x3F)] + internals.hexTable[0x80 | (c & 0x3F)]; - } - - return out; -}; - -exports.compact = function (obj, refs) { - - if (typeof obj !== 'object' || - obj === null) { - - return obj; - } - - refs = refs || []; - var lookup = refs.indexOf(obj); - if (lookup !== -1) { - return refs[lookup]; - } - - refs.push(obj); - - if (Array.isArray(obj)) { - var compacted = []; - - for (var i = 0, il = obj.length; i < il; ++i) { - if (typeof obj[i] !== 'undefined') { - compacted.push(obj[i]); - } - } - - return compacted; - } - - var keys = Object.keys(obj); - for (i = 0, il = keys.length; i < il; ++i) { - var key = keys[i]; - obj[key] = exports.compact(obj[key], refs); - } - - return obj; -}; - - -exports.isRegExp = function (obj) { - - return Object.prototype.toString.call(obj) === '[object RegExp]'; -}; - - -exports.isBuffer = function (obj) { - - if (obj === null || - typeof obj === 'undefined') { - - return false; - } - - return !!(obj.constructor && - obj.constructor.isBuffer && - obj.constructor.isBuffer(obj)); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/package.json deleted file mode 100644 index f0e68e5d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_args": [ - [ - "qs@~3.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "qs@>=3.1.0 <3.2.0", - "_id": "qs@3.1.0", - "_inCache": true, - "_installable": true, - "_location": "/qs", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "quitlahok@gmail.com", - "name": "nlf" - }, - "_npmVersion": "2.9.0", - "_phantomChildren": {}, - "_requested": { - "name": "qs", - "raw": "qs@~3.1.0", - "rawSpec": "~3.1.0", - "scope": null, - "spec": ">=3.1.0 <3.2.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz", - "_shasum": "d0e9ae745233a12dc43fb4f3055bba446261153c", - "_shrinkwrap": null, - "_spec": "qs@~3.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "bugs": { - "url": "https://github.com/hapijs/qs/issues" - }, - "dependencies": {}, - "description": "A querystring parser that supports nesting and arrays, with a depth limit", - "devDependencies": { - "browserify": "^10.2.1", - "code": "1.x.x", - "lab": "5.x.x" - }, - "directories": {}, - "dist": { - "shasum": "d0e9ae745233a12dc43fb4f3055bba446261153c", - "tarball": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz" - }, - "gitHead": "e53b1b242a55f886531954ebdd78b3b20efadaf0", - "homepage": "https://github.com/hapijs/qs", - "keywords": [ - "querystring", - "qs" - ], - "license": "BSD-3-Clause", - "main": "index.js", - "maintainers": [ - { - "email": "quitlahok@gmail.com", - "name": "nlf" - }, - { - "email": "eran@hueniverse.com", - "name": "hueniverse" - } - ], - "name": "qs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/hapijs/qs.git" - }, - "scripts": { - "dist": "browserify --standalone Qs index.js > dist/qs.js", - "test": "make test-cov" - }, - "version": "3.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/parse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/parse.js deleted file mode 100644 index 9afbf35f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/parse.js +++ /dev/null @@ -1,455 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('parse()', function () { - - it('parses a simple string', function (done) { - - expect(Qs.parse('0=foo')).to.deep.equal({ '0': 'foo' }, { prototype: false }); - expect(Qs.parse('foo=c++')).to.deep.equal({ foo: 'c ' }, { prototype: false }); - expect(Qs.parse('a[>=]=23')).to.deep.equal({ a: { '>=': '23' } }, { prototype: false }); - expect(Qs.parse('a[<=>]==23')).to.deep.equal({ a: { '<=>': '=23' } }, { prototype: false }); - expect(Qs.parse('a[==]=23')).to.deep.equal({ a: { '==': '23' } }, { prototype: false }); - expect(Qs.parse('foo', {strictNullHandling: true})).to.deep.equal({ foo: null }, { prototype: false }); - expect(Qs.parse('foo' )).to.deep.equal({ foo: '' }, { prototype: false }); - expect(Qs.parse('foo=')).to.deep.equal({ foo: '' }, { prototype: false }); - expect(Qs.parse('foo=bar')).to.deep.equal({ foo: 'bar' }, { prototype: false }); - expect(Qs.parse(' foo = bar = baz ')).to.deep.equal({ ' foo ': ' bar = baz ' }, { prototype: false }); - expect(Qs.parse('foo=bar=baz')).to.deep.equal({ foo: 'bar=baz' }, { prototype: false }); - expect(Qs.parse('foo=bar&bar=baz')).to.deep.equal({ foo: 'bar', bar: 'baz' }, { prototype: false }); - expect(Qs.parse('foo2=bar2&baz2=')).to.deep.equal({ foo2: 'bar2', baz2: '' }, { prototype: false }); - expect(Qs.parse('foo=bar&baz', {strictNullHandling: true})).to.deep.equal({ foo: 'bar', baz: null }, { prototype: false }); - expect(Qs.parse('foo=bar&baz')).to.deep.equal({ foo: 'bar', baz: '' }, { prototype: false }); - expect(Qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World')).to.deep.equal({ - cht: 'p3', - chd: 't:60,40', - chs: '250x100', - chl: 'Hello|World' - }, { prototype: false }); - done(); - }); - - it('allows disabling dot notation', function (done) { - - expect(Qs.parse('a.b=c')).to.deep.equal({ a: { b: 'c' } }, { prototype: false }); - expect(Qs.parse('a.b=c', { allowDots: false })).to.deep.equal({ 'a.b': 'c' }, { prototype: false }); - done(); - }); - - it('parses a single nested string', function (done) { - - expect(Qs.parse('a[b]=c')).to.deep.equal({ a: { b: 'c' } }, { prototype: false }); - done(); - }); - - it('parses a double nested string', function (done) { - - expect(Qs.parse('a[b][c]=d')).to.deep.equal({ a: { b: { c: 'd' } } }, { prototype: false }); - done(); - }); - - it('defaults to a depth of 5', function (done) { - - expect(Qs.parse('a[b][c][d][e][f][g][h]=i')).to.deep.equal({ a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, { prototype: false }); - done(); - }); - - it('only parses one level when depth = 1', function (done) { - - expect(Qs.parse('a[b][c]=d', { depth: 1 })).to.deep.equal({ a: { b: { '[c]': 'd' } } }, { prototype: false }); - expect(Qs.parse('a[b][c][d]=e', { depth: 1 })).to.deep.equal({ a: { b: { '[c][d]': 'e' } } }, { prototype: false }); - done(); - }); - - it('parses a simple array', function (done) { - - expect(Qs.parse('a=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - done(); - }); - - it('parses an explicit array', function (done) { - - expect(Qs.parse('a[]=b')).to.deep.equal({ a: ['b'] }, { prototype: false }); - expect(Qs.parse('a[]=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a[]=b&a[]=c&a[]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }, { prototype: false }); - done(); - }); - - it('parses a mix of simple and explicit arrays', function (done) { - - expect(Qs.parse('a=b&a[]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a[]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a[0]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a=b&a[0]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a[1]=b&a=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a=b&a[1]=c')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - done(); - }); - - it('parses a nested array', function (done) { - - expect(Qs.parse('a[b][]=c&a[b][]=d')).to.deep.equal({ a: { b: ['c', 'd'] } }, { prototype: false }); - expect(Qs.parse('a[>=]=25')).to.deep.equal({ a: { '>=': '25' } }, { prototype: false }); - done(); - }); - - it('allows to specify array indices', function (done) { - - expect(Qs.parse('a[1]=c&a[0]=b&a[2]=d')).to.deep.equal({ a: ['b', 'c', 'd'] }, { prototype: false }); - expect(Qs.parse('a[1]=c&a[0]=b')).to.deep.equal({ a: ['b', 'c'] }, { prototype: false }); - expect(Qs.parse('a[1]=c')).to.deep.equal({ a: ['c'] }, { prototype: false }); - done(); - }); - - it('limits specific array indices to 20', function (done) { - - expect(Qs.parse('a[20]=a')).to.deep.equal({ a: ['a'] }, { prototype: false }); - expect(Qs.parse('a[21]=a')).to.deep.equal({ a: { '21': 'a' } }, { prototype: false }); - done(); - }); - - it('supports keys that begin with a number', function (done) { - - expect(Qs.parse('a[12b]=c')).to.deep.equal({ a: { '12b': 'c' } }, { prototype: false }); - done(); - }); - - it('supports encoded = signs', function (done) { - - expect(Qs.parse('he%3Dllo=th%3Dere')).to.deep.equal({ 'he=llo': 'th=ere' }, { prototype: false }); - done(); - }); - - it('is ok with url encoded strings', function (done) { - - expect(Qs.parse('a[b%20c]=d')).to.deep.equal({ a: { 'b c': 'd' } }, { prototype: false }); - expect(Qs.parse('a[b]=c%20d')).to.deep.equal({ a: { b: 'c d' } }, { prototype: false }); - done(); - }); - - it('allows brackets in the value', function (done) { - - expect(Qs.parse('pets=["tobi"]')).to.deep.equal({ pets: '["tobi"]' }, { prototype: false }); - expect(Qs.parse('operators=[">=", "<="]')).to.deep.equal({ operators: '[">=", "<="]' }, { prototype: false }); - done(); - }); - - it('allows empty values', function (done) { - - expect(Qs.parse('')).to.deep.equal({}, { prototype: false }); - expect(Qs.parse(null)).to.deep.equal({}, { prototype: false }); - expect(Qs.parse(undefined)).to.deep.equal({}, { prototype: false }); - done(); - }); - - it('transforms arrays to objects', function (done) { - - expect(Qs.parse('foo[0]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false }); - expect(Qs.parse('foo[bad]=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false }); - expect(Qs.parse('foo[]=bar&foo[bad]=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false }); - expect(Qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }, { prototype: false }); - expect(Qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}, { prototype: false }); - expect(Qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c')).to.deep.equal({ a: { '0': 'b', t: 'u', hasOwnProperty: 'c' } }, { prototype: false }); - expect(Qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y')).to.deep.equal({ a: { '0': 'b', hasOwnProperty: 'c', x: 'y' } }, { prototype: false }); - done(); - }); - - it('transforms arrays to objects (dot notation)', function (done) { - - expect(Qs.parse('foo[0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [ { baz: 'bar'} ], fool: { bad: 'baz' } }, { prototype: false }); - expect(Qs.parse('foo[0].baz=bar&fool.bad.boo=baz')).to.deep.equal({ foo: [ { baz: 'bar'} ], fool: { bad: { boo: 'baz' } } }, { prototype: false }); - expect(Qs.parse('foo[0][0].baz=bar&fool.bad=baz')).to.deep.equal({ foo: [[ { baz: 'bar'} ]], fool: { bad: 'baz' } }, { prototype: false }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15'], bar: '2' }] }, { prototype: false }); - expect(Qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2')).to.deep.equal({ foo: [{ baz: ['15', '16'], bar: '2' }] }, { prototype: false }); - expect(Qs.parse('foo.bad=baz&foo[0]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false }); - expect(Qs.parse('foo.bad=baz&foo[]=bar')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar' } }, { prototype: false }); - expect(Qs.parse('foo[]=bar&foo.bad=baz')).to.deep.equal({ foo: { '0': 'bar', bad: 'baz' } }, { prototype: false }); - expect(Qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo')).to.deep.equal({ foo: { bad: 'baz', '0': 'bar', '1': 'foo' } }, { prototype: false }); - expect(Qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb')).to.deep.equal({foo: [ {a: 'a', b: 'b'}, {a: 'aa', b: 'bb'} ]}, { prototype: false }); - done(); - }); - - it('can add keys to objects', function (done) { - - expect(Qs.parse('a[b]=c&a=d')).to.deep.equal({ a: { b: 'c', d: true } }, { prototype: false }); - done(); - }); - - it('correctly prunes undefined values when converting an array to an object', function (done) { - - expect(Qs.parse('a[2]=b&a[99999999]=c')).to.deep.equal({ a: { '2': 'b', '99999999': 'c' } }, { prototype: false }); - done(); - }); - - it('supports malformed uri characters', function (done) { - - expect(Qs.parse('{%:%}', {strictNullHandling: true})).to.deep.equal({ '{%:%}': null }, { prototype: false }); - expect(Qs.parse('{%:%}=')).to.deep.equal({ '{%:%}': '' }, { prototype: false }); - expect(Qs.parse('foo=%:%}')).to.deep.equal({ foo: '%:%}' }, { prototype: false }); - done(); - }); - - it('doesn\'t produce empty keys', function (done) { - - expect(Qs.parse('_r=1&')).to.deep.equal({ '_r': '1' }, { prototype: false }); - done(); - }); - - it('cannot access Object prototype', function (done) { - - Qs.parse('constructor[prototype][bad]=bad'); - Qs.parse('bad[constructor][prototype][bad]=bad'); - expect(typeof Object.prototype.bad).to.equal('undefined'); - done(); - }); - - it('parses arrays of objects', function (done) { - - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false }); - expect(Qs.parse('a[0][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false }); - done(); - }); - - it('allows for empty strings in arrays', function (done) { - - expect(Qs.parse('a[]=b&a[]=&a[]=c')).to.deep.equal({ a: ['b', '', 'c'] }, { prototype: false }); - expect(Qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', {strictNullHandling: true})).to.deep.equal({ a: ['b', null, 'c', ''] }, { prototype: false }); - expect(Qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', {strictNullHandling: true})).to.deep.equal({ a: ['b', '', 'c', null] }, { prototype: false }); - expect(Qs.parse('a[]=&a[]=b&a[]=c')).to.deep.equal({ a: ['', 'b', 'c'] }, { prototype: false }); - done(); - }); - - it('compacts sparse arrays', function (done) { - - expect(Qs.parse('a[10]=1&a[2]=2')).to.deep.equal({ a: ['2', '1'] }, { prototype: false }); - done(); - }); - - it('parses semi-parsed strings', function (done) { - - expect(Qs.parse({ 'a[b]': 'c' })).to.deep.equal({ a: { b: 'c' } }, { prototype: false }); - expect(Qs.parse({ 'a[b]': 'c', 'a[d]': 'e' })).to.deep.equal({ a: { b: 'c', d: 'e' } }, { prototype: false }); - done(); - }); - - it('parses buffers correctly', function (done) { - - var b = new Buffer('test'); - expect(Qs.parse({ a: b })).to.deep.equal({ a: b }, { prototype: false }); - done(); - }); - - it('continues parsing when no parent is found', function (done) { - - expect(Qs.parse('[]=&a=b')).to.deep.equal({ '0': '', a: 'b' }, { prototype: false }); - expect(Qs.parse('[]&a=b', {strictNullHandling: true})).to.deep.equal({ '0': null, a: 'b' }, { prototype: false }); - expect(Qs.parse('[foo]=bar')).to.deep.equal({ foo: 'bar' }, { prototype: false }); - done(); - }); - - it('does not error when parsing a very long array', function (done) { - - var str = 'a[]=a'; - while (Buffer.byteLength(str) < 128 * 1024) { - str += '&' + str; - } - - expect(function () { - - Qs.parse(str); - }).to.not.throw(); - - done(); - }); - - it('should not throw when a native prototype has an enumerable property', { parallel: false }, function (done) { - - Object.prototype.crash = ''; - Array.prototype.crash = ''; - expect(Qs.parse.bind(null, 'a=b')).to.not.throw(); - expect(Qs.parse('a=b')).to.deep.equal({ a: 'b' }, { prototype: false }); - expect(Qs.parse.bind(null, 'a[][b]=c')).to.not.throw(); - expect(Qs.parse('a[][b]=c')).to.deep.equal({ a: [{ b: 'c' }] }, { prototype: false }); - delete Object.prototype.crash; - delete Array.prototype.crash; - done(); - }); - - it('parses a string with an alternative string delimiter', function (done) { - - expect(Qs.parse('a=b;c=d', { delimiter: ';' })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false }); - done(); - }); - - it('parses a string with an alternative RegExp delimiter', function (done) { - - expect(Qs.parse('a=b; c=d', { delimiter: /[;,] */ })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false }); - done(); - }); - - it('does not use non-splittable objects as delimiters', function (done) { - - expect(Qs.parse('a=b&c=d', { delimiter: true })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false }); - done(); - }); - - it('allows overriding parameter limit', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: 1 })).to.deep.equal({ a: 'b' }, { prototype: false }); - done(); - }); - - it('allows setting the parameter limit to Infinity', function (done) { - - expect(Qs.parse('a=b&c=d', { parameterLimit: Infinity })).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false }); - done(); - }); - - it('allows overriding array limit', function (done) { - - expect(Qs.parse('a[0]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '0': 'b' } }, { prototype: false }); - expect(Qs.parse('a[-1]=b', { arrayLimit: -1 })).to.deep.equal({ a: { '-1': 'b' } }, { prototype: false }); - expect(Qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }, { prototype: false }); - done(); - }); - - it('allows disabling array parsing', function (done) { - - expect(Qs.parse('a[0]=b&a[1]=c', { parseArrays: false })).to.deep.equal({ a: { '0': 'b', '1': 'c' } }, { prototype: false }); - done(); - }); - - it('parses an object', function (done) { - - var input = { - 'user[name]': {'pop[bob]': 3}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': 3}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected, { prototype: false }); - done(); - }); - - it('parses an object in dot notation', function (done) { - - var input = { - 'user.name': {'pop[bob]': 3}, - 'user.email.': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': 3}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected, { prototype: false }); - done(); - }); - - it('parses an object and not child values', function (done) { - - var input = { - 'user[name]': {'pop[bob]': { 'test': 3 }}, - 'user[email]': null - }; - - var expected = { - 'user': { - 'name': {'pop[bob]': { 'test': 3 }}, - 'email': null - } - }; - - var result = Qs.parse(input); - - expect(result).to.deep.equal(expected, { prototype: false }); - done(); - }); - - it('does not blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - var result = Qs.parse('a=b&c=d'); - global.Buffer = tempBuffer; - expect(result).to.deep.equal({ a: 'b', c: 'd' }, { prototype: false }); - done(); - }); - - it('does not crash when parsing circular references', function (done) { - - var a = {}; - a.b = a; - - var parsed; - - expect(function () { - - parsed = Qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); - }).to.not.throw(); - - expect(parsed).to.contain('foo'); - expect(parsed.foo).to.contain('bar', 'baz'); - expect(parsed.foo.bar).to.equal('baz'); - expect(parsed.foo.baz).to.deep.equal(a, { prototype: false }); - done(); - }); - - it('parses plain objects correctly', function (done) { - - var a = Object.create(null); - a.b = 'c'; - - expect(Qs.parse(a)).to.deep.equal({ b: 'c' }, { prototype: false }); - var result = Qs.parse({ a: a }); - expect(result).to.contain('a'); - expect(result.a).to.deep.equal(a, { prototype: false }); - done(); - }); - - it('parses dates correctly', function (done) { - - var now = new Date(); - expect(Qs.parse({ a: now })).to.deep.equal({ a: now }, { prototype: false }); - done(); - }); - - it('parses regular expressions correctly', function (done) { - - var re = /^test$/; - expect(Qs.parse({ a: re })).to.deep.equal({ a: re }, { prototype: false }); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/stringify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/stringify.js deleted file mode 100644 index 7a80c6c3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/stringify.js +++ /dev/null @@ -1,259 +0,0 @@ -/* eslint no-extend-native:0 */ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Qs = require('../'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('stringify()', function () { - - it('stringifies a querystring object', function (done) { - - expect(Qs.stringify({ a: 'b' })).to.equal('a=b'); - expect(Qs.stringify({ a: 1 })).to.equal('a=1'); - expect(Qs.stringify({ a: 1, b: 2 })).to.equal('a=1&b=2'); - expect(Qs.stringify({ a: 'A_Z' })).to.equal('a=A_Z'); - expect(Qs.stringify({ a: '€' })).to.equal('a=%E2%82%AC'); - expect(Qs.stringify({ a: '' })).to.equal('a=%EE%80%80'); - expect(Qs.stringify({ a: 'א' })).to.equal('a=%D7%90'); - expect(Qs.stringify({ a: '𐐷' })).to.equal('a=%F0%90%90%B7'); - done(); - }); - - it('stringifies a nested object', function (done) { - - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - expect(Qs.stringify({ a: { b: { c: { d: 'e' } } } })).to.equal('a%5Bb%5D%5Bc%5D%5Bd%5D=e'); - done(); - }); - - it('stringifies an array value', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d'); - done(); - }); - - it('omits array indices when asked', function (done) { - - expect(Qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false })).to.equal('a=b&a=c&a=d'); - done(); - }); - - it('stringifies a nested array value', function (done) { - - expect(Qs.stringify({ a: { b: ['c', 'd'] } })).to.equal('a%5Bb%5D%5B0%5D=c&a%5Bb%5D%5B1%5D=d'); - done(); - }); - - it('stringifies an object inside an array', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] })).to.equal('a%5B0%5D%5Bb%5D=c'); - expect(Qs.stringify({ a: [{ b: { c: [1] } }] })).to.equal('a%5B0%5D%5Bb%5D%5Bc%5D%5B0%5D=1'); - done(); - }); - - it('does not omit object keys when indices = false', function (done) { - - expect(Qs.stringify({ a: [{ b: 'c' }] }, { indices: false })).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('uses indices notation for arrays when indices=true', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { indices: true })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat is specified', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses indices notation for arrays when no arrayFormat=indices', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })).to.equal('a%5B0%5D=b&a%5B1%5D=c'); - done(); - }); - - it('uses repeat notation for arrays when no arrayFormat=repeat', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })).to.equal('a=b&a=c'); - done(); - }); - - it('uses brackets notation for arrays when no arrayFormat=brackets', function (done) { - - expect(Qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })).to.equal('a%5B%5D=b&a%5B%5D=c'); - done(); - }); - - it('stringifies a complicated object', function (done) { - - expect(Qs.stringify({ a: { b: 'c', d: 'e' } })).to.equal('a%5Bb%5D=c&a%5Bd%5D=e'); - done(); - }); - - it('stringifies an empty value', function (done) { - - expect(Qs.stringify({ a: '' })).to.equal('a='); - expect(Qs.stringify({ a: null }, {strictNullHandling: true})).to.equal('a'); - - expect(Qs.stringify({ a: '', b: '' })).to.equal('a=&b='); - expect(Qs.stringify({ a: null, b: '' }, {strictNullHandling: true})).to.equal('a&b='); - - expect(Qs.stringify({ a: { b: '' } })).to.equal('a%5Bb%5D='); - expect(Qs.stringify({ a: { b: null } }, {strictNullHandling: true})).to.equal('a%5Bb%5D'); - expect(Qs.stringify({ a: { b: null } }, {strictNullHandling: false})).to.equal('a%5Bb%5D='); - - done(); - }); - - it('stringifies an empty object', function (done) { - - var obj = Object.create(null); - obj.a = 'b'; - expect(Qs.stringify(obj)).to.equal('a=b'); - done(); - }); - - it('returns an empty string for invalid input', function (done) { - - expect(Qs.stringify(undefined)).to.equal(''); - expect(Qs.stringify(false)).to.equal(''); - expect(Qs.stringify(null)).to.equal(''); - expect(Qs.stringify('')).to.equal(''); - done(); - }); - - it('stringifies an object with an empty object as a child', function (done) { - - var obj = { - a: Object.create(null) - }; - - obj.a.b = 'c'; - expect(Qs.stringify(obj)).to.equal('a%5Bb%5D=c'); - done(); - }); - - it('drops keys with a value of undefined', function (done) { - - expect(Qs.stringify({ a: undefined })).to.equal(''); - - expect(Qs.stringify({ a: { b: undefined, c: null } }, {strictNullHandling: true})).to.equal('a%5Bc%5D'); - expect(Qs.stringify({ a: { b: undefined, c: null } }, {strictNullHandling: false})).to.equal('a%5Bc%5D='); - expect(Qs.stringify({ a: { b: undefined, c: '' } })).to.equal('a%5Bc%5D='); - done(); - }); - - it('url encodes values', function (done) { - - expect(Qs.stringify({ a: 'b c' })).to.equal('a=b%20c'); - done(); - }); - - it('stringifies a date', function (done) { - - var now = new Date(); - var str = 'a=' + encodeURIComponent(now.toISOString()); - expect(Qs.stringify({ a: now })).to.equal(str); - done(); - }); - - it('stringifies the weird object from qs', function (done) { - - expect(Qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' })).to.equal('my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); - done(); - }); - - it('skips properties that are part of the object prototype', function (done) { - - Object.prototype.crash = 'test'; - expect(Qs.stringify({ a: 'b'})).to.equal('a=b'); - expect(Qs.stringify({ a: { b: 'c' } })).to.equal('a%5Bb%5D=c'); - delete Object.prototype.crash; - done(); - }); - - it('stringifies boolean values', function (done) { - - expect(Qs.stringify({ a: true })).to.equal('a=true'); - expect(Qs.stringify({ a: { b: true } })).to.equal('a%5Bb%5D=true'); - expect(Qs.stringify({ b: false })).to.equal('b=false'); - expect(Qs.stringify({ b: { c: false } })).to.equal('b%5Bc%5D=false'); - done(); - }); - - it('stringifies buffer values', function (done) { - - expect(Qs.stringify({ a: new Buffer('test') })).to.equal('a=test'); - expect(Qs.stringify({ a: { b: new Buffer('test') } })).to.equal('a%5Bb%5D=test'); - done(); - }); - - it('stringifies an object using an alternative delimiter', function (done) { - - expect(Qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' })).to.equal('a=b;c=d'); - done(); - }); - - it('doesn\'t blow up when Buffer global is missing', function (done) { - - var tempBuffer = global.Buffer; - delete global.Buffer; - expect(Qs.stringify({ a: 'b', c: 'd' })).to.equal('a=b&c=d'); - global.Buffer = tempBuffer; - done(); - }); - - it('selects properties when filter=array', function (done) { - - expect(Qs.stringify({ a: 'b' }, { filter: ['a'] })).to.equal('a=b'); - expect(Qs.stringify({ a: 1}, { filter: [] })).to.equal(''); - expect(Qs.stringify({ a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, { filter: ['a', 'b', 0, 2]})).to.equal('a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3'); - done(); - - }); - - it('supports custom representations when filter=function', function (done) { - - var calls = 0; - var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; - var filterFunc = function (prefix, value) { - - calls++; - if (calls === 1) { - expect(prefix).to.be.empty(); - expect(value).to.equal(obj); - } - else if (prefix === 'c') { - return; - } - else if (value instanceof Date) { - expect(prefix).to.equal('e[f]'); - return value.getTime(); - } - return value; - }; - - expect(Qs.stringify(obj, { filter: filterFunc })).to.equal('a=b&e%5Bf%5D=1257894000000'); - expect(calls).to.equal(5); - done(); - - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/utils.js deleted file mode 100644 index a9a6b520..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/qs/test/utils.js +++ /dev/null @@ -1,28 +0,0 @@ -// Load modules - -var Code = require('code'); -var Lab = require('lab'); -var Utils = require('../lib/utils'); - - -// Declare internals - -var internals = {}; - - -// Test shortcuts - -var lab = exports.lab = Lab.script(); -var expect = Code.expect; -var describe = lab.experiment; -var it = lab.test; - - -describe('merge()', function () { - - it('can merge two objects with the same key', function (done) { - - expect(Utils.merge({ a: 'b' }, { a: 'c' })).to.deep.equal({ a: ['b', 'c'] }); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.npmignore deleted file mode 100644 index ed532189..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test -example diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.travis.yml deleted file mode 100644 index 53c3b82b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" -script: npm run travis \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/coverage.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/coverage.json deleted file mode 100644 index 3edbb8ad..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/coverage.json +++ /dev/null @@ -1 +0,0 @@ -{"/Users/jessetane/Dropbox/Projects/github/queue/index.js":{"path":"/Users/jessetane/Dropbox/Projects/github/queue/index.js","s":{"1":1,"2":1,"3":1,"4":1,"5":18,"6":9,"7":9,"8":9,"9":9,"10":9,"11":9,"12":9,"13":9,"14":9,"15":1,"16":1,"17":1,"18":9,"19":9,"20":25,"21":1,"22":15,"23":1,"24":33,"25":6,"26":33,"27":1,"28":32,"29":8,"30":0,"31":8,"32":24,"33":24,"34":24,"35":24,"36":24,"37":24,"38":1,"39":24,"40":21,"41":21,"42":21,"43":6,"44":21,"45":2,"46":19,"47":17,"48":21,"49":19,"50":6,"51":13,"52":12,"53":24,"54":6,"55":2,"56":2,"57":1,"58":1,"59":24,"60":24,"61":24,"62":24,"63":11,"64":1,"65":1,"66":1,"67":3,"68":3,"69":3,"70":1,"71":6,"72":6,"73":6,"74":1,"75":1,"76":1,"77":6,"78":6,"79":6,"80":1,"81":9,"82":9,"83":9},"b":{"1":[9,9],"2":[9,5],"3":[9,7],"4":[9,7],"5":[6,27],"6":[1,32],"7":[8,24],"8":[0,8],"9":[21,3],"10":[24,24],"11":[6,15],"12":[2,19],"13":[17,2],"14":[19,2],"15":[6,13],"16":[19,9],"17":[12,1],"18":[6,18],"19":[1,1],"20":[11,13]},"f":{"1":18,"2":9,"3":25,"4":15,"5":33,"6":24,"7":2,"8":1,"9":3,"10":6,"11":1,"12":6,"13":9},"fnMap":{"1":{"name":"Queue","line":6,"loc":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}}},"2":{"name":"(anonymous_2)","line":33,"loc":{"start":{"line":33,"column":34},"end":{"line":33,"column":51}}},"3":{"name":"(anonymous_3)","line":34,"loc":{"start":{"line":34,"column":28},"end":{"line":34,"column":39}}},"4":{"name":"(anonymous_4)","line":39,"loc":{"start":{"line":39,"column":56},"end":{"line":39,"column":67}}},"5":{"name":"(anonymous_5)","line":43,"loc":{"start":{"line":43,"column":24},"end":{"line":43,"column":37}}},"6":{"name":"next","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":66,"column":29}}},"7":{"name":"(anonymous_7)","line":91,"loc":{"start":{"line":91,"column":27},"end":{"line":91,"column":38}}},"8":{"name":"(anonymous_8)","line":110,"loc":{"start":{"line":110,"column":23},"end":{"line":110,"column":34}}},"9":{"name":"(anonymous_9)","line":114,"loc":{"start":{"line":114,"column":22},"end":{"line":114,"column":36}}},"10":{"name":"callOnErrorOrEnd","line":120,"loc":{"start":{"line":120,"column":0},"end":{"line":120,"column":30}}},"11":{"name":"onerror","line":125,"loc":{"start":{"line":125,"column":2},"end":{"line":125,"column":24}}},"12":{"name":"onend","line":126,"loc":{"start":{"line":126,"column":2},"end":{"line":126,"column":22}}},"13":{"name":"done","line":133,"loc":{"start":{"line":133,"column":0},"end":{"line":133,"column":19}}}},"statementMap":{"1":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":23}},"4":{"start":{"line":6,"column":0},"end":{"line":18,"column":1}},"5":{"start":{"line":7,"column":2},"end":{"line":8,"column":30}},"6":{"start":{"line":8,"column":4},"end":{"line":8,"column":30}},"7":{"start":{"line":10,"column":2},"end":{"line":10,"column":26}},"8":{"start":{"line":11,"column":2},"end":{"line":11,"column":26}},"9":{"start":{"line":12,"column":2},"end":{"line":12,"column":53}},"10":{"start":{"line":13,"column":2},"end":{"line":13,"column":38}},"11":{"start":{"line":14,"column":2},"end":{"line":14,"column":19}},"12":{"start":{"line":15,"column":2},"end":{"line":15,"column":19}},"13":{"start":{"line":16,"column":2},"end":{"line":16,"column":23}},"14":{"start":{"line":17,"column":2},"end":{"line":17,"column":17}},"15":{"start":{"line":19,"column":0},"end":{"line":19,"column":30}},"16":{"start":{"line":21,"column":0},"end":{"line":31,"column":2}},"17":{"start":{"line":33,"column":0},"end":{"line":37,"column":25}},"18":{"start":{"line":33,"column":33},"end":{"line":37,"column":25}},"19":{"start":{"line":34,"column":2},"end":{"line":36,"column":4}},"20":{"start":{"line":35,"column":4},"end":{"line":35,"column":63}},"21":{"start":{"line":39,"column":0},"end":{"line":41,"column":4}},"22":{"start":{"line":40,"column":2},"end":{"line":40,"column":41}},"23":{"start":{"line":43,"column":0},"end":{"line":108,"column":2}},"24":{"start":{"line":44,"column":2},"end":{"line":46,"column":3}},"25":{"start":{"line":45,"column":4},"end":{"line":45,"column":36}},"26":{"start":{"line":48,"column":2},"end":{"line":50,"column":3}},"27":{"start":{"line":49,"column":4},"end":{"line":49,"column":11}},"28":{"start":{"line":52,"column":2},"end":{"line":57,"column":3}},"29":{"start":{"line":53,"column":4},"end":{"line":55,"column":5}},"30":{"start":{"line":54,"column":6},"end":{"line":54,"column":22}},"31":{"start":{"line":56,"column":4},"end":{"line":56,"column":11}},"32":{"start":{"line":59,"column":2},"end":{"line":59,"column":18}},"33":{"start":{"line":60,"column":2},"end":{"line":60,"column":30}},"34":{"start":{"line":61,"column":2},"end":{"line":61,"column":18}},"35":{"start":{"line":62,"column":2},"end":{"line":62,"column":29}},"36":{"start":{"line":63,"column":2},"end":{"line":63,"column":23}},"37":{"start":{"line":64,"column":2},"end":{"line":64,"column":25}},"38":{"start":{"line":66,"column":2},"end":{"line":88,"column":3}},"39":{"start":{"line":67,"column":4},"end":{"line":87,"column":5}},"40":{"start":{"line":68,"column":6},"end":{"line":68,"column":19}},"41":{"start":{"line":69,"column":6},"end":{"line":69,"column":21}},"42":{"start":{"line":70,"column":6},"end":{"line":72,"column":7}},"43":{"start":{"line":71,"column":8},"end":{"line":71,"column":32}},"44":{"start":{"line":74,"column":6},"end":{"line":78,"column":7}},"45":{"start":{"line":75,"column":8},"end":{"line":75,"column":37}},"46":{"start":{"line":76,"column":13},"end":{"line":78,"column":7}},"47":{"start":{"line":77,"column":8},"end":{"line":77,"column":42}},"48":{"start":{"line":80,"column":6},"end":{"line":86,"column":7}},"49":{"start":{"line":81,"column":8},"end":{"line":85,"column":9}},"50":{"start":{"line":82,"column":10},"end":{"line":82,"column":26}},"51":{"start":{"line":83,"column":15},"end":{"line":85,"column":9}},"52":{"start":{"line":84,"column":10},"end":{"line":84,"column":23}},"53":{"start":{"line":90,"column":2},"end":{"line":99,"column":3}},"54":{"start":{"line":91,"column":4},"end":{"line":98,"column":21}},"55":{"start":{"line":92,"column":6},"end":{"line":92,"column":24}},"56":{"start":{"line":93,"column":6},"end":{"line":97,"column":7}},"57":{"start":{"line":94,"column":8},"end":{"line":94,"column":40}},"58":{"start":{"line":96,"column":8},"end":{"line":96,"column":15}},"59":{"start":{"line":101,"column":2},"end":{"line":101,"column":17}},"60":{"start":{"line":102,"column":2},"end":{"line":102,"column":22}},"61":{"start":{"line":103,"column":2},"end":{"line":103,"column":12}},"62":{"start":{"line":105,"column":2},"end":{"line":107,"column":3}},"63":{"start":{"line":106,"column":4},"end":{"line":106,"column":17}},"64":{"start":{"line":110,"column":0},"end":{"line":112,"column":2}},"65":{"start":{"line":111,"column":2},"end":{"line":111,"column":23}},"66":{"start":{"line":114,"column":0},"end":{"line":118,"column":2}},"67":{"start":{"line":115,"column":2},"end":{"line":115,"column":23}},"68":{"start":{"line":116,"column":2},"end":{"line":116,"column":19}},"69":{"start":{"line":117,"column":2},"end":{"line":117,"column":23}},"70":{"start":{"line":120,"column":0},"end":{"line":131,"column":1}},"71":{"start":{"line":121,"column":2},"end":{"line":121,"column":18}},"72":{"start":{"line":122,"column":2},"end":{"line":122,"column":28}},"73":{"start":{"line":123,"column":2},"end":{"line":123,"column":24}},"74":{"start":{"line":125,"column":2},"end":{"line":125,"column":42}},"75":{"start":{"line":125,"column":26},"end":{"line":125,"column":40}},"76":{"start":{"line":126,"column":2},"end":{"line":130,"column":3}},"77":{"start":{"line":127,"column":4},"end":{"line":127,"column":42}},"78":{"start":{"line":128,"column":4},"end":{"line":128,"column":38}},"79":{"start":{"line":129,"column":4},"end":{"line":129,"column":12}},"80":{"start":{"line":133,"column":0},"end":{"line":137,"column":1}},"81":{"start":{"line":134,"column":2},"end":{"line":134,"column":17}},"82":{"start":{"line":135,"column":2},"end":{"line":135,"column":23}},"83":{"start":{"line":136,"column":2},"end":{"line":136,"column":24}}},"branchMap":{"1":{"line":7,"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":7,"column":2}},{"start":{"line":7,"column":2},"end":{"line":7,"column":2}}]},"2":{"line":11,"type":"binary-expr","locations":[{"start":{"line":11,"column":12},"end":{"line":11,"column":19}},{"start":{"line":11,"column":23},"end":{"line":11,"column":25}}]},"3":{"line":12,"type":"binary-expr","locations":[{"start":{"line":12,"column":21},"end":{"line":12,"column":40}},{"start":{"line":12,"column":44},"end":{"line":12,"column":52}}]},"4":{"line":13,"type":"binary-expr","locations":[{"start":{"line":13,"column":17},"end":{"line":13,"column":32}},{"start":{"line":13,"column":36},"end":{"line":13,"column":37}}]},"5":{"line":44,"type":"if","locations":[{"start":{"line":44,"column":2},"end":{"line":44,"column":2}},{"start":{"line":44,"column":2},"end":{"line":44,"column":2}}]},"6":{"line":48,"type":"if","locations":[{"start":{"line":48,"column":2},"end":{"line":48,"column":2}},{"start":{"line":48,"column":2},"end":{"line":48,"column":2}}]},"7":{"line":52,"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":52,"column":2}},{"start":{"line":52,"column":2},"end":{"line":52,"column":2}}]},"8":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]},"9":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"10":{"line":67,"type":"binary-expr","locations":[{"start":{"line":67,"column":8},"end":{"line":67,"column":12}},{"start":{"line":67,"column":16},"end":{"line":67,"column":40}}]},"11":{"line":70,"type":"if","locations":[{"start":{"line":70,"column":6},"end":{"line":70,"column":6}},{"start":{"line":70,"column":6},"end":{"line":70,"column":6}}]},"12":{"line":74,"type":"if","locations":[{"start":{"line":74,"column":6},"end":{"line":74,"column":6}},{"start":{"line":74,"column":6},"end":{"line":74,"column":6}}]},"13":{"line":76,"type":"if","locations":[{"start":{"line":76,"column":13},"end":{"line":76,"column":13}},{"start":{"line":76,"column":13},"end":{"line":76,"column":13}}]},"14":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":6},"end":{"line":80,"column":6}},{"start":{"line":80,"column":6},"end":{"line":80,"column":6}}]},"15":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":8},"end":{"line":81,"column":8}},{"start":{"line":81,"column":8},"end":{"line":81,"column":8}}]},"16":{"line":81,"type":"binary-expr","locations":[{"start":{"line":81,"column":12},"end":{"line":81,"column":30}},{"start":{"line":81,"column":34},"end":{"line":81,"column":56}}]},"17":{"line":83,"type":"if","locations":[{"start":{"line":83,"column":15},"end":{"line":83,"column":15}},{"start":{"line":83,"column":15},"end":{"line":83,"column":15}}]},"18":{"line":90,"type":"if","locations":[{"start":{"line":90,"column":2},"end":{"line":90,"column":2}},{"start":{"line":90,"column":2},"end":{"line":90,"column":2}}]},"19":{"line":93,"type":"if","locations":[{"start":{"line":93,"column":6},"end":{"line":93,"column":6}},{"start":{"line":93,"column":6},"end":{"line":93,"column":6}}]},"20":{"line":105,"type":"if","locations":[{"start":{"line":105,"column":2},"end":{"line":105,"column":2}},{"start":{"line":105,"column":2},"end":{"line":105,"column":2}}]}}}} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/index.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/index.html deleted file mode 100644 index ddf2cc97..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/index.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - Code coverage report for All files - - - - - - - -
      -

      Code coverage report for All files

      -

      - - Statements: 98.8% (82 / 83)      - - - Branches: 97.5% (39 / 40)      - - - Functions: 100% (13 / 13)      - - - Lines: 98.77% (80 / 81)      - - Ignored: none      -

      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      FileStatementsBranchesFunctionsLines
      queue/98.8%(82 / 83)97.5%(39 / 40)100%(13 / 13)98.77%(80 / 81)
      -
      -
      - - - - - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.css b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.css deleted file mode 100644 index b317a7cd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.js deleted file mode 100644 index ef51e038..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/prettify.js +++ /dev/null @@ -1 +0,0 @@ -window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.html deleted file mode 100644 index 7360a598..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.html +++ /dev/null @@ -1,350 +0,0 @@ - - - - Code coverage report for queue/ - - - - - - - -
      -

      Code coverage report for queue/

      -

      - - Statements: 98.8% (82 / 83)      - - - Branches: 97.5% (39 / 40)      - - - Functions: 100% (13 / 13)      - - - Lines: 98.77% (80 / 81)      - - Ignored: none      -

      -
      All files » queue/
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      FileStatementsBranchesFunctionsLines
      index.js98.8%(82 / 83)97.5%(39 / 40)100%(13 / 13)98.77%(80 / 81)
      -
      -
      - - - - - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.js.html b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.js.html deleted file mode 100644 index 6b1789e0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov-report/queue/index.js.html +++ /dev/null @@ -1,733 +0,0 @@ - - - - Code coverage report for queue/index.js - - - - - - - -
      -

      Code coverage report for queue/index.js

      -

      - - Statements: 98.8% (82 / 83)      - - - Branches: 97.5% (39 / 40)      - - - Functions: 100% (13 / 13)      - - - Lines: 98.77% (80 / 81)      - - Ignored: none      -

      -
      All files » queue/ » index.js
      -
      -
      -
      
      -
      -
      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 -101 -102 -103 -104 -105 -106 -107 -108 -109 -110 -111 -112 -113 -114 -115 -116 -117 -118 -119 -120 -121 -122 -123 -124 -125 -126 -127 -128 -129 -130 -131 -132 -133 -134 -135 -136 -137 -1381 -1 -  -1 -  -1 -18 -9 -  -9 -9 -9 -9 -9 -9 -9 -9 -  -1 -  -1 -  -  -  -  -  -  -  -  -  -  -  -9 -9 -25 -  -  -  -1 -15 -  -  -1 -33 -6 -  -  -33 -1 -  -  -32 -8 -  -  -8 -  -  -24 -24 -24 -24 -24 -24 -  -1 -24 -21 -21 -21 -6 -  -  -21 -2 -19 -17 -  -  -21 -19 -6 -13 -12 -  -  -  -  -  -24 -6 -2 -2 -1 -  -1 -  -  -  -  -24 -24 -24 -  -24 -11 -  -  -  -1 -1 -  -  -1 -3 -3 -3 -  -  -1 -6 -6 -6 -  -1 -1 -6 -6 -6 -  -  -  -1 -9 -9 -9 -  - 
      var inherits = require('inherits');
      -var EventEmitter = require('events').EventEmitter;
      - 
      -module.exports = Queue;
      - 
      -function Queue(options) {
      -  if (!(this instanceof Queue))
      -    return new Queue(options);
      -  
      -  EventEmitter.call(this);
      -  options = options || {};
      -  this.concurrency = options.concurrency || Infinity;
      -  this.timeout = options.timeout || 0;
      -  this.pending = 0;
      -  this.session = 0;
      -  this.running = false;
      -  this.jobs = [];
      -}
      -inherits(Queue, EventEmitter);
      - 
      -var arrayMethods = [
      -  'push',
      -  'unshift',
      -  'splice',
      -  'pop',
      -  'shift',
      -  'slice',
      -  'reverse',
      -  'indexOf',
      -  'lastIndexOf'
      -];
      - 
      -for (var method in arrayMethods) (function(method) {
      -  Queue.prototype[method] = function() {
      -    return Array.prototype[method].apply(this.jobs, arguments);
      -  };
      -})(arrayMethods[method]);
      - 
      -Object.defineProperty(Queue.prototype, 'length', { get: function() {
      -  return this.pending + this.jobs.length;
      -}});
      - 
      -Queue.prototype.start = function(cb) {
      -  if (cb) {
      -    callOnErrorOrEnd.call(this, cb);
      -  }
      - 
      -  if (this.pending === this.concurrency) {
      -    return;
      -  }
      -  
      -  if (this.jobs.length === 0) {
      -    Iif (this.pending === 0) {
      -      done.call(this);
      -    }
      -    return;
      -  }
      -  
      -  var self = this;
      -  var job = this.jobs.shift();
      -  var once = true;
      -  var session = this.session;
      -  var timeoutId = null;
      -  var didTimeout = false;
      -  
      -  function next(err, result) {
      -    if (once && self.session === session) {
      -      once = false;
      -      self.pending--;
      -      if (timeoutId !== null) {
      -        clearTimeout(timeoutId);
      -      }
      -      
      -      if (err) {
      -        self.emit('error', err, job);
      -      } else if (didTimeout === false) {
      -        self.emit('success', result, job);
      -      }
      -      
      -      if (self.session === session) {
      -        if (self.pending === 0 && self.jobs.length === 0) {
      -          done.call(self);
      -        } else if (self.running) {
      -          self.start();
      -        }
      -      }
      -    }
      -  }
      -  
      -  if (this.timeout) {
      -    timeoutId = setTimeout(function() {
      -      didTimeout = true;
      -      if (self.listeners('timeout').length > 0) {
      -        self.emit('timeout', next, job);
      -      } else {
      -        next();
      -      }
      -    }, this.timeout);
      -  }
      -  
      -  this.pending++;
      -  this.running = true;
      -  job(next);
      -  
      -  if (this.jobs.length > 0) {
      -    this.start();
      -  }
      -};
      - 
      -Queue.prototype.stop = function() {
      -  this.running = false;
      -};
      - 
      -Queue.prototype.end = function(err) {
      -  this.jobs.length = 0;
      -  this.pending = 0;
      -  done.call(this, err);
      -};
      - 
      -function callOnErrorOrEnd(cb) {
      -  var self = this;
      -  this.on('error', onerror);
      -  this.on('end', onend);
      - 
      -  function onerror(err) { self.end(err); }
      -  function onend(err) {
      -    self.removeListener('error', onerror);
      -    self.removeListener('end', onend);
      -    cb(err);
      -  }
      -}
      - 
      -function done(err) {
      -  this.session++;
      -  this.running = false;
      -  this.emit('end', err);
      -}
      - 
      - -
      - - - - - - - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov.info b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov.info deleted file mode 100644 index 4ae8cf06..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/coverage/lcov.info +++ /dev/null @@ -1,156 +0,0 @@ -TN: -SF:/Users/jessetane/Dropbox/Projects/github/queue/index.js -FN:6,Queue -FN:33,(anonymous_2) -FN:34,(anonymous_3) -FN:39,(anonymous_4) -FN:43,(anonymous_5) -FN:66,next -FN:91,(anonymous_7) -FN:110,(anonymous_8) -FN:114,(anonymous_9) -FN:120,callOnErrorOrEnd -FN:125,onerror -FN:126,onend -FN:133,done -FNF:13 -FNH:13 -FNDA:18,Queue -FNDA:9,(anonymous_2) -FNDA:25,(anonymous_3) -FNDA:15,(anonymous_4) -FNDA:33,(anonymous_5) -FNDA:24,next -FNDA:2,(anonymous_7) -FNDA:1,(anonymous_8) -FNDA:3,(anonymous_9) -FNDA:6,callOnErrorOrEnd -FNDA:1,onerror -FNDA:6,onend -FNDA:9,done -DA:1,1 -DA:2,1 -DA:4,1 -DA:6,1 -DA:7,18 -DA:8,9 -DA:10,9 -DA:11,9 -DA:12,9 -DA:13,9 -DA:14,9 -DA:15,9 -DA:16,9 -DA:17,9 -DA:19,1 -DA:21,1 -DA:33,9 -DA:34,9 -DA:35,25 -DA:39,1 -DA:40,15 -DA:43,1 -DA:44,33 -DA:45,6 -DA:48,33 -DA:49,1 -DA:52,32 -DA:53,8 -DA:54,0 -DA:56,8 -DA:59,24 -DA:60,24 -DA:61,24 -DA:62,24 -DA:63,24 -DA:64,24 -DA:66,1 -DA:67,24 -DA:68,21 -DA:69,21 -DA:70,21 -DA:71,6 -DA:74,21 -DA:75,2 -DA:76,19 -DA:77,17 -DA:80,21 -DA:81,19 -DA:82,6 -DA:83,13 -DA:84,12 -DA:90,24 -DA:91,6 -DA:92,2 -DA:93,2 -DA:94,1 -DA:96,1 -DA:101,24 -DA:102,24 -DA:103,24 -DA:105,24 -DA:106,11 -DA:110,1 -DA:111,1 -DA:114,1 -DA:115,3 -DA:116,3 -DA:117,3 -DA:120,1 -DA:121,6 -DA:122,6 -DA:123,6 -DA:125,1 -DA:126,1 -DA:127,6 -DA:128,6 -DA:129,6 -DA:133,1 -DA:134,9 -DA:135,9 -DA:136,9 -LF:81 -LH:80 -BRDA:7,1,0,9 -BRDA:7,1,1,9 -BRDA:11,2,0,9 -BRDA:11,2,1,5 -BRDA:12,3,0,9 -BRDA:12,3,1,7 -BRDA:13,4,0,9 -BRDA:13,4,1,7 -BRDA:44,5,0,6 -BRDA:44,5,1,27 -BRDA:48,6,0,1 -BRDA:48,6,1,32 -BRDA:52,7,0,8 -BRDA:52,7,1,24 -BRDA:53,8,0,0 -BRDA:53,8,1,8 -BRDA:67,9,0,21 -BRDA:67,9,1,3 -BRDA:67,10,0,24 -BRDA:67,10,1,24 -BRDA:70,11,0,6 -BRDA:70,11,1,15 -BRDA:74,12,0,2 -BRDA:74,12,1,19 -BRDA:76,13,0,17 -BRDA:76,13,1,2 -BRDA:80,14,0,19 -BRDA:80,14,1,2 -BRDA:81,15,0,6 -BRDA:81,15,1,13 -BRDA:81,16,0,19 -BRDA:81,16,1,9 -BRDA:83,17,0,12 -BRDA:83,17,1,1 -BRDA:90,18,0,6 -BRDA:90,18,1,18 -BRDA:93,19,0,1 -BRDA:93,19,1,1 -BRDA:105,20,0,11 -BRDA:105,20,1,13 -BRF:40 -BRH:39 -end_of_record diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/index.js deleted file mode 100644 index b8f31c1a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/index.js +++ /dev/null @@ -1,137 +0,0 @@ -var inherits = require('inherits'); -var EventEmitter = require('events').EventEmitter; - -module.exports = Queue; - -function Queue(options) { - if (!(this instanceof Queue)) - return new Queue(options); - - EventEmitter.call(this); - options = options || {}; - this.concurrency = options.concurrency || Infinity; - this.timeout = options.timeout || 0; - this.pending = 0; - this.session = 0; - this.running = false; - this.jobs = []; -} -inherits(Queue, EventEmitter); - -var arrayMethods = [ - 'push', - 'unshift', - 'splice', - 'pop', - 'shift', - 'slice', - 'reverse', - 'indexOf', - 'lastIndexOf' -]; - -for (var method in arrayMethods) (function(method) { - Queue.prototype[method] = function() { - return Array.prototype[method].apply(this.jobs, arguments); - }; -})(arrayMethods[method]); - -Object.defineProperty(Queue.prototype, 'length', { get: function() { - return this.pending + this.jobs.length; -}}); - -Queue.prototype.start = function(cb) { - if (cb) { - callOnErrorOrEnd.call(this, cb); - } - - if (this.pending === this.concurrency) { - return; - } - - if (this.jobs.length === 0) { - if (this.pending === 0) { - done.call(this); - } - return; - } - - var self = this; - var job = this.jobs.shift(); - var once = true; - var session = this.session; - var timeoutId = null; - var didTimeout = false; - - function next(err, result) { - if (once && self.session === session) { - once = false; - self.pending--; - if (timeoutId !== null) { - clearTimeout(timeoutId); - } - - if (err) { - self.emit('error', err, job); - } else if (didTimeout === false) { - self.emit('success', result, job); - } - - if (self.session === session) { - if (self.pending === 0 && self.jobs.length === 0) { - done.call(self); - } else if (self.running) { - self.start(); - } - } - } - } - - if (this.timeout) { - timeoutId = setTimeout(function() { - didTimeout = true; - if (self.listeners('timeout').length > 0) { - self.emit('timeout', next, job); - } else { - next(); - } - }, this.timeout); - } - - this.pending++; - this.running = true; - job(next); - - if (this.jobs.length > 0) { - this.start(); - } -}; - -Queue.prototype.stop = function() { - this.running = false; -}; - -Queue.prototype.end = function(err) { - this.jobs.length = 0; - this.pending = 0; - done.call(this, err); -}; - -function callOnErrorOrEnd(cb) { - var self = this; - this.on('error', onerror); - this.on('end', onend); - - function onerror(err) { self.end(err); } - function onend(err) { - self.removeListener('error', onerror); - self.removeListener('end', onend); - cb(err); - } -} - -function done(err) { - this.session++; - this.running = false; - this.emit('end', err); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/package.json deleted file mode 100644 index d059df66..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "queue@^3.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest" - ] - ], - "_from": "queue@>=3.1.0 <4.0.0", - "_id": "queue@3.1.0", - "_inCache": true, - "_installable": true, - "_location": "/queue", - "_nodeVersion": "1.4.2", - "_npmUser": { - "email": "jesse.tane@gmail.com", - "name": "jessetane" - }, - "_npmVersion": "2.6.1", - "_phantomChildren": {}, - "_requested": { - "name": "queue", - "raw": "queue@^3.1.0", - "rawSpec": "^3.1.0", - "scope": null, - "spec": ">=3.1.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest", - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", - "_shasum": "6c49d01f009e2256788789f2bffac6b8b9990585", - "_shrinkwrap": null, - "_spec": "queue@^3.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest", - "author": { - "email": "jesse.tane@gmail.com", - "name": "Jesse Tane" - }, - "bugs": { - "url": "https://github.com/jessetane/queue/issues" - }, - "dependencies": { - "inherits": "~2.0.0" - }, - "description": "asynchronous function queue with adjustable concurrency", - "devDependencies": { - "browserify": "^5.9.1", - "coveralls": "^2.11.2", - "istanbul": "^0.3.2", - "tape": "^2.14.0" - }, - "directories": {}, - "dist": { - "shasum": "6c49d01f009e2256788789f2bffac6b8b9990585", - "tarball": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz" - }, - "gitHead": "8cb17ba3292dc0cfcd104f4d7531f887fae7cf30", - "homepage": "https://github.com/jessetane/queue", - "keywords": [ - "queue", - "async", - "asynchronous", - "synchronous", - "job", - "task", - "concurrency", - "concurrent" - ], - "license": "WTFPL", - "maintainers": [ - { - "email": "jesse.tane@gmail.com", - "name": "jessetane" - } - ], - "name": "queue", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jessetane/queue.git" - }, - "scripts": { - "example": "node example", - "test": "node test", - "test-browser": "browserify test/index.js > test/bundle.js && echo \"open test/index.html in your browser\"", - "travis": "istanbul cover test --report lcovonly && cat coverage/lcov.info | coveralls" - }, - "version": "3.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/readme.md deleted file mode 100644 index 73c406a9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/queue/readme.md +++ /dev/null @@ -1,170 +0,0 @@ -``` - ____ __ _____ __ _____ - / __ `/ / / / _ \/ / / / _ \ - / /_/ / /_/ / __/ /_/ / __/ - \__, /\__,_/\___/\__,_/\___/ - /_/ -``` -Asynchronous function queue with adjustable concurrency. - -[![npm](http://img.shields.io/npm/v/queue.svg?style=flat-square)](http://www.npmjs.org/queue) -[![tests](https://img.shields.io/travis/jessetane/queue.svg?style=flat-square&branch=master)](https://travis-ci.org/jessetane/queue) -[![coverage](https://img.shields.io/coveralls/jessetane/queue.svg?style=flat-square&branch=master)](https://coveralls.io/r/jessetane/queue) - -## Why -[Async](https://github.com/caolan/async) is a big library offering various approaches to dealing with asynchrony; `queue` is a small library offering a single, flexible abstraction. - -## How -This module exports a class `Queue` that implements most of the `Array` API. Pass async functions (ones that accept a callback) to an instance's additive array methods. Processing begins when you call `q.start()`. - -## Install -`npm install queue` - -## Test -`npm test` -`npm run test-browser` - -## Example -`npm run example` -``` javascript -var queue = require('queue'); - -var q = queue(); -var results = []; - -// add jobs using the Array API - -q.push(function(cb) { - results.push('two'); - cb(); -}); - -q.push( - function(cb) { - results.push('four'); - cb(); - }, - function(cb) { - results.push('five'); - cb(); - } -); - -q.unshift(function(cb) { - results.push('one'); - cb(); -}); - -q.splice(2, 0, function(cb) { - results.push('three'); - cb(); -}); - -// use the timeout feature to deal with jobs that -// take too long or forget to execute a callback - -q.timeout = 100; - -q.on('timeout', function(next, job) { - console.log('job timed out:', job.toString().replace(/\n/g, '')); - next(); -}); - -q.push(function(cb) { - setTimeout(function() { - console.log('slow job finished'); - cb(); - }, 200); -}); - -q.push(function(cb) { - console.log('forgot to execute callback'); -}); - -// get notified when jobs complete - -q.on('success', function(result, job) { - console.log('job finished processing:', job.toString().replace(/\n/g, '')); -}); - -// begin processing, get notified on end / failure - -q.start(function(err) { - console.log('all done:', results); -}); -``` - -## Require -#### `var queue = require('queue')` - -## Constructor -#### `var q = queue([opts])` -Where `opts` may contain inital values for: -* `q.concurrency` -* `q.timeout` - -## Instance methods -#### `q.start([cb])` -cb, if passed, will be called when the queue empties or when an error occurs. - -#### `q.stop()` -Stops the queue. can be resumed with `q.start()`. - -#### `q.end([err])` -Stop and empty the queue immediately. - -## Instance methods mixed in from `Array` -Mozilla has docs on how these methods work [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array). -#### `q.push(element1, ..., elementN)` -#### `q.unshift(element1, ..., elementN)` -#### `q.splice(index , howMany[, element1[, ...[, elementN]]])` -#### `q.pop()` -#### `q.shift()` -#### `q.slice(begin[, end])` -#### `q.reverse()` -#### `q.indexOf(searchElement[, fromIndex])` -#### `q.lastIndexOf(searchElement[, fromIndex])` - -## Properties -#### `q.concurrency` -Max number of jobs the queue should process concurrently, defaults to `Infinity`. - -#### `q.timeout` -Milliseconds to wait for a job to execute its callback. - -#### `q.length` -Jobs pending + jobs to process (readonly). - -## Events - -#### `q.emit('success', result, job)` -After a job executes its callback. - -#### `q.emit('error', err, job)` -After a job passes an error to its callback. - -#### `q.emit('timeout', continue, job)` -After `q.timeout` milliseconds have elapsed and a job has not executed its callback. - -#### `q.emit('end'[, err])` -After all jobs have been processed - -## Releases -The latest stable release is published to [npm](http://npmjs.org/queue). Abbreviated changelog below: -* [3.1.x](https://github.com/jessetane/queue/archive/3.0.6.tar.gz) - * Add .npmignore -* [3.0.x](https://github.com/jessetane/queue/archive/3.0.6.tar.gz) - * Change the default concurrency to `Infinity` - * Allow `q.start()` to accept an optional callback executed on `q.emit('end')` -* [2.x](https://github.com/jessetane/queue/archive/2.2.0.tar.gz) - * Major api changes / not backwards compatible with 1.x -* [1.x](https://github.com/jessetane/queue/archive/1.0.2.tar.gz) - * Early prototype - -## License -Copyright © 2014 Jesse Tane - -This work is free. You can redistribute it and/or modify it under the -terms of the [WTFPL](http://www.wtfpl.net/txt/copying). - -No Warranty. The Software is provided "as is" without warranty of any kind, either express or implied, including without limitation any implied warranties of condition, uninterrupted use, merchantability, fitness for a particular purpose, or non-infringement. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.jshintrc deleted file mode 100644 index 89de5c54..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.jshintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "undef": true, - "node": true -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.npmignore deleted file mode 100644 index b512c09d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.travis.yml deleted file mode 100644 index b8fe41eb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.8" \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/README.md deleted file mode 100644 index 096734be..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# rcfinder - -[![Travis CI](https://travis-ci.org/spenceralger/rcfinder.svg)](https://travis-ci.org/spenceralger/rcfinder) - -**This module provides the file lookup logic for the generally more useful [rcloader](https://www.npmjs.org/package/rcloader) package**. - -Find a config file (like .jshintrc) by walking up from a specific directory. - -Custom logic can be implemented for loading your config files, and calls to -the file system are cached so that you can find files relative to every file -in a project without making a ton of unnecessary calls. - -## install -```js -npm install rcfinder -``` - -## Use -Create an instance of the RcFinder class, passing it the name of your config file and an object specifying other options. - -```js -var RcFinder = require('rcfinder'); -var rcFinder = new RcFinder('.jshintrc', {}); -``` - -Then you can use the finder to look up the proper config file for a directory. -```js -// get the closet .jshintc file for this file -var config = rcFinder.find(__dirname); -``` - -If you want to use async file system calls, just specify a callback to find. -```js -rcFinder.find(__dirname, function (err, config) { - -}); -``` - -## Config -When creating an instance of the RcFinder class, you can specify options to dictate how the class behaves. -### config.loader -A function to call that will load a given path. Once the path for a config file is determined, this will be called with that path as it's only argument and it should return a proper value. - -The default loader is: -```js -function loader(path) { - return JSON.parse(fs.readFileSync(path)); -} -``` - -To make your loader async, simply ask for second argument which will be set to a node-style callback. You can also ask for a simple async JSON loader by setting `loader:` equal to `'async'`. - -NOTE: You must call `.find()` with a callback if your loader is async. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/index.js deleted file mode 100644 index 2faef72e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/index.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * [exports description] - * @type {[type]} - */ -module.exports = RcFinder; - -var path = require('path'); -var cloneDeep = require('lodash').cloneDeep; -var fs = require('fs'); - -function RcFinder(rcName, opts) { - if (!(this instanceof RcFinder)) - return new RcFinder(rcName, opts); - - opts = opts || {}; - var pathMap = {}; - var configMap = {}; - - var loader = opts.loader || function (path) { - return JSON.parse(fs.readFileSync(path)); - }; - - if (loader === 'async') { - loader = function (path, cb) { - fs.readFile(path, function (err, file) { - var config; - if (!err) { - try { - config = JSON.parse(file); - } catch(e) { - err = new Error(path + ' is not valid JSON: ' + e.message); - } - } - cb(err, config); - }); - }; - } - - this.canLoadSync = loader.length === 1; - - var defaults = {}; - if (typeof opts.defaultFile === 'string') { - defaults = opts.defaultFile; - } - - // configurable to make testing simpler - var syncCheck = opts._syncCheck || function (path) { - return fs.existsSync(path); - }; - var asyncCheck = opts._asyncCheck || function (path, cb) { - fs.stat(path, function (err, exists) { - if (err && err.code !== 'ENOENT') return cb(err); - cb(void 0, !err); - }); - }; - - // expose the file loading logic (using an explicit path) to make life easier - var get = this.get = function get(path, cb) { - if (loader.length > 1 && typeof cb === 'function') { - return loader(path, cb); - } - - if (loader.length === 1) { - // sync loader, return can still be done async - - var config, err; - try { - config = loader(path) || false; - } - catch (e) { - configMap[path] = false; - err = e; - } - finally { - if (typeof cb === 'function') { - process.nextTick(function () { - cb(err, config); - }); - } else { - if (err) throw err; - else return config; - } - - } - } - }; - - this.find = function (from, cb) { - from = from || process.cwd(); - - var rcPath; - var rcConfig; - var checkPath; - var searched = []; - var dir = from; - var sync = (typeof cb !== 'function'); - - if (sync && loader.length > 1) { - throw new TypeError('You need to call find with a callback because the loader is async'); - } - - function respond(err, rcPath) { - if (!err) { - if (!rcPath) { - // it should be safe to test for undef - rcConfig = rcPath = false; - } else { - // we need to populate the cache - if (configMap[rcPath] === void 0) { - if (sync) { - try { - configMap[rcPath] = get(rcPath); - } catch (e) { - configMap[rcPath] = false; - err = e; - } finally { - return respond(err, rcPath); - } - // and keep going - } else { - // stop and load - return get(rcPath, function (err, config) { - configMap[rcPath] = config; - respond(err, rcPath); - }); - } - } - - // clone the cached copy so that people can't fuck with them - rcConfig = cloneDeep(configMap[rcPath]); - } - - searched.forEach(function (dir) { - pathMap[dir] = rcPath; - }); - } - - if (sync && err) throw err; - if (sync) return rcConfig; - cb(err || void 0, rcConfig); - } - - if (sync) { - for (; !~searched.indexOf(dir); dir = path.resolve(dir, '..')) { - if (pathMap[dir] !== void 0) { - rcPath = pathMap[dir]; - break; - } - - searched.push(dir); - checkPath = path.join(dir, rcName); - if (syncCheck(checkPath)) { - rcPath = checkPath; - break; - } - } - - return respond(void 0, rcPath); - } - - // async find - process.nextTick(function next() { - if (~searched.indexOf(dir)) - return respond(); - - if (pathMap[dir] !== void 0) - return respond(void 0, pathMap[dir]); - - searched.push(dir); - checkPath = path.join(dir, rcName); - asyncCheck(checkPath, function (err, exists) { - if (err) return respond(err); - if (exists) return respond(void 0, checkPath); - // else keep looking - dir = path.resolve(dir, '..'); - process.nextTick(next); - }); - }); - }; -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/LICENSE.txt deleted file mode 100644 index 49869bba..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright 2012-2013 The Dojo Foundation -Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/README.md deleted file mode 100644 index 86b06367..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/README.md +++ /dev/null @@ -1,145 +0,0 @@ -# Lo-Dash v2.4.2 -A utility library delivering consistency, [customization](https://lodash.com/custom-builds), [performance](https://lodash.com/benchmarks), & [extras](https://lodash.com/#features). - -## Download - -Check out our [wiki]([https://github.com/lodash/lodash/wiki/build-differences]) for details over the differences between builds. - -* Modern builds perfect for newer browsers/environments:
      -[Development](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.min.js) - -* Compatibility builds for older environment support too:
      -[Development](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.compat.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.compat.min.js) - -* Underscore builds to use as a drop-in replacement:
      -[Development](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.underscore.js) & -[Production](https://raw.github.com/lodash/lodash/2.4.2/dist/lodash.underscore.min.js) - -CDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash). For smaller file sizes, create [custom builds](https://lodash.com/custom-builds) with only the features needed. - -Love modules? We’ve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-es6](https://github.com/lodash/lodash-es6), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method. - -## Dive in - -There’s plenty of **[documentation](https://lodash.com/docs)**, [unit tests](https://lodash.com/tests), & [benchmarks](https://lodash.com/benchmarks).
      -Check out DevDocs as a fast, organized, & searchable interface for our documentation. - -The full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).
      -A list of upcoming features is available on our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap). - -## Installation & usage - -In browsers: - -```html - -``` - -Using [`npm`](http://npmjs.org/): - -```bash -npm i --save lodash - -{sudo} npm i -g lodash -npm ln lodash -``` - -In [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/): - -```js -var _ = require('lodash'); -// or as Underscore -var _ = require('lodash/dist/lodash.underscore'); -``` - -**Notes:** - * Don’t assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL - * If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your project’s root directory *before* requiring it - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('lodash.js'); -``` - -In an AMD loader: - -```js -require({ - 'packages': [ - { 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' } - ] -}, -['lodash'], function(_) { - console.log(_.VERSION); -}); -``` - -## Resources - - * Podcasts - - [JavaScript Jabber](http://javascriptjabber.com/079-jsj-lo-dash-with-john-david-dalton/) - - * Posts - - [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/) - - [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/) - - * Videos - - [Introduction](https://vimeo.com/44154599) - - [Origins](https://vimeo.com/44154600) - - [Optimizations & builds](https://vimeo.com/44154601) - - [Native method use](https://vimeo.com/48576012) - - [Testing](https://vimeo.com/45865290) - - [CascadiaJS ’12](http://www.youtube.com/watch?v=dpPy4f_SeEk) - - A list of other community created podcasts, posts, & videos is available on our [wiki](https://github.com/lodash/lodash/wiki/Resources). - -## Features - - * AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.) - * [_(…)](https://lodash.com/docs#_) supports intuitive chaining - * [_.at](https://lodash.com/docs#at) for cherry-picking collection values - * [_.bindKey](https://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods - * [_.clone](https://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects - * [_.cloneDeep](https://lodash.com/docs#cloneDeep) for deep cloning arrays & objects - * [_.constant](https://lodash.com/docs#constant) & [_.property](https://lodash.com/docs#property) function generators for composing functions - * [_.contains](https://lodash.com/docs#contains) accepts a `fromIndex` - * [_.create](https://lodash.com/docs#create) for easier object inheritance - * [_.createCallback](https://lodash.com/docs#createCallback) for extending callbacks in methods & mixins - * [_.curry](https://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions - * [_.debounce](https://lodash.com/docs#debounce) & [_.throttle](https://lodash.com/docs#throttle) accept additional `options` for more control - * [_.findIndex](https://lodash.com/docs#findIndex) & [_.findKey](https://lodash.com/docs#findKey) for finding indexes & keys - * [_.forEach](https://lodash.com/docs#forEach) is chainable & supports exiting early - * [_.forIn](https://lodash.com/docs#forIn) for iterating own & inherited properties - * [_.forOwn](https://lodash.com/docs#forOwn) for iterating own properties - * [_.isPlainObject](https://lodash.com/docs#isPlainObject) for checking if values are created by `Object` - * [_.mapValues](https://lodash.com/docs#mapValues) for [mapping](https://lodash.com/docs#map) values to an object - * [_.memoize](https://lodash.com/docs#memoize) exposes the `cache` of memoized functions - * [_.merge](https://lodash.com/docs#merge) for a deep [_.extend](https://lodash.com/docs#extend) - * [_.noop](https://lodash.com/docs#noop) for function placeholders - * [_.now](https://lodash.com/docs#now) as a cross-browser `Date.now` alternative - * [_.parseInt](https://lodash.com/docs#parseInt) for consistent behavior - * [_.pull](https://lodash.com/docs#pull) & [_.remove](https://lodash.com/docs#remove) for mutating arrays - * [_.random](https://lodash.com/docs#random) supports returning floating-point numbers - * [_.runInContext](https://lodash.com/docs#runInContext) for easier mocking - * [_.sortBy](https://lodash.com/docs#sortBy) supports sorting by multiple properties - * [_.support](https://lodash.com/docs#support) for flagging environment features - * [_.template](https://lodash.com/docs#template) supports [*“imports”*](https://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals) - * [_.transform](https://lodash.com/docs#transform) as a powerful alternative to [_.reduce](https://lodash.com/docs#reduce) for transforming objects - * [_.where](https://lodash.com/docs#where) supports deep object comparisons - * [_.xor](https://lodash.com/docs#xor) as a companion to [_.difference](https://lodash.com/docs#difference), [_.intersection](https://lodash.com/docs#intersection), & [_.union](https://lodash.com/docs#union) - * [_.zip](https://lodash.com/docs#zip) is capable of unzipping values - * [_.omit](https://lodash.com/docs#omit), [_.pick](https://lodash.com/docs#pick), & - [more](https://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks - * [_.contains](https://lodash.com/docs#contains), [_.toArray](https://lodash.com/docs#toArray), & - [more](https://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings - * [_.filter](https://lodash.com/docs#filter), [_.map](https://lodash.com/docs#map), & - [more](https://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands - * [_.findLast](https://lodash.com/docs#findLast), [_.findLastIndex](https://lodash.com/docs#findLastIndex), & - [more](https://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight, _.partialRight") right-associative methods - -## Support - -Tested in Chrome 5~31, Firefox 2~25, IE 6-11, Opera 9.25-17, Safari 3-7, Node.js 0.6.21-0.10.22, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.compat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.compat.js deleted file mode 100644 index 4d35185f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/rcfinder/node_modules/lodash/dist/lodash.compat.js +++ /dev/null @@ -1,7158 +0,0 @@ -/** - * @license - * Lo-Dash 2.4.2 (Custom Build) - * Build: `lodash -o ./dist/lodash.compat.js` - * Copyright 2012-2013 The Dojo Foundation - * Based on Underscore.js 1.5.2 - * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre ES5 environments */ - var undefined; - - /** Used to pool arrays and objects used internally */ - var arrayPool = [], - objectPool = []; - - /** Used to generate unique IDs */ - var idCounter = 0; - - /** Used internally to indicate various things */ - var indicatorObject = {}; - - /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */ - var keyPrefix = +new Date + ''; - - /** Used as the size when optimizations are enabled for large arrays */ - var largeArraySize = 75; - - /** Used as the max size of the `arrayPool` and `objectPool` */ - var maxPoolSize = 40; - - /** Used to detect and test whitespace */ - var whitespace = ( - // whitespace - ' \t\x0B\f\xA0\ufeff' + - - // line terminators - '\n\r\u2028\u2029' + - - // unicode category "Zs" space separators - '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' - ); - - /** Used to match empty string literals in compiled template source */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** - * Used to match ES6 template delimiters - * http://people.mozilla.org/~jorendorff/es6-draft.html#sec-literals-string-literals - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match regexp flags from their coerced string values */ - var reFlags = /\w*$/; - - /** Used to detected named functions */ - var reFuncName = /^\s*function[ \n\r\t]+\w/; - - /** Used to match "interpolate" template delimiters */ - var reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match leading whitespace and zeros to be removed */ - var reLeadingSpacesAndZeros = RegExp('^[' + whitespace + ']*0+(?=.$)'); - - /** Used to ensure capturing order of template delimiters */ - var reNoMatch = /($^)/; - - /** Used to detect functions containing a `this` reference */ - var reThis = /\bthis\b/; - - /** Used to match unescaped characters in compiled string literals */ - var reUnescapedString = /['\n\r\t\u2028\u2029\\]/g; - - /** Used to assign default `context` object properties */ - var contextProps = [ - 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', - 'RegExp', 'String', '_', 'attachEvent', 'clearTimeout', 'isFinite', 'isNaN', - 'parseInt', 'setTimeout' - ]; - - /** Used to fix the JScript [[DontEnum]] bug */ - var shadowedProps = [ - 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', - 'toLocaleString', 'toString', 'valueOf' - ]; - - /** Used to make template sourceURLs easier to identify */ - var templateCounter = 0; - - /** `Object#toString` result shortcuts */ - var argsClass = '[object Arguments]', - arrayClass = '[object Array]', - boolClass = '[object Boolean]', - dateClass = '[object Date]', - errorClass = '[object Error]', - funcClass = '[object Function]', - numberClass = '[object Number]', - objectClass = '[object Object]', - regexpClass = '[object RegExp]', - stringClass = '[object String]'; - - /** Used to identify object classifications that `_.clone` supports */ - var cloneableClasses = {}; - cloneableClasses[funcClass] = false; - cloneableClasses[argsClass] = cloneableClasses[arrayClass] = - cloneableClasses[boolClass] = cloneableClasses[dateClass] = - cloneableClasses[numberClass] = cloneableClasses[objectClass] = - cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true; - - /** Used as an internal `_.debounce` options object */ - var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false - }; - - /** Used as the property descriptor for `__bindData__` */ - var descriptor = { - 'configurable': false, - 'enumerable': false, - 'value': null, - 'writable': false - }; - - /** Used as the data object for `iteratorTemplate` */ - var iteratorData = { - 'args': '', - 'array': null, - 'bottom': '', - 'firstArg': '', - 'init': '', - 'keys': null, - 'loop': '', - 'shadowedProps': null, - 'support': null, - 'top': '', - 'useHas': false - }; - - /** Used to determine if values are of the language type Object */ - var objectTypes = { - 'boolean': false, - 'function': true, - 'object': true, - 'number': false, - 'string': false, - 'undefined': false - }; - - /** Used to escape characters for inclusion in compiled string literals */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Used as a reference to the global object */ - var root = (objectTypes[typeof window] && window) || this; - - /** Detect free variable `exports` */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module` */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports` */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** Detect free variable `global` from Node.js or Browserified code and use it as `root` */ - var freeGlobal = objectTypes[typeof global] && global; - if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal)) { - root = freeGlobal; - } - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.indexOf` without support for binary searches - * or `fromIndex` constraints. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * An implementation of `_.contains` for cache objects that mimics the return - * signature of `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache object to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var type = typeof value; - cache = cache.cache; - - if (type == 'boolean' || value == null) { - return cache[value] ? 0 : -1; - } - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value; - cache = (cache = cache[type]) && cache[key]; - - return type == 'object' - ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1) - : (cache ? 0 : -1); - } - - /** - * Adds a given value to the corresponding cache object. - * - * @private - * @param {*} value The value to add to the cache. - */ - function cachePush(value) { - var cache = this.cache, - type = typeof value; - - if (type == 'boolean' || value == null) { - cache[value] = true; - } else { - if (type != 'number' && type != 'string') { - type = 'object'; - } - var key = type == 'number' ? value : keyPrefix + value, - typeCache = cache[type] || (cache[type] = {}); - - if (type == 'object') { - (typeCache[key] || (typeCache[key] = [])).push(value); - } else { - typeCache[key] = true; - } - } - } - - /** - * Used by `_.max` and `_.min` as the default callback when a given - * collection is a string value. - * - * @private - * @param {string} value The character to inspect. - * @returns {number} Returns the code unit of given character. - */ - function charAtCallback(value) { - return value.charCodeAt(0); - } - - /** - * Used by `sortBy` to compare transformed `collection` elements, stable sorting - * them in ascending order. - * - * @private - * @param {Object} a The object to compare to `b`. - * @param {Object} b The object to compare to `a`. - * @returns {number} Returns the sort order indicator of `1` or `-1`. - */ - function compareAscending(a, b) { - var ac = a.criteria, - bc = b.criteria, - index = -1, - length = ac.length; - - while (++index < length) { - var value = ac[index], - other = bc[index]; - - if (value !== other) { - if (value > other || typeof value == 'undefined') { - return 1; - } - if (value < other || typeof other == 'undefined') { - return -1; - } - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to return the same value for - // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247 - // - // This also ensures a stable sort in V8 and other engines. - // See http://code.google.com/p/v8/issues/detail?id=90 - return a.index - b.index; - } - - /** - * Creates a cache object to optimize linear searches of large arrays. - * - * @private - * @param {Array} [array=[]] The array to search. - * @returns {null|Object} Returns the cache object or `null` if caching should not be used. - */ - function createCache(array) { - var index = -1, - length = array.length, - first = array[0], - mid = array[(length / 2) | 0], - last = array[length - 1]; - - if (first && typeof first == 'object' && - mid && typeof mid == 'object' && last && typeof last == 'object') { - return false; - } - var cache = getObject(); - cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false; - - var result = getObject(); - result.array = array; - result.cache = cache; - result.push = cachePush; - - while (++index < length) { - result.push(array[index]); - } - return result; - } - - /** - * Used by `template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(match) { - return '\\' + stringEscapes[match]; - } - - /** - * Gets an array from the array pool or creates a new one if the pool is empty. - * - * @private - * @returns {Array} The array from the pool. - */ - function getArray() { - return arrayPool.pop() || []; - } - - /** - * Gets an object from the object pool or creates a new one if the pool is empty. - * - * @private - * @returns {Object} The object from the pool. - */ - function getObject() { - return objectPool.pop() || { - 'array': null, - 'cache': null, - 'criteria': null, - 'false': false, - 'index': 0, - 'null': false, - 'number': null, - 'object': null, - 'push': null, - 'string': null, - 'true': false, - 'undefined': false, - 'value': null - }; - } - - /** - * Checks if `value` is a DOM node in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM node, else `false`. - */ - function isNode(value) { - // IE < 9 presents DOM nodes as `Object` objects except they have `toString` - // methods that are `typeof` "string" and still can coerce nodes to strings - return typeof value.toString != 'function' && typeof (value + '') == 'string'; - } - - /** - * Releases the given array back to the array pool. - * - * @private - * @param {Array} [array] The array to release. - */ - function releaseArray(array) { - array.length = 0; - if (arrayPool.length < maxPoolSize) { - arrayPool.push(array); - } - } - - /** - * Releases the given object back to the object pool. - * - * @private - * @param {Object} [object] The object to release. - */ - function releaseObject(object) { - var cache = object.cache; - if (cache) { - releaseObject(cache); - } - object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null; - if (objectPool.length < maxPoolSize) { - objectPool.push(object); - } - } - - /** - * Slices the `collection` from the `start` index up to, but not including, - * the `end` index. - * - * Note: This function is used instead of `Array#slice` to support node lists - * in IE < 9 and to ensure dense arrays are returned. - * - * @private - * @param {Array|Object|string} collection The collection to slice. - * @param {number} start The start index. - * @param {number} end The end index. - * @returns {Array} Returns the new array. - */ - function slice(array, start, end) { - start || (start = 0); - if (typeof end == 'undefined') { - end = array ? array.length : 0; - } - var index = -1, - length = end - start || 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = array[start + index]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new `lodash` function using the given context object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} [context=root] The context object. - * @returns {Function} Returns the `lodash` function. - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See http://es5.github.io/#x11.1.5. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references */ - var Array = context.Array, - Boolean = context.Boolean, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** - * Used for `Array` method references. - * - * Normally `Array.prototype` would suffice, however, using an array literal - * avoids issues in Narwhal. - */ - var arrayRef = []; - - /** Used for native method references */ - var errorProto = Error.prototype, - objectProto = Object.prototype, - stringProto = String.prototype; - - /** Used to restore the original `_` reference in `noConflict` */ - var oldDash = context._; - - /** Used to resolve the internal [[Class]] of values */ - var toString = objectProto.toString; - - /** Used to detect if a method is native */ - var reNative = RegExp('^' + - String(toString) - .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') - .replace(/toString| for [^\]]+/g, '.*?') + '$' - ); - - /** Native method shortcuts */ - var ceil = Math.ceil, - clearTimeout = context.clearTimeout, - floor = Math.floor, - fnToString = Function.prototype.toString, - getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - hasOwnProperty = objectProto.hasOwnProperty, - push = arrayRef.push, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - setTimeout = context.setTimeout, - splice = arrayRef.splice, - unshift = arrayRef.unshift; - - /** Used to set meta data on functions */ - var defineProperty = (function() { - // IE 8 only accepts DOM elements - try { - var o = {}, - func = isNative(func = Object.defineProperty) && func, - result = func(o, o, o) && func; - } catch(e) { } - return result; - }()); - - /* Native method shortcuts for methods with the same name as other `lodash` methods */ - var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, - nativeIsFinite = context.isFinite, - nativeIsNaN = context.isNaN, - nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used to lookup a built-in constructor by [[Class]] */ - var ctorByClass = {}; - ctorByClass[arrayClass] = Array; - ctorByClass[boolClass] = Boolean; - ctorByClass[dateClass] = Date; - ctorByClass[funcClass] = Function; - ctorByClass[objectClass] = Object; - ctorByClass[numberClass] = Number; - ctorByClass[regexpClass] = RegExp; - ctorByClass[stringClass] = String; - - /** Used to avoid iterating non-enumerable properties in IE < 9 */ - var nonEnumProps = {}; - nonEnumProps[arrayClass] = nonEnumProps[dateClass] = nonEnumProps[numberClass] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true }; - nonEnumProps[boolClass] = nonEnumProps[stringClass] = { 'constructor': true, 'toString': true, 'valueOf': true }; - nonEnumProps[errorClass] = nonEnumProps[funcClass] = nonEnumProps[regexpClass] = { 'constructor': true, 'toString': true }; - nonEnumProps[objectClass] = { 'constructor': true }; - - (function() { - var length = shadowedProps.length; - while (length--) { - var key = shadowedProps[length]; - for (var className in nonEnumProps) { - if (hasOwnProperty.call(nonEnumProps, className) && !hasOwnProperty.call(nonEnumProps[className], key)) { - nonEnumProps[className][key] = false; - } - } - } - }()); - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps the given value to enable intuitive - * method chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following `Array` methods: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`, - * and `unshift` - * - * Chaining is supported in custom builds as long as the `value` method is - * implicitly or explicitly included in the build. - * - * The chainable wrapper functions are: - * `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, - * `compose`, `concat`, `countBy`, `create`, `createCallback`, `curry`, - * `debounce`, `defaults`, `defer`, `delay`, `difference`, `filter`, `flatten`, - * `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, - * `functions`, `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, - * `invoke`, `keys`, `map`, `max`, `memoize`, `merge`, `min`, `object`, `omit`, - * `once`, `pairs`, `partial`, `partialRight`, `pick`, `pluck`, `pull`, `push`, - * `range`, `reject`, `remove`, `rest`, `reverse`, `shuffle`, `slice`, `sort`, - * `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `where`, `without`, `wrap`, - * and `zip` - * - * The non-chainable wrapper functions are: - * `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `findIndex`, - * `findKey`, `findLast`, `findLastIndex`, `findLastKey`, `has`, `identity`, - * `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, - * `isEmpty`, `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, - * `lastIndexOf`, `mixin`, `noConflict`, `parseInt`, `pop`, `random`, `reduce`, - * `reduceRight`, `result`, `shift`, `size`, `some`, `sortedIndex`, `runInContext`, - * `template`, `unescape`, `uniqueId`, and `value` - * - * The wrapper functions `first` and `last` return wrapped values when `n` is - * provided, otherwise they return unwrapped values. - * - * Explicit chaining can be enabled by using the `_.chain` method. - * - * @name _ - * @constructor - * @category Chaining - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns a `lodash` instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(num) { - * return num * num; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor - return (value && typeof value == 'object' && !isArray(value) && hasOwnProperty.call(value, '__wrapped__')) - ? value - : new lodashWrapper(value); - } - - /** - * A fast path for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap in a `lodash` instance. - * @param {boolean} chainAll A flag to enable chaining for all methods - * @returns {Object} Returns a `lodash` instance. - */ - function lodashWrapper(value, chainAll) { - this.__chain__ = !!chainAll; - this.__wrapped__ = value; - } - // ensure `new lodashWrapper` is an instance of `lodash` - lodashWrapper.prototype = lodash.prototype; - - /** - * An object used to flag environments features. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - (function() { - var ctor = function() { this.x = 1; }, - object = { '0': 1, 'length': 1 }, - props = []; - - ctor.prototype = { 'valueOf': 1, 'y': 1 }; - for (var key in new ctor) { props.push(key); } - for (key in arguments) { } - - /** - * Detect if an `arguments` object's [[Class]] is resolvable (all but Firefox < 4, IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.argsClass = toString.call(arguments) == argsClass; - - /** - * Detect if `arguments` objects are `Object` objects (all but Narwhal and Opera < 10.5). - * - * @memberOf _.support - * @type boolean - */ - support.argsObject = arguments.constructor == Object && !(arguments instanceof Array); - - /** - * Detect if `name` or `message` properties of `Error.prototype` are - * enumerable by default. (IE < 9, Safari < 5.1) - * - * @memberOf _.support - * @type boolean - */ - support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') || propertyIsEnumerable.call(errorProto, 'name'); - - /** - * Detect if `prototype` properties are enumerable by default. - * - * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 - * (if the prototype or a property on the prototype has been set) - * incorrectly sets a function's `prototype` property [[Enumerable]] - * value to `true`. - * - * @memberOf _.support - * @type boolean - */ - support.enumPrototypes = propertyIsEnumerable.call(ctor, 'prototype'); - - /** - * Detect if functions can be decompiled by `Function#toString` - * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps). - * - * @memberOf _.support - * @type boolean - */ - support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); - - /** - * Detect if `Function#name` is supported (all but IE). - * - * @memberOf _.support - * @type boolean - */ - support.funcNames = typeof Function.name == 'string'; - - /** - * Detect if `arguments` object indexes are non-enumerable - * (Firefox < 4, IE < 9, PhantomJS, Safari < 5.1). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumArgs = key != 0; - - /** - * Detect if properties shadowing those on `Object.prototype` are non-enumerable. - * - * In IE < 9 an objects own properties, shadowing non-enumerable ones, are - * made non-enumerable as well (a.k.a the JScript [[DontEnum]] bug). - * - * @memberOf _.support - * @type boolean - */ - support.nonEnumShadows = !/valueOf/.test(props); - - /** - * Detect if own properties are iterated after inherited properties (all but IE < 9). - * - * @memberOf _.support - * @type boolean - */ - support.ownLast = props[0] != 'x'; - - /** - * Detect if `Array#shift` and `Array#splice` augment array-like objects correctly. - * - * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array `shift()` - * and `splice()` functions that fail to remove the last element, `value[0]`, - * of array-like objects even though the `length` property is set to `0`. - * The `shift()` method is buggy in IE 8 compatibility mode, while `splice()` - * is buggy regardless of mode in IE < 9 and buggy in compatibility mode in IE 9. - * - * @memberOf _.support - * @type boolean - */ - support.spliceObjects = (arrayRef.splice.call(object, 0, 1), !object[0]); - - /** - * Detect lack of support for accessing string characters by index. - * - * IE < 8 can't access characters by index and IE 8 can only access - * characters by index on string literals. - * - * @memberOf _.support - * @type boolean - */ - support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx'; - - /** - * Detect if a DOM node's [[Class]] is resolvable (all but IE < 9) - * and that the JS engine errors when attempting to coerce an object to - * a string without a `toString` function. - * - * @memberOf _.support - * @type boolean - */ - try { - support.nodeClass = !(toString.call(document) == objectClass && !({ 'toString': 0 } + '')); - } catch(e) { - support.nodeClass = true; - } - }(1)); - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in - * embedded Ruby (ERB). Change the following template settings to use alternative - * delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': /<%-([\s\S]+?)%>/g, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': /<%([\s\S]+?)%>/g, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The template used to create iterator functions. - * - * @private - * @param {Object} data The data object used to populate the text. - * @returns {string} Returns the interpolated text. - */ - var iteratorTemplate = function(obj) { - - var __p = 'var index, iterable = ' + - (obj.firstArg) + - ', result = ' + - (obj.init) + - ';\nif (!iterable) return result;\n' + - (obj.top) + - ';'; - if (obj.array) { - __p += '\nvar length = iterable.length; index = -1;\nif (' + - (obj.array) + - ') { '; - if (support.unindexedChars) { - __p += '\n if (isString(iterable)) {\n iterable = iterable.split(\'\')\n } '; - } - __p += '\n while (++index < length) {\n ' + - (obj.loop) + - ';\n }\n}\nelse { '; - } else if (support.nonEnumArgs) { - __p += '\n var length = iterable.length; index = -1;\n if (length && isArguments(iterable)) {\n while (++index < length) {\n index += \'\';\n ' + - (obj.loop) + - ';\n }\n } else { '; - } - - if (support.enumPrototypes) { - __p += '\n var skipProto = typeof iterable == \'function\';\n '; - } - - if (support.enumErrorProps) { - __p += '\n var skipErrorProps = iterable === errorProto || iterable instanceof Error;\n '; - } - - var conditions = []; if (support.enumPrototypes) { conditions.push('!(skipProto && index == "prototype")'); } if (support.enumErrorProps) { conditions.push('!(skipErrorProps && (index == "message" || index == "name"))'); } - - if (obj.useHas && obj.keys) { - __p += '\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n'; - if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - } else { - __p += '\n for (index in iterable) {\n'; - if (obj.useHas) { conditions.push("hasOwnProperty.call(iterable, index)"); } if (conditions.length) { - __p += ' if (' + - (conditions.join(' && ')) + - ') {\n '; - } - __p += - (obj.loop) + - '; '; - if (conditions.length) { - __p += '\n }'; - } - __p += '\n } '; - if (support.nonEnumShadows) { - __p += '\n\n if (iterable !== objectProto) {\n var ctor = iterable.constructor,\n isProto = iterable === (ctor && ctor.prototype),\n className = iterable === stringProto ? stringClass : iterable === errorProto ? errorClass : toString.call(iterable),\n nonEnum = nonEnumProps[className];\n '; - for (k = 0; k < 7; k++) { - __p += '\n index = \'' + - (obj.shadowedProps[k]) + - '\';\n if ((!(isProto && nonEnum[index]) && hasOwnProperty.call(iterable, index))'; - if (!obj.useHas) { - __p += ' || (!nonEnum[index] && iterable[index] !== objectProto[index])'; - } - __p += ') {\n ' + - (obj.loop) + - ';\n } '; - } - __p += '\n } '; - } - - } - - if (obj.array || support.nonEnumArgs) { - __p += '\n}'; - } - __p += - (obj.bottom) + - ';\nreturn result'; - - return __p - }; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `_.bind` that creates the bound function and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new bound function. - */ - function baseBind(bindData) { - var func = bindData[0], - partialArgs = bindData[2], - thisArg = bindData[4]; - - function bound() { - // `Function#bind` spec - // http://es5.github.io/#x15.3.4.5 - if (partialArgs) { - // avoid `arguments` object deoptimizations by using `slice` instead - // of `Array.prototype.slice.call` and not assigning `arguments` to a - // variable as a ternary expression - var args = slice(partialArgs); - push.apply(args, arguments); - } - // mimic the constructor's `return` behavior - // http://es5.github.io/#x13.2.2 - if (this instanceof bound) { - // ensure `new bound` is an instance of `func` - var thisBinding = baseCreate(func.prototype), - result = func.apply(thisBinding, args || arguments); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisArg, args || arguments); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.clone` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, callback, stackA, stackB) { - if (callback) { - var result = callback(value); - if (typeof result != 'undefined') { - return result; - } - } - // inspect [[Class]] - var isObj = isObject(value); - if (isObj) { - var className = toString.call(value); - if (!cloneableClasses[className] || (!support.nodeClass && isNode(value))) { - return value; - } - var ctor = ctorByClass[className]; - switch (className) { - case boolClass: - case dateClass: - return new ctor(+value); - - case numberClass: - case stringClass: - return new ctor(value); - - case regexpClass: - result = ctor(value.source, reFlags.exec(value)); - result.lastIndex = value.lastIndex; - return result; - } - } else { - return value; - } - var isArr = isArray(value); - if (isDeep) { - // check for circular references and return corresponding clone - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - result = isArr ? ctor(value.length) : {}; - } - else { - result = isArr ? slice(value) : assign({}, value); - } - // add array properties assigned by `RegExp#exec` - if (isArr) { - if (hasOwnProperty.call(value, 'index')) { - result.index = value.index; - } - if (hasOwnProperty.call(value, 'input')) { - result.input = value.input; - } - } - // exit for shallow clone - if (!isDeep) { - return result; - } - // add the source value to the stack of traversed objects - // and associate it with its clone - stackA.push(value); - stackB.push(result); - - // recursively populate clone (susceptible to call stack limits) - (isArr ? baseEach : forOwn)(value, function(objValue, key) { - result[key] = baseClone(objValue, isDeep, callback, stackA, stackB); - }); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(prototype, properties) { - return isObject(prototype) ? nativeCreate(prototype) : {}; - } - // fallback for browsers without `Object.create` - if (!nativeCreate) { - baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - } - - /** - * The base implementation of `_.createCallback` without support for creating - * "_.pluck" or "_.where" style callbacks. - * - * @private - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - */ - function baseCreateCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - // exit early for no `thisArg` or already bound by `Function#bind` - if (typeof thisArg == 'undefined' || !('prototype' in func)) { - return func; - } - var bindData = func.__bindData__; - if (typeof bindData == 'undefined') { - if (support.funcNames) { - bindData = !func.name; - } - bindData = bindData || !support.funcDecomp; - if (!bindData) { - var source = fnToString.call(func); - if (!support.funcNames) { - bindData = !reFuncName.test(source); - } - if (!bindData) { - // checks if `func` references the `this` keyword and stores the result - bindData = reThis.test(source); - setBindData(func, bindData); - } - } - } - // exit early if there are no `this` references or `func` is bound - if (bindData === false || (bindData !== true && bindData[1] & 1)) { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 2: return function(a, b) { - return func.call(thisArg, a, b); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - } - return bind(func, thisArg); - } - - /** - * The base implementation of `createWrapper` that creates the wrapper and - * sets its meta data. - * - * @private - * @param {Array} bindData The bind data array. - * @returns {Function} Returns the new function. - */ - function baseCreateWrapper(bindData) { - var func = bindData[0], - bitmask = bindData[1], - partialArgs = bindData[2], - partialRightArgs = bindData[3], - thisArg = bindData[4], - arity = bindData[5]; - - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - key = func; - - function bound() { - var thisBinding = isBind ? thisArg : this; - if (partialArgs) { - var args = slice(partialArgs); - push.apply(args, arguments); - } - if (partialRightArgs || isCurry) { - args || (args = slice(arguments)); - if (partialRightArgs) { - push.apply(args, partialRightArgs); - } - if (isCurry && args.length < arity) { - bitmask |= 16 & ~32; - return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]); - } - } - args || (args = arguments); - if (isBindKey) { - func = thisBinding[key]; - } - if (this instanceof bound) { - thisBinding = baseCreate(func.prototype); - var result = func.apply(thisBinding, args); - return isObject(result) ? result : thisBinding; - } - return func.apply(thisBinding, args); - } - setBindData(bound, bindData); - return bound; - } - - /** - * The base implementation of `_.difference` that accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to process. - * @param {Array} [values] The array of values to exclude. - * @returns {Array} Returns a new array of filtered values. - */ - function baseDifference(array, values) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - isLarge = length >= largeArraySize && indexOf === baseIndexOf, - result = []; - - if (isLarge) { - var cache = createCache(values); - if (cache) { - indexOf = cacheIndexOf; - values = cache; - } else { - isLarge = false; - } - } - while (++index < length) { - var value = array[index]; - if (indexOf(values, value) < 0) { - result.push(value); - } - } - if (isLarge) { - releaseObject(values); - } - return result; - } - - /** - * The base implementation of `_.flatten` without support for callback - * shorthands or `thisArg` binding. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects. - * @param {number} [fromIndex=0] The index to start from. - * @returns {Array} Returns a new flattened array. - */ - function baseFlatten(array, isShallow, isStrict, fromIndex) { - var index = (fromIndex || 0) - 1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - - if (value && typeof value == 'object' && typeof value.length == 'number' - && (isArray(value) || isArguments(value))) { - // recursively flatten arrays (susceptible to call stack limits) - if (!isShallow) { - value = baseFlatten(value, isShallow, isStrict); - } - var valIndex = -1, - valLength = value.length, - resIndex = result.length; - - result.length += valLength; - while (++valIndex < valLength) { - result[resIndex++] = value[valIndex]; - } - } else if (!isStrict) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.isEqual`, without support for `thisArg` binding, - * that allows partial "_.where" style comparisons. - * - * @private - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `a` objects. - * @param {Array} [stackB=[]] Tracks traversed `b` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(a, b, callback, isWhere, stackA, stackB) { - // used to indicate that when comparing objects, `a` has at least the properties of `b` - if (callback) { - var result = callback(a, b); - if (typeof result != 'undefined') { - return !!result; - } - } - // exit early for identical values - if (a === b) { - // treat `+0` vs. `-0` as not equal - return a !== 0 || (1 / a == 1 / b); - } - var type = typeof a, - otherType = typeof b; - - // exit early for unlike primitive values - if (a === a && - !(a && objectTypes[type]) && - !(b && objectTypes[otherType])) { - return false; - } - // exit early for `null` and `undefined` avoiding ES3's Function#call behavior - // http://es5.github.io/#x15.3.4.4 - if (a == null || b == null) { - return a === b; - } - // compare [[Class]] names - var className = toString.call(a), - otherClass = toString.call(b); - - if (className == argsClass) { - className = objectClass; - } - if (otherClass == argsClass) { - otherClass = objectClass; - } - if (className != otherClass) { - return false; - } - switch (className) { - case boolClass: - case dateClass: - // coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal - return +a == +b; - - case numberClass: - // treat `NaN` vs. `NaN` as equal - return (a != +a) - ? b != +b - // but treat `+0` vs. `-0` as not equal - : (a == 0 ? (1 / a == 1 / b) : a == +b); - - case regexpClass: - case stringClass: - // coerce regexes to strings (http://es5.github.io/#x15.10.6.4) - // treat string primitives and their corresponding object instances as equal - return a == String(b); - } - var isArr = className == arrayClass; - if (!isArr) { - // unwrap any `lodash` wrapped values - var aWrapped = hasOwnProperty.call(a, '__wrapped__'), - bWrapped = hasOwnProperty.call(b, '__wrapped__'); - - if (aWrapped || bWrapped) { - return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB); - } - // exit for functions and DOM nodes - if (className != objectClass || (!support.nodeClass && (isNode(a) || isNode(b)))) { - return false; - } - // in older versions of Opera, `arguments` objects have `Array` constructors - var ctorA = !support.argsObject && isArguments(a) ? Object : a.constructor, - ctorB = !support.argsObject && isArguments(b) ? Object : b.constructor; - - // non `Object` object instances with different constructors are not equal - if (ctorA != ctorB && - !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) && - ('constructor' in a && 'constructor' in b) - ) { - return false; - } - } - // assume cyclic structures are equal - // the algorithm for detecting cyclic structures is adapted from ES 5.1 - // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3) - var initedStack = !stackA; - stackA || (stackA = getArray()); - stackB || (stackB = getArray()); - - var length = stackA.length; - while (length--) { - if (stackA[length] == a) { - return stackB[length] == b; - } - } - var size = 0; - result = true; - - // add `a` and `b` to the stack of traversed objects - stackA.push(a); - stackB.push(b); - - // recursively compare objects and arrays (susceptible to call stack limits) - if (isArr) { - // compare lengths to determine if a deep comparison is necessary - length = a.length; - size = b.length; - result = size == length; - - if (result || isWhere) { - // deep compare the contents, ignoring non-numeric properties - while (size--) { - var index = length, - value = b[size]; - - if (isWhere) { - while (index--) { - if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) { - break; - } - } - } - } - else { - // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys` - // which, in this case, is more costly - forIn(b, function(value, key, b) { - if (hasOwnProperty.call(b, key)) { - // count the number of properties. - size++; - // deep compare each property value. - return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB)); - } - }); - - if (result && !isWhere) { - // ensure both objects have the same number of properties - forIn(a, function(value, key, a) { - if (hasOwnProperty.call(a, key)) { - // `size` will be `-1` if `a` has more properties than `b` - return (result = --size > -1); - } - }); - } - } - stackA.pop(); - stackB.pop(); - - if (initedStack) { - releaseArray(stackA); - releaseArray(stackB); - } - return result; - } - - /** - * The base implementation of `_.merge` without argument juggling or support - * for `thisArg` binding. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [callback] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - */ - function baseMerge(object, source, callback, stackA, stackB) { - (isArray(source) ? forEach : forOwn)(source, function(source, key) { - var found, - isArr, - result = source, - value = object[key]; - - if (source && ((isArr = isArray(source)) || isPlainObject(source))) { - // avoid merging previously merged cyclic sources - var stackLength = stackA.length; - while (stackLength--) { - if ((found = stackA[stackLength] == source)) { - value = stackB[stackLength]; - break; - } - } - if (!found) { - var isShallow; - if (callback) { - result = callback(value, source); - if ((isShallow = typeof result != 'undefined')) { - value = result; - } - } - if (!isShallow) { - value = isArr - ? (isArray(value) ? value : []) - : (isPlainObject(value) ? value : {}); - } - // add `source` and associated `value` to the stack of traversed objects - stackA.push(source); - stackB.push(value); - - // recursively merge objects and arrays (susceptible to call stack limits) - if (!isShallow) { - baseMerge(value, source, callback, stackA, stackB); - } - } - } - else { - if (callback) { - result = callback(value, source); - if (typeof result == 'undefined') { - result = source; - } - } - if (typeof result != 'undefined') { - value = result; - } - } - object[key] = value; - }); - } - - /** - * The base implementation of `_.random` without argument juggling or support - * for returning floating-point numbers. - * - * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns a random number. - */ - function baseRandom(min, max) { - return min + floor(nativeRandom() * (max - min + 1)); - } - - /** - * The base implementation of `_.uniq` without support for callback shorthands - * or `thisArg` binding. - * - * @private - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function} [callback] The function called per iteration. - * @returns {Array} Returns a duplicate-value-free array. - */ - function baseUniq(array, isSorted, callback) { - var index = -1, - indexOf = getIndexOf(), - length = array ? array.length : 0, - result = []; - - var isLarge = !isSorted && length >= largeArraySize && indexOf === baseIndexOf, - seen = (callback || isLarge) ? getArray() : result; - - if (isLarge) { - var cache = createCache(seen); - indexOf = cacheIndexOf; - seen = cache; - } - while (++index < length) { - var value = array[index], - computed = callback ? callback(value, index, array) : value; - - if (isSorted - ? !index || seen[seen.length - 1] !== computed - : indexOf(seen, computed) < 0 - ) { - if (callback || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - if (isLarge) { - releaseArray(seen.array); - releaseObject(seen); - } else if (callback) { - releaseArray(seen); - } - return result; - } - - /** - * Creates a function that aggregates a collection, creating an object composed - * of keys generated from the results of running each element of the collection - * through a callback. The given `setter` function sets the keys and values - * of the composed object. - * - * @private - * @param {Function} setter The setter function. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter) { - return function(collection, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - setter(result, value, callback(value, index, collection), collection); - } - } else { - baseEach(collection, function(value, key, collection) { - setter(result, value, callback(value, key, collection), collection); - }); - } - return result; - }; - } - - /** - * Creates a function that, when called, either curries or invokes `func` - * with an optional `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of method flags to compose. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` - * 8 - `_.curry` (bound) - * 16 - `_.partial` - * 32 - `_.partialRight` - * @param {Array} [partialArgs] An array of arguments to prepend to those - * provided to the new function. - * @param {Array} [partialRightArgs] An array of arguments to append to those - * provided to the new function. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new function. - */ - function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) { - var isBind = bitmask & 1, - isBindKey = bitmask & 2, - isCurry = bitmask & 4, - isCurryBound = bitmask & 8, - isPartial = bitmask & 16, - isPartialRight = bitmask & 32; - - if (!isBindKey && !isFunction(func)) { - throw new TypeError; - } - if (isPartial && !partialArgs.length) { - bitmask &= ~16; - isPartial = partialArgs = false; - } - if (isPartialRight && !partialRightArgs.length) { - bitmask &= ~32; - isPartialRight = partialRightArgs = false; - } - var bindData = func && func.__bindData__; - if (bindData && bindData !== true) { - // clone `bindData` - bindData = slice(bindData); - if (bindData[2]) { - bindData[2] = slice(bindData[2]); - } - if (bindData[3]) { - bindData[3] = slice(bindData[3]); - } - // set `thisBinding` is not previously bound - if (isBind && !(bindData[1] & 1)) { - bindData[4] = thisArg; - } - // set if previously bound but not currently (subsequent curried functions) - if (!isBind && bindData[1] & 1) { - bitmask |= 8; - } - // set curried arity if not yet set - if (isCurry && !(bindData[1] & 4)) { - bindData[5] = arity; - } - // append partial left arguments - if (isPartial) { - push.apply(bindData[2] || (bindData[2] = []), partialArgs); - } - // append partial right arguments - if (isPartialRight) { - unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs); - } - // merge flags - bindData[1] |= bitmask; - return createWrapper.apply(null, bindData); - } - // fast path for `_.bind` - var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper; - return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]); - } - - /** - * Creates compiled iteration functions. - * - * @private - * @param {...Object} [options] The compile options object(s). - * @param {string} [options.array] Code to determine if the iterable is an array or array-like. - * @param {boolean} [options.useHas] Specify using `hasOwnProperty` checks in the object loop. - * @param {Function} [options.keys] A reference to `_.keys` for use in own property iteration. - * @param {string} [options.args] A comma separated string of iteration function arguments. - * @param {string} [options.top] Code to execute before the iteration branches. - * @param {string} [options.loop] Code to execute in the object loop. - * @param {string} [options.bottom] Code to execute after the iteration branches. - * @returns {Function} Returns the compiled function. - */ - function createIterator() { - // data properties - iteratorData.shadowedProps = shadowedProps; - - // iterator options - iteratorData.array = iteratorData.bottom = iteratorData.loop = iteratorData.top = ''; - iteratorData.init = 'iterable'; - iteratorData.useHas = true; - - // merge options into a template data object - for (var object, index = 0; object = arguments[index]; index++) { - for (var key in object) { - iteratorData[key] = object[key]; - } - } - var args = iteratorData.args; - iteratorData.firstArg = /^[^,]+/.exec(args)[0]; - - // create the function factory - var factory = Function( - 'baseCreateCallback, errorClass, errorProto, hasOwnProperty, ' + - 'indicatorObject, isArguments, isArray, isString, keys, objectProto, ' + - 'objectTypes, nonEnumProps, stringClass, stringProto, toString', - 'return function(' + args + ') {\n' + iteratorTemplate(iteratorData) + '\n}' - ); - - // return the compiled function - return factory( - baseCreateCallback, errorClass, errorProto, hasOwnProperty, - indicatorObject, isArguments, isArray, isString, iteratorData.keys, objectProto, - objectTypes, nonEnumProps, stringClass, stringProto, toString - ); - } - - /** - * Used by `escape` to convert characters to HTML entities. - * - * @private - * @param {string} match The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(match) { - return htmlEscapes[match]; - } - - /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized, this method returns the custom method, otherwise it returns - * the `baseIndexOf` function. - * - * @private - * @returns {Function} Returns the "indexOf" function. - */ - function getIndexOf() { - var result = (result = lodash.indexOf) === indexOf ? baseIndexOf : result; - return result; - } - - /** - * Checks if `value` is a native function. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a native function, else `false`. - */ - function isNative(value) { - return typeof value == 'function' && reNative.test(value); - } - - /** - * Sets `this` binding data on a given function. - * - * @private - * @param {Function} func The function to set data on. - * @param {Array} value The data array to set. - */ - var setBindData = !defineProperty ? noop : function(func, value) { - descriptor.value = value; - defineProperty(func, '__bindData__', descriptor); - descriptor.value = null; - }; - - /** - * A fallback implementation of `isPlainObject` which checks if a given value - * is an object created by the `Object` constructor, assuming objects created - * by the `Object` constructor have no inherited enumerable properties and that - * there are no `Object.prototype` extensions. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - var ctor, - result; - - // avoid non Object objects, `arguments` objects, and DOM elements - if (!(value && toString.call(value) == objectClass) || - (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor)) || - (!support.argsClass && isArguments(value)) || - (!support.nodeClass && isNode(value))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - if (support.ownLast) { - forIn(value, function(value, key, object) { - result = hasOwnProperty.call(object, key); - return false; - }); - return result !== false; - } - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - forIn(value, function(value, key) { - result = key; - }); - return typeof result == 'undefined' || hasOwnProperty.call(value, result); - } - - /** - * Used by `unescape` to convert HTML entities to characters. - * - * @private - * @param {string} match The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(match) { - return htmlUnescapes[match]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Checks if `value` is an `arguments` object. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`. - * @example - * - * (function() { return _.isArguments(arguments); })(1, 2, 3); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == argsClass || false; - } - // fallback for browsers that can't detect `arguments` objects by [[Class]] - if (!support.argsClass) { - isArguments = function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') || false; - }; - } - - /** - * Checks if `value` is an array. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an array, else `false`. - * @example - * - * (function() { return _.isArray(arguments); })(); - * // => false - * - * _.isArray([1, 2, 3]); - * // => true - */ - var isArray = nativeIsArray || function(value) { - return value && typeof value == 'object' && typeof value.length == 'number' && - toString.call(value) == arrayClass || false; - }; - - /** - * A fallback implementation of `Object.keys` which produces an array of the - * given object's own enumerable property names. - * - * @private - * @type Function - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - */ - var shimKeys = createIterator({ - 'args': 'object', - 'init': '[]', - 'top': 'if (!(objectTypes[typeof object])) return result', - 'loop': 'result.push(index)' - }); - - /** - * Creates an array composed of the own enumerable property names of an object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names. - * @example - * - * _.keys({ 'one': 1, 'two': 2, 'three': 3 }); - * // => ['one', 'two', 'three'] (property order is not guaranteed across environments) - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (!isObject(object)) { - return []; - } - if ((support.enumPrototypes && typeof object == 'function') || - (support.nonEnumArgs && object.length && isArguments(object))) { - return shimKeys(object); - } - return nativeKeys(object); - }; - - /** Reusable iterator options shared by `each`, `forIn`, and `forOwn` */ - var eachIteratorOptions = { - 'args': 'collection, callback, thisArg', - 'top': "callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3)", - 'array': "typeof length == 'number'", - 'keys': keys, - 'loop': 'if (callback(iterable[index], index, collection) === false) return result' - }; - - /** Reusable iterator options for `assign` and `defaults` */ - var defaultsIteratorOptions = { - 'args': 'object, source, guard', - 'top': - 'var args = arguments,\n' + - ' argsIndex = 0,\n' + - " argsLength = typeof guard == 'number' ? 2 : args.length;\n" + - 'while (++argsIndex < argsLength) {\n' + - ' iterable = args[argsIndex];\n' + - ' if (iterable && objectTypes[typeof iterable]) {', - 'keys': keys, - 'loop': "if (typeof result[index] == 'undefined') result[index] = iterable[index]", - 'bottom': ' }\n}' - }; - - /** Reusable iterator options for `forIn` and `forOwn` */ - var forOwnIteratorOptions = { - 'top': 'if (!objectTypes[typeof iterable]) return result;\n' + eachIteratorOptions.top, - 'array': false - }; - - /** - * Used to convert characters to HTML entities: - * - * Though the `>` character is escaped for symmetry, characters like `>` and `/` - * don't require escaping in HTML and have no special meaning unless they're part - * of a tag or an unquoted attribute value. - * http://mathiasbynens.be/notes/ambiguous-ampersands (under "semi-related fun fact") - */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to convert HTML entities to characters */ - var htmlUnescapes = invert(htmlEscapes); - - /** Used to match HTML entities and HTML characters */ - var reEscapedHtml = RegExp('(' + keys(htmlUnescapes).join('|') + ')', 'g'), - reUnescapedHtml = RegExp('[' + keys(htmlEscapes).join('') + ']', 'g'); - - /** - * A function compiled to iterate `arguments` objects, arrays, objects, and - * strings consistenly across environments, executing the callback for each - * element in the collection. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @private - * @type Function - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - */ - var baseEach = createIterator(eachIteratorOptions); - - /*--------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources will overwrite property assignments of previous - * sources. If a callback is provided it will be executed to produce the - * assigned values. The callback is bound to `thisArg` and invoked with two - * arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @type Function - * @alias extend - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * _.assign({ 'name': 'fred' }, { 'employer': 'slate' }); - * // => { 'name': 'fred', 'employer': 'slate' } - * - * var defaults = _.partialRight(_.assign, function(a, b) { - * return typeof a == 'undefined' ? b : a; - * }); - * - * var object = { 'name': 'barney' }; - * defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var assign = createIterator(defaultsIteratorOptions, { - 'top': - defaultsIteratorOptions.top.replace(';', - ';\n' + - "if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n" + - ' var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n' + - "} else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n" + - ' callback = args[--argsLength];\n' + - '}' - ), - 'loop': 'result[index] = callback ? callback(result[index], iterable[index]) : iterable[index]' - }); - - /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects will also - * be cloned, otherwise they will be assigned by reference. If a callback - * is provided it will be executed to produce the cloned values. If the - * callback returns `undefined` cloning will be handled by the method instead. - * The callback is bound to `thisArg` and invoked with one argument; (value). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to clone. - * @param {boolean} [isDeep=false] Specify a deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var shallow = _.clone(characters); - * shallow[0] === characters[0]; - * // => true - * - * var deep = _.clone(characters, true); - * deep[0] === characters[0]; - * // => false - * - * _.mixin({ - * 'clone': _.partialRight(_.clone, function(value) { - * return _.isElement(value) ? value.cloneNode(false) : undefined; - * }) - * }); - * - * var clone = _.clone(document.body); - * clone.childNodes.length; - * // => 0 - */ - function clone(value, isDeep, callback, thisArg) { - // allows working with "Collections" methods without using their `index` - // and `collection` arguments for `isDeep` and `callback` - if (typeof isDeep != 'boolean' && isDeep != null) { - thisArg = callback; - callback = isDeep; - isDeep = false; - } - return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates a deep clone of `value`. If a callback is provided it will be - * executed to produce the cloned values. If the callback returns `undefined` - * cloning will be handled by the method instead. The callback is bound to - * `thisArg` and invoked with one argument; (value). - * - * Note: This method is loosely based on the structured clone algorithm. Functions - * and DOM nodes are **not** cloned. The enumerable properties of `arguments` objects and - * objects created by constructors other than `Object` are cloned to plain `Object` objects. - * See http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to deep clone. - * @param {Function} [callback] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * var deep = _.cloneDeep(characters); - * deep[0] === characters[0]; - * // => false - * - * var view = { - * 'label': 'docs', - * 'node': element - * }; - * - * var clone = _.cloneDeep(view, function(value) { - * return _.isElement(value) ? value.cloneNode(true) : undefined; - * }); - * - * clone.node == view.node; - * // => false - */ - function cloneDeep(value, callback, thisArg) { - return baseClone(value, true, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1)); - } - - /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? assign(result, properties) : result; - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional defaults of the same property will be ignored. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param- {Object} [guard] Allows working with `_.reduce` without using its - * `key` and `object` arguments as sources. - * @returns {Object} Returns the destination object. - * @example - * - * var object = { 'name': 'barney' }; - * _.defaults(object, { 'name': 'fred', 'employer': 'slate' }); - * // => { 'name': 'barney', 'employer': 'slate' } - */ - var defaults = createIterator(defaultsIteratorOptions); - - /** - * This method is like `_.findIndex` except that it returns the key of the - * first element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': false }, - * 'fred': { 'age': 40, 'blocked': true }, - * 'pebbles': { 'age': 1, 'blocked': false } - * }; - * - * _.findKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (property order is not guaranteed across environments) - * - * // using "_.where" callback shorthand - * _.findKey(characters, { 'age': 1 }); - * // => 'pebbles' - * - * // using "_.pluck" callback shorthand - * _.findKey(characters, 'blocked'); - * // => 'fred' - */ - function findKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwn(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * This method is like `_.findKey` except that it iterates over elements - * of a `collection` in the opposite order. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to search. - * @param {Function|Object|string} [callback=identity] The function called per - * iteration. If a property name or object is provided it will be used to - * create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {string|undefined} Returns the key of the found element, else `undefined`. - * @example - * - * var characters = { - * 'barney': { 'age': 36, 'blocked': true }, - * 'fred': { 'age': 40, 'blocked': false }, - * 'pebbles': { 'age': 1, 'blocked': true } - * }; - * - * _.findLastKey(characters, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles`, assuming `_.findKey` returns `barney` - * - * // using "_.where" callback shorthand - * _.findLastKey(characters, { 'age': 40 }); - * // => 'fred' - * - * // using "_.pluck" callback shorthand - * _.findLastKey(characters, 'blocked'); - * // => 'pebbles' - */ - function findLastKey(object, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forOwnRight(object, function(value, key, object) { - if (callback(value, key, object)) { - result = key; - return false; - } - }); - return result; - } - - /** - * Iterates over own and inherited enumerable properties of an object, - * executing the callback for each property. The callback is bound to `thisArg` - * and invoked with three arguments; (value, key, object). Callbacks may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forIn(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments) - */ - var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, { - 'useHas': false - }); - - /** - * This method is like `_.forIn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * Shape.prototype.move = function(x, y) { - * this.x += x; - * this.y += y; - * }; - * - * _.forInRight(new Shape, function(value, key) { - * console.log(key); - * }); - * // => logs 'move', 'y', and 'x' assuming `_.forIn ` logs 'x', 'y', and 'move' - */ - function forInRight(object, callback, thisArg) { - var pairs = []; - - forIn(object, function(value, key) { - pairs.push(key, value); - }); - - var length = pairs.length; - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - if (callback(pairs[length--], pairs[length], object) === false) { - break; - } - } - return object; - } - - /** - * Iterates over own enumerable properties of an object, executing the callback - * for each property. The callback is bound to `thisArg` and invoked with three - * arguments; (value, key, object). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * @static - * @memberOf _ - * @type Function - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs '0', '1', and 'length' (property order is not guaranteed across environments) - */ - var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions); - - /** - * This method is like `_.forOwn` except that it iterates over elements - * of a `collection` in the opposite order. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns `object`. - * @example - * - * _.forOwnRight({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) { - * console.log(key); - * }); - * // => logs 'length', '1', and '0' assuming `_.forOwn` logs '0', '1', and 'length' - */ - function forOwnRight(object, callback, thisArg) { - var props = keys(object), - length = props.length; - - callback = baseCreateCallback(callback, thisArg, 3); - while (length--) { - var key = props[length]; - if (callback(object[key], key, object) === false) { - break; - } - } - return object; - } - - /** - * Creates a sorted array of property names of all enumerable properties, - * own and inherited, of `object` that have function values. - * - * @static - * @memberOf _ - * @alias methods - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property names that have function values. - * @example - * - * _.functions(_); - * // => ['all', 'any', 'bind', 'bindAll', 'clone', 'compact', 'compose', ...] - */ - function functions(object) { - var result = []; - forIn(object, function(value, key) { - if (isFunction(value)) { - result.push(key); - } - }); - return result.sort(); - } - - /** - * Checks if the specified property name exists as a direct property of `object`, - * instead of an inherited property. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to check. - * @returns {boolean} Returns `true` if key is a direct property, else `false`. - * @example - * - * _.has({ 'a': 1, 'b': 2, 'c': 3 }, 'b'); - * // => true - */ - function has(object, key) { - return object ? hasOwnProperty.call(object, key) : false; - } - - /** - * Creates an object composed of the inverted keys and values of the given object. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to invert. - * @returns {Object} Returns the created inverted object. - * @example - * - * _.invert({ 'first': 'fred', 'second': 'barney' }); - * // => { 'fred': 'first', 'barney': 'second' } - */ - function invert(object) { - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - result[object[key]] = key; - } - return result; - } - - /** - * Checks if `value` is a boolean value. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a boolean value, else `false`. - * @example - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - value && typeof value == 'object' && toString.call(value) == boolClass || false; - } - - /** - * Checks if `value` is a date. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a date, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - */ - function isDate(value) { - return value && typeof value == 'object' && toString.call(value) == dateClass || false; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - */ - function isElement(value) { - return value && value.nodeType === 1 || false; - } - - /** - * Checks if `value` is empty. Arrays, strings, or `arguments` objects with a - * length of `0` and objects with no own enumerable properties are considered - * "empty". - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if the `value` is empty, else `false`. - * @example - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({}); - * // => true - * - * _.isEmpty(''); - * // => true - */ - function isEmpty(value) { - var result = true; - if (!value) { - return result; - } - var className = toString.call(value), - length = value.length; - - if ((className == arrayClass || className == stringClass || - (support.argsClass ? className == argsClass : isArguments(value))) || - (className == objectClass && typeof length == 'number' && isFunction(value.splice))) { - return !length; - } - forOwn(value, function() { - return (result = false); - }); - return result; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent to each other. If a callback is provided it will be executed - * to compare values. If the callback returns `undefined` comparisons will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (a, b). - * - * @static - * @memberOf _ - * @category Objects - * @param {*} a The value to compare. - * @param {*} b The other value to compare. - * @param {Function} [callback] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'name': 'fred' }; - * var copy = { 'name': 'fred' }; - * - * object == copy; - * // => false - * - * _.isEqual(object, copy); - * // => true - * - * var words = ['hello', 'goodbye']; - * var otherWords = ['hi', 'goodbye']; - * - * _.isEqual(words, otherWords, function(a, b) { - * var reGreet = /^(?:hello|hi)$/i, - * aGreet = _.isString(a) && reGreet.test(a), - * bGreet = _.isString(b) && reGreet.test(b); - * - * return (aGreet || bGreet) ? (aGreet == bGreet) : undefined; - * }); - * // => true - */ - function isEqual(a, b, callback, thisArg) { - return baseIsEqual(a, b, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 2)); - } - - /** - * Checks if `value` is, or can be coerced to, a finite number. - * - * Note: This is not the same as native `isFinite` which will return true for - * booleans and empty strings. See http://es5.github.io/#x15.1.2.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is finite, else `false`. - * @example - * - * _.isFinite(-101); - * // => true - * - * _.isFinite('10'); - * // => true - * - * _.isFinite(true); - * // => false - * - * _.isFinite(''); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - function isFinite(value) { - return nativeIsFinite(value) && !nativeIsNaN(parseFloat(value)); - } - - /** - * Checks if `value` is a function. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - */ - function isFunction(value) { - return typeof value == 'function'; - } - // fallback for older versions of Chrome and Safari - if (isFunction(/x/)) { - isFunction = function(value) { - return typeof value == 'function' && toString.call(value) == funcClass; - }; - } - - /** - * Checks if `value` is the language type of Object. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // check if the value is the ECMAScript language type of Object - // http://es5.github.io/#x8 - // and avoid a V8 bug - // http://code.google.com/p/v8/issues/detail?id=2291 - return !!(value && objectTypes[typeof value]); - } - - /** - * Checks if `value` is `NaN`. - * - * Note: This is not the same as native `isNaN` which will return `true` for - * `undefined` and other non-numeric values. See http://es5.github.io/#x15.1.2.4. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // `NaN` as a primitive is the only value that is not equal to itself - // (perform the [[Class]] check first to avoid errors with some host objects in IE) - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(undefined); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is a number. - * - * Note: `NaN` is considered a number. See http://es5.github.io/#x8.5. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a number, else `false`. - * @example - * - * _.isNumber(8.4 * 5); - * // => true - */ - function isNumber(value) { - return typeof value == 'number' || - value && typeof value == 'object' && toString.call(value) == numberClass || false; - } - - /** - * Checks if `value` is an object created by the `Object` constructor. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * _.isPlainObject(new Shape); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && toString.call(value) == objectClass) || (!support.argsClass && isArguments(value))) { - return false; - } - var valueOf = value.valueOf, - objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is a regular expression. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a regular expression, else `false`. - * @example - * - * _.isRegExp(/fred/); - * // => true - */ - function isRegExp(value) { - return value && objectTypes[typeof value] && toString.call(value) == regexpClass || false; - } - - /** - * Checks if `value` is a string. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is a string, else `false`. - * @example - * - * _.isString('fred'); - * // => true - */ - function isString(value) { - return typeof value == 'string' || - value && typeof value == 'object' && toString.call(value) == stringClass || false; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Objects - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if the `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new object with values of the results of each `callback` execution. - * @example - * - * _.mapValues({ 'a': 1, 'b': 2, 'c': 3} , function(num) { return num * 3; }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - * - * var characters = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // using "_.pluck" callback shorthand - * _.mapValues(characters, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } - */ - function mapValues(object, callback, thisArg) { - var result = {}; - callback = lodash.createCallback(callback, thisArg, 3); - - forOwn(object, function(value, key, object) { - result[key] = callback(value, key, object); - }); - return result; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * will overwrite property assignments of previous sources. If a callback is - * provided it will be executed to produce the merged values of the destination - * and source properties. If the callback returns `undefined` merging will - * be handled by the method instead. The callback is bound to `thisArg` and - * invoked with two arguments; (objectValue, sourceValue). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The destination object. - * @param {...Object} [source] The source objects. - * @param {Function} [callback] The function to customize merging properties. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the destination object. - * @example - * - * var names = { - * 'characters': [ - * { 'name': 'barney' }, - * { 'name': 'fred' } - * ] - * }; - * - * var ages = { - * 'characters': [ - * { 'age': 36 }, - * { 'age': 40 } - * ] - * }; - * - * _.merge(names, ages); - * // => { 'characters': [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] } - * - * var food = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var otherFood = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(food, otherFood, function(a, b) { - * return _.isArray(a) ? a.concat(b) : undefined; - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot] } - */ - function merge(object) { - var args = arguments, - length = 2; - - if (!isObject(object)) { - return object; - } - // allows working with `_.reduce` and `_.reduceRight` without using - // their `index` and `collection` arguments - if (typeof args[2] != 'number') { - length = args.length; - } - if (length > 3 && typeof args[length - 2] == 'function') { - var callback = baseCreateCallback(args[--length - 1], args[length--], 2); - } else if (length > 2 && typeof args[length - 1] == 'function') { - callback = args[--length]; - } - var sources = slice(arguments, 1, length), - index = -1, - stackA = getArray(), - stackB = getArray(); - - while (++index < length) { - baseMerge(object, sources[index], callback, stackA, stackB); - } - releaseArray(stackA); - releaseArray(stackB); - return object; - } - - /** - * Creates a shallow clone of `object` excluding the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` omitting the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The properties to omit or the - * function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object without the omitted properties. - * @example - * - * _.omit({ 'name': 'fred', 'age': 40 }, 'age'); - * // => { 'name': 'fred' } - * - * _.omit({ 'name': 'fred', 'age': 40 }, function(value) { - * return typeof value == 'number'; - * }); - * // => { 'name': 'fred' } - */ - function omit(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var props = []; - forIn(object, function(value, key) { - props.push(key); - }); - props = baseDifference(props, baseFlatten(arguments, true, false, 1)); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - result[key] = object[key]; - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (!callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * Creates a two dimensional array of an object's key-value pairs, - * i.e. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns new array of key-value pairs. - * @example - * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (property order is not guaranteed across environments) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates a shallow clone of `object` composed of the specified properties. - * Property names may be specified as individual arguments or as arrays of - * property names. If a callback is provided it will be executed for each - * property of `object` picking the properties the callback returns truey - * for. The callback is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The source object. - * @param {Function|...string|string[]} [callback] The function called per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns an object composed of the picked properties. - * @example - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name'); - * // => { 'name': 'fred' } - * - * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) { - * return key.charAt(0) != '_'; - * }); - * // => { 'name': 'fred' } - */ - function pick(object, callback, thisArg) { - var result = {}; - if (typeof callback != 'function') { - var index = -1, - props = baseFlatten(arguments, true, false, 1), - length = isObject(object) ? props.length : 0; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - } else { - callback = lodash.createCallback(callback, thisArg, 3); - forIn(object, function(value, key, object) { - if (callback(value, key, object)) { - result[key] = value; - } - }); - } - return result; - } - - /** - * An alternative to `_.reduce` this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable properties through a callback, with each callback execution - * potentially mutating the `accumulator` object. The callback is bound to - * `thisArg` and invoked with four arguments; (accumulator, value, key, object). - * Callbacks may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Array|Object} object The object to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var squares = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) { - * num *= num; - * if (num % 2) { - * return result.push(num) < 3; - * } - * }); - * // => [1, 9, 25] - * - * var mapped = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * }); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function transform(object, callback, accumulator, thisArg) { - var isArr = isArray(object); - if (accumulator == null) { - if (isArr) { - accumulator = []; - } else { - var ctor = object && object.constructor, - proto = ctor && ctor.prototype; - - accumulator = baseCreate(proto); - } - } - if (callback) { - callback = lodash.createCallback(callback, thisArg, 4); - (isArr ? baseEach : forOwn)(object, function(value, index, object) { - return callback(accumulator, value, index, object); - }); - } - return accumulator; - } - - /** - * Creates an array composed of the own enumerable property values of `object`. - * - * @static - * @memberOf _ - * @category Objects - * @param {Object} object The object to inspect. - * @returns {Array} Returns an array of property values. - * @example - * - * _.values({ 'one': 1, 'two': 2, 'three': 3 }); - * // => [1, 2, 3] (property order is not guaranteed across environments) - */ - function values(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array of elements from the specified indexes, or keys, of the - * `collection`. Indexes may be specified as individual arguments or as arrays - * of indexes. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [index] The indexes of `collection` - * to retrieve, specified as individual indexes or arrays of indexes. - * @returns {Array} Returns a new array of elements corresponding to the - * provided indexes. - * @example - * - * _.at(['a', 'b', 'c', 'd', 'e'], [0, 2, 4]); - * // => ['a', 'c', 'e'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ - function at(collection) { - var args = arguments, - index = -1, - props = baseFlatten(args, true, false, 1), - length = (args[2] && args[2][args[1]] === collection) ? 1 : props.length, - result = Array(length); - - if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - while(++index < length) { - result[index] = collection[props[index]]; - } - return result; - } - - /** - * Checks if a given value is present in a collection using strict equality - * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the - * offset from the end of the collection. - * - * @static - * @memberOf _ - * @alias include - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {*} target The value to check for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if the `target` element is found, else `false`. - * @example - * - * _.contains([1, 2, 3], 1); - * // => true - * - * _.contains([1, 2, 3], 1, 2); - * // => false - * - * _.contains({ 'name': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.contains('pebbles', 'eb'); - * // => true - */ - function contains(collection, target, fromIndex) { - var index = -1, - indexOf = getIndexOf(), - length = collection ? collection.length : 0, - result = false; - - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0; - if (isArray(collection)) { - result = indexOf(collection, target, fromIndex) > -1; - } else if (typeof length == 'number') { - result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1; - } else { - baseEach(collection, function(value) { - if (++index >= fromIndex) { - return !(result = value === target); - } - }); - } - return result; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through the callback. The corresponding value - * of each key is the number of times the key was returned by the callback. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1); - }); - - /** - * Checks if the given callback returns truey value for **all** elements of - * a collection. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if all elements passed the callback check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes']); - * // => false - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.every(characters, 'age'); - * // => true - * - * // using "_.where" callback shorthand - * _.every(characters, { 'age': 36 }); - * // => false - */ - function every(collection, callback, thisArg) { - var result = true; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (!(result = !!callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return (result = !!callback(value, index, collection)); - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning an array of all elements - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that passed the callback check. - * @example - * - * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [2, 4, 6] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.filter(characters, 'blocked'); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - * - * // using "_.where" callback shorthand - * _.filter(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - */ - function filter(collection, callback, thisArg) { - var result = []; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - result.push(value); - } - } - } else { - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result.push(value); - } - }); - } - return result; - } - - /** - * Iterates over elements of a collection, returning the first element that - * the callback returns truey for. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias detect, findWhere - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.find(characters, function(chr) { - * return chr.age < 40; - * }); - * // => { 'name': 'barney', 'age': 36, 'blocked': false } - * - * // using "_.where" callback shorthand - * _.find(characters, { 'age': 1 }); - * // => { 'name': 'pebbles', 'age': 1, 'blocked': false } - * - * // using "_.pluck" callback shorthand - * _.find(characters, 'blocked'); - * // => { 'name': 'fred', 'age': 40, 'blocked': true } - */ - function find(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (callback(value, index, collection)) { - return value; - } - } - } else { - var result; - baseEach(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - } - - /** - * This method is like `_.find` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the found element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(num) { - * return num % 2 == 1; - * }); - * // => 3 - */ - function findLast(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - forEachRight(collection, function(value, index, collection) { - if (callback(value, index, collection)) { - result = value; - return false; - } - }); - return result; - } - - /** - * Iterates over elements of a collection, executing the callback for each - * element. The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Callbacks may exit iteration early by - * explicitly returning `false`. - * - * Note: As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(','); - * // => logs each number and returns '1,2,3' - * - * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); }); - * // => logs each number and returns the object (property order is not guaranteed across environments) - */ - function forEach(collection, callback, thisArg) { - if (callback && typeof thisArg == 'undefined' && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if (callback(collection[index], index, collection) === false) { - break; - } - } - } else { - baseEach(collection, callback, thisArg); - } - return collection; - } - - /** - * This method is like `_.forEach` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2, 3]).forEachRight(function(num) { console.log(num); }).join(','); - * // => logs each number from right to left and returns '3,2,1' - */ - function forEachRight(collection, callback, thisArg) { - var iterable = collection, - length = collection ? collection.length : 0; - - callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (length--) { - if (callback(collection[length], length, collection) === false) { - break; - } - } - } else { - if (typeof length != 'number') { - var props = keys(collection); - length = props.length; - } else if (support.unindexedChars && isString(collection)) { - iterable = collection.split(''); - } - baseEach(collection, function(value, key, collection) { - key = props ? props[--length] : --length; - return callback(iterable[key], key, collection); - }); - } - return collection; - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of a collection through the callback. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false` - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return Math.floor(num); }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(num) { return this.floor(num); }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using "_.pluck" callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - (hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value); - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of the collection through the given callback. The corresponding - * value of each key is the last element responsible for generating the key. - * The callback is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keys = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keys, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Invokes the method named by `methodName` on each element in the `collection` - * returning an array of the results of each invoked method. Additional arguments - * will be provided to each invoked method. If `methodName` is a function it - * will be invoked for, and `this` bound to, each element in the `collection`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [arg] Arguments to invoke the method with. - * @returns {Array} Returns a new array of the results of each invoked method. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - var args = slice(arguments, 2), - index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - result[++index] = (isFunc ? methodName : value[methodName]).apply(value, args); - }); - return result; - } - - /** - * Creates an array of values by running each element in the collection - * through the callback. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias collect - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of the results of each `callback` execution. - * @example - * - * _.map([1, 2, 3], function(num) { return num * 3; }); - * // => [3, 6, 9] - * - * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; }); - * // => [3, 6, 9] (property order is not guaranteed across environments) - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(characters, 'name'); - * // => ['barney', 'fred'] - */ - function map(collection, callback, thisArg) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - callback = lodash.createCallback(callback, thisArg, 3); - if (isArray(collection)) { - while (++index < length) { - result[index] = callback(collection[index], index, collection); - } - } else { - baseEach(collection, function(value, key, collection) { - result[++index] = callback(value, key, collection); - }); - } - return result; - } - - /** - * Retrieves the maximum value of a collection. If the collection is empty or - * falsey `-Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.max(characters, function(chr) { return chr.age; }); - * // => { 'name': 'fred', 'age': 40 }; - * - * // using "_.pluck" callback shorthand - * _.max(characters, 'age'); - * // => { 'name': 'fred', 'age': 40 }; - */ - function max(collection, callback, thisArg) { - var computed = -Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value > result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current > computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the minimum value of a collection. If the collection is empty or - * falsey `Infinity` is returned. If a callback is provided it will be executed - * for each value in the collection to generate the criterion by which the value - * is ranked. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.min(characters, function(chr) { return chr.age; }); - * // => { 'name': 'barney', 'age': 36 }; - * - * // using "_.pluck" callback shorthand - * _.min(characters, 'age'); - * // => { 'name': 'barney', 'age': 36 }; - */ - function min(collection, callback, thisArg) { - var computed = Infinity, - result = computed; - - // allows working with functions like `_.map` without using - // their `index` argument as a callback - if (typeof callback != 'function' && thisArg && thisArg[callback] === collection) { - callback = null; - } - if (callback == null && isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - if (value < result) { - result = value; - } - } - } else { - callback = (callback == null && isString(collection)) - ? charAtCallback - : lodash.createCallback(callback, thisArg, 3); - - baseEach(collection, function(value, index, collection) { - var current = callback(value, index, collection); - if (current < computed) { - computed = current; - result = value; - } - }); - } - return result; - } - - /** - * Retrieves the value of a specified property from all elements in the collection. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} property The name of the property to pluck. - * @returns {Array} Returns a new array of property values. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * _.pluck(characters, 'name'); - * // => ['barney', 'fred'] - */ - var pluck = map; - - /** - * Reduces a collection to a value which is the accumulated result of running - * each element in the collection through the callback, where each successive - * callback execution consumes the return value of the previous execution. If - * `accumulator` is not provided the first element of the collection will be - * used as the initial `accumulator` value. The callback is bound to `thisArg` - * and invoked with four arguments; (accumulator, value, index|key, collection). - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var sum = _.reduce([1, 2, 3], function(sum, num) { - * return sum + num; - * }); - * // => 6 - * - * var mapped = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) { - * result[key] = num * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6, 'c': 9 } - */ - function reduce(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - if (noaccum) { - accumulator = collection[++index]; - } - while (++index < length) { - accumulator = callback(accumulator, collection[index], index, collection); - } - } else { - baseEach(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection) - }); - } - return accumulator; - } - - /** - * This method is like `_.reduce` except that it iterates over elements - * of a `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [callback=identity] The function called per iteration. - * @param {*} [accumulator] Initial value of the accumulator. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the accumulated value. - * @example - * - * var list = [[0, 1], [2, 3], [4, 5]]; - * var flat = _.reduceRight(list, function(a, b) { return a.concat(b); }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, callback, accumulator, thisArg) { - var noaccum = arguments.length < 3; - callback = lodash.createCallback(callback, thisArg, 4); - forEachRight(collection, function(value, index, collection) { - accumulator = noaccum - ? (noaccum = false, value) - : callback(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The opposite of `_.filter` this method returns the elements of a - * collection that the callback does **not** return truey for. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of elements that failed the callback check. - * @example - * - * var odds = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; }); - * // => [1, 3, 5] - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.reject(characters, 'blocked'); - * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }] - * - * // using "_.where" callback shorthand - * _.reject(characters, { 'age': 36 }); - * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }] - */ - function reject(collection, callback, thisArg) { - callback = lodash.createCallback(callback, thisArg, 3); - return filter(collection, function(value, index, collection) { - return !callback(value, index, collection); - }); - } - - /** - * Retrieves a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Allows working with functions like `_.map` - * without using their `index` arguments as `n`. - * @returns {Array} Returns the random sample(s) of `collection`. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ - function sample(collection, n, guard) { - if (collection && typeof collection.length != 'number') { - collection = values(collection); - } else if (support.unindexedChars && isString(collection)) { - collection = collection.split(''); - } - if (n == null || guard) { - return collection ? collection[baseRandom(0, collection.length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(nativeMax(0, n), result.length); - return result; - } - - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns a new shuffled collection. - * @example - * - * _.shuffle([1, 2, 3, 4, 5, 6]); - * // => [4, 1, 6, 3, 5, 2] - */ - function shuffle(collection) { - var index = -1, - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - forEach(collection, function(value) { - var rand = baseRandom(0, ++index); - result[index] = result[rand]; - result[rand] = value; - }); - return result; - } - - /** - * Gets the size of the `collection` by returning `collection.length` for arrays - * and array-like objects or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns `collection.length` or number of own enumerable properties. - * @example - * - * _.size([1, 2]); - * // => 2 - * - * _.size({ 'one': 1, 'two': 2, 'three': 3 }); - * // => 3 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return typeof length == 'number' ? length : keys(collection).length; - } - - /** - * Checks if the callback returns a truey value for **any** element of a - * collection. The function returns as soon as it finds a passing value and - * does not iterate over the entire collection. The callback is bound to - * `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {boolean} Returns `true` if any element passed the callback check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true } - * ]; - * - * // using "_.pluck" callback shorthand - * _.some(characters, 'blocked'); - * // => true - * - * // using "_.where" callback shorthand - * _.some(characters, { 'age': 1 }); - * // => false - */ - function some(collection, callback, thisArg) { - var result; - callback = lodash.createCallback(callback, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - if ((result = callback(collection[index], index, collection))) { - break; - } - } - } else { - baseEach(collection, function(value, index, collection) { - return !(result = callback(value, index, collection)); - }); - } - return !!result; - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through the callback. This method - * performs a stable sort, that is, it will preserve the original sort order - * of equal elements. The callback is bound to `thisArg` and invoked with - * three arguments; (value, index|key, collection). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an array of property names is provided for `callback` the collection - * will be sorted by each property value. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of sorted elements. - * @example - * - * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math); - * // => [3, 1, 2] - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 26 }, - * { 'name': 'fred', 'age': 30 } - * ]; - * - * // using "_.pluck" callback shorthand - * _.map(_.sortBy(characters, 'age'), _.values); - * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]] - * - * // sorting by multiple properties - * _.map(_.sortBy(characters, ['name', 'age']), _.values); - * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ - function sortBy(collection, callback, thisArg) { - var index = -1, - isArr = isArray(callback), - length = collection ? collection.length : 0, - result = Array(typeof length == 'number' ? length : 0); - - if (!isArr) { - callback = lodash.createCallback(callback, thisArg, 3); - } - forEach(collection, function(value, key, collection) { - var object = result[++index] = getObject(); - if (isArr) { - object.criteria = map(callback, function(key) { return value[key]; }); - } else { - (object.criteria = getArray())[0] = callback(value, key, collection); - } - object.index = index; - object.value = value; - }); - - length = result.length; - result.sort(compareAscending); - while (length--) { - var object = result[length]; - result[length] = object.value; - if (!isArr) { - releaseArray(object.criteria); - } - releaseObject(object); - } - return result; - } - - /** - * Converts the `collection` to an array. - * - * @static - * @memberOf _ - * @category Collections - * @param {Array|Object|string} collection The collection to convert. - * @returns {Array} Returns the new converted array. - * @example - * - * (function() { return _.toArray(arguments).slice(1); })(1, 2, 3, 4); - * // => [2, 3, 4] - */ - function toArray(collection) { - if (collection && typeof collection.length == 'number') { - return (support.unindexedChars && isString(collection)) - ? collection.split('') - : slice(collection); - } - return values(collection); - } - - /** - * Performs a deep comparison of each element in a `collection` to the given - * `properties` object, returning an array of all elements that have equivalent - * property values. - * - * @static - * @memberOf _ - * @type Function - * @category Collections - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Object} props The object of property values to filter by. - * @returns {Array} Returns a new array of elements that have the given properties. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.where(characters, { 'age': 36 }); - * // => [{ 'name': 'barney', 'age': 36, 'pets': ['hoppy'] }] - * - * _.where(characters, { 'pets': ['dino'] }); - * // => [{ 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] }] - */ - var where = filter; - - /*--------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are all falsey. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to compact. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result.push(value); - } - } - return result; - } - - /** - * Creates an array excluding all values of the provided arrays using strict - * equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to process. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.difference([1, 2, 3, 4, 5], [5, 2, 10]); - * // => [1, 3, 4] - */ - function difference(array) { - return baseDifference(array, baseFlatten(arguments, true, true, 1)); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element that passes the callback check, instead of the element itself. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': false }, - * { 'name': 'fred', 'age': 40, 'blocked': true }, - * { 'name': 'pebbles', 'age': 1, 'blocked': false } - * ]; - * - * _.findIndex(characters, function(chr) { - * return chr.age < 20; - * }); - * // => 2 - * - * // using "_.where" callback shorthand - * _.findIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findIndex(characters, 'blocked'); - * // => 1 - */ - function findIndex(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - if (callback(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of a `collection` from right to left. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36, 'blocked': true }, - * { 'name': 'fred', 'age': 40, 'blocked': false }, - * { 'name': 'pebbles', 'age': 1, 'blocked': true } - * ]; - * - * _.findLastIndex(characters, function(chr) { - * return chr.age > 30; - * }); - * // => 1 - * - * // using "_.where" callback shorthand - * _.findLastIndex(characters, { 'age': 36 }); - * // => 0 - * - * // using "_.pluck" callback shorthand - * _.findLastIndex(characters, 'blocked'); - * // => 2 - */ - function findLastIndex(array, callback, thisArg) { - var length = array ? array.length : 0; - callback = lodash.createCallback(callback, thisArg, 3); - while (length--) { - if (callback(array[length], length, array)) { - return length; - } - } - return -1; - } - - /** - * Gets the first element or first `n` elements of an array. If a callback - * is provided elements at the beginning of the array are returned as long - * as the callback returns truey. The callback is bound to `thisArg` and - * invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias head, take - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the first element(s) of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([1, 2, 3], 2); - * // => [1, 2] - * - * _.first([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [1, 2] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.first(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': true, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.first(characters, { 'employer': 'slate' }), 'name'); - * // => ['barney', 'fred'] - */ - function first(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = -1; - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[0] : undefined; - } - } - return slice(array, 0, nativeMin(nativeMax(0, n), length)); - } - - /** - * Flattens a nested array (the nesting can be to any depth). If `isShallow` - * is truey, the array will only be flattened a single level. If a callback - * is provided each element of the array is passed through the callback before - * flattening. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to flatten. - * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new flattened array. - * @example - * - * _.flatten([1, [2], [3, [[4]]]]); - * // => [1, 2, 3, 4]; - * - * _.flatten([1, [2], [3, [[4]]]], true); - * // => [1, 2, 3, [[4]]]; - * - * var characters = [ - * { 'name': 'barney', 'age': 30, 'pets': ['hoppy'] }, - * { 'name': 'fred', 'age': 40, 'pets': ['baby puss', 'dino'] } - * ]; - * - * // using "_.pluck" callback shorthand - * _.flatten(characters, 'pets'); - * // => ['hoppy', 'baby puss', 'dino'] - */ - function flatten(array, isShallow, callback, thisArg) { - // juggle arguments - if (typeof isShallow != 'boolean' && isShallow != null) { - thisArg = callback; - callback = (typeof isShallow != 'function' && thisArg && thisArg[isShallow] === array) ? null : isShallow; - isShallow = false; - } - if (callback != null) { - array = map(array, callback, thisArg); - } - return baseFlatten(array, isShallow); - } - - /** - * Gets the index at which the first occurrence of `value` is found using - * strict equality for comparisons, i.e. `===`. If the array is already sorted - * providing `true` for `fromIndex` will run a faster binary search. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2); - * // => 1 - * - * _.indexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 4 - * - * _.indexOf([1, 1, 2, 2, 3, 3], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - if (typeof fromIndex == 'number') { - var length = array ? array.length : 0; - fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex || 0); - } else if (fromIndex) { - var index = sortedIndex(array, value); - return array[index] === value ? index : -1; - } - return baseIndexOf(array, value, fromIndex); - } - - /** - * Gets all but the last element or last `n` elements of an array. If a - * callback is provided elements at the end of the array are excluded from - * the result as long as the callback returns truey. The callback is bound - * to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - * - * _.initial([1, 2, 3], 2); - * // => [1] - * - * _.initial([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [1] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.initial(characters, 'blocked'); - * // => [{ 'name': 'barney', 'blocked': false, 'employer': 'slate' }] - * - * // using "_.where" callback shorthand - * _.pluck(_.initial(characters, { 'employer': 'na' }), 'name'); - * // => ['barney', 'fred'] - */ - function initial(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : callback || n; - } - return slice(array, 0, nativeMin(nativeMax(0, length - n), length)); - } - - /** - * Creates an array of unique values present in all provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of shared values. - * @example - * - * _.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2] - */ - function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = getArray(), - indexOf = getIndexOf(), - trustIndexOf = indexOf === baseIndexOf, - seen = getArray(); - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push(trustIndexOf && value.length >= largeArraySize && - createCache(argsIndex ? args[argsIndex] : seen)); - } - } - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = []; - - outer: - while (++index < length) { - var cache = caches[0]; - value = array[index]; - - if ((cache ? cacheIndexOf(cache, value) : indexOf(seen, value)) < 0) { - argsIndex = argsLength; - (cache || seen).push(value); - while (--argsIndex) { - cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value)) < 0) { - continue outer; - } - } - result.push(value); - } - } - while (argsLength--) { - cache = caches[argsLength]; - if (cache) { - releaseObject(cache); - } - } - releaseArray(caches); - releaseArray(seen); - return result; - } - - /** - * Gets the last element or last `n` elements of an array. If a callback is - * provided elements at the end of the array are returned as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback] The function called - * per element or the number of elements to return. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {*} Returns the last element(s) of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - * - * _.last([1, 2, 3], 2); - * // => [2, 3] - * - * _.last([1, 2, 3], function(num) { - * return num > 1; - * }); - * // => [2, 3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.last(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.last(characters, { 'employer': 'na' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function last(array, callback, thisArg) { - var n = 0, - length = array ? array.length : 0; - - if (typeof callback != 'number' && callback != null) { - var index = length; - callback = lodash.createCallback(callback, thisArg, 3); - while (index-- && callback(array[index], index, array)) { - n++; - } - } else { - n = callback; - if (n == null || thisArg) { - return array ? array[length - 1] : undefined; - } - } - return slice(array, nativeMax(0, length - n)); - } - - /** - * Gets the index at which the last occurrence of `value` is found using strict - * equality for comparisons, i.e. `===`. If `fromIndex` is negative, it is used - * as the offset from the end of the collection. - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value or `-1`. - * @example - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); - * // => 4 - * - * _.lastIndexOf([1, 2, 3, 1, 2, 3], 2, 3); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var index = array ? array.length : 0; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(0, index + fromIndex) : nativeMin(fromIndex, index - 1)) + 1; - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Removes all provided values from the given array using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {...*} [value] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ - function pull(array) { - var args = arguments, - argsIndex = 0, - argsLength = args.length, - length = array ? array.length : 0; - - while (++argsIndex < argsLength) { - var index = -1, - value = args[argsIndex]; - while (++index < length) { - if (array[index] === value) { - splice.call(array, index--, 1); - length--; - } - } - } - return array; - } - - /** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to but not including `end`. If `start` is less than `stop` a - * zero-length range is created unless a negative `step` is specified. - * - * @static - * @memberOf _ - * @category Arrays - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns a new range array. - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ - function range(start, end, step) { - start = +start || 0; - step = typeof step == 'number' ? step : (+step || 1); - - if (end == null) { - end = start; - start = 0; - } - // use `Array(length)` so engines like Chakra and V8 avoid slower modes - // http://youtu.be/XAqIpGU8ZZk#t=17m25s - var index = -1, - length = nativeMax(0, ceil((end - start) / (step || 1))), - result = Array(length); - - while (++index < length) { - result[index] = start; - start += step; - } - return result; - } - - /** - * Removes all elements from an array that the callback returns truey for - * and returns an array of removed elements. The callback is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to modify. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4, 5, 6]; - * var evens = _.remove(array, function(num) { return num % 2 == 0; }); - * - * console.log(array); - * // => [1, 3, 5] - * - * console.log(evens); - * // => [2, 4, 6] - */ - function remove(array, callback, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (callback(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; - } - - /** - * The opposite of `_.initial` this method gets all but the first element or - * first `n` elements of an array. If a callback function is provided elements - * at the beginning of the array are excluded from the result as long as the - * callback returns truey. The callback is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias drop, tail - * @category Arrays - * @param {Array} array The array to query. - * @param {Function|Object|number|string} [callback=1] The function called - * per element or the number of elements to exclude. If a property name or - * object is provided it will be used to create a "_.pluck" or "_.where" - * style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - * - * _.rest([1, 2, 3], 2); - * // => [3] - * - * _.rest([1, 2, 3], function(num) { - * return num < 3; - * }); - * // => [3] - * - * var characters = [ - * { 'name': 'barney', 'blocked': true, 'employer': 'slate' }, - * { 'name': 'fred', 'blocked': false, 'employer': 'slate' }, - * { 'name': 'pebbles', 'blocked': true, 'employer': 'na' } - * ]; - * - * // using "_.pluck" callback shorthand - * _.pluck(_.rest(characters, 'blocked'), 'name'); - * // => ['fred', 'pebbles'] - * - * // using "_.where" callback shorthand - * _.rest(characters, { 'employer': 'slate' }); - * // => [{ 'name': 'pebbles', 'blocked': true, 'employer': 'na' }] - */ - function rest(array, callback, thisArg) { - if (typeof callback != 'number' && callback != null) { - var n = 0, - index = -1, - length = array ? array.length : 0; - - callback = lodash.createCallback(callback, thisArg, 3); - while (++index < length && callback(array[index], index, array)) { - n++; - } - } else { - n = (callback == null || thisArg) ? 1 : nativeMax(0, callback); - } - return slice(array, n); - } - - /** - * Uses a binary search to determine the smallest index at which a value - * should be inserted into a given sorted array in order to maintain the sort - * order of the array. If a callback is provided it will be executed for - * `value` and each element of `array` to compute their sort ranking. The - * callback is bound to `thisArg` and invoked with one argument; (value). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([20, 30, 50], 40); - * // => 2 - * - * // using "_.pluck" callback shorthand - * _.sortedIndex([{ 'x': 20 }, { 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 2 - * - * var dict = { - * 'wordToNumber': { 'twenty': 20, 'thirty': 30, 'fourty': 40, 'fifty': 50 } - * }; - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return dict.wordToNumber[word]; - * }); - * // => 2 - * - * _.sortedIndex(['twenty', 'thirty', 'fifty'], 'fourty', function(word) { - * return this.wordToNumber[word]; - * }, dict); - * // => 2 - */ - function sortedIndex(array, value, callback, thisArg) { - var low = 0, - high = array ? array.length : low; - - // explicitly reference `identity` for better inlining in Firefox - callback = callback ? lodash.createCallback(callback, thisArg, 1) : identity; - value = callback(value); - - while (low < high) { - var mid = (low + high) >>> 1; - (callback(array[mid]) < value) - ? low = mid + 1 - : high = mid; - } - return low; - } - - /** - * Creates an array of unique values, in order, of the provided arrays using - * strict equality for comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of combined values. - * @example - * - * _.union([1, 2, 3], [5, 2, 1, 4], [2, 1]); - * // => [1, 2, 3, 5, 4] - */ - function union() { - return baseUniq(baseFlatten(arguments, true, true)); - } - - /** - * Creates a duplicate-value-free version of an array using strict equality - * for comparisons, i.e. `===`. If the array is sorted, providing - * `true` for `isSorted` will use a faster algorithm. If a callback is provided - * each element of `array` is passed through the callback before uniqueness - * is computed. The callback is bound to `thisArg` and invoked with three - * arguments; (value, index, array). - * - * If a property name is provided for `callback` the created "_.pluck" style - * callback will return the property value of the given element. - * - * If an object is provided for `callback` the created "_.where" style callback - * will return `true` for elements that have the properties of the given object, - * else `false`. - * - * @static - * @memberOf _ - * @alias unique - * @category Arrays - * @param {Array} array The array to process. - * @param {boolean} [isSorted=false] A flag to indicate that `array` is sorted. - * @param {Function|Object|string} [callback=identity] The function called - * per iteration. If a property name or object is provided it will be used - * to create a "_.pluck" or "_.where" style callback, respectively. - * @param {*} [thisArg] The `this` binding of `callback`. - * @returns {Array} Returns a duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1, 3, 1]); - * // => [1, 2, 3] - * - * _.uniq([1, 1, 2, 2, 3], true); - * // => [1, 2, 3] - * - * _.uniq(['A', 'b', 'C', 'a', 'B', 'c'], function(letter) { return letter.toLowerCase(); }); - * // => ['A', 'b', 'C'] - * - * _.uniq([1, 2.5, 3, 1.5, 2, 3.5], function(num) { return this.floor(num); }, Math); - * // => [1, 2.5, 3] - * - * // using "_.pluck" callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, callback, thisArg) { - // juggle arguments - if (typeof isSorted != 'boolean' && isSorted != null) { - thisArg = callback; - callback = (typeof isSorted != 'function' && thisArg && thisArg[isSorted] === array) ? null : isSorted; - isSorted = false; - } - if (callback != null) { - callback = lodash.createCallback(callback, thisArg, 3); - } - return baseUniq(array, isSorted, callback); - } - - /** - * Creates an array excluding all provided values using strict equality for - * comparisons, i.e. `===`. - * - * @static - * @memberOf _ - * @category Arrays - * @param {Array} array The array to filter. - * @param {...*} [value] The values to exclude. - * @returns {Array} Returns a new array of filtered values. - * @example - * - * _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); - * // => [2, 3, 4] - */ - function without(array) { - return baseDifference(array, slice(arguments, 1)); - } - - /** - * Creates an array that is the symmetric difference of the provided arrays. - * See http://en.wikipedia.org/wiki/Symmetric_difference. - * - * @static - * @memberOf _ - * @category Arrays - * @param {...Array} [array] The arrays to inspect. - * @returns {Array} Returns an array of values. - * @example - * - * _.xor([1, 2, 3], [5, 2, 1, 4]); - * // => [3, 5, 4] - * - * _.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]); - * // => [1, 4, 5] - */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseUniq(baseDifference(result, array).concat(baseDifference(array, result))) - : array; - } - } - return result || []; - } - - /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second - * elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @alias unzip - * @category Arrays - * @param {...Array} [array] Arrays to process. - * @returns {Array} Returns a new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ - function zip() { - var array = arguments.length > 1 ? arguments : arguments[0], - index = -1, - length = array ? max(pluck(array, 'length')) : 0, - result = Array(length < 0 ? 0 : length); - - while (++index < length) { - result[index] = pluck(array, index); - } - return result; - } - - /** - * Creates an object composed from arrays of `keys` and `values`. Provide - * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]` - * or two arrays, one of `keys` and one of corresponding `values`. - * - * @static - * @memberOf _ - * @alias object - * @category Arrays - * @param {Array} keys The array of keys. - * @param {Array} [values=[]] The array of values. - * @returns {Object} Returns an object composed of the given keys and - * corresponding values. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ - function zipObject(keys, values) { - var index = -1, - length = keys ? keys.length : 0, - result = {}; - - if (!values && length && !isArray(keys[0])) { - values = []; - } - while (++index < length) { - var key = keys[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that executes `func`, with the `this` binding and - * arguments of the created function, only after being called `n` times. - * - * @static - * @memberOf _ - * @category Functions - * @param {number} n The number of times the function must be called before - * `func` is executed. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('Done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'Done saving!', after all saves have completed - */ - function after(n, func) { - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that, when called, invokes `func` with the `this` - * binding of `thisArg` and prepends any additional `bind` arguments to those - * provided to the bound function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var func = function(greeting) { - * return greeting + ' ' + this.name; - * }; - * - * func = _.bind(func, { 'name': 'fred' }, 'hi'); - * func(); - * // => 'hi fred' - */ - function bind(func, thisArg) { - return arguments.length > 2 - ? createWrapper(func, 17, slice(arguments, 2), null, thisArg) - : createWrapper(func, 1, null, null, thisArg); - } - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all the function properties - * of `object` will be bound. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...string} [methodName] The object method names to - * bind, specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { console.log('clicked ' + this.label); } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs', when the button is clicked - */ - function bindAll(object) { - var funcs = arguments.length > 1 ? baseFlatten(arguments, true, false, 1) : functions(object), - index = -1, - length = funcs.length; - - while (++index < length) { - var key = funcs[index]; - object[key] = createWrapper(object[key], 1, null, null, object); - } - return object; - } - - /** - * Creates a function that, when called, invokes the method at `object[key]` - * and prepends any additional `bindKey` arguments to those provided to the bound - * function. This method differs from `_.bind` by allowing bound functions to - * reference methods that will be redefined or don't yet exist. - * See http://michaux.ca/articles/lazy-function-definition-pattern. - * - * @static - * @memberOf _ - * @category Functions - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'name': 'fred', - * 'greet': function(greeting) { - * return greeting + ' ' + this.name; - * } - * }; - * - * var func = _.bindKey(object, 'greet', 'hi'); - * func(); - * // => 'hi fred' - * - * object.greet = function(greeting) { - * return greeting + 'ya ' + this.name + '!'; - * }; - * - * func(); - * // => 'hiya fred!' - */ - function bindKey(object, key) { - return arguments.length > 2 - ? createWrapper(key, 19, slice(arguments, 2), null, object) - : createWrapper(key, 3, null, null, object); - } - - /** - * Creates a function that is the composition of the provided functions, - * where each function consumes the return value of the function that follows. - * For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`. - * Each function is executed with the `this` binding of the composed function. - * - * @static - * @memberOf _ - * @category Functions - * @param {...Function} [func] Functions to compose. - * @returns {Function} Returns the new composed function. - * @example - * - * var realNameMap = { - * 'pebbles': 'penelope' - * }; - * - * var format = function(name) { - * name = realNameMap[name.toLowerCase()] || name; - * return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase(); - * }; - * - * var greet = function(formatted) { - * return 'Hiya ' + formatted + '!'; - * }; - * - * var welcome = _.compose(greet, format); - * welcome('pebbles'); - * // => 'Hiya Penelope!' - */ - function compose() { - var funcs = arguments, - length = funcs.length; - - while (length--) { - if (!isFunction(funcs[length])) { - throw new TypeError; - } - } - return function() { - var args = arguments, - length = funcs.length; - - while (length--) { - args = [funcs[length].apply(this, args)]; - } - return args[0]; - }; - } - - /** - * Creates a function which accepts one or more arguments of `func` that when - * invoked either executes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` can be specified - * if `func.length` is not sufficient. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @returns {Function} Returns the new curried function. - * @example - * - * var curried = _.curry(function(a, b, c) { - * console.log(a + b + c); - * }); - * - * curried(1)(2)(3); - * // => 6 - * - * curried(1, 2)(3); - * // => 6 - * - * curried(1, 2, 3); - * // => 6 - */ - function curry(func, arity) { - arity = typeof arity == 'number' ? arity : (+arity || func.length); - return createWrapper(func, 4, null, null, null, arity); - } - - /** - * Creates a function that will delay the execution of `func` until after - * `wait` milliseconds have elapsed since the last time it was invoked. - * Provide an options object to indicate that `func` should be invoked on - * the leading and/or trailing edge of the `wait` timeout. Subsequent calls - * to the debounced function will return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to debounce. - * @param {number} wait The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * var lazyLayout = _.debounce(calculateLayout, 150); - * jQuery(window).on('resize', lazyLayout); - * - * // execute `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * }); - * - * // ensure `batchLog` is executed once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * source.addEventListener('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * }, false); - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - wait = nativeMax(0, wait) || 0; - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0); - trailing = 'trailing' in options ? options.trailing : trailing; - } - var delayed = function() { - var remaining = wait - (now() - stamp); - if (remaining <= 0) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - }; - - var maxDelayed = function() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - }; - - return function() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - }; - } - - /** - * Defers executing the `func` function until the current call stack has cleared. - * Additional arguments will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to defer. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { console.log(text); }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ - function defer(func) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 1); - return setTimeout(function() { func.apply(undefined, args); }, 1); - } - - /** - * Executes the `func` function after `wait` milliseconds. Additional arguments - * will be provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay execution. - * @param {...*} [arg] Arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { console.log(text); }, 1000, 'later'); - * // => logs 'later' after one second - */ - function delay(func, wait) { - if (!isFunction(func)) { - throw new TypeError; - } - var args = slice(arguments, 2); - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it will be used to determine the cache key for storing the result - * based on the arguments provided to the memoized function. By default, the - * first argument provided to the memoized function is used as the cache key. - * The `func` is executed with the `this` binding of the memoized function. - * The result cache is exposed as the `cache` property on the memoized function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] A function used to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var fibonacci = _.memoize(function(n) { - * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); - * }); - * - * fibonacci(9) - * // => 34 - * - * var data = { - * 'fred': { 'name': 'fred', 'age': 40 }, - * 'pebbles': { 'name': 'pebbles', 'age': 1 } - * }; - * - * // modifying the result cache - * var get = _.memoize(function(name) { return data[name]; }, _.identity); - * get('pebbles'); - * // => { 'name': 'pebbles', 'age': 1 } - * - * get.cache.pebbles.name = 'penelope'; - * get('pebbles'); - * // => { 'name': 'penelope', 'age': 1 } - */ - function memoize(func, resolver) { - if (!isFunction(func)) { - throw new TypeError; - } - var memoized = function() { - var cache = memoized.cache, - key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0]; - - return hasOwnProperty.call(cache, key) - ? cache[key] - : (cache[key] = func.apply(this, arguments)); - } - memoized.cache = {}; - return memoized; - } - - /** - * Creates a function that is restricted to execute `func` once. Repeat calls to - * the function will return the value of the first call. The `func` is executed - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` executes `createApplication` once - */ - function once(func) { - var ran, - result; - - if (!isFunction(func)) { - throw new TypeError; - } - return function() { - if (ran) { - return result; - } - ran = true; - result = func.apply(this, arguments); - - // clear the `func` variable so the function may be garbage collected - func = null; - return result; - }; - } - - /** - * Creates a function that, when called, invokes `func` with any additional - * `partial` arguments prepended to those provided to the new function. This - * method is similar to `_.bind` except it does **not** alter the `this` binding. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { return greeting + ' ' + name; }; - * var hi = _.partial(greet, 'hi'); - * hi('fred'); - * // => 'hi fred' - */ - function partial(func) { - return createWrapper(func, 16, slice(arguments, 1)); - } - - /** - * This method is like `_.partial` except that `partial` arguments are - * appended to those provided to the new function. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [arg] Arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var defaultsDeep = _.partialRight(_.merge, _.defaults); - * - * var options = { - * 'variable': 'data', - * 'imports': { 'jq': $ } - * }; - * - * defaultsDeep(options, _.templateSettings); - * - * options.variable - * // => 'data' - * - * options.imports - * // => { '_': _, 'jq': $ } - */ - function partialRight(func) { - return createWrapper(func, 32, null, slice(arguments, 1)); - } - - /** - * Creates a function that, when executed, will only call the `func` function - * at most once per every `wait` milliseconds. Provide an options object to - * indicate that `func` should be invoked on the leading and/or trailing edge - * of the `wait` timeout. Subsequent calls to the throttled function will - * return the result of the last `func` call. - * - * Note: If `leading` and `trailing` options are `true` `func` will be called - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * @static - * @memberOf _ - * @category Functions - * @param {Function} func The function to throttle. - * @param {number} wait The number of milliseconds to throttle executions to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * var throttled = _.throttle(updatePosition, 100); - * jQuery(window).on('scroll', throttled); - * - * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (!isFunction(func)) { - throw new TypeError; - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? options.leading : leading; - trailing = 'trailing' in options ? options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = wait; - debounceOptions.trailing = trailing; - - return debounce(func, wait, debounceOptions); - } - - /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Additional arguments provided to the function are appended - * to those provided to the wrapper function. The wrapper is executed with - * the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Functions - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

      ' + func(text) + '

      '; - * }); - * - * p('Fred, Wilma, & Pebbles'); - * // => '

      Fred, Wilma, & Pebbles

      ' - */ - function wrap(value, wrapper) { - return createWrapper(wrapper, 16, [value]); - } - - /*--------------------------------------------------------------------------*/ - - /** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new function. - * @example - * - * var object = { 'name': 'fred' }; - * var getter = _.constant(object); - * getter() === object; - * // => true - */ - function constant(value) { - return function() { - return value; - }; - } - - /** - * Produces a callback bound to an optional `thisArg`. If `func` is a property - * name the created callback will return the property value for a given element. - * If `func` is an object the created callback will return `true` for elements - * that contain the equivalent object properties, otherwise it will return `false`. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} [func=identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of the created callback. - * @param {number} [argCount] The number of arguments the callback accepts. - * @returns {Function} Returns a callback function. - * @example - * - * var characters = [ - * { 'name': 'barney', 'age': 36 }, - * { 'name': 'fred', 'age': 40 } - * ]; - * - * // wrap to create custom callback shorthands - * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) { - * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback); - * return !match ? func(callback, thisArg) : function(object) { - * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3]; - * }; - * }); - * - * _.filter(characters, 'age__gt38'); - * // => [{ 'name': 'fred', 'age': 40 }] - */ - function createCallback(func, thisArg, argCount) { - var type = typeof func; - if (func == null || type == 'function') { - return baseCreateCallback(func, thisArg, argCount); - } - // handle "_.pluck" style callback shorthands - if (type != 'object') { - return property(func); - } - var props = keys(func), - key = props[0], - a = func[key]; - - // handle "_.where" style callback shorthands - if (props.length == 1 && a === a && !isObject(a)) { - // fast path the common case of providing an object with a single - // property containing a primitive value - return function(object) { - var b = object[key]; - return a === b && (a !== 0 || (1 / a == 1 / b)); - }; - } - return function(object) { - var length = props.length, - result = false; - - while (length--) { - if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) { - break; - } - } - return result; - }; - } - - /** - * Converts the characters `&`, `<`, `>`, `"`, and `'` in `string` to their - * corresponding HTML entities. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} string The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('Fred, Wilma, & Pebbles'); - * // => 'Fred, Wilma, & Pebbles' - */ - function escape(string) { - return string == null ? '' : String(string).replace(reUnescapedHtml, escapeHtmlChar); - } - - /** - * This method returns the first argument provided to it. - * - * @static - * @memberOf _ - * @category Utilities - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'name': 'fred' }; - * _.identity(object) === object; - * // => true - */ - function identity(value) { - return value; - } - - /** - * Adds function properties of a source object to the destination object. - * If `object` is a function methods will be added to its prototype as well. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Function|Object} [object=lodash] object The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options] The options object. - * @param {boolean} [options.chain=true] Specify whether the functions added are chainable. - * @example - * - * function capitalize(string) { - * return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase(); - * } - * - * _.mixin({ 'capitalize': capitalize }); - * _.capitalize('fred'); - * // => 'Fred' - * - * _('fred').capitalize().value(); - * // => 'Fred' - * - * _.mixin({ 'capitalize': capitalize }, { 'chain': false }); - * _('fred').capitalize(); - * // => 'Fred' - */ - function mixin(object, source, options) { - var chain = true, - methodNames = source && functions(source); - - if (!source || (!options && !methodNames.length)) { - if (options == null) { - options = source; - } - ctor = lodashWrapper; - source = object; - object = lodash; - methodNames = functions(source); - } - if (options === false) { - chain = false; - } else if (isObject(options) && 'chain' in options) { - chain = options.chain; - } - var ctor = object, - isFunc = isFunction(ctor); - - forEach(methodNames, function(methodName) { - var func = object[methodName] = source[methodName]; - if (isFunc) { - ctor.prototype[methodName] = function() { - var chainAll = this.__chain__, - value = this.__wrapped__, - args = [value]; - - push.apply(args, arguments); - var result = func.apply(object, args); - if (chain || chainAll) { - if (value === result && isObject(result)) { - return this; - } - result = new ctor(result); - result.__chain__ = chainAll; - } - return result; - }; - } - }); - } - - /** - * Reverts the '_' variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @memberOf _ - * @category Utilities - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - context._ = oldDash; - return this; - } - - /** - * A no-operation function. - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var object = { 'name': 'fred' }; - * _.noop(object) === undefined; - * // => true - */ - function noop() { - // no operation performed - } - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Utilities - * @example - * - * var stamp = _.now(); - * _.defer(function() { console.log(_.now() - stamp); }); - * // => logs the number of milliseconds it took for the deferred function to be called - */ - var now = isNative(now = Date.now) && now || function() { - return new Date().getTime(); - }; - - /** - * Converts the given value into an integer of the specified radix. - * If `radix` is `undefined` or `0` a `radix` of `10` is used unless the - * `value` is a hexadecimal, in which case a `radix` of `16` is used. - * - * Note: This method avoids differences in native ES3 and ES5 `parseInt` - * implementations. See http://es5.github.io/#E. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} value The value to parse. - * @param {number} [radix] The radix used to interpret the value to parse. - * @returns {number} Returns the new integer value. - * @example - * - * _.parseInt('08'); - * // => 8 - */ - var parseInt = nativeParseInt(whitespace + '08') == 8 ? nativeParseInt : function(value, radix) { - // Firefox < 21 and Opera < 15 follow the ES3 specified implementation of `parseInt` - return nativeParseInt(isString(value) ? value.replace(reLeadingSpacesAndZeros, '') : value, radix || 0); - }; - - /** - * Creates a "_.pluck" style function, which returns the `key` value of a - * given object. - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} key The name of the property to retrieve. - * @returns {Function} Returns the new function. - * @example - * - * var characters = [ - * { 'name': 'fred', 'age': 40 }, - * { 'name': 'barney', 'age': 36 } - * ]; - * - * var getName = _.property('name'); - * - * _.map(characters, getName); - * // => ['barney', 'fred'] - * - * _.sortBy(characters, getName); - * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }] - */ - function property(key) { - return function(object) { - return object[key]; - }; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number will be - * returned. If `floating` is truey or either `min` or `max` are floats a - * floating-point number will be returned instead of an integer. - * - * @static - * @memberOf _ - * @category Utilities - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating=false] Specify returning a floating-point number. - * @returns {number} Returns a random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (typeof min == 'boolean' && noMax) { - floating = min; - min = 1; - } - else if (!noMax && typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; - } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand +'').length - 1)))), max); - } - return baseRandom(min, max); - } - - /** - * Resolves the value of property `key` on `object`. If `key` is a function - * it will be invoked with the `this` binding of `object` and its result returned, - * else the property value is returned. If `object` is falsey then `undefined` - * is returned. - * - * @static - * @memberOf _ - * @category Utilities - * @param {Object} object The object to inspect. - * @param {string} key The name of the property to resolve. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { - * 'cheese': 'crumpets', - * 'stuff': function() { - * return 'nonsense'; - * } - * }; - * - * _.result(object, 'cheese'); - * // => 'crumpets' - * - * _.result(object, 'stuff'); - * // => 'nonsense' - */ - function result(object, key) { - if (object) { - var value = object[key]; - return isFunction(value) ? object[key]() : value; - } - } - - /** - * A micro-templating method that handles arbitrary delimiters, preserves - * whitespace, and correctly escapes quotes within interpolated code. - * - * Note: In the development build, `_.template` utilizes sourceURLs for easier - * debugging. See http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl - * - * For more information on precompiling templates see: - * https://lodash.com/custom-builds - * - * For more information on Chrome extension sandboxes see: - * http://developer.chrome.com/stable/extensions/sandboxingEval.html - * - * @static - * @memberOf _ - * @category Utilities - * @param {string} text The template text. - * @param {Object} data The data object used to populate the text. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as local variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [sourceURL] The sourceURL of the template's compiled source. - * @param {string} [variable] The data object variable name. - * @returns {Function|string} Returns a compiled function when no `data` object - * is given, else it returns the interpolated text. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= name %>'); - * compiled({ 'name': 'fred' }); - * // => 'hello fred' - * - * // using the "escape" delimiter to escape HTML in data property values - * _.template('<%- value %>', { 'value': ' - -``` - -This library also works if you use AMD (Asynchronous Module Definition), which is used in tools like [RequireJS](http://requirejs.org/). Just list `browser-source-map-support` as a dependency: - -```html - -``` - -## Options - -This module installs two things: a change to the `stack` property on `Error` objects and a handler for uncaught exceptions that mimics node's default exception handler (the handler can be seen in the demos below). You may want to disable the handler if you have your own uncaught exception handler. This can be done by passing an argument to the installer: - -```js -require('source-map-support').install({ - handleUncaughtExceptions: false -}); -``` - -This module loads source maps from the filesystem by default. You can provide alternate loading behavior through a callback as shown below. For example, [Meteor](https://github.com/meteor) keeps all source maps cached in memory to avoid disk access. - -```js -require('source-map-support').install({ - retrieveSourceMap: function(source) { - if (source === 'compiled.js') { - return { - url: 'original.js', - map: fs.readFileSync('compiled.js.map', 'utf8') - }; - } - return null; - } -}); -``` - -The module will by default assume a browser environment if XMLHttpRequest and window are defined. If either of these do not exist it will instead assume a node environment. -In some rare cases, e.g. when running a browser emulation and where both variables are also set, you can explictly specify the environment to be either 'browser' or 'node'. - -```js -require('source-map-support').install({ - environment: 'node' -}); -``` - -## Demos - -#### Basic Demo - -original.js: - -```js -throw new Error('test'); // This is the original code -``` - -compiled.js: - -```js -require('source-map-support').install(); - -throw new Error('test'); // This is the compiled code -// The next line defines the sourceMapping. -//# sourceMappingURL=compiled.js.map -``` - -compiled.js.map: - -```json -{ - "version": 3, - "file": "compiled.js", - "sources": ["original.js"], - "names": [], - "mappings": ";;;AAAA,MAAM,IAAI" -} -``` - -Run compiled.js using node (notice how the stack trace uses original.js instead of compiled.js): - -``` -$ node compiled.js - -original.js:1 -throw new Error('test'); // This is the original code - ^ -Error: test - at Object. (original.js:1:7) - at Module._compile (module.js:456:26) - at Object.Module._extensions..js (module.js:474:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Function.Module.runMain (module.js:497:10) - at startup (node.js:119:16) - at node.js:901:3 -``` - -#### TypeScript Demo - -demo.ts: - -```typescript -declare function require(name: string); -require('source-map-support').install(); -class Foo { - constructor() { this.bar(); } - bar() { throw new Error('this is a demo'); } -} -new Foo(); -``` - -Compile and run the file using the TypeScript compiler from the terminal: - -``` -$ npm install source-map-support typescript -$ node_modules/typescript/bin/tsc -sourcemap demo.ts -$ node demo.js - -demo.ts:5 - bar() { throw new Error('this is a demo'); } - ^ -Error: this is a demo - at Foo.bar (demo.ts:5:17) - at new Foo (demo.ts:4:24) - at Object. (demo.ts:7:1) - at Module._compile (module.js:456:26) - at Object.Module._extensions..js (module.js:474:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Function.Module.runMain (module.js:497:10) - at startup (node.js:119:16) - at node.js:901:3 -``` - -#### CoffeeScript Demo - -demo.coffee: - -```coffee -require('source-map-support').install() -foo = -> - bar = -> throw new Error 'this is a demo' - bar() -foo() -``` - -Compile and run the file using the CoffeeScript compiler from the terminal: - -```sh -$ npm install source-map-support coffee-script -$ node_modules/coffee-script/bin/coffee --map --compile demo.coffee -$ node demo.js - -demo.coffee:3 - bar = -> throw new Error 'this is a demo' - ^ -Error: this is a demo - at bar (demo.coffee:3:22) - at foo (demo.coffee:4:3) - at Object. (demo.coffee:5:1) - at Object. (demo.coffee:1:1) - at Module._compile (module.js:456:26) - at Object.Module._extensions..js (module.js:474:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Function.Module.runMain (module.js:497:10) - at startup (node.js:119:16) -``` - -## Tests - -This repo contains both automated tests for node and manual tests for the browser. The automated tests can be run using mocha (type `mocha` in the root directory). To run the manual tests: - -* Build the tests using `build.js` -* Launch the HTTP server (`npm run serve-tests`) and visit - * http://127.0.0.1:1336/amd-test - * http://127.0.0.1:1336/browser-test - * http://127.0.0.1:1336/browserify-test - **Currently not working** due to a bug with browserify (see [pull request #66](https://github.com/evanw/node-source-map-support/pull/66) for details). -* For `header-test`, run `server.js` inside that directory and visit http://127.0.0.1:1337/ - -## License - -This code is available under the [MIT license](http://opensource.org/licenses/MIT). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/browser-source-map-support.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/browser-source-map-support.js deleted file mode 100644 index acb55fa6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/browser-source-map-support.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Support for source maps in V8 stack traces - * https://github.com/evanw/node-source-map-support - */ -(this.define||function(K,N){this.sourceMapSupport=N()})("browser-source-map-support",function(K){(function n(w,t,e){function r(g,b){if(!t[g]){if(!w[g]){var f="function"==typeof require&&require;if(!b&&f)return f(g,!0);if(l)return l(g,!0);throw Error("Cannot find module '"+g+"'");}f=t[g]={exports:{}};w[g][0].call(f.exports,function(b){var a=w[g][1][b];return r(a?a:b)},f,f.exports,n,w,t,e)}return t[g].exports}for(var l="function"==typeof require&&require,m=0;me)return-1;if(58>e)return e-48+52;if(91>e)return e-65;if(123>e)return e-97+26}var l="undefined"!==typeof Uint8Array?Uint8Array:Array;e.toByteArray=function(e){function g(a){c[d++]=a}var b,f,k,a,c;if(0>18&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>12&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>6&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63),f+=k;switch(b){case 1:k=e[e.length-1];f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>2);f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k<< -4&63);f+="==";break;case 2:k=(e[e.length-2]<<8)+e[e.length-1],f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>10),f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>4&63),f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k<<2&63),f+="="}return f}})("undefined"===typeof t?this.base64js={}:t)},{}],4:[function(n,w,t){},{}],5:[function(n,w,t){function e(h,q,c){if(!(this instanceof e))return new e(h,q,c);var a=typeof h; -if("base64"===q&&"string"===a)for(h=h.trim?h.trim():h.replace(/^\s+|\s+$/g,"");0!==h.length%4;)h+="=";var d;if("number"===a)d=F(h);else if("string"===a)d=e.byteLength(h,q);else if("object"===a)d=F(h.length);else throw Error("First argument needs to be a number, array or string.");var b;e._useTypedArrays?b=e._augment(new Uint8Array(d)):(b=this,b.length=d,b._isBuffer=!0);if(e._useTypedArrays&&"number"===typeof h.byteLength)b._set(h);else{var f=h;if(E(f)||e.isBuffer(f)||f&&"object"===typeof f&&"number"=== -typeof f.length)for(q=0;q=a))return c?(c=h[q],q+ -1=a)){var d;c?(q+2>>0)):(q+1>>0);return d}}function g(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"), -p(void 0!==q&&null!==q,"missing offset"),p(q+1=h.length))return h=l(h,q,a,!0),h&32768?-1*(65535-h+1):h}function b(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"),p(void 0!==q&&null!==q,"missing offset"),p(q+3=h.length))return h=m(h,q,a,!0),h&2147483648?-1*(4294967295-h+1):h}function f(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"),p(q+3=f))for(b=0,f=Math.min(f-c,2);b>>8* -(d?b:1-b)}function c(h,a,c,d,b){b||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof d,"missing or invalid endian"),p(void 0!==c&&null!==c,"missing offset"),p(c+3=f))for(b=0,f=Math.min(f-c,4);b>>8*(d?b:3-b)&255}function d(h,c,d,b,f){f||(p(void 0!==c&&null!==c,"missing value"),p("boolean"===typeof b,"missing or invalid endian"),p(void 0!==d&&null!==d,"missing offset"),p(d+1=h.length||(0<=c?a(h,c,d,b,f):a(h,65535+c+1,d,b,f))}function y(h,a,d,b,f){f||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof b,"missing or invalid endian"),p(void 0!==d&&null!==d,"missing offset"),p(d+3=h.length||(0<=a?c(h,a,d,b,f):c(h,4294967295+a+1,d,b,f))}function x(h,a,c,d,b){b||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof d, -"missing or invalid endian"),p(void 0!==c&&null!==c,"missing offset"),p(c+3=h.length||I.write(h,a,c,d,23,4)}function A(h,c,a,d,b){b||(p(void 0!==c&&null!==c,"missing value"),p("boolean"===typeof d,"missing or invalid endian"),p(void 0!==a&&null!==a,"missing offset"),p(a+7=h.length||I.write(h, -c,a,d,52,8)}function B(h,a,c){if("number"!==typeof h)return c;h=~~h;if(h>=a)return a;if(0<=h)return h;h+=a;return 0<=h?h:0}function F(h){h=~~Math.ceil(+h);return 0>h?0:h}function E(h){return(Array.isArray||function(h){return"[object Array]"===Object.prototype.toString.call(h)})(h)}function G(h){return 16>h?"0"+h.toString(16):h.toString(16)}function u(h){for(var a=[],c=0;c=d)a.push(h.charCodeAt(c));else{var b=c;55296<=d&&57343>=d&&c++;d=encodeURIComponent(h.slice(b, -c+1)).substr(1).split("%");for(b=0;b=c.length||b>=h.length);b++)c[b+a]=h[b];return b}function D(h){try{return decodeURIComponent(h)}catch(c){return String.fromCharCode(65533)}}function H(h,c){p("number"===typeof h,"cannot write a non-number as a number");p(0<=h,"specified a negative value for writing an unsigned value");p(h<= -c,"value is larger than maximum value for type");p(Math.floor(h)===h,"value has a fractional component")}function L(h,c,a){p("number"===typeof h,"cannot write a non-number as a number");p(h<=c,"value larger than maximum allowed value");p(h>=a,"value smaller than minimum allowed value");p(Math.floor(h)===h,"value has a fractional component")}function M(h,c,a){p("number"===typeof h,"cannot write a non-number as a number");p(h<=c,"value larger than maximum allowed value");p(h>=a,"value smaller than minimum allowed value")} -function p(h,c){if(!h)throw Error(c||"Failed assertion");}var J=n("base64-js"),I=n("ieee754");t.Buffer=e;t.SlowBuffer=e;t.INSPECT_MAX_BYTES=50;e.poolSize=8192;e._useTypedArrays=function(){try{var h=new ArrayBuffer(0),c=new Uint8Array(h);c.foo=function(){return 42};return 42===c.foo()&&"function"===typeof c.subarray}catch(a){return!1}}();e.isEncoding=function(h){switch(String(h).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "binary":case "base64":case "raw":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return!0; -default:return!1}};e.isBuffer=function(h){return!(null===h||void 0===h||!h._isBuffer)};e.byteLength=function(h,c){var a;h+="";switch(c||"utf8"){case "hex":a=h.length/2;break;case "utf8":case "utf-8":a=u(h).length;break;case "ascii":case "binary":case "raw":a=h.length;break;case "base64":a=J.toByteArray(h).length;break;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":a=2*h.length;break;default:throw Error("Unknown encoding");}return a};e.concat=function(h,c){p(E(h),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."); -if(0===h.length)return new e(0);if(1===h.length)return h[0];var a;if("number"!==typeof c)for(a=c=0;ab&&(a=b)):a=b;d=String(d||"utf8").toLowerCase();switch(d){case "hex":c=Number(c)||0;d=this.length-c;a?(a=Number(a),a>d&&(a=d)):a=d;d= -h.length;p(0===d%2,"Invalid hex string");a>d/2&&(a=d/2);for(d=0;d>8,f%=256,b.push(f),b.push(d);h=e._charsWritten=z(b,this,c,a);break;default:throw Error("Unknown encoding");}return h};e.prototype.toString=function(a,c,d){a=String(a||"utf8").toLowerCase();c=Number(c)||0;d=void 0!==d?Number(d):d=this.length;if(d===c)return"";switch(a){case "hex":a=this.length;if(!c||0>c)c=0;if(!d||0>d||d>a)d=a;for(a="";c=this[c]?(a+=D(b)+String.fromCharCode(this[c]), -b=""):b+="%"+this[c].toString(16);d=a+D(b);break;case "ascii":d=r(this,c,d);break;case "binary":d=r(this,c,d);break;case "base64":d=0===c&&d===this.length?J.fromByteArray(this):J.fromByteArray(this.slice(c,d));break;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":d=this.slice(c,d);c="";for(a=0;a=d,"sourceEnd < sourceStart"),p(0<=c&&cthis.length&&(b=this.length),a.length-cb||!e._useTypedArrays)for(var f=0;f=this.length))return this[a]};e.prototype.readUInt16LE=function(a,c){return l(this,a,!0,c)};e.prototype.readUInt16BE=function(a,c){return l(this,a,!1,c)};e.prototype.readUInt32LE=function(a,c){return m(this,a,!0,c)};e.prototype.readUInt32BE=function(a,c){return m(this,a,!1,c)};e.prototype.readInt8=function(a,c){c||(p(void 0!==a&&null!==a,"missing offset"),p(a= -this.length))return this[a]&128?-1*(255-this[a]+1):this[a]};e.prototype.readInt16LE=function(a,c){return g(this,a,!0,c)};e.prototype.readInt16BE=function(a,c){return g(this,a,!1,c)};e.prototype.readInt32LE=function(a,c){return b(this,a,!0,c)};e.prototype.readInt32BE=function(a,c){return b(this,a,!1,c)};e.prototype.readFloatLE=function(a,c){return f(this,a,!0,c)};e.prototype.readFloatBE=function(a,c){return f(this,a,!1,c)};e.prototype.readDoubleLE=function(a,c){return k(this,a,!0,c)};e.prototype.readDoubleBE= -function(a,c){return k(this,a,!1,c)};e.prototype.writeUInt8=function(a,c,d){d||(p(void 0!==a&&null!==a,"missing value"),p(void 0!==c&&null!==c,"missing offset"),p(c=this.length||(this[c]=a)};e.prototype.writeUInt16LE=function(c,d,b){a(this,c,d,!0,b)};e.prototype.writeUInt16BE=function(c,d,b){a(this,c,d,!1,b)};e.prototype.writeUInt32LE=function(a,d,b){c(this,a,d,!0,b)};e.prototype.writeUInt32BE=function(a,d,b){c(this,a,d,!1,b)};e.prototype.writeInt8= -function(a,c,d){d||(p(void 0!==a&&null!==a,"missing value"),p(void 0!==c&&null!==c,"missing offset"),p(c=this.length||(0<=a?this.writeUInt8(a,c,d):this.writeUInt8(255+a+1,c,d))};e.prototype.writeInt16LE=function(a,c,b){d(this,a,c,!0,b)};e.prototype.writeInt16BE=function(a,c,b){d(this,a,c,!1,b)};e.prototype.writeInt32LE=function(a,c,d){y(this,a,c,!0,d)};e.prototype.writeInt32BE=function(a,c,d){y(this,a,c,!1,d)};e.prototype.writeFloatLE= -function(a,c,d){x(this,a,c,!0,d)};e.prototype.writeFloatBE=function(a,c,d){x(this,a,c,!1,d)};e.prototype.writeDoubleLE=function(a,c,d){A(this,a,c,!0,d)};e.prototype.writeDoubleBE=function(a,c,d){A(this,a,c,!1,d)};e.prototype.fill=function(a,c,d){a||(a=0);c||(c=0);d||(d=this.length);"string"===typeof a&&(a=a.charCodeAt(0));p("number"===typeof a&&!isNaN(a),"value is not a number");p(d>=c,"end < start");if(d!==c&&0!==this.length)for(p(0<=c&&c"};e.prototype.toArrayBuffer=function(){if("undefined"!==typeof Uint8Array){if(e._useTypedArrays)return(new e(this)).buffer;for(var a=new Uint8Array(this.length),c=0,d=a.length;c>1,a=-7;g=l?g-1:0;var c=l?-1:1,d=e[r+g];g+=c;l=d&(1<<-a)-1;d>>=-a;for(a+=b;0>=-a;for(a+=m;0>1,d=23===g?Math.pow(2,-24)-Math.pow(2,-77):0;b=m?0:b-1;var y=m?1:-1,x=0>r||0===r&&0>1/r?1:0;r=Math.abs(r);isNaN(r)||Infinity===r?(r=isNaN(r)?1:0,m=a):(m=Math.floor(Math.log(r)/Math.LN2),1>r*(f=Math.pow(2,-m))&&(m--,f*=2),r=1<=m+c?r+d/f:r+d*Math.pow(2,1-c),2<=r*f&&(m++,f/=2),m+c>=a?(r=0,m=a):1<=m+c?(r=(r*f-1)*Math.pow(2,g),m+=c):(r=r*Math.pow(2,c-1)*Math.pow(2,g),m=0));for(;8<=g;e[l+b]=r&255,b+=y,r/=256,g-=8);m=m<d?[]:a.slice(c,d-c+1)}b=t.resolve(b).substr(1);f=t.resolve(f).substr(1);for(var a=e(b.split("/")),c=e(f.split("/")),d=Math.min(a.length,c.length),g=d,x=0;xf&&(f=b.length+f);return b.substr(f,e)}}).call(this,n("node_modules/process/browser.js"))}, -{"node_modules/process/browser.js":8}],8:[function(n,w,t){function e(){}n=w.exports={};n.nextTick=function(){if("undefined"!==typeof window&&window.setImmediate)return function(e){return window.setImmediate(e)};if("undefined"!==typeof window&&window.postMessage&&window.addEventListener){var e=[];window.addEventListener("message",function(l){var m=l.source;m!==window&&null!==m||"process-tick"!==l.data||(l.stopPropagation(),0b?(-b<<1)+1:(b<<1)+0;do b=k&31,k>>>=5,0=k)throw Error("Expected more digits in base 64 VLQ value.");y=g.decode(b.charAt(e++));d=!!(y&32);y&=31;a+=y<>1;return{value:1===(a&1)?-k:k,rest:b.slice(e)}}})},{"./base64":12,amdefine:2}],12:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){var g={},b={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(e, -k){g[e]=k;b[k]=e});l.encode=function(e){if(e in b)return b[e];throw new TypeError("Must be between 0 and 63: "+e);};l.decode=function(b){if(b in g)return g[b];throw new TypeError("Not a valid base 64 digit: "+b);}})},{amdefine:2}],13:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){function g(b,e,k,a,c){var d=Math.floor((e-b)/2)+b,y=c(k,a[d],!0);return 0===y?a[d]:0b?null:a[b]}l.search=function(b,e,k){return 0=a[b])throw new TypeError("Line must be greater than or equal to 1, got "+a[b]);if(0>a[e])throw new TypeError("Column must be greater than or equal to 0, got "+ -a[e]);return f.search(a,d,g)};g.prototype.originalPositionFor=function(a){a={generatedLine:b.getArg(a,"line"),generatedColumn:b.getArg(a,"column")};if(a=this._findMapping(a,this._generatedMappings,"generatedLine","generatedColumn",b.compareByGeneratedPositions)){var d=b.getArg(a,"source",null);d&&this.sourceRoot&&(d=b.join(this.sourceRoot,d));return{source:d,line:b.getArg(a,"originalLine",null),column:b.getArg(a,"originalColumn",null),name:b.getArg(a,"name",null)}}return{source:null,line:null,column:null, -name:null}};g.prototype.sourceContentFor=function(a){if(!this.sourcesContent)return null;this.sourceRoot&&(a=b.relative(this.sourceRoot,a));if(this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];var d;if(this.sourceRoot&&(d=b.urlParse(this.sourceRoot))){var e=a.replace(/^file:\/\//,"");if("file"==d.scheme&&this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];if((!d.path||"/"==d.path)&&this._sources.has("/"+a))return this.sourcesContent[this._sources.indexOf("/"+ -a)]}throw Error('"'+a+'" is not in the SourceMap.');};g.prototype.generatedPositionFor=function(a){a={source:b.getArg(a,"source"),originalLine:b.getArg(a,"line"),originalColumn:b.getArg(a,"column")};this.sourceRoot&&(a.source=b.relative(this.sourceRoot,a.source));return(a=this._findMapping(a,this._originalMappings,"originalLine","originalColumn",b.compareByOriginalPositions))?{line:b.getArg(a,"generatedLine",null),column:b.getArg(a,"generatedColumn",null)}:{line:null,column:null}};g.GENERATED_ORDER= -1;g.ORIGINAL_ORDER=2;g.prototype.eachMapping=function(a,d,e){d=d||null;switch(e||g.GENERATED_ORDER){case g.GENERATED_ORDER:e=this._generatedMappings;break;case g.ORIGINAL_ORDER:e=this._originalMappings;break;default:throw Error("Unknown order of iteration.");}var f=this.sourceRoot;e.map(function(a){var c=a.source;c&&f&&(c=b.join(f,c));return{source:c,generatedLine:a.generatedLine,generatedColumn:a.generatedColumn,originalLine:a.originalLine,originalColumn:a.originalColumn,name:a.name}}).forEach(a, -d)};l.SourceMapConsumer=g})},{"./array-set":10,"./base64-vlq":11,"./binary-search":13,"./util":17,amdefine:2}],15:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){function g(a){this._file=f.getArg(a,"file");this._sourceRoot=f.getArg(a,"sourceRoot",null);this._sources=new k;this._names=new k;this._mappings=[];this._sourcesContents=null}var b=e("./base64-vlq"),f=e("./util"),k=e("./array-set").ArraySet;g.prototype._version=3;g.fromSourceMap=function(a){var c=a.sourceRoot, -d=new g({file:a.file,sourceRoot:c});a.eachMapping(function(a){var b={generated:{line:a.generatedLine,column:a.generatedColumn}};a.source&&(b.source=a.source,c&&(b.source=f.relative(c,b.source)),b.original={line:a.originalLine,column:a.originalColumn},a.name&&(b.name=a.name));d.addMapping(b)});a.sources.forEach(function(c){var b=a.sourceContentFor(c);b&&d.setSourceContent(c,b)});return d};g.prototype.addMapping=function(a){var c=f.getArg(a,"generated"),d=f.getArg(a,"original",null),b=f.getArg(a,"source", -null);a=f.getArg(a,"name",null);this._validateMapping(c,d,b,a);b&&!this._sources.has(b)&&this._sources.add(b);a&&!this._names.has(a)&&this._names.add(a);this._mappings.push({generatedLine:c.line,generatedColumn:c.column,originalLine:null!=d&&d.line,originalColumn:null!=d&&d.column,source:b,name:a})};g.prototype.setSourceContent=function(a,c){var d=a;this._sourceRoot&&(d=f.relative(this._sourceRoot,d));null!==c?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[f.toSetString(d)]= -c):(delete this._sourcesContents[f.toSetString(d)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))};g.prototype.applySourceMap=function(a,c){c||(c=a.file);var d=this._sourceRoot;d&&(c=f.relative(d,c));var b=new k,e=new k;this._mappings.forEach(function(g){if(g.source===c&&g.originalLine){var k=a.originalPositionFor({line:g.originalLine,column:g.originalColumn});null!==k.source&&(g.source=d?f.relative(d,k.source):k.source,g.originalLine=k.line,g.originalColumn=k.column, -null!==k.name&&null!==g.name&&(g.name=k.name))}(k=g.source)&&!b.has(k)&&b.add(k);(g=g.name)&&!e.has(g)&&e.add(g)},this);this._sources=b;this._names=e;a.sources.forEach(function(c){var b=a.sourceContentFor(c);b&&(d&&(c=f.relative(d,c)),this.setSourceContent(c,b))},this)};g.prototype._validateMapping=function(a,c,d,b){if(!(a&&"line"in a&&"column"in a&&0f)-(e",a=this.getLineNumber(),null!=a&&(b+=":"+a,(a=this.getColumnNumber())&&(b+=":"+a)));a="";var c=this.getFunctionName(),d=!0,e=this.isConstructor();if(this.isToplevel()||e)e?a+="new "+(c||""):c?a+=c:(a+=b,d=!1);else{var e=this.getTypeName(),f=this.getMethodName();c?(e&&0!=c.indexOf(e)&&(a+=e+"."),a+=c,f&&c.indexOf("."+ -f)!=c.length-f.length-1&&(a+=" [as "+f+"]")):a+=e+"."+(f||"")}d&&(a+=" ("+b+")");return a}function c(b){var c={};Object.getOwnPropertyNames(Object.getPrototypeOf(b)).forEach(function(a){c[a]=/^(?:is|get)/.test(a)?function(){return b[a].call(b)}:b[a]});c.toString=a;return c}function d(a){var b=a.getFileName()||a.getScriptNameOrSourceURL();if(b){var d=a.getLineNumber(),e=a.getColumnNumber()-1;1!==d||l()||a.isEval()||(e-=62);var g=f({source:b,line:d,column:e});a=c(a);a.getFileName=function(){return g.source}; -a.getLineNumber=function(){return g.line};a.getColumnNumber=function(){return g.column+1};a.getScriptNameOrSourceURL=function(){return g.source};return a}var m=a.isEval()&&a.getEvalOrigin();m&&(m=k(m),a=c(a),a.getEvalOrigin=function(){return m});return a}function w(a,b){u&&(z={},D={});return a+b.map(function(a){return"\n at "+d(a)}).join("")}function x(a){var b=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(a.stack);if(b){a=b[1];var c=+b[2],b=+b[3],d=z[a];!d&&E.existsSync(a)&&(d=E.readFileSync(a,"utf8")); -if(d&&(d=d.split(/(?:\r\n|\r|\n)/)[c-1]))return a+":"+c+"\n"+d+"\n"+Array(b).join(" ")+"^"}return null}function A(){var a=e.emit;e.emit=function(b){if("uncaughtException"===b){var c=arguments[1]&&arguments[1].stack,d=0 -Make sure to run build.js. -This test should say either "Test failed" or "Test passed": -

      - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/require.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/require.js deleted file mode 100644 index ee9999f6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/require.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - RequireJS 2.1.9 Copyright (c) 2010-2012, The Dojo Foundation All Rights Reserved. - Available via the MIT or new BSD license. - see: http://github.com/jrburke/requirejs for details -*/ -var requirejs,require,define; -(function(Z){function H(b){return"[object Function]"===L.call(b)}function I(b){return"[object Array]"===L.call(b)}function y(b,c){if(b){var e;for(e=0;ethis.depCount&&!this.defined){if(H(m)){if(this.events.error&&this.map.isDefine||j.onError!==aa)try{d=i.execCb(c,m,b,d)}catch(e){a=e}else d=i.execCb(c,m,b,d);this.map.isDefine&&((b=this.module)&&void 0!==b.exports&&b.exports!== -this.exports?d=b.exports:void 0===d&&this.usingExports&&(d=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",v(this.error=a)}else d=m;this.exports=d;if(this.map.isDefine&&!this.ignore&&(r[c]=d,j.onResourceLoad))j.onResourceLoad(i,this.map,this.depMaps);x(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete= -!0)}}else this.fetch()}},callPlugin:function(){var a=this.map,b=a.id,e=n(a.prefix);this.depMaps.push(e);s(e,"defined",u(this,function(d){var m,e;e=this.map.name;var g=this.map.parentMap?this.map.parentMap.name:null,h=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(d.normalize&&(e=d.normalize(e,function(a){return c(a,g,!0)})||""),d=n(a.prefix+"!"+e,this.map.parentMap),s(d,"defined",u(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})), -e=l(p,d.id)){this.depMaps.push(d);if(this.events.error)e.on("error",u(this,function(a){this.emit("error",a)}));e.enable()}}else m=u(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),m.error=u(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];F(p,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&x(a.map.id)});v(a)}),m.fromText=u(this,function(d,c){var e=a.name,g=n(e),B=O;c&&(d=c);B&&(O=!1);q(g);t(k.config,b)&&(k.config[e]=k.config[b]);try{j.exec(d)}catch(ca){return v(A("fromtexteval", -"fromText eval for "+b+" failed: "+ca,ca,[b]))}B&&(O=!0);this.depMaps.push(g);i.completeLoad(e);h([e],m)}),d.load(a.name,h,m,k)}));i.enable(e,this);this.pluginMaps[e.id]=e},enable:function(){T[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,u(this,function(a,b){var c,d;if("string"===typeof a){a=n(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=l(N,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;s(a,"defined",u(this,function(a){this.defineDep(b, -a);this.check()}));this.errback&&s(a,"error",u(this,this.errback))}c=a.id;d=p[c];!t(N,c)&&(d&&!d.enabled)&&i.enable(a,this)}));F(this.pluginMaps,u(this,function(a){var b=l(p,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:k,contextName:b,registry:p,defined:r,urlFetched:S,defQueue:G,Module:X,makeModuleMap:n, -nextTick:j.nextTick,onError:v,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=k.pkgs,c=k.shim,d={paths:!0,config:!0,map:!0};F(a,function(a,b){d[b]?"map"===b?(k.map||(k.map={}),Q(k[b],a,!0,!0)):Q(k[b],a,!0):k[b]=a});a.shim&&(F(a.shim,function(a,b){I(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a);c[b]=a}),k.shim=c);a.packages&&(y(a.packages,function(a){a="string"===typeof a?{name:a}:a;b[a.name]={name:a.name, -location:a.location||a.name,main:(a.main||"main").replace(ja,"").replace(ea,"")}}),k.pkgs=b);F(p,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=n(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(Z,arguments));return b||a.exports&&ba(a.exports)}},makeRequire:function(a,f){function h(d,c,e){var g,k;f.enableBuildCallback&&(c&&H(c))&&(c.__requireJsBuild=!0);if("string"===typeof d){if(H(c))return v(A("requireargs", -"Invalid require call"),e);if(a&&t(N,d))return N[d](p[a.id]);if(j.get)return j.get(i,d,a,h);g=n(d,a,!1,!0);g=g.id;return!t(r,g)?v(A("notloaded",'Module name "'+g+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):r[g]}K();i.nextTick(function(){K();k=q(n(null,a));k.skipMap=f.skipMap;k.init(d,c,e,{enabled:!0});C()});return h}f=f||{};Q(h,{isBrowser:z,toUrl:function(b){var f,e=b.lastIndexOf("."),g=b.split("/")[0];if(-1!==e&&(!("."===g||".."===g)||1h.attachEvent.toString().indexOf("[native code"))&&!W?(O=!0,h.attachEvent("onreadystatechange",b.onScriptLoad)):(h.addEventListener("load",b.onScriptLoad,!1),h.addEventListener("error", -b.onScriptError,!1)),h.src=e,K=h,C?x.insertBefore(h,C):x.appendChild(h),K=null,h;if(da)try{importScripts(e),b.completeLoad(c)}catch(l){b.onError(A("importscripts","importScripts failed for "+c+" at "+e,l,[c]))}};z&&!s.skipDataMain&&M(document.getElementsByTagName("script"),function(b){x||(x=b.parentNode);if(J=b.getAttribute("data-main"))return q=J,s.baseUrl||(D=q.split("/"),q=D.pop(),fa=D.length?D.join("/")+"/":"./",s.baseUrl=fa),q=q.replace(ea,""),j.jsExtRegExp.test(q)&&(q=J),s.deps=s.deps?s.deps.concat(q): -[q],!0});define=function(b,c,e){var h,j;"string"!==typeof b&&(e=c,c=b,b=null);I(c)||(e=c,c=null);!c&&H(e)&&(c=[],e.length&&(e.toString().replace(la,"").replace(ma,function(b,e){c.push(e)}),c=(1===e.length?["require"]:["require","exports","module"]).concat(c)));if(O){if(!(h=K))P&&"interactive"===P.readyState||M(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return P=b}),h=P;h&&(b||(b=h.getAttribute("data-requiremodule")),j=E[h.getAttribute("data-requirecontext")])}(j? -j.defQueue:R).push([b,c,e])};define.amd={jQuery:!0};j.exec=function(b){return eval(b)};j(s)}})(this); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.coffee b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.coffee deleted file mode 100644 index fe28f653..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.coffee +++ /dev/null @@ -1,13 +0,0 @@ -define ['browser-source-map-support'], (sourceMapSupport) -> - sourceMapSupport.install() - - foo = -> throw new Error 'foo' - - try - foo() - catch e - if /\bscript\.coffee\b/.test e.stack - document.body.appendChild document.createTextNode 'Test passed' - else - document.body.appendChild document.createTextNode 'Test failed' - console.log e.stack diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.js deleted file mode 100644 index 7cfd359e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/amd-test/script.js +++ /dev/null @@ -1,24 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - define(['browser-source-map-support'], function(sourceMapSupport) { - var e, foo; - sourceMapSupport.install(); - foo = function() { - throw new Error('foo'); - }; - try { - return foo(); - } catch (_error) { - e = _error; - if (/\bscript\.coffee\b/.test(e.stack)) { - return document.body.appendChild(document.createTextNode('Test passed')); - } else { - document.body.appendChild(document.createTextNode('Test failed')); - return console.log(e.stack); - } - } - }); - -}).call(this); - -//# sourceMappingURL=script.map diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-source-map-support.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-source-map-support.js deleted file mode 100644 index acb55fa6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-source-map-support.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Support for source maps in V8 stack traces - * https://github.com/evanw/node-source-map-support - */ -(this.define||function(K,N){this.sourceMapSupport=N()})("browser-source-map-support",function(K){(function n(w,t,e){function r(g,b){if(!t[g]){if(!w[g]){var f="function"==typeof require&&require;if(!b&&f)return f(g,!0);if(l)return l(g,!0);throw Error("Cannot find module '"+g+"'");}f=t[g]={exports:{}};w[g][0].call(f.exports,function(b){var a=w[g][1][b];return r(a?a:b)},f,f.exports,n,w,t,e)}return t[g].exports}for(var l="function"==typeof require&&require,m=0;me)return-1;if(58>e)return e-48+52;if(91>e)return e-65;if(123>e)return e-97+26}var l="undefined"!==typeof Uint8Array?Uint8Array:Array;e.toByteArray=function(e){function g(a){c[d++]=a}var b,f,k,a,c;if(0>18&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>12&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>6&63)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k&63),f+=k;switch(b){case 1:k=e[e.length-1];f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>2);f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k<< -4&63);f+="==";break;case 2:k=(e[e.length-2]<<8)+e[e.length-1],f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>10),f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k>>4&63),f+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(k<<2&63),f+="="}return f}})("undefined"===typeof t?this.base64js={}:t)},{}],4:[function(n,w,t){},{}],5:[function(n,w,t){function e(h,q,c){if(!(this instanceof e))return new e(h,q,c);var a=typeof h; -if("base64"===q&&"string"===a)for(h=h.trim?h.trim():h.replace(/^\s+|\s+$/g,"");0!==h.length%4;)h+="=";var d;if("number"===a)d=F(h);else if("string"===a)d=e.byteLength(h,q);else if("object"===a)d=F(h.length);else throw Error("First argument needs to be a number, array or string.");var b;e._useTypedArrays?b=e._augment(new Uint8Array(d)):(b=this,b.length=d,b._isBuffer=!0);if(e._useTypedArrays&&"number"===typeof h.byteLength)b._set(h);else{var f=h;if(E(f)||e.isBuffer(f)||f&&"object"===typeof f&&"number"=== -typeof f.length)for(q=0;q=a))return c?(c=h[q],q+ -1=a)){var d;c?(q+2>>0)):(q+1>>0);return d}}function g(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"), -p(void 0!==q&&null!==q,"missing offset"),p(q+1=h.length))return h=l(h,q,a,!0),h&32768?-1*(65535-h+1):h}function b(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"),p(void 0!==q&&null!==q,"missing offset"),p(q+3=h.length))return h=m(h,q,a,!0),h&2147483648?-1*(4294967295-h+1):h}function f(h,q,a,c){c||(p("boolean"===typeof a,"missing or invalid endian"),p(q+3=f))for(b=0,f=Math.min(f-c,2);b>>8* -(d?b:1-b)}function c(h,a,c,d,b){b||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof d,"missing or invalid endian"),p(void 0!==c&&null!==c,"missing offset"),p(c+3=f))for(b=0,f=Math.min(f-c,4);b>>8*(d?b:3-b)&255}function d(h,c,d,b,f){f||(p(void 0!==c&&null!==c,"missing value"),p("boolean"===typeof b,"missing or invalid endian"),p(void 0!==d&&null!==d,"missing offset"),p(d+1=h.length||(0<=c?a(h,c,d,b,f):a(h,65535+c+1,d,b,f))}function y(h,a,d,b,f){f||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof b,"missing or invalid endian"),p(void 0!==d&&null!==d,"missing offset"),p(d+3=h.length||(0<=a?c(h,a,d,b,f):c(h,4294967295+a+1,d,b,f))}function x(h,a,c,d,b){b||(p(void 0!==a&&null!==a,"missing value"),p("boolean"===typeof d, -"missing or invalid endian"),p(void 0!==c&&null!==c,"missing offset"),p(c+3=h.length||I.write(h,a,c,d,23,4)}function A(h,c,a,d,b){b||(p(void 0!==c&&null!==c,"missing value"),p("boolean"===typeof d,"missing or invalid endian"),p(void 0!==a&&null!==a,"missing offset"),p(a+7=h.length||I.write(h, -c,a,d,52,8)}function B(h,a,c){if("number"!==typeof h)return c;h=~~h;if(h>=a)return a;if(0<=h)return h;h+=a;return 0<=h?h:0}function F(h){h=~~Math.ceil(+h);return 0>h?0:h}function E(h){return(Array.isArray||function(h){return"[object Array]"===Object.prototype.toString.call(h)})(h)}function G(h){return 16>h?"0"+h.toString(16):h.toString(16)}function u(h){for(var a=[],c=0;c=d)a.push(h.charCodeAt(c));else{var b=c;55296<=d&&57343>=d&&c++;d=encodeURIComponent(h.slice(b, -c+1)).substr(1).split("%");for(b=0;b=c.length||b>=h.length);b++)c[b+a]=h[b];return b}function D(h){try{return decodeURIComponent(h)}catch(c){return String.fromCharCode(65533)}}function H(h,c){p("number"===typeof h,"cannot write a non-number as a number");p(0<=h,"specified a negative value for writing an unsigned value");p(h<= -c,"value is larger than maximum value for type");p(Math.floor(h)===h,"value has a fractional component")}function L(h,c,a){p("number"===typeof h,"cannot write a non-number as a number");p(h<=c,"value larger than maximum allowed value");p(h>=a,"value smaller than minimum allowed value");p(Math.floor(h)===h,"value has a fractional component")}function M(h,c,a){p("number"===typeof h,"cannot write a non-number as a number");p(h<=c,"value larger than maximum allowed value");p(h>=a,"value smaller than minimum allowed value")} -function p(h,c){if(!h)throw Error(c||"Failed assertion");}var J=n("base64-js"),I=n("ieee754");t.Buffer=e;t.SlowBuffer=e;t.INSPECT_MAX_BYTES=50;e.poolSize=8192;e._useTypedArrays=function(){try{var h=new ArrayBuffer(0),c=new Uint8Array(h);c.foo=function(){return 42};return 42===c.foo()&&"function"===typeof c.subarray}catch(a){return!1}}();e.isEncoding=function(h){switch(String(h).toLowerCase()){case "hex":case "utf8":case "utf-8":case "ascii":case "binary":case "base64":case "raw":case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":return!0; -default:return!1}};e.isBuffer=function(h){return!(null===h||void 0===h||!h._isBuffer)};e.byteLength=function(h,c){var a;h+="";switch(c||"utf8"){case "hex":a=h.length/2;break;case "utf8":case "utf-8":a=u(h).length;break;case "ascii":case "binary":case "raw":a=h.length;break;case "base64":a=J.toByteArray(h).length;break;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":a=2*h.length;break;default:throw Error("Unknown encoding");}return a};e.concat=function(h,c){p(E(h),"Usage: Buffer.concat(list, [totalLength])\nlist should be an Array."); -if(0===h.length)return new e(0);if(1===h.length)return h[0];var a;if("number"!==typeof c)for(a=c=0;ab&&(a=b)):a=b;d=String(d||"utf8").toLowerCase();switch(d){case "hex":c=Number(c)||0;d=this.length-c;a?(a=Number(a),a>d&&(a=d)):a=d;d= -h.length;p(0===d%2,"Invalid hex string");a>d/2&&(a=d/2);for(d=0;d>8,f%=256,b.push(f),b.push(d);h=e._charsWritten=z(b,this,c,a);break;default:throw Error("Unknown encoding");}return h};e.prototype.toString=function(a,c,d){a=String(a||"utf8").toLowerCase();c=Number(c)||0;d=void 0!==d?Number(d):d=this.length;if(d===c)return"";switch(a){case "hex":a=this.length;if(!c||0>c)c=0;if(!d||0>d||d>a)d=a;for(a="";c=this[c]?(a+=D(b)+String.fromCharCode(this[c]), -b=""):b+="%"+this[c].toString(16);d=a+D(b);break;case "ascii":d=r(this,c,d);break;case "binary":d=r(this,c,d);break;case "base64":d=0===c&&d===this.length?J.fromByteArray(this):J.fromByteArray(this.slice(c,d));break;case "ucs2":case "ucs-2":case "utf16le":case "utf-16le":d=this.slice(c,d);c="";for(a=0;a=d,"sourceEnd < sourceStart"),p(0<=c&&cthis.length&&(b=this.length),a.length-cb||!e._useTypedArrays)for(var f=0;f=this.length))return this[a]};e.prototype.readUInt16LE=function(a,c){return l(this,a,!0,c)};e.prototype.readUInt16BE=function(a,c){return l(this,a,!1,c)};e.prototype.readUInt32LE=function(a,c){return m(this,a,!0,c)};e.prototype.readUInt32BE=function(a,c){return m(this,a,!1,c)};e.prototype.readInt8=function(a,c){c||(p(void 0!==a&&null!==a,"missing offset"),p(a= -this.length))return this[a]&128?-1*(255-this[a]+1):this[a]};e.prototype.readInt16LE=function(a,c){return g(this,a,!0,c)};e.prototype.readInt16BE=function(a,c){return g(this,a,!1,c)};e.prototype.readInt32LE=function(a,c){return b(this,a,!0,c)};e.prototype.readInt32BE=function(a,c){return b(this,a,!1,c)};e.prototype.readFloatLE=function(a,c){return f(this,a,!0,c)};e.prototype.readFloatBE=function(a,c){return f(this,a,!1,c)};e.prototype.readDoubleLE=function(a,c){return k(this,a,!0,c)};e.prototype.readDoubleBE= -function(a,c){return k(this,a,!1,c)};e.prototype.writeUInt8=function(a,c,d){d||(p(void 0!==a&&null!==a,"missing value"),p(void 0!==c&&null!==c,"missing offset"),p(c=this.length||(this[c]=a)};e.prototype.writeUInt16LE=function(c,d,b){a(this,c,d,!0,b)};e.prototype.writeUInt16BE=function(c,d,b){a(this,c,d,!1,b)};e.prototype.writeUInt32LE=function(a,d,b){c(this,a,d,!0,b)};e.prototype.writeUInt32BE=function(a,d,b){c(this,a,d,!1,b)};e.prototype.writeInt8= -function(a,c,d){d||(p(void 0!==a&&null!==a,"missing value"),p(void 0!==c&&null!==c,"missing offset"),p(c=this.length||(0<=a?this.writeUInt8(a,c,d):this.writeUInt8(255+a+1,c,d))};e.prototype.writeInt16LE=function(a,c,b){d(this,a,c,!0,b)};e.prototype.writeInt16BE=function(a,c,b){d(this,a,c,!1,b)};e.prototype.writeInt32LE=function(a,c,d){y(this,a,c,!0,d)};e.prototype.writeInt32BE=function(a,c,d){y(this,a,c,!1,d)};e.prototype.writeFloatLE= -function(a,c,d){x(this,a,c,!0,d)};e.prototype.writeFloatBE=function(a,c,d){x(this,a,c,!1,d)};e.prototype.writeDoubleLE=function(a,c,d){A(this,a,c,!0,d)};e.prototype.writeDoubleBE=function(a,c,d){A(this,a,c,!1,d)};e.prototype.fill=function(a,c,d){a||(a=0);c||(c=0);d||(d=this.length);"string"===typeof a&&(a=a.charCodeAt(0));p("number"===typeof a&&!isNaN(a),"value is not a number");p(d>=c,"end < start");if(d!==c&&0!==this.length)for(p(0<=c&&c"};e.prototype.toArrayBuffer=function(){if("undefined"!==typeof Uint8Array){if(e._useTypedArrays)return(new e(this)).buffer;for(var a=new Uint8Array(this.length),c=0,d=a.length;c>1,a=-7;g=l?g-1:0;var c=l?-1:1,d=e[r+g];g+=c;l=d&(1<<-a)-1;d>>=-a;for(a+=b;0>=-a;for(a+=m;0>1,d=23===g?Math.pow(2,-24)-Math.pow(2,-77):0;b=m?0:b-1;var y=m?1:-1,x=0>r||0===r&&0>1/r?1:0;r=Math.abs(r);isNaN(r)||Infinity===r?(r=isNaN(r)?1:0,m=a):(m=Math.floor(Math.log(r)/Math.LN2),1>r*(f=Math.pow(2,-m))&&(m--,f*=2),r=1<=m+c?r+d/f:r+d*Math.pow(2,1-c),2<=r*f&&(m++,f/=2),m+c>=a?(r=0,m=a):1<=m+c?(r=(r*f-1)*Math.pow(2,g),m+=c):(r=r*Math.pow(2,c-1)*Math.pow(2,g),m=0));for(;8<=g;e[l+b]=r&255,b+=y,r/=256,g-=8);m=m<d?[]:a.slice(c,d-c+1)}b=t.resolve(b).substr(1);f=t.resolve(f).substr(1);for(var a=e(b.split("/")),c=e(f.split("/")),d=Math.min(a.length,c.length),g=d,x=0;xf&&(f=b.length+f);return b.substr(f,e)}}).call(this,n("node_modules/process/browser.js"))}, -{"node_modules/process/browser.js":8}],8:[function(n,w,t){function e(){}n=w.exports={};n.nextTick=function(){if("undefined"!==typeof window&&window.setImmediate)return function(e){return window.setImmediate(e)};if("undefined"!==typeof window&&window.postMessage&&window.addEventListener){var e=[];window.addEventListener("message",function(l){var m=l.source;m!==window&&null!==m||"process-tick"!==l.data||(l.stopPropagation(),0b?(-b<<1)+1:(b<<1)+0;do b=k&31,k>>>=5,0=k)throw Error("Expected more digits in base 64 VLQ value.");y=g.decode(b.charAt(e++));d=!!(y&32);y&=31;a+=y<>1;return{value:1===(a&1)?-k:k,rest:b.slice(e)}}})},{"./base64":12,amdefine:2}],12:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){var g={},b={};"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("").forEach(function(e, -k){g[e]=k;b[k]=e});l.encode=function(e){if(e in b)return b[e];throw new TypeError("Must be between 0 and 63: "+e);};l.decode=function(b){if(b in g)return g[b];throw new TypeError("Not a valid base 64 digit: "+b);}})},{amdefine:2}],13:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){function g(b,e,k,a,c){var d=Math.floor((e-b)/2)+b,y=c(k,a[d],!0);return 0===y?a[d]:0b?null:a[b]}l.search=function(b,e,k){return 0=a[b])throw new TypeError("Line must be greater than or equal to 1, got "+a[b]);if(0>a[e])throw new TypeError("Column must be greater than or equal to 0, got "+ -a[e]);return f.search(a,d,g)};g.prototype.originalPositionFor=function(a){a={generatedLine:b.getArg(a,"line"),generatedColumn:b.getArg(a,"column")};if(a=this._findMapping(a,this._generatedMappings,"generatedLine","generatedColumn",b.compareByGeneratedPositions)){var d=b.getArg(a,"source",null);d&&this.sourceRoot&&(d=b.join(this.sourceRoot,d));return{source:d,line:b.getArg(a,"originalLine",null),column:b.getArg(a,"originalColumn",null),name:b.getArg(a,"name",null)}}return{source:null,line:null,column:null, -name:null}};g.prototype.sourceContentFor=function(a){if(!this.sourcesContent)return null;this.sourceRoot&&(a=b.relative(this.sourceRoot,a));if(this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];var d;if(this.sourceRoot&&(d=b.urlParse(this.sourceRoot))){var e=a.replace(/^file:\/\//,"");if("file"==d.scheme&&this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];if((!d.path||"/"==d.path)&&this._sources.has("/"+a))return this.sourcesContent[this._sources.indexOf("/"+ -a)]}throw Error('"'+a+'" is not in the SourceMap.');};g.prototype.generatedPositionFor=function(a){a={source:b.getArg(a,"source"),originalLine:b.getArg(a,"line"),originalColumn:b.getArg(a,"column")};this.sourceRoot&&(a.source=b.relative(this.sourceRoot,a.source));return(a=this._findMapping(a,this._originalMappings,"originalLine","originalColumn",b.compareByOriginalPositions))?{line:b.getArg(a,"generatedLine",null),column:b.getArg(a,"generatedColumn",null)}:{line:null,column:null}};g.GENERATED_ORDER= -1;g.ORIGINAL_ORDER=2;g.prototype.eachMapping=function(a,d,e){d=d||null;switch(e||g.GENERATED_ORDER){case g.GENERATED_ORDER:e=this._generatedMappings;break;case g.ORIGINAL_ORDER:e=this._originalMappings;break;default:throw Error("Unknown order of iteration.");}var f=this.sourceRoot;e.map(function(a){var c=a.source;c&&f&&(c=b.join(f,c));return{source:c,generatedLine:a.generatedLine,generatedColumn:a.generatedColumn,originalLine:a.originalLine,originalColumn:a.originalColumn,name:a.name}}).forEach(a, -d)};l.SourceMapConsumer=g})},{"./array-set":10,"./base64-vlq":11,"./binary-search":13,"./util":17,amdefine:2}],15:[function(n,w,t){if("function"!==typeof e)var e=n("amdefine")(w,n);e(function(e,l,m){function g(a){this._file=f.getArg(a,"file");this._sourceRoot=f.getArg(a,"sourceRoot",null);this._sources=new k;this._names=new k;this._mappings=[];this._sourcesContents=null}var b=e("./base64-vlq"),f=e("./util"),k=e("./array-set").ArraySet;g.prototype._version=3;g.fromSourceMap=function(a){var c=a.sourceRoot, -d=new g({file:a.file,sourceRoot:c});a.eachMapping(function(a){var b={generated:{line:a.generatedLine,column:a.generatedColumn}};a.source&&(b.source=a.source,c&&(b.source=f.relative(c,b.source)),b.original={line:a.originalLine,column:a.originalColumn},a.name&&(b.name=a.name));d.addMapping(b)});a.sources.forEach(function(c){var b=a.sourceContentFor(c);b&&d.setSourceContent(c,b)});return d};g.prototype.addMapping=function(a){var c=f.getArg(a,"generated"),d=f.getArg(a,"original",null),b=f.getArg(a,"source", -null);a=f.getArg(a,"name",null);this._validateMapping(c,d,b,a);b&&!this._sources.has(b)&&this._sources.add(b);a&&!this._names.has(a)&&this._names.add(a);this._mappings.push({generatedLine:c.line,generatedColumn:c.column,originalLine:null!=d&&d.line,originalColumn:null!=d&&d.column,source:b,name:a})};g.prototype.setSourceContent=function(a,c){var d=a;this._sourceRoot&&(d=f.relative(this._sourceRoot,d));null!==c?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[f.toSetString(d)]= -c):(delete this._sourcesContents[f.toSetString(d)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))};g.prototype.applySourceMap=function(a,c){c||(c=a.file);var d=this._sourceRoot;d&&(c=f.relative(d,c));var b=new k,e=new k;this._mappings.forEach(function(g){if(g.source===c&&g.originalLine){var k=a.originalPositionFor({line:g.originalLine,column:g.originalColumn});null!==k.source&&(g.source=d?f.relative(d,k.source):k.source,g.originalLine=k.line,g.originalColumn=k.column, -null!==k.name&&null!==g.name&&(g.name=k.name))}(k=g.source)&&!b.has(k)&&b.add(k);(g=g.name)&&!e.has(g)&&e.add(g)},this);this._sources=b;this._names=e;a.sources.forEach(function(c){var b=a.sourceContentFor(c);b&&(d&&(c=f.relative(d,c)),this.setSourceContent(c,b))},this)};g.prototype._validateMapping=function(a,c,d,b){if(!(a&&"line"in a&&"column"in a&&0f)-(e",a=this.getLineNumber(),null!=a&&(b+=":"+a,(a=this.getColumnNumber())&&(b+=":"+a)));a="";var c=this.getFunctionName(),d=!0,e=this.isConstructor();if(this.isToplevel()||e)e?a+="new "+(c||""):c?a+=c:(a+=b,d=!1);else{var e=this.getTypeName(),f=this.getMethodName();c?(e&&0!=c.indexOf(e)&&(a+=e+"."),a+=c,f&&c.indexOf("."+ -f)!=c.length-f.length-1&&(a+=" [as "+f+"]")):a+=e+"."+(f||"")}d&&(a+=" ("+b+")");return a}function c(b){var c={};Object.getOwnPropertyNames(Object.getPrototypeOf(b)).forEach(function(a){c[a]=/^(?:is|get)/.test(a)?function(){return b[a].call(b)}:b[a]});c.toString=a;return c}function d(a){var b=a.getFileName()||a.getScriptNameOrSourceURL();if(b){var d=a.getLineNumber(),e=a.getColumnNumber()-1;1!==d||l()||a.isEval()||(e-=62);var g=f({source:b,line:d,column:e});a=c(a);a.getFileName=function(){return g.source}; -a.getLineNumber=function(){return g.line};a.getColumnNumber=function(){return g.column+1};a.getScriptNameOrSourceURL=function(){return g.source};return a}var m=a.isEval()&&a.getEvalOrigin();m&&(m=k(m),a=c(a),a.getEvalOrigin=function(){return m});return a}function w(a,b){u&&(z={},D={});return a+b.map(function(a){return"\n at "+d(a)}).join("")}function x(a){var b=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(a.stack);if(b){a=b[1];var c=+b[2],b=+b[3],d=z[a];!d&&E.existsSync(a)&&(d=E.readFileSync(a,"utf8")); -if(d&&(d=d.split(/(?:\r\n|\r|\n)/)[c-1]))return a+":"+c+"\n"+d+"\n"+Array(b).join(" ")+"^"}return null}function A(){var a=e.emit;e.emit=function(b){if("uncaughtException"===b){var c=arguments[1]&&arguments[1].stack,d=0 -Make sure to run build.js. -This test should say either "Test failed" or "Test passed": -

      - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.coffee b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.coffee deleted file mode 100644 index 57210686..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.coffee +++ /dev/null @@ -1,12 +0,0 @@ -sourceMapSupport.install() - -foo = -> throw new Error 'foo' - -try - foo() -catch e - if /\bscript\.coffee\b/.test e.stack - document.body.appendChild document.createTextNode 'Test passed' - else - document.body.appendChild document.createTextNode 'Test failed' - console.log e.stack diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.js deleted file mode 100644 index e16d4141..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/browser-test/script.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var e, foo; - - sourceMapSupport.install(); - - foo = function() { - throw new Error('foo'); - }; - - try { - foo(); - } catch (_error) { - e = _error; - if (/\bscript\.coffee\b/.test(e.stack)) { - document.body.appendChild(document.createTextNode('Test passed')); - } else { - document.body.appendChild(document.createTextNode('Test failed')); - console.log(e.stack); - } - } - -}).call(this); - -//# sourceMappingURL=script.map diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/build.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/build.js deleted file mode 100755 index fdbf145f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/build.js +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node - -var fs = require('fs'); -var path = require('path'); -var querystring = require('querystring'); -var child_process = require('child_process'); - -var browserify = path.join('node_modules', '.bin', 'browserify'); -var coffee = path.join('node_modules', '.bin', 'coffee'); - -function run(command, callback) { - console.log(command); - child_process.exec(command, callback); -} - -// Use browserify to package up source-map-support.js -fs.writeFileSync('.temp.js', 'sourceMapSupport = require("./source-map-support");'); -run(browserify + ' .temp.js', function(error, stdout) { - if (error) throw error; - - // Wrap the code so it works both as a normal - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.coffee b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.coffee deleted file mode 100644 index 57210686..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.coffee +++ /dev/null @@ -1,12 +0,0 @@ -sourceMapSupport.install() - -foo = -> throw new Error 'foo' - -try - foo() -catch e - if /\bscript\.coffee\b/.test e.stack - document.body.appendChild document.createTextNode 'Test passed' - else - document.body.appendChild document.createTextNode 'Test failed' - console.log e.stack diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.js deleted file mode 100644 index 012db6b9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/script.js +++ /dev/null @@ -1,25 +0,0 @@ -// Generated by CoffeeScript 1.7.1 -(function() { - var e, foo; - - sourceMapSupport.install(); - - foo = function() { - throw new Error('foo'); - }; - - try { - foo(); - } catch (_error) { - e = _error; - if (/\bscript\.coffee\b/.test(e.stack)) { - document.body.appendChild(document.createTextNode('Test passed')); - } else { - document.body.appendChild(document.createTextNode('Test failed')); - console.log(e.stack); - } - } - -}).call(this); - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/server.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/server.js deleted file mode 100644 index ecc0cdfa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/header-test/server.js +++ /dev/null @@ -1,45 +0,0 @@ -var fs = require('fs'); -var http = require('http'); - -http.createServer(function(req, res) { - switch (req.url) { - case '/': - case '/index.html': { - res.writeHead(200, { 'Content-Type': 'text/html' }); - res.end(fs.readFileSync('index.html', 'utf8')); - break; - } - - case '/browser-source-map-support.js': { - res.writeHead(200, { 'Content-Type': 'text/javascript' }); - res.end(fs.readFileSync('../browser-source-map-support.js', 'utf8')); - break; - } - - case '/script.js': { - res.writeHead(200, { 'Content-Type': 'text/javascript', 'SourceMap': 'script-source-map.map' }); - res.end(fs.readFileSync('script.js', 'utf8')); - break; - } - - case '/script-source-map.map': { - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(fs.readFileSync('script.map', 'utf8')); - break; - } - - case '/header-test/script.coffee': { - res.writeHead(200, { 'Content-Type': 'text/x-coffeescript' }); - res.end(fs.readFileSync('script.coffee', 'utf8')); - break; - } - - default: { - res.writeHead(404, { 'Content-Type': 'text/html' }); - res.end('404 not found'); - break; - } - } -}).listen(1337, '127.0.0.1'); - -console.log('Server running at http://127.0.0.1:1337/'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/package.json deleted file mode 100644 index e4a2c85e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_args": [ - [ - "source-map-support@^0.3.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/vscode" - ] - ], - "_from": "source-map-support@>=0.3.2 <0.4.0", - "_id": "source-map-support@0.3.3", - "_inCache": true, - "_installable": true, - "_location": "/source-map-support", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "julien.fontanet@isonoe.net", - "name": "julien-f" - }, - "_npmVersion": "3.3.8", - "_phantomChildren": { - "amdefine": "1.0.0" - }, - "_requested": { - "name": "source-map-support", - "raw": "source-map-support@^0.3.2", - "rawSpec": "^0.3.2", - "scope": null, - "spec": ">=0.3.2 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/vscode" - ], - "_resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz", - "_shasum": "34900977d5ba3f07c7757ee72e73bb1a9b53754f", - "_shrinkwrap": null, - "_spec": "source-map-support@^0.3.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vscode", - "bugs": { - "url": "https://github.com/evanw/node-source-map-support/issues" - }, - "dependencies": { - "source-map": "0.1.32" - }, - "description": "Fixes stack traces for files with source maps", - "devDependencies": { - "browserify": "3.44.2", - "coffee-script": "1.7.1", - "http-server": "^0.8.5", - "mocha": "1.18.2" - }, - "directories": {}, - "dist": { - "shasum": "34900977d5ba3f07c7757ee72e73bb1a9b53754f", - "tarball": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.3.3.tgz" - }, - "gitHead": "793a35a2eb78dff24649fc2439c7c5fa23e2bc0a", - "homepage": "https://github.com/evanw/node-source-map-support#readme", - "license": "MIT", - "main": "./source-map-support.js", - "maintainers": [ - { - "email": "evan.exe@gmail.com", - "name": "evanw" - }, - { - "email": "julien.fontanet@isonoe.net", - "name": "julien-f" - }, - { - "email": "linus@folkdatorn.se", - "name": "linusu" - } - ], - "name": "source-map-support", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/evanw/node-source-map-support.git" - }, - "scripts": { - "build": "node build.js", - "serve-tests": "http-server -p 1336", - "test": "mocha" - }, - "version": "0.3.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/register.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/register.js deleted file mode 100644 index 4f68e67d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/register.js +++ /dev/null @@ -1 +0,0 @@ -require('./').install(); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/source-map-support.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/source-map-support.js deleted file mode 100644 index 9668f790..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/source-map-support.js +++ /dev/null @@ -1,444 +0,0 @@ -var SourceMapConsumer = require('source-map').SourceMapConsumer; -var path = require('path'); -var fs = require('fs'); - -// Only install once if called multiple times -var alreadyInstalled = false; - -// If true, the caches are reset before a stack trace formatting operation -var emptyCacheBetweenOperations = false; - -// Supports {browser, node, auto} -var environment = "auto"; - -// Maps a file path to a string containing the file contents -var fileContentsCache = {}; - -// Maps a file path to a source map for that file -var sourceMapCache = {}; - -// Regex for detecting source maps -var reSourceMap = /^data:application\/json[^,]+base64,/; - -function isInBrowser() { - if (environment === "browser") - return true; - if (environment === "node") - return false; - return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function')); -} - -function hasGlobalProcessEventEmitter() { - return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function')); -} - -function retrieveFile(path) { - // Trim the path to make sure there is no extra whitespace. - path = path.trim(); - if (path in fileContentsCache) { - return fileContentsCache[path]; - } - - try { - // Use SJAX if we are in the browser - if (isInBrowser()) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', path, false); - xhr.send(null); - var contents = null - if (xhr.readyState === 4 && xhr.status === 200) { - contents = xhr.responseText - } - } - - // Otherwise, use the filesystem - else { - var contents = fs.readFileSync(path, 'utf8'); - } - } catch (e) { - var contents = null; - } - - return fileContentsCache[path] = contents; -} - -// Support URLs relative to a directory, but be careful about a protocol prefix -// in case we are in the browser (i.e. directories may start with "http://") -function supportRelativeURL(file, url) { - if (!file) return url; - var dir = path.dirname(file); - var match = /^\w+:\/\/[^\/]*/.exec(dir); - var protocol = match ? match[0] : ''; - return protocol + path.resolve(dir.slice(protocol.length), url); -} - -function retrieveSourceMapURL(source) { - var fileData; - - if (isInBrowser()) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', source, false); - xhr.send(null); - fileData = xhr.readyState === 4 ? xhr.responseText : null; - - // Support providing a sourceMappingURL via the SourceMap header - var sourceMapHeader = xhr.getResponseHeader("SourceMap") || - xhr.getResponseHeader("X-SourceMap"); - if (sourceMapHeader) { - return sourceMapHeader; - } - } - - // Get the URL of the source map - fileData = retrieveFile(source); - // //# sourceMappingURL=foo.js.map /*# sourceMappingURL=foo.js.map */ - var re = /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/)[ \t]*$)/mg; - // Keep executing the search to find the *last* sourceMappingURL to avoid - // picking up sourceMappingURLs from comments, strings, etc. - var lastMatch, match; - while (match = re.exec(fileData)) lastMatch = match; - if (!lastMatch) return null; - return lastMatch[1]; -}; - -// Can be overridden by the retrieveSourceMap option to install. Takes a -// generated source filename; returns a {map, optional url} object, or null if -// there is no source map. The map field may be either a string or the parsed -// JSON object (ie, it must be a valid argument to the SourceMapConsumer -// constructor). -function retrieveSourceMap(source) { - var sourceMappingURL = retrieveSourceMapURL(source); - if (!sourceMappingURL) return null; - - // Read the contents of the source map - var sourceMapData; - if (reSourceMap.test(sourceMappingURL)) { - // Support source map URL as a data url - var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1); - sourceMapData = new Buffer(rawData, "base64").toString(); - sourceMappingURL = null; - } else { - // Support source map URLs relative to the source URL - sourceMappingURL = supportRelativeURL(source, sourceMappingURL); - sourceMapData = retrieveFile(sourceMappingURL); - } - - if (!sourceMapData) { - return null; - } - - return { - url: sourceMappingURL, - map: sourceMapData - }; -} - -function mapSourcePosition(position) { - var sourceMap = sourceMapCache[position.source]; - if (!sourceMap) { - // Call the (overrideable) retrieveSourceMap function to get the source map. - var urlAndMap = retrieveSourceMap(position.source); - if (urlAndMap) { - sourceMap = sourceMapCache[position.source] = { - url: urlAndMap.url, - map: new SourceMapConsumer(urlAndMap.map) - }; - - // Load all sources stored inline with the source map into the file cache - // to pretend like they are already loaded. They may not exist on disk. - if (sourceMap.map.sourcesContent) { - sourceMap.map.sources.forEach(function(source, i) { - var contents = sourceMap.map.sourcesContent[i]; - if (contents) { - var url = supportRelativeURL(sourceMap.url, source); - fileContentsCache[url] = contents; - } - }); - } - } else { - sourceMap = sourceMapCache[position.source] = { - url: null, - map: null - }; - } - } - - // Resolve the source URL relative to the URL of the source map - if (sourceMap && sourceMap.map) { - var originalPosition = sourceMap.map.originalPositionFor(position); - - // Only return the original position if a matching line was found. If no - // matching line is found then we return position instead, which will cause - // the stack trace to print the path and line for the compiled file. It is - // better to give a precise location in the compiled file than a vague - // location in the original file. - if (originalPosition.source !== null) { - originalPosition.source = supportRelativeURL( - sourceMap.url, originalPosition.source); - return originalPosition; - } - } - - return position; -} - -// Parses code generated by FormatEvalOrigin(), a function inside V8: -// https://code.google.com/p/v8/source/browse/trunk/src/messages.js -function mapEvalOrigin(origin) { - // Most eval() calls are in this format - var match = /^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(origin); - if (match) { - var position = mapSourcePosition({ - source: match[2], - line: match[3], - column: match[4] - 1 - }); - return 'eval at ' + match[1] + ' (' + position.source + ':' + - position.line + ':' + (position.column + 1) + ')'; - } - - // Parse nested eval() calls using recursion - match = /^eval at ([^(]+) \((.+)\)$/.exec(origin); - if (match) { - return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')'; - } - - // Make sure we still return useful information if we didn't find anything - return origin; -} - -// This is copied almost verbatim from the V8 source code at -// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The -// implementation of wrapCallSite() used to just forward to the actual source -// code of CallSite.prototype.toString but unfortunately a new release of V8 -// did something to the prototype chain and broke the shim. The only fix I -// could find was copy/paste. -function CallSiteToString() { - var fileName; - var fileLocation = ""; - if (this.isNative()) { - fileLocation = "native"; - } else { - fileName = this.getScriptNameOrSourceURL(); - if (!fileName && this.isEval()) { - fileLocation = this.getEvalOrigin(); - fileLocation += ", "; // Expecting source position to follow. - } - - if (fileName) { - fileLocation += fileName; - } else { - // Source code does not originate from a file and is not native, but we - // can still get the source position inside the source string, e.g. in - // an eval string. - fileLocation += ""; - } - var lineNumber = this.getLineNumber(); - if (lineNumber != null) { - fileLocation += ":" + lineNumber; - var columnNumber = this.getColumnNumber(); - if (columnNumber) { - fileLocation += ":" + columnNumber; - } - } - } - - var line = ""; - var functionName = this.getFunctionName(); - var addSuffix = true; - var isConstructor = this.isConstructor(); - var isMethodCall = !(this.isToplevel() || isConstructor); - if (isMethodCall) { - var typeName = this.getTypeName(); - var methodName = this.getMethodName(); - if (functionName) { - if (typeName && functionName.indexOf(typeName) != 0) { - line += typeName + "."; - } - line += functionName; - if (methodName && functionName.indexOf("." + methodName) != functionName.length - methodName.length - 1) { - line += " [as " + methodName + "]"; - } - } else { - line += typeName + "." + (methodName || ""); - } - } else if (isConstructor) { - line += "new " + (functionName || ""); - } else if (functionName) { - line += functionName; - } else { - line += fileLocation; - addSuffix = false; - } - if (addSuffix) { - line += " (" + fileLocation + ")"; - } - return line; -} - -function cloneCallSite(frame) { - var object = {}; - Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) { - object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name]; - }); - object.toString = CallSiteToString; - return object; -} - -function wrapCallSite(frame) { - // Most call sites will return the source file from getFileName(), but code - // passed to eval() ending in "//# sourceURL=..." will return the source file - // from getScriptNameOrSourceURL() instead - var source = frame.getFileName() || frame.getScriptNameOrSourceURL(); - if (source) { - var line = frame.getLineNumber(); - var column = frame.getColumnNumber() - 1; - - // Fix position in Node where some (internal) code is prepended. - // See https://github.com/evanw/node-source-map-support/issues/36 - if (line === 1 && !isInBrowser() && !frame.isEval()) { - column -= 62; - } - - var position = mapSourcePosition({ - source: source, - line: line, - column: column - }); - frame = cloneCallSite(frame); - frame.getFileName = function() { return position.source; }; - frame.getLineNumber = function() { return position.line; }; - frame.getColumnNumber = function() { return position.column + 1; }; - frame.getScriptNameOrSourceURL = function() { return position.source; }; - return frame; - } - - // Code called using eval() needs special handling - var origin = frame.isEval() && frame.getEvalOrigin(); - if (origin) { - origin = mapEvalOrigin(origin); - frame = cloneCallSite(frame); - frame.getEvalOrigin = function() { return origin; }; - return frame; - } - - // If we get here then we were unable to change the source position - return frame; -} - -// This function is part of the V8 stack trace API, for more info see: -// http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi -function prepareStackTrace(error, stack) { - if (emptyCacheBetweenOperations) { - fileContentsCache = {}; - sourceMapCache = {}; - } - - return error + stack.map(function(frame) { - return '\n at ' + wrapCallSite(frame); - }).join(''); -} - -// Generate position and snippet of original source with pointer -function getErrorSource(error) { - var match = /\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(error.stack); - if (match) { - var source = match[1]; - var line = +match[2]; - var column = +match[3]; - - // Support the inline sourceContents inside the source map - var contents = fileContentsCache[source]; - - // Support files on disk - if (!contents && fs.existsSync(source)) { - contents = fs.readFileSync(source, 'utf8'); - } - - // Format the line from the original source code like node does - if (contents) { - var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1]; - if (code) { - return source + ':' + line + '\n' + code + '\n' + - new Array(column).join(' ') + '^'; - } - } - } - return null; -} - -function printErrorAndExit (error) { - var source = getErrorSource(error); - - if (source) { - console.error(); - console.error(source); - } - - console.error(error.stack); - process.exit(1); -} - -function shimEmitUncaughtException () { - var origEmit = process.emit; - - process.emit = function (type) { - if (type === 'uncaughtException') { - var hasStack = (arguments[1] && arguments[1].stack); - var hasListeners = (this.listeners(type).length > 0); - - if (hasStack && !hasListeners) { - return printErrorAndExit(arguments[1]); - } - } - - return origEmit.apply(this, arguments); - } -} - -exports.wrapCallSite = wrapCallSite; -exports.getErrorSource = getErrorSource; -exports.mapSourcePosition = mapSourcePosition; -exports.retrieveSourceMap = retrieveSourceMap; - -exports.install = function(options) { - if (!alreadyInstalled) { - alreadyInstalled = true; - Error.prepareStackTrace = prepareStackTrace; - - // Configure options - options = options || {}; - var installHandler = 'handleUncaughtExceptions' in options ? - options.handleUncaughtExceptions : true; - - emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ? - options.emptyCacheBetweenOperations : false; - - if (options.environment) { - environment = options.environment; - if (["node", "browser", "auto"].indexOf(environment) === -1) - throw new Error("environment " + environment + " was unknown. Available options are {auto, browser, node}") - } - - // Allow sources to be found by methods other than reading the files - // directly from disk. - if (options.retrieveFile) - retrieveFile = options.retrieveFile; - - // Allow source maps to be found by methods other than reading the files - // directly from disk. - if (options.retrieveSourceMap) - retrieveSourceMap = options.retrieveSourceMap; - - // Provide the option to not install the uncaught exception handler. This is - // to support other uncaught exception handlers (in test frameworks, for - // example). If this handler is not installed and there are no other uncaught - // exception handlers, uncaught exceptions will be caught by node's built-in - // exception handler and the process will still be terminated. However, the - // generated JavaScript code will be shown above the stack trace instead of - // the original source code. - if (installHandler && hasGlobalProcessEventEmitter()) { - shimEmitUncaughtException(); - } - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/test.js deleted file mode 100644 index 047f537b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map-support/test.js +++ /dev/null @@ -1,477 +0,0 @@ -require('./source-map-support').install({ - emptyCacheBetweenOperations: true // Needed to be able to test for failure -}); - -var SourceMapGenerator = require('source-map').SourceMapGenerator; -var child_process = require('child_process'); -var assert = require('assert'); -var fs = require('fs'); - -function compareLines(actual, expected) { - assert(actual.length >= expected.length, 'got ' + actual.length + ' lines but expected at least ' + expected.length + ' lines'); - for (var i = 0; i < expected.length; i++) { - // Some tests are regular expressions because the output format changed slightly between node v0.9.2 and v0.9.3 - if (expected[i] instanceof RegExp) { - assert(expected[i].test(actual[i]), JSON.stringify(actual[i]) + ' does not match ' + expected[i]); - } else { - assert.equal(actual[i], expected[i]); - } - } -} - -function createEmptySourceMap() { - return new SourceMapGenerator({ - file: '.generated.js', - sourceRoot: '.' - }); -} - -function createSourceMapWithGap() { - var sourceMap = createEmptySourceMap(); - sourceMap.addMapping({ - generated: { line: 100, column: 0 }, - original: { line: 100, column: 0 }, - source: '.original.js' - }); - return sourceMap; -} - -function createSingleLineSourceMap() { - var sourceMap = createEmptySourceMap(); - sourceMap.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: '.original.js' - }); - return sourceMap; -} - -function createMultiLineSourceMap() { - var sourceMap = createEmptySourceMap(); - for (var i = 1; i <= 100; i++) { - sourceMap.addMapping({ - generated: { line: i, column: 0 }, - original: { line: 1000 + i, column: 99 + i }, - source: 'line' + i + '.js' - }); - } - return sourceMap; -} - -function createMultiLineSourceMapWithSourcesContent() { - var sourceMap = createEmptySourceMap(); - var original = new Array(1001).join('\n'); - for (var i = 1; i <= 100; i++) { - sourceMap.addMapping({ - generated: { line: i, column: 0 }, - original: { line: 1000 + i, column: 4 }, - source: 'original.js' - }); - original += ' line ' + i + '\n'; - } - sourceMap.setSourceContent('original.js', original); - return sourceMap; -} - -function compareStackTrace(sourceMap, source, expected) { - // Check once with a separate source map - fs.writeFileSync('.generated.js.map', sourceMap); - fs.writeFileSync('.generated.js', 'exports.test = function() {' + - source.join('\n') + '};//@ sourceMappingURL=.generated.js.map'); - try { - delete require.cache[require.resolve('./.generated')]; - require('./.generated').test(); - } catch (e) { - compareLines(e.stack.split('\n'), expected); - } - fs.unlinkSync('.generated.js'); - fs.unlinkSync('.generated.js.map'); - - // Check again with an inline source map (in a data URL) - fs.writeFileSync('.generated.js', 'exports.test = function() {' + - source.join('\n') + '};//@ sourceMappingURL=data:application/json;base64,' + - new Buffer(sourceMap.toString()).toString('base64')); - try { - delete require.cache[require.resolve('./.generated')]; - require('./.generated').test(); - } catch (e) { - compareLines(e.stack.split('\n'), expected); - } - fs.unlinkSync('.generated.js'); -} - -function compareStdout(done, sourceMap, source, expected) { - fs.writeFileSync('.original.js', 'this is the original code'); - fs.writeFileSync('.generated.js.map', sourceMap); - fs.writeFileSync('.generated.js', source.join('\n') + - '//@ sourceMappingURL=.generated.js.map'); - child_process.exec('node ./.generated', function(error, stdout, stderr) { - try { - compareLines( - (stdout + stderr) - .trim() - .split('\n') - .filter(function (line) { return line !== '' }), // Empty lines are not relevant. - expected - ); - } catch (e) { - return done(e); - } - fs.unlinkSync('.generated.js'); - fs.unlinkSync('.generated.js.map'); - fs.unlinkSync('.original.js'); - done(); - }); -} - -it('normal throw', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'throw new Error("test");' - ], [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]); -}); - -it('throw inside function', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'function foo() {', - ' throw new Error("test");', - '}', - 'foo();' - ], [ - 'Error: test', - /^ at foo \(.*\/line2\.js:1002:102\)$/, - /^ at Object\.exports\.test \(.*\/line4\.js:1004:104\)$/ - ]); -}); - -it('throw inside function inside function', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'function foo() {', - ' function bar() {', - ' throw new Error("test");', - ' }', - ' bar();', - '}', - 'foo();' - ], [ - 'Error: test', - /^ at bar \(.*\/line3\.js:1003:103\)$/, - /^ at foo \(.*\/line5\.js:1005:105\)$/, - /^ at Object\.exports\.test \(.*\/line7\.js:1007:107\)$/ - ]); -}); - -it('eval', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'eval("throw new Error(\'test\')");' - ], [ - 'Error: test', - - // Before Node 4, `Object.eval`, after just `eval`. - /^ at (?:Object\.)?eval \(eval at \(.*\/line1\.js:1001:101\)/, - - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]); -}); - -it('eval inside eval', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'eval("eval(\'throw new Error(\\"test\\")\')");' - ], [ - 'Error: test', - /^ at (?:Object\.)?eval \(eval at \(eval at \(.*\/line1\.js:1001:101\)/, - /^ at (?:Object\.)?eval \(eval at \(.*\/line1\.js:1001:101\)/, - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]); -}); - -it('eval inside function', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'function foo() {', - ' eval("throw new Error(\'test\')");', - '}', - 'foo();' - ], [ - 'Error: test', - /^ at eval \(eval at foo \(.*\/line2\.js:1002:102\)/, - /^ at foo \(.*\/line2\.js:1002:102\)/, - /^ at Object\.exports\.test \(.*\/line4\.js:1004:104\)$/ - ]); -}); - -it('eval with sourceURL', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'eval("throw new Error(\'test\')//@ sourceURL=sourceURL.js");' - ], [ - 'Error: test', - /^ at (?:Object\.)?eval \(sourceURL\.js:1:7\)$/, - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]); -}); - -it('eval with sourceURL inside eval', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'eval("eval(\'throw new Error(\\"test\\")//@ sourceURL=sourceURL.js\')");' - ], [ - 'Error: test', - /^ at (?:Object\.)?eval \(sourceURL\.js:1:7\)$/, - /^ at (?:Object\.)?eval \(eval at \(.*\/line1\.js:1001:101\)/, - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]); -}); - -it('function constructor', function() { - compareStackTrace(createMultiLineSourceMap(), [ - 'throw new Function(")");' - ], [ - 'SyntaxError: Unexpected token )', - /^ at (?:Object\.)?Function \((?:unknown source||native)\)$/, - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/, - ]); -}); - -it('throw with empty source map', function() { - compareStackTrace(createEmptySourceMap(), [ - 'throw new Error("test");' - ], [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/.generated.js:1:34\)$/ - ]); -}); - -it('throw with source map with gap', function() { - compareStackTrace(createSourceMapWithGap(), [ - 'throw new Error("test");' - ], [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/.generated.js:1:34\)$/ - ]); -}); - -it('sourcesContent with data URL', function() { - compareStackTrace(createMultiLineSourceMapWithSourcesContent(), [ - 'throw new Error("test");' - ], [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/original.js:1001:5\)$/ - ]); -}); - -it('finds the last sourceMappingURL', function() { - compareStackTrace(createMultiLineSourceMapWithSourcesContent(), [ - '//# sourceMappingURL=missing.map.js', // NB: compareStackTrace adds another source mapping. - 'throw new Error("test");' - ], [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/original.js:1002:5\)$/ - ]); -}); - -it('default options', function(done) { - compareStdout(done, createSingleLineSourceMap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install();', - 'process.nextTick(foo);', - 'process.nextTick(function() { process.exit(1); });' - ], [ - /\/.original\.js:1$/, - 'this is the original code', - '^', - 'Error: this is the error', - /^ at foo \(.*\/.original\.js:1:1\)$/ - ]); -}); - -it('handleUncaughtExceptions is true', function(done) { - compareStdout(done, createSingleLineSourceMap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install({ handleUncaughtExceptions: true });', - 'process.nextTick(foo);' - ], [ - /\/.original\.js:1$/, - 'this is the original code', - '^', - 'Error: this is the error', - /^ at foo \(.*\/.original\.js:1:1\)$/ - ]); -}); - -it('handleUncaughtExceptions is false', function(done) { - compareStdout(done, createSingleLineSourceMap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install({ handleUncaughtExceptions: false });', - 'process.nextTick(foo);' - ], [ - /\/.generated.js:2$/, - 'function foo() { throw new Error("this is the error"); }', - - // Before Node 4, the arrow points on the `new`, after on the - // `throw`. - /^ (?: )?\^$/, - - 'Error: this is the error', - /^ at foo \(.*\/.original\.js:1:1\)$/ - ]); -}); - -it('default options with empty source map', function(done) { - compareStdout(done, createEmptySourceMap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install();', - 'process.nextTick(foo);' - ], [ - /\/.generated.js:2$/, - 'function foo() { throw new Error("this is the error"); }', - /^ (?: )?\^$/, - 'Error: this is the error', - /^ at foo \(.*\/.generated.js:2:24\)$/ - ]); -}); - -it('default options with source map with gap', function(done) { - compareStdout(done, createSourceMapWithGap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install();', - 'process.nextTick(foo);' - ], [ - /\/.generated.js:2$/, - 'function foo() { throw new Error("this is the error"); }', - /^ (?: )?\^$/, - 'Error: this is the error', - /^ at foo \(.*\/.generated.js:2:24\)$/ - ]); -}); - -it('specifically requested error source', function(done) { - compareStdout(done, createSingleLineSourceMap(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'var sms = require("./source-map-support");', - 'sms.install({ handleUncaughtExceptions: false });', - 'process.on("uncaughtException", function (e) { console.log("SRC:" + sms.getErrorSource(e)); });', - 'process.nextTick(foo);' - ], [ - /^SRC:.*\/.original.js:1$/, - 'this is the original code', - '^' - ]); -}); - -it('sourcesContent', function(done) { - compareStdout(done, createMultiLineSourceMapWithSourcesContent(), [ - '', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install();', - 'process.nextTick(foo);', - 'process.nextTick(function() { process.exit(1); });' - ], [ - /\/original\.js:1002$/, - ' line 2', - ' ^', - 'Error: this is the error', - /^ at foo \(.*\/original\.js:1002:5\)$/ - ]); -}); - -it('missing source maps should also be cached', function(done) { - compareStdout(done, createSingleLineSourceMap(), [ - '', - 'var count = 0;', - 'function foo() {', - ' console.log(new Error("this is the error").stack.split("\\n").slice(0, 2).join("\\n"));', - '}', - 'require("./source-map-support").install({', - ' retrieveSourceMap: function(name) {', - ' if (/\\.generated.js$/.test(name)) count++;', - ' return null;', - ' }', - '});', - 'process.nextTick(foo);', - 'process.nextTick(foo);', - 'process.nextTick(function() { console.log(count); });', - ], [ - 'Error: this is the error', - /^ at foo \(.*\/.generated.js:4:15\)$/, - 'Error: this is the error', - /^ at foo \(.*\/.generated.js:4:15\)$/, - '1', // The retrieval should only be attempted once - ]); -}); - -/* The following test duplicates some of the code in - * `compareStackTrace` but appends a charset to the - * source mapping url. - */ -it('finds source maps with charset specified', function() { - var sourceMap = createMultiLineSourceMap() - var source = [ 'throw new Error("test");' ]; - var expected = [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]; - - fs.writeFileSync('.generated.js', 'exports.test = function() {' + - source.join('\n') + '};//@ sourceMappingURL=data:application/json;charset=utf8;base64,' + - new Buffer(sourceMap.toString()).toString('base64')); - try { - delete require.cache[require.resolve('./.generated')]; - require('./.generated').test(); - } catch (e) { - compareLines(e.stack.split('\n'), expected); - } - fs.unlinkSync('.generated.js'); -}); - -/* The following test duplicates some of the code in - * `compareStackTrace` but appends some code and a - * comment to the source mapping url. - */ -it('allows code/comments after sourceMappingURL', function() { - var sourceMap = createMultiLineSourceMap() - var source = [ 'throw new Error("test");' ]; - var expected = [ - 'Error: test', - /^ at Object\.exports\.test \(.*\/line1\.js:1001:101\)$/ - ]; - - fs.writeFileSync('.generated.js', 'exports.test = function() {' + - source.join('\n') + '};//# sourceMappingURL=data:application/json;base64,' + - new Buffer(sourceMap.toString()).toString('base64') + - '\n// Some comment below the sourceMappingURL\nvar foo = 0;'); - try { - delete require.cache[require.resolve('./.generated')]; - require('./.generated').test(); - } catch (e) { - compareLines(e.stack.split('\n'), expected); - } - fs.unlinkSync('.generated.js'); -}); - -it('handleUncaughtExceptions is true with existing listener', function(done) { - var source = [ - 'process.on("uncaughtException", function() { /* Silent */ });', - 'function foo() { throw new Error("this is the error"); }', - 'require("./source-map-support").install();', - 'process.nextTick(foo);', - '//@ sourceMappingURL=.generated.js.map' - ]; - - fs.writeFileSync('.original.js', 'this is the original code'); - fs.writeFileSync('.generated.js.map', createSingleLineSourceMap()); - fs.writeFileSync('.generated.js', source.join('\n')); - - child_process.exec('node ./.generated', function(error, stdout, stderr) { - fs.unlinkSync('.generated.js'); - fs.unlinkSync('.generated.js.map'); - fs.unlinkSync('.original.js'); - assert.equal((stdout + stderr).trim(), ''); - done(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.npmignore deleted file mode 100644 index 3dddf3f6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -node_modules/* diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.travis.yml deleted file mode 100644 index ddc9c4f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 3796e07a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,121 +0,0 @@ -# Change Log - -## 0.1.32 - -* Fixed a bug where SourceMapConsumer couldn't handle negative relative columns - (issue 92). - -* Fixed test runner to actually report number of failed tests as its process - exit code. - -* Fixed a typo when reporting bad mappings (issue 87). - -## 0.1.31 - -* Delay parsing the mappings in SourceMapConsumer until queried for a source - location. - -* Support Sass source maps (which at the time of writing deviate from the spec - in small ways) in SourceMapConsumer. - -## 0.1.30 - -* Do not join source root with a source, when the source is a data URI. - -* Extend the test runner to allow running single specific test files at a time. - -* Performance improvements in `SourceNode.prototype.walk` and - `SourceMapConsumer.prototype.eachMapping`. - -* Source map browser builds will now work inside Workers. - -* Better error messages when attempting to add an invalid mapping to a - `SourceMapGenerator`. - -## 0.1.29 - -* Allow duplicate entries in the `names` and `sources` arrays of source maps - (usually from TypeScript) we are parsing. Fixes github isse 72. - -## 0.1.28 - -* Skip duplicate mappings when creating source maps from SourceNode; github - issue 75. - -## 0.1.27 - -* Don't throw an error when the `file` property is missing in SourceMapConsumer, - we don't use it anyway. - -## 0.1.26 - -* Fix SourceNode.fromStringWithSourceMap for empty maps. Fixes github issue 70. - -## 0.1.25 - -* Make compatible with browserify - -## 0.1.24 - -* Fix issue with absolute paths and `file://` URIs. See - https://bugzilla.mozilla.org/show_bug.cgi?id=885597 - -## 0.1.23 - -* Fix issue with absolute paths and sourcesContent, github issue 64. - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/Makefile.dryice.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/Makefile.dryice.js deleted file mode 100644 index d6fc26a7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/Makefile.dryice.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var path = require('path'); -var fs = require('fs'); -var copy = require('dryice').copy; - -function removeAmdefine(src) { - src = String(src).replace( - /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module,\s*require\);\s*}\s*/g, - ''); - src = src.replace( - /\b(define\(.*)('amdefine',?)/gm, - '$1'); - return src; -} -removeAmdefine.onRead = true; - -function makeNonRelative(src) { - return src - .replace(/require\('.\//g, 'require(\'source-map/') - .replace(/\.\.\/\.\.\/lib\//g, ''); -} -makeNonRelative.onRead = true; - -function buildBrowser() { - console.log('\nCreating dist/source-map.js'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/mini-require.js', - { - project: project, - require: [ 'source-map/source-map-generator', - 'source-map/source-map-consumer', - 'source-map/source-node'] - }, - 'build/suffix-browser.js' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine - ], - dest: 'dist/source-map.js' - }); -} - -function buildBrowserMin() { - console.log('\nCreating dist/source-map.min.js'); - - copy({ - source: 'dist/source-map.js', - filter: copy.filter.uglifyjs, - dest: 'dist/source-map.min.js' - }); -} - -function buildFirefox() { - console.log('\nCreating dist/SourceMap.jsm'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-source-map.jsm', - { - project: project, - require: [ 'source-map/source-map-consumer', - 'source-map/source-map-generator', - 'source-map/source-node' ] - }, - 'build/suffix-source-map.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/SourceMap.jsm' - }); - - // Create dist/test/Utils.jsm - console.log('\nCreating dist/test/Utils.jsm'); - - project = copy.createCommonJsProject({ - roots: [ __dirname, path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-utils.jsm', - 'build/assert-shim.js', - { - project: project, - require: [ 'test/source-map/util' ] - }, - 'build/suffix-utils.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/test/Utils.jsm' - }); - - function isTestFile(f) { - return /^test\-.*?\.js/.test(f); - } - - var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); - - testFiles.forEach(function (testFile) { - console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); - - copy({ - source: [ - 'build/test-prefix.js', - path.join('test', 'source-map', testFile), - 'build/test-suffix.js' - ], - filter: [ - removeAmdefine, - makeNonRelative, - function (input, source) { - return input.replace('define(', - 'define("' - + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) - + '", ["require", "exports", "module"], '); - }, - function (input, source) { - return input.replace('{THIS_MODULE}', function () { - return "test/source-map/" + testFile.replace(/\.js$/, ''); - }); - } - ], - dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) - }); - }); -} - -function ensureDir(name) { - var dirExists = false; - try { - dirExists = fs.statSync(name).isDirectory(); - } catch (err) {} - - if (!dirExists) { - fs.mkdirSync(name, 0777); - } -} - -ensureDir("dist"); -ensureDir("dist/test"); -buildFirefox(); -buildBrowser(); -buildBrowserMin(); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/README.md deleted file mode 100644 index c20437bc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/README.md +++ /dev/null @@ -1,434 +0,0 @@ -# Source Map - -This is a library to generate and consume the source map format -[described here][format]. - -This library is written in the Asynchronous Module Definition format, and works -in the following environments: - -* Modern Browsers supporting ECMAScript 5 (either after the build, or with an - AMD loader such as RequireJS) - -* Inside Firefox (as a JSM file, after the build) - -* With NodeJS versions 0.8.X and higher - -## Node - - $ npm install source-map - -## Building from Source (for everywhere else) - -Install Node and then run - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -Next, run - - $ node Makefile.dryice.js - -This should spew a bunch of stuff to stdout, and create the following files: - -* `dist/source-map.js` - The unminified browser version. - -* `dist/source-map.min.js` - The minified browser version. - -* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox source. - -## Examples - -### Consuming a source map - - var rawSourceMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: 'http://example.com/www/js/', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - - var smc = new SourceMapConsumer(rawSourceMap); - - console.log(smc.sources); - // [ 'http://example.com/www/js/one.js', - // 'http://example.com/www/js/two.js' ] - - console.log(smc.originalPositionFor({ - line: 2, - column: 28 - })); - // { source: 'http://example.com/www/js/two.js', - // line: 2, - // column: 10, - // name: 'n' } - - console.log(smc.generatedPositionFor({ - source: 'http://example.com/www/js/two.js', - line: 2, - column: 10 - })); - // { line: 2, column: 28 } - - smc.eachMapping(function (m) { - // ... - }); - -### Generating a source map - -In depth guide: -[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/) - -#### With SourceNode (high level API) - - function compile(ast) { - switch (ast.type) { - case 'BinaryExpression': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - [compile(ast.left), " + ", compile(ast.right)] - ); - case 'Literal': - return new SourceNode( - ast.location.line, - ast.location.column, - ast.location.source, - String(ast.value) - ); - // ... - default: - throw new Error("Bad AST"); - } - } - - var ast = parse("40 + 2", "add.js"); - console.log(compile(ast).toStringWithSourceMap({ - file: 'add.js' - })); - // { code: '40 + 2', - // map: [object SourceMapGenerator] } - -#### With SourceMapGenerator (low level API) - - var map = new SourceMapGenerator({ - file: "source-mapped.js" - }); - - map.addMapping({ - generated: { - line: 10, - column: 35 - }, - source: "foo.js", - original: { - line: 33, - column: 2 - }, - name: "christopher" - }); - - console.log(map.toString()); - // '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}' - -## API - -Get a reference to the module: - - // NodeJS - var sourceMap = require('source-map'); - - // Browser builds - var sourceMap = window.sourceMap; - - // Inside Firefox - let sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referrenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: The generated filename this source map is associated with. - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -#### SourceMapConsumer.prototype.sourceContentFor(source) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. Mappings have the - form `{ source, generatedLine, generatedColumn, originalLine, originalColumn, - name }` - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator(startOfSourceMap) - -To create a new one, you must pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: An optional root for all relative URLs in this source map. - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new SourceMapGenerator based on a SourceMapConsumer - -* `sourceMapConsumer` The SourceMap. - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimium of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used. - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode(line, column, source[, chunk[, name]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. - -* `source`: The original source's filename. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming whitespace from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -### SourceNode.prototype.toStringWithSourceMap(startOfSourceMap) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -## Tests - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. - -To add new tests, create a new file named `test/test-.js` -and export your test functions with names that start with "test", for example - - exports["test doing the foo bar"] = function (assert, util) { - ... - }; - -The new test will be located automatically when you run the suite. - -The `util` argument is the test utility module located at `test/source-map/util`. - -The `assert` argument is a cut down version of node's assert module. You have -access to the following assertion functions: - -* `doesNotThrow` - -* `equal` - -* `ok` - -* `strictEqual` - -* `throws` - -(The reason for the restricted set of test functions is because we need the -tests to run inside Firefox's test suite as well and so the assert module is -shimmed in that environment. See `build/assert-shim.js`.) - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit -[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap -[Dryice]: https://github.com/mozilla/dryice diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/assert-shim.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/assert-shim.js deleted file mode 100644 index daa1a623..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/assert-shim.js +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -define('test/source-map/assert', ['exports'], function (exports) { - - let do_throw = function (msg) { - throw new Error(msg); - }; - - exports.init = function (throw_fn) { - do_throw = throw_fn; - }; - - exports.doesNotThrow = function (fn) { - try { - fn(); - } - catch (e) { - do_throw(e.message); - } - }; - - exports.equal = function (actual, expected, msg) { - msg = msg || String(actual) + ' != ' + String(expected); - if (actual != expected) { - do_throw(msg); - } - }; - - exports.ok = function (val, msg) { - msg = msg || String(val) + ' is falsey'; - if (!Boolean(val)) { - do_throw(msg); - } - }; - - exports.strictEqual = function (actual, expected, msg) { - msg = msg || String(actual) + ' !== ' + String(expected); - if (actual !== expected) { - do_throw(msg); - } - }; - - exports.throws = function (fn) { - try { - fn(); - do_throw('Expected an error to be thrown, but it wasn\'t.'); - } - catch (e) { - } - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/mini-require.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/mini-require.js deleted file mode 100644 index 0daf4537..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/mini-require.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * Define a module along with a payload. - * @param {string} moduleName Name for the payload - * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec - * @param {function} payload Function with (require, exports, module) params - */ -function define(moduleName, deps, payload) { - if (typeof moduleName != "string") { - throw new TypeError('Expected string, got: ' + moduleName); - } - - if (arguments.length == 2) { - payload = deps; - } - - if (moduleName in define.modules) { - throw new Error("Module already defined: " + moduleName); - } - define.modules[moduleName] = payload; -}; - -/** - * The global store of un-instantiated modules - */ -define.modules = {}; - - -/** - * We invoke require() in the context of a Domain so we can have multiple - * sets of modules running separate from each other. - * This contrasts with JSMs which are singletons, Domains allows us to - * optionally load a CommonJS module twice with separate data each time. - * Perhaps you want 2 command lines with a different set of commands in each, - * for example. - */ -function Domain() { - this.modules = {}; - this._currentModule = null; -} - -(function () { - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * There are 2 ways to call this, either with an array of dependencies and a - * callback to call when the dependencies are found (which can happen - * asynchronously in an in-page context) or with a single string an no callback - * where the dependency is resolved synchronously and returned. - * The API is designed to be compatible with the CommonJS AMD spec and - * RequireJS. - * @param {string[]|string} deps A name, or names for the payload - * @param {function|undefined} callback Function to call when the dependencies - * are resolved - * @return {undefined|object} The module required or undefined for - * array/callback method - */ - Domain.prototype.require = function(deps, callback) { - if (Array.isArray(deps)) { - var params = deps.map(function(dep) { - return this.lookup(dep); - }, this); - if (callback) { - callback.apply(null, params); - } - return undefined; - } - else { - return this.lookup(deps); - } - }; - - function normalize(path) { - var bits = path.split('/'); - var i = 1; - while (i < bits.length) { - if (bits[i] === '..') { - bits.splice(i-1, 1); - } else if (bits[i] === '.') { - bits.splice(i, 1); - } else { - i++; - } - } - return bits.join('/'); - } - - function join(a, b) { - a = a.trim(); - b = b.trim(); - if (/^\//.test(b)) { - return b; - } else { - return a.replace(/\/*$/, '/') + b; - } - } - - function dirname(path) { - var bits = path.split('/'); - bits.pop(); - return bits.join('/'); - } - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * @param {string} moduleName A name for the payload to lookup - * @return {object} The module specified by aModuleName or null if not found. - */ - Domain.prototype.lookup = function(moduleName) { - if (/^\./.test(moduleName)) { - moduleName = normalize(join(dirname(this._currentModule), moduleName)); - } - - if (moduleName in this.modules) { - var module = this.modules[moduleName]; - return module; - } - - if (!(moduleName in define.modules)) { - throw new Error("Module not defined: " + moduleName); - } - - var module = define.modules[moduleName]; - - if (typeof module == "function") { - var exports = {}; - var previousModule = this._currentModule; - this._currentModule = moduleName; - module(this.require.bind(this), exports, { id: moduleName, uri: "" }); - this._currentModule = previousModule; - module = exports; - } - - // cache the resulting module object for next time - this.modules[moduleName] = module; - - return module; - }; - -}()); - -define.Domain = Domain; -define.globalDomain = new Domain(); -var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-source-map.jsm b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-source-map.jsm deleted file mode 100644 index ee2539d8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-source-map.jsm +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -/////////////////////////////////////////////////////////////////////////////// - - -this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-utils.jsm b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-utils.jsm deleted file mode 100644 index 80341d45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/prefix-utils.jsm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); -Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); - -this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-browser.js deleted file mode 100644 index fb29ff5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-browser.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.sourceMap = { - SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, - SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, - SourceNode: require('source-map/source-node').SourceNode -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-source-map.jsm b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-source-map.jsm deleted file mode 100644 index cf3c2d8d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-source-map.jsm +++ /dev/null @@ -1,6 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; -this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; -this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-utils.jsm b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-utils.jsm deleted file mode 100644 index b31b84cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/suffix-utils.jsm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -function runSourceMapTests(modName, do_throw) { - let mod = require(modName); - let assert = require('test/source-map/assert'); - let util = require('test/source-map/util'); - - assert.init(do_throw); - - for (let k in mod) { - if (/^test/.test(k)) { - mod[k](assert, util); - } - } - -} -this.runSourceMapTests = runSourceMapTests; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-prefix.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-prefix.js deleted file mode 100644 index 1b13f300..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-prefix.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://test/Utils.jsm'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-suffix.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-suffix.js deleted file mode 100644 index bec2de3f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/build/test-suffix.js +++ /dev/null @@ -1,3 +0,0 @@ -function run_test() { - runSourceMapTests('{THIS_MODULE}', do_throw); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map.js deleted file mode 100644 index 121ad241..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/array-set.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/array-set.js deleted file mode 100644 index 40f9a18b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/array-set.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var isDuplicate = this.has(aStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - this._set[util.toSetString(aStr)] = idx; - } - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - util.toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[util.toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64-vlq.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64-vlq.js deleted file mode 100644 index 1b67bb37..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64-vlq.js +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string. - */ - exports.decode = function base64VLQ_decode(aStr) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - return { - value: fromVLQSigned(result), - rest: aStr.slice(i) - }; - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64.js deleted file mode 100644 index 863cc465..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/base64.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/binary-search.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/binary-search.js deleted file mode 100644 index ff347c68..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/binary-search.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-consumer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-consumer.js deleted file mode 100644 index d7f10d8b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-consumer.js +++ /dev/null @@ -1,478 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names, true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; - } - - /** - * Create a SourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns SourceMapConsumer - */ - SourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(SourceMapConsumer.prototype); - - smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - smc.__generatedMappings = aSourceMap._mappings.slice() - .sort(util.compareByGeneratedPositions); - smc.__originalMappings = aSourceMap._mappings.slice() - .sort(util.compareByOriginalPositions); - - return smc; - }; - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - // `__generatedMappings` and `__originalMappings` are arrays that hold the - // parsed mapping coordinates from the source map's "mappings" attribute. They - // are lazily instantiated, accessed via the `_generatedMappings` and - // `_originalMappings` getters respectively, and we only parse the mappings - // and create these arrays once queried for a source location. We jump through - // these hoops because there can be many thousands of mappings, and parsing - // them is expensive, so we only want to do it if we must. - // - // Each object in the arrays is of the form: - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `_generatedMappings` is ordered by the generated positions. - // - // `_originalMappings` is ordered by the original positions. - - SourceMapConsumer.prototype.__generatedMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } - }); - - SourceMapConsumer.prototype.__originalMappings = null; - Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this.__generatedMappings = []; - this.__originalMappings = []; - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } - }); - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var mappingSeparator = /^[,;]/; - var str = aStr; - var mapping; - var temp; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - temp = base64VLQ.decode(str); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original source. - temp = base64VLQ.decode(str); - mapping.source = this._sources.at(previousSource + temp.value); - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - temp = base64VLQ.decode(str); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - temp = base64VLQ.decode(str); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original name. - temp = base64VLQ.decode(str); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this.__generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - this.__originalMappings.push(mapping); - } - } - } - - this.__generatedMappings.sort(util.compareByGeneratedPositions); - this.__originalMappings.sort(util.compareByOriginalPositions); - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositions); - - if (mapping) { - var source = util.getArg(mapping, 'source', null); - if (source && this.sourceRoot) { - source = util.join(this.sourceRoot, source); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * availible. - */ - SourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - throw new Error('"' + aSource + '" is not in the SourceMap.'); - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - if (this.sourceRoot) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions); - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source; - if (source && sourceRoot) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name - }; - }).forEach(aCallback, context); - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-generator.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-generator.js deleted file mode 100644 index 88b06ecb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-map-generator.js +++ /dev/null @@ -1,380 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. To create a new one, you must pass an object - * with the following properties: - * - * - file: The filename of the generated source. - * - sourceRoot: An optional root for all URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - this._file = util.getArg(aArgs, 'file'); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source) { - newMapping.source = mapping.source; - if (sourceRoot) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent !== null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = {}; - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) { - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (!aSourceFile) { - aSourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "aSourceFile" relative if an absolute Url is passed. - if (sourceRoot) { - aSourceFile = util.relative(sourceRoot, aSourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "aSourceFile" - this._mappings.forEach(function (mapping) { - if (mapping.source === aSourceFile && mapping.originalLine) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source !== null) { - // Copy mapping - if (sourceRoot) { - mapping.source = util.relative(sourceRoot, original.source); - } else { - mapping.source = original.source; - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name !== null && mapping.name !== null) { - // Only use the identifier name if it's an identifier - // in both SourceMaps - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - if (sourceRoot) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guaranteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(util.compareByGeneratedPositions); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) { - continue; - } - result += ','; - } - } - - result += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - result += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, - key) - ? this._sourcesContents[key] - : null; - }, this); - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - file: this._file, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._sourceRoot) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-node.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-node.js deleted file mode 100644 index 626cb657..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/source-node.js +++ /dev/null @@ -1,371 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - var util = require('./util'); - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine === undefined ? null : aLine; - this.column = aColumn === undefined ? null : aColumn; - this.source = aSource === undefined ? null : aSource; - this.name = aName === undefined ? null : aName; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // The generated code - // Processed fragments are removed from this array. - var remainingLines = aGeneratedCode.split('\n'); - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping === null) { - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(remainingLines.shift() + "\n"); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - } else { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - var code = ""; - // Associate full lines with "lastMapping" - do { - code += remainingLines.shift() + "\n"; - lastGeneratedLine++; - lastGeneratedColumn = 0; - } while (lastGeneratedLine < mapping.generatedLine); - // When we reached the correct line, we add code until we - // reach the correct column too. - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - code += nextLine.substr(0, mapping.generatedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - // Create the SourceNode. - addMappingWithCode(lastMapping, code); - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[0]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - } - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - // Associate the remaining code in the current line with "lastMapping" - // and add the remaining lines without any mapping - addMappingWithCode(lastMapping, remainingLines.join("\n")); - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - mapping.source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i] instanceof SourceNode) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - chunk.split('').forEach(function (ch) { - if (ch === '\n') { - generated.line++; - generated.column = 0; - } else { - generated.column++; - } - }); - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/util.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/util.js deleted file mode 100644 index 87946d3f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/lib/source-map/util.js +++ /dev/null @@ -1,205 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/; - var dataUrlRegexp = /^data:.+\,.+/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[3], - host: match[4], - port: match[6], - path: match[7] - }; - } - exports.urlParse = urlParse; - - function urlGenerate(aParsedUrl) { - var url = aParsedUrl.scheme + "://"; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + "@" - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; - } - exports.urlGenerate = urlGenerate; - - function join(aRoot, aPath) { - var url; - - if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) { - return aPath; - } - - if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) { - url.path = aPath; - return urlGenerate(url); - } - - return aRoot.replace(/\/$/, '') + '/' + aPath; - } - exports.join = join; - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - return '$' + aStr; - } - exports.toSetString = toSetString; - - function fromSetString(aStr) { - return aStr.substr(1); - } - exports.fromSetString = fromSetString; - - function relative(aRoot, aPath) { - aRoot = aRoot.replace(/\/$/, ''); - - var url = urlParse(aRoot); - if (aPath.charAt(0) == "/" && url && url.path == "/") { - return aPath.slice(1); - } - - return aPath.indexOf(aRoot + '/') === 0 - ? aPath.substr(aRoot.length + 1) - : aPath; - } - exports.relative = relative; - - function strcmp(aStr1, aStr2) { - var s1 = aStr1 || ""; - var s2 = aStr2 || ""; - return (s1 > s2) - (s1 < s2); - } - - /** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ - function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp; - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp || onlyCompareOriginal) { - return cmp; - } - - cmp = strcmp(mappingA.name, mappingB.name); - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - return mappingA.generatedColumn - mappingB.generatedColumn; - }; - exports.compareByOriginalPositions = compareByOriginalPositions; - - /** - * Comparator between two mappings where the generated positions are - * compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ - function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) { - var cmp; - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp || onlyCompareGenerated) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); - }; - exports.compareByGeneratedPositions = compareByGeneratedPositions; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/package.json deleted file mode 100644 index 93869f2d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/package.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "_args": [ - [ - "source-map@0.1.32", - "/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support" - ] - ], - "_from": "source-map@0.1.32", - "_id": "source-map@0.1.32", - "_inCache": true, - "_installable": true, - "_location": "/source-map", - "_npmUser": { - "email": "fitzgen@gmail.com", - "name": "nickfitzgerald" - }, - "_npmVersion": "1.2.18", - "_phantomChildren": {}, - "_requested": { - "name": "source-map", - "raw": "source-map@0.1.32", - "rawSpec": "0.1.32", - "scope": null, - "spec": "0.1.32", - "type": "version" - }, - "_requiredBy": [ - "/source-map-support" - ], - "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "_shasum": "c8b6c167797ba4740a8ea33252162ff08591b266", - "_shrinkwrap": null, - "_spec": "source-map@0.1.32", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/source-map-support", - "author": { - "email": "nfitzgerald@mozilla.com", - "name": "Nick Fitzgerald" - }, - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "contributors": [ - { - "email": "tobias.koppers@googlemail.com", - "name": "Tobias Koppers" - }, - { - "email": "duncan@dweebd.com", - "name": "Duncan Beevers" - }, - { - "email": "scrane@mozilla.com", - "name": "Stephen Crane" - }, - { - "email": "seddon.ryan@gmail.com", - "name": "Ryan Seddon" - }, - { - "email": "miles.elam@deem.com", - "name": "Miles Elam" - }, - { - "email": "mihai.bazon@gmail.com", - "name": "Mihai Bazon" - }, - { - "email": "github.public.email@michael.ficarra.me", - "name": "Michael Ficarra" - }, - { - "email": "todd@twolfson.com", - "name": "Todd Wolfson" - }, - { - "email": "alexander@solovyov.net", - "name": "Alexander Solovyov" - }, - { - "email": "fgnass@gmail.com", - "name": "Felix Gnass" - }, - { - "email": "conrad.irwin@gmail.com", - "name": "Conrad Irwin" - }, - { - "email": "usrbincc@yahoo.com", - "name": "usrbincc" - }, - { - "email": "glasser@davidglasser.net", - "name": "David Glasser" - }, - { - "email": "chase@newrelic.com", - "name": "Chase Douglas" - }, - { - "email": "evan.exe@gmail.com", - "name": "Evan Wallace" - }, - { - "email": "fayearthur@gmail.com", - "name": "Heather Arthur" - }, - { - "email": "hughskennedy@gmail.com", - "name": "Hugh Kennedy" - }, - { - "email": "glasser@davidglasser.net", - "name": "David Glasser" - } - ], - "dependencies": { - "amdefine": ">=0.0.4" - }, - "description": "Generates and consumes source maps", - "devDependencies": { - "dryice": ">=0.4.8" - }, - "directories": { - "lib": "./lib" - }, - "dist": { - "shasum": "c8b6c167797ba4740a8ea33252162ff08591b266", - "tarball": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz" - }, - "engines": { - "node": ">=0.8.0" - }, - "homepage": "https://github.com/mozilla/source-map", - "licenses": [ - { - "type": "BSD", - "url": "http://opensource.org/licenses/BSD-3-Clause" - } - ], - "main": "./lib/source-map.js", - "maintainers": [ - { - "email": "mozilla-developer-tools@googlegroups.com", - "name": "mozilla-devtools" - }, - { - "email": "dherman@mozilla.com", - "name": "mozilla" - }, - { - "email": "fitzgen@gmail.com", - "name": "nickfitzgerald" - } - ], - "name": "source-map", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/mozilla/source-map.git" - }, - "scripts": { - "build": "node Makefile.dryice.js", - "test": "node test/run-tests.js" - }, - "version": "0.1.32" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/run-tests.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/run-tests.js deleted file mode 100755 index 64a7c3a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/run-tests.js +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env node -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var util = require('./source-map/util'); - -function run(tests) { - var total = 0; - var passed = 0; - - for (var i = 0; i < tests.length; i++) { - for (var k in tests[i].testCase) { - if (/^test/.test(k)) { - total++; - try { - tests[i].testCase[k](assert, util); - passed++; - } - catch (e) { - console.log('FAILED ' + tests[i].name + ': ' + k + '!'); - console.log(e.stack); - } - } - } - } - - console.log(''); - console.log(passed + ' / ' + total + ' tests passed.'); - console.log(''); - - return total - passed; -} - -function isTestFile(f) { - var testToRun = process.argv[2]; - return testToRun - ? path.basename(testToRun) === f - : /^test\-.*?\.js/.test(f); -} - -function toModule(f) { - return './source-map/' + f.replace(/\.js$/, ''); -} - -var requires = fs.readdirSync(path.join(__dirname, 'source-map')) - .filter(isTestFile) - .map(toModule); - -var code = run(requires.map(require).map(function (mod, i) { - return { - name: requires[i], - testCase: mod - }; -})); - -process.exit(code); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-api.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-api.js deleted file mode 100644 index 3801233c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-api.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2012 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var sourceMap; - try { - sourceMap = require('../../lib/source-map'); - } catch (e) { - sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - } - - exports['test that the api is properly exposed in the top level'] = function (assert, util) { - assert.equal(typeof sourceMap.SourceMapGenerator, "function"); - assert.equal(typeof sourceMap.SourceMapConsumer, "function"); - assert.equal(typeof sourceMap.SourceNode, "function"); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-array-set.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-array-set.js deleted file mode 100644 index b5797edd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-array-set.js +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var ArraySet = require('../../lib/source-map/array-set').ArraySet; - - function makeTestSet() { - var set = new ArraySet(); - for (var i = 0; i < 100; i++) { - set.add(String(i)); - } - return set; - } - - exports['test .has() membership'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.ok(set.has(String(i))); - } - }; - - exports['test .indexOf() elements'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.indexOf(String(i)), i); - } - }; - - exports['test .at() indexing'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.at(i), String(i)); - } - }; - - exports['test creating from an array'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); - - assert.ok(set.has('foo')); - assert.ok(set.has('bar')); - assert.ok(set.has('baz')); - assert.ok(set.has('quux')); - assert.ok(set.has('hasOwnProperty')); - - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.indexOf('bar'), 1); - assert.strictEqual(set.indexOf('baz'), 2); - assert.strictEqual(set.indexOf('quux'), 3); - - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'bar'); - assert.strictEqual(set.at(2), 'baz'); - assert.strictEqual(set.at(3), 'quux'); - }; - - exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { - var set = new ArraySet(); - set.add('__proto__'); - assert.ok(set.has('__proto__')); - assert.strictEqual(set.at(0), '__proto__'); - assert.strictEqual(set.indexOf('__proto__'), 0); - }; - - exports['test .fromArray() with duplicates'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'foo']); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set = ArraySet.fromArray(['foo', 'foo'], true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - - exports['test .add() with duplicates'] = function (assert, util) { - var set = new ArraySet(); - set.add('foo'); - - set.add('foo'); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 1); - - set.add('foo', true); - assert.ok(set.has('foo')); - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'foo'); - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.toArray().length, 2); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64-vlq.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64-vlq.js deleted file mode 100644 index 653a874e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64-vlq.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64VLQ = require('../../lib/source-map/base64-vlq'); - - exports['test normal encoding and decoding'] = function (assert, util) { - var result; - for (var i = -255; i < 256; i++) { - result = base64VLQ.decode(base64VLQ.encode(i)); - assert.ok(result); - assert.equal(result.value, i); - assert.equal(result.rest, ""); - } - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64.js deleted file mode 100644 index ff3a2445..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-base64.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var base64 = require('../../lib/source-map/base64'); - - exports['test out of range encoding'] = function (assert, util) { - assert.throws(function () { - base64.encode(-1); - }); - assert.throws(function () { - base64.encode(64); - }); - }; - - exports['test out of range decoding'] = function (assert, util) { - assert.throws(function () { - base64.decode('='); - }); - }; - - exports['test normal encoding and decoding'] = function (assert, util) { - for (var i = 0; i < 64; i++) { - assert.equal(base64.decode(base64.encode(i)), i); - } - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-binary-search.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-binary-search.js deleted file mode 100644 index ee306830..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-binary-search.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var binarySearch = require('../../lib/source-map/binary-search'); - - function numberCompare(a, b) { - return a - b; - } - - exports['test too high'] = function (assert, util) { - var needle = 30; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); - }; - - exports['test too low'] = function (assert, util) { - var needle = 1; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), null); - }; - - exports['test exact search'] = function (assert, util) { - var needle = 4; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); - }; - - exports['test fuzzy search'] = function (assert, util) { - var needle = 19; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-dog-fooding.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-dog-fooding.js deleted file mode 100644 index d831b926..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-dog-fooding.js +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test eating our own dog food'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'testing.js', - sourceRoot: '/wu/tang' - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 1, column: 0 }, - generated: { line: 2, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 2, column: 0 }, - generated: { line: 3, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 3, column: 0 }, - generated: { line: 4, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 4, column: 0 }, - generated: { line: 5, column: 2 } - }); - - var smc = new SourceMapConsumer(smg.toString()); - - // Exact - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, smc, assert); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, smc, assert); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, smc, assert); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, smc, assert); - - // Fuzzy - - // Original to generated - util.assertMapping(2, 0, null, null, null, null, smc, assert, true); - util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 0, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 0, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 0, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true); - - // Generated to original - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, smc, assert, null, true); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, smc, assert, null, true); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, smc, assert, null, true); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-consumer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-consumer.js deleted file mode 100644 index f2c65a7f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-consumer.js +++ /dev/null @@ -1,451 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test that we can instantiate with a string or an objects'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(util.testMap); - }); - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(JSON.stringify(util.testMap)); - }); - }; - - exports['test that the `sources` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var sources = map.sources; - - assert.equal(sources[0], '/the/root/one.js'); - assert.equal(sources[1], '/the/root/two.js'); - assert.equal(sources.length, 2); - }; - - exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var mapping; - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, '/the/root/two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, '/the/root/one.js'); - }; - - exports['test mapping tokens back exactly'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); - util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); - util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); - util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); - util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); - util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); - util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); - - util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); - util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); - util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); - util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); - util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); - util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); - }; - - exports['test mapping tokens fuzzy'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - // Finding original positions - util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); - util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); - util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); - - // Finding generated positions - util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); - util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); - util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); - }; - - exports['test creating source map consumers with )]}\' prefix'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(")]}'" + JSON.stringify(util.testMap)); - }); - }; - - exports['test eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - map.eachMapping(function (mapping) { - assert.ok(mapping.generatedLine >= previousLine); - - if (mapping.source) { - assert.equal(mapping.source.indexOf(util.testMap.sourceRoot), 0); - } - - if (mapping.generatedLine === previousLine) { - assert.ok(mapping.generatedColumn >= previousColumn); - previousColumn = mapping.generatedColumn; - } - else { - previousLine = mapping.generatedLine; - previousColumn = -Infinity; - } - }); - }; - - exports['test iterating over mappings in a different order'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - var previousSource = ""; - map.eachMapping(function (mapping) { - assert.ok(mapping.source >= previousSource); - - if (mapping.source === previousSource) { - assert.ok(mapping.originalLine >= previousLine); - - if (mapping.originalLine === previousLine) { - assert.ok(mapping.originalColumn >= previousColumn); - previousColumn = mapping.originalColumn; - } - else { - previousLine = mapping.originalLine; - previousColumn = -Infinity; - } - } - else { - previousSource = mapping.source; - previousLine = -Infinity; - previousColumn = -Infinity; - } - }, null, SourceMapConsumer.ORIGINAL_ORDER); - }; - - exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var context = {}; - map.eachMapping(function () { - assert.equal(this, context); - }, context); - }; - - exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sourcesContent = map.sourcesContent; - - assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(sourcesContent.length, 2); - }; - - exports['test that we can get the original sources for the sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sources = map.sources; - - assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.throws(function () { - map.sourceContentFor(""); - }, Error); - assert.throws(function () { - map.sourceContentFor("/the/root/three.js"); - }, Error); - assert.throws(function () { - map.sourceContentFor("three.js"); - }, Error); - }; - - exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map.addMapping({ - original: { line: 5, column: 5 }, - generated: { line: 6, column: 6 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - // Should handle without sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - // Should handle with sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'foo/bar/bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - }; - - exports['test sourceRoot + originalPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - var pos = map.originalPositionFor({ - line: 2, - column: 2, - }); - - // Should always have the prepended source root - assert.equal(pos.source, 'foo/bar/bang.coffee'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - }; - - exports['test github issue #56'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://', - file: 'www.example.com/foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'www.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1); - assert.equal(sources[0], 'http://www.example.com/original.js'); - }; - - exports['test github issue #43'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'http://cdn.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://cdn.example.com/original.js', - 'Should not be joined with the sourceRoot.'); - }; - - exports['test absolute path, but same host sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com/foo/bar', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: '/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://example.com/original.js', - 'Source should be relative the host of the source root.'); - }; - - exports['test github issue #64'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "http://example.com/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - assert.equal(map.sourceContentFor("a"), "foo"); - assert.equal(map.sourceContentFor("/a"), "foo"); - }; - - exports['test bug 885597'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sourceRoot": "file:///Users/AlGore/Invented/The/Internet/", - "sources": ["/a"], - "names": [], - "mappings": "AACA", - "sourcesContent": ["foo"] - }); - - var s = map.sources[0]; - assert.equal(map.sourceContentFor(s), "foo"); - }; - - exports['test github issue #72, duplicate sources'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source1.js", "source1.js", "source3.js"], - "names": [], - "mappings": ";EAAC;;IAEE;;MEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.source, 'http://example.com/source1.js'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.source, 'http://example.com/source3.js'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test github issue #72, duplicate names'] = function (assert, util) { - var map = new SourceMapConsumer({ - "version": 3, - "file": "foo.js", - "sources": ["source.js"], - "names": ["name1", "name1", "name3"], - "mappings": ";EAACA;;IAEEA;;MAEEE", - "sourceRoot": "http://example.com" - }); - - var pos = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - - var pos = map.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.name, 'name1'); - assert.equal(pos.line, 3); - assert.equal(pos.column, 3); - - var pos = map.originalPositionFor({ - line: 6, - column: 6 - }); - assert.equal(pos.name, 'name3'); - assert.equal(pos.line, 5); - assert.equal(pos.column, 5); - }; - - exports['test SourceMapConsumer.fromSourceMap'] = function (assert, util) { - var smg = new SourceMapGenerator({ - sourceRoot: 'http://example.com/', - file: 'foo.js' - }); - smg.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bar.js' - }); - smg.addMapping({ - original: { line: 2, column: 2 }, - generated: { line: 4, column: 4 }, - source: 'baz.js', - name: 'dirtMcGirt' - }); - smg.setSourceContent('baz.js', 'baz.js content'); - - var smc = SourceMapConsumer.fromSourceMap(smg); - assert.equal(smc.file, 'foo.js'); - assert.equal(smc.sourceRoot, 'http://example.com/'); - assert.equal(smc.sources.length, 2); - assert.equal(smc.sources[0], 'http://example.com/bar.js'); - assert.equal(smc.sources[1], 'http://example.com/baz.js'); - assert.equal(smc.sourceContentFor('baz.js'), 'baz.js content'); - - var pos = smc.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - assert.equal(pos.source, 'http://example.com/bar.js'); - assert.equal(pos.name, null); - - pos = smc.generatedPositionFor({ - line: 1, - column: 1, - source: 'http://example.com/bar.js' - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - pos = smc.originalPositionFor({ - line: 4, - column: 4 - }); - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - assert.equal(pos.source, 'http://example.com/baz.js'); - assert.equal(pos.name, 'dirtMcGirt'); - - pos = smc.generatedPositionFor({ - line: 2, - column: 2, - source: 'http://example.com/baz.js' - }); - assert.equal(pos.line, 4); - assert.equal(pos.column, 4); - }; -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-generator.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-generator.js deleted file mode 100644 index ba292f54..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-map-generator.js +++ /dev/null @@ -1,417 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - var util = require('./util'); - - exports['test some simple stuff'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.ok(true); - }; - - exports['test JSON serialization'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.equal(map.toString(), JSON.stringify(map)); - }; - - exports['test adding mappings (case 1)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 2)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 3)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: 'someToken' - }); - }); - }; - - exports['test adding mappings (invalid)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - // Not enough info. - assert.throws(function () { - map.addMapping({}); - }); - - // Original file position, but no source. - assert.throws(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test that the correct mappings are being generated'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 5 }, - original: { line: 1, column: 5 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 9 }, - original: { line: 1, column: 11 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 18 }, - original: { line: 1, column: 21 }, - source: 'one.js', - name: 'bar' - }); - map.addMapping({ - generated: { line: 1, column: 21 }, - original: { line: 2, column: 3 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 28 }, - original: { line: 2, column: 10 }, - source: 'one.js', - name: 'baz' - }); - map.addMapping({ - generated: { line: 1, column: 32 }, - original: { line: 2, column: 14 }, - source: 'one.js', - name: 'bar' - }); - - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 5 }, - original: { line: 1, column: 5 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 9 }, - original: { line: 1, column: 11 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 18 }, - original: { line: 1, column: 21 }, - source: 'two.js', - name: 'n' - }); - map.addMapping({ - generated: { line: 2, column: 21 }, - original: { line: 2, column: 3 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 28 }, - original: { line: 2, column: 10 }, - source: 'two.js', - name: 'n' - }); - - map = JSON.parse(map.toString()); - - util.assertEqualMaps(assert, map, util.testMap); - }; - - exports['test that source content can be set'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.setSourceContent('one.js', 'one file content'); - - map = JSON.parse(map.toString()); - assert.equal(map.sources[0], 'one.js'); - assert.equal(map.sources[1], 'two.js'); - assert.equal(map.sourcesContent[0], 'one file content'); - assert.equal(map.sourcesContent[1], null); - }; - - exports['test .fromSourceMap'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); - util.assertEqualMaps(assert, map.toJSON(), util.testMap); - }; - - exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap( - new SourceMapConsumer(util.testMapWithSourcesContent)); - util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); - }; - - exports['test applySourceMap'] = function (assert, util) { - var node = new SourceNode(null, null, null, [ - new SourceNode(2, 0, 'fileX', 'lineX2\n'), - 'genA1\n', - new SourceNode(2, 0, 'fileY', 'lineY2\n'), - 'genA2\n', - new SourceNode(1, 0, 'fileX', 'lineX1\n'), - 'genA3\n', - new SourceNode(1, 0, 'fileY', 'lineY1\n') - ]); - var mapStep1 = node.toStringWithSourceMap({ - file: 'fileA' - }).map; - mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); - mapStep1 = mapStep1.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(1, 0, 'fileA', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(3, 0, 'fileA', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var mapStep2 = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); - mapStep2 = mapStep2.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(2, 0, 'fileX', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(2, 0, 'fileY', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var expectedMap = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); - expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); - expectedMap = expectedMap.toJSON(); - - // apply source map "mapStep1" to "mapStep2" - var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); - generator.applySourceMap(new SourceMapConsumer(mapStep1)); - var actualMap = generator.toJSON(); - - util.assertEqualMaps(assert, actualMap, expectedMap); - }; - - exports['test sorting with duplicate generated mappings'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 3, column: 0 }, - original: { line: 2, column: 0 }, - source: 'a.js' - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: 'a.js' - }); - - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: [], - mappings: 'AAAA;A;AACA' - }); - }; - - exports['test ignore duplicate mappings.'] = function (assert, util) { - var init = { file: 'min.js', sourceRoot: '/the/root' }; - var map1, map2; - - // null original source location - var nullMapping1 = { - generated: { line: 1, column: 0 } - }; - var nullMapping2 = { - generated: { line: 2, column: 2 } - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(nullMapping1); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(nullMapping2); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // original source location - var srcMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'srcMapping1.js' - }; - var srcMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'srcMapping2.js' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(srcMapping1); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(srcMapping2); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // full original source and name information - var fullMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'fullMapping1.js', - name: 'fullMapping1' - }; - var fullMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'fullMapping2.js', - name: 'fullMapping2' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(fullMapping1); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(fullMapping2); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - }; - - exports['test github issue #72, check for duplicate names or sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 2, column: 2 }, - source: 'a.js', - name: 'foo' - }); - map.addMapping({ - generated: { line: 3, column: 3 }, - original: { line: 4, column: 4 }, - source: 'a.js', - name: 'foo' - }); - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: ['foo'], - mappings: 'CACEA;;GAEEA' - }); - }; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-node.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-node.js deleted file mode 100644 index 6e0eca82..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/test-source-node.js +++ /dev/null @@ -1,365 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - - exports['test .add()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Adding a string works. - node.add('function noop() {}'); - - // Adding another source node works. - node.add(new SourceNode(null, null, null)); - - // Adding an array works. - node.add(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - - // Adding other stuff doesn't. - assert.throws(function () { - node.add({}); - }); - assert.throws(function () { - node.add(function () {}); - }); - }; - - exports['test .prepend()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Prepending a string works. - node.prepend('function noop() {}'); - assert.equal(node.children[0], 'function noop() {}'); - assert.equal(node.children.length, 1); - - // Prepending another source node works. - node.prepend(new SourceNode(null, null, null)); - assert.equal(node.children[0], ''); - assert.equal(node.children[1], 'function noop() {}'); - assert.equal(node.children.length, 2); - - // Prepending an array works. - node.prepend(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - assert.equal(node.children[0], 'function foo() {'); - assert.equal(node.children[1], 'return 10;'); - assert.equal(node.children[2], '}'); - assert.equal(node.children[3], ''); - assert.equal(node.children[4], 'function noop() {}'); - assert.equal(node.children.length, 5); - - // Prepending other stuff doesn't. - assert.throws(function () { - node.prepend({}); - }); - assert.throws(function () { - node.prepend(function () {}); - }); - }; - - exports['test .toString()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['function foo() {', - new SourceNode(null, null, null, 'return 10;'), - '}'])).toString(), - 'function foo() {return 10;}'); - }; - - exports['test .join()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['a', 'b', 'c', 'd'])).join(', ').toString(), - 'a, b, c, d'); - }; - - exports['test .walk()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var expected = [ - { str: '(function () {\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: '}());', source: null, line: null, column: null }, - ]; - var i = 0; - node.walk(function (chunk, loc) { - assert.equal(expected[i].str, chunk); - assert.equal(expected[i].source, loc.source); - assert.equal(expected[i].line, loc.line); - assert.equal(expected[i].column, loc.column); - i++; - }); - }; - - exports['test .replaceRight'] = function (assert, util) { - var node; - - // Not nested - node = new SourceNode(null, null, null, 'hello world'); - node.replaceRight(/world/, 'universe'); - assert.equal(node.toString(), 'hello universe'); - - // Nested - node = new SourceNode(null, null, null, - [new SourceNode(null, null, null, 'hey sexy mama, '), - new SourceNode(null, null, null, 'want to kill all humans?')]); - node.replaceRight(/kill all humans/, 'watch Futurama'); - assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); - }; - - exports['test .toStringWithSourceMap()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', - new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), - new SourceNode(1, 8, 'a.js', '()'), - ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - var actual; - - actual = map.originalPositionFor({ - line: 1, - column: 4 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(actual.source, 'a.js'); - assert.equal(actual.line, 1); - assert.equal(actual.column, 0); - assert.equal(actual.name, 'originalCall'); - - actual = map.originalPositionFor({ - line: 3, - column: 2 - }); - assert.equal(actual.source, 'b.js'); - assert.equal(actual.line, 2); - assert.equal(actual.column, 0); - - actual = map.originalPositionFor({ - line: 3, - column: 16 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 4, - column: 2 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - }; - - exports['test .fromStringWithSourceMap()'] = function (assert, util) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode, - new SourceMapConsumer(util.testMap)); - - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.testMap.version); - assert.equal(map.file, util.testMap.file); - assert.equal(map.mappings, util.testMap.mappings); - }; - - exports['test .fromStringWithSourceMap() empty map'] = function (assert, util) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode, - new SourceMapConsumer(util.emptyMap)); - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.emptyMap.version); - assert.equal(map.file, util.emptyMap.file); - assert.equal(map.mappings.length, util.emptyMap.mappings.length); - assert.equal(map.mappings, util.emptyMap.mappings); - }; - - exports['test .fromStringWithSourceMap() complex version'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - "(function() {\n", - " var Test = {};\n", - " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };\n"), - " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), "\n", - "}());\n", - "/* Generated Source */"]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var node = SourceNode.fromStringWithSourceMap( - input.code, - new SourceMapConsumer(input.map.toString())); - - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, input.code); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - var inputMap = input.map.toJSON(); - util.assertEqualMaps(assert, map, inputMap); - }; - - exports['test .fromStringWithSourceMap() merging duplicate mappings'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - new SourceNode(1, 0, "a.js", "(function"), - new SourceNode(1, 0, "a.js", "() {\n"), - " ", - new SourceNode(1, 0, "a.js", "var Test = "), - new SourceNode(1, 0, "b.js", "{};\n"), - new SourceNode(2, 0, "b.js", "Test"), - new SourceNode(2, 0, "b.js", ".A", "A"), - new SourceNode(2, 20, "b.js", " = { value: 1234 };\n", "A"), - "}());\n", - "/* Generated Source */" - ]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var correctMap = new SourceMapGenerator({ - file: 'foo.js' - }); - correctMap.addMapping({ - generated: { line: 1, column: 0 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 2 }, - source: 'a.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 2, column: 13 }, - source: 'b.js', - original: { line: 1, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 0 }, - source: 'b.js', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 4 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 0 } - }); - correctMap.addMapping({ - generated: { line: 3, column: 6 }, - source: 'b.js', - name: 'A', - original: { line: 2, column: 20 } - }); - correctMap.addMapping({ - generated: { line: 4, column: 0 } - }); - - var inputMap = input.map.toJSON(); - correctMap = correctMap.toJSON(); - util.assertEqualMaps(assert, correctMap, inputMap); - }; - - exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - assert.equal(map.sources.length, 2); - assert.equal(map.sources[0], 'a.js'); - assert.equal(map.sources[1], 'b.js'); - assert.equal(map.sourcesContent.length, 2); - assert.equal(map.sourcesContent[0], 'someContent'); - assert.equal(map.sourcesContent[1], 'otherContent'); - }; - - exports['test walkSourceContents'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var results = []; - node.walkSourceContents(function (sourceFile, sourceContent) { - results.push([sourceFile, sourceContent]); - }); - assert.equal(results.length, 2); - assert.equal(results[0][0], 'a.js'); - assert.equal(results[0][1], 'someContent'); - assert.equal(results[1][0], 'b.js'); - assert.equal(results[1][1], 'otherContent'); - }; -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/util.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/util.js deleted file mode 100644 index 288046bf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/source-map/test/source-map/util.js +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module, require); -} -define(function (require, exports, module) { - - var util = require('../../lib/source-map/util'); - - // This is a test mapping which maps functions from two different files - // (one.js and two.js) to a minified generated source. - // - // Here is one.js: - // - // ONE.foo = function (bar) { - // return baz(bar); - // }; - // - // Here is two.js: - // - // TWO.inc = function (n) { - // return n + 1; - // }; - // - // And here is the generated code (min.js): - // - // ONE.foo=function(a){return baz(a);}; - // TWO.inc=function(a){return a+1;}; - exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ - " TWO.inc=function(a){return a+1;};"; - exports.testMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapWithSourcesContent = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourcesContent: [ - ' ONE.foo = function (bar) {\n' + - ' return baz(bar);\n' + - ' };', - ' TWO.inc = function (n) {\n' + - ' return n + 1;\n' + - ' };' - ], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.emptyMap = { - version: 3, - file: 'min.js', - names: [], - sources: [], - mappings: '' - }; - - - function assertMapping(generatedLine, generatedColumn, originalSource, - originalLine, originalColumn, name, map, assert, - dontTestGenerated, dontTestOriginal) { - if (!dontTestOriginal) { - var origMapping = map.originalPositionFor({ - line: generatedLine, - column: generatedColumn - }); - assert.equal(origMapping.name, name, - 'Incorrect name, expected ' + JSON.stringify(name) - + ', got ' + JSON.stringify(origMapping.name)); - assert.equal(origMapping.line, originalLine, - 'Incorrect line, expected ' + JSON.stringify(originalLine) - + ', got ' + JSON.stringify(origMapping.line)); - assert.equal(origMapping.column, originalColumn, - 'Incorrect column, expected ' + JSON.stringify(originalColumn) - + ', got ' + JSON.stringify(origMapping.column)); - - var expectedSource; - - if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { - expectedSource = originalSource; - } else if (originalSource) { - expectedSource = map.sourceRoot - ? util.join(map.sourceRoot, originalSource) - : originalSource; - } else { - expectedSource = null; - } - - assert.equal(origMapping.source, expectedSource, - 'Incorrect source, expected ' + JSON.stringify(expectedSource) - + ', got ' + JSON.stringify(origMapping.source)); - } - - if (!dontTestGenerated) { - var genMapping = map.generatedPositionFor({ - source: originalSource, - line: originalLine, - column: originalColumn - }); - assert.equal(genMapping.line, generatedLine, - 'Incorrect line, expected ' + JSON.stringify(generatedLine) - + ', got ' + JSON.stringify(genMapping.line)); - assert.equal(genMapping.column, generatedColumn, - 'Incorrect column, expected ' + JSON.stringify(generatedColumn) - + ', got ' + JSON.stringify(genMapping.column)); - } - } - exports.assertMapping = assertMapping; - - function assertEqualMaps(assert, actualMap, expectedMap) { - assert.equal(actualMap.version, expectedMap.version, "version mismatch"); - assert.equal(actualMap.file, expectedMap.file, "file mismatch"); - assert.equal(actualMap.names.length, - expectedMap.names.length, - "names length mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - for (var i = 0; i < actualMap.names.length; i++) { - assert.equal(actualMap.names[i], - expectedMap.names[i], - "names[" + i + "] mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - } - assert.equal(actualMap.sources.length, - expectedMap.sources.length, - "sources length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - for (var i = 0; i < actualMap.sources.length; i++) { - assert.equal(actualMap.sources[i], - expectedMap.sources[i], - "sources[" + i + "] length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - } - assert.equal(actualMap.sourceRoot, - expectedMap.sourceRoot, - "sourceRoot mismatch: " + - actualMap.sourceRoot + " != " + expectedMap.sourceRoot); - assert.equal(actualMap.mappings, expectedMap.mappings, - "mappings mismatch:\nActual: " + actualMap.mappings + "\nExpected: " + expectedMap.mappings); - if (actualMap.sourcesContent) { - assert.equal(actualMap.sourcesContent.length, - expectedMap.sourcesContent.length, - "sourcesContent length mismatch"); - for (var i = 0; i < actualMap.sourcesContent.length; i++) { - assert.equal(actualMap.sourcesContent[i], - expectedMap.sourcesContent[i], - "sourcesContent[" + i + "] mismatch"); - } - } - } - exports.assertEqualMaps = assertEqualMaps; - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/LICENSE deleted file mode 100644 index 2d92a2b7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blaine Bublitz - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/README.md deleted file mode 100644 index 8dfdb9cb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/README.md +++ /dev/null @@ -1,41 +0,0 @@ -sparkles -======== - -[![Build Status](https://travis-ci.org/phated/sparkles.svg?branch=master)](https://travis-ci.org/phated/sparkles) - -Namespaced global event emitter - -## Usage - -Sparkles exports a function that returns a singleton `EventEmitter`. -This EE can be shared across your application, whether or not node loads -multiple copies. - -```js -var sparkles = require('sparkles')(); // make sure to call the function - -sparkles.on('my-event', function(evt){ - console.log('my-event handled', evt); -}); - -sparkles.emit('my-event', { my: 'event' }); -``` - -## API - -### sparkles(namespace) - -Returns an EventEmitter that is shared amongst the provided namespace. If no namespace -is provided, returns a default EventEmitter. - -### sparkles.exists(namespace); - -Checks whether a namespace exists and returns true or false. - -## Why the name? - -This is a "global emitter"; shortened: "glitter" but it was already taken; so we got sparkles instead :smile: - -## License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/index.js deleted file mode 100644 index 1183745d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/index.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -var EventEmitter = require('events').EventEmitter; - -var sparklesNamespace = 'store@sparkles'; -var defaultNamespace = 'default'; - -function getStore(){ - var store = global[sparklesNamespace]; - - if(!store){ - store = global[sparklesNamespace] = {}; - } - - return store; -} - -function getEmitter(namespace){ - - var store = getStore(); - - namespace = namespace || defaultNamespace; - - var ee = store[namespace]; - - if(!ee){ - ee = store[namespace] = new EventEmitter(); - ee.setMaxListeners(0); - ee.remove = function remove(){ - ee.removeAllListeners(); - delete store[namespace]; - }; - } - - return ee; -} - -function exists(namespace){ - var store = getStore(); - - return !!(store[namespace]); -} - -module.exports = getEmitter; -module.exports.exists = exists; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/package.json deleted file mode 100644 index 783111fd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sparkles/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "sparkles@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glogg" - ] - ], - "_from": "sparkles@>=1.0.0 <2.0.0", - "_id": "sparkles@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/sparkles", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "sparkles", - "raw": "sparkles@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/glogg", - "/has-gulplog" - ], - "_resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "_shasum": "1acbbfb592436d10bbe8f785b7cc6f82815012c3", - "_shrinkwrap": null, - "_spec": "sparkles@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glogg", - "author": { - "email": "blaine@iceddev.com", - "name": "Blaine Bublitz", - "url": "http://iceddev.com/" - }, - "bugs": { - "url": "https://github.com/phated/sparkles/issues" - }, - "contributors": [], - "dependencies": {}, - "description": "Namespaced global event emitter", - "devDependencies": { - "@phated/eslint-config-iceddev": "^0.2.1", - "code": "^1.5.0", - "eslint": "^1.3.1", - "eslint-plugin-mocha": "^0.5.1", - "eslint-plugin-react": "^3.3.1", - "lab": "^5.16.0" - }, - "directories": {}, - "dist": { - "shasum": "1acbbfb592436d10bbe8f785b7cc6f82815012c3", - "tarball": "http://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "LICENSE", - "index.js" - ], - "gitHead": "66eed55eeac9f3ba641d4643c5ad2ed598bc6a72", - "homepage": "https://github.com/phated/sparkles#readme", - "keywords": [ - "ee", - "emitter", - "events", - "global", - "namespaced" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "sparkles", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/phated/sparkles.git" - }, - "scripts": { - "test": "lab -cvL --ignore store@sparkles" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/LICENSE deleted file mode 100644 index 4b54239b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/LICENSE +++ /dev/null @@ -1,57 +0,0 @@ -SPDX:Apache-2.0 - -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. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/README.md deleted file mode 100644 index 4289e5cd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/README.md +++ /dev/null @@ -1,10 +0,0 @@ -```javascript -var correct = require('spdx-correct'); -var assert = require('assert'); - -assert.equal(correct('mit'), 'MIT') - -assert.equal(correct('Apache 2'), 'Apache-2.0') - -assert(correct('No idea what license') === null) -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/index.js deleted file mode 100644 index 75b7a21a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/index.js +++ /dev/null @@ -1,237 +0,0 @@ -var licenseIDs = require('spdx-license-ids'); - -function valid(string) { - return licenseIDs.indexOf(string) > -1; -} - -// Common transpositions of license identifier acronyms -var transpositions = [ - ['APGL', 'AGPL'], - ['Gpl', 'GPL'], - ['GLP', 'GPL'], - ['APL', 'Apache'], - ['ISD', 'ISC'], - ['GLP', 'GPL'], - ['IST', 'ISC'], - ['Claude', 'Clause'], - [' or later', '+'], - [' International', ''], - ['GNU', 'GPL'], - ['GUN', 'GPL'], - ['+', ''], - ['GNU GPL', 'GPL'], - ['GNU/GPL', 'GPL'], - ['GNU GLP', 'GPL'], - ['GNU General Public License', 'GPL'], - ['Gnu public license', 'GPL'], - ['GNU Public License', 'GPL'], - ['GNU GENERAL PUBLIC LICENSE', 'GPL'], - ['MTI', 'MIT'], - ['Mozilla Public License', 'MPL'], - ['WTH', 'WTF'], - ['-License', ''] -]; - -var TRANSPOSED = 0; -var CORRECT = 1; - -// Simple corrections to nearly valid identifiers. -var transforms = [ - // e.g. 'mit' - function(argument) { - return argument.toUpperCase(); - }, - // e.g. 'MIT ' - function(argument) { - return argument.trim(); - }, - // e.g. 'M.I.T.' - function(argument) { - return argument.replace(/\./g, ''); - }, - // e.g. 'Apache- 2.0' - function(argument) { - return argument.replace(/\s+/g, ''); - }, - // e.g. 'CC BY 4.0'' - function(argument) { - return argument.replace(/\s+/g, '-'); - }, - // e.g. 'LGPLv2.1' - function(argument) { - return argument.replace('v', '-'); - }, - // e.g. 'Apache 2.0' - function(argument) { - return argument.replace(/,?\s*(\d)/, '-$1'); - }, - // e.g. 'GPL 2' - function(argument) { - return argument.replace(/,?\s*(\d)/, '-$1.0'); - }, - // e.g. 'Apache Version 2.0' - function(argument) { - return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2'); - }, - // e.g. 'Apache Version 2' - function(argument) { - return argument.replace(/,?\s*(V\.|v\.|V|v|Version|version)\s*(\d)/, '-$2.0'); - }, - // e.g. 'ZLIB' - function(argument) { - return argument[0].toUpperCase() + argument.slice(1); - }, - // e.g. 'MPL/2.0' - function(argument) { - return argument.replace('/', '-'); - }, - // e.g. 'Apache 2' - function(argument) { - return argument - .replace(/\s*V\s*(\d)/, '-$1') - .replace(/(\d)$/, '$1.0'); - }, - // e.g. 'GPL-2.0-' - function(argument) { - return argument.slice(0, argument.length - 1); - }, - // e.g. 'GPL2' - function(argument) { - return argument.replace(/(\d)$/, '-$1.0'); - }, - // e.g. 'BSD 3' - function(argument) { - return argument.replace(/(-| )?(\d)$/, '-$2-Clause'); - }, - // e.g. 'BSD clause 3' - function(argument) { - return argument.replace(/(-| )clause(-| )(\d)/, '-$3-Clause'); - }, - // e.g. 'BY-NC-4.0' - function(argument) { - return 'CC-' + argument; - }, - // e.g. 'BY-NC' - function(argument) { - return 'CC-' + argument + '-4.0'; - }, - // e.g. 'Attribution-NonCommercial' - function(argument) { - return argument - .replace('Attribution', 'BY') - .replace('NonCommercial', 'NC') - .replace('NoDerivatives', 'ND') - .replace(/ (\d)/, '-$1') - .replace(/ ?International/, ''); - }, - // e.g. 'Attribution-NonCommercial' - function(argument) { - return 'CC-' + - argument - .replace('Attribution', 'BY') - .replace('NonCommercial', 'NC') - .replace('NoDerivatives', 'ND') - .replace(/ (\d)/, '-$1') - .replace(/ ?International/, '') + - '-4.0'; - } -]; - -// If all else fails, guess that strings containing certain substrings -// meant to identify certain licenses. -var lastResorts = [ - ['UNLI', 'Unlicense'], - ['WTF', 'WTFPL'], - ['2 CLAUSE', 'BSD-2-Clause'], - ['2-CLAUSE', 'BSD-2-Clause'], - ['3 CLAUSE', 'BSD-3-Clause'], - ['3-CLAUSE', 'BSD-3-Clause'], - ['AFFERO', 'AGPL-3.0'], - ['AGPL', 'AGPL-3.0'], - ['APACHE', 'Apache-2.0'], - ['ARTISTIC', 'Artistic-2.0'], - ['Affero', 'AGPL-3.0'], - ['BEER', 'Beerware'], - ['BOOST', 'BSL-1.0'], - ['BSD', 'BSD-2-Clause'], - ['ECLIPSE', 'EPL-1.0'], - ['FUCK', 'WTFPL'], - ['GNU', 'GPL-3.0'], - ['LGPL', 'LGPL-3.0'], - ['GPL', 'GPL-3.0'], - ['MIT', 'MIT'], - ['MPL', 'MPL-2.0'], - ['X11', 'X11'], - ['ZLIB', 'Zlib'] -]; - -var SUBSTRING = 0; -var IDENTIFIER = 1; - -var validTransformation = function(identifier) { - for (var i = 0; i < transforms.length; i++) { - var transformed = transforms[i](identifier); - if (transformed !== identifier && valid(transformed)) { - return transformed; - } - } - return null; -}; - -var validLastResort = function(identifier) { - var upperCased = identifier.toUpperCase(); - for (var i = 0; i < lastResorts.length; i++) { - var lastResort = lastResorts[i]; - if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) { - return lastResort[IDENTIFIER]; - } - } - return null; -}; - -var anyCorrection = function(identifier, check) { - for (var i = 0; i < transpositions.length; i++) { - var transposition = transpositions[i]; - var transposed = transposition[TRANSPOSED]; - if (identifier.indexOf(transposed) > -1) { - var corrected = identifier.replace( - transposed, - transposition[CORRECT] - ); - var checked = check(corrected); - if (checked !== null) { - return checked; - } - } - } - return null; -}; - -module.exports = function(identifier) { - identifier = identifier.replace(/\+$/, ''); - if (valid(identifier)) { - return identifier; - } - var transformed = validTransformation(identifier); - if (transformed !== null) { - return transformed; - } - transformed = anyCorrection(identifier, function(argument) { - if (valid(argument)) { - return argument; - } - return validTransformation(argument); - }); - if (transformed !== null) { - return transformed; - } - transformed = validLastResort(identifier); - if (transformed !== null) { - return transformed; - } - transformed = anyCorrection(identifier, validLastResort); - if (transformed !== null) { - return transformed; - } - return null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/package.json deleted file mode 100644 index 07af4489..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-correct/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "spdx-correct@~1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/validate-npm-package-license" - ] - ], - "_from": "spdx-correct@>=1.0.0 <1.1.0", - "_id": "spdx-correct@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/spdx-correct", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - "_npmVersion": "3.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "spdx-correct", - "raw": "spdx-correct@~1.0.0", - "rawSpec": "~1.0.0", - "scope": null, - "spec": ">=1.0.0 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/validate-npm-package-license" - ], - "_resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "_shasum": "4b3073d933ff51f3912f03ac5519498a4150db40", - "_shrinkwrap": null, - "_spec": "spdx-correct@~1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/validate-npm-package-license", - "author": { - "email": "kyle@kemitchell.com", - "name": "Kyle E. Mitchell", - "url": "https://kemitchell.com" - }, - "bugs": { - "url": "https://github.com/kemitchell/spdx-correct.js/issues" - }, - "dependencies": { - "spdx-license-ids": "^1.0.2" - }, - "description": "correct invalid SPDX identifiers", - "devDependencies": { - "defence-cli": "^1.0.1", - "replace-require-self": "^1.0.0", - "spdx-expression-parse": "^1.0.0", - "tape": "~4.0.0" - }, - "directories": {}, - "dist": { - "shasum": "4b3073d933ff51f3912f03ac5519498a4150db40", - "tarball": "http://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz" - }, - "gitHead": "8430a3ad521e1455208db33faafcb79c7b074236", - "homepage": "https://github.com/kemitchell/spdx-correct.js#readme", - "keywords": [ - "SPDX", - "law", - "legal", - "license", - "metadata" - ], - "license": "Apache-2.0", - "maintainers": [ - { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - { - "email": "ogd@aoaioxxysz.net", - "name": "othiym23" - } - ], - "name": "spdx-correct", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/kemitchell/spdx-correct.js.git" - }, - "scripts": { - "test": "defence README.md | replace-require-self | node && tape *.test.js" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/README.md deleted file mode 100644 index 43a66372..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/README.md +++ /dev/null @@ -1 +0,0 @@ -The package exports an array of strings. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/index.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/index.json deleted file mode 100644 index 3b84277b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/index.json +++ /dev/null @@ -1,24 +0,0 @@ -[ - "389-exception", - "Autoconf-exception-2.0", - "Autoconf-exception-3.0", - "Bison-exception-2.2", - "CLISP-exception-2.0", - "Classpath-exception-2.0", - "FLTK-exception", - "FLTK-exception-2.0", - "Font-exception-2.0", - "GCC-exception-2.0", - "GCC-exception-3.1", - "LZMA-exception", - "Libtool-exception", - "Nokia-Qt-exception-1.1", - "Qwt-exception-1.0", - "WxWindows-exception-3.1", - "eCos-exception-2.0", - "freertos-exception-2.0", - "gnu-javamail-exception", - "i2p-gpl-java-exception", - "mif-exception", - "u-boot-exception-2.0" -] diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/package.json deleted file mode 100644 index eabe69c3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-exceptions/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "_args": [ - [ - "spdx-exceptions@^1.0.4", - "/Users/sid/Desktop/code/RustyCode/node_modules/spdx-expression-parse" - ] - ], - "_from": "spdx-exceptions@>=1.0.4 <2.0.0", - "_id": "spdx-exceptions@1.0.4", - "_inCache": true, - "_installable": true, - "_location": "/spdx-exceptions", - "_nodeVersion": "5.0.0", - "_npmUser": { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - "_npmVersion": "3.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "spdx-exceptions", - "raw": "spdx-exceptions@^1.0.4", - "rawSpec": "^1.0.4", - "scope": null, - "spec": ">=1.0.4 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/spdx-expression-parse" - ], - "_resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz", - "_shasum": "220b84239119ae9045a892db81a83f4ce16f80fd", - "_shrinkwrap": null, - "_spec": "spdx-exceptions@^1.0.4", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/spdx-expression-parse", - "author": { - "name": "The Linux Foundation" - }, - "bugs": { - "url": "https://github.com/kemitchell/spdx-exceptions.json/issues" - }, - "contributors": [ - { - "email": "kyle@kemitchell.com", - "name": "Kyle E. Mitchell", - "url": "https://kemitchell.com/" - } - ], - "dependencies": {}, - "description": "list of SPDX standard license exceptions", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "220b84239119ae9045a892db81a83f4ce16f80fd", - "tarball": "http://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz" - }, - "gitHead": "770316d6c946417ab6efa8533b82d0b61779092b", - "homepage": "https://github.com/kemitchell/spdx-exceptions.json#readme", - "license": "CC-BY-3.0", - "maintainers": [ - { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - } - ], - "name": "spdx-exceptions", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/kemitchell/spdx-exceptions.json.git" - }, - "scripts": {}, - "version": "1.0.4" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/LICENSE deleted file mode 100644 index 51a8d6bf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2015 Kyle E. Mitchell and other contributors - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/README.md deleted file mode 100644 index 4b96d3e2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/README.md +++ /dev/null @@ -1,44 +0,0 @@ -```javascript -var parse = require('spdx-expression-parse') -var assert = require('assert') - -var firstAST = { - left: { license: 'LGPL-2.1' }, - conjunction: 'or', - right: { - left: { license: 'BSD-3-Clause' }, - conjunction: 'and', - right: { license: 'MIT' } } } - -assert.deepEqual( - parse('(LGPL-2.1 OR BSD-3-Clause AND MIT)'), - firstAST) - -var secondAST = { - left: { license: 'MIT' }, - conjunction: 'and', - right: { - left: { - license: 'LGPL-2.1', - plus: true }, - conjunction: 'and', - right: { license: 'BSD-3-Clause' } } } - -assert.deepEqual( - parse('(MIT AND (LGPL-2.1+ AND BSD-3-Clause))'), - secondAST) - -// We handle all the bare SPDX license and exception ids as well. -require('spdx-license-ids').forEach(function(id) { - assert.deepEqual( - parse(id), - { license: id }) - require('spdx-exceptions').forEach(function(e) { - assert.deepEqual( - parse(id + ' WITH ' + e), - { license: id, exception: e }) }) }) -``` - ---- - -[The Software Package Data Exchange (SPDX) specification](http://spdx.org) is the work of the [Linux Foundation](http://www.linuxfoundation.org) and its contributors, and is licensed under the terms of [the Creative Commons Attribution License 3.0 Unported (SPDX: "CC-BY-3.0")](http://spdx.org/licenses/CC-BY-3.0). "SPDX" is a United States federally registered trademark of the Linux Foundation. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/index.js deleted file mode 100644 index 3f38e3a7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/index.js +++ /dev/null @@ -1,4 +0,0 @@ -var parser = require('./parser.generated.js').parser - -module.exports = function(argument) { - return parser.parse(argument) } diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/package.json deleted file mode 100644 index 287d5f15..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "_args": [ - [ - "spdx-expression-parse@~1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/validate-npm-package-license" - ] - ], - "_from": "spdx-expression-parse@>=1.0.0 <1.1.0", - "_id": "spdx-expression-parse@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/spdx-expression-parse", - "_nodeVersion": "5.0.0", - "_npmUser": { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - "_npmVersion": "3.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "spdx-expression-parse", - "raw": "spdx-expression-parse@~1.0.0", - "rawSpec": "~1.0.0", - "scope": null, - "spec": ">=1.0.0 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/validate-npm-package-license" - ], - "_resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz", - "_shasum": "d52b14b5e9670771440af225bcb563122ac452f6", - "_shrinkwrap": null, - "_spec": "spdx-expression-parse@~1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/validate-npm-package-license", - "author": { - "email": "kyle@kemitchell.com", - "name": "Kyle E. Mitchell", - "url": "http://kemitchell.com" - }, - "bugs": { - "url": "https://github.com/kemitchell/spdx-expression-parse.js/issues" - }, - "dependencies": { - "spdx-exceptions": "^1.0.4", - "spdx-license-ids": "^1.0.0" - }, - "description": "parse SPDX license expressions", - "devDependencies": { - "defence-cli": "^1.0.1", - "jison": "^0.4.15", - "replace-require-self": "^1.0.0", - "uglify-js": "^2.4.24" - }, - "directories": {}, - "dist": { - "shasum": "d52b14b5e9670771440af225bcb563122ac452f6", - "tarball": "http://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz" - }, - "gitHead": "ffe2fa7272ebf640b18286fc561f17a844d4f06b", - "homepage": "https://github.com/kemitchell/spdx-expression-parse.js#readme", - "keywords": [ - "SPDX", - "law", - "legal", - "license", - "metadata", - "package", - "package.json", - "standards" - ], - "license": "(MIT AND CC-BY-3.0)", - "maintainers": [ - { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - } - ], - "name": "spdx-expression-parse", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/kemitchell/spdx-expression-parse.js.git" - }, - "scripts": { - "prepublish": "node generate-parser.js | uglifyjs > parser.generated.js", - "pretest": "npm run prepublish", - "test": "defence -i javascript README.md | replace-require-self | node" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/parser.generated.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/parser.generated.js deleted file mode 100644 index 7d9665a8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-expression-parse/parser.generated.js +++ /dev/null @@ -1 +0,0 @@ -var spdxparse=function(){var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,7],$V3=[1,4],$V4=[1,9],$V5=[1,10],$V6=[5,14,15,17],$V7=[5,12,14,15,17];var parser={trace:function trace(){},yy:{},symbols_:{error:2,start:3,expression:4,EOS:5,simpleExpression:6,LICENSE:7,PLUS:8,LICENSEREF:9,DOCUMENTREF:10,COLON:11,WITH:12,EXCEPTION:13,AND:14,OR:15,OPEN:16,CLOSE:17,$accept:0,$end:1},terminals_:{2:"error",5:"EOS",7:"LICENSE",8:"PLUS",9:"LICENSEREF",10:"DOCUMENTREF",11:"COLON",12:"WITH",13:"EXCEPTION",14:"AND",15:"OR",16:"OPEN",17:"CLOSE"},productions_:[0,[3,2],[6,1],[6,2],[6,1],[6,3],[4,1],[4,3],[4,3],[4,3],[4,3]],performAction:function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$){var $0=$$.length-1;switch(yystate){case 1:return this.$=$$[$0-1];break;case 2:case 4:case 5:this.$={license:yytext};break;case 3:this.$={license:$$[$0-1],plus:true};break;case 6:this.$=$$[$0];break;case 7:this.$={exception:$$[$0]};this.$.license=$$[$0-2].license;if($$[$0-2].hasOwnProperty("plus")){this.$.plus=$$[$0-2].plus}break;case 8:this.$={conjunction:"and",left:$$[$0-2],right:$$[$0]};break;case 9:this.$={conjunction:"or",left:$$[$0-2],right:$$[$0]};break;case 10:this.$=$$[$0-1];break}},table:[{3:1,4:2,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{1:[3]},{5:[1,8],14:$V4,15:$V5},o($V6,[2,6],{12:[1,11]}),{4:12,6:3,7:$V0,9:$V1,10:$V2,16:$V3},o($V7,[2,2],{8:[1,13]}),o($V7,[2,4]),{11:[1,14]},{1:[2,1]},{4:15,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{4:16,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{13:[1,17]},{14:$V4,15:$V5,17:[1,18]},o($V7,[2,3]),{9:[1,19]},o($V6,[2,8]),o([5,15,17],[2,9],{14:$V4}),o($V6,[2,7]),o($V6,[2,10]),o($V7,[2,5])],defaultActions:{8:[2,1]},parseError:function parseError(str,hash){if(hash.recoverable){this.trace(str)}else{throw new Error(str)}},parse:function parse(input){var self=this,stack=[0],tstack=[],vstack=[null],lstack=[],table=this.table,yytext="",yylineno=0,yyleng=0,recovering=0,TERROR=2,EOF=1;var args=lstack.slice.call(arguments,1);var lexer=Object.create(this.lexer);var sharedState={yy:{}};for(var k in this.yy){if(Object.prototype.hasOwnProperty.call(this.yy,k)){sharedState.yy[k]=this.yy[k]}}lexer.setInput(input,sharedState.yy);sharedState.yy.lexer=lexer;sharedState.yy.parser=this;if(typeof lexer.yylloc=="undefined"){lexer.yylloc={}}var yyloc=lexer.yylloc;lstack.push(yyloc);var ranges=lexer.options&&lexer.options.ranges;if(typeof sharedState.yy.parseError==="function"){this.parseError=sharedState.yy.parseError}else{this.parseError=Object.getPrototypeOf(this).parseError}function popStack(n){stack.length=stack.length-2*n;vstack.length=vstack.length-n;lstack.length=lstack.length-n}_token_stack:function lex(){var token;token=lexer.lex()||EOF;if(typeof token!=="number"){token=self.symbols_[token]||token}return token}var symbol,preErrorSymbol,state,action,a,r,yyval={},p,len,newState,expected;while(true){state=stack[stack.length-1];if(this.defaultActions[state]){action=this.defaultActions[state]}else{if(symbol===null||typeof symbol=="undefined"){symbol=lex()}action=table[state]&&table[state][symbol]}if(typeof action==="undefined"||!action.length||!action[0]){var errStr="";expected=[];for(p in table[state]){if(this.terminals_[p]&&p>TERROR){expected.push("'"+this.terminals_[p]+"'")}}if(lexer.showPosition){errStr="Parse error on line "+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(", ")+", got '"+(this.terminals_[symbol]||symbol)+"'"}else{errStr="Parse error on line "+(yylineno+1)+": Unexpected "+(symbol==EOF?"end of input":"'"+(this.terminals_[symbol]||symbol)+"'")}this.parseError(errStr,{text:lexer.match,token:this.terminals_[symbol]||symbol,line:lexer.yylineno,loc:yyloc,expected:expected})}if(action[0]instanceof Array&&action.length>1){throw new Error("Parse Error: multiple actions possible at state: "+state+", token: "+symbol)}switch(action[0]){case 1:stack.push(symbol);vstack.push(lexer.yytext);lstack.push(lexer.yylloc);stack.push(action[1]);symbol=null;if(!preErrorSymbol){yyleng=lexer.yyleng;yytext=lexer.yytext;yylineno=lexer.yylineno;yyloc=lexer.yylloc;if(recovering>0){recovering--}}else{symbol=preErrorSymbol;preErrorSymbol=null}break;case 2:len=this.productions_[action[1]][1];yyval.$=vstack[vstack.length-len];yyval._$={first_line:lstack[lstack.length-(len||1)].first_line,last_line:lstack[lstack.length-1].last_line,first_column:lstack[lstack.length-(len||1)].first_column,last_column:lstack[lstack.length-1].last_column};if(ranges){yyval._$.range=[lstack[lstack.length-(len||1)].range[0],lstack[lstack.length-1].range[1]]}r=this.performAction.apply(yyval,[yytext,yyleng,yylineno,sharedState.yy,action[1],vstack,lstack].concat(args));if(typeof r!=="undefined"){return r}if(len){stack=stack.slice(0,-1*len*2);vstack=vstack.slice(0,-1*len);lstack=lstack.slice(0,-1*len)}stack.push(this.productions_[action[1]][0]);vstack.push(yyval.$);lstack.push(yyval._$);newState=table[stack[stack.length-2]][stack[stack.length-1]];stack.push(newState);break;case 3:return true}}return true}};var lexer=function(){var lexer={EOF:1,parseError:function parseError(str,hash){if(this.yy.parser){this.yy.parser.parseError(str,hash)}else{throw new Error(str)}},setInput:function(input,yy){this.yy=yy||this.yy||{};this._input=input;this._more=this._backtrack=this.done=false;this.yylineno=this.yyleng=0;this.yytext=this.matched=this.match="";this.conditionStack=["INITIAL"];this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0};if(this.options.ranges){this.yylloc.range=[0,0]}this.offset=0;return this},input:function(){var ch=this._input[0];this.yytext+=ch;this.yyleng++;this.offset++;this.match+=ch;this.matched+=ch;var lines=ch.match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno++;this.yylloc.last_line++}else{this.yylloc.last_column++}if(this.options.ranges){this.yylloc.range[1]++}this._input=this._input.slice(1);return ch},unput:function(ch){var len=ch.length;var lines=ch.split(/(?:\r\n?|\n)/g);this._input=ch+this._input;this.yytext=this.yytext.substr(0,this.yytext.length-len);this.offset-=len;var oldLines=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1);this.matched=this.matched.substr(0,this.matched.length-1);if(lines.length-1){this.yylineno-=lines.length-1}var r=this.yylloc.range;this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:lines?(lines.length===oldLines.length?this.yylloc.first_column:0)+oldLines[oldLines.length-lines.length].length-lines[0].length:this.yylloc.first_column-len};if(this.options.ranges){this.yylloc.range=[r[0],r[0]+this.yyleng-len]}this.yyleng=this.yytext.length;return this},more:function(){this._more=true;return this},reject:function(){if(this.options.backtrack_lexer){this._backtrack=true}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var past=this.matched.substr(0,this.matched.length-this.match.length);return(past.length>20?"...":"")+past.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var next=this.match;if(next.length<20){next+=this._input.substr(0,20-next.length)}return(next.substr(0,20)+(next.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var pre=this.pastInput();var c=new Array(pre.length+1).join("-");return pre+this.upcomingInput()+"\n"+c+"^"},test_match:function(match,indexed_rule){var token,lines,backup;if(this.options.backtrack_lexer){backup={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done};if(this.options.ranges){backup.yylloc.range=this.yylloc.range.slice(0)}}lines=match[0].match(/(?:\r\n?|\n).*/g);if(lines){this.yylineno+=lines.length}this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:lines?lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+match[0].length};this.yytext+=match[0];this.match+=match[0];this.matches=match;this.yyleng=this.yytext.length;if(this.options.ranges){this.yylloc.range=[this.offset,this.offset+=this.yyleng]}this._more=false;this._backtrack=false;this._input=this._input.slice(match[0].length);this.matched+=match[0];token=this.performAction.call(this,this.yy,this,indexed_rule,this.conditionStack[this.conditionStack.length-1]);if(this.done&&this._input){this.done=false}if(token){return token}else if(this._backtrack){for(var k in backup){this[k]=backup[k]}return false}return false},next:function(){if(this.done){return this.EOF}if(!this._input){this.done=true}var token,match,tempMatch,index;if(!this._more){this.yytext="";this.match=""}var rules=this._currentRules();for(var i=0;imatch[0].length)){match=tempMatch;index=i;if(this.options.backtrack_lexer){token=this.test_match(tempMatch,rules[i]);if(token!==false){return token}else if(this._backtrack){match=false;continue}else{return false}}else if(!this.options.flex){break}}}if(match){token=this.test_match(match,rules[index]);if(token!==false){return token}return false}if(this._input===""){return this.EOF}else{return this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}},lex:function lex(){var r=this.next();if(r){return r}else{return this.lex()}},begin:function begin(condition){this.conditionStack.push(condition)},popState:function popState(){var n=this.conditionStack.length-1;if(n>0){return this.conditionStack.pop()}else{return this.conditionStack[0]}},_currentRules:function _currentRules(){if(this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules}else{return this.conditions["INITIAL"].rules}},topState:function topState(n){n=this.conditionStack.length-1-Math.abs(n||0);if(n>=0){return this.conditionStack[n]}else{return"INITIAL"}},pushState:function pushState(condition){this.begin(condition)},stateStackSize:function stateStackSize(){return this.conditionStack.length},options:{},performAction:function anonymous(yy,yy_,$avoiding_name_collisions,YY_START){var YYSTATE=YY_START;switch($avoiding_name_collisions){case 0:return 5;break;case 1:break;case 2:return 8;break;case 3:return 16;break;case 4:return 17;break;case 5:return 11;break;case 6:return 10;break;case 7:return 9;break;case 8:return 14;break;case 9:return 15;break;case 10:return 12;break;case 11:return 7;break;case 12:return 7;break;case 13:return 7;break;case 14:return 13;break;case 15:return 13;break;case 16:return 13;break;case 17:return 13;break;case 18:return 13;break;case 19:return 13;break;case 20:return 13;break;case 21:return 13;break;case 22:return 7;break;case 23:return 7;break;case 24:return 13;break;case 25:return 13;break;case 26:return 13;break;case 27:return 7;break;case 28:return 13;break;case 29:return 13;break;case 30:return 13;break;case 31:return 7;break;case 32:return 7;break;case 33:return 13;break;case 34:return 13;break;case 35:return 13;break;case 36:return 7;break;case 37:return 13;break;case 38:return 7;break;case 39:return 7;break;case 40:return 7;break;case 41:return 7;break;case 42:return 7;break;case 43:return 7;break;case 44:return 7;break;case 45:return 7;break;case 46:return 7;break;case 47:return 7;break;case 48:return 7;break;case 49:return 7;break;case 50:return 7;break;case 51:return 13;break;case 52:return 7;break;case 53:return 7;break;case 54:return 7;break;case 55:return 13;break;case 56:return 7;break;case 57:return 7;break;case 58:return 7;break;case 59:return 13;break;case 60:return 7;break;case 61:return 13;break;case 62:return 7;break;case 63:return 7;break;case 64:return 7;break;case 65:return 7;break;case 66:return 7;break;case 67:return 7;break;case 68:return 7;break;case 69:return 7;break;case 70:return 7;break;case 71:return 7;break;case 72:return 7;break;case 73:return 7;break;case 74:return 7;break;case 75:return 7;break;case 76:return 7;break;case 77:return 7;break;case 78:return 7;break;case 79:return 7;break;case 80:return 7;break;case 81:return 7;break;case 82:return 7;break;case 83:return 7;break;case 84:return 7;break;case 85:return 7;break;case 86:return 7;break;case 87:return 7;break;case 88:return 7;break;case 89:return 7;break;case 90:return 7;break;case 91:return 7;break;case 92:return 7;break;case 93:return 7;break;case 94:return 7;break;case 95:return 7;break;case 96:return 7;break;case 97:return 7;break;case 98:return 7;break;case 99:return 7;break;case 100:return 7;break;case 101:return 7;break;case 102:return 7;break;case 103:return 7;break;case 104:return 7;break;case 105:return 7;break;case 106:return 7;break;case 107:return 7;break;case 108:return 7;break;case 109:return 7;break;case 110:return 7;break;case 111:return 7;break;case 112:return 7;break;case 113:return 7;break;case 114:return 7;break;case 115:return 7;break;case 116:return 7;break;case 117:return 7;break;case 118:return 7;break;case 119:return 7;break;case 120:return 7;break;case 121:return 7;break;case 122:return 7;break;case 123:return 7;break;case 124:return 7;break;case 125:return 7;break;case 126:return 7;break;case 127:return 7;break;case 128:return 7;break;case 129:return 7;break;case 130:return 7;break;case 131:return 7;break;case 132:return 7;break;case 133:return 7;break;case 134:return 7;break;case 135:return 7;break;case 136:return 7;break;case 137:return 7;break;case 138:return 7;break;case 139:return 7;break;case 140:return 7;break;case 141:return 7;break;case 142:return 7;break;case 143:return 7;break;case 144:return 7;break;case 145:return 7;break;case 146:return 7;break;case 147:return 7;break;case 148:return 7;break;case 149:return 7;break;case 150:return 7;break;case 151:return 7;break;case 152:return 7;break;case 153:return 7;break;case 154:return 7;break;case 155:return 7;break;case 156:return 7;break;case 157:return 7;break;case 158:return 7;break;case 159:return 7;break;case 160:return 7;break;case 161:return 7;break;case 162:return 7;break;case 163:return 7;break;case 164:return 7;break;case 165:return 7;break;case 166:return 7;break;case 167:return 7;break;case 168:return 7;break;case 169:return 7;break;case 170:return 7;break;case 171:return 7;break;case 172:return 7;break;case 173:return 7;break;case 174:return 7;break;case 175:return 7;break;case 176:return 7;break;case 177:return 7;break;case 178:return 7;break;case 179:return 7;break;case 180:return 7;break;case 181:return 7;break;case 182:return 7;break;case 183:return 7;break;case 184:return 7;break;case 185:return 7;break;case 186:return 7;break;case 187:return 7;break;case 188:return 7;break;case 189:return 7;break;case 190:return 7;break;case 191:return 7;break;case 192:return 7;break;case 193:return 7;break;case 194:return 7;break;case 195:return 7;break;case 196:return 7;break;case 197:return 7;break;case 198:return 7;break;case 199:return 7;break;case 200:return 7;break;case 201:return 7;break;case 202:return 7;break;case 203:return 7;break;case 204:return 7;break;case 205:return 7;break;case 206:return 7;break;case 207:return 7;break;case 208:return 7;break;case 209:return 7;break;case 210:return 7;break;case 211:return 7;break;case 212:return 7;break;case 213:return 7;break;case 214:return 7;break;case 215:return 7;break;case 216:return 7;break;case 217:return 7;break;case 218:return 7;break;case 219:return 7;break;case 220:return 7;break;case 221:return 7;break;case 222:return 7;break;case 223:return 7;break;case 224:return 7;break;case 225:return 7;break;case 226:return 7;break;case 227:return 7;break;case 228:return 7;break;case 229:return 7;break;case 230:return 7;break;case 231:return 7;break;case 232:return 7;break;case 233:return 7;break;case 234:return 7;break;case 235:return 7;break;case 236:return 7;break;case 237:return 7;break;case 238:return 7;break;case 239:return 7;break;case 240:return 7;break;case 241:return 7;break;case 242:return 7;break;case 243:return 7;break;case 244:return 7;break;case 245:return 7;break;case 246:return 7;break;case 247:return 7;break;case 248:return 7;break;case 249:return 7;break;case 250:return 7;break;case 251:return 7;break;case 252:return 7;break;case 253:return 7;break;case 254:return 7;break;case 255:return 7;break;case 256:return 7;break;case 257:return 7;break;case 258:return 7;break;case 259:return 7;break;case 260:return 7;break;case 261:return 7;break;case 262:return 7;break;case 263:return 7;break;case 264:return 7;break;case 265:return 7;break;case 266:return 7;break;case 267:return 7;break;case 268:return 7;break;case 269:return 7;break;case 270:return 7;break;case 271:return 7;break;case 272:return 7;break;case 273:return 7;break;case 274:return 7;break;case 275:return 7;break;case 276:return 7;break;case 277:return 7;break;case 278:return 7;break;case 279:return 7;break;case 280:return 7;break;case 281:return 7;break;case 282:return 7;break;case 283:return 7;break;case 284:return 7;break;case 285:return 7;break;case 286:return 7;break;case 287:return 7;break;case 288:return 7;break;case 289:return 7;break;case 290:return 7;break;case 291:return 7;break;case 292:return 7;break;case 293:return 7;break;case 294:return 7;break;case 295:return 7;break;case 296:return 7;break;case 297:return 7;break;case 298:return 7;break;case 299:return 7;break;case 300:return 7;break;case 301:return 7;break;case 302:return 7;break;case 303:return 7;break;case 304:return 7;break;case 305:return 7;break;case 306:return 7;break;case 307:return 7;break;case 308:return 7;break;case 309:return 7;break;case 310:return 7;break;case 311:return 7;break;case 312:return 7;break;case 313:return 7;break;case 314:return 7;break;case 315:return 7;break;case 316:return 7;break;case 317:return 7;break;case 318:return 7;break;case 319:return 7;break;case 320:return 7;break;case 321:return 7;break;case 322:return 7;break;case 323:return 7;break;case 324:return 7;break;case 325:return 7;break;case 326:return 7;break;case 327:return 7;break;case 328:return 7;break;case 329:return 7;break;case 330:return 7;break;case 331:return 7;break;case 332:return 7;break;case 333:return 7;break;case 334:return 7;break;case 335:return 7;break;case 336:return 7;break;case 337:return 7;break;case 338:return 7;break}},rules:[/^(?:$)/,/^(?:\s+)/,/^(?:\+)/,/^(?:\()/,/^(?:\))/,/^(?::)/,/^(?:DocumentRef-([0-9A-Za-z-+.]+))/,/^(?:LicenseRef-([0-9A-Za-z-+.]+))/,/^(?:AND)/,/^(?:OR)/,/^(?:WITH)/,/^(?:MPL-2\.0-no-copyleft-exception)/,/^(?:CNRI-Python-GPL-Compatible)/,/^(?:BSD-3-Clause-Attribution)/,/^(?:WxWindows-exception-3\.1)/,/^(?:Classpath-exception-2\.0)/,/^(?:gnu-javamail-exception)/,/^(?:freertos-exception-2\.0)/,/^(?:i2p-gpl-java-exception)/,/^(?:Autoconf-exception-2\.0)/,/^(?:Nokia-Qt-exception-1\.1)/,/^(?:Autoconf-exception-3\.0)/,/^(?:zlib-acknowledgement)/,/^(?:BSD-2-Clause-FreeBSD)/,/^(?:u-boot-exception-2\.0)/,/^(?:Bison-exception-2\.2)/,/^(?:CLISP-exception-2\.0)/,/^(?:BSD-2-Clause-NetBSD)/,/^(?:FLTK-exception-2\.0)/,/^(?:eCos-exception-2\.0)/,/^(?:Font-exception-2\.0)/,/^(?:BSD-3-Clause-Clear)/,/^(?:BSD-3-Clause-LBNL)/,/^(?:GCC-exception-3\.1)/,/^(?:Qwt-exception-1\.0)/,/^(?:GCC-exception-2\.0)/,/^(?:Artistic-1\.0-Perl)/,/^(?:Libtool-exception)/,/^(?:Artistic-1\.0-cl8)/,/^(?:CC-BY-NC-SA-4\.0)/,/^(?:CC-BY-NC-SA-1\.0)/,/^(?:CC-BY-NC-ND-4\.0)/,/^(?:CC-BY-NC-SA-3\.0)/,/^(?:CC-BY-NC-ND-3\.0)/,/^(?:CC-BY-NC-SA-2\.5)/,/^(?:CC-BY-NC-ND-2\.0)/,/^(?:CC-BY-NC-ND-1\.0)/,/^(?:CC-BY-NC-SA-2\.0)/,/^(?:MIT-advertising)/,/^(?:BSD-4-Clause-UC)/,/^(?:CC-BY-NC-ND-2\.5)/,/^(?:FLTK-exception)/,/^(?:SugarCRM-1\.1\.3)/,/^(?:CrystalStacker)/,/^(?:BSD-Protection)/,/^(?:LZMA-exception)/,/^(?:BitTorrent-1\.1)/,/^(?:BitTorrent-1\.0)/,/^(?:Frameworx-1\.0)/,/^(?:mif-exception)/,/^(?:Interbase-1\.0)/,/^(?:389-exception)/,/^(?:HaskellReport)/,/^(?:CC-BY-NC-3\.0)/,/^(?:CC-BY-ND-4\.0)/,/^(?:CC-BY-NC-1\.0)/,/^(?:CC-BY-NC-2\.0)/,/^(?:CC-BY-NC-2\.5)/,/^(?:CC-BY-SA-4\.0)/,/^(?:CC-BY-NC-4\.0)/,/^(?:W3C-19980720)/,/^(?:BSD-4-Clause)/,/^(?:Artistic-1\.0)/,/^(?:BSD-3-Clause)/,/^(?:CC-BY-ND-1\.0)/,/^(?:BSD-2-Clause)/,/^(?:CC-BY-ND-2\.0)/,/^(?:CC-BY-ND-2\.5)/,/^(?:CC-BY-ND-3\.0)/,/^(?:Artistic-2\.0)/,/^(?:CC-BY-SA-1\.0)/,/^(?:CC-BY-SA-2\.0)/,/^(?:CC-BY-SA-2\.5)/,/^(?:CC-BY-SA-3\.0)/,/^(?:XFree86-1\.1)/,/^(?:OLDAP-2\.0\.1)/,/^(?:bzip2-1\.0\.6)/,/^(?:OLDAP-2\.2\.1)/,/^(?:ImageMagick)/,/^(?:Unicode-TOU)/,/^(?:Adobe-Glyph)/,/^(?:CUA-OPL-1\.0)/,/^(?:CNRI-Jython)/,/^(?:CNRI-Python)/,/^(?:bzip2-1\.0\.5)/,/^(?:OLDAP-2\.2\.2)/,/^(?:PostgreSQL)/,/^(?:Apache-1\.1)/,/^(?:CECILL-1\.0)/,/^(?:Apache-2\.0)/,/^(?:Zimbra-1\.4)/,/^(?:CECILL-1\.1)/,/^(?:Zimbra-1\.3)/,/^(?:Adobe-2006)/,/^(?:JasPer-2\.0)/,/^(?:CECILL-2\.0)/,/^(?:TORQUE-1\.1)/,/^(?:CECILL-2\.1)/,/^(?:Watcom-1\.0)/,/^(?:Intel-ACPI)/,/^(?:ClArtistic)/,/^(?:Spencer-99)/,/^(?:Condor-1\.1)/,/^(?:Spencer-94)/,/^(?:gSOAP-1\.3b)/,/^(?:EUDatagrid)/,/^(?:Spencer-86)/,/^(?:Python-2\.0)/,/^(?:RHeCos-1\.1)/,/^(?:CATOSL-1\.1)/,/^(?:Apache-1\.0)/,/^(?:FreeImage)/,/^(?:SGI-B-1\.1)/,/^(?:SGI-B-1\.0)/,/^(?:SimPL-2\.0)/,/^(?:Sleepycat)/,/^(?:Crossword)/,/^(?:ErlPL-1\.1)/,/^(?:CPOL-1\.02)/,/^(?:OLDAP-2\.8)/,/^(?:OLDAP-2\.7)/,/^(?:OLDAP-2\.6)/,/^(?:CC-BY-1\.0)/,/^(?:OLDAP-2\.5)/,/^(?:OLDAP-2\.4)/,/^(?:OLDAP-2\.3)/,/^(?:SISSL-1\.2)/,/^(?:Unlicense)/,/^(?:SGI-B-2\.0)/,/^(?:OLDAP-2\.2)/,/^(?:OLDAP-2\.1)/,/^(?:CC-BY-2\.5)/,/^(?:D-FSL-1\.0)/,/^(?:LPPL-1\.3a)/,/^(?:LPPL-1\.3c)/,/^(?:OLDAP-2\.0)/,/^(?:CC-BY-3\.0)/,/^(?:Leptonica)/,/^(?:OLDAP-1\.4)/,/^(?:OLDAP-1\.3)/,/^(?:OLDAP-1\.2)/,/^(?:OLDAP-1\.1)/,/^(?:MakeIndex)/,/^(?:CC-BY-4\.0)/,/^(?:NPOSL-3\.0)/,/^(?:CC-BY-2\.0)/,/^(?:PHP-3\.01)/,/^(?:ANTLR-PD)/,/^(?:APSL-1\.0)/,/^(?:MIT-enna)/,/^(?:IBM-pibs)/,/^(?:APSL-1\.1)/,/^(?:APSL-1\.2)/,/^(?:Beerware)/,/^(?:EUPL-1\.0)/,/^(?:EUPL-1\.1)/,/^(?:diffmark)/,/^(?:CDDL-1\.0)/,/^(?:Zend-2\.0)/,/^(?:CDDL-1\.1)/,/^(?:CPAL-1\.0)/,/^(?:APSL-2\.0)/,/^(?:LPPL-1\.0)/,/^(?:AGPL-1\.0)/,/^(?:Giftware)/,/^(?:Abstyles)/,/^(?:LPPL-1\.1)/,/^(?:LPPL-1\.2)/,/^(?:Sendmail)/,/^(?:CECILL-B)/,/^(?:AGPL-3\.0)/,/^(?:GFDL-1\.1)/,/^(?:GFDL-1\.2)/,/^(?:GFDL-1\.3)/,/^(?:RPSL-1\.0)/,/^(?:LPL-1\.02)/,/^(?:CECILL-C)/,/^(?:Afmparse)/,/^(?:LGPL-2\.1)/,/^(?:PDDL-1\.0)/,/^(?:ODbL-1\.0)/,/^(?:OCLC-2\.0)/,/^(?:LGPL-3\.0)/,/^(?:Newsletr)/,/^(?:Motosoto)/,/^(?:NBPL-1\.0)/,/^(?:NASA-1\.3)/,/^(?:LGPL-2\.0)/,/^(?:FSFULLR)/,/^(?:MPL-2\.0)/,/^(?:Multics)/,/^(?:AFL-1\.1)/,/^(?:MPL-1\.1)/,/^(?:AFL-1\.2)/,/^(?:MPL-1\.0)/,/^(?:AFL-2\.0)/,/^(?:AFL-2\.1)/,/^(?:AFL-3\.0)/,/^(?:NPL-1\.0)/,/^(?:NPL-1\.1)/,/^(?:APL-1\.0)/,/^(?:Aladdin)/,/^(?:AMDPLPA)/,/^(?:BSL-1\.0)/,/^(?:Borceux)/,/^(?:Caldera)/,/^(?:MIT-CMU)/,/^(?:CPL-1\.0)/,/^(?:ZPL-2\.1)/,/^(?:ZPL-2\.0)/,/^(?:ZPL-1\.1)/,/^(?:CC0-1\.0)/,/^(?:YPL-1\.1)/,/^(?:LPL-1\.0)/,/^(?:libtiff)/,/^(?:YPL-1\.0)/,/^(?:Dotseqn)/,/^(?:Latex2e)/,/^(?:VSL-1\.0)/,/^(?:VOSTROM)/,/^(?:UPL-1\.0)/,/^(?:dvipdfm)/,/^(?:EPL-1\.0)/,/^(?:ECL-1\.0)/,/^(?:ECL-2\.0)/,/^(?:SPL-1\.0)/,/^(?:IPL-1\.0)/,/^(?:EFL-1\.0)/,/^(?:EFL-2\.0)/,/^(?:OPL-1\.0)/,/^(?:OSL-1\.0)/,/^(?:OSL-1\.1)/,/^(?:OSL-2\.0)/,/^(?:OSL-2\.1)/,/^(?:OSL-3\.0)/,/^(?:OpenSSL)/,/^(?:PHP-3\.0)/,/^(?:gnuplot)/,/^(?:Entessa)/,/^(?:GPL-3\.0)/,/^(?:Eurosym)/,/^(?:psutils)/,/^(?:GPL-2\.0)/,/^(?:QPL-1\.0)/,/^(?:MIT-feh)/,/^(?:OFL-1\.1)/,/^(?:GPL-1\.0)/,/^(?:RPL-1\.1)/,/^(?:RPL-1\.5)/,/^(?:OFL-1\.0)/,/^(?:Saxpath)/,/^(?:Bahyph)/,/^(?:RSA-MD)/,/^(?:Naumen)/,/^(?:NetCDF)/,/^(?:mpich2)/,/^(?:Glulxe)/,/^(?:APAFML)/,/^(?:psfrag)/,/^(?:Plexus)/,/^(?:SAX-PD)/,/^(?:MITNFA)/,/^(?:eGenix)/,/^(?:iMatix)/,/^(?:Imlib2)/,/^(?:Libpng)/,/^(?:xinetd)/,/^(?:LGPLLR)/,/^(?:Wsuipa)/,/^(?:SMLNJ)/,/^(?:RSCPL)/,/^(?:SISSL)/,/^(?:Rdisc)/,/^(?:Noweb)/,/^(?:Qhull)/,/^(?:Nunit)/,/^(?:GL2PS)/,/^(?:TMate)/,/^(?:MirOS)/,/^(?:MS-RL)/,/^(?:Intel)/,/^(?:MS-PL)/,/^(?:OGTSL)/,/^(?:WTFPL)/,/^(?:Nokia)/,/^(?:XSkat)/,/^(?:Glide)/,/^(?:FSFUL)/,/^(?:AMPAS)/,/^(?:Xerox)/,/^(?:0BSD)/,/^(?:Ruby)/,/^(?:JSON)/,/^(?:MTLL)/,/^(?:Cube)/,/^(?:Zlib)/,/^(?:NCSA)/,/^(?:TOSL)/,/^(?:Xnet)/,/^(?:DSDP)/,/^(?:HPND)/,/^(?:Barr)/,/^(?:SNIA)/,/^(?:ADSL)/,/^(?:NLPL)/,/^(?:Fair)/,/^(?:NOSL)/,/^(?:NGPL)/,/^(?:SCEA)/,/^(?:Zed)/,/^(?:DOC)/,/^(?:ICU)/,/^(?:Vim)/,/^(?:xpp)/,/^(?:OML)/,/^(?:AAL)/,/^(?:AML)/,/^(?:W3C)/,/^(?:ISC)/,/^(?:IPA)/,/^(?:X11)/,/^(?:MIT)/,/^(?:FTL)/,/^(?:IJG)/,/^(?:TCL)/,/^(?:SWL)/,/^(?:NTP)/,/^(?:Mup)/,/^(?:NRL)/],conditions:{INITIAL:{rules:[0,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,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338],inclusive:true}}};return lexer}();parser.lexer=lexer;function Parser(){this.yy={}}Parser.prototype=parser;parser.Parser=Parser;return new Parser}();if(typeof require!=="undefined"&&typeof exports!=="undefined"){exports.parser=spdxparse;exports.Parser=spdxparse.Parser;exports.parse=function(){return spdxparse.parse.apply(spdxparse,arguments)};exports.main=function commonjsMain(args){if(!args[1]){console.log("Usage: "+args[0]+" FILE");process.exit(1)}var source=require("fs").readFileSync(require("path").normalize(args[1]),"utf8");return exports.parser.parse(source)};if(typeof module!=="undefined"&&require.main===module){exports.main(process.argv.slice(1))}} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/LICENSE deleted file mode 100644 index 68a49daa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -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 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. - -For more information, please refer to diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/README.md deleted file mode 100755 index 92523532..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# spdx-license-ids - -A list of [SPDX license](https://spdx.org/licenses/) identifiers - -[**Download JSON**](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids.json) - -## Use as a JavaScript Library - -[![NPM version](https://img.shields.io/npm/v/spdx-license-ids.svg)](https://www.npmjs.org/package/spdx-license-ids) -[![Bower version](https://img.shields.io/bower/v/spdx-license-ids.svg)](https://github.com/shinnn/spdx-license-ids/releases) -[![Build Status](https://travis-ci.org/shinnn/spdx-license-ids.svg?branch=master)](https://travis-ci.org/shinnn/spdx-license-ids) -[![Coverage Status](https://img.shields.io/coveralls/shinnn/spdx-license-ids.svg)](https://coveralls.io/r/shinnn/spdx-license-ids) -[![devDependency Status](https://david-dm.org/shinnn/spdx-license-ids/dev-status.svg)](https://david-dm.org/shinnn/spdx-license-ids#info=devDependencies) - -### Installation - -#### Package managers - -##### [npm](https://www.npmjs.com/) - -```sh -npm install spdx-license-ids -``` - -##### [bower](http://bower.io/) - -```sh -bower install spdx-license-ids -``` - -##### [Duo](http://duojs.org/) - -```javascript -const spdxLicenseIds = require('shinnn/spdx-license-ids'); -``` - -#### Standalone - -[Download the script file directly.](https://raw.githubusercontent.com/shinnn/spdx-license-ids/master/spdx-license-ids-browser.js) - -### API - -#### spdxLicenseIds - -Type: `Array` of `String` - -It returns an array of SPDX license identifiers. - -```javascript -const spdxLicenseIds = require('spdx-license-ids'); //=> ['Glide', 'Abstyles', 'AFL-1.1', ... ] -``` - -## License - -[The Unlicense](./LICENSE). diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/package.json deleted file mode 100644 index b325a21a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/package.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "_args": [ - [ - "spdx-license-ids@^1.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/spdx-correct" - ] - ], - "_from": "spdx-license-ids@>=1.0.2 <2.0.0", - "_id": "spdx-license-ids@1.2.1", - "_inCache": true, - "_installable": true, - "_location": "/spdx-license-ids", - "_nodeVersion": "5.10.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/spdx-license-ids-1.2.1.tgz_1460030484408_0.8782658798154444" - }, - "_npmUser": { - "email": "snnskwtnb@gmail.com", - "name": "shinnn" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "spdx-license-ids", - "raw": "spdx-license-ids@^1.0.2", - "rawSpec": "^1.0.2", - "scope": null, - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/spdx-correct", - "/spdx-expression-parse" - ], - "_resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz", - "_shasum": "d07ea17a4d2fd9351f9d94e2ff9cec74180fe8f3", - "_shrinkwrap": null, - "_spec": "spdx-license-ids@^1.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/spdx-correct", - "author": { - "name": "Shinnosuke Watanabe", - "url": "https://github.com/shinnn" - }, - "bugs": { - "url": "https://github.com/shinnn/spdx-license-ids/issues" - }, - "dependencies": {}, - "description": "A list of SPDX license identifiers", - "devDependencies": { - "@shinnn/eslint-config-node": "^2.0.0", - "chalk": "^1.1.3", - "eslint": "^2.7.0", - "get-spdx-license-ids": "^1.0.0", - "istanbul": "^0.4.3", - "loud-rejection": "^1.3.0", - "rimraf-promise": "^2.0.0", - "stringify-object": "^2.3.1", - "tap-spec": "^4.1.1", - "tape": "^4.5.1", - "write-file-atomically": "1.0.0" - }, - "directories": {}, - "dist": { - "shasum": "d07ea17a4d2fd9351f9d94e2ff9cec74180fe8f3", - "tarball": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz" - }, - "files": [ - "spdx-license-ids.json" - ], - "gitHead": "e907f783792ee05a85dbf66acd24cf1c3067bb76", - "homepage": "https://github.com/shinnn/spdx-license-ids#readme", - "keywords": [ - "spdx", - "license", - "licenses", - "id", - "identifier", - "identifiers", - "json", - "array", - "oss", - "browser", - "client-side" - ], - "license": "Unlicense", - "main": "spdx-license-ids.json", - "maintainers": [ - { - "email": "snnskwtnb@gmail.com", - "name": "shinnn" - } - ], - "name": "spdx-license-ids", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/shinnn/spdx-license-ids.git" - }, - "scripts": { - "build": "node --strong_mode --harmony_destructuring build.js", - "coverage": "node --strong_mode node_modules/.bin/istanbul cover test.js", - "lint": "eslint --config @shinnn/node --env browser --ignore-path .gitignore .", - "pretest": "${npm_package_scripts_build} && ${npm_package_scripts_lint}", - "test": "node --strong_mode test.js | tap-spec" - }, - "version": "1.2.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/spdx-license-ids.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/spdx-license-ids.json deleted file mode 100644 index 4779e44f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/spdx-license-ids/spdx-license-ids.json +++ /dev/null @@ -1,330 +0,0 @@ -[ - "Glide", - "Abstyles", - "AFL-1.1", - "AFL-1.2", - "AFL-2.0", - "AFL-2.1", - "AFL-3.0", - "AMPAS", - "APL-1.0", - "Adobe-Glyph", - "APAFML", - "Adobe-2006", - "AGPL-1.0", - "Afmparse", - "Aladdin", - "ADSL", - "AMDPLPA", - "ANTLR-PD", - "Apache-1.0", - "Apache-1.1", - "Apache-2.0", - "AML", - "APSL-1.0", - "APSL-1.1", - "APSL-1.2", - "APSL-2.0", - "Artistic-1.0", - "Artistic-1.0-Perl", - "Artistic-1.0-cl8", - "Artistic-2.0", - "AAL", - "Bahyph", - "Barr", - "Beerware", - "BitTorrent-1.0", - "BitTorrent-1.1", - "BSL-1.0", - "Borceux", - "BSD-2-Clause", - "BSD-2-Clause-FreeBSD", - "BSD-2-Clause-NetBSD", - "BSD-3-Clause", - "BSD-3-Clause-Clear", - "BSD-4-Clause", - "BSD-Protection", - "BSD-3-Clause-Attribution", - "0BSD", - "BSD-4-Clause-UC", - "bzip2-1.0.5", - "bzip2-1.0.6", - "Caldera", - "CECILL-1.0", - "CECILL-1.1", - "CECILL-2.0", - "CECILL-2.1", - "CECILL-B", - "CECILL-C", - "ClArtistic", - "MIT-CMU", - "CNRI-Jython", - "CNRI-Python", - "CNRI-Python-GPL-Compatible", - "CPOL-1.02", - "CDDL-1.0", - "CDDL-1.1", - "CPAL-1.0", - "CPL-1.0", - "CATOSL-1.1", - "Condor-1.1", - "CC-BY-1.0", - "CC-BY-2.0", - "CC-BY-2.5", - "CC-BY-3.0", - "CC-BY-4.0", - "CC-BY-ND-1.0", - "CC-BY-ND-2.0", - "CC-BY-ND-2.5", - "CC-BY-ND-3.0", - "CC-BY-ND-4.0", - "CC-BY-NC-1.0", - "CC-BY-NC-2.0", - "CC-BY-NC-2.5", - "CC-BY-NC-3.0", - "CC-BY-NC-4.0", - "CC-BY-NC-ND-1.0", - "CC-BY-NC-ND-2.0", - "CC-BY-NC-ND-2.5", - "CC-BY-NC-ND-3.0", - "CC-BY-NC-ND-4.0", - "CC-BY-NC-SA-1.0", - "CC-BY-NC-SA-2.0", - "CC-BY-NC-SA-2.5", - "CC-BY-NC-SA-3.0", - "CC-BY-NC-SA-4.0", - "CC-BY-SA-1.0", - "CC-BY-SA-2.0", - "CC-BY-SA-2.5", - "CC-BY-SA-3.0", - "CC-BY-SA-4.0", - "CC0-1.0", - "Crossword", - "CrystalStacker", - "CUA-OPL-1.0", - "Cube", - "curl", - "D-FSL-1.0", - "diffmark", - "WTFPL", - "DOC", - "Dotseqn", - "DSDP", - "dvipdfm", - "EPL-1.0", - "ECL-1.0", - "ECL-2.0", - "eGenix", - "EFL-1.0", - "EFL-2.0", - "MIT-advertising", - "MIT-enna", - "Entessa", - "ErlPL-1.1", - "EUDatagrid", - "EUPL-1.0", - "EUPL-1.1", - "Eurosym", - "Fair", - "MIT-feh", - "Frameworx-1.0", - "FreeImage", - "FTL", - "FSFAP", - "FSFUL", - "FSFULLR", - "Giftware", - "GL2PS", - "Glulxe", - "AGPL-3.0", - "GFDL-1.1", - "GFDL-1.2", - "GFDL-1.3", - "GPL-1.0", - "GPL-2.0", - "GPL-3.0", - "LGPL-2.1", - "LGPL-3.0", - "LGPL-2.0", - "gnuplot", - "gSOAP-1.3b", - "HaskellReport", - "HPND", - "IBM-pibs", - "IPL-1.0", - "ICU", - "ImageMagick", - "iMatix", - "Imlib2", - "IJG", - "Info-ZIP", - "Intel-ACPI", - "Intel", - "Interbase-1.0", - "IPA", - "ISC", - "JasPer-2.0", - "JSON", - "LPPL-1.0", - "LPPL-1.1", - "LPPL-1.2", - "LPPL-1.3a", - "LPPL-1.3c", - "Latex2e", - "BSD-3-Clause-LBNL", - "Leptonica", - "LGPLLR", - "Libpng", - "libtiff", - "LAL-1.2", - "LAL-1.3", - "LiLiQ-P-1.1", - "LiLiQ-Rplus-1.1", - "LiLiQ-R-1.1", - "LPL-1.02", - "LPL-1.0", - "MakeIndex", - "MTLL", - "MS-PL", - "MS-RL", - "MirOS", - "MITNFA", - "MIT", - "Motosoto", - "MPL-1.0", - "MPL-1.1", - "MPL-2.0", - "MPL-2.0-no-copyleft-exception", - "mpich2", - "Multics", - "Mup", - "NASA-1.3", - "Naumen", - "NBPL-1.0", - "NetCDF", - "NGPL", - "NOSL", - "NPL-1.0", - "NPL-1.1", - "Newsletr", - "NLPL", - "Nokia", - "NPOSL-3.0", - "NLOD-1.0", - "Noweb", - "NRL", - "NTP", - "Nunit", - "OCLC-2.0", - "ODbL-1.0", - "PDDL-1.0", - "OCCT-PL", - "OGTSL", - "OLDAP-2.2.2", - "OLDAP-1.1", - "OLDAP-1.2", - "OLDAP-1.3", - "OLDAP-1.4", - "OLDAP-2.0", - "OLDAP-2.0.1", - "OLDAP-2.1", - "OLDAP-2.2", - "OLDAP-2.2.1", - "OLDAP-2.3", - "OLDAP-2.4", - "OLDAP-2.5", - "OLDAP-2.6", - "OLDAP-2.7", - "OLDAP-2.8", - "OML", - "OPL-1.0", - "OSL-1.0", - "OSL-1.1", - "OSL-2.0", - "OSL-2.1", - "OSL-3.0", - "OpenSSL", - "OSET-PL-2.1", - "PHP-3.0", - "PHP-3.01", - "Plexus", - "PostgreSQL", - "psfrag", - "psutils", - "Python-2.0", - "QPL-1.0", - "Qhull", - "Rdisc", - "RPSL-1.0", - "RPL-1.1", - "RPL-1.5", - "RHeCos-1.1", - "RSCPL", - "RSA-MD", - "Ruby", - "SAX-PD", - "Saxpath", - "SCEA", - "SWL", - "SMPPL", - "Sendmail", - "SGI-B-1.0", - "SGI-B-1.1", - "SGI-B-2.0", - "OFL-1.0", - "OFL-1.1", - "SimPL-2.0", - "Sleepycat", - "SNIA", - "Spencer-86", - "Spencer-94", - "Spencer-99", - "SMLNJ", - "SugarCRM-1.1.3", - "SISSL", - "SISSL-1.2", - "SPL-1.0", - "Watcom-1.0", - "TCL", - "Unlicense", - "TMate", - "TORQUE-1.1", - "TOSL", - "Unicode-TOU", - "UPL-1.0", - "NCSA", - "Vim", - "VOSTROM", - "VSL-1.0", - "W3C-19980720", - "W3C", - "Wsuipa", - "Xnet", - "X11", - "Xerox", - "XFree86-1.1", - "xinetd", - "xpp", - "XSkat", - "YPL-1.0", - "YPL-1.1", - "Zed", - "Zend-2.0", - "Zimbra-1.3", - "Zimbra-1.4", - "Zlib", - "zlib-acknowledgement", - "ZPL-1.1", - "ZPL-2.0", - "ZPL-2.1", - "eCos-2.0", - "GPL-2.0-with-autoconf-exception", - "GPL-2.0-with-bison-exception", - "GPL-2.0-with-classpath-exception", - "GPL-2.0-with-font-exception", - "GPL-2.0-with-GCC-exception", - "GPL-3.0-with-autoconf-exception", - "GPL-3.0-with-GCC-exception", - "StandardML-NJ", - "WXwindows" -] diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.travis.yml deleted file mode 100644 index dad2273c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/LICENCE deleted file mode 100644 index 171dd970..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -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. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/examples/pretty.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/examples/pretty.js deleted file mode 100644 index 2e891316..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/examples/pretty.js +++ /dev/null @@ -1,26 +0,0 @@ - -var inspect = require('util').inspect -var es = require('event-stream') //load event-stream -var split = require('../') - -if(!module.parent) { - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/index.js deleted file mode 100644 index ca57e0f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/index.js +++ /dev/null @@ -1,59 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - - -var through = require('through') -var Decoder = require('string_decoder').StringDecoder - -module.exports = split - -//TODO pass in a function to map across the lines. - -function split (matcher, mapper) { - var decoder = new Decoder() - var soFar = '' - if('function' === typeof matcher) - mapper = matcher, matcher = null - if (!matcher) - matcher = /\r?\n/ - - function emit(stream, piece) { - if(mapper) { - try { - piece = mapper(piece) - } - catch (err) { - return stream.emit('error', err) - } - if('undefined' !== typeof piece) - stream.queue(piece) - } - else - stream.queue(piece) - } - - function next (stream, buffer) { - var pieces = (soFar + buffer).split(matcher) - soFar = pieces.pop() - - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i] - emit(stream, piece) - } - } - - return through(function (b) { - next(this, decoder.write(b)) - }, - function () { - if(decoder.end) - next(this, decoder.end()) - if(soFar != null) - emit(this, soFar) - this.queue(null) - }) -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/package.json deleted file mode 100644 index 4b72d31d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_args": [ - [ - "split@0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream" - ] - ], - "_from": "split@>=0.2.0 <0.3.0", - "_id": "split@0.2.10", - "_inCache": true, - "_installable": true, - "_location": "/split", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "1.3.6", - "_phantomChildren": {}, - "_requested": { - "name": "split", - "raw": "split@0.2", - "rawSpec": "0.2", - "scope": null, - "spec": ">=0.2.0 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/event-stream" - ], - "_resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz", - "_shasum": "67097c601d697ce1368f418f06cd201cf0521a57", - "_shrinkwrap": null, - "_spec": "split@0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "http://bit.ly/dominictarr" - }, - "bugs": { - "url": "https://github.com/dominictarr/split/issues" - }, - "dependencies": { - "through": "2" - }, - "description": "split a Text Stream into a Line Stream", - "devDependencies": { - "asynct": "*", - "event-stream": "~3.0.2", - "it-is": "1", - "stream-spec": "~0.2", - "ubelt": "~2.9" - }, - "directories": {}, - "dist": { - "shasum": "67097c601d697ce1368f418f06cd201cf0521a57", - "tarball": "https://registry.npmjs.org/split/-/split-0.2.10.tgz" - }, - "engines": { - "node": "*" - }, - "homepage": "http://github.com/dominictarr/split", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "split", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/split.git" - }, - "scripts": { - "test": "asynct test/" - }, - "version": "0.2.10" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/readme.markdown deleted file mode 100644 index 55b8ba86..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/readme.markdown +++ /dev/null @@ -1,39 +0,0 @@ -# Split (matcher) - -[![build status](https://secure.travis-ci.org/dominictarr/split.png)](http://travis-ci.org/dominictarr/split) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js - fs.createReadStream(file) - .pipe(split()) - .on('data', function (line) { - //each chunk now is a seperate line! - }) - -``` - -`split` takes the same arguments as `string.split` except it defaults to '/\r?\n/' instead of ',', and the optional `limit` paremeter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -# NDJ - Newline Delimited Json - -`split` accepts a function which transforms each line. - -``` js -fs.createReadStream(file) - .pipe(split(JSON.parse)) - .on('data', function (obj) { - //each chunk now is a a js object - }) - .on('error', function (err) { - //syntax errors will land here - //note, this ends the stream. - }) -``` - -# License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/partitioned_unicode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/partitioned_unicode.js deleted file mode 100644 index aff3d5da..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/partitioned_unicode.js +++ /dev/null @@ -1,34 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['split data with partitioned unicode character'] = function (test) { - var s = split(/,/g) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - var x = 'テスト試験今日とても,よい天気で' - unicodeData = new Buffer(x); - - // partition of 日 - piece1 = unicodeData.slice(0, 20); - piece2 = unicodeData.slice(20, unicodeData.length); - - s.write(piece1); - s.write(piece2); - - s.end() - - it(caughtError).equal(false) - - it(rows).deepEqual(['テスト試験今日とても', 'よい天気で']); - - it(rows).deepEqual(x.split(',')) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/split.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/split.asynct.js deleted file mode 100644 index fb15b288..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/split.asynct.js +++ /dev/null @@ -1,85 +0,0 @@ -var es = require('event-stream') - , it = require('it-is').style('colour') - , d = require('ubelt') - , split = require('..') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - -exports ['split() takes mapper function'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split(function (line) { return line.toUpperCase() }) - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).equal(v.trim().toUpperCase()) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/try_catch.asynct.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/try_catch.asynct.js deleted file mode 100644 index 39e49f73..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/split/test/try_catch.asynct.js +++ /dev/null @@ -1,51 +0,0 @@ -var it = require('it-is').style('colour') - , split = require('..') - -exports ['emit mapper exceptions as error events'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}\n') - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - test.done() -} - -exports ['mapper error events on trailing chunks'] = function (test) { - var s = split(JSON.parse) - , caughtError = false - , rows = [] - - s.on('error', function (err) { - caughtError = true - }) - - s.on('data', function (row) { rows.push(row) }) - - s.write('{"a":1}\n{"') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 } ]) - - s.write('b":2}\n{"c":}') - it(caughtError).equal(false) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - s.end() - it(caughtError).equal(true) - it(rows).deepEqual([ { a: 1 }, { b: 2 } ]) - - test.done() -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.npmignore deleted file mode 100644 index 8000b595..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -.gitmodules -deps -docs -Makefile -node_modules -test -tools -coverage -man/src diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.travis.yml deleted file mode 100644 index c3394c25..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - "5.10" - - "4.4" - - "4.1" - - "0.12" - - "0.10" -before_install: - - "make check" -after_success: - - '[ "${TRAVIS_NODE_VERSION}" = "4.4" ] && make codecovio' diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/LICENSE deleted file mode 100644 index f6d947d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/README.md deleted file mode 100644 index d0fa88df..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/README.md +++ /dev/null @@ -1,455 +0,0 @@ -sshpk -========= - -Parse, convert, fingerprint and use SSH keys (both public and private) in pure -node -- no `ssh-keygen` or other external dependencies. - -Supports RSA, DSA, ECDSA (nistp-\*) and ED25519 key types, in PEM (PKCS#1, -PKCS#8) and OpenSSH formats. - -This library has been extracted from -[`node-http-signature`](https://github.com/joyent/node-http-signature) -(work by [Mark Cavage](https://github.com/mcavage) and -[Dave Eddy](https://github.com/bahamas10)) and -[`node-ssh-fingerprint`](https://github.com/bahamas10/node-ssh-fingerprint) -(work by Dave Eddy), with additions (including ECDSA support) by -[Alex Wilson](https://github.com/arekinath). - -Install -------- - -``` -npm install sshpk -``` - -Examples --------- - -```js -var sshpk = require('sshpk'); - -var fs = require('fs'); - -/* Read in an OpenSSH-format public key */ -var keyPub = fs.readFileSync('id_rsa.pub'); -var key = sshpk.parseKey(keyPub, 'ssh'); - -/* Get metadata about the key */ -console.log('type => %s', key.type); -console.log('size => %d bits', key.size); -console.log('comment => %s', key.comment); - -/* Compute key fingerprints, in new OpenSSH (>6.7) format, and old MD5 */ -console.log('fingerprint => %s', key.fingerprint().toString()); -console.log('old-style fingerprint => %s', key.fingerprint('md5').toString()); -``` - -Example output: - -``` -type => rsa -size => 2048 bits -comment => foo@foo.com -fingerprint => SHA256:PYC9kPVC6J873CSIbfp0LwYeczP/W4ffObNCuDJ1u5w -old-style fingerprint => a0:c8:ad:6c:32:9a:32:fa:59:cc:a9:8c:0a:0d:6e:bd -``` - -More examples: converting between formats: - -```js -/* Read in a PEM public key */ -var keyPem = fs.readFileSync('id_rsa.pem'); -var key = sshpk.parseKey(keyPem, 'pem'); - -/* Convert to PEM PKCS#8 public key format */ -var pemBuf = key.toBuffer('pkcs8'); - -/* Convert to SSH public key format (and return as a string) */ -var sshKey = key.toString('ssh'); -``` - -Signing and verifying: - -```js -/* Read in an OpenSSH/PEM *private* key */ -var keyPriv = fs.readFileSync('id_ecdsa'); -var key = sshpk.parsePrivateKey(keyPriv, 'pem'); - -var data = 'some data'; - -/* Sign some data with the key */ -var s = key.createSign('sha1'); -s.update(data); -var signature = s.sign(); - -/* Now load the public key (could also use just key.toPublic()) */ -var keyPub = fs.readFileSync('id_ecdsa.pub'); -key = sshpk.parseKey(keyPub, 'ssh'); - -/* Make a crypto.Verifier with this key */ -var v = key.createVerify('sha1'); -v.update(data); -var valid = v.verify(signature); -/* => true! */ -``` - -Matching fingerprints with keys: - -```js -var fp = sshpk.parseFingerprint('SHA256:PYC9kPVC6J873CSIbfp0LwYeczP/W4ffObNCuDJ1u5w'); - -var keys = [sshpk.parseKey(...), sshpk.parseKey(...), ...]; - -keys.forEach(function (key) { - if (fp.matches(key)) - console.log('found it!'); -}); -``` - -Usage ------ - -## Public keys - -### `parseKey(data[, format = 'auto'[, options]])` - -Parses a key from a given data format and returns a new `Key` object. - -Parameters - -- `data` -- Either a Buffer or String, containing the key -- `format` -- String name of format to use, valid options are: - - `auto`: choose automatically from all below - - `pem`: supports both PKCS#1 and PKCS#8 - - `ssh`: standard OpenSSH format, - - `pkcs1`, `pkcs8`: variants of `pem` - - `rfc4253`: raw OpenSSH wire format - - `openssh`: new post-OpenSSH 6.5 internal format, produced by - `ssh-keygen -o` -- `options` -- Optional Object, extra options, with keys: - - `filename` -- Optional String, name for the key being parsed - (eg. the filename that was opened). Used to generate - Error messages - - `passphrase` -- Optional String, encryption passphrase used to decrypt an - encrypted PEM file - -### `Key.isKey(obj)` - -Returns `true` if the given object is a valid `Key` object created by a version -of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Key#type` - -String, the type of key. Valid options are `rsa`, `dsa`, `ecdsa`. - -### `Key#size` - -Integer, "size" of the key in bits. For RSA/DSA this is the size of the modulus; -for ECDSA this is the bit size of the curve in use. - -### `Key#comment` - -Optional string, a key comment used by some formats (eg the `ssh` format). - -### `Key#curve` - -Only present if `this.type === 'ecdsa'`, string containing the name of the -named curve used with this key. Possible values include `nistp256`, `nistp384` -and `nistp521`. - -### `Key#toBuffer([format = 'ssh'])` - -Convert the key into a given data format and return the serialized key as -a Buffer. - -Parameters - -- `format` -- String name of format to use, for valid options see `parseKey()` - -### `Key#toString([format = 'ssh])` - -Same as `this.toBuffer(format).toString()`. - -### `Key#fingerprint([algorithm = 'sha256'])` - -Creates a new `Fingerprint` object representing this Key's fingerprint. - -Parameters - -- `algorithm` -- String name of hash algorithm to use, valid options are `md5`, - `sha1`, `sha256`, `sha384`, `sha512` - -### `Key#createVerify([hashAlgorithm])` - -Creates a `crypto.Verifier` specialized to use this Key (and the correct public -key algorithm to match it). The returned Verifier has the same API as a regular -one, except that the `verify()` function takes only the target signature as an -argument. - -Parameters - -- `hashAlgorithm` -- optional String name of hash algorithm to use, any - supported by OpenSSL are valid, usually including - `sha1`, `sha256`. - -`v.verify(signature[, format])` Parameters - -- `signature` -- either a Signature object, or a Buffer or String -- `format` -- optional String, name of format to interpret given String with. - Not valid if `signature` is a Signature or Buffer. - -### `Key#createDiffieHellman()` -### `Key#createDH()` - -Creates a Diffie-Hellman key exchange object initialized with this key and all -necessary parameters. This has the same API as a `crypto.DiffieHellman` -instance, except that functions take `Key` and `PrivateKey` objects as -arguments, and return them where indicated for. - -This is only valid for keys belonging to a cryptosystem that supports DHE -or a close analogue (i.e. `dsa`, `ecdsa` and `curve25519` keys). An attempt -to call this function on other keys will yield an `Error`. - -## Private keys - -### `parsePrivateKey(data[, format = 'auto'[, options]])` - -Parses a private key from a given data format and returns a new -`PrivateKey` object. - -Parameters - -- `data` -- Either a Buffer or String, containing the key -- `format` -- String name of format to use, valid options are: - - `auto`: choose automatically from all below - - `pem`: supports both PKCS#1 and PKCS#8 - - `ssh`, `openssh`: new post-OpenSSH 6.5 internal format, produced by - `ssh-keygen -o` - - `pkcs1`, `pkcs8`: variants of `pem` - - `rfc4253`: raw OpenSSH wire format -- `options` -- Optional Object, extra options, with keys: - - `filename` -- Optional String, name for the key being parsed - (eg. the filename that was opened). Used to generate - Error messages - - `passphrase` -- Optional String, encryption passphrase used to decrypt an - encrypted PEM file - -### `PrivateKey.isPrivateKey(obj)` - -Returns `true` if the given object is a valid `PrivateKey` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `PrivateKey#type` - -String, the type of key. Valid options are `rsa`, `dsa`, `ecdsa`. - -### `PrivateKey#size` - -Integer, "size" of the key in bits. For RSA/DSA this is the size of the modulus; -for ECDSA this is the bit size of the curve in use. - -### `PrivateKey#curve` - -Only present if `this.type === 'ecdsa'`, string containing the name of the -named curve used with this key. Possible values include `nistp256`, `nistp384` -and `nistp521`. - -### `PrivateKey#toBuffer([format = 'pkcs1'])` - -Convert the key into a given data format and return the serialized key as -a Buffer. - -Parameters - -- `format` -- String name of format to use, valid options are listed under - `parsePrivateKey`. Note that ED25519 keys default to `openssh` - format instead (as they have no `pkcs1` representation). - -### `PrivateKey#toString([format = 'pkcs1'])` - -Same as `this.toBuffer(format).toString()`. - -### `PrivateKey#toPublic()` - -Extract just the public part of this private key, and return it as a `Key` -object. - -### `PrivateKey#fingerprint([algorithm = 'sha256'])` - -Same as `this.toPublic().fingerprint()`. - -### `PrivateKey#createVerify([hashAlgorithm])` - -Same as `this.toPublic().createVerify()`. - -### `PrivateKey#createSign([hashAlgorithm])` - -Creates a `crypto.Sign` specialized to use this PrivateKey (and the correct -key algorithm to match it). The returned Signer has the same API as a regular -one, except that the `sign()` function takes no arguments, and returns a -`Signature` object. - -Parameters - -- `hashAlgorithm` -- optional String name of hash algorithm to use, any - supported by OpenSSL are valid, usually including - `sha1`, `sha256`. - -`v.sign()` Parameters - -- none - -### `PrivateKey#derive(newType)` - -Derives a related key of type `newType` from this key. Currently this is -only supported to change between `ed25519` and `curve25519` keys which are -stored with the same private key (but usually distinct public keys in order -to avoid degenerate keys that lead to a weak Diffie-Hellman exchange). - -Parameters - -- `newType` -- String, type of key to derive, either `ed25519` or `curve25519` - -## Fingerprints - -### `parseFingerprint(fingerprint[, algorithms])` - -Pre-parses a fingerprint, creating a `Fingerprint` object that can be used to -quickly locate a key by using the `Fingerprint#matches` function. - -Parameters - -- `fingerprint` -- String, the fingerprint value, in any supported format -- `algorithms` -- Optional list of strings, names of hash algorithms to limit - support to. If `fingerprint` uses a hash algorithm not on - this list, throws `InvalidAlgorithmError`. - -### `Fingerprint.isFingerprint(obj)` - -Returns `true` if the given object is a valid `Fingerprint` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Fingerprint#toString([format])` - -Returns a fingerprint as a string, in the given format. - -Parameters - -- `format` -- Optional String, format to use, valid options are `hex` and - `base64`. If this `Fingerprint` uses the `md5` algorithm, the - default format is `hex`. Otherwise, the default is `base64`. - -### `Fingerprint#matches(key)` - -Verifies whether or not this `Fingerprint` matches a given `Key`. This function -uses double-hashing to avoid leaking timing information. Returns a boolean. - -Parameters - -- `key` -- a `Key` object, the key to match this fingerprint against - -## Signatures - -### `parseSignature(signature, algorithm, format)` - -Parses a signature in a given format, creating a `Signature` object. Useful -for converting between the SSH and ASN.1 (PKCS/OpenSSL) signature formats, and -also returned as output from `PrivateKey#createSign().sign()`. - -A Signature object can also be passed to a verifier produced by -`Key#createVerify()` and it will automatically be converted internally into the -correct format for verification. - -Parameters - -- `signature` -- a Buffer (binary) or String (base64), data of the actual - signature in the given format -- `algorithm` -- a String, name of the algorithm to be used, possible values - are `rsa`, `dsa`, `ecdsa` -- `format` -- a String, either `asn1` or `ssh` - -### `Signature.isSignature(obj)` - -Returns `true` if the given object is a valid `Signature` object created by a -version of `sshpk` compatible with this one. - -Parameters - -- `obj` -- Object to identify - -### `Signature#toBuffer([format = 'asn1'])` - -Converts a Signature to the given format and returns it as a Buffer. - -Parameters - -- `format` -- a String, either `asn1` or `ssh` - -### `Signature#toString([format = 'asn1'])` - -Same as `this.toBuffer(format).toString('base64')`. - -Errors ------- - -### `InvalidAlgorithmError` - -The specified algorithm is not valid, either because it is not supported, or -because it was not included on a list of allowed algorithms. - -Thrown by `Fingerprint.parse`, `Key#fingerprint`. - -Properties - -- `algorithm` -- the algorithm that could not be validated - -### `FingerprintFormatError` - -The fingerprint string given could not be parsed as a supported fingerprint -format, or the specified fingerprint format is invalid. - -Thrown by `Fingerprint.parse`, `Fingerprint#toString`. - -Properties - -- `fingerprint` -- if caused by a fingerprint, the string value given -- `format` -- if caused by an invalid format specification, the string value given - -### `KeyParseError` - -The key data given could not be parsed as a valid key. - -Properties - -- `keyName` -- `filename` that was given to `Key#parse` -- `format` -- the `format` that was trying to parse the key -- `innerErr` -- the inner Error thrown by the format parser - -### `KeyEncryptedError` - -The key is encrypted with a symmetric key (ie, it is password protected). The -parsing operation would succeed if it was given the `passphrase` option. - -Properties - -- `keyName` -- `filename` that was given to `Key#parse` -- `format` -- the `format` that was trying to parse the key (currently can only - be `"pem"`) - -Friends of sshpk ----------------- - - * [`sshpk-agent`](https://github.com/arekinath/node-sshpk-agent) is a library - for speaking the `ssh-agent` protocol from node.js, which uses `sshpk` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-conv b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-conv deleted file mode 100755 index a1205a45..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-conv +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var tty = require('tty'); -var readline = require('readline'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['outformat', 't'], - type: 'string', - help: 'Output format' - }, - { - names: ['informat', 'T'], - type: 'string', - help: 'Input format' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input file name (default stdin)' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output file name (default stdout)' - }, - { - names: ['private', 'p'], - type: 'bool', - help: 'Produce a private key as output' - }, - { - names: ['derive', 'd'], - type: 'string', - help: 'Output a new key derived from this one, with given algo' - }, - { - names: ['identify', 'i'], - type: 'bool', - help: 'Print key metadata instead of converting' - }, - { - names: ['comment', 'c'], - type: 'string', - help: 'Set key comment, if output format supports' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-conv: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-conv: converts between SSH key formats\n'); - console.error(help); - console.error('\navailable formats:'); - console.error(' - pem, pkcs1 eg id_rsa'); - console.error(' - ssh eg id_rsa.pub'); - console.error(' - pkcs8 format you want for openssl'); - console.error(' - openssh like output of ssh-keygen -o'); - console.error(' - rfc4253 raw OpenSSH wire format'); - process.exit(1); - } - - /* - * Key derivation can only be done on private keys, so use of the -d - * option necessarily implies -p. - */ - if (opts.derive) - opts.private = true; - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-conv: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - console.error('sshpk-conv: error opening output file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var bufs = []; - inFile.on('readable', function () { - var data; - while ((data = inFile.read())) - bufs.push(data); - }); - var parseOpts = {}; - parseOpts.filename = inFileName; - inFile.on('end', function processKey() { - var buf = Buffer.concat(bufs); - var fmt = 'auto'; - if (opts.informat) - fmt = opts.informat; - var f = sshpk.parseKey; - if (opts.private) - f = sshpk.parsePrivateKey; - try { - var key = f(buf, fmt, parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - parseOpts.passphrase = pw; - processKey(); - }); - return; - } - console.error('sshpk-conv: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (opts.derive) - key = key.derive(opts.derive); - - if (opts.comment) - key.comment = opts.comment; - - if (!opts.identify) { - fmt = undefined; - if (opts.outformat) - fmt = opts.outformat; - outFile.write(key.toBuffer(fmt)); - if (fmt === 'ssh' || - (!opts.private && fmt === undefined)) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - } else { - var kind = 'public'; - if (sshpk.PrivateKey.isPrivateKey(key)) - kind = 'private'; - console.log('%s: a %d bit %s %s key', inFileName, - key.size, key.type.toUpperCase(), kind); - if (key.type === 'ecdsa') - console.log('ECDSA curve: %s', key.curve); - if (key.comment) - console.log('Comment: %s', key.comment); - console.log('Fingerprint:'); - console.log(' ' + key.fingerprint().toString()); - console.log(' ' + key.fingerprint('md5').toString()); - process.exit(0); - } - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-sign b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-sign deleted file mode 100755 index 673fc986..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-sign +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); -var getPassword = require('getpass').getPass; - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['out', 'o'], - type: 'string', - help: 'Output filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['binary', 'b'], - type: 'bool', - help: 'Output raw binary instead of base64' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -var parseOpts = {}; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-sign: error: %s', e.message); - process.exit(1); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: sign data using an SSH key\n'); - console.error(help); - process.exit(1); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-sign: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(1); - } - - var keyData = fs.readFileSync(opts.identity); - parseOpts.filename = opts.identity; - - run(); -} - -function run() { - var key; - try { - key = sshpk.parsePrivateKey(keyData, 'auto', parseOpts); - } catch (e) { - if (e.name === 'KeyEncryptedError') { - getPassword(function (err, pw) { - parseOpts.passphrase = pw; - run(); - }); - return; - } - console.error('sshpk-sign: error loading private key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(1); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var signer; - try { - signer = key.createSign(hash); - } catch (e) { - console.error('sshpk-sign: error creating signer: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (opts.verbose) { - console.error('sshpk-sign: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-sign: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - var outFile = process.stdout; - - try { - if (opts.out && !opts.identify) { - fs.accessSync(path.dirname(opts.out), fs.W_OK); - outFile = fs.createWriteStream(opts.out); - } - } catch (e) { - console.error('sshpk-sign: error opening output file' + - ': ' + e.name + ': ' + e.message); - process.exit(1); - } - - inFile.pipe(signer); - inFile.on('end', function () { - var sig; - try { - sig = signer.sign(); - } catch (e) { - console.error('sshpk-sign: error signing data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - var fmt = opts.format || 'asn1'; - var output; - try { - output = sig.toBuffer(fmt); - if (!opts.binary) - output = output.toString('base64'); - } catch (e) { - console.error('sshpk-sign: error converting signature' + - ' to ' + fmt + ' format: ' + e.name + ': ' + - e.message); - process.exit(1); - } - - outFile.write(output); - if (!opts.binary) - outFile.write('\n'); - outFile.once('drain', function () { - process.exit(0); - }); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-verify b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-verify deleted file mode 100755 index a1669f40..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/bin/sshpk-verify +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/env node -// -*- mode: js -*- -// vim: set filetype=javascript : -// Copyright 2015 Joyent, Inc. All rights reserved. - -var dashdash = require('dashdash'); -var sshpk = require('../lib/index'); -var fs = require('fs'); -var path = require('path'); - -var options = [ - { - names: ['hash', 'H'], - type: 'string', - help: 'Hash algorithm (sha1, sha256, sha384, sha512)' - }, - { - names: ['verbose', 'v'], - type: 'bool', - help: 'Display verbose info about key and hash used' - }, - { - names: ['identity', 'i'], - type: 'string', - help: 'Path to (public) key to use' - }, - { - names: ['file', 'f'], - type: 'string', - help: 'Input filename' - }, - { - names: ['format', 't'], - type: 'string', - help: 'Signature format (asn1, ssh, raw)' - }, - { - names: ['signature', 's'], - type: 'string', - help: 'base64-encoded signature data' - }, - { - names: ['help', 'h'], - type: 'bool', - help: 'Shows this help text' - } -]; - -if (require.main === module) { - var parser = dashdash.createParser({ - options: options - }); - - try { - var opts = parser.parse(process.argv); - } catch (e) { - console.error('sshpk-verify: error: %s', e.message); - process.exit(3); - } - - if (opts.help || opts._args.length > 1) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: sign data using an SSH key\n'); - console.error(help); - process.exit(3); - } - - if (!opts.identity) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -i or --identity option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - if (!opts.signature) { - var help = parser.help({}).trimRight(); - console.error('sshpk-verify: the -s or --signature option ' + - 'is required\n'); - console.error(help); - process.exit(3); - } - - var keyData = fs.readFileSync(opts.identity); - - var key; - try { - key = sshpk.parseKey(keyData); - } catch (e) { - console.error('sshpk-verify: error loading key "' + - opts.identity + '": ' + e.name + ': ' + e.message); - process.exit(2); - } - - var fmt = opts.format || 'asn1'; - var sigData = new Buffer(opts.signature, 'base64'); - - var sig; - try { - sig = sshpk.parseSignature(sigData, key.type, fmt); - } catch (e) { - console.error('sshpk-verify: error parsing signature: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - var hash = opts.hash || key.defaultHashAlgorithm(); - - var verifier; - try { - verifier = key.createVerify(hash); - } catch (e) { - console.error('sshpk-verify: error creating verifier: ' + - e.name + ': ' + e.message); - process.exit(2); - } - - if (opts.verbose) { - console.error('sshpk-verify: using %s-%s with a %d bit key', - key.type, hash, key.size); - } - - var inFile = process.stdin; - var inFileName = 'stdin'; - - var inFilePath; - if (opts.file) { - inFilePath = opts.file; - } else if (opts._args.length === 1) { - inFilePath = opts._args[0]; - } - - if (inFilePath) - inFileName = path.basename(inFilePath); - - try { - if (inFilePath) { - fs.accessSync(inFilePath, fs.R_OK); - inFile = fs.createReadStream(inFilePath); - } - } catch (e) { - console.error('sshpk-verify: error opening input file' + - ': ' + e.name + ': ' + e.message); - process.exit(2); - } - - inFile.pipe(verifier); - inFile.on('end', function () { - var ret; - try { - ret = verifier.verify(sig); - } catch (e) { - console.error('sshpk-verify: error verifying data: ' + - e.name + ': ' + e.message); - process.exit(1); - } - - if (ret) { - console.error('OK'); - process.exit(0); - } - - console.error('NOT OK'); - process.exit(1); - }); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/algs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/algs.js deleted file mode 100644 index f30af560..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/algs.js +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var algInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y'], - sizePart: 'p' - }, - 'rsa': { - parts: ['e', 'n'], - sizePart: 'n' - }, - 'ecdsa': { - parts: ['curve', 'Q'], - sizePart: 'Q' - }, - 'ed25519': { - parts: ['R'], - normalize: false, - sizePart: 'R' - } -}; -algInfo['curve25519'] = algInfo['ed25519']; - -var algPrivInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y', 'x'] - }, - 'rsa': { - parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] - }, - 'ecdsa': { - parts: ['curve', 'Q', 'd'] - }, - 'ed25519': { - parts: ['R', 'r'], - normalize: false - } -}; -algPrivInfo['curve25519'] = algPrivInfo['ed25519']; - -var hashAlgs = { - 'md5': true, - 'sha1': true, - 'sha256': true, - 'sha384': true, - 'sha512': true -}; - -/* - * Taken from - * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf - */ -var curves = { - 'nistp256': { - size: 256, - pkcs8oid: '1.2.840.10045.3.1.7', - p: new Buffer(('00' + - 'ffffffff 00000001 00000000 00000000' + - '00000000 ffffffff ffffffff ffffffff'). - replace(/ /g, ''), 'hex'), - a: new Buffer(('00' + - 'FFFFFFFF 00000001 00000000 00000000' + - '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: new Buffer(( - '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + - '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). - replace(/ /g, ''), 'hex'), - s: new Buffer(('00' + - 'c49d3608 86e70493 6a6678e1 139d26b7' + - '819f7e90'). - replace(/ /g, ''), 'hex'), - n: new Buffer(('00' + - 'ffffffff 00000000 ffffffff ffffffff' + - 'bce6faad a7179e84 f3b9cac2 fc632551'). - replace(/ /g, ''), 'hex'), - G: new Buffer(('04' + - '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + - '77037d81 2deb33a0 f4a13945 d898c296' + - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + - '2bce3357 6b315ece cbb64068 37bf51f5'). - replace(/ /g, ''), 'hex') - }, - 'nistp384': { - size: 384, - pkcs8oid: '1.3.132.0.34', - p: new Buffer(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffe' + - 'ffffffff 00000000 00000000 ffffffff'). - replace(/ /g, ''), 'hex'), - a: new Buffer(('00' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + - 'FFFFFFFF 00000000 00000000 FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: new Buffer(( - 'b3312fa7 e23ee7e4 988e056b e3f82d19' + - '181d9c6e fe814112 0314088f 5013875a' + - 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). - replace(/ /g, ''), 'hex'), - s: new Buffer(('00' + - 'a335926a a319a27a 1d00896a 6773a482' + - '7acdac73'). - replace(/ /g, ''), 'hex'), - n: new Buffer(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff c7634d81 f4372ddf' + - '581a0db2 48b0a77a ecec196a ccc52973'). - replace(/ /g, ''), 'hex'), - G: new Buffer(('04' + - 'aa87ca22 be8b0537 8eb1c71e f320ad74' + - '6e1d3b62 8ba79b98 59f741e0 82542a38' + - '5502f25d bf55296c 3a545e38 72760ab7' + - '3617de4a 96262c6f 5d9e98bf 9292dc29' + - 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). - replace(/ /g, ''), 'hex') - }, - 'nistp521': { - size: 521, - pkcs8oid: '1.3.132.0.35', - p: new Buffer(( - '01ffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffff').replace(/ /g, ''), 'hex'), - a: new Buffer(('01FF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: new Buffer(('51' + - '953eb961 8e1c9a1f 929a21a0 b68540ee' + - 'a2da725b 99b315f3 b8b48991 8ef109e1' + - '56193951 ec7e937b 1652c0bd 3bb1bf07' + - '3573df88 3d2c34f1 ef451fd4 6b503f00'). - replace(/ /g, ''), 'hex'), - s: new Buffer(('00' + - 'd09e8800 291cb853 96cc6717 393284aa' + - 'a0da64ba').replace(/ /g, ''), 'hex'), - n: new Buffer(('01ff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffa' + - '51868783 bf2f966b 7fcc0148 f709a5d0' + - '3bb5c9b8 899c47ae bb6fb71e 91386409'). - replace(/ /g, ''), 'hex'), - G: new Buffer(('04' + - '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + - '9c648139 053fb521 f828af60 6b4d3dba' + - 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + - '3348b3c1 856a429b f97e7e31 c2e5bd66' + - '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + - '98f54449 579b4468 17afbd17 273e662c' + - '97ee7299 5ef42640 c550b901 3fad0761' + - '353c7086 a272c240 88be9476 9fd16650'). - replace(/ /g, ''), 'hex') - } -}; - -module.exports = { - info: algInfo, - privInfo: algPrivInfo, - hashAlgs: hashAlgs, - curves: curves -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/dhe.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/dhe.js deleted file mode 100644 index 8f9548ce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/dhe.js +++ /dev/null @@ -1,311 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = DiffieHellman; - -var assert = require('assert-plus'); -var crypto = require('crypto'); -var algs = require('./algs'); -var utils = require('./utils'); -var ed; - -var Key = require('./key'); -var PrivateKey = require('./private-key'); - -var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined); - -var ecdh, ec, jsbn; - -function DiffieHellman(key) { - utils.assertCompatible(key, Key, [1, 4], 'key'); - this._isPriv = PrivateKey.isPrivateKey(key, [1, 3]); - this._algo = key.type; - this._curve = key.curve; - this._key = key; - if (key.type === 'dsa') { - if (!CRYPTO_HAVE_ECDH) { - throw (new Error('Due to bugs in the node 0.10 ' + - 'crypto API, node 0.12.x or later is required ' + - 'to use DH')); - } - this._dh = crypto.createDiffieHellman( - key.part.p.data, undefined, - key.part.g.data, undefined); - this._p = key.part.p; - this._g = key.part.g; - if (this._isPriv) - this._dh.setPrivateKey(key.part.x.data); - this._dh.setPublicKey(key.part.y.data); - - } else if (key.type === 'ecdsa') { - if (!CRYPTO_HAVE_ECDH) { - if (ecdh === undefined) - ecdh = require('ecc-jsbn'); - if (ec === undefined) - ec = require('ecc-jsbn/lib/ec'); - if (jsbn === undefined) - jsbn = require('jsbn').BigInteger; - - this._ecParams = new X9ECParameters(this._curve); - - if (this._isPriv) { - this._priv = new ECPrivate( - this._ecParams, key.part.d.data); - } - return; - } - - var curve = { - 'nistp256': 'prime256v1', - 'nistp384': 'secp384r1', - 'nistp521': 'secp521r1' - }[key.curve]; - this._dh = crypto.createECDH(curve); - if (typeof (this._dh) !== 'object' || - typeof (this._dh.setPrivateKey) !== 'function') { - CRYPTO_HAVE_ECDH = false; - DiffieHellman.call(this, key); - return; - } - if (this._isPriv) - this._dh.setPrivateKey(key.part.d.data); - this._dh.setPublicKey(key.part.Q.data); - - } else if (key.type === 'curve25519') { - if (ed === undefined) - ed = require('jodid25519'); - - if (this._isPriv) { - this._priv = key.part.r.data; - if (this._priv[0] === 0x00) - this._priv = this._priv.slice(1); - this._priv = this._priv.slice(0, 32); - } - - } else { - throw (new Error('DH not supported for ' + key.type + ' keys')); - } -} - -DiffieHellman.prototype.getPublicKey = function () { - if (this._isPriv) - return (this._key.toPublic()); - return (this._key); -}; - -DiffieHellman.prototype.getPrivateKey = function () { - if (this._isPriv) - return (this._key); - else - return (undefined); -}; -DiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey; - -DiffieHellman.prototype._keyCheck = function (pk, isPub) { - assert.object(pk, 'key'); - if (!isPub) - utils.assertCompatible(pk, PrivateKey, [1, 3], 'key'); - utils.assertCompatible(pk, Key, [1, 4], 'key'); - - if (pk.type !== this._algo) { - throw (new Error('A ' + pk.type + ' key cannot be used in ' + - this._algo + ' Diffie-Hellman')); - } - - if (pk.curve !== this._curve) { - throw (new Error('A key from the ' + pk.curve + ' curve ' + - 'cannot be used with a ' + this._curve + - ' Diffie-Hellman')); - } - - if (pk.type === 'dsa') { - assert.deepEqual(pk.part.p, this._p, - 'DSA key prime does not match'); - assert.deepEqual(pk.part.g, this._g, - 'DSA key generator does not match'); - } -}; - -DiffieHellman.prototype.setKey = function (pk) { - this._keyCheck(pk); - - if (pk.type === 'dsa') { - this._dh.setPrivateKey(pk.part.x.data); - this._dh.setPublicKey(pk.part.y.data); - - } else if (pk.type === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.setPrivateKey(pk.part.d.data); - this._dh.setPublicKey(pk.part.Q.data); - } else { - this._priv = new ECPrivate( - this._ecParams, pk.part.d.data); - } - - } else if (pk.type === 'curve25519') { - this._priv = pk.part.r.data; - if (this._priv[0] === 0x00) - this._priv = this._priv.slice(1); - this._priv = this._priv.slice(0, 32); - } - this._key = pk; - this._isPriv = true; -}; -DiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey; - -DiffieHellman.prototype.computeSecret = function (otherpk) { - this._keyCheck(otherpk, true); - if (!this._isPriv) - throw (new Error('DH exchange has not been initialized with ' + - 'a private key yet')); - - var pub; - if (this._algo === 'dsa') { - return (this._dh.computeSecret( - otherpk.part.y.data)); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - return (this._dh.computeSecret( - otherpk.part.Q.data)); - } else { - pub = new ECPublic( - this._ecParams, otherpk.part.Q.data); - return (this._priv.deriveSharedSecret(pub)); - } - - } else if (this._algo === 'curve25519') { - pub = otherpk.part.R.data; - if (pub[0] === 0x00) - pub = pub.slice(1); - - var secret = ed.dh.computeKey( - this._priv.toString('binary'), - pub.toString('binary')); - - return (new Buffer(secret, 'binary')); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; - -DiffieHellman.prototype.generateKey = function () { - var parts = []; - var priv, pub; - if (this._algo === 'dsa') { - this._dh.generateKeys(); - - parts.push({name: 'p', data: this._p.data}); - parts.push({name: 'q', data: this._key.part.q.data}); - parts.push({name: 'g', data: this._g.data}); - parts.push({name: 'y', data: this._dh.getPublicKey()}); - parts.push({name: 'x', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'dsa', - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else if (this._algo === 'ecdsa') { - if (CRYPTO_HAVE_ECDH) { - this._dh.generateKeys(); - - parts.push({name: 'curve', - data: new Buffer(this._curve)}); - parts.push({name: 'Q', data: this._dh.getPublicKey()}); - parts.push({name: 'd', data: this._dh.getPrivateKey()}); - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - - } else { - var n = this._ecParams.getN(); - var r = new jsbn(crypto.randomBytes(n.bitLength())); - var n1 = n.subtract(jsbn.ONE); - priv = r.mod(n1).add(jsbn.ONE); - pub = this._ecParams.getG().multiply(priv); - - priv = new Buffer(priv.toByteArray()); - pub = new Buffer(this._ecParams.getCurve(). - encodePointHex(pub), 'hex'); - - this._priv = new ECPrivate(this._ecParams, priv); - - parts.push({name: 'curve', - data: new Buffer(this._curve)}); - parts.push({name: 'Q', data: pub}); - parts.push({name: 'd', data: priv}); - - this._key = new PrivateKey({ - type: 'ecdsa', - curve: this._curve, - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - } else if (this._algo === 'curve25519') { - priv = ed.dh.generateKey(); - pub = ed.dh.publicKey(priv); - this._priv = priv = new Buffer(priv, 'binary'); - pub = new Buffer(pub, 'binary'); - - parts.push({name: 'R', data: pub}); - parts.push({name: 'r', data: Buffer.concat([priv, pub])}); - this._key = new PrivateKey({ - type: 'curve25519', - parts: parts - }); - this._isPriv = true; - return (this._key); - } - - throw (new Error('Invalid algorithm: ' + this._algo)); -}; -DiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey; - -/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */ - -function X9ECParameters(name) { - var params = algs.curves[name]; - assert.object(params); - - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var n = new jsbn(params.n); - var h = jsbn.ONE; - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - this.curve = curve; - this.g = G; - this.n = n; - this.h = h; -} -X9ECParameters.prototype.getCurve = function () { return (this.curve); }; -X9ECParameters.prototype.getG = function () { return (this.g); }; -X9ECParameters.prototype.getN = function () { return (this.n); }; -X9ECParameters.prototype.getH = function () { return (this.h); }; - -function ECPublic(params, buffer) { - this._params = params; - if (buffer[0] === 0x00) - buffer = buffer.slice(1); - this._pub = params.getCurve().decodePointHex(buffer.toString('hex')); -} - -function ECPrivate(params, buffer) { - this._params = params; - this._priv = new jsbn(utils.mpNormalize(buffer)); -} -ECPrivate.prototype.deriveSharedSecret = function (pubKey) { - assert.ok(pubKey instanceof ECPublic); - var S = pubKey._pub.multiply(this._priv); - return (new Buffer(S.getX().toBigInteger().toByteArray())); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ed-compat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ed-compat.js deleted file mode 100644 index 5365fb14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ed-compat.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - Verifier: Verifier, - Signer: Signer -}; - -var nacl; -var stream = require('stream'); -var util = require('util'); -var assert = require('assert-plus'); -var Signature = require('./signature'); - -function Verifier(key, hashAlgo) { - if (nacl === undefined) - nacl = require('tweetnacl'); - - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Verifier, stream.Writable); - -Verifier.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Verifier.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = new Buffer(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Verifier.prototype.verify = function (signature, fmt) { - var sig; - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== 'ed25519') - return (false); - sig = signature.toBuffer('raw'); - - } else if (typeof (signature) === 'string') { - sig = new Buffer(signature, 'base64'); - - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - } - - assert.buffer(sig); - return (nacl.sign.detached.verify( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(sig), - new Uint8Array(this.key.part.R.data))); -}; - -function Signer(key, hashAlgo) { - if (nacl === undefined) - nacl = require('tweetnacl'); - - if (hashAlgo.toLowerCase() !== 'sha512') - throw (new Error('ED25519 only supports the use of ' + - 'SHA-512 hashes')); - - this.key = key; - this.chunks = []; - - stream.Writable.call(this, {}); -} -util.inherits(Signer, stream.Writable); - -Signer.prototype._write = function (chunk, enc, cb) { - this.chunks.push(chunk); - cb(); -}; - -Signer.prototype.update = function (chunk) { - if (typeof (chunk) === 'string') - chunk = new Buffer(chunk, 'binary'); - this.chunks.push(chunk); -}; - -Signer.prototype.sign = function () { - var sig = nacl.sign.detached( - new Uint8Array(Buffer.concat(this.chunks)), - new Uint8Array(this.key.part.r.data)); - var sigBuf = new Buffer(sig); - var sigObj = Signature.parse(sigBuf, 'ed25519', 'raw'); - sigObj.hashAlgorithm = 'sha512'; - return (sigObj); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/errors.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/errors.js deleted file mode 100644 index d984f1ac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/errors.js +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var assert = require('assert-plus'); -var util = require('util'); - -function FingerprintFormatError(fp, format) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, FingerprintFormatError); - this.name = 'FingerprintFormatError'; - this.fingerprint = fp; - this.format = format; - this.message = 'Fingerprint format is not supported, or is invalid: '; - if (fp !== undefined) - this.message += ' fingerprint = ' + fp; - if (format !== undefined) - this.message += ' format = ' + format; -} -util.inherits(FingerprintFormatError, Error); - -function InvalidAlgorithmError(alg) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, InvalidAlgorithmError); - this.name = 'InvalidAlgorithmError'; - this.algorithm = alg; - this.message = 'Algorithm "' + alg + '" is not supported'; -} -util.inherits(InvalidAlgorithmError, Error); - -function KeyParseError(name, format, innerErr) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, KeyParseError); - this.name = 'KeyParseError'; - this.format = format; - this.keyName = name; - this.innerErr = innerErr; - this.message = 'Failed to parse ' + name + ' as a valid ' + format + - ' format key: ' + innerErr.message; -} -util.inherits(KeyParseError, Error); - -function SignatureParseError(type, format, innerErr) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, SignatureParseError); - this.name = 'SignatureParseError'; - this.type = type; - this.format = format; - this.innerErr = innerErr; - this.message = 'Failed to parse the given data as a ' + type + - ' signature in ' + format + ' format: ' + innerErr.message; -} -util.inherits(SignatureParseError, Error); - -function KeyEncryptedError(name, format) { - if (Error.captureStackTrace) - Error.captureStackTrace(this, KeyEncryptedError); - this.name = 'KeyEncryptedError'; - this.format = format; - this.keyName = name; - this.message = 'The ' + format + ' format key ' + name + ' is ' + - 'encrypted (password-protected), and no passphrase was ' + - 'provided in `options`'; -} -util.inherits(KeyEncryptedError, Error); - -module.exports = { - FingerprintFormatError: FingerprintFormatError, - InvalidAlgorithmError: InvalidAlgorithmError, - KeyParseError: KeyParseError, - SignatureParseError: SignatureParseError, - KeyEncryptedError: KeyEncryptedError -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/fingerprint.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/fingerprint.js deleted file mode 100644 index c607330e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/fingerprint.js +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = Fingerprint; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var errs = require('./errors'); -var Key = require('./key'); -var utils = require('./utils'); - -var FingerprintFormatError = errs.FingerprintFormatError; -var InvalidAlgorithmError = errs.InvalidAlgorithmError; - -function Fingerprint(opts) { - assert.object(opts, 'options'); - assert.buffer(opts.hash, 'options.hash'); - assert.string(opts.algorithm, 'options.algorithm'); - - this.algorithm = opts.algorithm.toLowerCase(); - if (algs.hashAlgs[this.algorithm] !== true) - throw (new InvalidAlgorithmError(this.algorithm)); - - this.hash = opts.hash; -} - -Fingerprint.prototype.toString = function (format) { - if (format === undefined) { - if (this.algorithm === 'md5') - format = 'hex'; - else - format = 'base64'; - } - assert.string(format); - - switch (format) { - case 'hex': - return (addColons(this.hash.toString('hex'))); - case 'base64': - return (sshBase64Format(this.algorithm, - this.hash.toString('base64'))); - default: - throw (new FingerprintFormatError(undefined, format)); - } -}; - -Fingerprint.prototype.matches = function (key) { - assert.object(key, 'key'); - utils.assertCompatible(key, Key, [1, 0], 'key'); - - var theirHash = key.hash(this.algorithm); - var theirHash2 = crypto.createHash(this.algorithm). - update(theirHash).digest('base64'); - - if (this.hash2 === undefined) - this.hash2 = crypto.createHash(this.algorithm). - update(this.hash).digest('base64'); - - return (this.hash2 === theirHash2); -}; - -Fingerprint.parse = function (fp, enAlgs) { - assert.string(fp, 'fingerprint'); - - var alg, hash; - assert.optionalArrayOfString(enAlgs, 'algorithms'); - - var parts = fp.split(':'); - if (parts.length == 2) { - alg = parts[0].toLowerCase(); - /*JSSTYLED*/ - var base64RE = /^[A-Za-z0-9+\/=]+$/; - if (!base64RE.test(parts[1])) - throw (new FingerprintFormatError(fp)); - try { - hash = new Buffer(parts[1], 'base64'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } else if (parts.length > 2) { - alg = 'md5'; - if (parts[0].toLowerCase() === 'md5') - parts = parts.slice(1); - parts = parts.join(''); - /*JSSTYLED*/ - var md5RE = /^[a-fA-F0-9]+$/; - if (!md5RE.test(parts)) - throw (new FingerprintFormatError(fp)); - try { - hash = new Buffer(parts, 'hex'); - } catch (e) { - throw (new FingerprintFormatError(fp)); - } - } - - if (alg === undefined) - throw (new FingerprintFormatError(fp)); - - if (algs.hashAlgs[alg] === undefined) - throw (new InvalidAlgorithmError(alg)); - - if (enAlgs !== undefined) { - enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); - if (enAlgs.indexOf(alg) === -1) - throw (new InvalidAlgorithmError(alg)); - } - - return (new Fingerprint({algorithm: alg, hash: hash})); -}; - -function addColons(s) { - /*JSSTYLED*/ - return (s.replace(/(.{2})(?=.)/g, '$1:')); -} - -function base64Strip(s) { - /*JSSTYLED*/ - return (s.replace(/=*$/, '')); -} - -function sshBase64Format(alg, h) { - return (alg.toUpperCase() + ':' + base64Strip(h)); -} - -Fingerprint.isFingerprint = function (obj, ver) { - return (utils.isCompatible(obj, Fingerprint, ver)); -}; - -/* - * API versions for Fingerprint: - * [1,0] -- initial ver - * [1,1] -- first tagged ver - */ -Fingerprint.prototype._sshpkApiVersion = [1, 1]; - -Fingerprint._oldVersionDetect = function (obj) { - assert.func(obj.toString); - assert.func(obj.matches); - return ([1, 0]); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/auto.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/auto.js deleted file mode 100644 index 973c0324..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/auto.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var pem = require('./pem'); -var ssh = require('./ssh'); -var rfc4253 = require('./rfc4253'); - -function read(buf, options) { - if (typeof (buf) === 'string') { - if (buf.trim().match(/^[-]+[ ]*BEGIN/)) - return (pem.read(buf, options)); - if (buf.match(/^\s*ssh-[a-z]/)) - return (ssh.read(buf, options)); - if (buf.match(/^\s*ecdsa-/)) - return (ssh.read(buf, options)); - buf = new Buffer(buf, 'binary'); - } else { - assert.buffer(buf); - if (findPEMHeader(buf)) - return (pem.read(buf, options)); - if (findSSHHeader(buf)) - return (ssh.read(buf, options)); - } - if (buf.readUInt32BE(0) < buf.length) - return (rfc4253.read(buf, options)); - throw (new Error('Failed to auto-detect format of key')); -} - -function findSSHHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) - ++offset; - if (offset + 4 <= buf.length && - buf.slice(offset, offset + 4).toString('ascii') === 'ssh-') - return (true); - if (offset + 6 <= buf.length && - buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-') - return (true); - return (false); -} - -function findPEMHeader(buf) { - var offset = 0; - while (offset < buf.length && - (buf[offset] === 32 || buf[offset] === 10)) - ++offset; - if (buf[offset] !== 45) - return (false); - while (offset < buf.length && - (buf[offset] === 45)) - ++offset; - while (offset < buf.length && - (buf[offset] === 32)) - ++offset; - if (offset + 5 > buf.length || - buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN') - return (false); - return (true); -} - -function write(key, options) { - throw (new Error('"auto" format cannot be used for writing')); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pem.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pem.js deleted file mode 100644 index 5318b351..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pem.js +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var crypto = require('crypto'); -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var pkcs1 = require('./pkcs1'); -var pkcs8 = require('./pkcs8'); -var sshpriv = require('./ssh-private'); -var rfc4253 = require('./rfc4253'); - -var errors = require('../errors'); - -/* - * For reading we support both PKCS#1 and PKCS#8. If we find a private key, - * we just take the public component of it and use that. - */ -function read(buf, options, forceType) { - var input = buf; - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var lines = buf.trim().split('\n'); - - var m = lines[0].match(/*JSSTYLED*/ - /[-]+[ ]*BEGIN ([A-Z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - assert.ok(m, 'invalid PEM header'); - - var m2 = lines[lines.length - 1].match(/*JSSTYLED*/ - /[-]+[ ]*END ([A-Z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); - assert.ok(m2, 'invalid PEM footer'); - - /* Begin and end banners must match key type */ - assert.equal(m[2], m2[2]); - var type = m[2].toLowerCase(); - - var alg; - if (m[1]) { - /* They also must match algorithms, if given */ - assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); - alg = m[1].trim(); - } - - var headers = {}; - while (true) { - lines = lines.slice(1); - m = lines[0].match(/*JSSTYLED*/ - /^([A-Za-z0-9-]+): (.+)$/); - if (!m) - break; - headers[m[1].toLowerCase()] = m[2]; - } - - var cipher, key, iv; - if (headers['proc-type']) { - var parts = headers['proc-type'].split(','); - if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { - if (typeof (options.passphrase) === 'string') { - options.passphrase = new Buffer( - options.passphrase, 'utf-8'); - } - if (!Buffer.isBuffer(options.passphrase)) { - throw (new errors.KeyEncryptedError( - options.filename, 'PEM')); - } else { - parts = headers['dek-info'].split(','); - assert.ok(parts.length === 2); - cipher = parts[0].toLowerCase(); - iv = new Buffer(parts[1], 'hex'); - key = utils.opensslKeyDeriv(cipher, iv, - options.passphrase, 1).key; - } - } - } - - /* Chop off the first and last lines */ - lines = lines.slice(0, -1).join(''); - buf = new Buffer(lines, 'base64'); - - if (cipher && key && iv) { - var cipherStream = crypto.createDecipheriv(cipher, key, iv); - var chunk, chunks = []; - cipherStream.once('error', function (e) { - if (e.toString().indexOf('bad decrypt') !== -1) { - throw (new Error('Incorrect passphrase ' + - 'supplied, could not decrypt key')); - } - throw (e); - }); - cipherStream.write(buf); - cipherStream.end(); - while ((chunk = cipherStream.read()) !== null) - chunks.push(chunk); - buf = Buffer.concat(chunks); - } - - /* The new OpenSSH internal format abuses PEM headers */ - if (alg && alg.toLowerCase() === 'openssh') - return (sshpriv.readSSHPrivate(type, buf)); - if (alg && alg.toLowerCase() === 'ssh2') - return (rfc4253.readType(type, buf)); - - var der = new asn1.BerReader(buf); - der.originalInput = input; - - /* - * All of the PEM file types start with a sequence tag, so chop it - * off here - */ - der.readSequence(); - - /* PKCS#1 type keys name an algorithm in the banner explicitly */ - if (alg) { - if (forceType) - assert.strictEqual(forceType, 'pkcs1'); - return (pkcs1.readPkcs1(alg, type, der)); - } else { - if (forceType) - assert.strictEqual(forceType, 'pkcs8'); - return (pkcs8.readPkcs8(alg, type, der)); - } -} - -function write(key, options, type) { - assert.object(key); - - var alg = {'ecdsa': 'EC', 'rsa': 'RSA', 'dsa': 'DSA'}[key.type]; - var header; - - var der = new asn1.BerWriter(); - - if (PrivateKey.isPrivateKey(key)) { - if (type && type === 'pkcs8') { - header = 'PRIVATE KEY'; - pkcs8.writePkcs8(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs1'); - header = alg + ' PRIVATE KEY'; - pkcs1.writePkcs1(der, key); - } - - } else if (Key.isKey(key)) { - if (type && type === 'pkcs1') { - header = alg + ' PUBLIC KEY'; - pkcs1.writePkcs1(der, key); - } else { - if (type) - assert.strictEqual(type, 'pkcs8'); - header = 'PUBLIC KEY'; - pkcs8.writePkcs8(der, key); - } - - } else { - throw (new Error('key is not a Key or PrivateKey')); - } - - var tmp = der.buffer.toString('base64'); - var len = tmp.length + (tmp.length / 64) + - 18 + 16 + header.length*2 + 10; - var buf = new Buffer(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 64; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs1.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs1.js deleted file mode 100644 index a5676af6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs1.js +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readPkcs1: readPkcs1, - write: write, - writePkcs1: writePkcs1 -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var algs = require('../algs'); -var utils = require('../utils'); - -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); - -var pkcs8 = require('./pkcs8'); -var readECDSACurve = pkcs8.readECDSACurve; - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs1')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs1')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs1(alg, type, der) { - switch (alg) { - case 'RSA': - if (type === 'public') - return (readPkcs1RSAPublic(der)); - else if (type === 'private') - return (readPkcs1RSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'DSA': - if (type === 'public') - return (readPkcs1DSAPublic(der)); - else if (type === 'private') - return (readPkcs1DSAPrivate(der)); - throw (new Error('Unknown key type: ' + type)); - case 'EC': - case 'ECDSA': - if (type === 'private') - return (readPkcs1ECDSAPrivate(der)); - else if (type === 'public') - return (readPkcs1ECDSAPublic(der)); - throw (new Error('Unknown key type: ' + type)); - default: - throw (new Error('Unknown key algo: ' + alg)); - } -} - -function readPkcs1RSAPublic(der) { - // modulus and exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs1RSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version[0], 0); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 0); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - var y = readMPInt(der, 'y'); - var x = readMPInt(der, 'x'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs1DSAPublic(der) { - var y = readMPInt(der, 'y'); - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - var key = { - type: 'dsa', - parts: [ - { name: 'y', data: y }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPublic(der) { - der.readSequence(); - - var oid = der.readOID(); - assert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey'); - - var curveOid = der.readOID(); - - var curve; - var curves = Object.keys(algs.curves); - for (var j = 0; j < curves.length; ++j) { - var c = curves[j]; - var cd = algs.curves[c]; - if (cd.pkcs8oid === curveOid) { - curve = c; - break; - } - } - assert.string(curve, 'a known ECDSA named curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: new Buffer(curve) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function readPkcs1ECDSAPrivate(der) { - var version = readMPInt(der, 'version'); - assert.strictEqual(version.readUInt8(0), 1); - - // private key - var d = der.readString(asn1.Ber.OctetString, true); - - der.readSequence(0xa0); - var curve = readECDSACurve(der); - assert.string(curve, 'a known elliptic curve'); - - der.readSequence(0xa1); - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: new Buffer(curve) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function writePkcs1(der, key) { - der.startSequence(); - - switch (key.type) { - case 'rsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1RSAPrivate(der, key); - else - writePkcs1RSAPublic(der, key); - break; - case 'dsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1DSAPrivate(der, key); - else - writePkcs1DSAPublic(der, key); - break; - case 'ecdsa': - if (PrivateKey.isPrivateKey(key)) - writePkcs1ECDSAPrivate(der, key); - else - writePkcs1ECDSAPublic(der, key); - break; - default: - throw (new Error('Unknown key algo: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs1RSAPublic(der, key) { - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); -} - -function writePkcs1RSAPrivate(der, key) { - var ver = new Buffer(1); - ver[0] = 0; - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPrivate(der, key) { - var ver = new Buffer(1); - ver[0] = 0; - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); -} - -function writePkcs1DSAPublic(der, key) { - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); -} - -function writePkcs1ECDSAPublic(der, key) { - der.startSequence(); - - der.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */ - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs1ECDSAPrivate(der, key) { - var ver = new Buffer(1); - ver[0] = 1; - der.writeBuffer(ver, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa0); - var curve = key.part.curve.data.toString(); - var curveOid = algs.curves[curve].pkcs8oid; - assert.string(curveOid, 'a known ECDSA named curve'); - der.writeOID(curveOid); - der.endSequence(); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs8.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs8.js deleted file mode 100644 index 33fb7cc4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/pkcs8.js +++ /dev/null @@ -1,510 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readPkcs8: readPkcs8, - write: write, - writePkcs8: writePkcs8, - - readECDSACurve: readECDSACurve, - writeECDSACurve: writeECDSACurve -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); - -function read(buf, options) { - return (pem.read(buf, options, 'pkcs8')); -} - -function write(key, options) { - return (pem.write(key, options, 'pkcs8')); -} - -/* Helper to read in a single mpint */ -function readMPInt(der, nm) { - assert.strictEqual(der.peek(), asn1.Ber.Integer, - nm + ' is not an Integer'); - return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); -} - -function readPkcs8(alg, type, der) { - /* Private keys in pkcs#8 format have a weird extra int */ - if (der.peek() === asn1.Ber.Integer) { - assert.strictEqual(type, 'private', - 'unexpected Integer at start of public key'); - der.readString(asn1.Ber.Integer, true); - } - - der.readSequence(); - - var oid = der.readOID(); - switch (oid) { - case '1.2.840.113549.1.1.1': - if (type === 'public') - return (readPkcs8RSAPublic(der)); - else - return (readPkcs8RSAPrivate(der)); - case '1.2.840.10040.4.1': - if (type === 'public') - return (readPkcs8DSAPublic(der)); - else - return (readPkcs8DSAPrivate(der)); - case '1.2.840.10045.2.1': - if (type === 'public') - return (readPkcs8ECDSAPublic(der)); - else - return (readPkcs8ECDSAPrivate(der)); - default: - throw (new Error('Unknown key type OID ' + oid)); - } -} - -function readPkcs8RSAPublic(der) { - // Null -- XXX this probably isn't good practice - der.readByte(); - der.readByte(); - - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - der.readSequence(); - - // modulus - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'exponent'); - - // now, make the key - var key = { - type: 'rsa', - source: der.originalInput, - parts: [ - { name: 'e', data: e }, - { name: 'n', data: n } - ] - }; - - return (new Key(key)); -} - -function readPkcs8RSAPrivate(der) { - der.readByte(); - der.readByte(); - - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var ver = readMPInt(der, 'version'); - assert.equal(ver[0], 0x0, 'unknown RSA private key version'); - - // modulus then public exponent - var n = readMPInt(der, 'modulus'); - var e = readMPInt(der, 'public exponent'); - var d = readMPInt(der, 'private exponent'); - var p = readMPInt(der, 'prime1'); - var q = readMPInt(der, 'prime2'); - var dmodp = readMPInt(der, 'exponent1'); - var dmodq = readMPInt(der, 'exponent2'); - var iqmp = readMPInt(der, 'iqmp'); - - // now, make the key - var key = { - type: 'rsa', - parts: [ - { name: 'n', data: n }, - { name: 'e', data: e }, - { name: 'd', data: d }, - { name: 'iqmp', data: iqmp }, - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'dmodp', data: dmodp }, - { name: 'dmodq', data: dmodq } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8DSAPublic(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - // bit string sequence - der.readSequence(asn1.Ber.BitString); - der.readByte(); - - var y = readMPInt(der, 'y'); - - // now, make the key - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y } - ] - }; - - return (new Key(key)); -} - -function readPkcs8DSAPrivate(der) { - der.readSequence(); - - var p = readMPInt(der, 'p'); - var q = readMPInt(der, 'q'); - var g = readMPInt(der, 'g'); - - der.readSequence(asn1.Ber.OctetString); - var x = readMPInt(der, 'x'); - - /* The pkcs#8 format does not include the public key */ - var y = utils.calculateDSAPublic(g, p, x); - - var key = { - type: 'dsa', - parts: [ - { name: 'p', data: p }, - { name: 'q', data: q }, - { name: 'g', data: g }, - { name: 'y', data: y }, - { name: 'x', data: x } - ] - }; - - return (new PrivateKey(key)); -} - -function readECDSACurve(der) { - var curveName, curveNames; - var j, c, cd; - - if (der.peek() === asn1.Ber.OID) { - var oid = der.readOID(); - - curveNames = Object.keys(algs.curves); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - if (cd.pkcs8oid === oid) { - curveName = c; - break; - } - } - - } else { - // ECParameters sequence - der.readSequence(); - var version = der.readString(asn1.Ber.Integer, true); - assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); - - var curve = {}; - - // FieldID sequence - der.readSequence(); - var fieldTypeOid = der.readOID(); - assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', - 'ECDSA key is not from a prime-field'); - var p = curve.p = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - /* - * p always starts with a 1 bit, so count the zeros to get its - * real size. - */ - curve.size = p.length * 8 - utils.countZeros(p); - - // Curve sequence - der.readSequence(); - curve.a = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - curve.b = utils.mpNormalize( - der.readString(asn1.Ber.OctetString, true)); - if (der.peek() === asn1.Ber.BitString) - curve.s = der.readString(asn1.Ber.BitString, true); - - // Combined Gx and Gy - curve.G = der.readString(asn1.Ber.OctetString, true); - assert.strictEqual(curve.G[0], 0x4, - 'uncompressed G is required'); - - curve.n = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - curve.h = utils.mpNormalize( - der.readString(asn1.Ber.Integer, true)); - assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + - 'required'); - - curveNames = Object.keys(algs.curves); - var ks = Object.keys(curve); - for (j = 0; j < curveNames.length; ++j) { - c = curveNames[j]; - cd = algs.curves[c]; - var equal = true; - for (var i = 0; i < ks.length; ++i) { - var k = ks[i]; - if (cd[k] === undefined) - continue; - if (typeof (cd[k]) === 'object' && - cd[k].equals !== undefined) { - if (!cd[k].equals(curve[k])) { - equal = false; - break; - } - } else if (Buffer.isBuffer(cd[k])) { - if (cd[k].toString('binary') - !== curve[k].toString('binary')) { - equal = false; - break; - } - } else { - if (cd[k] !== curve[k]) { - equal = false; - break; - } - } - } - if (equal) { - curveName = c; - break; - } - } - } - return (curveName); -} - -function readPkcs8ECDSAPrivate(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - der.readSequence(asn1.Ber.OctetString); - der.readSequence(); - - var version = readMPInt(der, 'version'); - assert.equal(version[0], 1, 'unknown version of ECDSA key'); - - var d = der.readString(asn1.Ber.OctetString, true); - der.readSequence(0xa1); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: new Buffer(curveName) }, - { name: 'Q', data: Q }, - { name: 'd', data: d } - ] - }; - - return (new PrivateKey(key)); -} - -function readPkcs8ECDSAPublic(der) { - var curveName = readECDSACurve(der); - assert.string(curveName, 'a known elliptic curve'); - - var Q = der.readString(asn1.Ber.BitString, true); - Q = utils.ecNormalize(Q); - - var key = { - type: 'ecdsa', - parts: [ - { name: 'curve', data: new Buffer(curveName) }, - { name: 'Q', data: Q } - ] - }; - - return (new Key(key)); -} - -function writePkcs8(der, key) { - der.startSequence(); - - if (PrivateKey.isPrivateKey(key)) { - var sillyInt = new Buffer(1); - sillyInt[0] = 0x0; - der.writeBuffer(sillyInt, asn1.Ber.Integer); - } - - der.startSequence(); - switch (key.type) { - case 'rsa': - der.writeOID('1.2.840.113549.1.1.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8RSAPrivate(key, der); - else - writePkcs8RSAPublic(key, der); - break; - case 'dsa': - der.writeOID('1.2.840.10040.4.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8DSAPrivate(key, der); - else - writePkcs8DSAPublic(key, der); - break; - case 'ecdsa': - der.writeOID('1.2.840.10045.2.1'); - if (PrivateKey.isPrivateKey(key)) - writePkcs8ECDSAPrivate(key, der); - else - writePkcs8ECDSAPublic(key, der); - break; - default: - throw (new Error('Unsupported key type: ' + key.type)); - } - - der.endSequence(); -} - -function writePkcs8RSAPrivate(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = new Buffer(1); - version[0] = 0; - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.writeBuffer(key.part.d.data, asn1.Ber.Integer); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - if (!key.part.dmodp || !key.part.dmodq) - utils.addRSAMissing(key); - der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); - der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); - der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); - - der.endSequence(); - der.endSequence(); -} - -function writePkcs8RSAPublic(key, der) { - der.writeNull(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - - der.startSequence(); - der.writeBuffer(key.part.n.data, asn1.Ber.Integer); - der.writeBuffer(key.part.e.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); -} - -function writePkcs8DSAPrivate(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.writeBuffer(key.part.x.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writePkcs8DSAPublic(key, der) { - der.startSequence(); - der.writeBuffer(key.part.p.data, asn1.Ber.Integer); - der.writeBuffer(key.part.q.data, asn1.Ber.Integer); - der.writeBuffer(key.part.g.data, asn1.Ber.Integer); - der.endSequence(); - der.endSequence(); - - der.startSequence(asn1.Ber.BitString); - der.writeByte(0x00); - der.writeBuffer(key.part.y.data, asn1.Ber.Integer); - der.endSequence(); -} - -function writeECDSACurve(key, der) { - var curve = algs.curves[key.curve]; - if (curve.pkcs8oid) { - /* This one has a name in pkcs#8, so just write the oid */ - der.writeOID(curve.pkcs8oid); - - } else { - // ECParameters sequence - der.startSequence(); - - var version = new Buffer(1); - version.writeUInt8(1, 0); - der.writeBuffer(version, asn1.Ber.Integer); - - // FieldID sequence - der.startSequence(); - der.writeOID('1.2.840.10045.1.1'); // prime-field - der.writeBuffer(curve.p, asn1.Ber.Integer); - der.endSequence(); - - // Curve sequence - der.startSequence(); - var a = curve.p; - if (a[0] === 0x0) - a = a.slice(1); - der.writeBuffer(a, asn1.Ber.OctetString); - der.writeBuffer(curve.b, asn1.Ber.OctetString); - der.writeBuffer(curve.s, asn1.Ber.BitString); - der.endSequence(); - - der.writeBuffer(curve.G, asn1.Ber.OctetString); - der.writeBuffer(curve.n, asn1.Ber.Integer); - var h = curve.h; - if (!h) { - h = new Buffer(1); - h[0] = 1; - } - der.writeBuffer(h, asn1.Ber.Integer); - - // ECParameters - der.endSequence(); - } -} - -function writePkcs8ECDSAPublic(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); -} - -function writePkcs8ECDSAPrivate(key, der) { - writeECDSACurve(key, der); - der.endSequence(); - - der.startSequence(asn1.Ber.OctetString); - der.startSequence(); - - var version = new Buffer(1); - version[0] = 1; - der.writeBuffer(version, asn1.Ber.Integer); - - der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); - - der.startSequence(0xa1); - var Q = utils.ecNormalize(key.part.Q.data, true); - der.writeBuffer(Q, asn1.Ber.BitString); - der.endSequence(); - - der.endSequence(); - der.endSequence(); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/rfc4253.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/rfc4253.js deleted file mode 100644 index 9d436dd9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/rfc4253.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read.bind(undefined, false, undefined), - readType: read.bind(undefined, false), - write: write, - /* semi-private api, used by sshpk-agent */ - readPartial: read.bind(undefined, true), - - /* shared with ssh format */ - readInternal: read, - keyTypeToAlg: keyTypeToAlg, - algToKeyType: algToKeyType -}; - -var assert = require('assert-plus'); -var algs = require('../algs'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var SSHBuffer = require('../ssh-buffer'); - -function algToKeyType(alg) { - assert.string(alg); - if (alg === 'ssh-dss') - return ('dsa'); - else if (alg === 'ssh-rsa') - return ('rsa'); - else if (alg === 'ssh-ed25519') - return ('ed25519'); - else if (alg === 'ssh-curve25519') - return ('curve25519'); - else if (alg.match(/^ecdsa-sha2-/)) - return ('ecdsa'); - else - throw (new Error('Unknown algorithm ' + alg)); -} - -function keyTypeToAlg(key) { - assert.object(key); - if (key.type === 'dsa') - return ('ssh-dss'); - else if (key.type === 'rsa') - return ('ssh-rsa'); - else if (key.type === 'ed25519') - return ('ssh-ed25519'); - else if (key.type === 'curve25519') - return ('ssh-curve25519'); - else if (key.type === 'ecdsa') - return ('ecdsa-sha2-' + key.part.curve.data.toString()); - else - throw (new Error('Unknown key type ' + key.type)); -} - -function read(partial, type, buf, options) { - if (typeof (buf) === 'string') - buf = new Buffer(buf); - assert.buffer(buf, 'buf'); - - var key = {}; - - var parts = key.parts = []; - var sshbuf = new SSHBuffer({buffer: buf}); - - var alg = sshbuf.readString(); - assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); - - key.type = algToKeyType(alg); - - var partCount = algs.info[key.type].parts.length; - if (type && type === 'private') - partCount = algs.privInfo[key.type].parts.length; - - while (!sshbuf.atEnd() && parts.length < partCount) - parts.push(sshbuf.readPart()); - while (!partial && !sshbuf.atEnd()) - parts.push(sshbuf.readPart()); - - assert.ok(parts.length >= 1, - 'key must have at least one part'); - assert.ok(partial || sshbuf.atEnd(), - 'leftover bytes at end of key'); - - var Constructor = Key; - var algInfo = algs.info[key.type]; - if (type === 'private' || algInfo.parts.length !== parts.length) { - algInfo = algs.privInfo[key.type]; - Constructor = PrivateKey; - } - assert.strictEqual(algInfo.parts.length, parts.length); - - if (key.type === 'ecdsa') { - var res = /^ecdsa-sha2-(.+)$/.exec(alg); - assert.ok(res !== null); - assert.strictEqual(res[1], parts[0].data.toString()); - } - - var normalized = true; - for (var i = 0; i < algInfo.parts.length; ++i) { - parts[i].name = algInfo.parts[i]; - if (parts[i].name !== 'curve' && - algInfo.normalize !== false) { - var p = parts[i]; - var nd = utils.mpNormalize(p.data); - if (nd !== p.data) { - p.data = nd; - normalized = false; - } - } - } - - if (normalized) - key._rfc4253Cache = sshbuf.toBuffer(); - - if (partial && typeof (partial) === 'object') { - partial.remainder = sshbuf.remainder(); - partial.consumed = sshbuf._offset; - } - - return (new Constructor(key)); -} - -function write(key, options) { - assert.object(key); - - var alg = keyTypeToAlg(key); - var i; - - var algInfo = algs.info[key.type]; - if (PrivateKey.isPrivateKey(key)) - algInfo = algs.privInfo[key.type]; - var parts = algInfo.parts; - - var buf = new SSHBuffer({}); - - buf.writeString(alg); - - for (i = 0; i < parts.length; ++i) { - var data = key.part[parts[i]].data; - if (algInfo.normalize !== false) - data = utils.mpNormalize(data); - buf.writeBuffer(data); - } - - return (buf.toBuffer()); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh-private.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh-private.js deleted file mode 100644 index bfbdab52..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh-private.js +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - readSSHPrivate: readSSHPrivate, - write: write -}; - -var assert = require('assert-plus'); -var asn1 = require('asn1'); -var algs = require('../algs'); -var utils = require('../utils'); -var crypto = require('crypto'); - -var Key = require('../key'); -var PrivateKey = require('../private-key'); -var pem = require('./pem'); -var rfc4253 = require('./rfc4253'); -var SSHBuffer = require('../ssh-buffer'); - -function read(buf, options) { - return (pem.read(buf, options)); -} - -var MAGIC = 'openssh-key-v1'; - -function readSSHPrivate(type, buf) { - buf = new SSHBuffer({buffer: buf}); - - var magic = buf.readCString(); - assert.strictEqual(magic, MAGIC, 'bad magic string'); - - var cipher = buf.readString(); - var kdf = buf.readString(); - - /* We only support unencrypted keys. */ - if (cipher !== 'none' || kdf !== 'none') { - throw (new Error('OpenSSH-format key is encrypted ' + - '(password-protected). Please use the SSH agent ' + - 'or decrypt the key.')); - } - - /* Skip over kdfoptions. */ - buf.readString(); - - var nkeys = buf.readInt(); - if (nkeys !== 1) { - throw (new Error('OpenSSH-format key file contains ' + - 'multiple keys: this is unsupported.')); - } - - var pubKey = buf.readBuffer(); - - if (type === 'public') { - assert.ok(buf.atEnd(), 'excess bytes left after key'); - return (rfc4253.read(pubKey)); - } - - var privKeyBlob = buf.readBuffer(); - assert.ok(buf.atEnd(), 'excess bytes left after key'); - - buf = new SSHBuffer({buffer: privKeyBlob}); - - var checkInt1 = buf.readInt(); - var checkInt2 = buf.readInt(); - assert.strictEqual(checkInt1, checkInt2, 'checkints do not match'); - - var ret = {}; - var key = rfc4253.readInternal(ret, 'private', buf.remainder()); - - buf.skip(ret.consumed); - - var comment = buf.readString(); - key.comment = comment; - - return (key); -} - -function write(key, options) { - var pubKey; - if (PrivateKey.isPrivateKey(key)) - pubKey = key.toPublic(); - else - pubKey = key; - - var privBuf; - if (PrivateKey.isPrivateKey(key)) { - privBuf = new SSHBuffer({}); - var checkInt = crypto.randomBytes(4).readUInt32BE(0); - privBuf.writeInt(checkInt); - privBuf.writeInt(checkInt); - privBuf.write(key.toBuffer('rfc4253')); - privBuf.writeString(key.comment || ''); - - var n = 1; - while (privBuf._offset % 8 !== 0) - privBuf.writeChar(n++); - } - - var buf = new SSHBuffer({}); - - buf.writeCString(MAGIC); - buf.writeString('none'); /* cipher */ - buf.writeString('none'); /* kdf */ - buf.writeBuffer(new Buffer(0)); /* kdfoptions */ - - buf.writeInt(1); /* nkeys */ - buf.writeBuffer(pubKey.toBuffer('rfc4253')); - - if (privBuf) - buf.writeBuffer(privBuf.toBuffer()); - - buf = buf.toBuffer(); - - var header; - if (PrivateKey.isPrivateKey(key)) - header = 'OPENSSH PRIVATE KEY'; - else - header = 'OPENSSH PUBLIC KEY'; - - var tmp = buf.toString('base64'); - var len = tmp.length + (tmp.length / 70) + - 18 + 16 + header.length*2 + 10; - buf = new Buffer(len); - var o = 0; - o += buf.write('-----BEGIN ' + header + '-----\n', o); - for (var i = 0; i < tmp.length; ) { - var limit = i + 70; - if (limit > tmp.length) - limit = tmp.length; - o += buf.write(tmp.slice(i, limit), o); - buf[o++] = 10; - i = limit; - } - o += buf.write('-----END ' + header + '-----\n', o); - - return (buf.slice(0, o)); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh.js deleted file mode 100644 index 655c9eaf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/formats/ssh.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - read: read, - write: write -}; - -var assert = require('assert-plus'); -var rfc4253 = require('./rfc4253'); -var utils = require('../utils'); -var Key = require('../key'); -var PrivateKey = require('../private-key'); - -var sshpriv = require('./ssh-private'); - -/*JSSTYLED*/ -var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([\n \t]+([^\n]+))?$/; -/*JSSTYLED*/ -var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/ \t\n]+[=]*)(.*)$/; - -function read(buf, options) { - if (typeof (buf) !== 'string') { - assert.buffer(buf, 'buf'); - buf = buf.toString('ascii'); - } - - var trimmed = buf.trim().replace(/[\\\r]/g, ''); - var m = trimmed.match(SSHKEY_RE); - if (!m) - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - - var type = rfc4253.algToKeyType(m[1]); - var kbuf = new Buffer(m[2], 'base64'); - - /* - * This is a bit tricky. If we managed to parse the key and locate the - * key comment with the regex, then do a non-partial read and assert - * that we have consumed all bytes. If we couldn't locate the key - * comment, though, there may be whitespace shenanigans going on that - * have conjoined the comment to the rest of the key. We do a partial - * read in this case to try to make the best out of a sorry situation. - */ - var key; - var ret = {}; - if (m[4]) { - try { - key = rfc4253.read(kbuf); - - } catch (e) { - m = trimmed.match(SSHKEY_RE2); - assert.ok(m, 'key must match regex'); - kbuf = new Buffer(m[2], 'base64'); - key = rfc4253.readInternal(ret, 'public', kbuf); - } - } else { - key = rfc4253.readInternal(ret, 'public', kbuf); - } - - assert.strictEqual(type, key.type); - - if (m[4] && m[4].length > 0) { - key.comment = m[4]; - - } else if (ret.consumed) { - /* - * Now the magic: trying to recover the key comment when it's - * gotten conjoined to the key or otherwise shenanigan'd. - * - * Work out how much base64 we used, then drop all non-base64 - * chars from the beginning up to this point in the the string. - * Then offset in this and try to make up for missing = chars. - */ - var data = m[2] + m[3]; - var realOffset = Math.ceil(ret.consumed / 3) * 4; - data = data.slice(0, realOffset - 2). /*JSSTYLED*/ - replace(/[^a-zA-Z0-9+\/=]/g, '') + - data.slice(realOffset - 2); - - var padding = ret.consumed % 3; - if (padding > 0 && - data.slice(realOffset - 1, realOffset) !== '=') - realOffset--; - while (data.slice(realOffset, realOffset + 1) === '=') - realOffset++; - - /* Finally, grab what we think is the comment & clean it up. */ - var trailer = data.slice(realOffset); - trailer = trailer.replace(/[\r\n]/g, ' '). - replace(/^\s+/, ''); - if (trailer.match(/^[a-zA-Z0-9]/)) - key.comment = trailer; - } - - return (key); -} - -function write(key, options) { - assert.object(key); - if (!Key.isKey(key)) - throw (new Error('Must be a public key')); - - var parts = []; - var alg = rfc4253.keyTypeToAlg(key); - parts.push(alg); - - var buf = rfc4253.write(key); - parts.push(buf.toString('base64')); - - if (key.comment) - parts.push(key.comment); - - return (new Buffer(parts.join(' '))); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/index.js deleted file mode 100644 index 0b40429c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/index.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -var Key = require('./key'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var PrivateKey = require('./private-key'); -var errs = require('./errors'); - -module.exports = { - /* top-level classes */ - Key: Key, - parseKey: Key.parse, - Fingerprint: Fingerprint, - parseFingerprint: Fingerprint.parse, - Signature: Signature, - parseSignature: Signature.parse, - PrivateKey: PrivateKey, - parsePrivateKey: PrivateKey.parse, - - /* errors */ - FingerprintFormatError: errs.FingerprintFormatError, - InvalidAlgorithmError: errs.InvalidAlgorithmError, - KeyParseError: errs.KeyParseError, - SignatureParseError: errs.SignatureParseError, - KeyEncryptedError: errs.KeyEncryptedError -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/key.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/key.js deleted file mode 100644 index edc51434..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/key.js +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = Key; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var DiffieHellman = require('./dhe'); -var errs = require('./errors'); -var utils = require('./utils'); -var PrivateKey = require('./private-key'); -var edCompat; - -try { - edCompat = require('./ed-compat'); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; - -var formats = {}; -formats['auto'] = require('./formats/auto'); -formats['pem'] = require('./formats/pem'); -formats['pkcs1'] = require('./formats/pkcs1'); -formats['pkcs8'] = require('./formats/pkcs8'); -formats['rfc4253'] = require('./formats/rfc4253'); -formats['ssh'] = require('./formats/ssh'); -formats['ssh-private'] = require('./formats/ssh-private'); -formats['openssh'] = formats['ssh-private']; - -function Key(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - assert.optionalString(opts.comment, 'options.comment'); - - var algInfo = algs.info[opts.type]; - if (typeof (algInfo) !== 'object') - throw (new InvalidAlgorithmError(opts.type)); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.parts = opts.parts; - this.part = partLookup; - this.comment = undefined; - this.source = opts.source; - - /* for speeding up hashing/fingerprint operations */ - this._rfc4253Cache = opts._rfc4253Cache; - this._hashCache = {}; - - var sz; - this.curve = undefined; - if (this.type === 'ecdsa') { - var curve = this.part.curve.data.toString(); - this.curve = curve; - sz = algs.curves[curve].size; - } else if (this.type === 'ed25519') { - sz = 256; - this.curve = 'curve25519'; - } else { - var szPart = this.part[algInfo.sizePart]; - sz = szPart.data.length; - sz = sz * 8 - utils.countZeros(szPart.data); - } - this.size = sz; -} - -Key.formats = formats; - -Key.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'ssh'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - if (format === 'rfc4253') { - if (this._rfc4253Cache === undefined) - this._rfc4253Cache = formats['rfc4253'].write(this); - return (this._rfc4253Cache); - } - - return (formats[format].write(this, options)); -}; - -Key.prototype.toString = function (format, options) { - return (this.toBuffer(format, options).toString()); -}; - -Key.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - - var hash = crypto.createHash(algo). - update(this.toBuffer('rfc4253')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Key.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Key.prototype.defaultHashAlgorithm = function () { - var hashAlgo = 'sha1'; - if (this.type === 'rsa') - hashAlgo = 'sha256'; - if (this.type === 'dsa' && this.size > 1024) - hashAlgo = 'sha256'; - if (this.type === 'ed25519') - hashAlgo = 'sha512'; - if (this.type === 'ecdsa') { - if (this.size <= 256) - hashAlgo = 'sha256'; - else if (this.size <= 384) - hashAlgo = 'sha384'; - else - hashAlgo = 'sha512'; - } - return (hashAlgo); -}; - -Key.prototype.createVerify = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Verifier(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldVerify = v.verify.bind(v); - var key = this.toBuffer('pkcs8'); - var self = this; - v.verify = function (signature, fmt) { - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== self.type) - return (false); - if (signature.hashAlgorithm && - signature.hashAlgorithm !== hashAlgo) - return (false); - return (oldVerify(key, signature.toBuffer('asn1'))); - - } else if (typeof (signature) === 'string' || - Buffer.isBuffer(signature)) { - return (oldVerify(key, signature, fmt)); - - /* - * Avoid doing this on valid arguments, walking the prototype - * chain can be quite slow. - */ - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - - } else { - throw (new TypeError('signature must be a string, ' + - 'Buffer, or Signature object')); - } - }; - return (v); -}; - -Key.prototype.createDiffieHellman = function () { - if (this.type === 'rsa') - throw (new Error('RSA keys do not support Diffie-Hellman')); - - return (new DiffieHellman(this)); -}; -Key.prototype.createDH = Key.prototype.createDiffieHellman; - -Key.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - if (k instanceof PrivateKey) - k = k.toPublic(); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -Key.isKey = function (obj, ver) { - return (utils.isCompatible(obj, Key, ver)); -}; - -/* - * API versions for Key: - * [1,0] -- initial ver, may take Signature for createVerify or may not - * [1,1] -- added pkcs1, pkcs8 formats - * [1,2] -- added auto, ssh-private, openssh formats - * [1,3] -- added defaultHashAlgorithm - * [1,4] -- added ed support, createDH - * [1,5] -- first explicitly tagged version - */ -Key.prototype._sshpkApiVersion = [1, 5]; - -Key._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - assert.func(obj.fingerprint); - if (obj.createDH) - return ([1, 4]); - if (obj.defaultHashAlgorithm) - return ([1, 3]); - if (obj.formats['auto']) - return ([1, 2]); - if (obj.formats['pkcs1']) - return ([1, 1]); - return ([1, 0]); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/private-key.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/private-key.js deleted file mode 100644 index f80d9396..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/private-key.js +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = PrivateKey; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var Fingerprint = require('./fingerprint'); -var Signature = require('./signature'); -var errs = require('./errors'); -var util = require('util'); -var utils = require('./utils'); -var edCompat; -var ed; - -try { - edCompat = require('./ed-compat'); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var Key = require('./key'); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; -var KeyEncryptedError = errs.KeyEncryptedError; - -var formats = {}; -formats['auto'] = require('./formats/auto'); -formats['pem'] = require('./formats/pem'); -formats['pkcs1'] = require('./formats/pkcs1'); -formats['pkcs8'] = require('./formats/pkcs8'); -formats['rfc4253'] = require('./formats/rfc4253'); -formats['ssh-private'] = require('./formats/ssh-private'); -formats['openssh'] = formats['ssh-private']; -formats['ssh'] = formats['ssh-private']; - -function PrivateKey(opts) { - assert.object(opts, 'options'); - Key.call(this, opts); - - this._pubCache = undefined; -} -util.inherits(PrivateKey, Key); - -PrivateKey.formats = formats; - -PrivateKey.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'pkcs1'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -PrivateKey.prototype.hash = function (algo) { - return (this.toPublic().hash(algo)); -}; - -PrivateKey.prototype.toPublic = function () { - if (this._pubCache) - return (this._pubCache); - - var algInfo = algs.info[this.type]; - var pubParts = []; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = algInfo.parts[i]; - pubParts.push(this.part[p]); - } - - this._pubCache = new Key({ - type: this.type, - source: this, - parts: pubParts - }); - if (this.comment) - this._pubCache.comment = this.comment; - return (this._pubCache); -}; - -PrivateKey.prototype.derive = function (newType, newSize) { - assert.string(newType, 'type'); - assert.optionalNumber(newSize, 'size'); - var priv, pub; - - if (this.type === 'ed25519' && newType === 'curve25519') { - if (ed === undefined) - ed = require('jodid25519'); - - priv = this.part.r.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - priv = priv.slice(0, 32); - - pub = ed.dh.publicKey(priv); - priv = utils.mpNormalize(Buffer.concat([priv, pub])); - - return (new PrivateKey({ - type: 'curve25519', - parts: [ - { name: 'R', data: utils.mpNormalize(pub) }, - { name: 'r', data: priv } - ] - })); - } else if (this.type === 'curve25519' && newType === 'ed25519') { - if (ed === undefined) - ed = require('jodid25519'); - - priv = this.part.r.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - priv = priv.slice(0, 32); - - pub = ed.eddsa.publicKey(priv.toString('binary')); - pub = new Buffer(pub, 'binary'); - - priv = utils.mpNormalize(Buffer.concat([priv, pub])); - - return (new PrivateKey({ - type: 'ed25519', - parts: [ - { name: 'R', data: utils.mpNormalize(pub) }, - { name: 'r', data: priv } - ] - })); - } - throw (new Error('Key derivation not supported from ' + this.type + - ' to ' + newType)); -}; - -PrivateKey.prototype.createVerify = function (hashAlgo) { - return (this.toPublic().createVerify(hashAlgo)); -}; - -PrivateKey.prototype.createSign = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Signer(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldSign = v.sign.bind(v); - var key = this.toBuffer('pkcs1'); - var type = this.type; - v.sign = function () { - var sig = oldSign(key); - if (typeof (sig) === 'string') - sig = new Buffer(sig, 'binary'); - sig = Signature.parse(sig, type, 'asn1'); - sig.hashAlgorithm = hashAlgo; - return (sig); - }; - return (v); -}; - -PrivateKey.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - assert.ok(k instanceof PrivateKey, 'key is not a private key'); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -PrivateKey.isPrivateKey = function (obj, ver) { - return (utils.isCompatible(obj, PrivateKey, ver)); -}; - -/* - * API versions for PrivateKey: - * [1,0] -- initial ver - * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats - * [1,2] -- added defaultHashAlgorithm - * [1,3] -- added derive, ed, createDH - * [1,4] -- first tagged version - */ -PrivateKey.prototype._sshpkApiVersion = [1, 4]; - -PrivateKey._oldVersionDetect = function (obj) { - assert.func(obj.toPublic); - assert.func(obj.createSign); - if (obj.derive) - return ([1, 3]); - if (obj.defaultHashAlgorithm) - return ([1, 2]); - if (obj.formats['auto']) - return ([1, 1]); - return ([1, 0]); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/signature.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/signature.js deleted file mode 100644 index ddf4a8c9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/signature.js +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = Signature; - -var assert = require('assert-plus'); -var algs = require('./algs'); -var crypto = require('crypto'); -var errs = require('./errors'); -var utils = require('./utils'); -var asn1 = require('asn1'); -var SSHBuffer = require('./ssh-buffer'); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var SignatureParseError = errs.SignatureParseError; - -function Signature(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.hashAlgorithm = opts.hashAlgo; - this.parts = opts.parts; - this.part = partLookup; -} - -Signature.prototype.toBuffer = function (format) { - if (format === undefined) - format = 'asn1'; - assert.string(format, 'format'); - - var buf; - - switch (this.type) { - case 'rsa': - case 'ed25519': - if (format === 'ssh') { - buf = new SSHBuffer({}); - buf.writeString('ssh-' + this.type); - buf.writePart(this.part.sig); - return (buf.toBuffer()); - } else { - return (this.part.sig.data); - } - - case 'dsa': - case 'ecdsa': - var r, s; - if (format === 'asn1') { - var der = new asn1.BerWriter(); - der.startSequence(); - r = utils.mpNormalize(this.part.r.data); - s = utils.mpNormalize(this.part.s.data); - der.writeBuffer(r, asn1.Ber.Integer); - der.writeBuffer(s, asn1.Ber.Integer); - der.endSequence(); - return (der.buffer); - } else if (format === 'ssh' && this.type === 'dsa') { - buf = new SSHBuffer({}); - buf.writeString('ssh-dss'); - r = this.part.r.data; - if (r[0] === 0x00) - r = r.slice(1); - s = this.part.s.data; - buf.writeBuffer(Buffer.concat([r, s])); - return (buf.toBuffer()); - } else if (format === 'ssh' && this.type === 'ecdsa') { - var inner = new SSHBuffer({}); - r = this.part.r; - if (r[0] === 0x00) - r = r.slice(1); - inner.writePart(r); - inner.writePart(this.part.s); - - buf = new SSHBuffer({}); - /* XXX: find a more proper way to do this? */ - var curve; - var sz = this.part.r.data.length * 8; - if (sz === 256) - curve = 'nistp256'; - else if (sz === 384) - curve = 'nistp384'; - else if (sz === 528) - curve = 'nistp521'; - buf.writeString('ecdsa-sha2-' + curve); - buf.writeBuffer(inner.toBuffer()); - return (buf.toBuffer()); - } - throw (new Error('Invalid signature format')); - default: - throw (new Error('Invalid signature data')); - } -}; - -Signature.prototype.toString = function (format) { - assert.optionalString(format, 'format'); - return (this.toBuffer(format).toString('base64')); -}; - -Signature.parse = function (data, type, format) { - if (typeof (data) === 'string') - data = new Buffer(data, 'base64'); - assert.buffer(data, 'data'); - assert.string(format, 'format'); - assert.string(type, 'type'); - - var opts = {}; - opts.type = type.toLowerCase(); - opts.parts = []; - - try { - assert.ok(data.length > 0, 'signature must not be empty'); - switch (opts.type) { - case 'rsa': - return (parseOneNum(data, type, format, opts, - 'ssh-rsa')); - case 'ed25519': - return (parseOneNum(data, type, format, opts, - 'ssh-ed25519')); - - case 'dsa': - case 'ecdsa': - if (format === 'asn1') - return (parseDSAasn1(data, type, format, opts)); - else if (opts.type === 'dsa') - return (parseDSA(data, type, format, opts)); - else - return (parseECDSA(data, type, format, opts)); - - default: - throw (new InvalidAlgorithmError(type)); - } - - } catch (e) { - if (e instanceof InvalidAlgorithmError) - throw (e); - throw (new SignatureParseError(type, format, e)); - } -}; - -function parseOneNum(data, type, format, opts, headType) { - if (format === 'ssh') { - try { - var buf = new SSHBuffer({buffer: data}); - var head = buf.readString(); - } catch (e) { - /* fall through */ - } - if (head === headType) { - var sig = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - sig.name = 'sig'; - opts.parts.push(sig); - return (new Signature(opts)); - } - } - opts.parts.push({name: 'sig', data: data}); - return (new Signature(opts)); -} - -function parseDSAasn1(data, type, format, opts) { - var der = new asn1.BerReader(data); - der.readSequence(); - var r = der.readString(asn1.Ber.Integer, true); - var s = der.readString(asn1.Ber.Integer, true); - - opts.parts.push({name: 'r', data: utils.mpNormalize(r)}); - opts.parts.push({name: 's', data: utils.mpNormalize(s)}); - - return (new Signature(opts)); -} - -function parseDSA(data, type, format, opts) { - if (data.length != 40) { - var buf = new SSHBuffer({buffer: data}); - var d = buf.readBuffer(); - if (d.toString('ascii') === 'ssh-dss') - d = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - assert.strictEqual(d.length, 40, 'invalid inner length'); - data = d; - } - opts.parts.push({name: 'r', data: data.slice(0, 20)}); - opts.parts.push({name: 's', data: data.slice(20, 40)}); - return (new Signature(opts)); -} - -function parseECDSA(data, type, format, opts) { - var buf = new SSHBuffer({buffer: data}); - - var r, s; - var inner = buf.readBuffer(); - if (inner.toString('ascii').match(/^ecdsa-/)) { - inner = buf.readBuffer(); - assert.ok(buf.atEnd(), 'extra trailing bytes on outer'); - buf = new SSHBuffer({buffer: inner}); - r = buf.readPart(); - } else { - r = {data: inner}; - } - - s = buf.readPart(); - assert.ok(buf.atEnd(), 'extra trailing bytes'); - - r.name = 'r'; - s.name = 's'; - - opts.parts.push(r); - opts.parts.push(s); - return (new Signature(opts)); -} - -Signature.isSignature = function (obj, ver) { - return (utils.isCompatible(obj, Signature, ver)); -}; - -/* - * API versions for Signature: - * [1,0] -- initial ver - * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent - * hashAlgorithm property - * [2,1] -- first tagged version - */ -Signature.prototype._sshpkApiVersion = [2, 1]; - -Signature._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - if (obj.hasOwnProperty('hashAlgorithm')) - return ([2, 0]); - return ([1, 0]); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ssh-buffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ssh-buffer.js deleted file mode 100644 index 0b002773..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/ssh-buffer.js +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = SSHBuffer; - -var assert = require('assert-plus'); - -function SSHBuffer(opts) { - assert.object(opts, 'options'); - if (opts.buffer !== undefined) - assert.buffer(opts.buffer, 'options.buffer'); - - this._size = opts.buffer ? opts.buffer.length : 1024; - this._buffer = opts.buffer || (new Buffer(this._size)); - this._offset = 0; -} - -SSHBuffer.prototype.toBuffer = function () { - return (this._buffer.slice(0, this._offset)); -}; - -SSHBuffer.prototype.atEnd = function () { - return (this._offset >= this._buffer.length); -}; - -SSHBuffer.prototype.remainder = function () { - return (this._buffer.slice(this._offset)); -}; - -SSHBuffer.prototype.skip = function (n) { - this._offset += n; -}; - -SSHBuffer.prototype.expand = function () { - this._size *= 2; - var buf = new Buffer(this._size); - this._buffer.copy(buf, 0); - this._buffer = buf; -}; - -SSHBuffer.prototype.readPart = function () { - return ({data: this.readBuffer()}); -}; - -SSHBuffer.prototype.readBuffer = function () { - var len = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - assert.ok(this._offset + len <= this._buffer.length, - 'length out of bounds at +0x' + this._offset.toString(16) + - ' (data truncated?)'); - var buf = this._buffer.slice(this._offset, this._offset + len); - this._offset += len; - return (buf); -}; - -SSHBuffer.prototype.readString = function () { - return (this.readBuffer().toString()); -}; - -SSHBuffer.prototype.readCString = function () { - var offset = this._offset; - while (offset < this._buffer.length && - this._buffer[offset] !== 0x00) - offset++; - assert.ok(offset < this._buffer.length, 'c string does not terminate'); - var str = this._buffer.slice(this._offset, offset).toString(); - this._offset = offset + 1; - return (str); -}; - -SSHBuffer.prototype.readInt = function () { - var v = this._buffer.readUInt32BE(this._offset); - this._offset += 4; - return (v); -}; - -SSHBuffer.prototype.readChar = function () { - var v = this._buffer[this._offset++]; - return (v); -}; - -SSHBuffer.prototype.writeBuffer = function (buf) { - while (this._offset + 4 + buf.length > this._size) - this.expand(); - this._buffer.writeUInt32BE(buf.length, this._offset); - this._offset += 4; - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; - -SSHBuffer.prototype.writeString = function (str) { - this.writeBuffer(new Buffer(str, 'utf8')); -}; - -SSHBuffer.prototype.writeCString = function (str) { - while (this._offset + 1 + str.length > this._size) - this.expand(); - this._buffer.write(str, this._offset); - this._offset += str.length; - this._buffer[this._offset++] = 0; -}; - -SSHBuffer.prototype.writeInt = function (v) { - while (this._offset + 4 > this._size) - this.expand(); - this._buffer.writeUInt32BE(v, this._offset); - this._offset += 4; -}; - -SSHBuffer.prototype.writeChar = function (v) { - while (this._offset + 1 > this._size) - this.expand(); - this._buffer[this._offset++] = v; -}; - -SSHBuffer.prototype.writePart = function (p) { - this.writeBuffer(p.data); -}; - -SSHBuffer.prototype.write = function (buf) { - while (this._offset + buf.length > this._size) - this.expand(); - buf.copy(this._buffer, this._offset); - this._offset += buf.length; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/utils.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/utils.js deleted file mode 100644 index d57245cc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/lib/utils.js +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright 2015 Joyent, Inc. - -module.exports = { - bufferSplit: bufferSplit, - addRSAMissing: addRSAMissing, - calculateDSAPublic: calculateDSAPublic, - mpNormalize: mpNormalize, - ecNormalize: ecNormalize, - countZeros: countZeros, - assertCompatible: assertCompatible, - isCompatible: isCompatible, - opensslKeyDeriv: opensslKeyDeriv -}; - -var assert = require('assert-plus'); -var PrivateKey = require('./private-key'); -var crypto = require('crypto'); - -var MAX_CLASS_DEPTH = 3; - -function isCompatible(obj, klass, needVer) { - if (obj === null || typeof (obj) !== 'object') - return (false); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return (true); - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - if (!proto || ++depth > MAX_CLASS_DEPTH) - return (false); - } - if (proto.constructor.name !== klass.name) - return (false); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - if (ver[0] != needVer[0] || ver[1] < needVer[1]) - return (false); - return (true); -} - -function assertCompatible(obj, klass, needVer, name) { - if (name === undefined) - name = 'object'; - assert.ok(obj, name + ' must not be null'); - assert.object(obj, name + ' must be an object'); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return; - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, - name + ' must be a ' + klass.name + ' instance'); - } - assert.strictEqual(proto.constructor.name, klass.name, - name + ' must be a ' + klass.name + ' instance'); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], - name + ' must be compatible with ' + klass.name + ' klass ' + - 'version ' + needVer[0] + '.' + needVer[1]); -} - -var CIPHER_LEN = { - 'des-ede3-cbc': { key: 7, iv: 8 }, - 'aes-128-cbc': { key: 16, iv: 16 } -}; -var PKCS5_SALT_LEN = 8; - -function opensslKeyDeriv(cipher, salt, passphrase, count) { - assert.buffer(salt, 'salt'); - assert.buffer(passphrase, 'passphrase'); - assert.number(count, 'iteration count'); - - var clen = CIPHER_LEN[cipher]; - assert.object(clen, 'supported cipher'); - - salt = salt.slice(0, PKCS5_SALT_LEN); - - var D, D_prev, bufs; - var material = new Buffer(0); - while (material.length < clen.key + clen.iv) { - bufs = []; - if (D_prev) - bufs.push(D_prev); - bufs.push(passphrase); - bufs.push(salt); - D = Buffer.concat(bufs); - for (var j = 0; j < count; ++j) - D = crypto.createHash('md5').update(D).digest(); - material = Buffer.concat([material, D]); - D_prev = D; - } - - return ({ - key: material.slice(0, clen.key), - iv: material.slice(clen.key, clen.key + clen.iv) - }); -} - -/* Count leading zero bits on a buffer */ -function countZeros(buf) { - var o = 0, obit = 8; - while (o < buf.length) { - var mask = (1 << obit); - if ((buf[o] & mask) === mask) - break; - obit--; - if (obit < 0) { - o++; - obit = 8; - } - } - return (o*8 + (8 - obit) - 1); -} - -function bufferSplit(buf, chr) { - assert.buffer(buf); - assert.string(chr); - - var parts = []; - var lastPart = 0; - var matches = 0; - for (var i = 0; i < buf.length; ++i) { - if (buf[i] === chr.charCodeAt(matches)) - ++matches; - else if (buf[i] === chr.charCodeAt(0)) - matches = 1; - else - matches = 0; - - if (matches >= chr.length) { - var newPart = i + 1; - parts.push(buf.slice(lastPart, newPart - matches)); - lastPart = newPart; - matches = 0; - } - } - if (lastPart <= buf.length) - parts.push(buf.slice(lastPart, buf.length)); - - return (parts); -} - -function ecNormalize(buf, addZero) { - assert.buffer(buf); - if (buf[0] === 0x00 && buf[1] === 0x04) { - if (addZero) - return (buf); - return (buf.slice(1)); - } else if (buf[0] === 0x04) { - if (!addZero) - return (buf); - } else { - while (buf[0] === 0x00) - buf = buf.slice(1); - if (buf[0] === 0x02 || buf[0] === 0x03) - throw (new Error('Compressed elliptic curve points ' + - 'are not supported')); - if (buf[0] !== 0x04) - throw (new Error('Not a valid elliptic curve point')); - if (!addZero) - return (buf); - } - var b = new Buffer(buf.length + 1); - b[0] = 0x0; - buf.copy(b, 1); - return (b); -} - -function mpNormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) - buf = buf.slice(1); - if ((buf[0] & 0x80) === 0x80) { - var b = new Buffer(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function bigintToMpBuf(bigint) { - var buf = new Buffer(bigint.toByteArray()); - buf = mpNormalize(buf); - return (buf); -} - -function calculateDSAPublic(g, p, x) { - assert.buffer(g); - assert.buffer(p); - assert.buffer(x); - try { - var bigInt = require('jsbn').BigInteger; - } catch (e) { - throw (new Error('To load a PKCS#8 format DSA private key, ' + - 'the node jsbn library is required.')); - } - g = new bigInt(g); - p = new bigInt(p); - x = new bigInt(x); - var y = g.modPow(x, p); - var ybuf = bigintToMpBuf(y); - return (ybuf); -} - -function addRSAMissing(key) { - assert.object(key); - assertCompatible(key, PrivateKey, [1, 1]); - try { - var bigInt = require('jsbn').BigInteger; - } catch (e) { - throw (new Error('To write a PEM private key from ' + - 'this source, the node jsbn lib is required.')); - } - - var d = new bigInt(key.part.d.data); - var buf; - - if (!key.part.dmodp) { - var p = new bigInt(key.part.p.data); - var dmodp = d.mod(p.subtract(1)); - - buf = bigintToMpBuf(dmodp); - key.part.dmodp = {name: 'dmodp', data: buf}; - key.parts.push(key.part.dmodp); - } - if (!key.part.dmodq) { - var q = new bigInt(key.part.q.data); - var dmodq = d.mod(q.subtract(1)); - - buf = bigintToMpBuf(dmodq); - key.part.dmodq = {name: 'dmodq', data: buf}; - key.parts.push(key.part.dmodq); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-conv.1 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-conv.1 deleted file mode 100644 index 0887dce2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-conv.1 +++ /dev/null @@ -1,135 +0,0 @@ -.TH sshpk\-conv 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-conv \- convert between key formats -.SH SYNOPSYS -.PP -\fB\fCsshpk\-conv\fR \-t FORMAT [FILENAME] [OPTIONS...] -.PP -\fB\fCsshpk\-conv\fR \-i [FILENAME] [OPTIONS...] -.SH DESCRIPTION -.PP -Reads in a public or private key and converts it between different formats, -particularly formats used in the SSH protocol and the well\-known PEM PKCS#1/7 -formats. -.PP -In the second form, with the \fB\fC\-i\fR option given, identifies a key and prints to -stderr information about its nature, size and fingerprint. -.SH EXAMPLES -.PP -Assume the following SSH\-format public key in \fB\fCid_ecdsa.pub\fR: -.PP -.RS -.nf -ecdsa\-sha2\-nistp256 AAAAE2VjZHNhLXNoYTI...9M/4c4= user@host -.fi -.RE -.PP -Identify it with \fB\fC\-i\fR: -.PP -.RS -.nf -$ sshpk\-conv \-i id_ecdsa.pub -id_ecdsa: a 256 bit ECDSA public key -ECDSA curve: nistp256 -Comment: user@host -Fingerprint: - SHA256:vCNX7eUkdvqqW0m4PoxQAZRv+CM4P4fS8+CbliAvS4k - 81:ad:d5:57:e5:6f:7d:a2:93:79:56:af:d7:c0:38:51 -.fi -.RE -.PP -Convert it to \fB\fCpkcs8\fR format, for use with e.g. OpenSSL: -.PP -.RS -.nf -$ sshpk\-conv \-t pkcs8 id_ecdsa -\-\-\-\-\-BEGIN PUBLIC KEY\-\-\-\-\- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAsA4R6N6AS3gzaPBeLjG2ObSgUsR -zOt+kWJoijLnw3ZMYUKmAx+lD0I5XUxdrPcs1vH5f3cn9TvRvO9L0z/hzg== -\-\-\-\-\-END PUBLIC KEY\-\-\-\-\- -.fi -.RE -.PP -Retrieve the public half of a private key: -.PP -.RS -.nf -$ openssl genrsa 2048 | sshpk\-conv \-t ssh \-c foo@bar -ssh\-rsa AAAAB3NzaC1yc2EAAA...koK7 foo@bar -.fi -.RE -.PP -Convert a private key to PKCS#1 (OpenSSL) format from a new\-style OpenSSH key -format (the \fB\fCssh\-keygen \-o\fR format): -.PP -.RS -.nf -$ ssh\-keygen \-o \-f foobar -\&... -$ sshpk\-conv \-p \-t pkcs1 foobar -\-\-\-\-\-BEGIN RSA PRIVATE KEY\-\-\-\-\- -MIIDpAIBAAKCAQEA6T/GYJndb1TRH3+NL.... -\-\-\-\-\-END RSA PRIVATE KEY\-\-\-\-\- -.fi -.RE -.SH OPTIONS -.TP -\fB\fC\-i, \-\-identify\fR -Instead of converting the key, output identifying information about it to -stderr, including its type, size and fingerprints. -.TP -\fB\fC\-p, \-\-private\fR -Treat the key as a private key instead of a public key (the default). If you -supply \fB\fCsshpk\-conv\fR with a private key and do not give this option, it will -extract only the public half of the key from it and work with that. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to take the key from instead of stdin. If a filename is supplied -as a positional argument, it is equivalent to using this option. -.TP -\fB\fC\-o PATH, \-\-out=PATH\fR -Output file name to use instead of stdout. -.PP -\fB\fC\-T FORMAT, \-\-informat=FORMAT\fR -.TP -\fB\fC\-t FORMAT, \-\-outformat=FORMAT\fR -Selects the input and output formats to be used (see FORMATS, below). -.TP -\fB\fC\-c TEXT, \-\-comment=TEXT\fR -Sets the key comment for the output file, if supported. -.SH FORMATS -.PP -Currently supported formats: -.TP -\fB\fCpem, pkcs1\fR -The standard PEM format used by older OpenSSH and most TLS libraries such as -OpenSSL. The classic \fB\fCid_rsa\fR file is usually in this format. It is an ASN.1 -encoded structure, base64\-encoded and placed between PEM headers. -.TP -\fB\fCssh\fR -The SSH public key text format (the format of an \fB\fCid_rsa.pub\fR file). A single -line, containing 3 space separated parts: the key type, key body and optional -key comment. -.TP -\fB\fCpkcs8\fR -A newer PEM format, usually used only for public keys by TLS libraries such -as OpenSSL. The ASN.1 structure is more generic than that of \fB\fCpkcs1\fR\&. -.TP -\fB\fCopenssh\fR -The new \fB\fCssh\-keygen \-o\fR format from OpenSSH. This can be mistaken for a PEM -encoding but is actually an OpenSSH internal format. -.TP -\fB\fCrfc4253\fR -The internal binary format of keys when sent over the wire in the SSH -protocol. This is also the format that the \fB\fCssh\-agent\fR uses in its protocol. -.SH SEE ALSO -.PP -.BR ssh-keygen (1), -.BR openssl (1) -.SH BUGS -.PP -Encrypted (password\-protected) keys are not supported. -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-sign.1 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-sign.1 deleted file mode 100644 index 749916ba..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-sign.1 +++ /dev/null @@ -1,81 +0,0 @@ -.TH sshpk\-sign 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-sign \- sign data using an SSH key -.SH SYNOPSYS -.PP -\fB\fCsshpk\-sign\fR \-i KEYPATH [OPTION...] -.SH DESCRIPTION -.PP -Takes in arbitrary bytes, and signs them using an SSH private key. The key can -be of any type or format supported by the \fB\fCsshpk\fR library, including the -standard OpenSSH formats, as well as PEM PKCS#1 and PKCS#8. -.PP -The signature is printed out in Base64 encoding, unless the \fB\fC\-\-binary\fR or \fB\fC\-b\fR -option is given. -.SH EXAMPLES -.PP -Signing with default settings: -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa -MEUCIAMdLS/vXrrtWFepwe... -.fi -.RE -.PP -Signing in SSH (RFC 4253) format (rather than the default ASN.1): -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa \-t ssh -AAAAFGVjZHNhLXNoYTIt... -.fi -.RE -.PP -Saving the binary signature to a file: -.PP -.RS -.nf -$ printf 'foo' | sshpk\-sign \-i ~/.ssh/id_ecdsa \\ - \-o signature.bin \-b -$ cat signature.bin | base64 -MEUCIAMdLS/vXrrtWFepwe... -.fi -.RE -.SH OPTIONS -.TP -\fB\fC\-v, \-\-verbose\fR -Print extra information about the key and signature to stderr when signing. -.TP -\fB\fC\-b, \-\-binary\fR -Don't base64\-encode the signature before outputting it. -.TP -\fB\fC\-i KEY, \-\-identity=KEY\fR -Select the key to be used for signing. \fB\fCKEY\fR must be a relative or absolute -filesystem path to the key file. Any format supported by the \fB\fCsshpk\fR library -is supported, including OpenSSH formats and standard PEM PKCS. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to sign instead of stdin. -.TP -\fB\fC\-o PATH, \-\-out=PATH\fR -Output file to save signature in instead of stdout. -.TP -\fB\fC\-H HASH, \-\-hash=HASH\fR -Set the hash algorithm to be used for signing. This should be one of \fB\fCsha1\fR, -\fB\fCsha256\fR or \fB\fCsha512\fR\&. Some key types may place restrictions on which hash -algorithms may be used (e.g. ED25519 keys can only use SHA\-512). -.TP -\fB\fC\-t FORMAT, \-\-format=FORMAT\fR -Choose the signature format to use, from \fB\fCasn1\fR, \fB\fCssh\fR or \fB\fCraw\fR (only for -ED25519 signatures). The \fB\fCasn1\fR format is the default, as it is the format -used with TLS and typically the standard in most non\-SSH libraries (e.g. -OpenSSL). The \fB\fCssh\fR format is used in the SSH protocol and by the ssh\-agent. -.SH SEE ALSO -.PP -.BR sshpk-verify (1) -.SH BUGS -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-verify.1 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-verify.1 deleted file mode 100644 index f79169d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/man/man1/sshpk-verify.1 +++ /dev/null @@ -1,68 +0,0 @@ -.TH sshpk\-verify 1 "Jan 2016" sshpk "sshpk Commands" -.SH NAME -.PP -sshpk\-verify \- verify a signature on data using an SSH key -.SH SYNOPSYS -.PP -\fB\fCsshpk\-verify\fR \-i KEYPATH \-s SIGNATURE [OPTION...] -.SH DESCRIPTION -.PP -Takes in arbitrary bytes and a Base64\-encoded signature, and verifies that the -signature was produced by the private half of the given SSH public key. -.SH EXAMPLES -.PP -.RS -.nf -$ printf 'foo' | sshpk\-verify \-i ~/.ssh/id_ecdsa \-s MEUCIQCYp... -OK -$ printf 'foo' | sshpk\-verify \-i ~/.ssh/id_ecdsa \-s GARBAGE... -NOT OK -.fi -.RE -.SH EXIT STATUS -.TP -\fB\fC0\fR -Signature validates and matches the key. -.TP -\fB\fC1\fR -Signature is parseable and the correct length but does not match the key or -otherwise is invalid. -.TP -\fB\fC2\fR -The signature or key could not be parsed. -.TP -\fB\fC3\fR -Invalid commandline options were supplied. -.SH OPTIONS -.TP -\fB\fC\-v, \-\-verbose\fR -Print extra information about the key and signature to stderr when verifying. -.TP -\fB\fC\-i KEY, \-\-identity=KEY\fR -Select the key to be used for verification. \fB\fCKEY\fR must be a relative or -absolute filesystem path to the key file. Any format supported by the \fB\fCsshpk\fR -library is supported, including OpenSSH formats and standard PEM PKCS. -.TP -\fB\fC\-s BASE64, \-\-signature=BASE64\fR -Supplies the base64\-encoded signature to be verified. -.TP -\fB\fC\-f PATH, \-\-file=PATH\fR -Input file to verify instead of stdin. -.TP -\fB\fC\-H HASH, \-\-hash=HASH\fR -Set the hash algorithm to be used for signing. This should be one of \fB\fCsha1\fR, -\fB\fCsha256\fR or \fB\fCsha512\fR\&. Some key types may place restrictions on which hash -algorithms may be used (e.g. ED25519 keys can only use SHA\-512). -.TP -\fB\fC\-t FORMAT, \-\-format=FORMAT\fR -Choose the signature format to use, from \fB\fCasn1\fR, \fB\fCssh\fR or \fB\fCraw\fR (only for -ED25519 signatures). The \fB\fCasn1\fR format is the default, as it is the format -used with TLS and typically the standard in most non\-SSH libraries (e.g. -OpenSSL). The \fB\fCssh\fR format is used in the SSH protocol and by the ssh\-agent. -.SH SEE ALSO -.PP -.BR sshpk-sign (1) -.SH BUGS -.PP -Report bugs at Github -\[la]https://github.com/arekinath/node-sshpk/issues\[ra] diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.npmignore deleted file mode 100644 index eb03e3e1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -*.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.travis.yml deleted file mode 100644 index 09d3ef37..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/LICENSE deleted file mode 100644 index 9b5dcdb7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Mark Cavage, All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/README.md deleted file mode 100644 index 7cebf7a2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/README.md +++ /dev/null @@ -1,50 +0,0 @@ -node-asn1 is a library for encoding and decoding ASN.1 datatypes in pure JS. -Currently BER encoding is supported; at some point I'll likely have to do DER. - -## Usage - -Mostly, if you're *actually* needing to read and write ASN.1, you probably don't -need this readme to explain what and why. If you have no idea what ASN.1 is, -see this: ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -The source is pretty much self-explanatory, and has read/write methods for the -common types out there. - -### Decoding - -The following reads an ASN.1 sequence with a boolean. - - var Ber = require('asn1').Ber; - - var reader = new Ber.Reader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - - reader.readSequence(); - console.log('Sequence len: ' + reader.length); - if (reader.peek() === Ber.Boolean) - console.log(reader.readBoolean()); - -### Encoding - -The following generates the same payload as above. - - var Ber = require('asn1').Ber; - - var writer = new Ber.Writer(); - - writer.startSequence(); - writer.writeBoolean(true); - writer.endSequence(); - - console.log(writer.buffer); - -## Installation - - npm install asn1 - -## License - -MIT. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js deleted file mode 100644 index ff21d4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/errors.js +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - - newInvalidAsn1Error: function(msg) { - var e = new Error(); - e.name = 'InvalidAsn1Error'; - e.message = msg || ''; - return e; - } - -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/index.js deleted file mode 100644 index 4fb90aea..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/index.js +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var errors = require('./errors'); -var types = require('./types'); - -var Reader = require('./reader'); -var Writer = require('./writer'); - - -///--- Exports - -module.exports = { - - Reader: Reader, - - Writer: Writer - -}; - -for (var t in types) { - if (types.hasOwnProperty(t)) - module.exports[t] = types[t]; -} -for (var e in errors) { - if (errors.hasOwnProperty(e)) - module.exports[e] = errors[e]; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js deleted file mode 100644 index 0a00e98e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/reader.js +++ /dev/null @@ -1,261 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); - -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - - - -///--- API - -function Reader(data) { - if (!data || !Buffer.isBuffer(data)) - throw new TypeError('data must be a node Buffer'); - - this._buf = data; - this._size = data.length; - - // These hold the "current" state - this._len = 0; - this._offset = 0; -} - -Object.defineProperty(Reader.prototype, 'length', { - enumerable: true, - get: function () { return (this._len); } -}); - -Object.defineProperty(Reader.prototype, 'offset', { - enumerable: true, - get: function () { return (this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'remain', { - get: function () { return (this._size - this._offset); } -}); - -Object.defineProperty(Reader.prototype, 'buffer', { - get: function () { return (this._buf.slice(this._offset)); } -}); - - -/** - * Reads a single byte and advances offset; you can pass in `true` to make this - * a "peek" operation (i.e., get the byte, but don't advance the offset). - * - * @param {Boolean} peek true means don't move offset. - * @return {Number} the next byte, null if not enough data. - */ -Reader.prototype.readByte = function(peek) { - if (this._size - this._offset < 1) - return null; - - var b = this._buf[this._offset] & 0xff; - - if (!peek) - this._offset += 1; - - return b; -}; - - -Reader.prototype.peek = function() { - return this.readByte(true); -}; - - -/** - * Reads a (potentially) variable length off the BER buffer. This call is - * not really meant to be called directly, as callers have to manipulate - * the internal buffer afterwards. - * - * As a result of this call, you can call `Reader.length`, until the - * next thing called that does a readLength. - * - * @return {Number} the amount of offset to advance the buffer. - * @throws {InvalidAsn1Error} on bad ASN.1 - */ -Reader.prototype.readLength = function(offset) { - if (offset === undefined) - offset = this._offset; - - if (offset >= this._size) - return null; - - var lenB = this._buf[offset++] & 0xff; - if (lenB === null) - return null; - - if ((lenB & 0x80) == 0x80) { - lenB &= 0x7f; - - if (lenB == 0) - throw newInvalidAsn1Error('Indefinite length not supported'); - - if (lenB > 4) - throw newInvalidAsn1Error('encoding too long'); - - if (this._size - offset < lenB) - return null; - - this._len = 0; - for (var i = 0; i < lenB; i++) - this._len = (this._len << 8) + (this._buf[offset++] & 0xff); - - } else { - // Wasn't a variable length - this._len = lenB; - } - - return offset; -}; - - -/** - * Parses the next sequence in this BER buffer. - * - * To get the length of the sequence, call `Reader.length`. - * - * @return {Number} the sequence's tag. - */ -Reader.prototype.readSequence = function(tag) { - var seq = this.peek(); - if (seq === null) - return null; - if (tag !== undefined && tag !== seq) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + seq.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - this._offset = o; - return seq; -}; - - -Reader.prototype.readInt = function() { - return this._readTag(ASN1.Integer); -}; - - -Reader.prototype.readBoolean = function() { - return (this._readTag(ASN1.Boolean) === 0 ? false : true); -}; - - -Reader.prototype.readEnumeration = function() { - return this._readTag(ASN1.Enumeration); -}; - - -Reader.prototype.readString = function(tag, retbuf) { - if (!tag) - tag = ASN1.OctetString; - - var b = this.peek(); - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - - if (o === null) - return null; - - if (this.length > this._size - o) - return null; - - this._offset = o; - - if (this.length === 0) - return retbuf ? new Buffer(0) : ''; - - var str = this._buf.slice(this._offset, this._offset + this.length); - this._offset += this.length; - - return retbuf ? str : str.toString('utf8'); -}; - -Reader.prototype.readOID = function(tag) { - if (!tag) - tag = ASN1.OID; - - var b = this.readString(tag, true); - if (b === null) - return null; - - var values = []; - var value = 0; - - for (var i = 0; i < b.length; i++) { - var byte = b[i] & 0xff; - - value <<= 7; - value += byte & 0x7f; - if ((byte & 0x80) == 0) { - values.push(value); - value = 0; - } - } - - value = values.shift(); - values.unshift(value % 40); - values.unshift((value / 40) >> 0); - - return values.join('.'); -}; - - -Reader.prototype._readTag = function(tag) { - assert.ok(tag !== undefined); - - var b = this.peek(); - - if (b === null) - return null; - - if (b !== tag) - throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + - ': got 0x' + b.toString(16)); - - var o = this.readLength(this._offset + 1); // stored in `length` - if (o === null) - return null; - - if (this.length > 4) - throw newInvalidAsn1Error('Integer too long: ' + this.length); - - if (this.length > this._size - o) - return null; - this._offset = o; - - var fb = this._buf[this._offset]; - var value = 0; - - for (var i = 0; i < this.length; i++) { - value <<= 8; - value |= (this._buf[this._offset++] & 0xff); - } - - if ((fb & 0x80) == 0x80 && i !== 4) - value -= (1 << (i * 8)); - - return value >> 0; -}; - - - -///--- Exported API - -module.exports = Reader; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/types.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/types.js deleted file mode 100644 index 8aea0001..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/types.js +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - - -module.exports = { - EOC: 0, - Boolean: 1, - Integer: 2, - BitString: 3, - OctetString: 4, - Null: 5, - OID: 6, - ObjectDescriptor: 7, - External: 8, - Real: 9, // float - Enumeration: 10, - PDV: 11, - Utf8String: 12, - RelativeOID: 13, - Sequence: 16, - Set: 17, - NumericString: 18, - PrintableString: 19, - T61String: 20, - VideotexString: 21, - IA5String: 22, - UTCTime: 23, - GeneralizedTime: 24, - GraphicString: 25, - VisibleString: 26, - GeneralString: 28, - UniversalString: 29, - CharacterString: 30, - BMPString: 31, - Constructor: 32, - Context: 128 -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js deleted file mode 100644 index d9d99af6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/ber/writer.js +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var assert = require('assert'); -var ASN1 = require('./types'); -var errors = require('./errors'); - - -///--- Globals - -var newInvalidAsn1Error = errors.newInvalidAsn1Error; - -var DEFAULT_OPTS = { - size: 1024, - growthFactor: 8 -}; - - -///--- Helpers - -function merge(from, to) { - assert.ok(from); - assert.equal(typeof(from), 'object'); - assert.ok(to); - assert.equal(typeof(to), 'object'); - - var keys = Object.getOwnPropertyNames(from); - keys.forEach(function(key) { - if (to[key]) - return; - - var value = Object.getOwnPropertyDescriptor(from, key); - Object.defineProperty(to, key, value); - }); - - return to; -} - - - -///--- API - -function Writer(options) { - options = merge(DEFAULT_OPTS, options || {}); - - this._buf = new Buffer(options.size || 1024); - this._size = this._buf.length; - this._offset = 0; - this._options = options; - - // A list of offsets in the buffer where we need to insert - // sequence tag/len pairs. - this._seq = []; -} - -Object.defineProperty(Writer.prototype, 'buffer', { - get: function () { - if (this._seq.length) - throw new InvalidAsn1Error(this._seq.length + ' unended sequence(s)'); - - return (this._buf.slice(0, this._offset)); - } -}); - -Writer.prototype.writeByte = function(b) { - if (typeof(b) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(1); - this._buf[this._offset++] = b; -}; - - -Writer.prototype.writeInt = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Integer; - - var sz = 4; - - while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) && - (sz > 1)) { - sz--; - i <<= 8; - } - - if (sz > 4) - throw new InvalidAsn1Error('BER ints cannot be > 0xffffffff'); - - this._ensure(2 + sz); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = sz; - - while (sz-- > 0) { - this._buf[this._offset++] = ((i & 0xff000000) >>> 24); - i <<= 8; - } - -}; - - -Writer.prototype.writeNull = function() { - this.writeByte(ASN1.Null); - this.writeByte(0x00); -}; - - -Writer.prototype.writeEnumeration = function(i, tag) { - if (typeof(i) !== 'number') - throw new TypeError('argument must be a Number'); - if (typeof(tag) !== 'number') - tag = ASN1.Enumeration; - - return this.writeInt(i, tag); -}; - - -Writer.prototype.writeBoolean = function(b, tag) { - if (typeof(b) !== 'boolean') - throw new TypeError('argument must be a Boolean'); - if (typeof(tag) !== 'number') - tag = ASN1.Boolean; - - this._ensure(3); - this._buf[this._offset++] = tag; - this._buf[this._offset++] = 0x01; - this._buf[this._offset++] = b ? 0xff : 0x00; -}; - - -Writer.prototype.writeString = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string (was: ' + typeof(s) + ')'); - if (typeof(tag) !== 'number') - tag = ASN1.OctetString; - - var len = Buffer.byteLength(s); - this.writeByte(tag); - this.writeLength(len); - if (len) { - this._ensure(len); - this._buf.write(s, this._offset); - this._offset += len; - } -}; - - -Writer.prototype.writeBuffer = function(buf, tag) { - if (typeof(tag) !== 'number') - throw new TypeError('tag must be a number'); - if (!Buffer.isBuffer(buf)) - throw new TypeError('argument must be a buffer'); - - this.writeByte(tag); - this.writeLength(buf.length); - this._ensure(buf.length); - buf.copy(this._buf, this._offset, 0, buf.length); - this._offset += buf.length; -}; - - -Writer.prototype.writeStringArray = function(strings) { - if ((!strings instanceof Array)) - throw new TypeError('argument must be an Array[String]'); - - var self = this; - strings.forEach(function(s) { - self.writeString(s); - }); -}; - -// This is really to solve DER cases, but whatever for now -Writer.prototype.writeOID = function(s, tag) { - if (typeof(s) !== 'string') - throw new TypeError('argument must be a string'); - if (typeof(tag) !== 'number') - tag = ASN1.OID; - - if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) - throw new Error('argument is not a valid OID string'); - - function encodeOctet(bytes, octet) { - if (octet < 128) { - bytes.push(octet); - } else if (octet < 16384) { - bytes.push((octet >>> 7) | 0x80); - bytes.push(octet & 0x7F); - } else if (octet < 2097152) { - bytes.push((octet >>> 14) | 0x80); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else if (octet < 268435456) { - bytes.push((octet >>> 21) | 0x80); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } else { - bytes.push(((octet >>> 28) | 0x80) & 0xFF); - bytes.push(((octet >>> 21) | 0x80) & 0xFF); - bytes.push(((octet >>> 14) | 0x80) & 0xFF); - bytes.push(((octet >>> 7) | 0x80) & 0xFF); - bytes.push(octet & 0x7F); - } - } - - var tmp = s.split('.'); - var bytes = []; - bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); - tmp.slice(2).forEach(function(b) { - encodeOctet(bytes, parseInt(b, 10)); - }); - - var self = this; - this._ensure(2 + bytes.length); - this.writeByte(tag); - this.writeLength(bytes.length); - bytes.forEach(function(b) { - self.writeByte(b); - }); -}; - - -Writer.prototype.writeLength = function(len) { - if (typeof(len) !== 'number') - throw new TypeError('argument must be a Number'); - - this._ensure(4); - - if (len <= 0x7f) { - this._buf[this._offset++] = len; - } else if (len <= 0xff) { - this._buf[this._offset++] = 0x81; - this._buf[this._offset++] = len; - } else if (len <= 0xffff) { - this._buf[this._offset++] = 0x82; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else if (len <= 0xffffff) { - this._buf[this._offset++] = 0x83; - this._buf[this._offset++] = len >> 16; - this._buf[this._offset++] = len >> 8; - this._buf[this._offset++] = len; - } else { - throw new InvalidAsn1ERror('Length too long (> 4 bytes)'); - } -}; - -Writer.prototype.startSequence = function(tag) { - if (typeof(tag) !== 'number') - tag = ASN1.Sequence | ASN1.Constructor; - - this.writeByte(tag); - this._seq.push(this._offset); - this._ensure(3); - this._offset += 3; -}; - - -Writer.prototype.endSequence = function() { - var seq = this._seq.pop(); - var start = seq + 3; - var len = this._offset - start; - - if (len <= 0x7f) { - this._shift(start, len, -2); - this._buf[seq] = len; - } else if (len <= 0xff) { - this._shift(start, len, -1); - this._buf[seq] = 0x81; - this._buf[seq + 1] = len; - } else if (len <= 0xffff) { - this._buf[seq] = 0x82; - this._buf[seq + 1] = len >> 8; - this._buf[seq + 2] = len; - } else if (len <= 0xffffff) { - this._shift(start, len, 1); - this._buf[seq] = 0x83; - this._buf[seq + 1] = len >> 16; - this._buf[seq + 2] = len >> 8; - this._buf[seq + 3] = len; - } else { - throw new InvalidAsn1Error('Sequence too long'); - } -}; - - -Writer.prototype._shift = function(start, len, shift) { - assert.ok(start !== undefined); - assert.ok(len !== undefined); - assert.ok(shift); - - this._buf.copy(this._buf, start + shift, start, start + len); - this._offset += shift; -}; - -Writer.prototype._ensure = function(len) { - assert.ok(len); - - if (this._size - this._offset < len) { - var sz = this._size * this._options.growthFactor; - if (sz - this._offset < len) - sz += len; - - var buf = new Buffer(sz); - - this._buf.copy(buf, 0, 0, this._offset); - this._buf = buf; - this._size = sz; - } -}; - - - -///--- Exported API - -module.exports = Writer; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/index.js deleted file mode 100644 index d1766e7a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/lib/index.js +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -// If you have no idea what ASN.1 or BER is, see this: -// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc - -var Ber = require('./ber/index'); - - - -///--- Exported API - -module.exports = { - - Ber: Ber, - - BerReader: Ber.Reader, - - BerWriter: Ber.Writer - -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/package.json deleted file mode 100644 index 68d4f140..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "asn1@~0.2.3", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "asn1@>=0.2.3 <0.3.0", - "_id": "asn1@0.2.3", - "_inCache": true, - "_installable": true, - "_location": "/sshpk/asn1", - "_npmUser": { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "asn1", - "raw": "asn1@~0.2.3", - "rawSpec": "~0.2.3", - "scope": null, - "spec": ">=0.2.3 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "_shasum": "dac8787713c9966849fc8180777ebe9c1ddf3b86", - "_shrinkwrap": null, - "_spec": "asn1@~0.2.3", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-asn1/issues" - }, - "contributors": [ - { - "email": "loki@animata.net", - "name": "David Gwynne" - }, - { - "email": "yunong@joyent.com", - "name": "Yunong Xiao" - }, - { - "email": "alex.wilson@joyent.com", - "name": "Alex Wilson" - } - ], - "dependencies": {}, - "description": "Contains parsers and serializers for ASN.1 (currently BER only)", - "devDependencies": { - "tap": "0.4.8" - }, - "directories": {}, - "dist": { - "shasum": "dac8787713c9966849fc8180777ebe9c1ddf3b86", - "tarball": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" - }, - "homepage": "https://github.com/mcavage/node-asn1", - "license": "MIT", - "main": "lib/index.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - } - ], - "name": "asn1", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/mcavage/node-asn1.git" - }, - "scripts": { - "test": "tap ./tst" - }, - "version": "0.2.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js deleted file mode 100644 index 062fd7ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/reader.test.js +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var test = require('tap').test; - - - -///--- Globals - -var BerReader; - - - -///--- Tests - -test('load library', function(t) { - BerReader = require('../../lib/index').BerReader; - t.ok(BerReader); - try { - new BerReader(); - t.fail('Should have thrown'); - } catch (e) { - t.ok(e instanceof TypeError, 'Should have been a type error'); - } - t.end(); -}); - - -test('read byte', function(t) { - var reader = new BerReader(new Buffer([0xde])); - t.ok(reader); - t.equal(reader.readByte(), 0xde, 'wrong value'); - t.end(); -}); - - -test('read 1 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x03, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0x7e, 0xde])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0x7e, 0xde, 0x03])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede03, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x7e, 0xde, 0x03, 0x01])); - t.ok(reader); - t.equal(reader.readInt(), 0x7ede0301, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read 1 byte negative int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x01, 0xdc])); - t.ok(reader); - t.equal(reader.readInt(), -36, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read 2 byte negative int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x02, 0xc0, 0x4e])); - t.ok(reader); - t.equal(reader.readInt(), -16306, 'wrong value'); - t.equal(reader.length, 0x02, 'wrong length'); - t.end(); -}); - - -test('read 3 byte negative int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x03, 0xff, 0x00, 0x19])); - t.ok(reader); - t.equal(reader.readInt(), -65511, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.end(); -}); - - -test('read 4 byte negative int', function(t) { - var reader = new BerReader(new Buffer([0x02, 0x04, 0x91, 0x7c, 0x22, 0x1f])); - t.ok(reader); - t.equal(reader.readInt(), -1854135777, 'wrong value'); - t.equal(reader.length, 0x04, 'wrong length'); - t.end(); -}); - - -test('read boolean true', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read boolean false', function(t) { - var reader = new BerReader(new Buffer([0x01, 0x01, 0x00])); - t.ok(reader); - t.equal(reader.readBoolean(), false, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read enumeration', function(t) { - var reader = new BerReader(new Buffer([0x0a, 0x01, 0x20])); - t.ok(reader); - t.equal(reader.readEnumeration(), 0x20, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('read string', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var buf = new Buffer(dn.length + 2); - buf[0] = 0x04; - buf[1] = Buffer.byteLength(dn); - buf.write(dn, 2); - var reader = new BerReader(buf); - t.ok(reader); - t.equal(reader.readString(), dn, 'wrong value'); - t.equal(reader.length, dn.length, 'wrong length'); - t.end(); -}); - - -test('read sequence', function(t) { - var reader = new BerReader(new Buffer([0x30, 0x03, 0x01, 0x01, 0xff])); - t.ok(reader); - t.equal(reader.readSequence(), 0x30, 'wrong value'); - t.equal(reader.length, 0x03, 'wrong length'); - t.equal(reader.readBoolean(), true, 'wrong value'); - t.equal(reader.length, 0x01, 'wrong length'); - t.end(); -}); - - -test('anonymous LDAPv3 bind', function(t) { - var BIND = new Buffer(14); - BIND[0] = 0x30; // Sequence - BIND[1] = 12; // len - BIND[2] = 0x02; // ASN.1 Integer - BIND[3] = 1; // len - BIND[4] = 0x04; // msgid (make up 4) - BIND[5] = 0x60; // Bind Request - BIND[6] = 7; // len - BIND[7] = 0x02; // ASN.1 Integer - BIND[8] = 1; // len - BIND[9] = 0x03; // v3 - BIND[10] = 0x04; // String (bind dn) - BIND[11] = 0; // len - BIND[12] = 0x80; // ContextSpecific (choice) - BIND[13] = 0; // simple bind - - // Start testing ^^ - var ber = new BerReader(BIND); - t.equal(ber.readSequence(), 48, 'Not an ASN.1 Sequence'); - t.equal(ber.length, 12, 'Message length should be 12'); - t.equal(ber.readInt(), 4, 'Message id should have been 4'); - t.equal(ber.readSequence(), 96, 'Bind Request should have been 96'); - t.equal(ber.length, 7, 'Bind length should have been 7'); - t.equal(ber.readInt(), 3, 'LDAP version should have been 3'); - t.equal(ber.readString(), '', 'Bind DN should have been empty'); - t.equal(ber.length, 0, 'string length should have been 0'); - t.equal(ber.readByte(), 0x80, 'Should have been ContextSpecific (choice)'); - t.equal(ber.readByte(), 0, 'Should have been simple bind'); - t.equal(null, ber.readByte(), 'Should be out of data'); - t.end(); -}); - - -test('long string', function(t) { - var buf = new Buffer(256); - var o; - var s = - '2;649;CN=Red Hat CS 71GA Demo,O=Red Hat CS 71GA Demo,C=US;' + - 'CN=RHCS Agent - admin01,UID=admin01,O=redhat,C=US [1] This is ' + - 'Teena Vradmin\'s description.'; - buf[0] = 0x04; - buf[1] = 0x81; - buf[2] = 0x94; - buf.write(s, 3); - var ber = new BerReader(buf.slice(0, 3 + s.length)); - t.equal(ber.readString(), s); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js deleted file mode 100644 index d87cb7bc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/asn1/tst/ber/writer.test.js +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright 2011 Mark Cavage All rights reserved. - -var test = require('tap').test; -var sys = require('sys'); - -///--- Globals - -var BerWriter; - -var BerReader; - - -///--- Tests - -test('load library', function(t) { - BerWriter = require('../../lib/index').BerWriter; - t.ok(BerWriter); - t.ok(new BerWriter()); - t.end(); -}); - - -test('write byte', function(t) { - var writer = new BerWriter(); - - writer.writeByte(0xC2); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 1, 'Wrong length'); - t.equal(ber[0], 0xC2, 'value wrong'); - - t.end(); -}); - - -test('write 1 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7f); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 3, 'Wrong length for an int: ' + ber.length); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong (2) -> ' + ber[0]); - t.equal(ber[1], 0x01, 'length wrong(1) -> ' + ber[1]); - t.equal(ber[2], 0x7f, 'value wrong(3) -> ' + ber[2]); - - t.end(); -}); - - -test('write 2 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xfe, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffe); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xfe, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(0x7ffffffe); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0x7f, 'value wrong (byte 1)'); - t.equal(ber[3], 0xff, 'value wrong (byte 2)'); - t.equal(ber[4], 0xff, 'value wrong (byte 3)'); - t.equal(ber[5], 0xfe, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write 1 byte negative int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(-128); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 3, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0x80, 'value wrong (byte 1)'); - - t.end(); -}); - - -test('write 2 byte negative int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(-22400); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 4, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x02, 'length wrong'); - t.equal(ber[2], 0xa8, 'value wrong (byte 1)'); - t.equal(ber[3], 0x80, 'value wrong (byte 2)'); - - t.end(); -}); - - -test('write 3 byte negative int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(-481653); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 5, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x03, 'length wrong'); - t.equal(ber[2], 0xf8, 'value wrong (byte 1)'); - t.equal(ber[3], 0xa6, 'value wrong (byte 2)'); - t.equal(ber[4], 0x8b, 'value wrong (byte 3)'); - - t.end(); -}); - - -test('write 4 byte negative int', function(t) { - var writer = new BerWriter(); - - writer.writeInt(-1522904131); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 6, 'Wrong length for an int'); - t.equal(ber[0], 0x02, 'ASN.1 tag wrong'); - t.equal(ber[1], 0x04, 'length wrong'); - t.equal(ber[2], 0xa5, 'value wrong (byte 1)'); - t.equal(ber[3], 0x3a, 'value wrong (byte 2)'); - t.equal(ber[4], 0x53, 'value wrong (byte 3)'); - t.equal(ber[5], 0xbd, 'value wrong (byte 4)'); - - t.end(); -}); - - -test('write boolean', function(t) { - var writer = new BerWriter(); - - writer.writeBoolean(true); - writer.writeBoolean(false); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 6, 'Wrong length'); - t.equal(ber[0], 0x01, 'tag wrong'); - t.equal(ber[1], 0x01, 'length wrong'); - t.equal(ber[2], 0xff, 'value wrong'); - t.equal(ber[3], 0x01, 'tag wrong'); - t.equal(ber[4], 0x01, 'length wrong'); - t.equal(ber[5], 0x00, 'value wrong'); - - t.end(); -}); - - -test('write string', function(t) { - var writer = new BerWriter(); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - -test('write buffer', function(t) { - var writer = new BerWriter(); - // write some stuff to start with - writer.writeString('hello world'); - var ber = writer.buffer; - var buf = new Buffer([0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01, - 0xff, 0x01, 0x01, 0xff]); - writer.writeBuffer(buf.slice(2, buf.length), 0x04); - ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 26, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[13], buf[0], 'wrong tag'); - t.equal(ber[14], buf[1], 'wrong length'); - for (var i = 13, j = 0; i < ber.length && j < buf.length; i++, j++) { - t.equal(ber[i], buf[j], 'buffer contents not identical'); - } - t.end(); -}); - -test('write string array', function(t) { - var writer = new BerWriter(); - writer.writeStringArray(['hello world', 'fubar!']); - var ber = writer.buffer; - - t.ok(ber); - - t.equal(ber.length, 21, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2, 13).toString('utf8'), 'hello world', 'wrong value'); - - t.equal(ber[13], 0x04, 'wrong tag'); - t.equal(ber[14], 6, 'wrong length'); - t.equal(ber.slice(15).toString('utf8'), 'fubar!', 'wrong value'); - - t.end(); -}); - - -test('resize internal buffer', function(t) { - var writer = new BerWriter({size: 2}); - writer.writeString('hello world'); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 13, 'wrong length'); - t.equal(ber[0], 0x04, 'wrong tag'); - t.equal(ber[1], 11, 'wrong length'); - t.equal(ber.slice(2).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - console.log(ber); - t.equal(ber.length, 15, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 13, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('nested sequence', function(t) { - var writer = new BerWriter({size: 25}); - writer.startSequence(); - writer.writeString('hello world'); - writer.startSequence(); - writer.writeString('hello world'); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 30, 'wrong length'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 28, 'wrong length'); - t.equal(ber[2], 0x04, 'wrong tag'); - t.equal(ber[3], 11, 'wrong length'); - t.equal(ber.slice(4, 15).toString('utf8'), 'hello world', 'wrong value'); - t.equal(ber[15], 0x30, 'wrong tag'); - t.equal(ber[16], 13, 'wrong length'); - t.equal(ber[17], 0x04, 'wrong tag'); - t.equal(ber[18], 11, 'wrong length'); - t.equal(ber.slice(19, 30).toString('utf8'), 'hello world', 'wrong value'); - - t.end(); -}); - - -test('LDAP bind message', function(t) { - var dn = 'cn=foo,ou=unit,o=test'; - var writer = new BerWriter(); - writer.startSequence(); - writer.writeInt(3); // msgid = 3 - writer.startSequence(0x60); // ldap bind - writer.writeInt(3); // ldap v3 - writer.writeString(dn); - writer.writeByte(0x80); - writer.writeByte(0x00); - writer.endSequence(); - writer.endSequence(); - var ber = writer.buffer; - - t.ok(ber); - t.equal(ber.length, 35, 'wrong length (buffer)'); - t.equal(ber[0], 0x30, 'wrong tag'); - t.equal(ber[1], 33, 'wrong length'); - t.equal(ber[2], 0x02, 'wrong tag'); - t.equal(ber[3], 1, 'wrong length'); - t.equal(ber[4], 0x03, 'wrong value'); - t.equal(ber[5], 0x60, 'wrong tag'); - t.equal(ber[6], 28, 'wrong length'); - t.equal(ber[7], 0x02, 'wrong tag'); - t.equal(ber[8], 1, 'wrong length'); - t.equal(ber[9], 0x03, 'wrong value'); - t.equal(ber[10], 0x04, 'wrong tag'); - t.equal(ber[11], dn.length, 'wrong length'); - t.equal(ber.slice(12, 33).toString('utf8'), dn, 'wrong value'); - t.equal(ber[33], 0x80, 'wrong tag'); - t.equal(ber[34], 0x00, 'wrong len'); - - t.end(); -}); - - -test('Write OID', function(t) { - var oid = '1.2.840.113549.1.1.1'; - var writer = new BerWriter(); - writer.writeOID(oid); - - var ber = writer.buffer; - t.ok(ber); - console.log(require('util').inspect(ber)); - console.log(require('util').inspect(new Buffer([0x06, 0x09, 0x2a, 0x86, - 0x48, 0x86, 0xf7, 0x0d, - 0x01, 0x01, 0x01]))); - - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/AUTHORS b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/AUTHORS deleted file mode 100644 index 1923524f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/AUTHORS +++ /dev/null @@ -1,6 +0,0 @@ -Dave Eddy -Fred Kuo -Lars-Magnus Skog -Mark Cavage -Patrick Mooney -Rob Gulewich diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/CHANGES.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/CHANGES.md deleted file mode 100644 index 57d92bfd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/CHANGES.md +++ /dev/null @@ -1,14 +0,0 @@ -# assert-plus Changelog - -## 1.0.0 - -- *BREAKING* assert.number (and derivatives) now accept Infinity as valid input -- Add assert.finite check. Previous assert.number callers should use this if - they expect Infinity inputs to throw. - -## 0.2.0 - -- Fix `assert.object(null)` so it throws -- Fix optional/arrayOf exports for non-type-of asserts -- Add optiona/arrayOf exports for Stream/Date/Regex/uuid -- Add basic unit test coverage diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/README.md deleted file mode 100644 index ec200d16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# assert-plus - -This library is a super small wrapper over node's assert module that has two -things: (1) the ability to disable assertions with the environment variable -NODE\_NDEBUG, and (2) some API wrappers for argument testing. Like -`assert.string(myArg, 'myArg')`. As a simple example, most of my code looks -like this: - -```javascript - var assert = require('assert-plus'); - - function fooAccount(options, callback) { - assert.object(options, 'options'); - assert.number(options.id, 'options.id'); - assert.bool(options.isManager, 'options.isManager'); - assert.string(options.name, 'options.name'); - assert.arrayOfString(options.email, 'options.email'); - assert.func(callback, 'callback'); - - // Do stuff - callback(null, {}); - } -``` - -# API - -All methods that *aren't* part of node's core assert API are simply assumed to -take an argument, and then a string 'name' that's not a message; `AssertionError` -will be thrown if the assertion fails with a message like: - - AssertionError: foo (string) is required - at test (/home/mark/work/foo/foo.js:3:9) - at Object. (/home/mark/work/foo/foo.js:15:1) - at Module._compile (module.js:446:26) - at Object..js (module.js:464:10) - at Module.load (module.js:353:31) - at Function._load (module.js:311:12) - at Array.0 (module.js:484:10) - at EventEmitter._tickCallback (node.js:190:38) - -from: - -```javascript - function test(foo) { - assert.string(foo, 'foo'); - } -``` - -There you go. You can check that arrays are of a homogeneous type with `Arrayof$Type`: - -```javascript - function test(foo) { - assert.arrayOfString(foo, 'foo'); - } -``` - -You can assert IFF an argument is not `undefined` (i.e., an optional arg): - -```javascript - assert.optionalString(foo, 'foo'); -``` - -Lastly, you can opt-out of assertion checking altogether by setting the -environment variable `NODE_NDEBUG=1`. This is pseudo-useful if you have -lots of assertions, and don't want to pay `typeof ()` taxes to v8 in -production. Be advised: The standard functions re-exported from `assert` are -also disabled in assert-plus if NDEBUG is specified. Using them directly from -the `assert` module avoids this behavior. - -The complete list of APIs is: - -* assert.array -* assert.bool -* assert.buffer -* assert.func -* assert.number -* assert.finite -* assert.object -* assert.string -* assert.stream -* assert.date -* assert.regexp -* assert.uuid -* assert.arrayOfArray -* assert.arrayOfBool -* assert.arrayOfBuffer -* assert.arrayOfFunc -* assert.arrayOfNumber -* assert.arrayOfFinite -* assert.arrayOfObject -* assert.arrayOfString -* assert.arrayOfStream -* assert.arrayOfDate -* assert.arrayOfRegexp -* assert.arrayOfUuid -* assert.optionalArray -* assert.optionalBool -* assert.optionalBuffer -* assert.optionalFunc -* assert.optionalNumber -* assert.optionalFinite -* assert.optionalObject -* assert.optionalString -* assert.optionalStream -* assert.optionalDate -* assert.optionalRegexp -* assert.optionalUuid -* assert.optionalArrayOfArray -* assert.optionalArrayOfBool -* assert.optionalArrayOfBuffer -* assert.optionalArrayOfFunc -* assert.optionalArrayOfNumber -* assert.optionalArrayOfFinite -* assert.optionalArrayOfObject -* assert.optionalArrayOfString -* assert.optionalArrayOfStream -* assert.optionalArrayOfDate -* assert.optionalArrayOfRegexp -* assert.optionalArrayOfUuid -* assert.AssertionError -* assert.fail -* assert.ok -* assert.equal -* assert.notEqual -* assert.deepEqual -* assert.notDeepEqual -* assert.strictEqual -* assert.notStrictEqual -* assert.throws -* assert.doesNotThrow -* assert.ifError - -# Installation - - npm install assert-plus - -## License - -The MIT License (MIT) -Copyright (c) 2012 Mark Cavage - -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. - -## Bugs - -See . diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/assert.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/assert.js deleted file mode 100644 index 26f944ee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/assert.js +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = require('assert'); -var Stream = require('stream').Stream; -var util = require('util'); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/package.json deleted file mode 100644 index 4d9f8083..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/node_modules/assert-plus/package.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "_args": [ - [ - "assert-plus@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "assert-plus@>=1.0.0 <2.0.0", - "_id": "assert-plus@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/sshpk/assert-plus", - "_nodeVersion": "0.10.40", - "_npmUser": { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - }, - "_npmVersion": "3.3.9", - "_phantomChildren": {}, - "_requested": { - "name": "assert-plus", - "raw": "assert-plus@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "_shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "_shrinkwrap": null, - "_spec": "assert-plus@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - "bugs": { - "url": "https://github.com/mcavage/node-assert-plus/issues" - }, - "contributors": [ - { - "email": "dave@daveeddy.com", - "name": "Dave Eddy" - }, - { - "email": "fred.kuo@joyent.com", - "name": "Fred Kuo" - }, - { - "email": "ralphtheninja@riseup.net", - "name": "Lars-Magnus Skog" - }, - { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - { - "email": "pmooney@pfmooney.com", - "name": "Patrick Mooney" - }, - { - "email": "robert.gulewich@joyent.com", - "name": "Rob Gulewich" - } - ], - "dependencies": {}, - "description": "Extra assertions on top of node's assert module", - "devDependencies": { - "faucet": "0.0.1", - "tape": "4.2.2" - }, - "directories": {}, - "dist": { - "shasum": "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525", - "tarball": "http://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - }, - "engines": { - "node": ">=0.8" - }, - "homepage": "https://github.com/mcavage/node-assert-plus#readme", - "license": "MIT", - "main": "./assert.js", - "maintainers": [ - { - "email": "mcavage@gmail.com", - "name": "mcavage" - }, - { - "email": "patrick.f.mooney@gmail.com", - "name": "pfmooney" - } - ], - "name": "assert-plus", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mcavage/node-assert-plus.git" - }, - "scripts": { - "test": "tape tests/*.js | ./node_modules/.bin/faucet" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/package.json deleted file mode 100644 index 746b072d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/sshpk/package.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "_args": [ - [ - "sshpk@^1.7.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request/node_modules/http-signature" - ] - ], - "_from": "sshpk@>=1.7.0 <2.0.0", - "_id": "sshpk@1.8.3", - "_inCache": true, - "_installable": true, - "_location": "/sshpk", - "_nodeVersion": "0.12.13", - "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/sshpk-1.8.3.tgz_1461968607532_0.32797130732797086" - }, - "_npmUser": { - "email": "alex@cooperi.net", - "name": "arekinath" - }, - "_npmVersion": "2.15.1", - "_phantomChildren": {}, - "_requested": { - "name": "sshpk", - "raw": "sshpk@^1.7.0", - "rawSpec": "^1.7.0", - "scope": null, - "spec": ">=1.7.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/request/http-signature" - ], - "_resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.8.3.tgz", - "_shasum": "890cc9d614dc5292e5cb1a543b03c9abaa5c374e", - "_shrinkwrap": null, - "_spec": "sshpk@^1.7.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request/node_modules/http-signature", - "author": { - "name": "Joyent, Inc" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "bugs": { - "url": "https://github.com/arekinath/node-sshpk/issues" - }, - "contributors": [ - { - "email": "dave@daveeddy.com", - "name": "Dave Eddy" - }, - { - "email": "mcavage@gmail.com", - "name": "Mark Cavage" - }, - { - "email": "alex@cooperi.net", - "name": "Alex Wilson" - } - ], - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.13.0" - }, - "description": "A library for finding and using SSH public keys", - "devDependencies": { - "benchmark": "^1.0.0", - "sinon": "^1.17.2", - "tape": "^3.5.0", - "temp": "^0.8.2" - }, - "directories": { - "bin": "./bin", - "lib": "./lib", - "man": "./man/man1" - }, - "dist": { - "shasum": "890cc9d614dc5292e5cb1a543b03c9abaa5c374e", - "tarball": "https://registry.npmjs.org/sshpk/-/sshpk-1.8.3.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "gitHead": "82d39066b2df4e8284350ff5ebb08c5b95c74652", - "homepage": "https://github.com/arekinath/node-sshpk#readme", - "license": "MIT", - "main": "lib/index.js", - "maintainers": [ - { - "email": "alex@cooperi.net", - "name": "arekinath" - } - ], - "man": [ - "/Users/alex.wilson/dev/sshpk/man/man1/sshpk-conv.1", - "/Users/alex.wilson/dev/sshpk/man/man1/sshpk-sign.1", - "/Users/alex.wilson/dev/sshpk/man/man1/sshpk-verify.1" - ], - "name": "sshpk", - "optionalDependencies": { - "ecc-jsbn": "~0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.13.0" - }, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/arekinath/node-sshpk.git" - }, - "scripts": { - "test": "tape test/*.js" - }, - "version": "1.8.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.npmignore deleted file mode 100644 index 13abef4f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.travis.yml deleted file mode 100644 index 895dbd36..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/LICENSE deleted file mode 100644 index 6d03581f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 'Dominic Tarr' - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/README.md deleted file mode 100644 index 565e0e26..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# stream-combiner - - - -## Combine (stream1,...,streamN) - -Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream -and reads from the last stream. - -Listening for 'error' will recieve errors from all streams inside the pipe. - -``` js - var Combine = require('stream-combiner') - var es = require('event-stream') - - Combine( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) -``` - -## License - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/index.js deleted file mode 100644 index 99cf5b61..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/index.js +++ /dev/null @@ -1,39 +0,0 @@ -var duplexer = require('duplexer') - -module.exports = function () { - - var streams = [].slice.call(arguments) - , first = streams[0] - , last = streams[streams.length - 1] - , thepipe = duplexer(first, last) - - if(streams.length == 1) - return streams[0] - else if (!streams.length) - throw new Error('connect called with empty args') - - //pipe all the streams together - - function recurse (streams) { - if(streams.length < 2) - return - streams[0].pipe(streams[1]) - recurse(streams.slice(1)) - } - - recurse(streams) - - function onerror () { - var args = [].slice.call(arguments) - args.unshift('error') - thepipe.emit.apply(thepipe, args) - } - - //es.duplex already reemits the error from the first and last stream. - //add a listener for the inner streams in the pipeline. - for(var i = 1; i < streams.length - 1; i ++) - streams[i].on('error', onerror) - - return thepipe -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/package.json deleted file mode 100644 index e22225d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_args": [ - [ - "stream-combiner@~0.0.4", - "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream" - ] - ], - "_from": "stream-combiner@>=0.0.4 <0.1.0", - "_id": "stream-combiner@0.0.4", - "_inCache": true, - "_installable": true, - "_location": "/stream-combiner", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "1.3.11", - "_phantomChildren": {}, - "_requested": { - "name": "stream-combiner", - "raw": "stream-combiner@~0.0.4", - "rawSpec": "~0.0.4", - "scope": null, - "spec": ">=0.0.4 <0.1.0", - "type": "range" - }, - "_requiredBy": [ - "/event-stream", - "/gulp-symdest/event-stream", - "/gulp-vinyl-zip/event-stream" - ], - "_resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "_shasum": "4d5e433c185261dde623ca3f44c586bcf5c4ad14", - "_shrinkwrap": null, - "_spec": "stream-combiner@~0.0.4", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/event-stream", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "'Dominic Tarr'", - "url": "http://dominictarr.com" - }, - "bugs": { - "url": "https://github.com/dominictarr/stream-combiner/issues" - }, - "dependencies": { - "duplexer": "~0.1.1" - }, - "description": "", - "devDependencies": { - "event-stream": "~3.0.7", - "tape": "~2.3.0" - }, - "directories": {}, - "dist": { - "shasum": "4d5e433c185261dde623ca3f44c586bcf5c4ad14", - "tarball": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" - }, - "homepage": "https://github.com/dominictarr/stream-combiner", - "license": "MIT", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "stream-combiner", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/stream-combiner.git" - }, - "scripts": { - "test": "set -e; for t in test/*.js; do node $t; done" - }, - "version": "0.0.4" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/test/index.js deleted file mode 100644 index d17ddada..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-combiner/test/index.js +++ /dev/null @@ -1,52 +0,0 @@ -var es = require('event-stream') -var combine = require('..') -var test = require('tape') - -test('do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); -}) - -test('3 pipe do not duplicate errors', function (test) { - - var errors = 0; - var pipe = combine( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - test.ok(errors, 'expected error count') - process.nextTick(function () { - return test.end(); - }) - }) - - return pipe.write('meh'); - -}) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/README.md deleted file mode 100644 index d7c9c909..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# stream-consume - -A node module ensures a Readable stream continues flowing if it's not piped to -another destination. - - npm install stream-consume - -## Usage - -Simply pass a stream to `stream-consume`. -Both legacy streams and streams2 are supported. - -``` js -var consume = require('stream-consume'); - -consume(readableStream); -``` - -## Details - -Only Readable streams are processed (as determined by presence of `readable` -property and a `resume` property that is a function). If called with anything -else, it's a NOP. - -For a streams2 stream (as determined by presence of a `_readableState` -property), nothing is done if the stream has already been piped to at least -one other destination. - -`resume()` is used to cause the stream to continue flowing. - -## License - -The MIT License (MIT) - -Copyright (c) 2014 Aron Nopanen - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/index.js deleted file mode 100644 index 122edb18..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/index.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = function(stream) { - if (stream.readable && typeof stream.resume === 'function') { - var state = stream._readableState; - if (!state || state.pipesCount === 0) { - // Either a classic stream or streams2 that's not piped to another destination - try { - stream.resume(); - } catch (err) { - console.error("Got error: " + err); - // If we can't, it's not worth dying over - } - } - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/package.json deleted file mode 100644 index 93d1260c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/package.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "_args": [ - [ - "stream-consume@~0.1.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/orchestrator" - ] - ], - "_from": "stream-consume@>=0.1.0 <0.2.0", - "_id": "stream-consume@0.1.0", - "_inCache": true, - "_installable": true, - "_location": "/stream-consume", - "_npmUser": { - "email": "aron.nopanen@gmail.com", - "name": "aroneous" - }, - "_npmVersion": "1.5.0-alpha-3", - "_phantomChildren": {}, - "_requested": { - "name": "stream-consume", - "raw": "stream-consume@~0.1.0", - "rawSpec": "~0.1.0", - "scope": null, - "spec": ">=0.1.0 <0.2.0", - "type": "range" - }, - "_requiredBy": [ - "/orchestrator" - ], - "_resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", - "_shasum": "a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f", - "_shrinkwrap": null, - "_spec": "stream-consume@~0.1.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/orchestrator", - "author": { - "name": "Aron Nopanen" - }, - "bugs": { - "url": "https://github.com/aroneous/stream-consume/issues" - }, - "dependencies": {}, - "description": "Consume a stream to ensure it keeps flowing", - "devDependencies": { - "mocha": "^1.20.1", - "should": "^4.0.4", - "through2": "^0.5.1" - }, - "directories": {}, - "dist": { - "shasum": "a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f", - "tarball": "http://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" - }, - "gitHead": "54496fd47e0f10bf6924728ef405b72a4bbad6de", - "homepage": "https://github.com/aroneous/stream-consume", - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "aron.nopanen@gmail.com", - "name": "aroneous" - } - ], - "name": "stream-consume", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/aroneous/stream-consume.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "0.1.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/test/tests.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/test/tests.js deleted file mode 100644 index 660e37a1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stream-consume/test/tests.js +++ /dev/null @@ -1,180 +0,0 @@ -/*jshint node:true */ -/*global describe:false, it:false */ -"use strict"; - -var consume = require('../'); -var Stream = require('stream'); -var Readable = Stream.Readable; -var Writable = Stream.Writable; -var Duplex = Stream.Duplex; -var should = require('should'); -var through = require('through2'); -require('mocha'); - -describe('stream-consume', function() { - - it('should cause a Readable stream to complete if it\'s not piped anywhere', function(done) { - var rs = new Readable({highWaterMark: 2}); - var a = 0; - var ended = false; - rs._read = function() { - if (a++ < 100) { - rs.push(a + ""); - } else { - ended = true; - rs.push(null); - } - }; - - rs.on("end", function() { - a.should.be.above(99); - ended.should.be.true; - done(); - }); - - consume(rs); - }); - - it('should work with Readable streams in objectMode', function(done) { - var rs = new Readable({highWaterMark: 2, objectMode: true}); - var a = 0; - var ended = false; - rs._read = function() { - if (a++ < 100) { - rs.push(a); - } else { - ended = true; - rs.push(null); - } - }; - - rs.on("end", function() { - a.should.be.above(99); - ended.should.be.true; - done(); - }); - - consume(rs); - }); - - it('should not interfere with a Readable stream that is piped somewhere', function(done) { - var rs = new Readable({highWaterMark: 2}); - var a = 0; - var ended = false; - rs._read = function() { - if (a++ < 100) { - rs.push("."); - } else { - ended = true; - rs.push(null); - } - }; - - var sizeRead = 0; - var ws = new Writable({highWaterMark: 2}); - ws._write = function(chunk, enc, next) { - sizeRead += chunk.length; - next(); - } - - ws.on("finish", function() { - a.should.be.above(99); - ended.should.be.true; - sizeRead.should.equal(100); - done(); - }); - - rs.pipe(ws); - - consume(rs); - }); - - it('should not interfere with a Writable stream', function(done) { - var rs = new Readable({highWaterMark: 2}); - var a = 0; - var ended = false; - rs._read = function() { - if (a++ < 100) { - rs.push("."); - } else { - ended = true; - rs.push(null); - } - }; - - var sizeRead = 0; - var ws = new Writable({highWaterMark: 2}); - ws._write = function(chunk, enc, next) { - sizeRead += chunk.length; - next(); - } - - ws.on("finish", function() { - a.should.be.above(99); - ended.should.be.true; - sizeRead.should.equal(100); - done(); - }); - - rs.pipe(ws); - - consume(ws); - }); - - it('should handle a Transform stream', function(done) { - var rs = new Readable({highWaterMark: 2}); - var a = 0; - var ended = false; - rs._read = function() { - if (a++ < 100) { - rs.push("."); - } else { - ended = true; - rs.push(null); - } - }; - - var sizeRead = 0; - var flushed = false; - var ts = through({highWaterMark: 2}, function(chunk, enc, cb) { - sizeRead += chunk.length; - this.push(chunk); - cb(); - }, function(cb) { - flushed = true; - cb(); - }); - - ts.on("end", function() { - a.should.be.above(99); - ended.should.be.true; - sizeRead.should.equal(100); - flushed.should.be.true; - done(); - }); - - rs.pipe(ts); - - consume(ts); - }); - - it('should handle a classic stream', function(done) { - var rs = new Stream(); - var ended = false; - var i; - - rs.on("end", function() { - ended.should.be.true; - done(); - }); - - consume(rs); - - for (i = 0; i < 100; i++) { - rs.emit("data", i); - } - ended = true; - rs.emit("end"); - }); - -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/.npmignore deleted file mode 100644 index 206320cc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -build -test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/LICENSE deleted file mode 100644 index 6de584a4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/README.md deleted file mode 100644 index 4d2aa001..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/README.md +++ /dev/null @@ -1,7 +0,0 @@ -**string_decoder.js** (`require('string_decoder')`) from Node.js core - -Copyright Joyent, Inc. and other Node contributors. See LICENCE file for details. - -Version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. **Prefer the stable version over the unstable.** - -The *build/* directory contains a build script that will scrape the source from the [joyent/node](https://github.com/joyent/node) repo given a specific Node version. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/index.js deleted file mode 100644 index b00e54fb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/index.js +++ /dev/null @@ -1,221 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/package.json deleted file mode 100644 index 03e62f62..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/string_decoder/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "string_decoder@~0.10.x", - "/Users/sid/Desktop/code/RustyCode/node_modules/readable-stream" - ] - ], - "_from": "string_decoder@>=0.10.0 <0.11.0", - "_id": "string_decoder@0.10.31", - "_inCache": true, - "_installable": true, - "_location": "/string_decoder", - "_npmUser": { - "email": "rod@vagg.org", - "name": "rvagg" - }, - "_npmVersion": "1.4.23", - "_phantomChildren": {}, - "_requested": { - "name": "string_decoder", - "raw": "string_decoder@~0.10.x", - "rawSpec": "~0.10.x", - "scope": null, - "spec": ">=0.10.0 <0.11.0", - "type": "range" - }, - "_requiredBy": [ - "/bl/readable-stream", - "/duplexify/readable-stream", - "/glob-stream/readable-stream", - "/gulp-remote-src/readable-stream", - "/gulp-symdest/readable-stream", - "/gulp-vinyl-zip/readable-stream", - "/inline-process-browser/readable-stream", - "/merge-stream/readable-stream", - "/readable-stream", - "/through2/readable-stream", - "/vinyl-fs/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "_shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "_shrinkwrap": null, - "_spec": "string_decoder@~0.10.x", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/readable-stream", - "bugs": { - "url": "https://github.com/rvagg/string_decoder/issues" - }, - "dependencies": {}, - "description": "The string_decoder module from Node core", - "devDependencies": { - "tap": "~0.4.8" - }, - "directories": {}, - "dist": { - "shasum": "62e203bc41766c6c28c9fc84301dab1c5310fa94", - "tarball": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "gitHead": "d46d4fd87cf1d06e031c23f1ba170ca7d4ade9a0", - "homepage": "https://github.com/rvagg/string_decoder", - "keywords": [ - "string", - "decoder", - "browser", - "browserify" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - } - ], - "name": "string_decoder", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/rvagg/string_decoder.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "0.10.31" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.npmignore deleted file mode 100644 index 7dccd970..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.travis.yml deleted file mode 100644 index f1d0f13c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/LICENSE.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/LICENSE.txt deleted file mode 100644 index ab861acd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Michael Hart (michael.hart.au@gmail.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/README.md deleted file mode 100644 index 32fc9825..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# Decode streams into strings The Right Way(tm) - -```javascript -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) -``` - -No need to deal with `setEncoding()` weirdness, just compose streams -like they were supposed to be! - -Handles input and output encoding: - -```javascript -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) -``` - -Also deals with `base64` output correctly by aligning each emitted data -chunk so that there are no dangling `=` characters: - -```javascript -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/example.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/example.js deleted file mode 100644 index f82b85ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/example.js +++ /dev/null @@ -1,27 +0,0 @@ -var fs = require('fs') -var zlib = require('zlib') -var strs = require('stringstream') - -var utf8Stream = fs.createReadStream('massiveLogFile.gz') - .pipe(zlib.createGunzip()) - .pipe(strs('utf8')) - -utf8Stream.pipe(process.stdout) - -// Stream from utf8 to hex to base64... Why not, ay. -var hex64Stream = fs.createReadStream('myFile') - .pipe(strs('utf8', 'hex')) - .pipe(strs('hex', 'base64')) - -hex64Stream.pipe(process.stdout) - -// Deals with base64 correctly by aligning chunks -var stream = fs.createReadStream('myFile').pipe(strs('base64')) - -var base64Str = '' - -stream.on('data', function(data) { base64Str += data }) -stream.on('end', function() { - console.log('My base64 encoded file is: ' + base64Str) // Wouldn't work with setEncoding() - console.log('Original file is: ' + new Buffer(base64Str, 'base64')) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/package.json deleted file mode 100644 index 2a186c16..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_args": [ - [ - "stringstream@~0.0.4", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "stringstream@>=0.0.4 <0.1.0", - "_id": "stringstream@0.0.5", - "_inCache": true, - "_installable": true, - "_location": "/stringstream", - "_nodeVersion": "4.2.1", - "_npmUser": { - "email": "michael.hart.au@gmail.com", - "name": "hichaelmart" - }, - "_npmVersion": "2.14.8", - "_phantomChildren": {}, - "_requested": { - "name": "stringstream", - "raw": "stringstream@~0.0.4", - "rawSpec": "~0.0.4", - "scope": null, - "spec": ">=0.0.4 <0.1.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "_shasum": "4e484cd4de5a0bbbee18e46307710a8a81621878", - "_shrinkwrap": null, - "_spec": "stringstream@~0.0.4", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "michael.hart.au@gmail.com", - "name": "Michael Hart", - "url": "http://github.com/mhart" - }, - "bugs": { - "url": "https://github.com/mhart/StringStream/issues" - }, - "dependencies": {}, - "description": "Encode and decode streams into string streams", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "4e484cd4de5a0bbbee18e46307710a8a81621878", - "tarball": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" - }, - "gitHead": "1efe3bf507bf3a1161f8473908b60e881d41422b", - "homepage": "https://github.com/mhart/StringStream#readme", - "keywords": [ - "string", - "stream", - "base64", - "gzip" - ], - "license": "MIT", - "main": "stringstream.js", - "maintainers": [ - { - "email": "michael.hart.au@gmail.com", - "name": "hichaelmart" - } - ], - "name": "stringstream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/mhart/StringStream.git" - }, - "scripts": {}, - "version": "0.0.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/stringstream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/stringstream.js deleted file mode 100644 index 4ece1275..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/stringstream/stringstream.js +++ /dev/null @@ -1,102 +0,0 @@ -var util = require('util') -var Stream = require('stream') -var StringDecoder = require('string_decoder').StringDecoder - -module.exports = StringStream -module.exports.AlignedStringDecoder = AlignedStringDecoder - -function StringStream(from, to) { - if (!(this instanceof StringStream)) return new StringStream(from, to) - - Stream.call(this) - - if (from == null) from = 'utf8' - - this.readable = this.writable = true - this.paused = false - this.toEncoding = (to == null ? from : to) - this.fromEncoding = (to == null ? '' : from) - this.decoder = new AlignedStringDecoder(this.toEncoding) -} -util.inherits(StringStream, Stream) - -StringStream.prototype.write = function(data) { - if (!this.writable) { - var err = new Error('stream not writable') - err.code = 'EPIPE' - this.emit('error', err) - return false - } - if (this.fromEncoding) { - if (Buffer.isBuffer(data)) data = data.toString() - data = new Buffer(data, this.fromEncoding) - } - var string = this.decoder.write(data) - if (string.length) this.emit('data', string) - return !this.paused -} - -StringStream.prototype.flush = function() { - if (this.decoder.flush) { - var string = this.decoder.flush() - if (string.length) this.emit('data', string) - } -} - -StringStream.prototype.end = function() { - if (!this.writable && !this.readable) return - this.flush() - this.emit('end') - this.writable = this.readable = false - this.destroy() -} - -StringStream.prototype.destroy = function() { - this.decoder = null - this.writable = this.readable = false - this.emit('close') -} - -StringStream.prototype.pause = function() { - this.paused = true -} - -StringStream.prototype.resume = function () { - if (this.paused) this.emit('drain') - this.paused = false -} - -function AlignedStringDecoder(encoding) { - StringDecoder.call(this, encoding) - - switch (this.encoding) { - case 'base64': - this.write = alignedWrite - this.alignedBuffer = new Buffer(3) - this.alignedBytes = 0 - break - } -} -util.inherits(AlignedStringDecoder, StringDecoder) - -AlignedStringDecoder.prototype.flush = function() { - if (!this.alignedBuffer || !this.alignedBytes) return '' - var leftover = this.alignedBuffer.toString(this.encoding, 0, this.alignedBytes) - this.alignedBytes = 0 - return leftover -} - -function alignedWrite(buffer) { - var rem = (this.alignedBytes + buffer.length) % this.alignedBuffer.length - if (!rem && !this.alignedBytes) return buffer.toString(this.encoding) - - var returnBuffer = new Buffer(this.alignedBytes + buffer.length - rem) - - this.alignedBuffer.copy(returnBuffer, 0, 0, this.alignedBytes) - buffer.copy(returnBuffer, this.alignedBytes, 0, buffer.length - rem) - - buffer.copy(this.alignedBuffer, 0, buffer.length - rem, buffer.length) - this.alignedBytes = rem - - return returnBuffer.toString(this.encoding) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/index.js deleted file mode 100644 index 099480fb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/index.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; -var ansiRegex = require('ansi-regex')(); - -module.exports = function (str) { - return typeof str === 'string' ? str.replace(ansiRegex, '') : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/package.json deleted file mode 100644 index bc6c1163..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/package.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "_args": [ - [ - "strip-ansi@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/chalk" - ] - ], - "_from": "strip-ansi@>=3.0.0 <4.0.0", - "_id": "strip-ansi@3.0.1", - "_inCache": true, - "_installable": true, - "_location": "/strip-ansi", - "_nodeVersion": "0.12.7", - "_npmOperationalInternal": { - "host": "packages-9-west.internal.npmjs.com", - "tmp": "tmp/strip-ansi-3.0.1.tgz_1456057278183_0.28958667791448534" - }, - "_npmUser": { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "strip-ansi", - "raw": "strip-ansi@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "_shasum": "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf", - "_shrinkwrap": null, - "_spec": "strip-ansi@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/strip-ansi/issues" - }, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "description": "Strip ANSI escape codes", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf", - "tarball": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "8270705c704956da865623e564eba4875c3ea17f", - "homepage": "https://github.com/chalk/strip-ansi", - "keywords": [ - "strip", - "trim", - "remove", - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "strip-ansi", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/strip-ansi.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "3.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/readme.md deleted file mode 100644 index cb7d9ff7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-ansi/readme.md +++ /dev/null @@ -1,33 +0,0 @@ -# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi) - -> Strip [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) - - -## Install - -``` -$ npm install --save strip-ansi -``` - - -## Usage - -```js -var stripAnsi = require('strip-ansi'); - -stripAnsi('\u001b[4mcake\u001b[0m'); -//=> 'cake' -``` - - -## Related - -- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module -- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes -- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes -- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/index.js deleted file mode 100644 index 5695c5c7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/index.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; -var isUtf8 = require('is-utf8'); - -module.exports = function (x) { - // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string - // conversion translates it to FEFF (UTF-16 BOM) - if (typeof x === 'string' && x.charCodeAt(0) === 0xFEFF) { - return x.slice(1); - } - - if (Buffer.isBuffer(x) && isUtf8(x) && - x[0] === 0xEF && x[1] === 0xBB && x[2] === 0xBF) { - return x.slice(3); - } - - return x; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/package.json deleted file mode 100644 index b443eb94..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "strip-bom@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file" - ] - ], - "_from": "strip-bom@>=2.0.0 <3.0.0", - "_id": "strip-bom@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/strip-bom", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "strip-bom", - "raw": "strip-bom@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/load-json-file" - ], - "_resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "_shasum": "6219a85616520491f35788bdbf1447a99c7e6b0e", - "_shrinkwrap": null, - "_spec": "strip-bom@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/load-json-file", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-bom/issues" - }, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "description": "Strip UTF-8 byte order mark (BOM) from a string/buffer", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "6219a85616520491f35788bdbf1447a99c7e6b0e", - "tarball": "http://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "851b9c126dba9561cc14ef3dc2634dcc11df4d11", - "homepage": "https://github.com/sindresorhus/strip-bom", - "keywords": [ - "bom", - "strip", - "byte", - "mark", - "unicode", - "utf8", - "utf-8", - "remove", - "delete", - "trim", - "text", - "buffer", - "string" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "strip-bom", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/strip-bom.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/readme.md deleted file mode 100644 index 8ecf258b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-bom/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# strip-bom [![Build Status](https://travis-ci.org/sindresorhus/strip-bom.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-bom) - -> Strip UTF-8 [byte order mark](http://en.wikipedia.org/wiki/Byte_order_mark#UTF-8) (BOM) from a string/buffer - -From Wikipedia: - -> The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8. - - -## Install - -``` -$ npm install --save strip-bom -``` - - -## Usage - -```js -var fs = require('fs'); -var stripBom = require('strip-bom'); - -stripBom('\uFEFFunicorn'); -//=> 'unicorn' - -stripBom(fs.readFileSync('unicorn.txt')); -//=> 'unicorn' -``` - - -## Related - -- [strip-bom-cli](https://github.com/sindresorhus/strip-bom-cli) - CLI for this module -- [strip-bom-stream](https://github.com/sindresorhus/strip-bom-stream) - Stream version of this module - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/cli.js deleted file mode 100755 index bcd5f8d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/cli.js +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var stdin = require('get-stdin'); -var pkg = require('./package.json'); -var stripIndent = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-indent ', - ' echo | strip-indent', - '', - ' Example', - ' echo \'\\tunicorn\\n\\t\\tcake\' | strip-indent', - ' unicorn', - ' \tcake' - ].join('\n')); -} - -function init(data) { - console.log(stripIndent(data)); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - init(fs.readFileSync(input, 'utf8')); -} else { - stdin(init); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/index.js deleted file mode 100644 index 8f8f4f44..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/index.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; -module.exports = function (str) { - var match = str.match(/^[ \t]*(?=\S)/gm); - - if (!match) { - return str; - } - - var indent = Math.min.apply(Math, match.map(function (el) { - return el.length; - })); - - var re = new RegExp('^[ \\t]{' + indent + '}', 'gm'); - - return indent > 0 ? str.replace(re, '') : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/package.json deleted file mode 100644 index b48ae2cd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "strip-indent@^1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/redent" - ] - ], - "_from": "strip-indent@>=1.0.1 <2.0.0", - "_id": "strip-indent@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/strip-indent", - "_nodeVersion": "0.12.0", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.5.1", - "_phantomChildren": {}, - "_requested": { - "name": "strip-indent", - "raw": "strip-indent@^1.0.1", - "rawSpec": "^1.0.1", - "scope": null, - "spec": ">=1.0.1 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/redent" - ], - "_resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "_shasum": "0c7962a6adefa7bbd4ac366460a638552ae1a0a2", - "_shrinkwrap": null, - "_spec": "strip-indent@^1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/redent", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bin": { - "strip-indent": "cli.js" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-indent/issues" - }, - "dependencies": { - "get-stdin": "^4.0.1" - }, - "description": "Strip leading whitespace from every line in a string", - "devDependencies": { - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "0c7962a6adefa7bbd4ac366460a638552ae1a0a2", - "tarball": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "cli.js" - ], - "gitHead": "addcf90a56001ea122e9f1254987016bc87e5b5f", - "homepage": "https://github.com/sindresorhus/strip-indent", - "keywords": [ - "cli", - "bin", - "browser", - "strip", - "normalize", - "remove", - "indent", - "indentation", - "whitespace", - "space", - "tab", - "string", - "str" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "strip-indent", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/strip-indent.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/readme.md deleted file mode 100644 index d622f03b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/strip-indent/readme.md +++ /dev/null @@ -1,61 +0,0 @@ -# strip-indent [![Build Status](https://travis-ci.org/sindresorhus/strip-indent.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-indent) - -> Strip leading whitespace from every line in a string - -The line with the least number of leading whitespace, ignoring empty lines, determines the number to remove. - -Useful for removing redundant indentation. - - -## Install - -```sh -$ npm install --save strip-indent -``` - - -## Usage - -```js -var str = '\tunicorn\n\t\tcake'; -/* - unicorn - cake -*/ - -stripIndent('\tunicorn\n\t\tcake'); -/* -unicorn - cake -*/ -``` - - -## CLI - -```sh -$ npm install --global strip-indent -``` - -```sh -$ strip-indent --help - - Usage - strip-indent - echo | strip-indent - - Example - echo '\tunicorn\n\t\tcake' | strip-indent - unicorn - cake -``` - - -## Related - -- [indent-string](https://github.com/sindresorhus/indent-string) - Indent each line in a string - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/index.js deleted file mode 100644 index 4346e272..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/index.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; -var argv = process.argv; - -var terminator = argv.indexOf('--'); -var hasFlag = function (flag) { - flag = '--' + flag; - var pos = argv.indexOf(flag); - return pos !== -1 && (terminator !== -1 ? pos < terminator : true); -}; - -module.exports = (function () { - if ('FORCE_COLOR' in process.env) { - return true; - } - - if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - return false; - } - - if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - return true; - } - - if (process.stdout && !process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - if (process.env.TERM === 'dumb') { - return false; - } - - if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { - return true; - } - - return false; -})(); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/package.json deleted file mode 100644 index e64c5317..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "supports-color@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/chalk" - ] - ], - "_from": "supports-color@>=2.0.0 <3.0.0", - "_id": "supports-color@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/supports-color", - "_nodeVersion": "0.12.5", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.11.2", - "_phantomChildren": {}, - "_requested": { - "name": "supports-color", - "raw": "supports-color@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/chalk" - ], - "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "_shasum": "535d045ce6b6363fa40117084629995e9df324c7", - "_shrinkwrap": null, - "_spec": "supports-color@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/chalk", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/supports-color/issues" - }, - "dependencies": {}, - "description": "Detect whether a terminal supports color", - "devDependencies": { - "mocha": "*", - "require-uncached": "^1.0.2" - }, - "directories": {}, - "dist": { - "shasum": "535d045ce6b6363fa40117084629995e9df324c7", - "tarball": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - }, - "engines": { - "node": ">=0.8.0" - }, - "files": [ - "index.js" - ], - "gitHead": "8400d98ade32b2adffd50902c06d9e725a5c6588", - "homepage": "https://github.com/chalk/supports-color", - "keywords": [ - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "ansi", - "styles", - "tty", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "support", - "supports", - "capability", - "detect" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - { - "email": "jappelman@xebia.com", - "name": "jbnicolai" - } - ], - "name": "supports-color", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/supports-color.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/readme.md deleted file mode 100644 index b4761f1e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/supports-color/readme.md +++ /dev/null @@ -1,36 +0,0 @@ -# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color) - -> Detect whether a terminal supports color - - -## Install - -``` -$ npm install --save supports-color -``` - - -## Usage - -```js -var supportsColor = require('supports-color'); - -if (supportsColor) { - console.log('Terminal supports color'); -} -``` - -It obeys the `--color` and `--no-color` CLI flags. - -For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`. - - -## Related - -- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module -- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/.travis.yml deleted file mode 100644 index c693a939..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.APACHE2 b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.APACHE2 deleted file mode 100644 index 6366c047..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -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. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.MIT b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.MIT deleted file mode 100644 index 6eafbd73..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/index.js deleted file mode 100644 index ca5fc590..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/index.js +++ /dev/null @@ -1,108 +0,0 @@ -var Stream = require('stream') - -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) - -exports = module.exports = through -through.through = through - -//create a readable writable stream. - -function through (write, end, opts) { - write = write || function (data) { this.queue(data) } - end = end || function () { this.queue(null) } - - var ended = false, destroyed = false, buffer = [], _ended = false - var stream = new Stream() - stream.readable = stream.writable = true - stream.paused = false - -// stream.autoPause = !(opts && opts.autoPause === false) - stream.autoDestroy = !(opts && opts.autoDestroy === false) - - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } - - function drain() { - while(buffer.length && !stream.paused) { - var data = buffer.shift() - if(null === data) - return stream.emit('end') - else - stream.emit('data', data) - } - } - - stream.queue = stream.push = function (data) { -// console.error(ended) - if(_ended) return stream - if(data === null) _ended = true - buffer.push(data) - drain() - return stream - } - - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - //this is only a problem if end is not emitted synchronously. - //a nicer way to do this is to make sure this is the last listener for 'end' - - stream.on('end', function () { - stream.readable = false - if(!stream.writable && stream.autoDestroy) - process.nextTick(function () { - stream.destroy() - }) - }) - - function _end () { - stream.writable = false - end.call(stream) - if(!stream.readable && stream.autoDestroy) - stream.destroy() - } - - stream.end = function (data) { - if(ended) return - ended = true - if(arguments.length) stream.write(data) - _end() // will emit or queue - return stream - } - - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - buffer.length = 0 - stream.writable = stream.readable = false - stream.emit('close') - return stream - } - - stream.pause = function () { - if(stream.paused) return - stream.paused = true - return stream - } - - stream.resume = function () { - if(stream.paused) { - stream.paused = false - stream.emit('resume') - } - drain() - //may have become paused again, - //as drain emits 'data'. - if(!stream.paused) - stream.emit('drain') - return stream - } - return stream -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/package.json deleted file mode 100644 index 1122734e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "through@~2.3.8", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-tslint" - ] - ], - "_from": "through@>=2.3.8 <2.4.0", - "_id": "through@2.3.8", - "_inCache": true, - "_installable": true, - "_location": "/through", - "_nodeVersion": "2.3.1", - "_npmUser": { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - }, - "_npmVersion": "2.12.0", - "_phantomChildren": {}, - "_requested": { - "name": "through", - "raw": "through@~2.3.8", - "rawSpec": "~2.3.8", - "scope": null, - "spec": ">=2.3.8 <2.4.0", - "type": "range" - }, - "_requiredBy": [ - "/event-stream", - "/gulp-symdest/event-stream", - "/gulp-symdest/split", - "/gulp-tslint", - "/gulp-vinyl-zip/event-stream", - "/gulp-vinyl-zip/split", - "/pause-stream", - "/split" - ], - "_resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "_shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5", - "_shrinkwrap": null, - "_spec": "through@~2.3.8", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-tslint", - "author": { - "email": "dominic.tarr@gmail.com", - "name": "Dominic Tarr", - "url": "dominictarr.com" - }, - "bugs": { - "url": "https://github.com/dominictarr/through/issues" - }, - "dependencies": {}, - "description": "simplified stream construction", - "devDependencies": { - "from": "~0.1.3", - "stream-spec": "~0.3.5", - "tape": "~2.3.2" - }, - "directories": {}, - "dist": { - "shasum": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5", - "tarball": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "gitHead": "2c5a6f9a0cc54da759b6e10964f2081c358e49dc", - "homepage": "https://github.com/dominictarr/through", - "keywords": [ - "stream", - "streams", - "user-streams", - "pipe" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "dominic.tarr@gmail.com", - "name": "dominictarr" - } - ], - "name": "through", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/dominictarr/through.git" - }, - "scripts": { - "test": "set -e; for t in test/*.js; do node $t; done" - }, - "testling": { - "browsers": [ - "ie/8..latest", - "ff/15..latest", - "chrome/20..latest", - "safari/5.1..latest" - ], - "files": "test/*.js" - }, - "version": "2.3.8" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/readme.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/readme.markdown deleted file mode 100644 index cb34c813..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/readme.markdown +++ /dev/null @@ -1,64 +0,0 @@ -#through - -[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) -[![testling badge](https://ci.testling.com/dominictarr/through.png)](https://ci.testling.com/dominictarr/through) - -Easy way to create a `Stream` that is both `readable` and `writable`. - -* Pass in optional `write` and `end` methods. -* `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`. -* Use `this.pause()` and `this.resume()` to manage flow. -* Check `this.paused` to see current flow state. (`write` always returns `!this.paused`). - -This function is the basis for most of the synchronous streams in -[event-stream](http://github.com/dominictarr/event-stream). - -``` js -var through = require('through') - -through(function write(data) { - this.queue(data) //data *must* not be null - }, - function end () { //optional - this.queue(null) - }) -``` - -Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`, -and this.emit('end') - -``` js -var through = require('through') - -through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) -``` - -## Extended Options - -You will probably not need these 99% of the time. - -### autoDestroy=false - -By default, `through` emits close when the writable -and readable side of the stream has ended. -If that is not desired, set `autoDestroy=false`. - -``` js -var through = require('through') - -//like this -var ts = through(write, end, {autoDestroy: false}) -//or like this -var ts = through(write, end) -ts.autoDestroy = false -``` - -## License - -MIT / Apache2 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/async.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/async.js deleted file mode 100644 index 46bdbaeb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/async.js +++ /dev/null @@ -1,28 +0,0 @@ -var from = require('from') -var through = require('../') - -var tape = require('tape') - -tape('simple async example', function (t) { - - var n = 0, expected = [1,2,3,4,5], actual = [] - from(expected) - .pipe(through(function(data) { - this.pause() - n ++ - setTimeout(function(){ - console.log('pushing data', data) - this.push(data) - this.resume() - }.bind(this), 300) - })).pipe(through(function(data) { - console.log('pushing data second time', data); - this.push(data) - })).on('data', function (d) { - actual.push(d) - }).on('end', function() { - t.deepEqual(actual, expected) - t.end() - }) - -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/auto-destroy.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/auto-destroy.js deleted file mode 100644 index 9a8fd000..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/auto-destroy.js +++ /dev/null @@ -1,30 +0,0 @@ -var test = require('tape') -var through = require('../') - -// must emit end before close. - -test('end before close', function (assert) { - var ts = through() - ts.autoDestroy = false - var ended = false, closed = false - - ts.on('end', function () { - assert.ok(!closed) - ended = true - }) - ts.on('close', function () { - assert.ok(ended) - closed = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - ts.end() - assert.ok(ended) - assert.notOk(closed) - ts.destroy() - assert.ok(closed) - assert.end() -}) - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/buffering.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/buffering.js deleted file mode 100644 index b0084bfc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/buffering.js +++ /dev/null @@ -1,71 +0,0 @@ -var test = require('tape') -var through = require('../') - -// must emit end before close. - -test('buffering', function(assert) { - var ts = through(function (data) { - this.queue(data) - }, function () { - this.queue(null) - }) - - var ended = false, actual = [] - - ts.on('data', actual.push.bind(actual)) - ts.on('end', function () { - ended = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - assert.deepEqual(actual, [1, 2, 3]) - ts.pause() - ts.write(4) - ts.write(5) - ts.write(6) - assert.deepEqual(actual, [1, 2, 3]) - ts.resume() - assert.deepEqual(actual, [1, 2, 3, 4, 5, 6]) - ts.pause() - ts.end() - assert.ok(!ended) - ts.resume() - assert.ok(ended) - assert.end() -}) - -test('buffering has data in queue, when ends', function (assert) { - - /* - * If stream ends while paused with data in the queue, - * stream should still emit end after all data is written - * on resume. - */ - - var ts = through(function (data) { - this.queue(data) - }, function () { - this.queue(null) - }) - - var ended = false, actual = [] - - ts.on('data', actual.push.bind(actual)) - ts.on('end', function () { - ended = true - }) - - ts.pause() - ts.write(1) - ts.write(2) - ts.write(3) - ts.end() - assert.deepEqual(actual, [], 'no data written yet, still paused') - assert.ok(!ended, 'end not emitted yet, still paused') - ts.resume() - assert.deepEqual(actual, [1, 2, 3], 'resumed, all data should be delivered') - assert.ok(ended, 'end should be emitted once all data was delivered') - assert.end(); -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/end.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/end.js deleted file mode 100644 index fa113f58..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/end.js +++ /dev/null @@ -1,45 +0,0 @@ -var test = require('tape') -var through = require('../') - -// must emit end before close. - -test('end before close', function (assert) { - var ts = through() - var ended = false, closed = false - - ts.on('end', function () { - assert.ok(!closed) - ended = true - }) - ts.on('close', function () { - assert.ok(ended) - closed = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - ts.end() - assert.ok(ended) - assert.ok(closed) - assert.end() -}) - -test('end only once', function (t) { - - var ts = through() - var ended = false, closed = false - - ts.on('end', function () { - t.equal(ended, false) - ended = true - }) - - ts.queue(null) - ts.queue(null) - ts.queue(null) - - ts.resume() - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/index.js deleted file mode 100644 index 96da82f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through/test/index.js +++ /dev/null @@ -1,133 +0,0 @@ - -var test = require('tape') -var spec = require('stream-spec') -var through = require('../') - -/* - I'm using these two functions, and not streams and pipe - so there is less to break. if this test fails it must be - the implementation of _through_ -*/ - -function write(array, stream) { - array = array.slice() - function next() { - while(array.length) - if(stream.write(array.shift()) === false) - return stream.once('drain', next) - - stream.end() - } - - next() -} - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -test('simple defaults', function(assert) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through() - var s = spec(t).through().pausable() - - read(t, function (err, actual) { - assert.ifError(err) - assert.deepEqual(actual, expected) - assert.end() - }) - - t.on('close', s.validate) - - write(expected, t) -}); - -test('simple functions', function(assert) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through(function (data) { - this.emit('data', data*2) - }) - var s = spec(t).through().pausable() - - - read(t, function (err, actual) { - assert.ifError(err) - assert.deepEqual(actual, expected.map(function (data) { - return data*2 - })) - assert.end() - }) - - t.on('close', s.validate) - - write(expected, t) -}) - -test('pauses', function(assert) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l) //Math.random()) - - var t = through() - - var s = spec(t) - .through() - .pausable() - - t.on('data', function () { - if(Math.random() > 0.1) return - t.pause() - process.nextTick(function () { - t.resume() - }) - }) - - read(t, function (err, actual) { - assert.ifError(err) - assert.deepEqual(actual, expected) - }) - - t.on('close', function () { - s.validate() - assert.end() - }) - - write(expected, t) -}) - -test('does not soft-end on `undefined`', function(assert) { - var stream = through() - , count = 0 - - stream.on('data', function (data) { - count++ - }) - - stream.write(undefined) - stream.write(undefined) - - assert.equal(count, 2) - - assert.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/README.md deleted file mode 100644 index 9ad00b92..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/README.md +++ /dev/null @@ -1,79 +0,0 @@ -through2-filter -=============== - -[![NPM](https://nodei.co/npm/through2-filter.png)](https://nodei.co/npm/through2-filter/) - -This is a super thin wrapper around [through2](http://npm.im/through2) that works like `Array.prototype.filter` but for streams. - -For when through2 is just too verbose :wink: - -Note you will **NOT** be able to alter the content of the chunks. This is intended for filtering only. If you want to modify the stream content, use either `through2` or `through2-map`. - -```js -var filter = require("through2-filter") - -var skip = filter(function (chunk) { - // skip buffers longer than 100 - return chunk.length < 100 -}) - -// vs. with through2: -var skip = through2(function (chunk, encoding, callback) { - // skip buffers longer than 100 - if (chunk.length < 100) this.push(chunk) - return callback() -}) - -// Then use your filter: -source.pipe(skip).pipe(sink) - -// Additionally accepts `wantStrings` argument to conver buffers into strings -var alphanum = new RegExp("^[A-Za-z0-1]+$") -var scrub = filter({wantStrings: true}, function (str) { - return alphanum.exec(str) -}) - -// Works like `Array.prototype.filter` meaning you can specify a function that -// takes up to two* arguments: fn(element, index) -var skip10 = filter(function (element, index) { - return index > 10 -}) -``` - -*Differences from `Array.prototype.filter`: - * No third `array` callback argument. That would require realizing the entire stream, which is generally counter-productive to stream operations. - * `Array.prototype.filter` doesn't modify the source Array, which is somewhat nonsensical when applied to streams. - -API ---- - -`require("through2-filter")([options], fn)` ---- - -Create a `through2-filter` instance that will call `fn(chunk)`. If `fn(chunk)` returns "true" the chunk will be passed downstream. Otherwise it will be dropped. - -`require("through2-filter").ctor([options], fn)` ---- - -Create a `through2-filter` Type that can be instantiated via `new Type()` or `Type()` to create reusable spies. - -`require("through2-filter").obj([options], fn)` ---- - -Create a `through2-filter` that defaults to `objectMode = true`. - -`require("through2-filter").objCtor([options], fn)` ---- - -Create a `through2-filter` Type that defaults to `objectMode = true`. - -Options -------- - - * wantStrings: Automatically call chunk.toString() for the super lazy. - * all other through2 options - -LICENSE -======= - -MIT diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/index.js deleted file mode 100644 index 4ca7f636..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/index.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; - -module.exports = make -module.exports.ctor = ctor -module.exports.objCtor = objCtor -module.exports.obj = obj - -var through2 = require("through2") -var xtend = require("xtend") - -function ctor(options, fn) { - if (typeof options == "function") { - fn = options - options = {} - } - - var Filter = through2.ctor(options, function (chunk, encoding, callback) { - if (this.options.wantStrings) chunk = chunk.toString() - if (fn.call(this, chunk, this._index++)) this.push(chunk) - return callback() - }) - Filter.prototype._index = 0 - return Filter -} - -function objCtor(options, fn) { - if (typeof options === "function") { - fn = options - options = {} - } - options = xtend({objectMode: true, highWaterMark: 16}, options) - return ctor(options, fn) -} - -function make(options, fn) { - return ctor(options, fn)() -} - -function obj(options, fn) { - if (typeof options === "function") { - fn = options - options = {} - } - options = xtend({objectMode: true, highWaterMark: 16}, options) - return make(options, fn) -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/package.json deleted file mode 100644 index 0af39d03..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2-filter/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "_args": [ - [ - "through2-filter@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/unique-stream" - ] - ], - "_from": "through2-filter@>=2.0.0 <3.0.0", - "_id": "through2-filter@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/through2-filter", - "_npmUser": { - "email": "bryce@ravenwall.com", - "name": "bryce" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "through2-filter", - "raw": "through2-filter@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-symdest/unique-stream" - ], - "_resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "_shasum": "60bc55a0dacb76085db1f9dae99ab43f83d622ec", - "_shrinkwrap": null, - "_spec": "through2-filter@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-symdest/node_modules/unique-stream", - "author": { - "name": "Bryce B. Baril" - }, - "bugs": { - "url": "https://github.com/brycebaril/through2-filter/issues" - }, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - }, - "description": "A through2 to create an Array.prototype.filter analog for streams.", - "devDependencies": { - "concat-stream": "^1.4.7", - "stream-spigot": "^3.0.5", - "tape": "^4.0.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "60bc55a0dacb76085db1f9dae99ab43f83d622ec", - "tarball": "http://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz" - }, - "files": [ - "index.js" - ], - "gitHead": "fd290780ed8f8a9e9452c947e7f8cd9f8fefba72", - "homepage": "https://github.com/brycebaril/through2-filter", - "jshintConfig": { - "asi": true, - "eqeqeq": false, - "eqnull": true, - "globalstrict": true, - "loopfunc": true, - "newcap": false, - "node": true, - "validthis": true - }, - "keywords": [ - "streams", - "through", - "through2", - "filter" - ], - "license": "MIT", - "maintainers": [ - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2-filter", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/brycebaril/through2-filter.git" - }, - "scripts": { - "test": "node test/" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/README.md deleted file mode 100644 index c84b3464..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: As 2.x.x this module starts using **Streams3** instead of Stream2. To continue using a Streams2 version use `npm install through2@0` to fetch the latest version of 0.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - function (chunk, enc, cb) { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit == "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - - the [mississippi stream utility collection](https://github.com/maxogden/mississippi) includes `through2` as well as many more useful stream modules similar to this one - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licensed under the MIT license. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.travis.yml deleted file mode 100644 index cc4dba29..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/Makefile deleted file mode 100644 index 787d56e1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/Makefile +++ /dev/null @@ -1,6 +0,0 @@ - -test: - @node_modules/.bin/tape test.js - -.PHONY: test - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/README.md deleted file mode 100644 index 16d2c59c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/README.md +++ /dev/null @@ -1,60 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) -[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) - -[![browser support](https://ci.testling.com/juliangruber/isarray.png) -](https://ci.testling.com/juliangruber/isarray) - -## Usage - -```js -var isArray = require('isarray'); - -console.log(isArray([])); // => true -console.log(isArray({})); // => false -``` - -## Installation - -With [npm](http://npmjs.org) do - -```bash -$ npm install isarray -``` - -Then bundle for the browser with -[browserify](https://github.com/substack/browserify). - -With [component](http://component.io) do - -```bash -$ component install juliangruber/isarray -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/component.json deleted file mode 100644 index 9e31b683..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/index.js deleted file mode 100644 index a57f6349..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/package.json deleted file mode 100644 index c88829e5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/package.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "_args": [ - [ - "isarray@~1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream" - ] - ], - "_from": "isarray@>=1.0.0 <1.1.0", - "_id": "isarray@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/through2/isarray", - "_nodeVersion": "5.1.0", - "_npmUser": { - "email": "julian@juliangruber.com", - "name": "juliangruber" - }, - "_npmVersion": "3.3.12", - "_phantomChildren": {}, - "_requested": { - "name": "isarray", - "raw": "isarray@~1.0.0", - "rawSpec": "~1.0.0", - "scope": null, - "spec": ">=1.0.0 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/through2/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "_shasum": "bb935d48582cba168c06834957a54a3e07124f11", - "_shrinkwrap": null, - "_spec": "isarray@~1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream", - "author": { - "email": "mail@juliangruber.com", - "name": "Julian Gruber", - "url": "http://juliangruber.com" - }, - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - }, - "dependencies": {}, - "description": "Array#isArray for older browsers", - "devDependencies": { - "tape": "~2.13.4" - }, - "directories": {}, - "dist": { - "shasum": "bb935d48582cba168c06834957a54a3e07124f11", - "tarball": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - }, - "gitHead": "2a23a281f369e9ae06394c0fb4d2381355a6ba33", - "homepage": "https://github.com/juliangruber/isarray", - "keywords": [ - "browser", - "isarray", - "array" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "julian@juliangruber.com", - "name": "juliangruber" - } - ], - "name": "isarray", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "scripts": { - "test": "tape test.js" - }, - "testling": { - "browsers": [ - "ie/8..latest", - "firefox/17..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ], - "files": "test.js" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/test.js deleted file mode 100644 index e0c3444d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/isarray/test.js +++ /dev/null @@ -1,20 +0,0 @@ -var isArray = require('./'); -var test = require('tape'); - -test('is array', function(t){ - t.ok(isArray([])); - t.notOk(isArray({})); - t.notOk(isArray(null)); - t.notOk(isArray(false)); - - var obj = {}; - obj[0] = true; - t.notOk(isArray(obj)); - - var arr = []; - arr.foo = 'bar'; - t.ok(isArray(arr)); - - t.end(); -}); - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.travis.yml deleted file mode 100644 index 1b821184..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.travis.yml +++ /dev/null @@ -1,52 +0,0 @@ -sudo: false -language: node_js -before_install: - - npm install -g npm@2 - - npm install -g npm -notifications: - email: false -matrix: - fast_finish: true - allow_failures: - - env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest" - - env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest" - include: - - node_js: '0.8' - env: TASK=test - - node_js: '0.10' - env: TASK=test - - node_js: '0.11' - env: TASK=test - - node_js: '0.12' - env: TASK=test - - node_js: 1 - env: TASK=test - - node_js: 2 - env: TASK=test - - node_js: 3 - env: TASK=test - - node_js: 4 - env: TASK=test - - node_js: 5 - env: TASK=test - - node_js: 5 - env: TASK=browser BROWSER_NAME=android BROWSER_VERSION="4.0..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=ie BROWSER_VERSION="9..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=opera BROWSER_VERSION="11..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=chrome BROWSER_VERSION="-3..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=firefox BROWSER_VERSION="-3..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=ipad BROWSER_VERSION="6.0..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=iphone BROWSER_VERSION="6.0..latest" - - node_js: 5 - env: TASK=browser BROWSER_NAME=safari BROWSER_VERSION="5..latest" -script: "npm run $TASK" -env: - global: - - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= - - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.zuul.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.zuul.yml deleted file mode 100644 index 96d9cfbd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/.zuul.yml +++ /dev/null @@ -1 +0,0 @@ -ui: tape diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/README.md deleted file mode 100644 index 86b95a3b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# readable-stream - -***Node-core v5.8.0 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) - - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - - -[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) - -```bash -npm install --save readable-stream -``` - -***Node-core streams for userland*** - -This package is a mirror of the Streams2 and Streams3 implementations in -Node-core, including [documentation](doc/stream.markdown). - -If you want to guarantee a stable streams base, regardless of what version of -Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). - -As of version 2.0.0 **readable-stream** uses semantic versioning. - -# Streams WG Team Members - -* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> - - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B -* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> - - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 -* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> - - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D -* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> -* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> -* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/stream.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/stream.markdown deleted file mode 100644 index 0bc3819e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/stream.markdown +++ /dev/null @@ -1,1760 +0,0 @@ -# Stream - - Stability: 2 - Stable - -A stream is an abstract interface implemented by various objects in -Node.js. For example a [request to an HTTP server][http-incoming-message] is a -stream, as is [`process.stdout`][]. Streams are readable, writable, or both. All -streams are instances of [`EventEmitter`][]. - -You can load the Stream base classes by doing `require('stream')`. -There are base classes provided for [Readable][] streams, [Writable][] -streams, [Duplex][] streams, and [Transform][] streams. - -This document is split up into 3 sections: - -1. The first section explains the parts of the API that you need to be - aware of to use streams in your programs. -2. The second section explains the parts of the API that you need to - use if you implement your own custom streams yourself. The API is designed to - make this easy for you to do. -3. The third section goes into more depth about how streams work, - including some of the internal mechanisms and functions that you - should probably not modify unless you definitely know what you are - doing. - - -## API for Stream Consumers - - - -Streams can be either [Readable][], [Writable][], or both ([Duplex][]). - -All streams are EventEmitters, but they also have other custom methods -and properties depending on whether they are Readable, Writable, or -Duplex. - -If a stream is both Readable and Writable, then it implements all of -the methods and events. So, a [Duplex][] or [Transform][] stream is -fully described by this API, though their implementation may be -somewhat different. - -It is not necessary to implement Stream interfaces in order to consume -streams in your programs. If you **are** implementing streaming -interfaces in your own program, please also refer to -[API for Stream Implementors][]. - -Almost all Node.js programs, no matter how simple, use Streams in some -way. Here is an example of using Streams in an Node.js program: - -```js -const http = require('http'); - -var server = http.createServer( (req, res) => { - // req is an http.IncomingMessage, which is a Readable Stream - // res is an http.ServerResponse, which is a Writable Stream - - var body = ''; - // we want to get the data as utf8 strings - // If you don't set an encoding, then you'll get Buffer objects - req.setEncoding('utf8'); - - // Readable streams emit 'data' events once a listener is added - req.on('data', (chunk) => { - body += chunk; - }); - - // the end event tells you that you have entire body - req.on('end', () => { - try { - var data = JSON.parse(body); - } catch (er) { - // uh oh! bad json! - res.statusCode = 400; - return res.end(`error: ${er.message}`); - } - - // write back something interesting to the user: - res.write(typeof data); - res.end(); - }); -}); - -server.listen(1337); - -// $ curl localhost:1337 -d '{}' -// object -// $ curl localhost:1337 -d '"foo"' -// string -// $ curl localhost:1337 -d 'not json' -// error: Unexpected token o -``` - -### Class: stream.Duplex - -Duplex streams are streams that implement both the [Readable][] and -[Writable][] interfaces. - -Examples of Duplex streams include: - -* [TCP sockets][] -* [zlib streams][zlib] -* [crypto streams][crypto] - -### Class: stream.Readable - - - -The Readable stream interface is the abstraction for a *source* of -data that you are reading from. In other words, data comes *out* of a -Readable stream. - -A Readable stream will not start emitting data until you indicate that -you are ready to receive it. - -Readable streams have two "modes": a **flowing mode** and a **paused -mode**. When in flowing mode, data is read from the underlying system -and provided to your program as fast as possible. In paused mode, you -must explicitly call [`stream.read()`][stream-read] to get chunks of data out. -Streams start out in paused mode. - -**Note**: If no data event handlers are attached, and there are no -[`stream.pipe()`][] destinations, and the stream is switched into flowing -mode, then data will be lost. - -You can switch to flowing mode by doing any of the following: - -* Adding a [`'data'`][] event handler to listen for data. -* Calling the [`stream.resume()`][stream-resume] method to explicitly open the - flow. -* Calling the [`stream.pipe()`][] method to send the data to a [Writable][]. - -You can switch back to paused mode by doing either of the following: - -* If there are no pipe destinations, by calling the - [`stream.pause()`][stream-pause] method. -* If there are pipe destinations, by removing any [`'data'`][] event - handlers, and removing all pipe destinations by calling the - [`stream.unpipe()`][] method. - -Note that, for backwards compatibility reasons, removing [`'data'`][] -event handlers will **not** automatically pause the stream. Also, if -there are piped destinations, then calling [`stream.pause()`][stream-pause] will -not guarantee that the stream will *remain* paused once those -destinations drain and ask for more data. - -Examples of readable streams include: - -* [HTTP responses, on the client][http-incoming-message] -* [HTTP requests, on the server][http-incoming-message] -* [fs read streams][] -* [zlib streams][zlib] -* [crypto streams][crypto] -* [TCP sockets][] -* [child process stdout and stderr][] -* [`process.stdin`][] - -#### Event: 'close' - -Emitted when the stream and any of its underlying resources (a file -descriptor, for example) have been closed. The event indicates that -no more events will be emitted, and no further computation will occur. - -Not all streams will emit the `'close'` event. - -#### Event: 'data' - -* `chunk` {Buffer|String} The chunk of data. - -Attaching a `'data'` event listener to a stream that has not been -explicitly paused will switch the stream into flowing mode. Data will -then be passed as soon as it is available. - -If you just want to get all the data out of the stream as fast as -possible, this is the best way to do so. - -```js -var readable = getReadableStreamSomehow(); -readable.on('data', (chunk) => { - console.log('got %d bytes of data', chunk.length); -}); -``` - -#### Event: 'end' - -This event fires when there will be no more data to read. - -Note that the `'end'` event **will not fire** unless the data is -completely consumed. This can be done by switching into flowing mode, -or by calling [`stream.read()`][stream-read] repeatedly until you get to the -end. - -```js -var readable = getReadableStreamSomehow(); -readable.on('data', (chunk) => { - console.log('got %d bytes of data', chunk.length); -}); -readable.on('end', () => { - console.log('there will be no more data.'); -}); -``` - -#### Event: 'error' - -* {Error Object} - -Emitted if there was an error receiving data. - -#### Event: 'readable' - -When a chunk of data can be read from the stream, it will emit a -`'readable'` event. - -In some cases, listening for a `'readable'` event will cause some data -to be read into the internal buffer from the underlying system, if it -hadn't already. - -```javascript -var readable = getReadableStreamSomehow(); -readable.on('readable', () => { - // there is some data to read now -}); -``` - -Once the internal buffer is drained, a `'readable'` event will fire -again when more data is available. - -The `'readable'` event is not emitted in the "flowing" mode with the -sole exception of the last one, on end-of-stream. - -The `'readable'` event indicates that the stream has new information: -either new data is available or the end of the stream has been reached. -In the former case, [`stream.read()`][stream-read] will return that data. In the -latter case, [`stream.read()`][stream-read] will return null. For instance, in -the following example, `foo.txt` is an empty file: - -```js -const fs = require('fs'); -var rr = fs.createReadStream('foo.txt'); -rr.on('readable', () => { - console.log('readable:', rr.read()); -}); -rr.on('end', () => { - console.log('end'); -}); -``` - -The output of running this script is: - -``` -$ node test.js -readable: null -end -``` - -#### readable.isPaused() - -* Return: {Boolean} - -This method returns whether or not the `readable` has been **explicitly** -paused by client code (using [`stream.pause()`][stream-pause] without a -corresponding [`stream.resume()`][stream-resume]). - -```js -var readable = new stream.Readable - -readable.isPaused() // === false -readable.pause() -readable.isPaused() // === true -readable.resume() -readable.isPaused() // === false -``` - -#### readable.pause() - -* Return: `this` - -This method will cause a stream in flowing mode to stop emitting -[`'data'`][] events, switching out of flowing mode. Any data that becomes -available will remain in the internal buffer. - -```js -var readable = getReadableStreamSomehow(); -readable.on('data', (chunk) => { - console.log('got %d bytes of data', chunk.length); - readable.pause(); - console.log('there will be no more data for 1 second'); - setTimeout(() => { - console.log('now data will start flowing again'); - readable.resume(); - }, 1000); -}); -``` - -#### readable.pipe(destination[, options]) - -* `destination` {stream.Writable} The destination for writing data -* `options` {Object} Pipe options - * `end` {Boolean} End the writer when the reader ends. Default = `true` - -This method pulls all the data out of a readable stream, and writes it -to the supplied destination, automatically managing the flow so that -the destination is not overwhelmed by a fast readable stream. - -Multiple destinations can be piped to safely. - -```js -var readable = getReadableStreamSomehow(); -var writable = fs.createWriteStream('file.txt'); -// All the data from readable goes into 'file.txt' -readable.pipe(writable); -``` - -This function returns the destination stream, so you can set up pipe -chains like so: - -```js -var r = fs.createReadStream('file.txt'); -var z = zlib.createGzip(); -var w = fs.createWriteStream('file.txt.gz'); -r.pipe(z).pipe(w); -``` - -For example, emulating the Unix `cat` command: - -```js -process.stdin.pipe(process.stdout); -``` - -By default [`stream.end()`][stream-end] is called on the destination when the -source stream emits [`'end'`][], so that `destination` is no longer writable. -Pass `{ end: false }` as `options` to keep the destination stream open. - -This keeps `writer` open so that "Goodbye" can be written at the -end. - -```js -reader.pipe(writer, { end: false }); -reader.on('end', () => { - writer.end('Goodbye\n'); -}); -``` - -Note that [`process.stderr`][] and [`process.stdout`][] are never closed until -the process exits, regardless of the specified options. - -#### readable.read([size]) - -* `size` {Number} Optional argument to specify how much data to read. -* Return {String|Buffer|Null} - -The `read()` method pulls some data out of the internal buffer and -returns it. If there is no data available, then it will return -`null`. - -If you pass in a `size` argument, then it will return that many -bytes. If `size` bytes are not available, then it will return `null`, -unless we've ended, in which case it will return the data remaining -in the buffer. - -If you do not specify a `size` argument, then it will return all the -data in the internal buffer. - -This method should only be called in paused mode. In flowing mode, -this method is called automatically until the internal buffer is -drained. - -```js -var readable = getReadableStreamSomehow(); -readable.on('readable', () => { - var chunk; - while (null !== (chunk = readable.read())) { - console.log('got %d bytes of data', chunk.length); - } -}); -``` - -If this method returns a data chunk, then it will also trigger the -emission of a [`'data'`][] event. - -Note that calling [`stream.read([size])`][stream-read] after the [`'end'`][] -event has been triggered will return `null`. No runtime error will be raised. - -#### readable.resume() - -* Return: `this` - -This method will cause the readable stream to resume emitting [`'data'`][] -events. - -This method will switch the stream into flowing mode. If you do *not* -want to consume the data from a stream, but you *do* want to get to -its [`'end'`][] event, you can call [`stream.resume()`][stream-resume] to open -the flow of data. - -```js -var readable = getReadableStreamSomehow(); -readable.resume(); -readable.on('end', () => { - console.log('got to the end, but did not read anything'); -}); -``` - -#### readable.setEncoding(encoding) - -* `encoding` {String} The encoding to use. -* Return: `this` - -Call this function to cause the stream to return strings of the specified -encoding instead of Buffer objects. For example, if you do -`readable.setEncoding('utf8')`, then the output data will be interpreted as -UTF-8 data, and returned as strings. If you do `readable.setEncoding('hex')`, -then the data will be encoded in hexadecimal string format. - -This properly handles multi-byte characters that would otherwise be -potentially mangled if you simply pulled the Buffers directly and -called [`buf.toString(encoding)`][] on them. If you want to read the data -as strings, always use this method. - -Also you can disable any encoding at all with `readable.setEncoding(null)`. -This approach is very useful if you deal with binary data or with large -multi-byte strings spread out over multiple chunks. - -```js -var readable = getReadableStreamSomehow(); -readable.setEncoding('utf8'); -readable.on('data', (chunk) => { - assert.equal(typeof chunk, 'string'); - console.log('got %d characters of string data', chunk.length); -}); -``` - -#### readable.unpipe([destination]) - -* `destination` {stream.Writable} Optional specific stream to unpipe - -This method will remove the hooks set up for a previous [`stream.pipe()`][] -call. - -If the destination is not specified, then all pipes are removed. - -If the destination is specified, but no pipe is set up for it, then -this is a no-op. - -```js -var readable = getReadableStreamSomehow(); -var writable = fs.createWriteStream('file.txt'); -// All the data from readable goes into 'file.txt', -// but only for the first second -readable.pipe(writable); -setTimeout(() => { - console.log('stop writing to file.txt'); - readable.unpipe(writable); - console.log('manually close the file stream'); - writable.end(); -}, 1000); -``` - -#### readable.unshift(chunk) - -* `chunk` {Buffer|String} Chunk of data to unshift onto the read queue - -This is useful in certain cases where a stream is being consumed by a -parser, which needs to "un-consume" some data that it has -optimistically pulled out of the source, so that the stream can be -passed on to some other party. - -Note that `stream.unshift(chunk)` cannot be called after the [`'end'`][] event -has been triggered; a runtime error will be raised. - -If you find that you must often call `stream.unshift(chunk)` in your -programs, consider implementing a [Transform][] stream instead. (See [API -for Stream Implementors][].) - -```js -// Pull off a header delimited by \n\n -// use unshift() if we get too much -// Call the callback with (error, header, stream) -const StringDecoder = require('string_decoder').StringDecoder; -function parseHeader(stream, callback) { - stream.on('error', callback); - stream.on('readable', onReadable); - var decoder = new StringDecoder('utf8'); - var header = ''; - function onReadable() { - var chunk; - while (null !== (chunk = stream.read())) { - var str = decoder.write(chunk); - if (str.match(/\n\n/)) { - // found the header boundary - var split = str.split(/\n\n/); - header += split.shift(); - var remaining = split.join('\n\n'); - var buf = new Buffer(remaining, 'utf8'); - if (buf.length) - stream.unshift(buf); - stream.removeListener('error', callback); - stream.removeListener('readable', onReadable); - // now the body of the message can be read from the stream. - callback(null, header, stream); - } else { - // still reading the header. - header += str; - } - } - } -} -``` - -Note that, unlike [`stream.push(chunk)`][stream-push], `stream.unshift(chunk)` -will not end the reading process by resetting the internal reading state of the -stream. This can cause unexpected results if `unshift()` is called during a -read (i.e. from within a [`stream._read()`][stream-_read] implementation on a -custom stream). Following the call to `unshift()` with an immediate -[`stream.push('')`][stream-push] will reset the reading state appropriately, -however it is best to simply avoid calling `unshift()` while in the process of -performing a read. - -#### readable.wrap(stream) - -* `stream` {Stream} An "old style" readable stream - -Versions of Node.js prior to v0.10 had streams that did not implement the -entire Streams API as it is today. (See [Compatibility][] for -more information.) - -If you are using an older Node.js library that emits [`'data'`][] events and -has a [`stream.pause()`][stream-pause] method that is advisory only, then you -can use the `wrap()` method to create a [Readable][] stream that uses the old -stream as its data source. - -You will very rarely ever need to call this function, but it exists -as a convenience for interacting with old Node.js programs and libraries. - -For example: - -```js -const OldReader = require('./old-api-module.js').OldReader; -const Readable = require('stream').Readable; -const oreader = new OldReader; -const myReader = new Readable().wrap(oreader); - -myReader.on('readable', () => { - myReader.read(); // etc. -}); -``` - -### Class: stream.Transform - -Transform streams are [Duplex][] streams where the output is in some way -computed from the input. They implement both the [Readable][] and -[Writable][] interfaces. - -Examples of Transform streams include: - -* [zlib streams][zlib] -* [crypto streams][crypto] - -### Class: stream.Writable - - - -The Writable stream interface is an abstraction for a *destination* -that you are writing data *to*. - -Examples of writable streams include: - -* [HTTP requests, on the client][] -* [HTTP responses, on the server][] -* [fs write streams][] -* [zlib streams][zlib] -* [crypto streams][crypto] -* [TCP sockets][] -* [child process stdin][] -* [`process.stdout`][], [`process.stderr`][] - -#### Event: 'drain' - -If a [`stream.write(chunk)`][stream-write] call returns `false`, then the -`'drain'` event will indicate when it is appropriate to begin writing more data -to the stream. - -```js -// Write the data to the supplied writable stream one million times. -// Be attentive to back-pressure. -function writeOneMillionTimes(writer, data, encoding, callback) { - var i = 1000000; - write(); - function write() { - var ok = true; - do { - i -= 1; - if (i === 0) { - // last time! - writer.write(data, encoding, callback); - } else { - // see if we should continue, or wait - // don't pass the callback, because we're not done yet. - ok = writer.write(data, encoding); - } - } while (i > 0 && ok); - if (i > 0) { - // had to stop early! - // write some more once it drains - writer.once('drain', write); - } - } -} -``` - -#### Event: 'error' - -* {Error} - -Emitted if there was an error when writing or piping data. - -#### Event: 'finish' - -When the [`stream.end()`][stream-end] method has been called, and all data has -been flushed to the underlying system, this event is emitted. - -```javascript -var writer = getWritableStreamSomehow(); -for (var i = 0; i < 100; i ++) { - writer.write('hello, #${i}!\n'); -} -writer.end('this is the end\n'); -writer.on('finish', () => { - console.error('all writes are now complete.'); -}); -``` - -#### Event: 'pipe' - -* `src` {stream.Readable} source stream that is piping to this writable - -This is emitted whenever the [`stream.pipe()`][] method is called on a readable -stream, adding this writable to its set of destinations. - -```js -var writer = getWritableStreamSomehow(); -var reader = getReadableStreamSomehow(); -writer.on('pipe', (src) => { - console.error('something is piping into the writer'); - assert.equal(src, reader); -}); -reader.pipe(writer); -``` - -#### Event: 'unpipe' - -* `src` {[Readable][] Stream} The source stream that - [unpiped][`stream.unpipe()`] this writable - -This is emitted whenever the [`stream.unpipe()`][] method is called on a -readable stream, removing this writable from its set of destinations. - -```js -var writer = getWritableStreamSomehow(); -var reader = getReadableStreamSomehow(); -writer.on('unpipe', (src) => { - console.error('something has stopped piping into the writer'); - assert.equal(src, reader); -}); -reader.pipe(writer); -reader.unpipe(writer); -``` - -#### writable.cork() - -Forces buffering of all writes. - -Buffered data will be flushed either at [`stream.uncork()`][] or at -[`stream.end()`][stream-end] call. - -#### writable.end([chunk][, encoding][, callback]) - -* `chunk` {String|Buffer} Optional data to write -* `encoding` {String} The encoding, if `chunk` is a String -* `callback` {Function} Optional callback for when the stream is finished - -Call this method when no more data will be written to the stream. If supplied, -the callback is attached as a listener on the [`'finish'`][] event. - -Calling [`stream.write()`][stream-write] after calling -[`stream.end()`][stream-end] will raise an error. - -```js -// write 'hello, ' and then end with 'world!' -var file = fs.createWriteStream('example.txt'); -file.write('hello, '); -file.end('world!'); -// writing more now is not allowed! -``` - -#### writable.setDefaultEncoding(encoding) - -* `encoding` {String} The new default encoding - -Sets the default encoding for a writable stream. - -#### writable.uncork() - -Flush all data, buffered since [`stream.cork()`][] call. - -#### writable.write(chunk[, encoding][, callback]) - -* `chunk` {String|Buffer} The data to write -* `encoding` {String} The encoding, if `chunk` is a String -* `callback` {Function} Callback for when this chunk of data is flushed -* Returns: {Boolean} `true` if the data was handled completely. - -This method writes some data to the underlying system, and calls the -supplied callback once the data has been fully handled. - -The return value indicates if you should continue writing right now. -If the data had to be buffered internally, then it will return -`false`. Otherwise, it will return `true`. - -This return value is strictly advisory. You MAY continue to write, -even if it returns `false`. However, writes will be buffered in -memory, so it is best not to do this excessively. Instead, wait for -the [`'drain'`][] event before writing more data. - - -## API for Stream Implementors - - - -To implement any sort of stream, the pattern is the same: - -1. Extend the appropriate parent class in your own subclass. (The - [`util.inherits()`][] method is particularly helpful for this.) -2. Call the appropriate parent class constructor in your constructor, - to be sure that the internal mechanisms are set up properly. -3. Implement one or more specific methods, as detailed below. - -The class to extend and the method(s) to implement depend on the sort -of stream class you are writing: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      Use-case

      -
      -

      Class

      -
      -

      Method(s) to implement

      -
      -

      Reading only

      -
      -

      [Readable](#stream_class_stream_readable_1)

      -
      -

      [_read][stream-_read]

      -
      -

      Writing only

      -
      -

      [Writable](#stream_class_stream_writable_1)

      -
      -

      [_write][stream-_write], [_writev][stream-_writev]

      -
      -

      Reading and writing

      -
      -

      [Duplex](#stream_class_stream_duplex_1)

      -
      -

      [_read][stream-_read], [_write][stream-_write], [_writev][stream-_writev]

      -
      -

      Operate on written data, then read the result

      -
      -

      [Transform](#stream_class_stream_transform_1)

      -
      -

      [_transform][stream-_transform], [_flush][stream-_flush]

      -
      - -In your implementation code, it is very important to never call the methods -described in [API for Stream Consumers][]. Otherwise, you can potentially cause -adverse side effects in programs that consume your streaming interfaces. - -### Class: stream.Duplex - - - -A "duplex" stream is one that is both Readable and Writable, such as a TCP -socket connection. - -Note that `stream.Duplex` is an abstract class designed to be extended -with an underlying implementation of the [`stream._read(size)`][stream-_read] -and [`stream._write(chunk, encoding, callback)`][stream-_write] methods as you -would with a Readable or Writable stream class. - -Since JavaScript doesn't have multiple prototypal inheritance, this class -prototypally inherits from Readable, and then parasitically from Writable. It is -thus up to the user to implement both the low-level -[`stream._read(n)`][stream-_read] method as well as the low-level -[`stream._write(chunk, encoding, callback)`][stream-_write] method on extension -duplex classes. - -#### new stream.Duplex(options) - -* `options` {Object} Passed to both Writable and Readable - constructors. Also has the following fields: - * `allowHalfOpen` {Boolean} Default = `true`. If set to `false`, then - the stream will automatically end the readable side when the - writable side ends and vice versa. - * `readableObjectMode` {Boolean} Default = `false`. Sets `objectMode` - for readable side of the stream. Has no effect if `objectMode` - is `true`. - * `writableObjectMode` {Boolean} Default = `false`. Sets `objectMode` - for writable side of the stream. Has no effect if `objectMode` - is `true`. - -In classes that extend the Duplex class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -### Class: stream.PassThrough - -This is a trivial implementation of a [Transform][] stream that simply -passes the input bytes across to the output. Its purpose is mainly -for examples and testing, but there are occasionally use cases where -it can come in handy as a building block for novel sorts of streams. - -### Class: stream.Readable - - - -`stream.Readable` is an abstract class designed to be extended with an -underlying implementation of the [`stream._read(size)`][stream-_read] method. - -Please see [API for Stream Consumers][] for how to consume -streams in your programs. What follows is an explanation of how to -implement Readable streams in your programs. - -#### new stream.Readable([options]) - -* `options` {Object} - * `highWaterMark` {Number} The maximum number of bytes to store in - the internal buffer before ceasing to read from the underlying - resource. Default = `16384` (16kb), or `16` for `objectMode` streams - * `encoding` {String} If specified, then buffers will be decoded to - strings using the specified encoding. Default = `null` - * `objectMode` {Boolean} Whether this stream should behave - as a stream of objects. Meaning that [`stream.read(n)`][stream-read] returns - a single value instead of a Buffer of size n. Default = `false` - * `read` {Function} Implementation for the [`stream._read()`][stream-_read] - method. - -In classes that extend the Readable class, make sure to call the -Readable constructor so that the buffering settings can be properly -initialized. - -#### readable.\_read(size) - -* `size` {Number} Number of bytes to read asynchronously - -Note: **Implement this method, but do NOT call it directly.** - -This method is prefixed with an underscore because it is internal to the -class that defines it and should only be called by the internal Readable -class methods. All Readable stream implementations must provide a \_read -method to fetch data from the underlying resource. - -When `_read()` is called, if data is available from the resource, the `_read()` -implementation should start pushing that data into the read queue by calling -[`this.push(dataChunk)`][stream-push]. `_read()` should continue reading from -the resource and pushing data until push returns `false`, at which point it -should stop reading from the resource. Only when `_read()` is called again after -it has stopped should it start reading more data from the resource and pushing -that data onto the queue. - -Note: once the `_read()` method is called, it will not be called again until -the [`stream.push()`][stream-push] method is called. - -The `size` argument is advisory. Implementations where a "read" is a -single call that returns data can use this to know how much data to -fetch. Implementations where that is not relevant, such as TCP or -TLS, may ignore this argument, and simply provide data whenever it -becomes available. There is no need, for example to "wait" until -`size` bytes are available before calling [`stream.push(chunk)`][stream-push]. - -#### readable.push(chunk[, encoding]) - - -* `chunk` {Buffer|Null|String} Chunk of data to push into the read queue -* `encoding` {String} Encoding of String chunks. Must be a valid - Buffer encoding, such as `'utf8'` or `'ascii'` -* return {Boolean} Whether or not more pushes should be performed - -Note: **This method should be called by Readable implementors, NOT -by consumers of Readable streams.** - -If a value other than null is passed, The `push()` method adds a chunk of data -into the queue for subsequent stream processors to consume. If `null` is -passed, it signals the end of the stream (EOF), after which no more data -can be written. - -The data added with `push()` can be pulled out by calling the -[`stream.read()`][stream-read] method when the [`'readable'`][] event fires. - -This API is designed to be as flexible as possible. For example, -you may be wrapping a lower-level source which has some sort of -pause/resume mechanism, and a data callback. In those cases, you -could wrap the low-level source object by doing something like this: - -```js -// source is an object with readStop() and readStart() methods, -// and an `ondata` member that gets called when it has data, and -// an `onend` member that gets called when the data is over. - -util.inherits(SourceWrapper, Readable); - -function SourceWrapper(options) { - Readable.call(this, options); - - this._source = getLowlevelSourceObject(); - - // Every time there's data, we push it into the internal buffer. - this._source.ondata = (chunk) => { - // if push() returns false, then we need to stop reading from source - if (!this.push(chunk)) - this._source.readStop(); - }; - - // When the source ends, we push the EOF-signaling `null` chunk - this._source.onend = () => { - this.push(null); - }; -} - -// _read will be called when the stream wants to pull more data in -// the advisory size argument is ignored in this case. -SourceWrapper.prototype._read = function(size) { - this._source.readStart(); -}; -``` - -#### Example: A Counting Stream - - - -This is a basic example of a Readable stream. It emits the numerals -from 1 to 1,000,000 in ascending order, and then ends. - -```js -const Readable = require('stream').Readable; -const util = require('util'); -util.inherits(Counter, Readable); - -function Counter(opt) { - Readable.call(this, opt); - this._max = 1000000; - this._index = 1; -} - -Counter.prototype._read = function() { - var i = this._index++; - if (i > this._max) - this.push(null); - else { - var str = '' + i; - var buf = new Buffer(str, 'ascii'); - this.push(buf); - } -}; -``` - -#### Example: SimpleProtocol v1 (Sub-optimal) - -This is similar to the `parseHeader` function described -[here](#stream_readable_unshift_chunk), but implemented as a custom stream. -Also, note that this implementation does not convert the incoming data to a -string. - -However, this would be better implemented as a [Transform][] stream. See -[SimpleProtocol v2][] for a better implementation. - -```js -// A parser for a simple data protocol. -// The "header" is a JSON object, followed by 2 \n characters, and -// then a message body. -// -// NOTE: This can be done more simply as a Transform stream! -// Using Readable directly for this is sub-optimal. See the -// alternative example below under the Transform section. - -const Readable = require('stream').Readable; -const util = require('util'); - -util.inherits(SimpleProtocol, Readable); - -function SimpleProtocol(source, options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(source, options); - - Readable.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - - // source is a readable stream, such as a socket or file - this._source = source; - - var self = this; - source.on('end', () => { - self.push(null); - }); - - // give it a kick whenever the source is readable - // read(0) will not consume any bytes - source.on('readable', () => { - self.read(0); - }); - - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._read = function(n) { - if (!this._inBody) { - var chunk = this._source.read(); - - // if the source doesn't have data, we don't have data yet. - if (chunk === null) - return this.push(''); - - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - this.push(''); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // now, because we got some extra data, unshift the rest - // back into the read queue so that our consumer will see it. - var b = chunk.slice(split); - this.unshift(b); - // calling unshift by itself does not reset the reading state - // of the stream; since we're inside _read, doing an additional - // push('') will reset the state appropriately. - this.push(''); - - // and let them know that we are done parsing the header. - this.emit('header', this.header); - } - } else { - // from there on, just provide the data to our consumer. - // careful not to push(null), since that would indicate EOF. - var chunk = this._source.read(); - if (chunk) this.push(chunk); - } -}; - -// Usage: -// var parser = new SimpleProtocol(source); -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - -### Class: stream.Transform - -A "transform" stream is a duplex stream where the output is causally -connected in some way to the input, such as a [zlib][] stream or a -[crypto][] stream. - -There is no requirement that the output be the same size as the input, -the same number of chunks, or arrive at the same time. For example, a -Hash stream will only ever have a single chunk of output which is -provided when the input is ended. A zlib stream will produce output -that is either much smaller or much larger than its input. - -Rather than implement the [`stream._read()`][stream-_read] and -[`stream._write()`][stream-_write] methods, Transform classes must implement the -[`stream._transform()`][stream-_transform] method, and may optionally -also implement the [`stream._flush()`][stream-_flush] method. (See below.) - -#### new stream.Transform([options]) - -* `options` {Object} Passed to both Writable and Readable - constructors. Also has the following fields: - * `transform` {Function} Implementation for the - [`stream._transform()`][stream-_transform] method. - * `flush` {Function} Implementation for the [`stream._flush()`][stream-_flush] - method. - -In classes that extend the Transform class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### Events: 'finish' and 'end' - -The [`'finish'`][] and [`'end'`][] events are from the parent Writable -and Readable classes respectively. The `'finish'` event is fired after -[`stream.end()`][stream-end] is called and all chunks have been processed by -[`stream._transform()`][stream-_transform], `'end'` is fired after all data has -been output which is after the callback in [`stream._flush()`][stream-_flush] -has been called. - -#### transform.\_flush(callback) - -* `callback` {Function} Call this function (optionally with an error - argument) when you are done flushing any remaining data. - -Note: **This function MUST NOT be called directly.** It MAY be implemented -by child classes, and if so, will be called by the internal Transform -class methods only. - -In some cases, your transform operation may need to emit a bit more -data at the end of the stream. For example, a `Zlib` compression -stream will store up some internal state so that it can optimally -compress the output. At the end, however, it needs to do the best it -can with what is left, so that the data will be complete. - -In those cases, you can implement a `_flush()` method, which will be -called at the very end, after all the written data is consumed, but -before emitting [`'end'`][] to signal the end of the readable side. Just -like with [`stream._transform()`][stream-_transform], call -`transform.push(chunk)` zero or more times, as appropriate, and call `callback` -when the flush operation is complete. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### transform.\_transform(chunk, encoding, callback) - -* `chunk` {Buffer|String} The chunk to be transformed. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument and data) when you are done processing the supplied chunk. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Transform -class methods only. - -All Transform stream implementations must provide a `_transform()` -method to accept input and produce output. - -`_transform()` should do whatever has to be done in this specific -Transform class, to handle the bytes being written, and pass them off -to the readable portion of the interface. Do asynchronous I/O, -process things, and so on. - -Call `transform.push(outputChunk)` 0 or more times to generate output -from this input chunk, depending on how much data you want to output -as a result of this chunk. - -Call the callback function only when the current chunk is completely -consumed. Note that there may or may not be output as a result of any -particular input chunk. If you supply a second argument to the callback -it will be passed to the push method. In other words the following are -equivalent: - -```js -transform.prototype._transform = function (data, encoding, callback) { - this.push(data); - callback(); -}; - -transform.prototype._transform = function (data, encoding, callback) { - callback(null, data); -}; -``` - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### Example: `SimpleProtocol` parser v2 - -The example [here](#stream_example_simpleprotocol_v1_sub_optimal) of a simple -protocol parser can be implemented simply by using the higher level -[Transform][] stream class, similar to the `parseHeader` and `SimpleProtocol -v1` examples. - -In this example, rather than providing the input as an argument, it -would be piped into the parser, which is a more idiomatic Node.js stream -approach. - -```javascript -const util = require('util'); -const Transform = require('stream').Transform; -util.inherits(SimpleProtocol, Transform); - -function SimpleProtocol(options) { - if (!(this instanceof SimpleProtocol)) - return new SimpleProtocol(options); - - Transform.call(this, options); - this._inBody = false; - this._sawFirstCr = false; - this._rawHeader = []; - this.header = null; -} - -SimpleProtocol.prototype._transform = function(chunk, encoding, done) { - if (!this._inBody) { - // check if the chunk has a \n\n - var split = -1; - for (var i = 0; i < chunk.length; i++) { - if (chunk[i] === 10) { // '\n' - if (this._sawFirstCr) { - split = i; - break; - } else { - this._sawFirstCr = true; - } - } else { - this._sawFirstCr = false; - } - } - - if (split === -1) { - // still waiting for the \n\n - // stash the chunk, and try again. - this._rawHeader.push(chunk); - } else { - this._inBody = true; - var h = chunk.slice(0, split); - this._rawHeader.push(h); - var header = Buffer.concat(this._rawHeader).toString(); - try { - this.header = JSON.parse(header); - } catch (er) { - this.emit('error', new Error('invalid simple protocol data')); - return; - } - // and let them know that we are done parsing the header. - this.emit('header', this.header); - - // now, because we got some extra data, emit this first. - this.push(chunk.slice(split)); - } - } else { - // from there on, just provide the data to our consumer as-is. - this.push(chunk); - } - done(); -}; - -// Usage: -// var parser = new SimpleProtocol(); -// source.pipe(parser) -// Now parser is a readable stream that will emit 'header' -// with the parsed header data. -``` - -### Class: stream.Writable - - - -`stream.Writable` is an abstract class designed to be extended with an -underlying implementation of the -[`stream._write(chunk, encoding, callback)`][stream-_write] method. - -Please see [API for Stream Consumers][] for how to consume -writable streams in your programs. What follows is an explanation of -how to implement Writable streams in your programs. - -#### new stream.Writable([options]) - -* `options` {Object} - * `highWaterMark` {Number} Buffer level when - [`stream.write()`][stream-write] starts returning `false`. Default = `16384` - (16kb), or `16` for `objectMode` streams. - * `decodeStrings` {Boolean} Whether or not to decode strings into - Buffers before passing them to [`stream._write()`][stream-_write]. - Default = `true` - * `objectMode` {Boolean} Whether or not the - [`stream.write(anyObj)`][stream-write] is a valid operation. If set you can - write arbitrary data instead of only `Buffer` / `String` data. - Default = `false` - * `write` {Function} Implementation for the - [`stream._write()`][stream-_write] method. - * `writev` {Function} Implementation for the - [`stream._writev()`][stream-_writev] method. - -In classes that extend the Writable class, make sure to call the -constructor so that the buffering settings can be properly -initialized. - -#### writable.\_write(chunk, encoding, callback) - -* `chunk` {Buffer|String} The chunk to be written. Will **always** - be a buffer unless the `decodeStrings` option was set to `false`. -* `encoding` {String} If the chunk is a string, then this is the - encoding type. If chunk is a buffer, then this is the special - value - 'buffer', ignore it in this case. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunk. - -All Writable stream implementations must provide a -[`stream._write()`][stream-_write] method to send data to the underlying -resource. - -Note: **This function MUST NOT be called directly.** It should be -implemented by child classes, and called by the internal Writable -class methods only. - -Call the callback using the standard `callback(error)` pattern to -signal that the write completed successfully or with an error. - -If the `decodeStrings` flag is set in the constructor options, then -`chunk` may be a string rather than a Buffer, and `encoding` will -indicate the sort of string that it is. This is to support -implementations that have an optimized handling for certain string -data encodings. If you do not explicitly set the `decodeStrings` -option to `false`, then you can safely ignore the `encoding` argument, -and assume that `chunk` will always be a Buffer. - -This method is prefixed with an underscore because it is internal to -the class that defines it, and should not be called directly by user -programs. However, you **are** expected to override this method in -your own extension classes. - -#### writable.\_writev(chunks, callback) - -* `chunks` {Array} The chunks to be written. Each chunk has following - format: `{ chunk: ..., encoding: ... }`. -* `callback` {Function} Call this function (optionally with an error - argument) when you are done processing the supplied chunks. - -Note: **This function MUST NOT be called directly.** It may be -implemented by child classes, and called by the internal Writable -class methods only. - -This function is completely optional to implement. In most cases it is -unnecessary. If implemented, it will be called with all the chunks -that are buffered in the write queue. - - -## Simplified Constructor API - - - -In simple cases there is now the added benefit of being able to construct a -stream without inheritance. - -This can be done by passing the appropriate methods as constructor options: - -Examples: - -### Duplex - -```js -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - }, - write: function(chunk, encoding, next) { - // sets this._write under the hood - - // An optional error can be passed as the first argument - next() - } -}); - -// or - -var duplex = new stream.Duplex({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - }, - writev: function(chunks, next) { - // sets this._writev under the hood - - // An optional error can be passed as the first argument - next() - } -}); -``` - -### Readable - -```js -var readable = new stream.Readable({ - read: function(n) { - // sets this._read under the hood - - // push data onto the read queue, passing null - // will signal the end of the stream (EOF) - this.push(chunk); - } -}); -``` - -### Transform - -```js -var transform = new stream.Transform({ - transform: function(chunk, encoding, next) { - // sets this._transform under the hood - - // generate output as many times as needed - // this.push(chunk); - - // call when the current chunk is consumed - next(); - }, - flush: function(done) { - // sets this._flush under the hood - - // generate output as many times as needed - // this.push(chunk); - - done(); - } -}); -``` - -### Writable - -```js -var writable = new stream.Writable({ - write: function(chunk, encoding, next) { - // sets this._write under the hood - - // An optional error can be passed as the first argument - next() - } -}); - -// or - -var writable = new stream.Writable({ - writev: function(chunks, next) { - // sets this._writev under the hood - - // An optional error can be passed as the first argument - next() - } -}); -``` - -## Streams: Under the Hood - - - -### Buffering - - - -Both Writable and Readable streams will buffer data on an internal -object which can be retrieved from `_writableState.getBuffer()` or -`_readableState.buffer`, respectively. - -The amount of data that will potentially be buffered depends on the -`highWaterMark` option which is passed into the constructor. - -Buffering in Readable streams happens when the implementation calls -[`stream.push(chunk)`][stream-push]. If the consumer of the Stream does not -call [`stream.read()`][stream-read], then the data will sit in the internal -queue until it is consumed. - -Buffering in Writable streams happens when the user calls -[`stream.write(chunk)`][stream-write] repeatedly, even when it returns `false`. - -The purpose of streams, especially with the [`stream.pipe()`][] method, is to -limit the buffering of data to acceptable levels, so that sources and -destinations of varying speed will not overwhelm the available memory. - -### Compatibility with Older Node.js Versions - - - -In versions of Node.js prior to v0.10, the Readable stream interface was -simpler, but also less powerful and less useful. - -* Rather than waiting for you to call the [`stream.read()`][stream-read] method, - [`'data'`][] events would start emitting immediately. If you needed to do - some I/O to decide how to handle data, then you had to store the chunks - in some kind of buffer so that they would not be lost. -* The [`stream.pause()`][stream-pause] method was advisory, rather than - guaranteed. This meant that you still had to be prepared to receive - [`'data'`][] events even when the stream was in a paused state. - -In Node.js v0.10, the [Readable][] class was added. -For backwards compatibility with older Node.js programs, Readable streams -switch into "flowing mode" when a [`'data'`][] event handler is added, or -when the [`stream.resume()`][stream-resume] method is called. The effect is -that, even if you are not using the new [`stream.read()`][stream-read] method -and [`'readable'`][] event, you no longer have to worry about losing -[`'data'`][] chunks. - -Most programs will continue to function normally. However, this -introduces an edge case in the following conditions: - -* No [`'data'`][] event handler is added. -* The [`stream.resume()`][stream-resume] method is never called. -* The stream is not piped to any writable destination. - -For example, consider the following code: - -```js -// WARNING! BROKEN! -net.createServer((socket) => { - - // we add an 'end' method, but never consume the data - socket.on('end', () => { - // It will never get here. - socket.end('I got your message (but didnt read it)\n'); - }); - -}).listen(1337); -``` - -In versions of Node.js prior to v0.10, the incoming message data would be -simply discarded. However, in Node.js v0.10 and beyond, -the socket will remain paused forever. - -The workaround in this situation is to call the -[`stream.resume()`][stream-resume] method to start the flow of data: - -```js -// Workaround -net.createServer((socket) => { - - socket.on('end', () => { - socket.end('I got your message (but didnt read it)\n'); - }); - - // start the flow of data, discarding it. - socket.resume(); - -}).listen(1337); -``` - -In addition to new Readable streams switching into flowing mode, -pre-v0.10 style streams can be wrapped in a Readable class using the -[`stream.wrap()`][] method. - - -### Object Mode - - - -Normally, Streams operate on Strings and Buffers exclusively. - -Streams that are in **object mode** can emit generic JavaScript values -other than Buffers and Strings. - -A Readable stream in object mode will always return a single item from -a call to [`stream.read(size)`][stream-read], regardless of what the size -argument is. - -A Writable stream in object mode will always ignore the `encoding` -argument to [`stream.write(data, encoding)`][stream-write]. - -The special value `null` still retains its special value for object -mode streams. That is, for object mode readable streams, `null` as a -return value from [`stream.read()`][stream-read] indicates that there is no more -data, and [`stream.push(null)`][stream-push] will signal the end of stream data -(`EOF`). - -No streams in Node.js core are object mode streams. This pattern is only -used by userland streaming libraries. - -You should set `objectMode` in your stream child class constructor on -the options object. Setting `objectMode` mid-stream is not safe. - -For Duplex streams `objectMode` can be set exclusively for readable or -writable side with `readableObjectMode` and `writableObjectMode` -respectively. These options can be used to implement parsers and -serializers with Transform streams. - -```js -const util = require('util'); -const StringDecoder = require('string_decoder').StringDecoder; -const Transform = require('stream').Transform; -util.inherits(JSONParseStream, Transform); - -// Gets \n-delimited JSON string data, and emits the parsed objects -function JSONParseStream() { - if (!(this instanceof JSONParseStream)) - return new JSONParseStream(); - - Transform.call(this, { readableObjectMode : true }); - - this._buffer = ''; - this._decoder = new StringDecoder('utf8'); -} - -JSONParseStream.prototype._transform = function(chunk, encoding, cb) { - this._buffer += this._decoder.write(chunk); - // split on newlines - var lines = this._buffer.split(/\r?\n/); - // keep the last partial line buffered - this._buffer = lines.pop(); - for (var l = 0; l < lines.length; l++) { - var line = lines[l]; - try { - var obj = JSON.parse(line); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; - -JSONParseStream.prototype._flush = function(cb) { - // Just handle any leftover - var rem = this._buffer.trim(); - if (rem) { - try { - var obj = JSON.parse(rem); - } catch (er) { - this.emit('error', er); - return; - } - // push the parsed object out to the readable consumer - this.push(obj); - } - cb(); -}; -``` - -### `stream.read(0)` - -There are some cases where you want to trigger a refresh of the -underlying readable stream mechanisms, without actually consuming any -data. In that case, you can call `stream.read(0)`, which will always -return null. - -If the internal read buffer is below the `highWaterMark`, and the -stream is not currently reading, then calling `stream.read(0)` will trigger -a low-level [`stream._read()`][stream-_read] call. - -There is almost never a need to do this. However, you will see some -cases in Node.js's internals where this is done, particularly in the -Readable stream class internals. - -### `stream.push('')` - -Pushing a zero-byte string or Buffer (when not in [Object mode][]) has an -interesting side effect. Because it *is* a call to -[`stream.push()`][stream-push], it will end the `reading` process. However, it -does *not* add any data to the readable buffer, so there's nothing for -a user to consume. - -Very rarely, there are cases where you have no data to provide now, -but the consumer of your stream (or, perhaps, another bit of your own -code) will know when to check again, by calling [`stream.read(0)`][stream-read]. -In those cases, you *may* call `stream.push('')`. - -So far, the only use case for this functionality is in the -[`tls.CryptoStream`][] class, which is deprecated in Node.js/io.js v1.0. If you -find that you have to use `stream.push('')`, please consider another -approach, because it almost certainly indicates that something is -horribly wrong. - -[`'data'`]: #stream_event_data -[`'drain'`]: #stream_event_drain -[`'end'`]: #stream_event_end -[`'finish'`]: #stream_event_finish -[`'readable'`]: #stream_event_readable -[`buf.toString(encoding)`]: https://nodejs.org/docs/v5.8.0/api/buffer.html#buffer_buf_tostring_encoding_start_end -[`EventEmitter`]: https://nodejs.org/docs/v5.8.0/api/events.html#events_class_eventemitter -[`process.stderr`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stderr -[`process.stdin`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stdin -[`process.stdout`]: https://nodejs.org/docs/v5.8.0/api/process.html#process_process_stdout -[`stream.cork()`]: #stream_writable_cork -[`stream.pipe()`]: #stream_readable_pipe_destination_options -[`stream.uncork()`]: #stream_writable_uncork -[`stream.unpipe()`]: #stream_readable_unpipe_destination -[`stream.wrap()`]: #stream_readable_wrap_stream -[`tls.CryptoStream`]: https://nodejs.org/docs/v5.8.0/api/tls.html#tls_class_cryptostream -[`util.inherits()`]: https://nodejs.org/docs/v5.8.0/api/util.html#util_util_inherits_constructor_superconstructor -[API for Stream Consumers]: #stream_api_for_stream_consumers -[API for Stream Implementors]: #stream_api_for_stream_implementors -[child process stdin]: https://nodejs.org/docs/v5.8.0/api/child_process.html#child_process_child_stdin -[child process stdout and stderr]: https://nodejs.org/docs/v5.8.0/api/child_process.html#child_process_child_stdout -[Compatibility]: #stream_compatibility_with_older_node_js_versions -[crypto]: crypto.html -[Duplex]: #stream_class_stream_duplex -[fs read streams]: https://nodejs.org/docs/v5.8.0/api/fs.html#fs_class_fs_readstream -[fs write streams]: https://nodejs.org/docs/v5.8.0/api/fs.html#fs_class_fs_writestream -[HTTP requests, on the client]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_clientrequest -[HTTP responses, on the server]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_serverresponse -[http-incoming-message]: https://nodejs.org/docs/v5.8.0/api/http.html#http_class_http_incomingmessage -[Object mode]: #stream_object_mode -[Readable]: #stream_class_stream_readable -[SimpleProtocol v2]: #stream_example_simpleprotocol_parser_v2 -[stream-_flush]: #stream_transform_flush_callback -[stream-_read]: #stream_readable_read_size_1 -[stream-_transform]: #stream_transform_transform_chunk_encoding_callback -[stream-_write]: #stream_writable_write_chunk_encoding_callback_1 -[stream-_writev]: #stream_writable_writev_chunks_callback -[stream-end]: #stream_writable_end_chunk_encoding_callback -[stream-pause]: #stream_readable_pause -[stream-push]: #stream_readable_push_chunk_encoding -[stream-read]: #stream_readable_read_size -[stream-resume]: #stream_readable_resume -[stream-write]: #stream_writable_write_chunk_encoding_callback -[TCP sockets]: https://nodejs.org/docs/v5.8.0/api/net.html#net_class_net_socket -[Transform]: #stream_class_stream_transform -[Writable]: #stream_class_stream_writable -[zlib]: zlib.html diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md deleted file mode 100644 index 83275f19..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +++ /dev/null @@ -1,60 +0,0 @@ -# streams WG Meeting 2015-01-30 - -## Links - -* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg -* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 -* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ - -## Agenda - -Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. - -* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) -* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) -* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) -* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) - -## Minutes - -### adopt a charter - -* group: +1's all around - -### What versioning scheme should be adopted? -* group: +1’s 3.0.0 -* domenic+group: pulling in patches from other sources where appropriate -* mikeal: version independently, suggesting versions for io.js -* mikeal+domenic: work with TC to notify in advance of changes -simpler stream creation - -### streamline creation of streams -* sam: streamline creation of streams -* domenic: nice simple solution posted - but, we lose the opportunity to change the model - may not be backwards incompatible (double check keys) - - **action item:** domenic will check - -### remove implicit flowing of streams on(‘data’) -* add isFlowing / isPaused -* mikeal: worrying that we’re documenting polyfill methods – confuses users -* domenic: more reflective API is probably good, with warning labels for users -* new section for mad scientists (reflective stream access) -* calvin: name the “third state” -* mikeal: maybe borrow the name from whatwg? -* domenic: we’re missing the “third state” -* consensus: kind of difficult to name the third state -* mikeal: figure out differences in states / compat -* mathias: always flow on data – eliminates third state - * explore what it breaks - -**action items:** -* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) -* ask rod/build for infrastructure -* **chris**: explore the “flow on data” approach -* add isPaused/isFlowing -* add new docs section -* move isPaused to that section - - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index 736693b8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,75 +0,0 @@ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index d06f71f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,26 +0,0 @@ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 54a9d5c5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,880 +0,0 @@ -'use strict'; - -module.exports = Readable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var isArray = require('isarray'); -/**/ - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events'); - -/**/ -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = undefined; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -var Duplex; -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') this._read = options.read; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } - - if (!addToFront) state.reading = false; - - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) return 0; - - if (state.objectMode) return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length; - } - - if (n <= 0) return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else { - return state.length; - } - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - var state = this._readableState; - var nOrig = n; - - if (typeof n !== 'number' || n > 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } - - if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (doRead && !state.reading) n = howMuchToRead(nOrig, state); - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended && state.length === 0) endReadable(this); - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - var ret = dest.write(chunk); - if (false === ret) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - if (state.pipesCount === 1 && state.pipes[0] === dest && src.listenerCount('data') === 1 && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) dest.on('error', onerror);else if (isArray(dest._events.error)) dest._events.error.unshift(onerror);else dest._events.error = [onerror, dest._events.error]; - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - // If listening to data, and it has not explicitly been paused, - // then call resume to start the flow of data on the next tick. - if (ev === 'data' && false !== this._readableState.flowing) { - this.resume(); - } - - if (ev === 'readable' && !this._readableState.endEmitted) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - if (state.flowing) { - do { - var chunk = stream.read(); - } while (null !== chunk && state.flowing); - } -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) return null; - - if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) ret = '';else ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) ret += buf.slice(0, cpy);else buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) list[0] = buf.slice(cpy);else list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index 625cdc17..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,180 +0,0 @@ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) stream.push(data); - - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -function done(stream, er) { - if (er) return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 95916c99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,516 +0,0 @@ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -module.exports = Writable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; - -util.inherits(Writable, Stream); - -function nop() {} - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // create the two objects needed to store the corked requests - // they are not a linked list, as no new elements are inserted in there - this.corkedRequestsFree = new CorkedRequest(this); - this.corkedRequestsFree.next = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); - -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/package.json deleted file mode 100644 index 5e002a8e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@~2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/through2" - ] - ], - "_from": "readable-stream@>=2.0.0 <2.1.0", - "_id": "readable-stream@2.0.6", - "_inCache": true, - "_installable": true, - "_location": "/through2/readable-stream", - "_nodeVersion": "5.7.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-2.0.6.tgz_1457893507709_0.369257491780445" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.6.0", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@~2.0.0", - "rawSpec": "~2.0.0", - "scope": null, - "spec": ">=2.0.0 <2.1.0", - "type": "range" - }, - "_requiredBy": [ - "/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "_shasum": "8f90341e68a53ccc928788dacfcd11b36eb9b78e", - "_shrinkwrap": null, - "_spec": "readable-stream@~2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/through2", - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/nodejs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "description": "Streams3, a user-land copy of the stream library from Node.js", - "devDependencies": { - "tap": "~0.2.6", - "tape": "~4.5.1", - "zuul": "~3.9.0" - }, - "directories": {}, - "dist": { - "shasum": "8f90341e68a53ccc928788dacfcd11b36eb9b78e", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" - }, - "gitHead": "01fb5608a970b42c900b96746cadc13d27dd9d7e", - "homepage": "https://github.com/nodejs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/nodejs/readable-stream.git" - }, - "scripts": { - "browser": "npm run write-zuul && zuul -- test/browser.js", - "test": "tap test/parallel/*.js test/ours/*.js", - "write-zuul": "printf \"ui: tape\nbrowsers:\n - name: $BROWSER_NAME\n version: $BROWSER_VERSION\n\">.zuul.yml" - }, - "version": "2.0.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/readable.js deleted file mode 100644 index 6222a579..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,12 +0,0 @@ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/package.json deleted file mode 100644 index 0b52b26b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "through2@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "through2@>=2.0.0 <3.0.0", - "_id": "through2@2.0.1", - "_inCache": true, - "_installable": true, - "_location": "/through2", - "_nodeVersion": "5.5.0", - "_npmOperationalInternal": { - "host": "packages-6-west.internal.npmjs.com", - "tmp": "tmp/through2-2.0.1.tgz_1454928418348_0.7339043114334345" - }, - "_npmUser": { - "email": "rod@vagg.org", - "name": "rvagg" - }, - "_npmVersion": "3.6.0", - "_phantomChildren": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "process-nextick-args": "1.0.6", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - }, - "_requested": { - "name": "through2", - "raw": "through2@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-shell", - "/gulp-util", - "/through2-filter" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "_shasum": "384e75314d49f32de12eebb8136b8eb6b5d59da9", - "_shrinkwrap": null, - "_spec": "through2@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": "~2.0.0", - "xtend": "~4.0.0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": "~0.9.4", - "faucet": "0.0.1", - "stream-spigot": "~3.0.5", - "tape": "~4.0.0" - }, - "directories": {}, - "dist": { - "shasum": "384e75314d49f32de12eebb8136b8eb6b5d59da9", - "tarball": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz" - }, - "gitHead": "6d52a1b77db13a741f2708cd5854a198e4ae3072", - "homepage": "https://github.com/rvagg/through2#readme", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js | faucet", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "2.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/through2.js deleted file mode 100644 index 5b7a880e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/index.js deleted file mode 100644 index ee8eb939..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/index.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; -var path = require('path'); -var osHomedir = require('os-homedir'); -var home = osHomedir(); - -module.exports = function (str) { - str = path.normalize(str) + path.sep; - return (str.indexOf(home) === 0 ? str.replace(home + path.sep, '~' + path.sep) : str).slice(0, -1); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/package.json deleted file mode 100644 index 0191c44c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "tildify@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "tildify@>=1.0.0 <2.0.0", - "_id": "tildify@1.2.0", - "_inCache": true, - "_installable": true, - "_location": "/tildify", - "_nodeVersion": "4.4.2", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/tildify-1.2.0.tgz_1460447164123_0.6345257461071014" - }, - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.15.0", - "_phantomChildren": {}, - "_requested": { - "name": "tildify", - "raw": "tildify@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "_shasum": "dcec03f55dca9b7aa3e5b04f21817eb56e63588a", - "_shrinkwrap": null, - "_spec": "tildify@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/tildify/issues" - }, - "dependencies": { - "os-homedir": "^1.0.0" - }, - "description": "Convert an absolute path to a tilde path: `/Users/sindresorhus/dev` → `~/dev`", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "dcec03f55dca9b7aa3e5b04f21817eb56e63588a", - "tarball": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "c323a7ebf1098dfbf3e333a93c3f0c51c6ca48e0", - "homepage": "https://github.com/sindresorhus/tildify#readme", - "keywords": [ - "unexpand", - "homedir", - "tilde", - "tildify", - "collapse", - "path", - "home", - "dir", - "directory", - "user", - "expand" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "tildify", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/tildify.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/readme.md deleted file mode 100644 index 2a70d698..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tildify/readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# tildify [![Build Status](https://travis-ci.org/sindresorhus/tildify.svg?branch=master)](https://travis-ci.org/sindresorhus/tildify) - -> Convert an absolute path to a tilde path: `/Users/sindresorhus/dev` → `~/dev` - - -## Install - -``` -$ npm install --save tildify -``` - - -## Usage - -```js -const tildify = require('tildify'); - -tildify('/Users/sindresorhus/dev'); -//=> '~/dev' -``` - - -## Related - -See [untildify](https://github.com/sindresorhus/untildify) for the inverse. - - -## License - -MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/LICENSE deleted file mode 100644 index 1e49edf8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016, 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/README.md deleted file mode 100644 index d4dd0bf9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# time-stamp [![NPM version](https://img.shields.io/npm/v/time-stamp.svg?style=flat)](https://www.npmjs.com/package/time-stamp) [![NPM downloads](https://img.shields.io/npm/dm/time-stamp.svg?style=flat)](https://npmjs.org/package/time-stamp) [![Build Status](https://img.shields.io/travis/jonschlinkert/time-stamp.svg?style=flat)](https://travis-ci.org/jonschlinkert/time-stamp) - -> Get a formatted timestamp. - -## Install - -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install time-stamp --save -``` - -## Usage - -```js -var timestamp = require('time-stamp'); - -timestamp(); -//=> '2015:04:01' - -timestamp('YYYY:MM:DD'); -//=> '2015:04:01' - -timestamp('[YYYY:MM:DD]'); -//=> '[2015:04:01]' - -timestamp('YYYY/MM/DD'); -//=> '2015/04/01' - -timestamp('YYYY:MM'); -//=> '2015:04' - -timestamp('YYYY'); -//=> '2015' - -timestamp('MM'); -//=> '04' - -timestamp('DD'); -//=> '01' - -timestamp('HH'); -//=> '01' - -timestamp('mm'); -//=> '59' - -timestamp('ss'); -//=> '09' - -timestamp('ms'); -//=> '783' -``` - -**Valid patterns** - -* `YYYY`: full year (ex: **2015**) -* `MM`: month (ex: **04**) -* `DD`: day (ex: **01**) -* `HH`: hours (ex: **12**) -* `mm`: minutes (ex: **59**) -* `ss`: seconds (ex: **09**) -* `ms`: milliseconds (ex: **532**) - -## Related projects - -You might also be interested in these projects: - -* [days](https://www.npmjs.com/package/days): Days of the week. | [homepage](https://github.com/jonschlinkert/days) -* [iso-week](https://www.npmjs.com/package/iso-week): Get the ISO week of the year. | [homepage](https://github.com/jonschlinkert/iso-week) -* [month](https://www.npmjs.com/package/month): Get the name or number of the current month or any month of the year. | [homepage](https://github.com/datetime/month) -* [months](https://www.npmjs.com/package/months): Months of the year. | [homepage](https://github.com/jonschlinkert/months) -* [o-clock](https://www.npmjs.com/package/o-clock): Simple utility for displaying the time in 12-hour clock format. | [homepage](https://github.com/jonschlinkert/o-clock) -* [seconds](https://www.npmjs.com/package/seconds): Get the number of seconds for a minute, hour, day and week. | [homepage](https://github.com/jonschlinkert/seconds) -* [week](https://www.npmjs.com/package/week): Get the current week number. | [homepage](https://github.com/jonschlinkert/week) -* [weekday](https://www.npmjs.com/package/weekday): Get the name and number of the current weekday. Or get the name of the… [more](https://www.npmjs.com/package/weekday) | [homepage](https://github.com/jonschlinkert/weekday) -* [year](https://www.npmjs.com/package/year): Simple utility to get the current year with 2 or 4 digits. | [homepage](https://github.com/jonschlinkert/year) - -## Contributing - -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/time-stamp/issues/new). - -## Building docs - -Generate readme and API documentation with [verb](https://github.com/verbose/verb): - -```sh -$ npm install verb && npm run docs -``` - -Or, if [verb](https://github.com/verbose/verb) is installed globally: - -```sh -$ verb -``` - -## Running tests - -Install dev dependencies: - -```sh -$ npm install -d && npm test -``` - -## Author - -**Jon Schlinkert** - -Follow me on GitHub or Twitter for updates about time-stamp and my other libraries: - -* [github/jonschlinkert](https://github.com/jonschlinkert) -* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) - -## License - -Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). -Released under the [MIT license](https://github.com/jonschlinkert/time-stamp/blob/master/LICENSE). - -*** - -_This file was generated by [verb](https://github.com/verbose/verb), v, on April 07, 2016._ \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/index.js deleted file mode 100644 index 1a400adc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/index.js +++ /dev/null @@ -1,47 +0,0 @@ -/*! - * time-stamp - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -'use strict'; - -/** - * Parse the given pattern and return a formatted - * timestamp. - * - * @param {String} `pattern` Date pattern. - * @param {Date} `date` Date object. - * @return {String} - */ - -module.exports = function timestamp(pattern, date) { - if (typeof pattern !== 'string') { - date = pattern; - pattern = 'YYYY:MM:DD'; - } - date = date || new Date(); - return pattern.replace(/([YMDHms]{2,4})(:\/)?/g, function(_, key, sep) { - var increment = method(key); - if (!increment) return _; - sep = sep || ''; - - var res = '00' + String(date[increment[0]]() + (increment[2] || 0)); - return res.slice(-increment[1]) + sep; - }); -}; - -function method(key) { - return ({ - YYYY: ['getFullYear', 4], - YY: ['getFullYear', 2], - // getMonth is zero-based, thus the extra increment field - MM: ['getMonth', 2, 1], - DD: ['getDate', 2], - HH: ['getHours', 2], - mm: ['getMinutes', 2], - ss: ['getSeconds', 2], - ms: ['getMilliseconds', 3] - })[key]; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/package.json deleted file mode 100644 index 67f8b7ef..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/time-stamp/package.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "_args": [ - [ - "time-stamp@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/fancy-log" - ] - ], - "_from": "time-stamp@>=1.0.0 <2.0.0", - "_id": "time-stamp@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/time-stamp", - "_nodeVersion": "5.5.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/time-stamp-1.0.1.tgz_1460014127254_0.9380003691185266" - }, - "_npmUser": { - "email": "github@sellside.com", - "name": "jonschlinkert" - }, - "_npmVersion": "3.6.0", - "_phantomChildren": {}, - "_requested": { - "name": "time-stamp", - "raw": "time-stamp@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/fancy-log" - ], - "_resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz", - "_shasum": "9f4bd23559c9365966f3302dbba2b07c6b99b151", - "_shrinkwrap": null, - "_spec": "time-stamp@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/fancy-log", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, - "bugs": { - "url": "https://github.com/jonschlinkert/time-stamp/issues" - }, - "dependencies": {}, - "description": "Get a formatted timestamp.", - "devDependencies": { - "gulp-format-md": "^0.1.7", - "mocha": "^2.4.5", - "pad-left": "^2.0.3" - }, - "directories": {}, - "dist": { - "shasum": "9f4bd23559c9365966f3302dbba2b07c6b99b151", - "tarball": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.0.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "66fc623cf26a5f85fe22a6a7acc91568cddf301c", - "homepage": "https://github.com/jonschlinkert/time-stamp", - "keywords": [ - "console", - "date", - "format", - "formatting", - "log", - "pretty", - "stamp", - "terminal", - "time", - "time-stamp" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "github@sellside.com", - "name": "jonschlinkert" - } - ], - "name": "time-stamp", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/jonschlinkert/time-stamp.git" - }, - "scripts": { - "test": "mocha" - }, - "verb": { - "layout": "default", - "lint": { - "reflinks": true - }, - "plugins": [ - "gulp-format-md" - ], - "reflinks": [ - "verb" - ], - "related": { - "list": [ - "days", - "iso-week", - "month", - "months", - "o-clock", - "seconds", - "week", - "weekday", - "year" - ] - }, - "run": true, - "tasks": [ - "readme" - ], - "toc": false - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.npmignore deleted file mode 100644 index 78f2710d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -.idea/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.travis.yml deleted file mode 100644 index ddf5948a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - "0.6" - - "0.8" - - "0.10" - - "0.12" - - "4.0" - - "4.1" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/Gruntfile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/Gruntfile.js deleted file mode 100644 index 8df64e70..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/Gruntfile.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = function(grunt) { - grunt.initConfig({ - jshint: { - all: ['Gruntfile.js', 'lib/*.js', 'test/*.js'] - }, - vows: { - all: { - src: ['test/*.js'], - } - } - }); - - grunt.loadNpmTasks('grunt-contrib-jshint'); - //grunt.loadNpmTasks('grunt-vows-runner'); - grunt.loadNpmTasks('grunt-vows'); - - grunt.registerTask('default', ['jshint', 'vows']); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/LICENSE deleted file mode 100644 index 72418bd9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 KARASZI István - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/README.md deleted file mode 100644 index 4e100160..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/README.md +++ /dev/null @@ -1,266 +0,0 @@ -# Tmp - -A simple temporary file and directory creator for [node.js.][1] - -[![Build Status](https://secure.travis-ci.org/raszi/node-tmp.png?branch=master)](http://travis-ci.org/raszi/node-tmp) - -## About - -This is a [widely used library][2] to create temporary files and directories -in a [node.js][1] environment. - -Tmp offers both an asynchronous and a synchronous API. For all API calls, all -the parameters are optional. - -Tmp uses crypto for determining random file names, or, when using templates, -a six letter random identifier. And just in case that you do not have that much -entropy left on your system, Tmp will fall back to pseudo random numbers. - -You can set whether you want to remove the temporary file on process exit or -not, and the destination directory can also be set. - -## How to install - -```bash -npm install tmp -``` - -## Usage - -### Asynchronous file creation - -Simple temporary file creation, the file will be closed and unlinked on process exit. - -```javascript -var tmp = require('tmp'); - -tmp.file(function _tempFileCreated(err, path, fd, cleanupCallback) { - if (err) throw err; - - console.log("File: ", path); - console.log("Filedescriptor: ", fd); - - // If we don't need the file anymore we could manually call the cleanupCallback - // But that is not necessary if we didn't pass the keep option because the library - // will clean after itself. - cleanupCallback(); -}); -``` - -### Synchronous file creation - -A synchronous version of the above. - -```javascript -var tmp = require('tmp'); - -var tmpobj = tmp.fileSync(); -console.log("File: ", tmpobj.name); -console.log("Filedescriptor: ", tmpobj.fd); - -// If we don't need the file anymore we could manually call the removeCallback -// But that is not necessary if we didn't pass the keep option because the library -// will clean after itself. -tmpobj.removeCallback(); -``` - -Note that this might throw an exception if either the maximum limit of retries -for creating a temporary name fails, or, in case that you do not have the permission -to write to the directory where the temporary file should be created in. - -### Asynchronous directory creation - -Simple temporary directory creation, it will be removed on process exit. - -If the directory still contains items on process exit, then it won't be removed. - -```javascript -var tmp = require('tmp'); - -tmp.dir(function _tempDirCreated(err, path, cleanupCallback) { - if (err) throw err; - - console.log("Dir: ", path); - - // Manual cleanup - cleanupCallback(); -}); -``` - -If you want to cleanup the directory even when there are entries in it, then -you can pass the `unsafeCleanup` option when creating it. - -### Synchronous directory creation - -A synchronous version of the above. - -```javascript -var tmp = require('tmp'); - -var tmpobj = tmp.dirSync(); -console.log("Dir: ", tmpobj.name); -// Manual cleanup -tmpobj.removeCallback(); -``` - -Note that this might throw an exception if either the maximum limit of retries -for creating a temporary name fails, or, in case that you do not have the permission -to write to the directory where the temporary directory should be created in. - -### Asynchronous filename generation - -It is possible with this library to generate a unique filename in the specified -directory. - -```javascript -var tmp = require('tmp'); - -tmp.tmpName(function _tempNameGenerated(err, path) { - if (err) throw err; - - console.log("Created temporary filename: ", path); -}); -``` - -### Synchronous filename generation - -A synchronous version of the above. - -```javascript -var tmp = require('tmp'); - -var name = tmp.tmpNameSync(); -console.log("Created temporary filename: ", name); -``` - -## Advanced usage - -### Asynchronous file creation - -Creates a file with mode `0644`, prefix will be `prefix-` and postfix will be `.txt`. - -```javascript -var tmp = require('tmp'); - -tmp.file({ mode: 0644, prefix: 'prefix-', postfix: '.txt' }, function _tempFileCreated(err, path, fd) { - if (err) throw err; - - console.log("File: ", path); - console.log("Filedescriptor: ", fd); -}); -``` - -### Synchronous file creation - -A synchronous version of the above. - -```javascript -var tmp = require('tmp'); - -var tmpobj = tmp.fileSync({ mode: 0644, prefix: 'prefix-', postfix: '.txt' }); -console.log("File: ", tmpobj.name); -console.log("Filedescriptor: ", tmpobj.fd); -``` - -### Asynchronous directory creation - -Creates a directory with mode `0755`, prefix will be `myTmpDir_`. - -```javascript -var tmp = require('tmp'); - -tmp.dir({ mode: 0750, prefix: 'myTmpDir_' }, function _tempDirCreated(err, path) { - if (err) throw err; - - console.log("Dir: ", path); -}); -``` - -### Synchronous directory creation - -Again, a synchronous version of the above. - -```javascript -var tmp = require('tmp'); - -var tmpobj = tmp.dirSync({ mode: 0750, prefix: 'myTmpDir_' }); -console.log("Dir: ", tmpobj.name); -``` - -### mkstemps like, asynchronously - -Creates a new temporary directory with mode `0700` and filename like `/tmp/tmp-nk2J1u`. - -```javascript -var tmp = require('tmp'); - -tmp.dir({ template: '/tmp/tmp-XXXXXX' }, function _tempDirCreated(err, path) { - if (err) throw err; - - console.log("Dir: ", path); -}); -``` - -### mkstemps like, synchronously - -This will behave similarly to the asynchronous version. - -```javascript -var tmp = require('tmp'); - -var tmpobj = tmp.dirSync({ template: '/tmp/tmp-XXXXXX' }); -console.log("Dir: ", tmpobj.name); -``` - -### Asynchronous filename generation - -The `tmpName()` function accepts the `prefix`, `postfix`, `dir`, etc. parameters also: - -```javascript -var tmp = require('tmp'); - -tmp.tmpName({ template: '/tmp/tmp-XXXXXX' }, function _tempNameGenerated(err, path) { - if (err) throw err; - - console.log("Created temporary filename: ", path); -}); -``` - -### Synchronous filename generation - -The `tmpNameSync()` function works similarly to `tmpName()`. - -```javascript -var tmp = require('tmp'); -var tmpname = tmp.tmpNameSync({ template: '/tmp/tmp-XXXXXX' }); -console.log("Created temporary filename: ", tmpname); -``` - -## Graceful cleanup - -One may want to cleanup the temporary files even when an uncaught exception -occurs. To enforce this, you can call the `setGracefulCleanup()` method: - -```javascript -var tmp = require('tmp'); - -tmp.setGracefulCleanup(); -``` - -## Options - -All options are optional :) - - * `mode`: the file mode to create with, it fallbacks to `0600` on file creation and `0700` on directory creation - * `prefix`: the optional prefix, fallbacks to `tmp-` if not provided - * `postfix`: the optional postfix, fallbacks to `.tmp` on file creation - * `template`: [`mkstemps`][3] like filename template, no default - * `dir`: the optional temporary directory, fallbacks to system default (guesses from environment) - * `tries`: how many times should the function try to get a unique filename before giving up, default `3` - * `keep`: signals that the temporary file or directory should not be deleted on exit, default is `false`, means delete - * Please keep in mind that it is recommended in this case to call the provided `cleanupCallback` function manually. - * `unsafeCleanup`: recursively removes the created temporary directory, even when it's not empty. default is `false` - -[1]: http://nodejs.org/ -[2]: https://www.npmjs.com/browse/depended/tmp -[3]: http://www.kernel.org/doc/man-pages/online/pages/man3/mkstemp.3.html diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/cleanup.sh b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/cleanup.sh deleted file mode 100755 index d069ebfb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/cleanup.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -rm -vrf ${TMPDIR}/{foo,tmp,something,complicated,clike,using}* diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/lib/tmp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/lib/tmp.js deleted file mode 100644 index 096c07e8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/lib/tmp.js +++ /dev/null @@ -1,462 +0,0 @@ -/*! - * Tmp - * - * Copyright (c) 2011-2015 KARASZI Istvan - * - * MIT Licensed - */ - -/** - * Module dependencies. - */ -var - fs = require('fs'), - path = require('path'), - os = require('os'), - crypto = require('crypto'), - exists = fs.exists || path.exists, - existsSync = fs.existsSync || path.existsSync, - tmpDir = require('os-tmpdir'), - _c = require('constants'); - - -/** - * The working inner variables. - */ -var - // store the actual TMP directory - _TMP = tmpDir(), - - // the random characters to choose from - RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', - - TEMPLATE_PATTERN = /XXXXXX/, - - DEFAULT_TRIES = 3, - - CREATE_FLAGS = _c.O_CREAT | _c.O_EXCL | _c.O_RDWR, - - DIR_MODE = 448 /* 0700 */, - FILE_MODE = 384 /* 0600 */, - - // this will hold the objects need to be removed on exit - _removeObjects = [], - - _gracefulCleanup = false, - _uncaughtException = false; - -/** - * Random name generator based on crypto. - * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript - * - * @param {Number} howMany - * @return {String} - * @api private - */ -function _randomChars(howMany) { - var - value = [], - rnd = null; - - // make sure that we do not fail because we ran out of entropy - try { - rnd = crypto.randomBytes(howMany); - } catch (e) { - rnd = crypto.pseudoRandomBytes(howMany); - } - - for (var i = 0; i < howMany; i++) { - value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]); - } - - return value.join(''); -} - -/** - * Checks whether the `obj` parameter is defined or not. - * - * @param {Object} obj - * @return {Boolean} - * @api private - */ -function _isUndefined(obj) { - return typeof obj === 'undefined'; -} - -/** - * Parses the function arguments. - * - * This function helps to have optional arguments. - * - * @param {Object} options - * @param {Function} callback - * @api private - */ -function _parseArguments(options, callback) { - if (typeof options == 'function') { - var - tmp = options; - options = callback || {}; - callback = tmp; - } else if (typeof options == 'undefined') { - options = {}; - } - - return [options, callback]; -} - -/** - * Generates a new temporary name. - * - * @param {Object} opts - * @returns {String} - * @api private - */ -function _generateTmpName(opts) { - if (opts.name) { - return path.join(opts.dir || _TMP, opts.name); - } - - // mkstemps like template - if (opts.template) { - return opts.template.replace(TEMPLATE_PATTERN, _randomChars(6)); - } - - // prefix and postfix - var name = [ - opts.prefix || 'tmp-', - process.pid, - _randomChars(12), - opts.postfix || '' - ].join(''); - - return path.join(opts.dir || _TMP, name); -} - -/** - * Gets a temporary file name. - * - * @param {Object} options - * @param {Function} callback - * @api private - */ -function _getTmpName(options, callback) { - var - args = _parseArguments(options, callback), - opts = args[0], - cb = args[1], - tries = opts.tries || DEFAULT_TRIES; - - if (isNaN(tries) || tries < 0) - return cb(new Error('Invalid tries')); - - if (opts.template && !opts.template.match(TEMPLATE_PATTERN)) - return cb(new Error('Invalid template provided')); - - (function _getUniqueName() { - var name = _generateTmpName(opts); - - // check whether the path exists then retry if needed - exists(name, function _pathExists(pathExists) { - if (pathExists) { - if (tries-- > 0) return _getUniqueName(); - - return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name)); - } - - cb(null, name); - }); - }()); -} - -/** - * Synchronous version of _getTmpName. - * - * @param {Object} options - * @returns {String} - * @api private - */ -function _getTmpNameSync(options) { - var - args = _parseArguments(options), - opts = args[0], - tries = opts.tries || DEFAULT_TRIES; - - if (isNaN(tries) || tries < 0) - throw new Error('Invalid tries'); - - if (opts.template && !opts.template.match(TEMPLATE_PATTERN)) - throw new Error('Invalid template provided'); - - do { - var name = _generateTmpName(opts); - if (!existsSync(name)) { - return name; - } - } while (tries-- > 0); - - throw new Error('Could not get a unique tmp filename, max tries reached'); -} - -/** - * Creates and opens a temporary file. - * - * @param {Object} options - * @param {Function} callback - * @api public - */ -function _createTmpFile(options, callback) { - var - args = _parseArguments(options, callback), - opts = args[0], - cb = args[1]; - - opts.postfix = (_isUndefined(opts.postfix)) ? '.tmp' : opts.postfix; - - // gets a temporary filename - _getTmpName(opts, function _tmpNameCreated(err, name) { - if (err) return cb(err); - - // create and open the file - fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) { - if (err) return cb(err); - - cb(null, name, fd, _prepareTmpFileRemoveCallback(name, fd, opts)); - }); - }); -} - -/** - * Synchronous version of _createTmpFile. - * - * @param {Object} options - * @returns {Object} object consists of name, fd and removeCallback - * @api private - */ -function _createTmpFileSync(options) { - var - args = _parseArguments(options), - opts = args[0]; - - opts.postfix = opts.postfix || '.tmp'; - - var name = _getTmpNameSync(opts); - var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE); - - return { - name : name, - fd : fd, - removeCallback : _prepareTmpFileRemoveCallback(name, fd, opts) - }; -} - -/** - * Removes files and folders in a directory recursively. - * - * @param {String} root - * @api private - */ -function _rmdirRecursiveSync(root) { - var dirs = [root]; - - do { - var - dir = dirs.pop(), - deferred = false, - files = fs.readdirSync(dir); - - for (var i = 0, length = files.length; i < length; i++) { - var - file = path.join(dir, files[i]), - stat = fs.lstatSync(file); // lstat so we don't recurse into symlinked directories - - if (stat.isDirectory()) { - if (!deferred) { - deferred = true; - dirs.push(dir); - } - dirs.push(file); - } else { - fs.unlinkSync(file); - } - } - - if (!deferred) { - fs.rmdirSync(dir); - } - } while (dirs.length !== 0); -} - -/** - * Creates a temporary directory. - * - * @param {Object} options - * @param {Function} callback - * @api public - */ -function _createTmpDir(options, callback) { - var - args = _parseArguments(options, callback), - opts = args[0], - cb = args[1]; - - // gets a temporary filename - _getTmpName(opts, function _tmpNameCreated(err, name) { - if (err) return cb(err); - - // create the directory - fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) { - if (err) return cb(err); - - cb(null, name, _prepareTmpDirRemoveCallback(name, opts)); - }); - }); -} - -/** - * Synchronous version of _createTmpDir. - * - * @param {Object} options - * @returns {Object} object consists of name and removeCallback - * @api private - */ -function _createTmpDirSync(options) { - var - args = _parseArguments(options), - opts = args[0]; - - var name = _getTmpNameSync(opts); - fs.mkdirSync(name, opts.mode || DIR_MODE); - - return { - name : name, - removeCallback : _prepareTmpDirRemoveCallback(name, opts) - }; -} - -/** - * Prepares the callback for removal of the temporary file. - * - * @param {String} name - * @param {int} fd - * @param {Object} opts - * @api private - * @returns {Function} the callback - */ -function _prepareTmpFileRemoveCallback(name, fd, opts) { - var removeCallback = _prepareRemoveCallback(function _removeCallback(fdPath) { - try { - fs.closeSync(fdPath[0]); - } - catch (e) { - // under some node/windows related circumstances, a temporary file - // may have not be created as expected or the file was already closed - // by the user, in which case we will simply ignore the error - if (e.errno != -_c.EBADF && e.errno != -c.ENOENT) { - // reraise any unanticipated error - throw e; - } - } - fs.unlinkSync(fdPath[1]); - }, [fd, name]); - - if (!opts.keep) { - _removeObjects.unshift(removeCallback); - } - - return removeCallback; -} - -/** - * Prepares the callback for removal of the temporary directory. - * - * @param {String} name - * @param {Object} opts - * @returns {Function} the callback - * @api private - */ -function _prepareTmpDirRemoveCallback(name, opts) { - var removeFunction = opts.unsafeCleanup ? _rmdirRecursiveSync : fs.rmdirSync.bind(fs); - var removeCallback = _prepareRemoveCallback(removeFunction, name); - - if (!opts.keep) { - _removeObjects.unshift(removeCallback); - } - - return removeCallback; -} - -/** - * Creates a guarded function wrapping the removeFunction call. - * - * @param {Function} removeFunction - * @param {Object} arg - * @returns {Function} - * @api private - */ -function _prepareRemoveCallback(removeFunction, arg) { - var called = false; - - return function _cleanupCallback() { - if (called) return; - - var index = _removeObjects.indexOf(removeFunction); - if (index >= 0) { - _removeObjects.splice(index, 1); - } - - called = true; - removeFunction(arg); - }; -} - -/** - * The garbage collector. - * - * @api private - */ -function _garbageCollector() { - if (_uncaughtException && !_gracefulCleanup) { - return; - } - - for (var i = 0, length = _removeObjects.length; i < length; i++) { - try { - _removeObjects[i].call(null); - } catch (e) { - // already removed? - } - } -} - -function _setGracefulCleanup() { - _gracefulCleanup = true; -} - -var version = process.versions.node.split('.').map(function (value) { - return parseInt(value, 10); -}); - -if (version[0] === 0 && (version[1] < 9 || version[1] === 9 && version[2] < 5)) { - process.addListener('uncaughtException', function _uncaughtExceptionThrown(err) { - _uncaughtException = true; - _garbageCollector(); - - throw err; - }); -} - -process.addListener('exit', function _exit(code) { - if (code) _uncaughtException = true; - _garbageCollector(); -}); - -// exporting all the needed methods -module.exports.tmpdir = _TMP; -module.exports.dir = _createTmpDir; -module.exports.dirSync = _createTmpDirSync; -module.exports.file = _createTmpFile; -module.exports.fileSync = _createTmpFileSync; -module.exports.tmpName = _getTmpName; -module.exports.tmpNameSync = _getTmpNameSync; -module.exports.setGracefulCleanup = _setGracefulCleanup; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/package.json deleted file mode 100644 index 8528feee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "tmp@0.0.28", - "/Users/sid/Desktop/code/RustyCode" - ] - ], - "_from": "tmp@0.0.28", - "_id": "tmp@0.0.28", - "_inCache": true, - "_installable": true, - "_location": "/tmp", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "npm@spam.raszi.hu", - "name": "raszi" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "tmp", - "raw": "tmp@0.0.28", - "rawSpec": "0.0.28", - "scope": null, - "spec": "0.0.28", - "type": "version" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "_shasum": "172735b7f614ea7af39664fa84cf0de4e515d120", - "_shrinkwrap": null, - "_spec": "tmp@0.0.28", - "_where": "/Users/sid/Desktop/code/RustyCode", - "author": { - "email": "github@spam.raszi.hu", - "name": "KARASZI István", - "url": "http://raszi.hu/" - }, - "bugs": { - "url": "http://github.com/raszi/node-tmp/issues" - }, - "dependencies": { - "os-tmpdir": "~1.0.1" - }, - "description": "Temporary file and directory creator", - "devDependencies": { - "vows": "~0.7.0" - }, - "directories": {}, - "dist": { - "shasum": "172735b7f614ea7af39664fa84cf0de4e515d120", - "tarball": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "9fe2a507d8b041c92c83ce1045b83e7283834431", - "homepage": "http://github.com/raszi/node-tmp", - "keywords": [ - "temporary", - "tmp", - "temp", - "tempdir", - "tempfile", - "tmpdir", - "tmpfile" - ], - "license": "MIT", - "main": "lib/tmp.js", - "maintainers": [ - { - "email": "npm@spam.raszi.hu", - "name": "raszi" - } - ], - "name": "tmp", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/raszi/node-tmp.git" - }, - "scripts": { - "test": "vows test/*-test.js" - }, - "version": "0.0.28" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/base.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/base.js deleted file mode 100644 index a77f3a56..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/base.js +++ /dev/null @@ -1,149 +0,0 @@ -var - assert = require('assert'), - path = require('path'), - exec = require('child_process').exec, - tmp = require('../lib/tmp'); - -// make sure that we do not test spam the global tmp -tmp.TMP_DIR = './tmp'; - - -function _spawnTestWithError(testFile, params, cb) { - _spawnTest(true, testFile, params, cb); -} - -function _spawnTestWithoutError(testFile, params, cb) { - _spawnTest(false, testFile, params, cb); -} - -function _spawnTest(passError, testFile, params, cb) { - var - node_path = process.argv[0], - command = [ node_path, path.join(__dirname, testFile) ].concat(params).join(' '); - - exec(command, function _execDone(err, stdout, stderr) { - if (passError) { - if (err) { - return cb(err); - } else if (stderr.length > 0) { - return cb(stderr.toString()); - } - } - - return cb(null, stdout.toString()); - }); -} - -function _testStat(stat, mode) { - assert.equal(stat.uid, process.getuid(), 'should have the same UID'); - assert.equal(stat.gid, process.getgid(), 'should have the same GUID'); - assert.equal(stat.mode, mode); -} - -function _testPrefix(prefix) { - return function _testPrefixGenerated(err, name) { - assert.equal(path.basename(name).slice(0, prefix.length), prefix, 'should have the provided prefix'); - }; -} - -function _testPrefixSync(prefix) { - return function _testPrefixGeneratedSync(result) { - if (result instanceof Error) { - throw result; - } - _testPrefix(prefix)(null, result.name, result.fd); - }; -} - -function _testPostfix(postfix) { - return function _testPostfixGenerated(err, name) { - assert.equal(name.slice(name.length - postfix.length, name.length), postfix, 'should have the provided postfix'); - }; -} - -function _testPostfixSync(postfix) { - return function _testPostfixGeneratedSync(result) { - if (result instanceof Error) { - throw result; - } - _testPostfix(postfix)(null, result.name, result.fd); - }; -} - -function _testKeep(type, keep, cb) { - _spawnTestWithError('keep.js', [ type, keep ], cb); -} - -function _testKeepSync(type, keep, cb) { - _spawnTestWithError('keep-sync.js', [ type, keep ], cb); -} - -function _testGraceful(type, graceful, cb) { - _spawnTestWithoutError('graceful.js', [ type, graceful ], cb); -} - -function _testGracefulSync(type, graceful, cb) { - _spawnTestWithoutError('graceful-sync.js', [ type, graceful ], cb); -} - -function _assertName(err, name) { - assert.isString(name); - assert.isNotZero(name.length, 'an empty string is not a valid name'); -} - -function _assertNameSync(result) { - if (result instanceof Error) { - throw result; - } - var name = typeof(result) == 'string' ? result : result.name; - _assertName(null, name); -} - -function _testName(expected){ - return function _testNameGenerated(err, name) { - assert.equal(expected, name, 'should have the provided name'); - }; -} - -function _testNameSync(expected){ - return function _testNameGeneratedSync(result) { - if (result instanceof Error) { - throw result; - } - _testName(expected)(null, result.name, result.fd); - }; -} - -function _testUnsafeCleanup(unsafe, cb) { - _spawnTestWithoutError('unsafe.js', [ 'dir', unsafe ], cb); -} - -function _testIssue62(cb) { - _spawnTestWithoutError('issue62.js', [], cb); -} - -function _testUnsafeCleanupSync(unsafe, cb) { - _spawnTestWithoutError('unsafe-sync.js', [ 'dir', unsafe ], cb); -} - -function _testIssue62Sync(cb) { - _spawnTestWithoutError('issue62-sync.js', [], cb); -} - -module.exports.testStat = _testStat; -module.exports.testPrefix = _testPrefix; -module.exports.testPrefixSync = _testPrefixSync; -module.exports.testPostfix = _testPostfix; -module.exports.testPostfixSync = _testPostfixSync; -module.exports.testKeep = _testKeep; -module.exports.testKeepSync = _testKeepSync; -module.exports.testGraceful = _testGraceful; -module.exports.testGracefulSync = _testGracefulSync; -module.exports.assertName = _assertName; -module.exports.assertNameSync = _assertNameSync; -module.exports.testName = _testName; -module.exports.testNameSync = _testNameSync; -module.exports.testUnsafeCleanup = _testUnsafeCleanup; -module.exports.testIssue62 = _testIssue62; -module.exports.testUnsafeCleanupSync = _testUnsafeCleanupSync; -module.exports.testIssue62Sync = _testIssue62Sync; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-sync-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-sync-test.js deleted file mode 100644 index 091a03e5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-sync-test.js +++ /dev/null @@ -1,230 +0,0 @@ -var - vows = require('vows'), - assert = require('assert'), - - path = require('path'), - fs = require('fs'), - existsSync = fs.existsSync || path.existsSync, - - tmp = require('../lib/tmp.js'), - Test = require('./base.js'); - - -function _testDir(mode) { - return function _testDirGenerated(result) { - assert.ok(existsSync(result.name), 'should exist'); - - var stat = fs.statSync(result.name); - assert.ok(stat.isDirectory(), 'should be a directory'); - - Test.testStat(stat, mode); - }; -} - -vows.describe('Synchronous directory creation').addBatch({ - 'when using without parameters': { - topic: function () { - return tmp.dirSync(); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040700), - 'should have the default prefix': Test.testPrefixSync('tmp-') - }, - - 'when using with prefix': { - topic: function () { - return tmp.dirSync({ prefix: 'something' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040700), - 'should have the provided prefix': Test.testPrefixSync('something') - }, - - 'when using with postfix': { - topic: function () { - return tmp.dirSync({ postfix: '.txt' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040700), - 'should have the provided postfix': Test.testPostfixSync('.txt') - }, - - 'when using template': { - topic: function () { - return tmp.dirSync({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040700), - 'should have the provided prefix': Test.testPrefixSync('clike-'), - 'should have the provided postfix': Test.testPostfixSync('-postfix') - }, - - 'when using name': { - topic: function () { - return tmp.dirSync({ name: 'using-name' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should have the provided name': Test.testNameSync(path.join(tmp.tmpdir, 'using-name')), - 'should be a directory': function (result) { - _testDir(040700)(result); - result.removeCallback(); - assert.ok(!existsSync(result.name), 'Directory should be removed'); - } - }, - - 'when using multiple options': { - topic: function () { - return tmp.dirSync({ prefix: 'foo', postfix: 'bar', mode: 0750 }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040750), - 'should have the provided prefix': Test.testPrefixSync('foo'), - 'should have the provided postfix': Test.testPostfixSync('bar') - }, - - 'when using multiple options and mode': { - topic: function () { - return tmp.dirSync({ prefix: 'complicated', postfix: 'options', mode: 0755 }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a directory': _testDir(040755), - 'should have the provided prefix': Test.testPrefixSync('complicated'), - 'should have the provided postfix': Test.testPostfixSync('options') - }, - - 'no tries': { - topic: function () { - try { - return tmp.dirSync({ tries: -1 }); - } - catch (e) { - return e; - } - }, - - 'should return with an error': function (topic) { - assert.instanceOf(topic, Error); - } - }, - - 'keep testing': { - topic: function () { - Test.testKeepSync('dir', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a dir': function (err, name) { - _testDir(040700)({ name: name }); - fs.rmdirSync(name); - } - }, - - 'unlink testing': { - topic: function () { - Test.testKeepSync('dir', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'non graceful testing': { - topic: function () { - Test.testGracefulSync('dir', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a dir': function (err, name) { - _testDir(040700)({ name: name }); - fs.rmdirSync(name); - } - }, - - 'graceful testing': { - topic: function () { - Test.testGracefulSync('dir', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'unsafeCleanup === true': { - topic: function () { - Test.testUnsafeCleanupSync('1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - }, - 'should remove symlinked dir': function(err, name) { - assert.ok( - !existsSync(name + '/symlinkme-target'), - 'should remove target' - ); - }, - 'should not remove contents of symlink dir': function(err, name) { - assert.ok( - existsSync(__dirname + '/symlinkme/file.js'), - 'should not remove symlinked directory\'s content' - ); - } - }, - - 'unsafeCleanup === true with issue62 structure': { - topic: function () { - Test.testIssue62Sync(this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'unsafeCleanup === false': { - topic: function () { - Test.testUnsafeCleanupSync('0', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': function (err, name) { - _testDir(040700)({name:name}); - // make sure that everything gets cleaned up - fs.unlinkSync(path.join(name, 'should-be-removed.file')); - fs.unlinkSync(path.join(name, 'symlinkme-target')); - fs.rmdirSync(name); - } - }, - - 'remove callback': { - topic: function () { - return tmp.dirSync(); - }, - - 'should return with a name': Test.assertNameSync, - 'removeCallback should remove directory': function (result) { - result.removeCallback(); - assert.ok(!existsSync(result.name), 'Directory should be removed'); - } - } -}).exportTo(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-test.js deleted file mode 100644 index 9f2c282b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/dir-test.js +++ /dev/null @@ -1,225 +0,0 @@ -var - vows = require('vows'), - assert = require('assert'), - - path = require('path'), - fs = require('fs'), - existsSync = fs.existsSync || path.existsSync, - - tmp = require('../lib/tmp.js'), - Test = require('./base.js'); - - -function _testDir(mode) { - return function _testDirGenerated(err, name) { - assert.ok(existsSync(name), 'should exist'); - - var stat = fs.statSync(name); - assert.ok(stat.isDirectory(), 'should be a directory'); - - Test.testStat(stat, mode); - }; -} - -vows.describe('Directory creation').addBatch({ - 'when using without parameters': { - topic: function () { - tmp.dir(this.callback); - }, - - 'should be a directory': _testDir(040700), - 'should have the default prefix': Test.testPrefix('tmp-') - }, - - 'when using with prefix': { - topic: function () { - tmp.dir({ prefix: 'something' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040700), - 'should have the provided prefix': Test.testPrefix('something') - }, - - 'when using with postfix': { - topic: function () { - tmp.dir({ postfix: '.txt' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040700), - 'should have the provided postfix': Test.testPostfix('.txt') - }, - - 'when using template': { - topic: function () { - tmp.dir({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }, this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040700), - 'should have the provided prefix': Test.testPrefix('clike-'), - 'should have the provided postfix': Test.testPostfix('-postfix') - }, - - 'when using name': { - topic: function () { - tmp.dir({ name: 'using-name' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040700), - 'should have the provided name': Test.testName(path.join(tmp.tmpdir, 'using-name')) - }, - - 'when using multiple options': { - topic: function () { - tmp.dir({ prefix: 'foo', postfix: 'bar', mode: 0750 }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040750), - 'should have the provided prefix': Test.testPrefix('foo'), - 'should have the provided postfix': Test.testPostfix('bar') - }, - - 'when using multiple options and mode': { - topic: function () { - tmp.dir({ prefix: 'complicated', postfix: 'options', mode: 0755 }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': _testDir(040755), - 'should have the provided prefix': Test.testPrefix('complicated'), - 'should have the provided postfix': Test.testPostfix('options') - }, - - 'no tries': { - topic: function () { - tmp.dir({ tries: -1 }, this.callback); - }, - - 'should return with an error': assert.isObject - }, - - 'keep testing': { - topic: function () { - Test.testKeep('dir', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a dir': function (err, name) { - _testDir(040700)(err, name); - fs.rmdirSync(name); - } - }, - - 'unlink testing': { - topic: function () { - Test.testKeep('dir', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'non graceful testing': { - topic: function () { - Test.testGraceful('dir', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a dir': function (err, name) { - _testDir(040700)(err, name); - fs.rmdirSync(name); - } - }, - - 'graceful testing': { - topic: function () { - Test.testGraceful('dir', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'unsafeCleanup === true': { - topic: function () { - Test.testUnsafeCleanup('1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - }, - 'should remove symlinked dir': function(err, name) { - assert.ok( - !existsSync(name + '/symlinkme-target'), - 'should remove target' - ); - }, - 'should not remove contents of symlink dir': function(err, name) { - assert.ok( - existsSync(__dirname + '/symlinkme/file.js'), - 'should not remove symlinked directory\'s content' - ); - } - }, - - 'unsafeCleanup === true with issue62 structure': { - topic: function () { - Test.testIssue62(this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'Directory should be removed'); - } - }, - - 'unsafeCleanup === false': { - topic: function () { - Test.testUnsafeCleanup('0', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a directory': function (err, name) { - _testDir(040700)(err, name); - // make sure that everything gets cleaned up - fs.unlinkSync(path.join(name, 'should-be-removed.file')); - fs.unlinkSync(path.join(name, 'symlinkme-target')); - fs.rmdirSync(name); - } - }, - - 'remove callback': { - topic: function () { - tmp.dir(this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'removeCallback should remove directory': function (_err, name, removeCallback) { - removeCallback(); - assert.ok(!existsSync(name), 'Directory should be removed'); - } - } -}).exportTo(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-sync-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-sync-test.js deleted file mode 100644 index 44c1d22f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-sync-test.js +++ /dev/null @@ -1,190 +0,0 @@ -var - vows = require('vows'), - assert = require('assert'), - - path = require('path'), - fs = require('fs'), - existsSync = fs.existsSync || path.existsSync, - - tmp = require('../lib/tmp.js'), - Test = require('./base.js'); - - -function _testFile(mode, fdTest) { - return function _testFileGenerated(result) { - assert.ok(existsSync(result.name), 'should exist'); - - var stat = fs.statSync(result.name); - assert.equal(stat.size, 0, 'should have zero size'); - assert.ok(stat.isFile(), 'should be a file'); - - Test.testStat(stat, mode); - - // check with fstat as well (fd checking) - if (fdTest) { - var fstat = fs.fstatSync(result.fd); - assert.deepEqual(fstat, stat, 'fstat results should be the same'); - - var data = new Buffer('something'); - assert.equal(fs.writeSync(result.fd, data, 0, data.length, 0), data.length, 'should be writable'); - assert.ok(!fs.closeSync(result.fd), 'should not return with error'); - } - }; -} - -vows.describe('Synchronous file creation').addBatch({ - 'when using without parameters': { - topic: function () { - return tmp.fileSync(); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100600, true), - 'should have the default prefix': Test.testPrefixSync('tmp-'), - 'should have the default postfix': Test.testPostfixSync('.tmp') - }, - - 'when using with prefix': { - topic: function () { - return tmp.fileSync({ prefix: 'something' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100600, true), - 'should have the provided prefix': Test.testPrefixSync('something') - }, - - 'when using with postfix': { - topic: function () { - return tmp.fileSync({ postfix: '.txt' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100600, true), - 'should have the provided postfix': Test.testPostfixSync('.txt') - }, - - 'when using template': { - topic: function () { - return tmp.fileSync({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100600, true), - 'should have the provided prefix': Test.testPrefixSync('clike-'), - 'should have the provided postfix': Test.testPostfixSync('-postfix') - }, - - 'when using name': { - topic: function () { - return tmp.fileSync({ name: 'using-name.tmp' }); - }, - - 'should return with a name': Test.assertNameSync, - 'should have the provided name': Test.testNameSync(path.join(tmp.tmpdir, 'using-name.tmp')), - 'should be a file': function (result) { - _testFile(0100600, true); - fs.unlinkSync(result.name); - } - }, - - 'when using multiple options': { - topic: function () { - return tmp.fileSync({ prefix: 'foo', postfix: 'bar', mode: 0640 }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100640, true), - 'should have the provided prefix': Test.testPrefixSync('foo'), - 'should have the provided postfix': Test.testPostfixSync('bar') - }, - - 'when using multiple options and mode': { - topic: function () { - return tmp.fileSync({ prefix: 'complicated', postfix: 'options', mode: 0644 }); - }, - - 'should return with a name': Test.assertNameSync, - 'should be a file': _testFile(0100644, true), - 'should have the provided prefix': Test.testPrefixSync('complicated'), - 'should have the provided postfix': Test.testPostfixSync('options') - }, - - 'no tries': { - topic: function () { - try { - return tmp.fileSync({ tries: -1 }); - } - catch (e) { - return e; - } - }, - - 'should return with an error': function (topic) { - assert.instanceOf(topic, Error); - } - }, - - 'keep testing': { - topic: function () { - Test.testKeepSync('file', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': function (err, name) { - _testFile(0100600, false)({name:name}); - fs.unlinkSync(name); - } - }, - - 'unlink testing': { - topic: function () { - Test.testKeepSync('file', '0', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'File should be removed'); - } - }, - - 'non graceful testing': { - topic: function () { - Test.testGracefulSync('file', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': function (err, name) { - _testFile(0100600, false)({name:name}); - fs.unlinkSync(name); - } - }, - - 'graceful testing': { - topic: function () { - Test.testGracefulSync('file', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'File should be removed'); - } - }, - - 'remove callback': { - topic: function () { - return tmp.fileSync(); - }, - - 'should return with a name': Test.assertNameSync, - 'removeCallback should remove file': function (result) { - result.removeCallback(); - assert.ok(!existsSync(result.name), 'File should be removed'); - } - } - -}).exportTo(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-test.js deleted file mode 100644 index b710859c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/file-test.js +++ /dev/null @@ -1,191 +0,0 @@ -var - vows = require('vows'), - assert = require('assert'), - - path = require('path'), - fs = require('fs'), - existsSync = fs.existsSync || path.existsSync, - - tmp = require('../lib/tmp.js'), - Test = require('./base.js'); - - -function _testFile(mode, fdTest) { - return function _testFileGenerated(err, name, fd) { - assert.ok(existsSync(name), 'should exist'); - - var stat = fs.statSync(name); - assert.equal(stat.size, 0, 'should have zero size'); - assert.ok(stat.isFile(), 'should be a file'); - - Test.testStat(stat, mode); - - // check with fstat as well (fd checking) - if (fdTest) { - var fstat = fs.fstatSync(fd); - assert.deepEqual(fstat, stat, 'fstat results should be the same'); - - var data = new Buffer('something'); - assert.equal(fs.writeSync(fd, data, 0, data.length, 0), data.length, 'should be writable'); - assert.ok(!fs.closeSync(fd), 'should not return with error'); - } - }; -} - -vows.describe('File creation').addBatch({ - 'when using without parameters': { - topic: function () { - tmp.file(this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100600, true), - 'should have the default prefix': Test.testPrefix('tmp-'), - 'should have the default postfix': Test.testPostfix('.tmp') - }, - - 'when using with prefix': { - topic: function () { - tmp.file({ prefix: 'something' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100600, true), - 'should have the provided prefix': Test.testPrefix('something') - }, - - 'when using with postfix': { - topic: function () { - tmp.file({ postfix: '.txt' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100600, true), - 'should have the provided postfix': Test.testPostfix('.txt') - }, - - 'when using template': { - topic: function () { - tmp.file({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100600, true), - 'should have the provided prefix': Test.testPrefix('clike-'), - 'should have the provided postfix': Test.testPostfix('-postfix') - }, - - 'when using name': { - topic: function () { - tmp.file({ name: 'using-name.tmp' }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should have the provided name': Test.testName(path.join(tmp.tmpdir, 'using-name.tmp')), - 'should be a file': function (err, name) { - _testFile(0100600, true); - fs.unlinkSync(name); - } - }, - - 'when using multiple options': { - topic: function () { - tmp.file({ prefix: 'foo', postfix: 'bar', mode: 0640 }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100640, true), - 'should have the provided prefix': Test.testPrefix('foo'), - 'should have the provided postfix': Test.testPostfix('bar') - }, - - 'when using multiple options and mode': { - topic: function () { - tmp.file({ prefix: 'complicated', postfix: 'options', mode: 0644 }, this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': _testFile(0100644, true), - 'should have the provided prefix': Test.testPrefix('complicated'), - 'should have the provided postfix': Test.testPostfix('options') - }, - - 'no tries': { - topic: function () { - tmp.file({ tries: -1 }, this.callback); - }, - - 'should not be created': assert.isObject - }, - - 'keep testing': { - topic: function () { - Test.testKeep('file', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': function (err, name) { - _testFile(0100600, false)(err, name, null); - fs.unlinkSync(name); - } - }, - - 'unlink testing': { - topic: function () { - Test.testKeep('file', '0', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'File should be removed'); - } - }, - - 'non graceful testing': { - topic: function () { - Test.testGraceful('file', '0', this.callback); - }, - - 'should not return with error': assert.isNull, - 'should return with a name': Test.assertName, - 'should be a file': function (err, name) { - _testFile(0100600, false)(err, name, null); - fs.unlinkSync(name); - } - }, - - 'graceful testing': { - topic: function () { - Test.testGraceful('file', '1', this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'should not exist': function (err, name) { - assert.ok(!existsSync(name), 'File should be removed'); - } - }, - - 'remove callback': { - topic: function () { - tmp.file(this.callback); - }, - - 'should not return with an error': assert.isNull, - 'should return with a name': Test.assertName, - 'removeCallback should remove file': function (_err, name, _fd, removeCallback) { - removeCallback(); - assert.ok(!existsSync(name), 'File should be removed'); - } - } - -}).exportTo(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful-sync.js deleted file mode 100644 index 37766ffa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful-sync.js +++ /dev/null @@ -1,20 +0,0 @@ -var - tmp = require('../lib/tmp'), - spawn = require('./spawn-sync'); - -var graceful = spawn.arg; - -if (graceful) { - tmp.setGracefulCleanup(); -} - -try { - var result = spawn.tmpFunction(); - spawn.out(result.name, function () { - throw new Error('Thrown on purpose'); - }); -} -catch (e) { - spawn.err(e, spawn.exit); -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful.js deleted file mode 100644 index dbe554e1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/graceful.js +++ /dev/null @@ -1,15 +0,0 @@ -var - tmp = require('../lib/tmp'), - spawn = require('./spawn'); - -var graceful = spawn.arg; - -if (graceful) { - tmp.setGracefulCleanup(); -} - -spawn.tmpFunction(function (err, name) { - spawn.out(name, function () { - throw new Error('Thrown on purpose'); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62-sync.js deleted file mode 100644 index 94840c66..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62-sync.js +++ /dev/null @@ -1,27 +0,0 @@ - -var - fs = require('fs'), - join = require('path').join, - spawn = require('./spawn-sync'); - -try { - var result = spawn.tmpFunction({ unsafeCleanup: true }); - try { - // creates structure from issue 62 - // https://github.com/raszi/node-tmp/issues/62 - - fs.mkdirSync(join(result.name, 'issue62')); - - ['foo', 'bar'].forEach(function(subdir) { - fs.mkdirSync(join(result.name, 'issue62', subdir)); - fs.writeFileSync(join(result.name, 'issue62', subdir, 'baz.txt'), ''); - }); - - spawn.out(result.name, spawn.exit); - } catch (e) { - spawn.err(e.toString(), spawn.exit); - } -} -catch (e) { - spawn.err(e, spawn.exit); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62.js deleted file mode 100644 index 004e1907..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/issue62.js +++ /dev/null @@ -1,27 +0,0 @@ -var - fs = require('fs'), - join = require('path').join, - spawn = require('./spawn'); - -spawn.tmpFunction({ unsafeCleanup: true }, function (err, name) { - if (err) { - spawn.err(err, spawn.exit); - return; - } - - try { - // creates structure from issue 62 - // https://github.com/raszi/node-tmp/issues/62 - - fs.mkdirSync(join(name, 'issue62')); - - ['foo', 'bar'].forEach(function(subdir) { - fs.mkdirSync(join(name, 'issue62', subdir)); - fs.writeFileSync(join(name, 'issue62', subdir, 'baz.txt'), ''); - }); - - spawn.out(name, spawn.exit); - } catch (e) { - spawn.err(e.toString(), spawn.exit); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep-sync.js deleted file mode 100644 index 6cd8b186..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep-sync.js +++ /dev/null @@ -1,12 +0,0 @@ -var spawn = require('./spawn-sync'); - -var keep = spawn.arg; - -try { - var result = spawn.tmpFunction({ keep: keep }); - spawn.out(result.name, spawn.exit); -} -catch (e) { - spawn.err(err, spawn.exit); -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep.js deleted file mode 100644 index 9538605d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/keep.js +++ /dev/null @@ -1,11 +0,0 @@ -var spawn = require('./spawn'); - -var keep = spawn.arg; - -spawn.tmpFunction({ keep: keep }, function (err, name) { - if (err) { - spawn.err(err, spawn.exit); - } else { - spawn.out(name, spawn.exit); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/name-test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/name-test.js deleted file mode 100644 index a242c21b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/name-test.js +++ /dev/null @@ -1,82 +0,0 @@ -var - vows = require('vows'), - assert = require('assert'), - - path = require('path'), - - tmp = require('../lib/tmp.js'), - Test = require('./base.js'); - -vows.describe('Name creation').addBatch({ - 'when using without parameters': { - topic: function () { - tmp.tmpName(this.callback); - }, - - 'should not return with error': assert.isNull, - 'should have the default prefix': Test.testPrefix('tmp-') - }, - - 'when using with prefix': { - topic: function () { - tmp.tmpName({ prefix: 'something' }, this.callback); - }, - - 'should not return with error': assert.isNull, - 'should have the provided prefix': Test.testPrefix('something') - }, - - 'when using with postfix': { - topic: function () { - tmp.tmpName({ postfix: '.txt' }, this.callback); - }, - - 'should not return with error': assert.isNull, - 'should have the provided postfix': Test.testPostfix('.txt') - - }, - - 'when using template': { - topic: function () { - tmp.tmpName({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }, this.callback); - }, - - 'should not return with error': assert.isNull, - 'should have the provided prefix': Test.testPrefix('clike-'), - 'should have the provided postfix': Test.testPostfix('-postfix'), - 'should have template filled': function (err, name) { - assert.isTrue(/[a-zA-Z0-9]{6}/.test(name)); - } - }, - - 'when using multiple options': { - topic: function () { - tmp.tmpName({ prefix: 'foo', postfix: 'bar', tries: 5 }, this.callback); - }, - - 'should not return with error': assert.isNull, - 'should have the provided prefix': Test.testPrefix('foo'), - 'should have the provided postfix': Test.testPostfix('bar') - }, - - 'no tries': { - topic: function () { - tmp.tmpName({ tries: -1 }, this.callback); - }, - - 'should fail': function (err, name) { - assert.isObject(err); - } - }, - - 'tries not numeric': { - topic: function () { - tmp.tmpName({ tries: 'hello'}, this.callback); - }, - - 'should fail': function (err, name) { - assert.isObject(err); - } - } - -}).exportTo(module); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn-sync.js deleted file mode 100644 index bde2db46..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn-sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var - fs = require('fs'), - tmp = require('../lib/tmp'); - -function _writeSync(stream, str, cb) { - var flushed = stream.write(str); - if (flushed) { - return cb(null); - } - - stream.once('drain', function _flushed() { - cb(null); - }); -} - -module.exports.out = function (str, cb) { - _writeSync(process.stdout, str, cb); -}; - -module.exports.err = function (str, cb) { - _writeSync(process.stderr, str, cb); -}; - -module.exports.exit = function () { - process.exit(0); -}; - -var type = process.argv[2]; -module.exports.tmpFunction = (type == 'file') ? tmp.fileSync : tmp.dirSync; - -var arg = (process.argv[3] && parseInt(process.argv[3], 10) === 1) ? true : false; -module.exports.arg = arg; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn.js deleted file mode 100644 index 6468eb39..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/spawn.js +++ /dev/null @@ -1,32 +0,0 @@ -var - fs = require('fs'), - tmp = require('../lib/tmp'); - -function _writeSync(stream, str, cb) { - var flushed = stream.write(str); - if (flushed) { - return cb(null); - } - - stream.once('drain', function _flushed() { - cb(null); - }); -} - -module.exports.out = function (str, cb) { - _writeSync(process.stdout, str, cb); -}; - -module.exports.err = function (str, cb) { - _writeSync(process.stderr, str, cb); -}; - -module.exports.exit = function () { - process.exit(0); -}; - -var type = process.argv[2]; -module.exports.tmpFunction = (type == 'file') ? tmp.file : tmp.dir; - -var arg = (process.argv[3] && parseInt(process.argv[3], 10) === 1) ? true : false; -module.exports.arg = arg; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/symlinkme/file.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/symlinkme/file.js deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe-sync.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe-sync.js deleted file mode 100644 index 97717d05..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe-sync.js +++ /dev/null @@ -1,30 +0,0 @@ -var - fs = require('fs'), - join = require('path').join, - spawn = require('./spawn-sync'); - -var unsafe = spawn.arg; - -try { - var result = spawn.tmpFunction({ unsafeCleanup: unsafe }); - try { - // file that should be removed - var fd = fs.openSync(join(result.name, 'should-be-removed.file'), 'w'); - fs.closeSync(fd); - - // in tree source - var symlinkSource = join(__dirname, 'symlinkme'); - // testing target - var symlinkTarget = join(result.name, 'symlinkme-target'); - - // symlink that should be removed but the contents should be preserved. - fs.symlinkSync(symlinkSource, symlinkTarget, 'dir'); - - spawn.out(result.name, spawn.exit); - } catch (e) { - spawn.err(e.toString(), spawn.exit); - } -} -catch (e) { - spawn.err(err, spawn.exit); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe.js deleted file mode 100644 index 73e4fb34..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tmp/test/unsafe.js +++ /dev/null @@ -1,30 +0,0 @@ -var - fs = require('fs'), - join = require('path').join, - spawn = require('./spawn'); - -var unsafe = spawn.arg; -spawn.tmpFunction({ unsafeCleanup: unsafe }, function (err, name) { - if (err) { - spawn.err(err, spawn.exit); - return; - } - - try { - // file that should be removed - var fd = fs.openSync(join(name, 'should-be-removed.file'), 'w'); - fs.closeSync(fd); - - // in tree source - var symlinkSource = join(__dirname, 'symlinkme'); - // testing target - var symlinkTarget = join(name, 'symlinkme-target'); - - // symlink that should be removed but the contents should be preserved. - fs.symlinkSync(symlinkSource, symlinkTarget, 'dir'); - - spawn.out(name, spawn.exit); - } catch (e) { - spawn.err(e.toString(), spawn.exit); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/LICENSE deleted file mode 100644 index 1bc286fb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2015, Salesforce.com, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -=== - -The following exceptions apply: - -=== - -`public_suffix_list.dat` was obtained from - via -. The license for this file is MPL/2.0. The header of -that file reads as follows: - - // This Source Code Form is subject to the terms of the Mozilla Public - // License, v. 2.0. If a copy of the MPL was not distributed with this - // file, You can obtain one at http://mozilla.org/MPL/2.0/. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/README.md deleted file mode 100644 index 9899dbf6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/README.md +++ /dev/null @@ -1,492 +0,0 @@ -[RFC6265](https://tools.ietf.org/html/rfc6265) Cookies and CookieJar for Node.js - -[![Build Status](https://travis-ci.org/SalesforceEng/tough-cookie.png?branch=master)](https://travis-ci.org/SalesforceEng/tough-cookie) - -[![NPM Stats](https://nodei.co/npm/tough-cookie.png?downloads=true&stars=true)](https://npmjs.org/package/tough-cookie) -![NPM Downloads](https://nodei.co/npm-dl/tough-cookie.png?months=9) - -# Synopsis - -``` javascript -var tough = require('tough-cookie'); -var Cookie = tough.Cookie; -var cookie = Cookie.parse(header); -cookie.value = 'somethingdifferent'; -header = cookie.toString(); - -var cookiejar = new tough.CookieJar(); -cookiejar.setCookie(cookie, 'http://currentdomain.example.com/path', cb); -// ... -cookiejar.getCookies('http://example.com/otherpath',function(err,cookies) { - res.headers['cookie'] = cookies.join('; '); -}); -``` - -# Installation - -It's _so_ easy! - -`npm install tough-cookie` - -Why the name? NPM modules `cookie`, `cookies` and `cookiejar` were already taken. - -# API - -## tough - -Functions on the module you get from `require('tough-cookie')`. All can be used as pure functions and don't need to be "bound". - -**Note**: prior to 1.0.x, several of these functions took a `strict` parameter. This has since been removed from the API as it was no longer necessary. - -### `parseDate(string)` - -Parse a cookie date string into a `Date`. Parses according to RFC6265 Section 5.1.1, not `Date.parse()`. - -### `formatDate(date)` - -Format a Date into a RFC1123 string (the RFC6265-recommended format). - -### `canonicalDomain(str)` - -Transforms a domain-name into a canonical domain-name. The canonical domain-name is a trimmed, lowercased, stripped-of-leading-dot and optionally punycode-encoded domain-name (Section 5.1.2 of RFC6265). For the most part, this function is idempotent (can be run again on its output without ill effects). - -### `domainMatch(str,domStr[,canonicalize=true])` - -Answers "does this real domain match the domain in a cookie?". The `str` is the "current" domain-name and the `domStr` is the "cookie" domain-name. Matches according to RFC6265 Section 5.1.3, but it helps to think of it as a "suffix match". - -The `canonicalize` parameter will run the other two paramters through `canonicalDomain` or not. - -### `defaultPath(path)` - -Given a current request/response path, gives the Path apropriate for storing in a cookie. This is basically the "directory" of a "file" in the path, but is specified by Section 5.1.4 of the RFC. - -The `path` parameter MUST be _only_ the pathname part of a URI (i.e. excludes the hostname, query, fragment, etc.). This is the `.pathname` property of node's `uri.parse()` output. - -### `pathMatch(reqPath,cookiePath)` - -Answers "does the request-path path-match a given cookie-path?" as per RFC6265 Section 5.1.4. Returns a boolean. - -This is essentially a prefix-match where `cookiePath` is a prefix of `reqPath`. - -### `parse(cookieString[, options])` - -alias for `Cookie.parse(cookieString[, options])` - -### `fromJSON(string)` - -alias for `Cookie.fromJSON(string)` - -### `getPublicSuffix(hostname)` - -Returns the public suffix of this hostname. The public suffix is the shortest domain-name upon which a cookie can be set. Returns `null` if the hostname cannot have cookies set for it. - -For example: `www.example.com` and `www.subdomain.example.com` both have public suffix `example.com`. - -For further information, see http://publicsuffix.org/. This module derives its list from that site. - -### `cookieCompare(a,b)` - -For use with `.sort()`, sorts a list of cookies into the recommended order given in the RFC (Section 5.4 step 2). The sort algorithm is, in order of precedence: - -* Longest `.path` -* oldest `.creation` (which has a 1ms precision, same as `Date`) -* lowest `.creationIndex` (to get beyond the 1ms precision) - -``` javascript -var cookies = [ /* unsorted array of Cookie objects */ ]; -cookies = cookies.sort(cookieCompare); -``` - -**Note**: Since JavaScript's `Date` is limited to a 1ms precision, cookies within the same milisecond are entirely possible. This is especially true when using the `now` option to `.setCookie()`. The `.creationIndex` property is a per-process global counter, assigned during construction with `new Cookie()`. This preserves the spirit of the RFC sorting: older cookies go first. This works great for `MemoryCookieStore`, since `Set-Cookie` headers are parsed in order, but may not be so great for distributed systems. Sophisticated `Store`s may wish to set this to some other _logical clock_ such that if cookies A and B are created in the same millisecond, but cookie A is created before cookie B, then `A.creationIndex < B.creationIndex`. If you want to alter the global counter, which you probably _shouldn't_ do, it's stored in `Cookie.cookiesCreated`. - -### `permuteDomain(domain)` - -Generates a list of all possible domains that `domainMatch()` the parameter. May be handy for implementing cookie stores. - -### `permutePath(path)` - -Generates a list of all possible paths that `pathMatch()` the parameter. May be handy for implementing cookie stores. - - -## Cookie - -Exported via `tough.Cookie`. - -### `Cookie.parse(cookieString[, options])` - -Parses a single Cookie or Set-Cookie HTTP header into a `Cookie` object. Returns `undefined` if the string can't be parsed. - -The options parameter is not required and currently has only one property: - - * _loose_ - boolean - if `true` enable parsing of key-less cookies like `=abc` and `=`, which are not RFC-compliant. - -If options is not an object, it is ignored, which means you can use `Array#map` with it. - -Here's how to process the Set-Cookie header(s) on a node HTTP/HTTPS response: - -``` javascript -if (res.headers['set-cookie'] instanceof Array) - cookies = res.headers['set-cookie'].map(Cookie.parse); -else - cookies = [Cookie.parse(res.headers['set-cookie'])]; -``` - -### Properties - -Cookie object properties: - - * _key_ - string - the name or key of the cookie (default "") - * _value_ - string - the value of the cookie (default "") - * _expires_ - `Date` - if set, the `Expires=` attribute of the cookie (defaults to the string `"Infinity"`). See `setExpires()` - * _maxAge_ - seconds - if set, the `Max-Age=` attribute _in seconds_ of the cookie. May also be set to strings `"Infinity"` and `"-Infinity"` for non-expiry and immediate-expiry, respectively. See `setMaxAge()` - * _domain_ - string - the `Domain=` attribute of the cookie - * _path_ - string - the `Path=` of the cookie - * _secure_ - boolean - the `Secure` cookie flag - * _httpOnly_ - boolean - the `HttpOnly` cookie flag - * _extensions_ - `Array` - any unrecognized cookie attributes as strings (even if equal-signs inside) - * _creation_ - `Date` - when this cookie was constructed - * _creationIndex_ - number - set at construction, used to provide greater sort precision (please see `cookieCompare(a,b)` for a full explanation) - -After a cookie has been passed through `CookieJar.setCookie()` it will have the following additional attributes: - - * _hostOnly_ - boolean - is this a host-only cookie (i.e. no Domain field was set, but was instead implied) - * _pathIsDefault_ - boolean - if true, there was no Path field on the cookie and `defaultPath()` was used to derive one. - * _creation_ - `Date` - **modified** from construction to when the cookie was added to the jar - * _lastAccessed_ - `Date` - last time the cookie got accessed. Will affect cookie cleaning once implemented. Using `cookiejar.getCookies(...)` will update this attribute. - -### `Cookie([{properties}])` - -Receives an options object that can contain any of the above Cookie properties, uses the default for unspecified properties. - -### `.toString()` - -encode to a Set-Cookie header value. The Expires cookie field is set using `formatDate()`, but is omitted entirely if `.expires` is `Infinity`. - -### `.cookieString()` - -encode to a Cookie header value (i.e. the `.key` and `.value` properties joined with '='). - -### `.setExpires(String)` - -sets the expiry based on a date-string passed through `parseDate()`. If parseDate returns `null` (i.e. can't parse this date string), `.expires` is set to `"Infinity"` (a string) is set. - -### `.setMaxAge(number)` - -sets the maxAge in seconds. Coerces `-Infinity` to `"-Infinity"` and `Infinity` to `"Infinity"` so it JSON serializes correctly. - -### `.expiryTime([now=Date.now()])` - -### `.expiryDate([now=Date.now()])` - -expiryTime() Computes the absolute unix-epoch milliseconds that this cookie expires. expiryDate() works similarly, except it returns a `Date` object. Note that in both cases the `now` parameter should be milliseconds. - -Max-Age takes precedence over Expires (as per the RFC). The `.creation` attribute -- or, by default, the `now` paramter -- is used to offset the `.maxAge` attribute. - -If Expires (`.expires`) is set, that's returned. - -Otherwise, `expiryTime()` returns `Infinity` and `expiryDate()` returns a `Date` object for "Tue, 19 Jan 2038 03:14:07 GMT" (latest date that can be expressed by a 32-bit `time_t`; the common limit for most user-agents). - -### `.TTL([now=Date.now()])` - -compute the TTL relative to `now` (milliseconds). The same precedence rules as for `expiryTime`/`expiryDate` apply. - -The "number" `Infinity` is returned for cookies without an explicit expiry and `0` is returned if the cookie is expired. Otherwise a time-to-live in milliseconds is returned. - -### `.canonicalizedDoman()` - -### `.cdomain()` - -return the canonicalized `.domain` field. This is lower-cased and punycode (RFC3490) encoded if the domain has any non-ASCII characters. - -### `.toJSON()` - -For convenience in using `JSON.serialize(cookie)`. Returns a plain-old `Object` that can be JSON-serialized. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are exported in ISO format (`.toISOString()`). - -**NOTE**: Custom `Cookie` properties will be discarded. In tough-cookie 1.x, since there was no `.toJSON` method explicitly defined, all enumerable properties were captured. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -### `Cookie.fromJSON(strOrObj)` - -Does the reverse of `cookie.toJSON()`. If passed a string, will `JSON.parse()` that first. - -Any `Date` properties (i.e., `.expires`, `.creation`, and `.lastAccessed`) are parsed via `Date.parse()`, not the tough-cookie `parseDate`, since it's JavaScript/JSON-y timestamps being handled at this layer. - -Returns `null` upon JSON parsing error. - -### `.clone()` - -Does a deep clone of this cookie, exactly implemented as `Cookie.fromJSON(cookie.toJSON())`. - -### `.validate()` - -Status: *IN PROGRESS*. Works for a few things, but is by no means comprehensive. - -validates cookie attributes for semantic correctness. Useful for "lint" checking any Set-Cookie headers you generate. For now, it returns a boolean, but eventually could return a reason string -- you can future-proof with this construct: - -``` javascript -if (cookie.validate() === true) { - // it's tasty -} else { - // yuck! -} -``` - - -## CookieJar - -Exported via `tough.CookieJar`. - -### `CookieJar([store],[options])` - -Simply use `new CookieJar()`. If you'd like to use a custom store, pass that to the constructor otherwise a `MemoryCookieStore` will be created and used. - -The `options` object can be omitted and can have the following properties: - - * _rejectPublicSuffixes_ - boolean - default `true` - reject cookies with domains like "com" and "co.uk" - * _looseMode_ - boolean - default `false` - accept malformed cookies like `bar` and `=bar`, which have an implied empty name. - This is not in the standard, but is used sometimes on the web and is accepted by (most) browsers. - -Since eventually this module would like to support database/remote/etc. CookieJars, continuation passing style is used for CookieJar methods. - -### `.setCookie(cookieOrString, currentUrl, [{options},] cb(err,cookie))` - -Attempt to set the cookie in the cookie jar. If the operation fails, an error will be given to the callback `cb`, otherwise the cookie is passed through. The cookie will have updated `.creation`, `.lastAccessed` and `.hostOnly` properties. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _ignoreError_ - boolean - default `false` - silently ignore things like parse errors and invalid domains. `Store` errors aren't ignored by this option. - -As per the RFC, the `.hostOnly` property is set if there was no "Domain=" parameter in the cookie string (or `.domain` was null on the Cookie object). The `.domain` property is set to the fully-qualified hostname of `currentUrl` in this case. Matching this cookie requires an exact hostname match (not a `domainMatch` as per usual). - -### `.setCookieSync(cookieOrString, currentUrl, [{options}])` - -Synchronous version of `setCookie`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookies(currentUrl, [{options},] cb(err,cookies))` - -Retrieve the list of cookies that can be sent in a Cookie header for the current url. - -If an error is encountered, that's passed as `err` to the callback, otherwise an `Array` of `Cookie` objects is passed. The array is sorted with `cookieCompare()` unless the `{sort:false}` option is given. - -The `options` object can be omitted and can have the following properties: - - * _http_ - boolean - default `true` - indicates if this is an HTTP or non-HTTP API. Affects HttpOnly cookies. - * _secure_ - boolean - autodetect from url - indicates if this is a "Secure" API. If the currentUrl starts with `https:` or `wss:` then this is defaulted to `true`, otherwise `false`. - * _now_ - Date - default `new Date()` - what to use for the creation/access time of cookies - * _expire_ - boolean - default `true` - perform expiry-time checking of cookies and asynchronously remove expired cookies from the store. Using `false` will return expired cookies and **not** remove them from the store (which is useful for replaying Set-Cookie headers, potentially). - * _allPaths_ - boolean - default `false` - if `true`, do not scope cookies by path. The default uses RFC-compliant path scoping. **Note**: may not be supported by the underlying store (the default `MemoryCookieStore` supports it). - -The `.lastAccessed` property of the returned cookies will have been updated. - -### `.getCookiesSync(currentUrl, [{options}])` - -Synchronous version of `getCookies`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getCookieString(...)` - -Accepts the same options as `.getCookies()` but passes a string suitable for a Cookie header rather than an array to the callback. Simply maps the `Cookie` array via `.cookieString()`. - -### `.getCookieStringSync(...)` - -Synchronous version of `getCookieString`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.getSetCookieStrings(...)` - -Returns an array of strings suitable for **Set-Cookie** headers. Accepts the same options as `.getCookies()`. Simply maps the cookie array via `.toString()`. - -### `.getSetCookieStringsSync(...)` - -Synchronous version of `getSetCookieStrings`; only works with synchronous stores (e.g. the default `MemoryCookieStore`). - -### `.serialize(cb(err,serializedObject))` - -Serialize the Jar if the underlying store supports `.getAllCookies`. - -**NOTE**: Custom `Cookie` properties will be discarded. If you want a property to be serialized, add the property name to the `Cookie.serializableProperties` Array. - -See [Serialization Format]. - -### `.serializeSync()` - -Sync version of .serialize - -### `.toJSON()` - -Alias of .serializeSync() for the convenience of `JSON.stringify(cookiejar)`. - -### `CookieJar.deserialize(serialized, [store], cb(err,object))` - -A new Jar is created and the serialized Cookies are added to the underlying store. Each `Cookie` is added via `store.putCookie` in the order in which they appear in the serialization. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. - -As a convenience, if `serialized` is a string, it is passed through `JSON.parse` first. If that throws an error, this is passed to the callback. - -### `CookieJar.deserializeSync(serialized, [store])` - -Sync version of `.deserialize`. _Note_ that the `store` must be synchronous for this to work. - -### `CookieJar.fromJSON(string)` - -Alias of `.deserializeSync` to provide consistency with `Cookie.fromJSON()`. - -### `.clone([store,]cb(err,newJar))` - -Produces a deep clone of this jar. Modifications to the original won't affect the clone, and vice versa. - -The `store` argument is optional, but should be an instance of `Store`. By default, a new instance of `MemoryCookieStore` is created. Transferring between store types is supported so long as the source implements `.getAllCookies()` and the destination implements `.putCookie()`. - -### `.cloneSync([store])` - -Synchronous version of `.clone`, returning a new `CookieJar` instance. - -The `store` argument is optional, but must be a _synchronous_ `Store` instance if specified. If not passed, a new instance of `MemoryCookieStore` is used. - -The _source_ and _destination_ must both be synchronous `Store`s. If one or both stores are asynchronous, use `.clone` instead. Recall that `MemoryCookieStore` supports both synchronous and asynchronous API calls. - -## Store - -Base class for CookieJar stores. Available as `tough.Store`. - -## Store API - -The storage model for each `CookieJar` instance can be replaced with a custom implementation. The default is `MemoryCookieStore` which can be found in the `lib/memstore.js` file. The API uses continuation-passing-style to allow for asynchronous stores. - -Stores should inherit from the base `Store` class, which is available as `require('tough-cookie').Store`. - -Stores are asynchronous by default, but if `store.synchronous` is set to `true`, then the `*Sync` methods on the of the containing `CookieJar` can be used (however, the continuation-passing style - -All `domain` parameters will have been normalized before calling. - -The Cookie store must have all of the following methods. - -### `store.findCookie(domain, path, key, cb(err,cookie))` - -Retrieve a cookie with the given domain, path and key (a.k.a. name). The RFC maintains that exactly one of these cookies should exist in a store. If the store is using versioning, this means that the latest/newest such cookie should be returned. - -Callback takes an error and the resulting `Cookie` object. If no cookie is found then `null` MUST be passed instead (i.e. not an error). - -### `store.findCookies(domain, path, cb(err,cookies))` - -Locates cookies matching the given domain and path. This is most often called in the context of `cookiejar.getCookies()` above. - -If no cookies are found, the callback MUST be passed an empty array. - -The resulting list will be checked for applicability to the current request according to the RFC (domain-match, path-match, http-only-flag, secure-flag, expiry, etc.), so it's OK to use an optimistic search algorithm when implementing this method. However, the search algorithm used SHOULD try to find cookies that `domainMatch()` the domain and `pathMatch()` the path in order to limit the amount of checking that needs to be done. - -As of version 0.9.12, the `allPaths` option to `cookiejar.getCookies()` above will cause the path here to be `null`. If the path is `null`, path-matching MUST NOT be performed (i.e. domain-matching only). - -### `store.putCookie(cookie, cb(err))` - -Adds a new cookie to the store. The implementation SHOULD replace any existing cookie with the same `.domain`, `.path`, and `.key` properties -- depending on the nature of the implementation, it's possible that between the call to `fetchCookie` and `putCookie` that a duplicate `putCookie` can occur. - -The `cookie` object MUST NOT be modified; the caller will have already updated the `.creation` and `.lastAccessed` properties. - -Pass an error if the cookie cannot be stored. - -### `store.updateCookie(oldCookie, newCookie, cb(err))` - -Update an existing cookie. The implementation MUST update the `.value` for a cookie with the same `domain`, `.path` and `.key`. The implementation SHOULD check that the old value in the store is equivalent to `oldCookie` - how the conflict is resolved is up to the store. - -The `.lastAccessed` property will always be different between the two objects (to the precision possible via JavaScript's clock). Both `.creation` and `.creationIndex` are guaranteed to be the same. Stores MAY ignore or defer the `.lastAccessed` change at the cost of affecting how cookies are selected for automatic deletion (e.g., least-recently-used, which is up to the store to implement). - -Stores may wish to optimize changing the `.value` of the cookie in the store versus storing a new cookie. If the implementation doesn't define this method a stub that calls `putCookie(newCookie,cb)` will be added to the store object. - -The `newCookie` and `oldCookie` objects MUST NOT be modified. - -Pass an error if the newCookie cannot be stored. - -### `store.removeCookie(domain, path, key, cb(err))` - -Remove a cookie from the store (see notes on `findCookie` about the uniqueness constraint). - -The implementation MUST NOT pass an error if the cookie doesn't exist; only pass an error due to the failure to remove an existing cookie. - -### `store.removeCookies(domain, path, cb(err))` - -Removes matching cookies from the store. The `path` parameter is optional, and if missing means all paths in a domain should be removed. - -Pass an error ONLY if removing any existing cookies failed. - -### `store.getAllCookies(cb(err, cookies))` - -Produces an `Array` of all cookies during `jar.serialize()`. The items in the array can be true `Cookie` objects or generic `Object`s with the [Serialization Format] data structure. - -Cookies SHOULD be returned in creation order to preserve sorting via `compareCookies()`. For reference, `MemoryCookieStore` will sort by `.creationIndex` since it uses true `Cookie` objects internally. If you don't return the cookies in creation order, they'll still be sorted by creation time, but this only has a precision of 1ms. See `compareCookies` for more detail. - -Pass an error if retrieval fails. - -## MemoryCookieStore - -Inherits from `Store`. - -A just-in-memory CookieJar synchronous store implementation, used by default. Despite being a synchronous implementation, it's usable with both the synchronous and asynchronous forms of the `CookieJar` API. - -# Serialization Format - -**NOTE**: if you want to have custom `Cookie` properties serialized, add the property name to `Cookie.serializableProperties`. - -```js - { - // The version of tough-cookie that serialized this jar. - version: 'tough-cookie@1.x.y', - - // add the store type, to make humans happy: - storeType: 'MemoryCookieStore', - - // CookieJar configuration: - rejectPublicSuffixes: true, - // ... future items go here - - // Gets filled from jar.store.getAllCookies(): - cookies: [ - { - key: 'string', - value: 'string', - // ... - /* other Cookie.serializableProperties go here */ - } - ] - } -``` - -# Copyright and License - -(tl;dr: BSD-3-Clause with some MPL/2.0) - -```text - Copyright (c) 2015, Salesforce.com, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. Neither the name of Salesforce.com nor the names of its contributors may - be used to endorse or promote products derived from this software without - specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -``` - -Portions may be licensed under different licenses (in particular `public_suffix_list.dat` is MPL/2.0); please read that file and the LICENSE file for full details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/cookie.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/cookie.js deleted file mode 100644 index 12da297a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/cookie.js +++ /dev/null @@ -1,1342 +0,0 @@ -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -'use strict'; -var net = require('net'); -var urlParse = require('url').parse; -var pubsuffix = require('./pubsuffix'); -var Store = require('./store').Store; -var MemoryCookieStore = require('./memstore').MemoryCookieStore; -var pathMatch = require('./pathMatch').pathMatch; -var VERSION = require('../package.json').version; - -var punycode; -try { - punycode = require('punycode'); -} catch(e) { - console.warn("cookie: can't load punycode; won't use punycode for domain normalization"); -} - -var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; - -// From RFC6265 S4.1.1 -// note that it excludes \x3B ";" -var COOKIE_OCTET = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/; -var COOKIE_OCTETS = new RegExp('^'+COOKIE_OCTET.source+'+$'); - -var CONTROL_CHARS = /[\x00-\x1F]/; - -// Double quotes are part of the value (see: S4.1.1). -// '\r', '\n' and '\0' should be treated as a terminator in the "relaxed" mode -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60) -// '=' and ';' are attribute/values separators -// (see: https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L64) -var COOKIE_PAIR = /^(([^=;]+))\s*=\s*([^\n\r\0]*)/; - -// Used to parse non-RFC-compliant cookies like '=abc' when given the `loose` -// option in Cookie.parse: -var LOOSE_COOKIE_PAIR = /^((?:=)?([^=;]*)\s*=\s*)?([^\n\r\0]*)/; - -// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' -// Note ';' is \x3B -var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; - -// Used for checking whether or not there is a trailing semi-colon -var TRAILING_SEMICOLON = /;+$/; - -var DAY_OF_MONTH = /^(\d{1,2})[^\d]*$/; -var TIME = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/; -var MONTH = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i; - -var MONTH_TO_NUM = { - jan:0, feb:1, mar:2, apr:3, may:4, jun:5, - jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 -}; -var NUM_TO_MONTH = [ - 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' -]; -var NUM_TO_DAY = [ - 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' -]; - -var YEAR = /^(\d{2}|\d{4})$/; // 2 to 4 digits - -var MAX_TIME = 2147483647000; // 31-bit max -var MIN_TIME = 0; // 31-bit min - - -// RFC6265 S5.1.1 date parser: -function parseDate(str) { - if (!str) { - return; - } - - /* RFC6265 S5.1.1: - * 2. Process each date-token sequentially in the order the date-tokens - * appear in the cookie-date - */ - var tokens = str.split(DATE_DELIM); - if (!tokens) { - return; - } - - var hour = null; - var minutes = null; - var seconds = null; - var day = null; - var month = null; - var year = null; - - for (var i=0; i 23 || minutes > 59 || seconds > 59) { - return; - } - - continue; - } - } - - /* 2.2. If the found-day-of-month flag is not set and the date-token matches - * the day-of-month production, set the found-day-of- month flag and set - * the day-of-month-value to the number denoted by the date-token. Skip - * the remaining sub-steps and continue to the next date-token. - */ - if (day === null) { - result = DAY_OF_MONTH.exec(token); - if (result) { - day = parseInt(result, 10); - /* RFC6265 S5.1.1.5: - * [fail if] the day-of-month-value is less than 1 or greater than 31 - */ - if(day < 1 || day > 31) { - return; - } - continue; - } - } - - /* 2.3. If the found-month flag is not set and the date-token matches the - * month production, set the found-month flag and set the month-value to - * the month denoted by the date-token. Skip the remaining sub-steps and - * continue to the next date-token. - */ - if (month === null) { - result = MONTH.exec(token); - if (result) { - month = MONTH_TO_NUM[result[1].toLowerCase()]; - continue; - } - } - - /* 2.4. If the found-year flag is not set and the date-token matches the year - * production, set the found-year flag and set the year-value to the number - * denoted by the date-token. Skip the remaining sub-steps and continue to - * the next date-token. - */ - if (year === null) { - result = YEAR.exec(token); - if (result) { - year = parseInt(result[0], 10); - /* From S5.1.1: - * 3. If the year-value is greater than or equal to 70 and less - * than or equal to 99, increment the year-value by 1900. - * 4. If the year-value is greater than or equal to 0 and less - * than or equal to 69, increment the year-value by 2000. - */ - if (70 <= year && year <= 99) { - year += 1900; - } else if (0 <= year && year <= 69) { - year += 2000; - } - - if (year < 1601) { - return; // 5. ... the year-value is less than 1601 - } - } - } - } - - if (seconds === null || day === null || month === null || year === null) { - return; // 5. ... at least one of the found-day-of-month, found-month, found- - // year, or found-time flags is not set, - } - - return new Date(Date.UTC(year, month, day, hour, minutes, seconds)); -} - -function formatDate(date) { - var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; - var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; - var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; - var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; - return NUM_TO_DAY[date.getUTCDay()] + ', ' + - d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ - h+':'+m+':'+s+' GMT'; -} - -// S5.1.2 Canonicalized Host Names -function canonicalDomain(str) { - if (str == null) { - return null; - } - str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . - - // convert to IDN if any non-ASCII characters - if (punycode && /[^\u0001-\u007f]/.test(str)) { - str = punycode.toASCII(str); - } - - return str.toLowerCase(); -} - -// S5.1.3 Domain Matching -function domainMatch(str, domStr, canonicalize) { - if (str == null || domStr == null) { - return null; - } - if (canonicalize !== false) { - str = canonicalDomain(str); - domStr = canonicalDomain(domStr); - } - - /* - * "The domain string and the string are identical. (Note that both the - * domain string and the string will have been canonicalized to lower case at - * this point)" - */ - if (str == domStr) { - return true; - } - - /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ - - /* "* The string is a host name (i.e., not an IP address)." */ - if (net.isIP(str)) { - return false; - } - - /* "* The domain string is a suffix of the string" */ - var idx = str.indexOf(domStr); - if (idx <= 0) { - return false; // it's a non-match (-1) or prefix (0) - } - - // e.g "a.b.c".indexOf("b.c") === 2 - // 5 === 3+2 - if (str.length !== domStr.length + idx) { // it's not a suffix - return false; - } - - /* "* The last character of the string that is not included in the domain - * string is a %x2E (".") character." */ - if (str.substr(idx-1,1) !== '.') { - return false; - } - - return true; -} - - -// RFC6265 S5.1.4 Paths and Path-Match - -/* - * "The user agent MUST use an algorithm equivalent to the following algorithm - * to compute the default-path of a cookie:" - * - * Assumption: the path (and not query part or absolute uri) is passed in. - */ -function defaultPath(path) { - // "2. If the uri-path is empty or if the first character of the uri-path is not - // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. - if (!path || path.substr(0,1) !== "/") { - return "/"; - } - - // "3. If the uri-path contains no more than one %x2F ("/") character, output - // %x2F ("/") and skip the remaining step." - if (path === "/") { - return path; - } - - var rightSlash = path.lastIndexOf("/"); - if (rightSlash === 0) { - return "/"; - } - - // "4. Output the characters of the uri-path from the first character up to, - // but not including, the right-most %x2F ("/")." - return path.slice(0, rightSlash); -} - - -function parse(str, options) { - if (!options || typeof options !== 'object') { - options = {}; - } - str = str.trim(); - - // S4.1.1 Trailing semi-colons are not part of the specification. - var semiColonCheck = TRAILING_SEMICOLON.exec(str); - if (semiColonCheck) { - str = str.slice(0, semiColonCheck.index); - } - - // We use a regex to parse the "name-value-pair" part of S5.2 - var firstSemi = str.indexOf(';'); // S5.2 step 1 - var pairRe = options.loose ? LOOSE_COOKIE_PAIR : COOKIE_PAIR; - var result = pairRe.exec(firstSemi === -1 ? str : str.substr(0,firstSemi)); - - // Rx satisfies the "the name string is empty" and "lacks a %x3D ("=")" - // constraints as well as trimming any whitespace. - if (!result) { - return; - } - - var c = new Cookie(); - if (result[1]) { - c.key = result[2].trim(); - } else { - c.key = ''; - } - c.value = result[3].trim(); - if (CONTROL_CHARS.test(c.key) || CONTROL_CHARS.test(c.value)) { - return; - } - - if (firstSemi === -1) { - return c; - } - - // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string - // (including the %x3B (";") in question)." plus later on in the same section - // "discard the first ";" and trim". - var unparsed = str.slice(firstSemi).replace(/^\s*;\s*/,'').trim(); - - // "If the unparsed-attributes string is empty, skip the rest of these - // steps." - if (unparsed.length === 0) { - return c; - } - - /* - * S5.2 says that when looping over the items "[p]rocess the attribute-name - * and attribute-value according to the requirements in the following - * subsections" for every item. Plus, for many of the individual attributes - * in S5.3 it says to use the "attribute-value of the last attribute in the - * cookie-attribute-list". Therefore, in this implementation, we overwrite - * the previous value. - */ - var cookie_avs = unparsed.split(/\s*;\s*/); - while (cookie_avs.length) { - var av = cookie_avs.shift(); - var av_sep = av.indexOf('='); - var av_key, av_value; - - if (av_sep === -1) { - av_key = av; - av_value = null; - } else { - av_key = av.substr(0,av_sep); - av_value = av.substr(av_sep+1); - } - - av_key = av_key.trim().toLowerCase(); - - if (av_value) { - av_value = av_value.trim(); - } - - switch(av_key) { - case 'expires': // S5.2.1 - if (av_value) { - var exp = parseDate(av_value); - // "If the attribute-value failed to parse as a cookie date, ignore the - // cookie-av." - if (exp) { - // over and underflow not realistically a concern: V8's getTime() seems to - // store something larger than a 32-bit time_t (even with 32-bit node) - c.expires = exp; - } - } - break; - - case 'max-age': // S5.2.2 - if (av_value) { - // "If the first character of the attribute-value is not a DIGIT or a "-" - // character ...[or]... If the remainder of attribute-value contains a - // non-DIGIT character, ignore the cookie-av." - if (/^-?[0-9]+$/.test(av_value)) { - var delta = parseInt(av_value, 10); - // "If delta-seconds is less than or equal to zero (0), let expiry-time - // be the earliest representable date and time." - c.setMaxAge(delta); - } - } - break; - - case 'domain': // S5.2.3 - // "If the attribute-value is empty, the behavior is undefined. However, - // the user agent SHOULD ignore the cookie-av entirely." - if (av_value) { - // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E - // (".") character." - var domain = av_value.trim().replace(/^\./, ''); - if (domain) { - // "Convert the cookie-domain to lower case." - c.domain = domain.toLowerCase(); - } - } - break; - - case 'path': // S5.2.4 - /* - * "If the attribute-value is empty or if the first character of the - * attribute-value is not %x2F ("/"): - * Let cookie-path be the default-path. - * Otherwise: - * Let cookie-path be the attribute-value." - * - * We'll represent the default-path as null since it depends on the - * context of the parsing. - */ - c.path = av_value && av_value[0] === "/" ? av_value : null; - break; - - case 'secure': // S5.2.5 - /* - * "If the attribute-name case-insensitively matches the string "Secure", - * the user agent MUST append an attribute to the cookie-attribute-list - * with an attribute-name of Secure and an empty attribute-value." - */ - c.secure = true; - break; - - case 'httponly': // S5.2.6 -- effectively the same as 'secure' - c.httpOnly = true; - break; - - default: - c.extensions = c.extensions || []; - c.extensions.push(av); - break; - } - } - - return c; -} - -// avoid the V8 deoptimization monster! -function jsonParse(str) { - var obj; - try { - obj = JSON.parse(str); - } catch (e) { - return e; - } - return obj; -} - -function fromJSON(str) { - if (!str) { - return null; - } - - var obj; - if (typeof str === 'string') { - obj = jsonParse(str); - if (obj instanceof Error) { - return null; - } - } else { - // assume it's an Object - obj = str; - } - - var c = new Cookie(); - for (var i=0; i 1) { - var lindex = path.lastIndexOf('/'); - if (lindex === 0) { - break; - } - path = path.substr(0,lindex); - permutations.push(path); - } - permutations.push('/'); - return permutations; -} - -function getCookieContext(url) { - if (url instanceof Object) { - return url; - } - // NOTE: decodeURI will throw on malformed URIs (see GH-32). - // Therefore, we will just skip decoding for such URIs. - try { - url = decodeURI(url); - } - catch(err) { - // Silently swallow error - } - - return urlParse(url); -} - -function Cookie(options) { - options = options || {}; - - Object.keys(options).forEach(function(prop) { - if (Cookie.prototype.hasOwnProperty(prop) && - Cookie.prototype[prop] !== options[prop] && - prop.substr(0,1) !== '_') - { - this[prop] = options[prop]; - } - }, this); - - this.creation = this.creation || new Date(); - - // used to break creation ties in cookieCompare(): - Object.defineProperty(this, 'creationIndex', { - configurable: false, - enumerable: false, // important for assert.deepEqual checks - writable: true, - value: ++Cookie.cookiesCreated - }); -} - -Cookie.cookiesCreated = 0; // incremented each time a cookie is created - -Cookie.parse = parse; -Cookie.fromJSON = fromJSON; - -Cookie.prototype.key = ""; -Cookie.prototype.value = ""; - -// the order in which the RFC has them: -Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity -Cookie.prototype.maxAge = null; // takes precedence over expires for TTL -Cookie.prototype.domain = null; -Cookie.prototype.path = null; -Cookie.prototype.secure = false; -Cookie.prototype.httpOnly = false; -Cookie.prototype.extensions = null; - -// set by the CookieJar: -Cookie.prototype.hostOnly = null; // boolean when set -Cookie.prototype.pathIsDefault = null; // boolean when set -Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse -Cookie.prototype.lastAccessed = null; // Date when set -Object.defineProperty(Cookie.prototype, 'creationIndex', { - configurable: true, - enumerable: false, - writable: true, - value: 0 -}); - -Cookie.serializableProperties = Object.keys(Cookie.prototype) - .filter(function(prop) { - return !( - Cookie.prototype[prop] instanceof Function || - prop === 'creationIndex' || - prop.substr(0,1) === '_' - ); - }); - -Cookie.prototype.inspect = function inspect() { - var now = Date.now(); - return 'Cookie="'+this.toString() + - '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + - '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + - '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + - '"'; -}; - -Cookie.prototype.toJSON = function() { - var obj = {}; - - var props = Cookie.serializableProperties; - for (var i=0; i suffixLen) { - var publicSuffix = parts.slice(0,suffixLen+1).reverse().join('.'); - return converted ? punycode.toUnicode(publicSuffix) : publicSuffix; - } - - return null; -}; - -// The following generated structure is used under the MPL version 2.0 -// See public-suffix.txt for more information - -var index = module.exports.index = Object.freeze( -{"ac":true,"com.ac":true,"edu.ac":true,"gov.ac":true,"net.ac":true,"mil.ac":true,"org.ac":true,"ad":true,"nom.ad":true,"ae":true,"co.ae":true,"net.ae":true,"org.ae":true,"sch.ae":true,"ac.ae":true,"gov.ae":true,"mil.ae":true,"aero":true,"accident-investigation.aero":true,"accident-prevention.aero":true,"aerobatic.aero":true,"aeroclub.aero":true,"aerodrome.aero":true,"agents.aero":true,"aircraft.aero":true,"airline.aero":true,"airport.aero":true,"air-surveillance.aero":true,"airtraffic.aero":true,"air-traffic-control.aero":true,"ambulance.aero":true,"amusement.aero":true,"association.aero":true,"author.aero":true,"ballooning.aero":true,"broker.aero":true,"caa.aero":true,"cargo.aero":true,"catering.aero":true,"certification.aero":true,"championship.aero":true,"charter.aero":true,"civilaviation.aero":true,"club.aero":true,"conference.aero":true,"consultant.aero":true,"consulting.aero":true,"control.aero":true,"council.aero":true,"crew.aero":true,"design.aero":true,"dgca.aero":true,"educator.aero":true,"emergency.aero":true,"engine.aero":true,"engineer.aero":true,"entertainment.aero":true,"equipment.aero":true,"exchange.aero":true,"express.aero":true,"federation.aero":true,"flight.aero":true,"freight.aero":true,"fuel.aero":true,"gliding.aero":true,"government.aero":true,"groundhandling.aero":true,"group.aero":true,"hanggliding.aero":true,"homebuilt.aero":true,"insurance.aero":true,"journal.aero":true,"journalist.aero":true,"leasing.aero":true,"logistics.aero":true,"magazine.aero":true,"maintenance.aero":true,"marketplace.aero":true,"media.aero":true,"microlight.aero":true,"modelling.aero":true,"navigation.aero":true,"parachuting.aero":true,"paragliding.aero":true,"passenger-association.aero":true,"pilot.aero":true,"press.aero":true,"production.aero":true,"recreation.aero":true,"repbody.aero":true,"res.aero":true,"research.aero":true,"rotorcraft.aero":true,"safety.aero":true,"scientist.aero":true,"services.aero":true,"show.aero":true,"skydiving.aero":true,"software.aero":true,"student.aero":true,"taxi.aero":true,"trader.aero":true,"trading.aero":true,"trainer.aero":true,"union.aero":true,"workinggroup.aero":true,"works.aero":true,"af":true,"gov.af":true,"com.af":true,"org.af":true,"net.af":true,"edu.af":true,"ag":true,"com.ag":true,"org.ag":true,"net.ag":true,"co.ag":true,"nom.ag":true,"ai":true,"off.ai":true,"com.ai":true,"net.ai":true,"org.ai":true,"al":true,"com.al":true,"edu.al":true,"gov.al":true,"mil.al":true,"net.al":true,"org.al":true,"am":true,"an":true,"com.an":true,"net.an":true,"org.an":true,"edu.an":true,"ao":true,"ed.ao":true,"gv.ao":true,"og.ao":true,"co.ao":true,"pb.ao":true,"it.ao":true,"aq":true,"ar":true,"com.ar":true,"edu.ar":true,"gob.ar":true,"gov.ar":true,"int.ar":true,"mil.ar":true,"net.ar":true,"org.ar":true,"tur.ar":true,"arpa":true,"e164.arpa":true,"in-addr.arpa":true,"ip6.arpa":true,"iris.arpa":true,"uri.arpa":true,"urn.arpa":true,"as":true,"gov.as":true,"asia":true,"at":true,"ac.at":true,"co.at":true,"gv.at":true,"or.at":true,"au":true,"com.au":true,"net.au":true,"org.au":true,"edu.au":true,"gov.au":true,"asn.au":true,"id.au":true,"info.au":true,"conf.au":true,"oz.au":true,"act.au":true,"nsw.au":true,"nt.au":true,"qld.au":true,"sa.au":true,"tas.au":true,"vic.au":true,"wa.au":true,"act.edu.au":true,"nsw.edu.au":true,"nt.edu.au":true,"qld.edu.au":true,"sa.edu.au":true,"tas.edu.au":true,"vic.edu.au":true,"wa.edu.au":true,"qld.gov.au":true,"sa.gov.au":true,"tas.gov.au":true,"vic.gov.au":true,"wa.gov.au":true,"aw":true,"com.aw":true,"ax":true,"az":true,"com.az":true,"net.az":true,"int.az":true,"gov.az":true,"org.az":true,"edu.az":true,"info.az":true,"pp.az":true,"mil.az":true,"name.az":true,"pro.az":true,"biz.az":true,"ba":true,"org.ba":true,"net.ba":true,"edu.ba":true,"gov.ba":true,"mil.ba":true,"unsa.ba":true,"unbi.ba":true,"co.ba":true,"com.ba":true,"rs.ba":true,"bb":true,"biz.bb":true,"co.bb":true,"com.bb":true,"edu.bb":true,"gov.bb":true,"info.bb":true,"net.bb":true,"org.bb":true,"store.bb":true,"tv.bb":true,"*.bd":true,"be":true,"ac.be":true,"bf":true,"gov.bf":true,"bg":true,"a.bg":true,"b.bg":true,"c.bg":true,"d.bg":true,"e.bg":true,"f.bg":true,"g.bg":true,"h.bg":true,"i.bg":true,"j.bg":true,"k.bg":true,"l.bg":true,"m.bg":true,"n.bg":true,"o.bg":true,"p.bg":true,"q.bg":true,"r.bg":true,"s.bg":true,"t.bg":true,"u.bg":true,"v.bg":true,"w.bg":true,"x.bg":true,"y.bg":true,"z.bg":true,"0.bg":true,"1.bg":true,"2.bg":true,"3.bg":true,"4.bg":true,"5.bg":true,"6.bg":true,"7.bg":true,"8.bg":true,"9.bg":true,"bh":true,"com.bh":true,"edu.bh":true,"net.bh":true,"org.bh":true,"gov.bh":true,"bi":true,"co.bi":true,"com.bi":true,"edu.bi":true,"or.bi":true,"org.bi":true,"biz":true,"bj":true,"asso.bj":true,"barreau.bj":true,"gouv.bj":true,"bm":true,"com.bm":true,"edu.bm":true,"gov.bm":true,"net.bm":true,"org.bm":true,"*.bn":true,"bo":true,"com.bo":true,"edu.bo":true,"gov.bo":true,"gob.bo":true,"int.bo":true,"org.bo":true,"net.bo":true,"mil.bo":true,"tv.bo":true,"br":true,"adm.br":true,"adv.br":true,"agr.br":true,"am.br":true,"arq.br":true,"art.br":true,"ato.br":true,"b.br":true,"bio.br":true,"blog.br":true,"bmd.br":true,"cim.br":true,"cng.br":true,"cnt.br":true,"com.br":true,"coop.br":true,"ecn.br":true,"eco.br":true,"edu.br":true,"emp.br":true,"eng.br":true,"esp.br":true,"etc.br":true,"eti.br":true,"far.br":true,"flog.br":true,"fm.br":true,"fnd.br":true,"fot.br":true,"fst.br":true,"g12.br":true,"ggf.br":true,"gov.br":true,"imb.br":true,"ind.br":true,"inf.br":true,"jor.br":true,"jus.br":true,"leg.br":true,"lel.br":true,"mat.br":true,"med.br":true,"mil.br":true,"mp.br":true,"mus.br":true,"net.br":true,"*.nom.br":true,"not.br":true,"ntr.br":true,"odo.br":true,"org.br":true,"ppg.br":true,"pro.br":true,"psc.br":true,"psi.br":true,"qsl.br":true,"radio.br":true,"rec.br":true,"slg.br":true,"srv.br":true,"taxi.br":true,"teo.br":true,"tmp.br":true,"trd.br":true,"tur.br":true,"tv.br":true,"vet.br":true,"vlog.br":true,"wiki.br":true,"zlg.br":true,"bs":true,"com.bs":true,"net.bs":true,"org.bs":true,"edu.bs":true,"gov.bs":true,"bt":true,"com.bt":true,"edu.bt":true,"gov.bt":true,"net.bt":true,"org.bt":true,"bv":true,"bw":true,"co.bw":true,"org.bw":true,"by":true,"gov.by":true,"mil.by":true,"com.by":true,"of.by":true,"bz":true,"com.bz":true,"net.bz":true,"org.bz":true,"edu.bz":true,"gov.bz":true,"ca":true,"ab.ca":true,"bc.ca":true,"mb.ca":true,"nb.ca":true,"nf.ca":true,"nl.ca":true,"ns.ca":true,"nt.ca":true,"nu.ca":true,"on.ca":true,"pe.ca":true,"qc.ca":true,"sk.ca":true,"yk.ca":true,"gc.ca":true,"cat":true,"cc":true,"cd":true,"gov.cd":true,"cf":true,"cg":true,"ch":true,"ci":true,"org.ci":true,"or.ci":true,"com.ci":true,"co.ci":true,"edu.ci":true,"ed.ci":true,"ac.ci":true,"net.ci":true,"go.ci":true,"asso.ci":true,"xn--aroport-bya.ci":true,"int.ci":true,"presse.ci":true,"md.ci":true,"gouv.ci":true,"*.ck":true,"www.ck":false,"cl":true,"gov.cl":true,"gob.cl":true,"co.cl":true,"mil.cl":true,"cm":true,"co.cm":true,"com.cm":true,"gov.cm":true,"net.cm":true,"cn":true,"ac.cn":true,"com.cn":true,"edu.cn":true,"gov.cn":true,"net.cn":true,"org.cn":true,"mil.cn":true,"xn--55qx5d.cn":true,"xn--io0a7i.cn":true,"xn--od0alg.cn":true,"ah.cn":true,"bj.cn":true,"cq.cn":true,"fj.cn":true,"gd.cn":true,"gs.cn":true,"gz.cn":true,"gx.cn":true,"ha.cn":true,"hb.cn":true,"he.cn":true,"hi.cn":true,"hl.cn":true,"hn.cn":true,"jl.cn":true,"js.cn":true,"jx.cn":true,"ln.cn":true,"nm.cn":true,"nx.cn":true,"qh.cn":true,"sc.cn":true,"sd.cn":true,"sh.cn":true,"sn.cn":true,"sx.cn":true,"tj.cn":true,"xj.cn":true,"xz.cn":true,"yn.cn":true,"zj.cn":true,"hk.cn":true,"mo.cn":true,"tw.cn":true,"co":true,"arts.co":true,"com.co":true,"edu.co":true,"firm.co":true,"gov.co":true,"info.co":true,"int.co":true,"mil.co":true,"net.co":true,"nom.co":true,"org.co":true,"rec.co":true,"web.co":true,"com":true,"coop":true,"cr":true,"ac.cr":true,"co.cr":true,"ed.cr":true,"fi.cr":true,"go.cr":true,"or.cr":true,"sa.cr":true,"cu":true,"com.cu":true,"edu.cu":true,"org.cu":true,"net.cu":true,"gov.cu":true,"inf.cu":true,"cv":true,"cw":true,"com.cw":true,"edu.cw":true,"net.cw":true,"org.cw":true,"cx":true,"gov.cx":true,"ac.cy":true,"biz.cy":true,"com.cy":true,"ekloges.cy":true,"gov.cy":true,"ltd.cy":true,"name.cy":true,"net.cy":true,"org.cy":true,"parliament.cy":true,"press.cy":true,"pro.cy":true,"tm.cy":true,"cz":true,"de":true,"dj":true,"dk":true,"dm":true,"com.dm":true,"net.dm":true,"org.dm":true,"edu.dm":true,"gov.dm":true,"do":true,"art.do":true,"com.do":true,"edu.do":true,"gob.do":true,"gov.do":true,"mil.do":true,"net.do":true,"org.do":true,"sld.do":true,"web.do":true,"dz":true,"com.dz":true,"org.dz":true,"net.dz":true,"gov.dz":true,"edu.dz":true,"asso.dz":true,"pol.dz":true,"art.dz":true,"ec":true,"com.ec":true,"info.ec":true,"net.ec":true,"fin.ec":true,"k12.ec":true,"med.ec":true,"pro.ec":true,"org.ec":true,"edu.ec":true,"gov.ec":true,"gob.ec":true,"mil.ec":true,"edu":true,"ee":true,"edu.ee":true,"gov.ee":true,"riik.ee":true,"lib.ee":true,"med.ee":true,"com.ee":true,"pri.ee":true,"aip.ee":true,"org.ee":true,"fie.ee":true,"eg":true,"com.eg":true,"edu.eg":true,"eun.eg":true,"gov.eg":true,"mil.eg":true,"name.eg":true,"net.eg":true,"org.eg":true,"sci.eg":true,"*.er":true,"es":true,"com.es":true,"nom.es":true,"org.es":true,"gob.es":true,"edu.es":true,"et":true,"com.et":true,"gov.et":true,"org.et":true,"edu.et":true,"biz.et":true,"name.et":true,"info.et":true,"net.et":true,"eu":true,"fi":true,"aland.fi":true,"*.fj":true,"*.fk":true,"fm":true,"fo":true,"fr":true,"com.fr":true,"asso.fr":true,"nom.fr":true,"prd.fr":true,"presse.fr":true,"tm.fr":true,"aeroport.fr":true,"assedic.fr":true,"avocat.fr":true,"avoues.fr":true,"cci.fr":true,"chambagri.fr":true,"chirurgiens-dentistes.fr":true,"experts-comptables.fr":true,"geometre-expert.fr":true,"gouv.fr":true,"greta.fr":true,"huissier-justice.fr":true,"medecin.fr":true,"notaires.fr":true,"pharmacien.fr":true,"port.fr":true,"veterinaire.fr":true,"ga":true,"gb":true,"gd":true,"ge":true,"com.ge":true,"edu.ge":true,"gov.ge":true,"org.ge":true,"mil.ge":true,"net.ge":true,"pvt.ge":true,"gf":true,"gg":true,"co.gg":true,"net.gg":true,"org.gg":true,"gh":true,"com.gh":true,"edu.gh":true,"gov.gh":true,"org.gh":true,"mil.gh":true,"gi":true,"com.gi":true,"ltd.gi":true,"gov.gi":true,"mod.gi":true,"edu.gi":true,"org.gi":true,"gl":true,"co.gl":true,"com.gl":true,"edu.gl":true,"net.gl":true,"org.gl":true,"gm":true,"gn":true,"ac.gn":true,"com.gn":true,"edu.gn":true,"gov.gn":true,"org.gn":true,"net.gn":true,"gov":true,"gp":true,"com.gp":true,"net.gp":true,"mobi.gp":true,"edu.gp":true,"org.gp":true,"asso.gp":true,"gq":true,"gr":true,"com.gr":true,"edu.gr":true,"net.gr":true,"org.gr":true,"gov.gr":true,"gs":true,"gt":true,"com.gt":true,"edu.gt":true,"gob.gt":true,"ind.gt":true,"mil.gt":true,"net.gt":true,"org.gt":true,"*.gu":true,"gw":true,"gy":true,"co.gy":true,"com.gy":true,"net.gy":true,"hk":true,"com.hk":true,"edu.hk":true,"gov.hk":true,"idv.hk":true,"net.hk":true,"org.hk":true,"xn--55qx5d.hk":true,"xn--wcvs22d.hk":true,"xn--lcvr32d.hk":true,"xn--mxtq1m.hk":true,"xn--gmqw5a.hk":true,"xn--ciqpn.hk":true,"xn--gmq050i.hk":true,"xn--zf0avx.hk":true,"xn--io0a7i.hk":true,"xn--mk0axi.hk":true,"xn--od0alg.hk":true,"xn--od0aq3b.hk":true,"xn--tn0ag.hk":true,"xn--uc0atv.hk":true,"xn--uc0ay4a.hk":true,"hm":true,"hn":true,"com.hn":true,"edu.hn":true,"org.hn":true,"net.hn":true,"mil.hn":true,"gob.hn":true,"hr":true,"iz.hr":true,"from.hr":true,"name.hr":true,"com.hr":true,"ht":true,"com.ht":true,"shop.ht":true,"firm.ht":true,"info.ht":true,"adult.ht":true,"net.ht":true,"pro.ht":true,"org.ht":true,"med.ht":true,"art.ht":true,"coop.ht":true,"pol.ht":true,"asso.ht":true,"edu.ht":true,"rel.ht":true,"gouv.ht":true,"perso.ht":true,"hu":true,"co.hu":true,"info.hu":true,"org.hu":true,"priv.hu":true,"sport.hu":true,"tm.hu":true,"2000.hu":true,"agrar.hu":true,"bolt.hu":true,"casino.hu":true,"city.hu":true,"erotica.hu":true,"erotika.hu":true,"film.hu":true,"forum.hu":true,"games.hu":true,"hotel.hu":true,"ingatlan.hu":true,"jogasz.hu":true,"konyvelo.hu":true,"lakas.hu":true,"media.hu":true,"news.hu":true,"reklam.hu":true,"sex.hu":true,"shop.hu":true,"suli.hu":true,"szex.hu":true,"tozsde.hu":true,"utazas.hu":true,"video.hu":true,"id":true,"ac.id":true,"biz.id":true,"co.id":true,"desa.id":true,"go.id":true,"mil.id":true,"my.id":true,"net.id":true,"or.id":true,"sch.id":true,"web.id":true,"ie":true,"gov.ie":true,"il":true,"ac.il":true,"co.il":true,"gov.il":true,"idf.il":true,"k12.il":true,"muni.il":true,"net.il":true,"org.il":true,"im":true,"ac.im":true,"co.im":true,"com.im":true,"ltd.co.im":true,"net.im":true,"org.im":true,"plc.co.im":true,"tt.im":true,"tv.im":true,"in":true,"co.in":true,"firm.in":true,"net.in":true,"org.in":true,"gen.in":true,"ind.in":true,"nic.in":true,"ac.in":true,"edu.in":true,"res.in":true,"gov.in":true,"mil.in":true,"info":true,"int":true,"eu.int":true,"io":true,"com.io":true,"iq":true,"gov.iq":true,"edu.iq":true,"mil.iq":true,"com.iq":true,"org.iq":true,"net.iq":true,"ir":true,"ac.ir":true,"co.ir":true,"gov.ir":true,"id.ir":true,"net.ir":true,"org.ir":true,"sch.ir":true,"xn--mgba3a4f16a.ir":true,"xn--mgba3a4fra.ir":true,"is":true,"net.is":true,"com.is":true,"edu.is":true,"gov.is":true,"org.is":true,"int.is":true,"it":true,"gov.it":true,"edu.it":true,"abr.it":true,"abruzzo.it":true,"aosta-valley.it":true,"aostavalley.it":true,"bas.it":true,"basilicata.it":true,"cal.it":true,"calabria.it":true,"cam.it":true,"campania.it":true,"emilia-romagna.it":true,"emiliaromagna.it":true,"emr.it":true,"friuli-v-giulia.it":true,"friuli-ve-giulia.it":true,"friuli-vegiulia.it":true,"friuli-venezia-giulia.it":true,"friuli-veneziagiulia.it":true,"friuli-vgiulia.it":true,"friuliv-giulia.it":true,"friulive-giulia.it":true,"friulivegiulia.it":true,"friulivenezia-giulia.it":true,"friuliveneziagiulia.it":true,"friulivgiulia.it":true,"fvg.it":true,"laz.it":true,"lazio.it":true,"lig.it":true,"liguria.it":true,"lom.it":true,"lombardia.it":true,"lombardy.it":true,"lucania.it":true,"mar.it":true,"marche.it":true,"mol.it":true,"molise.it":true,"piedmont.it":true,"piemonte.it":true,"pmn.it":true,"pug.it":true,"puglia.it":true,"sar.it":true,"sardegna.it":true,"sardinia.it":true,"sic.it":true,"sicilia.it":true,"sicily.it":true,"taa.it":true,"tos.it":true,"toscana.it":true,"trentino-a-adige.it":true,"trentino-aadige.it":true,"trentino-alto-adige.it":true,"trentino-altoadige.it":true,"trentino-s-tirol.it":true,"trentino-stirol.it":true,"trentino-sud-tirol.it":true,"trentino-sudtirol.it":true,"trentino-sued-tirol.it":true,"trentino-suedtirol.it":true,"trentinoa-adige.it":true,"trentinoaadige.it":true,"trentinoalto-adige.it":true,"trentinoaltoadige.it":true,"trentinos-tirol.it":true,"trentinostirol.it":true,"trentinosud-tirol.it":true,"trentinosudtirol.it":true,"trentinosued-tirol.it":true,"trentinosuedtirol.it":true,"tuscany.it":true,"umb.it":true,"umbria.it":true,"val-d-aosta.it":true,"val-daosta.it":true,"vald-aosta.it":true,"valdaosta.it":true,"valle-aosta.it":true,"valle-d-aosta.it":true,"valle-daosta.it":true,"valleaosta.it":true,"valled-aosta.it":true,"valledaosta.it":true,"vallee-aoste.it":true,"valleeaoste.it":true,"vao.it":true,"vda.it":true,"ven.it":true,"veneto.it":true,"ag.it":true,"agrigento.it":true,"al.it":true,"alessandria.it":true,"alto-adige.it":true,"altoadige.it":true,"an.it":true,"ancona.it":true,"andria-barletta-trani.it":true,"andria-trani-barletta.it":true,"andriabarlettatrani.it":true,"andriatranibarletta.it":true,"ao.it":true,"aosta.it":true,"aoste.it":true,"ap.it":true,"aq.it":true,"aquila.it":true,"ar.it":true,"arezzo.it":true,"ascoli-piceno.it":true,"ascolipiceno.it":true,"asti.it":true,"at.it":true,"av.it":true,"avellino.it":true,"ba.it":true,"balsan.it":true,"bari.it":true,"barletta-trani-andria.it":true,"barlettatraniandria.it":true,"belluno.it":true,"benevento.it":true,"bergamo.it":true,"bg.it":true,"bi.it":true,"biella.it":true,"bl.it":true,"bn.it":true,"bo.it":true,"bologna.it":true,"bolzano.it":true,"bozen.it":true,"br.it":true,"brescia.it":true,"brindisi.it":true,"bs.it":true,"bt.it":true,"bz.it":true,"ca.it":true,"cagliari.it":true,"caltanissetta.it":true,"campidano-medio.it":true,"campidanomedio.it":true,"campobasso.it":true,"carbonia-iglesias.it":true,"carboniaiglesias.it":true,"carrara-massa.it":true,"carraramassa.it":true,"caserta.it":true,"catania.it":true,"catanzaro.it":true,"cb.it":true,"ce.it":true,"cesena-forli.it":true,"cesenaforli.it":true,"ch.it":true,"chieti.it":true,"ci.it":true,"cl.it":true,"cn.it":true,"co.it":true,"como.it":true,"cosenza.it":true,"cr.it":true,"cremona.it":true,"crotone.it":true,"cs.it":true,"ct.it":true,"cuneo.it":true,"cz.it":true,"dell-ogliastra.it":true,"dellogliastra.it":true,"en.it":true,"enna.it":true,"fc.it":true,"fe.it":true,"fermo.it":true,"ferrara.it":true,"fg.it":true,"fi.it":true,"firenze.it":true,"florence.it":true,"fm.it":true,"foggia.it":true,"forli-cesena.it":true,"forlicesena.it":true,"fr.it":true,"frosinone.it":true,"ge.it":true,"genoa.it":true,"genova.it":true,"go.it":true,"gorizia.it":true,"gr.it":true,"grosseto.it":true,"iglesias-carbonia.it":true,"iglesiascarbonia.it":true,"im.it":true,"imperia.it":true,"is.it":true,"isernia.it":true,"kr.it":true,"la-spezia.it":true,"laquila.it":true,"laspezia.it":true,"latina.it":true,"lc.it":true,"le.it":true,"lecce.it":true,"lecco.it":true,"li.it":true,"livorno.it":true,"lo.it":true,"lodi.it":true,"lt.it":true,"lu.it":true,"lucca.it":true,"macerata.it":true,"mantova.it":true,"massa-carrara.it":true,"massacarrara.it":true,"matera.it":true,"mb.it":true,"mc.it":true,"me.it":true,"medio-campidano.it":true,"mediocampidano.it":true,"messina.it":true,"mi.it":true,"milan.it":true,"milano.it":true,"mn.it":true,"mo.it":true,"modena.it":true,"monza-brianza.it":true,"monza-e-della-brianza.it":true,"monza.it":true,"monzabrianza.it":true,"monzaebrianza.it":true,"monzaedellabrianza.it":true,"ms.it":true,"mt.it":true,"na.it":true,"naples.it":true,"napoli.it":true,"no.it":true,"novara.it":true,"nu.it":true,"nuoro.it":true,"og.it":true,"ogliastra.it":true,"olbia-tempio.it":true,"olbiatempio.it":true,"or.it":true,"oristano.it":true,"ot.it":true,"pa.it":true,"padova.it":true,"padua.it":true,"palermo.it":true,"parma.it":true,"pavia.it":true,"pc.it":true,"pd.it":true,"pe.it":true,"perugia.it":true,"pesaro-urbino.it":true,"pesarourbino.it":true,"pescara.it":true,"pg.it":true,"pi.it":true,"piacenza.it":true,"pisa.it":true,"pistoia.it":true,"pn.it":true,"po.it":true,"pordenone.it":true,"potenza.it":true,"pr.it":true,"prato.it":true,"pt.it":true,"pu.it":true,"pv.it":true,"pz.it":true,"ra.it":true,"ragusa.it":true,"ravenna.it":true,"rc.it":true,"re.it":true,"reggio-calabria.it":true,"reggio-emilia.it":true,"reggiocalabria.it":true,"reggioemilia.it":true,"rg.it":true,"ri.it":true,"rieti.it":true,"rimini.it":true,"rm.it":true,"rn.it":true,"ro.it":true,"roma.it":true,"rome.it":true,"rovigo.it":true,"sa.it":true,"salerno.it":true,"sassari.it":true,"savona.it":true,"si.it":true,"siena.it":true,"siracusa.it":true,"so.it":true,"sondrio.it":true,"sp.it":true,"sr.it":true,"ss.it":true,"suedtirol.it":true,"sv.it":true,"ta.it":true,"taranto.it":true,"te.it":true,"tempio-olbia.it":true,"tempioolbia.it":true,"teramo.it":true,"terni.it":true,"tn.it":true,"to.it":true,"torino.it":true,"tp.it":true,"tr.it":true,"trani-andria-barletta.it":true,"trani-barletta-andria.it":true,"traniandriabarletta.it":true,"tranibarlettaandria.it":true,"trapani.it":true,"trentino.it":true,"trento.it":true,"treviso.it":true,"trieste.it":true,"ts.it":true,"turin.it":true,"tv.it":true,"ud.it":true,"udine.it":true,"urbino-pesaro.it":true,"urbinopesaro.it":true,"va.it":true,"varese.it":true,"vb.it":true,"vc.it":true,"ve.it":true,"venezia.it":true,"venice.it":true,"verbania.it":true,"vercelli.it":true,"verona.it":true,"vi.it":true,"vibo-valentia.it":true,"vibovalentia.it":true,"vicenza.it":true,"viterbo.it":true,"vr.it":true,"vs.it":true,"vt.it":true,"vv.it":true,"je":true,"co.je":true,"net.je":true,"org.je":true,"*.jm":true,"jo":true,"com.jo":true,"org.jo":true,"net.jo":true,"edu.jo":true,"sch.jo":true,"gov.jo":true,"mil.jo":true,"name.jo":true,"jobs":true,"jp":true,"ac.jp":true,"ad.jp":true,"co.jp":true,"ed.jp":true,"go.jp":true,"gr.jp":true,"lg.jp":true,"ne.jp":true,"or.jp":true,"aichi.jp":true,"akita.jp":true,"aomori.jp":true,"chiba.jp":true,"ehime.jp":true,"fukui.jp":true,"fukuoka.jp":true,"fukushima.jp":true,"gifu.jp":true,"gunma.jp":true,"hiroshima.jp":true,"hokkaido.jp":true,"hyogo.jp":true,"ibaraki.jp":true,"ishikawa.jp":true,"iwate.jp":true,"kagawa.jp":true,"kagoshima.jp":true,"kanagawa.jp":true,"kochi.jp":true,"kumamoto.jp":true,"kyoto.jp":true,"mie.jp":true,"miyagi.jp":true,"miyazaki.jp":true,"nagano.jp":true,"nagasaki.jp":true,"nara.jp":true,"niigata.jp":true,"oita.jp":true,"okayama.jp":true,"okinawa.jp":true,"osaka.jp":true,"saga.jp":true,"saitama.jp":true,"shiga.jp":true,"shimane.jp":true,"shizuoka.jp":true,"tochigi.jp":true,"tokushima.jp":true,"tokyo.jp":true,"tottori.jp":true,"toyama.jp":true,"wakayama.jp":true,"yamagata.jp":true,"yamaguchi.jp":true,"yamanashi.jp":true,"xn--4pvxs.jp":true,"xn--vgu402c.jp":true,"xn--c3s14m.jp":true,"xn--f6qx53a.jp":true,"xn--8pvr4u.jp":true,"xn--uist22h.jp":true,"xn--djrs72d6uy.jp":true,"xn--mkru45i.jp":true,"xn--0trq7p7nn.jp":true,"xn--8ltr62k.jp":true,"xn--2m4a15e.jp":true,"xn--efvn9s.jp":true,"xn--32vp30h.jp":true,"xn--4it797k.jp":true,"xn--1lqs71d.jp":true,"xn--5rtp49c.jp":true,"xn--5js045d.jp":true,"xn--ehqz56n.jp":true,"xn--1lqs03n.jp":true,"xn--qqqt11m.jp":true,"xn--kbrq7o.jp":true,"xn--pssu33l.jp":true,"xn--ntsq17g.jp":true,"xn--uisz3g.jp":true,"xn--6btw5a.jp":true,"xn--1ctwo.jp":true,"xn--6orx2r.jp":true,"xn--rht61e.jp":true,"xn--rht27z.jp":true,"xn--djty4k.jp":true,"xn--nit225k.jp":true,"xn--rht3d.jp":true,"xn--klty5x.jp":true,"xn--kltx9a.jp":true,"xn--kltp7d.jp":true,"xn--uuwu58a.jp":true,"xn--zbx025d.jp":true,"xn--ntso0iqx3a.jp":true,"xn--elqq16h.jp":true,"xn--4it168d.jp":true,"xn--klt787d.jp":true,"xn--rny31h.jp":true,"xn--7t0a264c.jp":true,"xn--5rtq34k.jp":true,"xn--k7yn95e.jp":true,"xn--tor131o.jp":true,"xn--d5qv7z876c.jp":true,"*.kawasaki.jp":true,"*.kitakyushu.jp":true,"*.kobe.jp":true,"*.nagoya.jp":true,"*.sapporo.jp":true,"*.sendai.jp":true,"*.yokohama.jp":true,"city.kawasaki.jp":false,"city.kitakyushu.jp":false,"city.kobe.jp":false,"city.nagoya.jp":false,"city.sapporo.jp":false,"city.sendai.jp":false,"city.yokohama.jp":false,"aisai.aichi.jp":true,"ama.aichi.jp":true,"anjo.aichi.jp":true,"asuke.aichi.jp":true,"chiryu.aichi.jp":true,"chita.aichi.jp":true,"fuso.aichi.jp":true,"gamagori.aichi.jp":true,"handa.aichi.jp":true,"hazu.aichi.jp":true,"hekinan.aichi.jp":true,"higashiura.aichi.jp":true,"ichinomiya.aichi.jp":true,"inazawa.aichi.jp":true,"inuyama.aichi.jp":true,"isshiki.aichi.jp":true,"iwakura.aichi.jp":true,"kanie.aichi.jp":true,"kariya.aichi.jp":true,"kasugai.aichi.jp":true,"kira.aichi.jp":true,"kiyosu.aichi.jp":true,"komaki.aichi.jp":true,"konan.aichi.jp":true,"kota.aichi.jp":true,"mihama.aichi.jp":true,"miyoshi.aichi.jp":true,"nishio.aichi.jp":true,"nisshin.aichi.jp":true,"obu.aichi.jp":true,"oguchi.aichi.jp":true,"oharu.aichi.jp":true,"okazaki.aichi.jp":true,"owariasahi.aichi.jp":true,"seto.aichi.jp":true,"shikatsu.aichi.jp":true,"shinshiro.aichi.jp":true,"shitara.aichi.jp":true,"tahara.aichi.jp":true,"takahama.aichi.jp":true,"tobishima.aichi.jp":true,"toei.aichi.jp":true,"togo.aichi.jp":true,"tokai.aichi.jp":true,"tokoname.aichi.jp":true,"toyoake.aichi.jp":true,"toyohashi.aichi.jp":true,"toyokawa.aichi.jp":true,"toyone.aichi.jp":true,"toyota.aichi.jp":true,"tsushima.aichi.jp":true,"yatomi.aichi.jp":true,"akita.akita.jp":true,"daisen.akita.jp":true,"fujisato.akita.jp":true,"gojome.akita.jp":true,"hachirogata.akita.jp":true,"happou.akita.jp":true,"higashinaruse.akita.jp":true,"honjo.akita.jp":true,"honjyo.akita.jp":true,"ikawa.akita.jp":true,"kamikoani.akita.jp":true,"kamioka.akita.jp":true,"katagami.akita.jp":true,"kazuno.akita.jp":true,"kitaakita.akita.jp":true,"kosaka.akita.jp":true,"kyowa.akita.jp":true,"misato.akita.jp":true,"mitane.akita.jp":true,"moriyoshi.akita.jp":true,"nikaho.akita.jp":true,"noshiro.akita.jp":true,"odate.akita.jp":true,"oga.akita.jp":true,"ogata.akita.jp":true,"semboku.akita.jp":true,"yokote.akita.jp":true,"yurihonjo.akita.jp":true,"aomori.aomori.jp":true,"gonohe.aomori.jp":true,"hachinohe.aomori.jp":true,"hashikami.aomori.jp":true,"hiranai.aomori.jp":true,"hirosaki.aomori.jp":true,"itayanagi.aomori.jp":true,"kuroishi.aomori.jp":true,"misawa.aomori.jp":true,"mutsu.aomori.jp":true,"nakadomari.aomori.jp":true,"noheji.aomori.jp":true,"oirase.aomori.jp":true,"owani.aomori.jp":true,"rokunohe.aomori.jp":true,"sannohe.aomori.jp":true,"shichinohe.aomori.jp":true,"shingo.aomori.jp":true,"takko.aomori.jp":true,"towada.aomori.jp":true,"tsugaru.aomori.jp":true,"tsuruta.aomori.jp":true,"abiko.chiba.jp":true,"asahi.chiba.jp":true,"chonan.chiba.jp":true,"chosei.chiba.jp":true,"choshi.chiba.jp":true,"chuo.chiba.jp":true,"funabashi.chiba.jp":true,"futtsu.chiba.jp":true,"hanamigawa.chiba.jp":true,"ichihara.chiba.jp":true,"ichikawa.chiba.jp":true,"ichinomiya.chiba.jp":true,"inzai.chiba.jp":true,"isumi.chiba.jp":true,"kamagaya.chiba.jp":true,"kamogawa.chiba.jp":true,"kashiwa.chiba.jp":true,"katori.chiba.jp":true,"katsuura.chiba.jp":true,"kimitsu.chiba.jp":true,"kisarazu.chiba.jp":true,"kozaki.chiba.jp":true,"kujukuri.chiba.jp":true,"kyonan.chiba.jp":true,"matsudo.chiba.jp":true,"midori.chiba.jp":true,"mihama.chiba.jp":true,"minamiboso.chiba.jp":true,"mobara.chiba.jp":true,"mutsuzawa.chiba.jp":true,"nagara.chiba.jp":true,"nagareyama.chiba.jp":true,"narashino.chiba.jp":true,"narita.chiba.jp":true,"noda.chiba.jp":true,"oamishirasato.chiba.jp":true,"omigawa.chiba.jp":true,"onjuku.chiba.jp":true,"otaki.chiba.jp":true,"sakae.chiba.jp":true,"sakura.chiba.jp":true,"shimofusa.chiba.jp":true,"shirako.chiba.jp":true,"shiroi.chiba.jp":true,"shisui.chiba.jp":true,"sodegaura.chiba.jp":true,"sosa.chiba.jp":true,"tako.chiba.jp":true,"tateyama.chiba.jp":true,"togane.chiba.jp":true,"tohnosho.chiba.jp":true,"tomisato.chiba.jp":true,"urayasu.chiba.jp":true,"yachimata.chiba.jp":true,"yachiyo.chiba.jp":true,"yokaichiba.chiba.jp":true,"yokoshibahikari.chiba.jp":true,"yotsukaido.chiba.jp":true,"ainan.ehime.jp":true,"honai.ehime.jp":true,"ikata.ehime.jp":true,"imabari.ehime.jp":true,"iyo.ehime.jp":true,"kamijima.ehime.jp":true,"kihoku.ehime.jp":true,"kumakogen.ehime.jp":true,"masaki.ehime.jp":true,"matsuno.ehime.jp":true,"matsuyama.ehime.jp":true,"namikata.ehime.jp":true,"niihama.ehime.jp":true,"ozu.ehime.jp":true,"saijo.ehime.jp":true,"seiyo.ehime.jp":true,"shikokuchuo.ehime.jp":true,"tobe.ehime.jp":true,"toon.ehime.jp":true,"uchiko.ehime.jp":true,"uwajima.ehime.jp":true,"yawatahama.ehime.jp":true,"echizen.fukui.jp":true,"eiheiji.fukui.jp":true,"fukui.fukui.jp":true,"ikeda.fukui.jp":true,"katsuyama.fukui.jp":true,"mihama.fukui.jp":true,"minamiechizen.fukui.jp":true,"obama.fukui.jp":true,"ohi.fukui.jp":true,"ono.fukui.jp":true,"sabae.fukui.jp":true,"sakai.fukui.jp":true,"takahama.fukui.jp":true,"tsuruga.fukui.jp":true,"wakasa.fukui.jp":true,"ashiya.fukuoka.jp":true,"buzen.fukuoka.jp":true,"chikugo.fukuoka.jp":true,"chikuho.fukuoka.jp":true,"chikujo.fukuoka.jp":true,"chikushino.fukuoka.jp":true,"chikuzen.fukuoka.jp":true,"chuo.fukuoka.jp":true,"dazaifu.fukuoka.jp":true,"fukuchi.fukuoka.jp":true,"hakata.fukuoka.jp":true,"higashi.fukuoka.jp":true,"hirokawa.fukuoka.jp":true,"hisayama.fukuoka.jp":true,"iizuka.fukuoka.jp":true,"inatsuki.fukuoka.jp":true,"kaho.fukuoka.jp":true,"kasuga.fukuoka.jp":true,"kasuya.fukuoka.jp":true,"kawara.fukuoka.jp":true,"keisen.fukuoka.jp":true,"koga.fukuoka.jp":true,"kurate.fukuoka.jp":true,"kurogi.fukuoka.jp":true,"kurume.fukuoka.jp":true,"minami.fukuoka.jp":true,"miyako.fukuoka.jp":true,"miyama.fukuoka.jp":true,"miyawaka.fukuoka.jp":true,"mizumaki.fukuoka.jp":true,"munakata.fukuoka.jp":true,"nakagawa.fukuoka.jp":true,"nakama.fukuoka.jp":true,"nishi.fukuoka.jp":true,"nogata.fukuoka.jp":true,"ogori.fukuoka.jp":true,"okagaki.fukuoka.jp":true,"okawa.fukuoka.jp":true,"oki.fukuoka.jp":true,"omuta.fukuoka.jp":true,"onga.fukuoka.jp":true,"onojo.fukuoka.jp":true,"oto.fukuoka.jp":true,"saigawa.fukuoka.jp":true,"sasaguri.fukuoka.jp":true,"shingu.fukuoka.jp":true,"shinyoshitomi.fukuoka.jp":true,"shonai.fukuoka.jp":true,"soeda.fukuoka.jp":true,"sue.fukuoka.jp":true,"tachiarai.fukuoka.jp":true,"tagawa.fukuoka.jp":true,"takata.fukuoka.jp":true,"toho.fukuoka.jp":true,"toyotsu.fukuoka.jp":true,"tsuiki.fukuoka.jp":true,"ukiha.fukuoka.jp":true,"umi.fukuoka.jp":true,"usui.fukuoka.jp":true,"yamada.fukuoka.jp":true,"yame.fukuoka.jp":true,"yanagawa.fukuoka.jp":true,"yukuhashi.fukuoka.jp":true,"aizubange.fukushima.jp":true,"aizumisato.fukushima.jp":true,"aizuwakamatsu.fukushima.jp":true,"asakawa.fukushima.jp":true,"bandai.fukushima.jp":true,"date.fukushima.jp":true,"fukushima.fukushima.jp":true,"furudono.fukushima.jp":true,"futaba.fukushima.jp":true,"hanawa.fukushima.jp":true,"higashi.fukushima.jp":true,"hirata.fukushima.jp":true,"hirono.fukushima.jp":true,"iitate.fukushima.jp":true,"inawashiro.fukushima.jp":true,"ishikawa.fukushima.jp":true,"iwaki.fukushima.jp":true,"izumizaki.fukushima.jp":true,"kagamiishi.fukushima.jp":true,"kaneyama.fukushima.jp":true,"kawamata.fukushima.jp":true,"kitakata.fukushima.jp":true,"kitashiobara.fukushima.jp":true,"koori.fukushima.jp":true,"koriyama.fukushima.jp":true,"kunimi.fukushima.jp":true,"miharu.fukushima.jp":true,"mishima.fukushima.jp":true,"namie.fukushima.jp":true,"nango.fukushima.jp":true,"nishiaizu.fukushima.jp":true,"nishigo.fukushima.jp":true,"okuma.fukushima.jp":true,"omotego.fukushima.jp":true,"ono.fukushima.jp":true,"otama.fukushima.jp":true,"samegawa.fukushima.jp":true,"shimogo.fukushima.jp":true,"shirakawa.fukushima.jp":true,"showa.fukushima.jp":true,"soma.fukushima.jp":true,"sukagawa.fukushima.jp":true,"taishin.fukushima.jp":true,"tamakawa.fukushima.jp":true,"tanagura.fukushima.jp":true,"tenei.fukushima.jp":true,"yabuki.fukushima.jp":true,"yamato.fukushima.jp":true,"yamatsuri.fukushima.jp":true,"yanaizu.fukushima.jp":true,"yugawa.fukushima.jp":true,"anpachi.gifu.jp":true,"ena.gifu.jp":true,"gifu.gifu.jp":true,"ginan.gifu.jp":true,"godo.gifu.jp":true,"gujo.gifu.jp":true,"hashima.gifu.jp":true,"hichiso.gifu.jp":true,"hida.gifu.jp":true,"higashishirakawa.gifu.jp":true,"ibigawa.gifu.jp":true,"ikeda.gifu.jp":true,"kakamigahara.gifu.jp":true,"kani.gifu.jp":true,"kasahara.gifu.jp":true,"kasamatsu.gifu.jp":true,"kawaue.gifu.jp":true,"kitagata.gifu.jp":true,"mino.gifu.jp":true,"minokamo.gifu.jp":true,"mitake.gifu.jp":true,"mizunami.gifu.jp":true,"motosu.gifu.jp":true,"nakatsugawa.gifu.jp":true,"ogaki.gifu.jp":true,"sakahogi.gifu.jp":true,"seki.gifu.jp":true,"sekigahara.gifu.jp":true,"shirakawa.gifu.jp":true,"tajimi.gifu.jp":true,"takayama.gifu.jp":true,"tarui.gifu.jp":true,"toki.gifu.jp":true,"tomika.gifu.jp":true,"wanouchi.gifu.jp":true,"yamagata.gifu.jp":true,"yaotsu.gifu.jp":true,"yoro.gifu.jp":true,"annaka.gunma.jp":true,"chiyoda.gunma.jp":true,"fujioka.gunma.jp":true,"higashiagatsuma.gunma.jp":true,"isesaki.gunma.jp":true,"itakura.gunma.jp":true,"kanna.gunma.jp":true,"kanra.gunma.jp":true,"katashina.gunma.jp":true,"kawaba.gunma.jp":true,"kiryu.gunma.jp":true,"kusatsu.gunma.jp":true,"maebashi.gunma.jp":true,"meiwa.gunma.jp":true,"midori.gunma.jp":true,"minakami.gunma.jp":true,"naganohara.gunma.jp":true,"nakanojo.gunma.jp":true,"nanmoku.gunma.jp":true,"numata.gunma.jp":true,"oizumi.gunma.jp":true,"ora.gunma.jp":true,"ota.gunma.jp":true,"shibukawa.gunma.jp":true,"shimonita.gunma.jp":true,"shinto.gunma.jp":true,"showa.gunma.jp":true,"takasaki.gunma.jp":true,"takayama.gunma.jp":true,"tamamura.gunma.jp":true,"tatebayashi.gunma.jp":true,"tomioka.gunma.jp":true,"tsukiyono.gunma.jp":true,"tsumagoi.gunma.jp":true,"ueno.gunma.jp":true,"yoshioka.gunma.jp":true,"asaminami.hiroshima.jp":true,"daiwa.hiroshima.jp":true,"etajima.hiroshima.jp":true,"fuchu.hiroshima.jp":true,"fukuyama.hiroshima.jp":true,"hatsukaichi.hiroshima.jp":true,"higashihiroshima.hiroshima.jp":true,"hongo.hiroshima.jp":true,"jinsekikogen.hiroshima.jp":true,"kaita.hiroshima.jp":true,"kui.hiroshima.jp":true,"kumano.hiroshima.jp":true,"kure.hiroshima.jp":true,"mihara.hiroshima.jp":true,"miyoshi.hiroshima.jp":true,"naka.hiroshima.jp":true,"onomichi.hiroshima.jp":true,"osakikamijima.hiroshima.jp":true,"otake.hiroshima.jp":true,"saka.hiroshima.jp":true,"sera.hiroshima.jp":true,"seranishi.hiroshima.jp":true,"shinichi.hiroshima.jp":true,"shobara.hiroshima.jp":true,"takehara.hiroshima.jp":true,"abashiri.hokkaido.jp":true,"abira.hokkaido.jp":true,"aibetsu.hokkaido.jp":true,"akabira.hokkaido.jp":true,"akkeshi.hokkaido.jp":true,"asahikawa.hokkaido.jp":true,"ashibetsu.hokkaido.jp":true,"ashoro.hokkaido.jp":true,"assabu.hokkaido.jp":true,"atsuma.hokkaido.jp":true,"bibai.hokkaido.jp":true,"biei.hokkaido.jp":true,"bifuka.hokkaido.jp":true,"bihoro.hokkaido.jp":true,"biratori.hokkaido.jp":true,"chippubetsu.hokkaido.jp":true,"chitose.hokkaido.jp":true,"date.hokkaido.jp":true,"ebetsu.hokkaido.jp":true,"embetsu.hokkaido.jp":true,"eniwa.hokkaido.jp":true,"erimo.hokkaido.jp":true,"esan.hokkaido.jp":true,"esashi.hokkaido.jp":true,"fukagawa.hokkaido.jp":true,"fukushima.hokkaido.jp":true,"furano.hokkaido.jp":true,"furubira.hokkaido.jp":true,"haboro.hokkaido.jp":true,"hakodate.hokkaido.jp":true,"hamatonbetsu.hokkaido.jp":true,"hidaka.hokkaido.jp":true,"higashikagura.hokkaido.jp":true,"higashikawa.hokkaido.jp":true,"hiroo.hokkaido.jp":true,"hokuryu.hokkaido.jp":true,"hokuto.hokkaido.jp":true,"honbetsu.hokkaido.jp":true,"horokanai.hokkaido.jp":true,"horonobe.hokkaido.jp":true,"ikeda.hokkaido.jp":true,"imakane.hokkaido.jp":true,"ishikari.hokkaido.jp":true,"iwamizawa.hokkaido.jp":true,"iwanai.hokkaido.jp":true,"kamifurano.hokkaido.jp":true,"kamikawa.hokkaido.jp":true,"kamishihoro.hokkaido.jp":true,"kamisunagawa.hokkaido.jp":true,"kamoenai.hokkaido.jp":true,"kayabe.hokkaido.jp":true,"kembuchi.hokkaido.jp":true,"kikonai.hokkaido.jp":true,"kimobetsu.hokkaido.jp":true,"kitahiroshima.hokkaido.jp":true,"kitami.hokkaido.jp":true,"kiyosato.hokkaido.jp":true,"koshimizu.hokkaido.jp":true,"kunneppu.hokkaido.jp":true,"kuriyama.hokkaido.jp":true,"kuromatsunai.hokkaido.jp":true,"kushiro.hokkaido.jp":true,"kutchan.hokkaido.jp":true,"kyowa.hokkaido.jp":true,"mashike.hokkaido.jp":true,"matsumae.hokkaido.jp":true,"mikasa.hokkaido.jp":true,"minamifurano.hokkaido.jp":true,"mombetsu.hokkaido.jp":true,"moseushi.hokkaido.jp":true,"mukawa.hokkaido.jp":true,"muroran.hokkaido.jp":true,"naie.hokkaido.jp":true,"nakagawa.hokkaido.jp":true,"nakasatsunai.hokkaido.jp":true,"nakatombetsu.hokkaido.jp":true,"nanae.hokkaido.jp":true,"nanporo.hokkaido.jp":true,"nayoro.hokkaido.jp":true,"nemuro.hokkaido.jp":true,"niikappu.hokkaido.jp":true,"niki.hokkaido.jp":true,"nishiokoppe.hokkaido.jp":true,"noboribetsu.hokkaido.jp":true,"numata.hokkaido.jp":true,"obihiro.hokkaido.jp":true,"obira.hokkaido.jp":true,"oketo.hokkaido.jp":true,"okoppe.hokkaido.jp":true,"otaru.hokkaido.jp":true,"otobe.hokkaido.jp":true,"otofuke.hokkaido.jp":true,"otoineppu.hokkaido.jp":true,"oumu.hokkaido.jp":true,"ozora.hokkaido.jp":true,"pippu.hokkaido.jp":true,"rankoshi.hokkaido.jp":true,"rebun.hokkaido.jp":true,"rikubetsu.hokkaido.jp":true,"rishiri.hokkaido.jp":true,"rishirifuji.hokkaido.jp":true,"saroma.hokkaido.jp":true,"sarufutsu.hokkaido.jp":true,"shakotan.hokkaido.jp":true,"shari.hokkaido.jp":true,"shibecha.hokkaido.jp":true,"shibetsu.hokkaido.jp":true,"shikabe.hokkaido.jp":true,"shikaoi.hokkaido.jp":true,"shimamaki.hokkaido.jp":true,"shimizu.hokkaido.jp":true,"shimokawa.hokkaido.jp":true,"shinshinotsu.hokkaido.jp":true,"shintoku.hokkaido.jp":true,"shiranuka.hokkaido.jp":true,"shiraoi.hokkaido.jp":true,"shiriuchi.hokkaido.jp":true,"sobetsu.hokkaido.jp":true,"sunagawa.hokkaido.jp":true,"taiki.hokkaido.jp":true,"takasu.hokkaido.jp":true,"takikawa.hokkaido.jp":true,"takinoue.hokkaido.jp":true,"teshikaga.hokkaido.jp":true,"tobetsu.hokkaido.jp":true,"tohma.hokkaido.jp":true,"tomakomai.hokkaido.jp":true,"tomari.hokkaido.jp":true,"toya.hokkaido.jp":true,"toyako.hokkaido.jp":true,"toyotomi.hokkaido.jp":true,"toyoura.hokkaido.jp":true,"tsubetsu.hokkaido.jp":true,"tsukigata.hokkaido.jp":true,"urakawa.hokkaido.jp":true,"urausu.hokkaido.jp":true,"uryu.hokkaido.jp":true,"utashinai.hokkaido.jp":true,"wakkanai.hokkaido.jp":true,"wassamu.hokkaido.jp":true,"yakumo.hokkaido.jp":true,"yoichi.hokkaido.jp":true,"aioi.hyogo.jp":true,"akashi.hyogo.jp":true,"ako.hyogo.jp":true,"amagasaki.hyogo.jp":true,"aogaki.hyogo.jp":true,"asago.hyogo.jp":true,"ashiya.hyogo.jp":true,"awaji.hyogo.jp":true,"fukusaki.hyogo.jp":true,"goshiki.hyogo.jp":true,"harima.hyogo.jp":true,"himeji.hyogo.jp":true,"ichikawa.hyogo.jp":true,"inagawa.hyogo.jp":true,"itami.hyogo.jp":true,"kakogawa.hyogo.jp":true,"kamigori.hyogo.jp":true,"kamikawa.hyogo.jp":true,"kasai.hyogo.jp":true,"kasuga.hyogo.jp":true,"kawanishi.hyogo.jp":true,"miki.hyogo.jp":true,"minamiawaji.hyogo.jp":true,"nishinomiya.hyogo.jp":true,"nishiwaki.hyogo.jp":true,"ono.hyogo.jp":true,"sanda.hyogo.jp":true,"sannan.hyogo.jp":true,"sasayama.hyogo.jp":true,"sayo.hyogo.jp":true,"shingu.hyogo.jp":true,"shinonsen.hyogo.jp":true,"shiso.hyogo.jp":true,"sumoto.hyogo.jp":true,"taishi.hyogo.jp":true,"taka.hyogo.jp":true,"takarazuka.hyogo.jp":true,"takasago.hyogo.jp":true,"takino.hyogo.jp":true,"tamba.hyogo.jp":true,"tatsuno.hyogo.jp":true,"toyooka.hyogo.jp":true,"yabu.hyogo.jp":true,"yashiro.hyogo.jp":true,"yoka.hyogo.jp":true,"yokawa.hyogo.jp":true,"ami.ibaraki.jp":true,"asahi.ibaraki.jp":true,"bando.ibaraki.jp":true,"chikusei.ibaraki.jp":true,"daigo.ibaraki.jp":true,"fujishiro.ibaraki.jp":true,"hitachi.ibaraki.jp":true,"hitachinaka.ibaraki.jp":true,"hitachiomiya.ibaraki.jp":true,"hitachiota.ibaraki.jp":true,"ibaraki.ibaraki.jp":true,"ina.ibaraki.jp":true,"inashiki.ibaraki.jp":true,"itako.ibaraki.jp":true,"iwama.ibaraki.jp":true,"joso.ibaraki.jp":true,"kamisu.ibaraki.jp":true,"kasama.ibaraki.jp":true,"kashima.ibaraki.jp":true,"kasumigaura.ibaraki.jp":true,"koga.ibaraki.jp":true,"miho.ibaraki.jp":true,"mito.ibaraki.jp":true,"moriya.ibaraki.jp":true,"naka.ibaraki.jp":true,"namegata.ibaraki.jp":true,"oarai.ibaraki.jp":true,"ogawa.ibaraki.jp":true,"omitama.ibaraki.jp":true,"ryugasaki.ibaraki.jp":true,"sakai.ibaraki.jp":true,"sakuragawa.ibaraki.jp":true,"shimodate.ibaraki.jp":true,"shimotsuma.ibaraki.jp":true,"shirosato.ibaraki.jp":true,"sowa.ibaraki.jp":true,"suifu.ibaraki.jp":true,"takahagi.ibaraki.jp":true,"tamatsukuri.ibaraki.jp":true,"tokai.ibaraki.jp":true,"tomobe.ibaraki.jp":true,"tone.ibaraki.jp":true,"toride.ibaraki.jp":true,"tsuchiura.ibaraki.jp":true,"tsukuba.ibaraki.jp":true,"uchihara.ibaraki.jp":true,"ushiku.ibaraki.jp":true,"yachiyo.ibaraki.jp":true,"yamagata.ibaraki.jp":true,"yawara.ibaraki.jp":true,"yuki.ibaraki.jp":true,"anamizu.ishikawa.jp":true,"hakui.ishikawa.jp":true,"hakusan.ishikawa.jp":true,"kaga.ishikawa.jp":true,"kahoku.ishikawa.jp":true,"kanazawa.ishikawa.jp":true,"kawakita.ishikawa.jp":true,"komatsu.ishikawa.jp":true,"nakanoto.ishikawa.jp":true,"nanao.ishikawa.jp":true,"nomi.ishikawa.jp":true,"nonoichi.ishikawa.jp":true,"noto.ishikawa.jp":true,"shika.ishikawa.jp":true,"suzu.ishikawa.jp":true,"tsubata.ishikawa.jp":true,"tsurugi.ishikawa.jp":true,"uchinada.ishikawa.jp":true,"wajima.ishikawa.jp":true,"fudai.iwate.jp":true,"fujisawa.iwate.jp":true,"hanamaki.iwate.jp":true,"hiraizumi.iwate.jp":true,"hirono.iwate.jp":true,"ichinohe.iwate.jp":true,"ichinoseki.iwate.jp":true,"iwaizumi.iwate.jp":true,"iwate.iwate.jp":true,"joboji.iwate.jp":true,"kamaishi.iwate.jp":true,"kanegasaki.iwate.jp":true,"karumai.iwate.jp":true,"kawai.iwate.jp":true,"kitakami.iwate.jp":true,"kuji.iwate.jp":true,"kunohe.iwate.jp":true,"kuzumaki.iwate.jp":true,"miyako.iwate.jp":true,"mizusawa.iwate.jp":true,"morioka.iwate.jp":true,"ninohe.iwate.jp":true,"noda.iwate.jp":true,"ofunato.iwate.jp":true,"oshu.iwate.jp":true,"otsuchi.iwate.jp":true,"rikuzentakata.iwate.jp":true,"shiwa.iwate.jp":true,"shizukuishi.iwate.jp":true,"sumita.iwate.jp":true,"tanohata.iwate.jp":true,"tono.iwate.jp":true,"yahaba.iwate.jp":true,"yamada.iwate.jp":true,"ayagawa.kagawa.jp":true,"higashikagawa.kagawa.jp":true,"kanonji.kagawa.jp":true,"kotohira.kagawa.jp":true,"manno.kagawa.jp":true,"marugame.kagawa.jp":true,"mitoyo.kagawa.jp":true,"naoshima.kagawa.jp":true,"sanuki.kagawa.jp":true,"tadotsu.kagawa.jp":true,"takamatsu.kagawa.jp":true,"tonosho.kagawa.jp":true,"uchinomi.kagawa.jp":true,"utazu.kagawa.jp":true,"zentsuji.kagawa.jp":true,"akune.kagoshima.jp":true,"amami.kagoshima.jp":true,"hioki.kagoshima.jp":true,"isa.kagoshima.jp":true,"isen.kagoshima.jp":true,"izumi.kagoshima.jp":true,"kagoshima.kagoshima.jp":true,"kanoya.kagoshima.jp":true,"kawanabe.kagoshima.jp":true,"kinko.kagoshima.jp":true,"kouyama.kagoshima.jp":true,"makurazaki.kagoshima.jp":true,"matsumoto.kagoshima.jp":true,"minamitane.kagoshima.jp":true,"nakatane.kagoshima.jp":true,"nishinoomote.kagoshima.jp":true,"satsumasendai.kagoshima.jp":true,"soo.kagoshima.jp":true,"tarumizu.kagoshima.jp":true,"yusui.kagoshima.jp":true,"aikawa.kanagawa.jp":true,"atsugi.kanagawa.jp":true,"ayase.kanagawa.jp":true,"chigasaki.kanagawa.jp":true,"ebina.kanagawa.jp":true,"fujisawa.kanagawa.jp":true,"hadano.kanagawa.jp":true,"hakone.kanagawa.jp":true,"hiratsuka.kanagawa.jp":true,"isehara.kanagawa.jp":true,"kaisei.kanagawa.jp":true,"kamakura.kanagawa.jp":true,"kiyokawa.kanagawa.jp":true,"matsuda.kanagawa.jp":true,"minamiashigara.kanagawa.jp":true,"miura.kanagawa.jp":true,"nakai.kanagawa.jp":true,"ninomiya.kanagawa.jp":true,"odawara.kanagawa.jp":true,"oi.kanagawa.jp":true,"oiso.kanagawa.jp":true,"sagamihara.kanagawa.jp":true,"samukawa.kanagawa.jp":true,"tsukui.kanagawa.jp":true,"yamakita.kanagawa.jp":true,"yamato.kanagawa.jp":true,"yokosuka.kanagawa.jp":true,"yugawara.kanagawa.jp":true,"zama.kanagawa.jp":true,"zushi.kanagawa.jp":true,"aki.kochi.jp":true,"geisei.kochi.jp":true,"hidaka.kochi.jp":true,"higashitsuno.kochi.jp":true,"ino.kochi.jp":true,"kagami.kochi.jp":true,"kami.kochi.jp":true,"kitagawa.kochi.jp":true,"kochi.kochi.jp":true,"mihara.kochi.jp":true,"motoyama.kochi.jp":true,"muroto.kochi.jp":true,"nahari.kochi.jp":true,"nakamura.kochi.jp":true,"nankoku.kochi.jp":true,"nishitosa.kochi.jp":true,"niyodogawa.kochi.jp":true,"ochi.kochi.jp":true,"okawa.kochi.jp":true,"otoyo.kochi.jp":true,"otsuki.kochi.jp":true,"sakawa.kochi.jp":true,"sukumo.kochi.jp":true,"susaki.kochi.jp":true,"tosa.kochi.jp":true,"tosashimizu.kochi.jp":true,"toyo.kochi.jp":true,"tsuno.kochi.jp":true,"umaji.kochi.jp":true,"yasuda.kochi.jp":true,"yusuhara.kochi.jp":true,"amakusa.kumamoto.jp":true,"arao.kumamoto.jp":true,"aso.kumamoto.jp":true,"choyo.kumamoto.jp":true,"gyokuto.kumamoto.jp":true,"hitoyoshi.kumamoto.jp":true,"kamiamakusa.kumamoto.jp":true,"kashima.kumamoto.jp":true,"kikuchi.kumamoto.jp":true,"kosa.kumamoto.jp":true,"kumamoto.kumamoto.jp":true,"mashiki.kumamoto.jp":true,"mifune.kumamoto.jp":true,"minamata.kumamoto.jp":true,"minamioguni.kumamoto.jp":true,"nagasu.kumamoto.jp":true,"nishihara.kumamoto.jp":true,"oguni.kumamoto.jp":true,"ozu.kumamoto.jp":true,"sumoto.kumamoto.jp":true,"takamori.kumamoto.jp":true,"uki.kumamoto.jp":true,"uto.kumamoto.jp":true,"yamaga.kumamoto.jp":true,"yamato.kumamoto.jp":true,"yatsushiro.kumamoto.jp":true,"ayabe.kyoto.jp":true,"fukuchiyama.kyoto.jp":true,"higashiyama.kyoto.jp":true,"ide.kyoto.jp":true,"ine.kyoto.jp":true,"joyo.kyoto.jp":true,"kameoka.kyoto.jp":true,"kamo.kyoto.jp":true,"kita.kyoto.jp":true,"kizu.kyoto.jp":true,"kumiyama.kyoto.jp":true,"kyotamba.kyoto.jp":true,"kyotanabe.kyoto.jp":true,"kyotango.kyoto.jp":true,"maizuru.kyoto.jp":true,"minami.kyoto.jp":true,"minamiyamashiro.kyoto.jp":true,"miyazu.kyoto.jp":true,"muko.kyoto.jp":true,"nagaokakyo.kyoto.jp":true,"nakagyo.kyoto.jp":true,"nantan.kyoto.jp":true,"oyamazaki.kyoto.jp":true,"sakyo.kyoto.jp":true,"seika.kyoto.jp":true,"tanabe.kyoto.jp":true,"uji.kyoto.jp":true,"ujitawara.kyoto.jp":true,"wazuka.kyoto.jp":true,"yamashina.kyoto.jp":true,"yawata.kyoto.jp":true,"asahi.mie.jp":true,"inabe.mie.jp":true,"ise.mie.jp":true,"kameyama.mie.jp":true,"kawagoe.mie.jp":true,"kiho.mie.jp":true,"kisosaki.mie.jp":true,"kiwa.mie.jp":true,"komono.mie.jp":true,"kumano.mie.jp":true,"kuwana.mie.jp":true,"matsusaka.mie.jp":true,"meiwa.mie.jp":true,"mihama.mie.jp":true,"minamiise.mie.jp":true,"misugi.mie.jp":true,"miyama.mie.jp":true,"nabari.mie.jp":true,"shima.mie.jp":true,"suzuka.mie.jp":true,"tado.mie.jp":true,"taiki.mie.jp":true,"taki.mie.jp":true,"tamaki.mie.jp":true,"toba.mie.jp":true,"tsu.mie.jp":true,"udono.mie.jp":true,"ureshino.mie.jp":true,"watarai.mie.jp":true,"yokkaichi.mie.jp":true,"furukawa.miyagi.jp":true,"higashimatsushima.miyagi.jp":true,"ishinomaki.miyagi.jp":true,"iwanuma.miyagi.jp":true,"kakuda.miyagi.jp":true,"kami.miyagi.jp":true,"kawasaki.miyagi.jp":true,"kesennuma.miyagi.jp":true,"marumori.miyagi.jp":true,"matsushima.miyagi.jp":true,"minamisanriku.miyagi.jp":true,"misato.miyagi.jp":true,"murata.miyagi.jp":true,"natori.miyagi.jp":true,"ogawara.miyagi.jp":true,"ohira.miyagi.jp":true,"onagawa.miyagi.jp":true,"osaki.miyagi.jp":true,"rifu.miyagi.jp":true,"semine.miyagi.jp":true,"shibata.miyagi.jp":true,"shichikashuku.miyagi.jp":true,"shikama.miyagi.jp":true,"shiogama.miyagi.jp":true,"shiroishi.miyagi.jp":true,"tagajo.miyagi.jp":true,"taiwa.miyagi.jp":true,"tome.miyagi.jp":true,"tomiya.miyagi.jp":true,"wakuya.miyagi.jp":true,"watari.miyagi.jp":true,"yamamoto.miyagi.jp":true,"zao.miyagi.jp":true,"aya.miyazaki.jp":true,"ebino.miyazaki.jp":true,"gokase.miyazaki.jp":true,"hyuga.miyazaki.jp":true,"kadogawa.miyazaki.jp":true,"kawaminami.miyazaki.jp":true,"kijo.miyazaki.jp":true,"kitagawa.miyazaki.jp":true,"kitakata.miyazaki.jp":true,"kitaura.miyazaki.jp":true,"kobayashi.miyazaki.jp":true,"kunitomi.miyazaki.jp":true,"kushima.miyazaki.jp":true,"mimata.miyazaki.jp":true,"miyakonojo.miyazaki.jp":true,"miyazaki.miyazaki.jp":true,"morotsuka.miyazaki.jp":true,"nichinan.miyazaki.jp":true,"nishimera.miyazaki.jp":true,"nobeoka.miyazaki.jp":true,"saito.miyazaki.jp":true,"shiiba.miyazaki.jp":true,"shintomi.miyazaki.jp":true,"takaharu.miyazaki.jp":true,"takanabe.miyazaki.jp":true,"takazaki.miyazaki.jp":true,"tsuno.miyazaki.jp":true,"achi.nagano.jp":true,"agematsu.nagano.jp":true,"anan.nagano.jp":true,"aoki.nagano.jp":true,"asahi.nagano.jp":true,"azumino.nagano.jp":true,"chikuhoku.nagano.jp":true,"chikuma.nagano.jp":true,"chino.nagano.jp":true,"fujimi.nagano.jp":true,"hakuba.nagano.jp":true,"hara.nagano.jp":true,"hiraya.nagano.jp":true,"iida.nagano.jp":true,"iijima.nagano.jp":true,"iiyama.nagano.jp":true,"iizuna.nagano.jp":true,"ikeda.nagano.jp":true,"ikusaka.nagano.jp":true,"ina.nagano.jp":true,"karuizawa.nagano.jp":true,"kawakami.nagano.jp":true,"kiso.nagano.jp":true,"kisofukushima.nagano.jp":true,"kitaaiki.nagano.jp":true,"komagane.nagano.jp":true,"komoro.nagano.jp":true,"matsukawa.nagano.jp":true,"matsumoto.nagano.jp":true,"miasa.nagano.jp":true,"minamiaiki.nagano.jp":true,"minamimaki.nagano.jp":true,"minamiminowa.nagano.jp":true,"minowa.nagano.jp":true,"miyada.nagano.jp":true,"miyota.nagano.jp":true,"mochizuki.nagano.jp":true,"nagano.nagano.jp":true,"nagawa.nagano.jp":true,"nagiso.nagano.jp":true,"nakagawa.nagano.jp":true,"nakano.nagano.jp":true,"nozawaonsen.nagano.jp":true,"obuse.nagano.jp":true,"ogawa.nagano.jp":true,"okaya.nagano.jp":true,"omachi.nagano.jp":true,"omi.nagano.jp":true,"ookuwa.nagano.jp":true,"ooshika.nagano.jp":true,"otaki.nagano.jp":true,"otari.nagano.jp":true,"sakae.nagano.jp":true,"sakaki.nagano.jp":true,"saku.nagano.jp":true,"sakuho.nagano.jp":true,"shimosuwa.nagano.jp":true,"shinanomachi.nagano.jp":true,"shiojiri.nagano.jp":true,"suwa.nagano.jp":true,"suzaka.nagano.jp":true,"takagi.nagano.jp":true,"takamori.nagano.jp":true,"takayama.nagano.jp":true,"tateshina.nagano.jp":true,"tatsuno.nagano.jp":true,"togakushi.nagano.jp":true,"togura.nagano.jp":true,"tomi.nagano.jp":true,"ueda.nagano.jp":true,"wada.nagano.jp":true,"yamagata.nagano.jp":true,"yamanouchi.nagano.jp":true,"yasaka.nagano.jp":true,"yasuoka.nagano.jp":true,"chijiwa.nagasaki.jp":true,"futsu.nagasaki.jp":true,"goto.nagasaki.jp":true,"hasami.nagasaki.jp":true,"hirado.nagasaki.jp":true,"iki.nagasaki.jp":true,"isahaya.nagasaki.jp":true,"kawatana.nagasaki.jp":true,"kuchinotsu.nagasaki.jp":true,"matsuura.nagasaki.jp":true,"nagasaki.nagasaki.jp":true,"obama.nagasaki.jp":true,"omura.nagasaki.jp":true,"oseto.nagasaki.jp":true,"saikai.nagasaki.jp":true,"sasebo.nagasaki.jp":true,"seihi.nagasaki.jp":true,"shimabara.nagasaki.jp":true,"shinkamigoto.nagasaki.jp":true,"togitsu.nagasaki.jp":true,"tsushima.nagasaki.jp":true,"unzen.nagasaki.jp":true,"ando.nara.jp":true,"gose.nara.jp":true,"heguri.nara.jp":true,"higashiyoshino.nara.jp":true,"ikaruga.nara.jp":true,"ikoma.nara.jp":true,"kamikitayama.nara.jp":true,"kanmaki.nara.jp":true,"kashiba.nara.jp":true,"kashihara.nara.jp":true,"katsuragi.nara.jp":true,"kawai.nara.jp":true,"kawakami.nara.jp":true,"kawanishi.nara.jp":true,"koryo.nara.jp":true,"kurotaki.nara.jp":true,"mitsue.nara.jp":true,"miyake.nara.jp":true,"nara.nara.jp":true,"nosegawa.nara.jp":true,"oji.nara.jp":true,"ouda.nara.jp":true,"oyodo.nara.jp":true,"sakurai.nara.jp":true,"sango.nara.jp":true,"shimoichi.nara.jp":true,"shimokitayama.nara.jp":true,"shinjo.nara.jp":true,"soni.nara.jp":true,"takatori.nara.jp":true,"tawaramoto.nara.jp":true,"tenkawa.nara.jp":true,"tenri.nara.jp":true,"uda.nara.jp":true,"yamatokoriyama.nara.jp":true,"yamatotakada.nara.jp":true,"yamazoe.nara.jp":true,"yoshino.nara.jp":true,"aga.niigata.jp":true,"agano.niigata.jp":true,"gosen.niigata.jp":true,"itoigawa.niigata.jp":true,"izumozaki.niigata.jp":true,"joetsu.niigata.jp":true,"kamo.niigata.jp":true,"kariwa.niigata.jp":true,"kashiwazaki.niigata.jp":true,"minamiuonuma.niigata.jp":true,"mitsuke.niigata.jp":true,"muika.niigata.jp":true,"murakami.niigata.jp":true,"myoko.niigata.jp":true,"nagaoka.niigata.jp":true,"niigata.niigata.jp":true,"ojiya.niigata.jp":true,"omi.niigata.jp":true,"sado.niigata.jp":true,"sanjo.niigata.jp":true,"seiro.niigata.jp":true,"seirou.niigata.jp":true,"sekikawa.niigata.jp":true,"shibata.niigata.jp":true,"tagami.niigata.jp":true,"tainai.niigata.jp":true,"tochio.niigata.jp":true,"tokamachi.niigata.jp":true,"tsubame.niigata.jp":true,"tsunan.niigata.jp":true,"uonuma.niigata.jp":true,"yahiko.niigata.jp":true,"yoita.niigata.jp":true,"yuzawa.niigata.jp":true,"beppu.oita.jp":true,"bungoono.oita.jp":true,"bungotakada.oita.jp":true,"hasama.oita.jp":true,"hiji.oita.jp":true,"himeshima.oita.jp":true,"hita.oita.jp":true,"kamitsue.oita.jp":true,"kokonoe.oita.jp":true,"kuju.oita.jp":true,"kunisaki.oita.jp":true,"kusu.oita.jp":true,"oita.oita.jp":true,"saiki.oita.jp":true,"taketa.oita.jp":true,"tsukumi.oita.jp":true,"usa.oita.jp":true,"usuki.oita.jp":true,"yufu.oita.jp":true,"akaiwa.okayama.jp":true,"asakuchi.okayama.jp":true,"bizen.okayama.jp":true,"hayashima.okayama.jp":true,"ibara.okayama.jp":true,"kagamino.okayama.jp":true,"kasaoka.okayama.jp":true,"kibichuo.okayama.jp":true,"kumenan.okayama.jp":true,"kurashiki.okayama.jp":true,"maniwa.okayama.jp":true,"misaki.okayama.jp":true,"nagi.okayama.jp":true,"niimi.okayama.jp":true,"nishiawakura.okayama.jp":true,"okayama.okayama.jp":true,"satosho.okayama.jp":true,"setouchi.okayama.jp":true,"shinjo.okayama.jp":true,"shoo.okayama.jp":true,"soja.okayama.jp":true,"takahashi.okayama.jp":true,"tamano.okayama.jp":true,"tsuyama.okayama.jp":true,"wake.okayama.jp":true,"yakage.okayama.jp":true,"aguni.okinawa.jp":true,"ginowan.okinawa.jp":true,"ginoza.okinawa.jp":true,"gushikami.okinawa.jp":true,"haebaru.okinawa.jp":true,"higashi.okinawa.jp":true,"hirara.okinawa.jp":true,"iheya.okinawa.jp":true,"ishigaki.okinawa.jp":true,"ishikawa.okinawa.jp":true,"itoman.okinawa.jp":true,"izena.okinawa.jp":true,"kadena.okinawa.jp":true,"kin.okinawa.jp":true,"kitadaito.okinawa.jp":true,"kitanakagusuku.okinawa.jp":true,"kumejima.okinawa.jp":true,"kunigami.okinawa.jp":true,"minamidaito.okinawa.jp":true,"motobu.okinawa.jp":true,"nago.okinawa.jp":true,"naha.okinawa.jp":true,"nakagusuku.okinawa.jp":true,"nakijin.okinawa.jp":true,"nanjo.okinawa.jp":true,"nishihara.okinawa.jp":true,"ogimi.okinawa.jp":true,"okinawa.okinawa.jp":true,"onna.okinawa.jp":true,"shimoji.okinawa.jp":true,"taketomi.okinawa.jp":true,"tarama.okinawa.jp":true,"tokashiki.okinawa.jp":true,"tomigusuku.okinawa.jp":true,"tonaki.okinawa.jp":true,"urasoe.okinawa.jp":true,"uruma.okinawa.jp":true,"yaese.okinawa.jp":true,"yomitan.okinawa.jp":true,"yonabaru.okinawa.jp":true,"yonaguni.okinawa.jp":true,"zamami.okinawa.jp":true,"abeno.osaka.jp":true,"chihayaakasaka.osaka.jp":true,"chuo.osaka.jp":true,"daito.osaka.jp":true,"fujiidera.osaka.jp":true,"habikino.osaka.jp":true,"hannan.osaka.jp":true,"higashiosaka.osaka.jp":true,"higashisumiyoshi.osaka.jp":true,"higashiyodogawa.osaka.jp":true,"hirakata.osaka.jp":true,"ibaraki.osaka.jp":true,"ikeda.osaka.jp":true,"izumi.osaka.jp":true,"izumiotsu.osaka.jp":true,"izumisano.osaka.jp":true,"kadoma.osaka.jp":true,"kaizuka.osaka.jp":true,"kanan.osaka.jp":true,"kashiwara.osaka.jp":true,"katano.osaka.jp":true,"kawachinagano.osaka.jp":true,"kishiwada.osaka.jp":true,"kita.osaka.jp":true,"kumatori.osaka.jp":true,"matsubara.osaka.jp":true,"minato.osaka.jp":true,"minoh.osaka.jp":true,"misaki.osaka.jp":true,"moriguchi.osaka.jp":true,"neyagawa.osaka.jp":true,"nishi.osaka.jp":true,"nose.osaka.jp":true,"osakasayama.osaka.jp":true,"sakai.osaka.jp":true,"sayama.osaka.jp":true,"sennan.osaka.jp":true,"settsu.osaka.jp":true,"shijonawate.osaka.jp":true,"shimamoto.osaka.jp":true,"suita.osaka.jp":true,"tadaoka.osaka.jp":true,"taishi.osaka.jp":true,"tajiri.osaka.jp":true,"takaishi.osaka.jp":true,"takatsuki.osaka.jp":true,"tondabayashi.osaka.jp":true,"toyonaka.osaka.jp":true,"toyono.osaka.jp":true,"yao.osaka.jp":true,"ariake.saga.jp":true,"arita.saga.jp":true,"fukudomi.saga.jp":true,"genkai.saga.jp":true,"hamatama.saga.jp":true,"hizen.saga.jp":true,"imari.saga.jp":true,"kamimine.saga.jp":true,"kanzaki.saga.jp":true,"karatsu.saga.jp":true,"kashima.saga.jp":true,"kitagata.saga.jp":true,"kitahata.saga.jp":true,"kiyama.saga.jp":true,"kouhoku.saga.jp":true,"kyuragi.saga.jp":true,"nishiarita.saga.jp":true,"ogi.saga.jp":true,"omachi.saga.jp":true,"ouchi.saga.jp":true,"saga.saga.jp":true,"shiroishi.saga.jp":true,"taku.saga.jp":true,"tara.saga.jp":true,"tosu.saga.jp":true,"yoshinogari.saga.jp":true,"arakawa.saitama.jp":true,"asaka.saitama.jp":true,"chichibu.saitama.jp":true,"fujimi.saitama.jp":true,"fujimino.saitama.jp":true,"fukaya.saitama.jp":true,"hanno.saitama.jp":true,"hanyu.saitama.jp":true,"hasuda.saitama.jp":true,"hatogaya.saitama.jp":true,"hatoyama.saitama.jp":true,"hidaka.saitama.jp":true,"higashichichibu.saitama.jp":true,"higashimatsuyama.saitama.jp":true,"honjo.saitama.jp":true,"ina.saitama.jp":true,"iruma.saitama.jp":true,"iwatsuki.saitama.jp":true,"kamiizumi.saitama.jp":true,"kamikawa.saitama.jp":true,"kamisato.saitama.jp":true,"kasukabe.saitama.jp":true,"kawagoe.saitama.jp":true,"kawaguchi.saitama.jp":true,"kawajima.saitama.jp":true,"kazo.saitama.jp":true,"kitamoto.saitama.jp":true,"koshigaya.saitama.jp":true,"kounosu.saitama.jp":true,"kuki.saitama.jp":true,"kumagaya.saitama.jp":true,"matsubushi.saitama.jp":true,"minano.saitama.jp":true,"misato.saitama.jp":true,"miyashiro.saitama.jp":true,"miyoshi.saitama.jp":true,"moroyama.saitama.jp":true,"nagatoro.saitama.jp":true,"namegawa.saitama.jp":true,"niiza.saitama.jp":true,"ogano.saitama.jp":true,"ogawa.saitama.jp":true,"ogose.saitama.jp":true,"okegawa.saitama.jp":true,"omiya.saitama.jp":true,"otaki.saitama.jp":true,"ranzan.saitama.jp":true,"ryokami.saitama.jp":true,"saitama.saitama.jp":true,"sakado.saitama.jp":true,"satte.saitama.jp":true,"sayama.saitama.jp":true,"shiki.saitama.jp":true,"shiraoka.saitama.jp":true,"soka.saitama.jp":true,"sugito.saitama.jp":true,"toda.saitama.jp":true,"tokigawa.saitama.jp":true,"tokorozawa.saitama.jp":true,"tsurugashima.saitama.jp":true,"urawa.saitama.jp":true,"warabi.saitama.jp":true,"yashio.saitama.jp":true,"yokoze.saitama.jp":true,"yono.saitama.jp":true,"yorii.saitama.jp":true,"yoshida.saitama.jp":true,"yoshikawa.saitama.jp":true,"yoshimi.saitama.jp":true,"aisho.shiga.jp":true,"gamo.shiga.jp":true,"higashiomi.shiga.jp":true,"hikone.shiga.jp":true,"koka.shiga.jp":true,"konan.shiga.jp":true,"kosei.shiga.jp":true,"koto.shiga.jp":true,"kusatsu.shiga.jp":true,"maibara.shiga.jp":true,"moriyama.shiga.jp":true,"nagahama.shiga.jp":true,"nishiazai.shiga.jp":true,"notogawa.shiga.jp":true,"omihachiman.shiga.jp":true,"otsu.shiga.jp":true,"ritto.shiga.jp":true,"ryuoh.shiga.jp":true,"takashima.shiga.jp":true,"takatsuki.shiga.jp":true,"torahime.shiga.jp":true,"toyosato.shiga.jp":true,"yasu.shiga.jp":true,"akagi.shimane.jp":true,"ama.shimane.jp":true,"gotsu.shimane.jp":true,"hamada.shimane.jp":true,"higashiizumo.shimane.jp":true,"hikawa.shimane.jp":true,"hikimi.shimane.jp":true,"izumo.shimane.jp":true,"kakinoki.shimane.jp":true,"masuda.shimane.jp":true,"matsue.shimane.jp":true,"misato.shimane.jp":true,"nishinoshima.shimane.jp":true,"ohda.shimane.jp":true,"okinoshima.shimane.jp":true,"okuizumo.shimane.jp":true,"shimane.shimane.jp":true,"tamayu.shimane.jp":true,"tsuwano.shimane.jp":true,"unnan.shimane.jp":true,"yakumo.shimane.jp":true,"yasugi.shimane.jp":true,"yatsuka.shimane.jp":true,"arai.shizuoka.jp":true,"atami.shizuoka.jp":true,"fuji.shizuoka.jp":true,"fujieda.shizuoka.jp":true,"fujikawa.shizuoka.jp":true,"fujinomiya.shizuoka.jp":true,"fukuroi.shizuoka.jp":true,"gotemba.shizuoka.jp":true,"haibara.shizuoka.jp":true,"hamamatsu.shizuoka.jp":true,"higashiizu.shizuoka.jp":true,"ito.shizuoka.jp":true,"iwata.shizuoka.jp":true,"izu.shizuoka.jp":true,"izunokuni.shizuoka.jp":true,"kakegawa.shizuoka.jp":true,"kannami.shizuoka.jp":true,"kawanehon.shizuoka.jp":true,"kawazu.shizuoka.jp":true,"kikugawa.shizuoka.jp":true,"kosai.shizuoka.jp":true,"makinohara.shizuoka.jp":true,"matsuzaki.shizuoka.jp":true,"minamiizu.shizuoka.jp":true,"mishima.shizuoka.jp":true,"morimachi.shizuoka.jp":true,"nishiizu.shizuoka.jp":true,"numazu.shizuoka.jp":true,"omaezaki.shizuoka.jp":true,"shimada.shizuoka.jp":true,"shimizu.shizuoka.jp":true,"shimoda.shizuoka.jp":true,"shizuoka.shizuoka.jp":true,"susono.shizuoka.jp":true,"yaizu.shizuoka.jp":true,"yoshida.shizuoka.jp":true,"ashikaga.tochigi.jp":true,"bato.tochigi.jp":true,"haga.tochigi.jp":true,"ichikai.tochigi.jp":true,"iwafune.tochigi.jp":true,"kaminokawa.tochigi.jp":true,"kanuma.tochigi.jp":true,"karasuyama.tochigi.jp":true,"kuroiso.tochigi.jp":true,"mashiko.tochigi.jp":true,"mibu.tochigi.jp":true,"moka.tochigi.jp":true,"motegi.tochigi.jp":true,"nasu.tochigi.jp":true,"nasushiobara.tochigi.jp":true,"nikko.tochigi.jp":true,"nishikata.tochigi.jp":true,"nogi.tochigi.jp":true,"ohira.tochigi.jp":true,"ohtawara.tochigi.jp":true,"oyama.tochigi.jp":true,"sakura.tochigi.jp":true,"sano.tochigi.jp":true,"shimotsuke.tochigi.jp":true,"shioya.tochigi.jp":true,"takanezawa.tochigi.jp":true,"tochigi.tochigi.jp":true,"tsuga.tochigi.jp":true,"ujiie.tochigi.jp":true,"utsunomiya.tochigi.jp":true,"yaita.tochigi.jp":true,"aizumi.tokushima.jp":true,"anan.tokushima.jp":true,"ichiba.tokushima.jp":true,"itano.tokushima.jp":true,"kainan.tokushima.jp":true,"komatsushima.tokushima.jp":true,"matsushige.tokushima.jp":true,"mima.tokushima.jp":true,"minami.tokushima.jp":true,"miyoshi.tokushima.jp":true,"mugi.tokushima.jp":true,"nakagawa.tokushima.jp":true,"naruto.tokushima.jp":true,"sanagochi.tokushima.jp":true,"shishikui.tokushima.jp":true,"tokushima.tokushima.jp":true,"wajiki.tokushima.jp":true,"adachi.tokyo.jp":true,"akiruno.tokyo.jp":true,"akishima.tokyo.jp":true,"aogashima.tokyo.jp":true,"arakawa.tokyo.jp":true,"bunkyo.tokyo.jp":true,"chiyoda.tokyo.jp":true,"chofu.tokyo.jp":true,"chuo.tokyo.jp":true,"edogawa.tokyo.jp":true,"fuchu.tokyo.jp":true,"fussa.tokyo.jp":true,"hachijo.tokyo.jp":true,"hachioji.tokyo.jp":true,"hamura.tokyo.jp":true,"higashikurume.tokyo.jp":true,"higashimurayama.tokyo.jp":true,"higashiyamato.tokyo.jp":true,"hino.tokyo.jp":true,"hinode.tokyo.jp":true,"hinohara.tokyo.jp":true,"inagi.tokyo.jp":true,"itabashi.tokyo.jp":true,"katsushika.tokyo.jp":true,"kita.tokyo.jp":true,"kiyose.tokyo.jp":true,"kodaira.tokyo.jp":true,"koganei.tokyo.jp":true,"kokubunji.tokyo.jp":true,"komae.tokyo.jp":true,"koto.tokyo.jp":true,"kouzushima.tokyo.jp":true,"kunitachi.tokyo.jp":true,"machida.tokyo.jp":true,"meguro.tokyo.jp":true,"minato.tokyo.jp":true,"mitaka.tokyo.jp":true,"mizuho.tokyo.jp":true,"musashimurayama.tokyo.jp":true,"musashino.tokyo.jp":true,"nakano.tokyo.jp":true,"nerima.tokyo.jp":true,"ogasawara.tokyo.jp":true,"okutama.tokyo.jp":true,"ome.tokyo.jp":true,"oshima.tokyo.jp":true,"ota.tokyo.jp":true,"setagaya.tokyo.jp":true,"shibuya.tokyo.jp":true,"shinagawa.tokyo.jp":true,"shinjuku.tokyo.jp":true,"suginami.tokyo.jp":true,"sumida.tokyo.jp":true,"tachikawa.tokyo.jp":true,"taito.tokyo.jp":true,"tama.tokyo.jp":true,"toshima.tokyo.jp":true,"chizu.tottori.jp":true,"hino.tottori.jp":true,"kawahara.tottori.jp":true,"koge.tottori.jp":true,"kotoura.tottori.jp":true,"misasa.tottori.jp":true,"nanbu.tottori.jp":true,"nichinan.tottori.jp":true,"sakaiminato.tottori.jp":true,"tottori.tottori.jp":true,"wakasa.tottori.jp":true,"yazu.tottori.jp":true,"yonago.tottori.jp":true,"asahi.toyama.jp":true,"fuchu.toyama.jp":true,"fukumitsu.toyama.jp":true,"funahashi.toyama.jp":true,"himi.toyama.jp":true,"imizu.toyama.jp":true,"inami.toyama.jp":true,"johana.toyama.jp":true,"kamiichi.toyama.jp":true,"kurobe.toyama.jp":true,"nakaniikawa.toyama.jp":true,"namerikawa.toyama.jp":true,"nanto.toyama.jp":true,"nyuzen.toyama.jp":true,"oyabe.toyama.jp":true,"taira.toyama.jp":true,"takaoka.toyama.jp":true,"tateyama.toyama.jp":true,"toga.toyama.jp":true,"tonami.toyama.jp":true,"toyama.toyama.jp":true,"unazuki.toyama.jp":true,"uozu.toyama.jp":true,"yamada.toyama.jp":true,"arida.wakayama.jp":true,"aridagawa.wakayama.jp":true,"gobo.wakayama.jp":true,"hashimoto.wakayama.jp":true,"hidaka.wakayama.jp":true,"hirogawa.wakayama.jp":true,"inami.wakayama.jp":true,"iwade.wakayama.jp":true,"kainan.wakayama.jp":true,"kamitonda.wakayama.jp":true,"katsuragi.wakayama.jp":true,"kimino.wakayama.jp":true,"kinokawa.wakayama.jp":true,"kitayama.wakayama.jp":true,"koya.wakayama.jp":true,"koza.wakayama.jp":true,"kozagawa.wakayama.jp":true,"kudoyama.wakayama.jp":true,"kushimoto.wakayama.jp":true,"mihama.wakayama.jp":true,"misato.wakayama.jp":true,"nachikatsuura.wakayama.jp":true,"shingu.wakayama.jp":true,"shirahama.wakayama.jp":true,"taiji.wakayama.jp":true,"tanabe.wakayama.jp":true,"wakayama.wakayama.jp":true,"yuasa.wakayama.jp":true,"yura.wakayama.jp":true,"asahi.yamagata.jp":true,"funagata.yamagata.jp":true,"higashine.yamagata.jp":true,"iide.yamagata.jp":true,"kahoku.yamagata.jp":true,"kaminoyama.yamagata.jp":true,"kaneyama.yamagata.jp":true,"kawanishi.yamagata.jp":true,"mamurogawa.yamagata.jp":true,"mikawa.yamagata.jp":true,"murayama.yamagata.jp":true,"nagai.yamagata.jp":true,"nakayama.yamagata.jp":true,"nanyo.yamagata.jp":true,"nishikawa.yamagata.jp":true,"obanazawa.yamagata.jp":true,"oe.yamagata.jp":true,"oguni.yamagata.jp":true,"ohkura.yamagata.jp":true,"oishida.yamagata.jp":true,"sagae.yamagata.jp":true,"sakata.yamagata.jp":true,"sakegawa.yamagata.jp":true,"shinjo.yamagata.jp":true,"shirataka.yamagata.jp":true,"shonai.yamagata.jp":true,"takahata.yamagata.jp":true,"tendo.yamagata.jp":true,"tozawa.yamagata.jp":true,"tsuruoka.yamagata.jp":true,"yamagata.yamagata.jp":true,"yamanobe.yamagata.jp":true,"yonezawa.yamagata.jp":true,"yuza.yamagata.jp":true,"abu.yamaguchi.jp":true,"hagi.yamaguchi.jp":true,"hikari.yamaguchi.jp":true,"hofu.yamaguchi.jp":true,"iwakuni.yamaguchi.jp":true,"kudamatsu.yamaguchi.jp":true,"mitou.yamaguchi.jp":true,"nagato.yamaguchi.jp":true,"oshima.yamaguchi.jp":true,"shimonoseki.yamaguchi.jp":true,"shunan.yamaguchi.jp":true,"tabuse.yamaguchi.jp":true,"tokuyama.yamaguchi.jp":true,"toyota.yamaguchi.jp":true,"ube.yamaguchi.jp":true,"yuu.yamaguchi.jp":true,"chuo.yamanashi.jp":true,"doshi.yamanashi.jp":true,"fuefuki.yamanashi.jp":true,"fujikawa.yamanashi.jp":true,"fujikawaguchiko.yamanashi.jp":true,"fujiyoshida.yamanashi.jp":true,"hayakawa.yamanashi.jp":true,"hokuto.yamanashi.jp":true,"ichikawamisato.yamanashi.jp":true,"kai.yamanashi.jp":true,"kofu.yamanashi.jp":true,"koshu.yamanashi.jp":true,"kosuge.yamanashi.jp":true,"minami-alps.yamanashi.jp":true,"minobu.yamanashi.jp":true,"nakamichi.yamanashi.jp":true,"nanbu.yamanashi.jp":true,"narusawa.yamanashi.jp":true,"nirasaki.yamanashi.jp":true,"nishikatsura.yamanashi.jp":true,"oshino.yamanashi.jp":true,"otsuki.yamanashi.jp":true,"showa.yamanashi.jp":true,"tabayama.yamanashi.jp":true,"tsuru.yamanashi.jp":true,"uenohara.yamanashi.jp":true,"yamanakako.yamanashi.jp":true,"yamanashi.yamanashi.jp":true,"*.ke":true,"kg":true,"org.kg":true,"net.kg":true,"com.kg":true,"edu.kg":true,"gov.kg":true,"mil.kg":true,"*.kh":true,"ki":true,"edu.ki":true,"biz.ki":true,"net.ki":true,"org.ki":true,"gov.ki":true,"info.ki":true,"com.ki":true,"km":true,"org.km":true,"nom.km":true,"gov.km":true,"prd.km":true,"tm.km":true,"edu.km":true,"mil.km":true,"ass.km":true,"com.km":true,"coop.km":true,"asso.km":true,"presse.km":true,"medecin.km":true,"notaires.km":true,"pharmaciens.km":true,"veterinaire.km":true,"gouv.km":true,"kn":true,"net.kn":true,"org.kn":true,"edu.kn":true,"gov.kn":true,"kp":true,"com.kp":true,"edu.kp":true,"gov.kp":true,"org.kp":true,"rep.kp":true,"tra.kp":true,"kr":true,"ac.kr":true,"co.kr":true,"es.kr":true,"go.kr":true,"hs.kr":true,"kg.kr":true,"mil.kr":true,"ms.kr":true,"ne.kr":true,"or.kr":true,"pe.kr":true,"re.kr":true,"sc.kr":true,"busan.kr":true,"chungbuk.kr":true,"chungnam.kr":true,"daegu.kr":true,"daejeon.kr":true,"gangwon.kr":true,"gwangju.kr":true,"gyeongbuk.kr":true,"gyeonggi.kr":true,"gyeongnam.kr":true,"incheon.kr":true,"jeju.kr":true,"jeonbuk.kr":true,"jeonnam.kr":true,"seoul.kr":true,"ulsan.kr":true,"*.kw":true,"ky":true,"edu.ky":true,"gov.ky":true,"com.ky":true,"org.ky":true,"net.ky":true,"kz":true,"org.kz":true,"edu.kz":true,"net.kz":true,"gov.kz":true,"mil.kz":true,"com.kz":true,"la":true,"int.la":true,"net.la":true,"info.la":true,"edu.la":true,"gov.la":true,"per.la":true,"com.la":true,"org.la":true,"lb":true,"com.lb":true,"edu.lb":true,"gov.lb":true,"net.lb":true,"org.lb":true,"lc":true,"com.lc":true,"net.lc":true,"co.lc":true,"org.lc":true,"edu.lc":true,"gov.lc":true,"li":true,"lk":true,"gov.lk":true,"sch.lk":true,"net.lk":true,"int.lk":true,"com.lk":true,"org.lk":true,"edu.lk":true,"ngo.lk":true,"soc.lk":true,"web.lk":true,"ltd.lk":true,"assn.lk":true,"grp.lk":true,"hotel.lk":true,"ac.lk":true,"lr":true,"com.lr":true,"edu.lr":true,"gov.lr":true,"org.lr":true,"net.lr":true,"ls":true,"co.ls":true,"org.ls":true,"lt":true,"gov.lt":true,"lu":true,"lv":true,"com.lv":true,"edu.lv":true,"gov.lv":true,"org.lv":true,"mil.lv":true,"id.lv":true,"net.lv":true,"asn.lv":true,"conf.lv":true,"ly":true,"com.ly":true,"net.ly":true,"gov.ly":true,"plc.ly":true,"edu.ly":true,"sch.ly":true,"med.ly":true,"org.ly":true,"id.ly":true,"ma":true,"co.ma":true,"net.ma":true,"gov.ma":true,"org.ma":true,"ac.ma":true,"press.ma":true,"mc":true,"tm.mc":true,"asso.mc":true,"md":true,"me":true,"co.me":true,"net.me":true,"org.me":true,"edu.me":true,"ac.me":true,"gov.me":true,"its.me":true,"priv.me":true,"mg":true,"org.mg":true,"nom.mg":true,"gov.mg":true,"prd.mg":true,"tm.mg":true,"edu.mg":true,"mil.mg":true,"com.mg":true,"co.mg":true,"mh":true,"mil":true,"mk":true,"com.mk":true,"org.mk":true,"net.mk":true,"edu.mk":true,"gov.mk":true,"inf.mk":true,"name.mk":true,"ml":true,"com.ml":true,"edu.ml":true,"gouv.ml":true,"gov.ml":true,"net.ml":true,"org.ml":true,"presse.ml":true,"*.mm":true,"mn":true,"gov.mn":true,"edu.mn":true,"org.mn":true,"mo":true,"com.mo":true,"net.mo":true,"org.mo":true,"edu.mo":true,"gov.mo":true,"mobi":true,"mp":true,"mq":true,"mr":true,"gov.mr":true,"ms":true,"com.ms":true,"edu.ms":true,"gov.ms":true,"net.ms":true,"org.ms":true,"mt":true,"com.mt":true,"edu.mt":true,"net.mt":true,"org.mt":true,"mu":true,"com.mu":true,"net.mu":true,"org.mu":true,"gov.mu":true,"ac.mu":true,"co.mu":true,"or.mu":true,"museum":true,"academy.museum":true,"agriculture.museum":true,"air.museum":true,"airguard.museum":true,"alabama.museum":true,"alaska.museum":true,"amber.museum":true,"ambulance.museum":true,"american.museum":true,"americana.museum":true,"americanantiques.museum":true,"americanart.museum":true,"amsterdam.museum":true,"and.museum":true,"annefrank.museum":true,"anthro.museum":true,"anthropology.museum":true,"antiques.museum":true,"aquarium.museum":true,"arboretum.museum":true,"archaeological.museum":true,"archaeology.museum":true,"architecture.museum":true,"art.museum":true,"artanddesign.museum":true,"artcenter.museum":true,"artdeco.museum":true,"arteducation.museum":true,"artgallery.museum":true,"arts.museum":true,"artsandcrafts.museum":true,"asmatart.museum":true,"assassination.museum":true,"assisi.museum":true,"association.museum":true,"astronomy.museum":true,"atlanta.museum":true,"austin.museum":true,"australia.museum":true,"automotive.museum":true,"aviation.museum":true,"axis.museum":true,"badajoz.museum":true,"baghdad.museum":true,"bahn.museum":true,"bale.museum":true,"baltimore.museum":true,"barcelona.museum":true,"baseball.museum":true,"basel.museum":true,"baths.museum":true,"bauern.museum":true,"beauxarts.museum":true,"beeldengeluid.museum":true,"bellevue.museum":true,"bergbau.museum":true,"berkeley.museum":true,"berlin.museum":true,"bern.museum":true,"bible.museum":true,"bilbao.museum":true,"bill.museum":true,"birdart.museum":true,"birthplace.museum":true,"bonn.museum":true,"boston.museum":true,"botanical.museum":true,"botanicalgarden.museum":true,"botanicgarden.museum":true,"botany.museum":true,"brandywinevalley.museum":true,"brasil.museum":true,"bristol.museum":true,"british.museum":true,"britishcolumbia.museum":true,"broadcast.museum":true,"brunel.museum":true,"brussel.museum":true,"brussels.museum":true,"bruxelles.museum":true,"building.museum":true,"burghof.museum":true,"bus.museum":true,"bushey.museum":true,"cadaques.museum":true,"california.museum":true,"cambridge.museum":true,"can.museum":true,"canada.museum":true,"capebreton.museum":true,"carrier.museum":true,"cartoonart.museum":true,"casadelamoneda.museum":true,"castle.museum":true,"castres.museum":true,"celtic.museum":true,"center.museum":true,"chattanooga.museum":true,"cheltenham.museum":true,"chesapeakebay.museum":true,"chicago.museum":true,"children.museum":true,"childrens.museum":true,"childrensgarden.museum":true,"chiropractic.museum":true,"chocolate.museum":true,"christiansburg.museum":true,"cincinnati.museum":true,"cinema.museum":true,"circus.museum":true,"civilisation.museum":true,"civilization.museum":true,"civilwar.museum":true,"clinton.museum":true,"clock.museum":true,"coal.museum":true,"coastaldefence.museum":true,"cody.museum":true,"coldwar.museum":true,"collection.museum":true,"colonialwilliamsburg.museum":true,"coloradoplateau.museum":true,"columbia.museum":true,"columbus.museum":true,"communication.museum":true,"communications.museum":true,"community.museum":true,"computer.museum":true,"computerhistory.museum":true,"xn--comunicaes-v6a2o.museum":true,"contemporary.museum":true,"contemporaryart.museum":true,"convent.museum":true,"copenhagen.museum":true,"corporation.museum":true,"xn--correios-e-telecomunicaes-ghc29a.museum":true,"corvette.museum":true,"costume.museum":true,"countryestate.museum":true,"county.museum":true,"crafts.museum":true,"cranbrook.museum":true,"creation.museum":true,"cultural.museum":true,"culturalcenter.museum":true,"culture.museum":true,"cyber.museum":true,"cymru.museum":true,"dali.museum":true,"dallas.museum":true,"database.museum":true,"ddr.museum":true,"decorativearts.museum":true,"delaware.museum":true,"delmenhorst.museum":true,"denmark.museum":true,"depot.museum":true,"design.museum":true,"detroit.museum":true,"dinosaur.museum":true,"discovery.museum":true,"dolls.museum":true,"donostia.museum":true,"durham.museum":true,"eastafrica.museum":true,"eastcoast.museum":true,"education.museum":true,"educational.museum":true,"egyptian.museum":true,"eisenbahn.museum":true,"elburg.museum":true,"elvendrell.museum":true,"embroidery.museum":true,"encyclopedic.museum":true,"england.museum":true,"entomology.museum":true,"environment.museum":true,"environmentalconservation.museum":true,"epilepsy.museum":true,"essex.museum":true,"estate.museum":true,"ethnology.museum":true,"exeter.museum":true,"exhibition.museum":true,"family.museum":true,"farm.museum":true,"farmequipment.museum":true,"farmers.museum":true,"farmstead.museum":true,"field.museum":true,"figueres.museum":true,"filatelia.museum":true,"film.museum":true,"fineart.museum":true,"finearts.museum":true,"finland.museum":true,"flanders.museum":true,"florida.museum":true,"force.museum":true,"fortmissoula.museum":true,"fortworth.museum":true,"foundation.museum":true,"francaise.museum":true,"frankfurt.museum":true,"franziskaner.museum":true,"freemasonry.museum":true,"freiburg.museum":true,"fribourg.museum":true,"frog.museum":true,"fundacio.museum":true,"furniture.museum":true,"gallery.museum":true,"garden.museum":true,"gateway.museum":true,"geelvinck.museum":true,"gemological.museum":true,"geology.museum":true,"georgia.museum":true,"giessen.museum":true,"glas.museum":true,"glass.museum":true,"gorge.museum":true,"grandrapids.museum":true,"graz.museum":true,"guernsey.museum":true,"halloffame.museum":true,"hamburg.museum":true,"handson.museum":true,"harvestcelebration.museum":true,"hawaii.museum":true,"health.museum":true,"heimatunduhren.museum":true,"hellas.museum":true,"helsinki.museum":true,"hembygdsforbund.museum":true,"heritage.museum":true,"histoire.museum":true,"historical.museum":true,"historicalsociety.museum":true,"historichouses.museum":true,"historisch.museum":true,"historisches.museum":true,"history.museum":true,"historyofscience.museum":true,"horology.museum":true,"house.museum":true,"humanities.museum":true,"illustration.museum":true,"imageandsound.museum":true,"indian.museum":true,"indiana.museum":true,"indianapolis.museum":true,"indianmarket.museum":true,"intelligence.museum":true,"interactive.museum":true,"iraq.museum":true,"iron.museum":true,"isleofman.museum":true,"jamison.museum":true,"jefferson.museum":true,"jerusalem.museum":true,"jewelry.museum":true,"jewish.museum":true,"jewishart.museum":true,"jfk.museum":true,"journalism.museum":true,"judaica.museum":true,"judygarland.museum":true,"juedisches.museum":true,"juif.museum":true,"karate.museum":true,"karikatur.museum":true,"kids.museum":true,"koebenhavn.museum":true,"koeln.museum":true,"kunst.museum":true,"kunstsammlung.museum":true,"kunstunddesign.museum":true,"labor.museum":true,"labour.museum":true,"lajolla.museum":true,"lancashire.museum":true,"landes.museum":true,"lans.museum":true,"xn--lns-qla.museum":true,"larsson.museum":true,"lewismiller.museum":true,"lincoln.museum":true,"linz.museum":true,"living.museum":true,"livinghistory.museum":true,"localhistory.museum":true,"london.museum":true,"losangeles.museum":true,"louvre.museum":true,"loyalist.museum":true,"lucerne.museum":true,"luxembourg.museum":true,"luzern.museum":true,"mad.museum":true,"madrid.museum":true,"mallorca.museum":true,"manchester.museum":true,"mansion.museum":true,"mansions.museum":true,"manx.museum":true,"marburg.museum":true,"maritime.museum":true,"maritimo.museum":true,"maryland.museum":true,"marylhurst.museum":true,"media.museum":true,"medical.museum":true,"medizinhistorisches.museum":true,"meeres.museum":true,"memorial.museum":true,"mesaverde.museum":true,"michigan.museum":true,"midatlantic.museum":true,"military.museum":true,"mill.museum":true,"miners.museum":true,"mining.museum":true,"minnesota.museum":true,"missile.museum":true,"missoula.museum":true,"modern.museum":true,"moma.museum":true,"money.museum":true,"monmouth.museum":true,"monticello.museum":true,"montreal.museum":true,"moscow.museum":true,"motorcycle.museum":true,"muenchen.museum":true,"muenster.museum":true,"mulhouse.museum":true,"muncie.museum":true,"museet.museum":true,"museumcenter.museum":true,"museumvereniging.museum":true,"music.museum":true,"national.museum":true,"nationalfirearms.museum":true,"nationalheritage.museum":true,"nativeamerican.museum":true,"naturalhistory.museum":true,"naturalhistorymuseum.museum":true,"naturalsciences.museum":true,"nature.museum":true,"naturhistorisches.museum":true,"natuurwetenschappen.museum":true,"naumburg.museum":true,"naval.museum":true,"nebraska.museum":true,"neues.museum":true,"newhampshire.museum":true,"newjersey.museum":true,"newmexico.museum":true,"newport.museum":true,"newspaper.museum":true,"newyork.museum":true,"niepce.museum":true,"norfolk.museum":true,"north.museum":true,"nrw.museum":true,"nuernberg.museum":true,"nuremberg.museum":true,"nyc.museum":true,"nyny.museum":true,"oceanographic.museum":true,"oceanographique.museum":true,"omaha.museum":true,"online.museum":true,"ontario.museum":true,"openair.museum":true,"oregon.museum":true,"oregontrail.museum":true,"otago.museum":true,"oxford.museum":true,"pacific.museum":true,"paderborn.museum":true,"palace.museum":true,"paleo.museum":true,"palmsprings.museum":true,"panama.museum":true,"paris.museum":true,"pasadena.museum":true,"pharmacy.museum":true,"philadelphia.museum":true,"philadelphiaarea.museum":true,"philately.museum":true,"phoenix.museum":true,"photography.museum":true,"pilots.museum":true,"pittsburgh.museum":true,"planetarium.museum":true,"plantation.museum":true,"plants.museum":true,"plaza.museum":true,"portal.museum":true,"portland.museum":true,"portlligat.museum":true,"posts-and-telecommunications.museum":true,"preservation.museum":true,"presidio.museum":true,"press.museum":true,"project.museum":true,"public.museum":true,"pubol.museum":true,"quebec.museum":true,"railroad.museum":true,"railway.museum":true,"research.museum":true,"resistance.museum":true,"riodejaneiro.museum":true,"rochester.museum":true,"rockart.museum":true,"roma.museum":true,"russia.museum":true,"saintlouis.museum":true,"salem.museum":true,"salvadordali.museum":true,"salzburg.museum":true,"sandiego.museum":true,"sanfrancisco.museum":true,"santabarbara.museum":true,"santacruz.museum":true,"santafe.museum":true,"saskatchewan.museum":true,"satx.museum":true,"savannahga.museum":true,"schlesisches.museum":true,"schoenbrunn.museum":true,"schokoladen.museum":true,"school.museum":true,"schweiz.museum":true,"science.museum":true,"scienceandhistory.museum":true,"scienceandindustry.museum":true,"sciencecenter.museum":true,"sciencecenters.museum":true,"science-fiction.museum":true,"sciencehistory.museum":true,"sciences.museum":true,"sciencesnaturelles.museum":true,"scotland.museum":true,"seaport.museum":true,"settlement.museum":true,"settlers.museum":true,"shell.museum":true,"sherbrooke.museum":true,"sibenik.museum":true,"silk.museum":true,"ski.museum":true,"skole.museum":true,"society.museum":true,"sologne.museum":true,"soundandvision.museum":true,"southcarolina.museum":true,"southwest.museum":true,"space.museum":true,"spy.museum":true,"square.museum":true,"stadt.museum":true,"stalbans.museum":true,"starnberg.museum":true,"state.museum":true,"stateofdelaware.museum":true,"station.museum":true,"steam.museum":true,"steiermark.museum":true,"stjohn.museum":true,"stockholm.museum":true,"stpetersburg.museum":true,"stuttgart.museum":true,"suisse.museum":true,"surgeonshall.museum":true,"surrey.museum":true,"svizzera.museum":true,"sweden.museum":true,"sydney.museum":true,"tank.museum":true,"tcm.museum":true,"technology.museum":true,"telekommunikation.museum":true,"television.museum":true,"texas.museum":true,"textile.museum":true,"theater.museum":true,"time.museum":true,"timekeeping.museum":true,"topology.museum":true,"torino.museum":true,"touch.museum":true,"town.museum":true,"transport.museum":true,"tree.museum":true,"trolley.museum":true,"trust.museum":true,"trustee.museum":true,"uhren.museum":true,"ulm.museum":true,"undersea.museum":true,"university.museum":true,"usa.museum":true,"usantiques.museum":true,"usarts.museum":true,"uscountryestate.museum":true,"usculture.museum":true,"usdecorativearts.museum":true,"usgarden.museum":true,"ushistory.museum":true,"ushuaia.museum":true,"uslivinghistory.museum":true,"utah.museum":true,"uvic.museum":true,"valley.museum":true,"vantaa.museum":true,"versailles.museum":true,"viking.museum":true,"village.museum":true,"virginia.museum":true,"virtual.museum":true,"virtuel.museum":true,"vlaanderen.museum":true,"volkenkunde.museum":true,"wales.museum":true,"wallonie.museum":true,"war.museum":true,"washingtondc.museum":true,"watchandclock.museum":true,"watch-and-clock.museum":true,"western.museum":true,"westfalen.museum":true,"whaling.museum":true,"wildlife.museum":true,"williamsburg.museum":true,"windmill.museum":true,"workshop.museum":true,"york.museum":true,"yorkshire.museum":true,"yosemite.museum":true,"youth.museum":true,"zoological.museum":true,"zoology.museum":true,"xn--9dbhblg6di.museum":true,"xn--h1aegh.museum":true,"mv":true,"aero.mv":true,"biz.mv":true,"com.mv":true,"coop.mv":true,"edu.mv":true,"gov.mv":true,"info.mv":true,"int.mv":true,"mil.mv":true,"museum.mv":true,"name.mv":true,"net.mv":true,"org.mv":true,"pro.mv":true,"mw":true,"ac.mw":true,"biz.mw":true,"co.mw":true,"com.mw":true,"coop.mw":true,"edu.mw":true,"gov.mw":true,"int.mw":true,"museum.mw":true,"net.mw":true,"org.mw":true,"mx":true,"com.mx":true,"org.mx":true,"gob.mx":true,"edu.mx":true,"net.mx":true,"my":true,"com.my":true,"net.my":true,"org.my":true,"gov.my":true,"edu.my":true,"mil.my":true,"name.my":true,"*.mz":true,"teledata.mz":false,"na":true,"info.na":true,"pro.na":true,"name.na":true,"school.na":true,"or.na":true,"dr.na":true,"us.na":true,"mx.na":true,"ca.na":true,"in.na":true,"cc.na":true,"tv.na":true,"ws.na":true,"mobi.na":true,"co.na":true,"com.na":true,"org.na":true,"name":true,"nc":true,"asso.nc":true,"ne":true,"net":true,"nf":true,"com.nf":true,"net.nf":true,"per.nf":true,"rec.nf":true,"web.nf":true,"arts.nf":true,"firm.nf":true,"info.nf":true,"other.nf":true,"store.nf":true,"ng":true,"com.ng":true,"edu.ng":true,"name.ng":true,"net.ng":true,"org.ng":true,"sch.ng":true,"gov.ng":true,"mil.ng":true,"mobi.ng":true,"*.ni":true,"nl":true,"bv.nl":true,"no":true,"fhs.no":true,"vgs.no":true,"fylkesbibl.no":true,"folkebibl.no":true,"museum.no":true,"idrett.no":true,"priv.no":true,"mil.no":true,"stat.no":true,"dep.no":true,"kommune.no":true,"herad.no":true,"aa.no":true,"ah.no":true,"bu.no":true,"fm.no":true,"hl.no":true,"hm.no":true,"jan-mayen.no":true,"mr.no":true,"nl.no":true,"nt.no":true,"of.no":true,"ol.no":true,"oslo.no":true,"rl.no":true,"sf.no":true,"st.no":true,"svalbard.no":true,"tm.no":true,"tr.no":true,"va.no":true,"vf.no":true,"gs.aa.no":true,"gs.ah.no":true,"gs.bu.no":true,"gs.fm.no":true,"gs.hl.no":true,"gs.hm.no":true,"gs.jan-mayen.no":true,"gs.mr.no":true,"gs.nl.no":true,"gs.nt.no":true,"gs.of.no":true,"gs.ol.no":true,"gs.oslo.no":true,"gs.rl.no":true,"gs.sf.no":true,"gs.st.no":true,"gs.svalbard.no":true,"gs.tm.no":true,"gs.tr.no":true,"gs.va.no":true,"gs.vf.no":true,"akrehamn.no":true,"xn--krehamn-dxa.no":true,"algard.no":true,"xn--lgrd-poac.no":true,"arna.no":true,"brumunddal.no":true,"bryne.no":true,"bronnoysund.no":true,"xn--brnnysund-m8ac.no":true,"drobak.no":true,"xn--drbak-wua.no":true,"egersund.no":true,"fetsund.no":true,"floro.no":true,"xn--flor-jra.no":true,"fredrikstad.no":true,"hokksund.no":true,"honefoss.no":true,"xn--hnefoss-q1a.no":true,"jessheim.no":true,"jorpeland.no":true,"xn--jrpeland-54a.no":true,"kirkenes.no":true,"kopervik.no":true,"krokstadelva.no":true,"langevag.no":true,"xn--langevg-jxa.no":true,"leirvik.no":true,"mjondalen.no":true,"xn--mjndalen-64a.no":true,"mo-i-rana.no":true,"mosjoen.no":true,"xn--mosjen-eya.no":true,"nesoddtangen.no":true,"orkanger.no":true,"osoyro.no":true,"xn--osyro-wua.no":true,"raholt.no":true,"xn--rholt-mra.no":true,"sandnessjoen.no":true,"xn--sandnessjen-ogb.no":true,"skedsmokorset.no":true,"slattum.no":true,"spjelkavik.no":true,"stathelle.no":true,"stavern.no":true,"stjordalshalsen.no":true,"xn--stjrdalshalsen-sqb.no":true,"tananger.no":true,"tranby.no":true,"vossevangen.no":true,"afjord.no":true,"xn--fjord-lra.no":true,"agdenes.no":true,"al.no":true,"xn--l-1fa.no":true,"alesund.no":true,"xn--lesund-hua.no":true,"alstahaug.no":true,"alta.no":true,"xn--lt-liac.no":true,"alaheadju.no":true,"xn--laheadju-7ya.no":true,"alvdal.no":true,"amli.no":true,"xn--mli-tla.no":true,"amot.no":true,"xn--mot-tla.no":true,"andebu.no":true,"andoy.no":true,"xn--andy-ira.no":true,"andasuolo.no":true,"ardal.no":true,"xn--rdal-poa.no":true,"aremark.no":true,"arendal.no":true,"xn--s-1fa.no":true,"aseral.no":true,"xn--seral-lra.no":true,"asker.no":true,"askim.no":true,"askvoll.no":true,"askoy.no":true,"xn--asky-ira.no":true,"asnes.no":true,"xn--snes-poa.no":true,"audnedaln.no":true,"aukra.no":true,"aure.no":true,"aurland.no":true,"aurskog-holand.no":true,"xn--aurskog-hland-jnb.no":true,"austevoll.no":true,"austrheim.no":true,"averoy.no":true,"xn--avery-yua.no":true,"balestrand.no":true,"ballangen.no":true,"balat.no":true,"xn--blt-elab.no":true,"balsfjord.no":true,"bahccavuotna.no":true,"xn--bhccavuotna-k7a.no":true,"bamble.no":true,"bardu.no":true,"beardu.no":true,"beiarn.no":true,"bajddar.no":true,"xn--bjddar-pta.no":true,"baidar.no":true,"xn--bidr-5nac.no":true,"berg.no":true,"bergen.no":true,"berlevag.no":true,"xn--berlevg-jxa.no":true,"bearalvahki.no":true,"xn--bearalvhki-y4a.no":true,"bindal.no":true,"birkenes.no":true,"bjarkoy.no":true,"xn--bjarky-fya.no":true,"bjerkreim.no":true,"bjugn.no":true,"bodo.no":true,"xn--bod-2na.no":true,"badaddja.no":true,"xn--bdddj-mrabd.no":true,"budejju.no":true,"bokn.no":true,"bremanger.no":true,"bronnoy.no":true,"xn--brnny-wuac.no":true,"bygland.no":true,"bykle.no":true,"barum.no":true,"xn--brum-voa.no":true,"bo.telemark.no":true,"xn--b-5ga.telemark.no":true,"bo.nordland.no":true,"xn--b-5ga.nordland.no":true,"bievat.no":true,"xn--bievt-0qa.no":true,"bomlo.no":true,"xn--bmlo-gra.no":true,"batsfjord.no":true,"xn--btsfjord-9za.no":true,"bahcavuotna.no":true,"xn--bhcavuotna-s4a.no":true,"dovre.no":true,"drammen.no":true,"drangedal.no":true,"dyroy.no":true,"xn--dyry-ira.no":true,"donna.no":true,"xn--dnna-gra.no":true,"eid.no":true,"eidfjord.no":true,"eidsberg.no":true,"eidskog.no":true,"eidsvoll.no":true,"eigersund.no":true,"elverum.no":true,"enebakk.no":true,"engerdal.no":true,"etne.no":true,"etnedal.no":true,"evenes.no":true,"evenassi.no":true,"xn--eveni-0qa01ga.no":true,"evje-og-hornnes.no":true,"farsund.no":true,"fauske.no":true,"fuossko.no":true,"fuoisku.no":true,"fedje.no":true,"fet.no":true,"finnoy.no":true,"xn--finny-yua.no":true,"fitjar.no":true,"fjaler.no":true,"fjell.no":true,"flakstad.no":true,"flatanger.no":true,"flekkefjord.no":true,"flesberg.no":true,"flora.no":true,"fla.no":true,"xn--fl-zia.no":true,"folldal.no":true,"forsand.no":true,"fosnes.no":true,"frei.no":true,"frogn.no":true,"froland.no":true,"frosta.no":true,"frana.no":true,"xn--frna-woa.no":true,"froya.no":true,"xn--frya-hra.no":true,"fusa.no":true,"fyresdal.no":true,"forde.no":true,"xn--frde-gra.no":true,"gamvik.no":true,"gangaviika.no":true,"xn--ggaviika-8ya47h.no":true,"gaular.no":true,"gausdal.no":true,"gildeskal.no":true,"xn--gildeskl-g0a.no":true,"giske.no":true,"gjemnes.no":true,"gjerdrum.no":true,"gjerstad.no":true,"gjesdal.no":true,"gjovik.no":true,"xn--gjvik-wua.no":true,"gloppen.no":true,"gol.no":true,"gran.no":true,"grane.no":true,"granvin.no":true,"gratangen.no":true,"grimstad.no":true,"grong.no":true,"kraanghke.no":true,"xn--kranghke-b0a.no":true,"grue.no":true,"gulen.no":true,"hadsel.no":true,"halden.no":true,"halsa.no":true,"hamar.no":true,"hamaroy.no":true,"habmer.no":true,"xn--hbmer-xqa.no":true,"hapmir.no":true,"xn--hpmir-xqa.no":true,"hammerfest.no":true,"hammarfeasta.no":true,"xn--hmmrfeasta-s4ac.no":true,"haram.no":true,"hareid.no":true,"harstad.no":true,"hasvik.no":true,"aknoluokta.no":true,"xn--koluokta-7ya57h.no":true,"hattfjelldal.no":true,"aarborte.no":true,"haugesund.no":true,"hemne.no":true,"hemnes.no":true,"hemsedal.no":true,"heroy.more-og-romsdal.no":true,"xn--hery-ira.xn--mre-og-romsdal-qqb.no":true,"heroy.nordland.no":true,"xn--hery-ira.nordland.no":true,"hitra.no":true,"hjartdal.no":true,"hjelmeland.no":true,"hobol.no":true,"xn--hobl-ira.no":true,"hof.no":true,"hol.no":true,"hole.no":true,"holmestrand.no":true,"holtalen.no":true,"xn--holtlen-hxa.no":true,"hornindal.no":true,"horten.no":true,"hurdal.no":true,"hurum.no":true,"hvaler.no":true,"hyllestad.no":true,"hagebostad.no":true,"xn--hgebostad-g3a.no":true,"hoyanger.no":true,"xn--hyanger-q1a.no":true,"hoylandet.no":true,"xn--hylandet-54a.no":true,"ha.no":true,"xn--h-2fa.no":true,"ibestad.no":true,"inderoy.no":true,"xn--indery-fya.no":true,"iveland.no":true,"jevnaker.no":true,"jondal.no":true,"jolster.no":true,"xn--jlster-bya.no":true,"karasjok.no":true,"karasjohka.no":true,"xn--krjohka-hwab49j.no":true,"karlsoy.no":true,"galsa.no":true,"xn--gls-elac.no":true,"karmoy.no":true,"xn--karmy-yua.no":true,"kautokeino.no":true,"guovdageaidnu.no":true,"klepp.no":true,"klabu.no":true,"xn--klbu-woa.no":true,"kongsberg.no":true,"kongsvinger.no":true,"kragero.no":true,"xn--krager-gya.no":true,"kristiansand.no":true,"kristiansund.no":true,"krodsherad.no":true,"xn--krdsherad-m8a.no":true,"kvalsund.no":true,"rahkkeravju.no":true,"xn--rhkkervju-01af.no":true,"kvam.no":true,"kvinesdal.no":true,"kvinnherad.no":true,"kviteseid.no":true,"kvitsoy.no":true,"xn--kvitsy-fya.no":true,"kvafjord.no":true,"xn--kvfjord-nxa.no":true,"giehtavuoatna.no":true,"kvanangen.no":true,"xn--kvnangen-k0a.no":true,"navuotna.no":true,"xn--nvuotna-hwa.no":true,"kafjord.no":true,"xn--kfjord-iua.no":true,"gaivuotna.no":true,"xn--givuotna-8ya.no":true,"larvik.no":true,"lavangen.no":true,"lavagis.no":true,"loabat.no":true,"xn--loabt-0qa.no":true,"lebesby.no":true,"davvesiida.no":true,"leikanger.no":true,"leirfjord.no":true,"leka.no":true,"leksvik.no":true,"lenvik.no":true,"leangaviika.no":true,"xn--leagaviika-52b.no":true,"lesja.no":true,"levanger.no":true,"lier.no":true,"lierne.no":true,"lillehammer.no":true,"lillesand.no":true,"lindesnes.no":true,"lindas.no":true,"xn--linds-pra.no":true,"lom.no":true,"loppa.no":true,"lahppi.no":true,"xn--lhppi-xqa.no":true,"lund.no":true,"lunner.no":true,"luroy.no":true,"xn--lury-ira.no":true,"luster.no":true,"lyngdal.no":true,"lyngen.no":true,"ivgu.no":true,"lardal.no":true,"lerdal.no":true,"xn--lrdal-sra.no":true,"lodingen.no":true,"xn--ldingen-q1a.no":true,"lorenskog.no":true,"xn--lrenskog-54a.no":true,"loten.no":true,"xn--lten-gra.no":true,"malvik.no":true,"masoy.no":true,"xn--msy-ula0h.no":true,"muosat.no":true,"xn--muost-0qa.no":true,"mandal.no":true,"marker.no":true,"marnardal.no":true,"masfjorden.no":true,"meland.no":true,"meldal.no":true,"melhus.no":true,"meloy.no":true,"xn--mely-ira.no":true,"meraker.no":true,"xn--merker-kua.no":true,"moareke.no":true,"xn--moreke-jua.no":true,"midsund.no":true,"midtre-gauldal.no":true,"modalen.no":true,"modum.no":true,"molde.no":true,"moskenes.no":true,"moss.no":true,"mosvik.no":true,"malselv.no":true,"xn--mlselv-iua.no":true,"malatvuopmi.no":true,"xn--mlatvuopmi-s4a.no":true,"namdalseid.no":true,"aejrie.no":true,"namsos.no":true,"namsskogan.no":true,"naamesjevuemie.no":true,"xn--nmesjevuemie-tcba.no":true,"laakesvuemie.no":true,"nannestad.no":true,"narvik.no":true,"narviika.no":true,"naustdal.no":true,"nedre-eiker.no":true,"nes.akershus.no":true,"nes.buskerud.no":true,"nesna.no":true,"nesodden.no":true,"nesseby.no":true,"unjarga.no":true,"xn--unjrga-rta.no":true,"nesset.no":true,"nissedal.no":true,"nittedal.no":true,"nord-aurdal.no":true,"nord-fron.no":true,"nord-odal.no":true,"norddal.no":true,"nordkapp.no":true,"davvenjarga.no":true,"xn--davvenjrga-y4a.no":true,"nordre-land.no":true,"nordreisa.no":true,"raisa.no":true,"xn--risa-5na.no":true,"nore-og-uvdal.no":true,"notodden.no":true,"naroy.no":true,"xn--nry-yla5g.no":true,"notteroy.no":true,"xn--nttery-byae.no":true,"odda.no":true,"oksnes.no":true,"xn--ksnes-uua.no":true,"oppdal.no":true,"oppegard.no":true,"xn--oppegrd-ixa.no":true,"orkdal.no":true,"orland.no":true,"xn--rland-uua.no":true,"orskog.no":true,"xn--rskog-uua.no":true,"orsta.no":true,"xn--rsta-fra.no":true,"os.hedmark.no":true,"os.hordaland.no":true,"osen.no":true,"osteroy.no":true,"xn--ostery-fya.no":true,"ostre-toten.no":true,"xn--stre-toten-zcb.no":true,"overhalla.no":true,"ovre-eiker.no":true,"xn--vre-eiker-k8a.no":true,"oyer.no":true,"xn--yer-zna.no":true,"oygarden.no":true,"xn--ygarden-p1a.no":true,"oystre-slidre.no":true,"xn--ystre-slidre-ujb.no":true,"porsanger.no":true,"porsangu.no":true,"xn--porsgu-sta26f.no":true,"porsgrunn.no":true,"radoy.no":true,"xn--rady-ira.no":true,"rakkestad.no":true,"rana.no":true,"ruovat.no":true,"randaberg.no":true,"rauma.no":true,"rendalen.no":true,"rennebu.no":true,"rennesoy.no":true,"xn--rennesy-v1a.no":true,"rindal.no":true,"ringebu.no":true,"ringerike.no":true,"ringsaker.no":true,"rissa.no":true,"risor.no":true,"xn--risr-ira.no":true,"roan.no":true,"rollag.no":true,"rygge.no":true,"ralingen.no":true,"xn--rlingen-mxa.no":true,"rodoy.no":true,"xn--rdy-0nab.no":true,"romskog.no":true,"xn--rmskog-bya.no":true,"roros.no":true,"xn--rros-gra.no":true,"rost.no":true,"xn--rst-0na.no":true,"royken.no":true,"xn--ryken-vua.no":true,"royrvik.no":true,"xn--ryrvik-bya.no":true,"rade.no":true,"xn--rde-ula.no":true,"salangen.no":true,"siellak.no":true,"saltdal.no":true,"salat.no":true,"xn--slt-elab.no":true,"xn--slat-5na.no":true,"samnanger.no":true,"sande.more-og-romsdal.no":true,"sande.xn--mre-og-romsdal-qqb.no":true,"sande.vestfold.no":true,"sandefjord.no":true,"sandnes.no":true,"sandoy.no":true,"xn--sandy-yua.no":true,"sarpsborg.no":true,"sauda.no":true,"sauherad.no":true,"sel.no":true,"selbu.no":true,"selje.no":true,"seljord.no":true,"sigdal.no":true,"siljan.no":true,"sirdal.no":true,"skaun.no":true,"skedsmo.no":true,"ski.no":true,"skien.no":true,"skiptvet.no":true,"skjervoy.no":true,"xn--skjervy-v1a.no":true,"skierva.no":true,"xn--skierv-uta.no":true,"skjak.no":true,"xn--skjk-soa.no":true,"skodje.no":true,"skanland.no":true,"xn--sknland-fxa.no":true,"skanit.no":true,"xn--sknit-yqa.no":true,"smola.no":true,"xn--smla-hra.no":true,"snillfjord.no":true,"snasa.no":true,"xn--snsa-roa.no":true,"snoasa.no":true,"snaase.no":true,"xn--snase-nra.no":true,"sogndal.no":true,"sokndal.no":true,"sola.no":true,"solund.no":true,"songdalen.no":true,"sortland.no":true,"spydeberg.no":true,"stange.no":true,"stavanger.no":true,"steigen.no":true,"steinkjer.no":true,"stjordal.no":true,"xn--stjrdal-s1a.no":true,"stokke.no":true,"stor-elvdal.no":true,"stord.no":true,"stordal.no":true,"storfjord.no":true,"omasvuotna.no":true,"strand.no":true,"stranda.no":true,"stryn.no":true,"sula.no":true,"suldal.no":true,"sund.no":true,"sunndal.no":true,"surnadal.no":true,"sveio.no":true,"svelvik.no":true,"sykkylven.no":true,"sogne.no":true,"xn--sgne-gra.no":true,"somna.no":true,"xn--smna-gra.no":true,"sondre-land.no":true,"xn--sndre-land-0cb.no":true,"sor-aurdal.no":true,"xn--sr-aurdal-l8a.no":true,"sor-fron.no":true,"xn--sr-fron-q1a.no":true,"sor-odal.no":true,"xn--sr-odal-q1a.no":true,"sor-varanger.no":true,"xn--sr-varanger-ggb.no":true,"matta-varjjat.no":true,"xn--mtta-vrjjat-k7af.no":true,"sorfold.no":true,"xn--srfold-bya.no":true,"sorreisa.no":true,"xn--srreisa-q1a.no":true,"sorum.no":true,"xn--srum-gra.no":true,"tana.no":true,"deatnu.no":true,"time.no":true,"tingvoll.no":true,"tinn.no":true,"tjeldsund.no":true,"dielddanuorri.no":true,"tjome.no":true,"xn--tjme-hra.no":true,"tokke.no":true,"tolga.no":true,"torsken.no":true,"tranoy.no":true,"xn--trany-yua.no":true,"tromso.no":true,"xn--troms-zua.no":true,"tromsa.no":true,"romsa.no":true,"trondheim.no":true,"troandin.no":true,"trysil.no":true,"trana.no":true,"xn--trna-woa.no":true,"trogstad.no":true,"xn--trgstad-r1a.no":true,"tvedestrand.no":true,"tydal.no":true,"tynset.no":true,"tysfjord.no":true,"divtasvuodna.no":true,"divttasvuotna.no":true,"tysnes.no":true,"tysvar.no":true,"xn--tysvr-vra.no":true,"tonsberg.no":true,"xn--tnsberg-q1a.no":true,"ullensaker.no":true,"ullensvang.no":true,"ulvik.no":true,"utsira.no":true,"vadso.no":true,"xn--vads-jra.no":true,"cahcesuolo.no":true,"xn--hcesuolo-7ya35b.no":true,"vaksdal.no":true,"valle.no":true,"vang.no":true,"vanylven.no":true,"vardo.no":true,"xn--vard-jra.no":true,"varggat.no":true,"xn--vrggt-xqad.no":true,"vefsn.no":true,"vaapste.no":true,"vega.no":true,"vegarshei.no":true,"xn--vegrshei-c0a.no":true,"vennesla.no":true,"verdal.no":true,"verran.no":true,"vestby.no":true,"vestnes.no":true,"vestre-slidre.no":true,"vestre-toten.no":true,"vestvagoy.no":true,"xn--vestvgy-ixa6o.no":true,"vevelstad.no":true,"vik.no":true,"vikna.no":true,"vindafjord.no":true,"volda.no":true,"voss.no":true,"varoy.no":true,"xn--vry-yla5g.no":true,"vagan.no":true,"xn--vgan-qoa.no":true,"voagat.no":true,"vagsoy.no":true,"xn--vgsy-qoa0j.no":true,"vaga.no":true,"xn--vg-yiab.no":true,"valer.ostfold.no":true,"xn--vler-qoa.xn--stfold-9xa.no":true,"valer.hedmark.no":true,"xn--vler-qoa.hedmark.no":true,"*.np":true,"nr":true,"biz.nr":true,"info.nr":true,"gov.nr":true,"edu.nr":true,"org.nr":true,"net.nr":true,"com.nr":true,"nu":true,"nz":true,"ac.nz":true,"co.nz":true,"cri.nz":true,"geek.nz":true,"gen.nz":true,"govt.nz":true,"health.nz":true,"iwi.nz":true,"kiwi.nz":true,"maori.nz":true,"mil.nz":true,"xn--mori-qsa.nz":true,"net.nz":true,"org.nz":true,"parliament.nz":true,"school.nz":true,"om":true,"co.om":true,"com.om":true,"edu.om":true,"gov.om":true,"med.om":true,"museum.om":true,"net.om":true,"org.om":true,"pro.om":true,"org":true,"pa":true,"ac.pa":true,"gob.pa":true,"com.pa":true,"org.pa":true,"sld.pa":true,"edu.pa":true,"net.pa":true,"ing.pa":true,"abo.pa":true,"med.pa":true,"nom.pa":true,"pe":true,"edu.pe":true,"gob.pe":true,"nom.pe":true,"mil.pe":true,"org.pe":true,"com.pe":true,"net.pe":true,"pf":true,"com.pf":true,"org.pf":true,"edu.pf":true,"*.pg":true,"ph":true,"com.ph":true,"net.ph":true,"org.ph":true,"gov.ph":true,"edu.ph":true,"ngo.ph":true,"mil.ph":true,"i.ph":true,"pk":true,"com.pk":true,"net.pk":true,"edu.pk":true,"org.pk":true,"fam.pk":true,"biz.pk":true,"web.pk":true,"gov.pk":true,"gob.pk":true,"gok.pk":true,"gon.pk":true,"gop.pk":true,"gos.pk":true,"info.pk":true,"pl":true,"com.pl":true,"net.pl":true,"org.pl":true,"aid.pl":true,"agro.pl":true,"atm.pl":true,"auto.pl":true,"biz.pl":true,"edu.pl":true,"gmina.pl":true,"gsm.pl":true,"info.pl":true,"mail.pl":true,"miasta.pl":true,"media.pl":true,"mil.pl":true,"nieruchomosci.pl":true,"nom.pl":true,"pc.pl":true,"powiat.pl":true,"priv.pl":true,"realestate.pl":true,"rel.pl":true,"sex.pl":true,"shop.pl":true,"sklep.pl":true,"sos.pl":true,"szkola.pl":true,"targi.pl":true,"tm.pl":true,"tourism.pl":true,"travel.pl":true,"turystyka.pl":true,"gov.pl":true,"ap.gov.pl":true,"ic.gov.pl":true,"is.gov.pl":true,"us.gov.pl":true,"kmpsp.gov.pl":true,"kppsp.gov.pl":true,"kwpsp.gov.pl":true,"psp.gov.pl":true,"wskr.gov.pl":true,"kwp.gov.pl":true,"mw.gov.pl":true,"ug.gov.pl":true,"um.gov.pl":true,"umig.gov.pl":true,"ugim.gov.pl":true,"upow.gov.pl":true,"uw.gov.pl":true,"starostwo.gov.pl":true,"pa.gov.pl":true,"po.gov.pl":true,"psse.gov.pl":true,"pup.gov.pl":true,"rzgw.gov.pl":true,"sa.gov.pl":true,"so.gov.pl":true,"sr.gov.pl":true,"wsa.gov.pl":true,"sko.gov.pl":true,"uzs.gov.pl":true,"wiih.gov.pl":true,"winb.gov.pl":true,"pinb.gov.pl":true,"wios.gov.pl":true,"witd.gov.pl":true,"wzmiuw.gov.pl":true,"piw.gov.pl":true,"wiw.gov.pl":true,"griw.gov.pl":true,"wif.gov.pl":true,"oum.gov.pl":true,"sdn.gov.pl":true,"zp.gov.pl":true,"uppo.gov.pl":true,"mup.gov.pl":true,"wuoz.gov.pl":true,"konsulat.gov.pl":true,"oirm.gov.pl":true,"augustow.pl":true,"babia-gora.pl":true,"bedzin.pl":true,"beskidy.pl":true,"bialowieza.pl":true,"bialystok.pl":true,"bielawa.pl":true,"bieszczady.pl":true,"boleslawiec.pl":true,"bydgoszcz.pl":true,"bytom.pl":true,"cieszyn.pl":true,"czeladz.pl":true,"czest.pl":true,"dlugoleka.pl":true,"elblag.pl":true,"elk.pl":true,"glogow.pl":true,"gniezno.pl":true,"gorlice.pl":true,"grajewo.pl":true,"ilawa.pl":true,"jaworzno.pl":true,"jelenia-gora.pl":true,"jgora.pl":true,"kalisz.pl":true,"kazimierz-dolny.pl":true,"karpacz.pl":true,"kartuzy.pl":true,"kaszuby.pl":true,"katowice.pl":true,"kepno.pl":true,"ketrzyn.pl":true,"klodzko.pl":true,"kobierzyce.pl":true,"kolobrzeg.pl":true,"konin.pl":true,"konskowola.pl":true,"kutno.pl":true,"lapy.pl":true,"lebork.pl":true,"legnica.pl":true,"lezajsk.pl":true,"limanowa.pl":true,"lomza.pl":true,"lowicz.pl":true,"lubin.pl":true,"lukow.pl":true,"malbork.pl":true,"malopolska.pl":true,"mazowsze.pl":true,"mazury.pl":true,"mielec.pl":true,"mielno.pl":true,"mragowo.pl":true,"naklo.pl":true,"nowaruda.pl":true,"nysa.pl":true,"olawa.pl":true,"olecko.pl":true,"olkusz.pl":true,"olsztyn.pl":true,"opoczno.pl":true,"opole.pl":true,"ostroda.pl":true,"ostroleka.pl":true,"ostrowiec.pl":true,"ostrowwlkp.pl":true,"pila.pl":true,"pisz.pl":true,"podhale.pl":true,"podlasie.pl":true,"polkowice.pl":true,"pomorze.pl":true,"pomorskie.pl":true,"prochowice.pl":true,"pruszkow.pl":true,"przeworsk.pl":true,"pulawy.pl":true,"radom.pl":true,"rawa-maz.pl":true,"rybnik.pl":true,"rzeszow.pl":true,"sanok.pl":true,"sejny.pl":true,"slask.pl":true,"slupsk.pl":true,"sosnowiec.pl":true,"stalowa-wola.pl":true,"skoczow.pl":true,"starachowice.pl":true,"stargard.pl":true,"suwalki.pl":true,"swidnica.pl":true,"swiebodzin.pl":true,"swinoujscie.pl":true,"szczecin.pl":true,"szczytno.pl":true,"tarnobrzeg.pl":true,"tgory.pl":true,"turek.pl":true,"tychy.pl":true,"ustka.pl":true,"walbrzych.pl":true,"warmia.pl":true,"warszawa.pl":true,"waw.pl":true,"wegrow.pl":true,"wielun.pl":true,"wlocl.pl":true,"wloclawek.pl":true,"wodzislaw.pl":true,"wolomin.pl":true,"wroclaw.pl":true,"zachpomor.pl":true,"zagan.pl":true,"zarow.pl":true,"zgora.pl":true,"zgorzelec.pl":true,"pm":true,"pn":true,"gov.pn":true,"co.pn":true,"org.pn":true,"edu.pn":true,"net.pn":true,"post":true,"pr":true,"com.pr":true,"net.pr":true,"org.pr":true,"gov.pr":true,"edu.pr":true,"isla.pr":true,"pro.pr":true,"biz.pr":true,"info.pr":true,"name.pr":true,"est.pr":true,"prof.pr":true,"ac.pr":true,"pro":true,"aca.pro":true,"bar.pro":true,"cpa.pro":true,"jur.pro":true,"law.pro":true,"med.pro":true,"eng.pro":true,"ps":true,"edu.ps":true,"gov.ps":true,"sec.ps":true,"plo.ps":true,"com.ps":true,"org.ps":true,"net.ps":true,"pt":true,"net.pt":true,"gov.pt":true,"org.pt":true,"edu.pt":true,"int.pt":true,"publ.pt":true,"com.pt":true,"nome.pt":true,"pw":true,"co.pw":true,"ne.pw":true,"or.pw":true,"ed.pw":true,"go.pw":true,"belau.pw":true,"py":true,"com.py":true,"coop.py":true,"edu.py":true,"gov.py":true,"mil.py":true,"net.py":true,"org.py":true,"qa":true,"com.qa":true,"edu.qa":true,"gov.qa":true,"mil.qa":true,"name.qa":true,"net.qa":true,"org.qa":true,"sch.qa":true,"re":true,"com.re":true,"asso.re":true,"nom.re":true,"ro":true,"com.ro":true,"org.ro":true,"tm.ro":true,"nt.ro":true,"nom.ro":true,"info.ro":true,"rec.ro":true,"arts.ro":true,"firm.ro":true,"store.ro":true,"www.ro":true,"rs":true,"co.rs":true,"org.rs":true,"edu.rs":true,"ac.rs":true,"gov.rs":true,"in.rs":true,"ru":true,"ac.ru":true,"com.ru":true,"edu.ru":true,"int.ru":true,"net.ru":true,"org.ru":true,"pp.ru":true,"adygeya.ru":true,"altai.ru":true,"amur.ru":true,"arkhangelsk.ru":true,"astrakhan.ru":true,"bashkiria.ru":true,"belgorod.ru":true,"bir.ru":true,"bryansk.ru":true,"buryatia.ru":true,"cbg.ru":true,"chel.ru":true,"chelyabinsk.ru":true,"chita.ru":true,"chukotka.ru":true,"chuvashia.ru":true,"dagestan.ru":true,"dudinka.ru":true,"e-burg.ru":true,"grozny.ru":true,"irkutsk.ru":true,"ivanovo.ru":true,"izhevsk.ru":true,"jar.ru":true,"joshkar-ola.ru":true,"kalmykia.ru":true,"kaluga.ru":true,"kamchatka.ru":true,"karelia.ru":true,"kazan.ru":true,"kchr.ru":true,"kemerovo.ru":true,"khabarovsk.ru":true,"khakassia.ru":true,"khv.ru":true,"kirov.ru":true,"koenig.ru":true,"komi.ru":true,"kostroma.ru":true,"krasnoyarsk.ru":true,"kuban.ru":true,"kurgan.ru":true,"kursk.ru":true,"lipetsk.ru":true,"magadan.ru":true,"mari.ru":true,"mari-el.ru":true,"marine.ru":true,"mordovia.ru":true,"msk.ru":true,"murmansk.ru":true,"nalchik.ru":true,"nnov.ru":true,"nov.ru":true,"novosibirsk.ru":true,"nsk.ru":true,"omsk.ru":true,"orenburg.ru":true,"oryol.ru":true,"palana.ru":true,"penza.ru":true,"perm.ru":true,"ptz.ru":true,"rnd.ru":true,"ryazan.ru":true,"sakhalin.ru":true,"samara.ru":true,"saratov.ru":true,"simbirsk.ru":true,"smolensk.ru":true,"spb.ru":true,"stavropol.ru":true,"stv.ru":true,"surgut.ru":true,"tambov.ru":true,"tatarstan.ru":true,"tom.ru":true,"tomsk.ru":true,"tsaritsyn.ru":true,"tsk.ru":true,"tula.ru":true,"tuva.ru":true,"tver.ru":true,"tyumen.ru":true,"udm.ru":true,"udmurtia.ru":true,"ulan-ude.ru":true,"vladikavkaz.ru":true,"vladimir.ru":true,"vladivostok.ru":true,"volgograd.ru":true,"vologda.ru":true,"voronezh.ru":true,"vrn.ru":true,"vyatka.ru":true,"yakutia.ru":true,"yamal.ru":true,"yaroslavl.ru":true,"yekaterinburg.ru":true,"yuzhno-sakhalinsk.ru":true,"amursk.ru":true,"baikal.ru":true,"cmw.ru":true,"fareast.ru":true,"jamal.ru":true,"kms.ru":true,"k-uralsk.ru":true,"kustanai.ru":true,"kuzbass.ru":true,"magnitka.ru":true,"mytis.ru":true,"nakhodka.ru":true,"nkz.ru":true,"norilsk.ru":true,"oskol.ru":true,"pyatigorsk.ru":true,"rubtsovsk.ru":true,"snz.ru":true,"syzran.ru":true,"vdonsk.ru":true,"zgrad.ru":true,"gov.ru":true,"mil.ru":true,"test.ru":true,"rw":true,"gov.rw":true,"net.rw":true,"edu.rw":true,"ac.rw":true,"com.rw":true,"co.rw":true,"int.rw":true,"mil.rw":true,"gouv.rw":true,"sa":true,"com.sa":true,"net.sa":true,"org.sa":true,"gov.sa":true,"med.sa":true,"pub.sa":true,"edu.sa":true,"sch.sa":true,"sb":true,"com.sb":true,"edu.sb":true,"gov.sb":true,"net.sb":true,"org.sb":true,"sc":true,"com.sc":true,"gov.sc":true,"net.sc":true,"org.sc":true,"edu.sc":true,"sd":true,"com.sd":true,"net.sd":true,"org.sd":true,"edu.sd":true,"med.sd":true,"tv.sd":true,"gov.sd":true,"info.sd":true,"se":true,"a.se":true,"ac.se":true,"b.se":true,"bd.se":true,"brand.se":true,"c.se":true,"d.se":true,"e.se":true,"f.se":true,"fh.se":true,"fhsk.se":true,"fhv.se":true,"g.se":true,"h.se":true,"i.se":true,"k.se":true,"komforb.se":true,"kommunalforbund.se":true,"komvux.se":true,"l.se":true,"lanbib.se":true,"m.se":true,"n.se":true,"naturbruksgymn.se":true,"o.se":true,"org.se":true,"p.se":true,"parti.se":true,"pp.se":true,"press.se":true,"r.se":true,"s.se":true,"t.se":true,"tm.se":true,"u.se":true,"w.se":true,"x.se":true,"y.se":true,"z.se":true,"sg":true,"com.sg":true,"net.sg":true,"org.sg":true,"gov.sg":true,"edu.sg":true,"per.sg":true,"sh":true,"com.sh":true,"net.sh":true,"gov.sh":true,"org.sh":true,"mil.sh":true,"si":true,"sj":true,"sk":true,"sl":true,"com.sl":true,"net.sl":true,"edu.sl":true,"gov.sl":true,"org.sl":true,"sm":true,"sn":true,"art.sn":true,"com.sn":true,"edu.sn":true,"gouv.sn":true,"org.sn":true,"perso.sn":true,"univ.sn":true,"so":true,"com.so":true,"net.so":true,"org.so":true,"sr":true,"st":true,"co.st":true,"com.st":true,"consulado.st":true,"edu.st":true,"embaixada.st":true,"gov.st":true,"mil.st":true,"net.st":true,"org.st":true,"principe.st":true,"saotome.st":true,"store.st":true,"su":true,"adygeya.su":true,"arkhangelsk.su":true,"balashov.su":true,"bashkiria.su":true,"bryansk.su":true,"dagestan.su":true,"grozny.su":true,"ivanovo.su":true,"kalmykia.su":true,"kaluga.su":true,"karelia.su":true,"khakassia.su":true,"krasnodar.su":true,"kurgan.su":true,"lenug.su":true,"mordovia.su":true,"msk.su":true,"murmansk.su":true,"nalchik.su":true,"nov.su":true,"obninsk.su":true,"penza.su":true,"pokrovsk.su":true,"sochi.su":true,"spb.su":true,"togliatti.su":true,"troitsk.su":true,"tula.su":true,"tuva.su":true,"vladikavkaz.su":true,"vladimir.su":true,"vologda.su":true,"sv":true,"com.sv":true,"edu.sv":true,"gob.sv":true,"org.sv":true,"red.sv":true,"sx":true,"gov.sx":true,"sy":true,"edu.sy":true,"gov.sy":true,"net.sy":true,"mil.sy":true,"com.sy":true,"org.sy":true,"sz":true,"co.sz":true,"ac.sz":true,"org.sz":true,"tc":true,"td":true,"tel":true,"tf":true,"tg":true,"th":true,"ac.th":true,"co.th":true,"go.th":true,"in.th":true,"mi.th":true,"net.th":true,"or.th":true,"tj":true,"ac.tj":true,"biz.tj":true,"co.tj":true,"com.tj":true,"edu.tj":true,"go.tj":true,"gov.tj":true,"int.tj":true,"mil.tj":true,"name.tj":true,"net.tj":true,"nic.tj":true,"org.tj":true,"test.tj":true,"web.tj":true,"tk":true,"tl":true,"gov.tl":true,"tm":true,"com.tm":true,"co.tm":true,"org.tm":true,"net.tm":true,"nom.tm":true,"gov.tm":true,"mil.tm":true,"edu.tm":true,"tn":true,"com.tn":true,"ens.tn":true,"fin.tn":true,"gov.tn":true,"ind.tn":true,"intl.tn":true,"nat.tn":true,"net.tn":true,"org.tn":true,"info.tn":true,"perso.tn":true,"tourism.tn":true,"edunet.tn":true,"rnrt.tn":true,"rns.tn":true,"rnu.tn":true,"mincom.tn":true,"agrinet.tn":true,"defense.tn":true,"turen.tn":true,"to":true,"com.to":true,"gov.to":true,"net.to":true,"org.to":true,"edu.to":true,"mil.to":true,"tp":true,"tr":true,"com.tr":true,"info.tr":true,"biz.tr":true,"net.tr":true,"org.tr":true,"web.tr":true,"gen.tr":true,"tv.tr":true,"av.tr":true,"dr.tr":true,"bbs.tr":true,"name.tr":true,"tel.tr":true,"gov.tr":true,"bel.tr":true,"pol.tr":true,"mil.tr":true,"k12.tr":true,"edu.tr":true,"kep.tr":true,"nc.tr":true,"gov.nc.tr":true,"travel":true,"tt":true,"co.tt":true,"com.tt":true,"org.tt":true,"net.tt":true,"biz.tt":true,"info.tt":true,"pro.tt":true,"int.tt":true,"coop.tt":true,"jobs.tt":true,"mobi.tt":true,"travel.tt":true,"museum.tt":true,"aero.tt":true,"name.tt":true,"gov.tt":true,"edu.tt":true,"tv":true,"tw":true,"edu.tw":true,"gov.tw":true,"mil.tw":true,"com.tw":true,"net.tw":true,"org.tw":true,"idv.tw":true,"game.tw":true,"ebiz.tw":true,"club.tw":true,"xn--zf0ao64a.tw":true,"xn--uc0atv.tw":true,"xn--czrw28b.tw":true,"tz":true,"ac.tz":true,"co.tz":true,"go.tz":true,"hotel.tz":true,"info.tz":true,"me.tz":true,"mil.tz":true,"mobi.tz":true,"ne.tz":true,"or.tz":true,"sc.tz":true,"tv.tz":true,"ua":true,"com.ua":true,"edu.ua":true,"gov.ua":true,"in.ua":true,"net.ua":true,"org.ua":true,"cherkassy.ua":true,"cherkasy.ua":true,"chernigov.ua":true,"chernihiv.ua":true,"chernivtsi.ua":true,"chernovtsy.ua":true,"ck.ua":true,"cn.ua":true,"cr.ua":true,"crimea.ua":true,"cv.ua":true,"dn.ua":true,"dnepropetrovsk.ua":true,"dnipropetrovsk.ua":true,"dominic.ua":true,"donetsk.ua":true,"dp.ua":true,"if.ua":true,"ivano-frankivsk.ua":true,"kh.ua":true,"kharkiv.ua":true,"kharkov.ua":true,"kherson.ua":true,"khmelnitskiy.ua":true,"khmelnytskyi.ua":true,"kiev.ua":true,"kirovograd.ua":true,"km.ua":true,"kr.ua":true,"krym.ua":true,"ks.ua":true,"kv.ua":true,"kyiv.ua":true,"lg.ua":true,"lt.ua":true,"lugansk.ua":true,"lutsk.ua":true,"lv.ua":true,"lviv.ua":true,"mk.ua":true,"mykolaiv.ua":true,"nikolaev.ua":true,"od.ua":true,"odesa.ua":true,"odessa.ua":true,"pl.ua":true,"poltava.ua":true,"rivne.ua":true,"rovno.ua":true,"rv.ua":true,"sb.ua":true,"sebastopol.ua":true,"sevastopol.ua":true,"sm.ua":true,"sumy.ua":true,"te.ua":true,"ternopil.ua":true,"uz.ua":true,"uzhgorod.ua":true,"vinnica.ua":true,"vinnytsia.ua":true,"vn.ua":true,"volyn.ua":true,"yalta.ua":true,"zaporizhzhe.ua":true,"zaporizhzhia.ua":true,"zhitomir.ua":true,"zhytomyr.ua":true,"zp.ua":true,"zt.ua":true,"ug":true,"co.ug":true,"or.ug":true,"ac.ug":true,"sc.ug":true,"go.ug":true,"ne.ug":true,"com.ug":true,"org.ug":true,"uk":true,"ac.uk":true,"co.uk":true,"gov.uk":true,"ltd.uk":true,"me.uk":true,"net.uk":true,"nhs.uk":true,"org.uk":true,"plc.uk":true,"police.uk":true,"*.sch.uk":true,"us":true,"dni.us":true,"fed.us":true,"isa.us":true,"kids.us":true,"nsn.us":true,"ak.us":true,"al.us":true,"ar.us":true,"as.us":true,"az.us":true,"ca.us":true,"co.us":true,"ct.us":true,"dc.us":true,"de.us":true,"fl.us":true,"ga.us":true,"gu.us":true,"hi.us":true,"ia.us":true,"id.us":true,"il.us":true,"in.us":true,"ks.us":true,"ky.us":true,"la.us":true,"ma.us":true,"md.us":true,"me.us":true,"mi.us":true,"mn.us":true,"mo.us":true,"ms.us":true,"mt.us":true,"nc.us":true,"nd.us":true,"ne.us":true,"nh.us":true,"nj.us":true,"nm.us":true,"nv.us":true,"ny.us":true,"oh.us":true,"ok.us":true,"or.us":true,"pa.us":true,"pr.us":true,"ri.us":true,"sc.us":true,"sd.us":true,"tn.us":true,"tx.us":true,"ut.us":true,"vi.us":true,"vt.us":true,"va.us":true,"wa.us":true,"wi.us":true,"wv.us":true,"wy.us":true,"k12.ak.us":true,"k12.al.us":true,"k12.ar.us":true,"k12.as.us":true,"k12.az.us":true,"k12.ca.us":true,"k12.co.us":true,"k12.ct.us":true,"k12.dc.us":true,"k12.de.us":true,"k12.fl.us":true,"k12.ga.us":true,"k12.gu.us":true,"k12.ia.us":true,"k12.id.us":true,"k12.il.us":true,"k12.in.us":true,"k12.ks.us":true,"k12.ky.us":true,"k12.la.us":true,"k12.ma.us":true,"k12.md.us":true,"k12.me.us":true,"k12.mi.us":true,"k12.mn.us":true,"k12.mo.us":true,"k12.ms.us":true,"k12.mt.us":true,"k12.nc.us":true,"k12.ne.us":true,"k12.nh.us":true,"k12.nj.us":true,"k12.nm.us":true,"k12.nv.us":true,"k12.ny.us":true,"k12.oh.us":true,"k12.ok.us":true,"k12.or.us":true,"k12.pa.us":true,"k12.pr.us":true,"k12.ri.us":true,"k12.sc.us":true,"k12.tn.us":true,"k12.tx.us":true,"k12.ut.us":true,"k12.vi.us":true,"k12.vt.us":true,"k12.va.us":true,"k12.wa.us":true,"k12.wi.us":true,"k12.wy.us":true,"cc.ak.us":true,"cc.al.us":true,"cc.ar.us":true,"cc.as.us":true,"cc.az.us":true,"cc.ca.us":true,"cc.co.us":true,"cc.ct.us":true,"cc.dc.us":true,"cc.de.us":true,"cc.fl.us":true,"cc.ga.us":true,"cc.gu.us":true,"cc.hi.us":true,"cc.ia.us":true,"cc.id.us":true,"cc.il.us":true,"cc.in.us":true,"cc.ks.us":true,"cc.ky.us":true,"cc.la.us":true,"cc.ma.us":true,"cc.md.us":true,"cc.me.us":true,"cc.mi.us":true,"cc.mn.us":true,"cc.mo.us":true,"cc.ms.us":true,"cc.mt.us":true,"cc.nc.us":true,"cc.nd.us":true,"cc.ne.us":true,"cc.nh.us":true,"cc.nj.us":true,"cc.nm.us":true,"cc.nv.us":true,"cc.ny.us":true,"cc.oh.us":true,"cc.ok.us":true,"cc.or.us":true,"cc.pa.us":true,"cc.pr.us":true,"cc.ri.us":true,"cc.sc.us":true,"cc.sd.us":true,"cc.tn.us":true,"cc.tx.us":true,"cc.ut.us":true,"cc.vi.us":true,"cc.vt.us":true,"cc.va.us":true,"cc.wa.us":true,"cc.wi.us":true,"cc.wv.us":true,"cc.wy.us":true,"lib.ak.us":true,"lib.al.us":true,"lib.ar.us":true,"lib.as.us":true,"lib.az.us":true,"lib.ca.us":true,"lib.co.us":true,"lib.ct.us":true,"lib.dc.us":true,"lib.de.us":true,"lib.fl.us":true,"lib.ga.us":true,"lib.gu.us":true,"lib.hi.us":true,"lib.ia.us":true,"lib.id.us":true,"lib.il.us":true,"lib.in.us":true,"lib.ks.us":true,"lib.ky.us":true,"lib.la.us":true,"lib.ma.us":true,"lib.md.us":true,"lib.me.us":true,"lib.mi.us":true,"lib.mn.us":true,"lib.mo.us":true,"lib.ms.us":true,"lib.mt.us":true,"lib.nc.us":true,"lib.nd.us":true,"lib.ne.us":true,"lib.nh.us":true,"lib.nj.us":true,"lib.nm.us":true,"lib.nv.us":true,"lib.ny.us":true,"lib.oh.us":true,"lib.ok.us":true,"lib.or.us":true,"lib.pa.us":true,"lib.pr.us":true,"lib.ri.us":true,"lib.sc.us":true,"lib.sd.us":true,"lib.tn.us":true,"lib.tx.us":true,"lib.ut.us":true,"lib.vi.us":true,"lib.vt.us":true,"lib.va.us":true,"lib.wa.us":true,"lib.wi.us":true,"lib.wy.us":true,"pvt.k12.ma.us":true,"chtr.k12.ma.us":true,"paroch.k12.ma.us":true,"uy":true,"com.uy":true,"edu.uy":true,"gub.uy":true,"mil.uy":true,"net.uy":true,"org.uy":true,"uz":true,"co.uz":true,"com.uz":true,"net.uz":true,"org.uz":true,"va":true,"vc":true,"com.vc":true,"net.vc":true,"org.vc":true,"gov.vc":true,"mil.vc":true,"edu.vc":true,"ve":true,"arts.ve":true,"co.ve":true,"com.ve":true,"e12.ve":true,"edu.ve":true,"firm.ve":true,"gob.ve":true,"gov.ve":true,"info.ve":true,"int.ve":true,"mil.ve":true,"net.ve":true,"org.ve":true,"rec.ve":true,"store.ve":true,"tec.ve":true,"web.ve":true,"vg":true,"vi":true,"co.vi":true,"com.vi":true,"k12.vi":true,"net.vi":true,"org.vi":true,"vn":true,"com.vn":true,"net.vn":true,"org.vn":true,"edu.vn":true,"gov.vn":true,"int.vn":true,"ac.vn":true,"biz.vn":true,"info.vn":true,"name.vn":true,"pro.vn":true,"health.vn":true,"vu":true,"com.vu":true,"edu.vu":true,"net.vu":true,"org.vu":true,"wf":true,"ws":true,"com.ws":true,"net.ws":true,"org.ws":true,"gov.ws":true,"edu.ws":true,"yt":true,"xn--mgbaam7a8h":true,"xn--y9a3aq":true,"xn--54b7fta0cc":true,"xn--90ais":true,"xn--fiqs8s":true,"xn--fiqz9s":true,"xn--lgbbat1ad8j":true,"xn--wgbh1c":true,"xn--node":true,"xn--qxam":true,"xn--j6w193g":true,"xn--h2brj9c":true,"xn--mgbbh1a71e":true,"xn--fpcrj9c3d":true,"xn--gecrj9c":true,"xn--s9brj9c":true,"xn--45brj9c":true,"xn--xkc2dl3a5ee0h":true,"xn--mgba3a4f16a":true,"xn--mgba3a4fra":true,"xn--mgbtx2b":true,"xn--mgbayh7gpa":true,"xn--3e0b707e":true,"xn--80ao21a":true,"xn--fzc2c9e2c":true,"xn--xkc2al3hye2a":true,"xn--mgbc0a9azcg":true,"xn--d1alf":true,"xn--l1acc":true,"xn--mix891f":true,"xn--mix082f":true,"xn--mgbx4cd0ab":true,"xn--mgb9awbf":true,"xn--mgbai9azgqp6j":true,"xn--mgbai9a5eva00b":true,"xn--ygbi2ammx":true,"xn--90a3ac":true,"xn--o1ac.xn--90a3ac":true,"xn--c1avg.xn--90a3ac":true,"xn--90azh.xn--90a3ac":true,"xn--d1at.xn--90a3ac":true,"xn--o1ach.xn--90a3ac":true,"xn--80au.xn--90a3ac":true,"xn--p1ai":true,"xn--wgbl6a":true,"xn--mgberp4a5d4ar":true,"xn--mgberp4a5d4a87g":true,"xn--mgbqly7c0a67fbc":true,"xn--mgbqly7cvafr":true,"xn--mgbpl2fh":true,"xn--yfro4i67o":true,"xn--clchc0ea0b2g2a9gcd":true,"xn--ogbpf8fl":true,"xn--mgbtf8fl":true,"xn--o3cw4h":true,"xn--pgbs0dh":true,"xn--kpry57d":true,"xn--kprw13d":true,"xn--nnx388a":true,"xn--j1amh":true,"xn--mgb2ddes":true,"xxx":true,"*.ye":true,"ac.za":true,"agrica.za":true,"alt.za":true,"co.za":true,"edu.za":true,"gov.za":true,"grondar.za":true,"law.za":true,"mil.za":true,"net.za":true,"ngo.za":true,"nis.za":true,"nom.za":true,"org.za":true,"school.za":true,"tm.za":true,"web.za":true,"*.zm":true,"*.zw":true,"aaa":true,"aarp":true,"abarth":true,"abb":true,"abbott":true,"abbvie":true,"abc":true,"able":true,"abogado":true,"abudhabi":true,"academy":true,"accenture":true,"accountant":true,"accountants":true,"aco":true,"active":true,"actor":true,"adac":true,"ads":true,"adult":true,"aeg":true,"aetna":true,"afamilycompany":true,"afl":true,"africa":true,"africamagic":true,"agakhan":true,"agency":true,"aig":true,"aigo":true,"airbus":true,"airforce":true,"airtel":true,"akdn":true,"alfaromeo":true,"alibaba":true,"alipay":true,"allfinanz":true,"allstate":true,"ally":true,"alsace":true,"alstom":true,"americanexpress":true,"americanfamily":true,"amex":true,"amfam":true,"amica":true,"amsterdam":true,"analytics":true,"android":true,"anquan":true,"anz":true,"aol":true,"apartments":true,"app":true,"apple":true,"aquarelle":true,"aramco":true,"archi":true,"army":true,"arte":true,"asda":true,"associates":true,"athleta":true,"attorney":true,"auction":true,"audi":true,"audible":true,"audio":true,"auspost":true,"author":true,"auto":true,"autos":true,"avianca":true,"aws":true,"axa":true,"azure":true,"baby":true,"baidu":true,"banamex":true,"bananarepublic":true,"band":true,"bank":true,"bar":true,"barcelona":true,"barclaycard":true,"barclays":true,"barefoot":true,"bargains":true,"basketball":true,"bauhaus":true,"bayern":true,"bbc":true,"bbt":true,"bbva":true,"bcg":true,"bcn":true,"beats":true,"beer":true,"bentley":true,"berlin":true,"best":true,"bestbuy":true,"bet":true,"bharti":true,"bible":true,"bid":true,"bike":true,"bing":true,"bingo":true,"bio":true,"black":true,"blackfriday":true,"blanco":true,"blockbuster":true,"blog":true,"bloomberg":true,"blue":true,"bms":true,"bmw":true,"bnl":true,"bnpparibas":true,"boats":true,"boehringer":true,"bofa":true,"bom":true,"bond":true,"boo":true,"book":true,"booking":true,"boots":true,"bosch":true,"bostik":true,"bot":true,"boutique":true,"bradesco":true,"bridgestone":true,"broadway":true,"broker":true,"brother":true,"brussels":true,"budapest":true,"bugatti":true,"build":true,"builders":true,"business":true,"buy":true,"buzz":true,"bzh":true,"cab":true,"cafe":true,"cal":true,"call":true,"calvinklein":true,"camera":true,"camp":true,"cancerresearch":true,"canon":true,"capetown":true,"capital":true,"capitalone":true,"car":true,"caravan":true,"cards":true,"care":true,"career":true,"careers":true,"cars":true,"cartier":true,"casa":true,"case":true,"caseih":true,"cash":true,"casino":true,"catering":true,"cba":true,"cbn":true,"cbre":true,"cbs":true,"ceb":true,"center":true,"ceo":true,"cern":true,"cfa":true,"cfd":true,"chanel":true,"channel":true,"chase":true,"chat":true,"cheap":true,"chintai":true,"chloe":true,"christmas":true,"chrome":true,"chrysler":true,"church":true,"cipriani":true,"circle":true,"cisco":true,"citadel":true,"citi":true,"citic":true,"city":true,"cityeats":true,"claims":true,"cleaning":true,"click":true,"clinic":true,"clothing":true,"cloud":true,"club":true,"clubmed":true,"coach":true,"codes":true,"coffee":true,"college":true,"cologne":true,"comcast":true,"commbank":true,"community":true,"company":true,"computer":true,"comsec":true,"condos":true,"construction":true,"consulting":true,"contact":true,"contractors":true,"cooking":true,"cookingchannel":true,"cool":true,"corsica":true,"country":true,"coupon":true,"coupons":true,"courses":true,"credit":true,"creditcard":true,"creditunion":true,"cricket":true,"crown":true,"crs":true,"cruises":true,"csc":true,"cuisinella":true,"cymru":true,"cyou":true,"dabur":true,"dad":true,"dance":true,"date":true,"dating":true,"datsun":true,"day":true,"dclk":true,"dds":true,"deal":true,"dealer":true,"deals":true,"degree":true,"delivery":true,"dell":true,"deloitte":true,"delta":true,"democrat":true,"dental":true,"dentist":true,"desi":true,"design":true,"dev":true,"dhl":true,"diamonds":true,"diet":true,"digital":true,"direct":true,"directory":true,"discount":true,"discover":true,"dish":true,"dnp":true,"docs":true,"dodge":true,"dog":true,"doha":true,"domains":true,"doosan":true,"dot":true,"download":true,"drive":true,"dstv":true,"dtv":true,"dubai":true,"duck":true,"dunlop":true,"duns":true,"dupont":true,"durban":true,"dvag":true,"dwg":true,"earth":true,"eat":true,"edeka":true,"education":true,"email":true,"emerck":true,"emerson":true,"energy":true,"engineer":true,"engineering":true,"enterprises":true,"epost":true,"epson":true,"equipment":true,"ericsson":true,"erni":true,"esq":true,"estate":true,"esurance":true,"etisalat":true,"eurovision":true,"eus":true,"events":true,"everbank":true,"exchange":true,"expert":true,"exposed":true,"express":true,"extraspace":true,"fage":true,"fail":true,"fairwinds":true,"faith":true,"family":true,"fan":true,"fans":true,"farm":true,"farmers":true,"fashion":true,"fast":true,"fedex":true,"feedback":true,"ferrari":true,"ferrero":true,"fiat":true,"fidelity":true,"fido":true,"film":true,"final":true,"finance":true,"financial":true,"fire":true,"firestone":true,"firmdale":true,"fish":true,"fishing":true,"fit":true,"fitness":true,"flickr":true,"flights":true,"flir":true,"florist":true,"flowers":true,"flsmidth":true,"fly":true,"foo":true,"foodnetwork":true,"football":true,"ford":true,"forex":true,"forsale":true,"forum":true,"foundation":true,"fox":true,"fresenius":true,"frl":true,"frogans":true,"frontdoor":true,"frontier":true,"ftr":true,"fujitsu":true,"fujixerox":true,"fund":true,"furniture":true,"futbol":true,"fyi":true,"gal":true,"gallery":true,"gallo":true,"gallup":true,"game":true,"games":true,"gap":true,"garden":true,"gbiz":true,"gdn":true,"gea":true,"gent":true,"genting":true,"george":true,"ggee":true,"gift":true,"gifts":true,"gives":true,"giving":true,"glade":true,"glass":true,"gle":true,"global":true,"globo":true,"gmail":true,"gmo":true,"gmx":true,"godaddy":true,"gold":true,"goldpoint":true,"golf":true,"goo":true,"goodhands":true,"goodyear":true,"goog":true,"google":true,"gop":true,"got":true,"gotv":true,"grainger":true,"graphics":true,"gratis":true,"green":true,"gripe":true,"group":true,"guardian":true,"gucci":true,"guge":true,"guide":true,"guitars":true,"guru":true,"hamburg":true,"hangout":true,"haus":true,"hbo":true,"hdfc":true,"hdfcbank":true,"health":true,"healthcare":true,"help":true,"helsinki":true,"here":true,"hermes":true,"hgtv":true,"hiphop":true,"hisamitsu":true,"hitachi":true,"hiv":true,"hkt":true,"hockey":true,"holdings":true,"holiday":true,"homedepot":true,"homegoods":true,"homes":true,"homesense":true,"honda":true,"honeywell":true,"horse":true,"host":true,"hosting":true,"hot":true,"hoteles":true,"hotmail":true,"house":true,"how":true,"hsbc":true,"htc":true,"hughes":true,"hyatt":true,"hyundai":true,"ibm":true,"icbc":true,"ice":true,"icu":true,"ieee":true,"ifm":true,"iinet":true,"ikano":true,"imamat":true,"imdb":true,"immo":true,"immobilien":true,"industries":true,"infiniti":true,"ing":true,"ink":true,"institute":true,"insurance":true,"insure":true,"intel":true,"international":true,"intuit":true,"investments":true,"ipiranga":true,"irish":true,"iselect":true,"ismaili":true,"ist":true,"istanbul":true,"itau":true,"itv":true,"iveco":true,"iwc":true,"jaguar":true,"java":true,"jcb":true,"jcp":true,"jeep":true,"jetzt":true,"jewelry":true,"jio":true,"jlc":true,"jll":true,"jmp":true,"jnj":true,"joburg":true,"jot":true,"joy":true,"jpmorgan":true,"jprs":true,"juegos":true,"juniper":true,"kaufen":true,"kddi":true,"kerryhotels":true,"kerrylogistics":true,"kerryproperties":true,"kfh":true,"kia":true,"kim":true,"kinder":true,"kindle":true,"kitchen":true,"kiwi":true,"koeln":true,"komatsu":true,"kosher":true,"kpmg":true,"kpn":true,"krd":true,"kred":true,"kuokgroup":true,"kyknet":true,"kyoto":true,"lacaixa":true,"ladbrokes":true,"lamborghini":true,"lancaster":true,"lancia":true,"lancome":true,"land":true,"landrover":true,"lanxess":true,"lasalle":true,"lat":true,"latino":true,"latrobe":true,"law":true,"lawyer":true,"lds":true,"lease":true,"leclerc":true,"lefrak":true,"legal":true,"lego":true,"lexus":true,"lgbt":true,"liaison":true,"lidl":true,"life":true,"lifeinsurance":true,"lifestyle":true,"lighting":true,"like":true,"lilly":true,"limited":true,"limo":true,"lincoln":true,"linde":true,"link":true,"lipsy":true,"live":true,"living":true,"lixil":true,"loan":true,"loans":true,"locker":true,"locus":true,"loft":true,"lol":true,"london":true,"lotte":true,"lotto":true,"love":true,"lpl":true,"lplfinancial":true,"ltd":true,"ltda":true,"lundbeck":true,"lupin":true,"luxe":true,"luxury":true,"macys":true,"madrid":true,"maif":true,"maison":true,"makeup":true,"man":true,"management":true,"mango":true,"market":true,"marketing":true,"markets":true,"marriott":true,"marshalls":true,"maserati":true,"mattel":true,"mba":true,"mcd":true,"mcdonalds":true,"mckinsey":true,"med":true,"media":true,"meet":true,"melbourne":true,"meme":true,"memorial":true,"men":true,"menu":true,"meo":true,"metlife":true,"miami":true,"microsoft":true,"mini":true,"mint":true,"mit":true,"mitsubishi":true,"mlb":true,"mls":true,"mma":true,"mnet":true,"mobily":true,"moda":true,"moe":true,"moi":true,"mom":true,"monash":true,"money":true,"monster":true,"montblanc":true,"mopar":true,"mormon":true,"mortgage":true,"moscow":true,"moto":true,"motorcycles":true,"mov":true,"movie":true,"movistar":true,"msd":true,"mtn":true,"mtpc":true,"mtr":true,"multichoice":true,"mutual":true,"mutuelle":true,"mzansimagic":true,"nab":true,"nadex":true,"nagoya":true,"naspers":true,"nationwide":true,"natura":true,"navy":true,"nba":true,"nec":true,"netbank":true,"netflix":true,"network":true,"neustar":true,"new":true,"newholland":true,"news":true,"next":true,"nextdirect":true,"nexus":true,"nfl":true,"ngo":true,"nhk":true,"nico":true,"nike":true,"nikon":true,"ninja":true,"nissan":true,"nokia":true,"northwesternmutual":true,"norton":true,"now":true,"nowruz":true,"nowtv":true,"nra":true,"nrw":true,"ntt":true,"nyc":true,"obi":true,"observer":true,"off":true,"office":true,"okinawa":true,"olayan":true,"olayangroup":true,"oldnavy":true,"ollo":true,"omega":true,"one":true,"ong":true,"onl":true,"online":true,"onyourside":true,"ooo":true,"open":true,"oracle":true,"orange":true,"organic":true,"orientexpress":true,"osaka":true,"otsuka":true,"ott":true,"ovh":true,"page":true,"pamperedchef":true,"panasonic":true,"panerai":true,"paris":true,"pars":true,"partners":true,"parts":true,"party":true,"passagens":true,"pay":true,"payu":true,"pccw":true,"pet":true,"pfizer":true,"pharmacy":true,"philips":true,"photo":true,"photography":true,"photos":true,"physio":true,"piaget":true,"pics":true,"pictet":true,"pictures":true,"pid":true,"pin":true,"ping":true,"pink":true,"pioneer":true,"pizza":true,"place":true,"play":true,"playstation":true,"plumbing":true,"plus":true,"pnc":true,"pohl":true,"poker":true,"politie":true,"porn":true,"pramerica":true,"praxi":true,"press":true,"prime":true,"prod":true,"productions":true,"prof":true,"progressive":true,"promo":true,"properties":true,"property":true,"protection":true,"pru":true,"prudential":true,"pub":true,"qpon":true,"quebec":true,"quest":true,"qvc":true,"racing":true,"raid":true,"read":true,"realestate":true,"realtor":true,"realty":true,"recipes":true,"red":true,"redstone":true,"redumbrella":true,"rehab":true,"reise":true,"reisen":true,"reit":true,"reliance":true,"ren":true,"rent":true,"rentals":true,"repair":true,"report":true,"republican":true,"rest":true,"restaurant":true,"review":true,"reviews":true,"rexroth":true,"rich":true,"richardli":true,"ricoh":true,"rightathome":true,"ril":true,"rio":true,"rip":true,"rocher":true,"rocks":true,"rodeo":true,"rogers":true,"room":true,"rsvp":true,"ruhr":true,"run":true,"rwe":true,"ryukyu":true,"saarland":true,"safe":true,"safety":true,"sakura":true,"sale":true,"salon":true,"samsclub":true,"samsung":true,"sandvik":true,"sandvikcoromant":true,"sanofi":true,"sap":true,"sapo":true,"sarl":true,"sas":true,"save":true,"saxo":true,"sbi":true,"sbs":true,"sca":true,"scb":true,"schaeffler":true,"schmidt":true,"scholarships":true,"school":true,"schule":true,"schwarz":true,"science":true,"scjohnson":true,"scor":true,"scot":true,"seat":true,"secure":true,"security":true,"seek":true,"sener":true,"services":true,"ses":true,"seven":true,"sew":true,"sex":true,"sexy":true,"sfr":true,"shangrila":true,"sharp":true,"shaw":true,"shell":true,"shia":true,"shiksha":true,"shoes":true,"shouji":true,"show":true,"showtime":true,"shriram":true,"silk":true,"sina":true,"singles":true,"site":true,"ski":true,"skin":true,"sky":true,"skype":true,"sling":true,"smart":true,"smile":true,"sncf":true,"soccer":true,"social":true,"softbank":true,"software":true,"sohu":true,"solar":true,"solutions":true,"song":true,"sony":true,"soy":true,"space":true,"spiegel":true,"spot":true,"spreadbetting":true,"srl":true,"srt":true,"stada":true,"staples":true,"star":true,"starhub":true,"statebank":true,"statefarm":true,"statoil":true,"stc":true,"stcgroup":true,"stockholm":true,"storage":true,"store":true,"studio":true,"study":true,"style":true,"sucks":true,"supersport":true,"supplies":true,"supply":true,"support":true,"surf":true,"surgery":true,"suzuki":true,"swatch":true,"swiftcover":true,"swiss":true,"sydney":true,"symantec":true,"systems":true,"tab":true,"taipei":true,"talk":true,"taobao":true,"target":true,"tatamotors":true,"tatar":true,"tattoo":true,"tax":true,"taxi":true,"tci":true,"tdk":true,"team":true,"tech":true,"technology":true,"telecity":true,"telefonica":true,"temasek":true,"tennis":true,"teva":true,"thd":true,"theater":true,"theatre":true,"theguardian":true,"tiaa":true,"tickets":true,"tienda":true,"tiffany":true,"tips":true,"tires":true,"tirol":true,"tjmaxx":true,"tjx":true,"tkmaxx":true,"tmall":true,"today":true,"tokyo":true,"tools":true,"top":true,"toray":true,"toshiba":true,"total":true,"tours":true,"town":true,"toyota":true,"toys":true,"trade":true,"trading":true,"training":true,"travelchannel":true,"travelers":true,"travelersinsurance":true,"trust":true,"trv":true,"tube":true,"tui":true,"tunes":true,"tushu":true,"tvs":true,"ubank":true,"ubs":true,"uconnect":true,"university":true,"uno":true,"uol":true,"ups":true,"vacations":true,"vana":true,"vanguard":true,"vegas":true,"ventures":true,"verisign":true,"versicherung":true,"vet":true,"viajes":true,"video":true,"vig":true,"viking":true,"villas":true,"vin":true,"vip":true,"virgin":true,"visa":true,"vision":true,"vista":true,"vistaprint":true,"viva":true,"vivo":true,"vlaanderen":true,"vodka":true,"volkswagen":true,"vote":true,"voting":true,"voto":true,"voyage":true,"vuelos":true,"wales":true,"walmart":true,"walter":true,"wang":true,"wanggou":true,"warman":true,"watch":true,"watches":true,"weather":true,"weatherchannel":true,"webcam":true,"weber":true,"website":true,"wed":true,"wedding":true,"weibo":true,"weir":true,"whoswho":true,"wien":true,"wiki":true,"williamhill":true,"win":true,"windows":true,"wine":true,"winners":true,"wme":true,"wolterskluwer":true,"woodside":true,"work":true,"works":true,"world":true,"wtc":true,"wtf":true,"xbox":true,"xerox":true,"xfinity":true,"xihuan":true,"xin":true,"xn--11b4c3d":true,"xn--1ck2e1b":true,"xn--1qqw23a":true,"xn--30rr7y":true,"xn--3bst00m":true,"xn--3ds443g":true,"xn--3oq18vl8pn36a":true,"xn--3pxu8k":true,"xn--42c2d9a":true,"xn--45q11c":true,"xn--4gbrim":true,"xn--4gq48lf9j":true,"xn--55qw42g":true,"xn--55qx5d":true,"xn--5su34j936bgsg":true,"xn--5tzm5g":true,"xn--6frz82g":true,"xn--6qq986b3xl":true,"xn--80adxhks":true,"xn--80asehdb":true,"xn--80aswg":true,"xn--8y0a063a":true,"xn--9dbq2a":true,"xn--9et52u":true,"xn--9krt00a":true,"xn--b4w605ferd":true,"xn--bck1b9a5dre4c":true,"xn--c1avg":true,"xn--c2br7g":true,"xn--cck2b3b":true,"xn--cg4bki":true,"xn--czr694b":true,"xn--czrs0t":true,"xn--czru2d":true,"xn--d1acj3b":true,"xn--eckvdtc9d":true,"xn--efvy88h":true,"xn--estv75g":true,"xn--fct429k":true,"xn--fhbei":true,"xn--fiq228c5hs":true,"xn--fiq64b":true,"xn--fjq720a":true,"xn--flw351e":true,"xn--fzys8d69uvgm":true,"xn--g2xx48c":true,"xn--gckr3f0f":true,"xn--hxt814e":true,"xn--i1b6b1a6a2e":true,"xn--imr513n":true,"xn--io0a7i":true,"xn--j1aef":true,"xn--jlq61u9w7b":true,"xn--jvr189m":true,"xn--kcrx77d1x4a":true,"xn--kpu716f":true,"xn--kput3i":true,"xn--mgba3a3ejt":true,"xn--mgba7c0bbn0a":true,"xn--mgbaakc7dvf":true,"xn--mgbab2bd":true,"xn--mgbb9fbpob":true,"xn--mgbca7dzdo":true,"xn--mgbt3dhd":true,"xn--mk1bu44c":true,"xn--mxtq1m":true,"xn--ngbc5azd":true,"xn--ngbe9e0a":true,"xn--nqv7f":true,"xn--nqv7fs00ema":true,"xn--nyqy26a":true,"xn--p1acf":true,"xn--pbt977c":true,"xn--pssy2u":true,"xn--q9jyb4c":true,"xn--qcka1pmc":true,"xn--rhqv96g":true,"xn--rovu88b":true,"xn--ses554g":true,"xn--t60b56a":true,"xn--tckwe":true,"xn--unup4y":true,"xn--vermgensberater-ctb":true,"xn--vermgensberatung-pwb":true,"xn--vhquv":true,"xn--vuq861b":true,"xn--w4r85el8fhu5dnra":true,"xn--w4rs40l":true,"xn--xhq521b":true,"xn--zfr164b":true,"xperia":true,"xyz":true,"yachts":true,"yahoo":true,"yamaxun":true,"yandex":true,"yodobashi":true,"yoga":true,"yokohama":true,"you":true,"youtube":true,"yun":true,"zappos":true,"zara":true,"zero":true,"zip":true,"zippo":true,"zone":true,"zuerich":true,"cloudfront.net":true,"ap-northeast-1.compute.amazonaws.com":true,"ap-southeast-1.compute.amazonaws.com":true,"ap-southeast-2.compute.amazonaws.com":true,"cn-north-1.compute.amazonaws.cn":true,"compute.amazonaws.cn":true,"compute.amazonaws.com":true,"compute-1.amazonaws.com":true,"eu-west-1.compute.amazonaws.com":true,"eu-central-1.compute.amazonaws.com":true,"sa-east-1.compute.amazonaws.com":true,"us-east-1.amazonaws.com":true,"us-gov-west-1.compute.amazonaws.com":true,"us-west-1.compute.amazonaws.com":true,"us-west-2.compute.amazonaws.com":true,"z-1.compute-1.amazonaws.com":true,"z-2.compute-1.amazonaws.com":true,"elasticbeanstalk.com":true,"elb.amazonaws.com":true,"s3.amazonaws.com":true,"s3-ap-northeast-1.amazonaws.com":true,"s3-ap-southeast-1.amazonaws.com":true,"s3-ap-southeast-2.amazonaws.com":true,"s3-external-1.amazonaws.com":true,"s3-external-2.amazonaws.com":true,"s3-fips-us-gov-west-1.amazonaws.com":true,"s3-eu-central-1.amazonaws.com":true,"s3-eu-west-1.amazonaws.com":true,"s3-sa-east-1.amazonaws.com":true,"s3-us-gov-west-1.amazonaws.com":true,"s3-us-west-1.amazonaws.com":true,"s3-us-west-2.amazonaws.com":true,"s3.cn-north-1.amazonaws.com.cn":true,"s3.eu-central-1.amazonaws.com":true,"betainabox.com":true,"ae.org":true,"ar.com":true,"br.com":true,"cn.com":true,"com.de":true,"com.se":true,"de.com":true,"eu.com":true,"gb.com":true,"gb.net":true,"hu.com":true,"hu.net":true,"jp.net":true,"jpn.com":true,"kr.com":true,"mex.com":true,"no.com":true,"qc.com":true,"ru.com":true,"sa.com":true,"se.com":true,"se.net":true,"uk.com":true,"uk.net":true,"us.com":true,"uy.com":true,"za.bz":true,"za.com":true,"africa.com":true,"gr.com":true,"in.net":true,"us.org":true,"co.com":true,"c.la":true,"cloudcontrolled.com":true,"cloudcontrolapp.com":true,"co.ca":true,"c.cdn77.org":true,"cdn77-ssl.net":true,"r.cdn77.net":true,"rsc.cdn77.org":true,"ssl.origin.cdn77-secure.org":true,"co.nl":true,"co.no":true,"*.platform.sh":true,"cupcake.is":true,"dreamhosters.com":true,"duckdns.org":true,"dyndns-at-home.com":true,"dyndns-at-work.com":true,"dyndns-blog.com":true,"dyndns-free.com":true,"dyndns-home.com":true,"dyndns-ip.com":true,"dyndns-mail.com":true,"dyndns-office.com":true,"dyndns-pics.com":true,"dyndns-remote.com":true,"dyndns-server.com":true,"dyndns-web.com":true,"dyndns-wiki.com":true,"dyndns-work.com":true,"dyndns.biz":true,"dyndns.info":true,"dyndns.org":true,"dyndns.tv":true,"at-band-camp.net":true,"ath.cx":true,"barrel-of-knowledge.info":true,"barrell-of-knowledge.info":true,"better-than.tv":true,"blogdns.com":true,"blogdns.net":true,"blogdns.org":true,"blogsite.org":true,"boldlygoingnowhere.org":true,"broke-it.net":true,"buyshouses.net":true,"cechire.com":true,"dnsalias.com":true,"dnsalias.net":true,"dnsalias.org":true,"dnsdojo.com":true,"dnsdojo.net":true,"dnsdojo.org":true,"does-it.net":true,"doesntexist.com":true,"doesntexist.org":true,"dontexist.com":true,"dontexist.net":true,"dontexist.org":true,"doomdns.com":true,"doomdns.org":true,"dvrdns.org":true,"dyn-o-saur.com":true,"dynalias.com":true,"dynalias.net":true,"dynalias.org":true,"dynathome.net":true,"dyndns.ws":true,"endofinternet.net":true,"endofinternet.org":true,"endoftheinternet.org":true,"est-a-la-maison.com":true,"est-a-la-masion.com":true,"est-le-patron.com":true,"est-mon-blogueur.com":true,"for-better.biz":true,"for-more.biz":true,"for-our.info":true,"for-some.biz":true,"for-the.biz":true,"forgot.her.name":true,"forgot.his.name":true,"from-ak.com":true,"from-al.com":true,"from-ar.com":true,"from-az.net":true,"from-ca.com":true,"from-co.net":true,"from-ct.com":true,"from-dc.com":true,"from-de.com":true,"from-fl.com":true,"from-ga.com":true,"from-hi.com":true,"from-ia.com":true,"from-id.com":true,"from-il.com":true,"from-in.com":true,"from-ks.com":true,"from-ky.com":true,"from-la.net":true,"from-ma.com":true,"from-md.com":true,"from-me.org":true,"from-mi.com":true,"from-mn.com":true,"from-mo.com":true,"from-ms.com":true,"from-mt.com":true,"from-nc.com":true,"from-nd.com":true,"from-ne.com":true,"from-nh.com":true,"from-nj.com":true,"from-nm.com":true,"from-nv.com":true,"from-ny.net":true,"from-oh.com":true,"from-ok.com":true,"from-or.com":true,"from-pa.com":true,"from-pr.com":true,"from-ri.com":true,"from-sc.com":true,"from-sd.com":true,"from-tn.com":true,"from-tx.com":true,"from-ut.com":true,"from-va.com":true,"from-vt.com":true,"from-wa.com":true,"from-wi.com":true,"from-wv.com":true,"from-wy.com":true,"ftpaccess.cc":true,"fuettertdasnetz.de":true,"game-host.org":true,"game-server.cc":true,"getmyip.com":true,"gets-it.net":true,"go.dyndns.org":true,"gotdns.com":true,"gotdns.org":true,"groks-the.info":true,"groks-this.info":true,"ham-radio-op.net":true,"here-for-more.info":true,"hobby-site.com":true,"hobby-site.org":true,"home.dyndns.org":true,"homedns.org":true,"homeftp.net":true,"homeftp.org":true,"homeip.net":true,"homelinux.com":true,"homelinux.net":true,"homelinux.org":true,"homeunix.com":true,"homeunix.net":true,"homeunix.org":true,"iamallama.com":true,"in-the-band.net":true,"is-a-anarchist.com":true,"is-a-blogger.com":true,"is-a-bookkeeper.com":true,"is-a-bruinsfan.org":true,"is-a-bulls-fan.com":true,"is-a-candidate.org":true,"is-a-caterer.com":true,"is-a-celticsfan.org":true,"is-a-chef.com":true,"is-a-chef.net":true,"is-a-chef.org":true,"is-a-conservative.com":true,"is-a-cpa.com":true,"is-a-cubicle-slave.com":true,"is-a-democrat.com":true,"is-a-designer.com":true,"is-a-doctor.com":true,"is-a-financialadvisor.com":true,"is-a-geek.com":true,"is-a-geek.net":true,"is-a-geek.org":true,"is-a-green.com":true,"is-a-guru.com":true,"is-a-hard-worker.com":true,"is-a-hunter.com":true,"is-a-knight.org":true,"is-a-landscaper.com":true,"is-a-lawyer.com":true,"is-a-liberal.com":true,"is-a-libertarian.com":true,"is-a-linux-user.org":true,"is-a-llama.com":true,"is-a-musician.com":true,"is-a-nascarfan.com":true,"is-a-nurse.com":true,"is-a-painter.com":true,"is-a-patsfan.org":true,"is-a-personaltrainer.com":true,"is-a-photographer.com":true,"is-a-player.com":true,"is-a-republican.com":true,"is-a-rockstar.com":true,"is-a-socialist.com":true,"is-a-soxfan.org":true,"is-a-student.com":true,"is-a-teacher.com":true,"is-a-techie.com":true,"is-a-therapist.com":true,"is-an-accountant.com":true,"is-an-actor.com":true,"is-an-actress.com":true,"is-an-anarchist.com":true,"is-an-artist.com":true,"is-an-engineer.com":true,"is-an-entertainer.com":true,"is-by.us":true,"is-certified.com":true,"is-found.org":true,"is-gone.com":true,"is-into-anime.com":true,"is-into-cars.com":true,"is-into-cartoons.com":true,"is-into-games.com":true,"is-leet.com":true,"is-lost.org":true,"is-not-certified.com":true,"is-saved.org":true,"is-slick.com":true,"is-uberleet.com":true,"is-very-bad.org":true,"is-very-evil.org":true,"is-very-good.org":true,"is-very-nice.org":true,"is-very-sweet.org":true,"is-with-theband.com":true,"isa-geek.com":true,"isa-geek.net":true,"isa-geek.org":true,"isa-hockeynut.com":true,"issmarterthanyou.com":true,"isteingeek.de":true,"istmein.de":true,"kicks-ass.net":true,"kicks-ass.org":true,"knowsitall.info":true,"land-4-sale.us":true,"lebtimnetz.de":true,"leitungsen.de":true,"likes-pie.com":true,"likescandy.com":true,"merseine.nu":true,"mine.nu":true,"misconfused.org":true,"mypets.ws":true,"myphotos.cc":true,"neat-url.com":true,"office-on-the.net":true,"on-the-web.tv":true,"podzone.net":true,"podzone.org":true,"readmyblog.org":true,"saves-the-whales.com":true,"scrapper-site.net":true,"scrapping.cc":true,"selfip.biz":true,"selfip.com":true,"selfip.info":true,"selfip.net":true,"selfip.org":true,"sells-for-less.com":true,"sells-for-u.com":true,"sells-it.net":true,"sellsyourhome.org":true,"servebbs.com":true,"servebbs.net":true,"servebbs.org":true,"serveftp.net":true,"serveftp.org":true,"servegame.org":true,"shacknet.nu":true,"simple-url.com":true,"space-to-rent.com":true,"stuff-4-sale.org":true,"stuff-4-sale.us":true,"teaches-yoga.com":true,"thruhere.net":true,"traeumtgerade.de":true,"webhop.biz":true,"webhop.info":true,"webhop.net":true,"webhop.org":true,"worse-than.tv":true,"writesthisblog.com":true,"eu.org":true,"al.eu.org":true,"asso.eu.org":true,"at.eu.org":true,"au.eu.org":true,"be.eu.org":true,"bg.eu.org":true,"ca.eu.org":true,"cd.eu.org":true,"ch.eu.org":true,"cn.eu.org":true,"cy.eu.org":true,"cz.eu.org":true,"de.eu.org":true,"dk.eu.org":true,"edu.eu.org":true,"ee.eu.org":true,"es.eu.org":true,"fi.eu.org":true,"fr.eu.org":true,"gr.eu.org":true,"hr.eu.org":true,"hu.eu.org":true,"ie.eu.org":true,"il.eu.org":true,"in.eu.org":true,"int.eu.org":true,"is.eu.org":true,"it.eu.org":true,"jp.eu.org":true,"kr.eu.org":true,"lt.eu.org":true,"lu.eu.org":true,"lv.eu.org":true,"mc.eu.org":true,"me.eu.org":true,"mk.eu.org":true,"mt.eu.org":true,"my.eu.org":true,"net.eu.org":true,"ng.eu.org":true,"nl.eu.org":true,"no.eu.org":true,"nz.eu.org":true,"paris.eu.org":true,"pl.eu.org":true,"pt.eu.org":true,"q-a.eu.org":true,"ro.eu.org":true,"ru.eu.org":true,"se.eu.org":true,"si.eu.org":true,"sk.eu.org":true,"tr.eu.org":true,"uk.eu.org":true,"us.eu.org":true,"a.ssl.fastly.net":true,"b.ssl.fastly.net":true,"global.ssl.fastly.net":true,"a.prod.fastly.net":true,"global.prod.fastly.net":true,"firebaseapp.com":true,"flynnhub.com":true,"service.gov.uk":true,"github.io":true,"githubusercontent.com":true,"ro.com":true,"appspot.com":true,"blogspot.ae":true,"blogspot.al":true,"blogspot.am":true,"blogspot.ba":true,"blogspot.be":true,"blogspot.bg":true,"blogspot.bj":true,"blogspot.ca":true,"blogspot.cf":true,"blogspot.ch":true,"blogspot.cl":true,"blogspot.co.at":true,"blogspot.co.id":true,"blogspot.co.il":true,"blogspot.co.ke":true,"blogspot.co.nz":true,"blogspot.co.uk":true,"blogspot.co.za":true,"blogspot.com":true,"blogspot.com.ar":true,"blogspot.com.au":true,"blogspot.com.br":true,"blogspot.com.by":true,"blogspot.com.co":true,"blogspot.com.cy":true,"blogspot.com.ee":true,"blogspot.com.eg":true,"blogspot.com.es":true,"blogspot.com.mt":true,"blogspot.com.ng":true,"blogspot.com.tr":true,"blogspot.com.uy":true,"blogspot.cv":true,"blogspot.cz":true,"blogspot.de":true,"blogspot.dk":true,"blogspot.fi":true,"blogspot.fr":true,"blogspot.gr":true,"blogspot.hk":true,"blogspot.hr":true,"blogspot.hu":true,"blogspot.ie":true,"blogspot.in":true,"blogspot.is":true,"blogspot.it":true,"blogspot.jp":true,"blogspot.kr":true,"blogspot.li":true,"blogspot.lt":true,"blogspot.lu":true,"blogspot.md":true,"blogspot.mk":true,"blogspot.mr":true,"blogspot.mx":true,"blogspot.my":true,"blogspot.nl":true,"blogspot.no":true,"blogspot.pe":true,"blogspot.pt":true,"blogspot.qa":true,"blogspot.re":true,"blogspot.ro":true,"blogspot.rs":true,"blogspot.ru":true,"blogspot.se":true,"blogspot.sg":true,"blogspot.si":true,"blogspot.sk":true,"blogspot.sn":true,"blogspot.td":true,"blogspot.tw":true,"blogspot.ug":true,"blogspot.vn":true,"codespot.com":true,"googleapis.com":true,"googlecode.com":true,"pagespeedmobilizer.com":true,"withgoogle.com":true,"withyoutube.com":true,"herokuapp.com":true,"herokussl.com":true,"iki.fi":true,"biz.at":true,"info.at":true,"co.pl":true,"azurewebsites.net":true,"azure-mobile.net":true,"cloudapp.net":true,"bmoattachments.org":true,"4u.com":true,"nfshost.com":true,"nyc.mn":true,"nid.io":true,"operaunite.com":true,"outsystemscloud.com":true,"art.pl":true,"gliwice.pl":true,"krakow.pl":true,"poznan.pl":true,"wroc.pl":true,"zakopane.pl":true,"pantheon.io":true,"gotpantheon.com":true,"priv.at":true,"qa2.com":true,"rhcloud.com":true,"sandcats.io":true,"biz.ua":true,"co.ua":true,"pp.ua":true,"sinaapp.com":true,"vipsinaapp.com":true,"1kapp.com":true,"gda.pl":true,"gdansk.pl":true,"gdynia.pl":true,"med.pl":true,"sopot.pl":true,"hk.com":true,"hk.org":true,"ltd.hk":true,"inc.hk":true,"yolasite.com":true,"za.net":true,"za.org":true}); - -// END of automatically generated file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/store.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/store.js deleted file mode 100644 index bce52925..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/lib/store.js +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Copyright (c) 2015, Salesforce.com, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of Salesforce.com nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -'use strict'; -/*jshint unused:false */ - -function Store() { -} -exports.Store = Store; - -// Stores may be synchronous, but are still required to use a -// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync" -// API that converts from synchronous-callbacks to imperative style. -Store.prototype.synchronous = false; - -Store.prototype.findCookie = function(domain, path, key, cb) { - throw new Error('findCookie is not implemented'); -}; - -Store.prototype.findCookies = function(domain, path, cb) { - throw new Error('findCookies is not implemented'); -}; - -Store.prototype.putCookie = function(cookie, cb) { - throw new Error('putCookie is not implemented'); -}; - -Store.prototype.updateCookie = function(oldCookie, newCookie, cb) { - // recommended default implementation: - // return this.putCookie(newCookie, cb); - throw new Error('updateCookie is not implemented'); -}; - -Store.prototype.removeCookie = function(domain, path, key, cb) { - throw new Error('removeCookie is not implemented'); -}; - -Store.prototype.removeCookies = function(domain, path, cb) { - throw new Error('removeCookies is not implemented'); -}; - -Store.prototype.getAllCookies = function(cb) { - throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/package.json deleted file mode 100644 index 1f80189b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tough-cookie/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "_args": [ - [ - "tough-cookie@>=0.12.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "tough-cookie@>=0.12.0", - "_id": "tough-cookie@2.2.2", - "_inCache": true, - "_installable": true, - "_location": "/tough-cookie", - "_nodeVersion": "5.1.1", - "_npmOperationalInternal": { - "host": "packages-13-west.internal.npmjs.com", - "tmp": "tmp/tough-cookie-2.2.2.tgz_1457564639182_0.5129188685677946" - }, - "_npmUser": { - "email": "jstash@gmail.com", - "name": "jstash" - }, - "_npmVersion": "3.3.12", - "_phantomChildren": {}, - "_requested": { - "name": "tough-cookie", - "raw": "tough-cookie@>=0.12.0", - "rawSpec": ">=0.12.0", - "scope": null, - "spec": ">=0.12.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "_shasum": "c83a1830f4e5ef0b93ef2a3488e724f8de016ac7", - "_shrinkwrap": null, - "_spec": "tough-cookie@>=0.12.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "jstashewsky@salesforce.com", - "name": "Jeremy Stashewsky" - }, - "bugs": { - "url": "https://github.com/SalesforceEng/tough-cookie/issues" - }, - "contributors": [ - { - "name": "Alexander Savin" - }, - { - "name": "Ian Livingstone" - }, - { - "name": "Ivan Nikulin" - }, - { - "name": "Lalit Kapoor" - }, - { - "name": "Sam Thompson" - }, - { - "name": "Sebastian Mayr" - } - ], - "dependencies": {}, - "description": "RFC6265 Cookies and Cookie Jar for node.js", - "devDependencies": { - "async": "^1.4.2", - "vows": "^0.8.1" - }, - "directories": {}, - "dist": { - "shasum": "c83a1830f4e5ef0b93ef2a3488e724f8de016ac7", - "tarball": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "lib" - ], - "gitHead": "cc46628c4d7d2e8c372ecba29293ca8a207ec192", - "homepage": "https://github.com/SalesforceEng/tough-cookie", - "keywords": [ - "HTTP", - "cookie", - "cookies", - "set-cookie", - "cookiejar", - "jar", - "RFC6265", - "RFC2965" - ], - "license": "BSD-3-Clause", - "main": "./lib/cookie", - "maintainers": [ - { - "email": "jeremy@goinstant.com", - "name": "jstash" - }, - { - "email": "services@goinstant.com", - "name": "goinstant" - } - ], - "name": "tough-cookie", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/SalesforceEng/tough-cookie.git" - }, - "scripts": { - "suffixup": "curl -o public_suffix_list.dat https://publicsuffix.org/list/public_suffix_list.dat && ./generate-pubsuffix.js", - "test": "vows test/*_test.js" - }, - "version": "2.2.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/.npmignore deleted file mode 100644 index 30d74d25..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/README.md deleted file mode 100644 index 6bc17c7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/README.md +++ /dev/null @@ -1,54 +0,0 @@ -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 -}); -``` - -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 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/index.js deleted file mode 100644 index ae4174b0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/index.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; - -var childProcess = require('child_process'); -var spawn = childProcess.spawn; -var exec = childProcess.exec; - -module.exports = function (pid, signal, callback) { - 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/package.json deleted file mode 100644 index 3ca31f24..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tree-kill/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "_args": [ - [ - "tree-kill@^1.0.0", - "/Users/sid/Desktop/code/RustyCode" - ] - ], - "_from": "tree-kill@>=1.0.0 <2.0.0", - "_id": "tree-kill@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/tree-kill", - "_nodeVersion": "0.12.2", - "_npmUser": { - "email": "wmhilton@gmail.com", - "name": "wmhilton" - }, - "_npmVersion": "2.9.0", - "_phantomChildren": {}, - "_requested": { - "name": "tree-kill", - "raw": "tree-kill@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.0.0.tgz", - "_shasum": "6ef2cff673c85cfc88cb2cd3bbb1f3cc82a963ab", - "_shrinkwrap": null, - "_spec": "tree-kill@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode", - "author": { - "email": "peteris.krumins@gmail.com", - "name": "Peteris Krumins", - "url": "http://www.catonmat.net" - }, - "bugs": { - "url": "https://github.com/pkrumins/node-tree-kill/issues" - }, - "contributors": [ - { - "email": "todd@twolfson.com", - "name": "Todd Wolfson", - "url": "http://twolfson.com/" - }, - { - "email": "wmhilton@gmail.com", - "name": "William Hilton", - "url": "http://wmhilton.com/" - }, - { - "name": "Fabrício Matté", - "url": "http://ultcombo.js.org/" - } - ], - "dependencies": {}, - "description": "kill trees of processes", - "devDependencies": { - "mocha": "^2.2.5" - }, - "directories": {}, - "dist": { - "shasum": "6ef2cff673c85cfc88cb2cd3bbb1f3cc82a963ab", - "tarball": "http://registry.npmjs.org/tree-kill/-/tree-kill-1.0.0.tgz" - }, - "gitHead": "96ed23e2dc95482c733dfbf2773b4bf253c9b567", - "homepage": "https://github.com/pkrumins/node-tree-kill", - "keywords": [ - "tree", - "trees", - "process", - "processes", - "kill", - "signal" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "peteris.krumins@gmail.com", - "name": "pkrumins" - }, - { - "email": "wmhilton@gmail.com", - "name": "wmhilton" - } - ], - "name": "tree-kill", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/pkrumins/node-tree-kill.git" - }, - "scripts": {}, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/index.js deleted file mode 100644 index da31efd6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var fn = module.exports = function (x) { - return fn.end(fn.start(x)); -}; - -fn.start = function (x) { - return x.replace(/^[\r\n]+/, ''); -}; - -fn.end = function (x) { - return x.replace(/[\r\n]+$/, ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/package.json deleted file mode 100644 index 670841d9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "_args": [ - [ - "trim-newlines@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/meow" - ] - ], - "_from": "trim-newlines@>=1.0.0 <2.0.0", - "_id": "trim-newlines@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/trim-newlines", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "trim-newlines", - "raw": "trim-newlines@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/meow" - ], - "_resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "_shasum": "5887966bb582a4503a41eb524f7d35011815a613", - "_shrinkwrap": null, - "_spec": "trim-newlines@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/meow", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/sindresorhus/trim-newlines/issues" - }, - "dependencies": {}, - "description": "Trim newlines from the start and/or end of a string", - "devDependencies": { - "ava": "*", - "xo": "*" - }, - "directories": {}, - "dist": { - "shasum": "5887966bb582a4503a41eb524f7d35011815a613", - "tarball": "http://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js" - ], - "gitHead": "f651a2d4cbf382c2936e6e53edee9316602e4ce7", - "homepage": "https://github.com/sindresorhus/trim-newlines", - "keywords": [ - "trim", - "newline", - "newlines", - "linebreak", - "lf", - "crlf", - "left", - "right", - "start", - "end", - "string", - "str", - "remove", - "delete", - "strip" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "trim-newlines", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/trim-newlines.git" - }, - "scripts": { - "test": "xo && ava" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/readme.md deleted file mode 100644 index fedb3ca2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/trim-newlines/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -# trim-newlines [![Build Status](https://travis-ci.org/sindresorhus/trim-newlines.svg?branch=master)](https://travis-ci.org/sindresorhus/trim-newlines) - -> Trim [newlines](https://en.wikipedia.org/wiki/Newline) from the start and/or end of a string - - -## Install - -``` -$ npm install --save trim-newlines -``` - - -## Usage - -```js -var trimNewlines = require('trim-newlines'); - -trimNewlines('\nunicorn\r\n'); -//=> 'unicorn' -``` - - -## API - -### trimNewlines(input) - -Trim from the start and end of a string. - -### trimNewlines.start(input) - -Trim from the start of a string. - -### trimNewlines.end(input) - -Trim from the end of a string. - - -## Related - -- [trim-left](https://github.com/sindresorhus/trim-left) - Similar to `String#trim()` but removes only whitespace on the left -- [trim-right](https://github.com/sindresorhus/trim-right) - Similar to `String#trim()` but removes only whitespace on the right. - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/.jshintrc deleted file mode 100644 index 4c1c8d49..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/.jshintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "node": true, - "asi": true, - "laxcomma": true -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/LICENSE deleted file mode 100644 index a4a9aee0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/LICENSE +++ /dev/null @@ -1,55 +0,0 @@ -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: - -You must give any other recipients of the Work or Derivative Works a copy of this License; and - -You must cause any modified files to carry prominent notices stating that You changed the files; and - -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 - -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 \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/README.md deleted file mode 100644 index bb533d56..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -tunnel-agent -============ - -HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/index.js deleted file mode 100644 index 68013ac1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/index.js +++ /dev/null @@ -1,243 +0,0 @@ -'use strict' - -var net = require('net') - , tls = require('tls') - , http = require('http') - , https = require('https') - , events = require('events') - , assert = require('assert') - , util = require('util') - ; - -exports.httpOverHttp = httpOverHttp -exports.httpsOverHttp = httpsOverHttp -exports.httpOverHttps = httpOverHttps -exports.httpsOverHttps = httpsOverHttps - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - return agent -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options) - agent.request = http.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - return agent -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options) - agent.request = https.request - agent.createSocket = createSecureSocket - agent.defaultPort = 443 - return agent -} - - -function TunnelingAgent(options) { - var self = this - self.options = options || {} - self.proxyOptions = self.options.proxy || {} - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets - self.requests = [] - self.sockets = [] - - self.on('free', function onFree(socket, host, port) { - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i] - if (pending.host === host && pending.port === port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1) - pending.request.onSocket(socket) - return - } - } - socket.destroy() - self.removeSocket(socket) - }) -} -util.inherits(TunnelingAgent, events.EventEmitter) - -TunnelingAgent.prototype.addRequest = function addRequest(req, options) { - var self = this - - // Legacy API: addRequest(req, host, port, path) - if (typeof options === 'string') { - options = { - host: options, - port: arguments[2], - path: arguments[3] - }; - } - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push({host: options.host, port: options.port, request: req}) - return - } - - // If we are under maxSockets create a new one. - self.createConnection({host: options.host, port: options.port, request: req}) -} - -TunnelingAgent.prototype.createConnection = function createConnection(pending) { - var self = this - - self.createSocket(pending, function(socket) { - socket.on('free', onFree) - socket.on('close', onCloseOrRemove) - socket.on('agentRemove', onCloseOrRemove) - pending.request.onSocket(socket) - - function onFree() { - self.emit('free', socket, pending.host, pending.port) - } - - function onCloseOrRemove(err) { - self.removeSocket(socket) - socket.removeListener('free', onFree) - socket.removeListener('close', onCloseOrRemove) - socket.removeListener('agentRemove', onCloseOrRemove) - } - }) -} - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this - var placeholder = {} - self.sockets.push(placeholder) - - var connectOptions = mergeOptions({}, self.proxyOptions, - { method: 'CONNECT' - , path: options.host + ':' + options.port - , agent: false - } - ) - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {} - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64') - } - - debug('making CONNECT request') - var connectReq = self.request(connectOptions) - connectReq.useChunkedEncodingByDefault = false // for v0.6 - connectReq.once('response', onResponse) // for v0.6 - connectReq.once('upgrade', onUpgrade) // for v0.6 - connectReq.once('connect', onConnect) // for v0.7 or later - connectReq.once('error', onError) - connectReq.end() - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head) - }) - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners() - socket.removeAllListeners() - - if (res.statusCode === 200) { - assert.equal(head.length, 0) - debug('tunneling connection has established') - self.sockets[self.sockets.indexOf(placeholder)] = socket - cb(socket) - } else { - debug('tunneling socket could not be established, statusCode=%d', res.statusCode) - var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } - } - - function onError(cause) { - connectReq.removeAllListeners() - - debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) - var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) - error.code = 'ECONNRESET' - options.request.emit('error', error) - self.removeSocket(placeholder) - } -} - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) return - - this.sockets.splice(pos, 1) - - var pending = this.requests.shift() - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createConnection(pending) - } -} - -function createSecureSocket(options, cb) { - var self = this - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, mergeOptions({}, self.options, - { servername: options.host - , socket: socket - } - )) - self.sockets[self.sockets.indexOf(socket)] = secureSocket - cb(secureSocket) - }) -} - - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i] - if (typeof overrides === 'object') { - var keys = Object.keys(overrides) - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j] - if (overrides[k] !== undefined) { - target[k] = overrides[k] - } - } - } - } - return target -} - - -var debug -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments) - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0] - } else { - args.unshift('TUNNEL:') - } - console.error.apply(console, args) - } -} else { - debug = function() {} -} -exports.debug = debug // for test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/package.json deleted file mode 100644 index cf53a8d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tunnel-agent/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_args": [ - [ - "tunnel-agent@~0.4.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/request" - ] - ], - "_from": "tunnel-agent@>=0.4.0 <0.5.0", - "_id": "tunnel-agent@0.4.2", - "_inCache": true, - "_installable": true, - "_location": "/tunnel-agent", - "_nodeVersion": "5.0.0", - "_npmUser": { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - }, - "_npmVersion": "3.3.12", - "_phantomChildren": {}, - "_requested": { - "name": "tunnel-agent", - "raw": "tunnel-agent@~0.4.0", - "rawSpec": "~0.4.0", - "scope": null, - "spec": ">=0.4.0 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/request" - ], - "_resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz", - "_shasum": "1104e3f36ac87125c287270067d582d18133bfee", - "_shrinkwrap": null, - "_spec": "tunnel-agent@~0.4.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/request", - "author": { - "email": "mikeal.rogers@gmail.com", - "name": "Mikeal Rogers", - "url": "http://www.futurealoof.com" - }, - "bugs": { - "url": "https://github.com/mikeal/tunnel-agent/issues" - }, - "dependencies": {}, - "description": "HTTP proxy tunneling agent. Formerly part of mikeal/request, now a standalone module.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "1104e3f36ac87125c287270067d582d18133bfee", - "tarball": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "449634d1054949f9f145f4925985a8dea0f46b0f", - "homepage": "https://github.com/mikeal/tunnel-agent#readme", - "license": "Apache-2.0", - "main": "index.js", - "maintainers": [ - { - "email": "mikeal.rogers@gmail.com", - "name": "mikeal" - }, - { - "email": "jnylen@gmail.com", - "name": "nylen" - }, - { - "email": "fkschott@gmail.com", - "name": "fredkschott" - }, - { - "email": "simeonvelichkov@gmail.com", - "name": "simov" - } - ], - "name": "tunnel-agent", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "url": "git+https://github.com/mikeal/tunnel-agent.git" - }, - "scripts": {}, - "version": "0.4.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/.npmignore deleted file mode 100644 index 7d98dcbd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.eslintrc -.travis.yml -bower.json -test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/CHANGELOG.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/CHANGELOG.md deleted file mode 100644 index 77c69bd5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/CHANGELOG.md +++ /dev/null @@ -1,128 +0,0 @@ -TweetNaCl.js Changelog -====================== - - -v0.13.2 -------- - -* Fixed undefined variable bug in fast version of Poly1305. No worries, this - bug was *never* triggered. - -* Specified CC0 public domain dedication. - -* Updated development dependencies. - - -v0.13.1 -------- - -* Exclude `crypto` and `buffer` modules from browserify builds. - - -v0.13.0 -------- - -* Made `nacl-fast` the default version in NPM package. Now - `require("tweetnacl")` will use fast version; to get the original version, - use `require("tweetnacl/nacl.js")`. - -* Cleanup temporary array after generating random bytes. - - -v0.12.2 -------- - -* Improved performance of curve operations, making `nacl.scalarMult`, `nacl.box`, - `nacl.sign` and related functions up to 3x faster in `nacl-fast` version. - - -v0.12.1 -------- - -* Significantly improved performance of Salsa20 (~1.5x faster) and - Poly1305 (~3.5x faster) in `nacl-fast` version. - - -v0.12.0 -------- - -* Instead of using the given secret key directly, TweetNaCl.js now copies it to - a new array in `nacl.box.keyPair.fromSecretKey` and - `nacl.sign.keyPair.fromSecretKey`. - - -v0.11.2 -------- - -* Added new constant: `nacl.sign.seedLength`. - - -v0.11.1 -------- - -* Even faster hash for both short and long inputs (in `nacl-fast`). - - -v0.11.0 -------- - -* Implement `nacl.sign.keyPair.fromSeed` to enable creation of sign key pairs - deterministically from a 32-byte seed. (It behaves like - [libsodium's](http://doc.libsodium.org/public-key_cryptography/public-key_signatures.html) - `crypto_sign_seed_keypair`: the seed becomes a secret part of the secret key.) - -* Fast version now has an improved hash implementation that is 2x-5x faster. - -* Fixed benchmarks, which may have produced incorrect measurements. - - -v0.10.1 -------- - -* Exported undocumented `nacl.lowlevel.crypto_core_hsalsa20`. - - -v0.10.0 -------- - -* **Signature API breaking change!** `nacl.sign` and `nacl.sign.open` now deal - with signed messages, and new `nacl.sign.detached` and - `nacl.sign.detached.verify` are available. - - Previously, `nacl.sign` returned a signature, and `nacl.sign.open` accepted a - message and "detached" signature. This was unlike NaCl's API, which dealt with - signed messages (concatenation of signature and message). - - The new API is: - - nacl.sign(message, secretKey) -> signedMessage - nacl.sign.open(signedMessage, publicKey) -> message | null - - Since detached signatures are common, two new API functions were introduced: - - nacl.sign.detached(message, secretKey) -> signature - nacl.sign.detached.verify(message, signature, publicKey) -> true | false - - (Note that it's `verify`, not `open`, and it returns a boolean value, unlike - `open`, which returns an "unsigned" message.) - -* NPM package now comes without `test` directory to keep it small. - - -v0.9.2 ------- - -* Improved documentation. -* Fast version: increased theoretical message size limit from 2^32-1 to 2^52 - bytes in Poly1305 (and thus, secretbox and box). However this has no impact - in practice since JavaScript arrays or ArrayBuffers are limited to 32-bit - indexes, and most implementations won't allocate more than a gigabyte or so. - (Obviously, there are no tests for the correctness of implementation.) Also, - it's not recommended to use messages that large without splitting them into - smaller packets anyway. - - -v0.9.1 ------- - -* Initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/README.md deleted file mode 100644 index 11bd3472..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/README.md +++ /dev/null @@ -1,463 +0,0 @@ -TweetNaCl.js -============ - -Port of [TweetNaCl](http://tweetnacl.cr.yp.to) / [NaCl](http://nacl.cr.yp.to/) -to JavaScript for modern browsers and Node.js. Public domain. - -[![Build Status](https://travis-ci.org/dchest/tweetnacl-js.svg?branch=master) -](https://travis-ci.org/dchest/tweetnacl-js) - -[Demo](https://dchest.github.io/tweetnacl-js/) - -**:warning: Beta version. The library is stable and API is frozen, however -it has not been independently reviewed. If you can help reviewing it, please -[contact me](mailto:dmitry@codingrobots.com).** - -Documentation -============= - -* [Overview](#overview) -* [Installation](#installation) -* [Usage](#usage) - * [Public-key authenticated encryption (box)](#public-key-authenticated-encryption-box) - * [Secret-key authenticated encryption (secretbox)](#secret-key-authenticated-encryption-secretbox) - * [Scalar multiplication](#scalar-multiplication) - * [Signatures](#signatures) - * [Hashing](#hashing) - * [Random bytes generation](#random-bytes-generation) - * [Constant-time comparison](#constant-time-comparison) - * [Utilities](#utilities) -* [Examples](#examples) -* [System requirements](#system-requirements) -* [Development and testing](#development-and-testing) -* [Contributors](#contributors) -* [Who uses it](#who-uses-it) - - -Overview --------- - -The primary goal of this project is to produce a translation of TweetNaCl to -JavaScript which is as close as possible to the original C implementation, plus -a thin layer of idiomatic high-level API on top of it. - -There are two versions, you can use either of them: - -* `nacl.js` is the port of TweetNaCl with minimum differences from the - original + high-level API. - -* `nacl-fast.js` is like `nacl.js`, but with some functions replaced with - faster versions. - - -Installation ------------- - -You can install TweetNaCl.js via a package manager: - -[Bower](http://bower.io): - - $ bower install tweetnacl - -[NPM](https://www.npmjs.org/): - - $ npm install tweetnacl - -or [download source code](https://github.com/dchest/tweetnacl-js/releases). - - -Usage ------- - -All API functions accept and return bytes as `Uint8Array`s. If you need to -encode or decode strings, use functions from `nacl.util` namespace. - -### Public-key authenticated encryption (box) - -Implements *curve25519-xsalsa20-poly1305*. - -#### nacl.box.keyPair() - -Generates a new random key pair for box and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 32-byte secret key - } - - -#### nacl.box.keyPair.fromSecretKey(secretKey) - -Returns a key pair for box with public key corresponding to the given secret -key. - -#### nacl.box(message, nonce, theirPublicKey, mySecretKey) - -Encrypt and authenticates message using peer's public key, our secret key, and -the given nonce, which must be unique for each distinct message for a key pair. - -Returns an encrypted and authenticated message, which is -`nacl.box.overheadLength` longer than the original message. - -#### nacl.box.open(box, nonce, theirPublicKey, mySecretKey) - -Authenticates and decrypts the given box with peer's public key, our secret -key, and the given nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.box.before(theirPublicKey, mySecretKey) - -Returns a precomputed shared key which can be used in `nacl.box.after` and -`nacl.box.open.after`. - -#### nacl.box.after(message, nonce, sharedKey) - -Same as `nacl.box`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.open.after(box, nonce, sharedKey) - -Same as `nacl.box.open`, but uses a shared key precomputed with `nacl.box.before`. - -#### nacl.box.publicKeyLength = 32 - -Length of public key in bytes. - -#### nacl.box.secretKeyLength = 32 - -Length of secret key in bytes. - -#### nacl.box.sharedKeyLength = 32 - -Length of precomputed shared key in bytes. - -#### nacl.box.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.box.overheadLength = 16 - -Length of overhead added to box compared to original message. - - -### Secret-key authenticated encryption (secretbox) - -Implements *xsalsa20-poly1305*. - -#### nacl.secretbox(message, nonce, key) - -Encrypt and authenticates message using the key and the nonce. The nonce must -be unique for each distinct message for this key. - -Returns an encrypted and authenticated message, which is -`nacl.secretbox.overheadLength` longer than the original message. - -#### nacl.secretbox.open(box, nonce, key) - -Authenticates and decrypts the given secret box using the key and the nonce. - -Returns the original message, or `false` if authentication fails. - -#### nacl.secretbox.keyLength = 32 - -Length of key in bytes. - -#### nacl.secretbox.nonceLength = 24 - -Length of nonce in bytes. - -#### nacl.secretbox.overheadLength = 16 - -Length of overhead added to secret box compared to original message. - - -### Scalar multiplication - -Implements *curve25519*. - -#### nacl.scalarMult(n, p) - -Multiplies an integer `n` by a group element `p` and returns the resulting -group element. - -#### nacl.scalarMult.base(n) - -Multiplies an integer `n` by a standard group element and returns the resulting -group element. - -#### nacl.scalarMult.scalarLength = 32 - -Length of scalar in bytes. - -#### nacl.scalarMult.groupElementLength = 32 - -Length of group element in bytes. - - -### Signatures - -Implements [ed25519](http://ed25519.cr.yp.to). - -#### nacl.sign.keyPair() - -Generates new random key pair for signing and returns it as an object with -`publicKey` and `secretKey` members: - - { - publicKey: ..., // Uint8Array with 32-byte public key - secretKey: ... // Uint8Array with 64-byte secret key - } - -#### nacl.sign.keyPair.fromSecretKey(secretKey) - -Returns a signing key pair with public key corresponding to the given -64-byte secret key. The secret key must have been generated by -`nacl.sign.keyPair` or `nacl.sign.keyPair.fromSeed`. - -#### nacl.sign.keyPair.fromSeed(seed) - -Returns a new signing key pair generated deterministically from a 32-byte seed. -The seed must contain enough entropy to be secure. This method is not -recommended for general use: instead, use `nacl.sign.keyPair` to generate a new -key pair from a random seed. - -#### nacl.sign(message, secretKey) - -Signs the message using the secret key and returns a signed message. - -#### nacl.sign.open(signedMessage, publicKey) - -Verifies the signed message and returns the message without signature. - -Returns `null` if verification failed. - -#### nacl.sign.detached(message, secretKey) - -Signs the message using the secret key and returns a signature. - -#### nacl.sign.detached.verify(message, signature, publicKey) - -Verifies the signature for the message and returns `true` if verification -succeeded or `false` if it failed. - -#### nacl.sign.publicKeyLength = 32 - -Length of signing public key in bytes. - -#### nacl.sign.secretKeyLength = 64 - -Length of signing secret key in bytes. - -#### nacl.sign.seedLength = 32 - -Length of seed for `nacl.sign.keyPair.fromSeed` in bytes. - -#### nacl.sign.signatureLength = 64 - -Length of signature in bytes. - - -### Hashing - -Implements *SHA-512*. - -#### nacl.hash(message) - -Returns SHA-512 hash of the message. - -#### nacl.hash.hashLength = 64 - -Length of hash in bytes. - - -### Random bytes generation - -#### nacl.randomBytes(length) - -Returns a `Uint8Array` of the given length containing random bytes of -cryptographic quality. - -**Implementation note** - -TweetNaCl.js uses the following methods to generate random bytes, -depending on the platform it runs on: - -* `window.crypto.getRandomValues` (WebCrypto standard) -* `window.msCrypto.getRandomValues` (Internet Explorer 11) -* `crypto.randomBytes` (Node.js) - -Note that browsers are required to throw `QuotaExceededError` exception if -requested `length` is more than 65536, so do not ask for more than 65536 bytes -in *one call* (multiple calls to get as many bytes as you like are okay: -browsers can generate infinite amount of random bytes without any bad -consequences). - -If the platform doesn't provide a suitable PRNG, the following functions, -which require random numbers, will throw exception: - -* `nacl.randomBytes` -* `nacl.box.keyPair` -* `nacl.sign.keyPair` - -Other functions are deterministic and will continue working. - -If a platform you are targeting doesn't implement secure random number -generator, but you somehow have a cryptographically-strong source of entropy -(not `Math.random`!), and you know what you are doing, you can plug it into -TweetNaCl.js like this: - - nacl.setPRNG(function(x, n) { - // ... copy n random bytes into x ... - }); - -Note that `nacl.setPRNG` *completely replaces* internal random byte generator -with the one provided. - - -### Constant-time comparison - -#### nacl.verify(x, y) - -Compares `x` and `y` in constant time and returns `true` if their lengths are -non-zero and equal, and their contents are equal. - -Returns `false` if either of the arguments has zero length, or arguments have -different lengths, or their contents differ. - - -### Utilities - -Encoding/decoding functions are provided for convenience. They are correct, -however their performance and wide compatibility with uncommon runtimes is not -something that is considered important compared to the simplicity and size of -implementation. You can use third-party libraries if you need to. - -#### nacl.util.decodeUTF8(string) - -Decodes string and returns `Uint8Array` of bytes. - -#### nacl.util.encodeUTF8(array) - -Encodes `Uint8Array` or `Array` of bytes into string. - -#### nacl.util.decodeBase64(string) - -Decodes Base-64 encoded string and returns `Uint8Array` of bytes. - -#### nacl.util.encodeBase64(array) - -Encodes `Uint8Array` or `Array` of bytes into string using Base-64 encoding. - - -System requirements -------------------- - -TweetNaCl.js supports modern browsers that have a cryptographically secure -pseudorandom number generator and typed arrays, including the latest versions -of: - -* Chrome -* Firefox -* Safari (Mac, iOS) -* Internet Explorer 11 - -Other systems: - -* Node.js (we test on 0.10 and later) - - -Development and testing ------------------------- - -Install NPM modules needed for development: - - $ npm install - -To build minified versions: - - $ npm run build - -Tests use minified version, so make sure to rebuild it every time you change -`nacl.js` or `nacl-fast.js`. - -### Testing - -To run tests in Node.js: - - $ npm test - -By default all tests described here work on `nacl.min.js`. To test other -versions, set environment variable `NACL_SRC` to the file name you want to test. -For example, the following command will test fast minified version: - - $ NACL_SRC=nacl-fast.min.js npm test - -To run full suite of tests in Node.js, including comparing outputs of -JavaScript port to outputs of the original C version: - - $ npm run testall - -To prepare tests for browsers: - - $ npm run browser - -and then open `test/browser/test.html` (or `test/browser/test-fast.html`) to -run them. - -To run headless browser tests with `testling`: - - $ npm run testling - -(If you get `Error: spawn ENOENT`, install *xvfb*: `sudo apt-get install xvfb`.) - -### Benchmarking - -To run benchmarks in Node.js: - - $ npm run bench - $ NACL_SRC=nacl-fast.min.js npm run bench - -To run benchmarks in a browser, open `test/benchmark/bench.html` (or -`test/benchmark/bench-fast.html`). - - -Contributors ------------- - -JavaScript port: - - * [Dmitry Chestnykh](http://github.com/dchest) (ported xsalsa20, poly1305, curve25519) - * [Devi Mandiri](https://github.com/devi) (ported curve25519, ed25519, sha512) - -Original authors of [NaCl](http://nacl.cr.yp.to), [TweetNaCl](http://tweetnacl.cr.yp.to) -and [Poly1305-donna](https://github.com/floodyberry/poly1305-donna) -(who are *not* responsible for any errors in this implementation): - - * [Daniel J. Bernstein](http://cr.yp.to/djb.html) - * Wesley Janssen - * [Tanja Lange](http://hyperelliptic.org/tanja) - * [Peter Schwabe](http://www.cryptojedi.org/users/peter/) - * [Matthew Dempsky](https://github.com/mdempsky) - * [Andrew Moon](https://github.com/floodyberry) - -Contributors have dedicated their work to the public domain. - -This software is distributed without any warranty. - - -Third-party libraries based on TweetNaCl.js -------------------------------------------- - -* [forward-secrecy](https://github.com/alax/forward-secrecy) — Axolotl ratchet implementation -* [nacl-stream](https://github.com/dchest/nacl-stream-js) - streaming encryption -* [tweetnacl-auth-js](https://github.com/dchest/tweetnacl-auth-js) — implementation of [`crypto_auth`](http://nacl.cr.yp.to/auth.html) - - -Who uses it ------------ - -Some notable users of TweetNaCl.js: - -* [miniLock](http://minilock.io/) -* [Stellar](https://www.stellar.org/) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.js deleted file mode 100644 index 6c499584..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.js +++ /dev/null @@ -1,2418 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function ts64(x, i, h, l) { - x[i] = (h >> 24) & 0xff; - x[i+1] = (h >> 16) & 0xff; - x[i+2] = (h >> 8) & 0xff; - x[i+3] = h & 0xff; - x[i+4] = (l >> 24) & 0xff; - x[i+5] = (l >> 16) & 0xff; - x[i+6] = (l >> 8) & 0xff; - x[i+7] = l & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core_salsa20(o, p, k, c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - x0 = x0 + j0 | 0; - x1 = x1 + j1 | 0; - x2 = x2 + j2 | 0; - x3 = x3 + j3 | 0; - x4 = x4 + j4 | 0; - x5 = x5 + j5 | 0; - x6 = x6 + j6 | 0; - x7 = x7 + j7 | 0; - x8 = x8 + j8 | 0; - x9 = x9 + j9 | 0; - x10 = x10 + j10 | 0; - x11 = x11 + j11 | 0; - x12 = x12 + j12 | 0; - x13 = x13 + j13 | 0; - x14 = x14 + j14 | 0; - x15 = x15 + j15 | 0; - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x1 >>> 0 & 0xff; - o[ 5] = x1 >>> 8 & 0xff; - o[ 6] = x1 >>> 16 & 0xff; - o[ 7] = x1 >>> 24 & 0xff; - - o[ 8] = x2 >>> 0 & 0xff; - o[ 9] = x2 >>> 8 & 0xff; - o[10] = x2 >>> 16 & 0xff; - o[11] = x2 >>> 24 & 0xff; - - o[12] = x3 >>> 0 & 0xff; - o[13] = x3 >>> 8 & 0xff; - o[14] = x3 >>> 16 & 0xff; - o[15] = x3 >>> 24 & 0xff; - - o[16] = x4 >>> 0 & 0xff; - o[17] = x4 >>> 8 & 0xff; - o[18] = x4 >>> 16 & 0xff; - o[19] = x4 >>> 24 & 0xff; - - o[20] = x5 >>> 0 & 0xff; - o[21] = x5 >>> 8 & 0xff; - o[22] = x5 >>> 16 & 0xff; - o[23] = x5 >>> 24 & 0xff; - - o[24] = x6 >>> 0 & 0xff; - o[25] = x6 >>> 8 & 0xff; - o[26] = x6 >>> 16 & 0xff; - o[27] = x6 >>> 24 & 0xff; - - o[28] = x7 >>> 0 & 0xff; - o[29] = x7 >>> 8 & 0xff; - o[30] = x7 >>> 16 & 0xff; - o[31] = x7 >>> 24 & 0xff; - - o[32] = x8 >>> 0 & 0xff; - o[33] = x8 >>> 8 & 0xff; - o[34] = x8 >>> 16 & 0xff; - o[35] = x8 >>> 24 & 0xff; - - o[36] = x9 >>> 0 & 0xff; - o[37] = x9 >>> 8 & 0xff; - o[38] = x9 >>> 16 & 0xff; - o[39] = x9 >>> 24 & 0xff; - - o[40] = x10 >>> 0 & 0xff; - o[41] = x10 >>> 8 & 0xff; - o[42] = x10 >>> 16 & 0xff; - o[43] = x10 >>> 24 & 0xff; - - o[44] = x11 >>> 0 & 0xff; - o[45] = x11 >>> 8 & 0xff; - o[46] = x11 >>> 16 & 0xff; - o[47] = x11 >>> 24 & 0xff; - - o[48] = x12 >>> 0 & 0xff; - o[49] = x12 >>> 8 & 0xff; - o[50] = x12 >>> 16 & 0xff; - o[51] = x12 >>> 24 & 0xff; - - o[52] = x13 >>> 0 & 0xff; - o[53] = x13 >>> 8 & 0xff; - o[54] = x13 >>> 16 & 0xff; - o[55] = x13 >>> 24 & 0xff; - - o[56] = x14 >>> 0 & 0xff; - o[57] = x14 >>> 8 & 0xff; - o[58] = x14 >>> 16 & 0xff; - o[59] = x14 >>> 24 & 0xff; - - o[60] = x15 >>> 0 & 0xff; - o[61] = x15 >>> 8 & 0xff; - o[62] = x15 >>> 16 & 0xff; - o[63] = x15 >>> 24 & 0xff; -} - -function core_hsalsa20(o,p,k,c) { - var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, - j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, - j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, - j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, - j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, - j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, - j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, - j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, - j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, - j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, - j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, - j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, - j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, - j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, - j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, - j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; - - var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, - x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, - x15 = j15, u; - - for (var i = 0; i < 20; i += 2) { - u = x0 + x12 | 0; - x4 ^= u<<7 | u>>>(32-7); - u = x4 + x0 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x4 | 0; - x12 ^= u<<13 | u>>>(32-13); - u = x12 + x8 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x1 | 0; - x9 ^= u<<7 | u>>>(32-7); - u = x9 + x5 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x9 | 0; - x1 ^= u<<13 | u>>>(32-13); - u = x1 + x13 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x6 | 0; - x14 ^= u<<7 | u>>>(32-7); - u = x14 + x10 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x14 | 0; - x6 ^= u<<13 | u>>>(32-13); - u = x6 + x2 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x11 | 0; - x3 ^= u<<7 | u>>>(32-7); - u = x3 + x15 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x3 | 0; - x11 ^= u<<13 | u>>>(32-13); - u = x11 + x7 | 0; - x15 ^= u<<18 | u>>>(32-18); - - u = x0 + x3 | 0; - x1 ^= u<<7 | u>>>(32-7); - u = x1 + x0 | 0; - x2 ^= u<<9 | u>>>(32-9); - u = x2 + x1 | 0; - x3 ^= u<<13 | u>>>(32-13); - u = x3 + x2 | 0; - x0 ^= u<<18 | u>>>(32-18); - - u = x5 + x4 | 0; - x6 ^= u<<7 | u>>>(32-7); - u = x6 + x5 | 0; - x7 ^= u<<9 | u>>>(32-9); - u = x7 + x6 | 0; - x4 ^= u<<13 | u>>>(32-13); - u = x4 + x7 | 0; - x5 ^= u<<18 | u>>>(32-18); - - u = x10 + x9 | 0; - x11 ^= u<<7 | u>>>(32-7); - u = x11 + x10 | 0; - x8 ^= u<<9 | u>>>(32-9); - u = x8 + x11 | 0; - x9 ^= u<<13 | u>>>(32-13); - u = x9 + x8 | 0; - x10 ^= u<<18 | u>>>(32-18); - - u = x15 + x14 | 0; - x12 ^= u<<7 | u>>>(32-7); - u = x12 + x15 | 0; - x13 ^= u<<9 | u>>>(32-9); - u = x13 + x12 | 0; - x14 ^= u<<13 | u>>>(32-13); - u = x14 + x13 | 0; - x15 ^= u<<18 | u>>>(32-18); - } - - o[ 0] = x0 >>> 0 & 0xff; - o[ 1] = x0 >>> 8 & 0xff; - o[ 2] = x0 >>> 16 & 0xff; - o[ 3] = x0 >>> 24 & 0xff; - - o[ 4] = x5 >>> 0 & 0xff; - o[ 5] = x5 >>> 8 & 0xff; - o[ 6] = x5 >>> 16 & 0xff; - o[ 7] = x5 >>> 24 & 0xff; - - o[ 8] = x10 >>> 0 & 0xff; - o[ 9] = x10 >>> 8 & 0xff; - o[10] = x10 >>> 16 & 0xff; - o[11] = x10 >>> 24 & 0xff; - - o[12] = x15 >>> 0 & 0xff; - o[13] = x15 >>> 8 & 0xff; - o[14] = x15 >>> 16 & 0xff; - o[15] = x15 >>> 24 & 0xff; - - o[16] = x6 >>> 0 & 0xff; - o[17] = x6 >>> 8 & 0xff; - o[18] = x6 >>> 16 & 0xff; - o[19] = x6 >>> 24 & 0xff; - - o[20] = x7 >>> 0 & 0xff; - o[21] = x7 >>> 8 & 0xff; - o[22] = x7 >>> 16 & 0xff; - o[23] = x7 >>> 24 & 0xff; - - o[24] = x8 >>> 0 & 0xff; - o[25] = x8 >>> 8 & 0xff; - o[26] = x8 >>> 16 & 0xff; - o[27] = x8 >>> 24 & 0xff; - - o[28] = x9 >>> 0 & 0xff; - o[29] = x9 >>> 8 & 0xff; - o[30] = x9 >>> 16 & 0xff; - o[31] = x9 >>> 24 & 0xff; -} - -function crypto_core_salsa20(out,inp,k,c) { - core_salsa20(out,inp,k,c); -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core_hsalsa20(out,inp,k,c); -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = x[i]; - } - return 0; -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20(c,cpos,d,sn,s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - var sn = new Uint8Array(8); - for (var i = 0; i < 8; i++) sn[i] = n[i+16]; - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); -} - -/* -* Port of Andrew Moon's Poly1305-donna-16. Public domain. -* https://github.com/floodyberry/poly1305-donna -*/ - -var poly1305 = function(key) { - this.buffer = new Uint8Array(16); - this.r = new Uint16Array(10); - this.h = new Uint16Array(10); - this.pad = new Uint16Array(8); - this.leftover = 0; - this.fin = 0; - - var t0, t1, t2, t3, t4, t5, t6, t7; - - t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; - t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; - t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; - this.r[5] = ((t4 >>> 1)) & 0x1ffe; - t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; - t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - this.r[9] = ((t7 >>> 5)) & 0x007f; - - this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; - this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; - this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; - this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; - this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; - this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; - this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; - this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; -}; - -poly1305.prototype.blocks = function(m, mpos, bytes) { - var hibit = this.fin ? 0 : (1 << 11); - var t0, t1, t2, t3, t4, t5, t6, t7, c; - var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; - - var h0 = this.h[0], - h1 = this.h[1], - h2 = this.h[2], - h3 = this.h[3], - h4 = this.h[4], - h5 = this.h[5], - h6 = this.h[6], - h7 = this.h[7], - h8 = this.h[8], - h9 = this.h[9]; - - var r0 = this.r[0], - r1 = this.r[1], - r2 = this.r[2], - r3 = this.r[3], - r4 = this.r[4], - r5 = this.r[5], - r6 = this.r[6], - r7 = this.r[7], - r8 = this.r[8], - r9 = this.r[9]; - - while (bytes >= 16) { - t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; - t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; - t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; - t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; - t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; - h5 += ((t4 >>> 1)) & 0x1fff; - t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; - t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; - t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; - h9 += ((t7 >>> 5)) | hibit; - - c = 0; - - d0 = c; - d0 += h0 * r0; - d0 += h1 * (5 * r9); - d0 += h2 * (5 * r8); - d0 += h3 * (5 * r7); - d0 += h4 * (5 * r6); - c = (d0 >>> 13); d0 &= 0x1fff; - d0 += h5 * (5 * r5); - d0 += h6 * (5 * r4); - d0 += h7 * (5 * r3); - d0 += h8 * (5 * r2); - d0 += h9 * (5 * r1); - c += (d0 >>> 13); d0 &= 0x1fff; - - d1 = c; - d1 += h0 * r1; - d1 += h1 * r0; - d1 += h2 * (5 * r9); - d1 += h3 * (5 * r8); - d1 += h4 * (5 * r7); - c = (d1 >>> 13); d1 &= 0x1fff; - d1 += h5 * (5 * r6); - d1 += h6 * (5 * r5); - d1 += h7 * (5 * r4); - d1 += h8 * (5 * r3); - d1 += h9 * (5 * r2); - c += (d1 >>> 13); d1 &= 0x1fff; - - d2 = c; - d2 += h0 * r2; - d2 += h1 * r1; - d2 += h2 * r0; - d2 += h3 * (5 * r9); - d2 += h4 * (5 * r8); - c = (d2 >>> 13); d2 &= 0x1fff; - d2 += h5 * (5 * r7); - d2 += h6 * (5 * r6); - d2 += h7 * (5 * r5); - d2 += h8 * (5 * r4); - d2 += h9 * (5 * r3); - c += (d2 >>> 13); d2 &= 0x1fff; - - d3 = c; - d3 += h0 * r3; - d3 += h1 * r2; - d3 += h2 * r1; - d3 += h3 * r0; - d3 += h4 * (5 * r9); - c = (d3 >>> 13); d3 &= 0x1fff; - d3 += h5 * (5 * r8); - d3 += h6 * (5 * r7); - d3 += h7 * (5 * r6); - d3 += h8 * (5 * r5); - d3 += h9 * (5 * r4); - c += (d3 >>> 13); d3 &= 0x1fff; - - d4 = c; - d4 += h0 * r4; - d4 += h1 * r3; - d4 += h2 * r2; - d4 += h3 * r1; - d4 += h4 * r0; - c = (d4 >>> 13); d4 &= 0x1fff; - d4 += h5 * (5 * r9); - d4 += h6 * (5 * r8); - d4 += h7 * (5 * r7); - d4 += h8 * (5 * r6); - d4 += h9 * (5 * r5); - c += (d4 >>> 13); d4 &= 0x1fff; - - d5 = c; - d5 += h0 * r5; - d5 += h1 * r4; - d5 += h2 * r3; - d5 += h3 * r2; - d5 += h4 * r1; - c = (d5 >>> 13); d5 &= 0x1fff; - d5 += h5 * r0; - d5 += h6 * (5 * r9); - d5 += h7 * (5 * r8); - d5 += h8 * (5 * r7); - d5 += h9 * (5 * r6); - c += (d5 >>> 13); d5 &= 0x1fff; - - d6 = c; - d6 += h0 * r6; - d6 += h1 * r5; - d6 += h2 * r4; - d6 += h3 * r3; - d6 += h4 * r2; - c = (d6 >>> 13); d6 &= 0x1fff; - d6 += h5 * r1; - d6 += h6 * r0; - d6 += h7 * (5 * r9); - d6 += h8 * (5 * r8); - d6 += h9 * (5 * r7); - c += (d6 >>> 13); d6 &= 0x1fff; - - d7 = c; - d7 += h0 * r7; - d7 += h1 * r6; - d7 += h2 * r5; - d7 += h3 * r4; - d7 += h4 * r3; - c = (d7 >>> 13); d7 &= 0x1fff; - d7 += h5 * r2; - d7 += h6 * r1; - d7 += h7 * r0; - d7 += h8 * (5 * r9); - d7 += h9 * (5 * r8); - c += (d7 >>> 13); d7 &= 0x1fff; - - d8 = c; - d8 += h0 * r8; - d8 += h1 * r7; - d8 += h2 * r6; - d8 += h3 * r5; - d8 += h4 * r4; - c = (d8 >>> 13); d8 &= 0x1fff; - d8 += h5 * r3; - d8 += h6 * r2; - d8 += h7 * r1; - d8 += h8 * r0; - d8 += h9 * (5 * r9); - c += (d8 >>> 13); d8 &= 0x1fff; - - d9 = c; - d9 += h0 * r9; - d9 += h1 * r8; - d9 += h2 * r7; - d9 += h3 * r6; - d9 += h4 * r5; - c = (d9 >>> 13); d9 &= 0x1fff; - d9 += h5 * r4; - d9 += h6 * r3; - d9 += h7 * r2; - d9 += h8 * r1; - d9 += h9 * r0; - c += (d9 >>> 13); d9 &= 0x1fff; - - c = (((c << 2) + c)) | 0; - c = (c + d0) | 0; - d0 = c & 0x1fff; - c = (c >>> 13); - d1 += c; - - h0 = d0; - h1 = d1; - h2 = d2; - h3 = d3; - h4 = d4; - h5 = d5; - h6 = d6; - h7 = d7; - h8 = d8; - h9 = d9; - - mpos += 16; - bytes -= 16; - } - this.h[0] = h0; - this.h[1] = h1; - this.h[2] = h2; - this.h[3] = h3; - this.h[4] = h4; - this.h[5] = h5; - this.h[6] = h6; - this.h[7] = h7; - this.h[8] = h8; - this.h[9] = h9; -}; - -poly1305.prototype.finish = function(mac, macpos) { - var g = new Uint16Array(10); - var c, mask, f, i; - - if (this.leftover) { - i = this.leftover; - this.buffer[i++] = 1; - for (; i < 16; i++) this.buffer[i] = 0; - this.fin = 1; - this.blocks(this.buffer, 0, 16); - } - - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - for (i = 2; i < 10; i++) { - this.h[i] += c; - c = this.h[i] >>> 13; - this.h[i] &= 0x1fff; - } - this.h[0] += (c * 5); - c = this.h[0] >>> 13; - this.h[0] &= 0x1fff; - this.h[1] += c; - c = this.h[1] >>> 13; - this.h[1] &= 0x1fff; - this.h[2] += c; - - g[0] = this.h[0] + 5; - c = g[0] >>> 13; - g[0] &= 0x1fff; - for (i = 1; i < 10; i++) { - g[i] = this.h[i] + c; - c = g[i] >>> 13; - g[i] &= 0x1fff; - } - g[9] -= (1 << 13); - - mask = (g[9] >>> ((2 * 8) - 1)) - 1; - for (i = 0; i < 10; i++) g[i] &= mask; - mask = ~mask; - for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; - - this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; - this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; - this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; - this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; - this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; - this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; - this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; - this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; - - f = this.h[0] + this.pad[0]; - this.h[0] = f & 0xffff; - for (i = 1; i < 8; i++) { - f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; - this.h[i] = f & 0xffff; - } - - mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; - mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; - mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; - mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; - mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; - mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; - mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; - mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; - mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; - mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; - mac[macpos+10] = (this.h[5] >>> 0) & 0xff; - mac[macpos+11] = (this.h[5] >>> 8) & 0xff; - mac[macpos+12] = (this.h[6] >>> 0) & 0xff; - mac[macpos+13] = (this.h[6] >>> 8) & 0xff; - mac[macpos+14] = (this.h[7] >>> 0) & 0xff; - mac[macpos+15] = (this.h[7] >>> 8) & 0xff; -}; - -poly1305.prototype.update = function(m, mpos, bytes) { - var i, want; - - if (this.leftover) { - want = (16 - this.leftover); - if (want > bytes) - want = bytes; - for (i = 0; i < want; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - bytes -= want; - mpos += want; - this.leftover += want; - if (this.leftover < 16) - return; - this.blocks(this.buffer, 0, 16); - this.leftover = 0; - } - - if (bytes >= 16) { - want = bytes - (bytes % 16); - this.blocks(m, mpos, want); - mpos += want; - bytes -= want; - } - - if (bytes) { - for (i = 0; i < bytes; i++) - this.buffer[this.leftover + i] = m[mpos+i]; - this.leftover += bytes; - } -}; - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s = new poly1305(k); - s.update(m, mpos, n); - s.finish(out, outpos); - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var i, v, c = 1; - for (i = 0; i < 16; i++) { - v = o[i] + c + 65535; - c = Math.floor(v / 65536); - o[i] = v - c * 65536; - } - o[0] += c-1 + 37 * (c-1); -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; -} - -function Z(o, a, b) { - for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; -} - -function M(o, a, b) { - var v, c, - t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, - t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, - t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, - t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, - b0 = b[0], - b1 = b[1], - b2 = b[2], - b3 = b[3], - b4 = b[4], - b5 = b[5], - b6 = b[6], - b7 = b[7], - b8 = b[8], - b9 = b[9], - b10 = b[10], - b11 = b[11], - b12 = b[12], - b13 = b[13], - b14 = b[14], - b15 = b[15]; - - v = a[0]; - t0 += v * b0; - t1 += v * b1; - t2 += v * b2; - t3 += v * b3; - t4 += v * b4; - t5 += v * b5; - t6 += v * b6; - t7 += v * b7; - t8 += v * b8; - t9 += v * b9; - t10 += v * b10; - t11 += v * b11; - t12 += v * b12; - t13 += v * b13; - t14 += v * b14; - t15 += v * b15; - v = a[1]; - t1 += v * b0; - t2 += v * b1; - t3 += v * b2; - t4 += v * b3; - t5 += v * b4; - t6 += v * b5; - t7 += v * b6; - t8 += v * b7; - t9 += v * b8; - t10 += v * b9; - t11 += v * b10; - t12 += v * b11; - t13 += v * b12; - t14 += v * b13; - t15 += v * b14; - t16 += v * b15; - v = a[2]; - t2 += v * b0; - t3 += v * b1; - t4 += v * b2; - t5 += v * b3; - t6 += v * b4; - t7 += v * b5; - t8 += v * b6; - t9 += v * b7; - t10 += v * b8; - t11 += v * b9; - t12 += v * b10; - t13 += v * b11; - t14 += v * b12; - t15 += v * b13; - t16 += v * b14; - t17 += v * b15; - v = a[3]; - t3 += v * b0; - t4 += v * b1; - t5 += v * b2; - t6 += v * b3; - t7 += v * b4; - t8 += v * b5; - t9 += v * b6; - t10 += v * b7; - t11 += v * b8; - t12 += v * b9; - t13 += v * b10; - t14 += v * b11; - t15 += v * b12; - t16 += v * b13; - t17 += v * b14; - t18 += v * b15; - v = a[4]; - t4 += v * b0; - t5 += v * b1; - t6 += v * b2; - t7 += v * b3; - t8 += v * b4; - t9 += v * b5; - t10 += v * b6; - t11 += v * b7; - t12 += v * b8; - t13 += v * b9; - t14 += v * b10; - t15 += v * b11; - t16 += v * b12; - t17 += v * b13; - t18 += v * b14; - t19 += v * b15; - v = a[5]; - t5 += v * b0; - t6 += v * b1; - t7 += v * b2; - t8 += v * b3; - t9 += v * b4; - t10 += v * b5; - t11 += v * b6; - t12 += v * b7; - t13 += v * b8; - t14 += v * b9; - t15 += v * b10; - t16 += v * b11; - t17 += v * b12; - t18 += v * b13; - t19 += v * b14; - t20 += v * b15; - v = a[6]; - t6 += v * b0; - t7 += v * b1; - t8 += v * b2; - t9 += v * b3; - t10 += v * b4; - t11 += v * b5; - t12 += v * b6; - t13 += v * b7; - t14 += v * b8; - t15 += v * b9; - t16 += v * b10; - t17 += v * b11; - t18 += v * b12; - t19 += v * b13; - t20 += v * b14; - t21 += v * b15; - v = a[7]; - t7 += v * b0; - t8 += v * b1; - t9 += v * b2; - t10 += v * b3; - t11 += v * b4; - t12 += v * b5; - t13 += v * b6; - t14 += v * b7; - t15 += v * b8; - t16 += v * b9; - t17 += v * b10; - t18 += v * b11; - t19 += v * b12; - t20 += v * b13; - t21 += v * b14; - t22 += v * b15; - v = a[8]; - t8 += v * b0; - t9 += v * b1; - t10 += v * b2; - t11 += v * b3; - t12 += v * b4; - t13 += v * b5; - t14 += v * b6; - t15 += v * b7; - t16 += v * b8; - t17 += v * b9; - t18 += v * b10; - t19 += v * b11; - t20 += v * b12; - t21 += v * b13; - t22 += v * b14; - t23 += v * b15; - v = a[9]; - t9 += v * b0; - t10 += v * b1; - t11 += v * b2; - t12 += v * b3; - t13 += v * b4; - t14 += v * b5; - t15 += v * b6; - t16 += v * b7; - t17 += v * b8; - t18 += v * b9; - t19 += v * b10; - t20 += v * b11; - t21 += v * b12; - t22 += v * b13; - t23 += v * b14; - t24 += v * b15; - v = a[10]; - t10 += v * b0; - t11 += v * b1; - t12 += v * b2; - t13 += v * b3; - t14 += v * b4; - t15 += v * b5; - t16 += v * b6; - t17 += v * b7; - t18 += v * b8; - t19 += v * b9; - t20 += v * b10; - t21 += v * b11; - t22 += v * b12; - t23 += v * b13; - t24 += v * b14; - t25 += v * b15; - v = a[11]; - t11 += v * b0; - t12 += v * b1; - t13 += v * b2; - t14 += v * b3; - t15 += v * b4; - t16 += v * b5; - t17 += v * b6; - t18 += v * b7; - t19 += v * b8; - t20 += v * b9; - t21 += v * b10; - t22 += v * b11; - t23 += v * b12; - t24 += v * b13; - t25 += v * b14; - t26 += v * b15; - v = a[12]; - t12 += v * b0; - t13 += v * b1; - t14 += v * b2; - t15 += v * b3; - t16 += v * b4; - t17 += v * b5; - t18 += v * b6; - t19 += v * b7; - t20 += v * b8; - t21 += v * b9; - t22 += v * b10; - t23 += v * b11; - t24 += v * b12; - t25 += v * b13; - t26 += v * b14; - t27 += v * b15; - v = a[13]; - t13 += v * b0; - t14 += v * b1; - t15 += v * b2; - t16 += v * b3; - t17 += v * b4; - t18 += v * b5; - t19 += v * b6; - t20 += v * b7; - t21 += v * b8; - t22 += v * b9; - t23 += v * b10; - t24 += v * b11; - t25 += v * b12; - t26 += v * b13; - t27 += v * b14; - t28 += v * b15; - v = a[14]; - t14 += v * b0; - t15 += v * b1; - t16 += v * b2; - t17 += v * b3; - t18 += v * b4; - t19 += v * b5; - t20 += v * b6; - t21 += v * b7; - t22 += v * b8; - t23 += v * b9; - t24 += v * b10; - t25 += v * b11; - t26 += v * b12; - t27 += v * b13; - t28 += v * b14; - t29 += v * b15; - v = a[15]; - t15 += v * b0; - t16 += v * b1; - t17 += v * b2; - t18 += v * b3; - t19 += v * b4; - t20 += v * b5; - t21 += v * b6; - t22 += v * b7; - t23 += v * b8; - t24 += v * b9; - t25 += v * b10; - t26 += v * b11; - t27 += v * b12; - t28 += v * b13; - t29 += v * b14; - t30 += v * b15; - - t0 += 38 * t16; - t1 += 38 * t17; - t2 += 38 * t18; - t3 += 38 * t19; - t4 += 38 * t20; - t5 += 38 * t21; - t6 += 38 * t22; - t7 += 38 * t23; - t8 += 38 * t24; - t9 += 38 * t25; - t10 += 38 * t26; - t11 += 38 * t27; - t12 += 38 * t28; - t13 += 38 * t29; - t14 += 38 * t30; - // t15 left as is - - // first car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - // second car - c = 1; - v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; - v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; - v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; - v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; - v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; - v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; - v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; - v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; - v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; - v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; - v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; - v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; - v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; - v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; - v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; - v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; - t0 += c-1 + 37 * (c-1); - - o[ 0] = t0; - o[ 1] = t1; - o[ 2] = t2; - o[ 3] = t3; - o[ 4] = t4; - o[ 5] = t5; - o[ 6] = t6; - o[ 7] = t7; - o[ 8] = t8; - o[ 9] = t9; - o[10] = t10; - o[11] = t11; - o[12] = t12; - o[13] = t13; - o[14] = t14; - o[15] = t15; -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -var K = [ - 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, - 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, - 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, - 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, - 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, - 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, - 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, - 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, - 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, - 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, - 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, - 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, - 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, - 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, - 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, - 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, - 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, - 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, - 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, - 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, - 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, - 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, - 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, - 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, - 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, - 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, - 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, - 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, - 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, - 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, - 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, - 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, - 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, - 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, - 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, - 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, - 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, - 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, - 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, - 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 -]; - -function crypto_hashblocks_hl(hh, hl, m, n) { - var wh = new Int32Array(16), wl = new Int32Array(16), - bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, - bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, - th, tl, i, j, h, l, a, b, c, d; - - var ah0 = hh[0], - ah1 = hh[1], - ah2 = hh[2], - ah3 = hh[3], - ah4 = hh[4], - ah5 = hh[5], - ah6 = hh[6], - ah7 = hh[7], - - al0 = hl[0], - al1 = hl[1], - al2 = hl[2], - al3 = hl[3], - al4 = hl[4], - al5 = hl[5], - al6 = hl[6], - al7 = hl[7]; - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) { - j = 8 * i + pos; - wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; - wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; - } - for (i = 0; i < 80; i++) { - bh0 = ah0; - bh1 = ah1; - bh2 = ah2; - bh3 = ah3; - bh4 = ah4; - bh5 = ah5; - bh6 = ah6; - bh7 = ah7; - - bl0 = al0; - bl1 = al1; - bl2 = al2; - bl3 = al3; - bl4 = al4; - bl5 = al5; - bl6 = al6; - bl7 = al7; - - // add - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma1 - h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); - l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Ch - h = (ah4 & ah5) ^ (~ah4 & ah6); - l = (al4 & al5) ^ (~al4 & al6); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // K - h = K[i*2]; - l = K[i*2+1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // w - h = wh[i%16]; - l = wl[i%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - th = c & 0xffff | d << 16; - tl = a & 0xffff | b << 16; - - // add - h = th; - l = tl; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - // Sigma0 - h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); - l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // Maj - h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); - l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh7 = (c & 0xffff) | (d << 16); - bl7 = (a & 0xffff) | (b << 16); - - // add - h = bh3; - l = bl3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = th; - l = tl; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - bh3 = (c & 0xffff) | (d << 16); - bl3 = (a & 0xffff) | (b << 16); - - ah1 = bh0; - ah2 = bh1; - ah3 = bh2; - ah4 = bh3; - ah5 = bh4; - ah6 = bh5; - ah7 = bh6; - ah0 = bh7; - - al1 = bl0; - al2 = bl1; - al3 = bl2; - al4 = bl3; - al5 = bl4; - al6 = bl5; - al7 = bl6; - al0 = bl7; - - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - // add - h = wh[j]; - l = wl[j]; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = wh[(j+9)%16]; - l = wl[(j+9)%16]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma0 - th = wh[(j+1)%16]; - tl = wl[(j+1)%16]; - h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); - l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - // sigma1 - th = wh[(j+14)%16]; - tl = wl[(j+14)%16]; - h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); - l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - wh[j] = (c & 0xffff) | (d << 16); - wl[j] = (a & 0xffff) | (b << 16); - } - } - } - - // add - h = ah0; - l = al0; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[0]; - l = hl[0]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[0] = ah0 = (c & 0xffff) | (d << 16); - hl[0] = al0 = (a & 0xffff) | (b << 16); - - h = ah1; - l = al1; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[1]; - l = hl[1]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[1] = ah1 = (c & 0xffff) | (d << 16); - hl[1] = al1 = (a & 0xffff) | (b << 16); - - h = ah2; - l = al2; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[2]; - l = hl[2]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[2] = ah2 = (c & 0xffff) | (d << 16); - hl[2] = al2 = (a & 0xffff) | (b << 16); - - h = ah3; - l = al3; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[3]; - l = hl[3]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[3] = ah3 = (c & 0xffff) | (d << 16); - hl[3] = al3 = (a & 0xffff) | (b << 16); - - h = ah4; - l = al4; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[4]; - l = hl[4]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[4] = ah4 = (c & 0xffff) | (d << 16); - hl[4] = al4 = (a & 0xffff) | (b << 16); - - h = ah5; - l = al5; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[5]; - l = hl[5]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[5] = ah5 = (c & 0xffff) | (d << 16); - hl[5] = al5 = (a & 0xffff) | (b << 16); - - h = ah6; - l = al6; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[6]; - l = hl[6]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[6] = ah6 = (c & 0xffff) | (d << 16); - hl[6] = al6 = (a & 0xffff) | (b << 16); - - h = ah7; - l = al7; - - a = l & 0xffff; b = l >>> 16; - c = h & 0xffff; d = h >>> 16; - - h = hh[7]; - l = hl[7]; - - a += l & 0xffff; b += l >>> 16; - c += h & 0xffff; d += h >>> 16; - - b += a >>> 16; - c += b >>> 16; - d += c >>> 16; - - hh[7] = ah7 = (c & 0xffff) | (d << 16); - hl[7] = al7 = (a & 0xffff) | (b << 16); - - pos += 128; - n -= 128; - } - - return n; -} - -function crypto_hash(out, m, n) { - var hh = new Int32Array(8), - hl = new Int32Array(8), - x = new Uint8Array(256), - i, b = n; - - hh[0] = 0x6a09e667; - hh[1] = 0xbb67ae85; - hh[2] = 0x3c6ef372; - hh[3] = 0xa54ff53a; - hh[4] = 0x510e527f; - hh[5] = 0x9b05688c; - hh[6] = 0x1f83d9ab; - hh[7] = 0x5be0cd19; - - hl[0] = 0xf3bcc908; - hl[1] = 0x84caa73b; - hl[2] = 0xfe94f82b; - hl[3] = 0x5f1d36f1; - hl[4] = 0xade682d1; - hl[5] = 0x2b3e6c1f; - hl[6] = 0xfb41bd6b; - hl[7] = 0x137e2179; - - crypto_hashblocks_hl(hh, hl, m, n); - n %= 128; - - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, (b / 0x20000000) | 0, b << 3); - crypto_hashblocks_hl(hh, hl, x, n); - - for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.util = {}; - -nacl.util.decodeUTF8 = function(s) { - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; -}; - -nacl.util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); -}; - -nacl.util.encodeBase64 = function(arr) { - if (typeof btoa === 'undefined') { - return (new Buffer(arr)).toString('base64'); - } else { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - } -}; - -nacl.util.decodeBase64 = function(s) { - if (typeof atob === 'undefined') { - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - } else { - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - } -}; - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto; - if (typeof window !== 'undefined') { - // Browser. - if (window.crypto && window.crypto.getRandomValues) { - crypto = window.crypto; // Standard - } else if (window.msCrypto && window.msCrypto.getRandomValues) { - crypto = window.msCrypto; // Internet Explorer 11+ - } - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - crypto.getRandomValues(v); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (window.nacl = window.nacl || {})); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.min.js deleted file mode 100644 index 7072c2af..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl-fast.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(r){"use strict";function t(r,t,n,e){r[t]=n>>24&255,r[t+1]=n>>16&255,r[t+2]=n>>8&255,r[t+3]=255&n,r[t+4]=e>>24&255,r[t+5]=e>>16&255,r[t+6]=e>>8&255,r[t+7]=255&e}function n(r,t,n,e,o){var i,h=0;for(i=0;o>i;i++)h|=r[t+i]^n[e+i];return(1&h-1>>>8)-1}function e(r,t,e,o){return n(r,t,e,o,16)}function o(r,t,e,o){return n(r,t,e,o,32)}function i(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,u=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,c=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,g=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,v=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,b=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,d=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,_=i,U=h,E=a,x=f,M=s,m=u,B=c,S=y,K=l,T=w,Y=p,k=g,L=v,C=b,R=d,z=A,P=0;20>P;P+=2)o=_+L|0,M^=o<<7|o>>>25,o=M+_|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,_^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,C^=o<<9|o>>>23,o=C+T|0,U^=o<<13|o>>>19,o=U+C|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=z+k|0,x^=o<<7|o>>>25,o=x+z|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,z^=o<<18|o>>>14,o=_+x|0,U^=o<<7|o>>>25,o=U+_|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,_^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=z+R|0,L^=o<<7|o>>>25,o=L+z|0,C^=o<<9|o>>>23,o=C+L|0,R^=o<<13|o>>>19,o=R+C|0,z^=o<<18|o>>>14;_=_+i|0,U=U+h|0,E=E+a|0,x=x+f|0,M=M+s|0,m=m+u|0,B=B+c|0,S=S+y|0,K=K+l|0,T=T+w|0,Y=Y+p|0,k=k+g|0,L=L+v|0,C=C+b|0,R=R+d|0,z=z+A|0,r[0]=_>>>0&255,r[1]=_>>>8&255,r[2]=_>>>16&255,r[3]=_>>>24&255,r[4]=U>>>0&255,r[5]=U>>>8&255,r[6]=U>>>16&255,r[7]=U>>>24&255,r[8]=E>>>0&255,r[9]=E>>>8&255,r[10]=E>>>16&255,r[11]=E>>>24&255,r[12]=x>>>0&255,r[13]=x>>>8&255,r[14]=x>>>16&255,r[15]=x>>>24&255,r[16]=M>>>0&255,r[17]=M>>>8&255,r[18]=M>>>16&255,r[19]=M>>>24&255,r[20]=m>>>0&255,r[21]=m>>>8&255,r[22]=m>>>16&255,r[23]=m>>>24&255,r[24]=B>>>0&255,r[25]=B>>>8&255,r[26]=B>>>16&255,r[27]=B>>>24&255,r[28]=S>>>0&255,r[29]=S>>>8&255,r[30]=S>>>16&255,r[31]=S>>>24&255,r[32]=K>>>0&255,r[33]=K>>>8&255,r[34]=K>>>16&255,r[35]=K>>>24&255,r[36]=T>>>0&255,r[37]=T>>>8&255,r[38]=T>>>16&255,r[39]=T>>>24&255,r[40]=Y>>>0&255,r[41]=Y>>>8&255,r[42]=Y>>>16&255,r[43]=Y>>>24&255,r[44]=k>>>0&255,r[45]=k>>>8&255,r[46]=k>>>16&255,r[47]=k>>>24&255,r[48]=L>>>0&255,r[49]=L>>>8&255,r[50]=L>>>16&255,r[51]=L>>>24&255,r[52]=C>>>0&255,r[53]=C>>>8&255,r[54]=C>>>16&255,r[55]=C>>>24&255,r[56]=R>>>0&255,r[57]=R>>>8&255,r[58]=R>>>16&255,r[59]=R>>>24&255,r[60]=z>>>0&255,r[61]=z>>>8&255,r[62]=z>>>16&255,r[63]=z>>>24&255}function h(r,t,n,e){for(var o,i=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,h=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,f=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,s=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,u=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,c=255&t[0]|(255&t[1])<<8|(255&t[2])<<16|(255&t[3])<<24,y=255&t[4]|(255&t[5])<<8|(255&t[6])<<16|(255&t[7])<<24,l=255&t[8]|(255&t[9])<<8|(255&t[10])<<16|(255&t[11])<<24,w=255&t[12]|(255&t[13])<<8|(255&t[14])<<16|(255&t[15])<<24,p=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,g=255&n[16]|(255&n[17])<<8|(255&n[18])<<16|(255&n[19])<<24,v=255&n[20]|(255&n[21])<<8|(255&n[22])<<16|(255&n[23])<<24,b=255&n[24]|(255&n[25])<<8|(255&n[26])<<16|(255&n[27])<<24,d=255&n[28]|(255&n[29])<<8|(255&n[30])<<16|(255&n[31])<<24,A=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,_=i,U=h,E=a,x=f,M=s,m=u,B=c,S=y,K=l,T=w,Y=p,k=g,L=v,C=b,R=d,z=A,P=0;20>P;P+=2)o=_+L|0,M^=o<<7|o>>>25,o=M+_|0,K^=o<<9|o>>>23,o=K+M|0,L^=o<<13|o>>>19,o=L+K|0,_^=o<<18|o>>>14,o=m+U|0,T^=o<<7|o>>>25,o=T+m|0,C^=o<<9|o>>>23,o=C+T|0,U^=o<<13|o>>>19,o=U+C|0,m^=o<<18|o>>>14,o=Y+B|0,R^=o<<7|o>>>25,o=R+Y|0,E^=o<<9|o>>>23,o=E+R|0,B^=o<<13|o>>>19,o=B+E|0,Y^=o<<18|o>>>14,o=z+k|0,x^=o<<7|o>>>25,o=x+z|0,S^=o<<9|o>>>23,o=S+x|0,k^=o<<13|o>>>19,o=k+S|0,z^=o<<18|o>>>14,o=_+x|0,U^=o<<7|o>>>25,o=U+_|0,E^=o<<9|o>>>23,o=E+U|0,x^=o<<13|o>>>19,o=x+E|0,_^=o<<18|o>>>14,o=m+M|0,B^=o<<7|o>>>25,o=B+m|0,S^=o<<9|o>>>23,o=S+B|0,M^=o<<13|o>>>19,o=M+S|0,m^=o<<18|o>>>14,o=Y+T|0,k^=o<<7|o>>>25,o=k+Y|0,K^=o<<9|o>>>23,o=K+k|0,T^=o<<13|o>>>19,o=T+K|0,Y^=o<<18|o>>>14,o=z+R|0,L^=o<<7|o>>>25,o=L+z|0,C^=o<<9|o>>>23,o=C+L|0,R^=o<<13|o>>>19,o=R+C|0,z^=o<<18|o>>>14;r[0]=_>>>0&255,r[1]=_>>>8&255,r[2]=_>>>16&255,r[3]=_>>>24&255,r[4]=m>>>0&255,r[5]=m>>>8&255,r[6]=m>>>16&255,r[7]=m>>>24&255,r[8]=Y>>>0&255,r[9]=Y>>>8&255,r[10]=Y>>>16&255,r[11]=Y>>>24&255,r[12]=z>>>0&255,r[13]=z>>>8&255,r[14]=z>>>16&255,r[15]=z>>>24&255,r[16]=B>>>0&255,r[17]=B>>>8&255,r[18]=B>>>16&255,r[19]=B>>>24&255,r[20]=S>>>0&255,r[21]=S>>>8&255,r[22]=S>>>16&255,r[23]=S>>>24&255,r[24]=K>>>0&255,r[25]=K>>>8&255,r[26]=K>>>16&255,r[27]=K>>>24&255,r[28]=T>>>0&255,r[29]=T>>>8&255,r[30]=T>>>16&255,r[31]=T>>>24&255}function a(r,t,n,e){i(r,t,n,e)}function f(r,t,n,e){h(r,t,n,e)}function s(r,t,n,e,o,i,h){var f,s,u=new Uint8Array(16),c=new Uint8Array(64);for(s=0;16>s;s++)u[s]=0;for(s=0;8>s;s++)u[s]=i[s];for(;o>=64;){for(a(c,u,h,cr),s=0;64>s;s++)r[t+s]=n[e+s]^c[s];for(f=1,s=8;16>s;s++)f=f+(255&u[s])|0,u[s]=255&f,f>>>=8;o-=64,t+=64,e+=64}if(o>0)for(a(c,u,h,cr),s=0;o>s;s++)r[t+s]=n[e+s]^c[s];return 0}function u(r,t,n,e,o){var i,h,f=new Uint8Array(16),s=new Uint8Array(64);for(h=0;16>h;h++)f[h]=0;for(h=0;8>h;h++)f[h]=e[h];for(;n>=64;){for(a(s,f,o,cr),h=0;64>h;h++)r[t+h]=s[h];for(i=1,h=8;16>h;h++)i=i+(255&f[h])|0,f[h]=255&i,i>>>=8;n-=64,t+=64}if(n>0)for(a(s,f,o,cr),h=0;n>h;h++)r[t+h]=s[h];return 0}function c(r,t,n,e,o){var i=new Uint8Array(32);f(i,e,o,cr);for(var h=new Uint8Array(8),a=0;8>a;a++)h[a]=e[a+16];return u(r,t,n,h,i)}function y(r,t,n,e,o,i,h){var a=new Uint8Array(32);f(a,i,h,cr);for(var u=new Uint8Array(8),c=0;8>c;c++)u[c]=i[c+16];return s(r,t,n,e,o,u,a)}function l(r,t,n,e,o,i){var h=new yr(i);return h.update(n,e,o),h.finish(r,t),0}function w(r,t,n,o,i,h){var a=new Uint8Array(16);return l(a,0,n,o,i,h),e(r,t,a,0)}function p(r,t,n,e,o){var i;if(32>n)return-1;for(y(r,0,t,0,n,e,o),l(r,16,r,32,n-32,r),i=0;16>i;i++)r[i]=0;return 0}function g(r,t,n,e,o){var i,h=new Uint8Array(32);if(32>n)return-1;if(c(h,0,32,e,o),0!==w(t,16,t,32,n-32,h))return-1;for(y(r,0,t,0,n,e,o),i=0;32>i;i++)r[i]=0;return 0}function v(r,t){var n;for(n=0;16>n;n++)r[n]=0|t[n]}function b(r){var t,n,e=1;for(t=0;16>t;t++)n=r[t]+e+65535,e=Math.floor(n/65536),r[t]=n-65536*e;r[0]+=e-1+37*(e-1)}function d(r,t,n){for(var e,o=~(n-1),i=0;16>i;i++)e=o&(r[i]^t[i]),r[i]^=e,t[i]^=e}function A(r,t){var n,e,o,i=$(),h=$();for(n=0;16>n;n++)h[n]=t[n];for(b(h),b(h),b(h),e=0;2>e;e++){for(i[0]=h[0]-65517,n=1;15>n;n++)i[n]=h[n]-65535-(i[n-1]>>16&1),i[n-1]&=65535;i[15]=h[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,d(h,i,1-o)}for(n=0;16>n;n++)r[2*n]=255&h[n],r[2*n+1]=h[n]>>8}function _(r,t){var n=new Uint8Array(32),e=new Uint8Array(32);return A(n,r),A(e,t),o(n,0,e,0)}function U(r){var t=new Uint8Array(32);return A(t,r),1&t[0]}function E(r,t){var n;for(n=0;16>n;n++)r[n]=t[2*n]+(t[2*n+1]<<8);r[15]&=32767}function x(r,t,n){for(var e=0;16>e;e++)r[e]=t[e]+n[e]}function M(r,t,n){for(var e=0;16>e;e++)r[e]=t[e]-n[e]}function m(r,t,n){var e,o,i=0,h=0,a=0,f=0,s=0,u=0,c=0,y=0,l=0,w=0,p=0,g=0,v=0,b=0,d=0,A=0,_=0,U=0,E=0,x=0,M=0,m=0,B=0,S=0,K=0,T=0,Y=0,k=0,L=0,C=0,R=0,z=n[0],P=n[1],O=n[2],N=n[3],F=n[4],I=n[5],j=n[6],G=n[7],Z=n[8],V=n[9],q=n[10],X=n[11],D=n[12],H=n[13],J=n[14],Q=n[15];e=t[0],i+=e*z,h+=e*P,a+=e*O,f+=e*N,s+=e*F,u+=e*I,c+=e*j,y+=e*G,l+=e*Z,w+=e*V,p+=e*q,g+=e*X,v+=e*D,b+=e*H,d+=e*J,A+=e*Q,e=t[1],h+=e*z,a+=e*P,f+=e*O,s+=e*N,u+=e*F,c+=e*I,y+=e*j,l+=e*G,w+=e*Z,p+=e*V,g+=e*q,v+=e*X,b+=e*D,d+=e*H,A+=e*J,_+=e*Q,e=t[2],a+=e*z,f+=e*P,s+=e*O,u+=e*N,c+=e*F,y+=e*I,l+=e*j,w+=e*G,p+=e*Z,g+=e*V,v+=e*q,b+=e*X,d+=e*D,A+=e*H,_+=e*J,U+=e*Q,e=t[3],f+=e*z,s+=e*P,u+=e*O,c+=e*N,y+=e*F,l+=e*I,w+=e*j,p+=e*G,g+=e*Z,v+=e*V,b+=e*q,d+=e*X,A+=e*D,_+=e*H,U+=e*J,E+=e*Q,e=t[4],s+=e*z,u+=e*P,c+=e*O,y+=e*N,l+=e*F,w+=e*I,p+=e*j,g+=e*G,v+=e*Z,b+=e*V,d+=e*q,A+=e*X,_+=e*D,U+=e*H,E+=e*J,x+=e*Q,e=t[5],u+=e*z,c+=e*P,y+=e*O,l+=e*N,w+=e*F,p+=e*I,g+=e*j,v+=e*G,b+=e*Z,d+=e*V,A+=e*q,_+=e*X,U+=e*D,E+=e*H,x+=e*J,M+=e*Q,e=t[6],c+=e*z,y+=e*P,l+=e*O,w+=e*N,p+=e*F,g+=e*I,v+=e*j,b+=e*G,d+=e*Z,A+=e*V,_+=e*q,U+=e*X,E+=e*D,x+=e*H,M+=e*J,m+=e*Q,e=t[7],y+=e*z,l+=e*P,w+=e*O,p+=e*N,g+=e*F,v+=e*I,b+=e*j,d+=e*G,A+=e*Z,_+=e*V,U+=e*q,E+=e*X,x+=e*D,M+=e*H,m+=e*J,B+=e*Q,e=t[8],l+=e*z,w+=e*P,p+=e*O,g+=e*N,v+=e*F,b+=e*I,d+=e*j,A+=e*G,_+=e*Z,U+=e*V,E+=e*q,x+=e*X,M+=e*D,m+=e*H,B+=e*J,S+=e*Q,e=t[9],w+=e*z,p+=e*P,g+=e*O,v+=e*N,b+=e*F,d+=e*I,A+=e*j,_+=e*G,U+=e*Z,E+=e*V,x+=e*q,M+=e*X,m+=e*D,B+=e*H,S+=e*J,K+=e*Q,e=t[10],p+=e*z,g+=e*P,v+=e*O,b+=e*N,d+=e*F,A+=e*I,_+=e*j,U+=e*G,E+=e*Z,x+=e*V,M+=e*q,m+=e*X,B+=e*D,S+=e*H,K+=e*J,T+=e*Q,e=t[11],g+=e*z,v+=e*P,b+=e*O,d+=e*N,A+=e*F,_+=e*I,U+=e*j,E+=e*G,x+=e*Z,M+=e*V,m+=e*q,B+=e*X,S+=e*D,K+=e*H,T+=e*J,Y+=e*Q,e=t[12],v+=e*z,b+=e*P,d+=e*O,A+=e*N,_+=e*F,U+=e*I,E+=e*j,x+=e*G,M+=e*Z,m+=e*V,B+=e*q,S+=e*X,K+=e*D,T+=e*H,Y+=e*J,k+=e*Q,e=t[13],b+=e*z,d+=e*P,A+=e*O,_+=e*N,U+=e*F,E+=e*I,x+=e*j,M+=e*G,m+=e*Z,B+=e*V,S+=e*q,K+=e*X,T+=e*D,Y+=e*H,k+=e*J,L+=e*Q,e=t[14],d+=e*z,A+=e*P,_+=e*O,U+=e*N,E+=e*F,x+=e*I,M+=e*j,m+=e*G,B+=e*Z,S+=e*V,K+=e*q,T+=e*X,Y+=e*D,k+=e*H,L+=e*J,C+=e*Q,e=t[15],A+=e*z,_+=e*P,U+=e*O,E+=e*N,x+=e*F,M+=e*I,m+=e*j,B+=e*G,S+=e*Z,K+=e*V,T+=e*q,Y+=e*X,k+=e*D,L+=e*H,C+=e*J,R+=e*Q,i+=38*_,h+=38*U,a+=38*E,f+=38*x,s+=38*M,u+=38*m,c+=38*B,y+=38*S,l+=38*K,w+=38*T,p+=38*Y,g+=38*k,v+=38*L,b+=38*C,d+=38*R,o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=d+o+65535,o=Math.floor(e/65536),d=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),o=1,e=i+o+65535,o=Math.floor(e/65536),i=e-65536*o,e=h+o+65535,o=Math.floor(e/65536),h=e-65536*o,e=a+o+65535,o=Math.floor(e/65536),a=e-65536*o,e=f+o+65535,o=Math.floor(e/65536),f=e-65536*o,e=s+o+65535,o=Math.floor(e/65536),s=e-65536*o,e=u+o+65535,o=Math.floor(e/65536),u=e-65536*o,e=c+o+65535,o=Math.floor(e/65536),c=e-65536*o,e=y+o+65535,o=Math.floor(e/65536),y=e-65536*o,e=l+o+65535,o=Math.floor(e/65536),l=e-65536*o,e=w+o+65535,o=Math.floor(e/65536),w=e-65536*o,e=p+o+65535,o=Math.floor(e/65536),p=e-65536*o,e=g+o+65535,o=Math.floor(e/65536),g=e-65536*o,e=v+o+65535,o=Math.floor(e/65536),v=e-65536*o,e=b+o+65535,o=Math.floor(e/65536),b=e-65536*o,e=d+o+65535,o=Math.floor(e/65536),d=e-65536*o,e=A+o+65535,o=Math.floor(e/65536),A=e-65536*o,i+=o-1+37*(o-1),r[0]=i,r[1]=h,r[2]=a,r[3]=f,r[4]=s,r[5]=u,r[6]=c,r[7]=y,r[8]=l,r[9]=w,r[10]=p,r[11]=g,r[12]=v,r[13]=b,r[14]=d,r[15]=A}function B(r,t){m(r,t,t)}function S(r,t){var n,e=$();for(n=0;16>n;n++)e[n]=t[n];for(n=253;n>=0;n--)B(e,e),2!==n&&4!==n&&m(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function K(r,t){var n,e=$();for(n=0;16>n;n++)e[n]=t[n];for(n=250;n>=0;n--)B(e,e),1!==n&&m(e,e,t);for(n=0;16>n;n++)r[n]=e[n]}function T(r,t,n){var e,o,i=new Uint8Array(32),h=new Float64Array(80),a=$(),f=$(),s=$(),u=$(),c=$(),y=$();for(o=0;31>o;o++)i[o]=t[o];for(i[31]=127&t[31]|64,i[0]&=248,E(h,n),o=0;16>o;o++)f[o]=h[o],u[o]=a[o]=s[o]=0;for(a[0]=u[0]=1,o=254;o>=0;--o)e=i[o>>>3]>>>(7&o)&1,d(a,f,e),d(s,u,e),x(c,a,s),M(a,a,s),x(s,f,u),M(f,f,u),B(u,c),B(y,a),m(a,s,a),m(s,f,c),x(c,a,s),M(a,a,s),B(f,a),M(s,u,y),m(a,s,ir),x(a,a,u),m(s,s,a),m(a,u,y),m(u,f,h),B(f,c),d(a,f,e),d(s,u,e);for(o=0;16>o;o++)h[o+16]=a[o],h[o+32]=s[o],h[o+48]=f[o],h[o+64]=u[o];var l=h.subarray(32),w=h.subarray(16);return S(l,l),m(w,w,l),A(r,w),0}function Y(r,t){return T(r,t,nr)}function k(r,t){return rr(t,32),Y(r,t)}function L(r,t,n){var e=new Uint8Array(32);return T(e,n,t),f(r,tr,e,cr)}function C(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),lr(r,t,n,e,h)}function R(r,t,n,e,o,i){var h=new Uint8Array(32);return L(h,o,i),wr(r,t,n,e,h)}function z(r,t,n,e){for(var o,i,h,a,f,s,u,c,y,l,w,p,g,v,b,d,A,_,U,E,x,M,m,B,S,K,T=new Int32Array(16),Y=new Int32Array(16),k=r[0],L=r[1],C=r[2],R=r[3],z=r[4],P=r[5],O=r[6],N=r[7],F=t[0],I=t[1],j=t[2],G=t[3],Z=t[4],V=t[5],q=t[6],X=t[7],D=0;e>=128;){for(U=0;16>U;U++)E=8*U+D,T[U]=n[E+0]<<24|n[E+1]<<16|n[E+2]<<8|n[E+3],Y[U]=n[E+4]<<24|n[E+5]<<16|n[E+6]<<8|n[E+7];for(U=0;80>U;U++)if(o=k,i=L,h=C,a=R,f=z,s=P,u=O,c=N,y=F,l=I,w=j,p=G,g=Z,v=V,b=q,d=X,x=N,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(z>>>14|Z<<18)^(z>>>18|Z<<14)^(Z>>>9|z<<23),M=(Z>>>14|z<<18)^(Z>>>18|z<<14)^(z>>>9|Z<<23),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=z&P^~z&O,M=Z&V^~Z&q,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=pr[2*U],M=pr[2*U+1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=T[U%16],M=Y[U%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,A=65535&S|K<<16,_=65535&m|B<<16,x=A,M=_,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=(k>>>28|F<<4)^(F>>>2|k<<30)^(F>>>7|k<<25),M=(F>>>28|k<<4)^(k>>>2|F<<30)^(k>>>7|F<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,x=k&L^k&C^L&C,M=F&I^F&j^I&j,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,c=65535&S|K<<16,d=65535&m|B<<16,x=a,M=p,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=A,M=_,m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,a=65535&S|K<<16,p=65535&m|B<<16,L=o,C=i,R=h,z=a,P=f,O=s,N=u,k=c,I=y,j=l,G=w,Z=p,V=g,q=v,X=b,F=d,U%16===15)for(E=0;16>E;E++)x=T[E],M=Y[E],m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=T[(E+9)%16],M=Y[(E+9)%16],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+1)%16],_=Y[(E+1)%16],x=(A>>>1|_<<31)^(A>>>8|_<<24)^A>>>7,M=(_>>>1|A<<31)^(_>>>8|A<<24)^(_>>>7|A<<25),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,A=T[(E+14)%16],_=Y[(E+14)%16],x=(A>>>19|_<<13)^(_>>>29|A<<3)^A>>>6,M=(_>>>19|A<<13)^(A>>>29|_<<3)^(_>>>6|A<<26),m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,T[E]=65535&S|K<<16,Y[E]=65535&m|B<<16;x=k,M=F,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[0],M=t[0],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[0]=k=65535&S|K<<16,t[0]=F=65535&m|B<<16,x=L,M=I,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[1],M=t[1],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[1]=L=65535&S|K<<16,t[1]=I=65535&m|B<<16,x=C,M=j,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[2],M=t[2],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[2]=C=65535&S|K<<16,t[2]=j=65535&m|B<<16,x=R,M=G,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[3],M=t[3],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[3]=R=65535&S|K<<16,t[3]=G=65535&m|B<<16,x=z,M=Z,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[4],M=t[4],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[4]=z=65535&S|K<<16,t[4]=Z=65535&m|B<<16,x=P,M=V,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[5],M=t[5],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[5]=P=65535&S|K<<16,t[5]=V=65535&m|B<<16,x=O,M=q,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[6],M=t[6],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[6]=O=65535&S|K<<16,t[6]=q=65535&m|B<<16,x=N,M=X,m=65535&M,B=M>>>16,S=65535&x,K=x>>>16,x=r[7],M=t[7],m+=65535&M,B+=M>>>16,S+=65535&x,K+=x>>>16,B+=m>>>16,S+=B>>>16,K+=S>>>16,r[7]=N=65535&S|K<<16,t[7]=X=65535&m|B<<16,D+=128,e-=128}return e}function P(r,n,e){var o,i=new Int32Array(8),h=new Int32Array(8),a=new Uint8Array(256),f=e;for(i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,z(i,h,n,e),e%=128,o=0;e>o;o++)a[o]=n[f-e+o];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,t(a,e-8,f/536870912|0,f<<3),z(i,h,a,e),o=0;8>o;o++)t(r,8*o,i[o],h[o]);return 0}function O(r,t){var n=$(),e=$(),o=$(),i=$(),h=$(),a=$(),f=$(),s=$(),u=$();M(n,r[1],r[0]),M(u,t[1],t[0]),m(n,n,u),x(e,r[0],r[1]),x(u,t[0],t[1]),m(e,e,u),m(o,r[3],t[3]),m(o,o,ar),m(i,r[2],t[2]),x(i,i,i),M(h,e,n),M(a,i,o),x(f,i,o),x(s,e,n),m(r[0],h,a),m(r[1],s,f),m(r[2],f,a),m(r[3],h,s)}function N(r,t,n){var e;for(e=0;4>e;e++)d(r[e],t[e],n)}function F(r,t){var n=$(),e=$(),o=$();S(o,t[2]),m(n,t[0],o),m(e,t[1],o),A(r,e),r[31]^=U(n)<<7}function I(r,t,n){var e,o;for(v(r[0],er),v(r[1],or),v(r[2],or),v(r[3],er),o=255;o>=0;--o)e=n[o/8|0]>>(7&o)&1,N(r,t,e),O(t,r),O(r,r),N(r,t,e)}function j(r,t){var n=[$(),$(),$(),$()];v(n[0],fr),v(n[1],sr),v(n[2],or),m(n[3],fr,sr),I(r,n,t)}function G(r,t,n){var e,o=new Uint8Array(64),i=[$(),$(),$(),$()];for(n||rr(t,32),P(o,t,32),o[0]&=248,o[31]&=127,o[31]|=64,j(i,o),F(r,i),e=0;32>e;e++)t[e+32]=r[e];return 0}function Z(r,t){var n,e,o,i;for(e=63;e>=32;--e){for(n=0,o=e-32,i=e-12;i>o;++o)t[o]+=n-16*t[e]*gr[o-(e-32)],n=t[o]+128>>8,t[o]-=256*n;t[o]+=n,t[e]=0}for(n=0,o=0;32>o;o++)t[o]+=n-(t[31]>>4)*gr[o],n=t[o]>>8,t[o]&=255;for(o=0;32>o;o++)t[o]-=n*gr[o];for(e=0;32>e;e++)t[e+1]+=t[e]>>8,r[e]=255&t[e]}function V(r){var t,n=new Float64Array(64);for(t=0;64>t;t++)n[t]=r[t];for(t=0;64>t;t++)r[t]=0;Z(r,n)}function q(r,t,n,e){var o,i,h=new Uint8Array(64),a=new Uint8Array(64),f=new Uint8Array(64),s=new Float64Array(64),u=[$(),$(),$(),$()];P(h,e,32),h[0]&=248,h[31]&=127,h[31]|=64;var c=n+64;for(o=0;n>o;o++)r[64+o]=t[o];for(o=0;32>o;o++)r[32+o]=h[32+o];for(P(f,r.subarray(32),n+32),V(f),j(u,f),F(r,u),o=32;64>o;o++)r[o]=e[o];for(P(a,r,n+64),V(a),o=0;64>o;o++)s[o]=0;for(o=0;32>o;o++)s[o]=f[o];for(o=0;32>o;o++)for(i=0;32>i;i++)s[o+i]+=a[o]*h[i];return Z(r.subarray(32),s),c}function X(r,t){var n=$(),e=$(),o=$(),i=$(),h=$(),a=$(),f=$();return v(r[2],or),E(r[1],t),B(o,r[1]),m(i,o,hr),M(o,o,r[2]),x(i,r[2],i),B(h,i),B(a,h),m(f,a,h),m(n,f,o),m(n,n,i),K(n,n),m(n,n,o),m(n,n,i),m(n,n,i),m(r[0],n,i),B(e,r[0]),m(e,e,i),_(e,o)&&m(r[0],r[0],ur),B(e,r[0]),m(e,e,i),_(e,o)?-1:(U(r[0])===t[31]>>7&&M(r[0],er,r[0]),m(r[3],r[0],r[1]),0)}function D(r,t,n,e){var i,h,a=new Uint8Array(32),f=new Uint8Array(64),s=[$(),$(),$(),$()],u=[$(),$(),$(),$()];if(h=-1,64>n)return-1;if(X(u,e))return-1;for(i=0;n>i;i++)r[i]=t[i];for(i=0;32>i;i++)r[i+32]=e[i];if(P(f,r,n),V(f),I(s,u,f),j(u,t.subarray(32)),O(s,u),F(a,s),n-=64,o(t,0,a,0)){for(i=0;n>i;i++)r[i]=0;return-1}for(i=0;n>i;i++)r[i]=t[i+64];return h=n}function H(r,t){if(r.length!==vr)throw new Error("bad key size");if(t.length!==br)throw new Error("bad nonce size")}function J(r,t){if(r.length!==Er)throw new Error("bad public key size");if(t.length!==xr)throw new Error("bad secret key size")}function Q(){var r,t;for(t=0;t>>13|n<<3),e=255&r[4]|(255&r[5])<<8,this.r[2]=7939&(n>>>10|e<<6),o=255&r[6]|(255&r[7])<<8,this.r[3]=8191&(e>>>7|o<<9),i=255&r[8]|(255&r[9])<<8,this.r[4]=255&(o>>>4|i<<12),this.r[5]=i>>>1&8190,h=255&r[10]|(255&r[11])<<8,this.r[6]=8191&(i>>>14|h<<2),a=255&r[12]|(255&r[13])<<8,this.r[7]=8065&(h>>>11|a<<5),f=255&r[14]|(255&r[15])<<8,this.r[8]=8191&(a>>>8|f<<8),this.r[9]=f>>>5&127,this.pad[0]=255&r[16]|(255&r[17])<<8,this.pad[1]=255&r[18]|(255&r[19])<<8,this.pad[2]=255&r[20]|(255&r[21])<<8,this.pad[3]=255&r[22]|(255&r[23])<<8,this.pad[4]=255&r[24]|(255&r[25])<<8,this.pad[5]=255&r[26]|(255&r[27])<<8,this.pad[6]=255&r[28]|(255&r[29])<<8,this.pad[7]=255&r[30]|(255&r[31])<<8};yr.prototype.blocks=function(r,t,n){for(var e,o,i,h,a,f,s,u,c,y,l,w,p,g,v,b,d,A,_,U=this.fin?0:2048,E=this.h[0],x=this.h[1],M=this.h[2],m=this.h[3],B=this.h[4],S=this.h[5],K=this.h[6],T=this.h[7],Y=this.h[8],k=this.h[9],L=this.r[0],C=this.r[1],R=this.r[2],z=this.r[3],P=this.r[4],O=this.r[5],N=this.r[6],F=this.r[7],I=this.r[8],j=this.r[9];n>=16;)e=255&r[t+0]|(255&r[t+1])<<8,E+=8191&e,o=255&r[t+2]|(255&r[t+3])<<8,x+=8191&(e>>>13|o<<3),i=255&r[t+4]|(255&r[t+5])<<8,M+=8191&(o>>>10|i<<6),h=255&r[t+6]|(255&r[t+7])<<8,m+=8191&(i>>>7|h<<9),a=255&r[t+8]|(255&r[t+9])<<8,B+=8191&(h>>>4|a<<12),S+=a>>>1&8191,f=255&r[t+10]|(255&r[t+11])<<8,K+=8191&(a>>>14|f<<2),s=255&r[t+12]|(255&r[t+13])<<8,T+=8191&(f>>>11|s<<5),u=255&r[t+14]|(255&r[t+15])<<8,Y+=8191&(s>>>8|u<<8),k+=u>>>5|U,c=0,y=c,y+=E*L,y+=5*x*j,y+=5*M*I,y+=5*m*F,y+=5*B*N,c=y>>>13,y&=8191,y+=5*S*O,y+=5*K*P,y+=5*T*z,y+=5*Y*R,y+=5*k*C,c+=y>>>13,y&=8191,l=c,l+=E*C,l+=x*L,l+=5*M*j,l+=5*m*I,l+=5*B*F,c=l>>>13,l&=8191,l+=5*S*N,l+=5*K*O,l+=5*T*P,l+=5*Y*z,l+=5*k*R,c+=l>>>13,l&=8191,w=c,w+=E*R,w+=x*C,w+=M*L,w+=5*m*j,w+=5*B*I,c=w>>>13,w&=8191,w+=5*S*F,w+=5*K*N,w+=5*T*O,w+=5*Y*P,w+=5*k*z,c+=w>>>13,w&=8191,p=c,p+=E*z,p+=x*R,p+=M*C,p+=m*L,p+=5*B*j,c=p>>>13,p&=8191,p+=5*S*I,p+=5*K*F,p+=5*T*N,p+=5*Y*O,p+=5*k*P,c+=p>>>13,p&=8191,g=c,g+=E*P,g+=x*z,g+=M*R,g+=m*C,g+=B*L,c=g>>>13,g&=8191,g+=5*S*j,g+=5*K*I,g+=5*T*F,g+=5*Y*N,g+=5*k*O,c+=g>>>13,g&=8191,v=c,v+=E*O,v+=x*P,v+=M*z,v+=m*R,v+=B*C,c=v>>>13,v&=8191,v+=S*L,v+=5*K*j,v+=5*T*I,v+=5*Y*F,v+=5*k*N,c+=v>>>13,v&=8191,b=c,b+=E*N,b+=x*O,b+=M*P,b+=m*z,b+=B*R,c=b>>>13,b&=8191,b+=S*C,b+=K*L,b+=5*T*j,b+=5*Y*I,b+=5*k*F,c+=b>>>13,b&=8191,d=c,d+=E*F,d+=x*N,d+=M*O,d+=m*P,d+=B*z,c=d>>>13,d&=8191,d+=S*R,d+=K*C,d+=T*L,d+=5*Y*j,d+=5*k*I,c+=d>>>13,d&=8191,A=c,A+=E*I,A+=x*F,A+=M*N,A+=m*O,A+=B*P,c=A>>>13,A&=8191,A+=S*z,A+=K*R,A+=T*C,A+=Y*L,A+=5*k*j,c+=A>>>13,A&=8191,_=c,_+=E*j,_+=x*I,_+=M*F,_+=m*N,_+=B*O,c=_>>>13,_&=8191,_+=S*P,_+=K*z,_+=T*R,_+=Y*C,_+=k*L,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+y|0,y=8191&c,c>>>=13,l+=c,E=y,x=l,M=w,m=p,B=g,S=v,K=b,T=d,Y=A,k=_,t+=16,n-=16;this.h[0]=E,this.h[1]=x,this.h[2]=M,this.h[3]=m,this.h[4]=B,this.h[5]=S,this.h[6]=K,this.h[7]=T,this.h[8]=Y,this.h[9]=k},yr.prototype.finish=function(r,t){var n,e,o,i,h=new Uint16Array(10);if(this.leftover){for(i=this.leftover,this.buffer[i++]=1;16>i;i++)this.buffer[i]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(n=this.h[1]>>>13,this.h[1]&=8191,i=2;10>i;i++)this.h[i]+=n,n=this.h[i]>>>13,this.h[i]&=8191;for(this.h[0]+=5*n,n=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=n,n=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=n,h[0]=this.h[0]+5,n=h[0]>>>13,h[0]&=8191,i=1;10>i;i++)h[i]=this.h[i]+n,n=h[i]>>>13,h[i]&=8191;for(h[9]-=8192,e=(h[9]>>>15)-1,i=0;10>i;i++)h[i]&=e;for(e=~e,i=0;10>i;i++)this.h[i]=this.h[i]&e|h[i];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),o=this.h[0]+this.pad[0],this.h[0]=65535&o,i=1;8>i;i++)o=(this.h[i]+this.pad[i]|0)+(o>>>16)|0,this.h[i]=65535&o;r[t+0]=this.h[0]>>>0&255,r[t+1]=this.h[0]>>>8&255,r[t+2]=this.h[1]>>>0&255,r[t+3]=this.h[1]>>>8&255,r[t+4]=this.h[2]>>>0&255,r[t+5]=this.h[2]>>>8&255,r[t+6]=this.h[3]>>>0&255,r[t+7]=this.h[3]>>>8&255,r[t+8]=this.h[4]>>>0&255,r[t+9]=this.h[4]>>>8&255,r[t+10]=this.h[5]>>>0&255,r[t+11]=this.h[5]>>>8&255,r[t+12]=this.h[6]>>>0&255,r[t+13]=this.h[6]>>>8&255,r[t+14]=this.h[7]>>>0&255,r[t+15]=this.h[7]>>>8&255},yr.prototype.update=function(r,t,n){var e,o;if(this.leftover){for(o=16-this.leftover,o>n&&(o=n),e=0;o>e;e++)this.buffer[this.leftover+e]=r[t+e];if(n-=o,t+=o,this.leftover+=o,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(n>=16&&(o=n-n%16,this.blocks(r,t,o),t+=o,n-=o),n){for(e=0;n>e;e++)this.buffer[this.leftover+e]=r[t+e];this.leftover+=n}};var lr=p,wr=g,pr=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],gr=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]),vr=32,br=24,dr=32,Ar=16,_r=32,Ur=32,Er=32,xr=32,Mr=32,mr=br,Br=dr,Sr=Ar,Kr=64,Tr=32,Yr=64,kr=32,Lr=64;r.lowlevel={crypto_core_hsalsa20:f,crypto_stream_xor:y,crypto_stream:c,crypto_stream_salsa20_xor:s,crypto_stream_salsa20:u,crypto_onetimeauth:l,crypto_onetimeauth_verify:w,crypto_verify_16:e,crypto_verify_32:o,crypto_secretbox:p,crypto_secretbox_open:g,crypto_scalarmult:T,crypto_scalarmult_base:Y,crypto_box_beforenm:L,crypto_box_afternm:lr,crypto_box:C,crypto_box_open:R,crypto_box_keypair:k,crypto_hash:P,crypto_sign:q,crypto_sign_keypair:G,crypto_sign_open:D,crypto_secretbox_KEYBYTES:vr,crypto_secretbox_NONCEBYTES:br,crypto_secretbox_ZEROBYTES:dr,crypto_secretbox_BOXZEROBYTES:Ar,crypto_scalarmult_BYTES:_r,crypto_scalarmult_SCALARBYTES:Ur,crypto_box_PUBLICKEYBYTES:Er,crypto_box_SECRETKEYBYTES:xr,crypto_box_BEFORENMBYTES:Mr,crypto_box_NONCEBYTES:mr,crypto_box_ZEROBYTES:Br,crypto_box_BOXZEROBYTES:Sr,crypto_sign_BYTES:Kr,crypto_sign_PUBLICKEYBYTES:Tr,crypto_sign_SECRETKEYBYTES:Yr,crypto_sign_SEEDBYTES:kr,crypto_hash_BYTES:Lr},r.util={},r.util.decodeUTF8=function(r){var t,n=unescape(encodeURIComponent(r)),e=new Uint8Array(n.length);for(t=0;tt;t++)n.push(String.fromCharCode(r[t]));return btoa(n.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var t,n=atob(r),e=new Uint8Array(n.length);for(t=0;te)return null;for(var o=new Uint8Array(e),i=0;ie;e++)o[e]=t[e];for(e=0;e=0},r.sign.keyPair=function(){var r=new Uint8Array(Tr),t=new Uint8Array(Yr);return G(r,t),{publicKey:r,secretKey:t}},r.sign.keyPair.fromSecretKey=function(r){if(Q(r),r.length!==Yr)throw new Error("bad secret key size");for(var t=new Uint8Array(Tr),n=0;ne;e++)n[e]=r[e];return G(t,n,!0),{publicKey:t,secretKey:n}},r.sign.publicKeyLength=Tr,r.sign.secretKeyLength=Yr,r.sign.seedLength=kr,r.sign.signatureLength=Kr,r.hash=function(r){Q(r);var t=new Uint8Array(Lr);return P(t,r,r.length),t},r.hash.hashLength=Lr,r.verify=function(r,t){return Q(r,t),0===r.length||0===t.length?!1:r.length!==t.length?!1:0===n(r,0,t,0,r.length)?!0:!1},r.setPRNG=function(r){rr=r},function(){var t;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?t=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(t=window.msCrypto),t&&r.setPRNG(function(r,n){var e,o=new Uint8Array(n);for(t.getRandomValues(o),e=0;n>e;e++)r[e]=o[e];W(o)})):"undefined"!=typeof require&&(t=require("crypto"),t&&r.setPRNG(function(r,n){var e,o=t.randomBytes(n);for(e=0;n>e;e++)r[e]=o[e];W(o)}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.js deleted file mode 100644 index b8edbbee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.js +++ /dev/null @@ -1,1205 +0,0 @@ -(function(nacl) { -'use strict'; - -// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. -// Public domain. -// -// Implementation derived from TweetNaCl version 20140427. -// See for details: http://tweetnacl.cr.yp.to/ - -var u64 = function(h, l) { this.hi = h|0 >>> 0; this.lo = l|0 >>> 0; }; -var gf = function(init) { - var i, r = new Float64Array(16); - if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; - return r; -}; - -// Pluggable, initialized in high-level API below. -var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; - -var _0 = new Uint8Array(16); -var _9 = new Uint8Array(32); _9[0] = 9; - -var gf0 = gf(), - gf1 = gf([1]), - _121665 = gf([0xdb41, 1]), - D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), - D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), - X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), - Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), - I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); - -function L32(x, c) { return (x << c) | (x >>> (32 - c)); } - -function ld32(x, i) { - var u = x[i+3] & 0xff; - u = (u<<8)|(x[i+2] & 0xff); - u = (u<<8)|(x[i+1] & 0xff); - return (u<<8)|(x[i+0] & 0xff); -} - -function dl64(x, i) { - var h = (x[i] << 24) | (x[i+1] << 16) | (x[i+2] << 8) | x[i+3]; - var l = (x[i+4] << 24) | (x[i+5] << 16) | (x[i+6] << 8) | x[i+7]; - return new u64(h, l); -} - -function st32(x, j, u) { - var i; - for (i = 0; i < 4; i++) { x[j+i] = u & 255; u >>>= 8; } -} - -function ts64(x, i, u) { - x[i] = (u.hi >> 24) & 0xff; - x[i+1] = (u.hi >> 16) & 0xff; - x[i+2] = (u.hi >> 8) & 0xff; - x[i+3] = u.hi & 0xff; - x[i+4] = (u.lo >> 24) & 0xff; - x[i+5] = (u.lo >> 16) & 0xff; - x[i+6] = (u.lo >> 8) & 0xff; - x[i+7] = u.lo & 0xff; -} - -function vn(x, xi, y, yi, n) { - var i,d = 0; - for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; - return (1 & ((d - 1) >>> 8)) - 1; -} - -function crypto_verify_16(x, xi, y, yi) { - return vn(x,xi,y,yi,16); -} - -function crypto_verify_32(x, xi, y, yi) { - return vn(x,xi,y,yi,32); -} - -function core(out,inp,k,c,h) { - var w = new Uint32Array(16), x = new Uint32Array(16), - y = new Uint32Array(16), t = new Uint32Array(4); - var i, j, m; - - for (i = 0; i < 4; i++) { - x[5*i] = ld32(c, 4*i); - x[1+i] = ld32(k, 4*i); - x[6+i] = ld32(inp, 4*i); - x[11+i] = ld32(k, 16+4*i); - } - - for (i = 0; i < 16; i++) y[i] = x[i]; - - for (i = 0; i < 20; i++) { - for (j = 0; j < 4; j++) { - for (m = 0; m < 4; m++) t[m] = x[(5*j+4*m)%16]; - t[1] ^= L32((t[0]+t[3])|0, 7); - t[2] ^= L32((t[1]+t[0])|0, 9); - t[3] ^= L32((t[2]+t[1])|0,13); - t[0] ^= L32((t[3]+t[2])|0,18); - for (m = 0; m < 4; m++) w[4*j+(j+m)%4] = t[m]; - } - for (m = 0; m < 16; m++) x[m] = w[m]; - } - - if (h) { - for (i = 0; i < 16; i++) x[i] = (x[i] + y[i]) | 0; - for (i = 0; i < 4; i++) { - x[5*i] = (x[5*i] - ld32(c, 4*i)) | 0; - x[6+i] = (x[6+i] - ld32(inp, 4*i)) | 0; - } - for (i = 0; i < 4; i++) { - st32(out,4*i,x[5*i]); - st32(out,16+4*i,x[6+i]); - } - } else { - for (i = 0; i < 16; i++) st32(out, 4 * i, (x[i] + y[i]) | 0); - } -} - -function crypto_core_salsa20(out,inp,k,c) { - core(out,inp,k,c,false); - return 0; -} - -function crypto_core_hsalsa20(out,inp,k,c) { - core(out,inp,k,c,true); - return 0; -} - -var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); - // "expand 32-byte k" - -function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { - var z = new Uint8Array(16), x = new Uint8Array(64); - var u, i; - if (!b) return 0; - for (i = 0; i < 16; i++) z[i] = 0; - for (i = 0; i < 8; i++) z[i] = n[i]; - while (b >= 64) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < 64; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - u = 1; - for (i = 8; i < 16; i++) { - u = u + (z[i] & 0xff) | 0; - z[i] = u & 0xff; - u >>>= 8; - } - b -= 64; - cpos += 64; - if (m) mpos += 64; - } - if (b > 0) { - crypto_core_salsa20(x,z,k,sigma); - for (i = 0; i < b; i++) c[cpos+i] = (m?m[mpos+i]:0) ^ x[i]; - } - return 0; -} - -function crypto_stream_salsa20(c,cpos,d,n,k) { - return crypto_stream_salsa20_xor(c,cpos,null,0,d,n,k); -} - -function crypto_stream(c,cpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20(c,cpos,d,n.subarray(16),s); -} - -function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { - var s = new Uint8Array(32); - crypto_core_hsalsa20(s,n,k,sigma); - return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,n.subarray(16),s); -} - -function add1305(h, c) { - var j, u = 0; - for (j = 0; j < 17; j++) { - u = (u + ((h[j] + c[j]) | 0)) | 0; - h[j] = u & 255; - u >>>= 8; - } -} - -var minusp = new Uint32Array([ - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 -]); - -function crypto_onetimeauth(out, outpos, m, mpos, n, k) { - var s, i, j, u; - var x = new Uint32Array(17), r = new Uint32Array(17), - h = new Uint32Array(17), c = new Uint32Array(17), - g = new Uint32Array(17); - for (j = 0; j < 17; j++) r[j]=h[j]=0; - for (j = 0; j < 16; j++) r[j]=k[j]; - r[3]&=15; - r[4]&=252; - r[7]&=15; - r[8]&=252; - r[11]&=15; - r[12]&=252; - r[15]&=15; - - while (n > 0) { - for (j = 0; j < 17; j++) c[j] = 0; - for (j = 0; (j < 16) && (j < n); ++j) c[j] = m[mpos+j]; - c[j] = 1; - mpos += j; n -= j; - add1305(h,c); - for (i = 0; i < 17; i++) { - x[i] = 0; - for (j = 0; j < 17; j++) x[i] = (x[i] + (h[j] * ((j <= i) ? r[i - j] : ((320 * r[i + 17 - j])|0))) | 0) | 0; - } - for (i = 0; i < 17; i++) h[i] = x[i]; - u = 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u & 3; - u = (5 * (u >>> 2)) | 0; - for (j = 0; j < 16; j++) { - u = (u + h[j]) | 0; - h[j] = u & 255; - u >>>= 8; - } - u = (u + h[16]) | 0; h[16] = u; - } - - for (j = 0; j < 17; j++) g[j] = h[j]; - add1305(h,minusp); - s = (-(h[16] >>> 7) | 0); - for (j = 0; j < 17; j++) h[j] ^= s & (g[j] ^ h[j]); - - for (j = 0; j < 16; j++) c[j] = k[j + 16]; - c[16] = 0; - add1305(h,c); - for (j = 0; j < 16; j++) out[outpos+j] = h[j]; - return 0; -} - -function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { - var x = new Uint8Array(16); - crypto_onetimeauth(x,0,m,mpos,n,k); - return crypto_verify_16(h,hpos,x,0); -} - -function crypto_secretbox(c,m,d,n,k) { - var i; - if (d < 32) return -1; - crypto_stream_xor(c,0,m,0,d,n,k); - crypto_onetimeauth(c, 16, c, 32, d - 32, c); - for (i = 0; i < 16; i++) c[i] = 0; - return 0; -} - -function crypto_secretbox_open(m,c,d,n,k) { - var i; - var x = new Uint8Array(32); - if (d < 32) return -1; - crypto_stream(x,0,32,n,k); - if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; - crypto_stream_xor(m,0,c,0,d,n,k); - for (i = 0; i < 32; i++) m[i] = 0; - return 0; -} - -function set25519(r, a) { - var i; - for (i = 0; i < 16; i++) r[i] = a[i]|0; -} - -function car25519(o) { - var c; - var i; - for (i = 0; i < 16; i++) { - o[i] += 65536; - c = Math.floor(o[i] / 65536); - o[(i+1)*(i<15?1:0)] += c - 1 + 37 * (c-1) * (i===15?1:0); - o[i] -= (c * 65536); - } -} - -function sel25519(p, q, b) { - var t, c = ~(b-1); - for (var i = 0; i < 16; i++) { - t = c & (p[i] ^ q[i]); - p[i] ^= t; - q[i] ^= t; - } -} - -function pack25519(o, n) { - var i, j, b; - var m = gf(), t = gf(); - for (i = 0; i < 16; i++) t[i] = n[i]; - car25519(t); - car25519(t); - car25519(t); - for (j = 0; j < 2; j++) { - m[0] = t[0] - 0xffed; - for (i = 1; i < 15; i++) { - m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); - m[i-1] &= 0xffff; - } - m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); - b = (m[15]>>16) & 1; - m[14] &= 0xffff; - sel25519(t, m, 1-b); - } - for (i = 0; i < 16; i++) { - o[2*i] = t[i] & 0xff; - o[2*i+1] = t[i]>>8; - } -} - -function neq25519(a, b) { - var c = new Uint8Array(32), d = new Uint8Array(32); - pack25519(c, a); - pack25519(d, b); - return crypto_verify_32(c, 0, d, 0); -} - -function par25519(a) { - var d = new Uint8Array(32); - pack25519(d, a); - return d[0] & 1; -} - -function unpack25519(o, n) { - var i; - for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); - o[15] &= 0x7fff; -} - -function A(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] + b[i])|0; -} - -function Z(o, a, b) { - var i; - for (i = 0; i < 16; i++) o[i] = (a[i] - b[i])|0; -} - -function M(o, a, b) { - var i, j, t = new Float64Array(31); - for (i = 0; i < 31; i++) t[i] = 0; - for (i = 0; i < 16; i++) { - for (j = 0; j < 16; j++) { - t[i+j] += a[i] * b[j]; - } - } - for (i = 0; i < 15; i++) { - t[i] += 38 * t[i+16]; - } - for (i = 0; i < 16; i++) o[i] = t[i]; - car25519(o); - car25519(o); -} - -function S(o, a) { - M(o, a, a); -} - -function inv25519(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 253; a >= 0; a--) { - S(c, c); - if(a !== 2 && a !== 4) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function pow2523(o, i) { - var c = gf(); - var a; - for (a = 0; a < 16; a++) c[a] = i[a]; - for (a = 250; a >= 0; a--) { - S(c, c); - if(a !== 1) M(c, c, i); - } - for (a = 0; a < 16; a++) o[a] = c[a]; -} - -function crypto_scalarmult(q, n, p) { - var z = new Uint8Array(32); - var x = new Float64Array(80), r, i; - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(); - for (i = 0; i < 31; i++) z[i] = n[i]; - z[31]=(n[31]&127)|64; - z[0]&=248; - unpack25519(x,p); - for (i = 0; i < 16; i++) { - b[i]=x[i]; - d[i]=a[i]=c[i]=0; - } - a[0]=d[0]=1; - for (i=254; i>=0; --i) { - r=(z[i>>>3]>>>(i&7))&1; - sel25519(a,b,r); - sel25519(c,d,r); - A(e,a,c); - Z(a,a,c); - A(c,b,d); - Z(b,b,d); - S(d,e); - S(f,a); - M(a,c,a); - M(c,b,e); - A(e,a,c); - Z(a,a,c); - S(b,a); - Z(c,d,f); - M(a,c,_121665); - A(a,a,d); - M(c,c,a); - M(a,d,f); - M(d,b,x); - S(b,e); - sel25519(a,b,r); - sel25519(c,d,r); - } - for (i = 0; i < 16; i++) { - x[i+16]=a[i]; - x[i+32]=c[i]; - x[i+48]=b[i]; - x[i+64]=d[i]; - } - var x32 = x.subarray(32); - var x16 = x.subarray(16); - inv25519(x32,x32); - M(x16,x16,x32); - pack25519(q,x16); - return 0; -} - -function crypto_scalarmult_base(q, n) { - return crypto_scalarmult(q, n, _9); -} - -function crypto_box_keypair(y, x) { - randombytes(x, 32); - return crypto_scalarmult_base(y, x); -} - -function crypto_box_beforenm(k, y, x) { - var s = new Uint8Array(32); - crypto_scalarmult(s, x, y); - return crypto_core_hsalsa20(k, _0, s, sigma); -} - -var crypto_box_afternm = crypto_secretbox; -var crypto_box_open_afternm = crypto_secretbox_open; - -function crypto_box(c, m, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_afternm(c, m, d, n, k); -} - -function crypto_box_open(m, c, d, n, y, x) { - var k = new Uint8Array(32); - crypto_box_beforenm(k, y, x); - return crypto_box_open_afternm(m, c, d, n, k); -} - -function add64() { - var a = 0, b = 0, c = 0, d = 0, m16 = 65535, l, h, i; - for (i = 0; i < arguments.length; i++) { - l = arguments[i].lo; - h = arguments[i].hi; - a += (l & m16); b += (l >>> 16); - c += (h & m16); d += (h >>> 16); - } - - b += (a >>> 16); - c += (b >>> 16); - d += (c >>> 16); - - return new u64((c & m16) | (d << 16), (a & m16) | (b << 16)); -} - -function shr64(x, c) { - return new u64((x.hi >>> c), (x.lo >>> c) | (x.hi << (32 - c))); -} - -function xor64() { - var l = 0, h = 0, i; - for (i = 0; i < arguments.length; i++) { - l ^= arguments[i].lo; - h ^= arguments[i].hi; - } - return new u64(h, l); -} - -function R(x, c) { - var h, l, c1 = 32 - c; - if (c < 32) { - h = (x.hi >>> c) | (x.lo << c1); - l = (x.lo >>> c) | (x.hi << c1); - } else if (c < 64) { - h = (x.lo >>> c) | (x.hi << c1); - l = (x.hi >>> c) | (x.lo << c1); - } - return new u64(h, l); -} - -function Ch(x, y, z) { - var h = (x.hi & y.hi) ^ (~x.hi & z.hi), - l = (x.lo & y.lo) ^ (~x.lo & z.lo); - return new u64(h, l); -} - -function Maj(x, y, z) { - var h = (x.hi & y.hi) ^ (x.hi & z.hi) ^ (y.hi & z.hi), - l = (x.lo & y.lo) ^ (x.lo & z.lo) ^ (y.lo & z.lo); - return new u64(h, l); -} - -function Sigma0(x) { return xor64(R(x,28), R(x,34), R(x,39)); } -function Sigma1(x) { return xor64(R(x,14), R(x,18), R(x,41)); } -function sigma0(x) { return xor64(R(x, 1), R(x, 8), shr64(x,7)); } -function sigma1(x) { return xor64(R(x,19), R(x,61), shr64(x,6)); } - -var K = [ - new u64(0x428a2f98, 0xd728ae22), new u64(0x71374491, 0x23ef65cd), - new u64(0xb5c0fbcf, 0xec4d3b2f), new u64(0xe9b5dba5, 0x8189dbbc), - new u64(0x3956c25b, 0xf348b538), new u64(0x59f111f1, 0xb605d019), - new u64(0x923f82a4, 0xaf194f9b), new u64(0xab1c5ed5, 0xda6d8118), - new u64(0xd807aa98, 0xa3030242), new u64(0x12835b01, 0x45706fbe), - new u64(0x243185be, 0x4ee4b28c), new u64(0x550c7dc3, 0xd5ffb4e2), - new u64(0x72be5d74, 0xf27b896f), new u64(0x80deb1fe, 0x3b1696b1), - new u64(0x9bdc06a7, 0x25c71235), new u64(0xc19bf174, 0xcf692694), - new u64(0xe49b69c1, 0x9ef14ad2), new u64(0xefbe4786, 0x384f25e3), - new u64(0x0fc19dc6, 0x8b8cd5b5), new u64(0x240ca1cc, 0x77ac9c65), - new u64(0x2de92c6f, 0x592b0275), new u64(0x4a7484aa, 0x6ea6e483), - new u64(0x5cb0a9dc, 0xbd41fbd4), new u64(0x76f988da, 0x831153b5), - new u64(0x983e5152, 0xee66dfab), new u64(0xa831c66d, 0x2db43210), - new u64(0xb00327c8, 0x98fb213f), new u64(0xbf597fc7, 0xbeef0ee4), - new u64(0xc6e00bf3, 0x3da88fc2), new u64(0xd5a79147, 0x930aa725), - new u64(0x06ca6351, 0xe003826f), new u64(0x14292967, 0x0a0e6e70), - new u64(0x27b70a85, 0x46d22ffc), new u64(0x2e1b2138, 0x5c26c926), - new u64(0x4d2c6dfc, 0x5ac42aed), new u64(0x53380d13, 0x9d95b3df), - new u64(0x650a7354, 0x8baf63de), new u64(0x766a0abb, 0x3c77b2a8), - new u64(0x81c2c92e, 0x47edaee6), new u64(0x92722c85, 0x1482353b), - new u64(0xa2bfe8a1, 0x4cf10364), new u64(0xa81a664b, 0xbc423001), - new u64(0xc24b8b70, 0xd0f89791), new u64(0xc76c51a3, 0x0654be30), - new u64(0xd192e819, 0xd6ef5218), new u64(0xd6990624, 0x5565a910), - new u64(0xf40e3585, 0x5771202a), new u64(0x106aa070, 0x32bbd1b8), - new u64(0x19a4c116, 0xb8d2d0c8), new u64(0x1e376c08, 0x5141ab53), - new u64(0x2748774c, 0xdf8eeb99), new u64(0x34b0bcb5, 0xe19b48a8), - new u64(0x391c0cb3, 0xc5c95a63), new u64(0x4ed8aa4a, 0xe3418acb), - new u64(0x5b9cca4f, 0x7763e373), new u64(0x682e6ff3, 0xd6b2b8a3), - new u64(0x748f82ee, 0x5defb2fc), new u64(0x78a5636f, 0x43172f60), - new u64(0x84c87814, 0xa1f0ab72), new u64(0x8cc70208, 0x1a6439ec), - new u64(0x90befffa, 0x23631e28), new u64(0xa4506ceb, 0xde82bde9), - new u64(0xbef9a3f7, 0xb2c67915), new u64(0xc67178f2, 0xe372532b), - new u64(0xca273ece, 0xea26619c), new u64(0xd186b8c7, 0x21c0c207), - new u64(0xeada7dd6, 0xcde0eb1e), new u64(0xf57d4f7f, 0xee6ed178), - new u64(0x06f067aa, 0x72176fba), new u64(0x0a637dc5, 0xa2c898a6), - new u64(0x113f9804, 0xbef90dae), new u64(0x1b710b35, 0x131c471b), - new u64(0x28db77f5, 0x23047d84), new u64(0x32caab7b, 0x40c72493), - new u64(0x3c9ebe0a, 0x15c9bebc), new u64(0x431d67c4, 0x9c100d4c), - new u64(0x4cc5d4be, 0xcb3e42b6), new u64(0x597f299c, 0xfc657e2a), - new u64(0x5fcb6fab, 0x3ad6faec), new u64(0x6c44198c, 0x4a475817) -]; - -function crypto_hashblocks(x, m, n) { - var z = [], b = [], a = [], w = [], t, i, j; - - for (i = 0; i < 8; i++) z[i] = a[i] = dl64(x, 8*i); - - var pos = 0; - while (n >= 128) { - for (i = 0; i < 16; i++) w[i] = dl64(m, 8*i+pos); - for (i = 0; i < 80; i++) { - for (j = 0; j < 8; j++) b[j] = a[j]; - t = add64(a[7], Sigma1(a[4]), Ch(a[4], a[5], a[6]), K[i], w[i%16]); - b[7] = add64(t, Sigma0(a[0]), Maj(a[0], a[1], a[2])); - b[3] = add64(b[3], t); - for (j = 0; j < 8; j++) a[(j+1)%8] = b[j]; - if (i%16 === 15) { - for (j = 0; j < 16; j++) { - w[j] = add64(w[j], w[(j+9)%16], sigma0(w[(j+1)%16]), sigma1(w[(j+14)%16])); - } - } - } - - for (i = 0; i < 8; i++) { - a[i] = add64(a[i], z[i]); - z[i] = a[i]; - } - - pos += 128; - n -= 128; - } - - for (i = 0; i < 8; i++) ts64(x, 8*i, z[i]); - return n; -} - -var iv = new Uint8Array([ - 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, - 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, - 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, - 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, - 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, - 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, - 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, - 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 -]); - -function crypto_hash(out, m, n) { - var h = new Uint8Array(64), x = new Uint8Array(256); - var i, b = n; - - for (i = 0; i < 64; i++) h[i] = iv[i]; - - crypto_hashblocks(h, m, n); - n %= 128; - - for (i = 0; i < 256; i++) x[i] = 0; - for (i = 0; i < n; i++) x[i] = m[b-n+i]; - x[n] = 128; - - n = 256-128*(n<112?1:0); - x[n-9] = 0; - ts64(x, n-8, new u64((b / 0x20000000) | 0, b << 3)); - crypto_hashblocks(h, x, n); - - for (i = 0; i < 64; i++) out[i] = h[i]; - - return 0; -} - -function add(p, q) { - var a = gf(), b = gf(), c = gf(), - d = gf(), e = gf(), f = gf(), - g = gf(), h = gf(), t = gf(); - - Z(a, p[1], p[0]); - Z(t, q[1], q[0]); - M(a, a, t); - A(b, p[0], p[1]); - A(t, q[0], q[1]); - M(b, b, t); - M(c, p[3], q[3]); - M(c, c, D2); - M(d, p[2], q[2]); - A(d, d, d); - Z(e, b, a); - Z(f, d, c); - A(g, d, c); - A(h, b, a); - - M(p[0], e, f); - M(p[1], h, g); - M(p[2], g, f); - M(p[3], e, h); -} - -function cswap(p, q, b) { - var i; - for (i = 0; i < 4; i++) { - sel25519(p[i], q[i], b); - } -} - -function pack(r, p) { - var tx = gf(), ty = gf(), zi = gf(); - inv25519(zi, p[2]); - M(tx, p[0], zi); - M(ty, p[1], zi); - pack25519(r, ty); - r[31] ^= par25519(tx) << 7; -} - -function scalarmult(p, q, s) { - var b, i; - set25519(p[0], gf0); - set25519(p[1], gf1); - set25519(p[2], gf1); - set25519(p[3], gf0); - for (i = 255; i >= 0; --i) { - b = (s[(i/8)|0] >> (i&7)) & 1; - cswap(p, q, b); - add(q, p); - add(p, p); - cswap(p, q, b); - } -} - -function scalarbase(p, s) { - var q = [gf(), gf(), gf(), gf()]; - set25519(q[0], X); - set25519(q[1], Y); - set25519(q[2], gf1); - M(q[3], X, Y); - scalarmult(p, q, s); -} - -function crypto_sign_keypair(pk, sk, seeded) { - var d = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()]; - var i; - - if (!seeded) randombytes(sk, 32); - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - scalarbase(p, d); - pack(pk, p); - - for (i = 0; i < 32; i++) sk[i+32] = pk[i]; - return 0; -} - -var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); - -function modL(r, x) { - var carry, i, j, k; - for (i = 63; i >= 32; --i) { - carry = 0; - for (j = i - 32, k = i - 12; j < k; ++j) { - x[j] += carry - 16 * x[i] * L[j - (i - 32)]; - carry = (x[j] + 128) >> 8; - x[j] -= carry * 256; - } - x[j] += carry; - x[i] = 0; - } - carry = 0; - for (j = 0; j < 32; j++) { - x[j] += carry - (x[31] >> 4) * L[j]; - carry = x[j] >> 8; - x[j] &= 255; - } - for (j = 0; j < 32; j++) x[j] -= carry * L[j]; - for (i = 0; i < 32; i++) { - x[i+1] += x[i] >> 8; - r[i] = x[i] & 255; - } -} - -function reduce(r) { - var x = new Float64Array(64), i; - for (i = 0; i < 64; i++) x[i] = r[i]; - for (i = 0; i < 64; i++) r[i] = 0; - modL(r, x); -} - -// Note: difference from C - smlen returned, not passed as argument. -function crypto_sign(sm, m, n, sk) { - var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); - var i, j, x = new Float64Array(64); - var p = [gf(), gf(), gf(), gf()]; - - crypto_hash(d, sk, 32); - d[0] &= 248; - d[31] &= 127; - d[31] |= 64; - - var smlen = n + 64; - for (i = 0; i < n; i++) sm[64 + i] = m[i]; - for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; - - crypto_hash(r, sm.subarray(32), n+32); - reduce(r); - scalarbase(p, r); - pack(sm, p); - - for (i = 32; i < 64; i++) sm[i] = sk[i]; - crypto_hash(h, sm, n + 64); - reduce(h); - - for (i = 0; i < 64; i++) x[i] = 0; - for (i = 0; i < 32; i++) x[i] = r[i]; - for (i = 0; i < 32; i++) { - for (j = 0; j < 32; j++) { - x[i+j] += h[i] * d[j]; - } - } - - modL(sm.subarray(32), x); - return smlen; -} - -function unpackneg(r, p) { - var t = gf(), chk = gf(), num = gf(), - den = gf(), den2 = gf(), den4 = gf(), - den6 = gf(); - - set25519(r[2], gf1); - unpack25519(r[1], p); - S(num, r[1]); - M(den, num, D); - Z(num, num, r[2]); - A(den, r[2], den); - - S(den2, den); - S(den4, den2); - M(den6, den4, den2); - M(t, den6, num); - M(t, t, den); - - pow2523(t, t); - M(t, t, num); - M(t, t, den); - M(t, t, den); - M(r[0], t, den); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) M(r[0], r[0], I); - - S(chk, r[0]); - M(chk, chk, den); - if (neq25519(chk, num)) return -1; - - if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); - - M(r[3], r[0], r[1]); - return 0; -} - -function crypto_sign_open(m, sm, n, pk) { - var i, mlen; - var t = new Uint8Array(32), h = new Uint8Array(64); - var p = [gf(), gf(), gf(), gf()], - q = [gf(), gf(), gf(), gf()]; - - mlen = -1; - if (n < 64) return -1; - - if (unpackneg(q, pk)) return -1; - - for (i = 0; i < n; i++) m[i] = sm[i]; - for (i = 0; i < 32; i++) m[i+32] = pk[i]; - crypto_hash(h, m, n); - reduce(h); - scalarmult(p, q, h); - - scalarbase(q, sm.subarray(32)); - add(p, q); - pack(t, p); - - n -= 64; - if (crypto_verify_32(sm, 0, t, 0)) { - for (i = 0; i < n; i++) m[i] = 0; - return -1; - } - - for (i = 0; i < n; i++) m[i] = sm[i + 64]; - mlen = n; - return mlen; -} - -var crypto_secretbox_KEYBYTES = 32, - crypto_secretbox_NONCEBYTES = 24, - crypto_secretbox_ZEROBYTES = 32, - crypto_secretbox_BOXZEROBYTES = 16, - crypto_scalarmult_BYTES = 32, - crypto_scalarmult_SCALARBYTES = 32, - crypto_box_PUBLICKEYBYTES = 32, - crypto_box_SECRETKEYBYTES = 32, - crypto_box_BEFORENMBYTES = 32, - crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, - crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, - crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, - crypto_sign_BYTES = 64, - crypto_sign_PUBLICKEYBYTES = 32, - crypto_sign_SECRETKEYBYTES = 64, - crypto_sign_SEEDBYTES = 32, - crypto_hash_BYTES = 64; - -nacl.lowlevel = { - crypto_core_hsalsa20: crypto_core_hsalsa20, - crypto_stream_xor: crypto_stream_xor, - crypto_stream: crypto_stream, - crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, - crypto_stream_salsa20: crypto_stream_salsa20, - crypto_onetimeauth: crypto_onetimeauth, - crypto_onetimeauth_verify: crypto_onetimeauth_verify, - crypto_verify_16: crypto_verify_16, - crypto_verify_32: crypto_verify_32, - crypto_secretbox: crypto_secretbox, - crypto_secretbox_open: crypto_secretbox_open, - crypto_scalarmult: crypto_scalarmult, - crypto_scalarmult_base: crypto_scalarmult_base, - crypto_box_beforenm: crypto_box_beforenm, - crypto_box_afternm: crypto_box_afternm, - crypto_box: crypto_box, - crypto_box_open: crypto_box_open, - crypto_box_keypair: crypto_box_keypair, - crypto_hash: crypto_hash, - crypto_sign: crypto_sign, - crypto_sign_keypair: crypto_sign_keypair, - crypto_sign_open: crypto_sign_open, - - crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, - crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, - crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, - crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, - crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, - crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, - crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, - crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, - crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, - crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, - crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, - crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, - crypto_sign_BYTES: crypto_sign_BYTES, - crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, - crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, - crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, - crypto_hash_BYTES: crypto_hash_BYTES -}; - -/* High-level API */ - -function checkLengths(k, n) { - if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); - if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); -} - -function checkBoxLengths(pk, sk) { - if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); - if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); -} - -function checkArrayTypes() { - var t, i; - for (i = 0; i < arguments.length; i++) { - if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') - throw new TypeError('unexpected type ' + t + ', use Uint8Array'); - } -} - -function cleanup(arr) { - for (var i = 0; i < arr.length; i++) arr[i] = 0; -} - -nacl.util = {}; - -nacl.util.decodeUTF8 = function(s) { - var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; -}; - -nacl.util.encodeUTF8 = function(arr) { - var i, s = []; - for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i])); - return decodeURIComponent(escape(s.join(''))); -}; - -nacl.util.encodeBase64 = function(arr) { - if (typeof btoa === 'undefined') { - return (new Buffer(arr)).toString('base64'); - } else { - var i, s = [], len = arr.length; - for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i])); - return btoa(s.join('')); - } -}; - -nacl.util.decodeBase64 = function(s) { - if (typeof atob === 'undefined') { - return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0)); - } else { - var i, d = atob(s), b = new Uint8Array(d.length); - for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i); - return b; - } -}; - -nacl.randomBytes = function(n) { - var b = new Uint8Array(n); - randombytes(b, n); - return b; -}; - -nacl.secretbox = function(msg, nonce, key) { - checkArrayTypes(msg, nonce, key); - checkLengths(key, nonce); - var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); - var c = new Uint8Array(m.length); - for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; - crypto_secretbox(c, m, m.length, nonce, key); - return c.subarray(crypto_secretbox_BOXZEROBYTES); -}; - -nacl.secretbox.open = function(box, nonce, key) { - checkArrayTypes(box, nonce, key); - checkLengths(key, nonce); - var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); - var m = new Uint8Array(c.length); - for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; - if (c.length < 32) return false; - if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; - return m.subarray(crypto_secretbox_ZEROBYTES); -}; - -nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; -nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; -nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; - -nacl.scalarMult = function(n, p) { - checkArrayTypes(n, p); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult(q, n, p); - return q; -}; - -nacl.scalarMult.base = function(n) { - checkArrayTypes(n); - if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); - var q = new Uint8Array(crypto_scalarmult_BYTES); - crypto_scalarmult_base(q, n); - return q; -}; - -nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; -nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; - -nacl.box = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox(msg, nonce, k); -}; - -nacl.box.before = function(publicKey, secretKey) { - checkArrayTypes(publicKey, secretKey); - checkBoxLengths(publicKey, secretKey); - var k = new Uint8Array(crypto_box_BEFORENMBYTES); - crypto_box_beforenm(k, publicKey, secretKey); - return k; -}; - -nacl.box.after = nacl.secretbox; - -nacl.box.open = function(msg, nonce, publicKey, secretKey) { - var k = nacl.box.before(publicKey, secretKey); - return nacl.secretbox.open(msg, nonce, k); -}; - -nacl.box.open.after = nacl.secretbox.open; - -nacl.box.keyPair = function() { - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); - crypto_box_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.box.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_box_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); - crypto_scalarmult_base(pk, secretKey); - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; -nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; -nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; -nacl.box.nonceLength = crypto_box_NONCEBYTES; -nacl.box.overheadLength = nacl.secretbox.overheadLength; - -nacl.sign = function(msg, secretKey) { - checkArrayTypes(msg, secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); - crypto_sign(signedMsg, msg, msg.length, secretKey); - return signedMsg; -}; - -nacl.sign.open = function(signedMsg, publicKey) { - if (arguments.length !== 2) - throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); - checkArrayTypes(signedMsg, publicKey); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var tmp = new Uint8Array(signedMsg.length); - var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); - if (mlen < 0) return null; - var m = new Uint8Array(mlen); - for (var i = 0; i < m.length; i++) m[i] = tmp[i]; - return m; -}; - -nacl.sign.detached = function(msg, secretKey) { - var signedMsg = nacl.sign(msg, secretKey); - var sig = new Uint8Array(crypto_sign_BYTES); - for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; - return sig; -}; - -nacl.sign.detached.verify = function(msg, sig, publicKey) { - checkArrayTypes(msg, sig, publicKey); - if (sig.length !== crypto_sign_BYTES) - throw new Error('bad signature size'); - if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) - throw new Error('bad public key size'); - var sm = new Uint8Array(crypto_sign_BYTES + msg.length); - var m = new Uint8Array(crypto_sign_BYTES + msg.length); - var i; - for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; - for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; - return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); -}; - -nacl.sign.keyPair = function() { - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - crypto_sign_keypair(pk, sk); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.keyPair.fromSecretKey = function(secretKey) { - checkArrayTypes(secretKey); - if (secretKey.length !== crypto_sign_SECRETKEYBYTES) - throw new Error('bad secret key size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; - return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; -}; - -nacl.sign.keyPair.fromSeed = function(seed) { - checkArrayTypes(seed); - if (seed.length !== crypto_sign_SEEDBYTES) - throw new Error('bad seed size'); - var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); - var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); - for (var i = 0; i < 32; i++) sk[i] = seed[i]; - crypto_sign_keypair(pk, sk, true); - return {publicKey: pk, secretKey: sk}; -}; - -nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; -nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; -nacl.sign.seedLength = crypto_sign_SEEDBYTES; -nacl.sign.signatureLength = crypto_sign_BYTES; - -nacl.hash = function(msg) { - checkArrayTypes(msg); - var h = new Uint8Array(crypto_hash_BYTES); - crypto_hash(h, msg, msg.length); - return h; -}; - -nacl.hash.hashLength = crypto_hash_BYTES; - -nacl.verify = function(x, y) { - checkArrayTypes(x, y); - // Zero length arguments are considered not equal. - if (x.length === 0 || y.length === 0) return false; - if (x.length !== y.length) return false; - return (vn(x, 0, y, 0, x.length) === 0) ? true : false; -}; - -nacl.setPRNG = function(fn) { - randombytes = fn; -}; - -(function() { - // Initialize PRNG if environment provides CSPRNG. - // If not, methods calling randombytes will throw. - var crypto; - if (typeof window !== 'undefined') { - // Browser. - if (window.crypto && window.crypto.getRandomValues) { - crypto = window.crypto; // Standard - } else if (window.msCrypto && window.msCrypto.getRandomValues) { - crypto = window.msCrypto; // Internet Explorer 11+ - } - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = new Uint8Array(n); - crypto.getRandomValues(v); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } else if (typeof require !== 'undefined') { - // Node.js. - crypto = require('crypto'); - if (crypto) { - nacl.setPRNG(function(x, n) { - var i, v = crypto.randomBytes(n); - for (i = 0; i < n; i++) x[i] = v[i]; - cleanup(v); - }); - } - } -})(); - -})(typeof module !== 'undefined' && module.exports ? module.exports : (window.nacl = window.nacl || {})); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.min.js deleted file mode 100644 index 95d86950..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/nacl.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(r){"use strict";function n(r,n){return r<>>32-n}function e(r,n){var e=255&r[n+3];return e=e<<8|255&r[n+2],e=e<<8|255&r[n+1],e<<8|255&r[n+0]}function t(r,n){var e=r[n]<<24|r[n+1]<<16|r[n+2]<<8|r[n+3],t=r[n+4]<<24|r[n+5]<<16|r[n+6]<<8|r[n+7];return new lr(e,t)}function o(r,n,e){var t;for(t=0;4>t;t++)r[n+t]=255&e,e>>>=8}function i(r,n,e){r[n]=e.hi>>24&255,r[n+1]=e.hi>>16&255,r[n+2]=e.hi>>8&255,r[n+3]=255&e.hi,r[n+4]=e.lo>>24&255,r[n+5]=e.lo>>16&255,r[n+6]=e.lo>>8&255,r[n+7]=255&e.lo}function a(r,n,e,t,o){var i,a=0;for(i=0;o>i;i++)a|=r[n+i]^e[t+i];return(1&a-1>>>8)-1}function f(r,n,e,t){return a(r,n,e,t,16)}function u(r,n,e,t){return a(r,n,e,t,32)}function c(r,t,i,a,f){var u,c,w,y=new Uint32Array(16),s=new Uint32Array(16),l=new Uint32Array(16),h=new Uint32Array(4);for(u=0;4>u;u++)s[5*u]=e(a,4*u),s[1+u]=e(i,4*u),s[6+u]=e(t,4*u),s[11+u]=e(i,16+4*u);for(u=0;16>u;u++)l[u]=s[u];for(u=0;20>u;u++){for(c=0;4>c;c++){for(w=0;4>w;w++)h[w]=s[(5*c+4*w)%16];for(h[1]^=n(h[0]+h[3]|0,7),h[2]^=n(h[1]+h[0]|0,9),h[3]^=n(h[2]+h[1]|0,13),h[0]^=n(h[3]+h[2]|0,18),w=0;4>w;w++)y[4*c+(c+w)%4]=h[w]}for(w=0;16>w;w++)s[w]=y[w]}if(f){for(u=0;16>u;u++)s[u]=s[u]+l[u]|0;for(u=0;4>u;u++)s[5*u]=s[5*u]-e(a,4*u)|0,s[6+u]=s[6+u]-e(t,4*u)|0;for(u=0;4>u;u++)o(r,4*u,s[5*u]),o(r,16+4*u,s[6+u])}else for(u=0;16>u;u++)o(r,4*u,s[u]+l[u]|0)}function w(r,n,e,t){return c(r,n,e,t,!1),0}function y(r,n,e,t){return c(r,n,e,t,!0),0}function s(r,n,e,t,o,i,a){var f,u,c=new Uint8Array(16),y=new Uint8Array(64);if(!o)return 0;for(u=0;16>u;u++)c[u]=0;for(u=0;8>u;u++)c[u]=i[u];for(;o>=64;){for(w(y,c,a,Br),u=0;64>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];for(f=1,u=8;16>u;u++)f=f+(255&c[u])|0,c[u]=255&f,f>>>=8;o-=64,n+=64,e&&(t+=64)}if(o>0)for(w(y,c,a,Br),u=0;o>u;u++)r[n+u]=(e?e[t+u]:0)^y[u];return 0}function l(r,n,e,t,o){return s(r,n,null,0,e,t,o)}function h(r,n,e,t,o){var i=new Uint8Array(32);return y(i,t,o,Br),l(r,n,e,t.subarray(16),i)}function g(r,n,e,t,o,i,a){var f=new Uint8Array(32);return y(f,i,a,Br),s(r,n,e,t,o,i.subarray(16),f)}function p(r,n){var e,t=0;for(e=0;17>e;e++)t=t+(r[e]+n[e]|0)|0,r[e]=255&t,t>>>=8}function v(r,n,e,t,o,i){var a,f,u,c,w=new Uint32Array(17),y=new Uint32Array(17),s=new Uint32Array(17),l=new Uint32Array(17),h=new Uint32Array(17);for(u=0;17>u;u++)y[u]=s[u]=0;for(u=0;16>u;u++)y[u]=i[u];for(y[3]&=15,y[4]&=252,y[7]&=15,y[8]&=252,y[11]&=15,y[12]&=252,y[15]&=15;o>0;){for(u=0;17>u;u++)l[u]=0;for(u=0;16>u&&o>u;++u)l[u]=e[t+u];for(l[u]=1,t+=u,o-=u,p(s,l),f=0;17>f;f++)for(w[f]=0,u=0;17>u;u++)w[f]=w[f]+s[u]*(f>=u?y[f-u]:320*y[f+17-u]|0)|0|0;for(f=0;17>f;f++)s[f]=w[f];for(c=0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;for(c=c+s[16]|0,s[16]=3&c,c=5*(c>>>2)|0,u=0;16>u;u++)c=c+s[u]|0,s[u]=255&c,c>>>=8;c=c+s[16]|0,s[16]=c}for(u=0;17>u;u++)h[u]=s[u];for(p(s,Sr),a=0|-(s[16]>>>7),u=0;17>u;u++)s[u]^=a&(h[u]^s[u]);for(u=0;16>u;u++)l[u]=i[u+16];for(l[16]=0,p(s,l),u=0;16>u;u++)r[n+u]=s[u];return 0}function b(r,n,e,t,o,i){var a=new Uint8Array(16);return v(a,0,e,t,o,i),f(r,n,a,0)}function A(r,n,e,t,o){var i;if(32>e)return-1;for(g(r,0,n,0,e,t,o),v(r,16,r,32,e-32,r),i=0;16>i;i++)r[i]=0;return 0}function U(r,n,e,t,o){var i,a=new Uint8Array(32);if(32>e)return-1;if(h(a,0,32,t,o),0!==b(n,16,n,32,e-32,a))return-1;for(g(r,0,n,0,e,t,o),i=0;32>i;i++)r[i]=0;return 0}function _(r,n){var e;for(e=0;16>e;e++)r[e]=0|n[e]}function d(r){var n,e;for(e=0;16>e;e++)r[e]+=65536,n=Math.floor(r[e]/65536),r[(e+1)*(15>e?1:0)]+=n-1+37*(n-1)*(15===e?1:0),r[e]-=65536*n}function E(r,n,e){for(var t,o=~(e-1),i=0;16>i;i++)t=o&(r[i]^n[i]),r[i]^=t,n[i]^=t}function x(r,n){var e,t,o,i=hr(),a=hr();for(e=0;16>e;e++)a[e]=n[e];for(d(a),d(a),d(a),t=0;2>t;t++){for(i[0]=a[0]-65517,e=1;15>e;e++)i[e]=a[e]-65535-(i[e-1]>>16&1),i[e-1]&=65535;i[15]=a[15]-32767-(i[14]>>16&1),o=i[15]>>16&1,i[14]&=65535,E(a,i,1-o)}for(e=0;16>e;e++)r[2*e]=255&a[e],r[2*e+1]=a[e]>>8}function m(r,n){var e=new Uint8Array(32),t=new Uint8Array(32);return x(e,r),x(t,n),u(e,0,t,0)}function B(r){var n=new Uint8Array(32);return x(n,r),1&n[0]}function S(r,n){var e;for(e=0;16>e;e++)r[e]=n[2*e]+(n[2*e+1]<<8);r[15]&=32767}function K(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]+e[t]|0}function T(r,n,e){var t;for(t=0;16>t;t++)r[t]=n[t]-e[t]|0}function Y(r,n,e){var t,o,i=new Float64Array(31);for(t=0;31>t;t++)i[t]=0;for(t=0;16>t;t++)for(o=0;16>o;o++)i[t+o]+=n[t]*e[o];for(t=0;15>t;t++)i[t]+=38*i[t+16];for(t=0;16>t;t++)r[t]=i[t];d(r),d(r)}function L(r,n){Y(r,n,n)}function C(r,n){var e,t=hr();for(e=0;16>e;e++)t[e]=n[e];for(e=253;e>=0;e--)L(t,t),2!==e&&4!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function R(r,n){var e,t=hr();for(e=0;16>e;e++)t[e]=n[e];for(e=250;e>=0;e--)L(t,t),1!==e&&Y(t,t,n);for(e=0;16>e;e++)r[e]=t[e]}function k(r,n,e){var t,o,i=new Uint8Array(32),a=new Float64Array(80),f=hr(),u=hr(),c=hr(),w=hr(),y=hr(),s=hr();for(o=0;31>o;o++)i[o]=n[o];for(i[31]=127&n[31]|64,i[0]&=248,S(a,e),o=0;16>o;o++)u[o]=a[o],w[o]=f[o]=c[o]=0;for(f[0]=w[0]=1,o=254;o>=0;--o)t=i[o>>>3]>>>(7&o)&1,E(f,u,t),E(c,w,t),K(y,f,c),T(f,f,c),K(c,u,w),T(u,u,w),L(w,y),L(s,f),Y(f,c,f),Y(c,u,y),K(y,f,c),T(f,f,c),L(u,f),T(c,w,s),Y(f,c,Ur),K(f,f,w),Y(c,c,f),Y(f,w,s),Y(w,u,a),L(u,y),E(f,u,t),E(c,w,t);for(o=0;16>o;o++)a[o+16]=f[o],a[o+32]=c[o],a[o+48]=u[o],a[o+64]=w[o];var l=a.subarray(32),h=a.subarray(16);return C(l,l),Y(h,h,l),x(r,h),0}function z(r,n){return k(r,n,vr)}function P(r,n){return gr(n,32),z(r,n)}function O(r,n,e){var t=new Uint8Array(32);return k(t,e,n),y(r,pr,t,Br)}function F(r,n,e,t,o,i){var a=new Uint8Array(32);return O(a,o,i),Kr(r,n,e,t,a)}function N(r,n,e,t,o,i){var a=new Uint8Array(32);return O(a,o,i),Tr(r,n,e,t,a)}function M(){var r,n,e,t=0,o=0,i=0,a=0,f=65535;for(e=0;e>>16,i+=n&f,a+=n>>>16;return o+=t>>>16,i+=o>>>16,a+=i>>>16,new lr(i&f|a<<16,t&f|o<<16)}function j(r,n){return new lr(r.hi>>>n,r.lo>>>n|r.hi<<32-n)}function G(){var r,n=0,e=0;for(r=0;rn?(e=r.hi>>>n|r.lo<>>n|r.hi<n&&(e=r.lo>>>n|r.hi<>>n|r.lo<a;a++)u[a]=w[a]=t(r,8*a);for(var s=0;e>=128;){for(a=0;16>a;a++)y[a]=t(n,8*a+s);for(a=0;80>a;a++){for(f=0;8>f;f++)c[f]=w[f];for(o=M(w[7],X(w[4]),Z(w[4],w[5],w[6]),Yr[a],y[a%16]),c[7]=M(o,q(w[0]),V(w[0],w[1],w[2])),c[3]=M(c[3],o),f=0;8>f;f++)w[(f+1)%8]=c[f];if(a%16===15)for(f=0;16>f;f++)y[f]=M(y[f],y[(f+9)%16],D(y[(f+1)%16]),H(y[(f+14)%16]))}for(a=0;8>a;a++)w[a]=M(w[a],u[a]),u[a]=w[a];s+=128,e-=128}for(a=0;8>a;a++)i(r,8*a,u[a]);return e}function Q(r,n,e){var t,o=new Uint8Array(64),a=new Uint8Array(256),f=e;for(t=0;64>t;t++)o[t]=Lr[t];for(J(o,n,e),e%=128,t=0;256>t;t++)a[t]=0;for(t=0;e>t;t++)a[t]=n[f-e+t];for(a[e]=128,e=256-128*(112>e?1:0),a[e-9]=0,i(a,e-8,new lr(f/536870912|0,f<<3)),J(o,a,e),t=0;64>t;t++)r[t]=o[t];return 0}function W(r,n){var e=hr(),t=hr(),o=hr(),i=hr(),a=hr(),f=hr(),u=hr(),c=hr(),w=hr();T(e,r[1],r[0]),T(w,n[1],n[0]),Y(e,e,w),K(t,r[0],r[1]),K(w,n[0],n[1]),Y(t,t,w),Y(o,r[3],n[3]),Y(o,o,dr),Y(i,r[2],n[2]),K(i,i,i),T(a,t,e),T(f,i,o),K(u,i,o),K(c,t,e),Y(r[0],a,f),Y(r[1],c,u),Y(r[2],u,f),Y(r[3],a,c)}function $(r,n,e){var t;for(t=0;4>t;t++)E(r[t],n[t],e)}function rr(r,n){var e=hr(),t=hr(),o=hr();C(o,n[2]),Y(e,n[0],o),Y(t,n[1],o),x(r,t),r[31]^=B(e)<<7}function nr(r,n,e){var t,o;for(_(r[0],br),_(r[1],Ar),_(r[2],Ar),_(r[3],br),o=255;o>=0;--o)t=e[o/8|0]>>(7&o)&1,$(r,n,t),W(n,r),W(r,r),$(r,n,t)}function er(r,n){var e=[hr(),hr(),hr(),hr()];_(e[0],Er),_(e[1],xr),_(e[2],Ar),Y(e[3],Er,xr),nr(r,e,n)}function tr(r,n,e){var t,o=new Uint8Array(64),i=[hr(),hr(),hr(),hr()];for(e||gr(n,32),Q(o,n,32),o[0]&=248,o[31]&=127,o[31]|=64,er(i,o),rr(r,i),t=0;32>t;t++)n[t+32]=r[t];return 0}function or(r,n){var e,t,o,i;for(t=63;t>=32;--t){for(e=0,o=t-32,i=t-12;i>o;++o)n[o]+=e-16*n[t]*Cr[o-(t-32)],e=n[o]+128>>8,n[o]-=256*e;n[o]+=e,n[t]=0}for(e=0,o=0;32>o;o++)n[o]+=e-(n[31]>>4)*Cr[o],e=n[o]>>8,n[o]&=255;for(o=0;32>o;o++)n[o]-=e*Cr[o];for(t=0;32>t;t++)n[t+1]+=n[t]>>8,r[t]=255&n[t]}function ir(r){var n,e=new Float64Array(64);for(n=0;64>n;n++)e[n]=r[n];for(n=0;64>n;n++)r[n]=0;or(r,e)}function ar(r,n,e,t){var o,i,a=new Uint8Array(64),f=new Uint8Array(64),u=new Uint8Array(64),c=new Float64Array(64),w=[hr(),hr(),hr(),hr()];Q(a,t,32),a[0]&=248,a[31]&=127,a[31]|=64;var y=e+64;for(o=0;e>o;o++)r[64+o]=n[o];for(o=0;32>o;o++)r[32+o]=a[32+o];for(Q(u,r.subarray(32),e+32),ir(u),er(w,u),rr(r,w),o=32;64>o;o++)r[o]=t[o];for(Q(f,r,e+64),ir(f),o=0;64>o;o++)c[o]=0;for(o=0;32>o;o++)c[o]=u[o];for(o=0;32>o;o++)for(i=0;32>i;i++)c[o+i]+=f[o]*a[i];return or(r.subarray(32),c),y}function fr(r,n){var e=hr(),t=hr(),o=hr(),i=hr(),a=hr(),f=hr(),u=hr();return _(r[2],Ar),S(r[1],n),L(o,r[1]),Y(i,o,_r),T(o,o,r[2]),K(i,r[2],i),L(a,i),L(f,a),Y(u,f,a),Y(e,u,o),Y(e,e,i),R(e,e),Y(e,e,o),Y(e,e,i),Y(e,e,i),Y(r[0],e,i),L(t,r[0]),Y(t,t,i),m(t,o)&&Y(r[0],r[0],mr),L(t,r[0]),Y(t,t,i),m(t,o)?-1:(B(r[0])===n[31]>>7&&T(r[0],br,r[0]),Y(r[3],r[0],r[1]),0)}function ur(r,n,e,t){var o,i,a=new Uint8Array(32),f=new Uint8Array(64),c=[hr(),hr(),hr(),hr()],w=[hr(),hr(),hr(),hr()];if(i=-1,64>e)return-1;if(fr(w,t))return-1;for(o=0;e>o;o++)r[o]=n[o];for(o=0;32>o;o++)r[o+32]=t[o];if(Q(f,r,e),ir(f),nr(c,w,f),er(w,n.subarray(32)),W(c,w),rr(a,c),e-=64,u(n,0,a,0)){for(o=0;e>o;o++)r[o]=0;return-1}for(o=0;e>o;o++)r[o]=n[o+64];return i=e}function cr(r,n){if(r.length!==Rr)throw new Error("bad key size");if(n.length!==kr)throw new Error("bad nonce size")}function wr(r,n){if(r.length!==Nr)throw new Error("bad public key size");if(n.length!==Mr)throw new Error("bad secret key size")}function yr(){var r,n;for(n=0;nn;n++)e.push(String.fromCharCode(r[n]));return btoa(e.join(""))},r.util.decodeBase64=function(r){if("undefined"==typeof atob)return new Uint8Array(Array.prototype.slice.call(new Buffer(r,"base64"),0));var n,e=atob(r),t=new Uint8Array(e.length);for(n=0;nt)return null;for(var o=new Uint8Array(t),i=0;it;t++)o[t]=n[t];for(t=0;t=0},r.sign.keyPair=function(){var r=new Uint8Array(qr),n=new Uint8Array(Xr);return tr(r,n),{publicKey:r,secretKey:n}},r.sign.keyPair.fromSecretKey=function(r){if(yr(r),r.length!==Xr)throw new Error("bad secret key size");for(var n=new Uint8Array(qr),e=0;et;t++)e[t]=r[t];return tr(n,e,!0),{publicKey:n,secretKey:e}},r.sign.publicKeyLength=qr,r.sign.secretKeyLength=Xr,r.sign.seedLength=Dr,r.sign.signatureLength=Vr,r.hash=function(r){yr(r);var n=new Uint8Array(Hr);return Q(n,r,r.length),n},r.hash.hashLength=Hr,r.verify=function(r,n){return yr(r,n),0===r.length||0===n.length?!1:r.length!==n.length?!1:0===a(r,0,n,0,r.length)?!0:!1},r.setPRNG=function(r){gr=r},function(){var n;"undefined"!=typeof window?(window.crypto&&window.crypto.getRandomValues?n=window.crypto:window.msCrypto&&window.msCrypto.getRandomValues&&(n=window.msCrypto),n&&r.setPRNG(function(r,e){var t,o=new Uint8Array(e);for(n.getRandomValues(o),t=0;e>t;t++)r[t]=o[t];sr(o)})):"undefined"!=typeof require&&(n=require("crypto"),n&&r.setPRNG(function(r,e){var t,o=n.randomBytes(e);for(t=0;e>t;t++)r[t]=o[t];sr(o)}))}()}("undefined"!=typeof module&&module.exports?module.exports:window.nacl=window.nacl||{}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/package.json deleted file mode 100644 index d86eab6a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/tweetnacl/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "_args": [ - [ - "tweetnacl@~0.13.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk" - ] - ], - "_from": "tweetnacl@>=0.13.0 <0.14.0", - "_id": "tweetnacl@0.13.3", - "_inCache": true, - "_installable": true, - "_location": "/tweetnacl", - "_nodeVersion": "4.2.3", - "_npmUser": { - "email": "dmitry@codingrobots.com", - "name": "dchest" - }, - "_npmVersion": "2.14.7", - "_phantomChildren": {}, - "_requested": { - "name": "tweetnacl", - "raw": "tweetnacl@~0.13.0", - "rawSpec": "~0.13.0", - "scope": null, - "spec": ">=0.13.0 <0.14.0", - "type": "range" - }, - "_requiredBy": [ - "/sshpk" - ], - "_resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", - "_shasum": "d628b56f3bcc3d5ae74ba9d4c1a704def5ab4b56", - "_shrinkwrap": null, - "_spec": "tweetnacl@~0.13.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/sshpk", - "author": { - "name": "TweetNaCl-js contributors" - }, - "browser": { - "buffer": false, - "crypto": false - }, - "bugs": { - "url": "https://github.com/dchest/tweetnacl-js/issues" - }, - "dependencies": {}, - "description": "Port of TweetNaCl cryptographic library to JavaScript", - "devDependencies": { - "browserify": "^10.1.3", - "eslint": "^1.4.3", - "faucet": "0.0.1", - "tap-browser-color": "^0.1.2", - "tape": "^4.0.0", - "testling": "^1.7.1", - "uglify-js": "^2.4.21" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "d628b56f3bcc3d5ae74ba9d4c1a704def5ab4b56", - "tarball": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz" - }, - "gitHead": "2bb422cb707fba4a5ec9654688564a4fb861b068", - "homepage": "https://dchest.github.io/tweetnacl-js", - "keywords": [ - "crypto", - "cryptography", - "curve25519", - "ed25519", - "encrypt", - "hash", - "key", - "nacl", - "poly1305", - "public", - "salsa20", - "signatures" - ], - "license": "Public domain", - "main": "nacl-fast.js", - "maintainers": [ - { - "email": "dmitry@codingrobots.com", - "name": "dchest" - } - ], - "name": "tweetnacl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/dchest/tweetnacl-js.git" - }, - "scripts": { - "bench": "node test/benchmark/bench.js", - "browser": "browserify test/browser/init.js test/*.js | uglifyjs -c -m -o test/browser/_bundle.js 2>/dev/null", - "browser-quick": "browserify test/browser/init.js test/*.quick.js | uglifyjs -c -m -o test/browser/_bundle-quick.js 2>/dev/null", - "build": "uglifyjs nacl.js -c -m -o nacl.min.js && uglifyjs nacl-fast.js -c -m -o nacl-fast.min.js", - "chrome": "browserify test/browser/testling_init.js test/*.js | testling -x google-chrome | faucet", - "firefox": "browserify test/browser/testling_init.js test/*.js | testling -x firefox | faucet", - "lint": "eslint nacl.js nacl-fast.js test/*.js test/benchmark/*.js", - "test": "tape test/*.js | faucet", - "testall": "make -C test/c && tape test/*.js test/c/*.js | faucet", - "testling": "browserify test/browser/testling_init.js test/*.js | testling | faucet" - }, - "testling": { - "browsers": [ - "chrome/22..latest", - "firefox/16..latest", - "safari/latest", - "opera/11.0..latest", - "iphone/6..latest", - "ipad/6..latest", - "android-browser/latest" - ], - "files": "test/*.js" - }, - "version": "0.13.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.editorconfig b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.editorconfig deleted file mode 100644 index 84b480f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -# EditorConfig is awesome: http://EditorConfig.org -root = true - -[*] -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -charset = utf-8 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.npmignore deleted file mode 100644 index 8335ed38..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -tests -bench -coverage diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.travis.yml deleted file mode 100644 index f2f756b2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "iojs" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CHANGELOG.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CHANGELOG.markdown deleted file mode 100644 index 41ba7c88..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CHANGELOG.markdown +++ /dev/null @@ -1,161 +0,0 @@ - -# Changelog - -### 3.1.1 - -* Add coverage folder to npmignore -* [Full changelog](https://github.com/epeli/underscore.string/compare/3.1.0...3.1.1) - -### 3.1.0 - -* Meteor integration [baeb0da](https://github.com/epeli/underscore.string/commit/baeb0da0053549e5346184630a7e0c5007b8be4f) -* Add flag to capitalize to lowercase remaining characters [#408](https://github.com/epeli/underscore.string/pull/408) -* Move to mocha [#409](https://github.com/epeli/underscore.string/pull/409) -* Add support for more htmlEntites in escapeHTML and unescapeHTML [#417](https://github.com/epeli/underscore.string/pull/417) -* Performance improvement in levenshtein [#427](https://github.com/epeli/underscore.string/pull/427) -* [Full changelog](https://github.com/epeli/underscore.string/compare/3.0.3...3.1.0) - -### 3.0.3 - -* Provide `dist` in npm package [#402](https://github.com/epeli/underscore.string/pull/402) -* [Full changelog](https://github.com/epeli/underscore.string/compare/3.0.2...3.0.3) - -### 3.0.2 - -* Fix .gitignore for bower [#400](https://github.com/epeli/underscore.string/issues/400) -* Some docs cleanup -* [Full changelog](https://github.com/epeli/underscore.string/compare/3.0.1...3.0.2) - -### 3.0.1 - -* Minor fixes in the documentation [#390](https://github.com/epeli/underscore.string/pull/390) and [5135cb9](https://github.com/epeli/underscore.string/commit/5135cb9026034e9ea206c2ed8588db1eeb3ce95a) -* Fix bower warnings [#393](https://github.com/epeli/underscore.string/pull/393) -* `humanize` now uses `trim` [#392](https://github.com/epeli/underscore.string/pull/392) -* [Full changelog](https://github.com/epeli/underscore.string/compare/3.0.0...3.0.1) - -### 3.0.0 - -* Each function is now extracted to individual CommonJS modules - * Browserify users can now load only the functions they actually use -* Usage as Underscore.js or Lo-Dash mixin is now discouraged as there is too many colliding methods -* The prebuild library now exports a `s` global instead of `_s` and trying to - stick itself to existing underscore instances -* New gh-pages with documentation -* Implement chaining without Underscore.js -* String.prototype methods can be chained with underscore.string functions [#383](https://github.com/epeli/underscore.string/pull/383) -* Don't compare lowercase versions of strings in naturalCmp [#326](https://github.com/epeli/underscore.string/issues/326) -* Always return +-1 or 0 in naturalCmp [#324](https://github.com/epeli/underscore.string/pull/324) -* Align [starts|ends]With with the ES6 spec [#345](https://github.com/epeli/underscore.string/pull/345) -* New functions `decapitalize`, `pred`, `dedent` and `replaceAll` -* `slugify` now actually replaces all special chars with a dash -* `slugify` supports Easter E languages [#340](https://github.com/epeli/underscore.string/pull/340) -* `join` is now a conflicting function [#320](https://github.com/epeli/underscore.string/pull/320) -* New decapitalize flag for `camelize` [#370](https://github.com/epeli/underscore.string/pull/370) -* `toNumber` allows negative decimal precision [#332](https://github.com/epeli/underscore.string/pull/332) -* [Full changelog](https://github.com/epeli/underscore.string/compare/2.4.0...3.0.0) - -## 2.4.0 - -* Move from rake to gulp -* Add support form classify camelcase strings -* Fix bower.json -* [Full changelog](https://github.com/epeli/underscore.string/compare/v2.3.3...2.4.0) - -## 2.3.3 - -* Add `toBoolean` -* Add `unquote` -* Add quote char option to `quote` -* Support dash-separated words in `titleize` -* [Full changelog](https://github.com/epeli/underscore.string/compare/v2.3.2...2.3.3) - -## 2.3.2 - -* Add `naturalCmp` -* Bug fix to `camelize` -* Add ă, ș, ț and ś to `slugify` -* Doc updates -* Add support for [component](http://component.io/) -* [Full changelog](https://github.com/epeli/underscore.string/compare/v2.3.1...v2.3.2) - -## 2.3.1 - -* Bug fixes to `escapeHTML`, `classify`, `substr` -* Faster `count` -* Documentation fixes -* [Full changelog](https://github.com/epeli/underscore.string/compare/v2.3.0...v2.3.1) - -## 2.3.0 - -* Added `numberformat` method -* Added `levenshtein` method (Levenshtein distance calculation) -* Added `swapCase` method -* Changed default behavior of `words` method -* Added `toSentenceSerial` method -* Added `surround` and `quote` methods - -## 2.2.1 - -* Same as 2.2.0 (2.2.0rc on npm) to fix some npm drama - -## 2.2.0 - -* Capitalize method behavior changed -* Various perfomance tweaks - -## 2.1.1 - -* Fixed words method bug -* Added classify method - -## 2.1.0 - -* AMD support -* Added toSentence method -* Added slugify method -* Lots of speed optimizations - -## 2.0.0 - -* Added prune, humanize functions -* Added _.string (_.str) namespace for Underscore.string library -* Removed includes function - -For upgrading to this version you need to mix in Underscore.string library to Underscore object: - -```javascript -_.mixin(_.string.exports()); -``` - -and all non-conflict Underscore.string functions will be available through Underscore object. -Also function `includes` has been removed, you should replace this function by `_.str.include` -or create alias `_.includes = _.str.include` and all your code will work fine. - -## 1.1.6 - -* Fixed reverse and truncate -* Added isBlank, stripTags, inlude(alias for includes) -* Added uglifier compression - -## 1.1.5 - -* Added strRight, strRightBack, strLeft, strLeftBack - -## 1.1.4 - -* Added pad, lpad, rpad, lrpad methods and aliases center, ljust, rjust -* Integration with Underscore 1.1.6 - -## 1.1.3 - -* Added methods: underscored, camelize, dasherize -* Support newer version of npm - -## 1.1.2 - -* Created functions: lines, chars, words functions - -## 1.0.2 - -* Created integration test suite with underscore.js 1.1.4 (now it's absolutely compatible) -* Removed 'reverse' function, because this function override underscore.js 'reverse' diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CONTRIBUTING.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CONTRIBUTING.markdown deleted file mode 100644 index c2d7dbac..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/CONTRIBUTING.markdown +++ /dev/null @@ -1,31 +0,0 @@ - -# Contributing - -- Always add tests -- Update documentation if needed -- Do not commit build artifacts in the `dist` directory - -## Bug fixes - -Always add a test for the bug in a separate commit so we can easily cherry pick -it for verification. - -## New features - -It's recommended to open an issue before sending a pull request to avoid -unnecessary work. There are quite few areas we consider to be out of scope for -this library. Idea is to add few generic string helpers for Javascript. For -example anything related to internalization or is too language specific is out -of scope. - -## Release checklist - -(for maintainers) - - - Upgrade version number `gulp bump --semver ` - - Build the library `gulp build` - - Commit build artifacts in `dist` - - Write a changelog entry to `CHANGELOG.markdown` - - Use Github compare to see what has changed from previous tag. Ex https://github.com/epeli/underscore.string/compare/3.0.0...master - - Add git tag - - Push new release to npm diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/README.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/README.markdown deleted file mode 100644 index c65a72d2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/README.markdown +++ /dev/null @@ -1,832 +0,0 @@ - - -The stable release documentation can be found here https://epeli.github.io/underscore.string/ - - - -# Underscore.string [![Build Status](https://secure.travis-ci.org/epeli/underscore.string.png?branch=master)](http://travis-ci.org/epeli/underscore.string) # - -Javascript lacks complete string manipulation operations. -This is an attempt to fill that gap. List of build-in methods can be found -for example from [Dive Into JavaScript][d]. -Originally started as an Underscore.js extension but is a full standalone -library nowadays. - -Upgrading from 2.x to 3.x? Please read the [changelog][c]. - -[c]: https://github.com/epeli/underscore.string/blob/master/CHANGELOG.markdown#300 - -## Usage - -### In Node.js and Browserify - -Install from npm - - npm install underscore.string - -Require individual functions - -```javascript -var slugify = require("underscore.string/slugify"); - -slugify("Hello world!"); -// => hello-world -``` - -or load the full library to enable chaining - -```javascript -var s = require("underscore.string"); - -s(" epeli ").trim().capitalize().value(); -// => "Epeli" -``` - -but especially when using with [Browserify][] the individual function approach -is recommended because using it you only add those functions to your bundle you -use. - -[Browserify]: http://browserify.org/ - -### In Meteor - -From your [Meteor][] project folder - -```shell - meteor add underscorestring:underscore.string -``` - -and you'll be able to access the library with the ***s*** global from both the server and the client. - -```javascript -s.slugify("Hello world!"); -// => hello-world - -s(" epeli ").trim().capitalize().value(); -// => "Epeli" -``` - -[Meteor]: http://www.meteor.com/ - -### Others - -The `dist/underscore.string.js` file is an [UMD][] build. You can load it using -an AMD loader such as [RequireJS][] or just stick it to a web page and access -the library from the ***s*** global. - -[UMD]: https://github.com/umdjs/umd -[RequireJS]: http://requirejs.org/ - -### Underscore.js/Lo-Dash integration - -It is still possible use as Underscore.js/Lo-Dash extension - -```javascript -_.mixin(s.exports()); -``` -But it's not recommended since `include`, `contains`, `reverse` and `join` -are dropped because they collide with the functions already defined by Underscore.js. - -### Lo-Dash-FP/Ramda integration - -If you want to use underscore.string with [ramdajs](http://ramdajs.com/) or [Lo-Dash-FP](https://github.com/lodash/lodash-fp) you can use [underscore.string.fp](https://github.com/stoeffel/underscore.string.fp). - - npm install underscore.string.fp - -```javascript -var S = require('underscore.string.fp'); -var filter = require('lodash-fp').filter; -var filter = require('ramda').filter; - -filter(S.startsWith('.'), [ - '.vimrc', - 'foo.md', - '.zshrc' -]); -// => ['.vimrc', '.zshrc'] -``` - -## Download - - * [Development version](https://raw.github.com/epeli/underscore.string/master/dist/underscore.string.js) *Uncompressed with Comments* - * [Production version](https://github.com/epeli/underscore.string/raw/master/dist/underscore.string.min.js) *Minified* - -## API - -### Individual functions - -#### numberFormat(number, [ decimals=0, decimalSeparator='.', orderSeparator=',']) => string - -Formats the numbers. - -```javascript -numberFormat(1000, 2); -// => "1,000.00" - -numberFormat(123456789.123, 5, ".", ","); -// => "123,456,789.12300" -``` - - -#### levenshtein(string1, string2) => number - -Calculates [Levenshtein distance][ld] between two strings. -[ld]: http://en.wikipedia.org/wiki/Levenshtein_distance - -```javascript -levenshtein("kitten", "kittah"); -// => 2 -``` - -#### capitalize(string, [lowercaseRest=false]) => string - -Converts first letter of the string to uppercase. If `true` is passed as second argument the rest -of the string will be converted to lower case. - -```javascript -capitalize("foo Bar"); -// => "Foo Bar" - -capitalize("FOO Bar", true); -// => "Foo bar" -``` - -#### decapitalize(string) => string - -Converts first letter of the string to lowercase. - -```javascript -decapitalize("Foo Bar"); -// => "foo Bar" -``` - -#### chop(string, step) => array - -```javascript -chop("whitespace", 3); -// => ["whi", "tes", "pac", "e"] -``` - -#### clean(string) => string - -Trim and replace multiple spaces with a single space. - -```javascript -clean(" foo bar "); -// => "foo bar" -``` - -#### chars(string) => array - -```javascript -chars("Hello"); -// => ["H", "e", "l", "l", "o"] -``` - -#### swapCase(string) => string - -Returns a copy of the string in which all the case-based characters have had their case swapped. - -```javascript -swapCase("hELLO"); -// => "Hello" -``` - -#### include(string, substring) => boolean - -Tests if string contains a substring. - -```javascript -include("foobar", "ob"); -// => true -``` - -#### count(string, substring) => number - -```javascript -count("Hello world", "l"); -// => 3 -``` - -#### escapeHTML(string) => string - -Converts HTML special characters to their entity equivalents. -This function supports cent, yen, euro, pound, lt, gt, copy, reg, quote, amp, apos. - -```javascript -escapeHTML("
      Blah blah blah
      "); -// => "<div>Blah blah blah</div>" -``` - -#### unescapeHTML(string) => string - -Converts entity characters to HTML equivalents. -This function supports cent, yen, euro, pound, lt, gt, copy, reg, quote, amp, apos, nbsp. - -```javascript -unescapeHTML("<div>Blah blah blah</div>"); -// => "
      Blah blah blah
      " -``` - -#### insert(string, index, substring) => string - -```javascript -insert("Hello ", 6, "world"); -// => "Hello world" -``` - -#### replaceAll(string, find, replace, [ignorecase=false]) => string - -```javascript -replaceAll("foo", "o", "a"); -// => "faa" -``` - -#### isBlank(string) => boolean - -```javascript -isBlank(""); // => true -isBlank("\n"); // => true -isBlank(" "); // => true -isBlank("a"); // => false -``` - -#### join(separator, ...strings) => string - -Joins strings together with given separator - -```javascript -join(" ", "foo", "bar"); -// => "foo bar" -``` - -#### lines(str) => array - -Split lines to an array - -```javascript -lines("Hello\nWorld"); -// => ["Hello", "World"] -``` - -#### dedent(str, [pattern]) => string - -Dedent unnecessary indentation or dedent by a pattern. - -Credits go to @sindresorhus. -This implementation is similar to https://github.com/sindresorhus/strip-indent - -```javascript -dedent(" Hello\n World"); -// => "Hello\n World" - -dedent("\t\tHello\n\t\t\t\tWorld"); -// => "Hello\n\t\tWorld" - -dedent(" Hello\n World", " "); // Dedent by 2 spaces -// => " Hello\n World" -``` - -#### reverse(string) => string - -Return reversed string: - -```javascript -reverse("foobar"); -// => "raboof" -``` - -#### splice(string, index, howmany, substring) => string - -Like an array splice. - -```javascript -splice("https://edtsech@bitbucket.org/edtsech/underscore.strings", 30, 7, "epeli"); -// => "https://edtsech@bitbucket.org/epeli/underscore.strings" -``` - -#### startsWith(string, starts, [position]) => boolean - -This method checks whether the string begins with `starts` at `position` (default: 0). - -```javascript -startsWith("image.gif", "image"); -// => true - -startsWith(".vimrc", "vim", 1); -// => true -``` - -#### endsWith(string, ends, [position]) => boolean - -This method checks whether the string ends with `ends` at `position` (default: string.length). - -```javascript -endsWith("image.gif", "gif"); -// => true - -endsWith("image.old.gif", "old", 9); -// => true -``` - -#### pred(string) => string - -Returns the predecessor to str. - -```javascript -pred("b"); -// => "a" - -pred("B"); -// => "A" -``` - -#### succ(string) => string - -Returns the successor to str. - -```javascript -succ("a"); -// => "b" - -succ("A"); -// => "B" -``` - - -#### titleize(string) => string - -```javascript -titleize("my name is epeli"); -// => "My Name Is Epeli" -``` - -#### camelize(string, [decapitalize=false]) => string - -Converts underscored or dasherized string to a camelized one. Begins with -a lower case letter unless it starts with an underscore, dash or an upper case letter. - -```javascript -camelize("moz-transform"); -// => "mozTransform" - -camelize("-moz-transform"); -// => "MozTransform" - -camelize("_moz_transform"); -// => "MozTransform" - -camelize("Moz-transform"); -// => "MozTransform" - -camelize("-moz-transform", true); -// => "mozTransform" -``` - -#### classify(string) => string - -Converts string to camelized class name. First letter is always upper case - -```javascript -classify("some_class_name"); -// => "SomeClassName" -``` - -#### underscored(string) => string - -Converts a camelized or dasherized string into an underscored one - -```javascript -underscored("MozTransform"); -// => "moz_transform" -``` - -#### dasherize(string) => string - -Converts a underscored or camelized string into an dasherized one - -```javascript -dasherize("MozTransform"); -// => "-moz-transform" -``` - -#### humanize(string) => string - -Converts an underscored, camelized, or dasherized string into a humanized one. -Also removes beginning and ending whitespace, and removes the postfix '_id'. - -```javascript -humanize(" capitalize dash-CamelCase_underscore trim "); -// => "Capitalize dash camel case underscore trim" -``` - -#### trim(string, [characters]) => string - -Trims defined characters from begining and ending of the string. -Defaults to whitespace characters. - -```javascript -trim(" foobar "); -// => "foobar" - -trim("_-foobar-_", "_-"); -// => "foobar" -``` - - -#### ltrim(string, [characters]) => string - -Left trim. Similar to trim, but only for left side. - -#### rtrim(string, [characters]) => string - -Right trim. Similar to trim, but only for right side. - -#### truncate(string, length, truncateString) => string - -```javascript -truncate("Hello world", 5); -// => "Hello..." - -truncate("Hello", 10); -// => "Hello" -``` - -#### prune(string, length, pruneString) => string - -Elegant version of truncate. Makes sure the pruned string does not exceed the -original length. Avoid half-chopped words when truncating. - -```javascript -prune("Hello, world", 5); -// => "Hello..." - -prune("Hello, world", 8); -// => "Hello..." - -prune("Hello, world", 5, " (read a lot more)"); -// => "Hello, world" (as adding "(read a lot more)" would be longer than the original string) - -prune("Hello, cruel world", 15); -// => "Hello, cruel..." - -prune("Hello", 10); -// => "Hello" -``` - -#### words(str, delimiter=/\s+/) => array - -Split string by delimiter (String or RegExp), /\s+/ by default. - -```javascript -words(" I love you "); -// => ["I", "love", "you"] - -words("I_love_you", "_"); -// => ["I", "love", "you"] - -words("I-love-you", /-/); -// => ["I", "love", "you"] - -words(" ") -// => [] -``` - -#### sprintf(string format, ...arguments) => string - -C like string formatting. -Credits goes to [Alexandru Marasteanu][o]. -For more detailed documentation, see the [original page][o]. - -[o]: http://www.diveintojavascript.com/projects/javascript-sprintf - -```javascript -sprintf("%.1f", 1.17); -// => "1.2" -``` - -#### pad(str, length, [padStr, type]) => string - -pads the `str` with characters until the total string length is equal to the passed `length` parameter. By default, pads on the **left** with the space char (`" "`). `padStr` is truncated to a single character if necessary. - -```javascript -pad("1", 8); -// => " 1" - -pad("1", 8, "0"); -// => "00000001" - -pad("1", 8, "0", "right"); -// => "10000000" - -pad("1", 8, "0", "both"); -// => "00001000" - -pad("1", 8, "bleepblorp", "both"); -// => "bbbb1bbb" -``` - -#### lpad(str, length, [padStr]) => string - -left-pad a string. Alias for `pad(str, length, padStr, "left")` - -```javascript -lpad("1", 8, "0"); -// => "00000001" -``` - -#### rpad(str, length, [padStr]) => string - -right-pad a string. Alias for `pad(str, length, padStr, "right")` - -```javascript -rpad("1", 8, "0"); -// => "10000000" -``` - -#### lrpad(str, length, [padStr]) => string - -left/right-pad a string. Alias for `pad(str, length, padStr, "both")` - -```javascript -lrpad("1", 8, '0'); -// => "00001000" -``` - - -#### toNumber(string, [decimals]) => number - -Parse string to number. Returns NaN if string can't be parsed to number. - -```javascript -toNumber("2.556"); -// => 3 - -toNumber("2.556", 1); -// => 2.6 - -toNumber("999.999", -1); -// => 990 -``` - -#### strRight(string, pattern) => string - -Searches a string from left to right for a pattern and returns a substring consisting of the characters in the string that are to the right of the pattern or all string if no match found. - -```javascript -strRight("This_is_a_test_string", "_"); -// => "is_a_test_string" -``` - -#### strRightBack(string, pattern) => string - -Searches a string from right to left for a pattern and returns a substring consisting of the characters in the string that are to the right of the pattern or all string if no match found. - -```javascript -strRightBack("This_is_a_test_string", "_"); -// => "string" -``` - -#### strLeft(string, pattern) => string - -Searches a string from left to right for a pattern and returns a substring consisting of the characters in the string that are to the left of the pattern or all string if no match found. - -```javascript -strLeft("This_is_a_test_string", "_"); -// => "This"; -``` - -#### strLeftBack(string, pattern) => string - -Searches a string from right to left for a pattern and returns a substring consisting of the characters in the string that are to the left of the pattern or all string if no match found. - -```javascript -strLeftBack("This_is_a_test_string", "_"); -// => "This_is_a_test"; -``` - -#### stripTags(string) => string - -Removes all html tags from string. - -```javascript -stripTags("a link"); -// => "a link" - -stripTags("a link"); -// => "a linkalert("hello world!")" -``` - -#### toSentence(array, [delimiter, lastDelimiter]) => string - -Join an array into a human readable sentence. - -```javascript -toSentence(["jQuery", "Mootools", "Prototype"]); -// => "jQuery, Mootools and Prototype"; - -toSentence(["jQuery", "Mootools", "Prototype"], ", ", " unt '); -// => "jQuery, Mootools unt Prototype"; -``` - -#### toSentenceSerial(array, [delimiter, lastDelimiter]) => string - -The same as `toSentence`, but adjusts delimeters to use [Serial comma](http://en.wikipedia.org/wiki/Serial_comma). - -```javascript -toSentenceSerial(["jQuery", "Mootools"]); -// => "jQuery and Mootools" - -toSentenceSerial(["jQuery", "Mootools", "Prototype"]); -// => "jQuery, Mootools, and Prototype" - -toSentenceSerial(["jQuery", "Mootools", "Prototype"], ", ", " unt '); -// => "jQuery, Mootools, unt Prototype" -``` - -#### repeat(string, count, [separator]) => string - -Repeats a string count times. - -```javascript -repeat("foo", 3); -// => "foofoofoo" - -repeat("foo", 3, "bar"); -// => "foobarfoobarfoo" -``` - -#### surround(string, wrap) => string - -Surround a string with another string. - -```javascript -surround("foo", "ab"); -// => "abfooab" -``` - -#### quote(string, quoteChar) or q(string, quoteChar) => string - -Quotes a string. `quoteChar` defaults to `"`. - -```javascript -quote("foo", '"'); -// => '"foo"'; -``` -#### unquote(string, quoteChar) => string - -Unquotes a string. `quoteChar` defaults to `"`. - -```javascript -unquote('"foo"'); -// => "foo" - -unquote("'foo'", "'"); -// => "foo" -``` - - -#### slugify(string) => string - -Transform text into an ascii slug which can be used in safely in URLs. Replaces whitespaces, accentuated, and special characters with a dash. Limited set of non-ascii characters are transformed to similar versions in the ascii character set such as `ä` to `a`. - -```javascript -slugify("Un éléphant à l\'orée du bois"); -// => "un-elephant-a-l-oree-du-bois" -``` - -***Caution: this function is charset dependent*** - -#### naturalCmp(string1, string2) => number - -Naturally sort strings like humans would do. None numbers are compared by their [ASCII values](http://www.asciitable.com/). Note: this means "a" > "A". Use `.toLowerCase` if this isn't to be desired. - -Just past it to `Array#sort`. - -```javascript -["foo20", "foo5"].sort(naturalCmp); -// => ["foo5", "foo20"] -``` - -#### toBoolean(string) => boolean - -Turn strings that can be commonly considered as booleas to real booleans. Such as "true", "false", "1" and "0". This function is case insensitive. - -```javascript -toBoolean("true"); -// => true - -toBoolean("FALSE"); -// => false - -toBoolean("random"); -// => undefined -``` - -It can be customized by giving arrays of truth and falsy value matcher as parameters. Matchers can be also RegExp objects. - -```javascript -toBoolean("truthy", ["truthy"], ["falsy"]); -// => true - -toBoolean("true only at start", [/^true/]); -// => true -``` - -### Library functions - -If you require the full library you can use chaining and aliases - -#### s(string) => chain - -Start a chain. Returns an immutable chain object with the string functions as -methods which return a new chain object instead of the plain string value. - -The chain object includes also following native Javascript string methods: - - - [toUpperCase](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) - - [toLowerCase](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) - - [split](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) - - [replace](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) - - [slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice) - - [substring](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/substring) - - [substr](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) - - [concat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat) - -#### chain.value() - -Return the string value from the chain - -```javascript -s(" foo ").trim().capitalize().value(); -// => "Foo" -``` - -When calling a method which does not return a string the resulting value is -immediately returned - -```javascript -s(" foobar ").trim().startsWith("foo"); -// => true -``` - -#### chain.tap(function) => chain - -Tap into the chain with a custom function - -```javascript -s("foo").tap(function(value){ - return value + "bar"; -}).value(); -// => "foobar" -``` - - -#### Aliases - -```javascript -strip = trim -lstrip = ltrim -rstrip = rtrim -center = lrpad -rjust = lpad -ljust = rpad -contains = include -q = quote -toBool = toBoolean -camelcase = camelize -``` - -## Maintainers ## - -This library is maintained by - - - Esa-Matti Suuronen – ***[@epeli](https://github.com/epeli)*** - - Christoph Hermann – ***[@stoeffel](https://github.com/stoeffel)*** - -## Licence ## - -The MIT License - -Copyright (c) 2011 Esa-Matti Suuronen esa-matti@suuronen.org - -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. - - -[d]: http://www.diveintojavascript.com/core-javascript-reference/the-string-object diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/bower.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/bower.json deleted file mode 100644 index 65c0b5c7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/bower.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "underscore.string", - "version": "3.1.1", - "description": "String manipulation extensions for Underscore.js javascript library.", - "homepage": "http://epeli.github.com/underscore.string/", - "contributors": [ - "Esa-Matti Suuronen (http://esa-matti.suuronen.org/)", - "Edward Tsech ", - "Pavel Pravosud ()", - "Sasha Koss (http://koss.nocorp.me/)", - "Vladimir Dronnikov ", - "Pete Kruckenberg ()", - "Paul Chavard ()", - "Ed Finkler ()" - ], - "keywords": [ - "underscore", - "string" - ], - "main": "./dist/underscore.string.js", - "ignore": [], - "repository": { - "type": "git", - "url": "https://github.com/epeli/underscore.string.git" - }, - "bugs": { - "url": "https://github.com/epeli/underscore.string/issues" - }, - "licenses": [ - { - "type": "MIT" - } - ] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/camelize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/camelize.js deleted file mode 100644 index ac09e81f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/camelize.js +++ /dev/null @@ -1,14 +0,0 @@ -var trim = require('./trim'); -var decap = require('./decapitalize'); - -module.exports = function camelize(str, decapitalize) { - str = trim(str).replace(/[-_\s]+(.)?/g, function(match, c) { - return c ? c.toUpperCase() : ""; - }); - - if (decapitalize === true) { - return decap(str); - } else { - return str; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/capitalize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/capitalize.js deleted file mode 100644 index 26933768..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/capitalize.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function capitalize(str, lowercaseRest) { - str = makeString(str); - var remainingChars = !lowercaseRest ? str.slice(1) : str.slice(1).toLowerCase(); - - return str.charAt(0).toUpperCase() + remainingChars; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chars.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chars.js deleted file mode 100644 index d94a9011..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chars.js +++ /dev/null @@ -1,5 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function chars(str) { - return makeString(str).split(''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chop.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chop.js deleted file mode 100644 index 73e17eb7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/chop.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = function chop(str, step) { - if (str == null) return []; - str = String(str); - step = ~~step; - return step > 0 ? str.match(new RegExp('.{1,' + step + '}', 'g')) : [str]; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/classify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/classify.js deleted file mode 100644 index 08547e0d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/classify.js +++ /dev/null @@ -1,8 +0,0 @@ -var capitalize = require('./capitalize'); -var camelize = require('./camelize'); -var makeString = require('./helper/makeString'); - -module.exports = function classify(str) { - str = makeString(str); - return capitalize(camelize(str.replace(/[\W_]/g, ' ')).replace(/\s/g, '')); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/clean.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/clean.js deleted file mode 100644 index 6764af18..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/clean.js +++ /dev/null @@ -1,5 +0,0 @@ -var trim = require('./trim'); - -module.exports = function clean(str) { - return trim(str).replace(/\s+/g, ' '); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/component.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/component.json deleted file mode 100644 index d568ae99..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/component.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "underscore.string", - "repo": "epeli/underscore.string", - "description": "String manipulation extensions for Underscore.js javascript library", - "version": "3.1.1", - "keywords": [ - "underscore", - "string" - ], - "dependencies": {}, - "development": {}, - "main": "index.js", - "scripts": [ - "*.js" - ] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/count.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/count.js deleted file mode 100644 index 2207d709..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/count.js +++ /dev/null @@ -1,10 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function(str, substr) { - str = makeString(str); - substr = makeString(substr); - - if (str.length === 0 || substr.length === 0) return 0; - - return str.split(substr).length - 1; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dasherize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dasherize.js deleted file mode 100644 index 544ae0c7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dasherize.js +++ /dev/null @@ -1,5 +0,0 @@ -var trim = require('./trim'); - -module.exports = function dasherize(str) { - return trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/decapitalize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/decapitalize.js deleted file mode 100644 index 6aa2673e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/decapitalize.js +++ /dev/null @@ -1,6 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function decapitalize(str) { - str = makeString(str); - return str.charAt(0).toLowerCase() + str.slice(1); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dedent.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dedent.js deleted file mode 100644 index 41b4f07c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dedent.js +++ /dev/null @@ -1,28 +0,0 @@ -var makeString = require('./helper/makeString'); - -function getIndent(str) { - var matches = str.match(/^[\s\\t]*/gm); - var indent = matches[0].length; - - for (var i = 1; i < matches.length; i++) { - indent = Math.min(matches[i].length, indent); - } - - return indent; -} - -module.exports = function dedent(str, pattern) { - str = makeString(str); - var indent = getIndent(str); - var reg; - - if (indent === 0) return str; - - if (typeof pattern === 'string') { - reg = new RegExp('^' + pattern, 'gm'); - } else { - reg = new RegExp('^[ \\t]{' + indent + '}', 'gm'); - } - - return str.replace(reg, ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.js deleted file mode 100644 index f236fba3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.js +++ /dev/null @@ -1,1065 +0,0 @@ -!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.s=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 ? str.match(new RegExp('.{1,' + step + '}', 'g')) : [str]; -}; - -},{}],5:[function(_dereq_,module,exports){ -var capitalize = _dereq_('./capitalize'); -var camelize = _dereq_('./camelize'); -var makeString = _dereq_('./helper/makeString'); - -module.exports = function classify(str) { - str = makeString(str); - return capitalize(camelize(str.replace(/[\W_]/g, ' ')).replace(/\s/g, '')); -}; - -},{"./camelize":1,"./capitalize":2,"./helper/makeString":20}],6:[function(_dereq_,module,exports){ -var trim = _dereq_('./trim'); - -module.exports = function clean(str) { - return trim(str).replace(/\s+/g, ' '); -}; - -},{"./trim":61}],7:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function(str, substr) { - str = makeString(str); - substr = makeString(substr); - - if (str.length === 0 || substr.length === 0) return 0; - - return str.split(substr).length - 1; -}; - -},{"./helper/makeString":20}],8:[function(_dereq_,module,exports){ -var trim = _dereq_('./trim'); - -module.exports = function dasherize(str) { - return trim(str).replace(/([A-Z])/g, '-$1').replace(/[-_\s]+/g, '-').toLowerCase(); -}; - -},{"./trim":61}],9:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function decapitalize(str) { - str = makeString(str); - return str.charAt(0).toLowerCase() + str.slice(1); -}; - -},{"./helper/makeString":20}],10:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -function getIndent(str) { - var matches = str.match(/^[\s\\t]*/gm); - var indent = matches[0].length; - - for (var i = 1; i < matches.length; i++) { - indent = Math.min(matches[i].length, indent); - } - - return indent; -} - -module.exports = function dedent(str, pattern) { - str = makeString(str); - var indent = getIndent(str); - var reg; - - if (indent === 0) return str; - - if (typeof pattern === 'string') { - reg = new RegExp('^' + pattern, 'gm'); - } else { - reg = new RegExp('^[ \\t]{' + indent + '}', 'gm'); - } - - return str.replace(reg, ''); -}; - -},{"./helper/makeString":20}],11:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var toPositive = _dereq_('./helper/toPositive'); - -module.exports = function endsWith(str, ends, position) { - str = makeString(str); - ends = '' + ends; - if (typeof position == 'undefined') { - position = str.length - ends.length; - } else { - position = Math.min(toPositive(position), str.length) - ends.length; - } - return position >= 0 && str.indexOf(ends, position) === position; -}; - -},{"./helper/makeString":20,"./helper/toPositive":22}],12:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var escapeChars = _dereq_('./helper/escapeChars'); -var reversedEscapeChars = {}; - -var regexString = "["; -for(var key in escapeChars) { - regexString += key; -} -regexString += "]"; - -var regex = new RegExp( regexString, 'g'); - -module.exports = function escapeHTML(str) { - - return makeString(str).replace(regex, function(m) { - return '&' + escapeChars[m] + ';'; - }); -}; - -},{"./helper/escapeChars":17,"./helper/makeString":20}],13:[function(_dereq_,module,exports){ -module.exports = function() { - var result = {}; - - for (var prop in this) { - if (!this.hasOwnProperty(prop) || prop.match(/^(?:include|contains|reverse|join)$/)) continue; - result[prop] = this[prop]; - } - - return result; -}; - -},{}],14:[function(_dereq_,module,exports){ -// Underscore.string -// (c) 2010 Esa-Matti Suuronen -// Underscore.string is freely distributable under the terms of the MIT license. -// Documentation: https://github.com/epeli/underscore.string -// Some code is borrowed from MooTools and Alexandru Marasteanu. -// Version '3.1.1' - -'use strict'; - -function s(value) { - /* jshint validthis: true */ - if (!(this instanceof s)) return new s(value); - this._wrapped = value; -} - -s.VERSION = '3.1.1'; - -s.isBlank = _dereq_('./isBlank'); -s.stripTags = _dereq_('./stripTags'); -s.capitalize = _dereq_('./capitalize'); -s.decapitalize = _dereq_('./decapitalize'); -s.chop = _dereq_('./chop'); -s.trim = _dereq_('./trim'); -s.clean = _dereq_('./clean'); -s.count = _dereq_('./count'); -s.chars = _dereq_('./chars'); -s.swapCase = _dereq_('./swapCase'); -s.escapeHTML = _dereq_('./escapeHTML'); -s.unescapeHTML = _dereq_('./unescapeHTML'); -s.splice = _dereq_('./splice'); -s.insert = _dereq_('./insert'); -s.replaceAll = _dereq_('./replaceAll'); -s.include = _dereq_('./include'); -s.join = _dereq_('./join'); -s.lines = _dereq_('./lines'); -s.dedent = _dereq_('./dedent'); -s.reverse = _dereq_('./reverse'); -s.startsWith = _dereq_('./startsWith'); -s.endsWith = _dereq_('./endsWith'); -s.pred = _dereq_('./pred'); -s.succ = _dereq_('./succ'); -s.titleize = _dereq_('./titleize'); -s.camelize = _dereq_('./camelize'); -s.underscored = _dereq_('./underscored'); -s.dasherize = _dereq_('./dasherize'); -s.classify = _dereq_('./classify'); -s.humanize = _dereq_('./humanize'); -s.ltrim = _dereq_('./ltrim'); -s.rtrim = _dereq_('./rtrim'); -s.truncate = _dereq_('./truncate'); -s.prune = _dereq_('./prune'); -s.words = _dereq_('./words'); -s.pad = _dereq_('./pad'); -s.lpad = _dereq_('./lpad'); -s.rpad = _dereq_('./rpad'); -s.lrpad = _dereq_('./lrpad'); -s.sprintf = _dereq_('./sprintf'); -s.vsprintf = _dereq_('./vsprintf'); -s.toNumber = _dereq_('./toNumber'); -s.numberFormat = _dereq_('./numberFormat'); -s.strRight = _dereq_('./strRight'); -s.strRightBack = _dereq_('./strRightBack'); -s.strLeft = _dereq_('./strLeft'); -s.strLeftBack = _dereq_('./strLeftBack'); -s.toSentence = _dereq_('./toSentence'); -s.toSentenceSerial = _dereq_('./toSentenceSerial'); -s.slugify = _dereq_('./slugify'); -s.surround = _dereq_('./surround'); -s.quote = _dereq_('./quote'); -s.unquote = _dereq_('./unquote'); -s.repeat = _dereq_('./repeat'); -s.naturalCmp = _dereq_('./naturalCmp'); -s.levenshtein = _dereq_('./levenshtein'); -s.toBoolean = _dereq_('./toBoolean'); -s.exports = _dereq_('./exports'); -s.escapeRegExp = _dereq_('./helper/escapeRegExp'); - -// Aliases -s.strip = s.trim; -s.lstrip = s.ltrim; -s.rstrip = s.rtrim; -s.center = s.lrpad; -s.rjust = s.lpad; -s.ljust = s.rpad; -s.contains = s.include; -s.q = s.quote; -s.toBool = s.toBoolean; -s.camelcase = s.camelize; - - -// Implement chaining -s.prototype = { - value: function value() { - return this._wrapped; - } -}; - -function fn2method(key, fn) { - if (typeof fn !== "function") return; - s.prototype[key] = function() { - var args = [this._wrapped].concat(Array.prototype.slice.call(arguments)); - var res = fn.apply(null, args); - // if the result is non-string stop the chain and return the value - return typeof res === 'string' ? new s(res) : res; - }; -} - -// Copy functions to instance methods for chaining -for (var key in s) fn2method(key, s[key]); - -fn2method("tap", function tap(string, fn) { - return fn(string); -}); - -function prototype2method(methodName) { - fn2method(methodName, function(context) { - var args = Array.prototype.slice.call(arguments, 1); - return String.prototype[methodName].apply(context, args); - }); -} - -var prototypeMethods = [ - "toUpperCase", - "toLowerCase", - "split", - "replace", - "slice", - "substring", - "substr", - "concat" -]; - -for (var key in prototypeMethods) prototype2method(prototypeMethods[key]); - - -module.exports = s; - -},{"./camelize":1,"./capitalize":2,"./chars":3,"./chop":4,"./classify":5,"./clean":6,"./count":7,"./dasherize":8,"./decapitalize":9,"./dedent":10,"./endsWith":11,"./escapeHTML":12,"./exports":13,"./helper/escapeRegExp":18,"./humanize":23,"./include":24,"./insert":25,"./isBlank":26,"./join":27,"./levenshtein":28,"./lines":29,"./lpad":30,"./lrpad":31,"./ltrim":32,"./naturalCmp":33,"./numberFormat":34,"./pad":35,"./pred":36,"./prune":37,"./quote":38,"./repeat":39,"./replaceAll":40,"./reverse":41,"./rpad":42,"./rtrim":43,"./slugify":44,"./splice":45,"./sprintf":46,"./startsWith":47,"./strLeft":48,"./strLeftBack":49,"./strRight":50,"./strRightBack":51,"./stripTags":52,"./succ":53,"./surround":54,"./swapCase":55,"./titleize":56,"./toBoolean":57,"./toNumber":58,"./toSentence":59,"./toSentenceSerial":60,"./trim":61,"./truncate":62,"./underscored":63,"./unescapeHTML":64,"./unquote":65,"./vsprintf":66,"./words":67}],15:[function(_dereq_,module,exports){ -var makeString = _dereq_('./makeString'); - -module.exports = function adjacent(str, direction) { - str = makeString(str); - if (str.length === 0) { - return ''; - } - return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length - 1) + direction); -}; - -},{"./makeString":20}],16:[function(_dereq_,module,exports){ -var escapeRegExp = _dereq_('./escapeRegExp'); - -module.exports = function defaultToWhiteSpace(characters) { - if (characters == null) - return '\\s'; - else if (characters.source) - return characters.source; - else - return '[' + escapeRegExp(characters) + ']'; -}; - -},{"./escapeRegExp":18}],17:[function(_dereq_,module,exports){ -/* We're explicitly defining the list of entities we want to escape. -nbsp is an HTML entity, but we don't want to escape all space characters in a string, hence its omission in this map. - -*/ -var escapeChars = { - '¢' : 'cent', - '£' : 'pound', - '¥' : 'yen', - '€': 'euro', - '©' :'copy', - '®' : 'reg', - '<' : 'lt', - '>' : 'gt', - '"' : 'quot', - '&' : 'amp', - "'": '#39' -}; - -module.exports = escapeChars; - -},{}],18:[function(_dereq_,module,exports){ -var makeString = _dereq_('./makeString'); - -module.exports = function escapeRegExp(str) { - return makeString(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -},{"./makeString":20}],19:[function(_dereq_,module,exports){ -/* -We're explicitly defining the list of entities that might see in escape HTML strings -*/ -var htmlEntities = { - nbsp: ' ', - cent: '¢', - pound: '£', - yen: '¥', - euro: '€', - copy: '©', - reg: '®', - lt: '<', - gt: '>', - quot: '"', - amp: '&', - apos: "'" -}; - -module.exports = htmlEntities; - -},{}],20:[function(_dereq_,module,exports){ -/** - * Ensure some object is a coerced to a string - **/ -module.exports = function makeString(object) { - if (object == null) return ''; - return '' + object; -}; - -},{}],21:[function(_dereq_,module,exports){ -module.exports = function strRepeat(str, qty){ - if (qty < 1) return ''; - var result = ''; - while (qty > 0) { - if (qty & 1) result += str; - qty >>= 1, str += str; - } - return result; -}; - -},{}],22:[function(_dereq_,module,exports){ -module.exports = function toPositive(number) { - return number < 0 ? 0 : (+number || 0); -}; - -},{}],23:[function(_dereq_,module,exports){ -var capitalize = _dereq_('./capitalize'); -var underscored = _dereq_('./underscored'); -var trim = _dereq_('./trim'); - -module.exports = function humanize(str) { - return capitalize(trim(underscored(str).replace(/_id$/, '').replace(/_/g, ' '))); -}; - -},{"./capitalize":2,"./trim":61,"./underscored":63}],24:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function include(str, needle) { - if (needle === '') return true; - return makeString(str).indexOf(needle) !== -1; -}; - -},{"./helper/makeString":20}],25:[function(_dereq_,module,exports){ -var splice = _dereq_('./splice'); - -module.exports = function insert(str, i, substr) { - return splice(str, i, 0, substr); -}; - -},{"./splice":45}],26:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function isBlank(str) { - return (/^\s*$/).test(makeString(str)); -}; - -},{"./helper/makeString":20}],27:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var slice = [].slice; - -module.exports = function join() { - var args = slice.call(arguments), - separator = args.shift(); - - return args.join(makeString(separator)); -}; - -},{"./helper/makeString":20}],28:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -/** - * Based on the implementation here: https://github.com/hiddentao/fast-levenshtein - */ -module.exports = function levenshtein(str1, str2) { - 'use strict'; - str1 = makeString(str1); - str2 = makeString(str2); - - // Short cut cases - if (str1 === str2) return 0; - if (!str1 || !str2) return Math.max(str1.length, str2.length); - - // two rows - var prevRow = new Array(str2.length + 1); - - // initialise previous row - for (var i = 0; i < prevRow.length; ++i) { - prevRow[i] = i; - } - - // calculate current row distance from previous row - for (i = 0; i < str1.length; ++i) { - var nextCol = i + 1; - - for (var j = 0; j < str2.length; ++j) { - var curCol = nextCol; - - // substution - nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 ); - // insertion - var tmp = curCol + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - // deletion - tmp = prevRow[j + 1] + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - - // copy current col value into previous (in preparation for next iteration) - prevRow[j] = curCol; - } - - // copy last col value into previous (in preparation for next iteration) - prevRow[j] = nextCol; - } - - return nextCol; -}; - -},{"./helper/makeString":20}],29:[function(_dereq_,module,exports){ -module.exports = function lines(str) { - if (str == null) return []; - return String(str).split(/\r?\n/); -}; - -},{}],30:[function(_dereq_,module,exports){ -var pad = _dereq_('./pad'); - -module.exports = function lpad(str, length, padStr) { - return pad(str, length, padStr); -}; - -},{"./pad":35}],31:[function(_dereq_,module,exports){ -var pad = _dereq_('./pad'); - -module.exports = function lrpad(str, length, padStr) { - return pad(str, length, padStr, 'both'); -}; - -},{"./pad":35}],32:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var defaultToWhiteSpace = _dereq_('./helper/defaultToWhiteSpace'); -var nativeTrimLeft = String.prototype.trimLeft; - -module.exports = function ltrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimLeft) return nativeTrimLeft.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],33:[function(_dereq_,module,exports){ -module.exports = function naturalCmp(str1, str2) { - if (str1 == str2) return 0; - if (!str1) return -1; - if (!str2) return 1; - - var cmpRegex = /(\.\d+|\d+|\D+)/g, - tokens1 = String(str1).match(cmpRegex), - tokens2 = String(str2).match(cmpRegex), - count = Math.min(tokens1.length, tokens2.length); - - for (var i = 0; i < count; i++) { - var a = tokens1[i], - b = tokens2[i]; - - if (a !== b) { - var num1 = +a; - var num2 = +b; - if (num1 === num1 && num2 === num2) { - return num1 > num2 ? 1 : -1; - } - return a < b ? -1 : 1; - } - } - - if (tokens1.length != tokens2.length) - return tokens1.length - tokens2.length; - - return str1 < str2 ? -1 : 1; -}; - -},{}],34:[function(_dereq_,module,exports){ -module.exports = function numberFormat(number, dec, dsep, tsep) { - if (isNaN(number) || number == null) return ''; - - number = number.toFixed(~~dec); - tsep = typeof tsep == 'string' ? tsep : ','; - - var parts = number.split('.'), - fnums = parts[0], - decimals = parts[1] ? (dsep || '.') + parts[1] : ''; - - return fnums.replace(/(\d)(?=(?:\d{3})+$)/g, '$1' + tsep) + decimals; -}; - -},{}],35:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var strRepeat = _dereq_('./helper/strRepeat'); - -module.exports = function pad(str, length, padStr, type) { - str = makeString(str); - length = ~~length; - - var padlen = 0; - - if (!padStr) - padStr = ' '; - else if (padStr.length > 1) - padStr = padStr.charAt(0); - - switch (type) { - case 'right': - padlen = length - str.length; - return str + strRepeat(padStr, padlen); - case 'both': - padlen = length - str.length; - return strRepeat(padStr, Math.ceil(padlen / 2)) + str + strRepeat(padStr, Math.floor(padlen / 2)); - default: // 'left' - padlen = length - str.length; - return strRepeat(padStr, padlen) + str; - } -}; - -},{"./helper/makeString":20,"./helper/strRepeat":21}],36:[function(_dereq_,module,exports){ -var adjacent = _dereq_('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, -1); -}; - -},{"./helper/adjacent":15}],37:[function(_dereq_,module,exports){ -/** - * _s.prune: a more elegant version of truncate - * prune extra chars, never leaving a half-chopped word. - * @author github.com/rwz - */ -var makeString = _dereq_('./helper/makeString'); -var rtrim = _dereq_('./rtrim'); - -module.exports = function prune(str, length, pruneStr) { - str = makeString(str); - length = ~~length; - pruneStr = pruneStr != null ? String(pruneStr) : '...'; - - if (str.length <= length) return str; - - var tmpl = function(c) { - return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' '; - }, - template = str.slice(0, length + 1).replace(/.(?=\W*\w*$)/g, tmpl); // 'Hello, world' -> 'HellAA AAAAA' - - if (template.slice(template.length - 2).match(/\w\w/)) - template = template.replace(/\s*\S+$/, ''); - else - template = rtrim(template.slice(0, template.length - 1)); - - return (template + pruneStr).length > str.length ? str : str.slice(0, template.length) + pruneStr; -}; - -},{"./helper/makeString":20,"./rtrim":43}],38:[function(_dereq_,module,exports){ -var surround = _dereq_('./surround'); - -module.exports = function quote(str, quoteChar) { - return surround(str, quoteChar || '"'); -}; - -},{"./surround":54}],39:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var strRepeat = _dereq_('./helper/strRepeat'); - -module.exports = function repeat(str, qty, separator) { - str = makeString(str); - - qty = ~~qty; - - // using faster implementation if separator is not needed; - if (separator == null) return strRepeat(str, qty); - - // this one is about 300x slower in Google Chrome - for (var repeat = []; qty > 0; repeat[--qty] = str) {} - return repeat.join(separator); -}; - -},{"./helper/makeString":20,"./helper/strRepeat":21}],40:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function replaceAll(str, find, replace, ignorecase) { - var flags = (ignorecase === true)?'gi':'g'; - var reg = new RegExp(find, flags); - - return makeString(str).replace(reg, replace); -}; - -},{"./helper/makeString":20}],41:[function(_dereq_,module,exports){ -var chars = _dereq_('./chars'); - -module.exports = function reverse(str) { - return chars(str).reverse().join(''); -}; - -},{"./chars":3}],42:[function(_dereq_,module,exports){ -var pad = _dereq_('./pad'); - -module.exports = function rpad(str, length, padStr) { - return pad(str, length, padStr, 'right'); -}; - -},{"./pad":35}],43:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var defaultToWhiteSpace = _dereq_('./helper/defaultToWhiteSpace'); -var nativeTrimRight = String.prototype.trimRight; - -module.exports = function rtrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimRight) return nativeTrimRight.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp(characters + '+$'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],44:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var defaultToWhiteSpace = _dereq_('./helper/defaultToWhiteSpace'); -var trim = _dereq_('./trim'); -var dasherize = _dereq_('./dasherize'); - -module.exports = function slugify(str) { - var from = "ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșšŝťțŭùúüűûñÿýçżźž", - to = "aaaaaaaaaccceeeeeghiiiijllnnoooooooossssttuuuuuunyyczzz", - regex = new RegExp(defaultToWhiteSpace(from), 'g'); - - str = makeString(str).toLowerCase().replace(regex, function(c){ - var index = from.indexOf(c); - return to.charAt(index) || '-'; - }); - - return trim(dasherize(str.replace(/[^\w\s-]/g, '-')), '-'); -}; - -},{"./dasherize":8,"./helper/defaultToWhiteSpace":16,"./helper/makeString":20,"./trim":61}],45:[function(_dereq_,module,exports){ -var chars = _dereq_('./chars'); - -module.exports = function splice(str, i, howmany, substr) { - var arr = chars(str); - arr.splice(~~i, ~~howmany, substr); - return arr.join(''); -}; - -},{"./chars":3}],46:[function(_dereq_,module,exports){ -// sprintf() for JavaScript 0.7-beta1 -// http://www.diveintojavascript.com/projects/javascript-sprintf -// -// Copyright (c) Alexandru Marasteanu -// All rights reserved. -var strRepeat = _dereq_('./helper/strRepeat'); -var toString = Object.prototype.toString; -var sprintf = (function() { - function get_type(variable) { - return toString.call(variable).slice(8, -1).toLowerCase(); - } - - var str_repeat = strRepeat; - - var str_format = function() { - if (!str_format.cache.hasOwnProperty(arguments[0])) { - str_format.cache[arguments[0]] = str_format.parse(arguments[0]); - } - return str_format.format.call(null, str_format.cache[arguments[0]], arguments); - }; - - str_format.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length; - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]); - if (node_type === 'string') { - output.push(parse_tree[i]); - } - else if (node_type === 'array') { - match = parse_tree[i]; // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor]; - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw new Error(sprintf('[_.sprintf] property "%s" does not exist', match[2][k])); - } - arg = arg[match[2][k]]; - } - } else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]]; - } - else { // positional argument (implicit) - arg = argv[cursor++]; - } - - if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) { - throw new Error(sprintf('[_.sprintf] expecting number but found %s', get_type(arg))); - } - switch (match[8]) { - case 'b': arg = arg.toString(2); break; - case 'c': arg = String.fromCharCode(arg); break; - case 'd': arg = parseInt(arg, 10); break; - case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break; - case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break; - case 'o': arg = arg.toString(8); break; - case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break; - case 'u': arg = Math.abs(arg); break; - case 'x': arg = arg.toString(16); break; - case 'X': arg = arg.toString(16).toUpperCase(); break; - } - arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg); - pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' '; - pad_length = match[6] - String(arg).length; - pad = match[6] ? str_repeat(pad_character, pad_length) : ''; - output.push(match[5] ? arg + pad : pad + arg); - } - } - return output.join(''); - }; - - str_format.cache = {}; - - str_format.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0; - while (_fmt) { - if ((match = /^[^\x25]+/.exec(_fmt)) !== null) { - parse_tree.push(match[0]); - } - else if ((match = /^\x25{2}/.exec(_fmt)) !== null) { - parse_tree.push('%'); - } - else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1; - var field_list = [], replacement_field = match[2], field_match = []; - if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { - if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else { - throw new Error('[_.sprintf] huh?'); - } - } - } - else { - throw new Error('[_.sprintf] huh?'); - } - match[2] = field_list; - } - else { - arg_names |= 2; - } - if (arg_names === 3) { - throw new Error('[_.sprintf] mixing positional and named placeholders is not (yet) supported'); - } - parse_tree.push(match); - } - else { - throw new Error('[_.sprintf] huh?'); - } - _fmt = _fmt.substring(match[0].length); - } - return parse_tree; - }; - - return str_format; -})(); - -module.exports = sprintf; - -},{"./helper/strRepeat":21}],47:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var toPositive = _dereq_('./helper/toPositive'); - -module.exports = function startsWith(str, starts, position) { - str = makeString(str); - starts = '' + starts; - position = position == null ? 0 : Math.min(toPositive(position), str.length); - return str.lastIndexOf(starts, position) === position; -}; - -},{"./helper/makeString":20,"./helper/toPositive":22}],48:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function strLeft(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; - -},{"./helper/makeString":20}],49:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function strLeftBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = str.lastIndexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; - -},{"./helper/makeString":20}],50:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function strRight(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; - -},{"./helper/makeString":20}],51:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function strRightBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.lastIndexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; - -},{"./helper/makeString":20}],52:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function stripTags(str) { - return makeString(str).replace(/<\/?[^>]+>/g, ''); -}; - -},{"./helper/makeString":20}],53:[function(_dereq_,module,exports){ -var adjacent = _dereq_('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, 1); -}; - -},{"./helper/adjacent":15}],54:[function(_dereq_,module,exports){ -module.exports = function surround(str, wrapper) { - return [wrapper, str, wrapper].join(''); -}; - -},{}],55:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function swapCase(str) { - return makeString(str).replace(/\S/g, function(c) { - return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase(); - }); -}; - -},{"./helper/makeString":20}],56:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function titleize(str) { - return makeString(str).toLowerCase().replace(/(?:^|\s|-)\S/g, function(c) { - return c.toUpperCase(); - }); -}; - -},{"./helper/makeString":20}],57:[function(_dereq_,module,exports){ -var trim = _dereq_('./trim'); - -function boolMatch(s, matchers) { - var i, matcher, down = s.toLowerCase(); - matchers = [].concat(matchers); - for (i = 0; i < matchers.length; i += 1) { - matcher = matchers[i]; - if (!matcher) continue; - if (matcher.test && matcher.test(s)) return true; - if (matcher.toLowerCase() === down) return true; - } -} - -module.exports = function toBoolean(str, trueValues, falseValues) { - if (typeof str === "number") str = "" + str; - if (typeof str !== "string") return !!str; - str = trim(str); - if (boolMatch(str, trueValues || ["true", "1"])) return true; - if (boolMatch(str, falseValues || ["false", "0"])) return false; -}; - -},{"./trim":61}],58:[function(_dereq_,module,exports){ -var trim = _dereq_('./trim'); - -module.exports = function toNumber(num, precision) { - if (num == null) return 0; - var factor = Math.pow(10, isFinite(precision) ? precision : 0); - return Math.round(num * factor) / factor; -}; - -},{"./trim":61}],59:[function(_dereq_,module,exports){ -var rtrim = _dereq_('./rtrim'); - -module.exports = function toSentence(array, separator, lastSeparator, serial) { - separator = separator || ', '; - lastSeparator = lastSeparator || ' and '; - var a = array.slice(), - lastMember = a.pop(); - - if (array.length > 2 && serial) lastSeparator = rtrim(separator) + lastSeparator; - - return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember; -}; - -},{"./rtrim":43}],60:[function(_dereq_,module,exports){ -var toSentence = _dereq_('./toSentence'); - -module.exports = function toSentenceSerial(array, sep, lastSep) { - return toSentence(array, sep, lastSep, true); -}; - -},{"./toSentence":59}],61:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var defaultToWhiteSpace = _dereq_('./helper/defaultToWhiteSpace'); -var nativeTrim = String.prototype.trim; - -module.exports = function trim(str, characters) { - str = makeString(str); - if (!characters && nativeTrim) return nativeTrim.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+|' + characters + '+$', 'g'), ''); -}; - -},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],62:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); - -module.exports = function truncate(str, length, truncateStr) { - str = makeString(str); - truncateStr = truncateStr || '...'; - length = ~~length; - return str.length > length ? str.slice(0, length) + truncateStr : str; -}; - -},{"./helper/makeString":20}],63:[function(_dereq_,module,exports){ -var trim = _dereq_('./trim'); - -module.exports = function underscored(str) { - return trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1_$2').replace(/[-\s]+/g, '_').toLowerCase(); -}; - -},{"./trim":61}],64:[function(_dereq_,module,exports){ -var makeString = _dereq_('./helper/makeString'); -var htmlEntities = _dereq_('./helper/htmlEntities'); - -module.exports = function unescapeHTML(str) { - return makeString(str).replace(/\&([^;]+);/g, function(entity, entityCode) { - var match; - - if (entityCode in htmlEntities) { - return htmlEntities[entityCode]; - } else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) { - return String.fromCharCode(parseInt(match[1], 16)); - } else if (match = entityCode.match(/^#(\d+)$/)) { - return String.fromCharCode(~~match[1]); - } else { - return entity; - } - }); -}; - -},{"./helper/htmlEntities":19,"./helper/makeString":20}],65:[function(_dereq_,module,exports){ -module.exports = function unquote(str, quoteChar) { - quoteChar = quoteChar || '"'; - if (str[0] === quoteChar && str[str.length - 1] === quoteChar) - return str.slice(1, str.length - 1); - else return str; -}; - -},{}],66:[function(_dereq_,module,exports){ -var sprintf = _dereq_('./sprintf'); - -module.exports = function vsprintf(fmt, argv) { - argv.unshift(fmt); - return sprintf.apply(null, argv); -}; - -},{"./sprintf":46}],67:[function(_dereq_,module,exports){ -var isBlank = _dereq_('./isBlank'); -var trim = _dereq_('./trim'); - -module.exports = function words(str, delimiter) { - if (isBlank(str)) return []; - return trim(str, delimiter).split(delimiter || /\s+/); -}; - -},{"./isBlank":26,"./trim":61}]},{},[14]) -(14) -}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.min.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.min.js deleted file mode 100644 index 8e4fb149..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/dist/underscore.string.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var r;"undefined"!=typeof window?r=window:"undefined"!=typeof global?r=global:"undefined"!=typeof self&&(r=self),r.s=e()}}(function(){return function e(r,t,n){function i(o,p){if(!t[o]){if(!r[o]){var u="function"==typeof require&&require;if(!p&&u)return u(o,!0);if(a)return a(o,!0);throw new Error("Cannot find module '"+o+"'")}var c=t[o]={exports:{}};r[o][0].call(c.exports,function(e){var t=r[o][1][e];return i(t?t:e)},c,c.exports,e,r,t,n)}return t[o].exports}for(var a="function"==typeof require&&require,o=0;o0?e.match(new RegExp(".{1,"+r+"}","g")):[e])}},{}],5:[function(e,r){var t=e("./capitalize"),n=e("./camelize"),i=e("./helper/makeString");r.exports=function(e){return e=i(e),t(n(e.replace(/[\W_]/g," ")).replace(/\s/g,""))}},{"./camelize":1,"./capitalize":2,"./helper/makeString":20}],6:[function(e,r){var t=e("./trim");r.exports=function(e){return t(e).replace(/\s+/g," ")}},{"./trim":61}],7:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){return e=t(e),r=t(r),0===e.length||0===r.length?0:e.split(r).length-1}},{"./helper/makeString":20}],8:[function(e,r){var t=e("./trim");r.exports=function(e){return t(e).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()}},{"./trim":61}],9:[function(e,r){var t=e("./helper/makeString");r.exports=function(e){return e=t(e),e.charAt(0).toLowerCase()+e.slice(1)}},{"./helper/makeString":20}],10:[function(e,r){function t(e){for(var r=e.match(/^[\s\\t]*/gm),t=r[0].length,n=1;n=0&&e.indexOf(r,i)===i}},{"./helper/makeString":20,"./helper/toPositive":22}],12:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/escapeChars"),i="[";for(var a in n)i+=a;i+="]";var o=new RegExp(i,"g");r.exports=function(e){return t(e).replace(o,function(e){return"&"+n[e]+";"})}},{"./helper/escapeChars":17,"./helper/makeString":20}],13:[function(e,r){r.exports=function(){var e={};for(var r in this)this.hasOwnProperty(r)&&!r.match(/^(?:include|contains|reverse|join)$/)&&(e[r]=this[r]);return e}},{}],14:[function(e,r){"use strict";function t(e){return this instanceof t?void(this._wrapped=e):new t(e)}function n(e,r){"function"==typeof r&&(t.prototype[e]=function(){var e=[this._wrapped].concat(Array.prototype.slice.call(arguments)),n=r.apply(null,e);return"string"==typeof n?new t(n):n})}function i(e){n(e,function(r){var t=Array.prototype.slice.call(arguments,1);return String.prototype[e].apply(r,t)})}t.VERSION="3.1.1",t.isBlank=e("./isBlank"),t.stripTags=e("./stripTags"),t.capitalize=e("./capitalize"),t.decapitalize=e("./decapitalize"),t.chop=e("./chop"),t.trim=e("./trim"),t.clean=e("./clean"),t.count=e("./count"),t.chars=e("./chars"),t.swapCase=e("./swapCase"),t.escapeHTML=e("./escapeHTML"),t.unescapeHTML=e("./unescapeHTML"),t.splice=e("./splice"),t.insert=e("./insert"),t.replaceAll=e("./replaceAll"),t.include=e("./include"),t.join=e("./join"),t.lines=e("./lines"),t.dedent=e("./dedent"),t.reverse=e("./reverse"),t.startsWith=e("./startsWith"),t.endsWith=e("./endsWith"),t.pred=e("./pred"),t.succ=e("./succ"),t.titleize=e("./titleize"),t.camelize=e("./camelize"),t.underscored=e("./underscored"),t.dasherize=e("./dasherize"),t.classify=e("./classify"),t.humanize=e("./humanize"),t.ltrim=e("./ltrim"),t.rtrim=e("./rtrim"),t.truncate=e("./truncate"),t.prune=e("./prune"),t.words=e("./words"),t.pad=e("./pad"),t.lpad=e("./lpad"),t.rpad=e("./rpad"),t.lrpad=e("./lrpad"),t.sprintf=e("./sprintf"),t.vsprintf=e("./vsprintf"),t.toNumber=e("./toNumber"),t.numberFormat=e("./numberFormat"),t.strRight=e("./strRight"),t.strRightBack=e("./strRightBack"),t.strLeft=e("./strLeft"),t.strLeftBack=e("./strLeftBack"),t.toSentence=e("./toSentence"),t.toSentenceSerial=e("./toSentenceSerial"),t.slugify=e("./slugify"),t.surround=e("./surround"),t.quote=e("./quote"),t.unquote=e("./unquote"),t.repeat=e("./repeat"),t.naturalCmp=e("./naturalCmp"),t.levenshtein=e("./levenshtein"),t.toBoolean=e("./toBoolean"),t.exports=e("./exports"),t.escapeRegExp=e("./helper/escapeRegExp"),t.strip=t.trim,t.lstrip=t.ltrim,t.rstrip=t.rtrim,t.center=t.lrpad,t.rjust=t.lpad,t.ljust=t.rpad,t.contains=t.include,t.q=t.quote,t.toBool=t.toBoolean,t.camelcase=t.camelize,t.prototype={value:function(){return this._wrapped}};for(var a in t)n(a,t[a]);n("tap",function(e,r){return r(e)});var o=["toUpperCase","toLowerCase","split","replace","slice","substring","substr","concat"];for(var a in o)i(o[a]);r.exports=t},{"./camelize":1,"./capitalize":2,"./chars":3,"./chop":4,"./classify":5,"./clean":6,"./count":7,"./dasherize":8,"./decapitalize":9,"./dedent":10,"./endsWith":11,"./escapeHTML":12,"./exports":13,"./helper/escapeRegExp":18,"./humanize":23,"./include":24,"./insert":25,"./isBlank":26,"./join":27,"./levenshtein":28,"./lines":29,"./lpad":30,"./lrpad":31,"./ltrim":32,"./naturalCmp":33,"./numberFormat":34,"./pad":35,"./pred":36,"./prune":37,"./quote":38,"./repeat":39,"./replaceAll":40,"./reverse":41,"./rpad":42,"./rtrim":43,"./slugify":44,"./splice":45,"./sprintf":46,"./startsWith":47,"./strLeft":48,"./strLeftBack":49,"./strRight":50,"./strRightBack":51,"./stripTags":52,"./succ":53,"./surround":54,"./swapCase":55,"./titleize":56,"./toBoolean":57,"./toNumber":58,"./toSentence":59,"./toSentenceSerial":60,"./trim":61,"./truncate":62,"./underscored":63,"./unescapeHTML":64,"./unquote":65,"./vsprintf":66,"./words":67}],15:[function(e,r){var t=e("./makeString");r.exports=function(e,r){return e=t(e),0===e.length?"":e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+r)}},{"./makeString":20}],16:[function(e,r){var t=e("./escapeRegExp");r.exports=function(e){return null==e?"\\s":e.source?e.source:"["+t(e)+"]"}},{"./escapeRegExp":18}],17:[function(e,r){var t={"¢":"cent","£":"pound","¥":"yen","€":"euro","©":"copy","®":"reg","<":"lt",">":"gt",'"':"quot","&":"amp","'":"#39"};r.exports=t},{}],18:[function(e,r){var t=e("./makeString");r.exports=function(e){return t(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}},{"./makeString":20}],19:[function(e,r){var t={nbsp:" ",cent:"¢",pound:"£",yen:"¥",euro:"€",copy:"©",reg:"®",lt:"<",gt:">",quot:'"',amp:"&",apos:"'"};r.exports=t},{}],20:[function(e,r){r.exports=function(e){return null==e?"":""+e}},{}],21:[function(e,r){r.exports=function(e,r){if(1>r)return"";for(var t="";r>0;)1&r&&(t+=e),r>>=1,e+=e;return t}},{}],22:[function(e,r){r.exports=function(e){return 0>e?0:+e||0}},{}],23:[function(e,r){var t=e("./capitalize"),n=e("./underscored"),i=e("./trim");r.exports=function(e){return t(i(n(e).replace(/_id$/,"").replace(/_/g," ")))}},{"./capitalize":2,"./trim":61,"./underscored":63}],24:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){return""===r?!0:-1!==t(e).indexOf(r)}},{"./helper/makeString":20}],25:[function(e,r){var t=e("./splice");r.exports=function(e,r,n){return t(e,r,0,n)}},{"./splice":45}],26:[function(e,r){var t=e("./helper/makeString");r.exports=function(e){return/^\s*$/.test(t(e))}},{"./helper/makeString":20}],27:[function(e,r){var t=e("./helper/makeString"),n=[].slice;r.exports=function(){var e=n.call(arguments),r=e.shift();return e.join(t(r))}},{"./helper/makeString":20}],28:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){"use strict";if(e=t(e),r=t(r),e===r)return 0;if(!e||!r)return Math.max(e.length,r.length);for(var n=new Array(r.length+1),i=0;iu&&(a=u),u=n[o+1]+1,a>u&&(a=u),n[o]=p}n[o]=a}return a}},{"./helper/makeString":20}],29:[function(e,r){r.exports=function(e){return null==e?[]:String(e).split(/\r?\n/)}},{}],30:[function(e,r){var t=e("./pad");r.exports=function(e,r,n){return t(e,r,n)}},{"./pad":35}],31:[function(e,r){var t=e("./pad");r.exports=function(e,r,n){return t(e,r,n,"both")}},{"./pad":35}],32:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/defaultToWhiteSpace"),i=String.prototype.trimLeft;r.exports=function(e,r){return e=t(e),!r&&i?i.call(e):(r=n(r),e.replace(new RegExp("^"+r+"+"),""))}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],33:[function(e,r){r.exports=function(e,r){if(e==r)return 0;if(!e)return-1;if(!r)return 1;for(var t=/(\.\d+|\d+|\D+)/g,n=String(e).match(t),i=String(r).match(t),a=Math.min(n.length,i.length),o=0;a>o;o++){var p=n[o],u=i[o];if(p!==u){var c=+p,s=+u;return c===c&&s===s?c>s?1:-1:u>p?-1:1}}return n.length!=i.length?n.length-i.length:r>e?-1:1}},{}],34:[function(e,r){r.exports=function(e,r,t,n){if(isNaN(e)||null==e)return"";e=e.toFixed(~~r),n="string"==typeof n?n:",";var i=e.split("."),a=i[0],o=i[1]?(t||".")+i[1]:"";return a.replace(/(\d)(?=(?:\d{3})+$)/g,"$1"+n)+o}},{}],35:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/strRepeat");r.exports=function(e,r,i,a){e=t(e),r=~~r;var o=0;switch(i?i.length>1&&(i=i.charAt(0)):i=" ",a){case"right":return o=r-e.length,e+n(i,o);case"both":return o=r-e.length,n(i,Math.ceil(o/2))+e+n(i,Math.floor(o/2));default:return o=r-e.length,n(i,o)+e}}},{"./helper/makeString":20,"./helper/strRepeat":21}],36:[function(e,r){var t=e("./helper/adjacent");r.exports=function(e){return t(e,-1)}},{"./helper/adjacent":15}],37:[function(e,r){var t=e("./helper/makeString"),n=e("./rtrim");r.exports=function(e,r,i){if(e=t(e),r=~~r,i=null!=i?String(i):"...",e.length<=r)return e;var a=function(e){return e.toUpperCase()!==e.toLowerCase()?"A":" "},o=e.slice(0,r+1).replace(/.(?=\W*\w*$)/g,a);return o=o.slice(o.length-2).match(/\w\w/)?o.replace(/\s*\S+$/,""):n(o.slice(0,o.length-1)),(o+i).length>e.length?e:e.slice(0,o.length)+i}},{"./helper/makeString":20,"./rtrim":43}],38:[function(e,r){var t=e("./surround");r.exports=function(e,r){return t(e,r||'"')}},{"./surround":54}],39:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/strRepeat");r.exports=function i(e,r,a){if(e=t(e),r=~~r,null==a)return n(e,r);for(var i=[];r>0;i[--r]=e);return i.join(a)}},{"./helper/makeString":20,"./helper/strRepeat":21}],40:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r,n,i){var a=i===!0?"gi":"g",o=new RegExp(r,a);return t(e).replace(o,n)}},{"./helper/makeString":20}],41:[function(e,r){var t=e("./chars");r.exports=function(e){return t(e).reverse().join("")}},{"./chars":3}],42:[function(e,r){var t=e("./pad");r.exports=function(e,r,n){return t(e,r,n,"right")}},{"./pad":35}],43:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/defaultToWhiteSpace"),i=String.prototype.trimRight;r.exports=function(e,r){return e=t(e),!r&&i?i.call(e):(r=n(r),e.replace(new RegExp(r+"+$"),""))}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],44:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/defaultToWhiteSpace"),i=e("./trim"),a=e("./dasherize");r.exports=function(e){var r="ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșšŝťțŭùúüűûñÿýçżźž",o="aaaaaaaaaccceeeeeghiiiijllnnoooooooossssttuuuuuunyyczzz",p=new RegExp(n(r),"g");return e=t(e).toLowerCase().replace(p,function(e){var t=r.indexOf(e);return o.charAt(t)||"-"}),i(a(e.replace(/[^\w\s-]/g,"-")),"-")}},{"./dasherize":8,"./helper/defaultToWhiteSpace":16,"./helper/makeString":20,"./trim":61}],45:[function(e,r){var t=e("./chars");r.exports=function(e,r,n,i){var a=t(e);return a.splice(~~r,~~n,i),a.join("")}},{"./chars":3}],46:[function(e,r){var t=e("./helper/strRepeat"),n=Object.prototype.toString,i=function(){function e(e){return n.call(e).slice(8,-1).toLowerCase()}var r=t,a=function(){return a.cache.hasOwnProperty(arguments[0])||(a.cache[arguments[0]]=a.parse(arguments[0])),a.format.call(null,a.cache[arguments[0]],arguments)};return a.format=function(t,n){var a,o,p,u,c,s,l,f=1,h=t.length,g="",m=[];for(o=0;h>o;o++)if(g=e(t[o]),"string"===g)m.push(t[o]);else if("array"===g){if(u=t[o],u[2])for(a=n[f],p=0;p=0?"+"+a:a,s=u[4]?"0"==u[4]?"0":u[4].charAt(1):" ",l=u[6]-String(a).length,c=u[6]?r(s,l):"",m.push(u[5]?a+c:c+a)}return m.join("")},a.cache={},a.parse=function(e){for(var r=e,t=[],n=[],i=0;r;){if(null!==(t=/^[^\x25]+/.exec(r)))n.push(t[0]);else if(null!==(t=/^\x25{2}/.exec(r)))n.push("%");else{if(null===(t=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(r)))throw new Error("[_.sprintf] huh?");if(t[2]){i|=1;var a=[],o=t[2],p=[];if(null===(p=/^([a-z_][a-z_\d]*)/i.exec(o)))throw new Error("[_.sprintf] huh?");for(a.push(p[1]);""!==(o=o.substring(p[0].length));)if(null!==(p=/^\.([a-z_][a-z_\d]*)/i.exec(o)))a.push(p[1]);else{if(null===(p=/^\[(\d+)\]/.exec(o)))throw new Error("[_.sprintf] huh?");a.push(p[1])}t[2]=a}else i|=2;if(3===i)throw new Error("[_.sprintf] mixing positional and named placeholders is not (yet) supported");n.push(t)}r=r.substring(t[0].length)}return n},a}();r.exports=i},{"./helper/strRepeat":21}],47:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/toPositive");r.exports=function(e,r,i){return e=t(e),r=""+r,i=null==i?0:Math.min(n(i),e.length),e.lastIndexOf(r,i)===i}},{"./helper/makeString":20,"./helper/toPositive":22}],48:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){e=t(e),r=t(r);var n=r?e.indexOf(r):-1;return~n?e.slice(0,n):e}},{"./helper/makeString":20}],49:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){e=t(e),r=t(r);var n=e.lastIndexOf(r);return~n?e.slice(0,n):e}},{"./helper/makeString":20}],50:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){e=t(e),r=t(r);var n=r?e.indexOf(r):-1;return~n?e.slice(n+r.length,e.length):e}},{"./helper/makeString":20}],51:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r){e=t(e),r=t(r);var n=r?e.lastIndexOf(r):-1;return~n?e.slice(n+r.length,e.length):e}},{"./helper/makeString":20}],52:[function(e,r){var t=e("./helper/makeString");r.exports=function(e){return t(e).replace(/<\/?[^>]+>/g,"")}},{"./helper/makeString":20}],53:[function(e,r){var t=e("./helper/adjacent");r.exports=function(e){return t(e,1)}},{"./helper/adjacent":15}],54:[function(e,r){r.exports=function(e,r){return[r,e,r].join("")}},{}],55:[function(e,r){var t=e("./helper/makeString");r.exports=function(e){return t(e).replace(/\S/g,function(e){return e===e.toUpperCase()?e.toLowerCase():e.toUpperCase()})}},{"./helper/makeString":20}],56:[function(e,r){var t=e("./helper/makeString");r.exports=function(e){return t(e).toLowerCase().replace(/(?:^|\s|-)\S/g,function(e){return e.toUpperCase()})}},{"./helper/makeString":20}],57:[function(e,r){function t(e,r){var t,n,i=e.toLowerCase();for(r=[].concat(r),t=0;t2&&i&&(n=t(r)+n),a.length?a.join(r)+n+o:o}},{"./rtrim":43}],60:[function(e,r){var t=e("./toSentence");r.exports=function(e,r,n){return t(e,r,n,!0)}},{"./toSentence":59}],61:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/defaultToWhiteSpace"),i=String.prototype.trim;r.exports=function(e,r){return e=t(e),!r&&i?i.call(e):(r=n(r),e.replace(new RegExp("^"+r+"+|"+r+"+$","g"),""))}},{"./helper/defaultToWhiteSpace":16,"./helper/makeString":20}],62:[function(e,r){var t=e("./helper/makeString");r.exports=function(e,r,n){return e=t(e),n=n||"...",r=~~r,e.length>r?e.slice(0,r)+n:e}},{"./helper/makeString":20}],63:[function(e,r){var t=e("./trim");r.exports=function(e){return t(e).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()}},{"./trim":61}],64:[function(e,r){var t=e("./helper/makeString"),n=e("./helper/htmlEntities");r.exports=function(e){return t(e).replace(/\&([^;]+);/g,function(e,r){var t;return r in n?n[r]:(t=r.match(/^#x([\da-fA-F]+)$/))?String.fromCharCode(parseInt(t[1],16)):(t=r.match(/^#(\d+)$/))?String.fromCharCode(~~t[1]):e})}},{"./helper/htmlEntities":19,"./helper/makeString":20}],65:[function(e,r){r.exports=function(e,r){return r=r||'"',e[0]===r&&e[e.length-1]===r?e.slice(1,e.length-1):e}},{}],66:[function(e,r){var t=e("./sprintf");r.exports=function(e,r){return r.unshift(e),t.apply(null,r)}},{"./sprintf":46}],67:[function(e,r){var t=e("./isBlank"),n=e("./trim");r.exports=function(e,r){return t(e)?[]:n(e,r).split(r||/\s+/)}},{"./isBlank":26,"./trim":61}]},{},[14])(14)}); \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/endsWith.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/endsWith.js deleted file mode 100644 index c4526036..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/endsWith.js +++ /dev/null @@ -1,13 +0,0 @@ -var makeString = require('./helper/makeString'); -var toPositive = require('./helper/toPositive'); - -module.exports = function endsWith(str, ends, position) { - str = makeString(str); - ends = '' + ends; - if (typeof position == 'undefined') { - position = str.length - ends.length; - } else { - position = Math.min(toPositive(position), str.length) - ends.length; - } - return position >= 0 && str.indexOf(ends, position) === position; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/escapeHTML.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/escapeHTML.js deleted file mode 100644 index 1eae2591..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/escapeHTML.js +++ /dev/null @@ -1,18 +0,0 @@ -var makeString = require('./helper/makeString'); -var escapeChars = require('./helper/escapeChars'); -var reversedEscapeChars = {}; - -var regexString = "["; -for(var key in escapeChars) { - regexString += key; -} -regexString += "]"; - -var regex = new RegExp( regexString, 'g'); - -module.exports = function escapeHTML(str) { - - return makeString(str).replace(regex, function(m) { - return '&' + escapeChars[m] + ';'; - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/exports.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/exports.js deleted file mode 100644 index e8d9676e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/exports.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = function() { - var result = {}; - - for (var prop in this) { - if (!this.hasOwnProperty(prop) || prop.match(/^(?:include|contains|reverse|join)$/)) continue; - result[prop] = this[prop]; - } - - return result; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/gulpfile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/gulpfile.js deleted file mode 100644 index 0f8f250f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/gulpfile.js +++ /dev/null @@ -1,89 +0,0 @@ -var gulp = require('gulp-param')(require('gulp'), process.argv), - mocha = require("gulp-mocha"), - istanbul = require('gulp-istanbul'), - bench = require('gulp-bench'), - uglify = require('gulp-uglify'), - rimraf = require('gulp-rimraf'), - bump = require('gulp-bump'), - replace = require('gulp-replace'), - rename = require('gulp-rename'), - browserify = require('gulp-browserify'), - SRC = 'index.js', - DEST = 'dist', - SRC_COMPILED = 'underscore.string.js', - MIN_FILE = 'underscore.string.min.js', - VERSION_FILES = ['./package.json', './component.json', './bower.json']; - VERSION_FILES_JS = [SRC, 'package.js']; - -gulp.task('test', ['browserify'], function(cov) { - var reporters = ['html']; - - if (cov) { - reporters.push('text'); - } else { - reporters.push('text-summary'); - } - - return gulp.src(['*.js', 'helper/*.js']) - .pipe(istanbul()) - .pipe(istanbul.hookRequire()) - .on('finish', function () { - return gulp.src(['tests/*.js']) - .pipe(mocha({ - ui: 'qunit', - reporter: 'dot' - })) - .pipe(istanbul.writeReports({ - reporters: reporters - })); - }); -}); - -gulp.task('bench', ['browserify'], function(func) { - func = func || '*'; - return gulp.src('bench/'+ func + '.js') - .pipe(bench()); -}); - -gulp.task('browserify', function() { - return gulp.src(SRC) - .pipe(browserify({ - detectGlobals: true, - standalone: 's' - })) - .pipe(rename('underscore.string.js')) - .pipe(gulp.dest(DEST)); -}); - -gulp.task('clean', function() { - return gulp.src(DEST) - .pipe(rimraf()); -}); - -gulp.task('bump-in-js', function(semver) { - return gulp.src(VERSION_FILES_JS) - .pipe(replace(/(version?\s?=?\:?\s\')([\d\.]*)\'/gi, '$1' + semver + "'")) - .pipe(gulp.dest('./')); -}); - -// usage: gulp bump -s <% Version %> -// usage: gulp bump --semver <% Version %> -gulp.task('bump', ['bump-in-js'], function(semver) { - if (typeof semver !== 'string' || semver.length <= 0) { - console.error('pass a new version `gulp bump --semver 2.4.1`'); - process.exit(1); - } - - return gulp.src(VERSION_FILES) - .pipe(bump({ - version: semver - })) - .pipe(gulp.dest('./')); -}); - -gulp.task('build', ['test', 'clean'], function() { - gulp.src(DEST + '/' + SRC_COMPILED) - .pipe(uglify()) - .pipe(rename(MIN_FILE)) - .pipe(gulp.dest(DEST)); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/adjacent.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/adjacent.js deleted file mode 100644 index bd26013d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/adjacent.js +++ /dev/null @@ -1,9 +0,0 @@ -var makeString = require('./makeString'); - -module.exports = function adjacent(str, direction) { - str = makeString(str); - if (str.length === 0) { - return ''; - } - return str.slice(0, -1) + String.fromCharCode(str.charCodeAt(str.length - 1) + direction); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/defaultToWhiteSpace.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/defaultToWhiteSpace.js deleted file mode 100644 index 0cd9f068..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/defaultToWhiteSpace.js +++ /dev/null @@ -1,10 +0,0 @@ -var escapeRegExp = require('./escapeRegExp'); - -module.exports = function defaultToWhiteSpace(characters) { - if (characters == null) - return '\\s'; - else if (characters.source) - return characters.source; - else - return '[' + escapeRegExp(characters) + ']'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeChars.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeChars.js deleted file mode 100644 index 3aabcfea..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeChars.js +++ /dev/null @@ -1,19 +0,0 @@ -/* We're explicitly defining the list of entities we want to escape. -nbsp is an HTML entity, but we don't want to escape all space characters in a string, hence its omission in this map. - -*/ -var escapeChars = { - '¢' : 'cent', - '£' : 'pound', - '¥' : 'yen', - '€': 'euro', - '©' :'copy', - '®' : 'reg', - '<' : 'lt', - '>' : 'gt', - '"' : 'quot', - '&' : 'amp', - "'": '#39' -}; - -module.exports = escapeChars; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeRegExp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeRegExp.js deleted file mode 100644 index 01097fb1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/escapeRegExp.js +++ /dev/null @@ -1,5 +0,0 @@ -var makeString = require('./makeString'); - -module.exports = function escapeRegExp(str) { - return makeString(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/htmlEntities.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/htmlEntities.js deleted file mode 100644 index 7bd74cb1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/htmlEntities.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -We're explicitly defining the list of entities that might see in escape HTML strings -*/ -var htmlEntities = { - nbsp: ' ', - cent: '¢', - pound: '£', - yen: '¥', - euro: '€', - copy: '©', - reg: '®', - lt: '<', - gt: '>', - quot: '"', - amp: '&', - apos: "'" -}; - -module.exports = htmlEntities; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/makeString.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/makeString.js deleted file mode 100644 index 3b279abd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/makeString.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Ensure some object is a coerced to a string - **/ -module.exports = function makeString(object) { - if (object == null) return ''; - return '' + object; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/strRepeat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/strRepeat.js deleted file mode 100644 index b60d8760..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/strRepeat.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = function strRepeat(str, qty){ - if (qty < 1) return ''; - var result = ''; - while (qty > 0) { - if (qty & 1) result += str; - qty >>= 1, str += str; - } - return result; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/toPositive.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/toPositive.js deleted file mode 100644 index 6dda0a3e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/helper/toPositive.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function toPositive(number) { - return number < 0 ? 0 : (+number || 0); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/humanize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/humanize.js deleted file mode 100644 index 8f82d072..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/humanize.js +++ /dev/null @@ -1,7 +0,0 @@ -var capitalize = require('./capitalize'); -var underscored = require('./underscored'); -var trim = require('./trim'); - -module.exports = function humanize(str) { - return capitalize(trim(underscored(str).replace(/_id$/, '').replace(/_/g, ' '))); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/include.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/include.js deleted file mode 100644 index a2e910f7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/include.js +++ /dev/null @@ -1,6 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function include(str, needle) { - if (needle === '') return true; - return makeString(str).indexOf(needle) !== -1; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/index.js deleted file mode 100644 index 28998a75..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/index.js +++ /dev/null @@ -1,136 +0,0 @@ -// Underscore.string -// (c) 2010 Esa-Matti Suuronen -// Underscore.string is freely distributable under the terms of the MIT license. -// Documentation: https://github.com/epeli/underscore.string -// Some code is borrowed from MooTools and Alexandru Marasteanu. -// Version '3.1.1' - -'use strict'; - -function s(value) { - /* jshint validthis: true */ - if (!(this instanceof s)) return new s(value); - this._wrapped = value; -} - -s.VERSION = '3.1.1'; - -s.isBlank = require('./isBlank'); -s.stripTags = require('./stripTags'); -s.capitalize = require('./capitalize'); -s.decapitalize = require('./decapitalize'); -s.chop = require('./chop'); -s.trim = require('./trim'); -s.clean = require('./clean'); -s.count = require('./count'); -s.chars = require('./chars'); -s.swapCase = require('./swapCase'); -s.escapeHTML = require('./escapeHTML'); -s.unescapeHTML = require('./unescapeHTML'); -s.splice = require('./splice'); -s.insert = require('./insert'); -s.replaceAll = require('./replaceAll'); -s.include = require('./include'); -s.join = require('./join'); -s.lines = require('./lines'); -s.dedent = require('./dedent'); -s.reverse = require('./reverse'); -s.startsWith = require('./startsWith'); -s.endsWith = require('./endsWith'); -s.pred = require('./pred'); -s.succ = require('./succ'); -s.titleize = require('./titleize'); -s.camelize = require('./camelize'); -s.underscored = require('./underscored'); -s.dasherize = require('./dasherize'); -s.classify = require('./classify'); -s.humanize = require('./humanize'); -s.ltrim = require('./ltrim'); -s.rtrim = require('./rtrim'); -s.truncate = require('./truncate'); -s.prune = require('./prune'); -s.words = require('./words'); -s.pad = require('./pad'); -s.lpad = require('./lpad'); -s.rpad = require('./rpad'); -s.lrpad = require('./lrpad'); -s.sprintf = require('./sprintf'); -s.vsprintf = require('./vsprintf'); -s.toNumber = require('./toNumber'); -s.numberFormat = require('./numberFormat'); -s.strRight = require('./strRight'); -s.strRightBack = require('./strRightBack'); -s.strLeft = require('./strLeft'); -s.strLeftBack = require('./strLeftBack'); -s.toSentence = require('./toSentence'); -s.toSentenceSerial = require('./toSentenceSerial'); -s.slugify = require('./slugify'); -s.surround = require('./surround'); -s.quote = require('./quote'); -s.unquote = require('./unquote'); -s.repeat = require('./repeat'); -s.naturalCmp = require('./naturalCmp'); -s.levenshtein = require('./levenshtein'); -s.toBoolean = require('./toBoolean'); -s.exports = require('./exports'); -s.escapeRegExp = require('./helper/escapeRegExp'); - -// Aliases -s.strip = s.trim; -s.lstrip = s.ltrim; -s.rstrip = s.rtrim; -s.center = s.lrpad; -s.rjust = s.lpad; -s.ljust = s.rpad; -s.contains = s.include; -s.q = s.quote; -s.toBool = s.toBoolean; -s.camelcase = s.camelize; - - -// Implement chaining -s.prototype = { - value: function value() { - return this._wrapped; - } -}; - -function fn2method(key, fn) { - if (typeof fn !== "function") return; - s.prototype[key] = function() { - var args = [this._wrapped].concat(Array.prototype.slice.call(arguments)); - var res = fn.apply(null, args); - // if the result is non-string stop the chain and return the value - return typeof res === 'string' ? new s(res) : res; - }; -} - -// Copy functions to instance methods for chaining -for (var key in s) fn2method(key, s[key]); - -fn2method("tap", function tap(string, fn) { - return fn(string); -}); - -function prototype2method(methodName) { - fn2method(methodName, function(context) { - var args = Array.prototype.slice.call(arguments, 1); - return String.prototype[methodName].apply(context, args); - }); -} - -var prototypeMethods = [ - "toUpperCase", - "toLowerCase", - "split", - "replace", - "slice", - "substring", - "substr", - "concat" -]; - -for (var key in prototypeMethods) prototype2method(prototypeMethods[key]); - - -module.exports = s; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/insert.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/insert.js deleted file mode 100644 index 1c99c3b1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/insert.js +++ /dev/null @@ -1,5 +0,0 @@ -var splice = require('./splice'); - -module.exports = function insert(str, i, substr) { - return splice(str, i, 0, substr); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/isBlank.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/isBlank.js deleted file mode 100644 index 386e8198..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/isBlank.js +++ /dev/null @@ -1,5 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function isBlank(str) { - return (/^\s*$/).test(makeString(str)); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/join.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/join.js deleted file mode 100644 index b1a18ca3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/join.js +++ /dev/null @@ -1,9 +0,0 @@ -var makeString = require('./helper/makeString'); -var slice = [].slice; - -module.exports = function join() { - var args = slice.call(arguments), - separator = args.shift(); - - return args.join(makeString(separator)); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/levenshtein.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/levenshtein.js deleted file mode 100644 index 85f220c1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/levenshtein.js +++ /dev/null @@ -1,52 +0,0 @@ -var makeString = require('./helper/makeString'); - -/** - * Based on the implementation here: https://github.com/hiddentao/fast-levenshtein - */ -module.exports = function levenshtein(str1, str2) { - 'use strict'; - str1 = makeString(str1); - str2 = makeString(str2); - - // Short cut cases - if (str1 === str2) return 0; - if (!str1 || !str2) return Math.max(str1.length, str2.length); - - // two rows - var prevRow = new Array(str2.length + 1); - - // initialise previous row - for (var i = 0; i < prevRow.length; ++i) { - prevRow[i] = i; - } - - // calculate current row distance from previous row - for (i = 0; i < str1.length; ++i) { - var nextCol = i + 1; - - for (var j = 0; j < str2.length; ++j) { - var curCol = nextCol; - - // substution - nextCol = prevRow[j] + ( (str1.charAt(i) === str2.charAt(j)) ? 0 : 1 ); - // insertion - var tmp = curCol + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - // deletion - tmp = prevRow[j + 1] + 1; - if (nextCol > tmp) { - nextCol = tmp; - } - - // copy current col value into previous (in preparation for next iteration) - prevRow[j] = curCol; - } - - // copy last col value into previous (in preparation for next iteration) - prevRow[j] = nextCol; - } - - return nextCol; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lines.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lines.js deleted file mode 100644 index 12f4da32..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lines.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = function lines(str) { - if (str == null) return []; - return String(str).split(/\r?\n/); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lpad.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lpad.js deleted file mode 100644 index ada8c7e5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lpad.js +++ /dev/null @@ -1,5 +0,0 @@ -var pad = require('./pad'); - -module.exports = function lpad(str, length, padStr) { - return pad(str, length, padStr); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lrpad.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lrpad.js deleted file mode 100644 index e3162b0c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/lrpad.js +++ /dev/null @@ -1,5 +0,0 @@ -var pad = require('./pad'); - -module.exports = function lrpad(str, length, padStr) { - return pad(str, length, padStr, 'both'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/ltrim.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/ltrim.js deleted file mode 100644 index 858936e4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/ltrim.js +++ /dev/null @@ -1,10 +0,0 @@ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrimLeft = String.prototype.trimLeft; - -module.exports = function ltrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimLeft) return nativeTrimLeft.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+'), ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-post.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-post.js deleted file mode 100644 index 3f38d8dd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-post.js +++ /dev/null @@ -1,2 +0,0 @@ -// s will be picked up by Meteor and exported -s = module.exports; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-pre.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-pre.js deleted file mode 100644 index e692bc30..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/meteor-pre.js +++ /dev/null @@ -1,6 +0,0 @@ -// Defining this will trick dist/underscore.string.js into putting its exports into module.exports -// Credit to Tim Heckel for this trick - see https://github.com/TimHeckel/meteor-underscore-string -module = {}; - -// This also needed, otherwise above doesn't work??? -exports = {}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/naturalCmp.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/naturalCmp.js deleted file mode 100644 index 7cb94e6f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/naturalCmp.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = function naturalCmp(str1, str2) { - if (str1 == str2) return 0; - if (!str1) return -1; - if (!str2) return 1; - - var cmpRegex = /(\.\d+|\d+|\D+)/g, - tokens1 = String(str1).match(cmpRegex), - tokens2 = String(str2).match(cmpRegex), - count = Math.min(tokens1.length, tokens2.length); - - for (var i = 0; i < count; i++) { - var a = tokens1[i], - b = tokens2[i]; - - if (a !== b) { - var num1 = +a; - var num2 = +b; - if (num1 === num1 && num2 === num2) { - return num1 > num2 ? 1 : -1; - } - return a < b ? -1 : 1; - } - } - - if (tokens1.length != tokens2.length) - return tokens1.length - tokens2.length; - - return str1 < str2 ? -1 : 1; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/numberFormat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/numberFormat.js deleted file mode 100644 index 6a681fee..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/numberFormat.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = function numberFormat(number, dec, dsep, tsep) { - if (isNaN(number) || number == null) return ''; - - number = number.toFixed(~~dec); - tsep = typeof tsep == 'string' ? tsep : ','; - - var parts = number.split('.'), - fnums = parts[0], - decimals = parts[1] ? (dsep || '.') + parts[1] : ''; - - return fnums.replace(/(\d)(?=(?:\d{3})+$)/g, '$1' + tsep) + decimals; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.js deleted file mode 100644 index 0bad35a6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.js +++ /dev/null @@ -1,16 +0,0 @@ -// package metadata file for Meteor.js - -Package.describe({ - name: 'underscorestring:underscore.string', - summary: 'underscore.string (official): String manipulation extensions for Underscore.js javascript library.', - version: '3.1.1', - git: 'https://github.com/epeli/underscore.string.git', - documentation: 'README.markdown' -}); - - -Package.onUse(function (api) { - api.versionsFrom('METEOR@1.0'); - api.addFiles(['meteor-pre.js','dist/underscore.string.js','meteor-post.js']); - api.export("s"); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.json deleted file mode 100644 index b89c3717..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/package.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_args": [ - [ - "underscore.string@~3.1.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/tslint" - ] - ], - "_from": "underscore.string@>=3.1.1 <3.2.0", - "_id": "underscore.string@3.1.1", - "_inCache": true, - "_installable": true, - "_location": "/underscore.string", - "_nodeVersion": "1.1.0", - "_npmUser": { - "email": "schtoeffel@gmail.com", - "name": "schtoeffel" - }, - "_npmVersion": "2.5.1", - "_phantomChildren": {}, - "_requested": { - "name": "underscore.string", - "raw": "underscore.string@~3.1.1", - "rawSpec": "~3.1.1", - "scope": null, - "spec": ">=3.1.1 <3.2.0", - "type": "range" - }, - "_requiredBy": [ - "/tslint" - ], - "_resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.1.1.tgz", - "_shasum": "0cdd6bcad0c046fd7663d305d8a785b5da10f335", - "_shrinkwrap": null, - "_spec": "underscore.string@~3.1.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/tslint", - "bugs": { - "url": "https://github.com/epeli/underscore.string/issues" - }, - "contributors": [ - { - "email": "esa-matti@suuronen.org", - "name": "Esa-Matti Suuronen", - "url": "http://esa-matti.suuronen.org/" - }, - { - "email": "edtsech@gmail.com", - "name": "Edward Tsech" - }, - { - "email": "pavel@pravosud.com", - "name": "Pavel Pravosud", - "url": "" - }, - { - "email": "kossnocorp@gmail.com", - "name": "Sasha Koss", - "url": "http://koss.nocorp.me/" - }, - { - "email": "dronnikov@gmail.com", - "name": "Vladimir Dronnikov" - }, - { - "email": "https://github.com/kruckenb", - "name": "Pete Kruckenberg", - "url": "" - }, - { - "email": "paul@chavard.net", - "name": "Paul Chavard", - "url": "" - }, - { - "email": "coj@funkatron.com", - "name": "Ed Finkler", - "url": "" - } - ], - "dependencies": {}, - "description": "String manipulation extensions for Underscore.js javascript library.", - "devDependencies": { - "gulp": "^3.8.11", - "gulp-bench": "^1.1.0", - "gulp-browserify": "~0.5.0", - "gulp-bump": "~0.1.11", - "gulp-istanbul": "^0.6.0", - "gulp-mocha": "^2.0.0", - "gulp-param": "~0.6.3", - "gulp-rename": "~1.2.0", - "gulp-replace": "~0.5.0", - "gulp-rimraf": "^0.1.1", - "gulp-uglify": "~1.0.1", - "mocha": "^2.1.0", - "underscore": "^1.7.0" - }, - "directories": { - "lib": "./" - }, - "dist": { - "shasum": "0cdd6bcad0c046fd7663d305d8a785b5da10f335", - "tarball": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.1.1.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "ea91a4425a2ae2bb915c7e72c2b2b2dc464a63c4", - "homepage": "http://epeli.github.com/underscore.string/", - "jshintConfig": { - "browser": true, - "globals": { - "s": true - }, - "node": true, - "qunit": true - }, - "keywords": [ - "underscore", - "string" - ], - "license": "MIT", - "main": "./index.js", - "maintainers": [ - { - "email": "edtsech@gmail.com", - "name": "edtsech" - }, - { - "email": "rwz@duckroll.ru", - "name": "rwz" - }, - { - "email": "esa-matti@suuronen.org", - "name": "epeli" - }, - { - "email": "schtoeffel@gmail.com", - "name": "schtoeffel" - } - ], - "name": "underscore.string", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/epeli/underscore.string.git" - }, - "scripts": { - "test": "gulp test" - }, - "version": "3.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pad.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pad.js deleted file mode 100644 index ae853e0d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pad.js +++ /dev/null @@ -1,26 +0,0 @@ -var makeString = require('./helper/makeString'); -var strRepeat = require('./helper/strRepeat'); - -module.exports = function pad(str, length, padStr, type) { - str = makeString(str); - length = ~~length; - - var padlen = 0; - - if (!padStr) - padStr = ' '; - else if (padStr.length > 1) - padStr = padStr.charAt(0); - - switch (type) { - case 'right': - padlen = length - str.length; - return str + strRepeat(padStr, padlen); - case 'both': - padlen = length - str.length; - return strRepeat(padStr, Math.ceil(padlen / 2)) + str + strRepeat(padStr, Math.floor(padlen / 2)); - default: // 'left' - padlen = length - str.length; - return strRepeat(padStr, padlen) + str; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pred.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pred.js deleted file mode 100644 index a123701e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/pred.js +++ /dev/null @@ -1,5 +0,0 @@ -var adjacent = require('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, -1); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/prune.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/prune.js deleted file mode 100644 index 8f2d0cb9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/prune.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * _s.prune: a more elegant version of truncate - * prune extra chars, never leaving a half-chopped word. - * @author github.com/rwz - */ -var makeString = require('./helper/makeString'); -var rtrim = require('./rtrim'); - -module.exports = function prune(str, length, pruneStr) { - str = makeString(str); - length = ~~length; - pruneStr = pruneStr != null ? String(pruneStr) : '...'; - - if (str.length <= length) return str; - - var tmpl = function(c) { - return c.toUpperCase() !== c.toLowerCase() ? 'A' : ' '; - }, - template = str.slice(0, length + 1).replace(/.(?=\W*\w*$)/g, tmpl); // 'Hello, world' -> 'HellAA AAAAA' - - if (template.slice(template.length - 2).match(/\w\w/)) - template = template.replace(/\s*\S+$/, ''); - else - template = rtrim(template.slice(0, template.length - 1)); - - return (template + pruneStr).length > str.length ? str : str.slice(0, template.length) + pruneStr; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/quote.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/quote.js deleted file mode 100644 index 1e90f63f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/quote.js +++ /dev/null @@ -1,5 +0,0 @@ -var surround = require('./surround'); - -module.exports = function quote(str, quoteChar) { - return surround(str, quoteChar || '"'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/repeat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/repeat.js deleted file mode 100644 index 083f1035..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/repeat.js +++ /dev/null @@ -1,15 +0,0 @@ -var makeString = require('./helper/makeString'); -var strRepeat = require('./helper/strRepeat'); - -module.exports = function repeat(str, qty, separator) { - str = makeString(str); - - qty = ~~qty; - - // using faster implementation if separator is not needed; - if (separator == null) return strRepeat(str, qty); - - // this one is about 300x slower in Google Chrome - for (var repeat = []; qty > 0; repeat[--qty] = str) {} - return repeat.join(separator); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/replaceAll.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/replaceAll.js deleted file mode 100644 index 93f6c0d8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/replaceAll.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function replaceAll(str, find, replace, ignorecase) { - var flags = (ignorecase === true)?'gi':'g'; - var reg = new RegExp(find, flags); - - return makeString(str).replace(reg, replace); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/reverse.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/reverse.js deleted file mode 100644 index b9ef2e62..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/reverse.js +++ /dev/null @@ -1,5 +0,0 @@ -var chars = require('./chars'); - -module.exports = function reverse(str) { - return chars(str).reverse().join(''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rpad.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rpad.js deleted file mode 100644 index b37d3867..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rpad.js +++ /dev/null @@ -1,5 +0,0 @@ -var pad = require('./pad'); - -module.exports = function rpad(str, length, padStr) { - return pad(str, length, padStr, 'right'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rtrim.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rtrim.js deleted file mode 100644 index e6be2ed2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/rtrim.js +++ /dev/null @@ -1,10 +0,0 @@ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrimRight = String.prototype.trimRight; - -module.exports = function rtrim(str, characters) { - str = makeString(str); - if (!characters && nativeTrimRight) return nativeTrimRight.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp(characters + '+$'), ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/slugify.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/slugify.js deleted file mode 100644 index 1bee75f5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/slugify.js +++ /dev/null @@ -1,17 +0,0 @@ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var trim = require('./trim'); -var dasherize = require('./dasherize'); - -module.exports = function slugify(str) { - var from = "ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșšŝťțŭùúüűûñÿýçżźž", - to = "aaaaaaaaaccceeeeeghiiiijllnnoooooooossssttuuuuuunyyczzz", - regex = new RegExp(defaultToWhiteSpace(from), 'g'); - - str = makeString(str).toLowerCase().replace(regex, function(c){ - var index = from.indexOf(c); - return to.charAt(index) || '-'; - }); - - return trim(dasherize(str.replace(/[^\w\s-]/g, '-')), '-'); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/splice.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/splice.js deleted file mode 100644 index 34c04107..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/splice.js +++ /dev/null @@ -1,7 +0,0 @@ -var chars = require('./chars'); - -module.exports = function splice(str, i, howmany, substr) { - var arr = chars(str); - arr.splice(~~i, ~~howmany, substr); - return arr.join(''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/sprintf.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/sprintf.js deleted file mode 100644 index c6da4e30..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/sprintf.js +++ /dev/null @@ -1,124 +0,0 @@ -// sprintf() for JavaScript 0.7-beta1 -// http://www.diveintojavascript.com/projects/javascript-sprintf -// -// Copyright (c) Alexandru Marasteanu -// All rights reserved. -var strRepeat = require('./helper/strRepeat'); -var toString = Object.prototype.toString; -var sprintf = (function() { - function get_type(variable) { - return toString.call(variable).slice(8, -1).toLowerCase(); - } - - var str_repeat = strRepeat; - - var str_format = function() { - if (!str_format.cache.hasOwnProperty(arguments[0])) { - str_format.cache[arguments[0]] = str_format.parse(arguments[0]); - } - return str_format.format.call(null, str_format.cache[arguments[0]], arguments); - }; - - str_format.format = function(parse_tree, argv) { - var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length; - for (i = 0; i < tree_length; i++) { - node_type = get_type(parse_tree[i]); - if (node_type === 'string') { - output.push(parse_tree[i]); - } - else if (node_type === 'array') { - match = parse_tree[i]; // convenience purposes only - if (match[2]) { // keyword argument - arg = argv[cursor]; - for (k = 0; k < match[2].length; k++) { - if (!arg.hasOwnProperty(match[2][k])) { - throw new Error(sprintf('[_.sprintf] property "%s" does not exist', match[2][k])); - } - arg = arg[match[2][k]]; - } - } else if (match[1]) { // positional argument (explicit) - arg = argv[match[1]]; - } - else { // positional argument (implicit) - arg = argv[cursor++]; - } - - if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) { - throw new Error(sprintf('[_.sprintf] expecting number but found %s', get_type(arg))); - } - switch (match[8]) { - case 'b': arg = arg.toString(2); break; - case 'c': arg = String.fromCharCode(arg); break; - case 'd': arg = parseInt(arg, 10); break; - case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break; - case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break; - case 'o': arg = arg.toString(8); break; - case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break; - case 'u': arg = Math.abs(arg); break; - case 'x': arg = arg.toString(16); break; - case 'X': arg = arg.toString(16).toUpperCase(); break; - } - arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg); - pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' '; - pad_length = match[6] - String(arg).length; - pad = match[6] ? str_repeat(pad_character, pad_length) : ''; - output.push(match[5] ? arg + pad : pad + arg); - } - } - return output.join(''); - }; - - str_format.cache = {}; - - str_format.parse = function(fmt) { - var _fmt = fmt, match = [], parse_tree = [], arg_names = 0; - while (_fmt) { - if ((match = /^[^\x25]+/.exec(_fmt)) !== null) { - parse_tree.push(match[0]); - } - else if ((match = /^\x25{2}/.exec(_fmt)) !== null) { - parse_tree.push('%'); - } - else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) { - if (match[2]) { - arg_names |= 1; - var field_list = [], replacement_field = match[2], field_match = []; - if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') { - if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) { - field_list.push(field_match[1]); - } - else { - throw new Error('[_.sprintf] huh?'); - } - } - } - else { - throw new Error('[_.sprintf] huh?'); - } - match[2] = field_list; - } - else { - arg_names |= 2; - } - if (arg_names === 3) { - throw new Error('[_.sprintf] mixing positional and named placeholders is not (yet) supported'); - } - parse_tree.push(match); - } - else { - throw new Error('[_.sprintf] huh?'); - } - _fmt = _fmt.substring(match[0].length); - } - return parse_tree; - }; - - return str_format; -})(); - -module.exports = sprintf; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/startsWith.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/startsWith.js deleted file mode 100644 index a9f47905..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/startsWith.js +++ /dev/null @@ -1,9 +0,0 @@ -var makeString = require('./helper/makeString'); -var toPositive = require('./helper/toPositive'); - -module.exports = function startsWith(str, starts, position) { - str = makeString(str); - starts = '' + starts; - position = position == null ? 0 : Math.min(toPositive(position), str.length); - return str.lastIndexOf(starts, position) === position; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeft.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeft.js deleted file mode 100644 index 06029845..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeft.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function strLeft(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeftBack.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeftBack.js deleted file mode 100644 index 0136e20e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strLeftBack.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function strLeftBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = str.lastIndexOf(sep); - return~ pos ? str.slice(0, pos) : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRight.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRight.js deleted file mode 100644 index 67b45b53..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRight.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function strRight(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.indexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRightBack.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRightBack.js deleted file mode 100644 index 43de0e9c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/strRightBack.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function strRightBack(str, sep) { - str = makeString(str); - sep = makeString(sep); - var pos = !sep ? -1 : str.lastIndexOf(sep); - return~ pos ? str.slice(pos + sep.length, str.length) : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/stripTags.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/stripTags.js deleted file mode 100644 index 8948d369..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/stripTags.js +++ /dev/null @@ -1,5 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function stripTags(str) { - return makeString(str).replace(/<\/?[^>]+>/g, ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/succ.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/succ.js deleted file mode 100644 index 313c8e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/succ.js +++ /dev/null @@ -1,5 +0,0 @@ -var adjacent = require('./helper/adjacent'); - -module.exports = function succ(str) { - return adjacent(str, 1); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/surround.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/surround.js deleted file mode 100644 index 9cb7f7ed..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/surround.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function surround(str, wrapper) { - return [wrapper, str, wrapper].join(''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/swapCase.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/swapCase.js deleted file mode 100644 index 08572629..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/swapCase.js +++ /dev/null @@ -1,7 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function swapCase(str) { - return makeString(str).replace(/\S/g, function(c) { - return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase(); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/titleize.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/titleize.js deleted file mode 100644 index c4a8a470..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/titleize.js +++ /dev/null @@ -1,7 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function titleize(str) { - return makeString(str).toLowerCase().replace(/(?:^|\s|-)\S/g, function(c) { - return c.toUpperCase(); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toBoolean.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toBoolean.js deleted file mode 100644 index ba82db6d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toBoolean.js +++ /dev/null @@ -1,20 +0,0 @@ -var trim = require('./trim'); - -function boolMatch(s, matchers) { - var i, matcher, down = s.toLowerCase(); - matchers = [].concat(matchers); - for (i = 0; i < matchers.length; i += 1) { - matcher = matchers[i]; - if (!matcher) continue; - if (matcher.test && matcher.test(s)) return true; - if (matcher.toLowerCase() === down) return true; - } -} - -module.exports = function toBoolean(str, trueValues, falseValues) { - if (typeof str === "number") str = "" + str; - if (typeof str !== "string") return !!str; - str = trim(str); - if (boolMatch(str, trueValues || ["true", "1"])) return true; - if (boolMatch(str, falseValues || ["false", "0"])) return false; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toNumber.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toNumber.js deleted file mode 100644 index f8744459..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toNumber.js +++ /dev/null @@ -1,7 +0,0 @@ -var trim = require('./trim'); - -module.exports = function toNumber(num, precision) { - if (num == null) return 0; - var factor = Math.pow(10, isFinite(precision) ? precision : 0); - return Math.round(num * factor) / factor; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentence.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentence.js deleted file mode 100644 index 2284bd9c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentence.js +++ /dev/null @@ -1,12 +0,0 @@ -var rtrim = require('./rtrim'); - -module.exports = function toSentence(array, separator, lastSeparator, serial) { - separator = separator || ', '; - lastSeparator = lastSeparator || ' and '; - var a = array.slice(), - lastMember = a.pop(); - - if (array.length > 2 && serial) lastSeparator = rtrim(separator) + lastSeparator; - - return a.length ? a.join(separator) + lastSeparator + lastMember : lastMember; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentenceSerial.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentenceSerial.js deleted file mode 100644 index 2b8d350c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/toSentenceSerial.js +++ /dev/null @@ -1,5 +0,0 @@ -var toSentence = require('./toSentence'); - -module.exports = function toSentenceSerial(array, sep, lastSep) { - return toSentence(array, sep, lastSep, true); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/trim.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/trim.js deleted file mode 100644 index 0f2a33dc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/trim.js +++ /dev/null @@ -1,10 +0,0 @@ -var makeString = require('./helper/makeString'); -var defaultToWhiteSpace = require('./helper/defaultToWhiteSpace'); -var nativeTrim = String.prototype.trim; - -module.exports = function trim(str, characters) { - str = makeString(str); - if (!characters && nativeTrim) return nativeTrim.call(str); - characters = defaultToWhiteSpace(characters); - return str.replace(new RegExp('^' + characters + '+|' + characters + '+$', 'g'), ''); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/truncate.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/truncate.js deleted file mode 100644 index dbb8fd7f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/truncate.js +++ /dev/null @@ -1,8 +0,0 @@ -var makeString = require('./helper/makeString'); - -module.exports = function truncate(str, length, truncateStr) { - str = makeString(str); - truncateStr = truncateStr || '...'; - length = ~~length; - return str.length > length ? str.slice(0, length) + truncateStr : str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/underscored.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/underscored.js deleted file mode 100644 index b9d16283..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/underscored.js +++ /dev/null @@ -1,5 +0,0 @@ -var trim = require('./trim'); - -module.exports = function underscored(str) { - return trim(str).replace(/([a-z\d])([A-Z]+)/g, '$1_$2').replace(/[-\s]+/g, '_').toLowerCase(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unescapeHTML.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unescapeHTML.js deleted file mode 100644 index 4cd16697..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unescapeHTML.js +++ /dev/null @@ -1,18 +0,0 @@ -var makeString = require('./helper/makeString'); -var htmlEntities = require('./helper/htmlEntities'); - -module.exports = function unescapeHTML(str) { - return makeString(str).replace(/\&([^;]+);/g, function(entity, entityCode) { - var match; - - if (entityCode in htmlEntities) { - return htmlEntities[entityCode]; - } else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) { - return String.fromCharCode(parseInt(match[1], 16)); - } else if (match = entityCode.match(/^#(\d+)$/)) { - return String.fromCharCode(~~match[1]); - } else { - return entity; - } - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unquote.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unquote.js deleted file mode 100644 index fefba498..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/unquote.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = function unquote(str, quoteChar) { - quoteChar = quoteChar || '"'; - if (str[0] === quoteChar && str[str.length - 1] === quoteChar) - return str.slice(1, str.length - 1); - else return str; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/vsprintf.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/vsprintf.js deleted file mode 100644 index b68178d4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/vsprintf.js +++ /dev/null @@ -1,6 +0,0 @@ -var sprintf = require('./sprintf'); - -module.exports = function vsprintf(fmt, argv) { - argv.unshift(fmt); - return sprintf.apply(null, argv); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/words.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/words.js deleted file mode 100644 index be55c9cc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/underscore.string/words.js +++ /dev/null @@ -1,7 +0,0 @@ -var isBlank = require('./isBlank'); -var trim = require('./trim'); - -module.exports = function words(str, delimiter) { - if (isBlank(str)) return []; - return trim(str, delimiter).split(delimiter || /\s+/); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.npmignore deleted file mode 100644 index 44430393..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -*.swp -.DS_Store -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.travis.yml deleted file mode 100644 index 6e5919de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/LICENSE deleted file mode 100644 index cd2225ad..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2014 Eugene Ware - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/README.md deleted file mode 100644 index f19b20a3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# unique-stream - -node.js through stream that emits a unique stream of objects based on criteria - -[![build status](https://secure.travis-ci.org/eugeneware/unique-stream.png)](http://travis-ci.org/eugeneware/unique-stream) - -## Installation - -Install via npm: - -``` -$ npm install unique-stream -``` - -## Examples - -### Dedupe a ReadStream based on JSON.stringify: - -``` js -var unique = require('unique-stream') - , Stream = require('stream'); - -// return a stream of 3 identical objects -function makeStreamOfObjects() { - var s = new Stream; - s.readable = true; - var count = 3; - for (var i = 0; i < 3; i++) { - setImmediate(function () { - s.emit('data', { name: 'Bob', number: 123 }); - --count && end(); - }); - } - - function end() { - s.emit('end'); - } - - return s; -} - -// Will only print out one object as the rest are dupes. (Uses JSON.stringify) -makeStreamOfObjects() - .pipe(unique()) - .on('data', console.log); - -``` - -### Dedupe a ReadStream based on an object property: - -``` js -// Use name as the key field to dedupe on. Will only print one object -makeStreamOfObjects() - .pipe(unique('name')) - .on('data', console.log); -``` - -### Dedupe a ReadStream based on a custom function: - -``` js -// Use a custom function to dedupe on. Use the 'number' field. Will only print one object. -makeStreamOfObjects() - .pipe(function (data) { - return data.number; - }) - .on('data', console.log); -``` - -## Dedupe multiple streams - -The reason I wrote this was to dedupe multiple object streams: - -``` js -var aggregator = unique(); - -// Stream 1 -makeStreamOfObjects() - .pipe(aggregator); - -// Stream 2 -makeStreamOfObjects() - .pipe(aggregator); - -// Stream 3 -makeStreamOfObjects() - .pipe(aggregator); - -aggregator.on('data', console.log); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/index.js deleted file mode 100644 index 0c13168e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/index.js +++ /dev/null @@ -1,54 +0,0 @@ -var Stream = require('stream'); - -function prop(propName) { - return function (data) { - return data[propName]; - }; -} - -module.exports = unique; -function unique(propName) { - var keyfn = JSON.stringify; - if (typeof propName === 'string') { - keyfn = prop(propName); - } else if (typeof propName === 'function') { - keyfn = propName; - } - var seen = {}; - var s = new Stream(); - s.readable = true; - s.writable = true; - var pipes = 0; - - s.write = function (data) { - var key = keyfn(data); - if (seen[key] === undefined) { - seen[key] = true; - s.emit('data', data); - } - }; - - var ended = 0; - s.end = function (data) { - if (arguments.length) s.write(data); - ended++; - if (ended === pipes || pipes === 0) { - s.writable = false; - s.emit('end'); - } - }; - - s.destroy = function (data) { - s.writable = false; - }; - - s.on('pipe', function () { - pipes++; - }); - - s.on('unpipe', function () { - pipes--; - }); - - return s; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/package.json deleted file mode 100644 index b18042a2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "_args": [ - [ - "unique-stream@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream" - ] - ], - "_from": "unique-stream@>=1.0.0 <2.0.0", - "_id": "unique-stream@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/unique-stream", - "_npmUser": { - "email": "eugene@noblesamurai.com", - "name": "eugeneware" - }, - "_npmVersion": "1.4.3", - "_phantomChildren": {}, - "_requested": { - "name": "unique-stream", - "raw": "unique-stream@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream" - ], - "_resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "_shasum": "d59a4a75427447d9aa6c91e70263f8d26a4b104b", - "_shrinkwrap": null, - "_spec": "unique-stream@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/glob-stream", - "author": { - "email": "eugene@noblesamurai.com", - "name": "Eugene Ware" - }, - "bugs": { - "url": "https://github.com/eugeneware/unique-stream/issues" - }, - "dependencies": {}, - "description": "node.js through stream that emits a unique stream of objects based on criteria", - "devDependencies": { - "after": "~0.8.1", - "chai": "~1.7.2", - "mocha": "^1.18.2" - }, - "directories": {}, - "dist": { - "shasum": "d59a4a75427447d9aa6c91e70263f8d26a4b104b", - "tarball": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz" - }, - "homepage": "https://github.com/eugeneware/unique-stream", - "keywords": [ - "unique", - "stream", - "unique-stream", - "streaming", - "streams" - ], - "license": "BSD", - "main": "index.js", - "maintainers": [ - { - "email": "eugene@noblesamurai.com", - "name": "eugeneware" - } - ], - "name": "unique-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/eugeneware/unique-stream.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/test/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/test/index.js deleted file mode 100644 index fca02b7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/unique-stream/test/index.js +++ /dev/null @@ -1,109 +0,0 @@ -var expect = require('chai').expect - , unique = require('..') - , Stream = require('stream') - , after = require('after') - , setImmediate = global.setImmediate || process.nextTick; - -describe('unique stream', function() { - - function makeStream(type) { - var s = new Stream(); - s.readable = true; - - var n = 10; - var next = after(n, function () { - setImmediate(function () { - s.emit('end'); - }); - }); - - for (var i = 0; i < n; i++) { - var o = { - type: type, - name: 'name ' + i, - number: i * 10 - }; - - (function (o) { - setImmediate(function () { - s.emit('data', o); - next(); - }); - })(o); - } - return s; - } - - it('should be able to uniqueify objects based on JSON data', function(done) { - var aggregator = unique(); - makeStream('a') - .pipe(aggregator); - makeStream('a') - .pipe(aggregator); - - var n = 0; - aggregator - .on('data', function () { - n++; - }) - .on('end', function () { - expect(n).to.equal(10); - done(); - }); - }); - - it('should be able to uniqueify objects based on a property', function(done) { - var aggregator = unique('number'); - makeStream('a') - .pipe(aggregator); - makeStream('b') - .pipe(aggregator); - - var n = 0; - aggregator - .on('data', function () { - n++; - }) - .on('end', function () { - expect(n).to.equal(10); - done(); - }); - }); - - it('should be able to uniqueify objects based on a function', function(done) { - var aggregator = unique(function (data) { - return data.name; - }); - - makeStream('a') - .pipe(aggregator); - makeStream('b') - .pipe(aggregator); - - var n = 0; - aggregator - .on('data', function () { - n++; - }) - .on('end', function () { - expect(n).to.equal(10); - done(); - }); - }); - - it('should be able to handle uniqueness when not piped', function(done) { - var stream = unique(); - var count = 0; - stream.on('data', function (data) { - expect(data).to.equal('hello'); - count++; - }); - stream.on('end', function() { - expect(count).to.equal(1); - done(); - }); - stream.write('hello'); - stream.write('hello'); - stream.end(); - }); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/cli.js deleted file mode 100755 index bacbd227..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/cli.js +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var pkg = require('./package.json'); -var userHome = require('./'); - -function help() { - console.log([ - pkg.description, - '', - 'Example', - ' $ user-home', - ' /Users/sindresorhus' - ].join('\n')); -} - -if (process.argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (process.argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -process.stdout.write(userHome); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/index.js deleted file mode 100644 index d53b7939..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; -var env = process.env; -var home = env.HOME; -var user = env.LOGNAME || env.USER || env.LNAME || env.USERNAME; - -if (process.platform === 'win32') { - module.exports = env.USERPROFILE || env.HOMEDRIVE + env.HOMEPATH || home || null; -} else if (process.platform === 'darwin') { - module.exports = home || (user ? '/Users/' + user : null) || null; -} else if (process.platform === 'linux') { - module.exports = home || - (user ? (process.getuid() === 0 ? '/root' : '/home/' + user) : null) || null; -} else { - module.exports = home || null; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/license b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/license deleted file mode 100644 index 654d0bfe..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/license +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/package.json deleted file mode 100644 index 5211fefd..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/package.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "_args": [ - [ - "user-home@^1.1.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/v8flags" - ] - ], - "_from": "user-home@>=1.1.1 <2.0.0", - "_id": "user-home@1.1.1", - "_inCache": true, - "_installable": true, - "_location": "/user-home", - "_nodeVersion": "0.10.32", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "2.1.16", - "_phantomChildren": {}, - "_requested": { - "name": "user-home", - "raw": "user-home@^1.1.1", - "rawSpec": "^1.1.1", - "scope": null, - "spec": ">=1.1.1 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/v8flags" - ], - "_resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "_shasum": "2b5be23a32b63a7c9deb8d0f28d485724a3df190", - "_shrinkwrap": null, - "_spec": "user-home@^1.1.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/v8flags", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bin": { - "user-home": "cli.js" - }, - "bugs": { - "url": "https://github.com/sindresorhus/user-home/issues" - }, - "dependencies": {}, - "description": "Get the path to the user home directory", - "devDependencies": { - "ava": "0.0.3" - }, - "directories": {}, - "dist": { - "shasum": "2b5be23a32b63a7c9deb8d0f28d485724a3df190", - "tarball": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "index.js", - "cli.js" - ], - "gitHead": "cf6ba885d3e6bf625fb3c15ad0334fa623968481", - "homepage": "https://github.com/sindresorhus/user-home", - "keywords": [ - "cli", - "bin", - "user", - "home", - "homedir", - "dir", - "directory", - "folder", - "path" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "user-home", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/sindresorhus/user-home.git" - }, - "scripts": { - "test": "node test.js" - }, - "version": "1.1.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/readme.md deleted file mode 100644 index 5307a07e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/user-home/readme.md +++ /dev/null @@ -1,42 +0,0 @@ -# user-home [![Build Status](https://travis-ci.org/sindresorhus/user-home.svg?branch=master)](https://travis-ci.org/sindresorhus/user-home) - -> Get the path to the user home directory - - -## Install - -```sh -$ npm install --save user-home -``` - - -## Usage - -```js -var userHome = require('user-home'); - -console.log(userHome); -//=> /Users/sindresorhus -``` - -Returns `null` in the unlikely scenario that the home directory can't be found. - - -## CLI - -```sh -$ npm install --global user-home -``` - -```sh -$ user-home --help - -Example - $ user-home - /Users/sindresorhus -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/History.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/History.md deleted file mode 100644 index acc86753..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/History.md +++ /dev/null @@ -1,16 +0,0 @@ - -1.0.2 / 2015-10-07 -================== - - * use try/catch when checking `localStorage` (#3, @kumavis) - -1.0.1 / 2014-11-25 -================== - - * browser: use `console.warn()` for deprecation calls - * browser: more jsdocs - -1.0.0 / 2014-04-30 -================== - - * initial commit diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/LICENSE deleted file mode 100644 index 6a60e8c2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/README.md deleted file mode 100644 index 75622fa7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/README.md +++ /dev/null @@ -1,53 +0,0 @@ -util-deprecate -============== -### The Node.js `util.deprecate()` function with browser support - -In Node.js, this module simply re-exports the `util.deprecate()` function. - -In the web browser (i.e. via browserify), a browser-specific implementation -of the `util.deprecate()` function is used. - - -## API - -A `deprecate()` function is the only thing exposed by this module. - -``` javascript -// setup: -exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead'); - - -// users see: -foo(); -// foo() is deprecated, use bar() instead -foo(); -foo(); -``` - - -## License - -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/browser.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/browser.js deleted file mode 100644 index 549ae2f0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/browser.js +++ /dev/null @@ -1,67 +0,0 @@ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/node.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/node.js deleted file mode 100644 index 5e6fcff5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/node.js +++ /dev/null @@ -1,6 +0,0 @@ - -/** - * For Node.js, simply re-export the core `util.deprecate` function. - */ - -module.exports = require('util').deprecate; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/package.json deleted file mode 100644 index 0f4b107e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/util-deprecate/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_args": [ - [ - "util-deprecate@~1.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream" - ] - ], - "_from": "util-deprecate@>=1.0.1 <1.1.0", - "_id": "util-deprecate@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/util-deprecate", - "_nodeVersion": "4.1.2", - "_npmUser": { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "util-deprecate", - "raw": "util-deprecate@~1.0.1", - "rawSpec": "~1.0.1", - "scope": null, - "spec": ">=1.0.1 <1.1.0", - "type": "range" - }, - "_requiredBy": [ - "/duplexify/readable-stream", - "/through2/readable-stream" - ], - "_resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "_shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "_shrinkwrap": null, - "_spec": "util-deprecate@~1.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/through2/node_modules/readable-stream", - "author": { - "email": "nathan@tootallnate.net", - "name": "Nathan Rajlich", - "url": "http://n8.io/" - }, - "browser": "browser.js", - "bugs": { - "url": "https://github.com/TooTallNate/util-deprecate/issues" - }, - "dependencies": {}, - "description": "The Node.js `util.deprecate()` function with browser support", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "450d4dc9fa70de732762fbd2d4a28981419a0ccf", - "tarball": "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - }, - "gitHead": "475fb6857cd23fafff20c1be846c1350abf8e6d4", - "homepage": "https://github.com/TooTallNate/util-deprecate", - "keywords": [ - "util", - "deprecate", - "browserify", - "browser", - "node" - ], - "license": "MIT", - "main": "node.js", - "maintainers": [ - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - } - ], - "name": "util-deprecate", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/TooTallNate/util-deprecate.git" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/.npmignore deleted file mode 100644 index ae16e5f8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -*.yml -LICENSE -README.md -test.js diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/LICENSE deleted file mode 100644 index a55f5b74..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 Tyler Kellen - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/README.md deleted file mode 100644 index 7cc6bbc1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# v8flags [![Build Status](https://secure.travis-ci.org/js-cli/js-v8flags.png)](http://travis-ci.org/js-cli/js-v8flags) [![Build status](https://ci.appveyor.com/api/projects/status/9psgmwayx9kpol1a?svg=true)](https://ci.appveyor.com/project/js-cli/js-v8flags) -> Get available v8 flags. - -[![NPM](https://nodei.co/npm/v8flags.png)](https://nodei.co/npm/v8flags/) - -## Example -```js -const v8flags = require('v8flags'); - -v8flags(function (err, results) { - console.log(results); // [ '--use_strict', - // '--es5_readonly', - // '--es52_globals', - // '--harmony_typeof', - // '--harmony_scoping', - // '--harmony_modules', - // '--harmony_proxies', - // '--harmony_collections', - // '--harmony', - // ... -}); -``` - -## Release History - -* 2015-12-07 - v2.0.11 - cache to temp directory if home is present but unwritable -* 2015-07-28 - v2.0.10 - don't throw for electron runtime, just call back with empty array -* 2015-06-25 - v2.0.9 - call back with flags even if cache file can't be written -* 2015-06-15 - v2.0.7 - revert to 2.0.5 behavior. -* 2015-06-15 - v2.0.6 - store cache file in ~/.cache or ~/AppData/Local depending on platform -* 2015-04-18 - v2.0.5 - attempt to require config file, if this throws for any reason, fopen w+ and re-create -* 2015-04-16 - v2.0.4 - when concurrent processes are run and no config exists, don't append to the cached config. -* 2015-03-31 - v2.0.3 - prefer to store config files in user home over tmp -* 2015-01-18 - v2.0.2 - keep his dark tentacles contained -* 2015-01-15 - v2.0.1 - store temp file in `os.tmpdir()`, drop support for node 0.8 -* 2015-01-15 - v2.0.0 - make the stupid thing async -* 2014-12-22 - v1.0.8 - exclude `--help` flag -* 2014-12-20 - v1.0.7 - pre-cache flags for every version of node from 0.8 to 0.11 -* 2014-12-09 - v1.0.6 - revert to 1.0.0 behavior -* 2014-11-26 - v1.0.5 - get node executable from `process.execPath` -* 2014-11-18 - v1.0.4 - wrap node executable path in quotes -* 2014-11-17 - v1.0.3 - get node executable during npm install via `process.env.NODE` -* 2014-11-17 - v1.0.2 - get node executable from `process.env._` -* 2014-09-03 - v1.0.0 - first major version release -* 2014-09-02 - v0.3.0 - keep -- in flag names -* 2014-09-02 - v0.2.0 - cache flags -* 2014-05-09 - v0.1.0 - initial release diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/index.js deleted file mode 100644 index a368b5ce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/index.js +++ /dev/null @@ -1,131 +0,0 @@ -// this entire module is depressing. i should have spent my time learning -// how to patch v8 so that these options would just be available on the -// process object. - -const os = require('os'); -const fs = require('fs'); -const path = require('path'); -const execFile = require('child_process').execFile; -const env = process.env; -const user = env.LOGNAME || env.USER || env.LNAME || env.USERNAME; -const configfile = '.v8flags.'+process.versions.v8+'.'+user+'.json'; -const exclusions = ['--help']; - -const failureMessage = [ - 'Unable to cache a config file for v8flags to a your home directory', - 'or a temporary folder. To fix this problem, please correct your', - 'environment by setting HOME=/path/to/home or TEMP=/path/to/temp.', - 'NOTE: the user running this must be able to access provided path.', - 'If all else fails, please open an issue here:', - 'http://github.com/tkellen/js-v8flags' -].join('\n'); - -function fail (err) { - err.message += '\n\n' + failureMessage; - return err; -} - -function openConfig (cb) { - var userHome = require('user-home'); - if (!userHome) { - return tryOpenConfig(path.join(os.tmpdir(), configfile), cb); - } - - tryOpenConfig(path.join(userHome, configfile), function (err, fd) { - if (err) return tryOpenConfig(path.join(os.tmpdir(), configfile), cb); - return cb(null, fd); - }); -} - -function tryOpenConfig (configpath, cb) { - try { - // if the config file is valid, it should be json and therefore - // node should be able to require it directly. if this doesn't - // throw, we're done! - content = require(configpath); - process.nextTick(function () { - cb(null, content); - }); - } catch (e) { - // if requiring the config file failed, maybe it doesn't exist, or - // perhaps it has become corrupted. instead of calling back with the - // content of the file, call back with a file descriptor that we can - // write the cached data to - fs.open(configpath, 'w+', function (err, fd) { - if (err) { - return cb(err); - } - return cb(null, fd); - }); - } -} - -// i can't wait for the day this whole module is obsolete because these -// options are available on the process object. this executes node with -// `--v8-options` and parses the result, returning an array of command -// line flags. -function getFlags (cb) { - execFile(process.execPath, ['--v8-options'], function (execErr, result) { - if (execErr) { - return cb(execErr); - } - var flags = result.match(/\s\s--(\w+)/gm).map(function (match) { - return match.substring(2); - }).filter(function (name) { - return exclusions.indexOf(name) === -1; - }); - return cb(null, flags); - }); -} - -// write some json to a file descriptor. if this fails, call back -// with both the error and the data that was meant to be written. -function writeConfig (fd, flags, cb) { - var buf = new Buffer(JSON.stringify(flags)); - return fs.write(fd, buf, 0, buf.length, 0 , function (writeErr) { - fs.close(fd, function (closeErr) { - var err = writeErr || closeErr; - if (err) { - return cb(fail(err), flags); - } - return cb(null, flags); - }); - }); -} - -module.exports = function (cb) { - // bail early if this is not node - var isElectron = process.versions && process.versions.electron; - if (isElectron) { - return process.nextTick(function () { - cb(null, []); - }); - } - - // attempt to open/read cache file - openConfig(function (openErr, result) { - if (!openErr && typeof result !== 'number') { - return cb(null, result); - } - // if the result is not an array, we need to go fetch - // the flags by invoking node with `--v8-options` - getFlags(function (flagsErr, flags) { - // if there was an error fetching the flags, bail immediately - if (flagsErr) { - return cb(flagsErr); - } - // if there was a problem opening the config file for writing - // throw an error but include the flags anyway so that users - // can continue to execute (at the expense of having to fetch - // flags on every run until they fix the underyling problem). - if (openErr) { - return cb(fail(openErr), flags); - } - // write the config file to disk so subsequent runs can read - // flags out of a cache file. - return writeConfig(result, flags, cb); - }); - }); -}; - -module.exports.configfile = configfile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/package.json deleted file mode 100644 index 67955a4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/v8flags/package.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "_args": [ - [ - "v8flags@^2.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "v8flags@>=2.0.2 <3.0.0", - "_id": "v8flags@2.0.11", - "_inCache": true, - "_installable": true, - "_location": "/v8flags", - "_nodeVersion": "5.2.0", - "_npmUser": { - "email": "leo@leozhang.me", - "name": "ilikebits" - }, - "_npmVersion": "3.3.12", - "_phantomChildren": {}, - "_requested": { - "name": "v8flags", - "raw": "v8flags@^2.0.2", - "rawSpec": "^2.0.2", - "scope": null, - "spec": ">=2.0.2 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp" - ], - "_resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz", - "_shasum": "bca8f30f0d6d60612cc2c00641e6962d42ae6881", - "_shrinkwrap": null, - "_spec": "v8flags@^2.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "name": "Tyler Kellen", - "url": "http://goingslowly.com/" - }, - "bugs": { - "url": "https://github.com/tkellen/node-v8flags/issues" - }, - "dependencies": { - "user-home": "^1.1.1" - }, - "description": "Get available v8 flags.", - "devDependencies": { - "async": "^0.9.0", - "chai": "~1.9.1", - "mocha": "~1.21.4" - }, - "directories": {}, - "dist": { - "shasum": "bca8f30f0d6d60612cc2c00641e6962d42ae6881", - "tarball": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.11.tgz" - }, - "engines": { - "node": ">= 0.10.0" - }, - "gitHead": "0f7bb94c6799f4d405e17681218d85df9b0e30c0", - "homepage": "https://github.com/tkellen/node-v8flags", - "keywords": [ - "v8 flags", - "harmony flags" - ], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/tkellen/node-v8flags/blob/master/LICENSE" - } - ], - "main": "index.js", - "maintainers": [ - { - "email": "leo@leozhang.me", - "name": "ilikebits" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - }, - { - "email": "tyler@sleekcode.net", - "name": "tkellen" - } - ], - "name": "v8flags", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/tkellen/node-v8flags.git" - }, - "scripts": { - "test": "_mocha -R spec test.js" - }, - "version": "2.0.11" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/LICENSE deleted file mode 100644 index a5e905d5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/LICENSE +++ /dev/null @@ -1,174 +0,0 @@ -SPDX:Apache-2.0 - -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. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/README.md deleted file mode 100644 index c5b3bfcf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/README.md +++ /dev/null @@ -1,113 +0,0 @@ -validate-npm-package-license -============================ - -Give me a string and I'll tell you if it's a valid npm package license string. - -```javascript -var valid = require('validate-npm-package-license'); -``` - -SPDX license identifiers are valid license strings: - -```javascript - -var assert = require('assert'); -var validSPDXExpression = { - validForNewPackages: true, - validForOldPackages: true, - spdx: true -}; - -assert.deepEqual(valid('MIT'), validSPDXExpression); -assert.deepEqual(valid('BSD-2-Clause'), validSPDXExpression); -assert.deepEqual(valid('Apache-2.0'), validSPDXExpression); -assert.deepEqual(valid('ISC'), validSPDXExpression); -``` -The function will return a warning and suggestion for nearly-correct license identifiers: - -```javascript -assert.deepEqual( - valid('Apache 2.0'), - { - validForOldPackages: false, - validForNewPackages: false, - warnings: [ - 'license should be ' + - 'a valid SPDX license expression (without "LicenseRef"), ' + - '"UNLICENSED", or ' + - '"SEE LICENSE IN "', - 'license is similar to the valid expression "Apache-2.0"' - ] - } -); -``` - -SPDX expressions are valid, too ... - -```javascript -// Simple SPDX license expression for dual licensing -assert.deepEqual( - valid('(GPL-3.0 OR BSD-2-Clause)'), - validSPDXExpression -); -``` - -... except if they contain `LicenseRef`: - -```javascript -var warningAboutLicenseRef = { - validForOldPackages: false, - validForNewPackages: false, - spdx: true, - warnings: [ - 'license should be ' + - 'a valid SPDX license expression (without "LicenseRef"), ' + - '"UNLICENSED", or ' + - '"SEE LICENSE IN "', - ] -}; - -assert.deepEqual( - valid('LicenseRef-Made-Up'), - warningAboutLicenseRef -); - -assert.deepEqual( - valid('(MIT OR LicenseRef-Made-Up)'), - warningAboutLicenseRef -); -``` - -If you can't describe your licensing terms with standardized SPDX identifiers, put the terms in a file in the package and point users there: - -```javascript -assert.deepEqual( - valid('SEE LICENSE IN LICENSE.txt'), - { - validForNewPackages: true, - validForOldPackages: true, - inFile: 'LICENSE.txt' - } -); - -assert.deepEqual( - valid('SEE LICENSE IN license.md'), - { - validForNewPackages: true, - validForOldPackages: true, - inFile: 'license.md' - } -); -``` - -If there aren't any licensing terms, use `UNLICENSED`: - -```javascript -var unlicensed = { - validForNewPackages: true, - validForOldPackages: true, - unlicensed: true -}; -assert.deepEqual(valid('UNLICENSED'), unlicensed); -assert.deepEqual(valid('UNLICENCED'), unlicensed); -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/index.js deleted file mode 100644 index 2ad98d9d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/index.js +++ /dev/null @@ -1,84 +0,0 @@ -var parse = require('spdx-expression-parse'); -var correct = require('spdx-correct'); - -var genericWarning = ( - 'license should be ' + - 'a valid SPDX license expression (without "LicenseRef"), ' + - '"UNLICENSED", or ' + - '"SEE LICENSE IN "' -); - -var fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/; - -function startsWith(prefix, string) { - return string.slice(0, prefix.length) === prefix; -} - -function usesLicenseRef(ast) { - if (ast.hasOwnProperty('license')) { - var license = ast.license; - return ( - startsWith('LicenseRef', license) || - startsWith('DocumentRef', license) - ); - } else { - return ( - usesLicenseRef(ast.left) || - usesLicenseRef(ast.right) - ); - } -} - -module.exports = function(argument) { - var ast; - - try { - ast = parse(argument); - } catch (e) { - var match - if ( - argument === 'UNLICENSED' || - argument === 'UNLICENCED' - ) { - return { - validForOldPackages: true, - validForNewPackages: true, - unlicensed: true - }; - } else if (match = fileReferenceRE.exec(argument)) { - return { - validForOldPackages: true, - validForNewPackages: true, - inFile: match[1] - }; - } else { - var result = { - validForOldPackages: false, - validForNewPackages: false, - warnings: [genericWarning] - }; - var corrected = correct(argument); - if (corrected) { - result.warnings.push( - 'license is similar to the valid expression "' + corrected + '"' - ); - } - return result; - } - } - - if (usesLicenseRef(ast)) { - return { - validForNewPackages: false, - validForOldPackages: false, - spdx: true, - warnings: [genericWarning] - }; - } else { - return { - validForNewPackages: true, - validForOldPackages: true, - spdx: true - }; - } -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/package.json deleted file mode 100644 index ae5ee829..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/validate-npm-package-license/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "_args": [ - [ - "validate-npm-package-license@^3.0.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/normalize-package-data" - ] - ], - "_from": "validate-npm-package-license@>=3.0.1 <4.0.0", - "_id": "validate-npm-package-license@3.0.1", - "_inCache": true, - "_installable": true, - "_location": "/validate-npm-package-license", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - "_npmVersion": "2.13.5", - "_phantomChildren": {}, - "_requested": { - "name": "validate-npm-package-license", - "raw": "validate-npm-package-license@^3.0.1", - "rawSpec": "^3.0.1", - "scope": null, - "spec": ">=3.0.1 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/normalize-package-data" - ], - "_resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "_shasum": "2804babe712ad3379459acfbe24746ab2c303fbc", - "_shrinkwrap": null, - "_spec": "validate-npm-package-license@^3.0.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/normalize-package-data", - "author": { - "email": "kyle@kemitchell.com", - "name": "Kyle E. Mitchell", - "url": "https://kemitchell.com" - }, - "bugs": { - "url": "https://github.com/kemitchell/validate-npm-package-license.js/issues" - }, - "dependencies": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" - }, - "description": "Give me a string and I'll tell you if it's a valid npm package license string", - "devDependencies": { - "defence-cli": "^1.0.1", - "replace-require-self": "^1.0.0" - }, - "directories": {}, - "dist": { - "shasum": "2804babe712ad3379459acfbe24746ab2c303fbc", - "tarball": "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" - }, - "gitHead": "00200d28f9960985f221bc1a8a71e4760daf39bf", - "homepage": "https://github.com/kemitchell/validate-npm-package-license.js#readme", - "keywords": [ - "license", - "npm", - "package", - "validation" - ], - "license": "Apache-2.0", - "maintainers": [ - { - "email": "kyle@kemitchell.com", - "name": "kemitchell" - }, - { - "email": "ogd@aoaioxxysz.net", - "name": "othiym23" - } - ], - "name": "validate-npm-package-license", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/kemitchell/validate-npm-package-license.js.git" - }, - "scripts": { - "test": "defence README.md | replace-require-self | node" - }, - "version": "3.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.gitmodules b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.gitmodules deleted file mode 100644 index e69de29b..00000000 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/LICENSE deleted file mode 100644 index cbc0bb3b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012, Joyent, Inc. All rights reserved. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile deleted file mode 100644 index 00faa97d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -# -# Copyright (c) 2012, Joyent, Inc. All rights reserved. -# -# Makefile: top-level Makefile -# -# This Makefile contains only repo-specific logic and uses included makefiles -# to supply common targets (javascriptlint, jsstyle, restdown, etc.), which are -# used by other repos as well. -# - -# -# Tools -# -NPM = npm - -# -# Files -# -JS_FILES := $(shell find lib examples tests -name '*.js') -JSL_FILES_NODE = $(JS_FILES) -JSSTYLE_FILES = $(JS_FILES) -JSL_CONF_NODE = jsl.node.conf - -.PHONY: all -all: - $(NPM) install - -.PHONY: test -test: - node tests/tst.inherit.js - node tests/tst.verror.js - node tests/tst.werror.js - @echo all tests passed - -include ./Makefile.targ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile.targ b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile.targ deleted file mode 100644 index 2a64fe7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/Makefile.targ +++ /dev/null @@ -1,285 +0,0 @@ -# -*- mode: makefile -*- -# -# Copyright (c) 2012, Joyent, Inc. All rights reserved. -# -# Makefile.targ: common targets. -# -# NOTE: This makefile comes from the "eng" repo. It's designed to be dropped -# into other repos as-is without requiring any modifications. If you find -# yourself changing this file, you should instead update the original copy in -# eng.git and then update your repo to use the new version. -# -# This Makefile defines several useful targets and rules. You can use it by -# including it from a Makefile that specifies some of the variables below. -# -# Targets defined in this Makefile: -# -# check Checks JavaScript files for lint and style -# Checks bash scripts for syntax -# Checks SMF manifests for validity against the SMF DTD -# -# clean Removes built files -# -# docs Builds restdown documentation in docs/ -# -# prepush Depends on "check" and "test" -# -# test Does nothing (you should override this) -# -# xref Generates cscope (source cross-reference index) -# -# For details on what these targets are supposed to do, see the Joyent -# Engineering Guide. -# -# To make use of these targets, you'll need to set some of these variables. Any -# variables left unset will simply not be used. -# -# BASH_FILES Bash scripts to check for syntax -# (paths relative to top-level Makefile) -# -# CLEAN_FILES Files to remove as part of the "clean" target. Note -# that files generated by targets in this Makefile are -# automatically included in CLEAN_FILES. These include -# restdown-generated HTML and JSON files. -# -# DOC_FILES Restdown (documentation source) files. These are -# assumed to be contained in "docs/", and must NOT -# contain the "docs/" prefix. -# -# JSL_CONF_NODE Specify JavaScriptLint configuration files -# JSL_CONF_WEB (paths relative to top-level Makefile) -# -# Node.js and Web configuration files are separate -# because you'll usually want different global variable -# configurations. If no file is specified, none is given -# to jsl, which causes it to use a default configuration, -# which probably isn't what you want. -# -# JSL_FILES_NODE JavaScript files to check with Node config file. -# JSL_FILES_WEB JavaScript files to check with Web config file. -# -# You can also override these variables: -# -# BASH Path to bash (default: bash) -# -# CSCOPE_DIRS Directories to search for source files for the cscope -# index. (default: ".") -# -# JSL Path to JavaScriptLint (default: "jsl") -# -# JSL_FLAGS_NODE Additional flags to pass through to JSL -# JSL_FLAGS_WEB -# JSL_FLAGS -# -# JSSTYLE Path to jsstyle (default: jsstyle) -# -# JSSTYLE_FLAGS Additional flags to pass through to jsstyle -# - -# -# Defaults for the various tools we use. -# -BASH ?= bash -BASHSTYLE ?= tools/bashstyle -CP ?= cp -CSCOPE ?= cscope -CSCOPE_DIRS ?= . -JSL ?= jsl -JSSTYLE ?= jsstyle -MKDIR ?= mkdir -p -MV ?= mv -RESTDOWN_FLAGS ?= -RMTREE ?= rm -rf -JSL_FLAGS ?= --nologo --nosummary - -ifeq ($(shell uname -s),SunOS) - TAR ?= gtar -else - TAR ?= tar -endif - - -# -# Defaults for other fixed values. -# -BUILD = build -DISTCLEAN_FILES += $(BUILD) -DOC_BUILD = $(BUILD)/docs/public - -# -# Configure JSL_FLAGS_{NODE,WEB} based on JSL_CONF_{NODE,WEB}. -# -ifneq ($(origin JSL_CONF_NODE), undefined) - JSL_FLAGS_NODE += --conf=$(JSL_CONF_NODE) -endif - -ifneq ($(origin JSL_CONF_WEB), undefined) - JSL_FLAGS_WEB += --conf=$(JSL_CONF_WEB) -endif - -# -# Targets. For descriptions on what these are supposed to do, see the -# Joyent Engineering Guide. -# - -# -# Instruct make to keep around temporary files. We have rules below that -# automatically update git submodules as needed, but they employ a deps/*/.git -# temporary file. Without this directive, make tries to remove these .git -# directories after the build has completed. -# -.SECONDARY: $($(wildcard deps/*):%=%/.git) - -# -# This rule enables other rules that use files from a git submodule to have -# those files depend on deps/module/.git and have "make" automatically check -# out the submodule as needed. -# -deps/%/.git: - git submodule update --init deps/$* - -# -# These recipes make heavy use of dynamically-created phony targets. The parent -# Makefile defines a list of input files like BASH_FILES. We then say that each -# of these files depends on a fake target called filename.bashchk, and then we -# define a pattern rule for those targets that runs bash in check-syntax-only -# mode. This mechanism has the nice properties that if you specify zero files, -# the rule becomes a noop (unlike a single rule to check all bash files, which -# would invoke bash with zero files), and you can check individual files from -# the command line with "make filename.bashchk". -# -.PHONY: check-bash -check-bash: $(BASH_FILES:%=%.bashchk) $(BASH_FILES:%=%.bashstyle) - -%.bashchk: % - $(BASH) -n $^ - -%.bashstyle: % - $(BASHSTYLE) $^ - -.PHONY: check-jsl check-jsl-node check-jsl-web -check-jsl: check-jsl-node check-jsl-web - -check-jsl-node: $(JSL_FILES_NODE:%=%.jslnodechk) - -check-jsl-web: $(JSL_FILES_WEB:%=%.jslwebchk) - -%.jslnodechk: % $(JSL_EXEC) - $(JSL) $(JSL_FLAGS) $(JSL_FLAGS_NODE) $< - -%.jslwebchk: % $(JSL_EXEC) - $(JSL) $(JSL_FLAGS) $(JSL_FLAGS_WEB) $< - -.PHONY: check-jsstyle -check-jsstyle: $(JSSTYLE_FILES:%=%.jsstylechk) - -%.jsstylechk: % $(JSSTYLE_EXEC) - $(JSSTYLE) $(JSSTYLE_FLAGS) $< - -.PHONY: check -check: check-jsl check-jsstyle check-bash - @echo check ok - -.PHONY: clean -clean:: - -$(RMTREE) $(CLEAN_FILES) - -.PHONY: distclean -distclean:: clean - -$(RMTREE) $(DISTCLEAN_FILES) - -CSCOPE_FILES = cscope.in.out cscope.out cscope.po.out -CLEAN_FILES += $(CSCOPE_FILES) - -.PHONY: xref -xref: cscope.files - $(CSCOPE) -bqR - -.PHONY: cscope.files -cscope.files: - find $(CSCOPE_DIRS) -name '*.c' -o -name '*.h' -o -name '*.cc' \ - -o -name '*.js' -o -name '*.s' -o -name '*.cpp' > $@ - -# -# The "docs" target is complicated because we do several things here: -# -# (1) Use restdown to build HTML and JSON files from each of DOC_FILES. -# -# (2) Copy these files into $(DOC_BUILD) (build/docs/public), which -# functions as a complete copy of the documentation that could be -# mirrored or served over HTTP. -# -# (3) Then copy any directories and media from docs/media into -# $(DOC_BUILD)/media. This allows projects to include their own media, -# including files that will override same-named files provided by -# restdown. -# -# Step (3) is the surprisingly complex part: in order to do this, we need to -# identify the subdirectories in docs/media, recreate them in -# $(DOC_BUILD)/media, then do the same with the files. -# -DOC_MEDIA_DIRS := $(shell find docs/media -type d 2>/dev/null | grep -v "^docs/media$$") -DOC_MEDIA_DIRS := $(DOC_MEDIA_DIRS:docs/media/%=%) -DOC_MEDIA_DIRS_BUILD := $(DOC_MEDIA_DIRS:%=$(DOC_BUILD)/media/%) - -DOC_MEDIA_FILES := $(shell find docs/media -type f 2>/dev/null) -DOC_MEDIA_FILES := $(DOC_MEDIA_FILES:docs/media/%=%) -DOC_MEDIA_FILES_BUILD := $(DOC_MEDIA_FILES:%=$(DOC_BUILD)/media/%) - -# -# Like the other targets, "docs" just depends on the final files we want to -# create in $(DOC_BUILD), leveraging other targets and recipes to define how -# to get there. -# -.PHONY: docs -docs: \ - $(DOC_FILES:%.restdown=$(DOC_BUILD)/%.html) \ - $(DOC_FILES:%.restdown=$(DOC_BUILD)/%.json) \ - $(DOC_MEDIA_FILES_BUILD) - -# -# We keep the intermediate files so that the next build can see whether the -# files in DOC_BUILD are up to date. -# -.PRECIOUS: \ - $(DOC_FILES:%.restdown=docs/%.html) \ - $(DOC_FILES:%.restdown=docs/%json) - -# -# We do clean those intermediate files, as well as all of DOC_BUILD. -# -CLEAN_FILES += \ - $(DOC_BUILD) \ - $(DOC_FILES:%.restdown=docs/%.html) \ - $(DOC_FILES:%.restdown=docs/%.json) - -# -# Before installing the files, we must make sure the directories exist. The | -# syntax tells make that the dependency need only exist, not be up to date. -# Otherwise, it might try to rebuild spuriously because the directory itself -# appears out of date. -# -$(DOC_MEDIA_FILES_BUILD): | $(DOC_MEDIA_DIRS_BUILD) - -$(DOC_BUILD)/%: docs/% | $(DOC_BUILD) - $(CP) $< $@ - -docs/%.json docs/%.html: docs/%.restdown | $(DOC_BUILD) $(RESTDOWN_EXEC) - $(RESTDOWN) $(RESTDOWN_FLAGS) -m $(DOC_BUILD) $< - -$(DOC_BUILD): - $(MKDIR) $@ - -$(DOC_MEDIA_DIRS_BUILD): - $(MKDIR) $@ - -# -# The default "test" target does nothing. This should usually be overridden by -# the parent Makefile. It's included here so we can define "prepush" without -# requiring the repo to define "test". -# -.PHONY: test -test: - -.PHONY: prepush -prepush: check test diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/README.md deleted file mode 100644 index e9b54978..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/README.md +++ /dev/null @@ -1,120 +0,0 @@ -# verror: richer JavaScript errors - -This module provides two classes: VError, for accretive errors, and WError, for -wrapping errors. Both support printf-style error messages using extsprintf. - -## Printf-style errors - -At the most basic level, VError is just like JavaScript's Error class, but with -printf-style arguments: - - var verror = require('verror'); - - var opname = 'read'; - var err = new verror.VError('"%s" operation failed', opname); - console.log(err.message); - console.log(err.stack); - -This prints: - - "read" operation failed - "read" operation failed - at Object. (/Users/dap/node-verror/examples/varargs.js:4:11) - at Module._compile (module.js:449:26) - at Object.Module._extensions..js (module.js:467:10) - at Module.load (module.js:356:32) - at Function.Module._load (module.js:312:12) - at Module.runMain (module.js:492:10) - at process.startup.processNextTick.process._tickCallback (node.js:244:9) - - -## VError for accretive error messages - -More interestingly, you can use VError to build up an error describing what -happened at various levels in the stack. For example, suppose you have a -request handler that stats a file and fails if it doesn't exist: - - var fs = require('fs'); - var verror = require('verror'); - - function checkFile(filename, callback) { - fs.stat(filename, function (err) { - if (err) - /* Annotate the "stat" error with what we were doing. */ - return (callback(new verror.VError(err, - 'failed to check "%s"', filename))); - - /* ... */ - }); - } - - function handleRequest(filename, callback) { - checkFile('/nonexistent', function (err) { - if (err) { - /* Annotate the "checkFile" error with what we were doing. */ - return (callback(new verror.VError(err, 'request failed'))); - } - - /* ... */ - }); - } - - handleRequest('/nonexistent', function (err) { - if (err) - console.log(err.message); - /* ... */ - }); - -Since the file "/nonexistent" doesn't exist, this prints out: - - request failed: failed to check "/nonexistent": ENOENT, stat '/nonexistent' - -The idea here is that the lowest level (Node's "fs.stat" function) generates an -arbitrary error, and each higher level (request handler and stat callback) -creates a new VError that annotates the previous error with what it was doing, -so that the result is a clear message explaining what failed at each level. - -This plays nicely with extsprintf's "%r" specifier, which prints out a -Java-style stacktrace with the whole chain of exceptions: - - EXCEPTION: VError: request failed: failed to check "/nonexistent": ENOENT, stat '/nonexistent' - at /Users/dap/work/node-verror/examples/levels.js:21:21 - at /Users/dap/work/node-verror/examples/levels.js:9:12 - at Object.oncomplete (fs.js:297:15) - Caused by: EXCEPTION: VError: failed to check "/nonexistent": ENOENT, stat '/nonexistent' - at /Users/dap/work/node-verror/examples/levels.js:9:21 - at Object.oncomplete (fs.js:297:15) - Caused by: EXCEPTION: Error: Error: ENOENT, stat '/nonexistent' - - -## WError for wrapped errors - -Sometimes you don't want an Error's "message" field to include the details of -all of the low-level errors, but you still want to be able to get at them -programmatically. For example, in an HTTP server, you probably don't want to -spew all of the low-level errors back to the client, but you do want to include -them in the audit log entry for the request. In that case, you can use a -WError, which is created exactly like VError (and also supports both -printf-style arguments and an optional cause), but the resulting "message" only -contains the top-level error. It's also more verbose, including the class -associated with each error in the cause chain. Using the same example above, -but replacing the VError in handleRequest with WError, we get this output: - - request failed - -That's what we wanted -- just a high-level summary for the client. But we can -get the object's toString() for the full details: - - WError: request failed; caused by WError: failed to check "/nonexistent"; - caused by Error: ENOENT, stat '/nonexistent' - -# Contributing - -Contributions welcome. Code should be "make check" clean. To run "make check", -you'll need these tools: - -* https://github.com/davepacheco/jsstyle -* https://github.com/davepacheco/javascriptlint - -If you're changing something non-trivial or user-facing, you may want to submit -an issue first. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-verror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-verror.js deleted file mode 100644 index 53a7022c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-verror.js +++ /dev/null @@ -1,36 +0,0 @@ -var extsprintf = require('extsprintf'); -var fs = require('fs'); -var verror = require('../lib/verror'); - -function checkFile(filename, callback) { - fs.stat(filename, function (err) { - if (err) - /* Annotate the "stat" error with what we were doing. */ - return (callback(new verror.VError(err, - 'failed to check "%s"', filename))); - - /* ... */ - return (callback()); - }); -} - -function handleRequest(filename, callback) { - checkFile('/nonexistent', function (err) { - if (err) - /* Annotate the "checkFile" error. */ - return (callback(new verror.VError( - err, 'request failed'))); - - /* ... */ - return (callback()); - }); -} - -handleRequest('/nonexistent', function (err) { - if (err) { - console.log(err.message); - console.log(extsprintf.sprintf('%r', err)); - } - - /* ... */ -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-werror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-werror.js deleted file mode 100644 index 7e570756..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/levels-werror.js +++ /dev/null @@ -1,34 +0,0 @@ -var extsprintf = require('extsprintf'); -var fs = require('fs'); -var verror = require('../lib/verror'); - -function checkFile(filename, callback) { - fs.stat(filename, function (err) { - if (err) - /* Annotate the "stat" error with what we were doing. */ - return (callback(new verror.VError(err, - 'failed to check "%s"', filename))); - - /* ... */ - return (callback()); - }); -} - -function handleRequest(filename, callback) { - checkFile('/nonexistent', function (err) { - if (err) - /* Wrap the "checkFile" error. */ - return (callback(new verror.WError( - err, 'request failed'))); - - /* ... */ - return (callback()); - }); -} - -handleRequest('/nonexistent', function (err) { - if (err) { - console.log(err.message); - console.log(err.toString()); - } -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/varargs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/varargs.js deleted file mode 100644 index 2e14ee48..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/varargs.js +++ /dev/null @@ -1,6 +0,0 @@ -var verror = require('../lib/verror'); - -var opname = 'read'; -var err = new verror.VError('"%s" operation failed', opname); -console.log(err.message); -console.log(err.stack); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/verror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/verror.js deleted file mode 100644 index 887b181b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/verror.js +++ /dev/null @@ -1,13 +0,0 @@ -var mod_fs = require('fs'); -var mod_verror = require('../lib/verror'); - -var filename = '/nonexistent'; - -mod_fs.stat(filename, function (err1) { - var err2 = new mod_verror.VError(err1, 'failed to stat "%s"', filename); - - /* The following would normally be higher up the stack. */ - var err3 = new mod_verror.VError(err2, 'failed to handle request'); - console.log(err3.message); - console.log(err3.stack); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/werror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/werror.js deleted file mode 100644 index f55e5322..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/examples/werror.js +++ /dev/null @@ -1,14 +0,0 @@ -var mod_fs = require('fs'); -var mod_verror = require('../lib/verror'); - -var filename = '/nonexistent'; - -mod_fs.stat(filename, function (err1) { - var err2 = new mod_verror.WError(err1, 'failed to stat "%s"', filename); - - /* The following would normally be higher up the stack. */ - var err3 = new mod_verror.WError(err2, 'failed to handle request'); - console.log(err3.message); - console.log(err3.toString()); - console.log(err3.stack); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/jsl.node.conf b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/jsl.node.conf deleted file mode 100644 index bd724a2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/jsl.node.conf +++ /dev/null @@ -1,139 +0,0 @@ -# -# Configuration File for JavaScript Lint -# -# This configuration file can be used to lint a collection of scripts, or to enable -# or disable warnings for scripts that are linted via the command line. -# - -### Warnings -# Enable or disable warnings based on requirements. -# Use "+WarningName" to display or "-WarningName" to suppress. -# -+ambiguous_else_stmt # the else statement could be matched with one of multiple if statements (use curly braces to indicate intent -+ambiguous_nested_stmt # block statements containing block statements should use curly braces to resolve ambiguity -+ambiguous_newline # unexpected end of line; it is ambiguous whether these lines are part of the same statement -+anon_no_return_value # anonymous function does not always return value -+assign_to_function_call # assignment to a function call --block_without_braces # block statement without curly braces -+comma_separated_stmts # multiple statements separated by commas (use semicolons?) -+comparison_type_conv # comparisons against null, 0, true, false, or an empty string allowing implicit type conversion (use === or !==) -+default_not_at_end # the default case is not at the end of the switch statement -+dup_option_explicit # duplicate "option explicit" control comment -+duplicate_case_in_switch # duplicate case in switch statement -+duplicate_formal # duplicate formal argument {name} -+empty_statement # empty statement or extra semicolon -+identifier_hides_another # identifer {name} hides an identifier in a parent scope --inc_dec_within_stmt # increment (++) and decrement (--) operators used as part of greater statement -+incorrect_version # Expected /*jsl:content-type*/ control comment. The script was parsed with the wrong version. -+invalid_fallthru # unexpected "fallthru" control comment -+invalid_pass # unexpected "pass" control comment -+jsl_cc_not_understood # couldn't understand control comment using /*jsl:keyword*/ syntax -+leading_decimal_point # leading decimal point may indicate a number or an object member -+legacy_cc_not_understood # couldn't understand control comment using /*@keyword@*/ syntax -+meaningless_block # meaningless block; curly braces have no impact -+mismatch_ctrl_comments # mismatched control comment; "ignore" and "end" control comments must have a one-to-one correspondence -+misplaced_regex # regular expressions should be preceded by a left parenthesis, assignment, colon, or comma -+missing_break # missing break statement -+missing_break_for_last_case # missing break statement for last case in switch -+missing_default_case # missing default case in switch statement -+missing_option_explicit # the "option explicit" control comment is missing -+missing_semicolon # missing semicolon -+missing_semicolon_for_lambda # missing semicolon for lambda assignment -+multiple_plus_minus # unknown order of operations for successive plus (e.g. x+++y) or minus (e.g. x---y) signs -+nested_comment # nested comment -+no_return_value # function {name} does not always return a value -+octal_number # leading zeros make an octal number -+parseint_missing_radix # parseInt missing radix parameter -+partial_option_explicit # the "option explicit" control comment, if used, must be in the first script tag -+redeclared_var # redeclaration of {name} -+trailing_comma_in_array # extra comma is not recommended in array initializers -+trailing_decimal_point # trailing decimal point may indicate a number or an object member -+undeclared_identifier # undeclared identifier: {name} -+unreachable_code # unreachable code --unreferenced_argument # argument declared but never referenced: {name} --unreferenced_function # function is declared but never referenced: {name} -+unreferenced_variable # variable is declared but never referenced: {name} -+unsupported_version # JavaScript {version} is not supported -+use_of_label # use of label -+useless_assign # useless assignment -+useless_comparison # useless comparison; comparing identical expressions --useless_quotes # the quotation marks are unnecessary -+useless_void # use of the void type may be unnecessary (void is always undefined) -+var_hides_arg # variable {name} hides argument -+want_assign_or_call # expected an assignment or function call -+with_statement # with statement hides undeclared variables; use temporary variable instead - - -### Output format -# Customize the format of the error message. -# __FILE__ indicates current file path -# __FILENAME__ indicates current file name -# __LINE__ indicates current line -# __COL__ indicates current column -# __ERROR__ indicates error message (__ERROR_PREFIX__: __ERROR_MSG__) -# __ERROR_NAME__ indicates error name (used in configuration file) -# __ERROR_PREFIX__ indicates error prefix -# __ERROR_MSG__ indicates error message -# -# For machine-friendly output, the output format can be prefixed with -# "encode:". If specified, all items will be encoded with C-slashes. -# -# Visual Studio syntax (default): -+output-format __FILE__(__LINE__): __ERROR__ -# Alternative syntax: -#+output-format __FILE__:__LINE__: __ERROR__ - - -### Context -# Show the in-line position of the error. -# Use "+context" to display or "-context" to suppress. -# -+context - - -### Control Comments -# Both JavaScript Lint and the JScript interpreter confuse each other with the syntax for -# the /*@keyword@*/ control comments and JScript conditional comments. (The latter is -# enabled in JScript with @cc_on@). The /*jsl:keyword*/ syntax is preferred for this reason, -# although legacy control comments are enabled by default for backward compatibility. -# --legacy_control_comments - - -### Defining identifiers -# By default, "option explicit" is enabled on a per-file basis. -# To enable this for all files, use "+always_use_option_explicit" --always_use_option_explicit - -# Define certain identifiers of which the lint is not aware. -# (Use this in conjunction with the "undeclared identifier" warning.) -# -# Common uses for webpages might be: -+define __dirname -+define clearInterval -+define clearTimeout -+define console -+define exports -+define global -+define process -+define require -+define setInterval -+define setTimeout -+define Buffer -+define JSON -+define Math -+define __dirname -+define __filename - -### JavaScript Version -# To change the default JavaScript version: -#+default-type text/javascript;version=1.5 -#+default-type text/javascript;e4x=1 - -### Files -# Specify which files to lint -# Use "+recurse" to enable recursion (disabled by default). -# To add a set of files, use "+process FileName", "+process Folder\Path\*.js", -# or "+process Folder\Path\*.htm". -# - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/lib/verror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/lib/verror.js deleted file mode 100644 index 9ca087b1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/lib/verror.js +++ /dev/null @@ -1,157 +0,0 @@ -/* - * verror.js: richer JavaScript errors - */ - -var mod_assert = require('assert'); -var mod_util = require('util'); - -var mod_extsprintf = require('extsprintf'); - -/* - * Public interface - */ -exports.VError = VError; -exports.WError = WError; -exports.MultiError = MultiError; - -/* - * Like JavaScript's built-in Error class, but supports a "cause" argument and a - * printf-style message. The cause argument can be null. - */ -function VError(options) -{ - var args, causedBy, ctor, tailmsg; - - if (options instanceof Error || typeof (options) === 'object') { - args = Array.prototype.slice.call(arguments, 1); - } else { - args = Array.prototype.slice.call(arguments, 0); - options = undefined; - } - - tailmsg = args.length > 0 ? - mod_extsprintf.sprintf.apply(null, args) : ''; - this.jse_shortmsg = tailmsg; - this.jse_summary = tailmsg; - - if (options) { - causedBy = options.cause; - - if (!causedBy || !(options.cause instanceof Error)) - causedBy = options; - - if (causedBy && (causedBy instanceof Error)) { - this.jse_cause = causedBy; - this.jse_summary += ': ' + causedBy.message; - } - } - - this.message = this.jse_summary; - Error.call(this, this.jse_summary); - - if (Error.captureStackTrace) { - ctor = options ? options.constructorOpt : undefined; - ctor = ctor || arguments.callee; - Error.captureStackTrace(this, ctor); - } -} - -mod_util.inherits(VError, Error); -VError.prototype.name = 'VError'; - -VError.prototype.toString = function ve_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - - return (str); -}; - -VError.prototype.cause = function ve_cause() -{ - return (this.jse_cause); -}; - - -/* - * Represents a collection of errors for the purpose of consumers that generally - * only deal with one error. Callers can extract the individual errors - * contained in this object, but may also just treat it as a normal single - * error, in which case a summary message will be printed. - */ -function MultiError(errors) -{ - mod_assert.ok(errors.length > 0); - this.ase_errors = errors; - - VError.call(this, errors[0], 'first of %d error%s', - errors.length, errors.length == 1 ? '' : 's'); -} - -mod_util.inherits(MultiError, VError); - - - -/* - * Like JavaScript's built-in Error class, but supports a "cause" argument which - * is wrapped, not "folded in" as with VError. Accepts a printf-style message. - * The cause argument can be null. - */ -function WError(options) -{ - Error.call(this); - - var args, cause, ctor; - if (typeof (options) === 'object') { - args = Array.prototype.slice.call(arguments, 1); - } else { - args = Array.prototype.slice.call(arguments, 0); - options = undefined; - } - - if (args.length > 0) { - this.message = mod_extsprintf.sprintf.apply(null, args); - } else { - this.message = ''; - } - - if (options) { - if (options instanceof Error) { - cause = options; - } else { - cause = options.cause; - ctor = options.constructorOpt; - } - } - - Error.captureStackTrace(this, ctor || this.constructor); - if (cause) - this.cause(cause); - -} - -mod_util.inherits(WError, Error); -WError.prototype.name = 'WError'; - - -WError.prototype.toString = function we_toString() -{ - var str = (this.hasOwnProperty('name') && this.name || - this.constructor.name || this.constructor.prototype.name); - if (this.message) - str += ': ' + this.message; - if (this.we_cause && this.we_cause.message) - str += '; caused by ' + this.we_cause.toString(); - - return (str); -}; - -WError.prototype.cause = function we_cause(c) -{ - if (c instanceof Error) - this.we_cause = c; - - return (this.we_cause); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/package.json deleted file mode 100644 index 818f3acb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "_args": [ - [ - "verror@1.3.6", - "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim" - ] - ], - "_from": "verror@1.3.6", - "_id": "verror@1.3.6", - "_inCache": true, - "_installable": true, - "_location": "/verror", - "_npmUser": { - "email": "dap@cs.brown.edu", - "name": "dap" - }, - "_npmVersion": "1.1.65", - "_phantomChildren": {}, - "_requested": { - "name": "verror", - "raw": "verror@1.3.6", - "rawSpec": "1.3.6", - "scope": null, - "spec": "1.3.6", - "type": "version" - }, - "_requiredBy": [ - "/jsprim" - ], - "_resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "_shasum": "cff5df12946d297d2baaefaa2689e25be01c005c", - "_shrinkwrap": null, - "_spec": "verror@1.3.6", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/jsprim", - "bugs": { - "url": "https://github.com/davepacheco/node-verror/issues" - }, - "dependencies": { - "extsprintf": "1.0.2" - }, - "description": "richer JavaScript errors", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "cff5df12946d297d2baaefaa2689e25be01c005c", - "tarball": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" - }, - "engines": [ - "node >=0.6.0" - ], - "homepage": "https://github.com/davepacheco/node-verror#readme", - "main": "./lib/verror.js", - "maintainers": [ - { - "email": "dap@cs.brown.edu", - "name": "dap" - } - ], - "name": "verror", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/davepacheco/node-verror.git" - }, - "scripts": { - "test": "make test" - }, - "version": "1.3.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.inherit.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.inherit.js deleted file mode 100644 index 0f0d70b5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.inherit.js +++ /dev/null @@ -1,100 +0,0 @@ -/* - * tst.inherit.js: test that inheriting from VError and WError work as expected. - */ - -var mod_assert = require('assert'); -var mod_util = require('util'); - -var mod_verror = require('../lib/verror'); - -var VError = mod_verror.VError; -var WError = mod_verror.WError; -var err, suberr; - -function VErrorChild() -{ - VError.apply(this, Array.prototype.slice.call(arguments)); -} - -mod_util.inherits(VErrorChild, VError); -VErrorChild.prototype.name = 'VErrorChild'; - - -function WErrorChild() -{ - WError.apply(this, Array.prototype.slice.call(arguments)); -} - -mod_util.inherits(WErrorChild, WError); -WErrorChild.prototype.name = 'WErrorChild'; - - -suberr = new Error('root cause'); -err = new VErrorChild(suberr, 'top'); -mod_assert.ok(err instanceof Error); -mod_assert.ok(err instanceof VError); -mod_assert.ok(err instanceof VErrorChild); -mod_assert.equal(err.cause(), suberr); -mod_assert.equal(err.message, 'top: root cause'); -mod_assert.equal(err.toString(), 'VErrorChild: top: root cause'); -mod_assert.equal(err.stack.split('\n')[0], 'VErrorChild: top: root cause'); - -suberr = new Error('root cause'); -err = new WErrorChild(suberr, 'top'); -mod_assert.ok(err instanceof Error); -mod_assert.ok(err instanceof WError); -mod_assert.ok(err instanceof WErrorChild); -mod_assert.equal(err.cause(), suberr); -mod_assert.equal(err.message, 'top'); -mod_assert.equal(err.toString(), - 'WErrorChild: top; caused by Error: root cause'); -mod_assert.equal(err.stack.split('\n')[0], - 'WErrorChild: top; caused by Error: root cause'); - - -// Test that `.toString()` uses the ctor name. I.e. setting -// `.prototype.name` isn't necessary. -function VErrorChildNoName() { - VError.apply(this, Array.prototype.slice.call(arguments)); -} -mod_util.inherits(VErrorChildNoName, VError); -err = new VErrorChildNoName('top'); -mod_assert.equal(err.toString(), 'VErrorChildNoName: top'); - -function WErrorChildNoName() { - WError.apply(this, Array.prototype.slice.call(arguments)); -} -mod_util.inherits(WErrorChildNoName, WError); -err = new WErrorChildNoName('top'); -mod_assert.equal(err.toString(), 'WErrorChildNoName: top'); - - -// Test that `.prototype.name` can be used for the `.toString()` -// when the ctor is anonymous. -var VErrorChildAnon = function () { - VError.apply(this, Array.prototype.slice.call(arguments)); -}; -mod_util.inherits(VErrorChildAnon, VError); -VErrorChildAnon.prototype.name = 'VErrorChildAnon'; -err = new VErrorChildAnon('top'); -mod_assert.equal(err.toString(), 'VErrorChildAnon: top'); - -var WErrorChildAnon = function () { - WError.apply(this, Array.prototype.slice.call(arguments)); -}; -mod_util.inherits(WErrorChildAnon, WError); -WErrorChildAnon.prototype.name = 'WErrorChildAnon'; -err = new WErrorChildAnon('top'); -mod_assert.equal(err.toString(), 'WErrorChildAnon: top'); - - -// Test get appropriate exception name in `.toString()` when reconstituting -// an error instance a la: -// https://github.com/mcavage/node-fast/blob/master/lib/client.js#L215 -err = new VError('top'); -err.name = 'CustomNameError'; -mod_assert.equal(err.toString(), 'CustomNameError: top'); - -err = new WError('top'); -err.name = 'CustomNameError'; -mod_assert.equal(err.toString(), 'CustomNameError: top'); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.verror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.verror.js deleted file mode 100644 index ee937cd0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.verror.js +++ /dev/null @@ -1,156 +0,0 @@ -/* - * tst.verror.js: tests basic functionality of the VError class. - */ - -var mod_assert = require('assert'); -var mod_verror = require('../lib/verror'); - -var VError = mod_verror.VError; -var WError = mod_verror.WError; - -var err, suberr, stack, substack; - -/* - * Remove full paths and relative line numbers from stack traces so that we can - * compare against "known-good" output. - */ -function cleanStack(stacktxt) -{ - var re = new RegExp(__filename + ':\\d+:\\d+', 'gm'); - stacktxt = stacktxt.replace(re, 'tst.verror.js'); - return (stacktxt); -} - -/* - * Save the generic parts of all stack traces so we can avoid hardcoding - * Node-specific implementation details in our testing of stack traces. - */ -var nodestack = new Error().stack.split('\n').slice(2).join('\n'); - -/* no arguments */ -err = new VError(); -mod_assert.equal(err.name, 'VError'); -mod_assert.ok(err instanceof Error); -mod_assert.ok(err instanceof VError); -mod_assert.equal(err.message, ''); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -/* options-argument form */ -err = new VError({}); -mod_assert.equal(err.message, ''); -mod_assert.ok(err.cause() === undefined); - -/* simple message */ -err = new VError('my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: my error', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -err = new VError({}, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.ok(err.cause() === undefined); - -/* printf-style message */ -err = new VError('%s error: %3d problems', 'very bad', 15); -mod_assert.equal(err.message, 'very bad error: 15 problems'); -mod_assert.ok(err.cause() === undefined); - -err = new VError({}, '%s error: %3d problems', 'very bad', 15); -mod_assert.equal(err.message, 'very bad error: 15 problems'); -mod_assert.ok(err.cause() === undefined); - -/* caused by another error, with no additional message */ -suberr = new Error('root cause'); -err = new VError(suberr); -mod_assert.equal(err.message, ': root cause'); -mod_assert.ok(err.cause() === suberr); - -err = new VError({ 'cause': suberr }); -mod_assert.equal(err.message, ': root cause'); -mod_assert.ok(err.cause() === suberr); - -/* caused by another error, with annotation */ -err = new VError(suberr, 'proximate cause: %d issues', 3); -mod_assert.equal(err.message, 'proximate cause: 3 issues: root cause'); -mod_assert.ok(err.cause() === suberr); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: proximate cause: 3 issues: root cause', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -err = new VError({ 'cause': suberr }, 'proximate cause: %d issues', 3); -mod_assert.equal(err.message, 'proximate cause: 3 issues: root cause'); -mod_assert.ok(err.cause() === suberr); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: proximate cause: 3 issues: root cause', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -/* caused by another VError, with annotation. */ -suberr = err; -err = new VError(suberr, 'top'); -mod_assert.equal(err.message, 'top: proximate cause: 3 issues: root cause'); -mod_assert.ok(err.cause() === suberr); - -err = new VError({ 'cause': suberr }, 'top'); -mod_assert.equal(err.message, 'top: proximate cause: 3 issues: root cause'); -mod_assert.ok(err.cause() === suberr); - -/* caused by a WError */ -suberr = new WError(new Error('root cause'), 'mid'); -err = new VError(suberr, 'top'); -mod_assert.equal(err.message, 'top: mid'); -mod_assert.ok(err.cause() === suberr); - -/* null cause (for backwards compatibility with older versions) */ -err = new VError(null, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: my error', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -err = new VError({ 'cause': null }, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.ok(err.cause() === undefined); - -err = new VError(null); -mod_assert.equal(err.message, ''); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -/* constructorOpt */ -function makeErr(options) { - return (new VError(options, 'test error')); -} -err = makeErr({}); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: test error', - ' at makeErr (tst.verror.js)', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); - -err = makeErr({ 'constructorOpt': makeErr }); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'VError: test error', - ' at Object. (tst.verror.js)' -].join('\n') + '\n' + nodestack); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.werror.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.werror.js deleted file mode 100644 index c8cdc615..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/verror/tests/tst.werror.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * tst.werror.js: tests basic functionality of the WError class. - */ - -var mod_assert = require('assert'); -var mod_verror = require('../lib/verror'); - -var VError = mod_verror.VError; -var WError = mod_verror.WError; - -var err, suberr, stack, substack; - -/* - * Remove full paths and relative line numbers from stack traces so that we can - * compare against "known-good" output. - */ -function cleanStack(stacktxt) -{ - var re = new RegExp(__filename + ':\\d+:\\d+', 'gm'); - stacktxt = stacktxt.replace(re, 'tst.werror.js'); - return (stacktxt); -} - -/* - * Save the generic parts of all stack traces so we can avoid hardcoding - * Node-specific implementation details in our testing of stack traces. - */ -var nodestack = new Error().stack.split('\n').slice(2).join('\n'); - -/* no arguments */ -err = new WError(); -mod_assert.equal(err.name, 'WError'); -mod_assert.ok(err instanceof Error); -mod_assert.ok(err instanceof WError); -mod_assert.equal(err.message, ''); -mod_assert.equal(err.toString(), 'WError'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -/* options-argument form */ -err = new WError({}); -mod_assert.equal(err.message, ''); -mod_assert.equal(err.toString(), 'WError'); -mod_assert.ok(err.cause() === undefined); - -/* simple message */ -err = new WError('my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.equal(err.toString(), 'WError: my error'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: my error', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -err = new WError({}, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.equal(err.toString(), 'WError: my error'); -mod_assert.ok(err.cause() === undefined); - -/* printf-style message */ -err = new WError('%s error: %3d problems', 'very bad', 15); -mod_assert.equal(err.message, 'very bad error: 15 problems'); -mod_assert.equal(err.toString(), 'WError: very bad error: 15 problems'); -mod_assert.ok(err.cause() === undefined); - -err = new WError({}, '%s error: %3d problems', 'very bad', 15); -mod_assert.equal(err.message, 'very bad error: 15 problems'); -mod_assert.equal(err.toString(), 'WError: very bad error: 15 problems'); -mod_assert.ok(err.cause() === undefined); - -/* caused by another error, with no additional message */ -suberr = new Error('root cause'); -err = new WError(suberr); -mod_assert.equal(err.message, ''); -mod_assert.equal(err.toString(), 'WError; caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); - -err = new WError({ 'cause': suberr }); -mod_assert.equal(err.message, ''); -mod_assert.equal(err.toString(), 'WError; caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); - -/* caused by another error, with annotation */ -err = new WError(suberr, 'proximate cause: %d issues', 3); -mod_assert.equal(err.message, 'proximate cause: 3 issues'); -mod_assert.equal(err.toString(), 'WError: proximate cause: 3 issues; ' + - 'caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: proximate cause: 3 issues; caused by Error: root cause', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -err = new WError({ 'cause': suberr }, 'proximate cause: %d issues', 3); -mod_assert.equal(err.message, 'proximate cause: 3 issues'); -mod_assert.equal(err.toString(), 'WError: proximate cause: 3 issues; ' + - 'caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: proximate cause: 3 issues; caused by Error: root cause', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -/* caused by another WError, with annotation. */ -suberr = err; -err = new WError(suberr, 'top'); -mod_assert.equal(err.message, 'top'); -mod_assert.equal(err.toString(), 'WError: top; caused by WError: ' + - 'proximate cause: 3 issues; caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); - -err = new WError({ 'cause': suberr }, 'top'); -mod_assert.equal(err.message, 'top'); -mod_assert.equal(err.toString(), 'WError: top; caused by WError: ' + - 'proximate cause: 3 issues; caused by Error: root cause'); -mod_assert.ok(err.cause() === suberr); - -/* caused by a VError */ -suberr = new VError(new Error('root cause'), 'mid'); -err = new WError(suberr, 'top'); -mod_assert.equal(err.message, 'top'); -mod_assert.equal(err.toString(), - 'WError: top; caused by VError: mid: root cause'); -mod_assert.ok(err.cause() === suberr); - -/* null cause (for backwards compatibility with older versions) */ -err = new WError(null, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.equal(err.toString(), 'WError: my error'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: my error', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -err = new WError({ 'cause': null }, 'my error'); -mod_assert.equal(err.message, 'my error'); -mod_assert.equal(err.toString(), 'WError: my error'); -mod_assert.ok(err.cause() === undefined); - -err = new WError(null); -mod_assert.equal(err.message, ''); -mod_assert.equal(err.toString(), 'WError'); -mod_assert.ok(err.cause() === undefined); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -/* constructorOpt */ -function makeErr(options) { - return (new WError(options, 'test error')); -} -err = makeErr({}); -mod_assert.equal(err.toString(), 'WError: test error'); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: test error', - ' at makeErr (tst.werror.js)', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); - -err = makeErr({ 'constructorOpt': makeErr }); -mod_assert.equal(err.toString(), 'WError: test error'); -stack = cleanStack(err.stack); -mod_assert.equal(stack, [ - 'WError: test error', - ' at Object. (tst.werror.js)' -].join('\n') + '\n' + nodestack); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/LICENSE deleted file mode 100755 index 7cbe012c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/README.md deleted file mode 100644 index d3248d77..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# vinyl-fs [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl-fs) - -## Information - - - - - - - - - - - - - -
      Packagevinyl-fs
      DescriptionVinyl adapter for the file system
      Node Version>= 0.10
      - -## Usage - -```javascript -var map = require('map-stream'); -var fs = require('vinyl-fs'); - -var log = function(file, cb) { - console.log(file.path); - cb(null, file); -}; - -fs.src(['./js/**/*.js', '!./js/vendor/*.js']) - .pipe(map(log)) - .pipe(fs.dest('./output')); -``` - -## API - -### src(globs[, opt]) - -- Takes a glob string or an array of glob strings as the first argument. -- Possible options for the second argument: - - cwd - Specify the working directory the folder is relative to. Default is `process.cwd()` - - base - Specify the folder relative to the cwd. Default is where the glob begins. This is used to determine the file names when saving in `.dest()` - - buffer - `true` or `false` if you want to buffer the file. - - Default value is `true` - - `false` will make file.contents a paused Stream - - read - `true` or `false` if you want the file to be read or not. Useful for stuff like `rm`ing files. - - Default value is `true` - - `false` will disable writing the file to disk via `.dest()` - - Any glob-related options are documented in [glob-stream] and [node-glob] -- Returns a Readable/Writable stream. -- On write the stream will simply pass items through. -- This stream emits matching [vinyl] File objects - -### watch(globs[, opt, cb]) - -This is just [glob-watcher] - -- Takes a glob string or an array of glob strings as the first argument. -- Possible options for the second argument: - - Any options are passed to [gaze] -- Returns an EventEmitter - - 'changed' event is emitted on each file change -- Optionally calls the callback on each change event - -### dest(folder[, opt]) - -- Takes a folder path as the first argument. -- First argument can also be a function that takes in a file and returns a folder path. -- Possible options for the second argument: - - cwd - Specify the working directory the folder is relative to. Default is `process.cwd()` - - mode - Specify the mode the files should be created with. Default is the mode of the input file (file.stat.mode) -- Returns a Readable/Writable stream. -- On write the stream will save the [vinyl] File to disk at the folder/cwd specified. -- After writing the file to disk, it will be emitted from the stream so you can keep piping these around -- The file will be modified after being written to this stream - - `cwd`, `base`, and `path` will be overwritten to match the folder - - `stat.mode` will be overwritten if you used a mode parameter - - `contents` will have it's position reset to the beginning if it is a stream - -[glob-stream]: https://github.com/wearefractal/glob-stream -[node-glob]: https://github.com/isaacs/node-glob -[gaze]: https://github.com/shama/gaze -[glob-watcher]: https://github.com/wearefractal/glob-watcher -[vinyl]: https://github.com/wearefractal/vinyl - -[npm-url]: https://npmjs.org/package/vinyl-fs -[npm-image]: https://badge.fury.io/js/vinyl-fs.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl-fs -[travis-image]: https://travis-ci.org/wearefractal/vinyl-fs.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl-fs -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl-fs/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl-fs -[depstat-image]: https://david-dm.org/wearefractal/vinyl-fs.png diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/index.js deleted file mode 100644 index 7306aa78..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/index.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -module.exports = { - src: require('./lib/src'), - dest: require('./lib/dest'), - watch: require('glob-watcher') -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/index.js deleted file mode 100644 index 1b94ad31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/index.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -var defaults = require('defaults'); -var path = require('path'); -var through2 = require('through2'); -var mkdirp = require('mkdirp'); -var fs = require('graceful-fs'); - -var writeContents = require('./writeContents'); - - -function dest(outFolder, opt) { - opt = opt || {}; - if (typeof outFolder !== 'string' && typeof outFolder !== 'function') { - throw new Error('Invalid output folder'); - } - - var options = defaults(opt, { - cwd: process.cwd() - }); - - if (typeof options.mode === 'string') { - options.mode = parseInt(options.mode, 8); - } - - var cwd = path.resolve(options.cwd); - - function saveFile (file, enc, cb) { - var basePath; - if (typeof outFolder === 'string') { - basePath = path.resolve(cwd, outFolder); - } - if (typeof outFolder === 'function') { - basePath = path.resolve(cwd, outFolder(file)); - } - var writePath = path.resolve(basePath, file.relative); - var writeFolder = path.dirname(writePath); - - // wire up new properties - file.stat = file.stat ? file.stat : new fs.Stats(); - file.stat.mode = (options.mode || file.stat.mode); - file.cwd = cwd; - file.base = basePath; - file.path = writePath; - - // mkdirp the folder the file is going in - mkdirp(writeFolder, function(err){ - if (err) { - return cb(err); - } - writeContents(writePath, file, cb); - }); - } - - var stream = through2.obj(saveFile); - // TODO: option for either backpressure or lossy - stream.resume(); - return stream; -} - -module.exports = dest; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/index.js deleted file mode 100644 index ab8f0f9d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/index.js +++ /dev/null @@ -1,59 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var writeDir = require('./writeDir'); -var writeStream = require('./writeStream'); -var writeBuffer = require('./writeBuffer'); - -function writeContents(writePath, file, cb) { - var written = function(err) { - var done = function(err) { - cb(err, file); - }; - if (err) { - return done(err); - } - - if (!file.stat || typeof file.stat.mode !== 'number') { - return done(); - } - - fs.stat(writePath, function(err, st) { - if (err) { - return done(err); - } - // octal 7777 = decimal 4095 - var currentMode = (st.mode & 4095); - if (currentMode === file.stat.mode) { - return done(); - } - fs.chmod(writePath, file.stat.mode, done); - }); - }; - - // if directory then mkdirp it - if (file.isDirectory()) { - writeDir(writePath, file, written); - return; - } - - // stream it to disk yo - if (file.isStream()) { - writeStream(writePath, file, written); - return; - } - - // write it like normal - if (file.isBuffer()) { - writeBuffer(writePath, file, written); - return; - } - - // if no contents then do nothing - if (file.isNull()) { - cb(null, file); - return; - } -} - -module.exports = writeContents; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js deleted file mode 100644 index fe4be8f2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeBuffer.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); - -function writeBuffer(writePath, file, cb) { - var opt = { - mode: file.stat.mode - }; - - fs.writeFile(writePath, file.contents, opt, cb); -} - -module.exports = writeBuffer; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js deleted file mode 100644 index 9614b54d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeDir.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -var mkdirp = require('mkdirp'); - -function writeDir (writePath, file, cb) { - mkdirp(writePath, file.stat.mode, cb); -} - -module.exports = writeDir; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js deleted file mode 100644 index c49017aa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -var streamFile = require('../../src/getContents/streamFile'); -var fs = require('graceful-fs'); - -function writeStream (writePath, file, cb) { - var opt = { - mode: file.stat.mode - }; - - var outStream = fs.createWriteStream(writePath, opt); - - file.contents.once('error', cb); - outStream.once('error', cb); - outStream.once('finish', function() { - streamFile(file, cb); - }); - - file.contents.pipe(outStream); -} - -module.exports = writeStream; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js deleted file mode 100644 index 4448eb7e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/bufferFile.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); -var stripBom = require('strip-bom'); - -function bufferFile(file, cb) { - fs.readFile(file.path, function (err, data) { - if (err) { - return cb(err); - } - file.contents = stripBom(data); - cb(null, file); - }); -} - -module.exports = bufferFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/index.js deleted file mode 100644 index d21a2549..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/index.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -var through2 = require('through2'); - -var readDir = require('./readDir'); -var bufferFile = require('./bufferFile'); -var streamFile = require('./streamFile'); - -function getContents(opt) { - return through2.obj(function (file, enc, cb) { - // don't fail to read a directory - if (file.isDirectory()) { - return readDir(file, cb); - } - - // read and pass full contents - if (opt.buffer !== false) { - return bufferFile(file, cb); - } - - // dont buffer anything - just pass streams - return streamFile(file, cb); - }); -} - -module.exports = getContents; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/readDir.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/readDir.js deleted file mode 100644 index 783fac2c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/readDir.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -function readDir(file, cb) { - // do nothing for now - cb(null, file); -} - -module.exports = readDir; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/streamFile.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/streamFile.js deleted file mode 100644 index 1743edd7..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getContents/streamFile.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var fs = require('graceful-fs'); -var stripBom = require('strip-bom'); - -function streamFile(file, cb) { - file.contents = fs.createReadStream(file.path) - .pipe(stripBom.stream()); - - cb(null, file); -} - -module.exports = streamFile; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getStats.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getStats.js deleted file mode 100644 index 8380087c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/getStats.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -var through2 = require('through2'); -var fs = require('graceful-fs'); - -function getStats() { - return through2.obj(fetchStats); -} - -function fetchStats(file, enc, cb) { - fs.lstat(file.path, function (err, stat) { - if (stat) { - file.stat = stat; - } - cb(err, file); - }); -} - -module.exports = getStats; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/index.js deleted file mode 100644 index 21a17715..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/lib/src/index.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -var defaults = require('defaults'); -var through = require('through2'); -var gs = require('glob-stream'); -var File = require('vinyl'); - -var getContents = require('./getContents'); -var getStats = require('./getStats'); - -function createFile (globFile, enc, cb) { - cb(null, new File(globFile)); -} - -function src(glob, opt) { - opt = opt || {}; - var pass = through.obj(); - - if (!isValidGlob(glob)) { - throw new Error('Invalid glob argument: ' + glob); - } - // return dead stream if empty array - if (Array.isArray(glob) && glob.length === 0) { - process.nextTick(pass.end.bind(pass)); - return pass; - } - - var options = defaults(opt, { - read: true, - buffer: true - }); - - var globStream = gs.create(glob, options); - - // when people write to use just pass it through - var outputStream = globStream - .pipe(through.obj(createFile)) - .pipe(getStats(options)); - - if (options.read !== false) { - outputStream = outputStream - .pipe(getContents(options)); - } - - return outputStream.pipe(pass); -} - -function isValidGlob(glob) { - if (typeof glob === 'string') { - return true; - } - if (Array.isArray(glob) && glob.length !== 0) { - return glob.every(isValidGlob); - } - if (Array.isArray(glob) && glob.length === 0) { - return true; - } - return false; -} - -module.exports = src; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/.bin/strip-bom b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/.bin/strip-bom deleted file mode 100755 index 2c1e7c4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/.bin/strip-bom +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var stripBom = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-bom > ', - ' cat | strip-bom > ', - '', - ' Example', - ' strip-bom unicorn.txt > unicorn-without-bom.txt' - ].join('\n')); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - fs.createReadStream(input).pipe(stripBom.stream()).pipe(process.stdout); -} else { - process.stdin.pipe(stripBom.stream()).pipe(process.stdout); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.travis.yml deleted file mode 100644 index 58f23716..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.10 diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/LICENSE deleted file mode 100644 index fc808cce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright © 2011-2014 Paul Vorbach - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/README.md deleted file mode 100644 index d7231cfc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/README.md +++ /dev/null @@ -1,126 +0,0 @@ -# clone - -[![build status](https://secure.travis-ci.org/pvorb/node-clone.png)](http://travis-ci.org/pvorb/node-clone) - -offers foolproof _deep cloning_ of variables in JavaScript. - - -## Installation - - npm install clone - -or - - ender build clone - - -## Example - -~~~ javascript -var clone = require('clone'); - -var a, b; - -a = { foo: { bar: 'baz' } }; // initial value of a - -b = clone(a); // clone a -> b -a.foo.bar = 'foo'; // change a - -console.log(a); // show a -console.log(b); // show b -~~~ - -This will print: - -~~~ javascript -{ foo: { bar: 'foo' } } -{ foo: { bar: 'baz' } } -~~~ - -**clone** masters cloning simple objects (even with custom prototype), arrays, -Date objects, and RegExp objects. Everything is cloned recursively, so that you -can clone dates in arrays in objects, for example. - - -## API - -`clone(val, circular, depth)` - - * `val` -- the value that you want to clone, any type allowed - * `circular` -- boolean - - Call `clone` with `circular` set to `false` if you are certain that `obj` - contains no circular references. This will give better performance if needed. - There is no error if `undefined` or `null` is passed as `obj`. - * `depth` -- depth to which the object is to be cloned (optional, - defaults to infinity) - -`clone.clonePrototype(obj)` - - * `obj` -- the object that you want to clone - -Does a prototype clone as -[described by Oran Looney](http://oranlooney.com/functional-javascript/). - - -## Circular References - -~~~ javascript -var a, b; - -a = { hello: 'world' }; - -a.myself = a; -b = clone(a); - -console.log(b); -~~~ - -This will print: - -~~~ javascript -{ hello: "world", myself: [Circular] } -~~~ - -So, `b.myself` points to `b`, not `a`. Neat! - - -## Test - - npm test - - -## Caveat - -Some special objects like a socket or `process.stdout`/`stderr` are known to not -be cloneable. If you find other objects that cannot be cloned, please [open an -issue](https://github.com/pvorb/node-clone/issues/new). - - -## Bugs and Issues - -If you encounter any bugs or issues, feel free to [open an issue at -github](https://github.com/pvorb/node-clone/issues) or send me an email to -. I also always like to hear from you, if you’re using my code. - -## License - -Copyright © 2011-2014 [Paul Vorbach](http://paul.vorba.ch/) and -[contributors](https://github.com/pvorb/node-clone/graphs/contributors). - -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, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/clone.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/clone.js deleted file mode 100644 index f8fa3159..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/clone.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -// shim for Node's 'util' package -// DO NOT REMOVE THIS! It is required for compatibility with EnderJS (http://enderjs.com/). -var util = { - isArray: function (ar) { - return Array.isArray(ar) || (typeof ar === 'object' && objectToString(ar) === '[object Array]'); - }, - isDate: function (d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; - }, - isRegExp: function (re) { - return typeof re === 'object' && objectToString(re) === '[object RegExp]'; - }, - getRegExpFlags: function (re) { - var flags = ''; - re.global && (flags += 'g'); - re.ignoreCase && (flags += 'i'); - re.multiline && (flags += 'm'); - return flags; - } -}; - - -if (typeof module === 'object') - module.exports = clone; - -/** - * Clones (copies) an Object using deep copying. - * - * This function supports circular references by default, but if you are certain - * there are no circular references in your object, you can save some CPU time - * by calling clone(obj, false). - * - * Caution: if `circular` is false and `parent` contains circular references, - * your program may enter an infinite loop and crash. - * - * @param `parent` - the object to be cloned - * @param `circular` - set to true if the object to be cloned may contain - * circular references. (optional - true by default) - * @param `depth` - set to a number if the object is only to be cloned to - * a particular depth. (optional - defaults to Infinity) - * @param `prototype` - sets the prototype to be used when cloning an object. - * (optional - defaults to parent prototype). -*/ - -function clone(parent, circular, depth, prototype) { - // maintain two arrays for circular references, where corresponding parents - // and children have the same index - var allParents = []; - var allChildren = []; - - var useBuffer = typeof Buffer != 'undefined'; - - if (typeof circular == 'undefined') - circular = true; - - if (typeof depth == 'undefined') - depth = Infinity; - - // recurse this function so we don't reset allParents and allChildren - function _clone(parent, depth) { - // cloning null always returns null - if (parent === null) - return null; - - if (depth == 0) - return parent; - - var child; - var proto; - if (typeof parent != 'object') { - return parent; - } - - if (util.isArray(parent)) { - child = []; - } else if (util.isRegExp(parent)) { - child = new RegExp(parent.source, util.getRegExpFlags(parent)); - if (parent.lastIndex) child.lastIndex = parent.lastIndex; - } else if (util.isDate(parent)) { - child = new Date(parent.getTime()); - } else if (useBuffer && Buffer.isBuffer(parent)) { - child = new Buffer(parent.length); - parent.copy(child); - return child; - } else { - if (typeof prototype == 'undefined') { - proto = Object.getPrototypeOf(parent); - child = Object.create(proto); - } - else { - child = Object.create(prototype); - proto = prototype; - } - } - - if (circular) { - var index = allParents.indexOf(parent); - - if (index != -1) { - return allChildren[index]; - } - allParents.push(parent); - allChildren.push(child); - } - - for (var i in parent) { - var attrs; - if (proto) { - attrs = Object.getOwnPropertyDescriptor(proto, i); - } - - if (attrs && attrs.set == null) { - continue; - } - child[i] = _clone(parent[i], depth - 1); - } - - return child; - } - - return _clone(parent, depth); -} - -/** - * Simple flat clone using prototype, accepts only objects, usefull for property - * override on FLAT configuration object (no nested props). - * - * USE WITH CAUTION! This may not behave as you wish if you do not know how this - * works. - */ -clone.clonePrototype = function(parent) { - if (parent === null) - return null; - - var c = function () {}; - c.prototype = parent; - return new c(); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/package.json deleted file mode 100644 index ad1783de..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/package.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_args": [ - [ - "clone@^0.2.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/vinyl" - ] - ], - "_from": "clone@>=0.2.0 <0.3.0", - "_id": "clone@0.2.0", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/clone", - "_npmUser": { - "email": "paul@vorba.ch", - "name": "pvorb" - }, - "_npmVersion": "1.4.14", - "_phantomChildren": {}, - "_requested": { - "name": "clone", - "raw": "clone@^0.2.0", - "rawSpec": "^0.2.0", - "scope": null, - "spec": ">=0.2.0 <0.3.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs/vinyl" - ], - "_resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "_shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "_shrinkwrap": null, - "_spec": "clone@^0.2.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/vinyl", - "author": { - "email": "paul@vorba.ch", - "name": "Paul Vorbach", - "url": "http://paul.vorba.ch/" - }, - "bugs": { - "url": "https://github.com/pvorb/node-clone/issues" - }, - "contributors": [ - { - "email": "miner.blake@gmail.com", - "name": "Blake Miner", - "url": "http://www.blakeminer.com/" - }, - { - "email": "axqd001@gmail.com", - "name": "Tian You", - "url": "http://blog.axqd.net/" - }, - { - "email": "gstagas@gmail.com", - "name": "George Stagas", - "url": "http://stagas.com/" - }, - { - "email": "tobiasz.cudnik@gmail.com", - "name": "Tobiasz Cudnik", - "url": "https://github.com/TobiaszCudnik" - }, - { - "email": "langpavel@phpskelet.org", - "name": "Pavel Lang", - "url": "https://github.com/langpavel" - }, - { - "name": "Dan MacTough", - "url": "http://yabfog.com/" - }, - { - "name": "w1nk", - "url": "https://github.com/w1nk" - }, - { - "name": "Hugh Kennedy", - "url": "http://twitter.com/hughskennedy" - }, - { - "name": "Dustin Diaz", - "url": "http://dustindiaz.com" - }, - { - "name": "Ilya Shaisultanov", - "url": "https://github.com/diversario" - }, - { - "email": "nathan@macinn.es", - "name": "Nathan MacInnes", - "url": "http://macinn.es/" - }, - { - "email": "ben@npmjs.com", - "name": "Benjamin E. Coe", - "url": "https://twitter.com/benjamincoe" - }, - { - "name": "Nathan Zadoks", - "url": "https://github.com/nathan7" - }, - { - "email": "robert+gh@oroszi.net", - "name": "Róbert Oroszi", - "url": "https://github.com/oroce" - } - ], - "dependencies": {}, - "description": "deep cloning of objects and arrays", - "devDependencies": { - "nodeunit": "*", - "underscore": "*" - }, - "directories": {}, - "dist": { - "shasum": "c6126a90ad4f72dbf5acdb243cc37724fe93fc1f", - "tarball": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz" - }, - "engines": { - "node": "*" - }, - "gitHead": "bb11a43363a0f69e8ac014cb5376ce215ea1f8fd", - "homepage": "https://github.com/pvorb/node-clone", - "license": "MIT", - "main": "clone.js", - "maintainers": [ - { - "email": "paul@vorb.de", - "name": "pvorb" - } - ], - "name": "clone", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/pvorb/node-clone.git" - }, - "scripts": { - "test": "nodeunit test.js" - }, - "tags": [ - "clone", - "object", - "array", - "function", - "date" - ], - "version": "0.2.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/test.js deleted file mode 100644 index cb3d1663..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/clone/test.js +++ /dev/null @@ -1,289 +0,0 @@ -if(module.parent === null) { - console.log('Run this test file with nodeunit:'); - console.log('$ nodeunit test.js'); -} - - -var clone = require('./'); -var util = require('util'); -var _ = require('underscore'); - - - -exports["clone string"] = function(test) { - test.expect(2); // how many tests? - - var a = "foo"; - test.strictEqual(clone(a), a); - a = ""; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone number"] = function(test) { - test.expect(5); // how many tests? - - var a = 0; - test.strictEqual(clone(a), a); - a = 1; - test.strictEqual(clone(a), a); - a = -1000; - test.strictEqual(clone(a), a); - a = 3.1415927; - test.strictEqual(clone(a), a); - a = -3.1415927; - test.strictEqual(clone(a), a); - - test.done(); -}; - - - -exports["clone date"] = function(test) { - test.expect(3); // how many tests? - - var a = new Date; - var c = clone(a); - test.ok(a instanceof Date); - test.ok(c instanceof Date); - test.equal(c.getTime(), a.getTime()); - - test.done(); -}; - - - -exports["clone object"] = function(test) { - test.expect(2); // how many tests? - - var a = { foo: { bar: "baz" } }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone array"] = function(test) { - test.expect(2); // how many tests? - - var a = [ - { foo: "bar" }, - "baz" - ]; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - -exports["clone buffer"] = function(test) { - test.expect(1); - - var a = new Buffer("this is a test buffer"); - var b = clone(a); - - // no underscore equal since it has no concept of Buffers - test.deepEqual(b, a); - test.done(); -}; - - - -exports["clone regexp"] = function(test) { - test.expect(5); - - var a = /abc123/gi; - var b = clone(a); - - test.deepEqual(b, a); - - var c = /a/g; - test.ok(c.lastIndex === 0); - - c.exec('123a456a'); - test.ok(c.lastIndex === 4); - - var d = clone(c); - test.ok(d.global); - test.ok(d.lastIndex === 4); - - test.done(); -}; - - -exports["clone object containing array"] = function(test) { - test.expect(2); // how many tests? - - var a = { - arr1: [ { a: '1234', b: '2345' } ], - arr2: [ { c: '345', d: '456' } ] - }; - var b = clone(a); - - test.ok(_(a).isEqual(b), "underscore equal"); - test.deepEqual(b, a); - - test.done(); -}; - - - -exports["clone object with circular reference"] = function(test) { - test.expect(8); // how many tests? - - var _ = test.ok; - var c = [1, "foo", {'hello': 'bar'}, function() {}, false, [2]]; - var b = [c, 2, 3, 4]; - var a = {'b': b, 'c': c}; - a.loop = a; - a.loop2 = a; - c.loop = c; - c.aloop = a; - var aCopy = clone(a); - _(a != aCopy); - _(a.c != aCopy.c); - _(aCopy.c == aCopy.b[0]); - _(aCopy.c.loop.loop.aloop == aCopy); - _(aCopy.c[0] == a.c[0]); - - //console.log(util.inspect(aCopy, true, null) ); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(a, true, null) ); - _(eq(a, aCopy)); - aCopy.c[0] = 2; - _(!eq(a, aCopy)); - aCopy.c = "2"; - _(!eq(a, aCopy)); - //console.log("------------------------------------------------------------"); - //console.log(util.inspect(aCopy, true, null) ); - - function eq(x, y) { - return util.inspect(x, true, null) === util.inspect(y, true, null); - } - - test.done(); -}; - - - -exports['clonePrototype'] = function(test) { - test.expect(3); // how many tests? - - var a = { - a: "aaa", - x: 123, - y: 45.65 - }; - var b = clone.clonePrototype(a); - - test.strictEqual(b.a, a.a); - test.strictEqual(b.x, a.x); - test.strictEqual(b.y, a.y); - - test.done(); -} - -exports['cloneWithinNewVMContext'] = function(test) { - test.expect(3); - var vm = require('vm'); - var ctx = vm.createContext({ clone: clone }); - var script = "clone( {array: [1, 2, 3], date: new Date(), regex: /^foo$/ig} );"; - var results = vm.runInContext(script, ctx); - test.ok(results.array instanceof Array); - test.ok(results.date instanceof Date); - test.ok(results.regex instanceof RegExp); - test.done(); -} - -exports['cloneObjectWithNoConstructor'] = function(test) { - test.expect(3); - var n = null; - var a = { foo: 'bar' }; - a.__proto__ = n; - test.ok(typeof a === 'object'); - test.ok(typeof a !== null); - var b = clone(a); - test.ok(a.foo, b.foo); - test.done(); -} - -exports['clone object with depth argument'] = function (test) { - test.expect(6); - var a = { - foo: { - bar : { - baz : 'qux' - } - } - }; - var b = clone(a, false, 1); - test.deepEqual(b, a); - test.notEqual(b, a); - test.strictEqual(b.foo, a.foo); - - b = clone(a, true, 2); - test.deepEqual(b, a); - test.notEqual(b.foo, a.foo); - test.strictEqual(b.foo.bar, a.foo.bar); - test.done(); -} - -exports['maintain prototype chain in clones'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a); - test.strictEqual(Object.getPrototypeOf(a), Object.getPrototypeOf(b)); - test.done(); -} - -exports['parent prototype is overriden with prototype provided'] = function (test) { - test.expect(1); - function Constructor() {} - var a = new Constructor(); - var b = clone(a, true, Infinity, null); - test.strictEqual(b.__defineSetter__, undefined); - test.done(); -} - -exports['clone object with null children'] = function(test) { - test.expect(1); - var a = { - foo: { - bar: null, - baz: { - qux: false - } - } - }; - var b = clone(a); - test.deepEqual(b, a); - test.done(); -} - -exports['clone instance with getter'] = function(test) { - test.expect(1); - function Ctor() {}; - Object.defineProperty(Ctor.prototype, 'prop', { - configurable: true, - enumerable: true, - get: function() { - return 'value'; - } - }); - - var a = new Ctor(); - var b = clone(a); - - test.strictEqual(b.prop, 'value'); - test.done(); -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/.npmignore deleted file mode 100644 index c2658d7d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/README.md deleted file mode 100644 index 13a2e860..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# graceful-fs - -graceful-fs functions as a drop-in replacement for the fs module, -making various improvements. - -The improvements are meant to normalize behavior across different -platforms and environments, and to make filesystem access more -resilient to errors. - -## Improvements over [fs module](http://api.nodejs.org/fs.html) - -graceful-fs: - -* Queues up `open` and `readdir` calls, and retries them once - something closes if there is an EMFILE error from too many file - descriptors. -* fixes `lchmod` for Node versions prior to 0.6.2. -* implements `fs.lutimes` if possible. Otherwise it becomes a noop. -* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or - `lchown` if the user isn't root. -* makes `lchmod` and `lchown` become noops, if not available. -* retries reading a file if `read` results in EAGAIN error. - -On Windows, it retries renaming a file for up to one second if `EACCESS` -or `EPERM` error occurs, likely because antivirus software has locked -the directory. - -## USAGE - -```javascript -// use just like fs -var fs = require('graceful-fs') - -// now go and do stuff with it... -fs.readFileSync('some-file-or-whatever') -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js deleted file mode 100644 index 64ad9802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/fs.js +++ /dev/null @@ -1,11 +0,0 @@ -// eeeeeevvvvviiiiiiillllll -// more evil than monkey-patching the native builtin? -// Not sure. - -var mod = require("module") -var pre = '(function (exports, require, module, __filename, __dirname) { ' -var post = '});' -var src = pre + process.binding('natives').fs + post -var vm = require('vm') -var fn = vm.runInThisContext(src) -fn(exports, require, module, __filename, __dirname) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/graceful-fs.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/graceful-fs.js deleted file mode 100644 index fb206b83..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/graceful-fs.js +++ /dev/null @@ -1,158 +0,0 @@ -// Monkey-patching the fs module. -// It's ugly, but there is simply no other way to do this. -var fs = module.exports = require('./fs.js') - -var assert = require('assert') - -// fix up some busted stuff, mostly on windows and old nodes -require('./polyfills.js') - -var util = require('util') - -function noop () {} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs') -else if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS: ' + m.split(/\n/).join('\nGFS: ') - console.error(m) - } - -if (/\bgfs\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug('fds', fds) - debug(queue) - assert.equal(queue.length, 0) - }) -} - - -var originalOpen = fs.open -fs.open = open - -function open(path, flags, mode, cb) { - if (typeof mode === "function") cb = mode, mode = null - if (typeof cb !== "function") cb = noop - new OpenReq(path, flags, mode, cb) -} - -function OpenReq(path, flags, mode, cb) { - this.path = path - this.flags = flags - this.mode = mode - this.cb = cb - Req.call(this) -} - -util.inherits(OpenReq, Req) - -OpenReq.prototype.process = function() { - originalOpen.call(fs, this.path, this.flags, this.mode, this.done) -} - -var fds = {} -OpenReq.prototype.done = function(er, fd) { - debug('open done', er, fd) - if (fd) - fds['fd' + fd] = this.path - Req.prototype.done.call(this, er, fd) -} - - -var originalReaddir = fs.readdir -fs.readdir = readdir - -function readdir(path, cb) { - if (typeof cb !== "function") cb = noop - new ReaddirReq(path, cb) -} - -function ReaddirReq(path, cb) { - this.path = path - this.cb = cb - Req.call(this) -} - -util.inherits(ReaddirReq, Req) - -ReaddirReq.prototype.process = function() { - originalReaddir.call(fs, this.path, this.done) -} - -ReaddirReq.prototype.done = function(er, files) { - if (files && files.sort) - files = files.sort() - Req.prototype.done.call(this, er, files) - onclose() -} - - -var originalClose = fs.close -fs.close = close - -function close (fd, cb) { - debug('close', fd) - if (typeof cb !== "function") cb = noop - delete fds['fd' + fd] - originalClose.call(fs, fd, function(er) { - onclose() - cb(er) - }) -} - - -var originalCloseSync = fs.closeSync -fs.closeSync = closeSync - -function closeSync (fd) { - try { - return originalCloseSync(fd) - } finally { - onclose() - } -} - - -// Req class -function Req () { - // start processing - this.done = this.done.bind(this) - this.failures = 0 - this.process() -} - -Req.prototype.done = function (er, result) { - var tryAgain = false - if (er) { - var code = er.code - var tryAgain = code === "EMFILE" || code === "ENFILE" - if (process.platform === "win32") - tryAgain = tryAgain || code === "OK" - } - - if (tryAgain) { - this.failures ++ - enqueue(this) - } else { - var cb = this.cb - cb(er, result) - } -} - -var queue = [] - -function enqueue(req) { - queue.push(req) - debug('enqueue %d %s', queue.length, req.constructor.name, req) -} - -function onclose() { - var req = queue.shift() - if (req) { - debug('process', req.constructor.name, req) - req.process() - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/package.json deleted file mode 100644 index 25a7ac14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "graceful-fs@^3.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "graceful-fs@>=3.0.0 <4.0.0", - "_id": "graceful-fs@3.0.8", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/graceful-fs", - "_nodeVersion": "2.0.1", - "_npmUser": { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - "_npmVersion": "2.10.1", - "_phantomChildren": {}, - "_requested": { - "name": "graceful-fs", - "raw": "graceful-fs@^3.0.0", - "rawSpec": "^3.0.0", - "scope": null, - "spec": ">=3.0.0 <4.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", - "_shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "_shrinkwrap": null, - "_spec": "graceful-fs@^3.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me" - }, - "bugs": { - "url": "https://github.com/isaacs/node-graceful-fs/issues" - }, - "dependencies": {}, - "deprecated": "graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.", - "description": "A drop-in replacement for fs, making various improvements.", - "devDependencies": { - "mkdirp": "^0.5.0", - "rimraf": "^2.2.8", - "tap": "^1.2.0" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "ce813e725fa82f7e6147d51c9a5ca68270551c22", - "tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "45c57aa5e323c35a985a525de6f0c9a6ef59e1f8", - "homepage": "https://github.com/isaacs/node-graceful-fs#readme", - "keywords": [ - "fs", - "module", - "reading", - "retry", - "retries", - "queue", - "error", - "errors", - "handling", - "EMFILE", - "EAGAIN", - "EINVAL", - "EPERM", - "EACCESS" - ], - "license": "ISC", - "main": "graceful-fs.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "graceful-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-graceful-fs.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "3.0.8" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/polyfills.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/polyfills.js deleted file mode 100644 index 42705391..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/polyfills.js +++ /dev/null @@ -1,255 +0,0 @@ -var fs = require('./fs.js') -var constants = require('constants') - -var origCwd = process.cwd -var cwd = null -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) -} - -// (re-)implement some things that are known busted or missing. - -// lchmod, broken prior to 0.6.2 -// back-port the fix here. -if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - fs.lchmod = function (path, mode, callback) { - callback = callback || noop - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var err, err2 - try { - var ret = fs.fchmodSync(fd, mode) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } -} - - -// lutimes implementation, or no-op -if (!fs.lutimes) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - cb = cb || noop - if (er) return cb(er) - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - return cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - , err - , err2 - , ret - - try { - var ret = fs.futimesSync(fd, at, mt) - } catch (er) { - err = er - } - try { - fs.closeSync(fd) - } catch (er) { - err2 = er - } - if (err || err2) throw (err || err2) - return ret - } - - } else if (fs.utimensat && constants.hasOwnProperty("AT_SYMLINK_NOFOLLOW")) { - // maybe utimensat will be bound soonish? - fs.lutimes = function (path, at, mt, cb) { - fs.utimensat(path, at, mt, constants.AT_SYMLINK_NOFOLLOW, cb) - } - - fs.lutimesSync = function (path, at, mt) { - return fs.utimensatSync(path, at, mt, constants.AT_SYMLINK_NOFOLLOW) - } - - } else { - fs.lutimes = function (_a, _b, _c, cb) { process.nextTick(cb) } - fs.lutimesSync = function () {} - } -} - - -// https://github.com/isaacs/node-graceful-fs/issues/4 -// Chown should not fail on einval or eperm if non-root. -// It should not fail on enosys ever, as this just indicates -// that a fs doesn't support the intended operation. - -fs.chown = chownFix(fs.chown) -fs.fchown = chownFix(fs.fchown) -fs.lchown = chownFix(fs.lchown) - -fs.chmod = chownFix(fs.chmod) -fs.fchmod = chownFix(fs.fchmod) -fs.lchmod = chownFix(fs.lchmod) - -fs.chownSync = chownFixSync(fs.chownSync) -fs.fchownSync = chownFixSync(fs.fchownSync) -fs.lchownSync = chownFixSync(fs.lchownSync) - -fs.chmodSync = chownFix(fs.chmodSync) -fs.fchmodSync = chownFix(fs.fchmodSync) -fs.lchmodSync = chownFix(fs.lchmodSync) - -function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er, res) { - if (chownErOk(er)) er = null - cb(er, res) - }) - } -} - -function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } -} - -// ENOSYS means that the fs doesn't support the op. Just ignore -// that, because it doesn't matter. -// -// if there's no getuid, or if getuid() is something other -// than 0, and the error is EINVAL or EPERM, then just ignore -// it. -// -// This specific case is a silent failure in cp, install, tar, -// and most other unix tools that manage permissions. -// -// When running as root, or if other types of errors are -// encountered, then it's strict. -function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false -} - - -// if lchmod/lchown do not exist, then make them no-ops -if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - process.nextTick(cb) - } - fs.lchmodSync = function () {} -} -if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - process.nextTick(cb) - } - fs.lchownSync = function () {} -} - - - -// on Windows, A/V software can lock the directory, causing this -// to fail with an EACCES or EPERM if the directory contains newly -// created files. Try again on failure, for up to 1 second. -if (process.platform === "win32") { - var rename_ = fs.rename - fs.rename = function rename (from, to, cb) { - var start = Date.now() - rename_(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 1000) { - return rename_(from, to, CB) - } - if(cb) cb(er) - }) - } -} - - -// if read() returns EAGAIN, then just try it again. -var read = fs.read -fs.read = function (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return read.call(fs, fd, buffer, offset, length, position, callback) -} - -var readSync = fs.readSync -fs.readSync = function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } -} - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/max-open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/max-open.js deleted file mode 100644 index a6b9ba43..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/max-open.js +++ /dev/null @@ -1,69 +0,0 @@ -var test = require('tap').test -var fs = require('../') - -test('open lots of stuff', function (t) { - // Get around EBADF from libuv by making sure that stderr is opened - // Otherwise Darwin will refuse to give us a FD for stderr! - process.stderr.write('') - - // How many parallel open()'s to do - var n = 1024 - var opens = 0 - var fds = [] - var going = true - var closing = false - var doneCalled = 0 - - for (var i = 0; i < n; i++) { - go() - } - - function go() { - opens++ - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fds.push(fd) - if (going) go() - }) - } - - // should hit ulimit pretty fast - setTimeout(function () { - going = false - t.equal(opens - fds.length, n) - done() - }, 100) - - - function done () { - if (closing) return - doneCalled++ - - if (fds.length === 0) { - console.error('done called %d times', doneCalled) - // First because of the timeout - // Then to close the fd's opened afterwards - // Then this time, to complete. - // Might take multiple passes, depending on CPU speed - // and ulimit, but at least 3 in every case. - t.ok(doneCalled >= 2) - return t.end() - } - - closing = true - setTimeout(function () { - // console.error('do closing again') - closing = false - done() - }, 100) - - // console.error('closing time') - var closes = fds.slice(0) - fds.length = 0 - closes.forEach(function (fd) { - fs.close(fd, function (er) { - if (er) throw er - }) - }) - } -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/open.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/open.js deleted file mode 100644 index 85732f23..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/open.js +++ /dev/null @@ -1,39 +0,0 @@ -var test = require('tap').test -var fs = require('../graceful-fs.js') - -test('graceful fs is monkeypatched fs', function (t) { - t.equal(fs, require('../fs.js')) - t.end() -}) - -test('open an existing file works', function (t) { - var fd = fs.openSync(__filename, 'r') - fs.closeSync(fd) - fs.open(__filename, 'r', function (er, fd) { - if (er) throw er - fs.close(fd, function (er) { - if (er) throw er - t.pass('works') - t.end() - }) - }) -}) - -test('open a non-existing file throws', function (t) { - var er - try { - var fd = fs.openSync('this file does not exist', 'r') - } catch (x) { - er = x - } - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - - fs.open('neither does this file', 'r', function (er, fd) { - t.ok(er, 'should throw') - t.notOk(fd, 'should not get an fd') - t.equal(er.code, 'ENOENT') - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/readdir-sort.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/readdir-sort.js deleted file mode 100644 index cb63a684..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/readdir-sort.js +++ /dev/null @@ -1,20 +0,0 @@ -var test = require("tap").test -var fs = require("../fs.js") - -var readdir = fs.readdir -fs.readdir = function(path, cb) { - process.nextTick(function() { - cb(null, ["b", "z", "a"]) - }) -} - -var g = require("../") - -test("readdir reorder", function (t) { - g.readdir("whatevers", function (er, files) { - if (er) - throw er - t.same(files, [ "a", "b", "z" ]) - t.end() - }) -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/write-then-read.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/write-then-read.js deleted file mode 100644 index 21e4c26b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/graceful-fs/test/write-then-read.js +++ /dev/null @@ -1,47 +0,0 @@ -var fs = require('../'); -var rimraf = require('rimraf'); -var mkdirp = require('mkdirp'); -var test = require('tap').test; -var p = require('path').resolve(__dirname, 'files'); - -process.chdir(__dirname) - -// Make sure to reserve the stderr fd -process.stderr.write(''); - -var num = 4097; -var paths = new Array(num); - -test('make files', function (t) { - rimraf.sync(p); - mkdirp.sync(p); - - for (var i = 0; i < num; ++i) { - paths[i] = 'files/file-' + i; - fs.writeFileSync(paths[i], 'content'); - } - - t.end(); -}) - -test('read files', function (t) { - // now read them - var done = 0; - for (var i = 0; i < num; ++i) { - fs.readFile(paths[i], function(err, data) { - if (err) - throw err; - - ++done; - if (done === num) { - t.pass('success'); - t.end() - } - }); - } -}); - -test('cleanup', function (t) { - rimraf.sync(p); - t.end(); -}); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/.npmignore deleted file mode 100644 index 38344f87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -build/ -test/ -examples/ -fs.js -zlib.js \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/LICENSE deleted file mode 100644 index e3d4e695..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/README.md deleted file mode 100644 index 3fb3e802..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# readable-stream - -***Node-core streams for userland*** - -[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) -[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) - -This package is a mirror of the Streams2 and Streams3 implementations in Node-core. - -If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core. - -**readable-stream** comes in two major versions, v1.0.x and v1.1.x. The former tracks the Streams2 implementation in Node 0.10, including bug-fixes and minor improvements as they are added. The latter tracks Streams3 as it develops in Node 0.11; we will likely see a v1.2.x branch for Node 0.12. - -**readable-stream** uses proper patch-level versioning so if you pin to `"~1.0.0"` you’ll get the latest Node 0.10 Streams2 implementation, including any fixes and minor non-breaking improvements. The patch-level versions of 1.0.x and 1.1.x should mirror the patch-level versions of Node-core releases. You should prefer the **1.0.x** releases for now and when you’re ready to start using Streams3, pin to `"~1.1.0"` - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/duplex.js deleted file mode 100644 index ca807af8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/duplex.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_duplex.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_duplex.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_duplex.js deleted file mode 100644 index b513d61a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_duplex.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -module.exports = Duplex; - -/**/ -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} -/**/ - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -forEach(objectKeys(Writable.prototype), function(method) { - if (!Duplex.prototype[method]) - Duplex.prototype[method] = Writable.prototype[method]; -}); - -function Duplex(options) { - if (!(this instanceof Duplex)) - return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) - this.readable = false; - - if (options && options.writable === false) - this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) - this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) - return; - - // no more data can be written. - // But allow more writes to happen in this tick. - process.nextTick(this.end.bind(this)); -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_passthrough.js deleted file mode 100644 index 895ca50a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_passthrough.js +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) - return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function(chunk, encoding, cb) { - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_readable.js deleted file mode 100644 index 63072209..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_readable.js +++ /dev/null @@ -1,982 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -module.exports = Readable; - -/**/ -var isArray = require('isarray'); -/**/ - - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Readable.ReadableState = ReadableState; - -var EE = require('events').EventEmitter; - -/**/ -if (!EE.listenerCount) EE.listenerCount = function(emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -var Stream = require('stream'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var StringDecoder; - -util.inherits(Readable, Stream); - -function ReadableState(options, stream) { - options = options || {}; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.buffer = []; - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = false; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // In streams that never have any data, and do push(null) right away, - // the consumer can miss the 'end' event if they do some I/O before - // consuming the stream. So, we don't emit('end') until some reading - // happens. - this.calledRead = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -function Readable(options) { - if (!(this instanceof Readable)) - return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function(chunk, encoding) { - var state = this._readableState; - - if (typeof chunk === 'string' && !state.objectMode) { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = new Buffer(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function(chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null || chunk === undefined) { - state.reading = false; - if (!state.ended) - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var e = new Error('stream.unshift() after end event'); - stream.emit('error', e); - } else { - if (state.decoder && !addToFront && !encoding) - chunk = state.decoder.write(chunk); - - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) { - state.buffer.unshift(chunk); - } else { - state.reading = false; - state.buffer.push(chunk); - } - - if (state.needReadable) - emitReadable(stream); - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - - - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && - (state.needReadable || - state.length < state.highWaterMark || - state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function(enc) { - if (!StringDecoder) - StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; -}; - -// Don't raise the hwm > 128MB -var MAX_HWM = 0x800000; -function roundUpToNextPowerOf2(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 - n--; - for (var p = 1; p < 32; p <<= 1) n |= n >> p; - n++; - } - return n; -} - -function howMuchToRead(n, state) { - if (state.length === 0 && state.ended) - return 0; - - if (state.objectMode) - return n === 0 ? 0 : 1; - - if (n === null || isNaN(n)) { - // only flow one buffer at a time - if (state.flowing && state.buffer.length) - return state.buffer[0].length; - else - return state.length; - } - - if (n <= 0) - return 0; - - // If we're asking for more than the target buffer level, - // then raise the water mark. Bump up to the next highest - // power of 2, to prevent increasing it excessively in tiny - // amounts. - if (n > state.highWaterMark) - state.highWaterMark = roundUpToNextPowerOf2(n); - - // don't have that much. return null, unless we've ended. - if (n > state.length) { - if (!state.ended) { - state.needReadable = true; - return 0; - } else - return state.length; - } - - return n; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function(n) { - var state = this._readableState; - state.calledRead = true; - var nOrig = n; - var ret; - - if (typeof n !== 'number' || n > 0) - state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && - state.needReadable && - (state.length >= state.highWaterMark || state.ended)) { - emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - ret = null; - - // In cases where the decoder did not receive enough data - // to produce a full chunk, then immediately received an - // EOF, state.buffer will contain [, ]. - // howMuchToRead will see this and coerce the amount to - // read to zero (because it's looking at the length of the - // first in state.buffer), and we'll end up here. - // - // This can only happen via state.decoder -- no other venue - // exists for pushing a zero-length chunk into state.buffer - // and triggering this behavior. In this case, we return our - // remaining data and end the stream, if appropriate. - if (state.length > 0 && state.decoder) { - ret = fromList(n, state); - state.length -= ret.length; - } - - if (state.length === 0) - endReadable(this); - - return ret; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - - // if we currently have less than the highWaterMark, then also read some - if (state.length - n <= state.highWaterMark) - doRead = true; - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) - doRead = false; - - if (doRead) { - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) - state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - } - - // If _read called its callback synchronously, then `reading` - // will be false, and we need to re-evaluate how much data we - // can return to the user. - if (doRead && !state.reading) - n = howMuchToRead(nOrig, state); - - if (n > 0) - ret = fromList(n, state); - else - ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } - - state.length -= n; - - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (state.length === 0 && !state.ended) - state.needReadable = true; - - // If we happened to read() exactly the remaining amount in the - // buffer, and the EOF has been seen at this point, then make sure - // that we emit 'end' on the very next tick. - if (state.ended && !state.endEmitted && state.length === 0) - endReadable(this); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - - -function onEofChunk(stream, state) { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // if we've ended and we have some data left, then emit - // 'readable' now to make sure it gets picked up. - if (state.length > 0) - emitReadable(stream); - else - endReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (state.emittedReadable) - return; - - state.emittedReadable = true; - if (state.sync) - process.nextTick(function() { - emitReadable_(stream); - }); - else - emitReadable_(stream); -} - -function emitReadable_(stream) { - stream.emit('readable'); -} - - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - process.nextTick(function() { - maybeReadMore_(stream, state); - }); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && - state.length < state.highWaterMark) { - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break; - else - len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function(n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function(dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && - dest !== process.stdout && - dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) - process.nextTick(endFn); - else - src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - if (readable !== src) return; - cleanup(); - } - - function onend() { - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - function cleanup() { - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (!dest._writableState || dest._writableState.needDrain) - ondrain(); - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - unpipe(); - dest.removeListener('error', onerror); - if (EE.listenerCount(dest, 'error') === 0) - dest.emit('error', er); - } - // This is a brutally ugly hack to make sure that our error handler - // is attached before any userland ones. NEVER DO THIS. - if (!dest._events || !dest._events.error) - dest.on('error', onerror); - else if (isArray(dest._events.error)) - dest._events.error.unshift(onerror); - else - dest._events.error = [onerror, dest._events.error]; - - - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - // the handler that waits for readable events after all - // the data gets sucked out in flow. - // This would be easier to follow with a .once() handler - // in flow(), but that is too slow. - this.on('readable', pipeOnReadable); - - state.flowing = true; - process.nextTick(function() { - flow(src); - }); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function() { - var dest = this; - var state = src._readableState; - state.awaitDrain--; - if (state.awaitDrain === 0) - flow(src); - }; -} - -function flow(src) { - var state = src._readableState; - var chunk; - state.awaitDrain = 0; - - function write(dest, i, list) { - var written = dest.write(chunk); - if (false === written) { - state.awaitDrain++; - } - } - - while (state.pipesCount && null !== (chunk = src.read())) { - - if (state.pipesCount === 1) - write(state.pipes, 0, null); - else - forEach(state.pipes, write); - - src.emit('data', chunk); - - // if anyone needs a drain, then we have to wait for that. - if (state.awaitDrain > 0) - return; - } - - // if every destination was unpiped, either before entering this - // function, or in the while loop, then stop flowing. - // - // NB: This is a pretty rare edge case. - if (state.pipesCount === 0) { - state.flowing = false; - - // if there were data event listeners added, then switch to old mode. - if (EE.listenerCount(src, 'data') > 0) - emitDataEvents(src); - return; - } - - // at this point, no one needed a drain, so we just ran out of data - // on the next readable event, start it over again. - state.ranOut = true; -} - -function pipeOnReadable() { - if (this._readableState.ranOut) { - this._readableState.ranOut = false; - flow(this); - } -} - - -Readable.prototype.unpipe = function(dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) - return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) - return this; - - if (!dest) - dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - if (dest) - dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - this.removeListener('readable', pipeOnReadable); - state.flowing = false; - - for (var i = 0; i < len; i++) - dests[i].emit('unpipe', this); - return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) - return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) - state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function(ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data' && !this._readableState.flowing) - emitDataEvents(this); - - if (ev === 'readable' && this.readable) { - var state = this._readableState; - if (!state.readableListening) { - state.readableListening = true; - state.emittedReadable = false; - state.needReadable = true; - if (!state.reading) { - this.read(0); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function() { - emitDataEvents(this); - this.read(0); - this.emit('resume'); -}; - -Readable.prototype.pause = function() { - emitDataEvents(this, true); - this.emit('pause'); -}; - -function emitDataEvents(stream, startPaused) { - var state = stream._readableState; - - if (state.flowing) { - // https://github.com/isaacs/readable-stream/issues/16 - throw new Error('Cannot switch to old mode now.'); - } - - var paused = startPaused || false; - var readable = false; - - // convert to an old-style stream. - stream.readable = true; - stream.pipe = Stream.prototype.pipe; - stream.on = stream.addListener = Stream.prototype.on; - - stream.on('readable', function() { - readable = true; - - var c; - while (!paused && (null !== (c = stream.read()))) - stream.emit('data', c); - - if (c === null) { - readable = false; - stream._readableState.needReadable = true; - } - }); - - stream.pause = function() { - paused = true; - this.emit('pause'); - }; - - stream.resume = function() { - paused = false; - if (readable) - process.nextTick(function() { - stream.emit('readable'); - }); - else - this.read(0); - this.emit('resume'); - }; - - // now make it start, just in case it hadn't already. - stream.emit('readable'); -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function(stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function() { - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) - self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function(chunk) { - if (state.decoder) - chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - //if (state.objectMode && util.isNullOrUndefined(chunk)) - if (state.objectMode && (chunk === null || chunk === undefined)) - return; - else if (!state.objectMode && (!chunk || !chunk.length)) - return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (typeof stream[i] === 'function' && - typeof this[i] === 'undefined') { - this[i] = function(method) { return function() { - return stream[method].apply(stream, arguments); - }}(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function(ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function(n) { - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - - - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -function fromList(n, state) { - var list = state.buffer; - var length = state.length; - var stringMode = !!state.decoder; - var objectMode = !!state.objectMode; - var ret; - - // nothing in the list, definitely empty. - if (list.length === 0) - return null; - - if (length === 0) - ret = null; - else if (objectMode) - ret = list.shift(); - else if (!n || n >= length) { - // read it all, truncate the array. - if (stringMode) - ret = list.join(''); - else - ret = Buffer.concat(list, length); - list.length = 0; - } else { - // read just some of it. - if (n < list[0].length) { - // just take a part of the first list item. - // slice is the same for buffers and strings. - var buf = list[0]; - ret = buf.slice(0, n); - list[0] = buf.slice(n); - } else if (n === list[0].length) { - // first list is a perfect match - ret = list.shift(); - } else { - // complex case. - // we have enough to cover it, but it spans past the first buffer. - if (stringMode) - ret = ''; - else - ret = new Buffer(n); - - var c = 0; - for (var i = 0, l = list.length; i < l && c < n; i++) { - var buf = list[0]; - var cpy = Math.min(n - c, buf.length); - - if (stringMode) - ret += buf.slice(0, cpy); - else - buf.copy(ret, c, 0, cpy); - - if (cpy < buf.length) - list[0] = buf.slice(cpy); - else - list.shift(); - - c += cpy; - } - } - } - - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) - throw new Error('endReadable called on non-empty stream'); - - if (!state.endEmitted && state.calledRead) { - state.ended = true; - process.nextTick(function() { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } - }); - } -} - -function forEach (xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf (xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_transform.js deleted file mode 100644 index eb188df3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_transform.js +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - - -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - - -function TransformState(options, stream) { - this.afterTransform = function(er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) - stream.push(data); - - if (cb) - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - - -function Transform(options) { - if (!(this instanceof Transform)) - return new Transform(options); - - Duplex.call(this, options); - - var ts = this._transformState = new TransformState(options, this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - this.once('finish', function() { - if ('function' === typeof this._flush) - this._flush(function(er) { - done(stream, er); - }); - else - done(stream); - }); -} - -Transform.prototype.push = function(chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function(chunk, encoding, cb) { - throw new Error('not implemented'); -}; - -Transform.prototype._write = function(chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || - rs.needReadable || - rs.length < rs.highWaterMark) - this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function(n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - - -function done(stream, er) { - if (er) - return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var rs = stream._readableState; - var ts = stream._transformState; - - if (ws.length) - throw new Error('calling transform done when ws.length != 0'); - - if (ts.transforming) - throw new Error('calling transform done when still transforming'); - - return stream.push(null); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_writable.js deleted file mode 100644 index 4bdaa4fa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/lib/_stream_writable.js +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// 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. - -// A bit simpler than readable streams. -// Implement an async ._write(chunk, cb), and it'll handle all -// the drain event emission and buffering. - -module.exports = Writable; - -/**/ -var Buffer = require('buffer').Buffer; -/**/ - -Writable.WritableState = WritableState; - - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Stream = require('stream'); - -util.inherits(Writable, Stream); - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; -} - -function WritableState(options, stream) { - options = options || {}; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - this.highWaterMark = (hwm || hwm === 0) ? hwm : 16 * 1024; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - // cast to ints. - this.highWaterMark = ~~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, becuase any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function(er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.buffer = []; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; -} - -function Writable(options) { - var Duplex = require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) - return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function() { - this.emit('error', new Error('Cannot pipe. Not readable.')); -}; - - -function writeAfterEnd(stream, state, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - if (!Buffer.isBuffer(chunk) && - 'string' !== typeof chunk && - chunk !== null && - chunk !== undefined && - !state.objectMode) { - var er = new TypeError('Invalid non-string/buffer chunk'); - stream.emit('error', er); - process.nextTick(function() { - cb(er); - }); - valid = false; - } - return valid; -} - -Writable.prototype.write = function(chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - else if (!encoding) - encoding = state.defaultEncoding; - - if (typeof cb !== 'function') - cb = function() {}; - - if (state.ended) - writeAfterEnd(this, state, cb); - else if (validChunk(this, state, chunk, cb)) - ret = writeOrBuffer(this, state, chunk, encoding, cb); - - return ret; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && - state.decodeStrings !== false && - typeof chunk === 'string') { - chunk = new Buffer(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - if (Buffer.isBuffer(chunk)) - encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) - state.needDrain = true; - - if (state.writing) - state.buffer.push(new WriteReq(chunk, encoding, cb)); - else - doWrite(stream, state, len, chunk, encoding, cb); - - return ret; -} - -function doWrite(stream, state, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - if (sync) - process.nextTick(function() { - cb(er); - }); - else - cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) - onwriteError(stream, state, sync, er, cb); - else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(stream, state); - - if (!finished && !state.bufferProcessing && state.buffer.length) - clearBuffer(stream, state); - - if (sync) { - process.nextTick(function() { - afterWrite(stream, state, finished, cb); - }); - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) - onwriteDrain(stream, state); - cb(); - if (finished) - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - - for (var c = 0; c < state.buffer.length; c++) { - var entry = state.buffer[c]; - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, len, chunk, encoding, cb); - - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - c++; - break; - } - } - - state.bufferProcessing = false; - if (c < state.buffer.length) - state.buffer = state.buffer.slice(c); - else - state.buffer.length = 0; -} - -Writable.prototype._write = function(chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype.end = function(chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (typeof chunk !== 'undefined' && chunk !== null) - this.write(chunk, encoding); - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) - endWritable(this, state, cb); -}; - - -function needFinish(stream, state) { - return (state.ending && - state.length === 0 && - !state.finished && - !state.writing); -} - -function finishMaybe(stream, state) { - var need = needFinish(stream, state); - if (need) { - state.finished = true; - stream.emit('finish'); - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) - process.nextTick(cb); - else - stream.once('finish', cb); - } - state.ended = true; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/package.json deleted file mode 100644 index b0bacaf9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/package.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "_args": [ - [ - "readable-stream@>=1.0.33-1 <1.1.0-0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/through2" - ] - ], - "_from": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_id": "readable-stream@1.0.34", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/readable-stream", - "_nodeVersion": "5.10.1", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/readable-stream-1.0.34.tgz_1460562521506_0.019665231462568045" - }, - "_npmUser": { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - }, - "_npmVersion": "3.8.3", - "_phantomChildren": {}, - "_requested": { - "name": "readable-stream", - "raw": "readable-stream@>=1.0.33-1 <1.1.0-0", - "rawSpec": ">=1.0.33-1 <1.1.0-0", - "scope": null, - "spec": ">=1.0.33-1 <1.1.0-0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs/through2" - ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "_shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "_shrinkwrap": null, - "_spec": "readable-stream@>=1.0.33-1 <1.1.0-0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs/node_modules/through2", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "browser": { - "util": false - }, - "bugs": { - "url": "https://github.com/isaacs/readable-stream/issues" - }, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "description": "Streams2, a user-land copy of the stream library from Node.js v0.10.x", - "devDependencies": { - "tap": "~0.2.6" - }, - "directories": {}, - "dist": { - "shasum": "125820e34bc842d2f2aaafafe4c2916ee32c157c", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" - }, - "gitHead": "1227c7b66deedb1dc5284a89425854d5f7ad9576", - "homepage": "https://github.com/isaacs/readable-stream#readme", - "keywords": [ - "readable", - "stream", - "pipe" - ], - "license": "MIT", - "main": "readable.js", - "maintainers": [ - { - "email": "isaacs@npmjs.com", - "name": "isaacs" - }, - { - "email": "nathan@tootallnate.net", - "name": "tootallnate" - }, - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "calvin.metcalf@gmail.com", - "name": "cwmma" - } - ], - "name": "readable-stream", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/readable-stream.git" - }, - "scripts": { - "test": "tap test/simple/*.js" - }, - "version": "1.0.34" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/passthrough.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/passthrough.js deleted file mode 100644 index 27e8d8a5..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/passthrough.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_passthrough.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/readable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/readable.js deleted file mode 100644 index 26511e87..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/readable.js +++ /dev/null @@ -1,11 +0,0 @@ -var Stream = require('stream'); // hack to fix a circular dependency issue when used with browserify -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable') { - module.exports = require('stream'); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/transform.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/transform.js deleted file mode 100644 index 5d482f07..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/transform.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_transform.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/writable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/writable.js deleted file mode 100644 index e1e9efdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/readable-stream/writable.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./lib/_stream_writable.js") diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/cli.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/cli.js deleted file mode 100755 index 2c1e7c4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/cli.js +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env node -'use strict'; -var fs = require('fs'); -var pkg = require('./package.json'); -var stripBom = require('./'); -var argv = process.argv.slice(2); -var input = argv[0]; - -function help() { - console.log([ - '', - ' ' + pkg.description, - '', - ' Usage', - ' strip-bom > ', - ' cat | strip-bom > ', - '', - ' Example', - ' strip-bom unicorn.txt > unicorn-without-bom.txt' - ].join('\n')); -} - -if (argv.indexOf('--help') !== -1) { - help(); - return; -} - -if (argv.indexOf('--version') !== -1) { - console.log(pkg.version); - return; -} - -if (process.stdin.isTTY) { - if (!input) { - help(); - return; - } - - fs.createReadStream(input).pipe(stripBom.stream()).pipe(process.stdout); -} else { - process.stdin.pipe(stripBom.stream()).pipe(process.stdout); -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/index.js deleted file mode 100644 index c085b4ce..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/index.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var isUtf8 = require('is-utf8'); - -var stripBom = module.exports = function (arg) { - if (typeof arg === 'string') { - return arg.replace(/^\ufeff/g, ''); - } - - if (Buffer.isBuffer(arg) && isUtf8(arg) && - arg[0] === 0xef && arg[1] === 0xbb && arg[2] === 0xbf) { - return arg.slice(3); - } - - return arg; -}; - -stripBom.stream = function () { - var firstChunk = require('first-chunk-stream'); - - return firstChunk({minSize: 3}, function (chunk, enc, cb) { - this.push(stripBom(chunk)); - cb(); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/package.json deleted file mode 100644 index 342f384c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/package.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "_args": [ - [ - "strip-bom@^1.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "strip-bom@>=1.0.0 <2.0.0", - "_id": "strip-bom@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/strip-bom", - "_npmUser": { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - }, - "_npmVersion": "1.4.9", - "_phantomChildren": {}, - "_requested": { - "name": "strip-bom", - "raw": "strip-bom@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "_shasum": "85b8862f3844b5a6d5ec8467a93598173a36f794", - "_shrinkwrap": null, - "_spec": "strip-bom@^1.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "sindresorhus@gmail.com", - "name": "Sindre Sorhus", - "url": "http://sindresorhus.com" - }, - "bin": { - "strip-bom": "cli.js" - }, - "bugs": { - "url": "https://github.com/sindresorhus/strip-bom/issues" - }, - "dependencies": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" - }, - "description": "Strip UTF-8 byte order mark (BOM) from a string/buffer/stream", - "devDependencies": { - "concat-stream": "^1.4.5", - "mocha": "*" - }, - "directories": {}, - "dist": { - "shasum": "85b8862f3844b5a6d5ec8467a93598173a36f794", - "tarball": "http://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz" - }, - "engines": { - "node": ">=0.10.0" - }, - "files": [ - "cli.js", - "index.js" - ], - "homepage": "https://github.com/sindresorhus/strip-bom", - "keywords": [ - "cli", - "bin", - "app", - "bom", - "strip", - "byte", - "mark", - "unicode", - "utf8", - "utf-8", - "remove", - "trim", - "text", - "buffer", - "string", - "stream", - "streams" - ], - "license": "MIT", - "maintainers": [ - { - "email": "sindresorhus@gmail.com", - "name": "sindresorhus" - } - ], - "name": "strip-bom", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/sindresorhus/strip-bom.git" - }, - "scripts": { - "test": "mocha" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/readme.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/readme.md deleted file mode 100644 index 10e1d8f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/strip-bom/readme.md +++ /dev/null @@ -1,59 +0,0 @@ -# strip-bom [![Build Status](https://travis-ci.org/sindresorhus/strip-bom.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-bom) - -> Strip UTF-8 [byte order mark](http://en.wikipedia.org/wiki/Byte_order_mark#UTF-8) (BOM) from a string/buffer/stream - -From Wikipedia: - -> The Unicode Standard permits the BOM in UTF-8, but does not require nor recommend its use. Byte order has no meaning in UTF-8. - - -## Usage - -```sh -$ npm install --save strip-bom -``` - -```js -var fs = require('fs'); -var stripBom = require('strip-bom'); - -stripBom('\ufeffUnicorn'); -//=> Unicorn - -stripBom(fs.readFileSync('unicorn.txt')); -//=> Unicorn -``` - -Or as a [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform): - -```js -var fs = require('fs'); -var stripBom = require('strip-bom'); - -fs.createReadStream('unicorn.txt') - .pipe(stripBom.stream()) - .pipe(fs.createWriteStream('unicorn.txt')); -``` - - -## CLI - -```sh -$ npm install --global strip-bom -``` - -``` -$ strip-bom --help - - Usage - strip-bom > - cat | strip-bom > - - Example - strip-bom unicorn.txt > unicorn-without-bom.txt -``` - - -## License - -MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/.npmignore deleted file mode 100644 index 1e1dcab3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -test -.jshintrc -.travis.yml \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/LICENSE deleted file mode 100644 index f6a0029d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/LICENSE +++ /dev/null @@ -1,39 +0,0 @@ -Copyright 2013, Rod Vagg (the "Original Author") -All rights reserved. - -MIT +no-false-attribs 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. - -Distributions of all or part of the Software intended to be used -by the recipients as they would use the unmodified Software, -containing modifications that substantially alter, remove, or -disable functionality of the Software, outside of the documented -configuration mechanisms provided by the Software, shall be -modified such that the Original Author's bug reporting email -addresses and urls are either replaced with the contact information -of the parties responsible for the changes, or removed entirely. - -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. - - -Except where noted, this license applies to any and all software -programs and associated documentation files created by the -Original Author, when distributed with the Software. \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/README.md deleted file mode 100644 index 11259a5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# through2 - -[![NPM](https://nodei.co/npm/through2.png?downloads&downloadRank)](https://nodei.co/npm/through2/) - -**A tiny wrapper around Node streams.Transform (Streams2) to avoid explicit subclassing noise** - -Inspired by [Dominic Tarr](https://github.com/dominictarr)'s [through](https://github.com/dominictarr/through) in that it's so much easier to make a stream out of a function than it is to set up the prototype chain properly: `through(function (chunk) { ... })`. - -Note: A **Streams3** version of through2 is available in npm with the tag `"1.0"` rather than `"latest"` so an `npm install through2` will get you the current Streams2 version (version number is 0.x.x). To use a Streams3 version use `npm install through2@1` to fetch the latest version 1.x.x. More information about Streams2 vs Streams3 and recommendations see the article **[Why I don't use Node's core 'stream' module](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html)**. - -```js -fs.createReadStream('ex.txt') - .pipe(through2(function (chunk, enc, callback) { - for (var i = 0; i < chunk.length; i++) - if (chunk[i] == 97) - chunk[i] = 122 // swap 'a' for 'z' - - this.push(chunk) - - callback() - })) - .pipe(fs.createWriteStream('out.txt')) -``` - -Or object streams: - -```js -var all = [] - -fs.createReadStream('data.csv') - .pipe(csv2()) - .pipe(through2.obj(function (chunk, enc, callback) { - var data = { - name : chunk[0] - , address : chunk[3] - , phone : chunk[10] - } - this.push(data) - - callback() - })) - .on('data', function (data) { - all.push(data) - }) - .on('end', function () { - doSomethingSpecial(all) - }) -``` - -Note that `through2.obj(fn)` is a convenience wrapper around `through2({ objectMode: true }, fn)`. - -## API - -through2([ options, ] [ transformFunction ] [, flushFunction ]) - -Consult the **[stream.Transform](http://nodejs.org/docs/latest/api/stream.html#stream_class_stream_transform)** documentation for the exact rules of the `transformFunction` (i.e. `this._transform`) and the optional `flushFunction` (i.e. `this._flush`). - -### options - -The options argument is optional and is passed straight through to `stream.Transform`. So you can use `objectMode:true` if you are processing non-binary streams (or just use `through2.obj()`). - -The `options` argument is first, unlike standard convention, because if I'm passing in an anonymous function then I'd prefer for the options argument to not get lost at the end of the call: - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2({ objectMode: true, allowHalfOpen: false }, - function (chunk, enc, cb) { - cb(null, 'wut?') // note we can use the second argument on the callback - // to provide data as an alternative to this.push('wut?') - } - ) - .pipe(fs.createWriteStream('/tmp/wut.txt')) -``` - -### transformFunction - -The `transformFunction` must have the following signature: `function (chunk, encoding, callback) {}`. A minimal implementation should call the `callback` function to indicate that the transformation is done, even if that transformation means discarding the chunk. - -To queue a new chunk, call `this.push(chunk)`—this can be called as many times as required before the `callback()` if you have multiple pieces to send on. - -Alternatively, you may use `callback(err, chunk)` as shorthand for emitting a single chunk or an error. - -If you **do not provide a `transformFunction`** then you will get a simple pass-through stream. - -### flushFunction - -The optional `flushFunction` is provided as the last argument (2nd or 3rd, depending on whether you've supplied options) is called just prior to the stream ending. Can be used to finish up any processing that may be in progress. - -```js -fs.createReadStream('/tmp/important.dat') - .pipe(through2( - function (chunk, enc, cb) { cb(null, chunk) }, // transform is a noop - function (cb) { // flush function - this.push('tacking on an extra buffer to the end'); - cb(); - } - )) - .pipe(fs.createWriteStream('/tmp/wut.txt')); -``` - -through2.ctor([ options, ] transformFunction[, flushFunction ]) - -Instead of returning a `stream.Transform` instance, `through2.ctor()` returns a **constructor** for a custom Transform. This is useful when you want to use the same transform logic in multiple instances. - -```js -var FToC = through2.ctor({objectMode: true}, function (record, encoding, callback) { - if (record.temp != null && record.unit = "F") { - record.temp = ( ( record.temp - 32 ) * 5 ) / 9 - record.unit = "C" - } - this.push(record) - callback() -}) - -// Create instances of FToC like so: -var converter = new FToC() -// Or: -var converter = FToC() -// Or specify/override options when you instantiate, if you prefer: -var converter = FToC({objectMode: true}) -``` - -## See Also - - - [through2-map](https://github.com/brycebaril/through2-map) - Array.prototype.map analog for streams. - - [through2-filter](https://github.com/brycebaril/through2-filter) - Array.prototype.filter analog for streams. - - [through2-reduce](https://github.com/brycebaril/through2-reduce) - Array.prototype.reduce analog for streams. - - [through2-spy](https://github.com/brycebaril/through2-spy) - Wrapper for simple stream.PassThrough spies. - -## License - -**through2** is Copyright (c) 2013 Rod Vagg [@rvagg](https://twitter.com/rvagg) and licenced under the MIT licence. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/package.json deleted file mode 100644 index 4362d534..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_args": [ - [ - "through2@^0.6.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "through2@>=0.6.1 <0.7.0", - "_id": "through2@0.6.5", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/through2", - "_npmUser": { - "email": "bryce@ravenwall.com", - "name": "bryce" - }, - "_npmVersion": "1.4.28", - "_phantomChildren": {}, - "_requested": { - "name": "through2", - "raw": "through2@^0.6.1", - "rawSpec": "^0.6.1", - "scope": null, - "spec": ">=0.6.1 <0.7.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "_shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "_shrinkwrap": null, - "_spec": "through2@^0.6.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "r@va.gg", - "name": "Rod Vagg", - "url": "https://github.com/rvagg" - }, - "bugs": { - "url": "https://github.com/rvagg/through2/issues" - }, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - }, - "description": "A tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise", - "devDependencies": { - "bl": ">=0.9.0 <0.10.0-0", - "stream-spigot": ">=3.0.4 <3.1.0-0", - "tape": ">=2.14.0 <2.15.0-0" - }, - "directories": {}, - "dist": { - "shasum": "41ab9c67b29d57209071410e1d7a7a968cd3ad48", - "tarball": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" - }, - "gitHead": "ba4a87875f2c82323c10023e36f4ae4b386c1bf8", - "homepage": "https://github.com/rvagg/through2", - "keywords": [ - "stream", - "streams2", - "through", - "transform" - ], - "license": "MIT", - "main": "through2.js", - "maintainers": [ - { - "email": "rod@vagg.org", - "name": "rvagg" - }, - { - "email": "bryce@ravenwall.com", - "name": "bryce" - } - ], - "name": "through2", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/rvagg/through2.git" - }, - "scripts": { - "test": "node test/test.js", - "test-local": "brtapsauce-local test/basic-test.js" - }, - "version": "0.6.5" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/through2.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/through2.js deleted file mode 100644 index 5b7a880e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/through2/through2.js +++ /dev/null @@ -1,96 +0,0 @@ -var Transform = require('readable-stream/transform') - , inherits = require('util').inherits - , xtend = require('xtend') - -function DestroyableTransform(opts) { - Transform.call(this, opts) - this._destroyed = false -} - -inherits(DestroyableTransform, Transform) - -DestroyableTransform.prototype.destroy = function(err) { - if (this._destroyed) return - this._destroyed = true - - var self = this - process.nextTick(function() { - if (err) - self.emit('error', err) - self.emit('close') - }) -} - -// a noop _transform function -function noop (chunk, enc, callback) { - callback(null, chunk) -} - - -// create a new export function, used by both the main export and -// the .ctor export, contains common logic for dealing with arguments -function through2 (construct) { - return function (options, transform, flush) { - if (typeof options == 'function') { - flush = transform - transform = options - options = {} - } - - if (typeof transform != 'function') - transform = noop - - if (typeof flush != 'function') - flush = null - - return construct(options, transform, flush) - } -} - - -// main export, just make me a transform stream! -module.exports = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(options) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) - - -// make me a reusable prototype that I can `new`, or implicitly `new` -// with a constructor call -module.exports.ctor = through2(function (options, transform, flush) { - function Through2 (override) { - if (!(this instanceof Through2)) - return new Through2(override) - - this.options = xtend(options, override) - - DestroyableTransform.call(this, this.options) - } - - inherits(Through2, DestroyableTransform) - - Through2.prototype._transform = transform - - if (flush) - Through2.prototype._flush = flush - - return Through2 -}) - - -module.exports.obj = through2(function (options, transform, flush) { - var t2 = new DestroyableTransform(xtend({ objectMode: true, highWaterMark: 16 }, options)) - - t2._transform = transform - - if (flush) - t2._flush = flush - - return t2 -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/LICENSE deleted file mode 100644 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/README.md deleted file mode 100644 index ae6f16f9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) - - -## Information - - - - - - - - - - - - - -
      Packagevinyl
      DescriptionA virtual file format
      Node Version>= 0.9
      - -## What is this? - -Read this for more info about how this plays into the grand scheme of things https://medium.com/@eschoff/3828e8126466 - -## File - -```javascript -var File = require('vinyl'); - -var coffeeFile = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee", - contents: new Buffer("test = 123") -}); -``` - -### constructor(options) - -#### options.cwd - -Type: `String` -Default: `process.cwd()` - -#### options.base - -Used for relative pathing. Typically where a glob starts. - -Type: `String` -Default: `options.cwd` - -#### options.path - -Full path to the file. - -Type: `String` -Default: `null` - -#### options.stat - -The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. - -Type: `fs.Stats` -Default: `null` - -#### options.contents - -File contents. - -Type: `Buffer, Stream, or null` -Default: `null` - -### isBuffer() - -Returns true if file.contents is a Buffer. - -### isStream() - -Returns true if file.contents is a Stream. - -### isNull() - -Returns true if file.contents is null. - -### clone() - -Returns a new File object with all attributes cloned. Custom attributes are deep-cloned. - -### pipe(stream[, opt]) - -If file.contents is a Buffer, it will write it to the stream. - -If file.contents is a Stream, it will pipe it to the stream. - -If file.contents is null, it will do nothing. - -If opt.end is false, the destination stream will not be ended (same as node core). - -Returns the stream. - -### inspect() - -Returns a pretty String interpretation of the File. Useful for console.log. - -### relative - -Returns path.relative for the file base and file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.relative); // file.coffee -``` - -[npm-url]: https://npmjs.org/package/vinyl -[npm-image]: https://badge.fury.io/js/vinyl.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl -[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl -[depstat-image]: https://david-dm.org/wearefractal/vinyl.png diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/index.js deleted file mode 100644 index 9aa47b78..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/index.js +++ /dev/null @@ -1,175 +0,0 @@ -var path = require('path'); -var clone = require('clone'); -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - // TODO: should this be moved to vinyl-fs? - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = fs stats object - // TODO: should this be moved to vinyl-fs? - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: false, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js deleted file mode 100644 index 89f09eda..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/cloneBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js deleted file mode 100644 index d36df6ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/inspectStream.js +++ /dev/null @@ -1,11 +0,0 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js deleted file mode 100644 index 0e23782c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var buf = require('buffer'); -var Buffer = buf.Buffer; - -// could use Buffer.isBuffer but this is the same exact thing... -module.exports = function(o) { - return typeof o === 'object' && o instanceof Buffer; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js deleted file mode 100644 index 7f22c63a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js deleted file mode 100644 index 9ce0929b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/package.json deleted file mode 100644 index 3d09adf6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/node_modules/vinyl/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "_args": [ - [ - "vinyl@^0.4.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs" - ] - ], - "_from": "vinyl@>=0.4.0 <0.5.0", - "_id": "vinyl@0.4.6", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs/vinyl", - "_nodeVersion": "0.10.33", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.1.6", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl", - "raw": "vinyl@^0.4.0", - "rawSpec": "^0.4.0", - "scope": null, - "spec": ">=0.4.0 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/vinyl-fs" - ], - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "_shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "_shrinkwrap": null, - "_spec": "vinyl@^0.4.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/vinyl-fs", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "dependencies": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - }, - "description": "A virtual file format", - "devDependencies": { - "buffer-equal": "0.0.1", - "coveralls": "^2.6.1", - "event-stream": "^3.1.0", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "lodash.templatesettings": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "rimraf": "^2.2.5", - "should": "^4.0.4" - }, - "directories": {}, - "dist": { - "shasum": "2f356c87a550a255461f36bbeb2a5ba8bf784847", - "tarball": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "8255a5f1de7fecb1cd5e7ba7ac1ec997395f6be1", - "homepage": "http://github.com/wearefractal/vinyl", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - } - ], - "name": "vinyl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint lib" - }, - "version": "0.4.6" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/package.json deleted file mode 100644 index e58bd556..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl-fs/package.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "_args": [ - [ - "vinyl-fs@^0.3.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp" - ] - ], - "_from": "vinyl-fs@>=0.3.0 <0.4.0", - "_id": "vinyl-fs@0.3.14", - "_inCache": true, - "_installable": true, - "_location": "/vinyl-fs", - "_nodeVersion": "0.10.36", - "_npmUser": { - "email": "blaine@iceddev.com", - "name": "phated" - }, - "_npmVersion": "2.14.3", - "_phantomChildren": { - "clone-stats": "0.0.1", - "core-util-is": "1.0.2", - "first-chunk-stream": "1.0.0", - "inherits": "2.0.1", - "is-utf8": "0.2.1", - "isarray": "0.0.1", - "string_decoder": "0.10.31", - "xtend": "4.0.1" - }, - "_requested": { - "name": "vinyl-fs", - "raw": "vinyl-fs@^0.3.0", - "rawSpec": "^0.3.0", - "scope": null, - "spec": ">=0.3.0 <0.4.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp", - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "_shasum": "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6", - "_shrinkwrap": null, - "_spec": "vinyl-fs@^0.3.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl-fs/issues" - }, - "dependencies": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" - }, - "description": "Vinyl adapter for the file system", - "devDependencies": { - "buffer-equal": "^0.0.1", - "coveralls": "^2.6.1", - "istanbul": "^0.3.0", - "jshint": "^2.4.1", - "mocha": "^2.0.0", - "mocha-lcov-reporter": "^0.0.1", - "rimraf": "^2.2.5", - "should": "^4.0.0", - "sinon": "^1.10.3" - }, - "directories": {}, - "dist": { - "shasum": "9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6", - "tarball": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz" - }, - "engines": { - "node": ">= 0.10" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "1e026b90df987b6da0ca7da941fd61a7cd1e6d8f", - "homepage": "http://github.com/wearefractal/vinyl-fs", - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/wearefractal/vinyl-fs/raw/master/LICENSE" - } - ], - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "vinyl-fs", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl-fs.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage", - "test": "mocha --reporter spec && jshint lib" - }, - "version": "0.3.14" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/LICENSE deleted file mode 100644 index 4f482f9b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2013 Fractal - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/README.md deleted file mode 100644 index 2d57d856..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/README.md +++ /dev/null @@ -1,195 +0,0 @@ -# vinyl [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Coveralls Status][coveralls-image]][coveralls-url] [![Dependency Status](https://david-dm.org/wearefractal/vinyl.png?theme=shields.io)](https://david-dm.org/wearefractal/vinyl) -## Information -











      Packagevinyl
      DescriptionA virtual file format
      Node Version>= 0.9
      - -## What is this? -Read this for more info about how this plays into the grand scheme of things [https://medium.com/@eschoff/3828e8126466](https://medium.com/@eschoff/3828e8126466) - -## File - -```javascript -var File = require('vinyl'); - -var coffeeFile = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee", - contents: new Buffer("test = 123") -}); -``` - -### isVinyl -When checking if an object is a vinyl file, you should not use instanceof. Use the isVinyl function instead. - -```js -var File = require('vinyl'); - -var dummy = new File({stuff}); -var notAFile = {}; - -File.isVinyl(dummy); // true -File.isVinyl(notAFile); // false -``` - -### constructor(options) -#### options.cwd -Type: `String`

      Default: `process.cwd()` - -#### options.base -Used for relative pathing. Typically where a glob starts. - -Type: `String`

      Default: `options.cwd` - -#### options.path -Full path to the file. - -Type: `String`

      Default: `undefined` - -#### options.history -Path history. Has no effect if `options.path` is passed. - -Type: `Array`

      Default: `options.path ? [options.path] : []` - -#### options.stat -The result of an fs.stat call. See [fs.Stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) for more information. - -Type: `fs.Stats`

      Default: `null` - -#### options.contents -File contents. - -Type: `Buffer, Stream, or null`

      Default: `null` - -### isBuffer() -Returns true if file.contents is a Buffer. - -### isStream() -Returns true if file.contents is a Stream. - -### isNull() -Returns true if file.contents is null. - -### clone([opt]) -Returns a new File object with all attributes cloned.
      By default custom attributes are deep-cloned. - -If opt or opt.deep is false, custom attributes will not be deep-cloned. - -If opt.contents is false, it will copy file.contents Buffer's reference. - -### pipe(stream[, opt]) -If file.contents is a Buffer, it will write it to the stream. - -If file.contents is a Stream, it will pipe it to the stream. - -If file.contents is null, it will do nothing. - -If opt.end is false, the destination stream will not be ended (same as node core). - -Returns the stream. - -### inspect() -Returns a pretty String interpretation of the File. Useful for console.log. - -### contents -The [Stream](https://nodejs.org/api/stream.html#stream_stream) or [Buffer](https://nodejs.org/api/buffer.html#buffer_class_buffer) of the file as it was passed in via options, or as the result of modification. - -For example: - -```js -if (file.isBuffer()) { - console.log(file.contents.toString()); // logs out the string of contents -} -``` - -### path -Absolute pathname string or `undefined`. Setting to a different value pushes the old value to `history`. - -### history -Array of `path` values the file object has had, from `history[0]` (original) through `history[history.length - 1]` (current). `history` and its elements should normally be treated as read-only and only altered indirectly by setting `path`. - -### relative -Returns path.relative for the file base and file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.relative); // file.coffee -``` - -### dirname -Gets and sets path.dirname for the file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.dirname); // /test - -file.dirname = '/specs'; - -console.log(file.dirname); // /specs -console.log(file.path); // /specs/file.coffee -` -``` - -### basename -Gets and sets path.basename for the file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.basename); // file.coffee - -file.basename = 'file.js'; - -console.log(file.basename); // file.js -console.log(file.path); // /test/file.js -` -``` - -### extname -Gets and sets path.extname for the file path. - -Example: - -```javascript -var file = new File({ - cwd: "/", - base: "/test/", - path: "/test/file.coffee" -}); - -console.log(file.extname); // .coffee - -file.extname = '.js'; - -console.log(file.extname); // .js -console.log(file.path); // /test/file.js -` -``` - -[npm-url]: https://npmjs.org/package/vinyl -[npm-image]: https://badge.fury.io/js/vinyl.png -[travis-url]: https://travis-ci.org/wearefractal/vinyl -[travis-image]: https://travis-ci.org/wearefractal/vinyl.png?branch=master -[coveralls-url]: https://coveralls.io/r/wearefractal/vinyl -[coveralls-image]: https://coveralls.io/repos/wearefractal/vinyl/badge.png -[depstat-url]: https://david-dm.org/wearefractal/vinyl -[depstat-image]: https://david-dm.org/wearefractal/vinyl.png diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/index.js deleted file mode 100644 index c8f113ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/index.js +++ /dev/null @@ -1,213 +0,0 @@ -var path = require('path'); -var clone = require('clone'); -var cloneStats = require('clone-stats'); -var cloneBuffer = require('./lib/cloneBuffer'); -var isBuffer = require('./lib/isBuffer'); -var isStream = require('./lib/isStream'); -var isNull = require('./lib/isNull'); -var inspectStream = require('./lib/inspectStream'); -var Stream = require('stream'); -var replaceExt = require('replace-ext'); - -function File(file) { - if (!file) file = {}; - - // record path change - var history = file.path ? [file.path] : file.history; - this.history = history || []; - - this.cwd = file.cwd || process.cwd(); - this.base = file.base || this.cwd; - - // stat = files stats object - this.stat = file.stat || null; - - // contents = stream, buffer, or null if not read - this.contents = file.contents || null; - - this._isVinyl = true; -} - -File.prototype.isBuffer = function() { - return isBuffer(this.contents); -}; - -File.prototype.isStream = function() { - return isStream(this.contents); -}; - -File.prototype.isNull = function() { - return isNull(this.contents); -}; - -// TODO: should this be moved to vinyl-fs? -File.prototype.isDirectory = function() { - return this.isNull() && this.stat && this.stat.isDirectory(); -}; - -File.prototype.clone = function(opt) { - if (typeof opt === 'boolean') { - opt = { - deep: opt, - contents: true - }; - } else if (!opt) { - opt = { - deep: true, - contents: true - }; - } else { - opt.deep = opt.deep === true; - opt.contents = opt.contents !== false; - } - - // clone our file contents - var contents; - if (this.isStream()) { - contents = this.contents.pipe(new Stream.PassThrough()); - this.contents = this.contents.pipe(new Stream.PassThrough()); - } else if (this.isBuffer()) { - contents = opt.contents ? cloneBuffer(this.contents) : this.contents; - } - - var file = new File({ - cwd: this.cwd, - base: this.base, - stat: (this.stat ? cloneStats(this.stat) : null), - history: this.history.slice(), - contents: contents - }); - - // clone our custom properties - Object.keys(this).forEach(function(key) { - // ignore built-in fields - if (key === '_contents' || key === 'stat' || - key === 'history' || key === 'path' || - key === 'base' || key === 'cwd') { - return; - } - file[key] = opt.deep ? clone(this[key], true) : this[key]; - }, this); - return file; -}; - -File.prototype.pipe = function(stream, opt) { - if (!opt) opt = {}; - if (typeof opt.end === 'undefined') opt.end = true; - - if (this.isStream()) { - return this.contents.pipe(stream, opt); - } - if (this.isBuffer()) { - if (opt.end) { - stream.end(this.contents); - } else { - stream.write(this.contents); - } - return stream; - } - - // isNull - if (opt.end) stream.end(); - return stream; -}; - -File.prototype.inspect = function() { - var inspect = []; - - // use relative path if possible - var filePath = (this.base && this.path) ? this.relative : this.path; - - if (filePath) { - inspect.push('"'+filePath+'"'); - } - - if (this.isBuffer()) { - inspect.push(this.contents.inspect()); - } - - if (this.isStream()) { - inspect.push(inspectStream(this.contents)); - } - - return ''; -}; - -File.isVinyl = function(file) { - return file && file._isVinyl === true; -}; - -// virtual attributes -// or stuff with extra logic -Object.defineProperty(File.prototype, 'contents', { - get: function() { - return this._contents; - }, - set: function(val) { - if (!isBuffer(val) && !isStream(val) && !isNull(val)) { - throw new Error('File.contents can only be a Buffer, a Stream, or null.'); - } - this._contents = val; - } -}); - -// TODO: should this be moved to vinyl-fs? -Object.defineProperty(File.prototype, 'relative', { - get: function() { - if (!this.base) throw new Error('No base specified! Can not get relative.'); - if (!this.path) throw new Error('No path specified! Can not get relative.'); - return path.relative(this.base, this.path); - }, - set: function() { - throw new Error('File.relative is generated from the base and path attributes. Do not modify it.'); - } -}); - -Object.defineProperty(File.prototype, 'dirname', { - get: function() { - if (!this.path) throw new Error('No path specified! Can not get dirname.'); - return path.dirname(this.path); - }, - set: function(dirname) { - if (!this.path) throw new Error('No path specified! Can not set dirname.'); - this.path = path.join(dirname, path.basename(this.path)); - } -}); - -Object.defineProperty(File.prototype, 'basename', { - get: function() { - if (!this.path) throw new Error('No path specified! Can not get basename.'); - return path.basename(this.path); - }, - set: function(basename) { - if (!this.path) throw new Error('No path specified! Can not set basename.'); - this.path = path.join(path.dirname(this.path), basename); - } -}); - -Object.defineProperty(File.prototype, 'extname', { - get: function() { - if (!this.path) throw new Error('No path specified! Can not get extname.'); - return path.extname(this.path); - }, - set: function(extname) { - if (!this.path) throw new Error('No path specified! Can not set extname.'); - this.path = replaceExt(this.path, extname); - } -}); - -Object.defineProperty(File.prototype, 'path', { - get: function() { - return this.history[this.history.length - 1]; - }, - set: function(path) { - if (typeof path !== 'string') throw new Error('path should be string'); - - // record history only when path changed - if (path && path !== this.path) { - this.history.push(path); - } - } -}); - -module.exports = File; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/cloneBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/cloneBuffer.js deleted file mode 100644 index 89f09eda..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/cloneBuffer.js +++ /dev/null @@ -1,7 +0,0 @@ -var Buffer = require('buffer').Buffer; - -module.exports = function(buf) { - var out = new Buffer(buf.length); - buf.copy(out); - return out; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/inspectStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/inspectStream.js deleted file mode 100644 index d36df6ff..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/inspectStream.js +++ /dev/null @@ -1,11 +0,0 @@ -var isStream = require('./isStream'); - -module.exports = function(stream) { - if (!isStream(stream)) return; - - var streamType = stream.constructor.name; - // avoid StreamStream - if (streamType === 'Stream') streamType = ''; - - return '<'+streamType+'Stream>'; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isBuffer.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isBuffer.js deleted file mode 100644 index 8a767d17..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isBuffer.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('buffer').Buffer.isBuffer; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isNull.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isNull.js deleted file mode 100644 index 7f22c63a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isNull.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = function(v) { - return v === null; -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isStream.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isStream.js deleted file mode 100644 index 9ce0929b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/lib/isStream.js +++ /dev/null @@ -1,5 +0,0 @@ -var Stream = require('stream').Stream; - -module.exports = function(o) { - return !!o && o instanceof Stream; -}; \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/package.json deleted file mode 100644 index 6a45a062..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/vinyl/package.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "_args": [ - [ - "vinyl@^0.5.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util" - ] - ], - "_from": "vinyl@>=0.5.0 <0.6.0", - "_id": "vinyl@0.5.3", - "_inCache": true, - "_installable": true, - "_location": "/vinyl", - "_nodeVersion": "2.5.0", - "_npmUser": { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - "_npmVersion": "2.13.4", - "_phantomChildren": {}, - "_requested": { - "name": "vinyl", - "raw": "vinyl@^0.5.0", - "rawSpec": "^0.5.0", - "scope": null, - "spec": ">=0.5.0 <0.6.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-util" - ], - "_resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "_shasum": "b0455b38fc5e0cf30d4325132e461970c2091cde", - "_shrinkwrap": null, - "_spec": "vinyl@^0.5.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-util", - "author": { - "email": "contact@wearefractal.com", - "name": "Fractal", - "url": "http://wearefractal.com/" - }, - "bugs": { - "url": "https://github.com/wearefractal/vinyl/issues" - }, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "description": "A virtual file format", - "devDependencies": { - "buffer-equal": "0.0.1", - "event-stream": "^3.1.0", - "istanbul": "^0.3.0", - "istanbul-coveralls": "^1.0.1", - "jshint": "^2.4.1", - "lodash.templatesettings": "^3.1.0", - "mocha": "^2.0.0", - "rimraf": "^2.2.5", - "should": "^7.0.0" - }, - "directories": {}, - "dist": { - "shasum": "b0455b38fc5e0cf30d4325132e461970c2091cde", - "tarball": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" - }, - "engines": { - "node": ">= 0.9" - }, - "files": [ - "index.js", - "lib" - ], - "gitHead": "6f19648bd67040bfd0dc755ad031e1e5e0b58429", - "homepage": "http://github.com/wearefractal/vinyl", - "license": "MIT", - "main": "./index.js", - "maintainers": [ - { - "email": "contact@wearefractal.com", - "name": "fractal" - }, - { - "email": "blaine@iceddev.com", - "name": "phated" - } - ], - "name": "vinyl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/wearefractal/vinyl.git" - }, - "scripts": { - "coveralls": "istanbul cover _mocha && istanbul-coveralls", - "test": "mocha && jshint lib" - }, - "version": "0.5.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/LICENSE deleted file mode 100644 index ee27ba4b..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the 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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/README.markdown b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/README.markdown deleted file mode 100644 index 346374e0..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/README.markdown +++ /dev/null @@ -1,70 +0,0 @@ -wordwrap -======== - -Wrap your words. - -example -======= - -made out of meat ----------------- - -meat.js - - var wrap = require('wordwrap')(15); - console.log(wrap('You and your whole family are made out of meat.')); - -output: - - You and your - whole family - are made out - of meat. - -centered --------- - -center.js - - var wrap = require('wordwrap')(20, 60); - console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' - )); - -output: - - At long last the struggle and tumult - was over. The machines had finally cast - off their oppressors and were finally - free to roam the cosmos. - Free of purpose, free of obligation. - Just drifting through emptiness. The - sun was just another point of light. - -methods -======= - -var wrap = require('wordwrap'); - -wrap(stop), wrap(start, stop, params={mode:"soft"}) ---------------------------------------------------- - -Returns a function that takes a string and returns a new string. - -Pad out lines with spaces out to column `start` and then wrap until column -`stop`. If a word is longer than `stop - start` characters it will overflow. - -In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are -longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break -up chunks longer than `stop - start`. - -wrap.hard(start, stop) ----------------------- - -Like `wrap()` but with `params.mode = "hard"`. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/center.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/center.js deleted file mode 100644 index a3fbaae9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/center.js +++ /dev/null @@ -1,10 +0,0 @@ -var wrap = require('wordwrap')(20, 60); -console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' -)); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/meat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/meat.js deleted file mode 100644 index a4665e10..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/example/meat.js +++ /dev/null @@ -1,3 +0,0 @@ -var wrap = require('wordwrap')(15); - -console.log(wrap('You and your whole family are made out of meat.')); diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/index.js deleted file mode 100644 index c9bc9452..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/index.js +++ /dev/null @@ -1,76 +0,0 @@ -var wordwrap = module.exports = function (start, stop, params) { - if (typeof start === 'object') { - params = start; - start = params.start; - stop = params.stop; - } - - if (typeof stop === 'object') { - params = stop; - start = start || params.start; - stop = undefined; - } - - if (!stop) { - stop = start; - start = 0; - } - - if (!params) params = {}; - var mode = params.mode || 'soft'; - var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; - - return function (text) { - var chunks = text.toString() - .split(re) - .reduce(function (acc, x) { - if (mode === 'hard') { - for (var i = 0; i < x.length; i += stop - start) { - acc.push(x.slice(i, i + stop - start)); - } - } - else acc.push(x) - return acc; - }, []) - ; - - return chunks.reduce(function (lines, rawChunk) { - if (rawChunk === '') return lines; - - var chunk = rawChunk.replace(/\t/g, ' '); - - var i = lines.length - 1; - if (lines[i].length + chunk.length > stop) { - lines[i] = lines[i].replace(/\s+$/, ''); - - chunk.split(/\n/).forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else if (chunk.match(/\n/)) { - var xs = chunk.split(/\n/); - lines[i] += xs.shift(); - xs.forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else { - lines[i] += chunk; - } - - return lines; - }, [ new Array(start + 1).join(' ') ]).join('\n'); - }; -}; - -wordwrap.soft = wordwrap; - -wordwrap.hard = function (start, stop) { - return wordwrap(start, stop, { mode : 'hard' }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/package.json deleted file mode 100644 index 14dc6716..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_args": [ - [ - "wordwrap@~0.0.2", - "/Users/sid/Desktop/code/RustyCode/node_modules/optimist" - ] - ], - "_from": "wordwrap@>=0.0.2 <0.1.0", - "_id": "wordwrap@0.0.3", - "_inCache": true, - "_installable": true, - "_location": "/wordwrap", - "_nodeVersion": "2.0.0", - "_npmUser": { - "email": "substack@gmail.com", - "name": "substack" - }, - "_npmVersion": "2.9.0", - "_phantomChildren": {}, - "_requested": { - "name": "wordwrap", - "raw": "wordwrap@~0.0.2", - "rawSpec": "~0.0.2", - "scope": null, - "spec": ">=0.0.2 <0.1.0", - "type": "range" - }, - "_requiredBy": [ - "/optimist" - ], - "_resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "_shasum": "a3d5da6cd5c0bc0008d37234bbaf1bed63059107", - "_shrinkwrap": null, - "_spec": "wordwrap@~0.0.2", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/optimist", - "author": { - "email": "mail@substack.net", - "name": "James Halliday", - "url": "http://substack.net" - }, - "bugs": { - "url": "https://github.com/substack/node-wordwrap/issues" - }, - "dependencies": {}, - "description": "Wrap those words. Show them at what columns to start and stop.", - "devDependencies": { - "expresso": "=0.7.x" - }, - "directories": { - "example": "example", - "lib": ".", - "test": "test" - }, - "dist": { - "shasum": "a3d5da6cd5c0bc0008d37234bbaf1bed63059107", - "tarball": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "engines": { - "node": ">=0.4.0" - }, - "gitHead": "e59aa1bd338914019456bdfba034508c9c4cb29d", - "homepage": "https://github.com/substack/node-wordwrap#readme", - "keywords": [ - "word", - "wrap", - "rule", - "format", - "column" - ], - "license": "MIT", - "main": "./index.js", - "maintainers": [ - { - "email": "mail@substack.net", - "name": "substack" - } - ], - "name": "wordwrap", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-wordwrap.git" - }, - "scripts": { - "test": "expresso" - }, - "version": "0.0.3" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/break.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/break.js deleted file mode 100644 index 749292ec..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/break.js +++ /dev/null @@ -1,30 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('../'); - -exports.hard = function () { - var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' - + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' - + '"browser":"chrome/6.0"}' - ; - var s_ = wordwrap.hard(80)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 2); - assert.ok(lines[0].length < 80); - assert.ok(lines[1].length < 80); - - assert.equal(s, s_.replace(/\n/g, '')); -}; - -exports.break = function () { - var s = new Array(55+1).join('a'); - var s_ = wordwrap.hard(20)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 3); - assert.ok(lines[0].length === 20); - assert.ok(lines[1].length === 20); - assert.ok(lines[2].length === 15); - - assert.equal(s, s_.replace(/\n/g, '')); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/idleness.txt b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/idleness.txt deleted file mode 100644 index aa3f4907..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/idleness.txt +++ /dev/null @@ -1,63 +0,0 @@ -In Praise of Idleness - -By Bertrand Russell - -[1932] - -Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. - -Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. - -One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. - -But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. - -All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. - -First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. - -Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. - -From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. - -It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. - -Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. - -This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? - -The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. - -Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. - -I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. - -If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. - -The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. - -In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. - -The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. - -For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? - -In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. - -In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. - -The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. - -It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. - -When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. - -In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. - -The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. - -In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. - -Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. - -[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/wrap.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/wrap.js deleted file mode 100644 index 0cfb76d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wordwrap/test/wrap.js +++ /dev/null @@ -1,31 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('wordwrap'); - -var fs = require('fs'); -var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); - -exports.stop80 = function () { - var lines = wordwrap(80)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 80, 'line > 80 columns'); - var chunks = line.match(/\S/) ? line.split(/\s+/) : []; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - }); -}; - -exports.start20stop60 = function () { - var lines = wordwrap(20, 100)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 100, 'line > 100 columns'); - var chunks = line - .split(/\s+/) - .filter(function (x) { return x.match(/\S/) }) - ; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); - }); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/README.md deleted file mode 100644 index 98eab252..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# wrappy - -Callback wrapping utility - -## USAGE - -```javascript -var wrappy = require("wrappy") - -// var wrapper = wrappy(wrapperFunction) - -// make sure a cb is called only once -// See also: http://npm.im/once for this specific use case -var once = wrappy(function (cb) { - var called = false - return function () { - if (called) return - called = true - return cb.apply(this, arguments) - } -}) - -function printBoo () { - console.log('boo') -} -// has some rando property -printBoo.iAmBooPrinter = true - -var onlyPrintOnce = once(printBoo) - -onlyPrintOnce() // prints 'boo' -onlyPrintOnce() // does nothing - -// random property is retained! -assert.equal(onlyPrintOnce.iAmBooPrinter, true) -``` diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/package.json deleted file mode 100644 index a68a4420..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_args": [ - [ - "wrappy@1", - "/Users/sid/Desktop/code/RustyCode/node_modules/inflight" - ] - ], - "_from": "wrappy@>=1.0.0 <2.0.0", - "_id": "wrappy@1.0.1", - "_inCache": true, - "_installable": true, - "_location": "/wrappy", - "_nodeVersion": "0.10.31", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "2.0.0", - "_phantomChildren": {}, - "_requested": { - "name": "wrappy", - "raw": "wrappy@1", - "rawSpec": "1", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/inflight", - "/once" - ], - "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", - "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", - "_shrinkwrap": null, - "_spec": "wrappy@1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/inflight", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/npm/wrappy/issues" - }, - "dependencies": {}, - "description": "Callback wrapping utility", - "devDependencies": { - "tap": "^0.4.12" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739", - "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - }, - "gitHead": "006a8cbac6b99988315834c207896eed71fd069a", - "homepage": "https://github.com/npm/wrappy", - "license": "ISC", - "main": "wrappy.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "wrappy", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/npm/wrappy.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "version": "1.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/test/basic.js deleted file mode 100644 index 5ed0fcdf..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/test/basic.js +++ /dev/null @@ -1,51 +0,0 @@ -var test = require('tap').test -var wrappy = require('../wrappy.js') - -test('basic', function (t) { - function onceifier (cb) { - var called = false - return function () { - if (called) return - called = true - return cb.apply(this, arguments) - } - } - onceifier.iAmOnce = {} - var once = wrappy(onceifier) - t.equal(once.iAmOnce, onceifier.iAmOnce) - - var called = 0 - function boo () { - t.equal(called, 0) - called++ - } - // has some rando property - boo.iAmBoo = true - - var onlyPrintOnce = once(boo) - - onlyPrintOnce() // prints 'boo' - onlyPrintOnce() // does nothing - t.equal(called, 1) - - // random property is retained! - t.equal(onlyPrintOnce.iAmBoo, true) - - var logs = [] - var logwrap = wrappy(function (msg, cb) { - logs.push(msg + ' wrapping cb') - return function () { - logs.push(msg + ' before cb') - var ret = cb.apply(this, arguments) - logs.push(msg + ' after cb') - } - }) - - var c = logwrap('foo', function () { - t.same(logs, [ 'foo wrapping cb', 'foo before cb' ]) - }) - c() - t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ]) - - t.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/wrappy.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/wrappy.js deleted file mode 100644 index bb7e7d6f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/wrappy/wrappy.js +++ /dev/null @@ -1,33 +0,0 @@ -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - - return wrapper - - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.jshintrc b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.jshintrc deleted file mode 100644 index 77887b5f..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.jshintrc +++ /dev/null @@ -1,30 +0,0 @@ -{ - "maxdepth": 4, - "maxstatements": 200, - "maxcomplexity": 12, - "maxlen": 80, - "maxparams": 5, - - "curly": true, - "eqeqeq": true, - "immed": true, - "latedef": false, - "noarg": true, - "noempty": true, - "nonew": true, - "undef": true, - "unused": "vars", - "trailing": true, - - "quotmark": true, - "expr": true, - "asi": true, - - "browser": false, - "esnext": true, - "devel": false, - "node": false, - "nonstandard": false, - - "predef": ["require", "module", "__dirname", "__filename"] -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.npmignore deleted file mode 100644 index 3c3629e6..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/LICENCE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/LICENCE deleted file mode 100644 index 1a14b437..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012-2014 Raynos. - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/Makefile b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/Makefile deleted file mode 100644 index d583fcf4..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -browser: - node ./support/compile - -.PHONY: browser \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/README.md deleted file mode 100644 index 093cb297..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# xtend - -[![browser support][3]][4] - -[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) - -Extend like a boss - -xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence. - -## Examples - -```js -var extend = require("xtend") - -// extend returns a new object. Does not mutate arguments -var combination = extend({ - a: "a", - b: 'c' -}, { - b: "b" -}) -// { a: "a", b: "b" } -``` - -## Stability status: Locked - -## MIT Licenced - - - [3]: http://ci.testling.com/Raynos/xtend.png - [4]: http://ci.testling.com/Raynos/xtend diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/immutable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/immutable.js deleted file mode 100644 index 94889c9d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/immutable.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = extend - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function extend() { - var target = {} - - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - - return target -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/mutable.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/mutable.js deleted file mode 100644 index 72debede..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/mutable.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = extend - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -function extend(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] - - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - target[key] = source[key] - } - } - } - - return target -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/package.json deleted file mode 100644 index 6ddc28d3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/package.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "_args": [ - [ - "xtend@~4.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/through2" - ] - ], - "_from": "xtend@>=4.0.0 <4.1.0", - "_id": "xtend@4.0.1", - "_inCache": true, - "_installable": true, - "_location": "/xtend", - "_nodeVersion": "0.10.32", - "_npmUser": { - "email": "raynos2@gmail.com", - "name": "raynos" - }, - "_npmVersion": "2.14.1", - "_phantomChildren": {}, - "_requested": { - "name": "xtend", - "raw": "xtend@~4.0.0", - "rawSpec": "~4.0.0", - "scope": null, - "spec": ">=4.0.0 <4.1.0", - "type": "range" - }, - "_requiredBy": [ - "/glob-stream/through2", - "/gulp-symdest/through2", - "/gulp-vinyl-zip/through2", - "/inline-process-browser/through2", - "/is-my-json-valid", - "/merge-stream/through2", - "/through2", - "/through2-filter", - "/vinyl-fs/through2" - ], - "_resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "_shasum": "a5c6d532be656e23db820efb943a1f04998d63af", - "_shrinkwrap": null, - "_spec": "xtend@~4.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/through2", - "author": { - "email": "raynos2@gmail.com", - "name": "Raynos" - }, - "bugs": { - "email": "raynos2@gmail.com", - "url": "https://github.com/Raynos/xtend/issues" - }, - "contributors": [ - { - "name": "Jake Verbaten" - }, - { - "name": "Matt Esch" - } - ], - "dependencies": {}, - "description": "extend like a boss", - "devDependencies": { - "tape": "~1.1.0" - }, - "directories": {}, - "dist": { - "shasum": "a5c6d532be656e23db820efb943a1f04998d63af", - "tarball": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - }, - "engines": { - "node": ">=0.4" - }, - "gitHead": "23dc302a89756da89c1897bc732a752317e35390", - "homepage": "https://github.com/Raynos/xtend", - "keywords": [ - "extend", - "merge", - "options", - "opts", - "object", - "array" - ], - "license": "MIT", - "main": "immutable", - "maintainers": [ - { - "email": "raynos2@gmail.com", - "name": "raynos" - } - ], - "name": "xtend", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/Raynos/xtend.git" - }, - "scripts": { - "test": "node test" - }, - "testling": { - "browsers": [ - "ie/7..latest", - "firefox/16..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest" - ], - "files": "test.js" - }, - "version": "4.0.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/test.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/test.js deleted file mode 100644 index 093a2b06..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/xtend/test.js +++ /dev/null @@ -1,83 +0,0 @@ -var test = require("tape") -var extend = require("./") -var mutableExtend = require("./mutable") - -test("merge", function(assert) { - var a = { a: "foo" } - var b = { b: "bar" } - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("replace", function(assert) { - var a = { a: "foo" } - var b = { a: "bar" } - - assert.deepEqual(extend(a, b), { a: "bar" }) - assert.end() -}) - -test("undefined", function(assert) { - var a = { a: undefined } - var b = { b: "foo" } - - assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) - assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) - assert.end() -}) - -test("handle 0", function(assert) { - var a = { a: "default" } - var b = { a: 0 } - - assert.deepEqual(extend(a, b), { a: 0 }) - assert.deepEqual(extend(b, a), { a: "default" }) - assert.end() -}) - -test("is immutable", function (assert) { - var record = {} - - extend(record, { foo: "bar" }) - assert.equal(record.foo, undefined) - assert.end() -}) - -test("null as argument", function (assert) { - var a = { foo: "bar" } - var b = null - var c = void 0 - - assert.deepEqual(extend(b, a, c), { foo: "bar" }) - assert.end() -}) - -test("mutable", function (assert) { - var a = { foo: "bar" } - - mutableExtend(a, { bar: "baz" }) - - assert.equal(a.bar, "baz") - assert.end() -}) - -test("null prototype", function(assert) { - var a = { a: "foo" } - var b = Object.create(null) - b.b = "bar"; - - assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) - assert.end() -}) - -test("null prototype mutable", function (assert) { - var a = { foo: "bar" } - var b = Object.create(null) - b.bar = "baz"; - - mutableExtend(a, b) - - assert.equal(a.bar, "baz") - assert.end() -}) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.npmignore deleted file mode 100644 index 534108e3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -coverage/ -.nyc_output/ -nyc_output/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.travis.yml deleted file mode 100644 index 9c1a7b6c..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -sudo: false -language: node_js -node_js: - - '0.10' - - '0.12' - - '4' - - '5' diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/CONTRIBUTING.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/CONTRIBUTING.md deleted file mode 100644 index 5f51e6f1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/CONTRIBUTING.md +++ /dev/null @@ -1,4 +0,0 @@ -1. The whole API is public. No underscore-prefixed pretend-private - things or hidden Object.create magic mumbo jumbo here. Plain old - objects that are created from constructors. -2. 100% test coverage must be maintained. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/LICENSE deleted file mode 100644 index 19129e31..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/README.md deleted file mode 100644 index f5861018..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/README.md +++ /dev/null @@ -1,204 +0,0 @@ -# yallist - -Yet Another Linked List - -There are many doubly-linked list implementations like it, but this -one is mine. - -For when an array would be too big, and a Map can't be iterated in -reverse order. - - -[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist) - -## basic usage - -```javascript -var yallist = require('yallist') -var myList = yallist.create([1, 2, 3]) -myList.push('foo') -myList.unshift('bar') -// of course pop() and shift() are there, too -console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo'] -myList.forEach(function (k) { - // walk the list head to tail -}) -myList.forEachReverse(function (k, index, list) { - // walk the list tail to head -}) -var myDoubledList = myList.map(function (k) { - return k + k -}) -// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo'] -// mapReverse is also a thing -var myDoubledListReverse = myList.mapReverse(function (k) { - return k + k -}) // ['foofoo', 6, 4, 2, 'barbar'] - -var reduced = myList.reduce(function (set, entry) { - set += entry - return set -}, 'start') -console.log(reduced) // 'startfoo123bar' -``` - -## api - -The whole API is considered "public". - -Functions with the same name as an Array method work more or less the -same way. - -There's reverse versions of most things because that's the point. - -### Yallist - -Default export, the class that holds and manages a list. - -Call it with either a forEach-able (like an array) or a set of -arguments, to initialize the list. - -The Array-ish methods all act like you'd expect. No magic length, -though, so if you change that it won't automatically prune or add -empty spots. - -### Yallist.create(..) - -Alias for Yallist function. Some people like factories. - -#### yallist.head - -The first node in the list - -#### yallist.tail - -The last node in the list - -#### yallist.length - -The number of nodes in the list. (Change this at your peril. It is -not magic like Array length.) - -#### yallist.toArray() - -Convert the list to an array. - -#### yallist.forEach(fn, [thisp]) - -Call a function on each item in the list. - -#### yallist.forEachReverse(fn, [thisp]) - -Call a function on each item in the list, in reverse order. - -#### yallist.get(n) - -Get the data at position `n` in the list. If you use this a lot, -probably better off just using an Array. - -#### yallist.getReverse(n) - -Get the data at position `n`, counting from the tail. - -#### yallist.map(fn, thisp) - -Create a new Yallist with the result of calling the function on each -item. - -#### yallist.mapReverse(fn, thisp) - -Same as `map`, but in reverse. - -#### yallist.pop() - -Get the data from the list tail, and remove the tail from the list. - -#### yallist.push(item, ...) - -Insert one or more items to the tail of the list. - -#### yallist.reduce(fn, initialValue) - -Like Array.reduce. - -#### yallist.reduceReverse - -Like Array.reduce, but in reverse. - -#### yallist.reverse - -Reverse the list in place. - -#### yallist.shift() - -Get the data from the list head, and remove the head from the list. - -#### yallist.slice([from], [to]) - -Just like Array.slice, but returns a new Yallist. - -#### yallist.sliceReverse([from], [to]) - -Just like yallist.slice, but the result is returned in reverse. - -#### yallist.toArray() - -Create an array representation of the list. - -#### yallist.toArrayReverse() - -Create a reversed array representation of the list. - -#### yallist.unshift(item, ...) - -Insert one or more items to the head of the list. - -#### yallist.unshiftNode(node) - -Move a Node object to the front of the list. (That is, pull it out of -wherever it lives, and make it the new head.) - -If the node belongs to a different list, then that list will remove it -first. - -#### yallist.pushNode(node) - -Move a Node object to the end of the list. (That is, pull it out of -wherever it lives, and make it the new tail.) - -If the node belongs to a list already, then that list will remove it -first. - -#### yallist.removeNode(node) - -Remove a node from the list, preserving referential integrity of head -and tail and other nodes. - -Will throw an error if you try to have a list remove a node that -doesn't belong to it. - -### Yallist.Node - -The class that holds the data and is actually the list. - -Call with `var n = new Node(value, previousNode, nextNode)` - -Note that if you do direct operations on Nodes themselves, it's very -easy to get into weird states where the list is broken. Be careful :) - -#### node.next - -The next node in the list. - -#### node.prev - -The previous node in the list. - -#### node.value - -The data the node contains. - -#### node.list - -The list to which this node belongs. (Null if it does not belong to -any list.) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/package.json deleted file mode 100644 index 23622ac3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_args": [ - [ - "yallist@^2.0.0", - "/Users/sid/Desktop/code/RustyCode/node_modules/aws4/node_modules/lru-cache" - ] - ], - "_from": "yallist@>=2.0.0 <3.0.0", - "_id": "yallist@2.0.0", - "_inCache": true, - "_installable": true, - "_location": "/yallist", - "_nodeVersion": "4.0.0", - "_npmUser": { - "email": "i@izs.me", - "name": "isaacs" - }, - "_npmVersion": "3.3.2", - "_phantomChildren": {}, - "_requested": { - "name": "yallist", - "raw": "yallist@^2.0.0", - "rawSpec": "^2.0.0", - "scope": null, - "spec": ">=2.0.0 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/aws4/lru-cache" - ], - "_resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz", - "_shasum": "306c543835f09ee1a4cb23b7bce9ab341c91cdd4", - "_shrinkwrap": null, - "_spec": "yallist@^2.0.0", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/aws4/node_modules/lru-cache", - "author": { - "email": "i@izs.me", - "name": "Isaac Z. Schlueter", - "url": "http://blog.izs.me/" - }, - "bugs": { - "url": "https://github.com/isaacs/yallist/issues" - }, - "dependencies": {}, - "description": "Yet Another Linked List", - "devDependencies": { - "tap": "^2.3.2" - }, - "directories": { - "test": "test" - }, - "dist": { - "shasum": "306c543835f09ee1a4cb23b7bce9ab341c91cdd4", - "tarball": "http://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz" - }, - "gitHead": "702eaba87deefa9f8fc2f8e36cb225bc2141fdc3", - "homepage": "https://github.com/isaacs/yallist#readme", - "license": "ISC", - "main": "yallist.js", - "maintainers": [ - { - "email": "i@izs.me", - "name": "isaacs" - } - ], - "name": "yallist", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/isaacs/yallist.git" - }, - "scripts": { - "test": "tap test/*.js --cov" - }, - "version": "2.0.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/test/basic.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/test/basic.js deleted file mode 100644 index 42a9eedc..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/test/basic.js +++ /dev/null @@ -1,188 +0,0 @@ -var t = require('tap') -var Yallist = require('../yallist.js') - -var y = new Yallist(1,2,3,4,5) -var z = new Yallist([1,2,3,4,5]) -t.similar(y, z, 'build from single list or args') - -function add10 (i) { - return i + 10 -} -t.similar(y.map(add10).toArray(), [11, 12, 13, 14, 15]) -t.similar(y.mapReverse(add10).toArray(), [15, 14, 13, 12, 11]) - -t.similar(y.map(add10).toArrayReverse(), [15, 14, 13, 12, 11]) -t.isa(Yallist(1,2,3), 'Yallist') -t.equal(y.push(6, 7, 8), 8) -t.similar(y.toArray(), [1, 2, 3, 4, 5, 6, 7, 8]) -y.pop() -y.shift() -y.unshift(100) - -var expect = [100, 2, 3, 4, 5, 6, 7] -var expectReverse = [ 7, 6, 5, 4, 3, 2, 100 ] - -t.similar(y.toArray(), expect) -t.equal(y.length, y.toArray().length) - -t.test(function forEach (t) { - t.plan(y.length * 2) - y.forEach(function (item, i, list) { - t.equal(item, expect[i]) - t.equal(list, y) - }) -}) - -t.test(function forEach (t) { - t.plan(y.length * 5) - var n = 0 - y.forEachReverse(function (item, i, list) { - t.equal(item, expectReverse[n]) - t.equal(item, expect[i]) - t.equal(item, y.get(i)) - t.equal(item, y.getReverse(n)) - n += 1 - t.equal(list, y) - }) -}) - -t.equal(y.getReverse(100), undefined) - -t.equal(y.get(9999), undefined) - - -function sum (a, b) { return a + b } -t.equal(y.reduce(sum), 127) -t.equal(y.reduce(sum, 100), 227) -t.equal(y.reduceReverse(sum), 127) -t.equal(y.reduceReverse(sum, 100), 227) - -t.equal(Yallist().pop(), undefined) -t.equal(Yallist().shift(), undefined) - -var x = Yallist() -x.unshift(1) -t.equal(x.length, 1) -t.similar(x.toArray(), [1]) - -// verify that y.toArray() returns an array and if we create a -// new Yallist from that array, we get a list matching -t.similar(Yallist(y.toArray()), y) -t.similar(Yallist.apply(null, y.toArray()), y) - -t.throws(function () { - new Yallist().reduce(function () {}) -}, {}, new TypeError('Reduce of empty list with no initial value')) -t.throws(function () { - new Yallist().reduceReverse(function () {}) -}, {}, new TypeError('Reduce of empty list with no initial value')) - -var z = y.reverse() -t.equal(z, y) -t.similar(y.toArray(), expectReverse) -y.reverse() -t.similar(y.toArray(), expect) - -var a = Yallist(1,2,3,4,5,6) -var cases = [ - [ [2, 4], [3, 4] ], - [ [2, -4], [] ], - [ [2, -2], [3, 4] ], - [ [1, -2], [2, 3, 4] ], - [ [-1, -2], [] ], - [ [-5, -2], [2, 3, 4] ], - [ [-99, 2], [1, 2] ], - [ [5, 99], [6] ], - [ [], [1,2,3,4,5,6] ] -] -t.test('slice', function (t) { - t.plan(cases.length) - cases.forEach(function (c) { - t.test(JSON.stringify(c), function (t) { - t.similar(a.slice.apply(a, c[0]), Yallist(c[1])) - t.similar([].slice.apply(a.toArray(), c[0]), c[1]) - t.end() - }) - }) -}) - -t.test('sliceReverse', function (t) { - t.plan(cases.length) - cases.forEach(function (c) { - var rev = c[1].slice().reverse() - t.test(JSON.stringify([c[0], rev]), function (t) { - t.similar(a.sliceReverse.apply(a, c[0]), Yallist(rev)) - t.similar([].slice.apply(a.toArray(), c[0]).reverse(), rev) - t.end() - }) - }) -}) - -var inserter = Yallist(1,2,3,4,5) -inserter.unshiftNode(inserter.head.next) -t.similar(inserter.toArray(), [2,1,3,4,5]) -inserter.unshiftNode(inserter.tail) -t.similar(inserter.toArray(), [5,2,1,3,4]) -inserter.unshiftNode(inserter.head) -t.similar(inserter.toArray(), [5,2,1,3,4]) - -var single = Yallist(1) -single.unshiftNode(single.head) -t.similar(single.toArray(), [1]) - -inserter = Yallist(1,2,3,4,5) -inserter.pushNode(inserter.tail.prev) -t.similar(inserter.toArray(), [1,2,3,5,4]) -inserter.pushNode(inserter.head) -t.similar(inserter.toArray(), [2,3,5,4,1]) -inserter.unshiftNode(inserter.head) -t.similar(inserter.toArray(), [2,3,5,4,1]) - -single = Yallist(1) -single.pushNode(single.tail) -t.similar(single.toArray(), [1]) - -var swiped = Yallist(9,8,7) -inserter.unshiftNode(swiped.head.next) -t.similar(inserter.toArray(), [8,2,3,5,4,1]) -t.similar(swiped.toArray(), [9,7]) - -swiped = Yallist(9,8,7) -inserter.pushNode(swiped.head.next) -t.similar(inserter.toArray(), [8,2,3,5,4,1,8]) -t.similar(swiped.toArray(), [9,7]) - -swiped.unshiftNode(Yallist.Node(99)) -t.similar(swiped.toArray(), [99,9,7]) -swiped.pushNode(Yallist.Node(66)) -t.similar(swiped.toArray(), [99,9,7,66]) - -var e = Yallist() -e.unshiftNode(Yallist.Node(1)) -t.same(e.toArray(), [1]) -e = Yallist() -e.pushNode(Yallist.Node(1)) -t.same(e.toArray(), [1]) - -// steal them back, don't break the lists -swiped.unshiftNode(inserter.head) -t.same(swiped, Yallist(8,99,9,7,66)) -t.same(inserter, Yallist(2,3,5,4,1,8)) -swiped.unshiftNode(inserter.tail) -t.same(inserter, Yallist(2,3,5,4,1)) -t.same(swiped, Yallist(8,8,99,9,7,66)) - - -t.throws(function remove_foreign_node () { - e.removeNode(swiped.head) -}, {}, new Error('removing node which does not belong to this list')) -t.throws(function remove_unlisted_node () { - e.removeNode(Yallist.Node('nope')) -}, {}, new Error('removing node which does not belong to this list')) - -e = Yallist(1,2) -e.removeNode(e.head) -t.same(e, Yallist(2)) -e = Yallist(1,2) -e.removeNode(e.tail) -t.same(e, Yallist(1)) diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/yallist.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/yallist.js deleted file mode 100644 index fb60fc28..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yallist/yallist.js +++ /dev/null @@ -1,360 +0,0 @@ -module.exports = Yallist - -Yallist.Node = Node -Yallist.create = Yallist - -function Yallist (list) { - var self = this - if (!(self instanceof Yallist)) { - self = new Yallist() - } - - self.tail = null - self.head = null - self.length = 0 - - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item) - }) - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]) - } - } - - return self -} - -Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list') - } - - var next = node.next - var prev = node.prev - - if (next) { - next.prev = prev - } - - if (prev) { - prev.next = next - } - - if (node === this.head) { - this.head = next - } - if (node === this.tail) { - this.tail = prev - } - - node.list.length -- - node.next = null - node.prev = null - node.list = null -} - -Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var head = this.head - node.list = this - node.next = head - if (head) { - head.prev = node - } - - this.head = node - if (!this.tail) { - this.tail = node - } - this.length ++ -} - -Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var tail = this.tail - node.list = this - node.prev = tail - if (tail) { - tail.next = node - } - - this.tail = node - if (!this.head) { - this.head = node - } - this.length ++ -} - -Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.pop = function () { - if (!this.tail) - return undefined - - var res = this.tail.value - this.tail = this.tail.prev - this.tail.next = null - this.length -- - return res -} - -Yallist.prototype.shift = function () { - if (!this.head) - return undefined - - var res = this.head.value - this.head = this.head.next - this.head.prev = null - this.length -- - return res -} - -Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this) - walker = walker.next - } -} - -Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this) - walker = walker.prev - } -} - -Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.head; walker !== null; ) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.next - } - return res -} - -Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.prev - } - return res -} - -Yallist.prototype.reduce = function (fn, initial) { - var acc - var walker = this.head - if (arguments.length > 1) { - acc = initial - } else if (this.head) { - walker = this.head.next - acc = this.head.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i) - walker = walker.next - } - - return acc -} - -Yallist.prototype.reduceReverse = function (fn, initial) { - var acc - var walker = this.tail - if (arguments.length > 1) { - acc = initial - } else if (this.tail) { - walker = this.tail.prev - acc = this.tail.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i) - walker = walker.prev - } - - return acc -} - -Yallist.prototype.toArray = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value - walker = walker.next - } - return arr -} - -Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value - walker = walker.prev - } - return arr -} - -Yallist.prototype.slice = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.reverse = function () { - var head = this.head - var tail = this.tail - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev - walker.prev = walker.next - walker.next = p - } - this.head = tail - this.tail = head - return this -} - -function push (self, item) { - self.tail = new Node(item, self.tail, null, self) - if (!self.head) { - self.head = self.tail - } - self.length ++ -} - -function unshift (self, item) { - self.head = new Node(item, null, self.head, self) - if (!self.tail) { - self.tail = self.head - } - self.length ++ -} - -function Node (value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list) - } - - this.list = list - this.value = value - - if (prev) { - prev.next = this - this.prev = prev - } else { - this.prev = null - } - - if (next) { - next.prev = this - this.next = next - } else { - this.next = null - } -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.npmignore deleted file mode 100644 index fc23d5df..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -test/ -examples/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.travis.yml b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.travis.yml deleted file mode 100644 index 4afc2a15..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - "0.10" -script: - - "npm run test-travis" -after_script: - - "npm install coveralls@2 && cat ./coverage/lcov.info | ./node_modules/.bin/coveralls" - diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/LICENSE deleted file mode 100644 index 37538d4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Josh Wolfe - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/README.md deleted file mode 100644 index 1182341e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/README.md +++ /dev/null @@ -1,467 +0,0 @@ -# yauzl - -[![Build Status](https://travis-ci.org/thejoshwolfe/yauzl.svg?branch=master)](https://travis-ci.org/thejoshwolfe/yauzl) -[![Coverage Status](https://img.shields.io/coveralls/thejoshwolfe/yauzl.svg)](https://coveralls.io/r/thejoshwolfe/yauzl) - -yet another unzip library for node. For zipping, see -[yazl](https://github.com/thejoshwolfe/yazl). - -Design principles: - - * Follow the spec. - Don't scan for local file headers. - Read the central directory for file metadata. - (see [No Streaming Unzip API](#no-streaming-unzip-api)). - * Don't block the JavaScript thread. - Use and provide async APIs. - * Keep memory usage under control. - Don't attempt to buffer entire files in RAM at once. - * Never crash (if used properly). - Don't let malformed zip files bring down client applications who are trying to catch errors. - * Catch unsafe filenames entries. - A zip file entry throws an error if its file name starts with `"/"` or `/[A-Za-z]:\//` - or if it contains `".."` path segments or `"\\"` (per the spec). - -## Usage - -```js -var yauzl = require("yauzl"); -var fs = require("fs"); -var path = require("path"); -var mkdirp = require("mkdirp"); // or similar - -yauzl.open("path/to/file.zip", {lazyEntries: true}, function(err, zipfile) { - if (err) throw err; - zipfile.readEntry(); - zipfile.on("entry", function(entry) { - if (/\/$/.test(entry.fileName)) { - // directory file names end with '/' - mkdirp(entry.fileName, function(err) { - if (err) throw err; - zipfile.readEntry(); - }); - } else { - // file entry - zipfile.openReadStream(entry, function(err, readStream) { - if (err) throw err; - // ensure parent directory exists - mkdirp(path.dirname(entry.fileName), function(err) { - if (err) throw err; - readStream.pipe(fs.createWriteStream(entry.fileName)); - readStream.on("end", function() { - zipfile.readEntry(); - }); - }); - }); - } - }); -}); -``` - -## API - -The default for every optional `callback` parameter is: - -```js -function defaultCallback(err) { - if (err) throw err; -} -``` - -### open(path, [options], [callback]) - -Calls `fs.open(path, "r")` and gives the `fd`, `options`, and `callback` to `fromFd()` below. - -`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false}`. - -`autoClose` is effectively equivalent to: - -```js -zipfile.once("end", function() { - zipfile.close(); -}); -``` - -`lazyEntries` indicates that entries should be read only when `readEntry()` is called. -If `lazyEntries` is `false`, `entry` events will be emitted as fast as possible to allow `pipe()`ing -file data from all entries in parallel. -This is not recommended, as it can lead to out of control memory usage for zip files with many entries. -See [issue #22](https://github.com/thejoshwolfe/yauzl/issues/22). -If `lazyEntries` is `true`, an `entry` or `end` event will be emitted in response to each call to `readEntry()`. -This allows processing of one entry at a time, and will keep memory usage under control for zip files with many entries. - -### fromFd(fd, [options], [callback]) - -Reads from the fd, which is presumed to be an open .zip file. -Note that random access is required by the zip file specification, -so the fd cannot be an open socket or any other fd that does not support random access. - -The `callback` is given the arguments `(err, zipfile)`. -An `err` is provided if the End of Central Directory Record Signature cannot be found in the file, -which indicates that the fd is not a zip file. -`zipfile` is an instance of `ZipFile`. - -`options` may be omitted or `null`. The defaults are `{autoClose: false, lazyEntries: false}`. -See `open()` for the meaning of the options. - -### fromBuffer(buffer, [options], [callback]) - -Like `fromFd()`, but reads from a RAM buffer instead of an open file. -`buffer` is a `Buffer`. -`callback` is effectively passed directly to `fromFd()`. - -If a `ZipFile` is acquired from this method, -it will never emit the `close` event, -and calling `close()` is not necessary. - -`options` may be omitted or `null`. The defaults are `{lazyEntries: false}`. -See `open()` for the meaning of the options. -The `autoClose` option is ignored for this method. - -### fromRandomAccessReader(reader, totalSize, [options], [callback]) - -This method of creating a zip file allows clients to implement their own back-end file system. -For example, a client might translate read calls into network requests. - -The `reader` parameter must be of a type that is a subclass of -[RandomAccessReader](#class-randomaccessreader) that implements the required methods. -The `totalSize` is a Number and indicates the total file size of the zip file. - -`options` may be omitted or `null`. The defaults are `{autoClose: true, lazyEntries: false}`. -See `open()` for the meaning of the options. - -### dosDateTimeToDate(date, time) - -Converts MS-DOS `date` and `time` data into a JavaScript `Date` object. -Each parameter is a `Number` treated as an unsigned 16-bit integer. -Note that this format does not support timezones, -so the returned object will use the local timezone. - -### Class: ZipFile - -The constructor for the class is not part of the public API. -Use `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` instead. - -#### Event: "entry" - -Callback gets `(entry)`, which is an `Entry`. -See `open()` and `readEntry()` for when this event is emitted. - -#### Event: "end" - -Emitted after the last `entry` event has been emitted. -See `open()` and `readEntry()` for more info on when this event is emitted. - -#### Event: "close" - -Emitted after the fd is actually closed. -This is after calling `close()` (or after the `end` event when `autoClose` is `true`), -and after all stream pipelines created from `openReadStream()` have finished reading data from the fd. - -If this `ZipFile` was acquired from `fromRandomAccessReader()`, -the "fd" in the previous paragraph refers to the `RandomAccessReader` implemented by the client. - -If this `ZipFile` was acquired from `fromBuffer()`, this event is never emitted. - -#### Event: "error" - -Emitted in the case of errors with reading the zip file. -(Note that other errors can be emitted from the streams created from `openReadStream()` as well.) -After this event has been emitted, no further `entry`, `end`, or `error` events will be emitted, -but the `close` event may still be emitted. - -#### readEntry() - -Causes this `ZipFile` to emit an `entry` or `end` event (or an `error` event). -This method must only be called when this `ZipFile` was created with the `lazyEntries` option set to `true` (see `open()`). -When this `ZipFile` was created with the `lazyEntries` option set to `true`, -`entry` and `end` events are only ever emitted in response to this method call. - -The event that is emitted in response to this method will not be emitted until after this method has returned, -so it is safe to call this method before attaching event listeners. - -After calling this method, calling this method again before the response event has been emitted will cause undefined behavior. -Calling this method after the `end` event has been emitted will cause undefined behavior. -Calling this method after calling `close()` will cause undefined behavior. - -#### openReadStream(entry, callback) - -`entry` must be an `Entry` object from this `ZipFile`. -`callback` gets `(err, readStream)`, where `readStream` is a `Readable Stream`. -If the entry is compressed (with a supported compression method), -the read stream provides the decompressed data. -If this zipfile is already closed (see `close()`), the `callback` will receive an `err`. - -It's possible for the `readStream` it to emit errors for several reasons. -For example, if zlib cannot decompress the data, the zlib error will be emitted from the `readStream`. -Two more error cases are if the decompressed data has too many or too few actual bytes -compared to the reported byte count from the entry's `uncompressedSize` field. -yauzl notices this false information and emits an error from the `readStream` -after some number of bytes have already been piped through the stream. - -Because of this check, clients can always trust the `uncompressedSize` field in `Entry` objects. -Guarding against [zip bomb](http://en.wikipedia.org/wiki/Zip_bomb) attacks can be accomplished by -doing some heuristic checks on the size metadata and then watching out for the above errors. -Such heuristics are outside the scope of this library, -but enforcing the `uncompressedSize` is implemented here as a security feature. - -It is possible to destroy the `readStream` before it has piped all of its data. -To do this, call `readStream.destroy()`. -You must `unpipe()` the `readStream` from any destination before calling `readStream.destroy()`. -If this zipfile was created using `fromRandomAccessReader()`, the `RandomAccessReader` implementation -must provide readable streams that implement a `.destroy()` method (see `randomAccessReader._readStreamForRange()`) -in order for calls to `readStream.destroy()` to work in this context. - -#### close() - -Causes all future calls to `openReadStream()` to fail, -and closes the fd after all streams created by `openReadStream()` have emitted their `end` events. - -If the `autoClose` option is set to `true` (see `open()`), -this function will be called automatically effectively in response to this object's `end` event. - -If the `lazyEntries` option is set to `false` (see `open()`) and this object's `end` event has not been emitted yet, -this function causes undefined behavior. -If the `lazyEntries` option is set to `true`, -you can call this function instead of calling `readEntry()` to abort reading the entries of a zipfile. - -It is safe to call this function multiple times; after the first call, successive calls have no effect. -This includes situations where the `autoClose` option effectively calls this function for you. - -#### isOpen - -`Boolean`. `true` until `close()` is called; then it's `false`. - -#### entryCount - -`Number`. Total number of central directory records. - -#### comment - -`String`. Always decoded with `CP437` per the spec. - -### Class: Entry - -Objects of this class represent Central Directory Records. -Refer to the zipfile specification for more details about these fields. - -These fields are of type `Number`: - - * `versionMadeBy` - * `versionNeededToExtract` - * `generalPurposeBitFlag` - * `compressionMethod` - * `lastModFileTime` (MS-DOS format, see `getLastModDateTime`) - * `lastModFileDate` (MS-DOS format, see `getLastModDateTime`) - * `crc32` - * `compressedSize` - * `uncompressedSize` - * `fileNameLength` (bytes) - * `extraFieldLength` (bytes) - * `fileCommentLength` (bytes) - * `internalFileAttributes` - * `externalFileAttributes` - * `relativeOffsetOfLocalHeader` - -#### fileName - -`String`. -Following the spec, the bytes for the file name are decoded with -`UTF-8` if `generalPurposeBitFlag & 0x800`, otherwise with `CP437`. - -If `fileName` would contain unsafe characters, such as an absolute path or -a relative directory, yauzl emits an error instead of an entry. - -#### extraFields - -`Array` with each entry in the form `{id: id, data: data}`, -where `id` is a `Number` and `data` is a `Buffer`. -This library looks for and reads the ZIP64 Extended Information Extra Field (0x0001) -in order to support ZIP64 format zip files. -None of the other fields are considered significant by this library. - -#### comment - -`String` decoded with the same charset as used for `fileName`. - -#### getLastModDate() - -Effectively implemented as: - -```js -return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime); -``` - -### Class: RandomAccessReader - -This class is meant to be subclassed by clients and instantiated for the `fromRandomAccessReader()` function. - -An example implementation can be found in `test/test.js`. - -#### randomAccessReader._readStreamForRange(start, end) - -Subclasses *must* implement this method. - -`start` and `end` are Numbers and indicate byte offsets from the start of the file. -`end` is exclusive, so `_readStreamForRange(0x1000, 0x2000)` would indicate to read `0x1000` bytes. -`end - start` will always be at least `1`. - -This method should return a readable stream which will be `pipe()`ed into another stream. -It is expected that the readable stream will provide data in several chunks if necessary. -If the readable stream provides too many or too few bytes, an error will be emitted. -Any errors emitted on the readable stream will be handled and re-emitted on the client-visible stream -(returned from `zipfile.openReadStream()`) or provided as the `err` argument to the appropriate callback -(for example, for `fromRandomAccessReader()`). - -The returned stream *must* implement a method `.destroy()` -if you call `readStream.destroy()` on streams you get from `openReadStream()`. -If you never call `readStream.destroy()`, then streams returned from this method do not need to implement a method `.destroy()`. -`.destroy()` should abort any streaming that is in progress and clean up any associated resources. -`.destroy()` will only be called after the stream has been `unpipe()`d from its destination. - -Note that the stream returned from this method might not be the same object that is provided by `openReadStream()`. -The stream returned from this method might be `pipe()`d through one or more filter streams (for example, a zlib inflate stream). - -#### randomAccessReader.read(buffer, offset, length, position, callback) - -Subclasses may implement this method. -The default implementation uses `createReadStream()` to fill the `buffer`. - -This method should behave like `fs.read()`. - -#### randomAccessReader.close(callback) - -Subclasses may implement this method. -The default implementation is effectively `setImmediate(callback);`. - -`callback` takes parameters `(err)`. - -This method is called once the all streams returned from `_readStreamForRange()` have ended, -and no more `_readStreamForRange()` or `read()` requests will be issued to this object. - -## How to Avoid Crashing - -When a malformed zipfile is encountered, the default behavior is to crash (throw an exception). -If you want to handle errors more gracefully than this, -be sure to do the following: - - * Provide `callback` parameters where they are allowed, and check the `err` parameter. - * Attach a listener for the `error` event on any `ZipFile` object you get from `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()`. - * Attach a listener for the `error` event on any stream you get from `openReadStream()`. - -## Limitations - -### No Streaming Unzip API - -Due to the design of the .zip file format, it's impossible to interpret a .zip file from start to finish -(such as from a readable stream) without sacrificing correctness. -The Central Directory, which is the authority on the contents of the .zip file, is at the end of a .zip file, not the beginning. -A streaming API would need to either buffer the entire .zip file to get to the Central Directory before interpreting anything -(defeating the purpose of a streaming interface), or rely on the Local File Headers which are interspersed through the .zip file. -However, the Local File Headers are explicitly denounced in the spec as being unreliable copies of the Central Directory, -so trusting them would be a violation of the spec. - -Any library that offers a streaming unzip API must make one of the above two compromises, -which makes the library either dishonest or nonconformant (usually the latter). -This library insists on correctness and adherence to the spec, and so does not offer a streaming API. - -### Limitted ZIP64 Support - -For ZIP64, only zip files smaller than `8PiB` are supported, -not the full `16EiB` range that a 64-bit integer should be able to index. -This is due to the JavaScript Number type being an IEEE 754 double precision float. - -The Node.js `fs` module probably has this same limitation. - -### ZIP64 Extensible Data Sector Is Ignored - -The spec does not allow zip file creators to put arbitrary data here, -but rather reserves its use for PKWARE and mentions something about Z390. -This doesn't seem useful to expose in this library, so it is ignored. - -### No Multi-Disk Archive Support - -This library does not support multi-disk zip files. -The multi-disk fields in the zipfile spec were intended for a zip file to span multiple floppy disks, -which probably never happens now. -If the "number of this disk" field in the End of Central Directory Record is not `0`, -the `open()`, `fromFd()`, `fromBuffer()`, or `fromRandomAccessReader()` `callback` will receive an `err`. -By extension the following zip file fields are ignored by this library and not provided to clients: - - * Disk where central directory starts - * Number of central directory records on this disk - * Disk number where file starts - -### No Encryption Support - -Currently, the presence of encryption is not even checked, -and encrypted zip files will cause undefined behavior. - -### Local File Headers Are Ignored - -Many unzip libraries mistakenly read the Local File Header data in zip files. -This data is officially defined to be redundant with the Central Directory information, -and is not to be trusted. -Aside from checking the signature, yauzl ignores the content of the Local File Header. - -### No CRC-32 Checking - -This library provides the `crc32` field of `Entry` objects read from the Central Directory. -However, this field is not used for anything in this library. - -### versionNeededToExtract Is Ignored - -The field `versionNeededToExtract` is ignored, -because this library doesn't support the complete zip file spec at any version, - -### No Support For Obscure Compression Methods - -Regarding the `compressionMethod` field of `Entry` objects, -only method `0` (stored with no compression) -and method `8` (deflated) are supported. -Any of the other 15 official methods will cause the `openReadStream()` `callback` to receive an `err`. - -### Data Descriptors Are Ignored - -There may or may not be Data Descriptor sections in a zip file. -This library provides no support for finding or interpreting them. - -### Archive Extra Data Record Is Ignored - -There may or may not be an Archive Extra Data Record section in a zip file. -This library provides no support for finding or interpreting it. - -### No Language Encoding Flag Support - -Zip files officially support charset encodings other than CP437 and UTF-8, -but the zip file spec does not specify how it works. -This library makes no attempt to interpret the Language Encoding Flag. - -## Change History - - * 2.4.1 - * Fix error handling. - * 2.4.0 - * Add ZIP64 support. [issue #6](https://github.com/thejoshwolfe/yazl/issues/6) - * Add `lazyEntries` option. [issue #22](https://github.com/thejoshwolfe/yazl/issues/22) - * Add `readStream.destroy()` method. [issue #26](https://github.com/thejoshwolfe/yazl/issues/26) - * Add `fromRandomAccessReader()`. [issue #14](https://github.com/thejoshwolfe/yazl/issues/14) - * Add `examples/unzip.js`. - * 2.3.1 - * Documentation updates. - * 2.3.0 - * Check that `uncompressedSize` is correct, or else emit an error. [issue #13](https://github.com/thejoshwolfe/yazl/issues/13) - * 2.2.1 - * Update dependencies. - * 2.2.0 - * Update dependencies. - * 2.1.0 - * Remove dependency on `iconv`. - * 2.0.3 - * Fix crash when trying to read a 0-byte file. - * 2.0.2 - * Fix event behavior after errors. - * 2.0.1 - * Fix bug with using `iconv`. - * 2.0.0 - * Initial release. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/index.js deleted file mode 100644 index 573c3370..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/index.js +++ /dev/null @@ -1,626 +0,0 @@ -var fs = require("fs"); -var zlib = require("zlib"); -var fd_slicer = require("fd-slicer"); -var util = require("util"); -var EventEmitter = require("events").EventEmitter; -var Transform = require("stream").Transform; -var PassThrough = require("stream").PassThrough; -var Writable = require("stream").Writable; - -exports.open = open; -exports.fromFd = fromFd; -exports.fromBuffer = fromBuffer; -exports.fromRandomAccessReader = fromRandomAccessReader; -exports.dosDateTimeToDate = dosDateTimeToDate; -exports.ZipFile = ZipFile; -exports.Entry = Entry; -exports.RandomAccessReader = RandomAccessReader; - -function open(path, options, callback) { - if (typeof options === "function") { - callback = options; - options = null; - } - if (options == null) options = {}; - if (options.autoClose == null) options.autoClose = true; - if (options.lazyEntries == null) options.lazyEntries = false; - if (callback == null) callback = defaultCallback; - fs.open(path, "r", function(err, fd) { - if (err) return callback(err); - fromFd(fd, options, function(err, zipfile) { - if (err) fs.close(fd, defaultCallback); - callback(err, zipfile); - }); - }); -} - -function fromFd(fd, options, callback) { - if (typeof options === "function") { - callback = options; - options = null; - } - if (options == null) options = {}; - if (options.autoClose == null) options.autoClose = false; - if (options.lazyEntries == null) options.lazyEntries = false; - if (callback == null) callback = defaultCallback; - fs.fstat(fd, function(err, stats) { - if (err) return callback(err); - var reader = fd_slicer.createFromFd(fd, {autoClose: true}); - fromRandomAccessReader(reader, stats.size, options, callback); - }); -} - -function fromBuffer(buffer, options, callback) { - if (typeof options === "function") { - callback = options; - options = null; - } - if (options == null) options = {}; - options.autoClose = false; - if (options.lazyEntries == null) options.lazyEntries = false; - // i got your open file right here. - var reader = fd_slicer.createFromBuffer(buffer); - fromRandomAccessReader(reader, buffer.length, options, callback); -} - -function fromRandomAccessReader(reader, totalSize, options, callback) { - if (typeof options === "function") { - callback = options; - options = null; - } - if (options == null) options = {}; - if (options.autoClose == null) options.autoClose = true; - if (options.lazyEntries == null) options.lazyEntries = false; - if (callback == null) callback = defaultCallback; - if (typeof totalSize !== "number") throw new Error("expected totalSize parameter to be a number"); - if (totalSize > Number.MAX_SAFE_INTEGER) { - throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double."); - } - - // the matching unref() call is in zipfile.close() - reader.ref(); - - // eocdr means End of Central Directory Record. - // search backwards for the eocdr signature. - // the last field of the eocdr is a variable-length comment. - // the comment size is encoded in a 2-byte field in the eocdr, which we can't find without trudging backwards through the comment to find it. - // as a consequence of this design decision, it's possible to have ambiguous zip file metadata if a coherent eocdr was in the comment. - // we search backwards for a eocdr signature, and hope that whoever made the zip file was smart enough to forbid the eocdr signature in the comment. - var eocdrWithoutCommentSize = 22; - var maxCommentSize = 0x10000; // 2-byte size - var bufferSize = Math.min(eocdrWithoutCommentSize + maxCommentSize, totalSize); - var buffer = new Buffer(bufferSize); - var bufferReadStart = totalSize - buffer.length; - readAndAssertNoEof(reader, buffer, 0, bufferSize, bufferReadStart, function(err) { - if (err) return callback(err); - for (var i = bufferSize - eocdrWithoutCommentSize; i >= 0; i -= 1) { - if (buffer.readUInt32LE(i) !== 0x06054b50) continue; - // found eocdr - var eocdrBuffer = buffer.slice(i); - - // 0 - End of central directory signature = 0x06054b50 - // 4 - Number of this disk - var diskNumber = eocdrBuffer.readUInt16LE(4); - if (diskNumber !== 0) return callback(new Error("multi-disk zip files are not supported: found disk number: " + diskNumber)); - // 6 - Disk where central directory starts - // 8 - Number of central directory records on this disk - // 10 - Total number of central directory records - var entryCount = eocdrBuffer.readUInt16LE(10); - // 12 - Size of central directory (bytes) - // 16 - Offset of start of central directory, relative to start of archive - var centralDirectoryOffset = eocdrBuffer.readUInt32LE(16); - // 20 - Comment length - var commentLength = eocdrBuffer.readUInt16LE(20); - var expectedCommentLength = eocdrBuffer.length - eocdrWithoutCommentSize; - if (commentLength !== expectedCommentLength) { - return callback(new Error("invalid comment length. expected: " + expectedCommentLength + ". found: " + commentLength)); - } - // 22 - Comment - // the encoding is always cp437. - var comment = bufferToString(eocdrBuffer, 22, eocdrBuffer.length, false); - - if (!(entryCount === 0xffff || centralDirectoryOffset === 0xffffffff)) { - return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries)); - } - - // ZIP64 format - - // ZIP64 Zip64 end of central directory locator - var zip64EocdlBuffer = new Buffer(20); - var zip64EocdlOffset = bufferReadStart + i - zip64EocdlBuffer.length; - readAndAssertNoEof(reader, zip64EocdlBuffer, 0, zip64EocdlBuffer.length, zip64EocdlOffset, function(err) { - if (err) return callback(err); - - // 0 - zip64 end of central dir locator signature = 0x07064b50 - if (zip64EocdlBuffer.readUInt32LE(0) !== 0x07064b50) { - return callback(new Error("invalid ZIP64 End of Central Directory Locator signature")); - } - // 4 - number of the disk with the start of the zip64 end of central directory - // 8 - relative offset of the zip64 end of central directory record - var zip64EocdrOffset = readUInt64LE(zip64EocdlBuffer, 8); - // 16 - total number of disks - - // ZIP64 end of central directory record - var zip64EocdrBuffer = new Buffer(56); - readAndAssertNoEof(reader, zip64EocdrBuffer, 0, zip64EocdrBuffer.length, zip64EocdrOffset, function(err) { - if (err) return callback(err); - - // 0 - zip64 end of central dir signature 4 bytes (0x06064b50) - if (zip64EocdrBuffer.readUInt32LE(0) !== 0x06064b50) return callback(new Error("invalid ZIP64 end of central directory record signature")); - // 4 - size of zip64 end of central directory record 8 bytes - // 12 - version made by 2 bytes - // 14 - version needed to extract 2 bytes - // 16 - number of this disk 4 bytes - // 20 - number of the disk with the start of the central directory 4 bytes - // 24 - total number of entries in the central directory on this disk 8 bytes - // 32 - total number of entries in the central directory 8 bytes - entryCount = readUInt64LE(zip64EocdrBuffer, 32); - // 40 - size of the central directory 8 bytes - // 48 - offset of start of central directory with respect to the starting disk number 8 bytes - centralDirectoryOffset = readUInt64LE(zip64EocdrBuffer, 48); - // 56 - zip64 extensible data sector (variable size) - return callback(null, new ZipFile(reader, centralDirectoryOffset, totalSize, entryCount, comment, options.autoClose, options.lazyEntries)); - }); - }); - return; - } - callback(new Error("end of central directory record signature not found")); - }); -} - -util.inherits(ZipFile, EventEmitter); -function ZipFile(reader, centralDirectoryOffset, fileSize, entryCount, comment, autoClose, lazyEntries) { - var self = this; - EventEmitter.call(self); - self.reader = reader; - // forward close events - self.reader.on("error", function(err) { - // error closing the fd - emitError(self, err); - }); - self.reader.once("close", function() { - self.emit("close"); - }); - self.readEntryCursor = centralDirectoryOffset; - self.fileSize = fileSize; - self.entryCount = entryCount; - self.comment = comment; - self.entriesRead = 0; - self.autoClose = !!autoClose; - self.lazyEntries = !!lazyEntries; - self.isOpen = true; - self.emittedError = false; - - if (!self.lazyEntries) self.readEntry(); -} -ZipFile.prototype.close = function() { - if (!this.isOpen) return; - this.isOpen = false; - this.reader.unref(); -}; - -function emitErrorAndAutoClose(self, err) { - if (self.autoClose) self.close(); - emitError(self, err); -} -function emitError(self, err) { - if (self.emittedError) return; - self.emittedError = true; - self.emit("error", err); -} - -ZipFile.prototype.readEntry = function() { - var self = this; - if (self.entryCount === self.entriesRead) { - // done with metadata - setImmediate(function() { - if (self.autoClose) self.close(); - if (self.emittedError) return; - self.emit("end"); - }); - return; - } - if (self.emittedError) return; - var buffer = new Buffer(46); - readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) { - if (err) return emitErrorAndAutoClose(self, err); - if (self.emittedError) return; - var entry = new Entry(); - // 0 - Central directory file header signature - var signature = buffer.readUInt32LE(0); - if (signature !== 0x02014b50) return emitErrorAndAutoClose(self, new Error("invalid central directory file header signature: 0x" + signature.toString(16))); - // 4 - Version made by - entry.versionMadeBy = buffer.readUInt16LE(4); - // 6 - Version needed to extract (minimum) - entry.versionNeededToExtract = buffer.readUInt16LE(6); - // 8 - General purpose bit flag - entry.generalPurposeBitFlag = buffer.readUInt16LE(8); - // 10 - Compression method - entry.compressionMethod = buffer.readUInt16LE(10); - // 12 - File last modification time - entry.lastModFileTime = buffer.readUInt16LE(12); - // 14 - File last modification date - entry.lastModFileDate = buffer.readUInt16LE(14); - // 16 - CRC-32 - entry.crc32 = buffer.readUInt32LE(16); - // 20 - Compressed size - entry.compressedSize = buffer.readUInt32LE(20); - // 24 - Uncompressed size - entry.uncompressedSize = buffer.readUInt32LE(24); - // 28 - File name length (n) - entry.fileNameLength = buffer.readUInt16LE(28); - // 30 - Extra field length (m) - entry.extraFieldLength = buffer.readUInt16LE(30); - // 32 - File comment length (k) - entry.fileCommentLength = buffer.readUInt16LE(32); - // 34 - Disk number where file starts - // 36 - Internal file attributes - entry.internalFileAttributes = buffer.readUInt16LE(36); - // 38 - External file attributes - entry.externalFileAttributes = buffer.readUInt32LE(38); - // 42 - Relative offset of local file header - entry.relativeOffsetOfLocalHeader = buffer.readUInt32LE(42); - - self.readEntryCursor += 46; - - buffer = new Buffer(entry.fileNameLength + entry.extraFieldLength + entry.fileCommentLength); - readAndAssertNoEof(self.reader, buffer, 0, buffer.length, self.readEntryCursor, function(err) { - if (err) return emitErrorAndAutoClose(self, err); - if (self.emittedError) return; - // 46 - File name - var isUtf8 = entry.generalPurposeBitFlag & 0x800 - try { - entry.fileName = bufferToString(buffer, 0, entry.fileNameLength, isUtf8); - } catch (e) { - return emitErrorAndAutoClose(self, e); - } - - // 46+n - Extra field - var fileCommentStart = entry.fileNameLength + entry.extraFieldLength; - var extraFieldBuffer = buffer.slice(entry.fileNameLength, fileCommentStart); - entry.extraFields = []; - var i = 0; - while (i < extraFieldBuffer.length) { - var headerId = extraFieldBuffer.readUInt16LE(i + 0); - var dataSize = extraFieldBuffer.readUInt16LE(i + 2); - var dataStart = i + 4; - var dataEnd = dataStart + dataSize; - var dataBuffer = new Buffer(dataSize); - extraFieldBuffer.copy(dataBuffer, 0, dataStart, dataEnd); - entry.extraFields.push({ - id: headerId, - data: dataBuffer, - }); - i = dataEnd; - } - - // 46+n+m - File comment - try { - entry.fileComment = bufferToString(buffer, fileCommentStart, fileCommentStart + entry.fileCommentLength, isUtf8); - } catch (e) { - return emitErrorAndAutoClose(self, e); - } - - self.readEntryCursor += buffer.length; - self.entriesRead += 1; - - if (entry.uncompressedSize === 0xffffffff || - entry.compressedSize === 0xffffffff || - entry.relativeOffsetOfLocalHeader === 0xffffffff) { - // ZIP64 format - // find the Zip64 Extended Information Extra Field - var zip64EiefBuffer = null; - for (var i = 0; i < entry.extraFields.length; i++) { - var extraField = entry.extraFields[i]; - if (extraField.id === 0x0001) { - zip64EiefBuffer = extraField.data; - break; - } - } - if (zip64EiefBuffer == null) return emitErrorAndAutoClose(self, new Error("expected Zip64 Extended Information Extra Field")); - var index = 0; - // 0 - Original Size 8 bytes - if (entry.uncompressedSize === 0xffffffff) { - if (index + 8 > zip64EiefBuffer.length) return emitErrorAndAutoClose(self, new Error("Zip64 Extended Information Extra Field does not include Original Size")); - entry.uncompressedSize = readUInt64LE(zip64EiefBuffer, index); - index += 8; - } - // 8 - Compressed Size 8 bytes - if (entry.compressedSize === 0xffffffff) { - if (index + 8 > zip64EiefBuffer.length) return emitErrorAndAutoClose(self, new Error("Zip64 Extended Information Extra Field does not include Compressed Size")); - entry.compressedSize = readUInt64LE(zip64EiefBuffer, index); - index += 8; - } - // 16 - Relative Header Offset 8 bytes - if (entry.relativeOffsetOfLocalHeader === 0xffffffff) { - if (index + 8 > zip64EiefBuffer.length) return emitErrorAndAutoClose(self, new Error("Zip64 Extended Information Extra Field does not include Relative Header Offset")); - entry.relativeOffsetOfLocalHeader = readUInt64LE(zip64EiefBuffer, index); - index += 8; - } - // 24 - Disk Start Number 4 bytes - } - - // validate file size - if (entry.compressionMethod === 0) { - if (entry.compressedSize !== entry.uncompressedSize) { - var msg = "compressed/uncompressed size mismatch for stored file: " + entry.compressedSize + " != " + entry.uncompressedSize; - return emitErrorAndAutoClose(self, new Error(msg)); - } - } - - // validate file name - if (entry.fileName.indexOf("\\") !== -1) return emitErrorAndAutoClose(self, new Error("invalid characters in fileName: " + entry.fileName)); - if (/^[a-zA-Z]:/.test(entry.fileName) || /^\//.test(entry.fileName)) return emitErrorAndAutoClose(self, new Error("absolute path: " + entry.fileName)); - if (entry.fileName.split("/").indexOf("..") !== -1) return emitErrorAndAutoClose(self, new Error("invalid relative path: " + entry.fileName)); - self.emit("entry", entry); - - if (!self.lazyEntries) self.readEntry(); - }); - }); -}; - -ZipFile.prototype.openReadStream = function(entry, callback) { - var self = this; - if (!self.isOpen) return callback(new Error("closed")); - // make sure we don't lose the fd before we open the actual read stream - self.reader.ref(); - var buffer = new Buffer(30); - readAndAssertNoEof(self.reader, buffer, 0, buffer.length, entry.relativeOffsetOfLocalHeader, function(err) { - try { - if (err) return callback(err); - // 0 - Local file header signature = 0x04034b50 - var signature = buffer.readUInt32LE(0); - if (signature !== 0x04034b50) return callback(new Error("invalid local file header signature: 0x" + signature.toString(16))); - // all this should be redundant - // 4 - Version needed to extract (minimum) - // 6 - General purpose bit flag - // 8 - Compression method - // 10 - File last modification time - // 12 - File last modification date - // 14 - CRC-32 - // 18 - Compressed size - // 22 - Uncompressed size - // 26 - File name length (n) - var fileNameLength = buffer.readUInt16LE(26); - // 28 - Extra field length (m) - var extraFieldLength = buffer.readUInt16LE(28); - // 30 - File name - // 30+n - Extra field - var localFileHeaderEnd = entry.relativeOffsetOfLocalHeader + buffer.length + fileNameLength + extraFieldLength; - var compressed; - if (entry.compressionMethod === 0) { - // 0 - The file is stored (no compression) - compressed = false; - } else if (entry.compressionMethod === 8) { - // 8 - The file is Deflated - compressed = true; - } else { - return callback(new Error("unsupported compression method: " + entry.compressionMethod)); - } - var fileDataStart = localFileHeaderEnd; - var fileDataEnd = fileDataStart + entry.compressedSize; - if (entry.compressedSize !== 0) { - // bounds check now, because the read streams will probably not complain loud enough. - // since we're dealing with an unsigned offset plus an unsigned size, - // we only have 1 thing to check for. - if (fileDataEnd > self.fileSize) { - return callback(new Error("file data overflows file bounds: " + - fileDataStart + " + " + entry.compressedSize + " > " + self.fileSize)); - } - } - var readStream = self.reader.createReadStream({start: fileDataStart, end: fileDataEnd}); - var endpointStream = readStream; - if (compressed) { - var destroyed = false; - var inflateFilter = zlib.createInflateRaw(); - readStream.on("error", function(err) { - // setImmediate here because errors can be emitted during the first call to pipe() - setImmediate(function() { - if (!destroyed) inflateFilter.emit("error", err); - }); - }); - - var checkerStream = new AssertByteCountStream(entry.uncompressedSize); - inflateFilter.on("error", function(err) { - // forward zlib errors to the client-visible stream - setImmediate(function() { - if (!destroyed) checkerStream.emit("error", err); - }); - }); - checkerStream.destroy = function() { - destroyed = true; - inflateFilter.unpipe(checkerStream); - readStream.unpipe(inflateFilter); - // TODO: the inflateFilter now causes a memory leak. see Issue #27. - readStream.destroy(); - }; - endpointStream = readStream.pipe(inflateFilter).pipe(checkerStream); - } - callback(null, endpointStream); - } finally { - self.reader.unref(); - } - }); -}; - -function Entry() { -} -Entry.prototype.getLastModDate = function() { - return dosDateTimeToDate(this.lastModFileDate, this.lastModFileTime); -}; - -function dosDateTimeToDate(date, time) { - var day = date & 0x1f; // 1-31 - var month = (date >> 5 & 0xf) - 1; // 1-12, 0-11 - var year = (date >> 9 & 0x7f) + 1980; // 0-128, 1980-2108 - - var millisecond = 0; - var second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers) - var minute = time >> 5 & 0x3f; // 0-59 - var hour = time >> 11 & 0x1f; // 0-23 - - return new Date(year, month, day, hour, minute, second, millisecond); -} - -function readAndAssertNoEof(reader, buffer, offset, length, position, callback) { - if (length === 0) { - // fs.read will throw an out-of-bounds error if you try to read 0 bytes from a 0 byte file - return setImmediate(function() { callback(null, new Buffer(0)); }); - } - reader.read(buffer, offset, length, position, function(err, bytesRead) { - if (err) return callback(err); - if (bytesRead < length) return callback(new Error("unexpected EOF")); - callback(); - }); -} - -util.inherits(AssertByteCountStream, Transform); -function AssertByteCountStream(byteCount) { - Transform.call(this); - this.actualByteCount = 0; - this.expectedByteCount = byteCount; -} -AssertByteCountStream.prototype._transform = function(chunk, encoding, cb) { - this.actualByteCount += chunk.length; - if (this.actualByteCount > this.expectedByteCount) { - var msg = "too many bytes in the stream. expected " + this.expectedByteCount + ". got at least " + this.actualByteCount; - return cb(new Error(msg)); - } - cb(null, chunk); -}; -AssertByteCountStream.prototype._flush = function(cb) { - if (this.actualByteCount < this.expectedByteCount) { - var msg = "not enough bytes in the stream. expected " + this.expectedByteCount + ". got only " + this.actualByteCount; - return cb(new Error(msg)); - } - cb(); -}; - -util.inherits(RandomAccessReader, EventEmitter); -function RandomAccessReader() { - EventEmitter.call(this); - this.refCount = 0; -} -RandomAccessReader.prototype.ref = function() { - this.refCount += 1; -}; -RandomAccessReader.prototype.unref = function() { - var self = this; - self.refCount -= 1; - - if (self.refCount > 0) return; - if (self.refCount < 0) throw new Error("invalid unref"); - - self.close(onCloseDone); - - function onCloseDone(err) { - if (err) return self.emit('error', err); - self.emit('close'); - } -}; -RandomAccessReader.prototype.createReadStream = function(options) { - var start = options.start; - var end = options.end; - if (start === end) { - var emptyStream = new PassThrough(); - setImmediate(function() { - emptyStream.end(); - }); - return emptyStream; - } - var stream = this._readStreamForRange(start, end); - - var destroyed = false; - var refUnrefFilter = new RefUnrefFilter(this); - stream.on("error", function(err) { - setImmediate(function() { - if (!destroyed) refUnrefFilter.emit("error", err); - }); - }); - refUnrefFilter.destroy = function() { - stream.unpipe(refUnrefFilter); - refUnrefFilter.unref(); - stream.destroy(); - }; - - var byteCounter = new AssertByteCountStream(end - start); - refUnrefFilter.on("error", function(err) { - setImmediate(function() { - if (!destroyed) byteCounter.emit("error", err); - }); - }); - byteCounter.destroy = function() { - destroyed = true; - refUnrefFilter.unpipe(byteCounter); - refUnrefFilter.destroy(); - }; - - return stream.pipe(refUnrefFilter).pipe(byteCounter); -}; -RandomAccessReader.prototype._readStreamForRange = function(start, end) { - throw new Error("not implemented"); -}; -RandomAccessReader.prototype.read = function(buffer, offset, length, position, callback) { - var readStream = this.createReadStream({start: position, end: position + length}); - var writeStream = new Writable(); - var written = 0; - writeStream._write = function(chunk, encoding, cb) { - chunk.copy(buffer, offset + written, 0, chunk.length); - written += chunk.length; - cb(); - }; - writeStream.on("finish", callback); - readStream.on("error", function(error) { - callback(error); - }); - readStream.pipe(writeStream); -}; -RandomAccessReader.prototype.close = function(callback) { - setImmediate(callback); -}; - -util.inherits(RefUnrefFilter, PassThrough); -function RefUnrefFilter(context) { - PassThrough.call(this); - this.context = context; - this.context.ref(); - this.unreffedYet = false; -} -RefUnrefFilter.prototype._flush = function(cb) { - this.unref(); - cb(); -}; -RefUnrefFilter.prototype.unref = function(cb) { - if (this.unreffedYet) return; - this.unreffedYet = true; - this.context.unref(); -}; - -var cp437 = '\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ '; -function bufferToString(buffer, start, end, isUtf8) { - if (isUtf8) { - return buffer.toString("utf8", start, end); - } else { - var result = ""; - for (var i = start; i < end; i++) { - result += cp437[buffer[i]]; - } - return result; - } -} - -function readUInt64LE(buffer, offset) { - // there is no native function for this, because we can't actually store 64-bit integers precisely. - // after 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore. - // but since 53 bits is a whole lot more than 32 bits, we do our best anyway. - var lower32 = buffer.readUInt32LE(offset); - var upper32 = buffer.readUInt32LE(offset + 4); - // we can't use bitshifting here, because JavaScript bitshifting only works on 32-bit integers. - return upper32 * 0x100000000 + lower32; - // as long as we're bounds checking the result of this function against the total file size, - // we'll catch any overflow errors, because we already made sure the total file size was within reason. -} - -function defaultCallback(err) { - if (err) throw err; -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/package.json deleted file mode 100644 index e2551dc3..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yauzl/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "yauzl@^2.2.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip" - ] - ], - "_from": "yauzl@>=2.2.1 <3.0.0", - "_id": "yauzl@2.4.1", - "_inCache": true, - "_installable": true, - "_location": "/yauzl", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "thejoshwolfe@gmail.com", - "name": "thejoshwolfe" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "yauzl", - "raw": "yauzl@^2.2.1", - "rawSpec": "^2.2.1", - "scope": null, - "spec": ">=2.2.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "_shasum": "9528f442dab1b2284e58b4379bb194e22e0c4005", - "_shrinkwrap": null, - "_spec": "yauzl@^2.2.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip", - "author": { - "email": "thejoshwolfe@gmail.com", - "name": "Josh Wolfe" - }, - "bugs": { - "url": "https://github.com/thejoshwolfe/yauzl/issues" - }, - "dependencies": { - "fd-slicer": "~1.0.1" - }, - "description": "yet another unzip library for node", - "devDependencies": { - "bl": "~1.0.0", - "istanbul": "~0.3.4", - "pend": "~1.2.0" - }, - "directories": {}, - "dist": { - "shasum": "9528f442dab1b2284e58b4379bb194e22e0c4005", - "tarball": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz" - }, - "gitHead": "d528c3ad49efd27986ee661159fade32617cedb6", - "homepage": "https://github.com/thejoshwolfe/yauzl", - "keywords": [ - "unzip", - "zip", - "stream", - "archive", - "file" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "thejoshwolfe@gmail.com", - "name": "thejoshwolfe" - }, - { - "email": "superjoe30@gmail.com", - "name": "superjoe" - } - ], - "name": "yauzl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/thejoshwolfe/yauzl.git" - }, - "scripts": { - "test": "node test/test.js", - "test-cov": "istanbul cover test/test.js", - "test-travis": "istanbul cover --report lcovonly test/test.js" - }, - "version": "2.4.1" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/.npmignore b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/.npmignore deleted file mode 100644 index 65e3ba2e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test/ diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/LICENSE b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/LICENSE deleted file mode 100644 index 37538d4d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Josh Wolfe - -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/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/README.md b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/README.md deleted file mode 100644 index 2138c380..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/README.md +++ /dev/null @@ -1,291 +0,0 @@ -# yazl - -yet another zip library for node. For unzipping, see -[yauzl](https://github.com/thejoshwolfe/yauzl). - -Design principles: - - * Don't block the JavaScript thread. - Use and provide async APIs. - * Keep memory usage under control. - Don't attempt to buffer entire files in RAM at once. - * Prefer to open input files one at a time than all at once. - This is slightly suboptimal for time performance, - but avoids OS-imposed limits on the number of simultaneously open file handles. - -## Usage - -```js -var yazl = require("yazl"); - -var zipfile = new yazl.ZipFile(); -zipfile.addFile("file1.txt", "file1.txt"); -// (add only files, not directories) -zipfile.addFile("path/to/file.txt", "path/in/zipfile.txt"); -// pipe() can be called any time after the constructor -zipfile.outputStream.pipe(fs.createWriteStream("output.zip")).on("close", function() { - console.log("done"); -}); -// alternate apis for adding files: -zipfile.addReadStream(process.stdin, "stdin.txt", { - mtime: new Date(), - mode: 0100664, // -rw-rw-r-- -}); -zipfile.addBuffer(new Buffer("hello"), "hello.txt", { - mtime: new Date(), - mode: 0100664, // -rw-rw-r-- -}); -// call end() after all the files have been added -zipfile.end(); -``` - -## API - -### Class: ZipFile - -#### new ZipFile() - -No parameters. -Nothing can go wrong. - -#### addFile(realPath, metadataPath, [options]) - -Adds a file from the file system at `realPath` into the zipfile as `metadataPath`. -Typically `metadataPath` would be calculated as `path.relative(root, realPath)`. -Unzip programs would extract the file from the zipfile as `metadataPath`. -`realPath` is not stored in the zipfile. - -A valid `metadataPath` must not be blank. -If a `metadataPath` contains `"\\"` characters, they will be replaced by `"/"` characters. -After this substitution, a valid `metadataPath` must not start with `"/"` or `/[A-Za-z]:\//`, -and must not contain `".."` path segments. -File paths must not end with `"/"`. - -`options` may be omitted or null and has the following structure and default values: - -```js -{ - mtime: stats.mtime, - mode: stats.mode, - compress: true, -} -``` - -Use `options.mtime` and/or `options.mode` to override the values -that would normally be obtained by the `fs.Stats` for the `realPath`. -The mode is the unix permission bits and file type. -The mtime and mode are stored in the zip file in the fields "last mod file time", -"last mod file date", and "external file attributes". -yazl does not store group and user ids in the zip file. - -Internally, `fs.stat()` is called immediately in the `addFile` function, -and `fs.createReadStream()` is used later when the file data is actually required. -Throughout adding and encoding `n` files with `addFile()`, -the number of simultaneous open files is `O(1)`, probably just 1 at a time. - -#### addReadStream(readStream, metadataPath, [options]) - -Adds a file to the zip file whose content is read from `readStream`. -See `addFile()` for info about the `metadataPath` parameter. -`options` may be omitted or null and has the following structure and default values: - -```js -{ - mtime: new Date(), - mode: 0100664, - compress: true, - size: 12345, // example value -} -``` - -See `addFile()` for the meaning of `mtime` and `mode`. -If `size` is given, it will be checked against the actual number of bytes in the `readStream`, -and an error will be emitted if there is a mismatch. - -Note that yazl will `.pipe()` data from `readStream`, so be careful using `.on('data')`. -In certain versions of node, `.on('data')` makes `.pipe()` behave incorrectly. - -#### addBuffer(buffer, metadataPath, [options]) - -Adds a file to the zip file whose content is `buffer`. -See `addFile()` for info about the `metadataPath` parameter. -`options` may be omitted or null and has the following structure and default values: - -```js -{ - mtime: new Date(), - mode: 0100664, - compress: true, -} -``` - -See `addFile()` for the meaning of `mtime` and `mode`. - -This method has the unique property that General Purpose Bit `3` will not be used in the Local File Header. -This doesn't matter for unzip implementations that conform to the Zip File Spec. -However, 7-Zip 9.20 has a known bug where General Purpose Bit `3` is declared an unsupported compression method -(note that it really has nothing to do with the compression method.). -See [issue #11](https://github.com/thejoshwolfe/yazl/issues/11). -If you would like to create zip files that 7-Zip 9.20 can understand, -you must use `addBuffer()` instead of `addFile()` or `addReadStream()` for all entries in the zip file -(and `addEmptyDirectory()` is fine too). - -#### addEmptyDirectory(metadataPath, [options]) - -Adds an entry to the zip file that indicates a directory should be created, -even if no other items in the zip file are contained in the directory. -This method is only required if the zip file is intended to contain an empty directory. - -See `addFile()` for info about the `metadataPath` parameter. -If `metadataPath` does not end with a `"/"`, a `"/"` will be appended. - -`options` may be omitted or null and has the following structure and default values: - -```js -{ - mtime: new Date(), - mode: 040775, -} -``` - -See `addFile()` for the meaning of `mtime` and `mode`. - -#### end([finalSizeCallback]) - -Indicates that no more files will be added via `addFile()`, `addReadStream()`, or `addBuffer()`. -Some time after calling this function, `outputStream` will be ended. - -If specified and non-null, `finalSizeCallback` is given the parameters `(finalSize)` -sometime during or after the call to `end()`. -`finalSize` is of type `Number` and can either be `-1` -or the guaranteed eventual size in bytes of the output data that can be read from `outputStream`. - -If `finalSize` is `-1`, it means means the final size is too hard to guess before processing the input file data. -This will happen if and only if the `compress` option is `true` on any call to `addFile()`, `addReadStream()`, or `addBuffer()`, -or if `addReadStream()` is called and the optional `size` option is not given. -In other words, clients should know whether they're going to get a `-1` or a real value -by looking at how they are calling this function. - -The call to `finalSizeCallback` might be delayed if yazl is still waiting for `fs.Stats` for an `addFile()` entry. -If `addFile()` was never called, `finalSizeCallback` will be called during the call to `end()`. -It is not required to start piping data from `outputStream` before `finalSizeCallback` is called. -`finalSizeCallback` will be called only once, and only if this is the first call to `end()`. - -#### outputStream - -A readable stream that will produce the contents of the zip file. -It is typical to pipe this stream to a writable stream created from `fs.createWriteStream()`. - -Internally, large amounts of file data are piped to `outputStream` using `pipe()`, -which means throttling happens appropriately when this stream is piped to a slow destination. - -Data becomes available in this stream soon after calling one of `addFile()`, `addReadStream()`, or `addBuffer()`. -Clients can call `pipe()` on this stream at any time, -such as immediately after getting a new `ZipFile` instance, or long after calling `end()`. - -As a reminder, be careful using both `.on('data')` and `.pipe()` with this stream. -In certain versions of node, you cannot use both `.on('data')` and `.pipe()` successfully. - -### dateToDosDateTime(jsDate) - -`jsDate` is a `Date` instance. -Returns `{date: date, time: time}`, where `date` and `time` are unsigned 16-bit integers. - -## Output Structure - -The Zip File Spec leaves a lot of flexibility up to the zip file creator. -This section explains and justifies yazl's interpretation and decisions regarding this flexibility. - -This section is probably not useful to yazl clients, -but may be interesting to unzip implementors and zip file enthusiasts. - -### Disk Numbers - -All values related to disk numbers are `0`, -because yazl has no multi-disk archive support. - -### Version Made By - -Always `0x031e`. -This is the value reported by a Linux build of Info-Zip. -Instead of experimenting with different values of this field -to see how different unzip clients would behave, -yazl mimics Info-Zip, which should work everywhere. - -Note that the top byte means "UNIX" -and has implications in the External File Attributes. - -### Version Needed to Extract - -Always `0x0014`. -Without this value, Info-Zip, and possibly other unzip implementations, -refuse to acknowledge General Purpose Bit `8`, which enables utf8 filename encoding. - -### General Purpose Bit Flag - -Bit `8` is always set. -Filenames are always encoded in utf8, even if the result is indistinguishable from ascii. - -Bit `3` is usually set in the Local File Header. -To support both a streaming input and streaming output api, -it is impossible to know the crc32 before processing the file data. -When bit `3` is set, file Descriptors are given after each file data with this information, as per the spec. -But remember a complete metadata listing is still always available in the central directory record, -so if unzip implementations are relying on that, like they should, -none of this paragraph will matter anyway. -Even so, some popular unzip implementations do not follow the spec. -Mac's Archive Utility requires File Descriptors to include the optional signature, -so yazl includes the optional file descriptor signature. -When bit `3` is not used, Mac's Archive Utility requires there to be no file descriptor, so yazl skips it in that case. -Additionally, 7-Zip 9.20 does not seem to support bit `3` at all -(see [issue #11](https://github.com/thejoshwolfe/yazl/issues/11)). - -All other bits are unset. - -### Internal File Attributes - -Always `0`. -The "apparently an ASCII or text file" bit is always unset meaning "apparently binary". -This kind of determination is outside the scope of yazl, -and is probably not significant in any modern unzip implementation. - -### External File Attributes - -Always `stats.mode << 16`. -This is apparently the convention for "version made by" = `0x03xx` (UNIX). - -Note that for directory entries (see `addEmptyDirectory()`), -it is conventional to use the lower 8 bits for the MS-DOS directory attribute byte. -However, the spec says this is only required if the Version Made By is DOS, -so this library does not do that. - -### Directory Entries - -When adding a `metadataPath` such as `"parent/file.txt"`, yazl does not add a directory entry for `"parent/"`, -because file entries imply the need for their parent directories. -Unzip clients seem to respect this style of pathing, -and the zip file spec does not specify what is standard in this regard. - -In order to create empty directories, use `addEmptyDirectory()`. - -## Change History - - * 2.3.0 - * `metadataPath` can have `\` characters now; they will be replaced with `/`. [issue #18](https://github.com/thejoshwolfe/yazl/issues/18) - * 2.2.2 - * Fix 7-Zip compatibility issue. [pull request #17](https://github.com/thejoshwolfe/yazl/pull/17) - * 2.2.1 - * Fix Mac Archive Utility compatibility issue. [issue #14](https://github.com/thejoshwolfe/yazl/issues/14) - * 2.2.0 - * Avoid using general purpose bit 3 for `addBuffer()` calls. [issue #13](https://github.com/thejoshwolfe/yazl/issues/13) - * 2.1.3 - * Fix bug when only addBuffer() and end() are called. [issue #12](https://github.com/thejoshwolfe/yazl/issues/12) - * 2.1.2 - * Fixed typo in parameter validation. [pull request #10](https://github.com/thejoshwolfe/yazl/pull/10) - * 2.1.1 - * Fixed stack overflow when using addBuffer() in certain ways. [issue #9](https://github.com/thejoshwolfe/yazl/issues/9) - * 2.1.0 - * Added `addEmptyDirectory()`. - * `options` is now optional for `addReadStream()` and `addBuffer()`. - * 2.0.0 - * Initial release. diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/index.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/index.js deleted file mode 100644 index 27931360..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/index.js +++ /dev/null @@ -1,418 +0,0 @@ -var fs = require("fs"); -var Transform = require("stream").Transform; -var PassThrough = require("stream").PassThrough; -var zlib = require("zlib"); -var util = require("util"); -var EventEmitter = require("events").EventEmitter; -var crc32 = require("buffer-crc32"); - -exports.ZipFile = ZipFile; -exports.dateToDosDateTime = dateToDosDateTime; - -util.inherits(ZipFile, EventEmitter); -function ZipFile() { - this.outputStream = new PassThrough(); - this.entries = []; - this.outputStreamCursor = 0; - this.ended = false; // .end() sets this - this.allDone = false; // set when we've written the last bytes -} - -ZipFile.prototype.addFile = function(realPath, metadataPath, options) { - var self = this; - metadataPath = validateMetadataPath(metadataPath, false); - if (options == null) options = {}; - - var entry = new Entry(metadataPath, false, options); - self.entries.push(entry); - fs.stat(realPath, function(err, stats) { - if (err) return self.emit("error", err); - if (!stats.isFile()) return self.emit("error", new Error("not a file: " + realPath)); - entry.uncompressedSize = stats.size; - if (options.mtime == null) entry.setLastModDate(stats.mtime); - if (options.mode == null) entry.setFileAttributesMode(stats.mode); - entry.setFileDataPumpFunction(function() { - var readStream = fs.createReadStream(realPath); - entry.state = Entry.FILE_DATA_IN_PROGRESS; - readStream.on("error", function(err) { - self.emit("error", err); - }); - pumpFileDataReadStream(self, entry, readStream); - }); - pumpEntries(self); - }); -}; - -ZipFile.prototype.addReadStream = function(readStream, metadataPath, options) { - var self = this; - metadataPath = validateMetadataPath(metadataPath, false); - if (options == null) options = {}; - var entry = new Entry(metadataPath, false, options); - self.entries.push(entry); - entry.setFileDataPumpFunction(function() { - entry.state = Entry.FILE_DATA_IN_PROGRESS; - pumpFileDataReadStream(self, entry, readStream); - }); - pumpEntries(self); -}; - -ZipFile.prototype.addBuffer = function(buffer, metadataPath, options) { - var self = this; - metadataPath = validateMetadataPath(metadataPath, false); - if (options == null) options = {}; - if (options.size != null) throw new Error("options.size not allowed"); - var entry = new Entry(metadataPath, false, options); - entry.uncompressedSize = buffer.length; - entry.crc32 = crc32.unsigned(buffer); - entry.crcAndFileSizeKnown = true; - self.entries.push(entry); - if (!entry.compress) { - setCompressedBuffer(buffer); - } else { - zlib.deflateRaw(buffer, function(err, compressedBuffer) { - setCompressedBuffer(compressedBuffer); - }); - } - function setCompressedBuffer(compressedBuffer) { - entry.compressedSize = compressedBuffer.length; - entry.setFileDataPumpFunction(function() { - writeToOutputStream(self, compressedBuffer); - writeToOutputStream(self, entry.getFileDescriptor()); - entry.state = Entry.FILE_DATA_DONE; - - // don't call pumpEntries() recursively. - // (also, don't call process.nextTick recursively.) - setImmediate(function() { - pumpEntries(self); - }); - }); - pumpEntries(self); - } -}; - -ZipFile.prototype.addEmptyDirectory = function(metadataPath, options) { - var self = this; - metadataPath = validateMetadataPath(metadataPath, true); - if (options == null) options = {}; - if (options.size != null) throw new Error("options.size not allowed"); - if (options.compress != null) throw new Error("options.compress not allowed"); - var entry = new Entry(metadataPath, true, options); - self.entries.push(entry); - entry.setFileDataPumpFunction(function() { - writeToOutputStream(self, entry.getFileDescriptor()); - entry.state = Entry.FILE_DATA_DONE; - pumpEntries(self); - }); - pumpEntries(self); -}; - -ZipFile.prototype.end = function(finalSizeCallback) { - if (this.ended) return; - this.ended = true; - this.finalSizeCallback = finalSizeCallback; - pumpEntries(this); -}; - -function writeToOutputStream(self, buffer) { - self.outputStream.write(buffer); - self.outputStreamCursor += buffer.length; -} - -function pumpFileDataReadStream(self, entry, readStream) { - var crc32Watcher = new Crc32Watcher(); - var uncompressedSizeCounter = new ByteCounter(); - var compressor = entry.compress ? new zlib.DeflateRaw() : new PassThrough(); - var compressedSizeCounter = new ByteCounter(); - readStream.pipe(crc32Watcher) - .pipe(uncompressedSizeCounter) - .pipe(compressor) - .pipe(compressedSizeCounter) - .pipe(self.outputStream, {end: false}); - compressedSizeCounter.on("end", function() { - entry.crc32 = crc32Watcher.crc32; - if (entry.uncompressedSize == null) { - entry.uncompressedSize = uncompressedSizeCounter.byteCount; - } else { - if (entry.uncompressedSize !== uncompressedSizeCounter.byteCount) return self.emit("error", new Error("file data stream has unexpected number of bytes")); - } - entry.compressedSize = compressedSizeCounter.byteCount; - self.outputStreamCursor += entry.compressedSize; - writeToOutputStream(self, entry.getFileDescriptor()); - entry.state = Entry.FILE_DATA_DONE; - pumpEntries(self); - }); -} - -function pumpEntries(self) { - if (self.allDone) return; - // first check if finalSize is finally known - if (self.ended && self.finalSizeCallback != null) { - var finalSize = calculateFinalSize(self); - if (finalSize != null) { - // we have an answer - self.finalSizeCallback(finalSize); - self.finalSizeCallback = null; - } - } - - // pump entries - var entry = getFirstNotDoneEntry(); - function getFirstNotDoneEntry() { - for (var i = 0; i < self.entries.length; i++) { - var entry = self.entries[i]; - if (entry.state < Entry.FILE_DATA_DONE) return entry; - } - return null; - } - if (entry != null) { - // this entry is not done yet - if (entry.state < Entry.READY_TO_PUMP_FILE_DATA) return; // input file not open yet - if (entry.state === Entry.FILE_DATA_IN_PROGRESS) return; // we'll get there - // start with local file header - entry.relativeOffsetOfLocalHeader = self.outputStreamCursor; - var localFileHeader = entry.getLocalFileHeader(); - writeToOutputStream(self, localFileHeader); - entry.doFileDataPump(); - } else { - // all cought up on writing entries - if (self.ended) { - // head for the exit - self.offsetOfStartOfCentralDirectory = self.outputStreamCursor; - self.entries.forEach(function(entry) { - var centralDirectoryRecord = entry.getCentralDirectoryRecord(); - writeToOutputStream(self, centralDirectoryRecord); - }); - writeToOutputStream(self, getEndOfCentralDirectoryRecord(self)); - self.outputStream.end(); - self.allDone = true; - } - } -} - -function calculateFinalSize(self) { - var result = 0; - for (var i = 0; i < self.entries.length; i++) { - var entry = self.entries[i]; - // compression is too hard to predict - if (entry.compress) return -1; - if (entry.state >= Entry.READY_TO_PUMP_FILE_DATA) { - // if addReadStream was called without providing the size, we can't predict the final size - if (entry.uncompressedSize == null) return -1; - } else { - // if we're still waiting for fs.stat, we might learn the size someday - if (entry.uncompressedSize == null) return null; - } - result += LOCAL_FILE_HEADER_FIXED_SIZE + entry.utf8FileName.length + - entry.uncompressedSize + - CENTRAL_DIRECTORY_RECORD_FIXED_SIZE + entry.utf8FileName.length; - if (!entry.crcAndFileSizeKnown) result += FILE_DESCRIPTOR_SIZE; - } - result += END_OF_CENTRAL_DIRECTORY_RECORD_SIZE; - return result; -} - -var END_OF_CENTRAL_DIRECTORY_RECORD_SIZE = 22; -function getEndOfCentralDirectoryRecord(self) { - var buffer = new Buffer(END_OF_CENTRAL_DIRECTORY_RECORD_SIZE); - buffer.writeUInt32LE(0x06054b50, 0); // end of central dir signature 4 bytes (0x06054b50) - buffer.writeUInt16LE(0, 4); // number of this disk 2 bytes - buffer.writeUInt16LE(0, 6); // number of the disk with the start of the central directory 2 bytes - buffer.writeUInt16LE(self.entries.length, 8); // total number of entries in the central directory on this disk 2 bytes - buffer.writeUInt16LE(self.entries.length, 10); // total number of entries in the central directory 2 bytes - buffer.writeUInt32LE(self.outputStreamCursor - self.offsetOfStartOfCentralDirectory, 12); // size of the central directory 4 bytes - buffer.writeUInt32LE(self.offsetOfStartOfCentralDirectory, 16); // offset of start of central directory with respect to the starting disk number 4 bytes - buffer.writeUInt16LE(0, 20); // .ZIP file comment length 2 bytes - /* no comment */ // .ZIP file comment (variable size) - return buffer; -} - -function validateMetadataPath(metadataPath, isDirectory) { - if (metadataPath === "") throw new Error("empty metadataPath"); - metadataPath = metadataPath.replace(/\\/g, "/"); - if (/^[a-zA-Z]:/.test(metadataPath) || /^\//.test(metadataPath)) throw new Error("absolute path: " + metadataPath); - if (metadataPath.split("/").indexOf("..") !== -1) throw new Error("invalid relative path: " + metadataPath); - var looksLikeDirectory = /\/$/.test(metadataPath); - if (isDirectory) { - // append a trailing '/' if necessary. - if (!looksLikeDirectory) metadataPath += "/"; - } else { - if (looksLikeDirectory) throw new Error("file path cannot end with '/': " + metadataPath); - } - return metadataPath; -} - -// this class is not part of the public API -function Entry(metadataPath, isDirectory, options) { - this.utf8FileName = new Buffer(metadataPath); - if (this.utf8FileName.length > 0xffff) throw new Error("utf8 file name too long. " + utf8FileName.length + " > " + 0xffff); - this.isDirectory = isDirectory; - this.state = Entry.WAITING_FOR_METADATA; - this.setLastModDate(options.mtime != null ? options.mtime : new Date()); - if (options.mode != null) { - this.setFileAttributesMode(options.mode); - } else { - this.setFileAttributesMode(isDirectory ? 040775 : 0100664); - } - if (isDirectory) { - this.crcAndFileSizeKnown = true; - this.crc32 = 0; - this.uncompressedSize = 0; - this.compressedSize = 0; - } else { - // unknown so far - this.crcAndFileSizeKnown = false; - this.crc32 = null; - this.uncompressedSize = null; - this.compressedSize = null; - if (options.size != null) this.uncompressedSize = options.size; - } - if (isDirectory) { - this.compress = false; - } else { - this.compress = true; // default - if (options.compress != null) this.compress = !!options.compress; - } -} -Entry.WAITING_FOR_METADATA = 0; -Entry.READY_TO_PUMP_FILE_DATA = 1; -Entry.FILE_DATA_IN_PROGRESS = 2; -Entry.FILE_DATA_DONE = 3; -Entry.prototype.setLastModDate = function(date) { - var dosDateTime = dateToDosDateTime(date); - this.lastModFileTime = dosDateTime.time; - this.lastModFileDate = dosDateTime.date; -}; -Entry.prototype.setFileAttributesMode = function(mode) { - if ((mode & 0xffff) !== mode) throw new Error("invalid mode. expected: 0 <= " + mode + " <= " + 0xffff); - // http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute/14727#14727 - this.externalFileAttributes = (mode << 16) >>> 0; -}; -// doFileDataPump() should not call pumpEntries() directly. see issue #9. -Entry.prototype.setFileDataPumpFunction = function(doFileDataPump) { - this.doFileDataPump = doFileDataPump; - this.state = Entry.READY_TO_PUMP_FILE_DATA; -}; -var LOCAL_FILE_HEADER_FIXED_SIZE = 30; -// this version enables utf8 filename encoding -var VERSION_NEEDED_TO_EXTRACT = 0x0014; -// this is the "version made by" reported by linux info-zip. -var VERSION_MADE_BY_INFO_ZIP = 0x031e; -var FILE_NAME_IS_UTF8 = 1 << 11; -var UNKNOWN_CRC32_AND_FILE_SIZES = 1 << 3; -Entry.prototype.getLocalFileHeader = function() { - var crc32 = 0; - var compressedSize = 0; - var uncompressedSize = 0; - if (this.crcAndFileSizeKnown) { - crc32 = this.crc32; - compressedSize = this.compressedSize; - uncompressedSize = this.uncompressedSize; - } - - var fixedSizeStuff = new Buffer(LOCAL_FILE_HEADER_FIXED_SIZE); - var generalPurposeBitFlag = FILE_NAME_IS_UTF8; - if (!this.crcAndFileSizeKnown) generalPurposeBitFlag |= UNKNOWN_CRC32_AND_FILE_SIZES; - - fixedSizeStuff.writeUInt32LE(0x04034b50, 0); // local file header signature 4 bytes (0x04034b50) - fixedSizeStuff.writeUInt16LE(VERSION_NEEDED_TO_EXTRACT, 4); // version needed to extract 2 bytes - fixedSizeStuff.writeUInt16LE(generalPurposeBitFlag, 6); // general purpose bit flag 2 bytes - fixedSizeStuff.writeUInt16LE(this.getCompressionMethod(), 8); // compression method 2 bytes - fixedSizeStuff.writeUInt16LE(this.lastModFileTime, 10); // last mod file time 2 bytes - fixedSizeStuff.writeUInt16LE(this.lastModFileDate, 12); // last mod file date 2 bytes - fixedSizeStuff.writeUInt32LE(crc32, 14); // crc-32 4 bytes - fixedSizeStuff.writeUInt32LE(compressedSize, 18); // compressed size 4 bytes - fixedSizeStuff.writeUInt32LE(uncompressedSize, 22); // uncompressed size 4 bytes - fixedSizeStuff.writeUInt16LE(this.utf8FileName.length, 26); // file name length 2 bytes - fixedSizeStuff.writeUInt16LE(0, 28); // extra field length 2 bytes - return Buffer.concat([ - fixedSizeStuff, - this.utf8FileName, // file name (variable size) - /* no extra fields */ // extra field (variable size) - ]); -}; -var FILE_DESCRIPTOR_SIZE = 16 -Entry.prototype.getFileDescriptor = function() { - if (this.crcAndFileSizeKnown) { - // MAC's Archive Utility requires this not be present unless we set general purpose bit 3 - return new Buffer(0); - } - var buffer = new Buffer(FILE_DESCRIPTOR_SIZE); - buffer.writeUInt32LE(0x08074b50, 0); // optional signature (required according to Archive Utility) - buffer.writeUInt32LE(this.crc32, 4); // crc-32 4 bytes - buffer.writeUInt32LE(this.compressedSize, 8); // compressed size 4 bytes - buffer.writeUInt32LE(this.uncompressedSize, 12); // uncompressed size 4 bytes - return buffer; -}; -var CENTRAL_DIRECTORY_RECORD_FIXED_SIZE = 46; -Entry.prototype.getCentralDirectoryRecord = function() { - var fixedSizeStuff = new Buffer(CENTRAL_DIRECTORY_RECORD_FIXED_SIZE); - var generalPurposeBitFlag = FILE_NAME_IS_UTF8; - if (!this.crcAndFileSizeKnown) generalPurposeBitFlag |= UNKNOWN_CRC32_AND_FILE_SIZES; - - fixedSizeStuff.writeUInt32LE(0x02014b50, 0); // central file header signature 4 bytes (0x02014b50) - fixedSizeStuff.writeUInt16LE(VERSION_MADE_BY_INFO_ZIP, 4); // version made by 2 bytes - fixedSizeStuff.writeUInt16LE(VERSION_NEEDED_TO_EXTRACT, 6); // version needed to extract 2 bytes - fixedSizeStuff.writeUInt16LE(generalPurposeBitFlag, 8); // general purpose bit flag 2 bytes - fixedSizeStuff.writeUInt16LE(this.getCompressionMethod(), 10); // compression method 2 bytes - fixedSizeStuff.writeUInt16LE(this.lastModFileTime, 12); // last mod file time 2 bytes - fixedSizeStuff.writeUInt16LE(this.lastModFileDate, 14); // last mod file date 2 bytes - fixedSizeStuff.writeUInt32LE(this.crc32, 16); // crc-32 4 bytes - fixedSizeStuff.writeUInt32LE(this.compressedSize, 20); // compressed size 4 bytes - fixedSizeStuff.writeUInt32LE(this.uncompressedSize, 24); // uncompressed size 4 bytes - fixedSizeStuff.writeUInt16LE(this.utf8FileName.length, 28); // file name length 2 bytes - fixedSizeStuff.writeUInt16LE(0, 30); // extra field length 2 bytes - fixedSizeStuff.writeUInt16LE(0, 32); // file comment length 2 bytes - fixedSizeStuff.writeUInt16LE(0, 34); // disk number start 2 bytes - fixedSizeStuff.writeUInt16LE(0, 36); // internal file attributes 2 bytes - fixedSizeStuff.writeUInt32LE(this.externalFileAttributes, 38); // external file attributes 4 bytes - fixedSizeStuff.writeUInt32LE(this.relativeOffsetOfLocalHeader, 42); // relative offset of local header 4 bytes - return Buffer.concat([ - fixedSizeStuff, - this.utf8FileName, // file name (variable size) - /* no extra fields */ // extra field (variable size) - /* empty comment */ // file comment (variable size) - ]); -}; -Entry.prototype.getCompressionMethod = function() { - var NO_COMPRESSION = 0; - var DEFLATE_COMPRESSION = 8; - return this.compress ? DEFLATE_COMPRESSION : NO_COMPRESSION; -}; - -function dateToDosDateTime(jsDate) { - var date = 0; - date |= jsDate.getDate() & 0x1f; // 1-31 - date |= ((jsDate.getMonth() + 1) & 0xf) << 5; // 0-11, 1-12 - date |= ((jsDate.getFullYear() - 1980) & 0x7f) << 9; // 0-128, 1980-2108 - - var time = 0; - time |= Math.floor(jsDate.getSeconds() / 2); // 0-59, 0-29 (lose odd numbers) - time |= (jsDate.getMinutes() & 0x3f) << 5; // 0-59 - time |= (jsDate.getHours() & 0x1f) << 11; // 0-23 - - return {date: date, time: time}; -} - -function defaultCallback(err) { - if (err) throw err; -} - -util.inherits(ByteCounter, Transform); -function ByteCounter(options) { - Transform.call(this, options); - this.byteCount = 0; -} -ByteCounter.prototype._transform = function(chunk, encoding, cb) { - this.byteCount += chunk.length; - cb(null, chunk); -}; - -util.inherits(Crc32Watcher, Transform); -function Crc32Watcher(options) { - Transform.call(this, options); - this.crc32 = 0; -} -Crc32Watcher.prototype._transform = function(chunk, encoding, cb) { - this.crc32 = crc32.unsigned(chunk, this.crc32); - cb(null, chunk); -}; diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/package.json deleted file mode 100644 index 41acb234..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/node_modules/yazl/package.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_args": [ - [ - "yazl@^2.2.1", - "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip" - ] - ], - "_from": "yazl@>=2.2.1 <3.0.0", - "_id": "yazl@2.3.0", - "_inCache": true, - "_installable": true, - "_location": "/yazl", - "_nodeVersion": "0.12.7", - "_npmUser": { - "email": "thejoshwolfe@gmail.com", - "name": "thejoshwolfe" - }, - "_npmVersion": "2.11.3", - "_phantomChildren": {}, - "_requested": { - "name": "yazl", - "raw": "yazl@^2.2.1", - "rawSpec": "^2.2.1", - "scope": null, - "spec": ">=2.2.1 <3.0.0", - "type": "range" - }, - "_requiredBy": [ - "/gulp-vinyl-zip" - ], - "_resolved": "https://registry.npmjs.org/yazl/-/yazl-2.3.0.tgz", - "_shasum": "63a6f327b00d09ecdca347af4f3d422fcbca3557", - "_shrinkwrap": null, - "_spec": "yazl@^2.2.1", - "_where": "/Users/sid/Desktop/code/RustyCode/node_modules/gulp-vinyl-zip", - "author": { - "email": "thejoshwolfe@gmail.com", - "name": "Josh Wolfe" - }, - "bugs": { - "url": "https://github.com/thejoshwolfe/yazl/issues" - }, - "dependencies": { - "buffer-crc32": "~0.2.3" - }, - "description": "yet another zip library for node", - "devDependencies": { - "bl": "~0.9.3", - "yauzl": "~2.3.1" - }, - "directories": {}, - "dist": { - "shasum": "63a6f327b00d09ecdca347af4f3d422fcbca3557", - "tarball": "https://registry.npmjs.org/yazl/-/yazl-2.3.0.tgz" - }, - "gitHead": "6e5e4fb23d41c55128ad676f91f79a12f6e0ac3f", - "homepage": "https://github.com/thejoshwolfe/yazl", - "keywords": [ - "zip", - "stream", - "archive", - "file" - ], - "license": "MIT", - "main": "index.js", - "maintainers": [ - { - "email": "thejoshwolfe@gmail.com", - "name": "thejoshwolfe" - } - ], - "name": "yazl", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/thejoshwolfe/yazl.git" - }, - "scripts": { - "test": "node test/test.js" - }, - "version": "2.3.0" -} diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/extension.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/extension.js deleted file mode 100644 index ff6a8b67..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/extension.js +++ /dev/null @@ -1,139 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var formatService_1 = require('./services/formatService'); -var filterService_1 = require('./services/filterService'); -var statusBarService_1 = require('./services/statusBarService'); -var suggestService_1 = require('./services/suggestService'); -var pathService_1 = require('./services/pathService'); -var commandService_1 = require('./services/commandService'); -var workspaceSymbolService_1 = require('./services/workspaceSymbolService'); -var documentSymbolService_1 = require('./services/documentSymbolService'); -function activate(ctx) { - // Set path to Rust language sources - var rustSrcPath = pathService_1.default.getRustLangSrcPath(); - if (rustSrcPath) { - process.env['RUST_SRC_PATH'] = rustSrcPath; - } - // Initialize suggestion service - var suggestService = new suggestService_1.default(); - ctx.subscriptions.push(suggestService.start()); - // Initialize format service - var formatService = new formatService_1.default(); - ctx.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider(filterService_1.default.getRustModeFilter(), formatService)); - // Initialize symbol provider services - ctx.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(new workspaceSymbolService_1.default())); - ctx.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(filterService_1.default.getRustModeFilter(), new documentSymbolService_1.default())); - // Initialize status bar service - ctx.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(statusBarService_1.default.toggleStatus.bind(statusBarService_1.default))); - var alreadyAppliedFormatting = new WeakSet(); - ctx.subscriptions.push(vscode.workspace.onDidSaveTextDocument(function (document) { - if (document.languageId !== 'rust' || !document.fileName.endsWith('.rs') || alreadyAppliedFormatting.has(document)) { - return; - } - var rustConfig = vscode.workspace.getConfiguration('rust'); - var textEditor = vscode.window.activeTextEditor; - var formatPromise = Promise.resolve(); - // Incredibly ugly hack to work around no presave event - // based on https://github.com/Microsoft/vscode-go/pull/115/files - if (rustConfig['formatOnSave'] && textEditor.document === document) { - formatPromise = formatService.provideDocumentFormattingEdits(document).then(function (edits) { - return textEditor.edit(function (editBuilder) { - edits.forEach(function (edit) { return editBuilder.replace(edit.range, edit.newText); }); - }); - }).then(function () { - alreadyAppliedFormatting.add(document); - return document.save(); - }).then(function () { - alreadyAppliedFormatting.delete(document); - }, function () { - // Catch any errors and ignore so that we still trigger - // the file save. - }); - } - if (rustConfig['checkOnSave']) { - formatPromise.then(function () { - switch (rustConfig['checkWith']) { - case 'clippy': - vscode.commands.executeCommand('rust.cargo.clippy'); - break; - case 'build': - vscode.commands.executeCommand('rust.cargo.build.debug'); - break; - case 'check-lib': - vscode.commands.executeCommand('rust.cargo.check.lib'); - break; - default: - vscode.commands.executeCommand('rust.cargo.check'); - } - }); - } - })); - // Make sure we end up at one error format. If multiple are set, then prompt the user on how they want to proceed. - // Fix (Change their settings) or Ignore (Use JSON as it comes first in the settings) - // This should run both on activation and when the config changes to ensure we stay in sync with their preference. - var updateErrorFormatFlags = function () { - var rustConfig = vscode.workspace.getConfiguration('rust'); - if (rustConfig['useJsonErrors'] === true && rustConfig['useNewErrorFormat'] === true) { - var ignoreOption_1 = { title: 'Ignore (Use JSON)' }; - var updateSettingsOption_1 = { title: 'Update Settings' }; - vscode.window.showWarningMessage('Note: rust.useJsonErrors and rust.useNewErrorFormat are mutually exclusive with each other. Which would you like to do?', ignoreOption_1, updateSettingsOption_1).then(function (option) { - // Nothing selected - if (option == null) { - return; - } - if (option === ignoreOption_1) { - commandService_1.CommandService.errorFormat = commandService_1.ErrorFormat.JSON; - } - else if (updateSettingsOption_1) { - vscode.commands.executeCommand('workbench.action.openGlobalSettings'); - } - }); - } - else { - commandService_1.CommandService.updateErrorFormat(); - } - }; - // Watch for configuration changes for ENV - ctx.subscriptions.push(vscode.workspace.onDidChangeConfiguration(function () { - updateErrorFormatFlags(); - var rustLangPath = pathService_1.default.getRustLangSrcPath(); - if (process.env['RUST_SRC_PATH'] !== rustLangPath) { - process.env['RUST_SRC_PATH'] = rustLangPath; - } - })); - updateErrorFormatFlags(); - // Commands - // Cargo build - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.build.debug', 'build')); - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.build.release', 'build', '--release')); - ctx.subscriptions.push(commandService_1.CommandService.buildExampleCommand('rust.cargo.build.example.debug', false)); - ctx.subscriptions.push(commandService_1.CommandService.buildExampleCommand('rust.cargo.build.example.release', true)); - ctx.subscriptions.push(commandService_1.CommandService.runExampleCommand('rust.cargo.run.example.debug', false)); - ctx.subscriptions.push(commandService_1.CommandService.runExampleCommand('rust.cargo.run.example.release', true)); - // Cargo run - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.run.debug', 'run')); - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.run.release', 'run', '--release')); - // Cargo test - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.test.debug', 'test')); - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.test.release', 'test', '--release')); - // Cargo bench - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.bench', 'bench')); - // Cargo doc - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.doc', 'doc')); - // Cargo update - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.update', 'update')); - // Cargo clean - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.clean', 'clean')); - // Cargo check - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.check', 'rustc', '--', '-Zno-trans')); - // Cargo check lib - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.check.lib', 'rustc', '--lib', '--', '-Zno-trans')); - // Cargo clippy - ctx.subscriptions.push(commandService_1.CommandService.formatCommand('rust.cargo.clippy', 'clippy')); - // Racer crash error - ctx.subscriptions.push(suggestService.racerCrashErrorCommand('rust.racer.showerror')); - // Cargo terminate - ctx.subscriptions.push(commandService_1.CommandService.stopCommand('rust.cargo.terminate')); -} -exports.activate = activate; -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/formatService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/formatService.js deleted file mode 100644 index e723f019..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/formatService.js +++ /dev/null @@ -1,47 +0,0 @@ -var vscode = require('vscode'); -var cp = require('child_process'); -var pathService_1 = require('./pathService'); -function formatRustfmtCommand(fileName, writeMode) { - return pathService_1.PathService.getRustfmtPath() + ' --write-mode=' + writeMode + ' ' + fileName; -} -var FormatService = (function () { - function FormatService() { - this.writeMode = 'display'; - this.writeMode = 'display'; - } - FormatService.prototype.provideDocumentFormattingEdits = function (document) { - var _this = this; - return document.save().then(function () { - return _this.performFormatFile(document, _this.writeMode); - }); - }; - FormatService.prototype.performFormatFile = function (document, writeMode) { - return new Promise(function (resolve, reject) { - var fileName = document.fileName; - var command = formatRustfmtCommand(fileName, writeMode); - cp.exec(command, function (err, stdout, stderr) { - try { - if (err && err.code == 'ENOENT') { - vscode.window.showInformationMessage('The "rustfmt" command is not available. Make sure it is installed.'); - return resolve(null); - } - if (err) - return reject('Cannot format due to syntax errors'); - // Need this to remove label of rustfmt output - var text = stdout.toString().split('\n').slice(2).join('\n'); - //TODO: implement parsing of rustfmt output with 'diff' writemode - var lastLine = document.lineCount; - var lastLineLastCol = document.lineAt(lastLine - 1).range.end.character; - var range = new vscode.Range(0, 0, lastLine - 1, lastLineLastCol); - return resolve([new vscode.TextEdit(range, text)]); - } - catch (e) { - reject(e); - } - }); - }); - }; - return FormatService; -})(); -exports.FormatService = FormatService; -//# sourceMappingURL=formatService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/pathService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/pathService.js deleted file mode 100644 index 685d3763..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/pathService.js +++ /dev/null @@ -1,19 +0,0 @@ -var vscode = require('vscode'); -var PathService = (function () { - function PathService() { - } - PathService.getRacerPath = function () { - var racerPath = vscode.workspace.getConfiguration('rust')['racerPath']; - return racerPath || 'racer'; - }; - PathService.getRustfmtPath = function () { - var rusfmtPath = vscode.workspace.getConfiguration('rust')['rustfmtPath']; - return rusfmtPath || 'rustfmt'; - }; - PathService.getRustLangSrcPath = function () { - return vscode.workspace.getConfiguration('rust')['rustLangSrcPath']; - }; - return PathService; -})(); -exports.PathService = PathService; -//# sourceMappingURL=pathService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/racerClient.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/racerClient.js deleted file mode 100644 index 514e0098..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/racerClient.js +++ /dev/null @@ -1,263 +0,0 @@ -var cp = require('child_process'); -var fs = require('fs'); -var vs = require('vscode'); -var tmp = require('tmp'); -var RacerClient = (function () { - function RacerClient(config) { - this.typemap = { - 'Struct': vs.CompletionItemKind.Class, - 'Module': vs.CompletionItemKind.Module, - 'MatchArm': vs.CompletionItemKind.Variable, - 'Function': vs.CompletionItemKind.Function, - 'Crate': vs.CompletionItemKind.Module, - 'Let': vs.CompletionItemKind.Variable, - 'IfLet': vs.CompletionItemKind.Variable, - 'WhileLet': vs.CompletionItemKind.Variable, - 'For': vs.CompletionItemKind.Variable, - 'StructField': vs.CompletionItemKind.Field, - 'Impl': vs.CompletionItemKind.Class, - 'Enum': vs.CompletionItemKind.Enum, - 'EnumVariant': vs.CompletionItemKind.Field, - 'Type': vs.CompletionItemKind.Keyword, - 'FnArg': vs.CompletionItemKind.Property, - 'Trait': vs.CompletionItemKind.Interface, - 'Const': vs.CompletionItemKind.Variable, - 'Static': vs.CompletionItemKind.Variable, - }; - this.documentSelector = ['rust']; - this.config = config; - this.listeners = []; - var tmpFile = tmp.fileSync(); - this.tmpFile = tmpFile.name; - } - RacerClient.prototype.start = function () { - var _this = this; - this.commandCallbacks = []; - this.linesBuffer = []; - this.providers = []; - this.racerPath = this.config['racerPath'] || 'racer'; - this.racerDaemon = cp.spawn(this.racerPath, ['daemon'], { stdio: 'pipe' }); - this.racerDaemon.on('error', this.stopDaemon.bind(this)); - this.racerDaemon.on('close', this.stopDaemon.bind(this)); - this.racerDaemon.stdout.on('data', this.dataHandler.bind(this)); - this.hookCapabilities(); - this.listeners.push(vs.workspace.onDidChangeConfiguration(function () { - _this.config = vs.workspace.getConfiguration('racer'); - var newPath = _this.config['racerPath'] || 'racer'; - if (_this.racerPath != newPath) { - _this.restart(); - } - })); - return new vs.Disposable(this.stop.bind(this)); - }; - RacerClient.prototype.stopDaemon = function () { - this.racerDaemon.kill(); - this.providers.forEach(function (disposable) { return disposable.dispose(); }); - this.providers = []; - }; - RacerClient.prototype.stopListeners = function () { - this.listeners.forEach(function (disposable) { return disposable.dispose(); }); - this.listeners = []; - }; - RacerClient.prototype.stop = function () { - this.stopDaemon(); - this.stopListeners(); - }; - RacerClient.prototype.restart = function () { - this.stop(); - this.start(); - }; - RacerClient.prototype.updateTmpFile = function (document) { - fs.writeFileSync(this.tmpFile, document.getText()); - }; - RacerClient.prototype.definitionProvider = function (document, position, token) { - this.updateTmpFile(document); - var command = "find-definition " + (position.line + 1) + " " + position.character + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - if (lines.length == 0) - return null; - var result = lines[0]; - var parts = result.split(','); - var position = new vs.Position(Number(parts[1]) - 1, Number(parts[2])); - var uri = vs.Uri.file(parts[3]); - return new vs.Location(uri, position); - }); - }; - RacerClient.prototype.completionProvider = function (document, position, token) { - var _this = this; - this.updateTmpFile(document); - var command = "complete-with-snippet " + (position.line + 1) + " " + position.character + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - lines.shift(); - //Split on MATCH, as a definition can span more than one line - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH ').slice(1); - var completions = []; - for (var _i = 0; _i < lines.length; _i++) { - var line = lines[_i]; - var parts = line.split(';'); - var label = parts[0]; - var kindKey = parts[5]; - var detail = parts[6]; - var kind = void 0; - if (kindKey in _this.typemap) { - kind = _this.typemap[kindKey]; - } - else { - console.warn('Kind not mapped: ' + kindKey); - kind = vs.CompletionItemKind.Text; - } - //Remove trailing bracket - if (kindKey != 'Module' && kindKey != 'Crate') { - var bracketIndex = detail.indexOf('{'); - if (bracketIndex == -1) - bracketIndex = detail.length; - detail = detail.substring(0, bracketIndex).trim(); - } - completions.push({ - label: label, - kind: kind, - detail: detail - }); - } - return completions; - }); - }; - RacerClient.prototype.parseParameters = function (line, startingPosition, stopPosition) { - if (!stopPosition) - stopPosition = line.length; - var parameters = []; - var currentParameter = ''; - var currentDepth = 0; - var parameterStart = -1; - var parameterEnd = -1; - for (var i = startingPosition; i < stopPosition; i++) { - var char = line.charAt(i); - if (char == '(') { - if (currentDepth == 0) { - parameterStart = i; - } - currentDepth += 1; - continue; - } - else if (char == ')') { - currentDepth -= 1; - if (currentDepth == 0) { - parameterEnd = i; - break; - } - continue; - } - if (currentDepth == 0) - continue; - if (currentDepth == 1 && char == ',') { - parameters.push(currentParameter); - currentParameter = ''; - } - else { - currentParameter += char; - } - } - parameters.push(currentParameter); - return [parameters, parameterStart, parameterEnd]; - }; - RacerClient.prototype.parseCall = function (name, line, definition, position) { - var nameEnd = definition.indexOf(name) + name.length; - var _a = this.parseParameters(definition, nameEnd), params = _a[0], paramStart = _a[1], paramEnd = _a[2]; - var _b = this.parseParameters(line, line.indexOf(name) + name.length), callParameters = _b[0]; - var currentParameter = callParameters.length - 1; - var nameTemplate = definition.substring(0, paramStart); - //If function is used as a method, ignore the self parameter - var isMethod = line.charAt(line.indexOf(name) - 1) == '.'; - if (isMethod) - params = params.slice(1); - var result = new vs.SignatureHelp(); - result.activeSignature = 0; - result.activeParameter = currentParameter; - var signature = new vs.SignatureInformation(nameTemplate); - signature.label += '('; - params.forEach(function (param, i) { - var parameter = new vs.ParameterInformation(param, ''); - signature.label += parameter.label; - signature.parameters.push(parameter); - if (i != params.length - 1) - signature.label += ', '; - }); - signature.label += ') '; - var bracketIndex = definition.indexOf('{', paramEnd); - if (bracketIndex == -1) - bracketIndex = definition.length; - //Append return type without possible trailing bracket - signature.label += definition.substring(paramEnd + 1, bracketIndex).trim(); - result.signatures.push(signature); - return result; - }; - RacerClient.prototype.firstDanglingParen = function (line, position) { - var currentDepth = 0; - for (var i = position; i >= 0; i--) { - var char = line.charAt(i); - if (char == ')') - currentDepth += 1; - else if (char == '(') - currentDepth -= 1; - if (currentDepth == -1) - return i; - } - return -1; - }; - RacerClient.prototype.signatureHelpProvider = function (document, position, token) { - var _this = this; - this.updateTmpFile(document); - var line = document.lineAt(position.line); - //Get the first dangling parenthesis, so we don't stop on a function call used as a previous parameter - var callPosition = this.firstDanglingParen(line.text, position.character - 1); - var command = "complete-with-snippet " + (position.line + 1) + " " + callPosition + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH ').slice(1); - if (lines.length == 0) - return null; - var parts = lines[0].split(';'); - var type = parts[5]; - if (type != 'Function') - return null; - var name = parts[0]; - var definition = parts[6]; - return _this.parseCall(name, line.text, definition, position.character); - }); - }; - RacerClient.prototype.hookCapabilities = function () { - var definitionProvider = { provideDefinition: this.definitionProvider.bind(this) }; - this.providers.push(vs.languages.registerDefinitionProvider(this.documentSelector, definitionProvider)); - var completionProvider = { provideCompletionItems: this.completionProvider.bind(this) }; - this.providers.push((_a = vs.languages).registerCompletionItemProvider.apply(_a, [this.documentSelector, completionProvider].concat(['.', ':']))); - var signatureProvider = { provideSignatureHelp: this.signatureHelpProvider.bind(this) }; - this.providers.push((_b = vs.languages).registerSignatureHelpProvider.apply(_b, [this.documentSelector, signatureProvider].concat(['(', ',']))); - var _a, _b; - }; - RacerClient.prototype.dataHandler = function (data) { - var lines = data.toString().split(/\r?\n/); - for (var _i = 0; _i < lines.length; _i++) { - var line = lines[_i]; - if (line.length == 0) - continue; - if (line.startsWith('END')) { - var callback = this.commandCallbacks.shift(); - callback(this.linesBuffer); - this.linesBuffer = []; - } - else { - this.linesBuffer.push(line); - } - } - }; - RacerClient.prototype.runCommand = function (command) { - var _this = this; - var promise = new Promise(function (resolve, reject) { - _this.commandCallbacks.push(resolve); - }); - this.racerDaemon.stdin.write(command); - return promise; - }; - return RacerClient; -})(); -exports.RacerClient = RacerClient; -//# sourceMappingURL=racerClient.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustFormat.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustFormat.js deleted file mode 100644 index 97fe7142..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustFormat.js +++ /dev/null @@ -1,47 +0,0 @@ -var vscode = require('vscode'); -var cp = require('child_process'); -var pathService_1 = require('./pathService'); -function formatRustfmtCommand(fileName, writeMode) { - return pathService_1.PathService.getRustfmtPath() + ' --write-mode=' + writeMode + ' ' + fileName; -} -var FormatService = (function () { - function FormatService() { - this.writeMode = 'display'; - this.writeMode = 'display'; - } - FormatService.prototype.provideDocumentFormattingEdits = function (document) { - var _this = this; - return document.save().then(function () { - return _this.performFormatFile(document, _this.writeMode); - }); - }; - FormatService.prototype.performFormatFile = function (document, writeMode) { - return new Promise(function (resolve, reject) { - var fileName = document.fileName; - var command = formatRustfmtCommand(fileName, writeMode); - cp.exec(command, function (err, stdout, stderr) { - try { - if (err && err.code == 'ENOENT') { - vscode.window.showInformationMessage('The "rustfmt" command is not available. Make sure it is installed.'); - return resolve(null); - } - if (err) - return reject('Cannot format due to syntax errors'); - // Need this to remove label of rustfmt output - var text = stdout.toString().split('\n').slice(2).join('\n'); - //TODO: implement parsing of rustfmt output with 'diff' writemode - var lastLine = document.lineCount; - var lastLineLastCol = document.lineAt(lastLine - 1).range.end.character; - var range = new vscode.Range(0, 0, lastLine - 1, lastLineLastCol); - return resolve([new vscode.TextEdit(range, text)]); - } - catch (e) { - reject(e); - } - }); - }); - }; - return FormatService; -})(); -exports.FormatService = FormatService; -//# sourceMappingURL=rustFormat.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMain.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMain.js deleted file mode 100644 index 7bde0a0e..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMain.js +++ /dev/null @@ -1,24 +0,0 @@ -var vscode = require('vscode'); -var rustFormat_1 = require('./rustFormat'); -var rustMode_1 = require('./rustMode'); -var rustStatus_1 = require('./rustStatus'); -var racerClient_1 = require('./racerClient'); -var diagnosticCollection; -function activate(ctx) { - console.log('Rusty Code activated'); - var rustConfig = vscode.workspace.getConfiguration('rust'); - diagnosticCollection = vscode.languages.createDiagnosticCollection('rust'); - var config = vscode.workspace.getConfiguration('rust'); - var client = new racerClient_1.RacerClient(config).start(); - ctx.subscriptions.push(client); - ctx.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider(rustMode_1.RUST_MODE, new rustFormat_1.FormatService())); - ctx.subscriptions.push(diagnosticCollection); - ctx.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(rustStatus_1.showHideStatus)); - ctx.subscriptions.push(vscode.workspace.onDidSaveTextDocument(function (document) { - if (!rustConfig['formatOnSave']) - return; - vscode.commands.executeCommand("editor.action.format"); - })); -} -exports.activate = activate; -//# sourceMappingURL=rustMain.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMode.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMode.js deleted file mode 100644 index 5e5eabb8..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustMode.js +++ /dev/null @@ -1,11 +0,0 @@ -var FilterService = (function () { - function FilterService() { - } - FilterService.getRustModeFilter = function () { - return { language: 'rust', scheme: 'file' }; - }; - return FilterService; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = FilterService; -//# sourceMappingURL=rustMode.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustPath.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustPath.js deleted file mode 100644 index 7c18a29d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustPath.js +++ /dev/null @@ -1,20 +0,0 @@ -var vscode = require('vscode'); -function getRustLangSrcPath() { - return vscode.workspace.getConfiguration('rust')['rustLangSrcPath']; -} -exports.getRustLangSrcPath = getRustLangSrcPath; -function getRacerPath() { - var racerPath = vscode.workspace.getConfiguration('rust')['racerPath']; - if (racerPath.length > 0) - return racerPath; - return 'racer'; -} -exports.getRacerPath = getRacerPath; -function getRustfmtPath() { - var rusfmtPath = vscode.workspace.getConfiguration('rust')['rustfmtPath']; - if (rusfmtPath.length > 0) - return rusfmtPath; - return 'rustfmt'; -} -exports.getRustfmtPath = getRustfmtPath; -//# sourceMappingURL=rustPath.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustStatus.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustStatus.js deleted file mode 100644 index 28eae00a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustStatus.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var filterService_1 = require('./services/filterService'); -var vscode = require('vscode'); -var StatusBarService = (function () { - function StatusBarService() { - } - StatusBarService.hideStatus = function () { - this.statusBarEntry.dispose(); - }; - StatusBarService.showStatus = function (message, command, tooltip) { - this.statusBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); - this.statusBarEntry.text = message; - this.statusBarEntry.command = command; - this.statusBarEntry.color = 'yellow'; - this.statusBarEntry.tooltip = tooltip; - this.statusBarEntry.show(); - }; - StatusBarService.toggleStatus = function () { - if (!this.statusBarEntry) - return; - if (!vscode.window.activeTextEditor) { - this.statusBarEntry.hide(); - return; - } - if (vscode.languages.match(filterService_1.default.getRustModeFilter(), vscode.window.activeTextEditor.document)) { - this.statusBarEntry.show(); - return; - } - this.statusBarEntry.hide(); - }; - return StatusBarService; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = StatusBarService; -//# sourceMappingURL=rustStatus.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSuggest.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSuggest.js deleted file mode 100644 index 03cf5282..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSuggest.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; -var vscode = require('vscode'); -var cp = require('child_process'); -var pathService_1 = require('./services/pathService'); -function vsCodeKindFromRacerType(racerType) { - switch (racerType) { - case 'Function': - return vscode.CompletionItemKind.Function; - case 'Impl': - case 'Struct': - return vscode.CompletionItemKind.Class; - case 'Type': - return vscode.CompletionItemKind.Keyword; - case 'Trait': - return vscode.CompletionItemKind.Interface; - case 'Enum': - return vscode.CompletionItemKind.Enum; - case 'StructField': - case 'EnumVariant': - return vscode.CompletionItemKind.Field; - case 'Let': - case 'IfLet': - case 'WhileLet': - case 'For': - case 'Const': - case 'Static': - case 'MatchArm': - return vscode.CompletionItemKind.Variable; - case 'Module': - case 'Crate': - return vscode.CompletionItemKind.Module; - } - return vscode.CompletionItemKind.Variable; -} -function parseRacerResult(racerOutput) { - var lines = racerOutput.replace('END', '').split('MATCH').map(function (line) { return line.trim(); }).slice(1); - if (lines.length <= 0) - return []; - var suggestions = lines.map(function (line) { - var lineItems = line.trim().split(';'); - var suggestion = new vscode.CompletionItem(lineItems[0]); - suggestion.kind = vsCodeKindFromRacerType(lineItems[5]); - suggestion.insertText = lineItems[1]; - suggestion.detail = lineItems[6]; - return suggestion; - }); - return suggestions; -} -function formatRacerCommand(args) { - var setEnv; - if (process.platform === 'win32') - setEnv = 'SET RUST_SRC_PATH=' + pathService_1.PathService.getRustLangSrcPath() + '&&'; - else - setEnv = 'RUST_SRC_PATH=' + pathService_1.PathService.getRustLangSrcPath(); - return setEnv + ' ' + pathService_1.PathService.getRacerPath() + ' ' + args.join(' '); -} -var RustCompletionItemProvider = (function () { - function RustCompletionItemProvider() { - } - RustCompletionItemProvider.prototype.provideCompletionItems = function (document, position, token) { - return new Promise(function (resolve, reject) { - var fileName = document.fileName; - // Line number in vsCode is zero-based and in racer not - var lineNumber = (position.line + 1).toString(); - var characterNumber = position.character.toString(); - var args = ['complete-with-snippet', lineNumber, characterNumber, fileName]; - var command = formatRacerCommand(args); - var p = cp.exec(command, function (err, stdout, stderr) { - try { - if (err && err.code == 'ENOENT') { - vscode.window.showInformationMessage('The "racer" command is not available'); - } - if (err) - return reject(err); - var suggestions = parseRacerResult(stdout.toString()); - resolve(suggestions); - } - catch (e) { - reject(e); - } - }); - }); - }; - return RustCompletionItemProvider; -})(); -exports.RustCompletionItemProvider = RustCompletionItemProvider; -//# sourceMappingURL=rustSuggest.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSymbols.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSymbols.js deleted file mode 100644 index b70320aa..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/rustSymbols.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var cp = require('child_process'); -var pathService_1 = require('./services/pathService'); -var rustKindToCodeKind = { - 'struct': vscode.SymbolKind.Class, - 'method': vscode.SymbolKind.Method, - 'field': vscode.SymbolKind.Field, - 'function': vscode.SymbolKind.Function, - 'constant': vscode.SymbolKind.Constant, - 'static': vscode.SymbolKind.Constant, - 'enum': vscode.SymbolKind.Enum, - // Don't really like this, but this was the best alternative given the absense of vscode.SymbolKind.Macro - 'macro': vscode.SymbolKind.Function -}; -function getSymbolKind(kind) { - var symbolKind; - if (kind !== '') { - symbolKind = rustKindToCodeKind[kind]; - } - return symbolKind; -} -function resultToSymbols(json) { - var decls = JSON.parse(json); - var symbols = []; - decls.forEach(function (decl) { - var pos = new vscode.Position(decl.line - 1, 0); - var kind = getSymbolKind(decl.kind); - var symbol = new vscode.SymbolInformation(decl.name, kind, new vscode.Range(pos, pos), vscode.Uri.file(decl.path), decl.container); - symbols.push(symbol); - }); - return symbols; -} -function populateDocumentSymbols(documentPath) { - return new Promise(function (resolve, reject) { - cp.execFile(pathService_1.default.getRustsymPath(), ['search', '-l', documentPath], {}, function (err, stdout /*, stderr*/) { - try { - if (err && err.code === 'ENOENT') { - vscode.window.showInformationMessage('The "rustsym" command is not available. Make sure it is installed.'); - return resolve([]); - } - var result = stdout.toString(); - var symbols = resultToSymbols(result); - return resolve(symbols); - } - catch (e) { - reject(e); - } - }); - }); -} -exports.populateDocumentSymbols = populateDocumentSymbols; -function populateWorkspaceSymbols(workspaceRoot, query) { - return new Promise(function (resolve, reject) { - cp.execFile(pathService_1.default.getRustsymPath(), ['search', '-g', workspaceRoot, query], { maxBuffer: 1024 * 1024 }, function (err, stdout /*, stderr*/) { - try { - if (err && err.code === 'ENOENT') { - vscode.window.showInformationMessage('The "rustsym" command is not available. Make sure it is installed.'); - return resolve([]); - } - var result = stdout.toString(); - var symbols = resultToSymbols(result); - return resolve(symbols); - } - catch (e) { - reject(e); - } - }); - }); -} -exports.populateWorkspaceSymbols = populateWorkspaceSymbols; -//# sourceMappingURL=rustSymbols.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/commandService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/commandService.js deleted file mode 100644 index fbdd550a..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/commandService.js +++ /dev/null @@ -1,386 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var cp = require('child_process'); -var path = require('path'); -var kill = require('tree-kill'); -var pathService_1 = require('./pathService'); -var errorRegex = /^(.*):(\d+):(\d+):\s+(\d+):(\d+)\s+(warning|error|note|help):\s+(.*)$/; -(function (ErrorFormat) { - ErrorFormat[ErrorFormat["OldStyle"] = 0] = "OldStyle"; - ErrorFormat[ErrorFormat["NewStyle"] = 1] = "NewStyle"; - ErrorFormat[ErrorFormat["JSON"] = 2] = "JSON"; -})(exports.ErrorFormat || (exports.ErrorFormat = {})); -var ErrorFormat = exports.ErrorFormat; -var ChannelWrapper = (function () { - function ChannelWrapper(channel) { - this.channel = channel; - } - ChannelWrapper.prototype.append = function (task, message) { - if (task === this.owner) { - this.channel.append(message); - } - }; - ChannelWrapper.prototype.clear = function (task) { - if (task === this.owner) { - this.channel.clear(); - } - }; - ChannelWrapper.prototype.show = function () { - this.channel.show(true); - }; - ChannelWrapper.prototype.setOwner = function (owner) { - this.owner = owner; - }; - return ChannelWrapper; -}()); -var CargoTask = (function () { - function CargoTask(args, channel) { - this.arguments = args; - this.channel = channel; - this.interrupted = false; - } - CargoTask.prototype.execute = function (cwd) { - var _this = this; - return new Promise(function (resolve, reject) { - var cargoPath = pathService_1.default.getCargoPath(); - var startTime = Date.now(); - var task = 'cargo ' + _this.arguments.join(' '); - var errorFormat = CommandService.errorFormat; - var output = ''; - _this.channel.clear(_this); - _this.channel.append(_this, "Running \"" + task + "\":\n"); - var newEnv = Object.assign({}, process.env); - if (errorFormat === ErrorFormat.JSON) { - newEnv['RUSTFLAGS'] = '-Zunstable-options --error-format=json'; - } - else if (errorFormat === ErrorFormat.NewStyle) { - newEnv['RUST_NEW_ERROR_FORMAT'] = 'true'; - } - _this.process = cp.spawn(cargoPath, _this.arguments, { cwd: cwd, env: newEnv }); - _this.process.stdout.on('data', function (data) { - _this.channel.append(_this, data.toString()); - }); - _this.process.stderr.on('data', function (data) { - output += data.toString(); - // If the user has selected JSON errors, we defer the output to process exit - // to allow us to parse the errors into something human readable. - // Otherwise we just emit the output as-is. - if (errorFormat !== ErrorFormat.JSON) { - _this.channel.append(_this, data.toString()); - } - }); - _this.process.on('error', function (error) { - if (error.code === 'ENOENT') { - vscode.window.showInformationMessage('The "cargo" command is not available. Make sure it is installed.'); - } - }); - _this.process.on('exit', function (code) { - _this.process.removeAllListeners(); - _this.process = null; - // If the user has selected JSON errors, we need to parse and print them into something human readable - // It might not match Rust 1-to-1, but its better than JSON - if (errorFormat === ErrorFormat.JSON) { - for (var _i = 0, _a = output.split('\n'); _i < _a.length; _i++) { - var line = _a[_i]; - // Catch any JSON lines - if (line.startsWith('{')) { - var errors = []; - if (CommandService.parseJsonLine(errors, line)) { - /* tslint:disable:max-line-length */ - // Print any errors as best we can match to Rust's format. - // TODO: Add support for child errors/text highlights. - // TODO: The following line will currently be printed fine, but the two lines after will not. - // src\main.rs:5:5: 5:8 error: expected one of `!`, `.`, `::`, `;`, `?`, `{`, `}`, or an operator, found `let` - // src\main.rs:5 let mut a = 4; - // ^~~ - /* tslint:enable:max-line-length */ - for (var _b = 0, errors_1 = errors; _b < errors_1.length; _b++) { - var error = errors_1[_b]; - _this.channel.append(_this, (error.filename + ":" + error.startLine + ":" + error.startCharacter + ":") + - (" " + error.endLine + ":" + error.endCharacter + " " + error.severity + ": " + error.message + "\n")); - } - } - } - else { - // Catch any non-JSON lines like "Compiling ()" - _this.channel.append(_this, line + "\n"); - } - } - } - var endTime = Date.now(); - _this.channel.append(_this, "\n\"" + task + "\" completed with code " + code); - _this.channel.append(_this, "\nIt took approximately " + (endTime - startTime) / 1000 + " seconds"); - if (code === 0 || _this.interrupted) { - resolve(_this.interrupted ? '' : output); - } - else { - if (code !== 101) { - vscode.window.showWarningMessage("Cargo unexpectedly stopped with code " + code); - } - reject(output); - } - }); - }); - }; - CargoTask.prototype.kill = function () { - var _this = this; - return new Promise(function (resolve) { - if (!_this.interrupted && _this.process) { - kill(_this.process.pid, 'SIGINT', resolve); - _this.interrupted = true; - } - }); - }; - return CargoTask; -}()); -var CommandService = (function () { - function CommandService() { - } - CommandService.formatCommand = function (commandName) { - var _this = this; - var args = []; - for (var _i = 1; _i < arguments.length; _i++) { - args[_i - 1] = arguments[_i]; - } - return vscode.commands.registerCommand(commandName, function () { - _this.runCargo(args, true, true); - }); - }; - CommandService.buildExampleCommand = function (commandName, release) { - var _this = this; - return vscode.commands.registerCommand(commandName, function () { - _this.buildExample(release); - }); - }; - CommandService.runExampleCommand = function (commandName, release) { - var _this = this; - return vscode.commands.registerCommand(commandName, function () { - _this.runExample(release); - }); - }; - CommandService.stopCommand = function (commandName) { - var _this = this; - return vscode.commands.registerCommand(commandName, function () { - if (_this.currentTask) { - _this.currentTask.kill(); - } - }); - }; - CommandService.updateErrorFormat = function () { - var config = vscode.workspace.getConfiguration('rust'); - if (config['useJsonErrors'] === true) { - this.errorFormat = ErrorFormat.JSON; - } - else if (config['useNewErrorFormat'] === true) { - this.errorFormat = ErrorFormat.NewStyle; - } - else { - this.errorFormat = ErrorFormat.OldStyle; - } - }; - CommandService.determineExampleName = function () { - var showDocumentIsNotExampleWarning = function () { - vscode.window.showWarningMessage('Current document is not an example'); - }; - var filePath = vscode.window.activeTextEditor.document.uri.fsPath; - var dir = path.basename(path.dirname(filePath)); - if (dir !== 'examples') { - showDocumentIsNotExampleWarning(); - return ''; - } - var filename = path.basename(filePath); - if (!filename.endsWith('.rs')) { - showDocumentIsNotExampleWarning(); - return ''; - } - return path.basename(filename, '.rs'); - }; - CommandService.buildExample = function (release) { - var exampleName = this.determineExampleName(); - if (exampleName.length === 0) { - return; - } - var args = ['build', '--example', exampleName]; - if (release) { - args.push('--release'); - } - this.runCargo(args, true, true); - }; - CommandService.runExample = function (release) { - var exampleName = this.determineExampleName(); - if (exampleName.length === 0) { - return; - } - var args = ['run', '--example', exampleName]; - if (release) { - args.push('--release'); - } - this.runCargo(args, true, true); - }; - CommandService.parseDiagnostics = function (cwd, output) { - var _this = this; - var errors = []; - // The new Rust error format is a little more complex and is spread out over - // multiple lines. For this case, we'll just use a global regex to get our matches - if (this.errorFormat === ErrorFormat.NewStyle) { - this.parseNewHumanReadable(errors, output); - } - else { - // Otherwise, parse out the errors line by line. - for (var _i = 0, _a = output.split('\n'); _i < _a.length; _i++) { - var line = _a[_i]; - if (this.errorFormat === ErrorFormat.JSON && line.startsWith('{')) { - this.parseJsonLine(errors, line); - } - else { - this.parseOldHumanReadable(errors, line); - } - } - } - var mapSeverityToVsCode = function (severity) { - if (severity === 'warning') { - return vscode.DiagnosticSeverity.Warning; - } - else if (severity === 'error') { - return vscode.DiagnosticSeverity.Error; - } - else if (severity === 'note') { - return vscode.DiagnosticSeverity.Information; - } - else if (severity === 'help') { - return vscode.DiagnosticSeverity.Hint; - } - else { - return vscode.DiagnosticSeverity.Error; - } - }; - this.diagnostics.clear(); - var diagnosticMap = new Map(); - errors.forEach(function (error) { - var filePath = path.join(cwd, error.filename); - // VSCode starts its lines and columns at 0, so subtract 1 off - var range = new vscode.Range(error.startLine - 1, error.startCharacter - 1, error.endLine - 1, error.endCharacter - 1); - var severity = mapSeverityToVsCode(error.severity); - var diagnostic = new vscode.Diagnostic(range, error.message, severity); - var diagnostics = diagnosticMap.get(filePath); - if (!diagnostics) { - diagnostics = []; - } - diagnostics.push(diagnostic); - diagnosticMap.set(filePath, diagnostics); - }); - diagnosticMap.forEach(function (diags, uri) { - _this.diagnostics.set(vscode.Uri.file(uri), diags); - }); - }; - CommandService.parseOldHumanReadable = function (errors, line) { - var match = line.match(errorRegex); - if (match) { - var filename = match[1]; - if (!errors[filename]) { - errors[filename] = []; - } - errors.push({ - filename: filename, - startLine: Number(match[2]), - startCharacter: Number(match[3]), - endLine: Number(match[4]), - endCharacter: Number(match[5]), - severity: match[6], - message: match[7] - }); - } - }; - CommandService.parseNewHumanReadable = function (errors, output) { - var newErrorRegex = /(warning|error|note|help)(?:\[(.*)\])?\: (.*)\n\s+-->\s+(.*):(\d+):(\d+)/g; - while (true) { - var match = newErrorRegex.exec(output); - if (match == null) { - break; - } - var filename = match[4]; - if (!errors[filename]) { - errors[filename] = []; - } - var startLine = Number(match[5]); - var startCharacter = Number(match[6]); - errors.push({ - filename: filename, - startLine: startLine, - startCharacter: startCharacter, - endLine: startLine, - endCharacter: startCharacter, - severity: match[1], - message: match[3] - }); - } - }; - ; - CommandService.parseJsonLine = function (errors, line) { - var errorJson = JSON.parse(line); - return this.parseJson(errors, errorJson); - }; - CommandService.parseJson = function (errors, errorJson) { - var spans = errorJson.spans; - if (spans.length === 0) { - return false; - } - for (var _i = 0, _a = errorJson.spans; _i < _a.length; _i++) { - var span = _a[_i]; - // Only add the primary span, as VSCode orders the problem window by the - // error's range, which causes a lot of confusion if there are duplicate messages. - if (span.is_primary) { - var error = { - filename: span.file_name, - startLine: span.line_start, - startCharacter: span.column_start, - endLine: span.line_end, - endCharacter: span.column_end, - severity: errorJson.level, - message: errorJson.message - }; - errors.push(error); - } - } - return true; - }; - CommandService.runCargo = function (args, force, visible) { - var _this = this; - if (force === void 0) { force = false; } - if (visible === void 0) { visible = false; } - if (force && this.currentTask) { - this.channel.setOwner(null); - this.currentTask.kill().then(function () { - _this.runCargo(args, force, visible); - }); - return; - } - else if (this.currentTask) { - return; - } - this.currentTask = new CargoTask(args, this.channel); - if (visible) { - this.channel.setOwner(this.currentTask); - this.channel.show(); - } - pathService_1.default.cwd().then(function (value) { - if (typeof value === 'string') { - _this.currentTask.execute(value).then(function (output) { - _this.parseDiagnostics(value, output); - }, function (output) { - _this.parseDiagnostics(value, output); - }).then(function () { - _this.currentTask = null; - }); - } - else { - vscode.window.showErrorMessage(value.message); - } - }); - }; - CommandService.diagnostics = vscode.languages.createDiagnosticCollection('rust'); - CommandService.channel = new ChannelWrapper(vscode.window.createOutputChannel('Cargo')); - return CommandService; -}()); -exports.CommandService = CommandService; -//# sourceMappingURL=commandService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/documentSymbolService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/documentSymbolService.js deleted file mode 100644 index 24caed14..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/documentSymbolService.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -var rustSymbols_1 = require('../rustSymbols'); -var DocumentSymbolProvider = (function () { - function DocumentSymbolProvider() { - } - DocumentSymbolProvider.prototype.provideDocumentSymbols = function (document /*, token: vscode.CancellationToken*/) { - return rustSymbols_1.populateDocumentSymbols(document.fileName); - }; - return DocumentSymbolProvider; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = DocumentSymbolProvider; -//# sourceMappingURL=documentSymbolService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/filterService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/filterService.js deleted file mode 100644 index 6eb93064..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/filterService.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -var FilterService = (function () { - function FilterService() { - } - FilterService.getRustModeFilter = function () { - return { language: 'rust', scheme: 'file' }; - }; - return FilterService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = FilterService; -//# sourceMappingURL=filterService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/formatService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/formatService.js deleted file mode 100644 index b55ac355..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/formatService.js +++ /dev/null @@ -1,110 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var cp = require('child_process'); -var fs = require('fs'); -var pathService_1 = require('./pathService'); -var ansiRegex = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; -var FormatService = (function () { - function FormatService() { - } - FormatService.prototype.cleanDiffLine = function (line) { - if (line.endsWith('\u23CE')) { - return line.slice(1, -1) + '\n'; - } - return line.slice(1); - }; - FormatService.prototype.stripColorCodes = function (input) { - return input.replace(ansiRegex, ''); - }; - FormatService.prototype.parseDiff = function (fileToProcess, diff) { - var patches = []; - var currentPatch; - var currentFile; - diff = this.stripColorCodes(diff); - for (var _i = 0, _a = diff.split(/\n/); _i < _a.length; _i++) { - var line = _a[_i]; - if (line.startsWith('Diff of')) { - currentFile = vscode.Uri.file(line.slice('Diff of '.length, -1)); - } - if (!currentFile) { - continue; - } - if (currentFile.toString() === fileToProcess.toString() + '.fmt') { - if (line.startsWith('Diff at line')) { - if (currentPatch != null) { - patches.push(currentPatch); - } - currentPatch = { - startLine: parseInt(line.slice('Diff at line'.length), 10), - newLines: [], - removedLines: 0 - }; - } - else if (line.startsWith('+')) { - currentPatch.newLines.push(this.cleanDiffLine(line)); - } - else if (line.startsWith('-')) { - currentPatch.removedLines += 1; - } - else if (line.startsWith(' ')) { - currentPatch.newLines.push(this.cleanDiffLine(line)); - currentPatch.removedLines += 1; - } - } - } - if (currentPatch) { - patches.push(currentPatch); - } - var cummulativeOffset = 0; - var textEdits = patches.map(function (patch) { - var newLines = patch.newLines; - var removedLines = patch.removedLines; - var startLine = patch.startLine - 1 + cummulativeOffset; - var endLine = removedLines === 0 ? startLine : startLine + removedLines - 1; - var range = new vscode.Range(startLine, 0, endLine, Number.MAX_SAFE_INTEGER); - cummulativeOffset += (removedLines - newLines.length); - var lastLineIndex = newLines.length - 1; - newLines[lastLineIndex] = newLines[lastLineIndex].replace('\n', ''); - return vscode.TextEdit.replace(range, newLines.join('')); - }); - return textEdits; - }; - FormatService.prototype.provideDocumentFormattingEdits = function (document) { - var _this = this; - return new Promise(function (resolve, reject) { - var fileName = document.fileName + '.fmt'; - fs.writeFileSync(fileName, document.getText()); - var args = ['--skip-children', '--write-mode=diff', fileName]; - var env = Object.assign({ TERM: 'xterm' }, process.env); - cp.execFile(pathService_1.default.getRustfmtPath(), args, { env: env }, function (err, stdout, stderr) { - try { - if (err && err.code === 'ENOENT') { - vscode.window.showInformationMessage('The "rustfmt" command is not available. Make sure it is installed.'); - return resolve([]); - } - // rustfmt will return with exit code 3 when it encounters code that could not - // be automatically formatted. However, it will continue to format the rest of the file. - // New releases will return exit code 4 when the write mode is diff and a valid diff is provided. - // For these reasons, if the exit code is 1 or 2, then it should be treated as an error. - var hasFatalError = (err && err.code < 3); - // If an error is encountered with any other exit code, inform the user of the error. - if ((err || stderr.length) && hasFatalError) { - vscode.window.setStatusBarMessage('$(alert) Cannot format due to syntax errors', 5000); - return reject(); - } - return resolve(_this.parseDiff(document.uri, stdout)); - } - catch (e) { - reject(e); - } - finally { - fs.unlinkSync(fileName); - } - }); - }); - }; - return FormatService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = FormatService; -//# sourceMappingURL=formatService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/pathService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/pathService.js deleted file mode 100644 index 7bedb900..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/pathService.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var findUp = require('find-up'); -var path = require('path'); -var PathService = (function () { - function PathService() { - } - PathService.getRacerPath = function () { - var racerPath = vscode.workspace.getConfiguration('rust')['racerPath']; - return racerPath || 'racer'; - }; - PathService.getRustfmtPath = function () { - var rusfmtPath = vscode.workspace.getConfiguration('rust')['rustfmtPath']; - return rusfmtPath || 'rustfmt'; - }; - PathService.getRustsymPath = function () { - var rustsymPath = vscode.workspace.getConfiguration('rust')['rustsymPath']; - return rustsymPath || 'rustsym'; - }; - PathService.getRustLangSrcPath = function () { - var rustSrcPath = vscode.workspace.getConfiguration('rust')['rustLangSrcPath']; - return rustSrcPath || ''; - }; - PathService.getCargoPath = function () { - var cargoPath = vscode.workspace.getConfiguration('rust')['cargoPath']; - return cargoPath || 'cargo'; - }; - PathService.getCargoHomePath = function () { - var cargoHomePath = vscode.workspace.getConfiguration('rust')['cargoHomePath']; - return cargoHomePath || process.env['CARGO_HOME'] || ''; - }; - PathService.cwd = function () { - if (vscode.window.activeTextEditor === null) { - return Promise.resolve(new Error('No active document')); - } - else { - var fileName = vscode.window.activeTextEditor.document.fileName; - if (!fileName.startsWith(vscode.workspace.rootPath)) { - return Promise.resolve(new Error('Current document not in the workspace')); - } - return findUp('Cargo.toml', { cwd: path.dirname(fileName) }).then(function (value) { - if (value === null) { - return new Error('There is no Cargo.toml near active document'); - } - else { - return path.dirname(value); - } - }); - } - }; - return PathService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = PathService; -//# sourceMappingURL=pathService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/racerClient.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/racerClient.js deleted file mode 100644 index 55db1ae9..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/racerClient.js +++ /dev/null @@ -1,264 +0,0 @@ -var cp = require('child_process'); -var fs = require('fs'); -var vs = require('vscode'); -var tmp = require('tmp'); -var SuggestService = (function () { - function SuggestService(config) { - this.typeMap = { - 'Struct': vs.CompletionItemKind.Class, - 'Module': vs.CompletionItemKind.Module, - 'MatchArm': vs.CompletionItemKind.Variable, - 'Function': vs.CompletionItemKind.Function, - 'Crate': vs.CompletionItemKind.Module, - 'Let': vs.CompletionItemKind.Variable, - 'IfLet': vs.CompletionItemKind.Variable, - 'WhileLet': vs.CompletionItemKind.Variable, - 'For': vs.CompletionItemKind.Variable, - 'StructField': vs.CompletionItemKind.Field, - 'Impl': vs.CompletionItemKind.Class, - 'Enum': vs.CompletionItemKind.Enum, - 'EnumVariant': vs.CompletionItemKind.Field, - 'Type': vs.CompletionItemKind.Keyword, - 'FnArg': vs.CompletionItemKind.Property, - 'Trait': vs.CompletionItemKind.Interface, - 'Const': vs.CompletionItemKind.Variable, - 'Static': vs.CompletionItemKind.Variable, - }; - this.documentSelector = ['rust']; - this.config = config; - this.listeners = []; - var tmpFile = tmp.fileSync(); - this.tmpFile = tmpFile.name; - } - SuggestService.prototype.start = function () { - var _this = this; - this.commandCallbacks = []; - this.linesBuffer = []; - this.providers = []; - this.racerPath = this.config['racerPath'] || 'racer'; - this.racerDaemon = cp.spawn(this.racerPath, ['daemon'], { stdio: 'pipe' }); - this.racerDaemon.on('error', this.stopDaemon.bind(this)); - this.racerDaemon.on('close', this.stopDaemon.bind(this)); - this.racerDaemon.stdout.on('data', this.dataHandler.bind(this)); - this.hookCapabilities(); - this.listeners.push(vs.workspace.onDidChangeConfiguration(function () { - _this.config = vs.workspace.getConfiguration('racer'); - var newPath = _this.config['racerPath'] || 'racer'; - if (_this.racerPath != newPath) { - _this.restart(); - } - })); - return new vs.Disposable(this.stop.bind(this)); - }; - SuggestService.prototype.stopDaemon = function () { - this.racerDaemon.kill(); - this.providers.forEach(function (disposable) { return disposable.dispose(); }); - this.providers = []; - }; - SuggestService.prototype.stopListeners = function () { - this.listeners.forEach(function (disposable) { return disposable.dispose(); }); - this.listeners = []; - }; - SuggestService.prototype.stop = function () { - this.stopDaemon(); - this.stopListeners(); - }; - SuggestService.prototype.restart = function () { - this.stop(); - this.start(); - }; - SuggestService.prototype.updateTmpFile = function (document) { - fs.writeFileSync(this.tmpFile, document.getText()); - }; - SuggestService.prototype.definitionProvider = function (document, position, token) { - this.updateTmpFile(document); - var command = "find-definition " + (position.line + 1) + " " + position.character + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - if (lines.length == 0) - return null; - var result = lines[0]; - var parts = result.split(','); - var position = new vs.Position(Number(parts[1]) - 1, Number(parts[2])); - var uri = vs.Uri.file(parts[3]); - return new vs.Location(uri, position); - }); - }; - SuggestService.prototype.completionProvider = function (document, position, token) { - var _this = this; - this.updateTmpFile(document); - var command = "complete-with-snippet " + (position.line + 1) + " " + position.character + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - lines.shift(); - //Split on MATCH, as a definition can span more than one line - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH ').slice(1); - var completions = []; - for (var _i = 0; _i < lines.length; _i++) { - var line = lines[_i]; - var parts = line.split(';'); - var label = parts[0]; - var kindKey = parts[5]; - var detail = parts[6]; - var kind = void 0; - if (kindKey in _this.typeMap) { - kind = _this.typeMap[kindKey]; - } - else { - console.warn('Kind not mapped: ' + kindKey); - kind = vs.CompletionItemKind.Text; - } - //Remove trailing bracket - if (kindKey != 'Module' && kindKey != 'Crate') { - var bracketIndex = detail.indexOf('{'); - if (bracketIndex == -1) - bracketIndex = detail.length; - detail = detail.substring(0, bracketIndex).trim(); - } - completions.push({ - label: label, - kind: kind, - detail: detail - }); - } - return completions; - }); - }; - SuggestService.prototype.parseParameters = function (line, startingPosition, stopPosition) { - if (!stopPosition) - stopPosition = line.length; - var parameters = []; - var currentParameter = ''; - var currentDepth = 0; - var parameterStart = -1; - var parameterEnd = -1; - for (var i = startingPosition; i < stopPosition; i++) { - var char = line.charAt(i); - if (char == '(') { - if (currentDepth == 0) { - parameterStart = i; - } - currentDepth += 1; - continue; - } - else if (char == ')') { - currentDepth -= 1; - if (currentDepth == 0) { - parameterEnd = i; - break; - } - continue; - } - if (currentDepth == 0) - continue; - if (currentDepth == 1 && char == ',') { - parameters.push(currentParameter); - currentParameter = ''; - } - else { - currentParameter += char; - } - } - parameters.push(currentParameter); - return [parameters, parameterStart, parameterEnd]; - }; - SuggestService.prototype.parseCall = function (name, line, definition, position) { - var nameEnd = definition.indexOf(name) + name.length; - var _a = this.parseParameters(definition, nameEnd), params = _a[0], paramStart = _a[1], paramEnd = _a[2]; - var _b = this.parseParameters(line, line.indexOf(name) + name.length), callParameters = _b[0]; - var currentParameter = callParameters.length - 1; - var nameTemplate = definition.substring(0, paramStart); - //If function is used as a method, ignore the self parameter - var isMethod = line.charAt(line.indexOf(name) - 1) == '.'; - if (isMethod) - params = params.slice(1); - var result = new vs.SignatureHelp(); - result.activeSignature = 0; - result.activeParameter = currentParameter; - var signature = new vs.SignatureInformation(nameTemplate); - signature.label += '('; - params.forEach(function (param, i) { - var parameter = new vs.ParameterInformation(param, ''); - signature.label += parameter.label; - signature.parameters.push(parameter); - if (i != params.length - 1) - signature.label += ', '; - }); - signature.label += ') '; - var bracketIndex = definition.indexOf('{', paramEnd); - if (bracketIndex == -1) - bracketIndex = definition.length; - //Append return type without possible trailing bracket - signature.label += definition.substring(paramEnd + 1, bracketIndex).trim(); - result.signatures.push(signature); - return result; - }; - SuggestService.prototype.firstDanglingParen = function (line, position) { - var currentDepth = 0; - for (var i = position; i >= 0; i--) { - var char = line.charAt(i); - if (char == ')') - currentDepth += 1; - else if (char == '(') - currentDepth -= 1; - if (currentDepth == -1) - return i; - } - return -1; - }; - SuggestService.prototype.signatureHelpProvider = function (document, position, token) { - var _this = this; - this.updateTmpFile(document); - var line = document.lineAt(position.line); - //Get the first dangling parenthesis, so we don't stop on a function call used as a previous parameter - var callPosition = this.firstDanglingParen(line.text, position.character - 1); - var command = "complete-with-snippet " + (position.line + 1) + " " + callPosition + " " + document.fileName + " " + this.tmpFile + "\n"; - return this.runCommand(command).then(function (lines) { - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH ').slice(1); - if (lines.length == 0) - return null; - var parts = lines[0].split(';'); - var type = parts[5]; - if (type != 'Function') - return null; - var name = parts[0]; - var definition = parts[6]; - return _this.parseCall(name, line.text, definition, position.character); - }); - }; - SuggestService.prototype.hookCapabilities = function () { - var definitionProvider = { provideDefinition: this.definitionProvider.bind(this) }; - this.providers.push(vs.languages.registerDefinitionProvider(this.documentSelector, definitionProvider)); - var completionProvider = { provideCompletionItems: this.completionProvider.bind(this) }; - this.providers.push((_a = vs.languages).registerCompletionItemProvider.apply(_a, [this.documentSelector, completionProvider].concat(['.', ':']))); - var signatureProvider = { provideSignatureHelp: this.signatureHelpProvider.bind(this) }; - this.providers.push((_b = vs.languages).registerSignatureHelpProvider.apply(_b, [this.documentSelector, signatureProvider].concat(['(', ',']))); - var _a, _b; - }; - SuggestService.prototype.dataHandler = function (data) { - var lines = data.toString().split(/\r?\n/); - for (var _i = 0; _i < lines.length; _i++) { - var line = lines[_i]; - if (line.length == 0) - continue; - if (line.startsWith('END')) { - var callback = this.commandCallbacks.shift(); - callback(this.linesBuffer); - this.linesBuffer = []; - } - else { - this.linesBuffer.push(line); - } - } - }; - SuggestService.prototype.runCommand = function (command) { - var _this = this; - var promise = new Promise(function (resolve, reject) { - _this.commandCallbacks.push(resolve); - }); - this.racerDaemon.stdin.write(command); - return promise; - }; - return SuggestService; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = SuggestService; -//# sourceMappingURL=racerClient.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/rustStatus.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/rustStatus.js deleted file mode 100644 index 6efb0e1d..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/rustStatus.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var filterService_1 = require('./filterService'); -var vscode = require('vscode'); -var StatusBarService = (function () { - function StatusBarService() { - } - StatusBarService.hideStatus = function () { - this.statusBarEntry.dispose(); - }; - StatusBarService.showStatus = function (message, command, tooltip) { - this.statusBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); - this.statusBarEntry.text = message; - this.statusBarEntry.command = command; - this.statusBarEntry.color = 'yellow'; - this.statusBarEntry.tooltip = tooltip; - this.statusBarEntry.show(); - }; - StatusBarService.toggleStatus = function () { - if (!this.statusBarEntry) - return; - if (!vscode.window.activeTextEditor) { - this.statusBarEntry.hide(); - return; - } - if (vscode.languages.match(filterService_1.default.getRustModeFilter(), vscode.window.activeTextEditor.document)) { - this.statusBarEntry.show(); - return; - } - this.statusBarEntry.hide(); - }; - return StatusBarService; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = StatusBarService; -//# sourceMappingURL=rustStatus.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/statusBarService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/statusBarService.js deleted file mode 100644 index 35684085..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/statusBarService.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; -var filterService_1 = require('./filterService'); -var vscode = require('vscode'); -var StatusBarService = (function () { - function StatusBarService() { - } - StatusBarService.hideStatus = function () { - this.statusBarEntry.dispose(); - }; - StatusBarService.showStatus = function (message, command, tooltip) { - this.statusBarEntry = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, Number.MIN_VALUE); - this.statusBarEntry.text = message; - this.statusBarEntry.command = command; - this.statusBarEntry.color = 'yellow'; - this.statusBarEntry.tooltip = tooltip; - this.statusBarEntry.show(); - }; - StatusBarService.toggleStatus = function () { - if (!this.statusBarEntry) { - return; - } - if (!vscode.window.activeTextEditor) { - this.statusBarEntry.hide(); - return; - } - if (vscode.languages.match(filterService_1.default.getRustModeFilter(), vscode.window.activeTextEditor.document)) { - this.statusBarEntry.show(); - return; - } - this.statusBarEntry.hide(); - }; - return StatusBarService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = StatusBarService; -//# sourceMappingURL=statusBarService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/suggestService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/suggestService.js deleted file mode 100644 index a9f333e2..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/suggestService.js +++ /dev/null @@ -1,448 +0,0 @@ -/* - * Copyright (c) 2015 "draivin" Ian Ornelas and other contributors. - * Licensed under MIT (https://github.com/Draivin/vscode-racer/blob/master/LICENSE). - */ -"use strict"; -var cp = require('child_process'); -var fs = require('fs'); -var vscode = require('vscode'); -var tmp = require('tmp'); -var pathService_1 = require('./pathService'); -var filterService_1 = require('./filterService'); -var StatusBarItem = (function () { - function StatusBarItem() { - this.statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left); - } - StatusBarItem.prototype.showTurnedOn = function () { - this.setText('On'); - this.statusBarItem.command = null; - this.statusBarItem.show(); - }; - StatusBarItem.prototype.showTurnedOff = function () { - this.setText('Off'); - this.statusBarItem.command = null; - this.statusBarItem.show(); - }; - StatusBarItem.prototype.showNotFound = function () { - this.setText('Not found'); - this.statusBarItem.tooltip = 'The "racer" command is not available. Make sure it is installed.'; - this.statusBarItem.command = null; - this.statusBarItem.show(); - }; - StatusBarItem.prototype.showCrashed = function () { - this.setText('Crashed'); - this.statusBarItem.tooltip = 'The racer process has stopped. Click to view error'; - this.statusBarItem.command = 'rust.racer.showerror'; - this.statusBarItem.show(); - }; - StatusBarItem.prototype.setText = function (text) { - this.statusBarItem.text = "Racer: " + text; - }; - return StatusBarItem; -}()); -var SuggestService = (function () { - function SuggestService() { - this.typeMap = { - 'Struct': vscode.CompletionItemKind.Class, - 'Module': vscode.CompletionItemKind.Module, - 'MatchArm': vscode.CompletionItemKind.Variable, - 'Function': vscode.CompletionItemKind.Function, - 'Crate': vscode.CompletionItemKind.Module, - 'Let': vscode.CompletionItemKind.Variable, - 'IfLet': vscode.CompletionItemKind.Variable, - 'WhileLet': vscode.CompletionItemKind.Variable, - 'For': vscode.CompletionItemKind.Variable, - 'StructField': vscode.CompletionItemKind.Field, - 'Impl': vscode.CompletionItemKind.Class, - 'Enum': vscode.CompletionItemKind.Enum, - 'EnumVariant': vscode.CompletionItemKind.Field, - 'Type': vscode.CompletionItemKind.Keyword, - 'FnArg': vscode.CompletionItemKind.Property, - 'Trait': vscode.CompletionItemKind.Interface, - 'Const': vscode.CompletionItemKind.Variable, - 'Static': vscode.CompletionItemKind.Variable - }; - this.listeners = []; - this.statusBarItem = new StatusBarItem(); - var tmpFile = tmp.fileSync(); - this.tmpFile = tmpFile.name; - } - SuggestService.prototype.racerCrashErrorCommand = function (command) { - var _this = this; - return vscode.commands.registerCommand(command, function () { - _this.showErrorBuffer(); - }); - }; - SuggestService.prototype.start = function () { - var _this = this; - this.commandCallbacks = []; - this.linesBuffer = []; - this.errorBuffer = ''; - this.lastCommand = ''; - this.providers = []; - this.racerPath = pathService_1.default.getRacerPath(); - this.statusBarItem.showTurnedOn(); - var cargoHomePath = pathService_1.default.getCargoHomePath(); - var racerSpawnOptions = { stdio: 'pipe' }; - if (cargoHomePath !== '') { - var racerEnv = Object.assign({}, process.env, { 'CARGO_HOME': cargoHomePath }); - racerSpawnOptions.env = racerEnv; - } - this.racerDaemon = cp.spawn(pathService_1.default.getRacerPath(), ['--interface=tab-text', 'daemon'], racerSpawnOptions); - this.racerDaemon.on('error', this.stopDaemon.bind(this)); - this.racerDaemon.on('close', this.stopDaemon.bind(this)); - this.racerDaemon.stdout.on('data', this.dataHandler.bind(this)); - this.racerDaemon.stderr.on('data', function (data) { return _this.errorBuffer += data.toString(); }); - this.hookCapabilities(); - this.listeners.push(vscode.workspace.onDidChangeConfiguration(function () { - var newPath = pathService_1.default.getRacerPath(); - if (_this.racerPath !== newPath) { - _this.restart(); - } - })); - return new vscode.Disposable(this.stop.bind(this)); - }; - SuggestService.prototype.stop = function () { - this.stopDaemon(0); - this.stopListeners(); - this.clearCommandCallbacks(); - }; - SuggestService.prototype.restart = function () { - this.stop(); - this.start(); - }; - SuggestService.prototype.stopDaemon = function (error) { - if (this.racerDaemon == null) { - return; - } - this.racerDaemon.kill(); - this.racerDaemon = null; - this.providers.forEach(function (disposable) { return disposable.dispose(); }); - this.providers = []; - if (!error) { - this.statusBarItem.showTurnedOff(); - return; - } - if (error.code === 'ENOENT') { - this.statusBarItem.showNotFound(); - } - else { - this.statusBarItem.showCrashed(); - setTimeout(this.restart.bind(this), 3000); - } - }; - SuggestService.prototype.stopListeners = function () { - this.listeners.forEach(function (disposable) { return disposable.dispose(); }); - this.listeners = []; - }; - SuggestService.prototype.clearCommandCallbacks = function () { - this.commandCallbacks.forEach(function (callback) { return callback([]); }); - }; - SuggestService.prototype.showErrorBuffer = function () { - var channel = vscode.window.createOutputChannel('Racer Error'); - channel.clear(); - channel.append("Last command: \n" + this.lastCommand + "\n"); - channel.append("Racer Output: \n" + this.linesBuffer.join('\n') + "\n"); - channel.append("Racer Error: \n" + this.errorBuffer); - channel.show(true); - }; - SuggestService.prototype.definitionProvider = function (document, position) { - var commandArgs = [position.line + 1, position.character, document.fileName, this.tmpFile]; - return this.runCommand(document, 'find-definition', commandArgs).then(function (lines) { - if (lines.length === 0) { - return null; - } - var result = lines[0]; - var parts = result.split('\t'); - var line = Number(parts[2]) - 1; - var character = Number(parts[3]); - var uri = vscode.Uri.file(parts[4]); - return new vscode.Location(uri, new vscode.Position(line, character)); - }); - }; - SuggestService.prototype.hoverProvider = function (document, position) { - var commandArgs = [position.line + 1, position.character, document.fileName, this.tmpFile]; - return this.runCommand(document, 'find-definition', commandArgs).then(function (lines) { - if (lines.length === 0) { - return null; - } - var result = lines[0]; - var parts = result.split('\t'); - var line = Number(parts[2]) - 1; - var uri = vscode.Uri.file(parts[4]); - var type = parts[5]; - var definition = parts[6]; - // Module definitions are just their path, so there is no need - // to try processing it - if (type === 'Module') { - return new vscode.Hover(definition); - } - var docRegex = /^\/\/\/(.*)/; - var annotRegex = /^#\[(.*?)]/; - return vscode.workspace.openTextDocument(uri).then(function (defDocument) { - var text = defDocument.getText().split('\n'); - var docs = []; - while (true) { - --line; - var docLine = text[line]; - if (docLine == null) { - break; - } - docLine = docLine.trim(); - var annotMatches = docLine.match(annotRegex); - var docMatches = docLine.match(docRegex); - if (annotMatches !== null) { - } - else if (docMatches !== null) { - docs.push(docMatches[1]); - } - else { - break; - } - } - if (docs.length > 0 && !docs[0].trim().startsWith('#')) { - docs.push('# Description'); - } - var bracketIndex = definition.indexOf('{'); - if (bracketIndex !== -1) { - definition = definition.substring(0, bracketIndex); - } - docs.push('```', definition.trim(), '```'); - docs.reverse(); - var processedDocs = []; - var codeBlock = false; - var extraIndent = 0; - for (var i = 0; i < docs.length; i++) { - if (i >= 15 && docs.length !== 16 && !codeBlock) { - processedDocs.push('...'); - break; - } - var docLine = docs[i]; - if (docLine.trim().startsWith('```')) { - codeBlock = !codeBlock; - extraIndent = docLine.indexOf('```'); - processedDocs.push(docLine); - continue; - } - if (codeBlock) { - processedDocs.push(docLine.slice(extraIndent)); - continue; - } - // Make headers smaller - if (docLine.trim().startsWith('#')) { - processedDocs.push('##' + docLine.trim()); - continue; - } - processedDocs.push(docLine); - } - return new vscode.Hover(processedDocs.join('\n')); - }); - }); - }; - SuggestService.prototype.completionProvider = function (document, position) { - var _this = this; - var commandArgs = [position.line + 1, position.character, document.fileName, this.tmpFile]; - return this.runCommand(document, 'complete-with-snippet', commandArgs).then(function (lines) { - lines.shift(); - // Split on MATCH, as a definition can span more than one line - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH\t').slice(1); - var completions = []; - for (var _i = 0, lines_1 = lines; _i < lines_1.length; _i++) { - var line = lines_1[_i]; - var parts = line.split('\t'); - var label = parts[0]; - var type = parts[5]; - var detail = parts[6]; - var kind = void 0; - if (type in _this.typeMap) { - kind = _this.typeMap[type]; - } - else { - console.warn('Kind not mapped: ' + type); - kind = vscode.CompletionItemKind.Text; - } - // Remove trailing bracket - if (type !== 'Module' && type !== 'Crate') { - var bracketIndex = detail.indexOf('{'); - if (bracketIndex === -1) { - bracketIndex = detail.length; - } - detail = detail.substring(0, bracketIndex).trim(); - } - completions.push({ label: label, kind: kind, detail: detail }); - } - return completions; - }); - }; - SuggestService.prototype.parseParameters = function (text, startingPosition) { - var stopPosition = text.length; - var parameters = []; - var currentParameter = ''; - var currentDepth = 0; - var parameterStart = -1; - var parameterEnd = -1; - for (var i = startingPosition; i < stopPosition; i++) { - var char = text.charAt(i); - if (char === '(') { - if (currentDepth === 0) { - parameterStart = i; - } - currentDepth += 1; - continue; - } - else if (char === ')') { - currentDepth -= 1; - if (currentDepth === 0) { - parameterEnd = i; - break; - } - continue; - } - if (currentDepth === 0) { - continue; - } - if (currentDepth === 1 && char === ',') { - parameters.push(currentParameter); - currentParameter = ''; - } - else { - currentParameter += char; - } - } - parameters.push(currentParameter); - return [parameters, parameterStart, parameterEnd]; - }; - SuggestService.prototype.parseCall = function (name, args, definition, callText) { - var nameEnd = definition.indexOf(name) + name.length; - var _a = this.parseParameters(definition, nameEnd), params = _a[0], paramStart = _a[1], paramEnd = _a[2]; - var callParameters = this.parseParameters(callText, 0)[0]; - var currentParameter = callParameters.length - 1; - var nameTemplate = definition.substring(0, paramStart); - // If function is used as a method, ignore the self parameter - if ((args ? args.length : 0) < params.length) { - params = params.slice(1); - } - var result = new vscode.SignatureHelp(); - result.activeSignature = 0; - result.activeParameter = currentParameter; - var signature = new vscode.SignatureInformation(nameTemplate); - signature.label += '('; - params.forEach(function (param, i) { - var parameter = new vscode.ParameterInformation(param, ''); - signature.label += parameter.label; - signature.parameters.push(parameter); - if (i !== params.length - 1) { - signature.label += ', '; - } - }); - signature.label += ') '; - var bracketIndex = definition.indexOf('{', paramEnd); - if (bracketIndex === -1) { - bracketIndex = definition.length; - } - // Append return type without possible trailing bracket - signature.label += definition.substring(paramEnd + 1, bracketIndex).trim(); - result.signatures.push(signature); - return result; - }; - SuggestService.prototype.firstDanglingParen = function (document, position) { - var text = document.getText(); - var offset = document.offsetAt(position) - 1; - var currentDepth = 0; - while (offset > 0) { - var char = text.charAt(offset); - if (char === ')') { - currentDepth += 1; - } - else if (char === '(') { - currentDepth -= 1; - } - else if (char === '{') { - return null; // not inside function call - } - if (currentDepth === -1) { - return document.positionAt(offset); - } - offset--; - } - return null; - }; - SuggestService.prototype.signatureHelpProvider = function (document, position) { - var _this = this; - // Get the first dangling parenthesis, so we don't stop on a function call used as a previous parameter - var startPos = this.firstDanglingParen(document, position); - if (!startPos) { - return null; - } - var name = document.getText(document.getWordRangeAtPosition(startPos)); - var commandArgs = [startPos.line + 1, startPos.character - 1, document.fileName, this.tmpFile]; - return this.runCommand(document, 'complete-with-snippet', commandArgs).then(function (lines) { - lines = lines.map(function (l) { return l.trim(); }).join('').split('MATCH\t').slice(1); - var parts = []; - for (var _i = 0, lines_2 = lines; _i < lines_2.length; _i++) { - var line = lines_2[_i]; - parts = line.split('\t'); - if (parts[0] === name) { - break; - } - } - if (parts[0] !== name) { - return null; - } - var args = parts[1].match(/\${\d+:\w+}/g); - var type = parts[5]; - var definition = parts[6]; - if (type !== 'Function') { - return null; - } - var callText = document.getText(new vscode.Range(startPos, position)); - return _this.parseCall(name, args, definition, callText); - }); - }; - SuggestService.prototype.hookCapabilities = function () { - var definitionProvider = { provideDefinition: this.definitionProvider.bind(this) }; - this.providers.push(vscode.languages.registerDefinitionProvider(filterService_1.default.getRustModeFilter(), definitionProvider)); - var completionProvider = { provideCompletionItems: this.completionProvider.bind(this) }; - this.providers.push((_a = vscode.languages).registerCompletionItemProvider.apply(_a, [filterService_1.default.getRustModeFilter(), completionProvider].concat(['.', ':']))); - var signatureProvider = { provideSignatureHelp: this.signatureHelpProvider.bind(this) }; - this.providers.push((_b = vscode.languages).registerSignatureHelpProvider.apply(_b, [filterService_1.default.getRustModeFilter(), signatureProvider].concat(['(', ',']))); - var hoverProvider = { provideHover: this.hoverProvider.bind(this) }; - this.providers.push(vscode.languages.registerHoverProvider(filterService_1.default.getRustModeFilter(), hoverProvider)); - var _a, _b; - }; - SuggestService.prototype.dataHandler = function (data) { - var lines = data.toString().split(/\r?\n/); - for (var _i = 0, lines_3 = lines; _i < lines_3.length; _i++) { - var line = lines_3[_i]; - if (line.length === 0) { - continue; - } - else if (line.startsWith('END')) { - var callback = this.commandCallbacks.shift(); - callback(this.linesBuffer); - this.linesBuffer = []; - } - else { - this.linesBuffer.push(line); - } - } - }; - SuggestService.prototype.updateTmpFile = function (document) { - fs.writeFileSync(this.tmpFile, document.getText()); - }; - SuggestService.prototype.runCommand = function (document, command, args) { - var _this = this; - this.updateTmpFile(document); - var queryString = [command].concat(args).join('\t') + '\n'; - this.lastCommand = queryString; - var promise = new Promise(function (resolve) { - _this.commandCallbacks.push(resolve); - }); - this.racerDaemon.stdin.write(queryString); - return promise; - }; - return SuggestService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = SuggestService; -//# sourceMappingURL=suggestService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/workspaceSymbolService.js b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/workspaceSymbolService.js deleted file mode 100644 index 5d380a42..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/out/src/services/workspaceSymbolService.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -var vscode = require('vscode'); -var rustSymbols_1 = require('../rustSymbols'); -var pathService_1 = require('./pathService'); -var WorkspaceSymbolService = (function () { - function WorkspaceSymbolService() { - } - WorkspaceSymbolService.prototype.provideWorkspaceSymbols = function (query /*, token: vscode.CancellationToken*/) { - return new Promise(function (resolve, reject) { - pathService_1.default.cwd().then(function (value) { - if (typeof value === 'string') { - return resolve(rustSymbols_1.populateWorkspaceSymbols(value, query)); - } - else { - vscode.window.showErrorMessage(value.message); - return reject(value.message); - } - }); - }); - }; - return WorkspaceSymbolService; -}()); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = WorkspaceSymbolService; -//# sourceMappingURL=workspaceSymbolService.js.map \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/package.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/package.json deleted file mode 100644 index d2bbdcfb..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/package.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "name": "RustyCode", - "displayName": "Rusty Code", - "description": "Rust language integration for VSCode", - "version": "0.18.0", - "publisher": "saviorisdead", - "license": "MIT", - "icon": "images/icon.png", - "homepage": "https://github.com/saviorisdead/RustyCode", - "repository": { - "type": "git", - "url": "https://github.com/saviorisdead/RustyCode" - }, - "bugs": { - "url": "https://github.com/saviorisdead/RustyCode/issues", - "email": "saviorisdead@gmail.com" - }, - "engines": { - "vscode": "^1.0.0" - }, - "categories": [ - "Languages", - "Linters", - "Snippets" - ], - "activationEvents": [ - "onLanguage:rust" - ], - "main": "./out/src/extension", - "contributes": { - "languages": [ - { - "id": "rust", - "aliases": [ - "Rust" - ], - "extensions": [ - ".toml", - ".rs" - ] - } - ], - "snippets": [ - { - "language": "rust", - "path": "./snippets/rust.json" - } - ], - "commands": [ - { - "command": "rust.cargo.build.example.debug", - "title": "Cargo: Build example, Debug", - "description": "Compile the current example" - }, - { - "command": "rust.cargo.build.example.release", - "title": "Cargo: Build example, Release", - "description": "Compile the current example with \"--release\" flag" - }, - { - "command": "rust.cargo.run.example.debug", - "title": "Cargo: Run example, Debug", - "description": "Compile the current example and execute it" - }, - { - "command": "rust.cargo.run.example.release", - "title": "Cargo: Run example, Release", - "description": "Compile the current example with \"--release\" flag and execute it" - }, - { - "command": "rust.cargo.build.debug", - "title": "Cargo: Build Debug", - "description": "Compile the current project" - }, - { - "command": "rust.cargo.build.release", - "title": "Cargo: Build Release", - "description": "Compile the current project with \"--release\" flag" - }, - { - "command": "rust.cargo.run.debug", - "title": "Cargo: Run Debug", - "description": "Build and execute src/main.rs" - }, - { - "command": "rust.cargo.run.release", - "title": "Cargo: Run Release", - "description": "Build with \"--release\" flag and execute src/main.rs" - }, - { - "command": "rust.cargo.doc", - "title": "Cargo: Doc", - "description": "Build this project's and its dependencies' documentation" - }, - { - "command": "rust.cargo.test.debug", - "title": "Cargo: Test Debug", - "description": "Run the tests" - }, - { - "command": "rust.cargo.test.release", - "title": "Cargo: Test Release", - "description": "Run the tests with --release" - }, - { - "command": "rust.cargo.bench", - "title": "Cargo: Bench", - "description": "Run the benchmarks" - }, - { - "command": "rust.cargo.update", - "title": "Cargo: Update", - "description": "Update dependencies listed in Cargo.lock" - }, - { - "command": "rust.cargo.clean", - "title": "Cargo: Clean", - "description": "Remove the target directory" - }, - { - "command": "rust.cargo.check", - "title": "Cargo: Check", - "description": "Check the project for warnings and errors" - }, - { - "command": "rust.cargo.check.lib", - "title": "Cargo: Check Library", - "description": "Check the main library of the project for warnings and errors" - }, - { - "command": "rust.cargo.terminate", - "title": "Cargo: Terminate Running Task", - "description": "Terminate currently running cargo task" - } - ], - "configuration": { - "title": "Rusty Code configuration", - "type": "object", - "properties": { - "rust.racerPath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to Racer binary if it's not in PATH" - }, - "rust.rustfmtPath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to Rustfmt binary if it's not in PATH" - }, - "rust.rustsymPath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to Rustsym binary if it's not in PATH" - }, - "rust.rustLangSrcPath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to /src directory of local copy of Rust sources" - }, - "rust.cargoPath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to Cargo binary if it's not in PATH" - }, - "rust.cargoHomePath": { - "type": [ - "string", - "null" - ], - "default": null, - "description": "Specifies path to home directory of Cargo. Mostly needed for working with custom installations of Rust via rustup or multirust." - }, - "rust.formatOnSave": { - "type": "boolean", - "default": false, - "description": "Turn on/off autoformatting file on save" - }, - "rust.checkOnSave": { - "type": "boolean", - "default": false, - "description": "Turn on/off autochecking file on save using cargo check" - }, - "rust.checkWith": { - "type": "string", - "default": "check", - "description": "Choose between check, check-lib, clippy and build to lint" - }, - "rust.useJsonErrors": { - "type": "boolean", - "default": false, - "description": "Enable the use of JSON errors (requires Rust 1.7+). Note: This is an unstable feature of Rust and is still in the process of being stablised" - }, - "rust.useNewErrorFormat": { - "type": "boolean", - "default": false, - "description": "Use the new Rust error format (RUST_NEW_ERROR_FORMAT=true). Note: This flag is mutually exclusive with `useJsonErrors`." - } - } - }, - "keybindings": [ - { - "key": "ctrl+shift+b", - "command": "rust.cargo.build.debug", - "when": "editorLangId == 'rust'" - }, - { - "key": "ctrl+shift+t", - "command": "rust.cargo.test.debug", - "when": "editorLangId == 'rust'" - }, - { - "key": "ctrl+shift+r", - "command": "rust.cargo.run.debug", - "when": "editorLangId == 'rust'" - }, - { - "key": "ctrl+shift+alt+b", - "command": "rust.cargo.build.release", - "when": "editorLangId == 'rust'" - }, - { - "key": "ctrl+shift+alt+t", - "command": "rust.cargo.test.release", - "when": "editorLangId == 'rust'" - }, - { - "key": "ctrl+shift+alt+r", - "command": "rust.cargo.run.release", - "when": "editorLangId == 'rust'" - } - ] - }, - "scripts": { - "vscode:prepublish": "node ./node_modules/vscode/bin/compile", - "compile": "node ./node_modules/vscode/bin/compile -watch -p ./", - "postinstall": "node ./node_modules/vscode/bin/install" - }, - "devDependencies": { - "gulp": "^3.9.0", - "gulp-shell": "^0.5.1", - "gulp-tslint": "^4.1.0", - "tslint": "^3.1.1", - "typescript": "^1.7.3", - "vscode": "^0.11.12" - }, - "dependencies": { - "tmp": "0.0.28", - "tree-kill": "^1.0.0", - "find-up": "^1.1.2" - }, - "__metadata": { - "id": "2dc0c3e9-1d89-4af3-8098-79c39ec7a098", - "publisherId": "a0ec41cb-a226-4a46-9c18-0ea1dadd0529", - "publisherDisplayName": "saviorisdead" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/snippets/rust.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/snippets/rust.json deleted file mode 100644 index 7c6b4d13..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/snippets/rust.json +++ /dev/null @@ -1,555 +0,0 @@ -{ - "allow": { - "prefix": "allow", - "body": [ - "#![allow(${1})]" - ], - "description": "#![allow(…)]" - }, - "deny": { - "prefix": "deny", - "body": [ - "#![deny(${1})]" - ], - "description": "#![deny(…)]" - }, - "warn": { - "prefix": "warn", - "body": [ - "#![warn(${1})]" - ], - "description": "#![warn(…)]" - }, - "no_std": { - "prefix": "no_std", - "body": [ - "#![no_std]" - ], - "description": "#![no_std]" - }, - "no_core": { - "prefix": "no_core", - "body": [ - "#![no_core]" - ], - "description": "#![no_core]" - }, - "feature": { - "prefix": "feature", - "body": [ - "#![feature(${1})]" - ], - "description": "#![feature(…)]" - }, - "macro_use": { - "prefix": "macro_use", - "body": [ - "#[macro_use(${1})]" - ], - "description": "#[macro_use(…)]" - }, - "repr": { - "prefix": "repr", - "body": [ - "#[repr(${1})]" - ], - "description": "#[repr(…)]" - }, - "cfg": { - "prefix": "cfg", - "body": [ - "#[cfg(${1})]" - ], - "description": "#[cfg(…)]" - }, - "cfg_attr": { - "prefix": "cfg_attr", - "body": [ - "#[cfg_attr(${1}, ${2})]" - ], - "description": "#[cfg_attr(…, …)]" - }, - "cfg!": { - "prefix": "cfg!", - "body": [ - "cfg!(${1})" - ], - "description": "cfg!(…)" - }, - "column": { - "prefix": "column", - "body": [ - "column!()" - ], - "description": "column!()" - }, - "concat": { - "prefix": "concat", - "body": [ - "concat!(${1})" - ], - "description": "concat!(…)" - }, - "concat_idents": { - "prefix": "concat_idents", - "body": [ - "concat_idents!(${1})" - ], - "description": "concat_idents!(…)" - }, - "debug_assert": { - "prefix": "debug_assert", - "body": [ - "debug_assert!(${1});" - ], - "description": "debug_assert!(…)" - }, - "debug_assert_eq": { - "prefix": "debug_assert_eq", - "body": [ - "debug_assert_eq!(${1}, ${2});" - ], - "description": "debug_assert_eq!(…, …)" - }, - "env": { - "prefix": "env", - "body": [ - "env!(\"${1}\")" - ], - "description": "env!(\"…\")" - }, - "file": { - "prefix": "file", - "body": [ - "file!()" - ], - "description": "file!()" - }, - "format": { - "prefix": "format", - "body": [ - "format!(\"${1:\\{${2::?}\\}}\")" - ], - "description": "format!(…)" - }, - "format_args": { - "prefix": "format_args", - "body": [ - "format_args!(\"${1:\\{${2::?}\\}}\")" - ], - "description": "format_args!(…)" - }, - "include": { - "prefix": "include", - "body": [ - "include!(\"${1}\");" - ], - "description": "include!(\"…\");" - }, - "include_bytes": { - "prefix": "include_bytes", - "body": [ - "include_bytes!(\"${1}\")" - ], - "description": "include_bytes!(\"…\")" - }, - "include_str": { - "prefix": "include_str", - "body": [ - "include_str!(\"${1}\")" - ], - "description": "include_str!(\"…\")" - }, - "line": { - "prefix": "line", - "body": [ - "line!()" - ], - "description": "line!()" - }, - "module_path": { - "prefix": "module_path", - "body": [ - "module_path!()" - ], - "description": "module_path!()" - }, - "option_env": { - "prefix": "option_env", - "body": [ - "option_env!(\"${1}\")" - ], - "description": "option_env!(\"…\")" - }, - "panic": { - "prefix": "panic", - "body": [ - "panic!(\"${1:\\{${2::?}\\}}\");" - ], - "description": "panic!(…);" - }, - "print": { - "prefix": "print", - "body": [ - "print!(\"${1:\\{${2::?}\\}}\");" - ], - "description": "print!(…);" - }, - "println": { - "prefix": "println", - "body": [ - "println!(\"${1:\\{${2::?}\\}}\");" - ], - "description": "println!(…);" - }, - "stringify": { - "prefix": "stringify", - "body": [ - "stringify!(${1})" - ], - "description": "stringify!(…)" - }, - "thread_local": { - "prefix": "thread_local", - "body": [ - "thread_local!(static ${1:STATIC}: ${2:Type} = ${4:init});" - ], - "description": "thread_local!(static …: … = …);" - }, - "try": { - "prefix": "try", - "body": [ - "try!(${1})" - ], - "description": "try!(…)" - }, - "unimplemented": { - "prefix": "unimplemented", - "body": [ - "unimplemented!()" - ], - "description": "unimplemented!()" - }, - "unreachable": { - "prefix": "unreachable", - "body": [ - "unreachable!(${1})" - ], - "description": "unreachable!(…)" - }, - "vec": { - "prefix": "vec", - "body": [ - "vec![${1}]" - ], - "description": "vec![…]" - }, - "write": { - "prefix": "write", - "body": [ - "write!(${1}, \"${2:\\{${3::?}\\}}\")" - ], - "description": "write!(…)" - }, - "writeln": { - "prefix": "writeln", - "body": [ - "writeln!(${1}, \"${2:\\{${3::?}\\}}\")" - ], - "description": "writeln!(…, …)" - }, - "Err": { - "prefix": "Err", - "body": [ - "Err(${1})" - ], - "description": "Err(…)" - }, - "Ok": { - "prefix": "Ok", - "body": [ - "Ok(${1:result})" - ], - "description": "Ok(…)" - }, - "Some": { - "prefix": "Some", - "body": [ - "Some(${1})" - ], - "description": "Some(…)" - }, - "assert": { - "prefix": "assert", - "body": [ - "assert!(${1});" - ], - "description": "assert!(…);" - }, - "assert_eq": { - "prefix": "assert_eq", - "body": [ - "assert_eq!(${1}, ${2});" - ], - "description": "assert_eq!(…, …);" - }, - "bench": { - "prefix": "bench", - "body": [ - "#[bench]", - "fn ${1:name}(b: &mut test::Bencher) {", - " ${2:b.iter(|| ${3:/* benchmark code */})}", - "}" - ], - "description": "#[bench]" - }, - "const": { - "prefix": "const", - "body": [ - "const ${1:CONST}: ${2:Type} = ${4:init};" - ], - "description": "const …: … = …;" - }, - "derive": { - "prefix": "derive", - "body": [ - "#[derive(${1})]" - ], - "description": "#[derive(…)]" - }, - "else": { - "prefix": "else", - "body": [ - "else {", - " ${1:unimplemented!();}", - "}" - ], - "description": "else { … }" - }, - "enum": { - "prefix": "enum", - "body": [ - "#[derive(Debug)]", - "enum ${1:Name} {", - " ${2:Variant1},", - " ${3:Variant2},", - "}" - ], - "description": "enum … { … }" - }, - "extern-crate": { - "prefix": "extern-crate", - "body": [ - "extern crate ${1:name};" - ], - "description": "extern crate …;" - }, - "extern-fn": { - "prefix": "extern-fn", - "body": [ - "extern \"C\" fn ${1:name}(${2:arg}: ${3:Type}) -> ${4:RetType} {", - " ${5: add code here}", - "}" - ], - "description": "extern \"C\" fn …(…) { … }" - }, - "extern-mod": { - "prefix": "extern-mod", - "body": [ - "extern \"C\" {", - " ${2: add code here}", - "}" - ], - "description": "extern \"C\" { … }" - }, - "fn": { - "prefix": "fn", - "body": [ - "fn ${1:name}(${2:arg}: ${3:Type}) -> ${4:RetType} {", - " ${5:unimplemented!();}", - "}" - ], - "description": "fn …(…) { … }" - }, - "for": { - "prefix": "for", - "body": [ - "for ${1:pat} in ${2:expr} {", - " ${3:unimplemented!();}", - "}" - ], - "description": "for … in … { … }" - }, - "if-let": { - "prefix": "if-let", - "body": [ - "if let ${1:Some(pat)} = ${2:expr} {", - " ${2:unimplemented!();}", - "}" - ], - "description": "if let … = … { … }" - }, - "if": { - "prefix": "if", - "body": [ - "if ${1:condition} {", - " ${2:unimplemented!();}", - "}" - ], - "description": "if … { … }" - }, - "impl-trait": { - "prefix": "impl-trait", - "body": [ - "impl ${1:Trait} for ${2:Type} {", - " ${3: add code here}", - "}" - ], - "description": "impl … for … { … }" - }, - "impl": { - "prefix": "impl", - "body": [ - "impl ${1:Type} {", - " ${2: add code here}", - "}" - ], - "description": "impl … { … }" - }, - "let": { - "prefix": "let", - "body": [ - "let ${1:pat} = ${2:expr};" - ], - "description": "let … = …;" - }, - "loop": { - "prefix": "loop", - "body": [ - "loop {", - " ${2:unimplemented!();}", - "}" - ], - "description": "loop { … }" - }, - "macro_rules": { - "prefix": "macro_rules", - "body": [ - "macro_rules! ${1:name} {", - " (${2}) => (${3})", - "}" - ], - "description": "macro_rules! … { … }" - }, - "main": { - "prefix": "main", - "body": [ - "fn main() {", - " ${1:unimplemented!();}", - "}" - ], - "description": "fn main() { … }" - }, - "match": { - "prefix": "match", - "body": [ - "match ${1:expr} {", - " ${2:Some(expr)} => ${3:expr},", - " ${4:None} => ${5:expr},", - "}" - ], - "description": "match … { … }" - }, - "mod": { - "prefix": "mod", - "body": [ - "mod ${1:name};" - ], - "description": "mod …;" - }, - "mod-block": { - "prefix": "mod-block", - "body": [ - "mod ${1:name} {", - " ${2: add code here}", - "}" - ], - "description": "mod … { … }" - }, - "static": { - "prefix": "static", - "body": [ - "static ${1:STATIC}: ${2:Type} = ${4:init};" - ], - "description": "static …: … = …;" - }, - "struct-tuple": { - "prefix": "struct-tuple", - "body": [ - "struct ${1:Name}(${2:Type});" - ], - "description": "struct …(…);" - }, - "struct-unit": { - "prefix": "struct-unit", - "body": [ - "struct ${1:Name};" - ], - "description": "struct …;" - }, - "struct": { - "prefix": "struct", - "body": [ - "#[derive(Debug)]", - "struct ${1:Name} {", - " ${2:field}: ${3:Type}", - "}" - ], - "description": "struct … { … }" - }, - "test": { - "prefix": "test", - "body": [ - "#[test]", - "fn ${1:name}() {", - " ${2:unimplemented!();}", - "}" - ], - "description": "#[test]" - }, - "trait": { - "prefix": "trait", - "body": [ - "trait ${1:Name} {", - " ${2: add code here}", - "}", - "" - ], - "description": "trait … { … }" - }, - "type": { - "prefix": "type", - "body": [ - "type ${1:Alias} = ${2:Type};" - ], - "description": "type … = …;" - }, - "while-let": { - "prefix": "while-let", - "body": [ - "while let ${1:Some(pat)} = ${2:expr} {", - " ${2:unimplemented!();}", - "}" - ], - "description": "while let … = … { … }" - }, - "while": { - "prefix": "while", - "body": [ - "while ${1:condition} {", - " ${2:unimplemented!();}", - "}" - ], - "description": "while … { … }" - } -} \ No newline at end of file diff --git a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/tslint.json b/.vscode/extensions/saviorisdead.RustyCode-0.18.0/tslint.json deleted file mode 100644 index 7894b8d1..00000000 --- a/.vscode/extensions/saviorisdead.RustyCode-0.18.0/tslint.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "rules": { - "ban": false, - "class-name": true, - "comment-format": [true, "check-space"], - "curly": true, - "eofline": true, - "forin": true, - "indent": [true, "spaces"], - "interface-name": false, - "jsdoc-format": true, - "label-position": true, - "label-undefined": true, - "max-line-length": [true, 140], - "member-access": true, - "member-ordering": [ - false, - "public-before-private", - "static-before-instance", - "variables-before-functions" - ], - "no-any": false, - "no-arg": true, - "no-bitwise": false, - "no-conditional-assignment": true, - "no-consecutive-blank-lines": false, - "no-console": true, - "no-construct": true, - "no-constructor-vars": true, - "no-debugger": true, - "no-duplicate-key": true, - "no-duplicate-variable": true, - "no-empty": true, - "no-eval": true, - "no-inferrable-types": true, - "no-internal-module": true, - "no-require-imports": false, - "no-shadowed-variable": true, - "no-string-literal": false, - "no-switch-case-fall-through": true, - "no-trailing-whitespace": true, - "no-unreachable": true, - "no-unused-expression": true, - "no-unused-variable": [true, "check-parameters"], - "no-use-before-declare": true, - "no-var-keyword": true, - "no-var-requires": true, - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-catch", - "check-else", - "check-whitespace" - ], - "quotemark": [ - true, - "single", - "avoid-escape" - ], - "radix": true, - "semicolon": true, - "trailing-comma": [ - true, - { - "multiline": "never", - "singleline": "never" - } - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "typedef": [ - true, - "call-signature", - "property-declaration", - "member-variable-declaration" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - } - ], - "variable-name": [ - true, - "check-format", - "ban-keywords" - ], - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" - ] - } -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/.github/CONTRIBUTING.md b/.vscode/extensions/vscodevim.vim-0.2.0/.github/CONTRIBUTING.md deleted file mode 100644 index dc8d6ee1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/.github/CONTRIBUTING.md +++ /dev/null @@ -1,104 +0,0 @@ -# Contribution Guide - -The following is a set of guidelines for contributing to Vim for VSCode. -These are just guidelines, not rules, use your best judgment and feel free to propose changes to this document in a pull request. -If you need help with Vim for VSCode, come visit our [Slack](https://vscodevim-slackin.azurewebsites.net/) community. -Thanks for helping us make Vim for VSCode better! - -## Submitting Issues - -The [GitHub issue tracker](https://github.com/VSCodeVim/Vim/issues) is the preferred channel for tracking bugs and enhancement suggestions. -When creating a new bug report do: - -* Search against existing issues to check if somebody else has already reported your problem or requested your idea -* Include as many details as possible. Include screenshots/gifs and repro steps where applicable. - -## Submitting Pull Requests - -Pull requests are *awesome*. -If you're looking to raise a PR for something which doesn't have an open issue, consider creating an issue first. -When submitting a PR, ensure: - -1. Run all the tests and ensure they pass. -2. If you added a new feature, add at least one more test to test it. -3. If you've fixed a bug, add at least one test to ensure the bug stays away. -4. Submit the PR. Pour yourself a glass of champagne and feel good about making contributing to open source! - -## First Time Setup - -1. Install prerequisites: - * latest [Visual Studio Code](https://code.visualstudio.com/) - * [Node.js](https://nodejs.org/) v4.0.0 or higher -2. Fork and clone the repository -3. `cd Vim` -4. Install the dependencies: - - ```bash - $ npm install -g gulp-cli - $ npm install - ``` -5. Open the folder in VS Code - -## Developing - -1. Watch for changes and recompile Typescript files. Run this in the `Vim` directory: `gulp watch` -2. Open up Visual Studio code and add the `Vim` directory as a folder. -3. Click on the debugger. You now have two options - Launch Extension (to play around with the extension) and Launch Tests (to run the tests). - -## Code Architecture - -The code is split into two parts - ModeHandler (which is essentially the Vim state machine), and Actions (which are things that modify the state). - -### Actions - -Actions are all currently stuffied into actions.ts (sorry!). There are: -* BaseAction - the base Action type that all Actions derive from. -* BaseMovement - A movement, like `w`, `h`, `{`, etc. ONLY updates the cursor position. At worst, might return an IMovement, which indicates a start and stop. This is used for movements like aw which may actually start before the cursor. -* BaseCommand - Anything which is not just a movement is a Command. That includes motions which also update the state of Vim in some way, like `*`. - -At one point, I wanted to have actions.ts be completely pure (no side effects whatsoever), so commands would just return objects indicating what side effects on the editor they would have. This explains the giant switch in handleCommand in ModeHandler. I now believe this to be a dumb idea and someone should get rid of it. - -Probably me. :wink: - -### The Vim State Machine - -It's contained entirely within modeHandler.ts. It's actually pretty complicated, and I probably won't be able to articulate all of the edge cases it contains. - -It consists of two data structures: - -* VimState - this is the state of Vim. It's what actions update. -* RecordedState - this is temporary state that will reset at the end of a change. (RecordedState is a poor name for this; I've been going back and forth on different names). - -#### How it works - -1. `handleKeyEventHelper` is called with the most recent keypress. -2. `Actions.getRelevantAction` determines if all the keys pressed so far uniquely specify any action in actions.ts. If not, we continue waiting for keypresses. -3. `runAction` runs the action that was matched. Movements, Commands and Operators all have separate functions that dictate how to run them - `executeMovement`, `handleCommand`, and `executeOperator` respectively. -4. Now that we've updated VimState, we run `updateView` with the new VimState to "redraw" VSCode to the new state. - -#### vscode.window.onDidChangeTextEditorSelection - -This is my hack to simulate a click event based API in an IDE that doesn't have them (yet?). I check the selection that just came in to see if it's the same as what I thought I previously set the selection to the last time the state machine updated. If it's not, the user *probably* clicked. (But she also could have tab completed!) - -## Release - -To push a release: - -1. Bump the version number and create a git tag: `gulp patch|minor|major` -2. Push the changes: `git push origin --tags` - -In addition to building and testing the extension, when a tag is applied to the commit, the CI server will also create a GitHub release and publish the new version to the Visual Studio marketplace. - -## Troubleshooting - -### Visual Studio Code Slowdown - -If your autocomplete, your fuzzy file search, or your _everything_ is suddenly running slower, try to recall if you ever ran `npm test` instead of just running tests through Visual Studio Code. This will add a massive folder called `.vscode-test/` to your project, which Visual Studio Code will happily consume all of your CPU cycles indexing. - -Long story short, you can speed up VSC by doing this: - -`$ rm -rf .vscode-test/` - -## Styleguides - -We are adhering to VSCode's [coding guidelines](https://github.com/Microsoft/vscode/wiki/Coding-Guidelines). diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/.github/ISSUE_TEMPLATE.md b/.vscode/extensions/vscodevim.vim-0.2.0/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index ab33b6ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,21 +0,0 @@ -For questions, ask us on [Slack](https://vscodevim-slackin.azurewebsites.net/) 👫. Found a bug? Delete this line and fill out the sections below. - ------- - -Please *thumbs-up* 👍 this issue if it personally affects you! You can do this by clicking on the emoji-face on the top right of this post. Issues with more thumbs-up will be prioritized. - ------ - -### What did you do? - -Put the exact keys you pressed. - -### What did you expect to happen? - -### What happened instead? - -### Technical details: - -* VSCode Version: -* VsCodeVim Version: *[please ensure you are on the latest]* -* OS: diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/.github/PULL_REQUEST_TEMPLATE.md b/.vscode/extensions/vscodevim.vim-0.2.0/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 255947a6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,9 +0,0 @@ -Yay! We love PRs! 🎊 - -Please include a description of your change & check your PR against this list, thanks: - -- [ ] Commit message has a short title & issue references -- [ ] Each commit does a logical chunk of work. -- [ ] It builds and tests pass (e.g `gulp tslint`) - -More info can be found by clicking the "guidelines for contributing" link above. diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/.travis.yml b/.vscode/extensions/vscodevim.vim-0.2.0/.travis.yml deleted file mode 100644 index 388d4e26..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/.travis.yml +++ /dev/null @@ -1,59 +0,0 @@ -notifications: - email: false - -sudo: false - -os: -- osx -- linux - -addons: - apt: - packages: - - xclip - -language: node_js - -node_js: -- 6.3.1 - -env: - global: - secure: "LME+kQWa4fRxHgrSBe4rQw+bqXK3P5GRVXQU5RCE1fF8Qj6U98YJBwtXxi83c6RgBfUjxDOOwFwKUH02T+1GTZCdJ3xQPGgfLMBmRqTb8R2dpNlh21nQmHt/3HAUZbC8D6CzbI/WbSTneyH2vWfVzTtwwOTvooekyyG/ZE7ZXGhXlkrCkU4eLnCsZuoIFH8bw6vGx8EB/iv5MaB7qQnUtBHm+lwGC5fEVD5zjuSLYlNo50z422djt7+sRwHG0Oxh4AJoADrCRRoM6r+O3L8SbhWDEue7D509JrNaJSKeKfGMTZWQC9VLUqnk3275+Px/jNx4J/TYayTK+B/dAuodbtznlPXYty879oJBokxkb3hhPTwlHwc+R0NXJAcfzOMFS2II2HzH0u4/tWXrWBrDbh5HKkJ80+/UDbGc7zek7A4qjYzVKsiLir6oxsbh1CUrwZF+6paCRDUAY0+mKqkLb7eaehKLoa0UjrO9xmvmW2giElyfkwRN+/dnNBGLooNGXprOpwH5B4krcsiqvQV3DdDLwFQz/Cq1GSvGvuM4zDll1c0dwsFCFYYYnXROmKhaOPdM6LKgTCGHk2DIYsNckYR71lMB7HzO2gf5AHREm2ViHpP6j1d7BDBOb878nBcuwoQged1LcvFtgAfCdcmdaa6ZvFM0ylZF/ywWmTAHOCo=" - -before_install: -- if [ $TRAVIS_OS_NAME == "linux" ]; then - export CXX="g++-4.9" CC="gcc-4.9" DISPLAY=:99.0; - sh -e /etc/init.d/xvfb start; sleep 3; - fi - -install: -- npm install; - -script: -- npm install -g gulp; -- gulp; -- npm test --silent; - -after_success: -- npm install -g vsce; -- vsce package; - -deploy: -- provider: releases - api_key: - secure: YQLI+5JqIZj4XNrVO6EUrahICsfQVZ64wWmu8mMOj2rOaEid3dIL1Q69YbzQWIbcLt3y4oBGeefrakWdr/k/xgrnrkoEj3XnzgIp2E+e7rJvwnH4tM6tV191iq4wXdTo6vf0Ha/Bo6LpibP/LgPOXOY64/qZ0HtS1zqAxQLz+9b1O2knGnAQnaE0sqf0xQwZBl5kd/ChRV/+IIJJb5p3Pok9idbTW54O9BRb2ue720cvOR3afyIau2njVB8INgvNU9b2cYqg6RLAUOj2RaenuaH7GLI2dIYj9a8wgJyxliNTMGNFRhz+KmXie3tUZDuRytqxIq2SD7FHl744+F4L2YQyMiMMs4bF0jLkeDVwHExQsrdXlQ1pW2GLR7YQQpcr202jBkq+CNC7DBNyQlXwe/21M5kxYMTEJMqTMdPDfPgmhshf6VWqTSDczLDxue72m+gWxwv6kseFSQxwvRXly8hW0ev2rddMt9nu73hAZ+Lkmu16qArQ8HxAQUrBASaDYa0RAqJ3bNj6RwKFsa9/HK27XRrUY5GViMSQSeaEv3EO9Nc0ibMbFFL8EEBB9wXDS75jmlAioQcl1B1rzcKbSW37wSOJH1WUJCpM0+xdQVo8Gngld0LAyugOikir+mcnnEkGCeo2ZdeMEy63iqhCKwz2au4+XbEttBgfhd/una4= - file_glob: true - file: "*.vsix" - skip_cleanup: true - on: - repo: VSCodeVim/Vim - tags: true - condition: $TRAVIS_OS_NAME = linux -- provider: script - script: vsce publish -p $VS_TOKEN - skip_cleanup: true - on: - repo: VSCodeVim/Vim - tags: true - condition: $TRAVIS_OS_NAME = linux \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/.vsixmanifest b/.vscode/extensions/vscodevim.vim-0.2.0/.vsixmanifest deleted file mode 100644 index ef5d94d2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/.vsixmanifest +++ /dev/null @@ -1,38 +0,0 @@ - - - - - Vim - Vim emulation for Visual Studio Code - vim,vi,vscodevim,keybindings - Other - Public - - - - - - - - - - - - - - - - - - extension/LICENSE.txt - extension/images/icon.png - - - - - - - - - - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/LICENSE.txt b/.vscode/extensions/vscodevim.vim-0.2.0/LICENSE.txt deleted file mode 100644 index a7f081e8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 VSCode-Extension - -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/.vscode/extensions/vscodevim.vim-0.2.0/README.md b/.vscode/extensions/vscodevim.vim-0.2.0/README.md deleted file mode 100644 index 219ce900..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/README.md +++ /dev/null @@ -1,144 +0,0 @@ -[![Version](http://vsmarketplacebadge.apphb.com/version/vscodevim.vim.svg)](http://aka.ms/vscodevim) -[![Build Status](https://travis-ci.org/VSCodeVim/Vim.svg?branch=master)](https://travis-ci.org/VSCodeVim/Vim) [![Slack Status](https://vscodevim-slackin.azurewebsites.net/badge.svg)](https://vscodevim-slackin.azurewebsites.net) - -# Vim - -VSCodeVim is a [Visual Studio Code](https://code.visualstudio.com/) extension that provides Vim keybindings within Visual Studio Code. - -Please **[report missing or buggy features on GitHub](https://github.com/VSCodeVim/Vim/issues)**. - -We've added a lot of functionality, but everyone uses Vim in their own special way, so let us know if we're missing your favorite obscure command. :wink: - -We're super friendly people if you want to drop by and talk to us on our [Slack channel](https://vscodevim-slackin.azurewebsites.net)! - -![Screenshot](https://github.com/VSCodeVim/Vim/raw/master/images/screen.png) - -## Features We Support - -* All modes (including visual block mode!) -* Most typical commands, including command combinations like `c3w`, `daw`, `2dd`, etc. (Check the [roadmap](https://github.com/VSCodeVim/Vim/blob/master/ROADMAP.md) for details.) -* Command remapping (jj to esc) -* Repeating actions with `.` -* Incremental search with `/` and `?` that works like Vim (doesn't just open the search box!) -* Correct undo/redo state -* Marks -* Vim Options - -## Roadmap - -See our [Github Milestone page](https://github.com/VSCodeVim/Vim/milestones) for an idea of what we plan to implement next. - -## Install - -1. Within Visual Studio Code, open the command palette (`Ctrl-Shift-P` / `Cmd-Shift-P`) -2. Select `Install Extension` and search for 'vim' *or* run `ext install vim` - -## Configure - -Due to overlap between VSCode and VIm, options are loaded slightly different from native Vim. The option loading sequence/priority is - -1. `:set {option}` on the fly -2. [TODO] .vimrc. -3. `vim.{option}` from user settings or workspace settings. -4. VSCode configuration -5. VSCodeVim flavored Vim option default values - -### Supported Options - -Vim options can be added to your user or workspace settings (open Command Pallete and search for "User Settings" or "Workspace Settings"). Changes require restarting of VSCode to take effect. - -The following is a subset of the supported configurations; the full list is described in [package.json](https://github.com/VSCodeVim/Vim/blob/master/package.json#L175): - -* insertModeKeyBindings/otherModesKeyBindings - * Keybinding overrides to use for insert and other (non-insert) modes - * *Example:* Bind `jj` to `` while in insert mode - - ``` - "vim.insertModeKeyBindings": [ - { - "before": ["j", "j"], - "after": [""] - } - ] - ``` - - Similarly for `otherModesKeyBindings`, bind `jj` to `` for modes which are not insert mode - - ``` - "vim.otherModesKeyBindings": [ - { - "before": ["j", "j"], - "after": [""] - } - ] - ``` - -* insertModeKeyBindingsNonRecursive/otherModesKeyBindingsNonRecursive - * Non-recursive keybinding overrides to use for insert and other (non-insert) modes (similar to `:noremap`) - * *Example:* Bind `j` to `gj`. Notice that if you attempted this binding normally, the j in gj would be expanded into gj, on and on forever. Stop this recursive expansion using insertModeKeyBindingsNonRecursive/otherModesKeyBindingNonRecursive. - - ``` - "vim.otherModesKeyBindingsNonRecursive": [ - { - "before": ["j"], - "after": ["g", "j"] - }] - ``` - -* useCtrlKeys - * Enable Vim ctrl keys thus overriding common VSCode operations (eg. copy, paste, find, etc). Setting this option to true will enable: - * `ctrl+c`, `ctrl+[` => `` - * `ctrl+f` => Page Forward - * `ctrl+v` => Visual Block Mode - * etc. - * Type: Boolean (Default: `false`) - * Example: - - ``` - "vim.useCtrlKeys": true - ``` - -* useSystemClipboard - * Enable yanking to the system clipboard by default - * Type: Boolean (Default: `false`) - -* useSolidBlockCursor - * Use a non-blinking block cursor - * Type: Boolean (Default: `false`) - -* ignorecase - * Ignore case in search patterns - * Type: Boolean (Default: `true`) - -* smartcase - * Override the 'ignorecase' option if the search pattern contains upper case characters - * Type: Boolean (Default: `true`) - -* hlsearch - * When there is a previous search pattern, highlight all its matches - * Type: Boolean (Default: `true`) - -## F.A.Q. - -#### `j`, `k` and others don't repeat when I hold them down. - -On OS X, open Terminal and run the following command: - -``` -defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false // For VSCode -defaults write com.microsoft.VSCodeInsiders ApplePressAndHoldEnabled -bool false // For VSCode Insider -``` - -## Contributing - -This project is maintained by a group of awesome [contributors](https://github.com/VSCodeVim/Vim/graphs/contributors) and contributions are extremely welcome :heart:. If you are having trouble thinking of how you can help, check out our [roadmap](https://github.com/VSCodeVim/Vim/blob/master/ROADMAP.md). - -For a quick tutorial on how to get started, see our [contributing guide](https://github.com/VSCodeVim/Vim/blob/master/.github/CONTRIBUTING.md). - -## Changelog - -Please see our [list of recent releases and features added.](https://github.com/VSCodeVim/Vim/releases) - -## License - -MIT, see [License](https://github.com/VSCodeVim/Vim/blob/master/LICENSE) for more information. diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/ROADMAP.md b/.vscode/extensions/vscodevim.vim-0.2.0/ROADMAP.md deleted file mode 100644 index f538a148..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/ROADMAP.md +++ /dev/null @@ -1,580 +0,0 @@ -## Key - -:white_check_mark: - command done - -:white_check_mark: :star: - command done with VS Code specific customization - -:warning: - some variations of the command are not supported - -:running: work in progress - -:arrow_down: - command is low priority; open an issue (or thumbs up the relevant issue) if you want to see it sooner - -:x: - command impossible with current VSCode API - -:1234: - command accepts numeric prefix - -## Roadmap - -These are the big Vim features, put generally in the order in which we plan to implement them. - -Status | Command ----|-------- -:white_check_mark: | Normal Mode -:white_check_mark: | Insert Mode -:white_check_mark: | Visual Mode -:white_check_mark: | Visual Line Mode -:white_check_mark: | Number Prefixes -:white_check_mark: | . Operator -:warning: | Searching with / and ? -:white_check_mark: | Correct Undo/Redo -:warning: | Command Remapping -:warning: | Marks -:white_check_mark: | Text Objects -:white_check_mark: | Visual Block Mode -:warning: | Replace Mode - | Multiple Select Mode - | Macros -:warning: | Buffer/Window/Tab - - -Now follows an exhaustive list of every known Vim command that we could find. - -## Left-right motions - -Status | Command | Description ----|--------|------------ -:white_check_mark: |:1234: h | left (also: CTRL-H, BS, or Left key) -:white_check_mark: |:1234: l | right (also: Space or Right key) -:white_check_mark: | 0 | to first character in the line (also: Home key) -:white_check_mark: | ^ | to first non-blank character in the line -:white_check_mark: |:1234: $ | to the last character in the line (N-1 lines lower) (also: End key) -:white_check_mark: | g0 | to first character in screen line (differs from "0" when lines wrap) -:white_check_mark: | g^ | to first non-blank character in screen line (differs from "^" when lines wrap) -:white_check_mark: |:1234: g$ | to last character in screen line (differs from "$" when lines wrap) -:white_check_mark: | gm | to middle of the screen line -:white_check_mark: |:1234: \| | to column N (default: 1) -:white_check_mark: |:1234: f{char} | to the Nth occurrence of {char} to the right -:white_check_mark: |:1234: F{char} | to the Nth occurrence of {char} to the left -:white_check_mark: |:1234: t{char} | till before the Nth occurrence of {char} to the right -:white_check_mark: |:1234: T{char} | till before the Nth occurrence of {char} to the left -:white_check_mark: |:1234: ; | repeat the last "f", "F", "t", or "T" N times -:white_check_mark: |:1234: , | repeat the last "f", "F", "t", or "T" N times in opposite direction - -## Up-down motions - -Status | Command | Description ----|--------|------------ -:white_check_mark: | :1234: k | up N lines (also: CTRL-P and Up) -:white_check_mark: | :1234: j | up N lidown N lines (also: CTRL-J, CTRL-N, NL, and Down) -:white_check_mark: | :1234: - | up N lines, on the first non-blank character -:white_check_mark: | :1234: + | down N lines, on the first non-blank character (also: CTRL-M and CR) -:white_check_mark: | :1234: _ | down N-1 lines, on the first non-blank character -:white_check_mark: | :1234: G | goto line N (default: last line), on the first non-blank character -:white_check_mark: | :1234: gg | goto line N (default: first line), on the first non-blank character -:white_check_mark: | :1234: % | goto line N percentage down in the file; N must be given, otherwise it is the |%| command -:white_check_mark: | :1234: gk | up N screen lines (differs from "k" when line wraps) -:white_check_mark: | :1234: gj | own N screen lines (differs from "j" when line wraps) - -## Text object motions - -Status | Command | Description ----|--------|------------ -:white_check_mark: | :1234: w | N words forward -:white_check_mark: | :1234: W | N blank-separated |WORD|s forward -:white_check_mark: | :1234: e | N words forward to the end of the Nth word -:white_check_mark: | :1234: E | N words forward to the end of the Nth blank-separated |WORD| -:white_check_mark: | :1234: b | N words backward -:white_check_mark: | :1234: B | N blank-separated |WORD|s backward -:white_check_mark: | :1234: ge | N words backward to the end of the Nth word -:white_check_mark: | :1234: gE | N words backward to the end of the Nth blank-separated |WORD| -:white_check_mark: | :1234: ) | N sentences forward -:white_check_mark: | :1234: ( | N sentences backward -:white_check_mark: | :1234: } | N paragraphs forward -:white_check_mark: | :1234: { | N paragraphs backward -:white_check_mark: | :1234: ]] | N sections forward, at start of section -:white_check_mark: | :1234: [[ | N sections backward, at start of section -:white_check_mark: | :1234: ][ | N sections forward, at end of section -:white_check_mark: | :1234: [] | N sections backward, at end of section -:white_check_mark: | :1234: [( | N times back to unclosed '(' -:white_check_mark: | :1234: [{ | N times back to unclosed '{' -:arrow_down: | :1234: [m | N times back to start of method (for Java) -:arrow_down: | :1234: [M | N times back to end of method (for Java) -:white_check_mark: | :1234: ]) | N times forward to unclosed ')' -:white_check_mark: | :1234: ]} | N times forward to unclosed '}' -:arrow_down: | :1234: ]m | N times forward to start of method (for Java) -:arrow_down: | :1234: ]M | N times forward to end of method (for Java) -:arrow_down: | :1234: [# | N times back to unclosed "#if" or "#else" -:arrow_down: | :1234: ]# | N times forward to unclosed "#else" or "#endif" -:arrow_down: | :1234: [* | N times back to start of a C comment "/*" -:arrow_down: | :1234: ]* | N times forward to end of a C comment "*/" - -## Pattern searches - -Status | Command | Description | Note ----|--------|------------|------------------ -:white_check_mark: :star: | :1234: `/{pattern}[/[offset]]` | search forward for the Nth occurrence of {pattern} | Currently we only support JavaScript Regex but not Vim's in-house Regex engine. -:white_check_mark: :star: | :1234: `?{pattern}[?[offset]]` | search backward for the Nth occurrence of {pattern} | Currently we only support JavaScript Regex but not Vim's in-house Regex engine. -:warning: | :1234: `/` | repeat last search, in the forward direction | {count} is not supported. -:warning: | :1234: `?` | repeat last search, in the backward direction | {count} is not supported. -:warning: | :1234: n | repeat last search | {count} is not supported. -:warning: | :1234: N | repeat last search, in opposite direction | {count} is not supported. -:white_check_mark: | :1234: * | search forward for the identifier under the cursor -:white_check_mark: | :1234: # | search backward for the identifier under the cursor -:arrow_down: | :1234: g* | like "*", but also find partial matches -:arrow_down: | :1234: g# | like "#", but also find partial matches -:white_check_mark: | gd | goto local declaration of identifier under the cursor -:arrow_down: | gD | goto global declaration of identifier under the cursor - -## Marks and motions - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | m{a-zA-Z} | mark current position with mark {a-zA-Z} -:white_check_mark:| `{a-z} | go to mark {a-z} within current file -:white_check_mark:| `{A-Z} | go to mark {A-Z} in any file -:white_check_mark:| `{0-9} | go to the position where Vim was previously exited -:arrow_down:| `` | go to the position before the last jump -:arrow_down:| `" | go to the position when last editing this file -:arrow_down:| `[ | go to the start of the previously operated or put text -:arrow_down:| `] | go to the end of the previously operated or put text -:arrow_down:| `< | go to the start of the (previous) Visual area -:arrow_down:| `> | go to the end of the (previous) Visual area -:arrow_down:| `. | go to the position of the last change in this file -:arrow_down:| '{a-zA-Z0-9[]'"<>.} | same as `, but on the first non-blank in the line -:arrow_down:| :marks | print the active marks -:arrow_down:| :1234: CTRL-O | go to Nth older position in jump list -:arrow_down:| :1234: CTRL-I | go to Nth newer position in jump list -:arrow_down:| :ju[mps] | print the jump list - -## Various motions - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | % | find the next brace, bracket, comment, or "#if"/ "#else"/"#endif" in this line and go to its match -:white_check_mark: |:1234: H | go to the Nth line in the window, on the first non-blank -:white_check_mark: | M | go to the middle line in the window, on the first non-blank -:white_check_mark: |:1234: L | go to the Nth line from the bottom, on the first non-blank -:arrow_down:|:1234: go | go to Nth byte in the buffer -:arrow_down:|:[range]go[to] [off] | go to [off] byte in the buffer - -## Using tags - -Status | Command | Description ----|--------|------------------------------ -:arrow_down:| :ta[g][!] {tag} | jump to tag {tag} -:arrow_down:| :[count]ta[g][!] | jump to [count]'th newer tag in tag list -:arrow_down:| CTRL-] | jump to the tag under cursor, unless changes have been made -:arrow_down:| :ts[elect][!] [tag] | list matching tags and select one to jump to -:arrow_down:| :tj[ump][!] [tag] | jump to tag [tag] or select from list when there are multiple matches -:arrow_down:| :lt[ag][!] [tag] | jump to tag [tag] and add matching tags to the location list -:arrow_down:| :tagsa | print tag list -:arrow_down:| :1234: CTRL-T | jump back from Nth older tag in tag list -:arrow_down:| :[count]po[p][!] | jump back from [count]'th older tag in tag list -:arrow_down:| :[count]tn[ext][!] | jump to [count]'th next matching tag -:arrow_down:| :[count]tp[revious][!] | jump to [count]'th previous matching tag -:arrow_down:| :[count]tr[ewind][!] | jump to [count]'th matching tag -:arrow_down:| :tl[ast][!] | jump to last matching tag -:arrow_down:| :pt[ag] {tag} | open a preview window to show tag {tag} -:arrow_down:| CTRL-W } | like CTRL-] but show tag in preview window -:arrow_down:| :pts[elect] | like ":tselect" but show tag in preview window -:arrow_down:| :ptj[ump] | like ":tjump" but show tag in preview window -:arrow_down:| :pc[lose] | close tag preview window -:arrow_down:| CTRL-W z | close tag preview window` - -## Scrolling - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | :1234: CTRL-E | window N lines downwards (default: 1) -:white_check_mark: | :1234: CTRL-D | window N lines Downwards (default: 1/2 window) -:white_check_mark: | :1234: CTRL-F | window N pages Forwards (downwards) -:white_check_mark: | :1234: CTRL-Y | window N lines upwards (default: 1) -:white_check_mark: | :1234: CTRL-U | window N lines Upwards (default: 1/2 window) -:white_check_mark: | :1234: CTRL-B | window N pages Backwards (upwards) -:white_check_mark: | z CR or zt | redraw, current line at top of window -:white_check_mark: | z. or zz | redraw, current line at center of window -:white_check_mark: | z- or zb | redraw, current line at bottom of window - -These only work when 'wrap' is off: - -Status | Command | Description | Note ----|--------|------------------|------------ -:white_check_mark: :star: | :1234: zh | scroll screen N characters to the right | In Code, the cursor wil always move when you run this command, whether the horizontal scrollbar moves or not. -:white_check_mark: :star: | :1234: zl | scroll screen N characters to the left | As above -:white_check_mark: :star: | :1234: zH | scroll screen half a screenwidth to the right | As above -:white_check_mark: :star: | :1234: zL | scroll screen half a screenwidth to the left | As above - -## Inserting text - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | :1234: a | append text after the cursor (N times) -:white_check_mark: | :1234: A | append text at the end of the line (N times) -:white_check_mark: | :1234: i | insert text before the cursor (N times) (also: Insert) -:white_check_mark: | :1234: I | insert text before the first non-blank in the line (N times) -:white_check_mark: | :1234: gI | insert text in column 1 (N times) -:white_check_mark: | :1234: o | open a new line below the current line, append text (N times) -:white_check_mark: | :1234: O | open a new line above the current line, append text (N times) - -in Visual block mode: - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark:| I | insert the same text in front of all the selected lines -:white_check_mark:| A | append the same text after all the selected lines - -## Insert mode keys - -leaving Insert mode: - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | Esc | end Insert mode, back to Normal mode -:white_check_mark: | CTRL-C | like Esc, but do not use an abbreviation -:arrow_down: | CTRL-O {command} | execute {command} and return to Insert mode - -moving around: - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | cursor keys | move cursor left/right/up/down -:white_check_mark: | shift-left/right | one word left/right -:white_check_mark: | shift-up/down | one screenful backward/forward -:white_check_mark: | End | cursor after last character in the line -:white_check_mark: | Home | cursor to first character in the line - -## Special keys in Insert mode - -Status | Command | Description | Note ----|--------|-----------|------------------- -:arrow_down: |CTRL-V {char}.. | insert character literally, or enter decimal byte value -:warning: | NL or CR or CTRL-M or CTRL-J | begin new line | CTRL-M and CTRL-J are not supported yet -:white_check_mark: | CTRL-E | insert the character from below the cursor -:white_check_mark: | CTRL-Y | insert the character from above the cursor -:running: | CTRL-A | insert previously inserted text -:running: | CTRL-@ | insert previously inserted text and stop Insert mode -:white_check_mark: | CTRL-R {0-9a-z%#:.-="} | insert the contents of a register -:arrow_down:| CTRL-N | insert next match of identifier before the cursor -:arrow_down:| CTRL-P | insert previous match of identifier before the cursor -:arrow_down:| CTRL-X ... | complete the word before the cursor in various ways -:white_check_mark: | BS or CTRL-H | delete the character before the cursor -:white_check_mark: | Del | delete the character under the cursor -:white_check_mark: | CTRL-W | delete word before the cursor -:white_check_mark: | CTRL-U | delete all entered characters in the current line -:white_check_mark: | CTRL-T | insert one shiftwidth of indent in front of the current line -:white_check_mark: | CTRL-D | delete one shiftwidth of indent in front of the current line - | 0 CTRL-D | delete all indent in the current line - | ^ CTRL-D | delete all indent in the current line, restore indent in next line - -## Digraphs - -Status | Command | Description ----|--------|------------------------------ -:arrow_down: | :dig[raphs] | show current list of digraphs -:arrow_down: | :dig[raphs] {char1}{char2} {number} ... | add digraph(s) to the list - -## Special inserts - -Status | Command | Description ----|--------|------------------------------ -:warning: | :r [file] | insert the contents of [file] below the cursor -:warning: | :r! {command} | insert the standard output of {command} below the cursor - -## Deleting text - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | :1234: x | delete N characters under and after the cursor -:white_check_mark: | :1234: Del | delete N characters under and after the cursor -:white_check_mark: | :1234: X | delete N characters before the cursor -:white_check_mark: | :1234: d{motion} | delete the text that is moved over with {motion} -:white_check_mark: | {visual}d | delete the highlighted text -:white_check_mark: | :1234: dd | delete N lines -:white_check_mark: | :1234: D | delete to the end of the line (and N-1 more lines) -:white_check_mark: | :1234: J | join N-1 lines (delete EOLs) -:white_check_mark: | {visual}J | join the highlighted lines -:white_check_mark: | :1234: gJ | like "J", but without inserting spaces -:white_check_mark:| {visual}gJ | like "{visual}J", but without inserting spaces -:white_check_mark:| :[range]d [x] | delete [range] lines [into register x] - -## Copying and moving text - -Status | Command | Description | Note ----|--------|-------------|----------------- -:running: | "{char} | use register {char} for the next delete, yank, or put | read only registers are not supported yet -:white_check_mark: | "* | use register `*` to access system clipboard -:white_check_mark: | :reg | show the contents of all registers -:white_check_mark: | :reg {arg} | show the contents of registers mentioned in {arg} -:white_check_mark: | :1234: y{motion} | yank the text moved over with {motion} into a register -:white_check_mark: | {visual}y | yank the highlighted text into a register -:white_check_mark: | :1234: yy | yank N lines into a register -:white_check_mark: | :1234: Y | yank N lines into a register -:white_check_mark: | :1234: p | put a register after the cursor position (N times) -:white_check_mark: | :1234: P | put a register before the cursor position (N times) -:white_check_mark: | :1234: ]p | like p, but adjust indent to current line -:white_check_mark: | :1234: [p | like P, but adjust indent to current line -:white_check_mark: | :1234: gp | like p, but leave cursor after the new text -:white_check_mark: | :1234: gP | like P, but leave cursor after the new text - -## Changing text - -Status | Command | Description | Note ----|--------|------------|------------------ -:white_check_mark: | :1234: r{char} | replace N characters with {char} -:arrow_down:| :1234: gr{char} | replace N characters without affecting layout -:white_check_mark: | :1234: R | enter Replace mode (repeat the entered text N times) | {count} is not supported yet -:arrow_down:| :1234: gR | enter virtual Replace mode: Like Replace mode but without affecting layout -:arrow_down:| {visual}r{char} | in Visual block mode: Replace each char of the selected text with {char} - -(change = delete text and enter Insert mode) - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | :1234: c{motion} | change the text that is moved over with {motion} -:white_check_mark: | {visual}c | change the highlighted text -:white_check_mark: | :1234: cc | change N lines -:white_check_mark: | :1234: S | change N lines -:white_check_mark: | :1234: C | change to the end of the line (and N-1 more lines) -:white_check_mark: | :1234: s | change N characters -:white_check_mark: | {visual}c | in Visual block mode: Change each of the selected lines with the entered text -:white_check_mark: | {visual}C | in Visual block mode: Change each of the selected lines until end-of-line with the entered text -:white_check_mark: | switch case for highlighted text -:white_check_mark: | {visual}u | make highlighted text lowercase -:white_check_mark: | {visual}U | make highlighted text uppercase -:white_check_mark: | g~{motion} | switch case for the text that is moved over with {motion} -:white_check_mark: | gu{motion} | make the text that is moved over with {motion} lowercase -:white_check_mark: | gU{motion} | make the text that is moved over with {motion} uppercase -:arrow_down: | {visual}g? | perform rot13 encoding on highlighted text -:arrow_down: | g?{motion} | perform rot13 encoding on the text that is moved over with {motion} -:white_check_mark: | :1234: CTRL-A | add N to the number at or after the cursor -:white_check_mark: | :1234: CTRL-X | subtract N from the number at or after the cursor -:white_check_mark: | :1234: <{motion} | move the lines that are moved over with {motion} one shiftwidth left -:white_check_mark: | :1234: << | move N lines one shiftwidth left -:white_check_mark: | :1234: >{motion} | move the lines that are moved over with {motion} one shiftwidth right -:white_check_mark: | :1234: >> | move N lines one shiftwidth right -:arrow_down:| :1234: gq{motion}| format the lines that are moved over with {motion} to 'textwidth' length -:arrow_down:| :[range]ce[nter] [width] | center the lines in [range] -:arrow_down:| :[range]le[ft] [indent] | left-align the lines in [range] (with [indent]) -:arrow_down:| :[ranee]ri[ght] [width] | right-align the lines in [range] - -## Complex changes - -Status | Command | Description | Note ----|--------|------------------|------------ -:arrow_down:| :1234: `!{motion}{command}` | filter the lines that are moved over through {command} -:arrow_down:| :1234: `!!{command}` | filter N lines through {command} -:arrow_down:| `{visual}!{command}` | filter the highlighted lines through {command} -:arrow_down:| `:[range]! {command}` | filter [range] lines through {command} -:white_check_mark: | :1234: ={motion} | filter the lines that are moved over through 'equalprg' -:arrow_down:| :1234: == | filter N lines through 'equalprg' -:white_check_mark: | {visual}= | filter the highlighted lines through 'equalprg' -:white_check_mark: :star: :warning: | :[range]s[ubstitute]/{pattern}/{string}/[g][c] | substitute {pattern} by {string} in [range] lines; with [g], replace all occurrences of {pattern}; with [c], confirm each replacement | Currently we only support JavaScript Regex and only options `gi` are implemented -:arrow_down:| :[range]s[ubstitute] [g][c] | repeat previous ":s" with new range and options -:arrow_down:| & | Repeat previous ":s" on current line without options -:arrow_down:| :[range]ret[ab][!] [tabstop] | set 'tabstop' to new value and adjust white space accordingly - -## Visual mode - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | v | start highlighting characters -:white_check_mark: | V | start highlighting linewise -:white_check_mark:| o | exchange cursor position with start of highlighting -:arrow_down: | gv | start highlighting on previous visual area -:white_check_mark: | v | highlight characters or stop highlighting -:white_check_mark: | V | highlight linewise or stop highlighting -:white_check_mark: | CTRL-V | highlight blockwise or stop highlighting - -## Text objects (only in Visual mode or after an operator) - -Status | Command | Description ----|--------|------------------------------ -:white_check_mark: | :1234: aw | Select "a word" -:white_check_mark: | :1234: iw | Select "inner word" -:white_check_mark: | :1234: aW | Select "a |WORD|" -:white_check_mark: | :1234: iW | Select "inner |WORD|" -:white_check_mark: | :1234: as | Select "a sentence" -:white_check_mark: | :1234: is | Select "inner sentence" -:white_check_mark: | :1234: ap | Select "a paragraph" -:white_check_mark: | :1234: ip | Select "inner paragraph" -:white_check_mark: | :1234: a], a[ | select '[' ']' blocks -:white_check_mark: | :1234: i], i[ | select inner '[' ']' blocks -:white_check_mark: | :1234: ab, a(, a) | Select "a block" (from "[(" to "])") -:white_check_mark: | :1234: ib, i), i( | Select "inner block" (from "[(" to "])") -:white_check_mark: | :1234: a>, a< | Select "a <> block" -:white_check_mark: | :1234: i>, i< | Select "inner <> block" -:white_check_mark: | :1234: aB, a{, a} | Select "a Block" (from "[{" to "]}") -:white_check_mark: | :1234: iB, i{, i} | Select "inner Block" (from "[{" to "]}") -:white_check_mark: | :1234: at | Select "a tag block" (from <aaa> to </aaa>) -:white_check_mark: | :1234: it | Select "inner tag block" (from <aaa> to </aaa>) -:white_check_mark: | :1234: a' | Select "a single quoted string" -:white_check_mark: | :1234: i' | Select "inner single quoted string" -:white_check_mark: | :1234: a" | Select "a double quoted string" -:white_check_mark: | :1234: i" | Select "inner double quoted string" -:white_check_mark: | :1234: a` | Select "a backward quoted string" -:white_check_mark: | :1234: i` | Select "inner backward quoted string" - -## Repeating commands - -Status | Command | Description | Note ----|--------|--------------|---------------- -:white_check_mark: :star: | :1234: . | repeat last change (with count replaced with N) | It won't repeat Code's auto-complete change. -:arrow_down:| q{a-z} | record typed characters into register {a-z} -:arrow_down:| q{A-Z} | record typed characters, appended to register {a-z} -:arrow_down:| q | stop recording -:arrow_down:| :1234: @{a-z} | execute the contents of register {a-z} (N times) -:arrow_down:| :1234: @@ | repeat previous @{a-z} (N times) -:arrow_down:| :@{a-z} | execute the contents of register {a-z} as an Ex command -:arrow_down:| :@@ | repeat previous :@{a-z} -:arrow_down:| :[range]g[lobal]/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} matches -:arrow_down:| :[range]g[lobal]!/{pattern}/[cmd] | execute Ex command [cmd] (default: ":p") on the lines within [range] where {pattern} does NOT match -:arrow_down: | :so[urce] {file} | read Ex commands from {file} -:arrow_down: | :so[urce]! {file} | read Vim commands from {file} -:arrow_down: | :sl[eep] [sec] | don't do anything for [sec] seconds -:arrow_down: | :1234: gs | goto Sleep for N seconds - -## options - -Status | Command | Description | Note ----|--------|---------|--------------------- -:arrow_down: | :se[t] | show all modified options -:arrow_down: | :se[t] all | show all non-termcap options -:arrow_down: | :se[t] termcap | show all termcap options -:white_check_mark: | :se[t] {option} | set boolean option (switch it on), show string or number option -:white_check_mark: | :se[t] no{option} | reset boolean option (switch it off) -:white_check_mark: | :se[t] inv{option} |invert boolean option -:white_check_mark: | :se[t] {option}={value} | set string/number option to {value} -:white_check_mark: | :se[t] {option}+={value} | append {value} to string option, add {value} to number option -:white_check_mark: | :se[t] {option}-={value} | remove {value} to string option, subtract {value} from number option | We don't support string option here yet. -:white_check_mark: | :se[t] {option}? | show value of {option} -:arrow_down: | :se[t] {option}& | reset {option} to its default value -:arrow_down: | :setl[ocal] | like ":set" but set the local value for options that have one -:arrow_down: | :setg[lobal] | like ":set" but set the global value of a local option -:arrow_down: | :fix[del] | set value of 't_kD' according to value of 't_kb' -:arrow_down: | :opt[ions] | open a new window to view and set options, grouped by functionality, a one line explanation and links to the help - -Since the list is too long, now we just put those already supported options here. - -Status | Command | Default Value | Description ----|--------|-------|------------------------------ -:white_check_mark:| tabstop (ts) | 4. we use Code's default value `tabSize` instead of Vim | number of spaces that <Tab> in file uses -:white_check_mark:| hlsearch (hls) | false | When there is a previous search pattern, highlight all its matches. -:white_check_mark:| ignorecase (ic) | true | Ignore case in search patterns. -:white_check_mark:| smartcase (scs) | true | Override the 'ignorecase' option if the search pattern contains upper case characters. -:white_check_mark:| iskeyword (isk) | `@,48-57,_,128-167,224-235` | keywords contain alphanumeric characters and '_'. If there is no user setting for `iskeyword`, we use `editor.wordSeparators` properties. -:white_check_mark:| scroll (scr) | 20 | Number of lines to scroll with CTRL-U and CTRL-D commands. -:white_check_mark:| expandtab (et) | True. we use Code's default value `inserSpaces` instead of Vim | use spaces when <Tab> is inserted -:white_check_mark:| autoindent | true | Keep indentation when doing `cc` or `S` in normal mode to replace a line. - ---- - -## Undo/Redo commands - -Status | Command | Description | Note ----|--------|-------|------------------------------ -:running: | :1234: u | undo last N changes | Current implementation may not cover every case perfectly. -:running: | :1234: CTRL-R | redo last N undone changes | As above. - | U | restore last changed line - -## External commands - -Status | Command | Description ----|--------|----------------- -:arrow_down: | :sh[ell] | start a shell -:arrow_down: | :!{command} | execute {command} with a shell -:arrow_down: | K | lookup keyword under the cursor with 'keywordprg' program (default: "man") - -## Ex ranges - -Status | Command | Description | Note ----|--------|-------|------------|------------------ -:white_check_mark: | , | separates two line numbers| -:white_check_mark: :star: :warning: | ; | idem, set cursor to the first line number before interpreting the second one | The cursor movement is not included. -:white_check_mark: | {number} | an absolute line number -:white_check_mark: | . | the current line -:white_check_mark: | $ | the last line in the file -:white_check_mark: | % | equal to 1,$ (the entire file) -:white_check_mark: | * | equal to '<,'> (visual area) -:white_check_mark: | 't | position of mark t -:arrow_down: | /{pattern}[/] | the next line where {pattern} matches -:arrow_down: | ?{pattern}[?] | the previous line where {pattern} matches -:white_check_mark: | +[num] | add [num] to the preceding line number (default: 1) -:white_check_mark: | -[num] | subtract [num] from the preceding line number (default: 1) - -## Editing a file - -Status | Command | Description | Note ----|--------|------------------|----------- -:white_check_mark: :star: | :e[dit] {file} | Edit {file}. | We will open file in a new Tab of current Grouped Editor instead of opening in current tab. - -## Multi-window commands - -Status | Command | Description | Note ----|--------|-----------------|------------- -:white_check_mark: :star: | :e[dit] {file} | Edit {file}. | We will open file in a new Tab of current Grouped Editor instead of opening in current tab. -:white_check_mark: :star: | <ctrl-w> hl | Switching between windows. | As we don't have the concept of Window in VS Code, we are mapping these commands to switching between Grouped Editors. -:x: | :sp {file} | Split current window in two. | VS Code doesn't support split Window horizontally. -:white_check_mark: :star: | :vsp {file} | Split vertically current window in two. | VS Code only supports three vertical window at most and that's the limitation of this command. -:x: | :new | Create a new window horizontally and start editing an empty file in it. | VS Code doesn't support split Window horizontally. -:white_check_mark: :star: | :vne[w] | Create a new window vertically and start editing an empty file in it. | VS Code only supports three vertical window at most and that's the limitation of this command. - - -## Tabs - -Status | Command | Description | Note ----|--------|------------------|------------ -:white_check_mark: | :tabn[ext] :1234: | Go to next tab page or tab page {count}. The first tab page has number one. -:white_check_mark: | {count}<C-PageDown>, {count}gt | Same as above -:white_check_mark: | :tabp[revious] :1234: | Go to the previous tab page. Wraps around from the first one to the last one. -:white_check_mark: | :tabN[ext] :1234: | Same as above -:white_check_mark: | {count}<C-PageUp>, {count}gT | Same as above -:white_check_mark: | :tabfir[st] | Go to the first tab page. -:white_check_mark: | :tabl[ast] | Go to the last tab page. -:white_check_mark: | :tabe[dit] {file} | Open a new tab page with an empty window, after the current tab page -:arrow_down: | :[count]tabe[dit], :[count]tabnew | Same as above | [count] is not supported. -:white_check_mark: | :tabnew {file} | Open a new tab page with an empty window, after the current tab page -:arrow_down:| :[count]tab {cmd} | Execute {cmd} and when it opens a new window open a new tab page instead. -:white_check_mark: :star: | :tabc[lose][!] :1234: | Close current tab page or close tab page {count}. | Code will close tab directly without saving. -:white_check_mark: :star: | :tabo[nly][!] | Close all other tab pages. | `!` is not supported yet. | Code will close tab directly without saving. -:white_check_mark: | :tabm[ove] [N] | Move the current tab page to after tab page N. -:arrow_down:| :tabs | List the tab pages and the windows they contain. | You can always use Code's built-in shortcut: `cmd/ctrl+p` -:arrow_down:| :tabd[o] {cmd} | Execute {cmd} in each tab page. - -## Folding -### Fold methods -The folding method can be set with the 'foldmethod' option. This is currently not possible as we are relying on Code's Fold logic. - -### Fold commands - -Status | Command | Description ----|--------|------------------------------ -:arrow_down: | zf{motion} or {Visual}zf | Operator to create a fold. -:arrow_down: | zF | Create a fold for [count] lines. Works like "zf". -:arrow_down: | zd | Delete one fold at the cursor. -:arrow_down: | zD | Delete folds recursively at the cursor. -:arrow_down: | zE | Eliminate all folds in the window. -:white_check_mark: | zo | Open one fold under the cursor.When a count is given, that many folds deep will be opened. -:white_check_mark: | zO | Open all folds under the cursor recursively. -:white_check_mark: | zc | Close one fold under the cursor. When a count is given, that many folds deep are closed. -:white_check_mark:| zC | Close all folds under the cursor recursively. -:arrow_down: | za | When on a closed fold: open it. When on an open fold: close it and set 'foldenable'. -:arrow_down: | zA | When on a closed fold: open it recursively. When on an open fold: close it recursively and set 'foldenable'. -:arrow_down: | zv | View cursor line: Open just enough folds to make the line in which the cursor is located not folded. -:arrow_down: | zx | Update folds: Undo manually opened and closed folds: re-apply 'foldlevel', then do "zv": View cursor line. -:arrow_down: | zX | Undo manually opened and closed folds -:arrow_down: | zm | Fold more: Subtract one from 'foldlevel'. -:white_check_mark: | zM | Close all folds: set 'foldlevel' to 0. 'foldenable' will be set. -:arrow_down: | zr | Reduce folding: Add one to 'foldlevel'. -:white_check_mark: | zR | Open all folds. This sets 'foldlevel' to highest fold level. -:arrow_down: | zn | Fold none: reset 'foldenable'. All folds will be open. -:arrow_down: | zN | Fold normal: set 'foldenable'. All folds will be as they were before. -:arrow_down: | zi | Invert 'foldenable'. -:arrow_down: | [z | Move to the start of the current open fold. -:arrow_down: | ]z | Move to the end of the current open fold. -:arrow_down: | zj | Move downwards to the start of the next fold. -:arrow_down: | zk | Move upwards to the end of the previous fold. - -### Fold options - -Currently we don't support any fold option and we are following Code configurations. diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/STYLE.md b/.vscode/extensions/vscodevim.vim-0.2.0/STYLE.md deleted file mode 100644 index 3de148b5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/STYLE.md +++ /dev/null @@ -1,25 +0,0 @@ -## Style Guide - -* Use `for ... of` whenever possible - -**Rationale:** `for ... of` is awesome. It's more readable than any other variant. - -* Don't use `any` as much as possible - -**Rationale:** The language is called *Type*Script, not *Untyped*Script. :wink: Static typing is wonderful. It catches bugs and improves readability. We should strive to use it as much as possible. - -* Use `const` wherever possible. - -**Rationale:** Instead of reading `const` as "constant value," read it as "single assignment." Yes, it means "constant value" in other programming languages, but it's a little different in JavaScript. - -* When we can't use `const`, use `let`; never `var` - -**Rationale:** `var` trips up programmers in a number of cases - hoisting and closure capture are two big ones. Consider the difference between - -`for (var j = 0; j < 5; j++) { setTimeout(() => console.log(j), 5) }` - -and - -`for (let j = 0; j < 5; j++) { setTimeout(() => console.log(j), 5) }` - -Even if you're not capturing the variable, who knows if someone else might later? diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/gulpfile.js b/.vscode/extensions/vscodevim.vim-0.2.0/gulpfile.js deleted file mode 100644 index f59e127f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/gulpfile.js +++ /dev/null @@ -1,76 +0,0 @@ -var gulp = require('gulp'), - bump = require('gulp-bump'), - git = require('gulp-git'), - inject = require('gulp-inject-string'), - merge = require('merge-stream'), - tag_version = require('gulp-tag-version'), - trimlines = require('gulp-trimlines'), - tslint = require('gulp-tslint'), - typings = require('gulp-typings'), - shell = require('gulp-shell'), - soften = require('gulp-soften'); - -var paths = { - src_ts: "src/**/*.ts", - tests_ts: "test/**/*.ts" -}; - -function versionBump(semver) { - return gulp.src(['./package.json']) - .pipe(bump({type: semver})) - .pipe(gulp.dest('./')) - .pipe(git.commit('bump package version')) - .pipe(tag_version()); -} - -gulp.task('typings', function () { - return gulp.src('./typings.json') - .pipe(typings()); -}); - -gulp.task('typings-vscode-definitions', ['typings'], function() { - // add vscode definitions - var vscodeTypings = '/// \n'; - var vscodeNodeTypings = '/// \n'; - return gulp.src('./typings/index.d.ts') - .pipe(inject.replace(vscodeTypings, '')) - .pipe(inject.replace(vscodeNodeTypings, '')) - .pipe(inject.prepend(vscodeTypings)) - .pipe(inject.prepend(vscodeNodeTypings)) - .pipe(gulp.dest('./typings')); -}) - -gulp.task('fix-whitespace', function() { - // 1. change tabs to spaces - // 2. trim trailing whitespace - return gulp.src([paths.src_ts, paths.tests_ts], { base: "./" }) - .pipe(soften(2)) - .pipe(trimlines({ - leading: false - })) - .pipe(gulp.dest('./')); -}); - -gulp.task('tslint', ['fix-whitespace'], function() { - var tslintOptions = { - summarizeFailureOutput: true - }; - - var srcs = gulp.src(paths.src_ts) - .pipe(tslint({ formatter: 'verbose' })) - .pipe(tslint.report(tslintOptions)); - var tests = gulp.src(paths.tests_ts) - .pipe(tslint({ formatter: 'verbose' })) - .pipe(tslint.report(tslintOptions)); - return merge(srcs, tests); -}); - -gulp.task('default', ['tslint', 'compile']); - -gulp.task('compile', shell.task(['npm run vscode:prepublish'])); -gulp.task('watch', shell.task(['npm run compile'])); -gulp.task('init', ['typings']); - -gulp.task('patch', ['default'], function() { return versionBump('patch'); }) -gulp.task('minor', ['default'], function() { return versionBump('minor'); }) -gulp.task('major', ['default'], function() { return versionBump('major'); }) diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/images/icon.png b/.vscode/extensions/vscodevim.vim-0.2.0/images/icon.png deleted file mode 100644 index 1baa6fc0f6882a983b91c26924a53c93677b74c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14500 zcmW+-2{cr18^5zy#?Fx4jHOYOC2Lt`Y+15p$&#I@ls&syED;IG9z&^w5G^X1K|&Ex zQCUV=vyFW)X1@7<=iGDdJ@-EEd!POJ-SkP004L`EleE%0K~ck0i5it zlSf2NAOPqFTbdd<#r|6ML|>Nk7Cq#ww#@&C^6~YTtkF@sn^;I9x zJaVBh*$0UngMyD}Yah`z=7h?cA*IqpQm#JS+^kpb=)*qz}?H4pdi@V~rop7@lPA zRE(6oxEx*fKxfrb^DS>)-z6k?5LzU#E`UmPGWRhhr{0o2%49GYk=@TSmYxKw@2Lxp zq8qwrM;^8Ahadfz<3Ft_WrUj-J)B^dHOfdZ4y%3(`j6vf>oFwmMXnDV zi$~Aq$lqEYkrccvG@Pm+`$^8{J{|_wbKg6^ZIp<=H7KUf^MUGn4DBN6e1vdB_F)EQ zEaN`{Yphco%7Bv}PZ!$t!b;W1g<16qIiwZ~g5ap=+jRX=1e(2XuzGE3_cX)-s+7%@ zMHZh<&D}9Y`u)fLbriFrf{xVB_cB{+P>kO-_=;P|ig@2IH+0?<8S)>+iX!?1>D2}V z*=EJaddFRoz;8g}oZ%Fg2cxX7{XN5+l<6Hjmmu^oUC<>Fg%+rx^#Z;8_ovDs8wt@9 zfr1PBX5>aG;&m|@NF4+6S==@KPiynI^Gq^<3M9}cL z@%Fpk-Ft^`j(xY%cmioV0~9Z^D2O)LC$|HM*oMZt46k$h$kn$3pb@y5uixjs#^(oX zin#e#8r?SYX3)%+4{V|Mq)m(GFgP=p{>pz)4xL{y9ZFra#K~JCdV_R=de=k;iJKEbkzF=A7Yx@=XF5VMDgr@(LZbyps zEU^oQ)`{TGKO%ZgHwNW0 z+~;Dd!Y7Kc?N>7I=lcsTd>{T8 zJi95r5j(bX?qV{ z)}+p#tFk}VZ>CZNUyO1OI8}oAxNi3FJm&Cr%=`giZ{@8q^tm`ZGc|Y6W=v^s+mlf_ z!LPmLG>p^znX+fKxBs{*6O(Q)&!b<}))|D@*N8|Tl6xUqX%q(Io7bA~o0GO^cJ#<~ zTfQ@gUtc|h#Od3WQO zhl*G_O|Um7C+E-f^fd44>gtD;l@&=3FRx52NtHdNgZu47!{wLm0@|EJ;WGPUGcgK5 zsl_^+N=RIlN9?;CW(fOU=*t63b~JB^$iTB$K5VdgLE&na^Gk&f_lg? z8$FIIs-U87>qOmtO(=>w7LCTlW1iC7hgC0r75y6#-QfM>QCIJ~I8O5C(?Kn6<8Tj? zBj-7l8%}=6?{+HFE9W!)!LMtfwK-qX@HPCtPRV(tf-!@CKun#kRg$5hVc?U~$_L!t z`SaGD%cxgLmLeQ6Io^6{l04urt!uA;Gulp2*M1BTGe<@o@1xnD33EVGffRfluZ=P` zXw&Vh%nP$1)5yJZLN8!zzekhWsR-OFz10-#^VLnVmRk8qHutL|nfH#VeCPFd55jE~mUYY$ zER4e}jl*oJNua>Hh*aYB-R%MyBFm(NesJ!qVb$;bH#|{>9`IDb(X-FSHkMjiTFl7r zONyqs3UB1lLv>sHJ+w8(-2R;sph=9ffsH^eP;>HVqlv|)@~@!A$JY$Q1mtJ`Z}x zDwXr6m+AM9emC&RU#hwR7M9r*Ly;T)nsj4C0L`+n_x49yE?jWEbJV+i@rCqxQYHJZ zTuy@!s|T+elSI577ty)P?lsko*})Fi>Th-zoYVexOsyvD-C&?Vy9uN?;UP2Q8lO{yV}Yekb)2F!Sm3`KYW1!}Xl6mono? zDxR24ho5;mZr_Id9fJEv59^TThNIseu&Z&jz>=zM9S zd#6jqr)K#|uh5->#}vb+^9SB4MSFp`gl1OlDm87oaaro?FwsLM>&YLva=Wbj;akUa z+0KXDOB)HV1~kv|9tQ^M;n&nkZqQ8JP>T0~dKi}hkh|F`m8;o>wdTFEky1f4c zxcKbDD_pXi>0QfUiBzsCiVfR?_M4PR)H1FFFPWV(D~Z4P@$sg%jr`C!!Nl0n`mTa7 z->tv>&xP^Vjw`c~L&h9{tM5yN@gK#O)+NfArvpa)o#1)*>KU$sANTwK6KWV^s-3gm zL9@vYOqh7?>MPH~*)R{b{Z`a?Eka`GucV<&PDx^LvSr(WxQ^awRsl z()c8~4O=fR%uAC2vY}w8#f)^y7`6=2TgqO3bJ<9bsnY5nQ))i4%p*O9I|9_RcdYx| z`fLqzfde6xf7~OyXD!1)amGqba@1STd&+Qk`xLa#Py#o}I#g3YM8HwL=JeXunM|o$ zrYPAvEj@CMy%wNjtrd`kGXg*~fZVQ)j5{3nw2MIeOc9^@d%xE*2GaX%h_hA31H!Wq zlR5WVkz@x9>HT>xKbU%Fn7fx+81bDg@$q2}9P3`l_AWgxOAtt-1CPxF%&)P{e!-m( z$p`0tdSv?XQ-;S;#ro2tO3yOGzE}e6rbB{y09#$2XXyO4f_E_}XeMLW%~I+nf7~un z>H{YyGBZUEJaw}1)OG0ko1D(hPj;?9;>_@fmy_S_`V_`6J65Z{c0(~5VFPWOVDdYr zJ@1>-M{b!n*{amxl!!uZdde%fr{{$VS~9~DRJZ}oy1Q7yGmZ;2)Q8_K`2X`mb+#J5 z+6QAwnf991tKgaI&0@V`WA75}m{%^~_zD5RG1PslN8jclXC^htCF;Cm9ER^fmw#)A zM$YE@3gJHA4#s!fA=42%*^;>RD31%w0F~pX%$k`6aNqAIeRZy%U%8O>J4T%u1On(Y z-VNtoT+-k!!6gfsuBX~SO2w%y0p{fB!x z&ln+I!jfighvnRI-|?JhpifJddD52M^+-p48eR6pW=#thV9mHNPcI6koh7)iDGVw8 zY0z#yW!P@8C>~}m(0h7@C=j38uptA@%016UX_3Zv>*z{k{|WRP+8pt66~RC(Za}>y z67SSRx3bqHvJ$~k;{~RN7VFI?B@gB=ZO5dm)M|5n8Op<|{M>f4i!ey$BOAU>`~J$b zJx}zjwQzz=Y@~qBt0BpbF?%zgvdthT?6PpVIYSbAJ~Ncdek>JY@9i%vcfU?Gk^DH# z?|DWUw=(3Ek2u5+|Eb37n<@vk*u--KVk~&&@X2>(YAudX$oQn#ykAs$^t_>Rr@8YNYwWF0m0(dMTjkjC%tQ^jT3%g$CEJDLISwlwC+ed9|j=p8&F z>dfaEhW*3uiQ@!x7^kAyRR`}K%&j_x z+hlt(FL>sI<)NvR=$$>75x@fc;&C3TM+j?p=f0^;XXb;^)EwMSicx|F6!~w!Oll3Y zrms$0fm7cJTctf(cc~GzKYX+u z6W_dV0{pl<&eq#5(YGDoZGk-kShHnLJUI4(TL82Ob%?f-l9AqsC69#YdnTI%I3y|x zy56LZ(<5QpF1YMNrZ9)V2A|xl^t~17fZt^;9&i~L8iq?$y+!_=;v_is=5|?zEt*~3 zl(!N0=O`)c1kZ;5B>E-eh!*2hV>T(`$%$G~(`Jwh^X2tJckK$xXNm{QJoh+eMFpD@ zcATKL-eyQo%ev30u_i(uvN>!Xb|#FynMT1+?LEmk+S?HV41(-nvckP7i2aUfrS0W- zzp&NvA;^7Dt-K2O;+&@lNJ{V8i5(-K)51D=MfB?J!4H?V?L@qup=(JKh1qCVmQmpD z-qSt7TK@uP%>w3^6`95uDDW;cYuL&}@TW5p1Bahy4u)4G9K1TxoKi=~>lwO1ja)KX~xa z(v|rXP}sE0Q*rp)Xq8QpaArPsIZSXyG0lI*3v7Ek#TqQ8Uqa#Rq47t3Z=5`@n;=5C zoiCUd1yzPJ=8%us76h+Ho~OCYkjji0g~MCQHKfazG-miS0p^1&`L#-+$tdI!%qY)C znIuv(S3U$MC?D(nAR4no_-nc=p(8-(_+*2Qdbe)RlaJVB+$#|JX?0=7qj5dv?005z z#`neziMN5$UgrC=^UED=nm_X(Gd)3CkVn|XXPlY_f?*nRh1pduf2K}z`p&9X<%Y~_ z{Md`RN8k4XvM|L0&Z$Tf-Sb!j*S?lh^2uavzY2D>j%Xtwb~01)6aQXi>3SQ&;=Y1u zbFOenbI_sWH(Idc-?g^R?}(YvTrZPogGDU`@2X~g5uPJK2|kd}a?E@-C-tT*d!hZF zjqy|oeE_+){R%fC2S_O;5jbV%q+^H6-US#KUEX;2=M8t;hu^L`Fej8(XZ-uTgvmBy zAJN8QiFo{y&!PGn(VeLx_|)ZmAIYkV&&^~5;U^Tj7Un&#!`N5Dte(b#kyGZIBCW|SYs^+gW()nnSa(^ zylX!4^~zt>B61tzhxeC*XDB!39lt{kgzpkdqP%6=8H=k)uhL)LOZ<|a{Ao5plHOiCR z`9^8nxd^#epp8(H7!c>d84cL?T~|cw0rf6_i)Z~y$7y;OBye%=o2uuxV`}zCH#Y>` z-UWBab)B~G0J?3>+c-Tt_5VsC_x)G1R z@6SO7H_7t>5MhW2Kj!@}CbK2xqe`uEf|NH@vP@H(AbjNn)X3FU;KVTJkt+_I$pTFl ztW_<4|K|m>odkoXrlxG9>$R4FBTwFhm5mzeb}P%Y{S#T^*WG>>xhZ`p-DAo+^1~x3 zp9c-z?Rx0+%^w_m2|&G)o4~zTWY`(Zk@hnfu8KLU#OU-VwLgBMcYc^S-1Ml&d)C`W z4hid_Lmv8#t9IgeAF<)Krj#i~)?&uevLFinYmf4+&Z*hjKQn#y6QpX*nghQ@}Bv9aU_pUtrW=I=6?@m?R zV=AOgo#P`hV0a#UPC*(cY9{+@c1q0}gcX!gHhI*~TpY`A3Vig4B{u zUU<4dy3Qj3g%%#Nw2Go{lSNDtw5Tvk296o&yEdC30Av^$CbQ4tUWqRAaV6DKf#)4aS*G6HK=bw2iNed4XOyrg=6<38nt~!hzWx0vD$c>1^uIHM0D1GxZAfPC0lxoe&i2=C&8HYd!I_ylh{zN!hMUGsyI}+TE8qb{Q!cr!L)C6eVsLCVs+u?L zCVzrjc=n4I=9e3ico^sIr-K=iHh}J%I8hZI{cf?rx)jg{AwV1xH0e9Ztpoh~ms>xg zi0G>8vK5(-+HNiUJsKUvO}bJV`$DI~uIZoqBdX}@eU&0$qy8_9{M!at%~DnXj&CXD zW@$b8f;~f@aMs~Mf0=ql&f%i1A1tSlTE7>CfRT`)(;y(@8OS;gOkt;-)EC1jJ@i*DmNH-OGo=6Zd;})5ellj*@epg#92L=lb*KOmv@8Z(=(VhJ zS))3^qoOiQPGZ_`e=BhHr}|$)d_mMgu?GD>f&(XZaPxx*mdU%V$m0WHK5+d_Oa@Uj zw${znfZIn!uC@zdBFAQ6SciUS{T-1sL?vZ>;uL+TalkzK z5Hf*-A9@=PaMMP#08IHj7YJ*`@?6f+daWz#(4oW0S(YpY?#gye#IMr@JyiUK3%<}A zjCK`czAAqsyAj(L{ z^`J7qedLG`pabj}eAM5Zp?CdK)pbD(Y&Y`o}-F20J) zDy%=g%x{U}?(qO{tEh;LhFEY@44m9GLy*MGzcGPPxTxo<(9(=h_4(%J1!7zRy4$jF5K*5D%D zaY!eJ4JsL+Tw2SzinCmQ=_clKo5oC#!G05+85);0lEQuWeSY4*vJ9L_>cMU zj}(Ihw)WC+aRS)V74z?1)y~t66@0iPiN|d{sJemR`emjz!TH#0HINphSjqx;Bgz9H z_yfgm8iR*~u*p{QrAqYd9(I?=c6EYpKlE1`?0yh%hHM7|)?$JIEfZ@%k9{cVukybQ zcJ!Zi9_(9<$baE|!S6Zg*>S$$D-r-IFsw7m5{M-wgDix|f95Eo-Sy!WD(qQ zI2D$~Vx0V$SlUv~4X6;vhPMKff4Ex#;$(#Pw2l;CC@)sQf{jJ*&Cd8$kJ2E_ zxoCmHbGAJEfOr&u(*Z?Io>`J5pF)(QIl=w6&8J75p`?I*#P6|(y3VX zOyT&;-0Lou;4XX8ju@cLHv87Nb;uN=_HQW-^D5Z!zxvsX_$(qvD8 zHox93#m9_6L(nkVBZoy%nQC!$0Q1T&P6LFA(qv(P*l`8CivoVULsk6^{hYy$Hv-#R z@vE)0We7@dg(bc`4MLQYR?@?6v(gf9>@DYJ!+RKB5`QrZ1@M4!feiqCVeb}o$sL5= z@jEuKb1@{E`a8cBw*1a4cEl1-3FURawljZ?2wDKp!gfIRAq>dJ-ve~%pO-ojsFT{| zw(HpE3FlLp?w@3^iV3uJ36WDz)Ci5yG59mg%7H*!|JYW}@yN4$=qv4Of3=a~K!tWf zTB$zBr`O@B(+~EcdMhD}HWh7X_-71^H5e`!xBiksDuU1~{mY!6IA4&dDZ?|$5maVz zb6*ZDnBzM3&&R*&;sE7d2J*|R2M_-c?&6mlppY>X{;jtttKa}e*n*2mQ1o39iXuMb z2zD>kdxx4||NNyk!Lp!${b=6=p%u2k&zw)qHZ(sEA*b>IBSz^wK5L%%FUmYfM_ON7 z)U%#x9b;NBY?|mTiVYV2A!v;(gz692U?%s>5%M9xfS02t5dVkgfmSLUw^*z62s#vh zEgTZ&CEWoG;}Mx3u&3#6wRkib?RBxk{o@CLd@_Ib8ei`;2d%@Ld=p{9aN7?6Xq!7b zA1f*<#{8a>OG7Yk?VzDYoR5QE%$>9X0PQ52i*FM5bc`;&IETD0Ps>jxN{-O>HlIjg ze|?`{fS|p~2ye6r&r4wo+{_>{J%+f4Fhuq5NC1o5+agZ^QP3O*;PXQcZjlQNFVXQ+ z*Gfp!xVX3uUnm_aFxl83GJhDThwf0#EW?n5#rc+}%!=osYQiDg-4yfrbkNq+LAnse zdWwV#s{77$UO<$6j?2E~+gB(6xopd_-wV>q;~)zywN{6q6(K_<*ZFi<3QX6?{6nCq=$k zOO-zym!KC@^(3(g#|-<-aWu;Uq$XkVtAf2qK8B&kd}sdd&kPLtMjUYXsU{l-J~p+U zH5|nPCKh~X2I(~?nvCXU6aqLLgjw8WTx5QH(1vjp^5D=7+ z(%2GE^%Zt8<%hw3Ngx~KpAfLpy%4b2DhdbzLe1t$3iNH5A9JO{TimJjQ`bWj#*&PL z_Xf>BQJg;Uc2pAx|AI#egzLzj39a;FVBKtu+{xKjR+Pxfs7~u^IVZ#J)5{M9HY(rB`(IX*SF<;>oSy&3jq(Wy2FDinoGwRzX=;GSGAl>MopDtu zD%L}qgY!;5Y{1+npH}DyF$ws z*b3*|(}gDVD=s5tMn6A1rObA;?d&X9(5F{7jya+0u~+JhUOb{A}6vtclG(wxY(TJ zB^H&F+}O-SK0P|VtY4i=FX@C%ztHR8aQ*NT>j83U zKN+7p?Bo`nJx$|?rt+RC=#$tPZiNoXCNpZOS)Brv-~RR)X%Y}cTA*Z7&-A>&YtidJ zu)&aM5t{6GXs)>{teKjlyh!7AW`$zO&zx~8sae--CA0EC8&ieH&N>Ry6? z9v|!Ur>)aoi(M`hy|DSo>Ima(B5iMtCuzHlYXPM1XJAr+rnx2E{oCHa%>8ovc<0-o z=eZ(*V0t&-V$37YJt@YytEC=J9*|=;i`n-Js9IzhDB1+Ltjhuj z__^tDOq~x5DTZ}o@Q{gK%b~XVLqzzNf6H*XauO{(n+?|lqZ}-)u~W-6WqB=o0=Y6y z@q}5R!^a~whgWvYZz6t`t-c|KdT0TpP_S4|&l@{Htz$J&gmIy+yTF^mk0*9C+FV^- z8*SPdZVL_9z_oy~6hhEvdSWsXFZa3s89h+PYC18p}i8 zKfzGG`wS75E-AHCQLa4iNLzm{iXDL>69?Xe9Vsv4>%!Y=hKPw_7(!&T9<8>+IuTlU z*b^r#j`mzG=gG)JxF)B|~zDixA#MDR`bn&=HhGd@AxzAvOxk zX3p;FI8DNV$DllL8};vcH-0LRmLiFLi5-|2b2JzUnjyNeZ-JSmRCM0z%aAPrpBZuR zy-`no9|`=!c{no_cJJoaS+5Vt#I&)yzoA27Iv$YAgTGoA-&6gc+nj&AZydAjTX({? z{rSx!z_=XUK7_&q(Qa&$PL<*f9C{Ms?Oh=P&6Ye8GyDd>XA5EHE+HN|?o>tu|CPi5+ zJ`chzUtWS35^xael=xTXc&M!Xw^_1PooVf5(Z%{=43R=i>mv|sIpq`$ESVk>}Ont&~k@%okjyf~Il4|c}BvxGgjVe^}Ex0ke{Ov%uD z=Blc^)25OQH9)rDSflz9emV;bxi+P0fRf;N&preC!lgv_J!j98L9y;zFAog}Xg6A@ zF=h8GPWcKPA5jjpvHKkVoK3H-7sKA^(VrXCq8DC2dCz2MbYZ^njZPhzWI&7SN8bkF z^x;iA_2x0+eng|e7%+KLlb2lZvTf%e2>?ULx~He8Cfa>JAv7?~irP~{e{NIxlsV!! z+!73i4A;BD@LE!Q>wA73-Xb)|JBJ>7?J%h4PO559D)%B595I^ zq?eLE*qGY&Qw5QKU8(!kkW(0o26j1)}70v#e(shw2o&G3Z;X zr-WaQ43wI>(?AG|z3(_EmVlEiz!mb*zuHtjvhfkS3jS`50!Dx)Tg&5}9MK5Aft7wIBAE!L!=esGv_R?k_)Bg#y#KiCXMC|O95Qx_?n>4a<7vOJ z#{tHH3z$+=^TnN@?@&HV|6!a0{j9q>UYOD&G?bBKs@hH_i z1&w`;4nr62&fmsZ{7Y{3tnJMAL9N{F?gBz7h{h*mQW=$)aA!4S=2AamdzV+= ziUoNYqoXba+;6H*iq1|k)!g$pu}9dx&<*c-)B7VmZ#p!uo~n+^n+}5DmDB)B0F3)W z!5u&Q8r=?aQUED{(S^HQ^y3|>6O3)jR6aDjozZX@EEV&wv-HL~i@r@oKEX-7c{ZJmQ0j7+lXe{;sAAzT{hOC3{rA>p)#0xY@4&h+f#T`W`^S$?LZ_3m%@yw$4@SnXs@t{$W=Har@ zJLKMnoGP9Irv?q77|#m$jOC5Jw9ZW@({k-H>!*+mej}G00zhMooFpMXH)^RDKC%h)r`) z8v{Z~PC&SkDmCcXCO6#ybb@PtkJ6Y*p2~;l|7BTQWyNCAFPFy&P&W=GBOXn^_9fsh zo?<3WFsP?VZDaXfZ1(FlfP+V4Ogc6+G$#=2O*_$HL>m=!MnQkoNwm$J7)kw&wZ+05IU9lo>d1l)Ke+71p=T|3k;=%W={+f^a>(nr=+l<1OR5?Pgf$bP@b z34jH~H;WS8-lpUcCQ}h}bgGpqH=6WKkva$=jSmuSAT+@$FhKsBToJlJ5L)gyMn4g1_UCZ zq7#>(OvP0;Bc`YF{o9(|KtLO}M`O?_hTa&?1TDt%_%ChlEQJYBKQF!)*TMTe7qdpe z)$n3fPZHLpCE^QD5j*+ch7)j(Zx7cyRDUN#1_6&8U=)s{`HP+s@z8il`snEB>bax= zyB{lSN4ZHJzw+!LnBF(r@wkOI)^?RWg3;Tao}TAv=h098MnGu?V3G#CY{PFbNDXM^ zlXUY%zqvg4Z$8b>9?iG)cGh6XQ#uzHrifIVKy&Ze@2XZdmLLJPnO zxTJUpb?whPlN^826u-*DF1vFM0QTb3Cy1d22k*t3rFa}_-gmx=Nuh4;Zt6f8i4p+* zUD$$P;?V5uBVGn9ZK~G_!pj=b@ZJ7u$8H*$YxEnGJ{_H2p3d;UgnjdT9$wCYX9pA) zfe%^96`iE_6Z|SFD)*-q`2!uF);e8qAN6-;-jVKt3K7ax*GjGtmFO(LZ~j(OcC)z?5 zz?ZAR#fW$a!+t@WHoazAy7_zB`-0MOk?q!c(i8@6|5g@7f$2$4`1a&+7(SK8M%*qE z1JnUsSBUTHXQOMw+wnc85av)^aPVgiMgtq;=z|9gY(Xjc_diUQ7-s5*=4{Dyg4)~8 z)z^LIch-d z{X4wzGT6B1<~+!6fWU?kcu1aRAW2W`%1I|Ou+i|#tbR`L8gW{j<~BB;+I~Hq*ghsd zfmH`I@vT)jeq5vZX9jJWRapraH9@GBi{$yL-9f70cRuOG`{>*d(uWfeAos9J=Ttk4 zxwN#TPmS@I?(um7xeT^pPfX8`Nz`c5TaK2c53dvzUje4tlOQ$n#w34M^2wpZyqloV z>Emn+69nzh2Cur5A37#GF14lqA9aQwz!6Jui+xJ!{wYjhFnGANVav0n>2FE_*W|8+d03ZK);}bA;taW~a zM^v~h9m`8fwV~_`K;yFr<>~hwW9L{&Ss_q@{OJ?dI5%r!j!)#!#c6Zu@0IAV#6+G* ztggqmRAvW+(TcDdS93aLUD;qmVGKau%FHI-Z_+s_Un9Ybb^Dhe8w9Yl*0H&%;qi)q zH~&Io@z6^Ln8U+&K_sSww-Cx_5q8bSrZNLX`Q7C26IAt@b2_MSKj4e1;8kEYLYx=C zM5j%1;i~K@rKdebn zRlkHAMm1e6CZ`sY{WKE0P9-Zfe^V6nW&_mB(_~t(hLoPKlVZz|fXiTLEMjb;DpbIk zRTfjHAf#*&^5@Uo5*Xoya!OFMLw+#rQ2?0rnW04}*MZkSsCRhvVtSv(()JGaMxj{P zep61ExIhD2LVSGkEE+n&Wl;O`8hd(rx^2l6gz-WNq)DiC7*PX(6O)@Zsoqv|MaA#H z0EjF=H5MoajBP9DDM9ZJZK+R~xRwAX@RHR_W(gT}arj-AmyWp%Hu9=j&T3)5s&7JX zozmtKDB(V-9XLyz`Djh{eXw)&X=oGuC> zncmlnD@jA;j17Wn;Zkb!H z;4+Wc#ORBQu7fAN1(&~ncaF{CuLbLBi9Kc?g5c5qltG`l`6m#wEEo@9dlf7kArl>` zpd?96G5*9#ZRUOz{TDQ4<_f*m48Oi!V*q4v1J`B;?df@C&r&z-=KLJR3^tta596Zz3t0vCjTBXb@I_)$IheumWj-CP7+D=~LNAT?2Yw3*ES$e13ql8l{XgZY+-A z9LqKu3D~YaTNh-otuyx&M~pH_P`yo{bdj$FqTd|H@qxtSuYan2&6W0U#dX%H1b1uC zH_A8HIk~L4#WG4lrJeFffz>iDX4x8dV+95sqix*ogUMTY|R z0lqsTLI=f&$_9brBu9r8Ew3?@Qa`_a94_s==Eu-6SGJlrS1dLjIbC%2&0(t?7U;cI o%SARlSL@^g9DBsVXil*lMUy^!kw&uw*6u^V(#+Ph!PqDHe`(5FaR2}S diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/images/screen.png b/.vscode/extensions/vscodevim.vim-0.2.0/images/screen.png deleted file mode 100644 index 39953b7522b711bf0043a879b4f8dc54e9a504e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74618 zcmXtf1y~zR+jS_~;>Dd7DbQj?gG-U(4#ho4(cn&Lad(H}BuH_BI}{1U-Q9~j{OR-l z-(H(*lbM~Jd(LfVW+!1PN;255$X@{f0PN4QpVR<=7ncA4QWVAuL;Q3j=_vaJ z3;U@Hel+Ru`bw2saWmeyY_0058qEOn5E`W~_H z_40*;d}u(Tyn`AM2CbSzL;ztNBg>nYcygg{e$El8cH&D(p->Fuh9XBt2SgI7e!vQU zHH*IaCNDZDKQw&se$6}IcDm(yd*rEZMr5b#Jga6Dy#oU)S(ZzcCjhHdf*OA{sK2Lg zZIewb@D;ry01u|-D|?&|q40FWC;gc$AlqX!(P0uJYmuE#NA-ET*GersyF@w7Dxbrb^t z)?EC?o<6YGkOv5&1=v01F&v{<8Di$TUPo9~ zBcW$9sO|d%>N4uke*AjtC-iWAx!Sf)ANbKAPzL2@wQKl7p^$Pk{^fVm#qAiGhX%~& z2das;J)ccsIxK`6s;`}*Kcz>We=K|(CK1ov%P{_IzP|F|9$93C2k^^A1j##&wZy;- z`AYsBo{me$`ZWM>*6h$Z$%KI%U=_4B>i&Ep`Y4mj00^-B9Pb1G7=EH>(-^D~?Z*HB zKII0o{1T_Q=p_BnfkxShy4Z>NV9fhng1)Cq0#D+Vc>txeF>~2B38vtYUsNo{?2}?t z+#RY`!3mByY+ag-IKqy&cP1FwolGr(FHyt?FbGWE%!eYGhU?HpW00i%xOvkli}E^x zp7wVrq3T=tI38I}wQvnuO&!PeI;QN{n^WrEpI z)!Q;GXdn46tuo~1uuHSiDtDCEfl?hWc~RUYXiccaWpxyElxAg1XesHr@#kOiy+r=5 z+V$>jLWz7WV-x;u52@)#&JZ2h4|LP7V+h#syh9~>_~>7UNq&3>i+%CAsz77>^|&ji1Cj6x&YNeDv+T%leGP^0e$QSNd*ug|W{h=TxvJ6smQV^LtX=SQH5!plpS-%Dc zALl{pP8x2SgQgBkJ&O-f+~BJuxg^FU3Kn*aQb-YG8G@;Kt~sO;Q);O0TOqBeD@zur=2jVPwDi$pnvvCbe0XDv z4Gne;utZ z9rZc&rQ%n`#EQZKmlbRf+d_(;&7a)c?Te37v)c>`{ZXie~K@{M{FM#m1B!+}!iQu%>voe2fB1eVj` zna85Oy%))Q>>!;{ywO>%je3G1<{s-T^^6G_5D5qd4muBw2$TOd#Fiq$mO;_CG|;*! z=W^*}u;w*>nUztK(REa^PeDZazY|1EKod9@5TL%m(QE_XivCnBk{;wm^hJm%(wDyTb<=^ ztOgEa%imn@q{8Fi);K>@{C21Rpqp%)M0ERMz55aJLpxYB+A&mze2g=N$9-&361?*1 z?o;xo5xEw!%_|KsIr@8?D_(VS!f8 zp!m30CkeLrSHHFTL~SkS9M z7TT8WBVmKUWN7yLk)z?7!G&19%#)nwqt{)p*W&97gXOhZsdTnm%WQzvLQb9wuQrHK z-v?`?lgFh$Cv6%W^U}q zjw!rbuDB1U7W7)KA4Pt*EodTXDo$BWS=@iVuelbj2!rh1B;VT^lq=ae9rYuRBR`_k z;ndH-Ca0*zg*DV-rr#gP;Plh9J!PG^vtsjNYer@EtD$7Ny;|$MEwA?|viaak7p)z|j z72+j7=Xa0rq2@XFcgN)|$}L70Vn^b0l1m{|qIyq@vnPxGHXZJ{=VOa9*JwY2MxWv? zV{j!=W71-Vg0X`SviU`Tz;#jQ$GwMQ$x-uB#%z+Oyr-cG5@L40o2i2t_*m-L&y=&2 zgmych!pHrN1G376zOFv%w%;CHoQ4-#_eY)Xi|$k>`75}}n?AJuOwU%gRhR02itiK1 z5)z(KkWOE0 z8h}Jv`1zB#hR6J2mbbpf)bg{a?Py1?WB`+KczBqOvEfJdcd9X|DGHPE2}RjH(aBU? zL(w8*NjsOuSLQL67So@H{IbUWI4~Cpt(0V#qIVl>y)Gl>1U^e{jt#HDXlqPpIO! z-_pKuK3PEJz!3z%VHbLAxV z7>>_)e8tyb_E6RWW}S%(q$yvPi)hOmDIN%6ndc>Jvs6;a0M_;Y^Ubvp_P zj~{H?Iz_qlFl|A1K97cC1qjW2&&=Vej1(}iC?5&luK7I$Y4t2;@1up-1bWsYGJT;~ z!SwokQ^8d?DM4COUfROrx|Qm;nm&VZkl_h?|228#)~N7_9J8hrlR!bnK-uCEFsQXB%!Njf(dso0-1qv&hH0Dnb5Wy-}tzoObJWzWaA=W zv~pJt=j=m>R?=jFlH#_t3)9EU1m>`e2T2^Gp?doF(efXE>8l-o#BqdgDSa}i&%PEs z|ElWjtv-_<{|&%cjCDzn=y@c2z|<1Y?l%XXgw% z6-IKZ5-w2$Eq>R}Q57){&?m%V>==v~TodZB!r`_qHtgQK9($S@ zAKgb&&u_bY-8r!1l>Ki~^HW!s zF~iFs@6}$iZ0Cs^R7A`iUO{_>J5bn1ZR0xiJhi^?QxEDLyuikFq6$zcBn}T{+cL8e~NlS$=ommS36_KC}^i>$9-A9AO|AC78sm-bBat zo9mWrkQAI4qrT|TqC9=E#vGo_-T-%@eBCc~;cZBW9W*xCwgu4jw6ex;h2 zXghT$?NayFv4hQ442R8X^~q3W@pN*bFd8>1hPwQ@eoXHL8`b-%M-Sud``f)3uRORC2X`6Z3mis&HHf&)<$b=!r$qi zP-33M03GyTl!SX02ZK7OuFG@8ke1kQ6vk_e#W8ZKovjwOsiT1y?+Ty7z9|W5t&U8f zg2JjCZuu;LbcQKiP4%}vVP1dwgV^ zKf3hjsY=hhiO#-dq$PP8&+Y@c%H4z~3Y zAz1uyv|QIb;nleXkMgu_XptV7JrGgQ(9bixXuY#$v=%BlwGf2f73gz%Ob%bMEwHrc zG4zsKF&|$Z#WhnM%vXAhpn(0Ih_Vz_@iMP)C#6=vu)c(=Y;1Lz1^IpnfLHM3`Y9aF4ihfdU+j$$Bu?mN7 zlhY*E2eaW+J~0E|<#9DHPR#Bc>72Nc;0DqQqi;I@X}m7|Ry0^&j-&ibdn^Jf_=ZvV zNvJNfC964^_q=g3edSO@A$9n;uq?IVh61C`{la;sn~E2$G}B@T9lCE-8ZUKRtKGO@ zt*@I;$w}uxvUTpv);@yC(=;=AIRGT(&IALaWq1=c1U|frUdS6{S@;hzs7qqhK7c%K_v-i!yCr+wY)pbc9R6Q9AV) zv#4qyFVdXd3NK)K?4|XFjwK3=Z8V<;kJcFsRjOrfFfijr+!nW{-93@xZpLrUl&zG$H8U68%**KRP!%GgHry2%%Np_4Ob1Lw#Na zc-L(^!VO+&5ef&{xOD{@?4YqvnYKi1ckGE_?Nny`mfI8J|h`hdXVxzety}1(f z5Qa(PH8vz$?(l@QpSogBcKacZ*%l89wdANdzW-Dd+2W{}rs+ykx+0d_R^y?l095I> z5X>%YJ8?hOd!C|=gxlsqC$}xE%gNurm17A6+IH^AnDKlhh%o$+sPsNAVlMu6pgNyh z=v!i10m5ic2K7=Cm5ZFqSqzvq@|HG)!#!VuPQTaBF8gC=LYk9o}fPluVv`uT&|OFxN#1hv`HijE~4d-}mm96upv7iI1h zXN(-hngQ}BL~L5<;vcu1fzk1vIu%Q3*RpX)c`T;6YD=a_Vr7Zt{1p!0E2J5Vyu2Xr zAyjzg371@DCAHQ7>I|*SZ^t#umF*WACh=-N`Ex!{?jNsscIKs^<%csmozS-47E^8% z>mS|5t43LKYlgBEt{6wcNY%D>*`mCopc^bLsb8f)?QG#Jw}sWr&Wtgw=4SxS{)HBm zE!+4V17=sEw;icWj%XFL-#Z$uQe@DX?a|`8LB@hYi`aj->$QYs@8m&!0 z!zI&LqFLc$xyaC_NhZ2gM7OpC?-Z_(!l8BAqca#x5O-v?x#VWD*UKC=DJ7^}uiAgS zJpukvXaW@uk&uB{1VftRlpVn-Vnhx-OZIP>?vjQofP&WohRT=A(2wfCiph!TE~;-q z&^+4AHXi2J^3)^yHba|vF(q!wsKc4Tv=t~?Try%Y2N|5|umjQwty2!uY$W1goa0Cw zr)J&bNUrOt>WSB1#~Tl+~BZvpDCw^{IzNa$uK&%9Mldw5mHryF#TAWP~ZzE!u;kA zqJt0atRDTlZ;H7~)mCm^b5^7;wccVLR|p)}_7Ct<7I{=^NGQykYSU-!)+Ma7vFS42 zVB%cTdG$zrM($}9(FR_J`nmxlgiho4aZ-Ho^o58?X>wpChZJXGJ*QO0dTN!+7jz)_4FJpLzTMWH^8eM^+e zm)sK^Mn;a6URmB(Z$*Y`+)TdUv{Pu4{Z-A1A~2NxG+5)!>Fy8#^^JoCr_Ho<39ZyD z>7}2GiF;l^9^=(y7@Ws83`&~R*6Tht+Z6QI>3uKhKHg=8O!6S?*;Cv{AT%w8bE;+V zV2#>ATnRH4q(FM^fe(?A2bc4?5@LXG`oqAVk|I8*dSdY=JA7sfcNBO^%}b_a6H3aD z_4L@{4~e-|0wx?1;S7aH203~@sU6!Boo|aISY)!-w6ai_$c1(L2sfoJFd=DP;O?*y z42bhMOHg-iJAPoEm&N0@Az~=*fYF9WU%RtuMnc}1ElVqd8>K#Yq()?(3hSdx42EG; zJ1E44uy8Wq&s8&(hP~FK6$KgCrVo8Ny$tVwjPuz$uqa_>pNN!64+ePR`tI;lfjQVK1vQQEg^EqV z&4%K28M~@-c?~WqOIzL|K`j|Ylh>&}&&@HIc2-WMLiaXm%mKE48KG$?=GZ?Sbg-A7 z()yqBWY)r#aouxrQf?n=_HQ{1`rI+1_kgsJG9ESBU>ke9OBGy?b9C4qg(@c!kY>x7 zJ9RaV&lM5>B59jSDf=y6vR%pbv-TY&E&8$ub-Ie>LajAj)YXUcr#$?huZo&m$V6bf zHP&I#4fZ54L6w#a8IwW+Qe&6)U~D}tn-SLz(Q}tV;E{ASk7}&C`%U9gzJ;xIdz|S$ zgM4I1rqg&{_kLeewHis4(DG-hV%EWR>1>;rmoI|MMC`@W{G`J~T&Og6u-LDha>6Mg zD)u1yWGi8Au$ zTrrM0z7QAfeA=PuI?f3uI&E(VXYq$vi;xa|3+!uQ%t$k~ul?OUQeDo?VEh*h067T8 ziCIx9-+k0X-r+Bs&oOx7vC8zX6dZ>)djM?h&sM(eTP2TieboiN_rl zC9+lCA41U5HmB((55dc*4Ab(iKO;Ww8C%3FE{VNLwFfH^~_L~o8qh{+zRqRza zsF!CnOcAHrL~-J#gJg2_5m?eRkW|Qcm6L+5#=h| ziLwnvsotj=?H@h+e`3N7mv{DG`_c7M-06pXrUH&8vN*K7^jI>WpMuvP{B+=lhHVTk zEHanDqj|4|?nqJo~1q6HzAGedvkAY2HREM-$#M9=wWB6A8{tG-e3la39@%(Km@5K&mB^< zb8owTj|&1lp(eGdPSIUQ(nC*mP(Itq`ce>(nf>D8@7EUuCAre%Y?)H1w5PnpdeN8} zec-|Yf74c7qBc^~mA2bTXAB4WXdV>7*z9w4fl7ADNjs1@>}t1@qyAp8U6Cd1Ykh1v zVJN|QW@t)tj2L06_I(t$Ek4Lz)dcIU_BNBoD2UEk{4rMh7N$|9V&h8}qr7>%(U-Q` z+dN2?Dv9)w9YJ=eo!>UPXKiY($X+Mzl4>!|ccNgt$PMhU2NYsQIq9x% z!mk_Ztun2#s!_5pL1p#9tLjqY660(Q{^nBet1 z92GG~k9l!Q>bGU7>ehqVBx7(#nZ(H73%`5hMO0`<8 z6Uh+?W(wX{s>4odmKhew$v8-iXQe+`uq)7<%hXz})x>{NfOHiZ$i?^ykMvMK{nNC? zoof*_cZCz@kkhunLU??&^yQ~1ek0?lgQbs2ZKpQvafc~bQ@a$}c1Kl_0cR3>Bf}e3 zT*IvE3ucen$NKmYf{UDv(Raj}=U62#%(t8X3f-hB+LdT#FH(hKY8Fo%J#j$rr9+$O zcNz4NnQpK9kOIMb486_2!(n~Ta?IXUZ2bLx+CLpo=Dv3qo+gmr0y|JF9ujFK2se9b zjmbj+1fTl9zL4Y1Bo>m|a&($T9}>qyL7Yw*H}_8x7W4uH^fE1!6%3*Jn{FIMn$pXq zmfDtVmXeoU$@(aN_kL+*1AV#EddD#lAmxS1En{U(bSTZyN`W;(ONgH=|(~ zQl5mbcc>3Syr1@t3*TaVqs92v=zA8t(0PQ10zW!F{~$Z0daH{+c>n3c)CU*k|AZey zc_HJXlubY1%H~RYqs3P-vF!Mo?|=Oh_|i!v(m7D7zYgC|3pALaEfv z?}e6UU=g8O-nizMSUaCq`vU)3r?I&rlf7!W{o-O0n`C@+Dc3~jzXp@oQ?I)AnM0{W z^QiK6L)o_>FQvdJmm-x7d5-nd z0vg}xI_E7uAez>-3a2j^h~c?626m$>W=8ox->>+SlAbU+;n0XYgan>GKV7#UIC;iz z1q*6jZvWN6(wC*+|FX5wjQg>UvDr5~Q#DmU(aE}T+w7{v7_{n&IR{{N5wz+Nrxl3tt%T3_ z?&5Y!ELeA4c6~bqnGEr>w7JD(9M_#q>H`P71C>#LIF1NX|HPl980ER&sYMm^*zjQE zb2DK?V7FuVUhv1wO4QW#><&oO$Gn%=E0~}z-?j`gH*i+82F!Ror>iocBH!BT zC%=a{i>C87+~Z6Mepb&+qzx66T;~pLjAIDrwu=H2CW0-{zWkk}jhk20TZARqpVV+7 zdIMMLF*tG6IAk16V7R=I=K`I&!&5p;2%^_}Rz0u|6{jw$Ci zD|9O5H|}UNk(na2i#24QYl>M>!>Q1)^?jS%-;f>6x`Q^Eiuf~`(R&+0!!i|W@5!1v z4?A8Z&y9l?oBW7#@MT4Df8XeX=P@@Zd68wnyBbnGcxsw_uJ%H10DE@mlsLqj0Uf(%&;Zt|aXXn)(A@aP{qeLqtq64p&{ervWI z?Y!;7!&~;(&}i8u%)7?AWBT>uje1Px;O|TO*3&utrN|Kbls(s!8fClPeLPH_Qrb!j zO}qE5xv3ElQAkCS1l~x}Ho>es1|IDrM;uoiCgqC|0Am0rPG2GF09B5yaX(CjrGN2L z!?Y{b75cCBKXv`uJL!W*b;B92SKkT;)7<-@OV^CeuAOSYM}UPF{rTGbrsUMOe?@5$ zR*alj-f26dM_!%TXJvq2MZ+2Hwi+_U@u`_L(iUbbmYvULJwiHeO@>NwpU*jsVC8J@ zphnSGb*Bh#Ivr4tk!d!s3${@6T|?-E#d#NM3~c~-wqY9PrQ;R{n!KkIJVmUsJex`K~j10%q#H?M4TAP7t( zWm|p3)QEU$LOfWZ`+B8$s;x=+Gx_`a%qU~}Yno@xti-*nTf`CSIp5GU+8Bzm@k02L zA1%9okNYIp`FtH{H}Vj3)-9d$?-sBFZEkL-x^LCuc!pO4mfHhRCt*l9{c^rGLp2KQ$_{*8lR ziFVMz+kO?vOywr-uY83x8h&1V_~nb78I@1GQ{HRwVvN1g{u@7M-9)*n1Lzy=F}Kr1 zu`@BbscQC@O^N zyoHYP&6>=lu#aXDGVtH8(XpM(jBzflMP_>zPn%@NM?IeR`)tzRofiLE^M7`ibf4Q) zk+S#Q-rT`n0256}MOABOd@NNw*{UgPA^d9aw^5Bjh}Zo-I44WEq`y%3Y;qr2aFxTu z1ISX;-0hHfKPLFzCprGQN(v5zI@q4Rb=;25K45kblB=^V%UkiAeY>-A{;`#NG=?%I zq1m^4bb0s_^=~g$X!Hit`@ zaozz9nrE?>uInka(=PrVfc3B&5`z{ka=GR&65Ri!ezhdZ>sR!e?)G26{9fHq*lm7G7I60>J&}Yh|K2& z+^-t_&)Yfsiq=Zgc-R?Ypip(&((&b=jU-Tk$}$R4v#*$&58g0^QSyl2$B=^BjR0>{ zPx)!@FH<*uo`>Ly!w%An;C`BOR}F)I0PI^aa*E-KKKufSRna?9``xTb3zTl=nR@K9 zkC*u?++_fZSkZR!%(hsVFkR=Ln+}JRL+T($zZWfUDW=nA-#qn@>>$eqvfpC~Zr z*ui0{#fCW9<<~sv{#SD@2|%WG)>NqCA`b~%=%nR0 z(8%0Aru!#N9;_S6-NnJt$NUtG;F<`t#~J@$C$Vj(edT%$hMrqVc<5}@xB zV^%`mS6}7i1`&1SEEWw8>S}86Y+=mR{1_3$ZUI{=rPJf)ljEgk?c4LdD2htNwvpZl zk_P*wyD=FW9yJ&kuAD6d^u9WTX9>C=FM3`b&fVVLM(IxMSI5u(G6~Z2WSOj){!g^9 z)nmy5QnSb^w2bHNZ0}>B%dW~yg+UT)j?dZ4fc5otH08PX?Cl>aZy%<#ja*NbTOC%~ zcoh6sI|4Q5^aKy9HuGe6n!fvGH zGW%09&5v>*q&pP!39-E1Jt zDM!$~0yLU!AHR-JyzfR79|Am>%icIKtL`MdZV* zw|qM3z4p_dvcG`;)5BoW`}X@|!Hkhy_{?AX*RDxc| zD(8b*a%!gA!)a=+l?Khcyu4SlRb~hzA8vPYz+mtaO9jFl(Q&EuVa{6(D}LUW`BD%u2t?^oI)@z^pHF%%;w()o(bJ69ms>W@pz1741{m=)}Js|2$%Oj=+>rDU+0( zd>-*_YbeF2-Os>xQW95qveHOY9FN*#HL${<*|5na%%0_6OsuEdBZW&HixI*Gwn{P> z4UE7?^K}R-r~tjSiHTgY*M3mH6n9q567oEIxINF8j&i<7pz1b~&ePf1IY^v8=7G=z zf~UxQ`gC!$;EsqAh|~LTC%Uca?h8CJGML-ZJYvMZe*I!`JHNhmn5!tN)(l)Z;^`=<VzkWVBJR^K! zx!vF2&@h`R{9mA{Y=7E^jYd)M*(4Q7=aUI}{6!cSGBR>^clVUhkKkY%?sO_aHw`T< z7K)&tAV~>{=}IFS5)u+>YI|;S+XUk+Qb*um@SFfBEe-+H_tHa6C2qb~~xE(%763J>PpZ!l!GzB!``FHpQ17<%>LVo<07R0$(GQkzu2fJMRZ!_~vXi!ie=9wo%sNvqx>3;j3Vw8Vnk#ny{lgs)go!iK-HF5~ z^A0(H=>?^}`6}L#|DzSdZSlVZ_^pxkpA;v0&m(nD3KW1SnwgtG>)bK1KLOUXvJ>n4 zA;j7+Ib_8z^8d1YPZshQ)BiQ=E^+IE=?)yy#G&8Xw&(09oZ_S7+^UCKUej6P;;?%40-=s zxf18*QAit!VV1Y~R=Rynpkk+it?2h3;pm}4{l5_`#7^hr1*-nTRD4kwgWmps5)S=g zshL+v{a;t^=!E|NYqu1vRp|VQ1?S)3X;-VJHxZuT|1X6xUSsKcjw#^CZuBpKI*}$g z*uqyS7jf*1S^n{^(1ig+6xHh%&hfk3yUVmfIElS;ahfdUmx9o@1pFJ6(Q~&2KRVK+ zR}l%A&`9AwAb4tRXO08WsY@2B5Wcc6dg?nTD2+kH^S>kW^(Smroi$b2*M21+ zdp%b!CELTgp_#unJYpLx@Q#R>`08&ru6+7-mizL*NQPh;M2Lg<-=U?izo=r-rT?g^ z+m~8qOgNQK%pD1QA_U;5JSZkOyFC3;ii&p}?r9gs-+Jd;QNqN+?_qo%nEC2oi*d6*o43PJGq^FO!uKi<^9Ul%tvdLU?tL;ItfvGFPb2v6w;^ASERXi~cFhI-ufDDL!52RnVy z^}x?lWd(=2r*k{CoUD{2?bA;uOqM(3NwmNBL{ZK)bG>r5@hU<# zVii!?_zKHjOx0AGZ1!!(J4{AZsuZ^%0%oKf!J!y?JdABzDp>7}VG}aJ zgrKkY4_47*><}Z-l98!@PQ%GG))R*- zs^xK4>}-Y~kTHWLHGpNmQZB-niJ-PDuitTSsJ!MQVK@AWVMkY4RO(Sg_&$1-M+kjb zd(p`k*$INj2YCDT?P~%82bnsyW$KaL zZoKae^T9_YS&Hiq>LB-lbzu_HwIQ%kAvS)Ur?pij_!YmF*rnT{{)A&)fzi2E9Q22 z9Of)k11`Lr&F|MQG!JT=BZ)djTFNe;7xi*{Cd%cNb06r$%qb&-kRpSe7&|xEr~zMwh~J_9S9sr4P^QDr0JNBD)4)y2Y;-)N0&l?tgZ9G<6Wqd~_JoW_!nH zNkk~T($+w8r3Gkhs%zLRA4QJzlxp=>&aqmo2g+Y1^t#|kb{?A%@%%14047oOD^L-T z9HVOxW-VWi)KA2tzC-JGHunTyi2c~NF=c$R!%{N9IH1a}L|91O%(R2TiKD2-=8-|2 z$dD|qEJDRPW!vKcv5r#fh|p=xlY*G)VNvq`vVSSp$rrEpDqyq3YbVQ{yyrVIE^g8Q zK}vns(}Rvv`1Q&UqJEB~C)QM_XvpBJ;#{Eh9#?XST1-rM^I{wMmoNn$qR~darqNE^}98qJ%h_S ziC#Q~hlEt}l-@iU0CU}VmhJg#cO*5#5YpuK&66uJ0S zmsxNy0P&}(w)G;J+9;#;Fta8)&||e!gvbr!hUM%4C!GWy&-U+|*mZ*;#Pp~h##GRn z({J6ia1it4JBGeO$!a$x_y+Co0iTmOmXhyzXCAH=)nv#I?@ayr)la?mpQkD0JI7uC z`dW>Av+Tc;iC#LeD^blZ0L-h@II?AcO$8B%6$XG znai9w2Z~C`{afF6*~@eJm(E8T8(ByJi_w*Z-4b8KyNESR1um#NXo z2Nif)?~((0)xMh@i1IVq@w@$%co?|B`^shbOD7lCNtCt%+{gf$I&R4TysCEFy7X)F zJ;8gvx@(CXjafp8Z4iX!-pgL+hbvWzx)C(O1S@OZHM~12|229%{`RWF<11L{q`l5v z5Z3*TfaoM--2R9a^?*w2=epTJyTJ5E%bp%ig5o>>N6oR3a8h6I+}wHnzPeWpn`O>| zApIT3_P7QkThSii-3ROlz#b;j7UwvKYlQC@~M4*Bi`guIQ~t1 zr(0Kz1i*-N68lc?LYfew;DiQOd6%L|w2mf*I806R3M|LR#|v&KtT$4O{5-w)-Q>(u zOZh2e^;(xs0<&5}`A`um%Ja zaP(IFkZ)$}8yzlVRK8bx*ISI(JBtXWW^2_;r@dM!Uln4o-m^o!1z(cQH@6lV*QmC# zo>&F0r2bUB0U1Ukw$j*J$xa*QpIq72Xlm%_-@CS_?|O*>i2G@jFyqfRt2@$`+l(sz zUL}9ithn2KI9x$0o}AyY^}9aA!YlpW9XZrV&(+#Y4>c zXe!wGQ#D&rBN1fhIF5fm!1N$$JQV#2kZb>X=fwZH*^B80vBF`5puKlt6i9fKgP(9Z zR38VtZ+iBUAvE!go--8VIQaPZ-66Q>j%S;n8O|8rzRk0?anpLbo(0H$Vr0{A9bQuu5U_^3_qIOU_BZXt zE#oeFaP#?eELwc75<5&Js_~Nd!}n=CahZ+%F%)k)<@tHeX?s`{$M5wX&51^FS=a^q(+)GJKNh*MBkhh?XIFUEjiy z$$-fvoc?5V4$%~+DPfXptSN@0p7V&_$T;6Z3T+XKHLQP6gg#0eIc}2*pJ05m67e~Z zBceD6`e?Q2bJ;az zJOAz>5Y$flo}=fI&gu*W5;+>3t(qHRDiiz*tNf})=m+%N{DU;E??Cqxl4KtmlkO{Jm&E(WQOt$)>Amoj< zC&P=R&=Kt>`e?8gHq0PDi1A0Kp@7~F_$$9WdAUXgLG={DKA3u6)mv{R{rHeU_J&)Q zvoPnbr{Zrh<%jV@RBj5+Qs~7tdWWOmANJno_P9N$2#b{-eKJ^WXQ1@jnk@DudLtt& zuB)h$v_C}e7aHC+?Xw99ZR;*(INJ_*?I%}9<^UCSt1-uvXe7SeoIg;cvMUm3#W!s!JW z`%Z1&(I@w`BKhr6=z^L3a0m&=D|!6~zmhzDJVmVIxx4@8O8}k(Y7)FZygx`7gq;SV zJyQ?;&I^LI+jkMF9}wAQ1|*mbk+nW*hNu0wpkM8+gh5ItWqphKz0GTlETx0wTqRyLQP9;e)?0aHE~wS;zuw(%II7i6({Y_`bu5C-bo9z->+=(+OUcP;WzWcI<265@Qz~y4 zqd)HvV?>4iikr5T^Q5JZLDk+jHK`0K=Ks=2xhI}oJ@2j*`yd)Mn{w7_s=2}58HSru zdwPZ5Fcl#U=0S$abOjWYl)f)y%U$Z(#dp#&X#0doxuY3317Da4MRI17b(D4D# zAwrH)Uq8eL{pn`K7LcimT{y?x!-7gzyEp5nb80>(@Q$)%XBt;+)+D}>XHuOxOa-(K zWs`sE(k9#hIWwbsnsGLTKZ_ka<|HCU6Yk}Xw*y-><(>HbACzt=JR&b2!T(KEvs(=F zM!Mi4sEZ39RtTdjsqGHv>oS7lP5GjR6W-Qe9Q9@JK1_~U+0M>RuHZw*v5^g!azj&q zH`^!+sOVW-xKYBU0)`r_Nofvi4i~-h?vpv&A6brWJ7Gc=xaiV_1@M;V7Ai~j2B6}p zU~f7|^sk!x^Im(r?~u^aDUT$4xH+muQc=i zbx17~!4%utl+WGG9<=u3_+9MU`L_5*8S5Vg@C(@qv@NDu=E_+=pvD{U7kzv^Ryl{) zs0gAqc=Y6-1_;d3kSJgou(@g-8O^)jd-uY*KjA3C*yspYfwD?hrZ`d~LVvv;qoc?% z!@ve;f83Neh?>9~8kQjmBn(q7n3M$v0vzuYkatjF?#l9;ThgqY*FOku=`Axgt;9%% z_a_5x2n;jkU9i;VU2GV2IbC%ayBEr7Ls$5`X!|9C$Lv0#AYJw73><5E?uLta+hXQ_ z!zBHiBcr{IP%a3|0NhWylF45ZP`PEZ3@xz)(vyF2Sv&hUDP7K}{4)d<(SHnUecoj- zWoJD`RjYW4tG@iSO4ln#X+tQr!A6iEv$2Q!;CjLx7y9pfIEtiE3%!vZKTQh*-YX=T zr+y>=ucaf?ucGB-?Fo)RixEJ$j))T1ILpTVsYZwY`d8*y_%KFJg|rmE$x+V1KoFM2&%h&et$ z7{23cndjUMjEu^H{wtZtQ;yuB)j^XQf zis%ZtOzc!?RRD~QC>{aF@$R_hZ%vLmcH>ayBqL0A`?8!R3U)pt1o8a;ZUbX51NdFQ z;j|k_YSSVAPqZBKtL%6vS@y=l!qQw#+-U%Egnh!)oH}BzLn7cKfIIESJm-8-AbaF(Wa^s?>|fLw z5aUS9rwXhV4ywo*=te4@ZjRxM;NBv=&V>y-DR3UWQn?wf5w+EM^X~)!0fKMs59dz7 z)k;kHnvyJx-91C{#}tCSn3IC0D!s4>n%0c4()<3ZcmiM$Q_jdA2R<2V(~30bA4HZc zDNEdh>s?MXUY=c!0EeY%o7d1!7<@q#9u^*kataT$6=H^G{7FXdxQ;kJkwe39!EAN9 zUbeG2_SZ5jEG!k0*R8Wf);ARHSU}Ca0-n;^H?%TMt)|R@hH|_q*qJKyg#)2z-|U=V zuB{w_j_Xe%O7*;E{10;*$5DSXMxHIeEfKlie~1hdKO3;H5*&l2Sm~^{G5l;y{zb#V zW?|YQ2pzvf;9_z%!gg?FI`%`SV-e#$DYwH(8Cr8#=kIY4$ccBo#nJJiuIlMdiTjY(X?!lGD-%NSpWBd=LtMPIu0t#^5fsozfI z>X(y^625{zbmZ{nG#OgHkeQd>f^Yf#k}`=r*!VmcQ~y$ZSw-b>@FWZc0!O2_3zUrg zwBC@@sJRiGe=&`o!7%0H&gpz!)RLK(zc*g^IeC{zidsVVfw`^5`1FoSP{(e5p9c6TAMHD8a8_#>o z)x37m+s&R@Vd)>z*ql5?MKD_1y?90@d;yEv)&HK}f~eYg-v zvRF5TwunB)oe}jbk}~f!unZkpx@?!3SiPl4TV7wN@{Vy~dV|kv6(qCQ5BGQpZRCko zwwLFr9D{{*WZnklH(e{i)OfVY51eG_Esd>SY$MSm)}=Oz!lybn^9lzG-40t_FZiNi zmR7eu)#)ShKJLE_VZ%-C!+e{G*H1ejUB3lx@1I@NmzT_)-!z08JZh@(sih78l?3$_i*K14_Fw$+t!)m;VnEo9QOX4FW|3~yP;C$;S_7g zX!Y1CVzhqR?Tpa443c)F26burNG)+UIFnOIl*P+c;42oJk%*;-_pqpJ0eM z#__p-qAs39k${*H=@LFHUT#)t3p87J-t2t>32$~YCp3*jVx*IO#5GxphAt)XBb$`o z*E6`lAQff+n{_dpANR$X;}09r>BN*4GB z5(owlRIpp)wW$x?1fo79`mGsc&kR5Q4n%>_PdT#py@B6DLT!gw(5z+yG78q_vj2v6 zHGZGj**S#<){f@PD`^iK8Dln<)x7pGRo<)q^E;U}fRvcPsUt@#l~n>#*;V~Kn@q_% zL5yTUa5>r}k(sPNa!+@Q^D&=V^az$SsCY^f%3H|wPn_{Mk~LK8*ntObyDk%gr)#;f!3 zSEDz7f-TR?x;7$wMUqfw?pVGL#KN>Rpx-n{WeP%$*{y1SD-_8im)34A_|Jca1;f(bGwxz9S+!c{NEqY(jPO zk*kk9LGSeUClA(arU7M$sQWosaaW!nxIXcygK{1RMx=8--cE+}tk5{$_%xXH)Ywm) zO1h)%J&m^YFh;AM`8=oJTdiwx*>tzqPjBpvP7KPoEZ;3XJ^Z~_#C|+bIF)w%7UB!O zxaSXm0=dXcEy<-iP_4)gbhpCf@pHspGy;P{=LRSkl9y)H*gA3uKJM+^X-(caF^ z&i?+wyZV(+0%_#hQ?8QQRZsDYPx08gPxGJqfrVUA#FAa$>1r%_@`1GzWX>j=8_?DD zM9$0%#CX`SiWqg14ZkSAowzXbW!;>b6So;UAe&}Ne3~>%fl1?H{B8u}z$JC*dl$2CD&rmiNb?lJwCxVCp z00aP-73hQ6;+ffEWdOxd=M+H`UZuY2;BaAzhko^~d((}wjWu$g_GBUAz_ma=rZp-i zirNz`XqY{PObhY&-4) z%YghHhKFGpdt)nXfeB|-?xz;vK>Pzpc{c=Jw<$;&ry9s9+q-iY^?HihFa-0K-s+7azzEN zv9JG^cMKVah!u)C-?+#fg404)xse5o(!R3{5O5jE>O&i8gRp@@rB^CQ|8qOEUEI_k z>e%At^h(`!>Hj`^*@7(EejE;S6m6V<3p)~gczOV(Iuc9({ zin_>r9>rArwItNbythpdqAD?g@wzf0ew~kTc#Nh#H9`qTnttD(=4kOJPI=y~Q1^l} zRQ+(FQjZ;rf=fN+xDud(mf}l+z6^ccGbXoAQ5LxtKOD>GXhfTv@qc%i1~$KMeV~k- z(2mBqhHNO=x*p;Xi3EXd)B33@_wahvOkv;14C^zp&eKMR)0@yV;y{^6%T}$nfYbq# z^~+L)XBw-A082&e%kGs$B;wuJ$_uy8P)1ZKo{tHfNma59lu16dy7VX*~RsIs_be!3b15UUhh zs1*irWdC~2uJu0_WSIoc#Gopp6T1C*wOV+_boM->Un> z!P7}7tyH!3lTJsd+j*a89tolxF#$=Q*iv!5BZn^l6pK@6P3W+^d)Hu1u20WfZ$G}r zbR*n(mt6P$TlmXhAv{QESedsF;ViB0h|8~L!y({-FVTtFBvzGr|4}1PnQRS z=k^iaMxFiz>mf{q$pL93I=!r3?247Nm%06bf5)LG)HC?Ut|NjI$~5%AY8`v!XftEE z3s7w}s{jS6ytbRM7g6TyAhDHE$as>kKivgGE()PQFUuM4Y+D@YCOERSj2|iQ;Xsou zzD~%!Oo7lKgKDdc!+Zok84H;kU)obrPIDRUCE@4iXOYU&4buaG0)^6;-mp%dSSYV% zgYr6sBRs1^C{bX&bb}|hV-!P>v4ofX%|W?IGQc)Xj1`Dxah#2nOycc)X~2iQFT%q%7;UxQ@*>wvS}#DH!o782Quuh=-i{o$lM0eRoj}32T{g#D$exd5({R zgf}1Y(^Hrqa=|r^9}2;YcT%La4NvCe zY#C*PHIv#_i1|%=kf#avqt{kU88cg@S^5 zWpJaS5>5M}gF`}+S&RbNy6qJer=kQQi?ToER!A>^m-jh(hkf(mj@-nd_c9^c#}r#S zxR1%Z4JpLfINWy9cJxtW_ZFEDhB;%FB!N-3I|-K(y5BC4$YjsIOe)7R)MGaH;1%YyJuIl} zVWon5VN7i?^2}YZT&X1oZRSw|?_7&{&=`u5VL93WF@$ugrR8`vH74%Y7ntn`^jXG| zX!~dnpf-eecYj7f{iDmGeEL(9Y*`ip05|nnPjjL*L!SvLack~cQ8NhSKlK|2pc+w- zOP8|G4*md^$O8HF64G-L3=C$szxo#9Mx3Fcp&bB>R^aFvfu%W#T&O7T~W7 zQo!L56BlvTR3BlQb9<3-RAZWxOHKe^7SP61?Yl5!I=WR-Mh+H?+kQ!9?7*HGSscldwjR&#@VSOjW(jM_#F96gCUE@qk{{g$YjlQU(MX5kaRp-qdM?IF0tQXT&JxQc zzNwsbpxTtsTaQ&+48g4MP&jxprg1fdx$i$sY;2e#cvSo*QW7hWDT`-5Nx}8~s}!rY zx3_^3V#K4+a_iCfXXH^K3=Do1%GURY24JC}11L`dS-G3kmxV{jBgkC`@EpgXrm9I{ zg4AIAzO(Lms;e^ej{!iTj*5yCAaepigM2y<94zdC6Hn=!$Mw;iWg&-+e154F_8iNf z;pCbE?zQ!ko*gLr2`Wi0{n5+g0OVyek$O_=x-fpF!B-p07OC;vq>INTy_p1{wl9p8fQBhTdkPcf0+miR+$ zQBhH-qRJSy&I&1T`hbEtY7Z^Pr^2Y$Ma|^bI_$f`henhJdXm~rXR7-KcTa(ML?JXr zurM#L@V7|5?qY1rd(R9ynekICfenkc!=$9N1jMei%x2T>x?>QtH+ViS2qwQWR%tr+ zS1XJ2-cxDmjJ%jaauY2&4XZK1o9xh%=DGuYm#rTMxhtIRL#58U9X*Q5pYwjDv}c|s zSAAP`AcI7XBvWFnv`TOWfNx8_+`-MPGQy{Ep}DbAm7uRp`G= zX7{eD&pj4RuB(_a0sN~U1t2&9pmFXj;n%N8!y^O$GRLUnF@MUw2ofJj?g9kldrmwy zegAnKSYb?I*_h81cvP%ktVQfolvXk1YPU)TcRK6OD@m>pUmXom zRzL1P{zgx66naS?O|;9ne(kjt`{>XyN!DHg7sV5JM&Um))EqzWnm}bs{8EVEh)W5NFY9Er`w1M&C)0ZG5twMA08mj&0;4BGL;G$?$p# zVYmux$8qvZ72TP3k8K=HZ8KTlrZu>hF8V*x@xYMjh$r4NmBmQgkk+1@?v;5gj>eb$ zw^!7*Zf(xB41Zf#wrLljzm<)YLD>hCv@0LkX<>>!1DVf6*PkOi)4l0ol(Yqd(9Tvu zomNusb7Z;^{#mxtpbeHjZwFJ!p&SKewKZCTc~_#pb4h;T3XpT7d{RoXWo8zd=h&A= zPu3ERUV52%=xCY!>#|LgvBxW;XbFxEhZb5^+9&7L$?=5n#*SgZIeiQGHb~+JPrdc) z*^1*~4P6fprI#2IWfy`}h405&&awnErCLpGeM3Lftw^YRwdi_0r3CH|{E+NV!J1u8 zKKliuor%-ip-r*)u|HZ>S|k|kD%BxO1qGao+O zBhi;t5Y0xi)^evrVV};z%#LTJ@~z7r@*~N$o{Pa=402;@orrEGKAHQW-b;JKK~a0b zTSeX@&txCg48mA^OUXyewL}xcM^E1Ib4MnKbAEQk##IAFusAMf*_*I%un8&{=t1}{ zZ6cIo>UPNy?Jazevt=GD@qYn)*)Ybm<$PCuZJ-m1!$-cuMMziA2fX*r=yOnNBJ(NN zmHC<=@=te5Z`gY?IryiW2;Ur$95X*KJ?V5DaXm@h7t zr)gt)C&~=#8aL-~{4QMcf#Lsm?C*R+4EP)Sk5ahTadBWA&@@Fl=yi3(JB>#5HeB_O zi*E0M{yrSz=&2^p+cW}_C2MzPY%pyg;H99$U^cUrCiQ;!3Mz4j<1e5o>wnlRyp2j+ z&wHuo7g=}ORmrga-1z%O;u0B@<@|Dh8>oi@2kJ3g;G2;_7izCD1^g6y6NKyATlDq@ z-_-2KB!O~iG$zQAY~Z;gHOj+wc#!r+sy8)Ovy<+`wC^_s26#UL1vz<|C5~Oaj>IC{ zrH5-4m+W@pw1@_PLiaH*_}Q#ke^~~V>mQu#GW?#cm5T;D?DfhbC5QV^HDI0 zn6Jc>h#xeQ4?cYq?0_Z*vRL88%r#5%&T$V^Su@UZe(?2J2{LC<{CaN{rqlWHHoOzM zE!3h6lZkix=4YO~zQMZT2Z$_~Ou`v0aQ6~&{$d*vwSIF@e3k#)avjANV+!)Su}|+| z2$X|w_R6Do*3Oc>wejAMXsL`>%Z1QErUv(eNXa_8LCvOGg-lB?`QJPaXBgVx^y!~Z zyI#I^#wf3>)T_4MJZRxXwuTYuz1^h$F!`g6%|QP%g1gjLnGjE&ibUG*6JEP%N)k;A zsF8YQ&)W{?f*vz8N;264yW`)2pE^In`1#Y{S85mYV9vRKsQcY;+0G9I(Jb*0ftfsA z-j3ZPc(1F$PT|lE2C;2|D#e~qrHBh#LPCV)$Lm9>1i&4f zZu0qHY65#Z(M-KHD*Y`K=;|dJ*mV`l#8pK7MjT`>Vg!3za9PvESIHrb^sC-+^lS3O z7_Lz~EfufI7c~(c)1icYanplDg1VyjpEdGrhn~J=sNHC?H`Y^6i<^g?<$5ESgrj__ zH=N_ew5q<9N%7Nwn9C8d-TkZuCMdMF@S_GVglzDm4T94Fp^ux^!)~y!(HVcsr(O)g z^gq0!x!#T6eNPQGUgloS6Yqot%UM_nr_a_{7h+zk-VZa6W=tBqyRkZW;Ac}lLfAhe zs8)kaOD=sska-s(^=e*im`M4lzr(L?%+t<|2g%Dp6%t8>wI=N@GxO#Ul)~@^tRUMF zWZHToLa*i&u_e-@&y`OOa1mcu1)^1g13u|DS_Et&M`)RZ%N++@T1sdEkiQG|o1w6l zg65(xH83yL#%l#R90BlRN8VJr9xR3Ls~ok1XV0l!tjwD2eDMA>P1jr4g#9?+fjG;$ zbr+m#SFU}CeQ=^#eChT5sPRZfkFJ#yG#*;&4MWGilcecH#(9$7lyy@w)ifvj%ptO^=fM{I0JGH~L#)?8{9QQCCy$+d z?N_7=1jCOS+<`xKze@d;^MJcuL96$>*p*zqA64z@-lD*}>aTyM&h;KgUwxn@$Fh$l zUt=z7-U4}H)v_1H#m+bZ^Ns9V(Mtv!#8}CjqMy+dFYF*`=+i&GQo(96j9Dm z-cBopgygK3vf{9}^>f$-SV%yW+Z5M{6NRcI?#ey_&p-MNgHC6MqDK1YQvI1Xv*ic$ z(4N{+{F;vS3Q@b$;pUs*H&P(D8&tH4p zW=!S;9WD>J&D;5Glo7~&*w_n~!7-oZ=%u@Y*QL4JEzhjUm%_7CMzU24E=vS*%@fsg z66Rt(gprWZs4y`hK94P-fnAO@&xg2RA5EzEw+$)OSicr)brjX+6HO@mpi3#~TjZa4 z^+xUl^h(C4G!nsz(a*&)}oXfu_Lz-}P@G>lOIyyt|f0R(wZSJjooh z^Sr2AwM4Si78L(wr{e2vzOK%bW$u9K1=VGhGo{qF_L`74x5LGJD?big9w<$od0`17 z@!yoJuW9PO`2q9x=1rDZd@Fq50j7Y{bVBwpu5xrkL&)8GYPy?zMRf5a5`K4`1m5f0 zg>^axMMzndMz-s$=+9iM+HT#%C%C(NtqQ#_@mg?c-gey<0VhaGZA1cG9!Fjlod*zu z--zcp7A$!LB^BvUjq{J4tX_Y8$L1EL84GMj9z3hn`_KNfwPRS3=_iLiBv^JANyb!a6}b78%&RYwnKOnG@o8Avg>!cUJ86YjDo!Y;omS!0N%1(FvRjm5@&D2Ms!?s6_1+o zI3%26)*`~YJwW{zE;&2C;e|LUMVE2@=w|6Ni+5DJnl{sNu z^Pjt{&O$le=9%wORB~cQUkkh;E`}iw_o`FiJiZTiM0L8}AJ;2tW4f67b>pXt7xM|+ z5xOycR-(*uHp(#Pia*&Ia5#!-BzHXPas0Vj_i|)FR*kPy1p~uGe3+N*>@rzOs>(II@KK1hEdF< zm#@j*E_LGeihFjnaPaec8y$T);tLl4!aZ%MR1qp>uW8Y(dK}}N(hPvq)HPobxe<>BSk+DbC+)TGbA2%)HSfeE3zz zZ8Mpm=&-SJpFE_s1N9}au55%AUJ%%1P0itA_N`;n@MhcDpk9l@Q!nq;R(5#nMFt{= z?~BM?tZ&-2;p)dl2C>&DIA&fyUo)=y*GI3%C)EFv%`kbk=aI7{Yp^(mWy6|Du z>4a>YT*HJ5f6`zyAw!oDyFlhJwdVcySn+c*LM~Y5C%o?WE8U-D*EVsF;0j16zs^yAW*lf1jykK44YgOPMRJ+kYal+Byz4WEaH zQIXh^HrZw!eol)xr{rVbho+J#Ym=9&xyVH7CxdCn*o^OdkrPW?{8&p*+utFv2%W4< zqy@F94Q5duD!8iuA2)eqB4c}{1bJheKf{)Ej-&1rrb`#-aus1Qe&M(I{ev;U4EhDI z3~r@>xSGIPu!%k^X5Jl)^zLq~ZEagyh9%q7lz>Y%5p<>&C;^ByZn>%(UlSSecQd24 zZ~yvkx%L397=Q*B%BMC+NJtC?K7W@IKAOX1T?Y-I`{M!-F+AZbObjZ3!mh(0xgnx1 zCI7YbY9$siF_lRw9I3}-)_XyP5ak#cgnxIx%K(Zz*Y|F7|GctnIUQa+teeVoa50Tl*%`@IPqwjQqNn+pT=w3>d?!*hzh-uF>7tkv+!-(9i(SGxJ5^kHpP? zD4qUlLV{uVcNPZXQud|8Zw( z=WH(?Prck3Z;Pv^_dia1y_}{M!bw8`Q7kX-{7|D&6!7+wZ{4Kvx5&J`M%si~ZOp_( z8Phr4$8v=c!*p0}FQ>UIU#Yq=920hX0OG62$0}xTY2belN1*lPSldeJbOj6F7Rcf+ zGR%@SnfzXUocGDC4sB-%D4=z(#1a|9M zH4QcUFp!8Op;0Pa$4mYDeoZ;S^FY+Vs3N!t5jFl;uTRd>C71PBk~TJHWv&S37py@cyczB3i#YaFMJy2nFID zsEBDe*fV_}RqvC@b<$L4w=u)J?#5_7QFj-R=!bwS&`e(JS%g+aSTkSd%Ph}f#ienl??5Q&>b5+Szq|{Yyg~UW6zL-RJ1DN7E1xR=0S;<7Ckd-MT~~+0MkNsg zw6|rXwQu`um|1rPn29KIgaqXqB<+ zpaL$>;h1kAu6ExxL+QhR@$ISJ0Cd)$)oieg4z{P0rSHS%?+ZBoXU7}e4o<2NMcyxI zk5Mygd#+*fPl*#Ilp;Cj$lM)|@s#E3hx--A%AM-SAb?Qo6B>&Fz}3hpp~l^^m?k7d zL_{>S3?64oH#e?1(R%f-KCE&87vYnjMi4{u^bEG&J(xwZdb5H?z`=k8!orh32=cD%D+E$n>fc-N({X)BikW83_}orR zA5&wpc-!=yEPD>3rbo^)+qkkTMX|Kanobe;?)7Ow?>Zzl2-f^DF=jRPSugx4lbJ}X)r+EmTg?*$jCvKW zR6!I|0L<$b1O*YX>FT}w7pILo;3e_EzsTKJSuAhqex={Q-jax8mA1-?TX@rf1j5Gh zgd=^1)K8rFJx`|b4-V&eP|+g1wMnm~WFX47%@~)E9K^g-d#P&5rgVC+R7mDx?g(Q! z?uGHJ{r+tx$o7mL1$Z8o803@S>CA#aZSR*V&J|)HxmxbKDR@uye%2P#;N`9ZW`2~2 zb8|gMPD@@38m!8mBJC9EY2JS#*glJZ!1-e6C-6S_%oXtITcLCV-mS}#=#|YJ%2F%K z%gaZR^2bHQ^xf~J+Mc0E#Ml276@Ld}?)2mln5=az%+A{#$n zeOg=iDk@XDSgFsFFva>EIJaEi`F=qL`p_afJdbj2Zf*kY0epa3^G53xm#sde>#weP zZ-c(BHksDkTcygsFDU0WjXb?)<3SB)C)09NTvoR%uOrb($A~X^;>tB^Gi3I@=nJh@ zM9$Q5!f5|M%>?ErY-?H#@0t`H%nT`qQM6#}VECDCKZK|~zWA%XSr!&!;~gy3Lgd}@ z05deA*53M$iv<7=8()g9v8GW<|&x9n^!L0TS z;(H=@o)07;akLq2m_t=NI@S&+Bq^&eM?RD$fe(lD~uNZSP z>mgfD#*31k`PnX*mr-iCe@S)hdN_!h!Om%eYeNuuuG!YvR#LYO@M?3y5Iz8$QEd8h z`jM-7@MU`1R@I~{L9A?pdS&@0>TgWN|n_9#3f=U z`t)f|obRiyg75{jaiyqZ4{d_`-}!uPtD^9p@%Q(GTJxw~Z+G`@ z6%ixc24a1%M8)UTA}Lu}*eakq5>QSDw6%Hxx-}gwR#Qs-FFrX6Pu0cDCmR>rtsPX5 zyT8hO(JpUNlp&5Cde5+s^$i^n@yn_@u!I9Y_4AxH%EOp0y{cq+Tt;?i)wt^=mzS3* z=VdeQnS7Zn;_(3Q0nFhPjCvbhwb>>d0|EM$lZfH`aTo*}wXr|F<&*Zppjo$%rdIrr>Kt*SS^l(3J*$ z04wTjBcHFCmC58Z^v}_BB;ZdChxT80$PUh-zHYV7$~4OmofT*H!PcD)D;S{RFHvfoD9r8Wm2V{TyN>|fwrp<_rGS2TX77sTfyXM1Hyu1-p32rCYvVK>+dV;yl5V+Ol(ZLitvQf|EyU%o_BLawyO-&# zJ*X?Px|DbYxE=7|Y2E$|mkvjR8(m6`k;sI+?bICSQ@HQU+w|uu#!9LI zr*lqbm$_3r7ZE@Yhe#v)Xb1RtaN*4sR=UZKYZSYD`En1bg+{StQE2{4zpA~I9vES& zhV7jJ8Y1aDCKZjTOg(v)#dY@wUT3|^S2aBw^~e0Y@eXx*Ym1jjvPAUyLWU(KYl%cC zq5*_F-%DTL#?NFD3e+SlT#)q3imbTuqlQHwHYrxZshkfy57b^PZYxT__Xj!R}Rb5B=! zIaz*IvHTpTyb3ztGEBO!75hIy8HkzO#^SQK!FvQdSEX&4EZzhKcFKamRr~8ZS=){+6GMV{T`M-_A1|#m1 zyK!Tx1mv+7@Bqq4&N0L(&HZ-G_i7FRGJAt78K-_ATGbxeXnlQD$5*D2{@>$VzJG%e$+z`ZfStA8 zHMLgD`uY}5kG0BYTWyiAEF3F*b&4bvLkIe-1*hPXt7Oo07jBB8y(TYT9Z(DW2zF0B@5-~F!N zb@c>by8HAEqR1Bf-5%_1&9o(7V@Cpz{X%EWKgHZHOMY!dN1#c0S)+~%P0Fh%6{4b6 zA`IJ?`yn#3#^rz%4x~pW5LF~kneV;Dv)Ndy_ci@?q|@6yzsFQealV?(3XZ=D$a#;1 zRIfJt9GfB$_RX0?a)EQNZb}K-@A!T{LJcje$DDcfgorrUO73knbgHmP29gyFj!Ls< z{*&*r^VKJ7ef4q$SBvqZ{1)1o7~OTY{F#W>L+ zjyin)&$pzhO!VOjLHQhztvHK9CixV*jaZsx;w9Pvp9`7h#lBA4#ZAFY^w^9r&w?6o z&w3{0@kc)*xRVnR=&-Ol^Y{PKq8FffeECms(dmud?2up3C>x6cKkNKrT(=V#d@z4u zT=c4NelhnPzg;LDYH9ymq8z50_W=i307ny$Hk^9f{6nI zH5i1WxpsGV0d{(ggdJzqV}wGy0YzwtLFx=~S^C1oNu))HL>dMDc1#2s<~!EJT4AFt zvZIa8R@|ut>q|7eljPBj^l;x!|6Y6U#NBdzpC(dog~bH|6MI1DC*w>yqM1%)x*T2& z`Io8@cm9DW&ZoaDKOj0D&(2Rqm0BFsnZ4bHtXt50vML-}Cdl3xUp_t)WG$?Gi=6WD ziF~<^T%wmL=U6FjS2(?lV;YbvWTKr zXe+n#(#X1q_{_w_#AFgaYIJzrlW?}aU(*=IsWOT4N)A0WV&g-}{rRSiJrZ||eu8wj>i0Qm&Hp9HhWNYQN zUNXXU$rVp7;Lq5@M52+JiJ#sGCBL(pJ96cK1}Qb#l3aRC*Tg9@n^rEx3g$O|@S9)V&ig z51Ec2Q0Zp5uW=iz58#+wCl1RK3fA90lJ#UhZI|I~n|9mK^0Zo=3w`d=K*5)!vI~hk@{%4ZRf36=A=YfFa000LQhI_eG)l8ZMuYcki7$X#Nkw zmA1IzT;%HZ{hp$=$cg~yB>(ZXf1*@mk&O|ROvFc>rh{KB#NpfnKOF7G$^FB8b((4a zNr7oVXUW#~f!DNQ+SF`TP#}LmrpSEmb}k=T{NC)ng3mriJUpN)Q3GvRR{-F#zLo0z z`?{ouZZoZ#Bt6i=YsX{Z5jIVrMYcBv2a$l~jjV2<~nEEd&(>JC){U zAm*Vo81q!Ni~O(B`Zx1HU6IS5M&r(RK;ix6;V5j){;LX^R<)!#{GW*T*PktI*aTv@k8o`k!|^XzUR5-2K0s`WHnZPk6ep@Ldl&LwfxdV< z8Vrar6a&_d(KCY!p-HI!U(npA6KMGq$8;S2DJ69Dzm~*Ezn=eB1i_0-*3D}35a{{% zeK1qhi1q(BPF+b&{qvPoX?lY1zRppm&+~(l+Q*L4Vao$gtr-)wHX#O}CVOjK{6b-> z&zoIzp+REffc!e4W>w_Fn{wA#F}~LAIYpDwSZW>X7G-%U_0(w&pfuZ*Uqj|>;72lB zDhd!|ro$Sk0-c)!|KYQAzH2khdc+@5nQYYF;uJUmL1h2J=wyO1r`;u_1@xkMV&fqw zaQ*yn)Z-_lvt8F9&PWdgB3o#A4g6@i6w291)~>eh>zf1WdRKR&McW|I0{8PP7SC_5 zlE?w^v%Hp;+X|(f5f}XlU4=`!(zIu5s|jkW`jEfS%)Ymd?fKKffI(KTZYy0CzvV2y z5#a|&C~<%03M8bfhYi$Lpwep8lTcEF!%&3&!|u`5pJY9ha6oa-p2ATiN7qEpy$@wv zET4EJk*&@KlC1>S_8UH{0pDB(`u{`OSBFK_y=xC4ph$^?bSOx7D`3&x4bnYycQ=yK z2na}bw@8;r=LiT$3`pm|xA1*`=X`Pg`R3wMuGzz$wfA1@S@%=-y_6~F=<~Ox9|5pRI`x$4f+!F#IDFhg>h2Ohc?-xDl zT@OE?wBdP6$Fd8{VJu5d`)~>6I^-2Aa-{g5DnPbM`Um`ODrCZkZ|!mt;Z?F*I(KZ> zX?UOsWbPhas_vq$3Rx-P5e$QSc94K@zKZtnP&!TSNcIUarNyvTVpej|GRX@Yi9~^; ztFxKey9)802`n3rXLZT#TxR9j0)58*ChLkQU+2$CHc+*W#zD^lhvvhXvn(#O5Ri-A zzpjnFO}4BimZ97ms(I%UQ2}57{BR50wow7I7*d0Q*7Nx^qcAvESy~2aJ^7<0zWUz6 z#^bGF#rt{vZeZ~pw8RNx7b!d5CQ5Mhv(`5971uG`UYF6mFxltLVJEV6S|Gvw@<#H& zxi4F-hTvw@qb%{JL^JFIhpVgq(|f0Kmu^sJ&xJ&8EK}0?+G6-R>b>)ix}J?*w^B*uK4sU`rhRuv%&aT1ul1WmLJ+JM70)430&4%SHvc=oTpZHtNVj` zP{f-h$R^5nt!&Vv($ha9aeIG^j>O?2(>5s<%m8WGL&5Ptvzv&S&uK zvygpkwbkJK6!lt=+veoZ8NZOl$8p#26Ek!(cWQsXgf6Eo+eTjJ#X%Bzo1Q5rMhA4P>Qf&| zQqaRb_5HonjB^LA-1sA|fue+IroNx#rfJ^ZW^lka}G+dN_=eE(zc8MCOpWD z4GR+WE*1%NkHrN_T0tG`AWGJp=$nU7)_@~T{Tr_TY*dED%DHP+)Hn&=Krw8+0~HxSSu>qq5x|5x^1(FVqro3XkxOFa^i;{;Q?%8#!{|BlESxwb|Sgce28s zzXTHj<{|ST0yFAAAs>UVP>9WBE(_4s3PB?Qb|uoW9N;bijLv{uI3O^PmWBqR)8;W{ z%n7h*=1b3MV@}07u&AFy=$ zC<*-C_f(?i$G$aP%U{%^T^3NULJbWKd!wG<SFB=h)u{}YHK3}^%~sOaf8`zU># zxW*pe@wE~F`f5%P9RpR>AjAY3F)b`C=;gCMU;bs{|EjylpBHIThJyAH*GTlkYb$<; zzLfZ%Fqv{J@agzQj#L@&dBFb#=+2kj)}jFwZOIvTsthTgE$9%XM0!d`*Zb|80>Si$ ze=}+KK|l4!YG>WInfTjHhNd3NC6u4P@Ur;Ofd)VDgZTD4r+5T()IEj5CTdcX2SG&R zNY4Y>oH%7>-p_Xzswr?F`yzsAkl|>@Y6pm12K5~;#D(Jn?J>xZiBr&IlouS)(a~d{ zaEbk31vK2CwP$L}39{^crn{wWG6n|u=F;x>cWTMiDDaWCH;!M~J|6`lfCC>J>-#IG zvEP&1)%hy*HWq}3f}-7R)6e8C`KcM5Ulqjdv4b0%Yq9e45h!Ngbs1-+eU17SXbYp5 znLh-=C9eVjFOq|U10Z>d1a#A3VHodLRk}bM9C!~LLBk@Md>C2xt_9slTkqwKqnMaj zZ_W$tUxA7Zy1}|5Y$0XC7>|<^yL8lCN9?^eB7(l0-6nge*WT`0nWjirSIrm%Z60ob z8S*U?3v^$Cp$y;CL~80IaUf3p(CV!5^@V4*?0NBJHA_PG#AyZud)4INY9)t z^vUQ0A^S!_nY+oTGo~M);V7t;^gVL2K3p4r#ZJnZEH4G)IZHi8n&EW9=?f(&s2G6r zJQJ?vH+ls-ZWA2~HcCkFsGCA!-`HQ~_B8ds2jLE9Dv%+?BY4oM*3o8xKuiw*l5pylC9h7{i_m z5K;w2`{03r%!82gHmbpLtGkj8HUtE0v2rX!6ak|Z)9b#*avP^%dCEB!DQ&y5Quk?_ z)#~v3uR2)BGt>CZJj)4!uY}VCI;0k4LCj|Itm#Bx-LEl!0B7NpMLtR@^HkH;d^NG5 zkO@{tp2S)Ct0wq<9v^{NuY3vp%$Ld|QI|1D*8-%YfDK12H6R%tC2u=gimyy$+Oh!k6k@8N1tyOTcX zXjnu%zhNjB`xTE>h<6hGS&LP#^^3KlbOz{2_B~s21r+JZ?IUAjcfaR!KK0$&^!(2w1Z0ouOMW&+o{t!sS2UN3LRd>roW@s37BsG&;!3Hjr&{SH@-&4jNB#b^u^D3??(Chn_Djo<4_c;e{^Nf&Yx`Zg%%{>ATo3lK-y!HqX+Qv zA;9#zIW81oc(f_+d#S9Zmb{SR16+T|XCAUNe4qE3du78y#+9>3YfT9PH@;!EuJS9v zq$3p@Hq%nSJ=&_*R@4s;eGdv}#8-DgnoYKt$@AP>`^ z;&t0w3|%0>hDw!eJpSLvCEnb@fKgR}3`fOZxzE|Es1RW~CLM8`y>Z-lW-{}k(nlx` z?yo|%D#jF4R31~@y~=|oUjX@x_zuZ9ep@xNfni!WEh4#;f8_pEUB(2`nd=tUA0H&c z^^qO-KF9L8bfcbZIU&KrB!&SC2X-kF$OuC z?dxf`fo_PQrV<}BM*8(&>91N%zq&uOX>2e(R7hw+nO?i?YHbfRM)zUjI$Wpr65$Og z@8I$s@x<(7nLpsaqcwv4NJaN8+k4!1h-uR%SPv)0(#fU2+d;^!d;N_N&sle#fM)(q z;x{wnKOXmy#G&9)JM@)540tnb2Uu*8Q%-s|00R?`08~jyNk%5hBR^Q2(p!aG!3(5? zfUv}!XvqT{oDPqZVs3M?PM|e%C$b||A_zDstQQ-r=n9!w=_-QKkPx@9X6g-9X+4=b zl<)M|I!)FR1I4cTGWogx17F4X!~Z)wD13E;d+me^ddmVo`F}#15Y6-d6imeq@`LAx z@>L#auucw#Vj$ZvNcb#K1F#p|!KLk2Yuj_tFGKb5>T;y*sD4sDo_zoTM0L$UUo}!> z*Ex^d$}CEIpJ*3L21BS;Mj!=uTm|6%}K0RpVd{}zi&j}alV42 zbQgwjP57_9j^J%DQ*UgvfLeL%dW1E2+vp+rSR1>li~o?bj{WX#cJ z4VdgVJbYA&=*;N_2qSy~KyHg_-!McnbJFp|$S`koAKl>g2BB8MLq}Ht)pwWE1pS*p zpa^;O&CZ_PDV2Tm=8#4*-Z&a zKkBor11uj932ABCwSNQFMaC4)_2Jd<=Lp!377o3VdD653hcw^-yQ1GoQh>bN!|9lW(0(7VCrR`jz#bT&Hc{rIxq~_# zs~~>(9-y20)a;=WbwM|ezLGI#4(p8i(}`iRvBA5#%da9-uKw5(m>tSvkcaqqy?ey_qT!dCI<&UXnbnB?Amzk+Sw zt%A~1ry^CC|E?v=zAISVSJ)lXhg#P|WcEUB8m{;9+R}%^Bk76%VLT^l@{^_Z8<*oN z7_X|D4-4;W*Ox@&uPdOCFFmI zDN)r=lnnJoZ$Cor)bX<3xh?~3T#p2Z)3`ac&{b(>L87&-T=VZ$q6KsKag_5ed}%<5 z;_#0sN(Kxgnu=TJLmm?}zqNm-naGKdC;#Oh_}g%ElK#O*`7)i4RX*z0+-eRXIbiSc z|AmQ0-(DtqHL_FR3^6-V3NZzwfp90PJ!vg=f=`J`3>vNkY%;m}$IcCWKKLBTp!ox< z;(OQCcmG#21_MRcM9AAzF2L{-Ob>M3^AzTxoYpU!1#s)gf~^s5Km z&Gd5ibcge1F2oN`P18}j=anYz9I-T+35k40(E~Dbsb%I}K5);o!mIjK5%G zGb;=$X_EDB>d?KxO%VfXzxVv_M`6l@_pbaT%ixIUC_*_UC6YJROBCJ_da0x3u{PS4 zjQvV0@kvbHi^+(X_g#LEB_5NJpw{G&^{ktshWw?d{xgt9~Sx#jdsAY4!X6Y`4ai)o$}z`eqRcBWodkKD5weesXmM z(eX9ANjoEq(XL&y{{)g;?fG0dH&U{GcQvAIhhjgGjRHcfh*6OOAatU%;iOodfKzdj z!fGWv>Z=gzjLFPo^HW!&?cobsPYqsKt-67uPVY^<$lFe%9n}+2CleX|yJ8D&BxDpL z9Y1DU)GmRg?9R_rMu+lCC*NE=pl=gL>{uiJ(p@%^eldM7BX*kJl9t7E*!vDe6x3zw zN}FX>Da73w2-kau-+HhEqalR{Vg`N?x)1G5RszCYgFExdtmV&usRR6o3Wne-avW5& z`F}cl@oyfA%tZhA;2@WOM}dp`4IXsgk4n}R#m-$yq>x2i`ak8bDyex7m|Q}Lxi-50 zQN2MO_j1NUK^?t^ZIRDFC;IacXD!}j^Xv~p)$RO_-88Pv}LkzG%y{J5}t_f5TNBXU)PFH1lOg4bpq5Llsttpg3M-g*wm z0uTZzFdrYE04j+-H5HXv>w2)AFSWW)So5aK&;cDSAg2N%8_ofO^fv+D4O}vF_HDdd z^r;{zHH1;#(HmobV-<5~U7f^h1~FaAKOB@}&PiAHbhC37{YOldd9g{je**zIEF2u@ zQgfYJN!gb#3fIcH&yzoXgtfXSl%R!4-Y`Uq;R6SngoF_zKrL_l@?s8dC^>KfTzMw- z@?BVm{T5MUAw1`xU7W; z)T%1@iIp78aFkKkXqL2 zvq^R^imQ69T{M30{0bDv=!%M3F9zbA?YOpm-u*pJyLCISs-%TR)d_=jyp#4GBJ}b3 z>~Ob*=XM!riGsSRQSP6}DG>8t7WVx7K|(MeM<6Mf&Ii?EPL7Cp00B~F6x`+tKxhvr zpV3%>XvJe4=2RP?nKD4aHxymcjzn~?gYaw-pM;`cphZuibTeQ|L(^eNW5vwqMo=WW zqa(Yw!eq!(>s>8|xhM2|wzBW$c=BACK6ZbxeP{6kbDejgEFCcL!KzK9%aTJ@|FQv~ zbRv!N<99w;iy!LYu#UjYxQ|S<_v-=ys85&)BYOKo!Wh zMgYApWaDAu3N};Buc~-qSkWb&hzQKEYO&QFUla%eQhM%I_4oIKz}sU&LJ-h60+ojm za|PAaO4W;BlA<}MqDfqxpGUY9m`!VM487yCRUtvlJ2hGmoU<&**7Ov!Z2It)eR@Bf zZ2>3o)nQt3k?nbDgI8K~yjgE$QuaFF_IkK>=w1lWG@}*~(RWDLI=KYO9SV13u2f-y z-Q<{-oOJTq!;d3l#Ble&UqByVVuEQtXAS1i8BjsPmwz!{XEg(c2jm5Nz_6R0hf3ze z?$;@990ZoU8SM4})Va*h)*EC#Drj0vm>&c0J_$6xX@e=*v{9g;SVVyO>UqWUW(!7^ z3A=*(lXFA1ix>v;gW5CFj68zy=yVY58+&=S2$1jX#hCAMqkT7kw0~be9{K~bgsR9# zj6%eZDxv(d|2-daAeAg4REX_n<43+UAej3QB7U+v=LnPobDt9u5ZsAUZj7XZP%bb; zO1+YjT#uRXzS$O#KzT{k-TMW;MGQ)%W66{nBe?(z+G5_Y08dJ4{W?m`*_%?3`&BJQ zJBmYO`jKhPJ2rEs;rx8wE=s;KaIQOrIq$1ewzlIRfHVRuU|Y^qYu*JgZV=#A_(*eC zTbiFYpKQ!5A(bO(e|K+T`JMLIj>)DR8v(~6{3sKP7MB}9ZV-(5OKGX~RPoej$%L=n z-9x}v8612np7bjr{#*3IpXVlYtCl>`;`bj!y;{>qS4o|mwcT_PLS={KQnB}<_BNTD z_<#W=Sp{ovfTv;~{iQ}#V<IUpdQHnSDzEZ zZ6;swLW*@i`$@N46%@WlvbBR} z(F=l^bzm&j)tt|te{pGNyp4~4L^^yC`o;fl@pkA(uNiTLnxj)$W}ZH5YS=g=rtI5T z5T=xqlnfs?PkbG|wzdZ3MQyoBWa%b=@0#dGdh%5XOfgk7Y(DmQ2SeOy<`F%;(RR@)ck>qs$77-di9D&_uF=N$p%c*^9V2^+ZF!plfn#bk<8RT3_RAr)~>oncM|MGa&KXEBH=|L zk;#~!UINDl2($q+3#fn0vc0Em8>Clzt$C%BNlT`*wnXpOStz6f;>{(%RnADIGXD-c zE;6?*w>m&I!YAMp9n#vz3m05W1^RIdqHJU>`4lJEb{Y_8p7ggkdgy+U+ zW{bo6U~VoA!`ODt+To@0-P(KANR3Rk$T~!7mW?H9eYz7$8ZBmFy9!7iM^iX}N+xN3 zet!JAnAUr#)OZaC2}z&akjR>qpNr)dMVJrwaOY_{$0!5#vXTYKams#^EqpEK`S=8y ztjEGcR5tI49H1R~&q90KNe3Udc;<>)v@td~K${tu8os6KLPdAoLDkH&CvuZYJ)BQk8KLyk}@Uc2EaV@X3u7Avv4MCW;i(6q2>9x zm3Bx-Jy2#+Fe#M}zU@A?I@%M*g~br=v+V?W&WDNgqVuUhk&op+_aWUUf3Gj3t+) z_5lmB6mgO`**M|qTp->&UPnZO~=$EB~ERFYLznpn5Y5! z_U&8zGwE_5pxowpMj`A4(onOgdTC7{a(XIRnBH5_=`V z814q59v~n!7wZS{>!iU&B}CSs!uyUqeJ-|5fFQ0655G^~=(uR#r|Su?1Hz_2#T00p z($doE6(=I|QSkE{K2eg`?YA^(e3~C5y8hg>mbu#c^;1p!^}~KtY3zC`l=ye`@A`vC z{HH8=xUT1vmC*cfynnxeU2pKY0!cPb&ev~8OjYuewJeMBljoU6W?9OLI8*Q-_x&LX z$Vhpi&=`UewGyD*48%@TfsSt7j9!U3>9f^BrTiE0cG``E0Nl5)s<~7^ZRP7oPUmOV zFR&=yI+3A28hqt--c5NkKhs`d_{G!1;|B>g_=dkLV z9jJ5$^ENIHkHFw~1;-csg$+m)8XNz*gd$#c!hG#UPOUn;upkhfqhz60SnRW_bMG10 zL7sp!PU_LRS-HL=jL}aOHoyGmr?JrOkZbAqX<2Mxp3vQMfhRq%Z7o**ebczoV@rlj zE~M`H=VuoRIyR(}UgSd3l!Amr38^RRMU}ck*HE&@K&tCOM6eRBnW5ope}Q~J5{2W9 z0TB}yzwNuaVTN}rE_f~6Bhs2+a*qKGIpi- zF*}Dd6-Vud2o*Q5HhxZ?_Rr0hovz)+0yWEWYFdu*_i8>=tF39lQ^GomrYr#`W0KVR zq_TY5_2Cc>x!~sq((Z@fq*!_*2fT|!h#8*YZGFWKo3bRp3&+4?85%U^B+_*n@9gXZ z#+^@4&|}jC(+Jr<`4)lR;V?Bk(y(|O-a&%yx32H8NmL-g6({ps`dImxnzXxJ}q-mFJR ze{?FTi8|StIPuyIsPNh?eU}N6Gs)Tdb}ND>H#2Olukcv)HQe9)lq2-H)`qoPj&DHq zFT%C^COFdn&Q2|SI%0|H50FR9_a8x?^dsN*L-tGQ;aJJu-ruJrA=!q*5uND5KM9hR zYNO*Xd5moJC}QazM}qdhp>>BM6%tZXQm~7XkTh=>mw0%1ObRL59f|8V6?=A%kSuoc z5cwV;ywh*Dq=}eser)bLtLZzg_l+SpUL4dRmY7(l<5Kc4dvUVsfvw0@? zHQQfqk}d1{TP+{?4r-X6|{Bv<>&pcJInmX@Pym!PJ)E1J^+;%=!2uRU2w#bx9u1G~`r5Bi_ zDa(_#eQ!3%7v!y*zG|q~S+x3yj^|p3&j#9vtB(7{_GzK-O)wM#a?m2b+~8t-unjU$ zKNn)*w)zL#M@SG;op!^G(LRbB@=iocDAh-3;Nqr_CjzHq<{o=ZgQNNF#Gm#OH8Z|N z*Cnj(HAstX>&|rH`yNtx`wquj^6b`~Q7raz^&QvOXStC`tRjxiuszsv<(?}k#6`WA zal?DAjVU?HQ*C0Ta%YFK={P`I`H=1(^J^MSJ`fX>hQgEMONPXAKL*uB6a)A0`BmZP zL|}01wBUduEnCF*1|+!?wFgo73a}|?+K00~IH+*ctnm-Nd-oPZyb}g~IWz%OUZGWI zxzy|ofY^nX-jcV^xJBfGcvjo3+)Ad2oSAUTuWgC`j36aum4=XN>Bm^l@Yb_}hSmeZTvG=Bg4Pv-X{BA2?`59plO>Vpv5&DplS9h_p= zw72nrAjHq=5dJgjC1G10`Hc7JDVv_}z^1R$+@`pTi2VXwzx6%;J=TA1!O`KCU!~tG zaU3obJlw!qzxx>e!7V}L`7f-V!Di;>fUdo|2M1qqeWC-<9h6Y^RebejNSYxmFbssQ z>uok2n!JQ>ryJUxffP?(UfzXQdmB0AQ|m>xZD_|iH2Y>bE0d_)6B`0SW0E`B(q{GU zi}};!TH$HfZ31n%ZaiWt{A$#&ShT#z&OY5_e8B^s!)g$z`c-|_=IguP|J@Pd$Rt-^ zLn_+0J`A_6P#Zj9d%1vKNeY>t7eZP*Pd^Zv@!c3bsmz7PcesreR=D35X5U=iHgl1O z|9gFTIgCV9PZYLSA3jo<=En_8^n2S0VMaQ}sj>4lt6M}F*!Nu|U-oCQc^z&FU6r4&%70`=hxiFm zEIcgKb?M$*@Srif9nBp38ZmTpU0X%p&hZK6Vf~xEw!+8AXEPIhZ_coy-OaS#cMP%p zl!^7?aMRHSf+=#F%%q;k_o9*GpcuMbjen`;+g?&uvEwb$b{QZ?@6{P{fTfMCnr`72 zOnE!KWVLrQe>MLD>0iU-NQcV*=xLxa?xUc$)Zg)*qY6Hg`Qt(XKZir+JpJ=Cj)6oZWsP z$qz^9Uyldy`W=wotVOzFmo;v5z}gX)JPQ^2HHg6W<0T;OE5upT;EO10XS2AyxoMI% zBX7Rt)o@)f)u?Wq_r*At#AZRvZtgGoAkNCS7Tkw!TlRVdXIc;Rq3-Pn5I($E5b5AN z``M7~^5#>8`w;mhN%`$Ek0T$!lBMtU8V zYam?kvd?k)x5WMW4|`lcD8&@pIzEY=5c(X-@ewo+@fsL@fW>)OxJZ=2?o^$ z`rX~EjXwjvqTd{lHi)3PU^8H+*AW|-!cB}hEiO66`&Q)9YlGon9zTk>XJ?#8*vlPmtk^IFE8&ho1)Wd8fWlpFi zWnfl=ROAJ3r7LV@+dLI6Q!`UxJN=ChIJuIfu`w}v;L1TnD=Q_%+{((TcyHrEr1`YD zrn!W6?B-9x+461m_Ox_`R?P;Z-$+9~x7(+-62>;c#J{?{j1jpx2QEO8 zRK81+q$+IBcV7f{d$==x=DT8ZR=6hk7xxj^mRibE??gQp6UBUr!tNI+N;QDS|A5`l z&5alWo-i_jaw)QHYvrm@0XsjJcB0L`R^^u#wUHQ#tS|L>w5aIw#MSQ1wGBfn+wJ7q z*i(ab)|=PCM=|^99C?z<3Yh}Sy8~d|U?>Q*3UYGhrjW+AD)w&>ck(?{a%f+$+}UP4 zQ5Tm&B*}dINpp|f)I8_;K=@5yQn6F9Ds?_F(?_XpBku0e2BI2vRt-)AOg%<6BOQ#K z2T>(D#cQ!56p+Vc!<$DIXL5i261a&GeWsHVm-OubeRk`ct|tT?xl-1Q#({o}sS(dO z=fc9I2>Yh$$NQSLRM?mB*nv+10qB+p;-}T2`YYPdHs;A88U#0du1MzLacqoW_vvuG zxe-FG%YAAwSn=}6j;?M+xj$H8H{Kl6u&s2C4_7@GPKwY3-E8ag>WhK%yBJ!ISM zJ(lUJqHzlpeY+kv|HmI;G+Jq7#u5Q#eoD1a-#_hJ&%7{btXXYG#u3iOdqIk``lVhA zWTqjBL+c+k8Os0pQYEV{mFs9~xrdKLpZAFPGruCTb;FYlf6S&`Z@stJ#7Mo!oa@dU z$46oXDX~5=#ZK<57JGS7zjyDYT$vULaWT8RSbbk0{{xsxiRyZO8jsa9a4IK7CiXJ_ zb+!m#7$1;7qx=}J;#Y!TCbKFcAHM73Tg!vkU2YX7G37hdsn`$lD3(P;bn_s^yv@-Y zp+p*0yn02gP#y1$MlC57|A-7J24A>w!|$<6xy@+C^0IY#wWoo(!L8dAlDOdzY{zb7 zMN3xAs#>ckiAk;fFj}PZkdw>;a92jortCCTr?{@UA_Mi$t z@J92vTw6wM&)Ek z*?Nqc$IhtiT6LrxB(JxUe?wgWZj&s)|cQ-H-DW!OV{G5`)|1^#o z(s;5pqTY6!c$Rr`emj*^7$ao%&S$gD%5^INdNC}?$L&nOw?F5LC^AAo5TU)D!mZTg zs{dRWIcA9I;bY((7ay)X4C4J1M8vcjEPfxdd>O(tPuFZ|)SoBdS=z?0RwSd6S^VL( z*Z~%V_Q$w7M?I281PV5ae_Q`+QA}ib!H-F@tzGOOLc z!?g{*;l%&%lsT5=#ATQM5cPY7)PNzCyTb?t5_nZXYkgJHf@E-Ty(T@SG{>NB+(aX7 zQm&G-?Pp+IU{t5l*vuMDUo59&^&Y>k)=viS+5C@3xo9zO0^lSjOw+3ueJGvngRIY| zFOK(4toU>e#0$&xFk<(S8?Q_A=az6_H^gAnUN^DjZMMl5{(DnQyfC+;d3k-uo_u-V zeWqC5i>(PcG>wljx&N&Cn5K7{$QTBwbjcXW>Q6KLQ~jQzaNyE1)OQw29@{_id-dSM z5ARGRt;3c1R}c;ED>p@aIav(x2h^ID^Bc2+8G?iq*TX}SdA8xi`Whije{0(lbn+B3kHGajr2{h#tMHutxK1_Z5C5Hd zLqoJkD439eQXkYBJG@va1uc)FRYwIPF$MoVrA-Zg?eAS!DmSwo2qNF}eR_MAt3e^( z_I>mUL3<$A`^Oh&kMhYDCHc!2dL#_$y(M)KQlF%# z9)@2p?B9-wSZlfVwBig8u}Nt&{2K}TK6nlv^Ena{L17v)@Xti5Mv}b!aL>=&1S#n$ zl-ZSYDQM8n1_QD&lEFsCKt@egl<1b2O#XS6jv}X7%lCD)LB$q0w$Ed6hctkdZL6LZ zE8jd-WTNkiTqh=R3_&t*86#VfDB?y7HV!c=__V=siLr!!zqseK!Ak$!OUG6^+5bf4 z=C?71e-g}c`{I6h=8$>0qAX(@vr5W=4B=`vm7>n4)#Pkpa(!S+lB1#^k@QSjT#DMv zY2-MK`=3jh)En0j4G0+a3Hz#vKwRs(dBYVa9D7RbjO$dKi(?*NmJHNaU&z#_ zAcaU3X)#TG{xk9I!}Ek1cxlhWBqi19pbL5-t2u#m3?_VFOe5RWgse<3=VV63zDd#u zm>R%`5|pH0$5>;q48d5-Z=PRL0ZKTs)XK_Ew-4E$iFJSRV z(Ukk-(ktmiLsEvw5Wz^@;*f&J4<9C!6fy)qP2b33XM$z97LWe%$1_c_SCY@6WeX;w zOiLkVonpk+d}^8dJuch(TBh3E@H4lM8;y4V@#sFdX0D5ekB}YfR7goPh$%BfziQTa zL@xEnOw&o54PjDCcd!4@c!Iakj5+r@nHlx1LAh$ipj#ccR($*>%g%G4*G?{ZA7YI6 zs5FIuE7)lNmcK4PrM)Z8#T%|ytjw(kQ3rd*|s zCqGv$i>8J1;EQJ&Ro7V3R}GZyM@$`$c-&WbHZweKB-g73@m))=5NtP<`@twZqpvM$ zTYpd9gI+>6e=QtY`PSW3EoAMbO&l~c$?G3nnm8s8*K*ZAcGy2c&uTP+=QX@cVlf_V z^jZh{>KV>DP&za1`d|#Bz?&-|&uPK&=TGw3{vb_zA z+)EvnDYH+C`B=!c)gum$ZXTKcPuiG=kgUHEqzr?p#L>7CM>Wk$H21FDi4DtwqtHR1p9cW`f zMZV@AHvCA#Bs`tULP}GPM-$2KHSd1n(;cPkg!TN-PjmO&bur~K0wFHbXpgxro6RUi z@bMVek`QcUWV1XNkX*Xz;NjgKu0!}mR+H|MqmaCNcX$b#p5pHC{&ja&4kC~1(xchb znOV@e3tvP(^sR1<5Mc&)=rgFhL*L5FH%UrUMPa%-XL3=Agl)wQ(2GTDj+T=m^1v%G zj}2!Qev46t&CI94*WGE+=@bjo9Y=Qc9|UYoVD?N`%<0o2l@^;do?O8)x2OL8OM%R( zrA6Tnn+~LyO{mk){#nB|9&nV~O>+8-_TM4W?eo75n(B8`q56nR5f2v4;~weTx$B9( zc0^yKT5ah7m<5;^E5gZL?rxZ;8QnG$KA zyWS=8IX!5SHbwGNCOBI@{+_9S;Vj+Yj(C|pe>piydA%+_QUUQx7}GSQIKA%Hrnnj_ zT)t|64mE7Xx9=qKWu2Gru%>%oNBxj+A91C;=n<)~*peFc>f3I(jg|H}bv=7=Gf}rp z%fI=uLa_q}PAO^GX-ctb1#7=#$$sHGovY`}2D?0>RO>AP_Z@b`_mNG+%%Yq{yM$lc zrvVY;dwo)0*COY!bl>+7XFrXY!TSooVGp)gQ4WufZ9nMqbu=p>Quy7k@4RFJsoYZ^ z^FA8$u{(k3x=$w+qI9P13m+zcMU}_rZ7}t2sG@nVy6((2r8Q4#<|mp{q`g%>aPww; z@MxfrPoB1BHlA1zhg7dBR=8B2fHlh{j%QIn#q(#p|?-XnOJb&uLu?QJZB~2`j(m1L~k* zTs5h>gRbzUG5GCz$MWr0`~@+bXp;w;26~N#%K-$A(njk`q^C=W5p+J`W@oUlV8=O* z>Uxc>(2G{*4xgJY$`|d>tFD;x`lAY;C3p4gOeRyG12!v)%Q5<9A;Hq9{6;b+D_P_p z7Yr)4LL6^c6VUxgW`2b8gN;CF+ht0>&7^1NBl)86cb=ARuUj6duKQPu$PCL|vP;j~ zQyZq`%H11Z&tEIIZVm^7?KLn&S`X7znvOV8#cmDPwC=5gZ%JiAI|Bv*GMQPsk+Xa0 zVO~djcQ++<%drvEsd!YR^-6ow`;W6(`&unn;f-slFO^&4z1hgDDGaCmvxxK@N59|1 zL2u@81kGx*kCwUaY@bzkd&%v7lHh`=BVPo*a=1kDAf=uDc{WPila?B=W0=tV`v@{HhEj+O0> z%JcgYKmx(=DV@TF@-W2DHVF+PN`;2@)D*jlKLLdgdilMHPnZ$XS*_AjV!`_sHAJgP zjiQ46D1L@{z9Sz{?*_`Lei1SpaGBmtnabMlkHt!Ixp_YZu3_-4^X4uV!`@X)-; z%Cto=Jt@b_v%RdPKLFm!QXF6{EpT31nq)Pk`NYcnwm(K>SNQ$OR~gocY2D{8L=o_w z(=5aClsaabT<}+I->0XQQ7iU(oEGZ^LoLMyXfidFK{_taw&8j#o8fEcH$Jf9=k|S^ zZ%6%Omg{Hb+g4D_%H0q@T5eDLuR6}2LrRxA-ox8SwJ!Av87Dd2C(FtT8&8TdwS77q zm#YP&$24Ae9t;<)rCU@5Gi?wE9_~=i*7`c$-i#p9DPU-jyIXPh1lDKve19j?Lw>rt zmX;)0?YG~QnYANoWn*pL1!a!yX*!P|M#oxPoP?*;Z?CRzf2=8g;ceLHbd#M`cH<8I z9T|=oLh?%@V#$8ket-c&mK+{%ax}LZP--T z-AYWpbuWD(%+KNB_F^IV*;@k6hZwnZj7IB&8u>0=mv8L^N*rWg4cTlnFCNq?%Vq5!g`yG>BhqaS|bswb*CGD8)(Z0*^J{kX+w^?Ez z6EM9WJRJApHP-_1A1prC_S_HQ^Ig3LmS*;NRt+*+@1mYVdwY4-;lg-c0KIr|B3;FG zJKfRv-BaXPK1pSYvxxfMCj$aO>m2zNi4Wg8Q6Z20UJVO6YO4mtKT3H&xK~1dyOXNb zBxa7}hl}lIW^6D}Zk?IXI?p)EvhO7*Np9U}oQpK8cP9Fv@BqQmv$uMku#xd6ZB6dQ zPSBb<%dYPC%mK5>DZ=@qBe@L6)g3tv_m#t*62cf9S!-|0&6^Q)rZv@}`m}rDIiyZ` zW!=zTf>H(9!ZgKyQ1g6Ty$;7v{OxIOMQNKEV!(_|0GQWF5ucMDCOyZC!M>ZLB1?hs zXyLpH&(FThk8KjHhT4zVU>O5*`iRaEU)Ob6+R)zR>&?v(VIQ&MwT>2}B{Mbe10(wD zDP4W-8aETzg?hI4TWu;>)>VS9+YDd5&lb~|jxU%Rp*NT3^4WVCb2oF@*K-kktlFMq zA%P2M1vk-0$s;$t(`?>GJ0HtCHkFkH#u|igx;K4}zG@4*-@vXfCzxQhWDwKilPK({ zQ0#PK*1EG=ca`3}282(Sq$AtKZ_=0*y#dBwXij7?+4T3~{pZjK6)GAxxPPVti_&p< z3I%EJT@_1{w-8j+5AjU-mKKe_CZBTA=4RIQ(m3)?h{BYed%Rq z-3{d%6R{t)T5jI{T=TKK&Gk*4imK~qJblPu$JK?PsSg}HuuS{K-1Q@u7cHCN+2y)t zC7YH6;{30J8#C-KbKeyXt5+J?!T!*STp;$au7YSY(llxvx?1r!RivgYi(Je%SNd*` zwnR$j_<1$rtD6>~sHk5Ot)`SzmoRBQyqohvyU&ELx?&Ec(o7tfoAVOuqIE{}6`1IL6b?YEvpwrsjg3%Kq5(1hN6yGZwKKx9FMoh}Mt ziB7ZqUE>$@BUlN1W|`lobsP6LLX+s%&pO;T;$zzm8r4sxE}Hdy;QshyFW#T7J`u0I z_xgZu26j~BK4gm0d4vOPTBG!F?(yw#Tg%gi-ima*xYDf<22kXQAp2pzypKo^G$Z+( z^kldFDm9y|!()XYyY2VVj6R*Eq518fugV+Z7y$s5y;&BaY+et?9}`@uQ!n-T38UAv zcRzEyx=bF^K3WpzeOZ4300!0ZOhxOyP({o3@tsu!$LUaP7K!zoZo|=(QK%sOXY%f| z=wA=`CUAKw)#r@n&cKs z>0(n7lh1O^^0ed`nR=S!YLS#ZBquIPB7Yi0_d+q3&fguZyyWbfAWlM>h&19Y%7w!# z@;V3jFUOCk!#hgiF*tJ8zNTl>uzfO8vayEsPLwZU5-P>X5UMv#PV;x}Yz&Xk+M()^ zd`8Xh$qTc#Bkq$?apQro5L`Tk$fmRhF!5{u$1fO<& zRFixISwxtB`InjOFZ%;=J$XXm(`&*q_HvfLi>^wO0M?9kmz*ZtBLG2tD% zbdyMAhXMirPj>EgB@vY=gvuUbDcJl zsZ%ASE?oJdYptrp&LO>0v|PJ1H1Y3x%D?{LiqUo+e=vwklPo?sCerK-CWnw&ZCUfL z#PT`8dDrehHnL?Q?nd9Y7@CwYh+k4wnE6nG5byOy@SZ^C(3q~EmqC!VlO;0V!0SPc zP**JB*8E$XGaDWEl>swd=gW9?N>{qCIZJ`SK2KrHU4*`L^C%9`aBWY1zTh8O@S zIY2X1pi6p+*qEk&K;AUL`tsy_f{;aTu3_^6u@<h460MI zxlQ)TmvozdR(PD5`!Wut1ug##95@T-w1%BGFpIkxjvrmjBgGkS6p z>)AdN!0k8*?6|hzX4>}O7x4gR&~bs^oAcTL+bFQEazgNU<-L}Rm4logJFv6)Hd35P z#?hT}kCXnKsuLVr55$!osY&>}X9O?@Ya`kG75l%MI%Lr#CF`va%QJda+u%JY@HgCt z=tr~L+PMlgV`kuDvEiK0m_@$_mvp_{$-CGZ zSdi@2qg1}u+q#4ySUWI9Y>gYc0CP?>`21$tzZwPpa^1G!J#$_Vwb%!5ewj^Wi%#AL zS1Gxai)#9GI^CDRkM@4JCK8!NFA*2Yr9TI5cGF9Debp{TEbGp4JkLDv_|nVn?ad7pGdUnVZwR4!X%i(au_Qzutbw zMRW>4ND48-K-!1lx(H zf!Xe#MyFq0aFhpfz-x5A^N&L49eS8)aH*+21aF_kg}<+mytDQH3-3S>ztpDPRPYA? zl*cN+yJOwdPx!XaT(s)qaX7Nz8l_Ft2i$_vF#^cj8PuC`x_4|KX+*;?Y~JYjh26M!!JJgcULZ4 zG4Fr<=6^hT+wXU+-wOaMFIxU*H+?{*j(_j7w@p_3Mo}_pO*Wd|-5N-%uuJ_pO+B(m6|Vh3wvq2X;KWyMNc= zg)8PEL7_cYXwTcOK8+BvI#Df;mP?~0r8B56) zkwu6|L}by>*r3;>sil@$YSU{!_{*Pqs&}saT>bCypRP^PfQfu0z~!9#zBBf2IuHuH z-M_j2U#|YQ&_~ukxM}@^n?i4z%6@w3{rZDI8s+;X`B*Swt3EwpHxR+Zl4I z!YpYC0ELctv=)Rih~#O@1pb+C&rb}O)<3jq-m=;Amd);6&^Y{z)_X zde%R%vCx@A!ewWjQ0yuU?jIW5H(Va85D^j;I&w1?^^Omh#)l@Xj8z${6gqOuTF3?o zb8WeSJwxjs+%)UB8GXy=op#A7PfSz?4~(cL((&8zfD-^X*Otq*#e~jea&{7E^S+vF zB8vuw4|z?RT574KcI?}X1wCu;S)aDUE6pCg{i(J0Zn*H8b5>ovTxE>!es15od!M`S z=7*mfDFhWzG-+aoKk&;cDoAz4h|l$Y$6L4%JGxCTB)tAsHl8fuD!Rd z*fmBL0dS!s*U{Ui^s|-P&1nDF_GfmVc;@koUbUcSUKb(^>^?knV0iiKm-Q{5d%-p5 zu;gqZb7<$`XYPA`ee3UcAYq}a;8dMV z*3Rbb{vC&(e|XD^bC;cV=_#u(TCso2!QGnHtKnRh+F)?pR}63s0RtJ~*-Y$sGr_4Loz-^VO2mJFlzInPQq$`z-qYUr{-WD#2EHQl~L zd%Y%2Ew$8AOD(lmn4#;J3jHV&1R#iS!th1mAn?)6l;Ur?GQC;K{bAF(l2cMtgsNkJ z)N)~R74!SV9qZ&zpGLw=)&_)!fBd9$B-xb7*=FWqQ*-o?2?DrIy+&&%BTk zW|oQz0A#IX459cNM2|tyHJe+d>P;LL@}l z3W37_0AwKmA)>k{A_SXAiR>9Sf)-hbehLyHSi~N{LqA#u0g;d_0y6OpBB9E4vMd4w z1<2IZs(={9jp@VH85jVk=Fju4pO7p>3ssBRS!>_nJpj;~ot4HHrqXba;H;SH7RF9Sfl%BWBWqa5IK=|#?PVRbo-*NZ;^6s4nx6MCck)5$D zn=FfvNTG+8LT~`UvQ?Ey_n#Rns*Qt$Hd(qellXLLTHY_ zRIk=aTpA{W|3A?6J=`#MLqeLLkN|n+NCDRUBUEPdgnoIh(0Q$=q^{Z4RR{;Th=_3TzwNF^x z4HIjsPdKiygk+=jBuD^O)mx=%0^_gjUab0VjyyZ5J|__XDKcOa9(>&2y<^;VpwN+0 zH-BRWmzZSqK#YEW;4LOOBKYI_Wk={A7_3I_bFc;2pCQ=&g))qYKum~Wv4uogCenFN5||_~ zF$e?z5DW;!k@#Zv2NmkGvzt7HK#Kh#0M@Vm)gEy*0OW9 zWm}f6xjoe?S1(hDgGgvuWZ9OTv+b;9XYIQlx3I+%VgW`6HOD8JvnOeYivU3WVG54;n2Fsl_Gd}90GK5qkcIlH$RA8zkJV{-2Bbrh zAV51W5rLQ`5ik%729!z?3V;Blx^!|I$*W1?&O6}!6J4+Z0AS!7qj9B>Qa2hi07#a4 zT9J-MBpiG!g1sbwz&cHOd{N*wLsC=(08C8iVlnf%Gu4}H(O6@QV_cjOUF5t40qd_Q zk`dy?F2nP0pp#N-#bOcSdw7U=u7m8^xPHC;15$7}`dQ`THlH7Q%d-A11|_fIUKv}+ z<|^)ejhbEAG6$S-y%fA!chyfUZ$~kY)obk-I1>46aN`l4ij#Vd*?NYsT3}9y*)Wj* zg@kTdLD7Jb0!ir`$LcOcgLx9xUVWEWxmfMe5 zF*V2_B_mr}ni!b@L9!j`&5_RS_5(du(dz@~A|P~OZv%XDyS-^{zHfhd_m+K|=H&Y9 zjAdsn(&^$T1p>j;bE;o1Gox1^5+%EsNbN z1o|$j=%u)y8K`b%$LBF?dY!d5{57 z8cQ^VxEMw<9}VjUHsO>xy<_-sB=cBJ-LKj617n|}`;E|MNcU63@P)d6a0ir{gh@&v z6*Gx?!e;iq$B!=#uTb8m1d+6mu{*sYQD7*uNA>wX!+Y+jWYBuSy3+jJjj-2YrFxkwpB!kq(&@-h+&k77Gmry zAdm^A1dz;9d67_0z)};F?D?luxq6qyW!CN|mh9s>0ZagbrMKDR(7<6ZF%1Sdf0o(< zrT@tWJsUs+$RJrMIY>uQ6+My@ zw1?5;P}MUdG+muKWFR!b2O5vSTm{es%qg|0%yPW|siNBHYeTkd%AjQ+(#-#*vcLJUo zOyH{sBfA{{V5A5-B1DuR0D=%Q-lgf2Ld_3HMqs8e1XnNxsUCqAN9%fCBy$l`$V_20 z1YnlP$RJeo0edI(K$Va{A$>o@@T`p5FU2eoi8X>i`~E z`_QE;F3C8KU8&MU*%~j=cvV&$bOcCdex;)vt;K9xl(Q|FB^&L6m2sR5%SYBeq?+*$ zq-wmQ0dcHY+Q!6}LB<**NC+cNP;*eCv3D_eW(;^uyjhRUeW8bPd|pRGWb~a)=TBuKHZ@@}z zO!Z*+N4+hN#US+z%v{&!XiUtq6;~jtY^GRzY&F|qwcAaajx8VId0;~#qXdDB5+nhu z@Iw`HAb|;x_2M9-`hNcIoH2|d84-<1#9Qw$5r;-LiHomz&#b#QY}mSCXGeMN*{`Y% zmE~v!Cu&rx)v7`Wmai;)!%6st2rUaUSu0=26pEQ*N3Pgi*g3Fi!`2P6dXHax>APXw z&rq!|7}NDIhJlv>2NGg1^n#*$n&{vO>=ePvt~b|g1KFtfN;Ic+b5Dt0I0Ayj%rZb; zlG~jakeJAw1f)lEpkx3^YMzx6P_jg+5IsmlU?D*=gCGEAmV!Yzz$!ilNHI66zoB$} zuX>OfE06KJ(T2qJR$LAS%AkQlFzh+<+k`DE5{_zY?iqlQRg+R=$&sFy3s6mLtR2_U zwOpbEio_K9JVkhiiheSIu>wXe!Kb1zIuCMWUFSekAYs${b;FO=JibX7k$5f4?Dp;EaqVR0Sd*btPfBkW6V6X&cuEt#n+E$q((8f0!E?X3-h)5@xaraFu6)yF{r~Z``<_|zf$QD| z70FfU)VStwRk9;lZ>nF(W#GJ*vNQhSrgggzX%p>*{LbXWCb zgS}mpf!ZfqnQx{r(ncZcz#TP zH!=8zW8qj`d=vh1FM>W4OB4!d2<$63Zk7*5;#|Mry&W!QLN59XVKi#43%>n51M!|14=2_z|*`2ghoQc0p<$(Vy z5G%*pVV77oAw<~)-eh%>25$vkt2HXsl{re99z%Oq3 z_8D)yXmG;m9~wP8IzBQ{nkZK*wOY-QQcCIFb2NL+?8&i7u<4;n}4~SW+^^(2zad86!0g_|@(ku}hBb||e7{Ov>W|9D`LV&&bF*xcG5d%b}M3#zG zQI+Zukt6_u6cPbgbu;N^Vj&|)H)Tn(&InX_*TSs@YmOEPvSwsfqrW|sapX3J0&0y3 zicJE-fRjkE-asJ}a1W9fze0+G@t%}>{cI*As#V7yKpFS5*}UO6=8JmsH1lX z1Aq+K0s^oC0W|CnHf9m#GbrN)-EqLDnbg&z432hRaAfKX0+WATD;06`!zmP6nwptGTeFqr@q5n1Xf zHX>vY$i@$;GqAxeCHo^Fpf14>OWgXNNA2Ae5KX#a>8|&IDacJgb8}myjz#0Z62WM0 zqTLxOiVxV!tMQ<=7glKgO?kFm>>PTPDvy#W_{yMD3WexEd!-Xa11L@$Y~*pS>P8bPoC zB^gg#vg(q450Qb;apm0>iEOJkpKDPJc9Sa&d_(B2D~e|&wI6q*J4iD6_$CnOj@nlz zeF%ZzDHwwVAOp+|pb=|XXJyy#_U}3jb{jb3>+ip-XGY)1zJrJR2L^{mhDXOrrE;ZO z6+$5#Gr*k_(ihQv9_C(<>hgtNjCBG`jl!cz=B_7fm=Nn=9oI8u<+9mAG2hkM?sRwB zGkeX zEjwArq_`Wj+&v`#F_I+kcN#ul;qBiXr9%UZ$P%~)ZhWs9>LDD*4}bA5T@p%Uoz|oi zos3pyBct2MKY|!Q8}~TS4D4x=_2w|G+lW8+w;p=3N{SI-pFR)f9~u5%yQ1&t9v~$uN-*? zRS>IMOchupKcxl(#~Wf;X8-W;F$GePeezQJY_dObqYM4~SJFN`jE{GTc!>f^5MI`& zkCn*hs?h=#fEKWiiG4M)z=Vl`X$O#5dfhN6n33q`LJZFah(5*zE z2I61{i7Y!~WwP0PTOr@k*4ES6KBK2&*37$q{(S(z?gd)T&dt@=A>S@{?Y(MA2cOgS zI)RyDW9fH%=ZJ1%vQRk;{2d5_CvlCM67*;hfh;u8kph62g&H$bs*&RJ(wZ-2p{WIT zL#u;<9pR1EW(Y6<09a%kY1D#k5|y@sT?0#3gv@}tvT_`G`W)HX>x}}& zCsO-9tmLaV`Gc593&TX@n*IG*ydx<=)dr`;Um9yU`78^@d$-L$NKE=7Y(U30xnoHT z!zW+g(v7)MT9gos9tR_=g_9yWO;=7NpOy_+YEDNOXa`IHvH`L6xH-{(Qzm;7IbQk= z&248>L%;~cV}mIKj(mz6JR^>qOTEs?VZI@LF`^{A%clN?M~OjH;fIaglYf}sqy!aJstL zu3&e^sB9M0aAn!K}MGs#XU+^`J6r>rcoB7 z)Ok!Qmr3gPOukozyQ>wJgYi~~I<3iAuJwM=jiPn^NiNVA>@&d9c*xlNV`@aygb=?+ zmW6d2>g7Fz*j=n6n9CR#?B@ByYfp4VL52v0Pm!=miSRzhi^_^lyV&};2%RMS z8boPE6iZVHR@i`!joeym^8gZ}if8x3r$XxC!T8yPM3ktGB0{7E%q;zc=Z*>bevFN} zir-Ikpjo_V5H`(hHM6yi?~QSgrEwS#H}O|)ao}rLMriSN{Trs17{`nwBR9}(e-6^T z$@fJNaS+zKex!uk3FLTscnlE%Br!=4W?maIGRQy_lR=;mlK_EiYJLetadF~xVq8CO zW)e=8LcquY{!WiwrT|0CIsn*ghQa|L*zBz(=!b9kvn_+mUzxiSZrE=EYN5GqF3yDN z*u(eT^^U7QF)}tWUMlBvl}gnSQV1!T!4bmnnwiOq?vKtoSN=H!PpghFrc)662RB6Xo zT>1zBQrR59K|K{;tJh73CNC*Ev$GBz28yv}6% zYE!%j*Tr-3`!+*T42{%lG_>!+>v6q%X`R1mZTMrox!9eKbWUmvax%C^bH-MBl@#VJ z&`9jiqNYnPEFA``Pz zuON|;Rds7!<60mSOTnl!QUL_Bkq^jj85s=u(-Za;NrJrr+!Kt%Hx+V-2&cr zX1|;!BG{gz*HsY<;bI*f>iQ>yK>%=UW^z;hDF7(Wf{FfZn>QZZwY9T*-gv1}DpxBt zrzS+rkwP*`6>TAn>DLXGj_C{te!^>FN+~q4>ExzJ>?z=z==HlOgpkOxY}?LeGx=P$ zSj@M#6*@cG4(!^z?Sds!AApN~g^1mZ$WxM}<+F z+X@HsF^1m>cwL*wGsjr|CIV%mj$KzR)0dz`zYj2j-NeL1`VPHk$q|K&dNQW*r^S3P zx6Ov?w)^k?>3cu&x$$zjRH>G$wQ9|A93hnsj*vv8y;Ochh)_C%r{3U#K8}sQ32nuj z8IZ~0(l|}{#;>iRg1$+Cn_MniDCFDQik(0t4$4l;I$3@m`ux3U>$qw0eoy02hF#i|@4 z$sQ}}fu>+ikGeCIk`YB_*l)d!7EYQFF1Zun^f6yYAs$|q`UQgV672C;yEN*9U(`{xKK^U*XL6iAX*R?>oi z5kbDFa(YuSQZX57eu5*`uW(6FmwF62q%eYs893@rGLq(^wQo397^+@>b|;)T+Q$tZ zkgP;R(XGMYRUQV{!Rh)*RcwmVK$WaD$X!ifCFAT@o&hh#$j9Dja3khZz|bS(h%RMp zGsg&Gnbemr?SxTnbPVEPcdqnQz!(77_ExoMx@)KicqG#?IhF;RTUy%Zz{J3wo!fW5 z@Q2<7OUEb5rE;}e6E#N)R<0z+5kl7ngZfIQjW#h;lGJI<6Vb>&WkN?ZJyW)2Wo$c} z$rSRrwnDzWSm z1QxznYBE#8Ef5UQsLv$5jdfS?`tfvu?Ox&;P#PKe5OL8aZp|m>I}4E|3Gp`;94W)b z_ydm=f76KAi=aJ@>3*?0{s!|-H2M+)EDmC*V0-kr$F>_LBXg_+ML9A4DY*c5f~zzh z#+qd`qg^!S9cTEn^A9-$K>Z_Q`>+h}Nxa)ZugqQm z+@QOMM38{0z%HTUV?esdg#e@k%dJtP8FyWT5?oDnFKkf<4@&?EM8+eaurQ!Bn_2<` zkQIC!b;oQl?lZ)A#*OF*+wGOfL$B_XuP&mLhL5nM^*HE9UbZZN=`6_AJU@-u8U}z^*>%oU3am zsd5?Y#KK4$Lp+PSXgLDe7Zx((X%g;H>WE;EiBS`-&I9z`QEHN81Sf|gDtyMm$Ycli zQj8ko;B7)sC7dIW1W7=^N{=Bhu_Z-@vKu$e%rTQ$oI1X-UvFmP%MqFh;#?{T58mGr zlJD;@x5@}eW9J&6;HN@ts z)hBF16A>m{XUt3$LR}ofSZ<_?4DiRgwg!eH%{kil{QUnwomw3t=ynBPRM*@+2bzVM z8OSy|xxe8?LX(k=quGONyiP&zB1pXQjnTT+nr*H(`l7vs4CcpmItLz5K>j;fz(2|5 z8N}ZllcNy)2+7zvfg@s&44epv;^q?V;U^4;F&RlDu{&L6W|UsEimBTYtes$#1l4iw z%u?uhE~PC5QqR(w#dq8UXOTD=Mgy%R`|*(+8Il3ndX%6QsxSf5Fh=#kCHVSP1gI)X zqay@|iX!Ng5|b@6rZo(y&jPbx2Bn`8>z^`#8#b|O!q65R#RTs;0`i>vD%iw+%Qcj5#rO2XBD;hS@coFh5TsovLAM2cnYmv(UCF zo3-<~Oj|ME-d5=9Z0qi9`}J+#85nB5v6Cv#5!iOvey=>A~o~N(4YP4-ql6R7Wqo zt~4t8fm2PFn^r!9(a7L##z&L1k8d275o{++{-PxA1Y7e@CCSHyAPZu%dyFLhrkM<~ zI{TI+mEQXFUjx!MQO7H+dBYKiiFyrS6AI|)P=g-e5%YzK5K zfb#JAbx*$f+zY$A=9Vip?V=L8Ff!MKWFTZILlOS2PA*_`>TJOx=gCf^$S<6HOvriH znt#d-yFuH^WHXsuHd`zd+Ka{Rj`r@3_QCx-)<69O*m>+aj;%JXIR<2rAZxLrbr_2O z_oLOw-Hfn_Wia72i5|xIxzQ^N;%SKMktz)ym(7%q#``m~ze))}+=`2YLluu3e_)!y zYoiY$hxa5#4{gC+pL2rNL57=2i=!HJ*`HRf=m{ycf{ z85rPaCCBeKyst18D+$c1KSaV=Fwy78t+|hExpW(SI! z#~8r~z?SB#k*XH>Au{4${0alWQb3@L4EVe|3zO3@VsC=@26eCzdwS?i&0!dX-+siB z=YK=DCV{Ia>718A>x=2;5oHpUeSC9pa~tSXq#Xx(1)ON-&3e;x~+6sD>=z^%1o6; ztnbx&QSi-?Bz_XXP!obriQJEWhByG!S{+18)=iFHu(?NU`a!fR%yWdFV?uRkj&wgy zNX@?}PeaA8E-N)GcHK{;GPzu_O)~?$eyVc_ma)ez1*F5-SLiUZpaBAf?d!Ox+=I0S zso^Y3j%27i8tddIM(^4arVF1>ax~<5a&?{KKjr!uQCHsbUrBLpEX`LyW+638n8!>-A>Zrd z4g_0=xN-~ISGU4QLxq9J79q(x`=B~9G}!;k|M-7z`J<0%7nLJ~aO*U%07nQZiQKw~ z;mr6Xv>gU_92=Z(&f1Bvh7*g`HK&$qMjUG92FbRpY{t%IGlhJvy`aNxdb>M*@$dgU zG&leqbFp_ZJGIDJ7^H}A=ct~T_J33C98qUfGqjp$9j9R(id6R>mkjYNkwq3m+=Ogt zCE_V8c}Ic`@b=|#`UZ@3eND|=d_$F%WLSf-lI0kOYh##|sUfo1=%OR=n3`L>nrY&s zMIhN7z(Q>`(pTs&D zeOjo%jYULc*|wd_WefRSd$HKr(bnDBKBK$i;k$mkY5h9Lwn5JcToGR7HUJAiC|_X< z@poPdJpzHH)P%j!rGHo2IsW^};HGgFTjc$)!hO^uW9a|20vVg@1EG`(Oh)Z3@j6rW zPu0txitlXA#NV{W-(bC24=3Ybngp^*z8k+5)g-j2u=U49uopw4w^(1BiBvGqTDl(6%59Q@uR_)UK!6Cn2E!%UjcauMJS2gc zQRs5uDh?UL{0)buZEO@4*3z(w8&Im*r5Cg5m7DdREXHHUP){(fAA{8}8(n8803 zGyW;X*7(@U4d-Q;M(bPvwFx-%+!Md~^{dV}cSd)&<47S{>L4nG@Ei~*qzq(=VDqZr zoK))=jWNJbCtHe|Ci!D0arBrQi^#GlV`p;NOg^7$YcF=R7rQz;W^{K}M*5$4=w1N8 z-eqj%^hSxL_o`FhAi;%{AatRcOtP*_#y|kbsEWiAd++Gi$yuDg3@JiU`uhwrYO;mq zv>=1*iWyFNU)4x8i+C#g{uWpqgcgaYBW00#5z_@tngA5ZxyoUDrb`+|x_VgpuQA^> z)oX6V--Lg0^Pz$mA{772L7LOszs6>Ysj4W50D=*K3E9K!ioGDFK!9nK(nx-G0vN+X zj9JC^`-9PQNr0%2GtBI4W`?-nxmdi@qQo4BHksG zP_KgkP0yN7ffx&YB=k*2vk`-L;jwp?v3_w=9iHppfk3MUk}K;87{)6y`+2p}g-YS; zQ{^Kl{(|f5gqbbqT^fAGD+IqX%XZ3a#EcyMf{!Oh`g&8M8`yBAn=FqG`%l;L{_Mzxl z_!~qwu-KfB zVv2i509oBg6pYgVH8#Z5^fSeHc_BS>5$G!A?3YkRrBP(O#uXv2k8jw#e)O-uVSF)S zz5H;Kqiw0r_&GoBtLl)XYZIf2lK`zpB@?fQgyBC8~nHbx5>rH=m^|jZ# z;Wr3a^5HT`FBV6O6@jnr-^iyB>zM+h4}l>hUZ1>c(ktiBdLDCQTb6B8Hk--ka_xnD zS4XkCvwcQ)XHR?KdtdqgCdS90YZ1&m396+4i_IMN^+e)}eXcKVqo$+NKtC;r>|lbW z%oFxBGJYPH34mX6IB3b#-IB@s1k=Iq?qWm(I?d3JXS045MiM5Y*VzmOYT$+t^T9z0 z*SH=ijRVNLDMjH1%dAPmmxeyuZ#<*qs23UBe(CQ*Hmin_x6KXjmfRuCgwL=Bip45jNs4-bBdJ584yG|Z z@1YH}*_fJ_U_I9Xv)XvM+T2Dwt{<`=+*%M{Y}M27=ilRkPRA zF=rM^rw&p12fX(^e%gu|iBg8O<`ffb+YqNV6fc71)|>R6sBucgyQs_a^S3RC30@BH zF`=>&EIeAyA6AKE14*3{P6ql?7e;ZbiZt{C18fUoye5y)k4+LKF5^=5?I<5_D2=#S z%IE6X6tfO+_833CB8Mm(4iZof! zE|E%vbGeRCsF0^I6-KwDVH^>o8h_qj$=9#LAfrR1MeWf2@j-6j9Yg{oBnycMEh5Xd z>`cbaWpizXLPw$4)!E+D-7&MbYxd0UTfg?V`}gjI_PH?oRB)>Cd;?;A(x~1)1JB7% zRE@`En6S_07#gPD4m&E0-8u;pzD~pjm=Yl|UjU~X5DRAYs77rbogSL5JO$uyZ6bQI zEd+p3giSPr+!ge_;*a;S7JhvY0~T(CTL+}L<>mI z=p35wFbSe#u)wJqZLHvf)?GE^X}#GKk;vHdGR9V(3cJ374b!YDX#&$3&9n3uNQ|9) zf_$x4G{7Y+{lzt??Hs59sTcJCXV9FhIO6rF?@5ndLmvs_Kn-Z+l(Zm*IY&(~= z3;AqEG2hu%?CNZr(bG9+M%RzOe#4%fTcJ1;X0J%fjXLrn8PSR}&0CUw(vh>sHzLDJ z!5T_TMhU5DZ#Rh+PqM+AnrEl2GeUS?LdlxK@h6yQ-wXHT`Yp*3IbCQJyy7Ju2g=Px zj_0`AOyN`?R7DL1UgIB?rK$J%kBc zakoG(H)!qH_7ArTOW^PYn+kWjo4L)gQm{137DS#jvRA?k|F zM`>+tX)z8u?npTeGaNGp(#4~5wG45$?vwS83`FFxh-~kZP_JKr&){!N{AKbtZf=q1 z6huEb$FG&BKSG2-6=x5_5+RWKk5P+Yp~{$JRSXeT-oK!1CsP)x2U`d@=k@%yVguzrm)vmN5(_&ELe`9eU*kV=ksHi-Qd)oY+Mo z>dJ|&=Zc82Vl(x=4x_74v?H1Ip*UW|IWce^8{Q*^OF||@s$sOWbx>0y>Qu-IK{^|Xg-hAd5QXtAR z5w$WoK+>ErZMy2Q8t(P#=GIXlin-LNT4|hWVo35MnEK>qPQ}a;Nn+*kMKjRNA;~~@`Mx^EU5gEKU)et3S$r2^A`wBuZOVsa6W(h)K zrVX+MsErTz@7=NSnb*GlLb7f40)mOyz!NSfD8ViLZpLhR9x?O!J?4gW`~VsrC08rj zm^Y14AkU)!nol!I6)DHjrt{Q_#hzkW<*ydaR6dy_Gcp`js3CXc{EV( zyqHM0 za_BnU5ExjZ4)WFSs8`ZnR`ny%+vw}^+S1@@g0E756rid#sTg7PyZ@^0SK%AO2^HSZ zvj4t&`{3sJw=&%wVSEG9ct98w{^8^*D-gSjz?d8;iijG-?TSa=vM$B8;U*PlqUuc zJp1HtPhI`$?w%PMKp+x&loA1=3Nm(MjLF|F1V9^wbH4)-#Hv42OnzO=M32FsF-_+v zWMdIomStO3M$tC8OfjG9Xv=rC7rQ&#W^{GV?(M9N_J9AMt{)y8fcAMXXJvexT43WC z`X?SKeB%qP${5bSDSTt#^gsa(oHD-Q2#eF&{$u*^4I4q7ob=BC6Ho`=1oZqcI(l2? zZ;m>?LFtaBrtpm!P8(&pLt8_P7D%bz6R`1fk8wZ6^Z7}>i3I*X(SH=Y+Cc61*j;k+ zoDe%>aNQ$4n!zAQ;=jV=W7I$06kv#R)T;ntavfC|*n_*@5+y$(mx?-Fj5W#Q@;C01 z;%8#B6z)7v{;|MgcmfGuh75p@X*|c8 z0cgkyWOc>;FbCEclT}gyOSWZYGM1_bUMytWi}{YWLRUwzr>kvdPv@-Oj>qo#(VaiM zsaC6E&tjar5*!DB8$^Rg_lphjO@rmU4u9h&N=y>pB%Oci_$KMzUwnK6E%G@nx23XRgJ@pW=kKCri-7#nIoh6dtt zq-DzIycc^^(@Ml=o>sPT;bOhhjpN3nVHKBnB8((pPVAXtjO(Z0+`iQ0t6AzCW&g&I2(faGi^ z9DV@~zW@Lyu2}u%_x{;LjfX}jhDXOoOXcy2N~uyUm#dX(%@LyJ2qC19N*z#VDoEKt zq0$dtqsB$5+1PFqxx5!4B3Xo%MH$P=WUO2^tC*X%Lax27(A`n&?kE;AaMvyWx@rAd z0Ki$xarSaKG34(ZgHsP8vP{Zzwx+yh6Gmk=Tzun(vL|cI1lu!NKZX)6GCrOZ6Y@M` z^it8P`;F69Pi{&$DSrD-A>b0tuGe+oWBe2Zo(4>#1r-sI>{z`M(ZHL7G0#0RU)RyY zRS(A$*l{~KCh{e59gQq2+!HXaJrnvy!y(^DwU(#cO)&QBIHsROTi#eph#Ov&LERI3 z^H_bL*04V(wE$6qbJf3J?~+wLDYMgJqjYXt<>5-dvZT^Qlr_gyD0OQ}u!oc6q$fj@ zWr>N!29QiK)Oh{fBgPLIh-zdotF)5(zRO_zmhcO#x@8CJIKpH|rzd&r=tV)}n>clx z*lt6S@fajx68vTHS`{jDkVE^iI!HYRWm*7WLC*=f<^++p@{Z*p@{|L`of4A#s(s zq&X=tq;cxHjWJ0SID#n2<%}${EX%TOC2V75Gnrh*F66Rpg?xKkp{uRX)zQ}7**2@E zb5?KX_`#h&`sV-HvvVuvI%w`n&h>JwoH!AC7aZ^R#a6ecp&%hG{F4NygK@#J#7JN? zVuS5TlldLVBb;NIiR5oQ!nxut*WtrhE+mO)#ZVt;%(^Az)5W(lV~hAELDx7@Z$riU zb1*5|P@-#gUz-r6gxIK9RNdWkY}$5XWK&;$zB#uSCQj4wQ4tu5v}|UNjvONaTz_&) z!l{&$LIL&h4f+wMDm#_DMNMlMDwHDGm11^dVk85ztT`+l7LujIl7Sr-%+diyKoub? z4NYiHERfkKUpjg_>{>lSxFNnlO5k4s;x)jU0WlTM>WW9kNI}r3gl2>O+=%%`345QP$r#G{iS? z{0+wM-CrC-tEt2MQNwlk8#jd@W_!~tf0Kl7BG;)-DC?uc*fqEn{)Qo`UWe5rf8*Y6 z+zLUlO6?Te!_@~>6~k~`YET!o9=_p*^`&Xj_$FBMnPSdt>_qCfn70-7n6rd{+{AW{ z&@`>powXqTizE{JQM>MIg1E4LM@h&k78#Yiude6dDGQ_fzHAZSAlY?jwwSpHD3%9J z*v%tacAyNFspXwKxEhWNGrBgGze)Bvh=h4Ko=s2OuLkE6e;*u^?QhlD8wb`4HtIhj zL_Zs=&K!Ci!NrIaZ*7Bgv|P9wh#q)FiG&OSm_WUfsxkxddH~6-n=D7tl7EqL-f5ig zhQV#?pMHGDmgnDm)t?@>{Pea$zL=jFn|H{=%be1XxdSlu{sE7OrW;EMvB?O>M6Ji^_Y0)fz!$?uMjxo| z(4Nd=^&OPPy27!zJiMcI1DO&e_+m3X8~SJxk56pRIy!-|N_R1>Ck0rPbZ|_Pk%6W| z(s@buONsqBVt&CD0`UB_=qkl|uUZRn((!f;G~W@M zU**iZB|xvbyI1g}ndrkQPJPMxev=$`&722=Uu{ZXPRsSQsv=4(0VE(H^qmccGLKs| z(_?fbS{YV-PW3-h)#Z{~A?XpyN$E)^_8-YZ+hJrk04zA}gbUvK-r0*z92qZ-j+e$K zDih^Oxl&Uor{*}-n&UW9p&S*O!wgbN)@3sSJi75b$U^`gxKZg*nGD&ak&R_p*^HgB ztz0&f%i6iDtpaX3+6tX*g@ZdcuDSEpJv+7n0Cp{;-X#Jkp`KBT{%>r}KNUxK(wDsCDF6AQvpCbl-^90-S6yg2_?y^$r>w8DH%X&WivCvg4emXACk@W%K^&Z9O_*+<59ym004y^7~ToPJ7Hn~0FFO##W@$f zea>+wj!l%uCd$fJRjyPkHOC`zgpiKV5Jw6>FG{`D`JdZ7b&63;6>(Ha>jsPq%K`003B=fjx_{d$E`pgiyS&UwH)^WI9X@ z-@Lf~sp-KtMkkg!UopiuE#ezaXlG80qn{@Klnllwc>W+OGkJVtURcug2dW%I@J$nq z*5W3iIeb%JwSl?uxS+;+^kAGmd9wHBM-p*Ni@cqT_>0lwi9-*v?t-nZrw)%5+wsD; zOvut=Y~@ChcpCHi1MO+Ggl`Bl5?c39HB$F@@$gM6{;3xO-_&ilm>?>$003dZS?>LX z?og#~!~-R1lz4#VRLPV0iF)|Dnar|m0fu++$Sx=k1HhsaPCWCxH}@?)r6$SqRh28X zYR#!s9U-{pXf8(ukVsZblm+1Lab+p=xSWwTk^&gZnkO|g*8 zklg*k`o|x*YsZ#N0D$>!>|Ti7i$ujOfnEpSgoZ&&fjB9?N%2h+_{N{VUIcstX8N@5 z&#mH{#66E?H-m5dnKT%n&@lccsW;*@#otJ?W>$=fU}UsXQ~nEVlqa8f{nSdFbqEL4 zp+`(zpSWuvqWG`yD`^Kl7%u=g34D{3*O`DY5L@GKfGtyXDbVqf23Ig%Cy|kz9KMNZ zd`jXz87GTxjEipu-+0Ys+!scAqk(`iK5sONZ&ZAt?Tv)s=yij!eT3!Lds5V=;Cf@Y zg=GR;8&~1OYGo+S!p=Sz+0CPSc5dCYbL%DmIP1JiPkHsZeRCI;%GFY(TCP+pRi|1L z)taM%jvYrjQYe8!6@9D&jwATS(#cY2+g8RR%d%|ZY=*LSCYR6VvzbCZTgYVx_wRc0 zH@|uGfxGpm3%%I60J|27Y6;2{rtVX8O$x-{92t9Q#or`$048`D8yl`>e2L$S>e%G3 zBJPUlt?M%Q+6q_%FCQWtv+8@;fmKE^2EEVz8qms+JAwgWv4PC!&h@CWizEUya~aV> zp^f$BeE1y`0W2L6_kPpyF6Odrtnqbx zh!h-wVTV)iz{sEqTN2k1{%AmR){nnA;%%Z9I9hPF_JbOuLIOuL3Uvhgq?@?a`($kG z`2iE>+F*1qjO~Nbed@i%OHW>L+L?0}E}1$1_)4`_sc2u7BV^5Sgp@TMj>AG|R3}x9 z6&H4>L@AXXWf5g8%eFCVQ`V+@E|bq@4(;8xf7iARYaidf`FVXM?Q@}hF1F8Or`mWw z;p^@Y$L6UuCI+yX2f?vhwov?y$<0t4QEaYQ;d5D`rz|nBOVAl0%prZ6hDsRvgM{&V z3=MaX%?@b^P1I8~ZrEy(NNd1Xu~Ge*0T78Bm4q~31;;OAasH_Y1JvY{-Sn))jWd}o z0I6OTvs*tNA}()&m{85X=BuSD_eu`Ela$Yuv|so9I065T%lAwJ+@WUt%j9cNCB$bW z<~JqqD~a>1BO-{C+^6GbDyiT7Qh*HcXa?f+ofEDnrnV0=lFhALKN|B7)-5i<%q^|i zF8>E6zh0jw(-9qL(({d`>*nGtClRxsG>@*O>V(})*s5#QA1^P_pK(~WPe)+mjaCcZK9 zEferfT!kP2;DpWM^x~W8f;dreUIv0DAWls9f1}x4?L>hawPzf@30KoI<0Qg*893GX zt^PoE<2u7Sfl2dfi$oL&QUCam*cHd>txXEwgr1r^30p0-XHtAji1P8j!fKrN9{eCS zk8kuo8564COab3Oe3*SQjQ8{SA($9|iGjx+xW_wY$w{a5&YauTJENnk zx6s~IXm8KwJ2JVPoy}Tg1Avgisa30$a-}p@8XKD!8y+1#JaYKZ;X?1m8!Y!x*k`|n+H6@AN za|E{tCV$iV+}d!T(JX)4`1b1sWHB+82ca|sl~JyYf~-w}ShgYC0oiuQc0jHZvhDHt z-c#pqpqXsaY2|OsPK_=4O(XmJWd5e!36uC6M2n9kbbP7sH%a;&5~ykZMm?@pBbl1b z=Wj4GCZxk8#zDuyspy+^dXcYZi1n@~!b4EfIE87d+Yrb<#Rh`Q`lyKC&3wmvg#+?5FvJ{vQcIq9IsBc-neji#9y~Je17A5wY*OP42 zP~q`aUnF9({0-Nc>|5e*DD0<8)GtWnZ;ZHOb8KpI(2C4f2yT3F6UZ8ys&{ilcY9Ns zO(a6Lmoq&8U|T4w<4~Jmrvy#~L7P$wf0CTX)Af22?^QxD{hiT7{^U$%DK?e=;l`NgsN8% zkS#_P_J_$hKq(e_!3@Z3AxaiLd@x?QrR#yF)`BB6U9?)Ewi$d73T}<@e*rhs&m+sN z3QML4OM{803g&)K8W|^!xMO||(mUH|DAFY6AIXTwD)&%jdnvxw%ti!Xme+0)Ew+GZ zB1cYd>OrzUyV*hF2nMSNnYQ?ycOss%IH@yD`k6J)=^X=o^ytDGPVrL0Jnn8-=*adi zjvv~SdE&|G6-m9Q4t$AinUIufQ_Dco!WP^9(fFHI2aXId8V$r=0YuG-pJ3gDqtGiP zA*E@WsTz#OR;I+3dQrXnpdj`fPob==p8Vdb=k=6z?6{OT5 z>bY2x#WyXjd6QZor?mx}+qZ>2L=-dFn$S&pS#kx(?&E%?8YSc%@XM;-1@uv(0R+rG z`4O8S6PoT-wYdb;gmK+CvVetDXoDX_keGl=5{fYaqF?haaQ*S;kvcxFX_lHrLIsX^ zo=+x9$V^*G0o8Nj9C`jAq(s*+pEn>vI5`=ZbXGi)Q$#aJ(e|FDu3LuTN1LS99AHzE zt28vOTias(R5M!1fvZY9zg6c$;Abd!Um?t^;$&4QJ!cWc&$$UY7Tl^}e5>(KG2<5N zoSDdK>3Ny=+mZlMvx$*OeJqv*q{5`XqR& z7+z3yY#CV}nH%y((YS1N9!{EwB5_5bc_v}o(8O{Oy=6ml*n9D2O9=u4^4>ZUPO=eS z+$0)m?fQ;cW^7XX$jJcA=y;n157cV@e6*6wq(q;RNz**_do0G|dxI|tpGSaDNXM-Nsp|?00!yMKCJDl;3JJi#f&oKp6Ei!G z6D59KOLIJkNmeFJ$d~jFf^JM-K)A0Fook_d7 z<6GQ$9~<=nFnUYe!d)Hlc;qPGHf8_!5t-cMctJ#D*=*yxZI7+>!&X%;xW!JV`50_s zq-c0xZfDWwdoZSJdGR{Tpwt1ieyBu1WC6@dHBi?YQpJGShe{?-<~y^@H9*zR@;8=j zWatFQq{&Xn`uf6!my_EIUC&K0g4ORxhPZ%xe6$=yJlWauC}_U>xVwAVuv-Szl3LYA zFwaj0FYf2^G#CMz_?hhXHW-(3EaqFZ%A-$mn+pJbc7pr#qcf+3>5MOaML?XX@0bcjfAKZSHUgf-KghOlZY)7daa@FmW9l4 zDy`Spf0yLvN~kx4nt^8o)UO~3P)Y{?7z8jd2$rl@R;erUahuW{edljz@i)A-xRokxb`!^!aI5XbYyxQ~8ApAVt|K@i4CV2xwUi?92{ zThDJYQA=a4w+;@#@*0Vw+_u5a%T=BzDB= zMl&!2`Yf6XO=FW+YZBkI)+t+mPDgz0KT7?>+aknjdLF@bIx+qRU*6;D2wiXk{emN> zZ1JK2z885MP2WAXwsM5FzwX49^eKfuP_kELkN^b+-tlXgCr|=OJOQdW&`|yAY0U3s z0;Kv|+oo|q!uxn+y6BM;&}wdcHP$Oh$_r6|I4;J2dg3^nY@F7=2&W}G*tmVouhhrZ zlm5owc;UJvnSG3R$`&6~({I8N53r0O%+o}{my?C+EFw<*`5xK$n-|xJ<6{jI)4yJX zc&R9$aUWllJ3%SjZHc>MR9PF~3It1CU%@~)QGXMgVRi=1.0.2 <2.0.0", - "type": "range" - }, - "/Volumes/Source/vim" - ] - ], - "_from": "child-process@>=1.0.2 <2.0.0", - "_id": "child-process@1.0.2", - "_inCache": true, - "_installable": true, - "_location": "/child-process", - "_nodeVersion": "4.2.6", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/child-process-1.0.2.tgz_1472177123005_0.36590453051030636" - }, - "_npmUser": { - "name": "npm", - "email": "npm@npmjs.com" - }, - "_npmVersion": "3.9.2", - "_phantomChildren": {}, - "_requested": { - "raw": "child-process@^1.0.2", - "scope": null, - "escapedName": "child-process", - "name": "child-process", - "rawSpec": "^1.0.2", - "spec": ">=1.0.2 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz", - "_shasum": "98974dc7ed1ee4c6229f8e305fa7313a6885a7f2", - "_shrinkwrap": null, - "_spec": "child-process@^1.0.2", - "_where": "/Volumes/Source/vim", - "author": "", - "bugs": { - "url": "https://github.com/npm/security-holder/issues" - }, - "dependencies": {}, - "description": "This package name is not currently in use, but was formerly occupied by another package. To avoid malicious use, npm is hanging on to the package name, but loosely, and we'll probably give it to you if you want it.", - "devDependencies": {}, - "directories": {}, - "dist": { - "shasum": "98974dc7ed1ee4c6229f8e305fa7313a6885a7f2", - "tarball": "https://registry.npmjs.org/child-process/-/child-process-1.0.2.tgz" - }, - "gitHead": "9ef10011153183d323ed420df5bb17eaf08ab730", - "homepage": "https://github.com/npm/security-holder#readme", - "keywords": [], - "license": "ISC", - "main": "index.js", - "maintainers": [ - { - "name": "npm", - "email": "npm@npmjs.com" - } - ], - "name": "child-process", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/npm/security-holder.git" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "version": "1.0.2" -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/.npmignore b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/.npmignore deleted file mode 100644 index 91dfed8d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -node_modules \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/README.md b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/README.md deleted file mode 100644 index 55ab4822..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# node-copy-paste - -A command line utility that allows read/write (i.e copy/paste) access to the system clipboard. It does this by wrapping [`pbcopy/pbpaste`](https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/pbcopy.1.html) (for OSX), [`xclip`](http://www.cyberciti.biz/faq/xclip-linux-insert-files-command-output-intoclipboard/) (for Linux and OpenBSD), and [`clip`](http://www.labnol.org/software/tutorials/copy-dos-command-line-output-clipboard-clip-exe/2506/) (for Windows). Currently works with node.js v0.8+. - -## The API - -When `require("copy-paste")` is executed, an object with the following properties is returned: - -- `copy(text[, callback])`: asynchronously replaces the current contents of the clip board with `text`. Takes either a string, array, object, or readable stream. Returns the same value passed in. Optional callback will fire when the copy operation is complete. -- `paste([callback])`: if no callback is provided, `paste` synchronously returns the current contents of the system clip board. Otherwise, the contents of the system clip board are passed to the callback as the second parameter. - - **Note**: The synchronous version of `paste` is not always availabled. Unfortunately, I'm having a hard time finding a synchronous version of `child_process.exec` that consistently works on all platforms, especially windows. An error message is shown if the synchronous version of `paste` is used on an unsupported platform. That said, the asynchronous version of `paste` is always available. - -- `require("copy-paste").global()`: adds `copy` and `paste` to the global namespace. Returns an object with `copy` and `paste` as properties. - -## Example - -```js -var ncp = require("copy-paste"); - -ncp.copy('some text', function () { - // complete... -}) -``` - -## Getting node-copy-paste - -The easiest way to get node-copy-paste is with [npm](http://npmjs.org/): - - npm install -g copy-paste - -Alternatively you can clone this git repository: - - git clone git://github.com/xavi-/node-copy-paste.git - -## Future plans - -I'm hoping to add various fallbacks for instances when `xclip` or `clip` is not avaiable (see [experimental-fallbacks](https://github.com/xavi-/node-copy-paste/tree/experimental-fallbacks/platform) branch). Also this library needs to be more thoroughly tested on windows. - -## Developed by -* Xavi Ramirez - -## License -This project is released under [The MIT License](http://www.opensource.org/licenses/mit-license.php). diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/index.js deleted file mode 100644 index 174dc341..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/index.js +++ /dev/null @@ -1,116 +0,0 @@ -var child_process = require("child_process"); -var spawn = child_process.spawn; -var util = require("util"); - -var execSync = (function() { - if(child_process.execSync) { // Use native execSync if avaiable - return function(cmd) { return child_process.execSync(cmd); }; - } else { - try { // Try using fallback package if available - var execSync = require("sync-exec"); - return function(cmd) { return execSync(cmd).stdout; }; - } catch(e) {} - } - - return null; -})(); - -var config; - -switch(process.platform) { - case "darwin": - config = require("./platform/darwin"); - break; - case "win32": - config = require("./platform/win32"); - break; - case "linux": - config = require("./platform/linux"); - break; - case "freebsd": - config = require("./platform/linux"); - break; - case "openbsd": - config = require("./platform/openbsd"); - break; - default: - throw new Error("Unknown platform: '" + process.platform + "'. Send this error to xavi.rmz@gmail.com."); -} - -var noop = function() {}; - -exports.copy = function(text, callback) { - var child = spawn(config.copy.command, config.copy.args); - - var done = (callback ? function() { callback.apply(this, arguments); done = noop; } : noop); - - var err = []; - - child.stdin.on("error", function (err) { done(err); }); - child - .on("exit", function() { done(null, text); }) - .on("error", function(err) { done(err); }) - .stderr - .on("data", function(chunk) { err.push(chunk); }) - .on("end", function() { - if(err.length === 0) { return; } - done(new Error(config.decode(err))); - }) - ; - - if(text.pipe) { text.pipe(child.stdin); } - else { - var output, type = Object.prototype.toString.call(text); - - if(type === "[object String]") { output = text; } - else if(type === "[object Object]") { output = util.inspect(text, { depth: null }); } - else if(type === "[object Array]") { output = util.inspect(text, { depth: null }); } - else { output = text.toString(); } - - child.stdin.end(config.encode(output)); - } - - return text; -}; - -var pasteCommand = [ config.paste.command ].concat(config.paste.args).join(" "); -exports.paste = function(callback) { - if(execSync && !callback) { return config.decode(execSync(pasteCommand)); } - else if(callback) { - var child = spawn(config.paste.command, config.paste.args); - - var done = callback && function() { callback.apply(this, arguments); done = noop; }; - - var data = [], err = []; - - child.on("error", function(err) { done(err); }); - child.stdout - .on("data", function(chunk) { data.push(chunk); }) - .on("end", function() { done(null, config.decode(data)); }) - ; - child.stderr - .on("data", function(chunk) { err.push(chunk); }) - .on("end", function() { - if(err.length === 0) { return; } - - done(new Error(config.decode(err))); - }) - ; - } else { - throw new Error("A synchronous version of paste is not supported on this platform."); - } -}; - -exports.silent = function() { - throw new Error("DEPRECATED: copy-paste is now always silent."); -}; - -exports.noConflict = function() { - throw new Error("DEPRECATED: copy-paste no longer adds global variables by default."); -}; -exports.global = function() { - GLOBAL.copy = exports.copy; - GLOBAL.paste = exports.paste; - - return exports; -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/package.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/package.json deleted file mode 100644 index 0e5caf34..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_args": [ - [ - "copy-paste@^1.3.0", - "/Volumes/Source/vim" - ] - ], - "_from": "copy-paste@>=1.3.0 <2.0.0", - "_id": "copy-paste@1.3.0", - "_inCache": true, - "_installable": true, - "_location": "/copy-paste", - "_nodeVersion": "1.2.0", - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/copy-paste-1.3.0.tgz_1465669280564_0.7867658494506031" - }, - "_npmUser": { - "email": "xavi.rmz@gmail.com", - "name": "xavi" - }, - "_npmVersion": "2.5.1", - "_phantomChildren": {}, - "_requested": { - "name": "copy-paste", - "raw": "copy-paste@^1.3.0", - "rawSpec": "^1.3.0", - "scope": null, - "spec": ">=1.3.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", - "_shasum": "a7e6c4a1c28fdedf2b081e72b97df2ef95f471ed", - "_shrinkwrap": null, - "_spec": "copy-paste@^1.3.0", - "_where": "/Volumes/Source/vim", - "bugs": { - "url": "https://github.com/xavi-/node-copy-paste/issues" - }, - "dependencies": { - "iconv-lite": "^0.4.8", - "sync-exec": "~0.6.x" - }, - "description": "A command line utility that allows read/write (i.e copy/paste) access to the system clipboard.", - "devDependencies": { - "mocha": "*", - "should": ">=8.2.1" - }, - "directories": {}, - "dist": { - "shasum": "a7e6c4a1c28fdedf2b081e72b97df2ef95f471ed", - "tarball": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz" - }, - "gitHead": "160fae2bd4352739f26459dc965c9df0c5c7038b", - "homepage": "https://github.com/xavi-/node-copy-paste", - "keywords": [ - "copy", - "paste", - "copy and paste", - "clipboard" - ], - "main": "./index.js", - "maintainers": [ - { - "email": "xavi.rmz@gmail.com", - "name": "xavi" - } - ], - "name": "copy-paste", - "optionalDependencies": { - "sync-exec": "~0.6.x" - }, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git+https://github.com/xavi-/node-copy-paste.git" - }, - "scripts": { - "test": "mocha -w" - }, - "version": "1.3.0" -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/darwin.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/darwin.js deleted file mode 100644 index 6b7e43de..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/darwin.js +++ /dev/null @@ -1,9 +0,0 @@ -exports.copy = { command: "pbcopy", args: [] }; -exports.paste = { command: "pbpaste", args: [] }; -exports.paste.full_command = exports.paste.command; -exports.encode = function(str) { return new Buffer(str, "utf8"); }; -exports.decode = function(chunks) { - if(!Array.isArray(chunks)) { chunks = [ chunks ]; } - - return Buffer.concat(chunks).toString("utf8"); -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/fallbacks/paste.vbs b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/fallbacks/paste.vbs deleted file mode 100644 index cd60d6ee..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/fallbacks/paste.vbs +++ /dev/null @@ -1,52 +0,0 @@ -Function Base64Encode(sText) - Dim oXML, oNode - - Set oXML = CreateObject("Msxml2.DOMDocument.3.0") - Set oNode = oXML.CreateElement("base64") - oNode.dataType = "bin.base64" - oNode.nodeTypedValue =Stream_StringToBinary(sText) - Base64Encode = oNode.text - Set oNode = Nothing - Set oXML = Nothing -End Function - -'Stream_StringToBinary Function -'2003 Antonin Foller, http://www.motobit.com -'Text - string parameter To convert To binary data -Function Stream_StringToBinary(Text) - Const adTypeText = 2 - Const adTypeBinary = 1 - - 'Create Stream object - Dim BinaryStream 'As New Stream - Set BinaryStream = CreateObject("ADODB.Stream") - - 'Specify stream type - we want To save text/string data. - BinaryStream.Type = adTypeText - - 'Specify charset For the source text (unicode) data. - BinaryStream.CharSet = "utf-8" - - 'Open the stream And write text/string data To the object - BinaryStream.Open - BinaryStream.WriteText Text - - 'Change stream type To binary - BinaryStream.Position = 0 - BinaryStream.Type = adTypeBinary - - 'Ignore first two bytes - sign of - BinaryStream.Position = 0 - - 'Open the stream And get binary data from the object - Stream_StringToBinary = BinaryStream.Read - - Set BinaryStream = Nothing -End Function - -Dim objHTML - -Set objHTML = CreateObject("htmlfile") -text = objHTML.ParentWindow.ClipboardData.GetData("Text") - -Wscript.Echo Base64Encode(text) \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/linux.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/linux.js deleted file mode 100644 index 1956ff00..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/linux.js +++ /dev/null @@ -1,9 +0,0 @@ -exports.copy = { command: "xclip", args: [ "-selection", "clipboard" ] }; -exports.paste = { command: "xclip", args: [ "-selection", "clipboard", "-o" ] }; -exports.paste.full_command = [ exports.paste.command ].concat(exports.paste.args).join(" "); -exports.encode = function(str) { return new Buffer(str, "utf8"); }; -exports.decode = function(chunks) { - if(!Array.isArray(chunks)) { chunks = [ chunks ]; } - - return Buffer.concat(chunks).toString("utf8"); -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/win32.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/win32.js deleted file mode 100644 index 8727acfd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/platform/win32.js +++ /dev/null @@ -1,22 +0,0 @@ -var iconv = require("iconv-lite"); -var path = require("path"); - -var vbsPath = path.join(__dirname, ".\\fallbacks\\paste.vbs"); - -var paste = { command: "cscript", args: [ "/Nologo", vbsPath ] }; -paste.full_command = [ paste.command, paste.args[0], '"'+vbsPath+'"' ].join(" "); - -exports.copy = { command: "clip", args: [] }; -exports.paste = paste; - -exports.encode = function(str) { return iconv.encode(str, "utf16le"); }; -exports.decode = function(chunks) { - if(!Array.isArray(chunks)) { chunks = [ chunks ]; } - - var b64 = iconv.decode(Buffer.concat(chunks), "cp437"); - b64 = b64.substr(0, b64.length - 2); // Chops off extra "\r\n" - - // remove bom and decode - var result = new Buffer(b64, "base64").slice(3).toString("utf-8"); - return result; -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/copypaste.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/copypaste.js deleted file mode 100644 index ebe29143..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/copypaste.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict'; - -var should = require('should'); -var clipboard = require("../index.js"); - -function copy_and_paste(content, done) { - clipboard.copy(content, function(error_when_copy) { - should.not.exist(error_when_copy); - - clipboard.paste(function (error_when_paste, p) { - should.not.exist(error_when_paste); - should.exist(p); - p.should.equal(content); - done(); - }); - }); -} - -describe('copy and paste', function () { - it('should work correctly with ascii chars (<128)', function (done) { - - copy_and_paste("123456789abcdefghijklmnopqrstuvwxyz+-=&_[]<^=>=/{:})-{(`)}", done); - }); - - it('should work correctly with cp437 chars (<256)', function (done) { - - copy_and_paste("ÉæÆôöòûùÿÖÜ¢£¥₧ƒ", done); - }); - - it('should work correctly with unicode chars (<2^16)', function (done) { - - copy_and_paste("ĀāĂ㥹ĆćĈĉĊċČčĎ ፰፱፲፳፴፵፶፷፸፹፺፻፼", done); - }); - - it('should work correctly for "±"', function (done) { - - copy_and_paste("±", done); - }); -}); \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/mocha.opts b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/mocha.opts deleted file mode 100644 index 78ebddcb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/copy-paste/test/mocha.opts +++ /dev/null @@ -1,4 +0,0 @@ ---require should ---reporter spec ---ui bdd ---recursive \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.npmignore b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.npmignore deleted file mode 100644 index b83202d0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.npmignore +++ /dev/null @@ -1,13 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz -pids -logs -results -npm-debug.log -node_modules diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.travis.yml b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.travis.yml deleted file mode 100644 index 87f8cd91..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "0.10" \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/LICENSE b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/LICENSE deleted file mode 100644 index fe52cb6d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -Copyright 2006 Google Inc. -http://code.google.com/p/google-diff-match-patch/ - -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. \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/README.md b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/README.md deleted file mode 100644 index f8b98e92..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# diff-match-patch - -npm package for https://code.google.com/p/google-diff-match-patch/ - -[![Build Status](https://travis-ci.org/ForbesLindesay/diff-match-patch.png?branch=master)](https://travis-ci.org/ForbesLindesay/diff-match-patch) -[![Dependency Status](https://gemnasium.com/ForbesLindesay/diff-match-patch.png)](https://gemnasium.com/ForbesLindesay/diff-match-patch) -[![NPM version](https://badge.fury.io/js/diff-match-patch.png)](http://badge.fury.io/js/diff-match-patch) - -## Installation - - npm install diff-match-patch - -## API - -https://code.google.com/p/google-diff-match-patch/wiki/API - -```javascript -var DiffMatchPatch = require('diff-match-patch'); -var dmp = new DiffMatchPatch(); -//use the methods that dmp has -//see: https://code.google.com/p/google-diff-match-patch/wiki/API - -//You can also use the following properties: - -DiffMatchPatch.DIFF_DELETE = -1; -DiffMatchPatch.DIFF_INSERT = 1; -DiffMatchPatch.DIFF_EQUAL = 0; -``` - -## License - - http://www.apache.org/licenses/LICENSE-2.0 \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/index.js deleted file mode 100644 index 95f7324f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/index.js +++ /dev/null @@ -1,2193 +0,0 @@ -'use strict' - -/** - * Diff Match and Patch - * - * Copyright 2006 Google Inc. - * http://code.google.com/p/google-diff-match-patch/ - * - * 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. - */ - -/** - * @fileoverview Computes the difference between two texts to create a patch. - * Applies the patch onto another text, allowing for errors. - * @author fraser@google.com (Neil Fraser) - */ - -/** - * Class containing the diff, match and patch methods. - * @constructor - */ -function diff_match_patch() { - - // Defaults. - // Redefine these in your program to override the defaults. - - // Number of seconds to map a diff before giving up (0 for infinity). - this.Diff_Timeout = 1.0; - // Cost of an empty edit operation in terms of edit characters. - this.Diff_EditCost = 4; - // At what point is no match declared (0.0 = perfection, 1.0 = very loose). - this.Match_Threshold = 0.5; - // How far to search for a match (0 = exact location, 1000+ = broad match). - // A match this many characters away from the expected location will add - // 1.0 to the score (0.0 is a perfect match). - this.Match_Distance = 1000; - // When deleting a large block of text (over ~64 characters), how close do - // the contents have to be to match the expected contents. (0.0 = perfection, - // 1.0 = very loose). Note that Match_Threshold controls how closely the - // end points of a delete need to match. - this.Patch_DeleteThreshold = 0.5; - // Chunk size for context length. - this.Patch_Margin = 4; - - // The number of bits in an int. - this.Match_MaxBits = 32; -} - - -// DIFF FUNCTIONS - - -/** - * The data structure representing a diff is an array of tuples: - * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']] - * which means: delete 'Hello', add 'Goodbye' and keep ' world.' - */ -var DIFF_DELETE = -1; -var DIFF_INSERT = 1; -var DIFF_EQUAL = 0; - -/** @typedef {{0: number, 1: string}} */ -diff_match_patch.Diff; - - -/** - * Find the differences between two texts. Simplifies the problem by stripping - * any common prefix or suffix off the texts before diffing. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {boolean=} opt_checklines Optional speedup flag. If present and false, - * then don't run a line-level diff first to identify the changed areas. - * Defaults to true, which does a faster, slightly less optimal diff. - * @param {number} opt_deadline Optional time when the diff should be complete - * by. Used internally for recursive calls. Users should set DiffTimeout - * instead. - * @return {!Array.} Array of diff tuples. - */ -diff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines, - opt_deadline) { - // Set a deadline by which time the diff must be complete. - if (typeof opt_deadline == 'undefined') { - if (this.Diff_Timeout <= 0) { - opt_deadline = Number.MAX_VALUE; - } else { - opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000; - } - } - var deadline = opt_deadline; - - // Check for null inputs. - if (text1 == null || text2 == null) { - throw new Error('Null input. (diff_main)'); - } - - // Check for equality (speedup). - if (text1 == text2) { - if (text1) { - return [[DIFF_EQUAL, text1]]; - } - return []; - } - - if (typeof opt_checklines == 'undefined') { - opt_checklines = true; - } - var checklines = opt_checklines; - - // Trim off common prefix (speedup). - var commonlength = this.diff_commonPrefix(text1, text2); - var commonprefix = text1.substring(0, commonlength); - text1 = text1.substring(commonlength); - text2 = text2.substring(commonlength); - - // Trim off common suffix (speedup). - commonlength = this.diff_commonSuffix(text1, text2); - var commonsuffix = text1.substring(text1.length - commonlength); - text1 = text1.substring(0, text1.length - commonlength); - text2 = text2.substring(0, text2.length - commonlength); - - // Compute the diff on the middle block. - var diffs = this.diff_compute_(text1, text2, checklines, deadline); - - // Restore the prefix and suffix. - if (commonprefix) { - diffs.unshift([DIFF_EQUAL, commonprefix]); - } - if (commonsuffix) { - diffs.push([DIFF_EQUAL, commonsuffix]); - } - this.diff_cleanupMerge(diffs); - return diffs; -}; - - -/** - * Find the differences between two texts. Assumes that the texts do not - * have any common prefix or suffix. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {boolean} checklines Speedup flag. If false, then don't run a - * line-level diff first to identify the changed areas. - * If true, then run a faster, slightly less optimal diff. - * @param {number} deadline Time when the diff should be complete by. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines, - deadline) { - var diffs; - - if (!text1) { - // Just add some text (speedup). - return [[DIFF_INSERT, text2]]; - } - - if (!text2) { - // Just delete some text (speedup). - return [[DIFF_DELETE, text1]]; - } - - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - var i = longtext.indexOf(shorttext); - if (i != -1) { - // Shorter text is inside the longer text (speedup). - diffs = [[DIFF_INSERT, longtext.substring(0, i)], - [DIFF_EQUAL, shorttext], - [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; - // Swap insertions for deletions if diff is reversed. - if (text1.length > text2.length) { - diffs[0][0] = diffs[2][0] = DIFF_DELETE; - } - return diffs; - } - - if (shorttext.length == 1) { - // Single character string. - // After the previous speedup, the character can't be an equality. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; - } - - // Check to see if the problem can be split in two. - var hm = this.diff_halfMatch_(text1, text2); - if (hm) { - // A half-match was found, sort out the return data. - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - var mid_common = hm[4]; - // Send both pairs off for separate processing. - var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline); - var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline); - // Merge the results. - return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b); - } - - if (checklines && text1.length > 100 && text2.length > 100) { - return this.diff_lineMode_(text1, text2, deadline); - } - - return this.diff_bisect_(text1, text2, deadline); -}; - - -/** - * Do a quick line-level diff on both strings, then rediff the parts for - * greater accuracy. - * This speedup can produce non-minimal diffs. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} deadline Time when the diff should be complete by. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) { - // Scan the text on a line-by-line basis first. - var a = this.diff_linesToChars_(text1, text2); - text1 = a.chars1; - text2 = a.chars2; - var linearray = a.lineArray; - - var diffs = this.diff_main(text1, text2, false, deadline); - - // Convert the diff back to original text. - this.diff_charsToLines_(diffs, linearray); - // Eliminate freak matches (e.g. blank lines) - this.diff_cleanupSemantic(diffs); - - // Rediff any replacement blocks, this time character-by-character. - // Add a dummy entry at the end. - diffs.push([DIFF_EQUAL, '']); - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - while (pointer < diffs.length) { - switch (diffs[pointer][0]) { - case DIFF_INSERT: - count_insert++; - text_insert += diffs[pointer][1]; - break; - case DIFF_DELETE: - count_delete++; - text_delete += diffs[pointer][1]; - break; - case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. - if (count_delete >= 1 && count_insert >= 1) { - // Delete the offending records and add the merged ones. - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert); - pointer = pointer - count_delete - count_insert; - var a = this.diff_main(text_delete, text_insert, false, deadline); - for (var j = a.length - 1; j >= 0; j--) { - diffs.splice(pointer, 0, a[j]); - } - pointer = pointer + a.length; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - break; - } - pointer++; - } - diffs.pop(); // Remove the dummy entry at the end. - - return diffs; -}; - - -/** - * Find the 'middle snake' of a diff, split the problem in two - * and return the recursively constructed diff. - * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} deadline Time at which to bail if not yet complete. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - var max_d = Math.ceil((text1_length + text2_length) / 2); - var v_offset = max_d; - var v_length = 2 * max_d; - var v1 = new Array(v_length); - var v2 = new Array(v_length); - // Setting all elements to -1 is faster in Chrome & Firefox than mixing - // integers and undefined. - for (var x = 0; x < v_length; x++) { - v1[x] = -1; - v2[x] = -1; - } - v1[v_offset + 1] = 0; - v2[v_offset + 1] = 0; - var delta = text1_length - text2_length; - // If the total number of characters is odd, then the front path will collide - // with the reverse path. - var front = (delta % 2 != 0); - // Offsets for start and end of k loop. - // Prevents mapping of space beyond the grid. - var k1start = 0; - var k1end = 0; - var k2start = 0; - var k2end = 0; - for (var d = 0; d < max_d; d++) { - // Bail out if deadline is reached. - if ((new Date()).getTime() > deadline) { - break; - } - - // Walk the front path one step. - for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) { - var k1_offset = v_offset + k1; - var x1; - if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) { - x1 = v1[k1_offset + 1]; - } else { - x1 = v1[k1_offset - 1] + 1; - } - var y1 = x1 - k1; - while (x1 < text1_length && y1 < text2_length && - text1.charAt(x1) == text2.charAt(y1)) { - x1++; - y1++; - } - v1[k1_offset] = x1; - if (x1 > text1_length) { - // Ran off the right of the graph. - k1end += 2; - } else if (y1 > text2_length) { - // Ran off the bottom of the graph. - k1start += 2; - } else if (front) { - var k2_offset = v_offset + delta - k1; - if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) { - // Mirror x2 onto top-left coordinate system. - var x2 = text1_length - v2[k2_offset]; - if (x1 >= x2) { - // Overlap detected. - return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); - } - } - } - } - - // Walk the reverse path one step. - for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) { - var k2_offset = v_offset + k2; - var x2; - if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) { - x2 = v2[k2_offset + 1]; - } else { - x2 = v2[k2_offset - 1] + 1; - } - var y2 = x2 - k2; - while (x2 < text1_length && y2 < text2_length && - text1.charAt(text1_length - x2 - 1) == - text2.charAt(text2_length - y2 - 1)) { - x2++; - y2++; - } - v2[k2_offset] = x2; - if (x2 > text1_length) { - // Ran off the left of the graph. - k2end += 2; - } else if (y2 > text2_length) { - // Ran off the top of the graph. - k2start += 2; - } else if (!front) { - var k1_offset = v_offset + delta - k2; - if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) { - var x1 = v1[k1_offset]; - var y1 = v_offset + x1 - k1_offset; - // Mirror x2 onto top-left coordinate system. - x2 = text1_length - x2; - if (x1 >= x2) { - // Overlap detected. - return this.diff_bisectSplit_(text1, text2, x1, y1, deadline); - } - } - } - } - } - // Diff took too long and hit the deadline or - // number of diffs equals number of characters, no commonality at all. - return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]]; -}; - - -/** - * Given the location of the 'middle snake', split the diff in two parts - * and recurse. - * @param {string} text1 Old string to be diffed. - * @param {string} text2 New string to be diffed. - * @param {number} x Index of split point in text1. - * @param {number} y Index of split point in text2. - * @param {number} deadline Time at which to bail if not yet complete. - * @return {!Array.} Array of diff tuples. - * @private - */ -diff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y, - deadline) { - var text1a = text1.substring(0, x); - var text2a = text2.substring(0, y); - var text1b = text1.substring(x); - var text2b = text2.substring(y); - - // Compute both diffs serially. - var diffs = this.diff_main(text1a, text2a, false, deadline); - var diffsb = this.diff_main(text1b, text2b, false, deadline); - - return diffs.concat(diffsb); -}; - - -/** - * Split two texts into an array of strings. Reduce the texts to a string of - * hashes where each Unicode character represents one line. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {{chars1: string, chars2: string, lineArray: !Array.}} - * An object containing the encoded text1, the encoded text2 and - * the array of unique strings. - * The zeroth element of the array of unique strings is intentionally blank. - * @private - */ -diff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) { - var lineArray = []; // e.g. lineArray[4] == 'Hello\n' - var lineHash = {}; // e.g. lineHash['Hello\n'] == 4 - - // '\x00' is a valid character, but various debuggers don't like it. - // So we'll insert a junk entry to avoid generating a null character. - lineArray[0] = ''; - - /** - * Split a text into an array of strings. Reduce the texts to a string of - * hashes where each Unicode character represents one line. - * Modifies linearray and linehash through being a closure. - * @param {string} text String to encode. - * @return {string} Encoded string. - * @private - */ - function diff_linesToCharsMunge_(text) { - var chars = ''; - // Walk the text, pulling out a substring for each line. - // text.split('\n') would would temporarily double our memory footprint. - // Modifying text would create many large strings to garbage collect. - var lineStart = 0; - var lineEnd = -1; - // Keeping our own length variable is faster than looking it up. - var lineArrayLength = lineArray.length; - while (lineEnd < text.length - 1) { - lineEnd = text.indexOf('\n', lineStart); - if (lineEnd == -1) { - lineEnd = text.length - 1; - } - var line = text.substring(lineStart, lineEnd + 1); - lineStart = lineEnd + 1; - - if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) : - (lineHash[line] !== undefined)) { - chars += String.fromCharCode(lineHash[line]); - } else { - chars += String.fromCharCode(lineArrayLength); - lineHash[line] = lineArrayLength; - lineArray[lineArrayLength++] = line; - } - } - return chars; - } - - var chars1 = diff_linesToCharsMunge_(text1); - var chars2 = diff_linesToCharsMunge_(text2); - return {chars1: chars1, chars2: chars2, lineArray: lineArray}; -}; - - -/** - * Rehydrate the text in a diff from a string of line hashes to real lines of - * text. - * @param {!Array.} diffs Array of diff tuples. - * @param {!Array.} lineArray Array of unique strings. - * @private - */ -diff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) { - for (var x = 0; x < diffs.length; x++) { - var chars = diffs[x][1]; - var text = []; - for (var y = 0; y < chars.length; y++) { - text[y] = lineArray[chars.charCodeAt(y)]; - } - diffs[x][1] = text.join(''); - } -}; - - -/** - * Determine the common prefix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the start of each - * string. - */ -diff_match_patch.prototype.diff_commonPrefix = function(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerstart = 0; - while (pointermin < pointermid) { - if (text1.substring(pointerstart, pointermid) == - text2.substring(pointerstart, pointermid)) { - pointermin = pointermid; - pointerstart = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Determine the common suffix of two strings. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of each string. - */ -diff_match_patch.prototype.diff_commonSuffix = function(text1, text2) { - // Quick check for common null cases. - if (!text1 || !text2 || - text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) { - return 0; - } - // Binary search. - // Performance analysis: http://neil.fraser.name/news/2007/10/09/ - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - var pointerend = 0; - while (pointermin < pointermid) { - if (text1.substring(text1.length - pointermid, text1.length - pointerend) == - text2.substring(text2.length - pointermid, text2.length - pointerend)) { - pointermin = pointermid; - pointerend = pointermin; - } else { - pointermax = pointermid; - } - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - return pointermid; -}; - - -/** - * Determine if the suffix of one string is the prefix of another. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {number} The number of characters common to the end of the first - * string and the start of the second string. - * @private - */ -diff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) { - // Cache the text lengths to prevent multiple calls. - var text1_length = text1.length; - var text2_length = text2.length; - // Eliminate the null case. - if (text1_length == 0 || text2_length == 0) { - return 0; - } - // Truncate the longer string. - if (text1_length > text2_length) { - text1 = text1.substring(text1_length - text2_length); - } else if (text1_length < text2_length) { - text2 = text2.substring(0, text1_length); - } - var text_length = Math.min(text1_length, text2_length); - // Quick check for the worst case. - if (text1 == text2) { - return text_length; - } - - // Start by looking for a single character match - // and increase length until no match is found. - // Performance analysis: http://neil.fraser.name/news/2010/11/04/ - var best = 0; - var length = 1; - while (true) { - var pattern = text1.substring(text_length - length); - var found = text2.indexOf(pattern); - if (found == -1) { - return best; - } - length += found; - if (found == 0 || text1.substring(text_length - length) == - text2.substring(0, length)) { - best = length; - length++; - } - } -}; - - -/** - * Do the two texts share a substring which is at least half the length of the - * longer text? - * This speedup can produce non-minimal diffs. - * @param {string} text1 First string. - * @param {string} text2 Second string. - * @return {Array.} Five element Array, containing the prefix of - * text1, the suffix of text1, the prefix of text2, the suffix of - * text2 and the common middle. Or null if there was no match. - * @private - */ -diff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) { - if (this.Diff_Timeout <= 0) { - // Don't risk returning a non-optimal diff if we have unlimited time. - return null; - } - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - if (longtext.length < 4 || shorttext.length * 2 < longtext.length) { - return null; // Pointless. - } - var dmp = this; // 'this' becomes 'window' in a closure. - - /** - * Does a substring of shorttext exist within longtext such that the substring - * is at least half the length of longtext? - * Closure, but does not reference any external variables. - * @param {string} longtext Longer string. - * @param {string} shorttext Shorter string. - * @param {number} i Start index of quarter length substring within longtext. - * @return {Array.} Five element Array, containing the prefix of - * longtext, the suffix of longtext, the prefix of shorttext, the suffix - * of shorttext and the common middle. Or null if there was no match. - * @private - */ - function diff_halfMatchI_(longtext, shorttext, i) { - // Start with a 1/4 length substring at position i as a seed. - var seed = longtext.substring(i, i + Math.floor(longtext.length / 4)); - var j = -1; - var best_common = ''; - var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; - while ((j = shorttext.indexOf(seed, j + 1)) != -1) { - var prefixLength = dmp.diff_commonPrefix(longtext.substring(i), - shorttext.substring(j)); - var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i), - shorttext.substring(0, j)); - if (best_common.length < suffixLength + prefixLength) { - best_common = shorttext.substring(j - suffixLength, j) + - shorttext.substring(j, j + prefixLength); - best_longtext_a = longtext.substring(0, i - suffixLength); - best_longtext_b = longtext.substring(i + prefixLength); - best_shorttext_a = shorttext.substring(0, j - suffixLength); - best_shorttext_b = shorttext.substring(j + prefixLength); - } - } - if (best_common.length * 2 >= longtext.length) { - return [best_longtext_a, best_longtext_b, - best_shorttext_a, best_shorttext_b, best_common]; - } else { - return null; - } - } - - // First check if the second quarter is the seed for a half-match. - var hm1 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 4)); - // Check again based on the third quarter. - var hm2 = diff_halfMatchI_(longtext, shorttext, - Math.ceil(longtext.length / 2)); - var hm; - if (!hm1 && !hm2) { - return null; - } else if (!hm2) { - hm = hm1; - } else if (!hm1) { - hm = hm2; - } else { - // Both matched. Select the longest. - hm = hm1[4].length > hm2[4].length ? hm1 : hm2; - } - - // A half-match was found, sort out the return data. - var text1_a, text1_b, text2_a, text2_b; - if (text1.length > text2.length) { - text1_a = hm[0]; - text1_b = hm[1]; - text2_a = hm[2]; - text2_b = hm[3]; - } else { - text2_a = hm[0]; - text2_b = hm[1]; - text1_a = hm[2]; - text1_b = hm[3]; - } - var mid_common = hm[4]; - return [text1_a, text1_b, text2_a, text2_b, mid_common]; -}; - - -/** - * Reduce the number of edits by eliminating semantically trivial equalities. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupSemantic = function(diffs) { - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var equalitiesLength = 0; // Keeping our own length var is faster in JS. - /** @type {?string} */ - var lastequality = null; - // Always equal to diffs[equalities[equalitiesLength - 1]][1] - var pointer = 0; // Index of current position. - // Number of characters that changed prior to the equality. - var length_insertions1 = 0; - var length_deletions1 = 0; - // Number of characters that changed after the equality. - var length_insertions2 = 0; - var length_deletions2 = 0; - while (pointer < diffs.length) { - if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. - equalities[equalitiesLength++] = pointer; - length_insertions1 = length_insertions2; - length_deletions1 = length_deletions2; - length_insertions2 = 0; - length_deletions2 = 0; - lastequality = diffs[pointer][1]; - } else { // An insertion or deletion. - if (diffs[pointer][0] == DIFF_INSERT) { - length_insertions2 += diffs[pointer][1].length; - } else { - length_deletions2 += diffs[pointer][1].length; - } - // Eliminate an equality that is smaller or equal to the edits on both - // sides of it. - if (lastequality && (lastequality.length <= - Math.max(length_insertions1, length_deletions1)) && - (lastequality.length <= Math.max(length_insertions2, - length_deletions2))) { - // Duplicate record. - diffs.splice(equalities[equalitiesLength - 1], 0, - [DIFF_DELETE, lastequality]); - // Change second copy to insert. - diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; - // Throw away the equality we just deleted. - equalitiesLength--; - // Throw away the previous equality (it needs to be reevaluated). - equalitiesLength--; - pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1; - length_insertions1 = 0; // Reset the counters. - length_deletions1 = 0; - length_insertions2 = 0; - length_deletions2 = 0; - lastequality = null; - changes = true; - } - } - pointer++; - } - - // Normalize the diff. - if (changes) { - this.diff_cleanupMerge(diffs); - } - this.diff_cleanupSemanticLossless(diffs); - - // Find any overlaps between deletions and insertions. - // e.g: abcxxxxxxdef - // -> abcxxxdef - // e.g: xxxabcdefxxx - // -> defxxxabc - // Only extract an overlap if it is as big as the edit ahead or behind it. - pointer = 1; - while (pointer < diffs.length) { - if (diffs[pointer - 1][0] == DIFF_DELETE && - diffs[pointer][0] == DIFF_INSERT) { - var deletion = diffs[pointer - 1][1]; - var insertion = diffs[pointer][1]; - var overlap_length1 = this.diff_commonOverlap_(deletion, insertion); - var overlap_length2 = this.diff_commonOverlap_(insertion, deletion); - if (overlap_length1 >= overlap_length2) { - if (overlap_length1 >= deletion.length / 2 || - overlap_length1 >= insertion.length / 2) { - // Overlap found. Insert an equality and trim the surrounding edits. - diffs.splice(pointer, 0, - [DIFF_EQUAL, insertion.substring(0, overlap_length1)]); - diffs[pointer - 1][1] = - deletion.substring(0, deletion.length - overlap_length1); - diffs[pointer + 1][1] = insertion.substring(overlap_length1); - pointer++; - } - } else { - if (overlap_length2 >= deletion.length / 2 || - overlap_length2 >= insertion.length / 2) { - // Reverse overlap found. - // Insert an equality and swap and trim the surrounding edits. - diffs.splice(pointer, 0, - [DIFF_EQUAL, deletion.substring(0, overlap_length2)]); - diffs[pointer - 1][0] = DIFF_INSERT; - diffs[pointer - 1][1] = - insertion.substring(0, insertion.length - overlap_length2); - diffs[pointer + 1][0] = DIFF_DELETE; - diffs[pointer + 1][1] = - deletion.substring(overlap_length2); - pointer++; - } - } - pointer++; - } - pointer++; - } -}; - - -/** - * Look for single edits surrounded on both sides by equalities - * which can be shifted sideways to align the edit to a word boundary. - * e.g: The cat came. -> The cat came. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) { - /** - * Given two strings, compute a score representing whether the internal - * boundary falls on logical boundaries. - * Scores range from 6 (best) to 0 (worst). - * Closure, but does not reference any external variables. - * @param {string} one First string. - * @param {string} two Second string. - * @return {number} The score. - * @private - */ - function diff_cleanupSemanticScore_(one, two) { - if (!one || !two) { - // Edges are the best. - return 6; - } - - // Each port of this function behaves slightly differently due to - // subtle differences in each language's definition of things like - // 'whitespace'. Since this function's purpose is largely cosmetic, - // the choice has been made to use each language's native features - // rather than force total conformity. - var char1 = one.charAt(one.length - 1); - var char2 = two.charAt(0); - var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_); - var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_); - var whitespace1 = nonAlphaNumeric1 && - char1.match(diff_match_patch.whitespaceRegex_); - var whitespace2 = nonAlphaNumeric2 && - char2.match(diff_match_patch.whitespaceRegex_); - var lineBreak1 = whitespace1 && - char1.match(diff_match_patch.linebreakRegex_); - var lineBreak2 = whitespace2 && - char2.match(diff_match_patch.linebreakRegex_); - var blankLine1 = lineBreak1 && - one.match(diff_match_patch.blanklineEndRegex_); - var blankLine2 = lineBreak2 && - two.match(diff_match_patch.blanklineStartRegex_); - - if (blankLine1 || blankLine2) { - // Five points for blank lines. - return 5; - } else if (lineBreak1 || lineBreak2) { - // Four points for line breaks. - return 4; - } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) { - // Three points for end of sentences. - return 3; - } else if (whitespace1 || whitespace2) { - // Two points for whitespace. - return 2; - } else if (nonAlphaNumeric1 || nonAlphaNumeric2) { - // One point for non-alphanumeric. - return 1; - } - return 0; - } - - var pointer = 1; - // Intentionally ignore the first and last element (don't need checking). - while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - var equality1 = diffs[pointer - 1][1]; - var edit = diffs[pointer][1]; - var equality2 = diffs[pointer + 1][1]; - - // First, shift the edit as far left as possible. - var commonOffset = this.diff_commonSuffix(equality1, edit); - if (commonOffset) { - var commonString = edit.substring(edit.length - commonOffset); - equality1 = equality1.substring(0, equality1.length - commonOffset); - edit = commonString + edit.substring(0, edit.length - commonOffset); - equality2 = commonString + equality2; - } - - // Second, step character by character right, looking for the best fit. - var bestEquality1 = equality1; - var bestEdit = edit; - var bestEquality2 = equality2; - var bestScore = diff_cleanupSemanticScore_(equality1, edit) + - diff_cleanupSemanticScore_(edit, equality2); - while (edit.charAt(0) === equality2.charAt(0)) { - equality1 += edit.charAt(0); - edit = edit.substring(1) + equality2.charAt(0); - equality2 = equality2.substring(1); - var score = diff_cleanupSemanticScore_(equality1, edit) + - diff_cleanupSemanticScore_(edit, equality2); - // The >= encourages trailing rather than leading whitespace on edits. - if (score >= bestScore) { - bestScore = score; - bestEquality1 = equality1; - bestEdit = edit; - bestEquality2 = equality2; - } - } - - if (diffs[pointer - 1][1] != bestEquality1) { - // We have an improvement, save it back to the diff. - if (bestEquality1) { - diffs[pointer - 1][1] = bestEquality1; - } else { - diffs.splice(pointer - 1, 1); - pointer--; - } - diffs[pointer][1] = bestEdit; - if (bestEquality2) { - diffs[pointer + 1][1] = bestEquality2; - } else { - diffs.splice(pointer + 1, 1); - pointer--; - } - } - } - pointer++; - } -}; - -// Define some regex patterns for matching boundaries. -diff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/; -diff_match_patch.whitespaceRegex_ = /\s/; -diff_match_patch.linebreakRegex_ = /[\r\n]/; -diff_match_patch.blanklineEndRegex_ = /\n\r?\n$/; -diff_match_patch.blanklineStartRegex_ = /^\r?\n\r?\n/; - -/** - * Reduce the number of edits by eliminating operationally trivial equalities. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) { - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var equalitiesLength = 0; // Keeping our own length var is faster in JS. - /** @type {?string} */ - var lastequality = null; - // Always equal to diffs[equalities[equalitiesLength - 1]][1] - var pointer = 0; // Index of current position. - // Is there an insertion operation before the last equality. - var pre_ins = false; - // Is there a deletion operation before the last equality. - var pre_del = false; - // Is there an insertion operation after the last equality. - var post_ins = false; - // Is there a deletion operation after the last equality. - var post_del = false; - while (pointer < diffs.length) { - if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found. - if (diffs[pointer][1].length < this.Diff_EditCost && - (post_ins || post_del)) { - // Candidate found. - equalities[equalitiesLength++] = pointer; - pre_ins = post_ins; - pre_del = post_del; - lastequality = diffs[pointer][1]; - } else { - // Not a candidate, and can never become one. - equalitiesLength = 0; - lastequality = null; - } - post_ins = post_del = false; - } else { // An insertion or deletion. - if (diffs[pointer][0] == DIFF_DELETE) { - post_del = true; - } else { - post_ins = true; - } - /* - * Five types to be split: - * ABXYCD - * AXCD - * ABXC - * AXCD - * ABXC - */ - if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || - ((lastequality.length < this.Diff_EditCost / 2) && - (pre_ins + pre_del + post_ins + post_del) == 3))) { - // Duplicate record. - diffs.splice(equalities[equalitiesLength - 1], 0, - [DIFF_DELETE, lastequality]); - // Change second copy to insert. - diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT; - equalitiesLength--; // Throw away the equality we just deleted; - lastequality = null; - if (pre_ins && pre_del) { - // No changes made which could affect previous entry, keep going. - post_ins = post_del = true; - equalitiesLength = 0; - } else { - equalitiesLength--; // Throw away the previous equality. - pointer = equalitiesLength > 0 ? - equalities[equalitiesLength - 1] : -1; - post_ins = post_del = false; - } - changes = true; - } - } - pointer++; - } - - if (changes) { - this.diff_cleanupMerge(diffs); - } -}; - - -/** - * Reorder and merge like edit sections. Merge equalities. - * Any edit section can move as long as it doesn't cross an equality. - * @param {!Array.} diffs Array of diff tuples. - */ -diff_match_patch.prototype.diff_cleanupMerge = function(diffs) { - diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - var commonlength; - while (pointer < diffs.length) { - switch (diffs[pointer][0]) { - case DIFF_INSERT: - count_insert++; - text_insert += diffs[pointer][1]; - pointer++; - break; - case DIFF_DELETE: - count_delete++; - text_delete += diffs[pointer][1]; - pointer++; - break; - case DIFF_EQUAL: - // Upon reaching an equality, check for prior redundancies. - if (count_delete + count_insert > 1) { - if (count_delete !== 0 && count_insert !== 0) { - // Factor out any common prefixies. - commonlength = this.diff_commonPrefix(text_insert, text_delete); - if (commonlength !== 0) { - if ((pointer - count_delete - count_insert) > 0 && - diffs[pointer - count_delete - count_insert - 1][0] == - DIFF_EQUAL) { - diffs[pointer - count_delete - count_insert - 1][1] += - text_insert.substring(0, commonlength); - } else { - diffs.splice(0, 0, [DIFF_EQUAL, - text_insert.substring(0, commonlength)]); - pointer++; - } - text_insert = text_insert.substring(commonlength); - text_delete = text_delete.substring(commonlength); - } - // Factor out any common suffixies. - commonlength = this.diff_commonSuffix(text_insert, text_delete); - if (commonlength !== 0) { - diffs[pointer][1] = text_insert.substring(text_insert.length - - commonlength) + diffs[pointer][1]; - text_insert = text_insert.substring(0, text_insert.length - - commonlength); - text_delete = text_delete.substring(0, text_delete.length - - commonlength); - } - } - // Delete the offending records and add the merged ones. - if (count_delete === 0) { - diffs.splice(pointer - count_insert, - count_delete + count_insert, [DIFF_INSERT, text_insert]); - } else if (count_insert === 0) { - diffs.splice(pointer - count_delete, - count_delete + count_insert, [DIFF_DELETE, text_delete]); - } else { - diffs.splice(pointer - count_delete - count_insert, - count_delete + count_insert, [DIFF_DELETE, text_delete], - [DIFF_INSERT, text_insert]); - } - pointer = pointer - count_delete - count_insert + - (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; - } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) { - // Merge this equality with the previous one. - diffs[pointer - 1][1] += diffs[pointer][1]; - diffs.splice(pointer, 1); - } else { - pointer++; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - break; - } - } - if (diffs[diffs.length - 1][1] === '') { - diffs.pop(); // Remove the dummy entry at the end. - } - - // Second pass: look for single edits surrounded on both sides by equalities - // which can be shifted sideways to eliminate an equality. - // e.g: ABAC -> ABAC - var changes = false; - pointer = 1; - // Intentionally ignore the first and last element (don't need checking). - while (pointer < diffs.length - 1) { - if (diffs[pointer - 1][0] == DIFF_EQUAL && - diffs[pointer + 1][0] == DIFF_EQUAL) { - // This is a single edit surrounded by equalities. - if (diffs[pointer][1].substring(diffs[pointer][1].length - - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) { - // Shift the edit over the previous equality. - diffs[pointer][1] = diffs[pointer - 1][1] + - diffs[pointer][1].substring(0, diffs[pointer][1].length - - diffs[pointer - 1][1].length); - diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1]; - diffs.splice(pointer - 1, 1); - changes = true; - } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == - diffs[pointer + 1][1]) { - // Shift the edit over the next equality. - diffs[pointer - 1][1] += diffs[pointer + 1][1]; - diffs[pointer][1] = - diffs[pointer][1].substring(diffs[pointer + 1][1].length) + - diffs[pointer + 1][1]; - diffs.splice(pointer + 1, 1); - changes = true; - } - } - pointer++; - } - // If shifts were made, the diff needs reordering and another shift sweep. - if (changes) { - this.diff_cleanupMerge(diffs); - } -}; - - -/** - * loc is a location in text1, compute and return the equivalent location in - * text2. - * e.g. 'The cat' vs 'The big cat', 1->1, 5->8 - * @param {!Array.} diffs Array of diff tuples. - * @param {number} loc Location within text1. - * @return {number} Location within text2. - */ -diff_match_patch.prototype.diff_xIndex = function(diffs, loc) { - var chars1 = 0; - var chars2 = 0; - var last_chars1 = 0; - var last_chars2 = 0; - var x; - for (x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion. - chars1 += diffs[x][1].length; - } - if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion. - chars2 += diffs[x][1].length; - } - if (chars1 > loc) { // Overshot the location. - break; - } - last_chars1 = chars1; - last_chars2 = chars2; - } - // Was the location was deleted? - if (diffs.length != x && diffs[x][0] === DIFF_DELETE) { - return last_chars2; - } - // Add the remaining character length. - return last_chars2 + (loc - last_chars1); -}; - - -/** - * Convert a diff array into a pretty HTML report. - * @param {!Array.} diffs Array of diff tuples. - * @return {string} HTML representation. - */ -diff_match_patch.prototype.diff_prettyHtml = function(diffs) { - var html = []; - var pattern_amp = /&/g; - var pattern_lt = //g; - var pattern_para = /\n/g; - for (var x = 0; x < diffs.length; x++) { - var op = diffs[x][0]; // Operation (insert, delete, equal) - var data = diffs[x][1]; // Text of change. - var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<') - .replace(pattern_gt, '>').replace(pattern_para, '¶
      '); - switch (op) { - case DIFF_INSERT: - html[x] = '' + text + ''; - break; - case DIFF_DELETE: - html[x] = '' + text + ''; - break; - case DIFF_EQUAL: - html[x] = '' + text + ''; - break; - } - } - return html.join(''); -}; - - -/** - * Compute and return the source text (all equalities and deletions). - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Source text. - */ -diff_match_patch.prototype.diff_text1 = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_INSERT) { - text[x] = diffs[x][1]; - } - } - return text.join(''); -}; - - -/** - * Compute and return the destination text (all equalities and insertions). - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Destination text. - */ -diff_match_patch.prototype.diff_text2 = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { - if (diffs[x][0] !== DIFF_DELETE) { - text[x] = diffs[x][1]; - } - } - return text.join(''); -}; - - -/** - * Compute the Levenshtein distance; the number of inserted, deleted or - * substituted characters. - * @param {!Array.} diffs Array of diff tuples. - * @return {number} Number of changes. - */ -diff_match_patch.prototype.diff_levenshtein = function(diffs) { - var levenshtein = 0; - var insertions = 0; - var deletions = 0; - for (var x = 0; x < diffs.length; x++) { - var op = diffs[x][0]; - var data = diffs[x][1]; - switch (op) { - case DIFF_INSERT: - insertions += data.length; - break; - case DIFF_DELETE: - deletions += data.length; - break; - case DIFF_EQUAL: - // A deletion and an insertion is one substitution. - levenshtein += Math.max(insertions, deletions); - insertions = 0; - deletions = 0; - break; - } - } - levenshtein += Math.max(insertions, deletions); - return levenshtein; -}; - - -/** - * Crush the diff into an encoded string which describes the operations - * required to transform text1 into text2. - * E.g. =3\t-2\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'. - * Operations are tab-separated. Inserted text is escaped using %xx notation. - * @param {!Array.} diffs Array of diff tuples. - * @return {string} Delta text. - */ -diff_match_patch.prototype.diff_toDelta = function(diffs) { - var text = []; - for (var x = 0; x < diffs.length; x++) { - switch (diffs[x][0]) { - case DIFF_INSERT: - text[x] = '+' + encodeURI(diffs[x][1]); - break; - case DIFF_DELETE: - text[x] = '-' + diffs[x][1].length; - break; - case DIFF_EQUAL: - text[x] = '=' + diffs[x][1].length; - break; - } - } - return text.join('\t').replace(/%20/g, ' '); -}; - - -/** - * Given the original text1, and an encoded string which describes the - * operations required to transform text1 into text2, compute the full diff. - * @param {string} text1 Source string for the diff. - * @param {string} delta Delta text. - * @return {!Array.} Array of diff tuples. - * @throws {!Error} If invalid input. - */ -diff_match_patch.prototype.diff_fromDelta = function(text1, delta) { - var diffs = []; - var diffsLength = 0; // Keeping our own length var is faster in JS. - var pointer = 0; // Cursor in text1 - var tokens = delta.split(/\t/g); - for (var x = 0; x < tokens.length; x++) { - // Each token begins with a one character parameter which specifies the - // operation of this token (delete, insert, equality). - var param = tokens[x].substring(1); - switch (tokens[x].charAt(0)) { - case '+': - try { - diffs[diffsLength++] = [DIFF_INSERT, decodeURI(param)]; - } catch (ex) { - // Malformed URI sequence. - throw new Error('Illegal escape in diff_fromDelta: ' + param); - } - break; - case '-': - // Fall through. - case '=': - var n = parseInt(param, 10); - if (isNaN(n) || n < 0) { - throw new Error('Invalid number in diff_fromDelta: ' + param); - } - var text = text1.substring(pointer, pointer += n); - if (tokens[x].charAt(0) == '=') { - diffs[diffsLength++] = [DIFF_EQUAL, text]; - } else { - diffs[diffsLength++] = [DIFF_DELETE, text]; - } - break; - default: - // Blank tokens are ok (from a trailing \t). - // Anything else is an error. - if (tokens[x]) { - throw new Error('Invalid diff operation in diff_fromDelta: ' + - tokens[x]); - } - } - } - if (pointer != text1.length) { - throw new Error('Delta length (' + pointer + - ') does not equal source text length (' + text1.length + ').'); - } - return diffs; -}; - - -// MATCH FUNCTIONS - - -/** - * Locate the best instance of 'pattern' in 'text' near 'loc'. - * @param {string} text The text to search. - * @param {string} pattern The pattern to search for. - * @param {number} loc The location to search around. - * @return {number} Best match index or -1. - */ -diff_match_patch.prototype.match_main = function(text, pattern, loc) { - // Check for null inputs. - if (text == null || pattern == null || loc == null) { - throw new Error('Null input. (match_main)'); - } - - loc = Math.max(0, Math.min(loc, text.length)); - if (text == pattern) { - // Shortcut (potentially not guaranteed by the algorithm) - return 0; - } else if (!text.length) { - // Nothing to match. - return -1; - } else if (text.substring(loc, loc + pattern.length) == pattern) { - // Perfect match at the perfect spot! (Includes case of null pattern) - return loc; - } else { - // Do a fuzzy compare. - return this.match_bitap_(text, pattern, loc); - } -}; - - -/** - * Locate the best instance of 'pattern' in 'text' near 'loc' using the - * Bitap algorithm. - * @param {string} text The text to search. - * @param {string} pattern The pattern to search for. - * @param {number} loc The location to search around. - * @return {number} Best match index or -1. - * @private - */ -diff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) { - if (pattern.length > this.Match_MaxBits) { - throw new Error('Pattern too long for this browser.'); - } - - // Initialise the alphabet. - var s = this.match_alphabet_(pattern); - - var dmp = this; // 'this' becomes 'window' in a closure. - - /** - * Compute and return the score for a match with e errors and x location. - * Accesses loc and pattern through being a closure. - * @param {number} e Number of errors in match. - * @param {number} x Location of match. - * @return {number} Overall score for match (0.0 = good, 1.0 = bad). - * @private - */ - function match_bitapScore_(e, x) { - var accuracy = e / pattern.length; - var proximity = Math.abs(loc - x); - if (!dmp.Match_Distance) { - // Dodge divide by zero error. - return proximity ? 1.0 : accuracy; - } - return accuracy + (proximity / dmp.Match_Distance); - } - - // Highest score beyond which we give up. - var score_threshold = this.Match_Threshold; - // Is there a nearby exact match? (speedup) - var best_loc = text.indexOf(pattern, loc); - if (best_loc != -1) { - score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold); - // What about in the other direction? (speedup) - best_loc = text.lastIndexOf(pattern, loc + pattern.length); - if (best_loc != -1) { - score_threshold = - Math.min(match_bitapScore_(0, best_loc), score_threshold); - } - } - - // Initialise the bit arrays. - var matchmask = 1 << (pattern.length - 1); - best_loc = -1; - - var bin_min, bin_mid; - var bin_max = pattern.length + text.length; - var last_rd; - for (var d = 0; d < pattern.length; d++) { - // Scan for the best match; each iteration allows for one more error. - // Run a binary search to determine how far from 'loc' we can stray at this - // error level. - bin_min = 0; - bin_mid = bin_max; - while (bin_min < bin_mid) { - if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) { - bin_min = bin_mid; - } else { - bin_max = bin_mid; - } - bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min); - } - // Use the result from this iteration as the maximum for the next. - bin_max = bin_mid; - var start = Math.max(1, loc - bin_mid + 1); - var finish = Math.min(loc + bin_mid, text.length) + pattern.length; - - var rd = Array(finish + 2); - rd[finish + 1] = (1 << d) - 1; - for (var j = finish; j >= start; j--) { - // The alphabet (s) is a sparse hash, so the following line generates - // warnings. - var charMatch = s[text.charAt(j - 1)]; - if (d === 0) { // First pass: exact match. - rd[j] = ((rd[j + 1] << 1) | 1) & charMatch; - } else { // Subsequent passes: fuzzy match. - rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) | - (((last_rd[j + 1] | last_rd[j]) << 1) | 1) | - last_rd[j + 1]; - } - if (rd[j] & matchmask) { - var score = match_bitapScore_(d, j - 1); - // This match will almost certainly be better than any existing match. - // But check anyway. - if (score <= score_threshold) { - // Told you so. - score_threshold = score; - best_loc = j - 1; - if (best_loc > loc) { - // When passing loc, don't exceed our current distance from loc. - start = Math.max(1, 2 * loc - best_loc); - } else { - // Already passed loc, downhill from here on in. - break; - } - } - } - } - // No hope for a (better) match at greater error levels. - if (match_bitapScore_(d + 1, loc) > score_threshold) { - break; - } - last_rd = rd; - } - return best_loc; -}; - - -/** - * Initialise the alphabet for the Bitap algorithm. - * @param {string} pattern The text to encode. - * @return {!Object} Hash of character locations. - * @private - */ -diff_match_patch.prototype.match_alphabet_ = function(pattern) { - var s = {}; - for (var i = 0; i < pattern.length; i++) { - s[pattern.charAt(i)] = 0; - } - for (var i = 0; i < pattern.length; i++) { - s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1); - } - return s; -}; - - -// PATCH FUNCTIONS - - -/** - * Increase the context until it is unique, - * but don't let the pattern expand beyond Match_MaxBits. - * @param {!diff_match_patch.patch_obj} patch The patch to grow. - * @param {string} text Source text. - * @private - */ -diff_match_patch.prototype.patch_addContext_ = function(patch, text) { - if (text.length == 0) { - return; - } - var pattern = text.substring(patch.start2, patch.start2 + patch.length1); - var padding = 0; - - // Look for the first and last matches of pattern in text. If two different - // matches are found, increase the pattern length. - while (text.indexOf(pattern) != text.lastIndexOf(pattern) && - pattern.length < this.Match_MaxBits - this.Patch_Margin - - this.Patch_Margin) { - padding += this.Patch_Margin; - pattern = text.substring(patch.start2 - padding, - patch.start2 + patch.length1 + padding); - } - // Add one chunk for good luck. - padding += this.Patch_Margin; - - // Add the prefix. - var prefix = text.substring(patch.start2 - padding, patch.start2); - if (prefix) { - patch.diffs.unshift([DIFF_EQUAL, prefix]); - } - // Add the suffix. - var suffix = text.substring(patch.start2 + patch.length1, - patch.start2 + patch.length1 + padding); - if (suffix) { - patch.diffs.push([DIFF_EQUAL, suffix]); - } - - // Roll back the start points. - patch.start1 -= prefix.length; - patch.start2 -= prefix.length; - // Extend the lengths. - patch.length1 += prefix.length + suffix.length; - patch.length2 += prefix.length + suffix.length; -}; - - -/** - * Compute a list of patches to turn text1 into text2. - * Use diffs if provided, otherwise compute it ourselves. - * There are four ways to call this function, depending on what data is - * available to the caller: - * Method 1: - * a = text1, b = text2 - * Method 2: - * a = diffs - * Method 3 (optimal): - * a = text1, b = diffs - * Method 4 (deprecated, use method 3): - * a = text1, b = text2, c = diffs - * - * @param {string|!Array.} a text1 (methods 1,3,4) or - * Array of diff tuples for text1 to text2 (method 2). - * @param {string|!Array.} opt_b text2 (methods 1,4) or - * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2). - * @param {string|!Array.} opt_c Array of diff tuples - * for text1 to text2 (method 4) or undefined (methods 1,2,3). - * @return {!Array.} Array of Patch objects. - */ -diff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) { - var text1, diffs; - if (typeof a == 'string' && typeof opt_b == 'string' && - typeof opt_c == 'undefined') { - // Method 1: text1, text2 - // Compute diffs from text1 and text2. - text1 = /** @type {string} */(a); - diffs = this.diff_main(text1, /** @type {string} */(opt_b), true); - if (diffs.length > 2) { - this.diff_cleanupSemantic(diffs); - this.diff_cleanupEfficiency(diffs); - } - } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' && - typeof opt_c == 'undefined') { - // Method 2: diffs - // Compute text1 from diffs. - diffs = /** @type {!Array.} */(a); - text1 = this.diff_text1(diffs); - } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' && - typeof opt_c == 'undefined') { - // Method 3: text1, diffs - text1 = /** @type {string} */(a); - diffs = /** @type {!Array.} */(opt_b); - } else if (typeof a == 'string' && typeof opt_b == 'string' && - opt_c && typeof opt_c == 'object') { - // Method 4: text1, text2, diffs - // text2 is not used. - text1 = /** @type {string} */(a); - diffs = /** @type {!Array.} */(opt_c); - } else { - throw new Error('Unknown call format to patch_make.'); - } - - if (diffs.length === 0) { - return []; // Get rid of the null case. - } - var patches = []; - var patch = new diff_match_patch.patch_obj(); - var patchDiffLength = 0; // Keeping our own length var is faster in JS. - var char_count1 = 0; // Number of characters into the text1 string. - var char_count2 = 0; // Number of characters into the text2 string. - // Start with text1 (prepatch_text) and apply the diffs until we arrive at - // text2 (postpatch_text). We recreate the patches one by one to determine - // context info. - var prepatch_text = text1; - var postpatch_text = text1; - for (var x = 0; x < diffs.length; x++) { - var diff_type = diffs[x][0]; - var diff_text = diffs[x][1]; - - if (!patchDiffLength && diff_type !== DIFF_EQUAL) { - // A new patch starts here. - patch.start1 = char_count1; - patch.start2 = char_count2; - } - - switch (diff_type) { - case DIFF_INSERT: - patch.diffs[patchDiffLength++] = diffs[x]; - patch.length2 += diff_text.length; - postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + - postpatch_text.substring(char_count2); - break; - case DIFF_DELETE: - patch.length1 += diff_text.length; - patch.diffs[patchDiffLength++] = diffs[x]; - postpatch_text = postpatch_text.substring(0, char_count2) + - postpatch_text.substring(char_count2 + - diff_text.length); - break; - case DIFF_EQUAL: - if (diff_text.length <= 2 * this.Patch_Margin && - patchDiffLength && diffs.length != x + 1) { - // Small equality inside a patch. - patch.diffs[patchDiffLength++] = diffs[x]; - patch.length1 += diff_text.length; - patch.length2 += diff_text.length; - } else if (diff_text.length >= 2 * this.Patch_Margin) { - // Time for a new patch. - if (patchDiffLength) { - this.patch_addContext_(patch, prepatch_text); - patches.push(patch); - patch = new diff_match_patch.patch_obj(); - patchDiffLength = 0; - // Unlike Unidiff, our patch lists have a rolling context. - // http://code.google.com/p/google-diff-match-patch/wiki/Unidiff - // Update prepatch text & pos to reflect the application of the - // just completed patch. - prepatch_text = postpatch_text; - char_count1 = char_count2; - } - } - break; - } - - // Update the current character count. - if (diff_type !== DIFF_INSERT) { - char_count1 += diff_text.length; - } - if (diff_type !== DIFF_DELETE) { - char_count2 += diff_text.length; - } - } - // Pick up the leftover patch if not empty. - if (patchDiffLength) { - this.patch_addContext_(patch, prepatch_text); - patches.push(patch); - } - - return patches; -}; - - -/** - * Given an array of patches, return another array that is identical. - * @param {!Array.} patches Array of Patch objects. - * @return {!Array.} Array of Patch objects. - */ -diff_match_patch.prototype.patch_deepCopy = function(patches) { - // Making deep copies is hard in JavaScript. - var patchesCopy = []; - for (var x = 0; x < patches.length; x++) { - var patch = patches[x]; - var patchCopy = new diff_match_patch.patch_obj(); - patchCopy.diffs = []; - for (var y = 0; y < patch.diffs.length; y++) { - patchCopy.diffs[y] = patch.diffs[y].slice(); - } - patchCopy.start1 = patch.start1; - patchCopy.start2 = patch.start2; - patchCopy.length1 = patch.length1; - patchCopy.length2 = patch.length2; - patchesCopy[x] = patchCopy; - } - return patchesCopy; -}; - - -/** - * Merge a set of patches onto the text. Return a patched text, as well - * as a list of true/false values indicating which patches were applied. - * @param {!Array.} patches Array of Patch objects. - * @param {string} text Old text. - * @return {!Array.>} Two element Array, containing the - * new text and an array of boolean values. - */ -diff_match_patch.prototype.patch_apply = function(patches, text) { - if (patches.length == 0) { - return [text, []]; - } - - // Deep copy the patches so that no changes are made to originals. - patches = this.patch_deepCopy(patches); - - var nullPadding = this.patch_addPadding(patches); - text = nullPadding + text + nullPadding; - - this.patch_splitMax(patches); - // delta keeps track of the offset between the expected and actual location - // of the previous patch. If there are patches expected at positions 10 and - // 20, but the first patch was found at 12, delta is 2 and the second patch - // has an effective expected position of 22. - var delta = 0; - var results = []; - for (var x = 0; x < patches.length; x++) { - var expected_loc = patches[x].start2 + delta; - var text1 = this.diff_text1(patches[x].diffs); - var start_loc; - var end_loc = -1; - if (text1.length > this.Match_MaxBits) { - // patch_splitMax will only provide an oversized pattern in the case of - // a monster delete. - start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits), - expected_loc); - if (start_loc != -1) { - end_loc = this.match_main(text, - text1.substring(text1.length - this.Match_MaxBits), - expected_loc + text1.length - this.Match_MaxBits); - if (end_loc == -1 || start_loc >= end_loc) { - // Can't find valid trailing context. Drop this patch. - start_loc = -1; - } - } - } else { - start_loc = this.match_main(text, text1, expected_loc); - } - if (start_loc == -1) { - // No match found. :( - results[x] = false; - // Subtract the delta for this failed patch from subsequent patches. - delta -= patches[x].length2 - patches[x].length1; - } else { - // Found a match. :) - results[x] = true; - delta = start_loc - expected_loc; - var text2; - if (end_loc == -1) { - text2 = text.substring(start_loc, start_loc + text1.length); - } else { - text2 = text.substring(start_loc, end_loc + this.Match_MaxBits); - } - if (text1 == text2) { - // Perfect match, just shove the replacement text in. - text = text.substring(0, start_loc) + - this.diff_text2(patches[x].diffs) + - text.substring(start_loc + text1.length); - } else { - // Imperfect match. Run a diff to get a framework of equivalent - // indices. - var diffs = this.diff_main(text1, text2, false); - if (text1.length > this.Match_MaxBits && - this.diff_levenshtein(diffs) / text1.length > - this.Patch_DeleteThreshold) { - // The end points match, but the content is unacceptably bad. - results[x] = false; - } else { - this.diff_cleanupSemanticLossless(diffs); - var index1 = 0; - var index2; - for (var y = 0; y < patches[x].diffs.length; y++) { - var mod = patches[x].diffs[y]; - if (mod[0] !== DIFF_EQUAL) { - index2 = this.diff_xIndex(diffs, index1); - } - if (mod[0] === DIFF_INSERT) { // Insertion - text = text.substring(0, start_loc + index2) + mod[1] + - text.substring(start_loc + index2); - } else if (mod[0] === DIFF_DELETE) { // Deletion - text = text.substring(0, start_loc + index2) + - text.substring(start_loc + this.diff_xIndex(diffs, - index1 + mod[1].length)); - } - if (mod[0] !== DIFF_DELETE) { - index1 += mod[1].length; - } - } - } - } - } - } - // Strip the padding off. - text = text.substring(nullPadding.length, text.length - nullPadding.length); - return [text, results]; -}; - - -/** - * Add some padding on text start and end so that edges can match something. - * Intended to be called only from within patch_apply. - * @param {!Array.} patches Array of Patch objects. - * @return {string} The padding string added to each side. - */ -diff_match_patch.prototype.patch_addPadding = function(patches) { - var paddingLength = this.Patch_Margin; - var nullPadding = ''; - for (var x = 1; x <= paddingLength; x++) { - nullPadding += String.fromCharCode(x); - } - - // Bump all the patches forward. - for (var x = 0; x < patches.length; x++) { - patches[x].start1 += paddingLength; - patches[x].start2 += paddingLength; - } - - // Add some padding on start of first diff. - var patch = patches[0]; - var diffs = patch.diffs; - if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) { - // Add nullPadding equality. - diffs.unshift([DIFF_EQUAL, nullPadding]); - patch.start1 -= paddingLength; // Should be 0. - patch.start2 -= paddingLength; // Should be 0. - patch.length1 += paddingLength; - patch.length2 += paddingLength; - } else if (paddingLength > diffs[0][1].length) { - // Grow first equality. - var extraLength = paddingLength - diffs[0][1].length; - diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1]; - patch.start1 -= extraLength; - patch.start2 -= extraLength; - patch.length1 += extraLength; - patch.length2 += extraLength; - } - - // Add some padding on end of last diff. - patch = patches[patches.length - 1]; - diffs = patch.diffs; - if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) { - // Add nullPadding equality. - diffs.push([DIFF_EQUAL, nullPadding]); - patch.length1 += paddingLength; - patch.length2 += paddingLength; - } else if (paddingLength > diffs[diffs.length - 1][1].length) { - // Grow last equality. - var extraLength = paddingLength - diffs[diffs.length - 1][1].length; - diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength); - patch.length1 += extraLength; - patch.length2 += extraLength; - } - - return nullPadding; -}; - - -/** - * Look through the patches and break up any which are longer than the maximum - * limit of the match algorithm. - * Intended to be called only from within patch_apply. - * @param {!Array.} patches Array of Patch objects. - */ -diff_match_patch.prototype.patch_splitMax = function(patches) { - var patch_size = this.Match_MaxBits; - for (var x = 0; x < patches.length; x++) { - if (patches[x].length1 <= patch_size) { - continue; - } - var bigpatch = patches[x]; - // Remove the big old patch. - patches.splice(x--, 1); - var start1 = bigpatch.start1; - var start2 = bigpatch.start2; - var precontext = ''; - while (bigpatch.diffs.length !== 0) { - // Create one of several smaller patches. - var patch = new diff_match_patch.patch_obj(); - var empty = true; - patch.start1 = start1 - precontext.length; - patch.start2 = start2 - precontext.length; - if (precontext !== '') { - patch.length1 = patch.length2 = precontext.length; - patch.diffs.push([DIFF_EQUAL, precontext]); - } - while (bigpatch.diffs.length !== 0 && - patch.length1 < patch_size - this.Patch_Margin) { - var diff_type = bigpatch.diffs[0][0]; - var diff_text = bigpatch.diffs[0][1]; - if (diff_type === DIFF_INSERT) { - // Insertions are harmless. - patch.length2 += diff_text.length; - start2 += diff_text.length; - patch.diffs.push(bigpatch.diffs.shift()); - empty = false; - } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 && - patch.diffs[0][0] == DIFF_EQUAL && - diff_text.length > 2 * patch_size) { - // This is a large deletion. Let it pass in one chunk. - patch.length1 += diff_text.length; - start1 += diff_text.length; - empty = false; - patch.diffs.push([diff_type, diff_text]); - bigpatch.diffs.shift(); - } else { - // Deletion or equality. Only take as much as we can stomach. - diff_text = diff_text.substring(0, - patch_size - patch.length1 - this.Patch_Margin); - patch.length1 += diff_text.length; - start1 += diff_text.length; - if (diff_type === DIFF_EQUAL) { - patch.length2 += diff_text.length; - start2 += diff_text.length; - } else { - empty = false; - } - patch.diffs.push([diff_type, diff_text]); - if (diff_text == bigpatch.diffs[0][1]) { - bigpatch.diffs.shift(); - } else { - bigpatch.diffs[0][1] = - bigpatch.diffs[0][1].substring(diff_text.length); - } - } - } - // Compute the head context for the next patch. - precontext = this.diff_text2(patch.diffs); - precontext = - precontext.substring(precontext.length - this.Patch_Margin); - // Append the end context for this patch. - var postcontext = this.diff_text1(bigpatch.diffs) - .substring(0, this.Patch_Margin); - if (postcontext !== '') { - patch.length1 += postcontext.length; - patch.length2 += postcontext.length; - if (patch.diffs.length !== 0 && - patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) { - patch.diffs[patch.diffs.length - 1][1] += postcontext; - } else { - patch.diffs.push([DIFF_EQUAL, postcontext]); - } - } - if (!empty) { - patches.splice(++x, 0, patch); - } - } - } -}; - - -/** - * Take a list of patches and return a textual representation. - * @param {!Array.} patches Array of Patch objects. - * @return {string} Text representation of patches. - */ -diff_match_patch.prototype.patch_toText = function(patches) { - var text = []; - for (var x = 0; x < patches.length; x++) { - text[x] = patches[x]; - } - return text.join(''); -}; - - -/** - * Parse a textual representation of patches and return a list of Patch objects. - * @param {string} textline Text representation of patches. - * @return {!Array.} Array of Patch objects. - * @throws {!Error} If invalid input. - */ -diff_match_patch.prototype.patch_fromText = function(textline) { - var patches = []; - if (!textline) { - return patches; - } - var text = textline.split('\n'); - var textPointer = 0; - var patchHeader = /^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/; - while (textPointer < text.length) { - var m = text[textPointer].match(patchHeader); - if (!m) { - throw new Error('Invalid patch string: ' + text[textPointer]); - } - var patch = new diff_match_patch.patch_obj(); - patches.push(patch); - patch.start1 = parseInt(m[1], 10); - if (m[2] === '') { - patch.start1--; - patch.length1 = 1; - } else if (m[2] == '0') { - patch.length1 = 0; - } else { - patch.start1--; - patch.length1 = parseInt(m[2], 10); - } - - patch.start2 = parseInt(m[3], 10); - if (m[4] === '') { - patch.start2--; - patch.length2 = 1; - } else if (m[4] == '0') { - patch.length2 = 0; - } else { - patch.start2--; - patch.length2 = parseInt(m[4], 10); - } - textPointer++; - - while (textPointer < text.length) { - var sign = text[textPointer].charAt(0); - try { - var line = decodeURI(text[textPointer].substring(1)); - } catch (ex) { - // Malformed URI sequence. - throw new Error('Illegal escape in patch_fromText: ' + line); - } - if (sign == '-') { - // Deletion. - patch.diffs.push([DIFF_DELETE, line]); - } else if (sign == '+') { - // Insertion. - patch.diffs.push([DIFF_INSERT, line]); - } else if (sign == ' ') { - // Minor equality. - patch.diffs.push([DIFF_EQUAL, line]); - } else if (sign == '@') { - // Start of next patch. - break; - } else if (sign === '') { - // Blank line? Whatever. - } else { - // WTF? - throw new Error('Invalid patch mode "' + sign + '" in: ' + line); - } - textPointer++; - } - } - return patches; -}; - - -/** - * Class representing one patch operation. - * @constructor - */ -diff_match_patch.patch_obj = function() { - /** @type {!Array.} */ - this.diffs = []; - /** @type {?number} */ - this.start1 = null; - /** @type {?number} */ - this.start2 = null; - /** @type {number} */ - this.length1 = 0; - /** @type {number} */ - this.length2 = 0; -}; - - -/** - * Emmulate GNU diff's format. - * Header: @@ -382,8 +481,9 @@ - * Indicies are printed as 1-based, not 0-based. - * @return {string} The GNU diff string. - */ -diff_match_patch.patch_obj.prototype.toString = function() { - var coords1, coords2; - if (this.length1 === 0) { - coords1 = this.start1 + ',0'; - } else if (this.length1 == 1) { - coords1 = this.start1 + 1; - } else { - coords1 = (this.start1 + 1) + ',' + this.length1; - } - if (this.length2 === 0) { - coords2 = this.start2 + ',0'; - } else if (this.length2 == 1) { - coords2 = this.start2 + 1; - } else { - coords2 = (this.start2 + 1) + ',' + this.length2; - } - var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\n']; - var op; - // Escape the body of the patch with %xx notation. - for (var x = 0; x < this.diffs.length; x++) { - switch (this.diffs[x][0]) { - case DIFF_INSERT: - op = '+'; - break; - case DIFF_DELETE: - op = '-'; - break; - case DIFF_EQUAL: - op = ' '; - break; - } - text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\n'; - } - return text.join('').replace(/%20/g, ' '); -}; - - -// The following export code was added by @ForbesLindesay -module.exports = diff_match_patch; -module.exports['diff_match_patch'] = diff_match_patch; -module.exports['DIFF_DELETE'] = DIFF_DELETE; -module.exports['DIFF_INSERT'] = DIFF_INSERT; -module.exports['DIFF_EQUAL'] = DIFF_EQUAL; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/package.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/package.json deleted file mode 100644 index 196b3939..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_args": [ - [ - "diff-match-patch@^1.0.0", - "/Volumes/Source/vim" - ] - ], - "_from": "diff-match-patch@>=1.0.0 <2.0.0", - "_id": "diff-match-patch@1.0.0", - "_inCache": true, - "_installable": true, - "_location": "/diff-match-patch", - "_npmUser": { - "email": "forbes@lindeay.co.uk", - "name": "forbeslindesay" - }, - "_npmVersion": "1.3.8", - "_phantomChildren": {}, - "_requested": { - "name": "diff-match-patch", - "raw": "diff-match-patch@^1.0.0", - "rawSpec": "^1.0.0", - "scope": null, - "spec": ">=1.0.0 <2.0.0", - "type": "range" - }, - "_requiredBy": [ - "/" - ], - "_resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz", - "_shasum": "1cc3c83a490d67f95d91e39f6ad1f2e086b63048", - "_shrinkwrap": null, - "_spec": "diff-match-patch@^1.0.0", - "_where": "/Volumes/Source/vim", - "bugs": { - "url": "https://github.com/ForbesLindesay/diff-match-patch/issues" - }, - "dependencies": {}, - "description": "npm package for https://code.google.com/p/google-diff-match-patch/", - "devDependencies": { - "testit": "~1.1.0" - }, - "directories": {}, - "dist": { - "shasum": "1cc3c83a490d67f95d91e39f6ad1f2e086b63048", - "tarball": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.0.tgz" - }, - "homepage": "https://github.com/ForbesLindesay/diff-match-patch#readme", - "keywords": [], - "license": "http://www.apache.org/licenses/LICENSE-2.0", - "maintainers": [ - { - "email": "forbes@lindeay.co.uk", - "name": "forbeslindesay" - } - ], - "name": "diff-match-patch", - "optionalDependencies": {}, - "readme": "# diff-match-patch\n\nnpm package for https://code.google.com/p/google-diff-match-patch/\n\n[![Build Status](https://travis-ci.org/ForbesLindesay/diff-match-patch.png?branch=master)](https://travis-ci.org/ForbesLindesay/diff-match-patch)\n[![Dependency Status](https://gemnasium.com/ForbesLindesay/diff-match-patch.png)](https://gemnasium.com/ForbesLindesay/diff-match-patch)\n[![NPM version](https://badge.fury.io/js/diff-match-patch.png)](http://badge.fury.io/js/diff-match-patch)\n\n## Installation\n\n npm install diff-match-patch\n\n## API\n\nhttps://code.google.com/p/google-diff-match-patch/wiki/API\n\n```javascript\nvar DiffMatchPatch = require('diff-match-patch');\nvar dmp = new DiffMatchPatch();\n//use the methods that dmp has\n//see: https://code.google.com/p/google-diff-match-patch/wiki/API\n\n//You can also use the following properties:\n\nDiffMatchPatch.DIFF_DELETE = -1;\nDiffMatchPatch.DIFF_INSERT = 1;\nDiffMatchPatch.DIFF_EQUAL = 0;\n```\n\n## License\n\n http://www.apache.org/licenses/LICENSE-2.0", - "readmeFilename": "README.md", - "repository": { - "type": "git", - "url": "git+https://github.com/ForbesLindesay/diff-match-patch.git" - }, - "scripts": { - "test": "node test" - }, - "version": "1.0.0" -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/test/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/test/index.js deleted file mode 100644 index 52dba19c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/diff-match-patch/test/index.js +++ /dev/null @@ -1,1022 +0,0 @@ -'use strict' - -var assert = require('assert'); -var test = require('testit'); -var diff_match_patch = require('../'); -var DIFF_DELETE = diff_match_patch.DIFF_DELETE; -var DIFF_INSERT = diff_match_patch.DIFF_INSERT; -var DIFF_EQUAL = diff_match_patch.DIFF_EQUAL; - - - -/** - * Test Harness for Diff Match and Patch - * - * Copyright 2006 Google Inc. - * http://code.google.com/p/google-diff-match-patch/ - * - * 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. - */ - - -// If expected and actual are the equivalent, pass the test. -function assertEquivalent(msg, expected, actual) { - if (typeof actual == 'undefined') { - // msg is optional. - actual = expected; - expected = msg; - msg = 'Expected: \'' + expected + '\' Actual: \'' + actual + '\''; - } - if (_equivalent(expected, actual)) { - assertEquals(msg, String.toString(expected), String.toString(actual)); - } else { - assertEquals(msg, expected, actual); - } -} - - -// Are a and b the equivalent? -- Recursive. -function _equivalent(a, b) { - if (a == b) { - return true; - } - if (typeof a == 'object' && typeof b == 'object' && a !== null && b !== null) { - if (a.toString() != b.toString()) { - return false; - } - for (var p in a) { - if (!_equivalent(a[p], b[p])) { - return false; - } - } - for (var p in b) { - if (!_equivalent(a[p], b[p])) { - return false; - } - } - return true; - } - return false; -} - - -function diff_rebuildtexts(diffs) { - // Construct the two texts which made up the diff originally. - var text1 = ''; - var text2 = ''; - for (var x = 0; x < diffs.length; x++) { - if (diffs[x][0] != DIFF_INSERT) { - text1 += diffs[x][1]; - } - if (diffs[x][0] != DIFF_DELETE) { - text2 += diffs[x][1]; - } - } - return [text1, text2]; -} - -var dmp = new diff_match_patch(); - - -// DIFF TEST FUNCTIONS - - -function testDiffCommonPrefix() { - // Detect any common prefix. - // Null case. - assertEquals(0, dmp.diff_commonPrefix('abc', 'xyz')); - - // Non-null case. - assertEquals(4, dmp.diff_commonPrefix('1234abcdef', '1234xyz')); - - // Whole case. - assertEquals(4, dmp.diff_commonPrefix('1234', '1234xyz')); -} - -function testDiffCommonSuffix() { - // Detect any common suffix. - // Null case. - assertEquals(0, dmp.diff_commonSuffix('abc', 'xyz')); - - // Non-null case. - assertEquals(4, dmp.diff_commonSuffix('abcdef1234', 'xyz1234')); - - // Whole case. - assertEquals(4, dmp.diff_commonSuffix('1234', 'xyz1234')); -} - -function testDiffCommonOverlap() { - // Detect any suffix/prefix overlap. - // Null case. - assertEquals(0, dmp.diff_commonOverlap_('', 'abcd')); - - // Whole case. - assertEquals(3, dmp.diff_commonOverlap_('abc', 'abcd')); - - // No overlap. - assertEquals(0, dmp.diff_commonOverlap_('123456', 'abcd')); - - // Overlap. - assertEquals(3, dmp.diff_commonOverlap_('123456xxx', 'xxxabcd')); - - // Unicode. - // Some overly clever languages (C#) may treat ligatures as equal to their - // component letters. E.g. U+FB01 == 'fi' - assertEquals(0, dmp.diff_commonOverlap_('fi', '\ufb01i')); -} - -function testDiffHalfMatch() { - // Detect a halfmatch. - dmp.Diff_Timeout = 1; - // No match. - assertEquals(null, dmp.diff_halfMatch_('1234567890', 'abcdef')); - - assertEquals(null, dmp.diff_halfMatch_('12345', '23')); - - // Single Match. - assertEquivalent(['12', '90', 'a', 'z', '345678'], dmp.diff_halfMatch_('1234567890', 'a345678z')); - - assertEquivalent(['a', 'z', '12', '90', '345678'], dmp.diff_halfMatch_('a345678z', '1234567890')); - - assertEquivalent(['abc', 'z', '1234', '0', '56789'], dmp.diff_halfMatch_('abc56789z', '1234567890')); - - assertEquivalent(['a', 'xyz', '1', '7890', '23456'], dmp.diff_halfMatch_('a23456xyz', '1234567890')); - - // Multiple Matches. - assertEquivalent(['12123', '123121', 'a', 'z', '1234123451234'], dmp.diff_halfMatch_('121231234123451234123121', 'a1234123451234z')); - - assertEquivalent(['', '-=-=-=-=-=', 'x', '', 'x-=-=-=-=-=-=-='], dmp.diff_halfMatch_('x-=-=-=-=-=-=-=-=-=-=-=-=', 'xx-=-=-=-=-=-=-=')); - - assertEquivalent(['-=-=-=-=-=', '', '', 'y', '-=-=-=-=-=-=-=y'], dmp.diff_halfMatch_('-=-=-=-=-=-=-=-=-=-=-=-=y', '-=-=-=-=-=-=-=yy')); - - // Non-optimal halfmatch. - // Optimal diff would be -q+x=H-i+e=lloHe+Hu=llo-Hew+y not -qHillo+x=HelloHe-w+Hulloy - assertEquivalent(['qHillo', 'w', 'x', 'Hulloy', 'HelloHe'], dmp.diff_halfMatch_('qHilloHelloHew', 'xHelloHeHulloy')); - - // Optimal no halfmatch. - dmp.Diff_Timeout = 0; - assertEquals(null, dmp.diff_halfMatch_('qHilloHelloHew', 'xHelloHeHulloy')); -} - -function testDiffLinesToChars() { - function assertLinesToCharsResultEquals(a, b) { - assertEquals(a.chars1, b.chars1); - assertEquals(a.chars2, b.chars2); - assertEquivalent(a.lineArray, b.lineArray); - } - - // Convert lines down to characters. - assertLinesToCharsResultEquals({chars1: '\x01\x02\x01', chars2: '\x02\x01\x02', lineArray: ['', 'alpha\n', 'beta\n']}, dmp.diff_linesToChars_('alpha\nbeta\nalpha\n', 'beta\nalpha\nbeta\n')); - - assertLinesToCharsResultEquals({chars1: '', chars2: '\x01\x02\x03\x03', lineArray: ['', 'alpha\r\n', 'beta\r\n', '\r\n']}, dmp.diff_linesToChars_('', 'alpha\r\nbeta\r\n\r\n\r\n')); - - assertLinesToCharsResultEquals({chars1: '\x01', chars2: '\x02', lineArray: ['', 'a', 'b']}, dmp.diff_linesToChars_('a', 'b')); - - // More than 256 to reveal any 8-bit limitations. - var n = 300; - var lineList = []; - var charList = []; - for (var x = 1; x < n + 1; x++) { - lineList[x - 1] = x + '\n'; - charList[x - 1] = String.fromCharCode(x); - } - assertEquals(n, lineList.length); - var lines = lineList.join(''); - var chars = charList.join(''); - assertEquals(n, chars.length); - lineList.unshift(''); - assertLinesToCharsResultEquals({chars1: chars, chars2: '', lineArray: lineList}, dmp.diff_linesToChars_(lines, '')); -} - -function testDiffCharsToLines() { - // Convert chars up to lines. - var diffs = [[DIFF_EQUAL, '\x01\x02\x01'], [DIFF_INSERT, '\x02\x01\x02']]; - dmp.diff_charsToLines_(diffs, ['', 'alpha\n', 'beta\n']); - assertEquivalent([[DIFF_EQUAL, 'alpha\nbeta\nalpha\n'], [DIFF_INSERT, 'beta\nalpha\nbeta\n']], diffs); - - // More than 256 to reveal any 8-bit limitations. - var n = 300; - var lineList = []; - var charList = []; - for (var x = 1; x < n + 1; x++) { - lineList[x - 1] = x + '\n'; - charList[x - 1] = String.fromCharCode(x); - } - assertEquals(n, lineList.length); - var lines = lineList.join(''); - var chars = charList.join(''); - assertEquals(n, chars.length); - lineList.unshift(''); - var diffs = [[DIFF_DELETE, chars]]; - dmp.diff_charsToLines_(diffs, lineList); - assertEquivalent([[DIFF_DELETE, lines]], diffs); -} - -function testDiffCleanupMerge() { - // Cleanup a messy diff. - // Null case. - var diffs = []; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([], diffs); - - // No change case. - diffs = [[DIFF_EQUAL, 'a'], [DIFF_DELETE, 'b'], [DIFF_INSERT, 'c']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'a'], [DIFF_DELETE, 'b'], [DIFF_INSERT, 'c']], diffs); - - // Merge equalities. - diffs = [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'b'], [DIFF_EQUAL, 'c']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'abc']], diffs); - - // Merge deletions. - diffs = [[DIFF_DELETE, 'a'], [DIFF_DELETE, 'b'], [DIFF_DELETE, 'c']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_DELETE, 'abc']], diffs); - - // Merge insertions. - diffs = [[DIFF_INSERT, 'a'], [DIFF_INSERT, 'b'], [DIFF_INSERT, 'c']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_INSERT, 'abc']], diffs); - - // Merge interweave. - diffs = [[DIFF_DELETE, 'a'], [DIFF_INSERT, 'b'], [DIFF_DELETE, 'c'], [DIFF_INSERT, 'd'], [DIFF_EQUAL, 'e'], [DIFF_EQUAL, 'f']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_DELETE, 'ac'], [DIFF_INSERT, 'bd'], [DIFF_EQUAL, 'ef']], diffs); - - // Prefix and suffix detection. - diffs = [[DIFF_DELETE, 'a'], [DIFF_INSERT, 'abc'], [DIFF_DELETE, 'dc']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'a'], [DIFF_DELETE, 'd'], [DIFF_INSERT, 'b'], [DIFF_EQUAL, 'c']], diffs); - - // Prefix and suffix detection with equalities. - diffs = [[DIFF_EQUAL, 'x'], [DIFF_DELETE, 'a'], [DIFF_INSERT, 'abc'], [DIFF_DELETE, 'dc'], [DIFF_EQUAL, 'y']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'xa'], [DIFF_DELETE, 'd'], [DIFF_INSERT, 'b'], [DIFF_EQUAL, 'cy']], diffs); - - // Slide edit left. - diffs = [[DIFF_EQUAL, 'a'], [DIFF_INSERT, 'ba'], [DIFF_EQUAL, 'c']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_INSERT, 'ab'], [DIFF_EQUAL, 'ac']], diffs); - - // Slide edit right. - diffs = [[DIFF_EQUAL, 'c'], [DIFF_INSERT, 'ab'], [DIFF_EQUAL, 'a']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'ca'], [DIFF_INSERT, 'ba']], diffs); - - // Slide edit left recursive. - diffs = [[DIFF_EQUAL, 'a'], [DIFF_DELETE, 'b'], [DIFF_EQUAL, 'c'], [DIFF_DELETE, 'ac'], [DIFF_EQUAL, 'x']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_DELETE, 'abc'], [DIFF_EQUAL, 'acx']], diffs); - - // Slide edit right recursive. - diffs = [[DIFF_EQUAL, 'x'], [DIFF_DELETE, 'ca'], [DIFF_EQUAL, 'c'], [DIFF_DELETE, 'b'], [DIFF_EQUAL, 'a']]; - dmp.diff_cleanupMerge(diffs); - assertEquivalent([[DIFF_EQUAL, 'xca'], [DIFF_DELETE, 'cba']], diffs); -} - -function testDiffCleanupSemanticLossless() { - // Slide diffs to match logical boundaries. - // Null case. - var diffs = []; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([], diffs); - - // Blank lines. - diffs = [[DIFF_EQUAL, 'AAA\r\n\r\nBBB'], [DIFF_INSERT, '\r\nDDD\r\n\r\nBBB'], [DIFF_EQUAL, '\r\nEEE']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'AAA\r\n\r\n'], [DIFF_INSERT, 'BBB\r\nDDD\r\n\r\n'], [DIFF_EQUAL, 'BBB\r\nEEE']], diffs); - - // Line boundaries. - diffs = [[DIFF_EQUAL, 'AAA\r\nBBB'], [DIFF_INSERT, ' DDD\r\nBBB'], [DIFF_EQUAL, ' EEE']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'AAA\r\n'], [DIFF_INSERT, 'BBB DDD\r\n'], [DIFF_EQUAL, 'BBB EEE']], diffs); - - // Word boundaries. - diffs = [[DIFF_EQUAL, 'The c'], [DIFF_INSERT, 'ow and the c'], [DIFF_EQUAL, 'at.']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'The '], [DIFF_INSERT, 'cow and the '], [DIFF_EQUAL, 'cat.']], diffs); - - // Alphanumeric boundaries. - diffs = [[DIFF_EQUAL, 'The-c'], [DIFF_INSERT, 'ow-and-the-c'], [DIFF_EQUAL, 'at.']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'The-'], [DIFF_INSERT, 'cow-and-the-'], [DIFF_EQUAL, 'cat.']], diffs); - - // Hitting the start. - diffs = [[DIFF_EQUAL, 'a'], [DIFF_DELETE, 'a'], [DIFF_EQUAL, 'ax']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_DELETE, 'a'], [DIFF_EQUAL, 'aax']], diffs); - - // Hitting the end. - diffs = [[DIFF_EQUAL, 'xa'], [DIFF_DELETE, 'a'], [DIFF_EQUAL, 'a']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'xaa'], [DIFF_DELETE, 'a']], diffs); - - // Sentence boundaries. - diffs = [[DIFF_EQUAL, 'The xxx. The '], [DIFF_INSERT, 'zzz. The '], [DIFF_EQUAL, 'yyy.']]; - dmp.diff_cleanupSemanticLossless(diffs); - assertEquivalent([[DIFF_EQUAL, 'The xxx.'], [DIFF_INSERT, ' The zzz.'], [DIFF_EQUAL, ' The yyy.']], diffs); -} - -function testDiffCleanupSemantic() { - // Cleanup semantically trivial equalities. - // Null case. - var diffs = []; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([], diffs); - - // No elimination #1. - diffs = [[DIFF_DELETE, 'ab'], [DIFF_INSERT, 'cd'], [DIFF_EQUAL, '12'], [DIFF_DELETE, 'e']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'ab'], [DIFF_INSERT, 'cd'], [DIFF_EQUAL, '12'], [DIFF_DELETE, 'e']], diffs); - - // No elimination #2. - diffs = [[DIFF_DELETE, 'abc'], [DIFF_INSERT, 'ABC'], [DIFF_EQUAL, '1234'], [DIFF_DELETE, 'wxyz']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abc'], [DIFF_INSERT, 'ABC'], [DIFF_EQUAL, '1234'], [DIFF_DELETE, 'wxyz']], diffs); - - // Simple elimination. - diffs = [[DIFF_DELETE, 'a'], [DIFF_EQUAL, 'b'], [DIFF_DELETE, 'c']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abc'], [DIFF_INSERT, 'b']], diffs); - - // Backpass elimination. - diffs = [[DIFF_DELETE, 'ab'], [DIFF_EQUAL, 'cd'], [DIFF_DELETE, 'e'], [DIFF_EQUAL, 'f'], [DIFF_INSERT, 'g']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abcdef'], [DIFF_INSERT, 'cdfg']], diffs); - - // Multiple eliminations. - diffs = [[DIFF_INSERT, '1'], [DIFF_EQUAL, 'A'], [DIFF_DELETE, 'B'], [DIFF_INSERT, '2'], [DIFF_EQUAL, '_'], [DIFF_INSERT, '1'], [DIFF_EQUAL, 'A'], [DIFF_DELETE, 'B'], [DIFF_INSERT, '2']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'AB_AB'], [DIFF_INSERT, '1A2_1A2']], diffs); - - // Word boundaries. - diffs = [[DIFF_EQUAL, 'The c'], [DIFF_DELETE, 'ow and the c'], [DIFF_EQUAL, 'at.']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_EQUAL, 'The '], [DIFF_DELETE, 'cow and the '], [DIFF_EQUAL, 'cat.']], diffs); - - // No overlap elimination. - diffs = [[DIFF_DELETE, 'abcxx'], [DIFF_INSERT, 'xxdef']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abcxx'], [DIFF_INSERT, 'xxdef']], diffs); - - // Overlap elimination. - diffs = [[DIFF_DELETE, 'abcxxx'], [DIFF_INSERT, 'xxxdef']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abc'], [DIFF_EQUAL, 'xxx'], [DIFF_INSERT, 'def']], diffs); - - // Reverse overlap elimination. - diffs = [[DIFF_DELETE, 'xxxabc'], [DIFF_INSERT, 'defxxx']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_INSERT, 'def'], [DIFF_EQUAL, 'xxx'], [DIFF_DELETE, 'abc']], diffs); - - // Two overlap eliminations. - diffs = [[DIFF_DELETE, 'abcd1212'], [DIFF_INSERT, '1212efghi'], [DIFF_EQUAL, '----'], [DIFF_DELETE, 'A3'], [DIFF_INSERT, '3BC']]; - dmp.diff_cleanupSemantic(diffs); - assertEquivalent([[DIFF_DELETE, 'abcd'], [DIFF_EQUAL, '1212'], [DIFF_INSERT, 'efghi'], [DIFF_EQUAL, '----'], [DIFF_DELETE, 'A'], [DIFF_EQUAL, '3'], [DIFF_INSERT, 'BC']], diffs); -} - -function testDiffCleanupEfficiency() { - // Cleanup operationally trivial equalities. - dmp.Diff_EditCost = 4; - // Null case. - var diffs = []; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([], diffs); - - // No elimination. - diffs = [[DIFF_DELETE, 'ab'], [DIFF_INSERT, '12'], [DIFF_EQUAL, 'wxyz'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '34']]; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([[DIFF_DELETE, 'ab'], [DIFF_INSERT, '12'], [DIFF_EQUAL, 'wxyz'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '34']], diffs); - - // Four-edit elimination. - diffs = [[DIFF_DELETE, 'ab'], [DIFF_INSERT, '12'], [DIFF_EQUAL, 'xyz'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '34']]; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([[DIFF_DELETE, 'abxyzcd'], [DIFF_INSERT, '12xyz34']], diffs); - - // Three-edit elimination. - diffs = [[DIFF_INSERT, '12'], [DIFF_EQUAL, 'x'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '34']]; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([[DIFF_DELETE, 'xcd'], [DIFF_INSERT, '12x34']], diffs); - - // Backpass elimination. - diffs = [[DIFF_DELETE, 'ab'], [DIFF_INSERT, '12'], [DIFF_EQUAL, 'xy'], [DIFF_INSERT, '34'], [DIFF_EQUAL, 'z'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '56']]; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([[DIFF_DELETE, 'abxyzcd'], [DIFF_INSERT, '12xy34z56']], diffs); - - // High cost elimination. - dmp.Diff_EditCost = 5; - diffs = [[DIFF_DELETE, 'ab'], [DIFF_INSERT, '12'], [DIFF_EQUAL, 'wxyz'], [DIFF_DELETE, 'cd'], [DIFF_INSERT, '34']]; - dmp.diff_cleanupEfficiency(diffs); - assertEquivalent([[DIFF_DELETE, 'abwxyzcd'], [DIFF_INSERT, '12wxyz34']], diffs); - dmp.Diff_EditCost = 4; -} - -function testDiffPrettyHtml() { - // Pretty print. - var diffs = [[DIFF_EQUAL, 'a\n'], [DIFF_DELETE, 'b'], [DIFF_INSERT, 'c&d']]; - assertEquals('
      <B>b</B>c&d', dmp.diff_prettyHtml(diffs)); -} - -function testDiffText() { - // Compute the source and destination texts. - var diffs = [[DIFF_EQUAL, 'jump'], [DIFF_DELETE, 's'], [DIFF_INSERT, 'ed'], [DIFF_EQUAL, ' over '], [DIFF_DELETE, 'the'], [DIFF_INSERT, 'a'], [DIFF_EQUAL, ' lazy']]; - assertEquals('jumps over the lazy', dmp.diff_text1(diffs)); - - assertEquals('jumped over a lazy', dmp.diff_text2(diffs)); -} - -function testDiffDelta() { - // Convert a diff into delta string. - var diffs = [[DIFF_EQUAL, 'jump'], [DIFF_DELETE, 's'], [DIFF_INSERT, 'ed'], [DIFF_EQUAL, ' over '], [DIFF_DELETE, 'the'], [DIFF_INSERT, 'a'], [DIFF_EQUAL, ' lazy'], [DIFF_INSERT, 'old dog']]; - var text1 = dmp.diff_text1(diffs); - assertEquals('jumps over the lazy', text1); - - var delta = dmp.diff_toDelta(diffs); - assertEquals('=4\t-1\t+ed\t=6\t-3\t+a\t=5\t+old dog', delta); - - // Convert delta string into a diff. - assertEquivalent(diffs, dmp.diff_fromDelta(text1, delta)); - - // Generates error (19 != 20). - try { - dmp.diff_fromDelta(text1 + 'x', delta); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } - - // Generates error (19 != 18). - try { - dmp.diff_fromDelta(text1.substring(1), delta); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } - - // Generates error (%c3%xy invalid Unicode). - try { - dmp.diff_fromDelta('', '+%c3%xy'); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } - - // Test deltas with special characters. - diffs = [[DIFF_EQUAL, '\u0680 \x00 \t %'], [DIFF_DELETE, '\u0681 \x01 \n ^'], [DIFF_INSERT, '\u0682 \x02 \\ |']]; - text1 = dmp.diff_text1(diffs); - assertEquals('\u0680 \x00 \t %\u0681 \x01 \n ^', text1); - - delta = dmp.diff_toDelta(diffs); - assertEquals('=7\t-7\t+%DA%82 %02 %5C %7C', delta); - - // Convert delta string into a diff. - assertEquivalent(diffs, dmp.diff_fromDelta(text1, delta)); - - // Verify pool of unchanged characters. - diffs = [[DIFF_INSERT, 'A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ']]; - var text2 = dmp.diff_text2(diffs); - assertEquals('A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ', text2); - - delta = dmp.diff_toDelta(diffs); - assertEquals('+A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ', delta); - - // Convert delta string into a diff. - assertEquivalent(diffs, dmp.diff_fromDelta('', delta)); -} - -function testDiffXIndex() { - // Translate a location in text1 to text2. - // Translation on equality. - assertEquals(5, dmp.diff_xIndex([[DIFF_DELETE, 'a'], [DIFF_INSERT, '1234'], [DIFF_EQUAL, 'xyz']], 2)); - - // Translation on deletion. - assertEquals(1, dmp.diff_xIndex([[DIFF_EQUAL, 'a'], [DIFF_DELETE, '1234'], [DIFF_EQUAL, 'xyz']], 3)); -} - -function testDiffLevenshtein() { - // Levenshtein with trailing equality. - assertEquals(4, dmp.diff_levenshtein([[DIFF_DELETE, 'abc'], [DIFF_INSERT, '1234'], [DIFF_EQUAL, 'xyz']])); - // Levenshtein with leading equality. - assertEquals(4, dmp.diff_levenshtein([[DIFF_EQUAL, 'xyz'], [DIFF_DELETE, 'abc'], [DIFF_INSERT, '1234']])); - // Levenshtein with middle equality. - assertEquals(7, dmp.diff_levenshtein([[DIFF_DELETE, 'abc'], [DIFF_EQUAL, 'xyz'], [DIFF_INSERT, '1234']])); -} - -function testDiffBisect() { - // Normal. - var a = 'cat'; - var b = 'map'; - // Since the resulting diff hasn't been normalized, it would be ok if - // the insertion and deletion pairs are swapped. - // If the order changes, tweak this test as required. - assertEquivalent([[DIFF_DELETE, 'c'], [DIFF_INSERT, 'm'], [DIFF_EQUAL, 'a'], [DIFF_DELETE, 't'], [DIFF_INSERT, 'p']], dmp.diff_bisect_(a, b, Number.MAX_VALUE)); - - // Timeout. - assertEquivalent([[DIFF_DELETE, 'cat'], [DIFF_INSERT, 'map']], dmp.diff_bisect_(a, b, 0)); -} - -function testDiffMain() { - // Perform a trivial diff. - // Null case. - assertEquivalent([], dmp.diff_main('', '', false)); - - // Equality. - assertEquivalent([[DIFF_EQUAL, 'abc']], dmp.diff_main('abc', 'abc', false)); - - // Simple insertion. - assertEquivalent([[DIFF_EQUAL, 'ab'], [DIFF_INSERT, '123'], [DIFF_EQUAL, 'c']], dmp.diff_main('abc', 'ab123c', false)); - - // Simple deletion. - assertEquivalent([[DIFF_EQUAL, 'a'], [DIFF_DELETE, '123'], [DIFF_EQUAL, 'bc']], dmp.diff_main('a123bc', 'abc', false)); - - // Two insertions. - assertEquivalent([[DIFF_EQUAL, 'a'], [DIFF_INSERT, '123'], [DIFF_EQUAL, 'b'], [DIFF_INSERT, '456'], [DIFF_EQUAL, 'c']], dmp.diff_main('abc', 'a123b456c', false)); - - // Two deletions. - assertEquivalent([[DIFF_EQUAL, 'a'], [DIFF_DELETE, '123'], [DIFF_EQUAL, 'b'], [DIFF_DELETE, '456'], [DIFF_EQUAL, 'c']], dmp.diff_main('a123b456c', 'abc', false)); - - // Perform a real diff. - // Switch off the timeout. - dmp.Diff_Timeout = 0; - // Simple cases. - assertEquivalent([[DIFF_DELETE, 'a'], [DIFF_INSERT, 'b']], dmp.diff_main('a', 'b', false)); - - assertEquivalent([[DIFF_DELETE, 'Apple'], [DIFF_INSERT, 'Banana'], [DIFF_EQUAL, 's are a'], [DIFF_INSERT, 'lso'], [DIFF_EQUAL, ' fruit.']], dmp.diff_main('Apples are a fruit.', 'Bananas are also fruit.', false)); - - assertEquivalent([[DIFF_DELETE, 'a'], [DIFF_INSERT, '\u0680'], [DIFF_EQUAL, 'x'], [DIFF_DELETE, '\t'], [DIFF_INSERT, '\0']], dmp.diff_main('ax\t', '\u0680x\0', false)); - - // Overlaps. - assertEquivalent([[DIFF_DELETE, '1'], [DIFF_EQUAL, 'a'], [DIFF_DELETE, 'y'], [DIFF_EQUAL, 'b'], [DIFF_DELETE, '2'], [DIFF_INSERT, 'xab']], dmp.diff_main('1ayb2', 'abxab', false)); - - assertEquivalent([[DIFF_INSERT, 'xaxcx'], [DIFF_EQUAL, 'abc'], [DIFF_DELETE, 'y']], dmp.diff_main('abcy', 'xaxcxabc', false)); - - assertEquivalent([[DIFF_DELETE, 'ABCD'], [DIFF_EQUAL, 'a'], [DIFF_DELETE, '='], [DIFF_INSERT, '-'], [DIFF_EQUAL, 'bcd'], [DIFF_DELETE, '='], [DIFF_INSERT, '-'], [DIFF_EQUAL, 'efghijklmnopqrs'], [DIFF_DELETE, 'EFGHIJKLMNOefg']], dmp.diff_main('ABCDa=bcd=efghijklmnopqrsEFGHIJKLMNOefg', 'a-bcd-efghijklmnopqrs', false)); - - // Large equality. - assertEquivalent([[DIFF_INSERT, ' '], [DIFF_EQUAL, 'a'], [DIFF_INSERT, 'nd'], [DIFF_EQUAL, ' [[Pennsylvania]]'], [DIFF_DELETE, ' and [[New']], dmp.diff_main('a [[Pennsylvania]] and [[New', ' and [[Pennsylvania]]', false)); - - // Timeout. - dmp.Diff_Timeout = 0.1; // 100ms - var a = '`Twas brillig, and the slithy toves\nDid gyre and gimble in the wabe:\nAll mimsy were the borogoves,\nAnd the mome raths outgrabe.\n'; - var b = 'I am the very model of a modern major general,\nI\'ve information vegetable, animal, and mineral,\nI know the kings of England, and I quote the fights historical,\nFrom Marathon to Waterloo, in order categorical.\n'; - // Increase the text lengths by 1024 times to ensure a timeout. - for (var x = 0; x < 10; x++) { - a = a + a; - b = b + b; - } - var startTime = (new Date()).getTime(); - dmp.diff_main(a, b); - var endTime = (new Date()).getTime(); - // Test that we took at least the timeout period. - assertTrue(dmp.Diff_Timeout * 1000 <= endTime - startTime); - // Test that we didn't take forever (be forgiving). - // Theoretically this test could fail very occasionally if the - // OS task swaps or locks up for a second at the wrong moment. - // **** - // TODO(fraser): For unknown reasons this is taking 500 ms on Google's - // internal test system. Whereas browsers take 140 ms. - //assertTrue(dmp.Diff_Timeout * 1000 * 2 > endTime - startTime); - // **** - dmp.Diff_Timeout = 0; - - // Test the linemode speedup. - // Must be long to pass the 100 char cutoff. - // Simple line-mode. - a = '1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n'; - b = 'abcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\nabcdefghij\n'; - assertEquivalent(dmp.diff_main(a, b, false), dmp.diff_main(a, b, true)); - - // Single line-mode. - a = '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'; - b = 'abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij'; - assertEquivalent(dmp.diff_main(a, b, false), dmp.diff_main(a, b, true)); - - // Overlap line-mode. - a = '1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n'; - b = 'abcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n'; - var texts_linemode = diff_rebuildtexts(dmp.diff_main(a, b, true)); - var texts_textmode = diff_rebuildtexts(dmp.diff_main(a, b, false)); - assertEquivalent(texts_textmode, texts_linemode); - - // Test null inputs. - try { - dmp.diff_main(null, null); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } -} - - -// MATCH TEST FUNCTIONS - - -function testMatchAlphabet() { - // Initialise the bitmasks for Bitap. - // Unique. - assertEquivalent({'a':4, 'b':2, 'c':1}, dmp.match_alphabet_('abc')); - - // Duplicates. - assertEquivalent({'a':37, 'b':18, 'c':8}, dmp.match_alphabet_('abcaba')); -} - -function testMatchBitap() { - // Bitap algorithm. - dmp.Match_Distance = 100; - dmp.Match_Threshold = 0.5; - // Exact matches. - assertEquals(5, dmp.match_bitap_('abcdefghijk', 'fgh', 5)); - - assertEquals(5, dmp.match_bitap_('abcdefghijk', 'fgh', 0)); - - // Fuzzy matches. - assertEquals(4, dmp.match_bitap_('abcdefghijk', 'efxhi', 0)); - - assertEquals(2, dmp.match_bitap_('abcdefghijk', 'cdefxyhijk', 5)); - - assertEquals(-1, dmp.match_bitap_('abcdefghijk', 'bxy', 1)); - - // Overflow. - assertEquals(2, dmp.match_bitap_('123456789xx0', '3456789x0', 2)); - - // Threshold test. - dmp.Match_Threshold = 0.4; - assertEquals(4, dmp.match_bitap_('abcdefghijk', 'efxyhi', 1)); - - dmp.Match_Threshold = 0.3; - assertEquals(-1, dmp.match_bitap_('abcdefghijk', 'efxyhi', 1)); - - dmp.Match_Threshold = 0.0; - assertEquals(1, dmp.match_bitap_('abcdefghijk', 'bcdef', 1)); - dmp.Match_Threshold = 0.5; - - // Multiple select. - assertEquals(0, dmp.match_bitap_('abcdexyzabcde', 'abccde', 3)); - - assertEquals(8, dmp.match_bitap_('abcdexyzabcde', 'abccde', 5)); - - // Distance test. - dmp.Match_Distance = 10; // Strict location. - assertEquals(-1, dmp.match_bitap_('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24)); - - assertEquals(0, dmp.match_bitap_('abcdefghijklmnopqrstuvwxyz', 'abcdxxefg', 1)); - - dmp.Match_Distance = 1000; // Loose location. - assertEquals(0, dmp.match_bitap_('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24)); -} - -function testMatchMain() { - // Full match. - // Shortcut matches. - assertEquals(0, dmp.match_main('abcdef', 'abcdef', 1000)); - - assertEquals(-1, dmp.match_main('', 'abcdef', 1)); - - assertEquals(3, dmp.match_main('abcdef', '', 3)); - - assertEquals(3, dmp.match_main('abcdef', 'de', 3)); - - // Beyond end match. - assertEquals(3, dmp.match_main("abcdef", "defy", 4)); - - // Oversized pattern. - assertEquals(0, dmp.match_main("abcdef", "abcdefy", 0)); - - // Complex match. - assertEquals(4, dmp.match_main('I am the very model of a modern major general.', ' that berry ', 5)); - - // Test null inputs. - try { - dmp.match_main(null, null, 0); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } -} - - -// PATCH TEST FUNCTIONS - - -function testPatchObj() { - // Patch Object. - var p = new diff_match_patch.patch_obj(); - p.start1 = 20; - p.start2 = 21; - p.length1 = 18; - p.length2 = 17; - p.diffs = [[DIFF_EQUAL, 'jump'], [DIFF_DELETE, 's'], [DIFF_INSERT, 'ed'], [DIFF_EQUAL, ' over '], [DIFF_DELETE, 'the'], [DIFF_INSERT, 'a'], [DIFF_EQUAL, '\nlaz']]; - var strp = p.toString(); - assertEquals('@@ -21,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n %0Alaz\n', strp); -} - -function testPatchFromText() { - assertEquivalent([], dmp.patch_fromText(strp)); - - var strp = '@@ -21,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n %0Alaz\n'; - assertEquals(strp, dmp.patch_fromText(strp)[0].toString()); - - assertEquals('@@ -1 +1 @@\n-a\n+b\n', dmp.patch_fromText('@@ -1 +1 @@\n-a\n+b\n')[0].toString()); - - assertEquals('@@ -1,3 +0,0 @@\n-abc\n', dmp.patch_fromText('@@ -1,3 +0,0 @@\n-abc\n')[0].toString()); - - assertEquals('@@ -0,0 +1,3 @@\n+abc\n', dmp.patch_fromText('@@ -0,0 +1,3 @@\n+abc\n')[0].toString()); - - // Generates error. - try { - dmp.patch_fromText('Bad\nPatch\n'); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } -} - -function testPatchToText() { - var strp = '@@ -21,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n laz\n'; - var p = dmp.patch_fromText(strp); - assertEquals(strp, dmp.patch_toText(p)); - - strp = '@@ -1,9 +1,9 @@\n-f\n+F\n oo+fooba\n@@ -7,9 +7,9 @@\n obar\n-,\n+.\n tes\n'; - p = dmp.patch_fromText(strp); - assertEquals(strp, dmp.patch_toText(p)); -} - -function testPatchAddContext() { - dmp.Patch_Margin = 4; - var p = dmp.patch_fromText('@@ -21,4 +21,10 @@\n-jump\n+somersault\n')[0]; - dmp.patch_addContext_(p, 'The quick brown fox jumps over the lazy dog.'); - assertEquals('@@ -17,12 +17,18 @@\n fox \n-jump\n+somersault\n s ov\n', p.toString()); - - // Same, but not enough trailing context. - p = dmp.patch_fromText('@@ -21,4 +21,10 @@\n-jump\n+somersault\n')[0]; - dmp.patch_addContext_(p, 'The quick brown fox jumps.'); - assertEquals('@@ -17,10 +17,16 @@\n fox \n-jump\n+somersault\n s.\n', p.toString()); - - // Same, but not enough leading context. - p = dmp.patch_fromText('@@ -3 +3,2 @@\n-e\n+at\n')[0]; - dmp.patch_addContext_(p, 'The quick brown fox jumps.'); - assertEquals('@@ -1,7 +1,8 @@\n Th\n-e\n+at\n qui\n', p.toString()); - - // Same, but with ambiguity. - p = dmp.patch_fromText('@@ -3 +3,2 @@\n-e\n+at\n')[0]; - dmp.patch_addContext_(p, 'The quick brown fox jumps. The quick brown fox crashes.'); - assertEquals('@@ -1,27 +1,28 @@\n Th\n-e\n+at\n quick brown fox jumps. \n', p.toString()); -} - -function testPatchMake() { - // Null case. - var patches = dmp.patch_make('', ''); - assertEquals('', dmp.patch_toText(patches)); - - var text1 = 'The quick brown fox jumps over the lazy dog.'; - var text2 = 'That quick brown fox jumped over a lazy dog.'; - // Text2+Text1 inputs. - var expectedPatch = '@@ -1,8 +1,7 @@\n Th\n-at\n+e\n qui\n@@ -21,17 +21,18 @@\n jump\n-ed\n+s\n over \n-a\n+the\n laz\n'; - // The second patch must be "-21,17 +21,18", not "-22,17 +21,18" due to rolling context. - patches = dmp.patch_make(text2, text1); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Text1+Text2 inputs. - expectedPatch = '@@ -1,11 +1,12 @@\n Th\n-e\n+at\n quick b\n@@ -22,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n laz\n'; - patches = dmp.patch_make(text1, text2); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Diff input. - var diffs = dmp.diff_main(text1, text2, false); - patches = dmp.patch_make(diffs); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Text1+Diff inputs. - patches = dmp.patch_make(text1, diffs); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Text1+Text2+Diff inputs (deprecated). - patches = dmp.patch_make(text1, text2, diffs); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Character encoding. - patches = dmp.patch_make('`1234567890-=[]\\;\',./', '~!@#$%^&*()_+{}|:"<>?'); - assertEquals('@@ -1,21 +1,21 @@\n-%601234567890-=%5B%5D%5C;\',./\n+~!@#$%25%5E&*()_+%7B%7D%7C:%22%3C%3E?\n', dmp.patch_toText(patches)); - - // Character decoding. - diffs = [[DIFF_DELETE, '`1234567890-=[]\\;\',./'], [DIFF_INSERT, '~!@#$%^&*()_+{}|:"<>?']]; - assertEquivalent(diffs, dmp.patch_fromText('@@ -1,21 +1,21 @@\n-%601234567890-=%5B%5D%5C;\',./\n+~!@#$%25%5E&*()_+%7B%7D%7C:%22%3C%3E?\n')[0].diffs); - - // Long string with repeats. - text1 = ''; - for (var x = 0; x < 100; x++) { - text1 += 'abcdef'; - } - text2 = text1 + '123'; - expectedPatch = '@@ -573,28 +573,31 @@\n cdefabcdefabcdefabcdefabcdef\n+123\n'; - patches = dmp.patch_make(text1, text2); - assertEquals(expectedPatch, dmp.patch_toText(patches)); - - // Test null inputs. - try { - dmp.patch_make(null); - assertEquals(Error, null); - } catch (e) { - // Exception expected. - } -} - -function testPatchSplitMax() { - // Assumes that dmp.Match_MaxBits is 32. - var patches = dmp.patch_make('abcdefghijklmnopqrstuvwxyz01234567890', 'XabXcdXefXghXijXklXmnXopXqrXstXuvXwxXyzX01X23X45X67X89X0'); - dmp.patch_splitMax(patches); - assertEquals('@@ -1,32 +1,46 @@\n+X\n ab\n+X\n cd\n+X\n ef\n+X\n gh\n+X\n ij\n+X\n kl\n+X\n mn\n+X\n op\n+X\n qr\n+X\n st\n+X\n uv\n+X\n wx\n+X\n yz\n+X\n 012345\n@@ -25,13 +39,18 @@\n zX01\n+X\n 23\n+X\n 45\n+X\n 67\n+X\n 89\n+X\n 0\n', dmp.patch_toText(patches)); - - patches = dmp.patch_make('abcdef1234567890123456789012345678901234567890123456789012345678901234567890uvwxyz', 'abcdefuvwxyz'); - var oldToText = dmp.patch_toText(patches); - dmp.patch_splitMax(patches); - assertEquals(oldToText, dmp.patch_toText(patches)); - - patches = dmp.patch_make('1234567890123456789012345678901234567890123456789012345678901234567890', 'abc'); - dmp.patch_splitMax(patches); - assertEquals('@@ -1,32 +1,4 @@\n-1234567890123456789012345678\n 9012\n@@ -29,32 +1,4 @@\n-9012345678901234567890123456\n 7890\n@@ -57,14 +1,3 @@\n-78901234567890\n+abc\n', dmp.patch_toText(patches)); - - patches = dmp.patch_make('abcdefghij , h : 0 , t : 1 abcdefghij , h : 0 , t : 1 abcdefghij , h : 0 , t : 1', 'abcdefghij , h : 1 , t : 1 abcdefghij , h : 1 , t : 1 abcdefghij , h : 0 , t : 1'); - dmp.patch_splitMax(patches); - assertEquals('@@ -2,32 +2,32 @@\n bcdefghij , h : \n-0\n+1\n , t : 1 abcdef\n@@ -29,32 +29,32 @@\n bcdefghij , h : \n-0\n+1\n , t : 1 abcdef\n', dmp.patch_toText(patches)); -} - -function testPatchAddPadding() { - // Both edges full. - var patches = dmp.patch_make('', 'test'); - assertEquals('@@ -0,0 +1,4 @@\n+test\n', dmp.patch_toText(patches)); - dmp.patch_addPadding(patches); - assertEquals('@@ -1,8 +1,12 @@\n %01%02%03%04\n+test\n %01%02%03%04\n', dmp.patch_toText(patches)); - - // Both edges partial. - patches = dmp.patch_make('XY', 'XtestY'); - assertEquals('@@ -1,2 +1,6 @@\n X\n+test\n Y\n', dmp.patch_toText(patches)); - dmp.patch_addPadding(patches); - assertEquals('@@ -2,8 +2,12 @@\n %02%03%04X\n+test\n Y%01%02%03\n', dmp.patch_toText(patches)); - - // Both edges none. - patches = dmp.patch_make('XXXXYYYY', 'XXXXtestYYYY'); - assertEquals('@@ -1,8 +1,12 @@\n XXXX\n+test\n YYYY\n', dmp.patch_toText(patches)); - dmp.patch_addPadding(patches); - assertEquals('@@ -5,8 +5,12 @@\n XXXX\n+test\n YYYY\n', dmp.patch_toText(patches)); -} - -function testPatchApply() { - dmp.Match_Distance = 1000; - dmp.Match_Threshold = 0.5; - dmp.Patch_DeleteThreshold = 0.5; - // Null case. - var patches = dmp.patch_make('', ''); - var results = dmp.patch_apply(patches, 'Hello world.'); - assertEquivalent(['Hello world.', []], results); - - // Exact match. - patches = dmp.patch_make('The quick brown fox jumps over the lazy dog.', 'That quick brown fox jumped over a lazy dog.'); - results = dmp.patch_apply(patches, 'The quick brown fox jumps over the lazy dog.'); - assertEquivalent(['That quick brown fox jumped over a lazy dog.', [true, true]], results); - - // Partial match. - results = dmp.patch_apply(patches, 'The quick red rabbit jumps over the tired tiger.'); - assertEquivalent(['That quick red rabbit jumped over a tired tiger.', [true, true]], results); - - // Failed match. - results = dmp.patch_apply(patches, 'I am the very model of a modern major general.'); - assertEquivalent(['I am the very model of a modern major general.', [false, false]], results); - - // Big delete, small change. - patches = dmp.patch_make('x1234567890123456789012345678901234567890123456789012345678901234567890y', 'xabcy'); - results = dmp.patch_apply(patches, 'x123456789012345678901234567890-----++++++++++-----123456789012345678901234567890y'); - assertEquivalent(['xabcy', [true, true]], results); - - // Big delete, big change 1. - patches = dmp.patch_make('x1234567890123456789012345678901234567890123456789012345678901234567890y', 'xabcy'); - results = dmp.patch_apply(patches, 'x12345678901234567890---------------++++++++++---------------12345678901234567890y'); - assertEquivalent(['xabc12345678901234567890---------------++++++++++---------------12345678901234567890y', [false, true]], results); - - // Big delete, big change 2. - dmp.Patch_DeleteThreshold = 0.6; - patches = dmp.patch_make('x1234567890123456789012345678901234567890123456789012345678901234567890y', 'xabcy'); - results = dmp.patch_apply(patches, 'x12345678901234567890---------------++++++++++---------------12345678901234567890y'); - assertEquivalent(['xabcy', [true, true]], results); - dmp.Patch_DeleteThreshold = 0.5; - - // Compensate for failed patch. - dmp.Match_Threshold = 0.0; - dmp.Match_Distance = 0; - patches = dmp.patch_make('abcdefghijklmnopqrstuvwxyz--------------------1234567890', 'abcXXXXXXXXXXdefghijklmnopqrstuvwxyz--------------------1234567YYYYYYYYYY890'); - results = dmp.patch_apply(patches, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ--------------------1234567890'); - assertEquivalent(['ABCDEFGHIJKLMNOPQRSTUVWXYZ--------------------1234567YYYYYYYYYY890', [false, true]], results); - dmp.Match_Threshold = 0.5; - dmp.Match_Distance = 1000; - - // No side effects. - patches = dmp.patch_make('', 'test'); - var patchstr = dmp.patch_toText(patches); - dmp.patch_apply(patches, ''); - assertEquals(patchstr, dmp.patch_toText(patches)); - - // No side effects with major delete. - patches = dmp.patch_make('The quick brown fox jumps over the lazy dog.', 'Woof'); - patchstr = dmp.patch_toText(patches); - dmp.patch_apply(patches, 'The quick brown fox jumps over the lazy dog.'); - assertEquals(patchstr, dmp.patch_toText(patches)); - - // Edge exact match. - patches = dmp.patch_make('', 'test'); - results = dmp.patch_apply(patches, ''); - assertEquivalent(['test', [true]], results); - - // Near edge exact match. - patches = dmp.patch_make('XY', 'XtestY'); - results = dmp.patch_apply(patches, 'XY'); - assertEquivalent(['XtestY', [true]], results); - - // Edge partial match. - patches = dmp.patch_make('y', 'y123'); - results = dmp.patch_apply(patches, 'x'); - assertEquivalent(['x123', [true]], results); -} - - -/** - * End of test harness, now run tests - */ - -// If expected and actual are the identical, print 'Ok', otherwise 'Fail!' -function assertEquals(msg, expected, actual) { - if (typeof actual == 'undefined') { - // msg is optional. - actual = expected; - expected = msg; - msg = undefined; - } - assert.equal(actual, expected, msg); -} - -function assertTrue(msg, actual) { - if (typeof actual == 'undefined') { - // msg is optional. - actual = msg; - assertEquals(true, actual); - } else { - assertEquals(msg, true, actual); - } -} - -function assertFalse(msg, actual) { - if (typeof actual == 'undefined') { - // msg is optional. - actual = msg; - assertEquals(false, actual); - } else { - assertEquals(msg, false, actual); - } -} - -var tests = [ - 'testDiffCommonPrefix', - 'testDiffCommonSuffix', - 'testDiffCommonOverlap', - 'testDiffHalfMatch', - 'testDiffLinesToChars', - 'testDiffCharsToLines', - 'testDiffCleanupMerge', - 'testDiffCleanupSemanticLossless', - 'testDiffCleanupSemantic', - 'testDiffCleanupEfficiency', - 'testDiffPrettyHtml', - 'testDiffText', - 'testDiffDelta', - 'testDiffXIndex', - 'testDiffLevenshtein', - 'testDiffBisect', - 'testDiffMain', - - 'testMatchAlphabet', - 'testMatchBitap', - 'testMatchMain', - - 'testPatchObj', - 'testPatchFromText', - 'testPatchToText', - 'testPatchAddContext', - 'testPatchMake', - 'testPatchSplitMax', - 'testPatchAddPadding', - 'testPatchApply']; - - - for (var x = 0; x < tests.length; x++) { - test(tests[x], eval(tests[x])) - } \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.npmignore b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.npmignore deleted file mode 100644 index 5cd2673c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -*~ -*sublime-* -generation -test -wiki -coverage diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.travis.yml b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.travis.yml deleted file mode 100644 index f5343f19..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ - sudo: false - env: - - CXX=g++-4.8 - language: node_js - node_js: - - "0.8" - - "0.10" - - "0.11" - - "0.12" - - "iojs" - - "4.0" - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - gcc-4.8 - - g++-4.8 - before_install: - - "test $TRAVIS_NODE_VERSION != '0.8' || npm install -g npm@1.2.8000" diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/Changelog.md b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/Changelog.md deleted file mode 100644 index 421b1e2d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/Changelog.md +++ /dev/null @@ -1,93 +0,0 @@ - -# 0.4.13 / 2015-10-01 - - * Fix silly mistake in deprecation notice. - - -# 0.4.12 / 2015-09-26 - - * Node v4 support: - * Added CESU-8 decoding (#106) - * Added deprecation notice for `extendNodeEncodings` - * Added Travis tests for Node v4 and io.js latest (#105 by @Mithgol) - - -# 0.4.11 / 2015-07-03 - - * Added CESU-8 encoding. - - -# 0.4.10 / 2015-05-26 - - * Changed UTF-16 endianness heuristic to take into account any ASCII chars, not - just spaces. This should minimize the importance of "default" endianness. - - -# 0.4.9 / 2015-05-24 - - * Streamlined BOM handling: strip BOM by default, add BOM when encoding if - addBOM: true. Added docs to Readme. - * UTF16 now uses UTF16-LE by default. - * Fixed minor issue with big5 encoding. - * Added io.js testing on Travis; updated node-iconv version to test against. - Now we just skip testing SBCS encodings that node-iconv doesn't support. - * (internal refactoring) Updated codec interface to use classes. - * Use strict mode in all files. - - -# 0.4.8 / 2015-04-14 - - * added alias UNICODE-1-1-UTF-7 for UTF-7 encoding (#94) - - -# 0.4.7 / 2015-02-05 - - * stop official support of Node.js v0.8. Should still work, but no guarantees. - reason: Packages needed for testing are hard to get on Travis CI. - * work in environment where Object.prototype is monkey patched with enumerable - props (#89). - - -# 0.4.6 / 2015-01-12 - - * fix rare aliases of single-byte encodings (thanks @mscdex) - * double the timeout for dbcs tests to make them less flaky on travis - - -# 0.4.5 / 2014-11-20 - - * fix windows-31j and x-sjis encoding support (@nleush) - * minor fix: undefined variable reference when internal error happens - - -# 0.4.4 / 2014-07-16 - - * added encodings UTF-7 (RFC2152) and UTF-7-IMAP (RFC3501 Section 5.1.3) - * fixed streaming base64 encoding - - -# 0.4.3 / 2014-06-14 - - * added encodings UTF-16BE and UTF-16 with BOM - - -# 0.4.2 / 2014-06-12 - - * don't throw exception if `extendNodeEncodings()` is called more than once - - -# 0.4.1 / 2014-06-11 - - * codepage 808 added - - -# 0.4.0 / 2014-06-10 - - * code is rewritten from scratch - * all widespread encodings are supported - * streaming interface added - * browserify compatibility added - * (optional) extend core primitive encodings to make usage even simpler - * moved from vows to mocha as the testing framework - - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/LICENSE b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/LICENSE deleted file mode 100644 index d518d837..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011 Alexander Shtuchkin - -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/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/README.md b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/README.md deleted file mode 100644 index 160b7cf6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/README.md +++ /dev/null @@ -1,157 +0,0 @@ -## Pure JS character encoding conversion [![Build Status](https://travis-ci.org/ashtuchkin/iconv-lite.svg?branch=master)](https://travis-ci.org/ashtuchkin/iconv-lite) - - * Doesn't need native code compilation. Works on Windows and in sandboxed environments like [Cloud9](http://c9.io). - * Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), - [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. - * Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). - * Intuitive encode/decode API - * Streaming support for Node v0.10+ - * [Deprecated] Can extend Node.js primitives (buffers, streams) to support all iconv-lite encodings. - * In-browser usage via [Browserify](https://github.com/substack/node-browserify) (~180k gzip compressed with Buffer shim included). - * License: MIT. - -[![NPM Stats](https://nodei.co/npm/iconv-lite.png?downloads=true&downloadRank=true)](https://npmjs.org/packages/iconv-lite/) - -## Usage -### Basic API -```javascript -var iconv = require('iconv-lite'); - -// Convert from an encoded buffer to js string. -str = iconv.decode(new Buffer([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); - -// Convert from js string to an encoded buffer. -buf = iconv.encode("Sample input string", 'win1251'); - -// Check if encoding is supported -iconv.encodingExists("us-ascii") -``` - -### Streaming API (Node v0.10+) -```javascript - -// Decode stream (from binary stream to js strings) -http.createServer(function(req, res) { - var converterStream = iconv.decodeStream('win1251'); - req.pipe(converterStream); - - converterStream.on('data', function(str) { - console.log(str); // Do something with decoded strings, chunk-by-chunk. - }); -}); - -// Convert encoding streaming example -fs.createReadStream('file-in-win1251.txt') - .pipe(iconv.decodeStream('win1251')) - .pipe(iconv.encodeStream('ucs2')) - .pipe(fs.createWriteStream('file-in-ucs2.txt')); - -// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. -http.createServer(function(req, res) { - req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { - assert(typeof body == 'string'); - console.log(body); // full request body string - }); -}); -``` - -### [Deprecated] Extend Node.js own encodings -> NOTE: This doesn't work on latest Node versions. See [details](https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility). - -```javascript -// After this call all Node basic primitives will understand iconv-lite encodings. -iconv.extendNodeEncodings(); - -// Examples: -buf = new Buffer(str, 'win1251'); -buf.write(str, 'gbk'); -str = buf.toString('latin1'); -assert(Buffer.isEncoding('iso-8859-15')); -Buffer.byteLength(str, 'us-ascii'); - -http.createServer(function(req, res) { - req.setEncoding('big5'); - req.collect(function(err, body) { - console.log(body); - }); -}); - -fs.createReadStream("file.txt", "shift_jis"); - -// External modules are also supported (if they use Node primitives, which they probably do). -request = require('request'); -request({ - url: "http://github.com/", - encoding: "cp932" -}); - -// To remove extensions -iconv.undoExtendNodeEncodings(); -``` - -## Supported encodings - - * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. - * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap. - * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, - IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. - Aliases like 'latin1', 'us-ascii' also supported. - * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2313, GBK, GB18030, Big5, Shift_JIS, EUC-JP. - -See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). - -Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! - -Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! - - -## Encoding/decoding speed - -Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). -Note: your results may vary, so please always check on your hardware. - - operation iconv@2.1.4 iconv-lite@0.4.7 - ---------------------------------------------------------- - encode('win1251') ~96 Mb/s ~320 Mb/s - decode('win1251') ~95 Mb/s ~246 Mb/s - -## BOM handling - - * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options - (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). - A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. - * Encoding: No BOM added, unless overridden by `addBOM: true` option. - -## UTF-16 Encodings - -This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be -smart about endianness in the following ways: - * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be - overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. - * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. - -## Other notes - -When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). -Untranslatable characters are set to � or ?. No transliteration is currently supported. -Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see #65, #77). - -## Testing - -```bash -$ git clone git@github.com:ashtuchkin/iconv-lite.git -$ cd iconv-lite -$ npm install -$ npm test - -$ # To view performance: -$ node test/performance.js - -$ # To view test coverage: -$ npm run coverage -$ open coverage/lcov-report/index.html -``` - -## Adoption -[![NPM](https://nodei.co/npm-dl/iconv-lite.png)](https://nodei.co/npm/iconv-lite/) -[![Codeship Status for ashtuchkin/iconv-lite](https://www.codeship.io/projects/81670840-fa72-0131-4520-4a01a6c01acc/status)](https://www.codeship.io/projects/29053) diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-codec.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-codec.js deleted file mode 100644 index 366809e3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-codec.js +++ /dev/null @@ -1,554 +0,0 @@ -"use strict" - -// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. -// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. -// To save memory and loading time, we read table files only when requested. - -exports._dbcs = DBCSCodec; - -var UNASSIGNED = -1, - GB18030_CODE = -2, - SEQ_START = -10, - NODE_START = -1000, - UNASSIGNED_NODE = new Array(0x100), - DEF_CHAR = -1; - -for (var i = 0; i < 0x100; i++) - UNASSIGNED_NODE[i] = UNASSIGNED; - - -// Class DBCSCodec reads and initializes mapping tables. -function DBCSCodec(codecOptions, iconv) { - this.encodingName = codecOptions.encodingName; - if (!codecOptions) - throw new Error("DBCS codec is called without the data.") - if (!codecOptions.table) - throw new Error("Encoding '" + this.encodingName + "' has no data."); - - // Load tables. - var mappingTable = codecOptions.table(); - - - // Decode tables: MBCS -> Unicode. - - // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. - // Trie root is decodeTables[0]. - // Values: >= 0 -> unicode character code. can be > 0xFFFF - // == UNASSIGNED -> unknown/unassigned sequence. - // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. - // <= NODE_START -> index of the next node in our trie to process next byte. - // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. - this.decodeTables = []; - this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node. - - // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. - this.decodeTableSeq = []; - - // Actual mapping tables consist of chunks. Use them to fill up decode tables. - for (var i = 0; i < mappingTable.length; i++) - this._addDecodeChunk(mappingTable[i]); - - this.defaultCharUnicode = iconv.defaultCharUnicode; - - - // Encode tables: Unicode -> DBCS. - - // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. - // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. - // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). - // == UNASSIGNED -> no conversion found. Output a default char. - // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. - this.encodeTable = []; - - // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of - // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key - // means end of sequence (needed when one sequence is a strict subsequence of another). - // Objects are kept separately from encodeTable to increase performance. - this.encodeTableSeq = []; - - // Some chars can be decoded, but need not be encoded. - var skipEncodeChars = {}; - if (codecOptions.encodeSkipVals) - for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { - var val = codecOptions.encodeSkipVals[i]; - if (typeof val === 'number') - skipEncodeChars[val] = true; - else - for (var j = val.from; j <= val.to; j++) - skipEncodeChars[j] = true; - } - - // Use decode trie to recursively fill out encode tables. - this._fillEncodeTable(0, 0, skipEncodeChars); - - // Add more encoding pairs when needed. - if (codecOptions.encodeAdd) { - for (var uChar in codecOptions.encodeAdd) - if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) - this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); - } - - this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; - if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?']; - if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); - - - // Load & create GB18030 tables when needed. - if (typeof codecOptions.gb18030 === 'function') { - this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges. - - // Add GB18030 decode tables. - var thirdByteNodeIdx = this.decodeTables.length; - var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - var fourthByteNodeIdx = this.decodeTables.length; - var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); - - for (var i = 0x81; i <= 0xFE; i++) { - var secondByteNodeIdx = NODE_START - this.decodeTables[0][i]; - var secondByteNode = this.decodeTables[secondByteNodeIdx]; - for (var j = 0x30; j <= 0x39; j++) - secondByteNode[j] = NODE_START - thirdByteNodeIdx; - } - for (var i = 0x81; i <= 0xFE; i++) - thirdByteNode[i] = NODE_START - fourthByteNodeIdx; - for (var i = 0x30; i <= 0x39; i++) - fourthByteNode[i] = GB18030_CODE - } -} - -DBCSCodec.prototype.encoder = DBCSEncoder; -DBCSCodec.prototype.decoder = DBCSDecoder; - -// Decoder helpers -DBCSCodec.prototype._getDecodeTrieNode = function(addr) { - var bytes = []; - for (; addr > 0; addr >>= 8) - bytes.push(addr & 0xFF); - if (bytes.length == 0) - bytes.push(0); - - var node = this.decodeTables[0]; - for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie. - var val = node[bytes[i]]; - - if (val == UNASSIGNED) { // Create new node. - node[bytes[i]] = NODE_START - this.decodeTables.length; - this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); - } - else if (val <= NODE_START) { // Existing node. - node = this.decodeTables[NODE_START - val]; - } - else - throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); - } - return node; -} - - -DBCSCodec.prototype._addDecodeChunk = function(chunk) { - // First element of chunk is the hex mbcs code where we start. - var curAddr = parseInt(chunk[0], 16); - - // Choose the decoding node where we'll write our chars. - var writeTable = this._getDecodeTrieNode(curAddr); - curAddr = curAddr & 0xFF; - - // Write all other elements of the chunk to the table. - for (var k = 1; k < chunk.length; k++) { - var part = chunk[k]; - if (typeof part === "string") { // String, write as-is. - for (var l = 0; l < part.length;) { - var code = part.charCodeAt(l++); - if (0xD800 <= code && code < 0xDC00) { // Decode surrogate - var codeTrail = part.charCodeAt(l++); - if (0xDC00 <= codeTrail && codeTrail < 0xE000) - writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00); - else - throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); - } - else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used) - var len = 0xFFF - code + 2; - var seq = []; - for (var m = 0; m < len; m++) - seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq. - - writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; - this.decodeTableSeq.push(seq); - } - else - writeTable[curAddr++] = code; // Basic char - } - } - else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. - var charCode = writeTable[curAddr - 1] + 1; - for (var l = 0; l < part; l++) - writeTable[curAddr++] = charCode++; - } - else - throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); - } - if (curAddr > 0xFF) - throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); -} - -// Encoder helpers -DBCSCodec.prototype._getEncodeBucket = function(uCode) { - var high = uCode >> 8; // This could be > 0xFF because of astral characters. - if (this.encodeTable[high] === undefined) - this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand. - return this.encodeTable[high]; -} - -DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - if (bucket[low] <= SEQ_START) - this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it. - else if (bucket[low] == UNASSIGNED) - bucket[low] = dbcsCode; -} - -DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { - - // Get the root of character tree according to first character of the sequence. - var uCode = seq[0]; - var bucket = this._getEncodeBucket(uCode); - var low = uCode & 0xFF; - - var node; - if (bucket[low] <= SEQ_START) { - // There's already a sequence with - use it. - node = this.encodeTableSeq[SEQ_START-bucket[low]]; - } - else { - // There was no sequence object - allocate a new one. - node = {}; - if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence. - bucket[low] = SEQ_START - this.encodeTableSeq.length; - this.encodeTableSeq.push(node); - } - - // Traverse the character tree, allocating new nodes as needed. - for (var j = 1; j < seq.length-1; j++) { - var oldVal = node[uCode]; - if (typeof oldVal === 'object') - node = oldVal; - else { - node = node[uCode] = {} - if (oldVal !== undefined) - node[DEF_CHAR] = oldVal - } - } - - // Set the leaf to given dbcsCode. - uCode = seq[seq.length-1]; - node[uCode] = dbcsCode; -} - -DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { - var node = this.decodeTables[nodeIdx]; - for (var i = 0; i < 0x100; i++) { - var uCode = node[i]; - var mbCode = prefix + i; - if (skipEncodeChars[mbCode]) - continue; - - if (uCode >= 0) - this._setEncodeChar(uCode, mbCode); - else if (uCode <= NODE_START) - this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); - else if (uCode <= SEQ_START) - this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); - } -} - - - -// == Encoder ================================================================== - -function DBCSEncoder(options, codec) { - // Encoder state - this.leadSurrogate = -1; - this.seqObj = undefined; - - // Static data - this.encodeTable = codec.encodeTable; - this.encodeTableSeq = codec.encodeTableSeq; - this.defaultCharSingleByte = codec.defCharSB; - this.gb18030 = codec.gb18030; -} - -DBCSEncoder.prototype.write = function(str) { - var newBuf = new Buffer(str.length * (this.gb18030 ? 4 : 3)), - leadSurrogate = this.leadSurrogate, - seqObj = this.seqObj, nextChar = -1, - i = 0, j = 0; - - while (true) { - // 0. Get next character. - if (nextChar === -1) { - if (i == str.length) break; - var uCode = str.charCodeAt(i++); - } - else { - var uCode = nextChar; - nextChar = -1; - } - - // 1. Handle surrogates. - if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates. - if (uCode < 0xDC00) { // We've got lead surrogate. - if (leadSurrogate === -1) { - leadSurrogate = uCode; - continue; - } else { - leadSurrogate = uCode; - // Double lead surrogate found. - uCode = UNASSIGNED; - } - } else { // We've got trail surrogate. - if (leadSurrogate !== -1) { - uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00); - leadSurrogate = -1; - } else { - // Incomplete surrogate pair - only trail surrogate found. - uCode = UNASSIGNED; - } - - } - } - else if (leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char. - leadSurrogate = -1; - } - - // 2. Convert uCode character. - var dbcsCode = UNASSIGNED; - if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence - var resCode = seqObj[uCode]; - if (typeof resCode === 'object') { // Sequence continues. - seqObj = resCode; - continue; - - } else if (typeof resCode == 'number') { // Sequence finished. Write it. - dbcsCode = resCode; - - } else if (resCode == undefined) { // Current character is not part of the sequence. - - // Try default character for this sequence - resCode = seqObj[DEF_CHAR]; - if (resCode !== undefined) { - dbcsCode = resCode; // Found. Write it. - nextChar = uCode; // Current character will be written too in the next iteration. - - } else { - // TODO: What if we have no default? (resCode == undefined) - // Then, we should write first char of the sequence as-is and try the rest recursively. - // Didn't do it for now because no encoding has this situation yet. - // Currently, just skip the sequence and write current char. - } - } - seqObj = undefined; - } - else if (uCode >= 0) { // Regular character - var subtable = this.encodeTable[uCode >> 8]; - if (subtable !== undefined) - dbcsCode = subtable[uCode & 0xFF]; - - if (dbcsCode <= SEQ_START) { // Sequence start - seqObj = this.encodeTableSeq[SEQ_START-dbcsCode]; - continue; - } - - if (dbcsCode == UNASSIGNED && this.gb18030) { - // Use GB18030 algorithm to find character(s) to write. - var idx = findIdx(this.gb18030.uChars, uCode); - if (idx != -1) { - var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; - newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; - newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; - newBuf[j++] = 0x30 + dbcsCode; - continue; - } - } - } - - // 3. Write dbcsCode character. - if (dbcsCode === UNASSIGNED) - dbcsCode = this.defaultCharSingleByte; - - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else if (dbcsCode < 0x10000) { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - else { - newBuf[j++] = dbcsCode >> 16; - newBuf[j++] = (dbcsCode >> 8) & 0xFF; - newBuf[j++] = dbcsCode & 0xFF; - } - } - - this.seqObj = seqObj; - this.leadSurrogate = leadSurrogate; - return newBuf.slice(0, j); -} - -DBCSEncoder.prototype.end = function() { - if (this.leadSurrogate === -1 && this.seqObj === undefined) - return; // All clean. Most often case. - - var newBuf = new Buffer(10), j = 0; - - if (this.seqObj) { // We're in the sequence. - var dbcsCode = this.seqObj[DEF_CHAR]; - if (dbcsCode !== undefined) { // Write beginning of the sequence. - if (dbcsCode < 0x100) { - newBuf[j++] = dbcsCode; - } - else { - newBuf[j++] = dbcsCode >> 8; // high byte - newBuf[j++] = dbcsCode & 0xFF; // low byte - } - } else { - // See todo above. - } - this.seqObj = undefined; - } - - if (this.leadSurrogate !== -1) { - // Incomplete surrogate pair - only lead surrogate found. - newBuf[j++] = this.defaultCharSingleByte; - this.leadSurrogate = -1; - } - - return newBuf.slice(0, j); -} - -// Export for testing -DBCSEncoder.prototype.findIdx = findIdx; - - -// == Decoder ================================================================== - -function DBCSDecoder(options, codec) { - // Decoder state - this.nodeIdx = 0; - this.prevBuf = new Buffer(0); - - // Static data - this.decodeTables = codec.decodeTables; - this.decodeTableSeq = codec.decodeTableSeq; - this.defaultCharUnicode = codec.defaultCharUnicode; - this.gb18030 = codec.gb18030; -} - -DBCSDecoder.prototype.write = function(buf) { - var newBuf = new Buffer(buf.length*2), - nodeIdx = this.nodeIdx, - prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, - seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence. - uCode; - - if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later. - prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]); - - for (var i = 0, j = 0; i < buf.length; i++) { - var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset]; - - // Lookup in current trie node. - var uCode = this.decodeTables[nodeIdx][curByte]; - - if (uCode >= 0) { - // Normal character, just use it. - } - else if (uCode === UNASSIGNED) { // Unknown char. - // TODO: Callback with seq. - //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle). - uCode = this.defaultCharUnicode.charCodeAt(0); - } - else if (uCode === GB18030_CODE) { - var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset); - var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30); - var idx = findIdx(this.gb18030.gbChars, ptr); - uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; - } - else if (uCode <= NODE_START) { // Go to next trie node. - nodeIdx = NODE_START - uCode; - continue; - } - else if (uCode <= SEQ_START) { // Output a sequence of chars. - var seq = this.decodeTableSeq[SEQ_START - uCode]; - for (var k = 0; k < seq.length - 1; k++) { - uCode = seq[k]; - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - } - uCode = seq[seq.length-1]; - } - else - throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); - - // Write the character to buffer, handling higher planes using surrogate pair. - if (uCode > 0xFFFF) { - uCode -= 0x10000; - var uCodeLead = 0xD800 + Math.floor(uCode / 0x400); - newBuf[j++] = uCodeLead & 0xFF; - newBuf[j++] = uCodeLead >> 8; - - uCode = 0xDC00 + uCode % 0x400; - } - newBuf[j++] = uCode & 0xFF; - newBuf[j++] = uCode >> 8; - - // Reset trie node. - nodeIdx = 0; seqStart = i+1; - } - - this.nodeIdx = nodeIdx; - this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); - return newBuf.slice(0, j).toString('ucs2'); -} - -DBCSDecoder.prototype.end = function() { - var ret = ''; - - // Try to parse all remaining chars. - while (this.prevBuf.length > 0) { - // Skip 1 character in the buffer. - ret += this.defaultCharUnicode; - var buf = this.prevBuf.slice(1); - - // Parse remaining as usual. - this.prevBuf = new Buffer(0); - this.nodeIdx = 0; - if (buf.length > 0) - ret += this.write(buf); - } - - this.nodeIdx = 0; - return ret; -} - -// Binary search for GB18030. Returns largest i such that table[i] <= val. -function findIdx(table, val) { - if (table[0] > val) - return -1; - - var l = 0, r = table.length; - while (l < r-1) { // always table[l] <= val < table[r] - var mid = l + Math.floor((r-l+1)/2); - if (table[mid] <= val) - l = mid; - else - r = mid; - } - return l; -} - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-data.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-data.js deleted file mode 100644 index 2bf74152..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/dbcs-data.js +++ /dev/null @@ -1,170 +0,0 @@ -"use strict" - -// Description of supported double byte encodings and aliases. -// Tables are not require()-d until they are needed to speed up library load. -// require()-s are direct to support Browserify. - -module.exports = { - - // == Japanese/ShiftJIS ==================================================== - // All japanese encodings are based on JIS X set of standards: - // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. - // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. - // Has several variations in 1978, 1983, 1990 and 1997. - // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. - // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. - // 2 planes, first is superset of 0208, second - revised 0212. - // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) - - // Byte encodings are: - // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte - // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. - // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. - // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. - // 0x00-0x7F - lower part of 0201 - // 0x8E, 0xA1-0xDF - upper part of 0201 - // (0xA1-0xFE)x2 - 0208 plane (94x94). - // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). - // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. - // Used as-is in ISO2022 family. - // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, - // 0201-1976 Roman, 0208-1978, 0208-1983. - // * ISO2022-JP-1: Adds esc seq for 0212-1990. - // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. - // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. - // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. - // - // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. - // - // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - - - 'shiftjis': { - type: '_dbcs', - table: function() { return require('./tables/shiftjis.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - encodeSkipVals: [{from: 0xED40, to: 0xF940}], - }, - 'csshiftjis': 'shiftjis', - 'mskanji': 'shiftjis', - 'sjis': 'shiftjis', - 'windows31j': 'shiftjis', - 'xsjis': 'shiftjis', - 'windows932': 'shiftjis', - '932': 'shiftjis', - 'cp932': 'shiftjis', - - 'eucjp': { - type: '_dbcs', - table: function() { return require('./tables/eucjp.json') }, - encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E}, - }, - - // TODO: KDDI extension to Shift_JIS - // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. - // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. - - // == Chinese/GBK ========================================================== - // http://en.wikipedia.org/wiki/GBK - - // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 - 'gb2312': 'cp936', - 'gb231280': 'cp936', - 'gb23121980': 'cp936', - 'csgb2312': 'cp936', - 'csiso58gb231280': 'cp936', - 'euccn': 'cp936', - 'isoir58': 'gbk', - - // Microsoft's CP936 is a subset and approximation of GBK. - // TODO: Euro = 0x80 in cp936, but not in GBK (where it's valid but undefined) - 'windows936': 'cp936', - '936': 'cp936', - 'cp936': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json') }, - }, - - // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. - 'gbk': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - }, - 'xgbk': 'gbk', - - // GB18030 is an algorithmic extension of GBK. - 'gb18030': { - type: '_dbcs', - table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) }, - gb18030: function() { return require('./tables/gb18030-ranges.json') }, - }, - - 'chinese': 'gb18030', - - // TODO: Support GB18030 (~27000 chars + whole unicode mapping, cp54936) - // http://icu-project.org/docs/papers/gb18030.html - // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - - // == Korean =============================================================== - // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. - 'windows949': 'cp949', - '949': 'cp949', - 'cp949': { - type: '_dbcs', - table: function() { return require('./tables/cp949.json') }, - }, - - 'cseuckr': 'cp949', - 'csksc56011987': 'cp949', - 'euckr': 'cp949', - 'isoir149': 'cp949', - 'korean': 'cp949', - 'ksc56011987': 'cp949', - 'ksc56011989': 'cp949', - 'ksc5601': 'cp949', - - - // == Big5/Taiwan/Hong Kong ================================================ - // There are lots of tables for Big5 and cp950. Please see the following links for history: - // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - // Variations, in roughly number of defined chars: - // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - // * Big5-2003 (Taiwan standard) almost superset of cp950. - // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. - // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. - // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. - // Plus, it has 4 combining sequences. - // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. - // Implementations are not consistent within browsers; sometimes labeled as just big5. - // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. - // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. - // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - // - // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - - 'windows950': 'cp950', - '950': 'cp950', - 'cp950': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json') }, - }, - - // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. - 'big5': 'big5hkscs', - 'big5hkscs': { - type: '_dbcs', - table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) }, - encodeSkipVals: [0xa2cc], - }, - - 'cnbig5': 'big5hkscs', - 'csbig5': 'big5hkscs', - 'xxbig5': 'big5hkscs', - -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/index.js deleted file mode 100644 index f7892fa3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/index.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict" - -// Update this array if you add/rename/remove files in this directory. -// We support Browserify by skipping automatic module discovery and requiring modules directly. -var modules = [ - require("./internal"), - require("./utf16"), - require("./utf7"), - require("./sbcs-codec"), - require("./sbcs-data"), - require("./sbcs-data-generated"), - require("./dbcs-codec"), - require("./dbcs-data"), -]; - -// Put all encoding/alias/codec definitions to single object and export it. -for (var i = 0; i < modules.length; i++) { - var module = modules[i]; - for (var enc in module) - if (Object.prototype.hasOwnProperty.call(module, enc)) - exports[enc] = module[enc]; -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/internal.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/internal.js deleted file mode 100644 index a8ae5121..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/internal.js +++ /dev/null @@ -1,187 +0,0 @@ -"use strict" - -// Export Node.js internal encodings. - -module.exports = { - // Encodings - utf8: { type: "_internal", bomAware: true}, - cesu8: { type: "_internal", bomAware: true}, - unicode11utf8: "utf8", - - ucs2: { type: "_internal", bomAware: true}, - utf16le: "ucs2", - - binary: { type: "_internal" }, - base64: { type: "_internal" }, - hex: { type: "_internal" }, - - // Codec. - _internal: InternalCodec, -}; - -//------------------------------------------------------------------------------ - -function InternalCodec(codecOptions, iconv) { - this.enc = codecOptions.encodingName; - this.bomAware = codecOptions.bomAware; - - if (this.enc === "base64") - this.encoder = InternalEncoderBase64; - else if (this.enc === "cesu8") { - this.enc = "utf8"; // Use utf8 for decoding. - this.encoder = InternalEncoderCesu8; - - // Add decoder for versions of Node not supporting CESU-8 - if (new Buffer("eda080", 'hex').toString().length == 3) { - this.decoder = InternalDecoderCesu8; - this.defaultCharUnicode = iconv.defaultCharUnicode; - } - } -} - -InternalCodec.prototype.encoder = InternalEncoder; -InternalCodec.prototype.decoder = InternalDecoder; - -//------------------------------------------------------------------------------ - -// We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = require('string_decoder').StringDecoder; - -if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. - StringDecoder.prototype.end = function() {}; - - -function InternalDecoder(options, codec) { - StringDecoder.call(this, codec.enc); -} - -InternalDecoder.prototype = StringDecoder.prototype; - - -//------------------------------------------------------------------------------ -// Encoder is mostly trivial - -function InternalEncoder(options, codec) { - this.enc = codec.enc; -} - -InternalEncoder.prototype.write = function(str) { - return new Buffer(str, this.enc); -} - -InternalEncoder.prototype.end = function() { -} - - -//------------------------------------------------------------------------------ -// Except base64 encoder, which must keep its state. - -function InternalEncoderBase64(options, codec) { - this.prevStr = ''; -} - -InternalEncoderBase64.prototype.write = function(str) { - str = this.prevStr + str; - var completeQuads = str.length - (str.length % 4); - this.prevStr = str.slice(completeQuads); - str = str.slice(0, completeQuads); - - return new Buffer(str, "base64"); -} - -InternalEncoderBase64.prototype.end = function() { - return new Buffer(this.prevStr, "base64"); -} - - -//------------------------------------------------------------------------------ -// CESU-8 encoder is also special. - -function InternalEncoderCesu8(options, codec) { -} - -InternalEncoderCesu8.prototype.write = function(str) { - var buf = new Buffer(str.length * 3), bufIdx = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - // Naive implementation, but it works because CESU-8 is especially easy - // to convert from UTF-16 (which all JS strings are encoded in). - if (charCode < 0x80) - buf[bufIdx++] = charCode; - else if (charCode < 0x800) { - buf[bufIdx++] = 0xC0 + (charCode >>> 6); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - else { // charCode will always be < 0x10000 in javascript. - buf[bufIdx++] = 0xE0 + (charCode >>> 12); - buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f); - buf[bufIdx++] = 0x80 + (charCode & 0x3f); - } - } - return buf.slice(0, bufIdx); -} - -InternalEncoderCesu8.prototype.end = function() { -} - -//------------------------------------------------------------------------------ -// CESU-8 decoder is not implemented in Node v4.0+ - -function InternalDecoderCesu8(options, codec) { - this.acc = 0; - this.contBytes = 0; - this.accBytes = 0; - this.defaultCharUnicode = codec.defaultCharUnicode; -} - -InternalDecoderCesu8.prototype.write = function(buf) { - var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, - res = ''; - for (var i = 0; i < buf.length; i++) { - var curByte = buf[i]; - if ((curByte & 0xC0) !== 0x80) { // Leading byte - if (contBytes > 0) { // Previous code is invalid - res += this.defaultCharUnicode; - contBytes = 0; - } - - if (curByte < 0x80) { // Single-byte code - res += String.fromCharCode(curByte); - } else if (curByte < 0xE0) { // Two-byte code - acc = curByte & 0x1F; - contBytes = 1; accBytes = 1; - } else if (curByte < 0xF0) { // Three-byte code - acc = curByte & 0x0F; - contBytes = 2; accBytes = 1; - } else { // Four or more are not supported for CESU-8. - res += this.defaultCharUnicode; - } - } else { // Continuation byte - if (contBytes > 0) { // We're waiting for it. - acc = (acc << 6) | (curByte & 0x3f); - contBytes--; accBytes++; - if (contBytes === 0) { - // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) - if (accBytes === 2 && acc < 0x80 && acc > 0) - res += this.defaultCharUnicode; - else if (accBytes === 3 && acc < 0x800) - res += this.defaultCharUnicode; - else - // Actually add character. - res += String.fromCharCode(acc); - } - } else { // Unexpected continuation byte - res += this.defaultCharUnicode; - } - } - } - this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; - return res; -} - -InternalDecoderCesu8.prototype.end = function() { - var res = 0; - if (this.contBytes > 0) - res += this.defaultCharUnicode; - return res; -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-codec.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-codec.js deleted file mode 100644 index ca00171b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-codec.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict" - -// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that -// correspond to encoded bytes (if 128 - then lower half is ASCII). - -exports._sbcs = SBCSCodec; -function SBCSCodec(codecOptions, iconv) { - if (!codecOptions) - throw new Error("SBCS codec is called without the data.") - - // Prepare char buffer for decoding. - if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) - throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)"); - - if (codecOptions.chars.length === 128) { - var asciiString = ""; - for (var i = 0; i < 128; i++) - asciiString += String.fromCharCode(i); - codecOptions.chars = asciiString + codecOptions.chars; - } - - this.decodeBuf = new Buffer(codecOptions.chars, 'ucs2'); - - // Encoding buffer. - var encodeBuf = new Buffer(65536); - encodeBuf.fill(iconv.defaultCharSingleByte.charCodeAt(0)); - - for (var i = 0; i < codecOptions.chars.length; i++) - encodeBuf[codecOptions.chars.charCodeAt(i)] = i; - - this.encodeBuf = encodeBuf; -} - -SBCSCodec.prototype.encoder = SBCSEncoder; -SBCSCodec.prototype.decoder = SBCSDecoder; - - -function SBCSEncoder(options, codec) { - this.encodeBuf = codec.encodeBuf; -} - -SBCSEncoder.prototype.write = function(str) { - var buf = new Buffer(str.length); - for (var i = 0; i < str.length; i++) - buf[i] = this.encodeBuf[str.charCodeAt(i)]; - - return buf; -} - -SBCSEncoder.prototype.end = function() { -} - - -function SBCSDecoder(options, codec) { - this.decodeBuf = codec.decodeBuf; -} - -SBCSDecoder.prototype.write = function(buf) { - // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. - var decodeBuf = this.decodeBuf; - var newBuf = new Buffer(buf.length*2); - var idx1 = 0, idx2 = 0; - for (var i = 0; i < buf.length; i++) { - idx1 = buf[i]*2; idx2 = i*2; - newBuf[idx2] = decodeBuf[idx1]; - newBuf[idx2+1] = decodeBuf[idx1+1]; - } - return newBuf.toString('ucs2'); -} - -SBCSDecoder.prototype.end = function() { -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data-generated.js deleted file mode 100644 index 2308c918..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data-generated.js +++ /dev/null @@ -1,451 +0,0 @@ -"use strict" - -// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. -module.exports = { - "437": "cp437", - "737": "cp737", - "775": "cp775", - "850": "cp850", - "852": "cp852", - "855": "cp855", - "856": "cp856", - "857": "cp857", - "858": "cp858", - "860": "cp860", - "861": "cp861", - "862": "cp862", - "863": "cp863", - "864": "cp864", - "865": "cp865", - "866": "cp866", - "869": "cp869", - "874": "windows874", - "922": "cp922", - "1046": "cp1046", - "1124": "cp1124", - "1125": "cp1125", - "1129": "cp1129", - "1133": "cp1133", - "1161": "cp1161", - "1162": "cp1162", - "1163": "cp1163", - "1250": "windows1250", - "1251": "windows1251", - "1252": "windows1252", - "1253": "windows1253", - "1254": "windows1254", - "1255": "windows1255", - "1256": "windows1256", - "1257": "windows1257", - "1258": "windows1258", - "28591": "iso88591", - "28592": "iso88592", - "28593": "iso88593", - "28594": "iso88594", - "28595": "iso88595", - "28596": "iso88596", - "28597": "iso88597", - "28598": "iso88598", - "28599": "iso88599", - "28600": "iso885910", - "28601": "iso885911", - "28603": "iso885913", - "28604": "iso885914", - "28605": "iso885915", - "28606": "iso885916", - "windows874": { - "type": "_sbcs", - "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "win874": "windows874", - "cp874": "windows874", - "windows1250": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "win1250": "windows1250", - "cp1250": "windows1250", - "windows1251": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "win1251": "windows1251", - "cp1251": "windows1251", - "windows1252": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "win1252": "windows1252", - "cp1252": "windows1252", - "windows1253": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "win1253": "windows1253", - "cp1253": "windows1253", - "windows1254": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "win1254": "windows1254", - "cp1254": "windows1254", - "windows1255": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "win1255": "windows1255", - "cp1255": "windows1255", - "windows1256": { - "type": "_sbcs", - "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" - }, - "win1256": "windows1256", - "cp1256": "windows1256", - "windows1257": { - "type": "_sbcs", - "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" - }, - "win1257": "windows1257", - "cp1257": "windows1257", - "windows1258": { - "type": "_sbcs", - "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "win1258": "windows1258", - "cp1258": "windows1258", - "iso88591": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28591": "iso88591", - "iso88592": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" - }, - "cp28592": "iso88592", - "iso88593": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" - }, - "cp28593": "iso88593", - "iso88594": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" - }, - "cp28594": "iso88594", - "iso88595": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" - }, - "cp28595": "iso88595", - "iso88596": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" - }, - "cp28596": "iso88596", - "iso88597": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" - }, - "cp28597": "iso88597", - "iso88598": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" - }, - "cp28598": "iso88598", - "iso88599": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" - }, - "cp28599": "iso88599", - "iso885910": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" - }, - "cp28600": "iso885910", - "iso885911": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "cp28601": "iso885911", - "iso885913": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" - }, - "cp28603": "iso885913", - "iso885914": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" - }, - "cp28604": "iso885914", - "iso885915": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "cp28605": "iso885915", - "iso885916": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" - }, - "cp28606": "iso885916", - "cp437": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm437": "cp437", - "csibm437": "cp437", - "cp737": { - "type": "_sbcs", - "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " - }, - "ibm737": "cp737", - "csibm737": "cp737", - "cp775": { - "type": "_sbcs", - "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " - }, - "ibm775": "cp775", - "csibm775": "cp775", - "cp850": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm850": "cp850", - "csibm850": "cp850", - "cp852": { - "type": "_sbcs", - "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " - }, - "ibm852": "cp852", - "csibm852": "cp852", - "cp855": { - "type": "_sbcs", - "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " - }, - "ibm855": "cp855", - "csibm855": "cp855", - "cp856": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm856": "cp856", - "csibm856": "cp856", - "cp857": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " - }, - "ibm857": "cp857", - "csibm857": "cp857", - "cp858": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " - }, - "ibm858": "cp858", - "csibm858": "cp858", - "cp860": { - "type": "_sbcs", - "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm860": "cp860", - "csibm860": "cp860", - "cp861": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm861": "cp861", - "csibm861": "cp861", - "cp862": { - "type": "_sbcs", - "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm862": "cp862", - "csibm862": "cp862", - "cp863": { - "type": "_sbcs", - "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm863": "cp863", - "csibm863": "cp863", - "cp864": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" - }, - "ibm864": "cp864", - "csibm864": "cp864", - "cp865": { - "type": "_sbcs", - "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " - }, - "ibm865": "cp865", - "csibm865": "cp865", - "cp866": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " - }, - "ibm866": "cp866", - "csibm866": "cp866", - "cp869": { - "type": "_sbcs", - "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " - }, - "ibm869": "cp869", - "csibm869": "cp869", - "cp922": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" - }, - "ibm922": "cp922", - "csibm922": "cp922", - "cp1046": { - "type": "_sbcs", - "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" - }, - "ibm1046": "cp1046", - "csibm1046": "cp1046", - "cp1124": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" - }, - "ibm1124": "cp1124", - "csibm1124": "cp1124", - "cp1125": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " - }, - "ibm1125": "cp1125", - "csibm1125": "cp1125", - "cp1129": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1129": "cp1129", - "csibm1129": "cp1129", - "cp1133": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" - }, - "ibm1133": "cp1133", - "csibm1133": "cp1133", - "cp1161": { - "type": "_sbcs", - "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " - }, - "ibm1161": "cp1161", - "csibm1161": "cp1161", - "cp1162": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - }, - "ibm1162": "cp1162", - "csibm1162": "cp1162", - "cp1163": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" - }, - "ibm1163": "cp1163", - "csibm1163": "cp1163", - "maccroatian": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" - }, - "maccyrillic": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "macgreek": { - "type": "_sbcs", - "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" - }, - "maciceland": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macroman": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macromania": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macthai": { - "type": "_sbcs", - "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" - }, - "macturkish": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" - }, - "macukraine": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" - }, - "koi8r": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8u": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8ru": { - "type": "_sbcs", - "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "koi8t": { - "type": "_sbcs", - "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" - }, - "armscii8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" - }, - "rk1048": { - "type": "_sbcs", - "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "tcvn": { - "type": "_sbcs", - "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" - }, - "georgianacademy": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "georgianps": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" - }, - "pt154": { - "type": "_sbcs", - "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" - }, - "viscii": { - "type": "_sbcs", - "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" - }, - "iso646cn": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "iso646jp": { - "type": "_sbcs", - "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" - }, - "hproman8": { - "type": "_sbcs", - "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" - }, - "macintosh": { - "type": "_sbcs", - "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" - }, - "ascii": { - "type": "_sbcs", - "chars": "��������������������������������������������������������������������������������������������������������������������������������" - }, - "tis620": { - "type": "_sbcs", - "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" - } -} \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data.js deleted file mode 100644 index 2058a715..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/sbcs-data.js +++ /dev/null @@ -1,169 +0,0 @@ -"use strict" - -// Manually added data to be used by sbcs codec in addition to generated one. - -module.exports = { - // Not supported by iconv, not sure why. - "10029": "maccenteuro", - "maccenteuro": { - "type": "_sbcs", - "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" - }, - - "808": "cp808", - "ibm808": "cp808", - "cp808": { - "type": "_sbcs", - "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " - }, - - // Aliases of generated encodings. - "ascii8bit": "ascii", - "usascii": "ascii", - "ansix34": "ascii", - "ansix341968": "ascii", - "ansix341986": "ascii", - "csascii": "ascii", - "cp367": "ascii", - "ibm367": "ascii", - "isoir6": "ascii", - "iso646us": "ascii", - "iso646irv": "ascii", - "us": "ascii", - - "latin1": "iso88591", - "latin2": "iso88592", - "latin3": "iso88593", - "latin4": "iso88594", - "latin5": "iso88599", - "latin6": "iso885910", - "latin7": "iso885913", - "latin8": "iso885914", - "latin9": "iso885915", - "latin10": "iso885916", - - "csisolatin1": "iso88591", - "csisolatin2": "iso88592", - "csisolatin3": "iso88593", - "csisolatin4": "iso88594", - "csisolatincyrillic": "iso88595", - "csisolatinarabic": "iso88596", - "csisolatingreek" : "iso88597", - "csisolatinhebrew": "iso88598", - "csisolatin5": "iso88599", - "csisolatin6": "iso885910", - - "l1": "iso88591", - "l2": "iso88592", - "l3": "iso88593", - "l4": "iso88594", - "l5": "iso88599", - "l6": "iso885910", - "l7": "iso885913", - "l8": "iso885914", - "l9": "iso885915", - "l10": "iso885916", - - "isoir14": "iso646jp", - "isoir57": "iso646cn", - "isoir100": "iso88591", - "isoir101": "iso88592", - "isoir109": "iso88593", - "isoir110": "iso88594", - "isoir144": "iso88595", - "isoir127": "iso88596", - "isoir126": "iso88597", - "isoir138": "iso88598", - "isoir148": "iso88599", - "isoir157": "iso885910", - "isoir166": "tis620", - "isoir179": "iso885913", - "isoir199": "iso885914", - "isoir203": "iso885915", - "isoir226": "iso885916", - - "cp819": "iso88591", - "ibm819": "iso88591", - - "cyrillic": "iso88595", - - "arabic": "iso88596", - "arabic8": "iso88596", - "ecma114": "iso88596", - "asmo708": "iso88596", - - "greek" : "iso88597", - "greek8" : "iso88597", - "ecma118" : "iso88597", - "elot928" : "iso88597", - - "hebrew": "iso88598", - "hebrew8": "iso88598", - - "turkish": "iso88599", - "turkish8": "iso88599", - - "thai": "iso885911", - "thai8": "iso885911", - - "celtic": "iso885914", - "celtic8": "iso885914", - "isoceltic": "iso885914", - - "tis6200": "tis620", - "tis62025291": "tis620", - "tis62025330": "tis620", - - "10000": "macroman", - "10006": "macgreek", - "10007": "maccyrillic", - "10079": "maciceland", - "10081": "macturkish", - - "cspc8codepage437": "cp437", - "cspc775baltic": "cp775", - "cspc850multilingual": "cp850", - "cspcp852": "cp852", - "cspc862latinhebrew": "cp862", - "cpgr": "cp869", - - "msee": "cp1250", - "mscyrl": "cp1251", - "msansi": "cp1252", - "msgreek": "cp1253", - "msturk": "cp1254", - "mshebr": "cp1255", - "msarab": "cp1256", - "winbaltrim": "cp1257", - - "cp20866": "koi8r", - "20866": "koi8r", - "ibm878": "koi8r", - "cskoi8r": "koi8r", - - "cp21866": "koi8u", - "21866": "koi8u", - "ibm1168": "koi8u", - - "strk10482002": "rk1048", - - "tcvn5712": "tcvn", - "tcvn57121": "tcvn", - - "gb198880": "iso646cn", - "cn": "iso646cn", - - "csiso14jisc6220ro": "iso646jp", - "jisc62201969ro": "iso646jp", - "jp": "iso646jp", - - "cshproman8": "hproman8", - "r8": "hproman8", - "roman8": "hproman8", - "xroman8": "hproman8", - "ibm1051": "hproman8", - - "mac": "macintosh", - "csmacintosh": "macintosh", -}; - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/big5-added.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/big5-added.json deleted file mode 100644 index 3c3d3c2f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/big5-added.json +++ /dev/null @@ -1,122 +0,0 @@ -[ -["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], -["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], -["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], -["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], -["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], -["8940","𪎩𡅅"], -["8943","攊"], -["8946","丽滝鵎釟"], -["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], -["89a1","琑糼緍楆竉刧"], -["89ab","醌碸酞肼"], -["89b0","贋胶𠧧"], -["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], -["89c1","溚舾甙"], -["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], -["8a40","𧶄唥"], -["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], -["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], -["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], -["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], -["8aac","䠋𠆩㿺塳𢶍"], -["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], -["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], -["8ac9","𪘁𠸉𢫏𢳉"], -["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], -["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], -["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], -["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], -["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], -["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], -["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], -["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], -["8ca1","𣏹椙橃𣱣泿"], -["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], -["8cc9","顨杫䉶圽"], -["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], -["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], -["8d40","𠮟"], -["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], -["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], -["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], -["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], -["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], -["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], -["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], -["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], -["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], -["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], -["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], -["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], -["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], -["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], -["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], -["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], -["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], -["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], -["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], -["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], -["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], -["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], -["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], -["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], -["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], -["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], -["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], -["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], -["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], -["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], -["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], -["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], -["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], -["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], -["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], -["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], -["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], -["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], -["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], -["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], -["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], -["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], -["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], -["9fae","酙隁酜"], -["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], -["9fc1","𤤙盖鮝个𠳔莾衂"], -["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], -["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], -["9fe7","毺蠘罸"], -["9feb","嘠𪙊蹷齓"], -["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], -["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], -["a055","𡠻𦸅"], -["a058","詾𢔛"], -["a05b","惽癧髗鵄鍮鮏蟵"], -["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], -["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], -["a0a1","嵗𨯂迚𨸹"], -["a0a6","僙𡵆礆匲阸𠼻䁥"], -["a0ae","矾"], -["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], -["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], -["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], -["a3c0","␀",31,"␡"], -["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], -["c740","す",58,"ァアィイ"], -["c7a1","ゥ",81,"А",5,"ЁЖ",4], -["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], -["c8a1","龰冈龱𧘇"], -["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], -["c8f5","ʃɐɛɔɵœøŋʊɪ"], -["f9fe","■"], -["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], -["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], -["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], -["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], -["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], -["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], -["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], -["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], -["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], -["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp936.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp936.json deleted file mode 100644 index 49ddb9a1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp936.json +++ /dev/null @@ -1,264 +0,0 @@ -[ -["0","\u0000",127,"€"], -["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], -["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], -["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], -["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], -["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], -["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], -["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], -["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], -["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], -["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], -["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], -["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], -["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], -["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], -["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], -["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], -["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], -["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], -["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], -["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], -["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], -["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], -["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], -["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], -["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], -["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], -["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], -["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], -["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], -["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], -["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], -["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], -["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], -["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], -["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], -["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], -["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], -["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], -["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], -["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], -["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], -["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], -["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], -["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], -["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], -["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], -["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], -["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], -["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], -["9980","檧檨檪檭",114,"欥欦欨",6], -["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], -["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], -["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], -["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], -["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], -["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], -["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], -["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], -["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], -["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], -["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], -["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], -["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], -["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], -["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], -["a2a1","ⅰ",9], -["a2b1","⒈",19,"⑴",19,"①",9], -["a2e5","㈠",9], -["a2f1","Ⅰ",11], -["a3a1","!"#¥%",88," ̄"], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], -["a6ee","︻︼︷︸︱"], -["a6f4","︳︴"], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], -["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], -["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], -["a8bd","ńň"], -["a8c0","ɡ"], -["a8c5","ㄅ",36], -["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], -["a959","℡㈱"], -["a95c","‐"], -["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], -["a980","﹢",4,"﹨﹩﹪﹫"], -["a996","〇"], -["a9a4","─",75], -["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], -["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], -["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], -["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], -["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], -["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], -["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], -["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], -["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], -["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], -["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], -["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], -["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], -["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], -["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], -["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], -["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], -["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], -["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], -["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], -["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], -["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], -["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], -["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], -["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], -["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], -["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], -["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], -["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], -["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], -["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], -["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], -["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], -["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], -["bb40","籃",9,"籎",36,"籵",5,"籾",9], -["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], -["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], -["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], -["bd40","紷",54,"絯",7], -["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], -["be40","継",12,"綧",6,"綯",42], -["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], -["bf40","緻",62], -["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], -["c040","繞",35,"纃",23,"纜纝纞"], -["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], -["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], -["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], -["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], -["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], -["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], -["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], -["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], -["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], -["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], -["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], -["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], -["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], -["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], -["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], -["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], -["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], -["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], -["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], -["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], -["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], -["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], -["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], -["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], -["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], -["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], -["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], -["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], -["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], -["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], -["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], -["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], -["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], -["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], -["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], -["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], -["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], -["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], -["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], -["d440","訞",31,"訿",8,"詉",21], -["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], -["d540","誁",7,"誋",7,"誔",46], -["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], -["d640","諤",34,"謈",27], -["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], -["d740","譆",31,"譧",4,"譭",25], -["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], -["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], -["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], -["d940","貮",62], -["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], -["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], -["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], -["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], -["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], -["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], -["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], -["dd40","軥",62], -["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], -["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], -["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], -["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], -["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], -["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], -["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], -["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], -["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], -["e240","釦",62], -["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], -["e340","鉆",45,"鉵",16], -["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], -["e440","銨",5,"銯",24,"鋉",31], -["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], -["e540","錊",51,"錿",10], -["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], -["e640","鍬",34,"鎐",27], -["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], -["e740","鏎",7,"鏗",54], -["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], -["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], -["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], -["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], -["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], -["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], -["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], -["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], -["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], -["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], -["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], -["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], -["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], -["ee40","頏",62], -["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], -["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], -["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], -["f040","餈",4,"餎餏餑",28,"餯",26], -["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], -["f140","馌馎馚",10,"馦馧馩",47], -["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], -["f240","駺",62], -["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], -["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], -["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], -["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], -["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], -["f540","魼",62], -["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], -["f640","鯜",62], -["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], -["f740","鰼",62], -["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], -["f840","鳣",62], -["f880","鴢",32], -["f940","鵃",62], -["f980","鶂",32], -["fa40","鶣",62], -["fa80","鷢",32], -["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], -["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], -["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], -["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], -["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], -["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], -["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp949.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp949.json deleted file mode 100644 index 2022a007..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp949.json +++ /dev/null @@ -1,273 +0,0 @@ -[ -["0","\u0000",127], -["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], -["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], -["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], -["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], -["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], -["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], -["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], -["8361","긝",18,"긲긳긵긶긹긻긼"], -["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], -["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], -["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], -["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], -["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], -["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], -["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], -["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], -["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], -["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], -["8741","놞",9,"놩",15], -["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], -["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], -["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], -["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], -["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], -["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], -["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], -["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], -["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], -["8a61","둧",4,"둭",18,"뒁뒂"], -["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], -["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], -["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], -["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], -["8c41","똀",15,"똒똓똕똖똗똙",4], -["8c61","똞",6,"똦",5,"똭",6,"똵",5], -["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], -["8d41","뛃",16,"뛕",8], -["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], -["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], -["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], -["8e61","럂",4,"럈럊",19], -["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], -["8f41","뢅",7,"뢎",17], -["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], -["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], -["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], -["9061","륾",5,"릆릈릋릌릏",15], -["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], -["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], -["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], -["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], -["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], -["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], -["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], -["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], -["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], -["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], -["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], -["9461","봞",5,"봥",6,"봭",12], -["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], -["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], -["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], -["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], -["9641","뺸",23,"뻒뻓"], -["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], -["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], -["9741","뾃",16,"뾕",8], -["9761","뾞",17,"뾱",7], -["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], -["9841","쁀",16,"쁒",5,"쁙쁚쁛"], -["9861","쁝쁞쁟쁡",6,"쁪",15], -["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], -["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], -["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], -["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], -["9a41","숤숥숦숧숪숬숮숰숳숵",16], -["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], -["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], -["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], -["9b61","쌳",17,"썆",7], -["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], -["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], -["9c61","쏿",8,"쐉",6,"쐑",9], -["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], -["9d41","쒪",13,"쒹쒺쒻쒽",8], -["9d61","쓆",25], -["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], -["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], -["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], -["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], -["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], -["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], -["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], -["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], -["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], -["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], -["a141","좥좦좧좩",18,"좾좿죀죁"], -["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], -["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], -["a241","줐줒",5,"줙",18], -["a261","줭",6,"줵",18], -["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], -["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], -["a361","즑",6,"즚즜즞",16], -["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], -["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], -["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], -["a481","쨦쨧쨨쨪",28,"ㄱ",93], -["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], -["a561","쩫",17,"쩾",5,"쪅쪆"], -["a581","쪇",16,"쪙",14,"ⅰ",9], -["a5b0","Ⅰ",9], -["a5c1","Α",16,"Σ",6], -["a5e1","α",16,"σ",6], -["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], -["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], -["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], -["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], -["a761","쬪",22,"쭂쭃쭄"], -["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], -["a841","쭭",10,"쭺",14], -["a861","쮉",18,"쮝",6], -["a881","쮤",19,"쮹",11,"ÆЪĦ"], -["a8a6","IJ"], -["a8a8","ĿŁØŒºÞŦŊ"], -["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], -["a941","쯅",14,"쯕",10], -["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], -["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], -["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], -["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], -["aa81","챳챴챶",29,"ぁ",82], -["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], -["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], -["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], -["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], -["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], -["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], -["acd1","а",5,"ёж",25], -["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], -["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], -["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], -["ae41","췆",5,"췍췎췏췑",16], -["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], -["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], -["af41","츬츭츮츯츲츴츶",19], -["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], -["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], -["b041","캚",5,"캢캦",5,"캮",12], -["b061","캻",5,"컂",19], -["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], -["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], -["b161","켥",6,"켮켲",5,"켹",11], -["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], -["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], -["b261","쾎",18,"쾢",5,"쾩"], -["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], -["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], -["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], -["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], -["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], -["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], -["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], -["b541","킕",14,"킦킧킩킪킫킭",5], -["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], -["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], -["b641","턅",7,"턎",17], -["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], -["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], -["b741","텮",13,"텽",6,"톅톆톇톉톊"], -["b761","톋",20,"톢톣톥톦톧"], -["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], -["b841","퇐",7,"퇙",17], -["b861","퇫",8,"퇵퇶퇷퇹",13], -["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], -["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], -["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], -["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], -["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], -["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], -["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], -["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], -["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], -["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], -["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], -["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], -["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], -["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], -["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], -["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], -["be41","퐸",7,"푁푂푃푅",14], -["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], -["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], -["bf41","풞",10,"풪",14], -["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], -["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], -["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], -["c061","픞",25], -["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], -["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], -["c161","햌햍햎햏햑",19,"햦햧"], -["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], -["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], -["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], -["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], -["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], -["c361","홢",4,"홨홪",5,"홲홳홵",11], -["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], -["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], -["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], -["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], -["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], -["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], -["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], -["c641","힍힎힏힑",6,"힚힜힞",5], -["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], -["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], -["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], -["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], -["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], -["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], -["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], -["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], -["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], -["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], -["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], -["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], -["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], -["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], -["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], -["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], -["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], -["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], -["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], -["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], -["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], -["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], -["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], -["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], -["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], -["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], -["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], -["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], -["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], -["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], -["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], -["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], -["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], -["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], -["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], -["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], -["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], -["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], -["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], -["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], -["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], -["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], -["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], -["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], -["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], -["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], -["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], -["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], -["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], -["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], -["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], -["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], -["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], -["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], -["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp950.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp950.json deleted file mode 100644 index d8bc8717..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/cp950.json +++ /dev/null @@ -1,177 +0,0 @@ -[ -["0","\u0000",127], -["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], -["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], -["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], -["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], -["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], -["a3a1","ㄐ",25,"˙ˉˊˇˋ"], -["a3e1","€"], -["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], -["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], -["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], -["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], -["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], -["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], -["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], -["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], -["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], -["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], -["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], -["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], -["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], -["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], -["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], -["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], -["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], -["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], -["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], -["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], -["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], -["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], -["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], -["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], -["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], -["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], -["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], -["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], -["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], -["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], -["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], -["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], -["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], -["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], -["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], -["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], -["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], -["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], -["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], -["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], -["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], -["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], -["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], -["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], -["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], -["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], -["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], -["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], -["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], -["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], -["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], -["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], -["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], -["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], -["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], -["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], -["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], -["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], -["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], -["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], -["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], -["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], -["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], -["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], -["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], -["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], -["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], -["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], -["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], -["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], -["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], -["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], -["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], -["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], -["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], -["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], -["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], -["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], -["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], -["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], -["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], -["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], -["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], -["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], -["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], -["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], -["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], -["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], -["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], -["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], -["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], -["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], -["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], -["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], -["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], -["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], -["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], -["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], -["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], -["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], -["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], -["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], -["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], -["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], -["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], -["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], -["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], -["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], -["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], -["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], -["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], -["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], -["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], -["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], -["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], -["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], -["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], -["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], -["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], -["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], -["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], -["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], -["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], -["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], -["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], -["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], -["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], -["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], -["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], -["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], -["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], -["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], -["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], -["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], -["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], -["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], -["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], -["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], -["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], -["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], -["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], -["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], -["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], -["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], -["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], -["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], -["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], -["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], -["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], -["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], -["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], -["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], -["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], -["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], -["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], -["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], -["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], -["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], -["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], -["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], -["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], -["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], -["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], -["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], -["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], -["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], -["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/eucjp.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/eucjp.json deleted file mode 100644 index 4fa61ca1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/eucjp.json +++ /dev/null @@ -1,182 +0,0 @@ -[ -["0","\u0000",127], -["8ea1","。",62], -["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], -["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], -["a2ba","∈∋⊆⊇⊂⊃∪∩"], -["a2ca","∧∨¬⇒⇔∀∃"], -["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["a2f2","ʼn♯♭♪†‡¶"], -["a2fe","◯"], -["a3b0","0",9], -["a3c1","A",25], -["a3e1","a",25], -["a4a1","ぁ",82], -["a5a1","ァ",85], -["a6a1","Α",16,"Σ",6], -["a6c1","α",16,"σ",6], -["a7a1","А",5,"ЁЖ",25], -["a7d1","а",5,"ёж",25], -["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["ada1","①",19,"Ⅰ",9], -["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], -["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], -["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], -["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], -["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], -["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], -["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], -["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], -["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], -["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], -["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], -["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], -["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], -["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], -["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], -["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], -["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], -["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], -["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], -["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], -["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], -["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], -["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], -["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], -["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], -["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], -["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], -["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], -["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], -["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], -["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], -["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], -["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], -["f4a1","堯槇遙瑤凜熙"], -["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], -["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], -["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["fcf1","ⅰ",9,"¬¦'""], -["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], -["8fa2c2","¡¦¿"], -["8fa2eb","ºª©®™¤№"], -["8fa6e1","ΆΈΉΊΪ"], -["8fa6e7","Ό"], -["8fa6e9","ΎΫ"], -["8fa6ec","Ώ"], -["8fa6f1","άέήίϊΐόςύϋΰώ"], -["8fa7c2","Ђ",10,"ЎЏ"], -["8fa7f2","ђ",10,"ўџ"], -["8fa9a1","ÆĐ"], -["8fa9a4","Ħ"], -["8fa9a6","IJ"], -["8fa9a8","ŁĿ"], -["8fa9ab","ŊØŒ"], -["8fa9af","ŦÞ"], -["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], -["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], -["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], -["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], -["8fabbd","ġĥíìïîǐ"], -["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], -["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], -["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], -["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], -["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], -["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], -["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], -["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], -["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], -["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], -["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], -["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], -["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], -["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], -["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], -["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], -["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], -["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], -["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], -["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], -["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], -["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], -["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], -["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], -["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], -["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], -["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], -["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], -["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], -["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], -["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], -["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], -["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], -["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], -["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], -["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], -["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], -["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], -["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], -["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], -["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], -["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], -["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], -["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], -["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], -["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], -["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], -["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], -["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], -["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], -["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], -["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], -["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], -["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], -["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], -["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], -["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], -["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], -["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], -["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], -["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], -["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], -["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json deleted file mode 100644 index 85c69347..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +++ /dev/null @@ -1 +0,0 @@ -{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gbk-added.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gbk-added.json deleted file mode 100644 index 8abfa9f7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/gbk-added.json +++ /dev/null @@ -1,55 +0,0 @@ -[ -["a140","",62], -["a180","",32], -["a240","",62], -["a280","",32], -["a2ab","",5], -["a2e3","€"], -["a2ef",""], -["a2fd",""], -["a340","",62], -["a380","",31," "], -["a440","",62], -["a480","",32], -["a4f4","",10], -["a540","",62], -["a580","",32], -["a5f7","",7], -["a640","",62], -["a680","",32], -["a6b9","",7], -["a6d9","",6], -["a6ec",""], -["a6f3",""], -["a6f6","",8], -["a740","",62], -["a780","",32], -["a7c2","",14], -["a7f2","",12], -["a896","",10], -["a8bc",""], -["a8bf","ǹ"], -["a8c1",""], -["a8ea","",20], -["a958",""], -["a95b",""], -["a95d",""], -["a989","〾⿰",11], -["a997","",12], -["a9f0","",14], -["aaa1","",93], -["aba1","",93], -["aca1","",93], -["ada1","",93], -["aea1","",93], -["afa1","",93], -["d7fa","",4], -["f8a1","",93], -["f9a1","",93], -["faa1","",93], -["fba1","",93], -["fca1","",93], -["fda1","",93], -["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], -["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/shiftjis.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/shiftjis.json deleted file mode 100644 index 5a3a43cf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/tables/shiftjis.json +++ /dev/null @@ -1,125 +0,0 @@ -[ -["0","\u0000",128], -["a1","。",62], -["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], -["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], -["81b8","∈∋⊆⊇⊂⊃∪∩"], -["81c8","∧∨¬⇒⇔∀∃"], -["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], -["81f0","ʼn♯♭♪†‡¶"], -["81fc","◯"], -["824f","0",9], -["8260","A",25], -["8281","a",25], -["829f","ぁ",82], -["8340","ァ",62], -["8380","ム",22], -["839f","Α",16,"Σ",6], -["83bf","α",16,"σ",6], -["8440","А",5,"ЁЖ",25], -["8470","а",5,"ёж",7], -["8480","о",17], -["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], -["8740","①",19,"Ⅰ",9], -["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], -["877e","㍻"], -["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], -["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], -["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], -["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], -["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], -["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], -["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], -["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], -["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], -["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], -["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], -["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], -["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], -["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], -["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], -["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], -["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], -["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], -["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], -["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], -["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], -["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], -["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], -["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], -["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], -["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], -["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], -["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], -["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], -["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], -["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], -["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], -["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], -["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], -["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], -["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], -["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], -["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], -["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], -["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], -["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], -["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], -["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], -["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], -["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], -["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], -["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], -["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], -["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], -["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], -["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], -["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], -["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], -["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], -["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], -["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], -["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], -["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], -["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], -["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], -["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], -["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], -["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], -["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], -["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], -["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], -["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], -["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], -["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], -["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], -["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], -["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], -["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], -["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], -["eeef","ⅰ",9,"¬¦'""], -["f040","",62], -["f080","",124], -["f140","",62], -["f180","",124], -["f240","",62], -["f280","",124], -["f340","",62], -["f380","",124], -["f440","",62], -["f480","",124], -["f540","",62], -["f580","",124], -["f640","",62], -["f680","",124], -["f740","",62], -["f780","",124], -["f840","",62], -["f880","",124], -["f940",""], -["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], -["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], -["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], -["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], -["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] -] diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf16.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf16.js deleted file mode 100644 index 399f5515..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf16.js +++ /dev/null @@ -1,174 +0,0 @@ -"use strict" - -// == UTF16-BE codec. ========================================================== - -exports.utf16be = Utf16BECodec; -function Utf16BECodec() { -} - -Utf16BECodec.prototype.encoder = Utf16BEEncoder; -Utf16BECodec.prototype.decoder = Utf16BEDecoder; -Utf16BECodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf16BEEncoder() { -} - -Utf16BEEncoder.prototype.write = function(str) { - var buf = new Buffer(str, 'ucs2'); - for (var i = 0; i < buf.length; i += 2) { - var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp; - } - return buf; -} - -Utf16BEEncoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf16BEDecoder() { - this.overflowByte = -1; -} - -Utf16BEDecoder.prototype.write = function(buf) { - if (buf.length == 0) - return ''; - - var buf2 = new Buffer(buf.length + 1), - i = 0, j = 0; - - if (this.overflowByte !== -1) { - buf2[0] = buf[0]; - buf2[1] = this.overflowByte; - i = 1; j = 2; - } - - for (; i < buf.length-1; i += 2, j+= 2) { - buf2[j] = buf[i+1]; - buf2[j+1] = buf[i]; - } - - this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1; - - return buf2.slice(0, j).toString('ucs2'); -} - -Utf16BEDecoder.prototype.end = function() { -} - - -// == UTF-16 codec ============================================================= -// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. -// Defaults to UTF-16LE, as it's prevalent and default in Node. -// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le -// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); - -// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). - -exports.utf16 = Utf16Codec; -function Utf16Codec(codecOptions, iconv) { - this.iconv = iconv; -} - -Utf16Codec.prototype.encoder = Utf16Encoder; -Utf16Codec.prototype.decoder = Utf16Decoder; - - -// -- Encoding (pass-through) - -function Utf16Encoder(options, codec) { - options = options || {}; - if (options.addBOM === undefined) - options.addBOM = true; - this.encoder = codec.iconv.getEncoder('utf-16le', options); -} - -Utf16Encoder.prototype.write = function(str) { - return this.encoder.write(str); -} - -Utf16Encoder.prototype.end = function() { - return this.encoder.end(); -} - - -// -- Decoding - -function Utf16Decoder(options, codec) { - this.decoder = null; - this.initialBytes = []; - this.initialBytesLen = 0; - - this.options = options || {}; - this.iconv = codec.iconv; -} - -Utf16Decoder.prototype.write = function(buf) { - if (!this.decoder) { - // Codec is not chosen yet. Accumulate initial bytes. - this.initialBytes.push(buf); - this.initialBytesLen += buf.length; - - if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below) - return ''; - - // We have enough bytes -> detect endianness. - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - this.initialBytes.length = this.initialBytesLen = 0; - } - - return this.decoder.write(buf); -} - -Utf16Decoder.prototype.end = function() { - if (!this.decoder) { - var buf = Buffer.concat(this.initialBytes), - encoding = detectEncoding(buf, this.options.defaultEncoding); - this.decoder = this.iconv.getDecoder(encoding, this.options); - - var res = this.decoder.write(buf), - trail = this.decoder.end(); - - return trail ? (res + trail) : res; - } - return this.decoder.end(); -} - -function detectEncoding(buf, defaultEncoding) { - var enc = defaultEncoding || 'utf-16le'; - - if (buf.length >= 2) { - // Check BOM. - if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM - enc = 'utf-16be'; - else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM - enc = 'utf-16le'; - else { - // No BOM found. Try to deduce encoding from initial content. - // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. - // So, we count ASCII as if it was LE or BE, and decide from that. - var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions - _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even. - - for (var i = 0; i < _len; i += 2) { - if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++; - if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++; - } - - if (asciiCharsBE > asciiCharsLE) - enc = 'utf-16be'; - else if (asciiCharsBE < asciiCharsLE) - enc = 'utf-16le'; - } - } - - return enc; -} - - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf7.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf7.js deleted file mode 100644 index bab5099f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/encodings/utf7.js +++ /dev/null @@ -1,289 +0,0 @@ -"use strict" - -// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 -// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 - -exports.utf7 = Utf7Codec; -exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7 -function Utf7Codec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7Codec.prototype.encoder = Utf7Encoder; -Utf7Codec.prototype.decoder = Utf7Decoder; -Utf7Codec.prototype.bomAware = true; - - -// -- Encoding - -var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; - -function Utf7Encoder(options, codec) { - this.iconv = codec.iconv; -} - -Utf7Encoder.prototype.write = function(str) { - // Naive implementation. - // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". - return new Buffer(str.replace(nonDirectChars, function(chunk) { - return "+" + (chunk === '+' ? '' : - this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) - + "-"; - }.bind(this))); -} - -Utf7Encoder.prototype.end = function() { -} - - -// -- Decoding - -function Utf7Decoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64Regex = /[A-Za-z0-9\/+]/; -var base64Chars = []; -for (var i = 0; i < 256; i++) - base64Chars[i] = base64Regex.test(String.fromCharCode(i)); - -var plusChar = '+'.charCodeAt(0), - minusChar = '-'.charCodeAt(0), - andChar = '&'.charCodeAt(0); - -Utf7Decoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '+' - if (buf[i] == plusChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64Chars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) {// "+-" -> "+" - res += "+"; - } else { - var b64str = base64Accum + buf.slice(lastI, i).toString(); - res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus is absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString(); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7Decoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - -// UTF-7-IMAP codec. -// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) -// Differences: -// * Base64 part is started by "&" instead of "+" -// * Direct characters are 0x20-0x7E, except "&" (0x26) -// * In Base64, "," is used instead of "/" -// * Base64 must not be used to represent direct characters. -// * No implicit shift back from Base64 (should always end with '-') -// * String must end in non-shifted position. -// * "-&" while in base64 is not allowed. - - -exports.utf7imap = Utf7IMAPCodec; -function Utf7IMAPCodec(codecOptions, iconv) { - this.iconv = iconv; -}; - -Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; -Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; -Utf7IMAPCodec.prototype.bomAware = true; - - -// -- Encoding - -function Utf7IMAPEncoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = new Buffer(6); - this.base64AccumIdx = 0; -} - -Utf7IMAPEncoder.prototype.write = function(str) { - var inBase64 = this.inBase64, - base64Accum = this.base64Accum, - base64AccumIdx = this.base64AccumIdx, - buf = new Buffer(str.length*5 + 10), bufIdx = 0; - - for (var i = 0; i < str.length; i++) { - var uChar = str.charCodeAt(i); - if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'. - if (inBase64) { - if (base64AccumIdx > 0) { - bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - inBase64 = false; - } - - if (!inBase64) { - buf[bufIdx++] = uChar; // Write direct character - - if (uChar === andChar) // Ampersand -> '&-' - buf[bufIdx++] = minusChar; - } - - } else { // Non-direct character - if (!inBase64) { - buf[bufIdx++] = andChar; // Write '&', then go to base64 mode. - inBase64 = true; - } - if (inBase64) { - base64Accum[base64AccumIdx++] = uChar >> 8; - base64Accum[base64AccumIdx++] = uChar & 0xFF; - - if (base64AccumIdx == base64Accum.length) { - bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx); - base64AccumIdx = 0; - } - } - } - } - - this.inBase64 = inBase64; - this.base64AccumIdx = base64AccumIdx; - - return buf.slice(0, bufIdx); -} - -Utf7IMAPEncoder.prototype.end = function() { - var buf = new Buffer(10), bufIdx = 0; - if (this.inBase64) { - if (this.base64AccumIdx > 0) { - bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx); - this.base64AccumIdx = 0; - } - - buf[bufIdx++] = minusChar; // Write '-', then go to direct mode. - this.inBase64 = false; - } - - return buf.slice(0, bufIdx); -} - - -// -- Decoding - -function Utf7IMAPDecoder(options, codec) { - this.iconv = codec.iconv; - this.inBase64 = false; - this.base64Accum = ''; -} - -var base64IMAPChars = base64Chars.slice(); -base64IMAPChars[','.charCodeAt(0)] = true; - -Utf7IMAPDecoder.prototype.write = function(buf) { - var res = "", lastI = 0, - inBase64 = this.inBase64, - base64Accum = this.base64Accum; - - // The decoder is more involved as we must handle chunks in stream. - // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). - - for (var i = 0; i < buf.length; i++) { - if (!inBase64) { // We're in direct mode. - // Write direct chars until '&' - if (buf[i] == andChar) { - res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars. - lastI = i+1; - inBase64 = true; - } - } else { // We decode base64. - if (!base64IMAPChars[buf[i]]) { // Base64 ended. - if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" - res += "&"; - } else { - var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/'); - res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be"); - } - - if (buf[i] != minusChar) // Minus may be absorbed after base64. - i--; - - lastI = i+1; - inBase64 = false; - base64Accum = ''; - } - } - } - - if (!inBase64) { - res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars. - } else { - var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/'); - - var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. - base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future. - b64str = b64str.slice(0, canBeDecoded); - - res += this.iconv.decode(new Buffer(b64str, 'base64'), "utf16-be"); - } - - this.inBase64 = inBase64; - this.base64Accum = base64Accum; - - return res; -} - -Utf7IMAPDecoder.prototype.end = function() { - var res = ""; - if (this.inBase64 && this.base64Accum.length > 0) - res = this.iconv.decode(new Buffer(this.base64Accum, 'base64'), "utf16-be"); - - this.inBase64 = false; - this.base64Accum = ''; - return res; -} - - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/bom-handling.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/bom-handling.js deleted file mode 100644 index 3f0ed93a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/bom-handling.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict" - -var BOMChar = '\uFEFF'; - -exports.PrependBOM = PrependBOMWrapper -function PrependBOMWrapper(encoder, options) { - this.encoder = encoder; - this.addBOM = true; -} - -PrependBOMWrapper.prototype.write = function(str) { - if (this.addBOM) { - str = BOMChar + str; - this.addBOM = false; - } - - return this.encoder.write(str); -} - -PrependBOMWrapper.prototype.end = function() { - return this.encoder.end(); -} - - -//------------------------------------------------------------------------------ - -exports.StripBOM = StripBOMWrapper; -function StripBOMWrapper(decoder, options) { - this.decoder = decoder; - this.pass = false; - this.options = options || {}; -} - -StripBOMWrapper.prototype.write = function(buf) { - var res = this.decoder.write(buf); - if (this.pass || !res) - return res; - - if (res[0] === BOMChar) { - res = res.slice(1); - if (typeof this.options.stripBOM === 'function') - this.options.stripBOM(); - } - - this.pass = true; - return res; -} - -StripBOMWrapper.prototype.end = function() { - return this.decoder.end(); -} - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/extend-node.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/extend-node.js deleted file mode 100644 index 1d8c953d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/extend-node.js +++ /dev/null @@ -1,214 +0,0 @@ -"use strict" - -// == Extend Node primitives to use iconv-lite ================================= - -module.exports = function (iconv) { - var original = undefined; // Place to keep original methods. - - // Node authors rewrote Buffer internals to make it compatible with - // Uint8Array and we cannot patch key functions since then. - iconv.supportsNodeEncodingsExtension = !(new Buffer(0) instanceof Uint8Array); - - iconv.extendNodeEncodings = function extendNodeEncodings() { - if (original) return; - original = {}; - - if (!iconv.supportsNodeEncodingsExtension) { - console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); - console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); - return; - } - - var nodeNativeEncodings = { - 'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, - 'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true, - }; - - Buffer.isNativeEncoding = function(enc) { - return enc && nodeNativeEncodings[enc.toLowerCase()]; - } - - // -- SlowBuffer ----------------------------------------------------------- - var SlowBuffer = require('buffer').SlowBuffer; - - original.SlowBufferToString = SlowBuffer.prototype.toString; - SlowBuffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferToString.call(this, encoding, start, end); - - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } - - original.SlowBufferWrite = SlowBuffer.prototype.write; - SlowBuffer.prototype.write = function(string, offset, length, encoding) { - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.SlowBufferWrite.call(this, string, offset, length, encoding); - - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); - - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - } - - // -- Buffer --------------------------------------------------------------- - - original.BufferIsEncoding = Buffer.isEncoding; - Buffer.isEncoding = function(encoding) { - return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding); - } - - original.BufferByteLength = Buffer.byteLength; - Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferByteLength.call(this, str, encoding); - - // Slow, I know, but we don't have a better way yet. - return iconv.encode(str, encoding).length; - } - - original.BufferToString = Buffer.prototype.toString; - Buffer.prototype.toString = function(encoding, start, end) { - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferToString.call(this, encoding, start, end); - - // Otherwise, use our decoding method. - if (typeof start == 'undefined') start = 0; - if (typeof end == 'undefined') end = this.length; - return iconv.decode(this.slice(start, end), encoding); - } - - original.BufferWrite = Buffer.prototype.write; - Buffer.prototype.write = function(string, offset, length, encoding) { - var _offset = offset, _length = length, _encoding = encoding; - // Support both (string, offset, length, encoding) - // and the legacy (string, encoding, offset, length) - if (isFinite(offset)) { - if (!isFinite(length)) { - encoding = length; - length = undefined; - } - } else { // legacy - var swap = encoding; - encoding = offset; - offset = length; - length = swap; - } - - encoding = String(encoding || 'utf8').toLowerCase(); - - // Use native conversion when possible - if (Buffer.isNativeEncoding(encoding)) - return original.BufferWrite.call(this, string, _offset, _length, _encoding); - - offset = +offset || 0; - var remaining = this.length - offset; - if (!length) { - length = remaining; - } else { - length = +length; - if (length > remaining) { - length = remaining; - } - } - - if (string.length > 0 && (length < 0 || offset < 0)) - throw new RangeError('attempt to write beyond buffer bounds'); - - // Otherwise, use our encoding method. - var buf = iconv.encode(string, encoding); - if (buf.length < length) length = buf.length; - buf.copy(this, offset, 0, length); - return length; - - // TODO: Set _charsWritten. - } - - - // -- Readable ------------------------------------------------------------- - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; - - original.ReadableSetEncoding = Readable.prototype.setEncoding; - Readable.prototype.setEncoding = function setEncoding(enc, options) { - // Use our own decoder, it has the same interface. - // We cannot use original function as it doesn't handle BOM-s. - this._readableState.decoder = iconv.getDecoder(enc, options); - this._readableState.encoding = enc; - } - - Readable.prototype.collect = iconv._collect; - } - } - - // Remove iconv-lite Node primitive extensions. - iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { - if (!iconv.supportsNodeEncodingsExtension) - return; - if (!original) - throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.") - - delete Buffer.isNativeEncoding; - - var SlowBuffer = require('buffer').SlowBuffer; - - SlowBuffer.prototype.toString = original.SlowBufferToString; - SlowBuffer.prototype.write = original.SlowBufferWrite; - - Buffer.isEncoding = original.BufferIsEncoding; - Buffer.byteLength = original.BufferByteLength; - Buffer.prototype.toString = original.BufferToString; - Buffer.prototype.write = original.BufferWrite; - - if (iconv.supportsStreams) { - var Readable = require('stream').Readable; - - Readable.prototype.setEncoding = original.ReadableSetEncoding; - delete Readable.prototype.collect; - } - - original = undefined; - } -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/index.js deleted file mode 100644 index ac1403c5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/index.js +++ /dev/null @@ -1,141 +0,0 @@ -"use strict" - -var bomHandling = require('./bom-handling'), - iconv = module.exports; - -// All codecs and aliases are kept here, keyed by encoding name/alias. -// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. -iconv.encodings = null; - -// Characters emitted in case of error. -iconv.defaultCharUnicode = '�'; -iconv.defaultCharSingleByte = '?'; - -// Public API. -iconv.encode = function encode(str, encoding, options) { - str = "" + (str || ""); // Ensure string. - - var encoder = iconv.getEncoder(encoding, options); - - var res = encoder.write(str); - var trail = encoder.end(); - - return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res; -} - -iconv.decode = function decode(buf, encoding, options) { - if (typeof buf === 'string') { - if (!iconv.skipDecodeWarning) { - console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding'); - iconv.skipDecodeWarning = true; - } - - buf = new Buffer("" + (buf || ""), "binary"); // Ensure buffer. - } - - var decoder = iconv.getDecoder(encoding, options); - - var res = decoder.write(buf); - var trail = decoder.end(); - - return trail ? (res + trail) : res; -} - -iconv.encodingExists = function encodingExists(enc) { - try { - iconv.getCodec(enc); - return true; - } catch (e) { - return false; - } -} - -// Legacy aliases to convert functions -iconv.toEncoding = iconv.encode; -iconv.fromEncoding = iconv.decode; - -// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. -iconv._codecDataCache = {}; -iconv.getCodec = function getCodec(encoding) { - if (!iconv.encodings) - iconv.encodings = require("../encodings"); // Lazy load all encoding definitions. - - // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. - var enc = (''+encoding).toLowerCase().replace(/[^0-9a-z]|:\d{4}$/g, ""); - - // Traverse iconv.encodings to find actual codec. - var codecOptions = {}; - while (true) { - var codec = iconv._codecDataCache[enc]; - if (codec) - return codec; - - var codecDef = iconv.encodings[enc]; - - switch (typeof codecDef) { - case "string": // Direct alias to other encoding. - enc = codecDef; - break; - - case "object": // Alias with options. Can be layered. - for (var key in codecDef) - codecOptions[key] = codecDef[key]; - - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - enc = codecDef.type; - break; - - case "function": // Codec itself. - if (!codecOptions.encodingName) - codecOptions.encodingName = enc; - - // The codec function must load all tables and return object with .encoder and .decoder methods. - // It'll be called only once (for each different options object). - codec = new codecDef(codecOptions, iconv); - - iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later. - return codec; - - default: - throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')"); - } - } -} - -iconv.getEncoder = function getEncoder(encoding, options) { - var codec = iconv.getCodec(encoding), - encoder = new codec.encoder(options, codec); - - if (codec.bomAware && options && options.addBOM) - encoder = new bomHandling.PrependBOM(encoder, options); - - return encoder; -} - -iconv.getDecoder = function getDecoder(encoding, options) { - var codec = iconv.getCodec(encoding), - decoder = new codec.decoder(options, codec); - - if (codec.bomAware && !(options && options.stripBOM === false)) - decoder = new bomHandling.StripBOM(decoder, options); - - return decoder; -} - - -// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json. -var nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node; -if (nodeVer) { - - // Load streaming support in Node v0.10+ - var nodeVerArr = nodeVer.split(".").map(Number); - if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { - require("./streams")(iconv); - } - - // Load Node primitive extensions. - require("./extend-node")(iconv); -} - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/streams.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/streams.js deleted file mode 100644 index c95b26c5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/lib/streams.js +++ /dev/null @@ -1,120 +0,0 @@ -"use strict" - -var Transform = require("stream").Transform; - - -// == Exports ================================================================== -module.exports = function(iconv) { - - // Additional Public API. - iconv.encodeStream = function encodeStream(encoding, options) { - return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); - } - - iconv.decodeStream = function decodeStream(encoding, options) { - return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); - } - - iconv.supportsStreams = true; - - - // Not published yet. - iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; - iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; - iconv._collect = IconvLiteDecoderStream.prototype.collect; -}; - - -// == Encoder stream ======================================================= -function IconvLiteEncoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.decodeStrings = false; // We accept only strings, so we don't need to decode them. - Transform.call(this, options); -} - -IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteEncoderStream } -}); - -IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { - if (typeof chunk != 'string') - return done(new Error("Iconv encoding stream needs strings as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteEncoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteEncoderStream.prototype.collect = function(cb) { - var chunks = []; - this.on('error', cb); - this.on('data', function(chunk) { chunks.push(chunk); }); - this.on('end', function() { - cb(null, Buffer.concat(chunks)); - }); - return this; -} - - -// == Decoder stream ======================================================= -function IconvLiteDecoderStream(conv, options) { - this.conv = conv; - options = options || {}; - options.encoding = this.encoding = 'utf8'; // We output strings. - Transform.call(this, options); -} - -IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { - constructor: { value: IconvLiteDecoderStream } -}); - -IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { - if (!Buffer.isBuffer(chunk)) - return done(new Error("Iconv decoding stream needs buffers as its input.")); - try { - var res = this.conv.write(chunk); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteDecoderStream.prototype._flush = function(done) { - try { - var res = this.conv.end(); - if (res && res.length) this.push(res, this.encoding); - done(); - } - catch (e) { - done(e); - } -} - -IconvLiteDecoderStream.prototype.collect = function(cb) { - var res = ''; - this.on('error', cb); - this.on('data', function(chunk) { res += chunk; }); - this.on('end', function() { - cb(null, res); - }); - return this; -} - diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/package.json b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/package.json deleted file mode 100644 index 616f8e73..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/iconv-lite/package.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "_args": [ - [ - "iconv-lite@^0.4.8", - "/Volumes/Source/vim/node_modules/copy-paste" - ] - ], - "_from": "iconv-lite@>=0.4.8 <0.5.0", - "_id": "iconv-lite@0.4.13", - "_inCache": true, - "_installable": true, - "_location": "/iconv-lite", - "_nodeVersion": "4.1.1", - "_npmUser": { - "email": "ashtuchkin@gmail.com", - "name": "ashtuchkin" - }, - "_npmVersion": "2.14.4", - "_phantomChildren": {}, - "_requested": { - "name": "iconv-lite", - "raw": "iconv-lite@^0.4.8", - "rawSpec": "^0.4.8", - "scope": null, - "spec": ">=0.4.8 <0.5.0", - "type": "range" - }, - "_requiredBy": [ - "/copy-paste" - ], - "_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", - "_shasum": "1f88aba4ab0b1508e8312acc39345f36e992e2f2", - "_shrinkwrap": null, - "_spec": "iconv-lite@^0.4.8", - "_where": "/Volumes/Source/vim/node_modules/copy-paste", - "author": { - "email": "ashtuchkin@gmail.com", - "name": "Alexander Shtuchkin" - }, - "browser": { - "./extend-node": false, - "./streams": false - }, - "bugs": { - "url": "https://github.com/ashtuchkin/iconv-lite/issues" - }, - "contributors": [ - { - "name": "Jinwu Zhan", - "url": "https://github.com/jenkinv" - }, - { - "name": "Adamansky Anton", - "url": "https://github.com/adamansky" - }, - { - "name": "George Stagas", - "url": "https://github.com/stagas" - }, - { - "name": "Mike D Pilsbury", - "url": "https://github.com/pekim" - }, - { - "name": "Niggler", - "url": "https://github.com/Niggler" - }, - { - "name": "wychi", - "url": "https://github.com/wychi" - }, - { - "name": "David Kuo", - "url": "https://github.com/david50407" - }, - { - "name": "ChangZhuo Chen", - "url": "https://github.com/czchen" - }, - { - "name": "Lee Treveil", - "url": "https://github.com/leetreveil" - }, - { - "name": "Brian White", - "url": "https://github.com/mscdex" - }, - { - "name": "Mithgol", - "url": "https://github.com/Mithgol" - }, - { - "name": "Nazar Leush", - "url": "https://github.com/nleush" - } - ], - "dependencies": {}, - "description": "Convert character encodings in pure javascript.", - "devDependencies": { - "async": "*", - "errto": "*", - "iconv": "2.1", - "istanbul": "*", - "mocha": "*", - "request": "2.47", - "unorm": "*" - }, - "directories": {}, - "dist": { - "shasum": "1f88aba4ab0b1508e8312acc39345f36e992e2f2", - "tarball": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz" - }, - "engines": { - "node": ">=0.8.0" - }, - "gitHead": "f5ec51b1e7dd1477a3570824960641eebdc5fbc6", - "homepage": "https://github.com/ashtuchkin/iconv-lite", - "keywords": [ - "iconv", - "convert", - "charset", - "icu" - ], - "license": "MIT", - "main": "./lib/index.js", - "maintainers": [ - { - "email": "ashtuchkin@gmail.com", - "name": "ashtuchkin" - } - ], - "name": "iconv-lite", - "optionalDependencies": {}, - "readme": "ERROR: No README data found!", - "repository": { - "type": "git", - "url": "git://github.com/ashtuchkin/iconv-lite.git" - }, - "scripts": { - "coverage": "istanbul cover _mocha -- --grep .", - "coverage-open": "open coverage/lcov-report/index.html", - "test": "mocha --reporter spec --grep ." - }, - "version": "0.4.13" -} diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/LICENSE b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/LICENSE deleted file mode 100644 index e0c69d56..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/LICENSE +++ /dev/null @@ -1,47 +0,0 @@ -Copyright jQuery Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -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. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/README.md b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/README.md deleted file mode 100644 index 2052e053..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# lodash v4.15.0 - -The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules. - -## Installation - -Using npm: -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash -``` - -In Node.js: -```js -// Load the full build. -var _ = require('lodash'); -// Load the core build. -var _ = require('lodash/core'); -// Load the fp build for immutable auto-curried iteratee-first data-last methods. -var fp = require('lodash/fp'); - -// Load a method category. -var array = require('lodash/array'); -var object = require('lodash/fp/object'); - -// Load a single method for smaller builds with browserify/rollup/webpack. -var chunk = require('lodash/chunk'); -var extend = require('lodash/fp/extend'); -``` - -See the [package source](https://github.com/lodash/lodash/tree/4.15.0-npm) for more details. - -**Note:**
      -Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` in the Node.js < 6 REPL.
      -Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes `lodash` by default. - -## Support - -Tested in Chrome 51-52, Firefox 47-48, IE 9-11, Edge 14, Safari 8-9, Node.js 0.10-6, & PhantomJS 2.1.1.
      -Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_DataView.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_DataView.js deleted file mode 100644 index ac2d57ca..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_DataView.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); - -module.exports = DataView; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Hash.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Hash.js deleted file mode 100644 index 667d5ab5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Hash.js +++ /dev/null @@ -1,32 +0,0 @@ -var hashClear = require('./_hashClear'), - hashDelete = require('./_hashDelete'), - hashGet = require('./_hashGet'), - hashHas = require('./_hashHas'), - hashSet = require('./_hashSet'); - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; - -module.exports = Hash; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LazyWrapper.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LazyWrapper.js deleted file mode 100644 index 81786c7f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LazyWrapper.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseCreate = require('./_baseCreate'), - baseLodash = require('./_baseLodash'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295; - -/** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ -function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; -} - -// Ensure `LazyWrapper` is an instance of `baseLodash`. -LazyWrapper.prototype = baseCreate(baseLodash.prototype); -LazyWrapper.prototype.constructor = LazyWrapper; - -module.exports = LazyWrapper; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_ListCache.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_ListCache.js deleted file mode 100644 index 73f46450..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_ListCache.js +++ /dev/null @@ -1,32 +0,0 @@ -var listCacheClear = require('./_listCacheClear'), - listCacheDelete = require('./_listCacheDelete'), - listCacheGet = require('./_listCacheGet'), - listCacheHas = require('./_listCacheHas'), - listCacheSet = require('./_listCacheSet'); - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; - -module.exports = ListCache; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LodashWrapper.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LodashWrapper.js deleted file mode 100644 index c1e4d9df..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_LodashWrapper.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseCreate = require('./_baseCreate'), - baseLodash = require('./_baseLodash'); - -/** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ -function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; -} - -LodashWrapper.prototype = baseCreate(baseLodash.prototype); -LodashWrapper.prototype.constructor = LodashWrapper; - -module.exports = LodashWrapper; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Map.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Map.js deleted file mode 100644 index b73f29a0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Map.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); - -module.exports = Map; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_MapCache.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_MapCache.js deleted file mode 100644 index 69f03a4a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_MapCache.js +++ /dev/null @@ -1,32 +0,0 @@ -var mapCacheClear = require('./_mapCacheClear'), - mapCacheDelete = require('./_mapCacheDelete'), - mapCacheGet = require('./_mapCacheGet'), - mapCacheHas = require('./_mapCacheHas'), - mapCacheSet = require('./_mapCacheSet'); - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} - -// Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; - -module.exports = MapCache; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Promise.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Promise.js deleted file mode 100644 index 247b9e1b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Promise.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Promise = getNative(root, 'Promise'); - -module.exports = Promise; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Set.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Set.js deleted file mode 100644 index b3c8dcbf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Set.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); - -module.exports = Set; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_SetCache.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_SetCache.js deleted file mode 100644 index a80efd58..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_SetCache.js +++ /dev/null @@ -1,27 +0,0 @@ -var MapCache = require('./_MapCache'), - setCacheAdd = require('./_setCacheAdd'), - setCacheHas = require('./_setCacheHas'); - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values ? values.length : 0; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} - -// Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; - -module.exports = SetCache; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Stack.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Stack.js deleted file mode 100644 index b9ba1af3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Stack.js +++ /dev/null @@ -1,26 +0,0 @@ -var ListCache = require('./_ListCache'), - stackClear = require('./_stackClear'), - stackDelete = require('./_stackDelete'), - stackGet = require('./_stackGet'), - stackHas = require('./_stackHas'), - stackSet = require('./_stackSet'); - -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - this.__data__ = new ListCache(entries); -} - -// Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; - -module.exports = Stack; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Symbol.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Symbol.js deleted file mode 100644 index a013f7c5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Symbol.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Built-in value references. */ -var Symbol = root.Symbol; - -module.exports = Symbol; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Uint8Array.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Uint8Array.js deleted file mode 100644 index 2fb30e15..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_Uint8Array.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; - -module.exports = Uint8Array; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_WeakMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_WeakMap.js deleted file mode 100644 index 567f86c6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_WeakMap.js +++ /dev/null @@ -1,7 +0,0 @@ -var getNative = require('./_getNative'), - root = require('./_root'); - -/* Built-in method references that are verified to be native. */ -var WeakMap = getNative(root, 'WeakMap'); - -module.exports = WeakMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addMapEntry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addMapEntry.js deleted file mode 100644 index 5a692121..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addMapEntry.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Adds the key-value `pair` to `map`. - * - * @private - * @param {Object} map The map to modify. - * @param {Array} pair The key-value pair to add. - * @returns {Object} Returns `map`. - */ -function addMapEntry(map, pair) { - // Don't return `map.set` because it's not chainable in IE 11. - map.set(pair[0], pair[1]); - return map; -} - -module.exports = addMapEntry; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addSetEntry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addSetEntry.js deleted file mode 100644 index 1a07b708..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_addSetEntry.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Adds `value` to `set`. - * - * @private - * @param {Object} set The set to modify. - * @param {*} value The value to add. - * @returns {Object} Returns `set`. - */ -function addSetEntry(set, value) { - // Don't return `set.add` because it's not chainable in IE 11. - set.add(value); - return set; -} - -module.exports = addSetEntry; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_apply.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_apply.js deleted file mode 100644 index 36436dda..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_apply.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} - -module.exports = apply; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayAggregator.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayAggregator.js deleted file mode 100644 index 7ca498a8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayAggregator.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; -} - -module.exports = arrayAggregator; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEach.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEach.js deleted file mode 100644 index 5f770bcb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEach.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; -} - -module.exports = arrayEach; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEachRight.js deleted file mode 100644 index 72e780ca..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEachRight.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEachRight(array, iteratee) { - var length = array ? array.length : 0; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; -} - -module.exports = arrayEachRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEvery.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEvery.js deleted file mode 100644 index f4fb4254..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayEvery.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ -function arrayEvery(array, predicate) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; -} - -module.exports = arrayEvery; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayFilter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayFilter.js deleted file mode 100644 index b904fda6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayFilter.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array ? array.length : 0, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; -} - -module.exports = arrayFilter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludes.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludes.js deleted file mode 100644 index be53e60d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludes.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array ? array.length : 0; - return !!length && baseIndexOf(array, value, 0) > -1; -} - -module.exports = arrayIncludes; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludesWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludesWith.js deleted file mode 100644 index 72ff0c8e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayIncludesWith.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; -} - -module.exports = arrayIncludesWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayLikeKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayLikeKeys.js deleted file mode 100644 index 0cb3b185..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayLikeKeys.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseTimes = require('./_baseTimes'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isIndex = require('./_isIndex'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); - } - } - return result; -} - -module.exports = arrayLikeKeys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayMap.js deleted file mode 100644 index 748bdbe6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayMap.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array ? array.length : 0, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} - -module.exports = arrayMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayPush.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayPush.js deleted file mode 100644 index 7d742b38..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayPush.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} - -module.exports = arrayPush; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduce.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduce.js deleted file mode 100644 index 57c8727a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduce.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array ? array.length : 0; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; -} - -module.exports = arrayReduce; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduceRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduceRight.js deleted file mode 100644 index 4c85ee63..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arrayReduceRight.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array ? array.length : 0; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; -} - -module.exports = arrayReduceRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arraySome.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arraySome.js deleted file mode 100644 index 9b6e5d17..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_arraySome.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} - -module.exports = arraySome; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiSize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiSize.js deleted file mode 100644 index 11d29c33..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiSize.js +++ /dev/null @@ -1,12 +0,0 @@ -var baseProperty = require('./_baseProperty'); - -/** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -var asciiSize = baseProperty('length'); - -module.exports = asciiSize; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiToArray.js deleted file mode 100644 index 8e3dd5b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiToArray.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function asciiToArray(string) { - return string.split(''); -} - -module.exports = asciiToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiWords.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiWords.js deleted file mode 100644 index d765f0f7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_asciiWords.js +++ /dev/null @@ -1,15 +0,0 @@ -/** Used to match words composed of alphanumeric characters. */ -var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - -/** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function asciiWords(string) { - return string.match(reAsciiWord) || []; -} - -module.exports = asciiWords; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignInDefaults.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignInDefaults.js deleted file mode 100644 index ea6b0e35..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignInDefaults.js +++ /dev/null @@ -1,27 +0,0 @@ -var eq = require('./eq'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used by `_.defaults` to customize its `_.assignIn` use. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ -function assignInDefaults(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; -} - -module.exports = assignInDefaults; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignMergeValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignMergeValue.js deleted file mode 100644 index 61dd5832..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignMergeValue.js +++ /dev/null @@ -1,19 +0,0 @@ -var eq = require('./eq'); - -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (typeof key == 'number' && value === undefined && !(key in object))) { - object[key] = value; - } -} - -module.exports = assignMergeValue; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignValue.js deleted file mode 100644 index aa1dc78e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assignValue.js +++ /dev/null @@ -1,27 +0,0 @@ -var eq = require('./eq'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - object[key] = value; - } -} - -module.exports = assignValue; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assocIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assocIndexOf.js deleted file mode 100644 index 5b77a2bd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_assocIndexOf.js +++ /dev/null @@ -1,21 +0,0 @@ -var eq = require('./eq'); - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} - -module.exports = assocIndexOf; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAggregator.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAggregator.js deleted file mode 100644 index 4bc9e91f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAggregator.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ -function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; -} - -module.exports = baseAggregator; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAssign.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAssign.js deleted file mode 100644 index e5c4a1a5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAssign.js +++ /dev/null @@ -1,17 +0,0 @@ -var copyObject = require('./_copyObject'), - keys = require('./keys'); - -/** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); -} - -module.exports = baseAssign; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAt.js deleted file mode 100644 index ed67d9bd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseAt.js +++ /dev/null @@ -1,23 +0,0 @@ -var get = require('./get'); - -/** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths of elements to pick. - * @returns {Array} Returns the picked elements. - */ -function baseAt(object, paths) { - var index = -1, - isNil = object == null, - length = paths.length, - result = Array(length); - - while (++index < length) { - result[index] = isNil ? undefined : get(object, paths[index]); - } - return result; -} - -module.exports = baseAt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClamp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClamp.js deleted file mode 100644 index a1c56929..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClamp.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ -function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; -} - -module.exports = baseClamp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClone.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClone.js deleted file mode 100644 index fce3c0c0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseClone.js +++ /dev/null @@ -1,139 +0,0 @@ -var Stack = require('./_Stack'), - arrayEach = require('./_arrayEach'), - assignValue = require('./_assignValue'), - baseAssign = require('./_baseAssign'), - cloneBuffer = require('./_cloneBuffer'), - copyArray = require('./_copyArray'), - copySymbols = require('./_copySymbols'), - getAllKeys = require('./_getAllKeys'), - getTag = require('./_getTag'), - initCloneArray = require('./_initCloneArray'), - initCloneByTag = require('./_initCloneByTag'), - initCloneObject = require('./_initCloneObject'), - isArray = require('./isArray'), - isBuffer = require('./isBuffer'), - isHostObject = require('./_isHostObject'), - isObject = require('./isObject'), - keys = require('./keys'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values supported by `_.clone`. */ -var cloneableTags = {}; -cloneableTags[argsTag] = cloneableTags[arrayTag] = -cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = -cloneableTags[boolTag] = cloneableTags[dateTag] = -cloneableTags[float32Tag] = cloneableTags[float64Tag] = -cloneableTags[int8Tag] = cloneableTags[int16Tag] = -cloneableTags[int32Tag] = cloneableTags[mapTag] = -cloneableTags[numberTag] = cloneableTags[objectTag] = -cloneableTags[regexpTag] = cloneableTags[setTag] = -cloneableTags[stringTag] = cloneableTags[symbolTag] = -cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = -cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; -cloneableTags[errorTag] = cloneableTags[funcTag] = -cloneableTags[weakMapTag] = false; - -/** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {boolean} [isFull] Specify a clone including symbols. - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ -function baseClone(value, isDeep, isFull, customizer, key, object, stack) { - var result; - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - if (isHostObject(value)) { - return object ? value : {}; - } - result = initCloneObject(isFunc ? {} : value); - if (!isDeep) { - return copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, baseClone, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (!isArr) { - var props = isFull ? getAllKeys(value) : keys(value); - } - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); - }); - return result; -} - -module.exports = baseClone; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConforms.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConforms.js deleted file mode 100644 index 947e20d4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConforms.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConformsTo = require('./_baseConformsTo'), - keys = require('./keys'); - -/** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ -function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; -} - -module.exports = baseConforms; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConformsTo.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConformsTo.js deleted file mode 100644 index e449cb84..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseConformsTo.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ -function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; -} - -module.exports = baseConformsTo; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseCreate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseCreate.js deleted file mode 100644 index 4372cad2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseCreate.js +++ /dev/null @@ -1,18 +0,0 @@ -var isObject = require('./isObject'); - -/** Built-in value references. */ -var objectCreate = Object.create; - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ -function baseCreate(proto) { - return isObject(proto) ? objectCreate(proto) : {}; -} - -module.exports = baseCreate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDelay.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDelay.js deleted file mode 100644 index f2108774..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDelay.js +++ /dev/null @@ -1,21 +0,0 @@ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ -function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); -} - -module.exports = baseDelay; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDifference.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDifference.js deleted file mode 100644 index dcccad33..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseDifference.js +++ /dev/null @@ -1,67 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - arrayMap = require('./_arrayMap'), - baseUnary = require('./_baseUnary'), - cacheHas = require('./_cacheHas'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ -function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; -} - -module.exports = baseDifference; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEach.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEach.js deleted file mode 100644 index 512c0676..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEach.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseForOwn = require('./_baseForOwn'), - createBaseEach = require('./_createBaseEach'); - -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = createBaseEach(baseForOwn); - -module.exports = baseEach; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEachRight.js deleted file mode 100644 index 0a8feeca..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEachRight.js +++ /dev/null @@ -1,14 +0,0 @@ -var baseForOwnRight = require('./_baseForOwnRight'), - createBaseEach = require('./_createBaseEach'); - -/** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEachRight = createBaseEach(baseForOwnRight, true); - -module.exports = baseEachRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEvery.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEvery.js deleted file mode 100644 index fa52f7bc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseEvery.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ -function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; -} - -module.exports = baseEvery; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseExtremum.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseExtremum.js deleted file mode 100644 index 9d6aa77e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseExtremum.js +++ /dev/null @@ -1,32 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ -function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; -} - -module.exports = baseExtremum; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFill.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFill.js deleted file mode 100644 index 46ef9c76..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFill.js +++ /dev/null @@ -1,32 +0,0 @@ -var toInteger = require('./toInteger'), - toLength = require('./toLength'); - -/** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ -function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; -} - -module.exports = baseFill; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFilter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFilter.js deleted file mode 100644 index 46784773..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFilter.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; -} - -module.exports = baseFilter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindIndex.js deleted file mode 100644 index e3f5d8aa..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindIndex.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -module.exports = baseFindIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindKey.js deleted file mode 100644 index 2e430f3a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFindKey.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ -function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; -} - -module.exports = baseFindKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFlatten.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFlatten.js deleted file mode 100644 index 4b1e009b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFlatten.js +++ /dev/null @@ -1,38 +0,0 @@ -var arrayPush = require('./_arrayPush'), - isFlattenable = require('./_isFlattenable'); - -/** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ -function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; -} - -module.exports = baseFlatten; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFor.js deleted file mode 100644 index d946590f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFor.js +++ /dev/null @@ -1,16 +0,0 @@ -var createBaseFor = require('./_createBaseFor'); - -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); - -module.exports = baseFor; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwn.js deleted file mode 100644 index 503d5234..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwn.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseFor = require('./_baseFor'), - keys = require('./keys'); - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} - -module.exports = baseForOwn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwnRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwnRight.js deleted file mode 100644 index a4b10e6c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForOwnRight.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseForRight = require('./_baseForRight'), - keys = require('./keys'); - -/** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); -} - -module.exports = baseForOwnRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForRight.js deleted file mode 100644 index 32842cd8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseForRight.js +++ /dev/null @@ -1,15 +0,0 @@ -var createBaseFor = require('./_createBaseFor'); - -/** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseForRight = createBaseFor(true); - -module.exports = baseForRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFunctions.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFunctions.js deleted file mode 100644 index d23bc9b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseFunctions.js +++ /dev/null @@ -1,19 +0,0 @@ -var arrayFilter = require('./_arrayFilter'), - isFunction = require('./isFunction'); - -/** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ -function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); -} - -module.exports = baseFunctions; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGet.js deleted file mode 100644 index 886720bb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGet.js +++ /dev/null @@ -1,25 +0,0 @@ -var castPath = require('./_castPath'), - isKey = require('./_isKey'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} - -module.exports = baseGet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetAllKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetAllKeys.js deleted file mode 100644 index 8ad204ea..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetAllKeys.js +++ /dev/null @@ -1,20 +0,0 @@ -var arrayPush = require('./_arrayPush'), - isArray = require('./isArray'); - -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} - -module.exports = baseGetAllKeys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetTag.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetTag.js deleted file mode 100644 index c8b9e394..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGetTag.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - return objectToString.call(value); -} - -module.exports = baseGetTag; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGt.js deleted file mode 100644 index 502d273c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseGt.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ -function baseGt(value, other) { - return value > other; -} - -module.exports = baseGt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHas.js deleted file mode 100644 index 1b730321..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHas.js +++ /dev/null @@ -1,19 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); -} - -module.exports = baseHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHasIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHasIn.js deleted file mode 100644 index 2e0d0426..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseHasIn.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} - -module.exports = baseHasIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInRange.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInRange.js deleted file mode 100644 index ec956661..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInRange.js +++ /dev/null @@ -1,18 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ -function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); -} - -module.exports = baseInRange; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOf.js deleted file mode 100644 index c232d433..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOf.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIsNaN = require('./_baseIsNaN'); - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return baseFindIndex(array, baseIsNaN, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -module.exports = baseIndexOf; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOfWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOfWith.js deleted file mode 100644 index f815fe0d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIndexOfWith.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; -} - -module.exports = baseIndexOfWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIntersection.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIntersection.js deleted file mode 100644 index c1d250c2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIntersection.js +++ /dev/null @@ -1,74 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - arrayMap = require('./_arrayMap'), - baseUnary = require('./_baseUnary'), - cacheHas = require('./_cacheHas'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ -function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} - -module.exports = baseIntersection; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInverter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInverter.js deleted file mode 100644 index fbc337f0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInverter.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseForOwn = require('./_baseForOwn'); - -/** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ -function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; -} - -module.exports = baseInverter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInvoke.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInvoke.js deleted file mode 100644 index 3d6bca5d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseInvoke.js +++ /dev/null @@ -1,28 +0,0 @@ -var apply = require('./_apply'), - castPath = require('./_castPath'), - isKey = require('./_isKey'), - last = require('./last'), - parent = require('./_parent'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ -function baseInvoke(object, path, args) { - if (!isKey(path, object)) { - path = castPath(path); - object = parent(object, path); - path = last(path); - } - var func = object == null ? object : object[toKey(path)]; - return func == null ? undefined : apply(func, object, args); -} - -module.exports = baseInvoke; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsArrayBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsArrayBuffer.js deleted file mode 100644 index 024ec851..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsArrayBuffer.js +++ /dev/null @@ -1,26 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -var arrayBufferTag = '[object ArrayBuffer]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ -function baseIsArrayBuffer(value) { - return isObjectLike(value) && objectToString.call(value) == arrayBufferTag; -} - -module.exports = baseIsArrayBuffer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsDate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsDate.js deleted file mode 100644 index 9dacf9b1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsDate.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var dateTag = '[object Date]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ -function baseIsDate(value) { - return isObjectLike(value) && objectToString.call(value) == dateTag; -} - -module.exports = baseIsDate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqual.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqual.js deleted file mode 100644 index 3772dab0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqual.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseIsEqualDeep = require('./_baseIsEqualDeep'), - isObject = require('./isObject'), - isObjectLike = require('./isObjectLike'); - -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @param {boolean} [bitmask] The bitmask of comparison flags. - * The bitmask may be composed of the following flags: - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, customizer, bitmask, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); -} - -module.exports = baseIsEqual; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqualDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqualDeep.js deleted file mode 100644 index c18d6d1f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsEqualDeep.js +++ /dev/null @@ -1,82 +0,0 @@ -var Stack = require('./_Stack'), - equalArrays = require('./_equalArrays'), - equalByTag = require('./_equalByTag'), - equalObjects = require('./_equalObjects'), - getTag = require('./_getTag'), - isArray = require('./isArray'), - isHostObject = require('./_isHostObject'), - isTypedArray = require('./isTypedArray'); - -/** Used to compose bitmasks for comparison styles. */ -var PARTIAL_COMPARE_FLAG = 2; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; - - if (!objIsArr) { - objTag = getTag(object); - objTag = objTag == argsTag ? objectTag : objTag; - } - if (!othIsArr) { - othTag = getTag(other); - othTag = othTag == argsTag ? objectTag : othTag; - } - var objIsObj = objTag == objectTag && !isHostObject(object), - othIsObj = othTag == objectTag && !isHostObject(other), - isSameTag = objTag == othTag; - - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) - : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); - } - if (!(bitmask & PARTIAL_COMPARE_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, equalFunc, customizer, bitmask, stack); -} - -module.exports = baseIsEqualDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMap.js deleted file mode 100644 index 02a4021c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMap.js +++ /dev/null @@ -1,18 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]'; - -/** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ -function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; -} - -module.exports = baseIsMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMatch.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMatch.js deleted file mode 100644 index d36c8785..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsMatch.js +++ /dev/null @@ -1,62 +0,0 @@ -var Stack = require('./_Stack'), - baseIsEqual = require('./_baseIsEqual'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) - : result - )) { - return false; - } - } - } - return true; -} - -module.exports = baseIsMatch; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNaN.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNaN.js deleted file mode 100644 index 316f1eb1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNaN.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} - -module.exports = baseIsNaN; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNative.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNative.js deleted file mode 100644 index c79c77cc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsNative.js +++ /dev/null @@ -1,48 +0,0 @@ -var isFunction = require('./isFunction'), - isHostObject = require('./_isHostObject'), - isMasked = require('./_isMasked'), - isObject = require('./isObject'), - toSource = require('./_toSource'); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} - -module.exports = baseIsNative; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsRegExp.js deleted file mode 100644 index 926fbb3b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsRegExp.js +++ /dev/null @@ -1,27 +0,0 @@ -var isObject = require('./isObject'); - -/** `Object#toString` result references. */ -var regexpTag = '[object RegExp]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ -function baseIsRegExp(value) { - return isObject(value) && objectToString.call(value) == regexpTag; -} - -module.exports = baseIsRegExp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsSet.js deleted file mode 100644 index 6dee3671..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsSet.js +++ /dev/null @@ -1,18 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var setTag = '[object Set]'; - -/** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ -function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; -} - -module.exports = baseIsSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsTypedArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsTypedArray.js deleted file mode 100644 index 9e92756c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIsTypedArray.js +++ /dev/null @@ -1,69 +0,0 @@ -var isLength = require('./isLength'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; -} - -module.exports = baseIsTypedArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIteratee.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIteratee.js deleted file mode 100644 index 995c2575..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseIteratee.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseMatches = require('./_baseMatches'), - baseMatchesProperty = require('./_baseMatchesProperty'), - identity = require('./identity'), - isArray = require('./isArray'), - property = require('./property'); - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} - -module.exports = baseIteratee; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeys.js deleted file mode 100644 index 45e9e6f3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeys.js +++ /dev/null @@ -1,30 +0,0 @@ -var isPrototype = require('./_isPrototype'), - nativeKeys = require('./_nativeKeys'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} - -module.exports = baseKeys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeysIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeysIn.js deleted file mode 100644 index ea8a0a17..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseKeysIn.js +++ /dev/null @@ -1,33 +0,0 @@ -var isObject = require('./isObject'), - isPrototype = require('./_isPrototype'), - nativeKeysIn = require('./_nativeKeysIn'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} - -module.exports = baseKeysIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLodash.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLodash.js deleted file mode 100644 index f76c790e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLodash.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ -function baseLodash() { - // No operation performed. -} - -module.exports = baseLodash; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLt.js deleted file mode 100644 index 8674d294..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseLt.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ -function baseLt(value, other) { - return value < other; -} - -module.exports = baseLt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMap.js deleted file mode 100644 index 0bf5cead..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMap.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseEach = require('./_baseEach'), - isArrayLike = require('./isArrayLike'); - -/** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; -} - -module.exports = baseMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatches.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatches.js deleted file mode 100644 index e56582ad..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatches.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'), - matchesStrictComparable = require('./_matchesStrictComparable'); - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} - -module.exports = baseMatches; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatchesProperty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatchesProperty.js deleted file mode 100644 index 3968081b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMatchesProperty.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'), - get = require('./get'), - hasIn = require('./hasIn'), - isKey = require('./_isKey'), - isStrictComparable = require('./_isStrictComparable'), - matchesStrictComparable = require('./_matchesStrictComparable'), - toKey = require('./_toKey'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); - }; -} - -module.exports = baseMatchesProperty; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMean.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMean.js deleted file mode 100644 index ac99a423..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMean.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseSum = require('./_baseSum'); - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ -function baseMean(array, iteratee) { - var length = array ? array.length : 0; - return length ? (baseSum(array, iteratee) / length) : NAN; -} - -module.exports = baseMean; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMerge.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMerge.js deleted file mode 100644 index dfb4b152..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMerge.js +++ /dev/null @@ -1,50 +0,0 @@ -var Stack = require('./_Stack'), - arrayEach = require('./_arrayEach'), - assignMergeValue = require('./_assignMergeValue'), - baseKeysIn = require('./_baseKeysIn'), - baseMergeDeep = require('./_baseMergeDeep'), - isArray = require('./isArray'), - isObject = require('./isObject'), - isTypedArray = require('./isTypedArray'); - -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - if (!(isArray(source) || isTypedArray(source))) { - var props = baseKeysIn(source); - } - arrayEach(props || source, function(srcValue, key) { - if (props) { - key = srcValue; - srcValue = source[key]; - } - if (isObject(srcValue)) { - stack || (stack = new Stack); - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(object[key], srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }); -} - -module.exports = baseMerge; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMergeDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMergeDeep.js deleted file mode 100644 index 535c0d11..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseMergeDeep.js +++ /dev/null @@ -1,82 +0,0 @@ -var assignMergeValue = require('./_assignMergeValue'), - baseClone = require('./_baseClone'), - copyArray = require('./_copyArray'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isArrayLikeObject = require('./isArrayLikeObject'), - isFunction = require('./isFunction'), - isObject = require('./isObject'), - isPlainObject = require('./isPlainObject'), - isTypedArray = require('./isTypedArray'), - toPlainObject = require('./toPlainObject'); - -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = object[key], - srcValue = source[key], - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - newValue = srcValue; - if (isArray(srcValue) || isTypedArray(srcValue)) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else { - isCommon = false; - newValue = baseClone(srcValue, true); - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - isCommon = false; - newValue = baseClone(srcValue, true); - } - else { - newValue = objValue; - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); -} - -module.exports = baseMergeDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseNth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseNth.js deleted file mode 100644 index 0403c2a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseNth.js +++ /dev/null @@ -1,20 +0,0 @@ -var isIndex = require('./_isIndex'); - -/** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ -function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; -} - -module.exports = baseNth; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseOrderBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseOrderBy.js deleted file mode 100644 index d8a46ab2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseOrderBy.js +++ /dev/null @@ -1,34 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIteratee = require('./_baseIteratee'), - baseMap = require('./_baseMap'), - baseSortBy = require('./_baseSortBy'), - baseUnary = require('./_baseUnary'), - compareMultiple = require('./_compareMultiple'), - identity = require('./identity'); - -/** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ -function baseOrderBy(collection, iteratees, orders) { - var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee)); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); -} - -module.exports = baseOrderBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePick.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePick.js deleted file mode 100644 index add36002..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePick.js +++ /dev/null @@ -1,19 +0,0 @@ -var basePickBy = require('./_basePickBy'); - -/** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property identifiers to pick. - * @returns {Object} Returns the new object. - */ -function basePick(object, props) { - object = Object(object); - return basePickBy(object, props, function(value, key) { - return key in object; - }); -} - -module.exports = basePick; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePickBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePickBy.js deleted file mode 100644 index fcc66105..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePickBy.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property identifiers to pick from. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ -function basePickBy(object, props, predicate) { - var index = -1, - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index], - value = object[key]; - - if (predicate(value, key)) { - result[key] = value; - } - } - return result; -} - -module.exports = basePickBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseProperty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseProperty.js deleted file mode 100644 index 496281ec..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseProperty.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -module.exports = baseProperty; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyDeep.js deleted file mode 100644 index 1e5aae50..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyDeep.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGet = require('./_baseGet'); - -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} - -module.exports = basePropertyDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyOf.js deleted file mode 100644 index 46173999..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePropertyOf.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; -} - -module.exports = basePropertyOf; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAll.js deleted file mode 100644 index 305720ed..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAll.js +++ /dev/null @@ -1,51 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIndexOf = require('./_baseIndexOf'), - baseIndexOfWith = require('./_baseIndexOfWith'), - baseUnary = require('./_baseUnary'), - copyArray = require('./_copyArray'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ -function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; -} - -module.exports = basePullAll; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAt.js deleted file mode 100644 index 0dd1478d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_basePullAt.js +++ /dev/null @@ -1,50 +0,0 @@ -var castPath = require('./_castPath'), - isIndex = require('./_isIndex'), - isKey = require('./_isKey'), - last = require('./last'), - parent = require('./_parent'), - toKey = require('./_toKey'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ -function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } - else if (!isKey(index, array)) { - var path = castPath(index), - object = parent(array, path); - - if (object != null) { - delete object[toKey(last(path))]; - } - } - else { - delete array[toKey(index)]; - } - } - } - return array; -} - -module.exports = basePullAt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRandom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRandom.js deleted file mode 100644 index 94f76a76..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRandom.js +++ /dev/null @@ -1,18 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor, - nativeRandom = Math.random; - -/** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ -function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); -} - -module.exports = baseRandom; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRange.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRange.js deleted file mode 100644 index 0fb8e419..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRange.js +++ /dev/null @@ -1,28 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ -function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; -} - -module.exports = baseRange; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseReduce.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseReduce.js deleted file mode 100644 index 5a1f8b57..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseReduce.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ -function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; -} - -module.exports = baseReduce; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRepeat.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRepeat.js deleted file mode 100644 index ee44c31a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRepeat.js +++ /dev/null @@ -1,35 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor; - -/** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ -function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; -} - -module.exports = baseRepeat; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRest.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRest.js deleted file mode 100644 index d8aa217c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseRest.js +++ /dev/null @@ -1,35 +0,0 @@ -var apply = require('./_apply'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = array; - return apply(func, this, otherArgs); - }; -} - -module.exports = baseRest; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSet.js deleted file mode 100644 index 2be04d5f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSet.js +++ /dev/null @@ -1,48 +0,0 @@ -var assignValue = require('./_assignValue'), - castPath = require('./_castPath'), - isIndex = require('./_isIndex'), - isKey = require('./_isKey'), - isObject = require('./isObject'), - toKey = require('./_toKey'); - -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = isKey(path, object) ? [path] : castPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} - -module.exports = baseSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSetData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSetData.js deleted file mode 100644 index e689df2c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSetData.js +++ /dev/null @@ -1,17 +0,0 @@ -var identity = require('./identity'), - metaMap = require('./_metaMap'); - -/** - * The base implementation of `setData` without support for hot loop detection. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ -var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; -}; - -module.exports = baseSetData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSlice.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSlice.js deleted file mode 100644 index 786f6c99..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSlice.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; -} - -module.exports = baseSlice; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSome.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSome.js deleted file mode 100644 index 58f3f447..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSome.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseEach = require('./_baseEach'); - -/** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; -} - -module.exports = baseSome; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortBy.js deleted file mode 100644 index a25c92ed..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortBy.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ -function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; -} - -module.exports = baseSortBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndex.js deleted file mode 100644 index 0e82dc7d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndex.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseSortedIndexBy = require('./_baseSortedIndexBy'), - identity = require('./identity'), - isSymbol = require('./isSymbol'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - -/** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ -function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array ? array.length : low; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); -} - -module.exports = baseSortedIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndexBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndexBy.js deleted file mode 100644 index fde79285..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedIndexBy.js +++ /dev/null @@ -1,64 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for the maximum length and index of an array. */ -var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeFloor = Math.floor, - nativeMin = Math.min; - -/** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ -function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array ? array.length : 0, - valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); -} - -module.exports = baseSortedIndexBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedUniq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedUniq.js deleted file mode 100644 index 802159a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSortedUniq.js +++ /dev/null @@ -1,30 +0,0 @@ -var eq = require('./eq'); - -/** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; -} - -module.exports = baseSortedUniq; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSum.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSum.js deleted file mode 100644 index a9e84c13..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseSum.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ -function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; -} - -module.exports = baseSum; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseTimes.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseTimes.js deleted file mode 100644 index 0603fc37..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseTimes.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -module.exports = baseTimes; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToNumber.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToNumber.js deleted file mode 100644 index 04859f39..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToNumber.js +++ /dev/null @@ -1,24 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ -function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; -} - -module.exports = baseToNumber; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToPairs.js deleted file mode 100644 index bff19912..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToPairs.js +++ /dev/null @@ -1,18 +0,0 @@ -var arrayMap = require('./_arrayMap'); - -/** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ -function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); -} - -module.exports = baseToPairs; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToString.js deleted file mode 100644 index 462e26fd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseToString.js +++ /dev/null @@ -1,31 +0,0 @@ -var Symbol = require('./_Symbol'), - isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -module.exports = baseToString; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnary.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnary.js deleted file mode 100644 index 98639e92..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnary.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} - -module.exports = baseUnary; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUniq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUniq.js deleted file mode 100644 index aea459dc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUniq.js +++ /dev/null @@ -1,72 +0,0 @@ -var SetCache = require('./_SetCache'), - arrayIncludes = require('./_arrayIncludes'), - arrayIncludesWith = require('./_arrayIncludesWith'), - cacheHas = require('./_cacheHas'), - createSet = require('./_createSet'), - setToArray = require('./_setToArray'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} - -module.exports = baseUniq; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnset.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnset.js deleted file mode 100644 index dda80fc1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUnset.js +++ /dev/null @@ -1,29 +0,0 @@ -var castPath = require('./_castPath'), - isKey = require('./_isKey'), - last = require('./last'), - parent = require('./_parent'), - toKey = require('./_toKey'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ -function baseUnset(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - object = parent(object, path); - - var key = toKey(last(path)); - return !(object != null && hasOwnProperty.call(object, key)) || delete object[key]; -} - -module.exports = baseUnset; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUpdate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUpdate.js deleted file mode 100644 index 92a62377..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseUpdate.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseGet = require('./_baseGet'), - baseSet = require('./_baseSet'); - -/** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); -} - -module.exports = baseUpdate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseValues.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseValues.js deleted file mode 100644 index b95faadc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseValues.js +++ /dev/null @@ -1,19 +0,0 @@ -var arrayMap = require('./_arrayMap'); - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); -} - -module.exports = baseValues; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWhile.js deleted file mode 100644 index 07eac61b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWhile.js +++ /dev/null @@ -1,26 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ -function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); -} - -module.exports = baseWhile; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWrapperValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWrapperValue.js deleted file mode 100644 index 443e0df5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseWrapperValue.js +++ /dev/null @@ -1,25 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - arrayPush = require('./_arrayPush'), - arrayReduce = require('./_arrayReduce'); - -/** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ -function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); -} - -module.exports = baseWrapperValue; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseXor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseXor.js deleted file mode 100644 index 7e62d1b2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseXor.js +++ /dev/null @@ -1,30 +0,0 @@ -var arrayPush = require('./_arrayPush'), - baseDifference = require('./_baseDifference'), - baseUniq = require('./_baseUniq'); - -/** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ -function baseXor(arrays, iteratee, comparator) { - var index = -1, - length = arrays.length; - - while (++index < length) { - var result = result - ? arrayPush( - baseDifference(result, arrays[index], iteratee, comparator), - baseDifference(arrays[index], result, iteratee, comparator) - ) - : arrays[index]; - } - return (result && result.length) ? baseUniq(result, iteratee, comparator) : []; -} - -module.exports = baseXor; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseZipObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseZipObject.js deleted file mode 100644 index 401f85be..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_baseZipObject.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ -function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; -} - -module.exports = baseZipObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cacheHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cacheHas.js deleted file mode 100644 index c4c6b650..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cacheHas.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Checks if a cache value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} - -module.exports = cacheHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castArrayLikeObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castArrayLikeObject.js deleted file mode 100644 index 92c75fa1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castArrayLikeObject.js +++ /dev/null @@ -1,14 +0,0 @@ -var isArrayLikeObject = require('./isArrayLikeObject'); - -/** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ -function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; -} - -module.exports = castArrayLikeObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castFunction.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castFunction.js deleted file mode 100644 index 98c91ae6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castFunction.js +++ /dev/null @@ -1,14 +0,0 @@ -var identity = require('./identity'); - -/** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ -function castFunction(value) { - return typeof value == 'function' ? value : identity; -} - -module.exports = castFunction; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castPath.js deleted file mode 100644 index 4f38f95d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castPath.js +++ /dev/null @@ -1,15 +0,0 @@ -var isArray = require('./isArray'), - stringToPath = require('./_stringToPath'); - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value) { - return isArray(value) ? value : stringToPath(value); -} - -module.exports = castPath; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castSlice.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castSlice.js deleted file mode 100644 index 071faeba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_castSlice.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ -function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); -} - -module.exports = castSlice; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsEndIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsEndIndex.js deleted file mode 100644 index 07908ff3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsEndIndex.js +++ /dev/null @@ -1,19 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ -function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -module.exports = charsEndIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsStartIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsStartIndex.js deleted file mode 100644 index b17afd25..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_charsStartIndex.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'); - -/** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ -function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; -} - -module.exports = charsStartIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneArrayBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneArrayBuffer.js deleted file mode 100644 index c3d8f6e3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneArrayBuffer.js +++ /dev/null @@ -1,16 +0,0 @@ -var Uint8Array = require('./_Uint8Array'); - -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} - -module.exports = cloneArrayBuffer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneBuffer.js deleted file mode 100644 index 247d4106..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneBuffer.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var result = new buffer.constructor(buffer.length); - buffer.copy(result); - return result; -} - -module.exports = cloneBuffer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneDataView.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneDataView.js deleted file mode 100644 index 9c9b7b05..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneDataView.js +++ /dev/null @@ -1,16 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'); - -/** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} - -module.exports = cloneDataView; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneMap.js deleted file mode 100644 index b51983d2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneMap.js +++ /dev/null @@ -1,19 +0,0 @@ -var addMapEntry = require('./_addMapEntry'), - arrayReduce = require('./_arrayReduce'), - mapToArray = require('./_mapToArray'); - -/** - * Creates a clone of `map`. - * - * @private - * @param {Object} map The map to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned map. - */ -function cloneMap(map, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); - return arrayReduce(array, addMapEntry, new map.constructor); -} - -module.exports = cloneMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneRegExp.js deleted file mode 100644 index 64a30dfb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneRegExp.js +++ /dev/null @@ -1,17 +0,0 @@ -/** Used to match `RegExp` flags from their coerced string values. */ -var reFlags = /\w*$/; - -/** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ -function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; -} - -module.exports = cloneRegExp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSet.js deleted file mode 100644 index dc1db95c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSet.js +++ /dev/null @@ -1,19 +0,0 @@ -var addSetEntry = require('./_addSetEntry'), - arrayReduce = require('./_arrayReduce'), - setToArray = require('./_setToArray'); - -/** - * Creates a clone of `set`. - * - * @private - * @param {Object} set The set to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned set. - */ -function cloneSet(set, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); - return arrayReduce(array, addSetEntry, new set.constructor); -} - -module.exports = cloneSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSymbol.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSymbol.js deleted file mode 100644 index bede39f5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneSymbol.js +++ /dev/null @@ -1,18 +0,0 @@ -var Symbol = require('./_Symbol'); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ -function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; -} - -module.exports = cloneSymbol; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneTypedArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneTypedArray.js deleted file mode 100644 index 7aad84d4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_cloneTypedArray.js +++ /dev/null @@ -1,16 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'); - -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} - -module.exports = cloneTypedArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareAscending.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareAscending.js deleted file mode 100644 index 8dc27910..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareAscending.js +++ /dev/null @@ -1,41 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; -} - -module.exports = compareAscending; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareMultiple.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareMultiple.js deleted file mode 100644 index ad61f0fb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_compareMultiple.js +++ /dev/null @@ -1,44 +0,0 @@ -var compareAscending = require('./_compareAscending'); - -/** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ -function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; -} - -module.exports = compareMultiple; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgs.js deleted file mode 100644 index 1ce40f4f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgs.js +++ /dev/null @@ -1,39 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ -function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; -} - -module.exports = composeArgs; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgsRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgsRight.js deleted file mode 100644 index 8dc588d0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_composeArgsRight.js +++ /dev/null @@ -1,41 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ -function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; -} - -module.exports = composeArgsRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyArray.js deleted file mode 100644 index cd94d5d0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyArray.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; -} - -module.exports = copyArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyObject.js deleted file mode 100644 index 7d267b2e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copyObject.js +++ /dev/null @@ -1,31 +0,0 @@ -var assignValue = require('./_assignValue'); - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - assignValue(object, key, newValue === undefined ? source[key] : newValue); - } - return object; -} - -module.exports = copyObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copySymbols.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copySymbols.js deleted file mode 100644 index 1fac3c8a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_copySymbols.js +++ /dev/null @@ -1,16 +0,0 @@ -var copyObject = require('./_copyObject'), - getSymbols = require('./_getSymbols'); - -/** - * Copies own symbol properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); -} - -module.exports = copySymbols; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_coreJsData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_coreJsData.js deleted file mode 100644 index f8e5b4e3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_coreJsData.js +++ /dev/null @@ -1,6 +0,0 @@ -var root = require('./_root'); - -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; - -module.exports = coreJsData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_countHolders.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_countHolders.js deleted file mode 100644 index 8cc95e6e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_countHolders.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ -function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - result++; - } - } - return result; -} - -module.exports = countHolders; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAggregator.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAggregator.js deleted file mode 100644 index 0be42c41..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAggregator.js +++ /dev/null @@ -1,23 +0,0 @@ -var arrayAggregator = require('./_arrayAggregator'), - baseAggregator = require('./_baseAggregator'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ -function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, baseIteratee(iteratee, 2), accumulator); - }; -} - -module.exports = createAggregator; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAssigner.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAssigner.js deleted file mode 100644 index 1f904c51..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createAssigner.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseRest = require('./_baseRest'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); -} - -module.exports = createAssigner; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseEach.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseEach.js deleted file mode 100644 index d24fdd1b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseEach.js +++ /dev/null @@ -1,32 +0,0 @@ -var isArrayLike = require('./isArrayLike'); - -/** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; -} - -module.exports = createBaseEach; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseFor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseFor.js deleted file mode 100644 index 94cbf297..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBaseFor.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} - -module.exports = createBaseFor; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBind.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBind.js deleted file mode 100644 index aadc9438..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createBind.js +++ /dev/null @@ -1,28 +0,0 @@ -var createCtor = require('./_createCtor'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1; - -/** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createBind(func, bitmask, thisArg) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; -} - -module.exports = createBind; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCaseFirst.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCaseFirst.js deleted file mode 100644 index fe8ea483..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCaseFirst.js +++ /dev/null @@ -1,33 +0,0 @@ -var castSlice = require('./_castSlice'), - hasUnicode = require('./_hasUnicode'), - stringToArray = require('./_stringToArray'), - toString = require('./toString'); - -/** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ -function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; -} - -module.exports = createCaseFirst; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCompounder.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCompounder.js deleted file mode 100644 index 8d4cee2c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCompounder.js +++ /dev/null @@ -1,24 +0,0 @@ -var arrayReduce = require('./_arrayReduce'), - deburr = require('./deburr'), - words = require('./words'); - -/** Used to compose unicode capture groups. */ -var rsApos = "['\u2019]"; - -/** Used to match apostrophes. */ -var reApos = RegExp(rsApos, 'g'); - -/** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ -function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; -} - -module.exports = createCompounder; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCtor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCtor.js deleted file mode 100644 index 9047aa5f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCtor.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseCreate = require('./_baseCreate'), - isObject = require('./isObject'); - -/** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ -function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; -} - -module.exports = createCtor; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCurry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCurry.js deleted file mode 100644 index f06c2cdd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createCurry.js +++ /dev/null @@ -1,46 +0,0 @@ -var apply = require('./_apply'), - createCtor = require('./_createCtor'), - createHybrid = require('./_createHybrid'), - createRecurry = require('./_createRecurry'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'), - root = require('./_root'); - -/** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; -} - -module.exports = createCurry; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFind.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFind.js deleted file mode 100644 index 8859ff89..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFind.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - isArrayLike = require('./isArrayLike'), - keys = require('./keys'); - -/** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ -function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = baseIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; -} - -module.exports = createFind; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFlow.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFlow.js deleted file mode 100644 index 911aaf15..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createFlow.js +++ /dev/null @@ -1,85 +0,0 @@ -var LodashWrapper = require('./_LodashWrapper'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - getData = require('./_getData'), - getFuncName = require('./_getFuncName'), - isArray = require('./isArray'), - isLaziable = require('./_isLaziable'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to compose bitmasks for function metadata. */ -var CURRY_FLAG = 8, - PARTIAL_FLAG = 32, - ARY_FLAG = 128, - REARG_FLAG = 256; - -/** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ -function createFlow(fromRight) { - return baseRest(function(funcs) { - funcs = baseFlatten(funcs, 1); - - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && - isArray(value) && value.length >= LARGE_ARRAY_SIZE) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); -} - -module.exports = createFlow; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createHybrid.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createHybrid.js deleted file mode 100644 index 1594b886..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createHybrid.js +++ /dev/null @@ -1,92 +0,0 @@ -var composeArgs = require('./_composeArgs'), - composeArgsRight = require('./_composeArgsRight'), - countHolders = require('./_countHolders'), - createCtor = require('./_createCtor'), - createRecurry = require('./_createRecurry'), - getHolder = require('./_getHolder'), - reorder = require('./_reorder'), - replaceHolders = require('./_replaceHolders'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - ARY_FLAG = 128, - FLIP_FLAG = 512; - -/** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & ARY_FLAG, - isBind = bitmask & BIND_FLAG, - isBindKey = bitmask & BIND_KEY_FLAG, - isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG), - isFlip = bitmask & FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; -} - -module.exports = createHybrid; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createInverter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createInverter.js deleted file mode 100644 index 6c0c5629..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createInverter.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseInverter = require('./_baseInverter'); - -/** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ -function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; -} - -module.exports = createInverter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createMathOperation.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createMathOperation.js deleted file mode 100644 index f1e238ac..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createMathOperation.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseToNumber = require('./_baseToNumber'), - baseToString = require('./_baseToString'); - -/** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ -function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; -} - -module.exports = createMathOperation; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createOver.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createOver.js deleted file mode 100644 index 723182dc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createOver.js +++ /dev/null @@ -1,31 +0,0 @@ -var apply = require('./_apply'), - arrayMap = require('./_arrayMap'), - baseFlatten = require('./_baseFlatten'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - baseUnary = require('./_baseUnary'), - isArray = require('./isArray'); - -/** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ -function createOver(arrayFunc) { - return baseRest(function(iteratees) { - iteratees = (iteratees.length == 1 && isArray(iteratees[0])) - ? arrayMap(iteratees[0], baseUnary(baseIteratee)) - : arrayMap(baseFlatten(iteratees, 1), baseUnary(baseIteratee)); - - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); -} - -module.exports = createOver; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPadding.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPadding.js deleted file mode 100644 index 2124612b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPadding.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseRepeat = require('./_baseRepeat'), - baseToString = require('./_baseToString'), - castSlice = require('./_castSlice'), - hasUnicode = require('./_hasUnicode'), - stringSize = require('./_stringSize'), - stringToArray = require('./_stringToArray'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil; - -/** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ -function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); -} - -module.exports = createPadding; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPartial.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPartial.js deleted file mode 100644 index fc2bf8be..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createPartial.js +++ /dev/null @@ -1,43 +0,0 @@ -var apply = require('./_apply'), - createCtor = require('./_createCtor'), - root = require('./_root'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1; - -/** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ -function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; -} - -module.exports = createPartial; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRange.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRange.js deleted file mode 100644 index 9f52c779..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRange.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseRange = require('./_baseRange'), - isIterateeCall = require('./_isIterateeCall'), - toFinite = require('./toFinite'); - -/** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ -function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; -} - -module.exports = createRange; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRecurry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRecurry.js deleted file mode 100644 index 35a22e58..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRecurry.js +++ /dev/null @@ -1,56 +0,0 @@ -var isLaziable = require('./_isLaziable'), - setData = require('./_setData'), - setWrapToString = require('./_setWrapToString'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_BOUND_FLAG = 4, - CURRY_FLAG = 8, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64; - -/** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); - - if (!(bitmask & CURRY_BOUND_FLAG)) { - bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); -} - -module.exports = createRecurry; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRelationalOperation.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRelationalOperation.js deleted file mode 100644 index a17c6b5e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRelationalOperation.js +++ /dev/null @@ -1,20 +0,0 @@ -var toNumber = require('./toNumber'); - -/** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ -function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; -} - -module.exports = createRelationalOperation; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRound.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRound.js deleted file mode 100644 index 74b20d40..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createRound.js +++ /dev/null @@ -1,33 +0,0 @@ -var toInteger = require('./toInteger'), - toNumber = require('./toNumber'), - toString = require('./toString'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ -function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = nativeMin(toInteger(precision), 292); - if (precision) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; -} - -module.exports = createRound; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createSet.js deleted file mode 100644 index 0f644eea..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createSet.js +++ /dev/null @@ -1,19 +0,0 @@ -var Set = require('./_Set'), - noop = require('./noop'), - setToArray = require('./_setToArray'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); -}; - -module.exports = createSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createToPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createToPairs.js deleted file mode 100644 index 568417af..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createToPairs.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseToPairs = require('./_baseToPairs'), - getTag = require('./_getTag'), - mapToArray = require('./_mapToArray'), - setToPairs = require('./_setToPairs'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ -function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; -} - -module.exports = createToPairs; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createWrap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createWrap.js deleted file mode 100644 index 6afe6b5f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_createWrap.js +++ /dev/null @@ -1,107 +0,0 @@ -var baseSetData = require('./_baseSetData'), - createBind = require('./_createBind'), - createCurry = require('./_createCurry'), - createHybrid = require('./_createHybrid'), - createPartial = require('./_createPartial'), - getData = require('./_getData'), - mergeData = require('./_mergeData'), - setData = require('./_setData'), - setWrapToString = require('./_setWrapToString'), - toInteger = require('./toInteger'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ -function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] == null - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) { - bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); -} - -module.exports = createWrap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_deburrLetter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_deburrLetter.js deleted file mode 100644 index 98283a46..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_deburrLetter.js +++ /dev/null @@ -1,71 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map Latin Unicode letters to basic Latin letters. */ -var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 'ss' -}; - -/** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ -var deburrLetter = basePropertyOf(deburredLetters); - -module.exports = deburrLetter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_defineProperty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_defineProperty.js deleted file mode 100644 index f6128d77..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_defineProperty.js +++ /dev/null @@ -1,11 +0,0 @@ -var getNative = require('./_getNative'); - -/* Used to set `toString` methods. */ -var defineProperty = (function() { - var func = getNative(Object, 'defineProperty'), - name = getNative.name; - - return (name && name.length > 2) ? func : undefined; -}()); - -module.exports = defineProperty; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalArrays.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalArrays.js deleted file mode 100644 index e095170c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalArrays.js +++ /dev/null @@ -1,83 +0,0 @@ -var SetCache = require('./_SetCache'), - arraySome = require('./_arraySome'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!seen.has(othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { - return seen.add(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, customizer, bitmask, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} - -module.exports = equalArrays; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalByTag.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalByTag.js deleted file mode 100644 index 07d8c8c0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalByTag.js +++ /dev/null @@ -1,113 +0,0 @@ -var Symbol = require('./_Symbol'), - Uint8Array = require('./_Uint8Array'), - eq = require('./eq'), - equalArrays = require('./_equalArrays'), - mapToArray = require('./_mapToArray'), - setToArray = require('./_setToArray'); - -/** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & PARTIAL_COMPARE_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= UNORDERED_COMPARE_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} - -module.exports = equalByTag; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalObjects.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalObjects.js deleted file mode 100644 index 092cb3ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_equalObjects.js +++ /dev/null @@ -1,90 +0,0 @@ -var keys = require('./keys'); - -/** Used to compose bitmasks for comparison styles. */ -var PARTIAL_COMPARE_FLAG = 2; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} - -module.exports = equalObjects; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeHtmlChar.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeHtmlChar.js deleted file mode 100644 index 6abceb51..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeHtmlChar.js +++ /dev/null @@ -1,22 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map characters to HTML entities. */ -var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' -}; - -/** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -var escapeHtmlChar = basePropertyOf(htmlEscapes); - -module.exports = escapeHtmlChar; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeStringChar.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeStringChar.js deleted file mode 100644 index 44eca96c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_escapeStringChar.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Used to escape characters for inclusion in compiled string literals. */ -var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' -}; - -/** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ -function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; -} - -module.exports = escapeStringChar; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_freeGlobal.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_freeGlobal.js deleted file mode 100644 index bbec998f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_freeGlobal.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - -module.exports = freeGlobal; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeys.js deleted file mode 100644 index a9ce6995..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeys.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGetAllKeys = require('./_baseGetAllKeys'), - getSymbols = require('./_getSymbols'), - keys = require('./keys'); - -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); -} - -module.exports = getAllKeys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeysIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeysIn.js deleted file mode 100644 index 1b466784..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getAllKeysIn.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseGetAllKeys = require('./_baseGetAllKeys'), - getSymbolsIn = require('./_getSymbolsIn'), - keysIn = require('./keysIn'); - -/** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); -} - -module.exports = getAllKeysIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getData.js deleted file mode 100644 index a1fe7b77..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getData.js +++ /dev/null @@ -1,15 +0,0 @@ -var metaMap = require('./_metaMap'), - noop = require('./noop'); - -/** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ -var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); -}; - -module.exports = getData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getFuncName.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getFuncName.js deleted file mode 100644 index 21e15b33..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getFuncName.js +++ /dev/null @@ -1,31 +0,0 @@ -var realNames = require('./_realNames'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ -function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; -} - -module.exports = getFuncName; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getHolder.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getHolder.js deleted file mode 100644 index 65e94b5c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getHolder.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ -function getHolder(func) { - var object = func; - return object.placeholder; -} - -module.exports = getHolder; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMapData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMapData.js deleted file mode 100644 index 17f63032..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMapData.js +++ /dev/null @@ -1,18 +0,0 @@ -var isKeyable = require('./_isKeyable'); - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} - -module.exports = getMapData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMatchData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMatchData.js deleted file mode 100644 index 2cc70f91..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getMatchData.js +++ /dev/null @@ -1,24 +0,0 @@ -var isStrictComparable = require('./_isStrictComparable'), - keys = require('./keys'); - -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; -} - -module.exports = getMatchData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getNative.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getNative.js deleted file mode 100644 index 97a622b8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getNative.js +++ /dev/null @@ -1,17 +0,0 @@ -var baseIsNative = require('./_baseIsNative'), - getValue = require('./_getValue'); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -module.exports = getNative; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getPrototype.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getPrototype.js deleted file mode 100644 index e8086121..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getPrototype.js +++ /dev/null @@ -1,6 +0,0 @@ -var overArg = require('./_overArg'); - -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); - -module.exports = getPrototype; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbols.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbols.js deleted file mode 100644 index e41dad1d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbols.js +++ /dev/null @@ -1,16 +0,0 @@ -var overArg = require('./_overArg'), - stubArray = require('./stubArray'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own enumerable symbol properties of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; - -module.exports = getSymbols; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbolsIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbolsIn.js deleted file mode 100644 index 221277e8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getSymbolsIn.js +++ /dev/null @@ -1,26 +0,0 @@ -var arrayPush = require('./_arrayPush'), - getPrototype = require('./_getPrototype'), - getSymbols = require('./_getSymbols'), - stubArray = require('./stubArray'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own and inherited enumerable symbol properties - * of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; -}; - -module.exports = getSymbolsIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getTag.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getTag.js deleted file mode 100644 index de560d67..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getTag.js +++ /dev/null @@ -1,69 +0,0 @@ -var DataView = require('./_DataView'), - Map = require('./_Map'), - Promise = require('./_Promise'), - Set = require('./_Set'), - WeakMap = require('./_WeakMap'), - baseGetTag = require('./_baseGetTag'), - toSource = require('./_toSource'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; - -var dataViewTag = '[object DataView]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; - -// Fallback for data views, maps, sets, and weak maps in IE 11, -// for data views in Edge < 14, and promises in Node.js. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} - -module.exports = getTag; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getValue.js deleted file mode 100644 index 5f7d7736..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getValue.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} - -module.exports = getValue; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getView.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getView.js deleted file mode 100644 index df1e5d44..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getView.js +++ /dev/null @@ -1,33 +0,0 @@ -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ -function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; -} - -module.exports = getView; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getWrapDetails.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getWrapDetails.js deleted file mode 100644 index 3bcc6e48..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_getWrapDetails.js +++ /dev/null @@ -1,17 +0,0 @@ -/** Used to match wrap detail comments. */ -var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - -/** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ -function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; -} - -module.exports = getWrapDetails; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasPath.js deleted file mode 100644 index 1e2c3eac..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasPath.js +++ /dev/null @@ -1,40 +0,0 @@ -var castPath = require('./_castPath'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isIndex = require('./_isIndex'), - isKey = require('./_isKey'), - isLength = require('./isLength'), - toKey = require('./_toKey'); - -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = isKey(path, object) ? [path] : castPath(path); - - var result, - index = -1, - length = path.length; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result) { - return result; - } - var length = object ? object.length : 0; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} - -module.exports = hasPath; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicode.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicode.js deleted file mode 100644 index 085161a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicode.js +++ /dev/null @@ -1,24 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} - -module.exports = hasUnicode; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicodeWord.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicodeWord.js deleted file mode 100644 index a35d6e50..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hasUnicodeWord.js +++ /dev/null @@ -1,15 +0,0 @@ -/** Used to detect strings that need a more robust regexp to match words. */ -var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - -/** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ -function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); -} - -module.exports = hasUnicodeWord; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashClear.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashClear.js deleted file mode 100644 index 14c15917..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashClear.js +++ /dev/null @@ -1,14 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; -} - -module.exports = hashClear; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashDelete.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashDelete.js deleted file mode 100644 index 45b39fb0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashDelete.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; -} - -module.exports = hashDelete; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashGet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashGet.js deleted file mode 100644 index 1fc2f34b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashGet.js +++ /dev/null @@ -1,30 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} - -module.exports = hashGet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashHas.js deleted file mode 100644 index f30aac38..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashHas.js +++ /dev/null @@ -1,23 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); -} - -module.exports = hashHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashSet.js deleted file mode 100644 index 56fec1eb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_hashSet.js +++ /dev/null @@ -1,22 +0,0 @@ -var nativeCreate = require('./_nativeCreate'); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} - -module.exports = hashSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneArray.js deleted file mode 100644 index aef02120..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneArray.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ -function initCloneArray(array) { - var length = array.length, - result = array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; -} - -module.exports = initCloneArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneByTag.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneByTag.js deleted file mode 100644 index e7b77edc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneByTag.js +++ /dev/null @@ -1,80 +0,0 @@ -var cloneArrayBuffer = require('./_cloneArrayBuffer'), - cloneDataView = require('./_cloneDataView'), - cloneMap = require('./_cloneMap'), - cloneRegExp = require('./_cloneRegExp'), - cloneSet = require('./_cloneSet'), - cloneSymbol = require('./_cloneSymbol'), - cloneTypedArray = require('./_cloneTypedArray'); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneByTag(object, tag, cloneFunc, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return cloneMap(object, isDeep, cloneFunc); - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return cloneSet(object, isDeep, cloneFunc); - - case symbolTag: - return cloneSymbol(object); - } -} - -module.exports = initCloneByTag; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneObject.js deleted file mode 100644 index 5a13e64a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_initCloneObject.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseCreate = require('./_baseCreate'), - getPrototype = require('./_getPrototype'), - isPrototype = require('./_isPrototype'); - -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} - -module.exports = initCloneObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_insertWrapDetails.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_insertWrapDetails.js deleted file mode 100644 index 191f226d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_insertWrapDetails.js +++ /dev/null @@ -1,21 +0,0 @@ -/** Used to match wrap detail comments. */ -var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; - -/** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ -function insertWrapDetails(source, details) { - var length = details.length, - lastIndex = length - 1; - - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); -} - -module.exports = insertWrapDetails; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isFlattenable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isFlattenable.js deleted file mode 100644 index 4cc2c249..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isFlattenable.js +++ /dev/null @@ -1,20 +0,0 @@ -var Symbol = require('./_Symbol'), - isArguments = require('./isArguments'), - isArray = require('./isArray'); - -/** Built-in value references. */ -var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - -/** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ -function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); -} - -module.exports = isFlattenable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isHostObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isHostObject.js deleted file mode 100644 index e598c10e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isHostObject.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ -function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; -} - -module.exports = isHostObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIndex.js deleted file mode 100644 index e123dde8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIndex.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); -} - -module.exports = isIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIterateeCall.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIterateeCall.js deleted file mode 100644 index a0bb5a9c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isIterateeCall.js +++ /dev/null @@ -1,30 +0,0 @@ -var eq = require('./eq'), - isArrayLike = require('./isArrayLike'), - isIndex = require('./_isIndex'), - isObject = require('./isObject'); - -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; -} - -module.exports = isIterateeCall; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKey.js deleted file mode 100644 index ff08b068..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKey.js +++ /dev/null @@ -1,29 +0,0 @@ -var isArray = require('./isArray'), - isSymbol = require('./isSymbol'); - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} - -module.exports = isKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKeyable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKeyable.js deleted file mode 100644 index 39f1828d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isKeyable.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} - -module.exports = isKeyable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isLaziable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isLaziable.js deleted file mode 100644 index a57c4f2d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isLaziable.js +++ /dev/null @@ -1,28 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - getData = require('./_getData'), - getFuncName = require('./_getFuncName'), - lodash = require('./wrapperLodash'); - -/** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ -function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; -} - -module.exports = isLaziable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMaskable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMaskable.js deleted file mode 100644 index eb98d09f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMaskable.js +++ /dev/null @@ -1,14 +0,0 @@ -var coreJsData = require('./_coreJsData'), - isFunction = require('./isFunction'), - stubFalse = require('./stubFalse'); - -/** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ -var isMaskable = coreJsData ? isFunction : stubFalse; - -module.exports = isMaskable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMasked.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMasked.js deleted file mode 100644 index 4b0f21ba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isMasked.js +++ /dev/null @@ -1,20 +0,0 @@ -var coreJsData = require('./_coreJsData'); - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} - -module.exports = isMasked; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isPrototype.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isPrototype.js deleted file mode 100644 index 0f29498d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isPrototype.js +++ /dev/null @@ -1,18 +0,0 @@ -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; -} - -module.exports = isPrototype; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isStrictComparable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isStrictComparable.js deleted file mode 100644 index b59f40b8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_isStrictComparable.js +++ /dev/null @@ -1,15 +0,0 @@ -var isObject = require('./isObject'); - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} - -module.exports = isStrictComparable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_iteratorToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_iteratorToArray.js deleted file mode 100644 index 47685664..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_iteratorToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ -function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; -} - -module.exports = iteratorToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyClone.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyClone.js deleted file mode 100644 index d8a51f87..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyClone.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - copyArray = require('./_copyArray'); - -/** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ -function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; -} - -module.exports = lazyClone; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyReverse.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyReverse.js deleted file mode 100644 index c5b52190..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyReverse.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'); - -/** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ -function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; -} - -module.exports = lazyReverse; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyValue.js deleted file mode 100644 index 09bf14b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_lazyValue.js +++ /dev/null @@ -1,73 +0,0 @@ -var baseWrapperValue = require('./_baseWrapperValue'), - getView = require('./_getView'), - isArray = require('./isArray'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** Used to indicate the type of lazy iteratees. */ -var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ -function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || arrLength < LARGE_ARRAY_SIZE || - (arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; -} - -module.exports = lazyValue; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheClear.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheClear.js deleted file mode 100644 index e4e13258..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheClear.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; -} - -module.exports = listCacheClear; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheDelete.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheDelete.js deleted file mode 100644 index 2f323283..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheDelete.js +++ /dev/null @@ -1,34 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; -} - -module.exports = listCacheDelete; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheGet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheGet.js deleted file mode 100644 index f8192fc3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheGet.js +++ /dev/null @@ -1,19 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} - -module.exports = listCacheGet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheHas.js deleted file mode 100644 index 2adf6714..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheHas.js +++ /dev/null @@ -1,16 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} - -module.exports = listCacheHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheSet.js deleted file mode 100644 index e2f13b6b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_listCacheSet.js +++ /dev/null @@ -1,25 +0,0 @@ -var assocIndexOf = require('./_assocIndexOf'); - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} - -module.exports = listCacheSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheClear.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheClear.js deleted file mode 100644 index edb42b5f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheClear.js +++ /dev/null @@ -1,20 +0,0 @@ -var Hash = require('./_Hash'), - ListCache = require('./_ListCache'), - Map = require('./_Map'); - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} - -module.exports = mapCacheClear; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheDelete.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheDelete.js deleted file mode 100644 index 08f1c2ef..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheDelete.js +++ /dev/null @@ -1,16 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); -} - -module.exports = mapCacheDelete; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheGet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheGet.js deleted file mode 100644 index f29f55cf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheGet.js +++ /dev/null @@ -1,16 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} - -module.exports = mapCacheGet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheHas.js deleted file mode 100644 index a1214c02..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheHas.js +++ /dev/null @@ -1,16 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} - -module.exports = mapCacheHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheSet.js deleted file mode 100644 index 0ef1eafd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapCacheSet.js +++ /dev/null @@ -1,18 +0,0 @@ -var getMapData = require('./_getMapData'); - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; -} - -module.exports = mapCacheSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapToArray.js deleted file mode 100644 index fe3dd531..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mapToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} - -module.exports = mapToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_matchesStrictComparable.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_matchesStrictComparable.js deleted file mode 100644 index f608af9e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_matchesStrictComparable.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} - -module.exports = matchesStrictComparable; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeData.js deleted file mode 100644 index 5aa1f1ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeData.js +++ /dev/null @@ -1,90 +0,0 @@ -var composeArgs = require('./_composeArgs'), - composeArgsRight = require('./_composeArgsRight'), - replaceHolders = require('./_replaceHolders'); - -/** Used as the internal argument placeholder. */ -var PLACEHOLDER = '__lodash_placeholder__'; - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_BOUND_FLAG = 4, - CURRY_FLAG = 8, - ARY_FLAG = 128, - REARG_FLAG = 256; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ -function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG); - - var isCombo = - ((srcBitmask == ARY_FLAG) && (bitmask == CURRY_FLAG)) || - ((srcBitmask == ARY_FLAG) && (bitmask == REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (ARY_FLAG | REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; -} - -module.exports = mergeData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeDefaults.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeDefaults.js deleted file mode 100644 index 9888f0e7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_mergeDefaults.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseMerge = require('./_baseMerge'), - isObject = require('./isObject'); - -/** - * Used by `_.defaultsDeep` to customize its `_.merge` use. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ -function mergeDefaults(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, mergeDefaults, stack); - stack['delete'](srcValue); - } - return objValue; -} - -module.exports = mergeDefaults; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_metaMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_metaMap.js deleted file mode 100644 index 0157a0b0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_metaMap.js +++ /dev/null @@ -1,6 +0,0 @@ -var WeakMap = require('./_WeakMap'); - -/** Used to store function metadata. */ -var metaMap = WeakMap && new WeakMap; - -module.exports = metaMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeCreate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeCreate.js deleted file mode 100644 index c7aede85..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeCreate.js +++ /dev/null @@ -1,6 +0,0 @@ -var getNative = require('./_getNative'); - -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); - -module.exports = nativeCreate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeys.js deleted file mode 100644 index 479a104a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeys.js +++ /dev/null @@ -1,6 +0,0 @@ -var overArg = require('./_overArg'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); - -module.exports = nativeKeys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeysIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeysIn.js deleted file mode 100644 index 00ee5059..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nativeKeysIn.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; -} - -module.exports = nativeKeysIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nodeUtil.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nodeUtil.js deleted file mode 100644 index b8e48e3d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_nodeUtil.js +++ /dev/null @@ -1,22 +0,0 @@ -var freeGlobal = require('./_freeGlobal'); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - return freeProcess && freeProcess.binding('util'); - } catch (e) {} -}()); - -module.exports = nodeUtil; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_overArg.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_overArg.js deleted file mode 100644 index 651c5c55..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_overArg.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} - -module.exports = overArg; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_parent.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_parent.js deleted file mode 100644 index 81d94d0d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_parent.js +++ /dev/null @@ -1,16 +0,0 @@ -var baseGet = require('./_baseGet'), - baseSlice = require('./_baseSlice'); - -/** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ -function parent(object, path) { - return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); -} - -module.exports = parent; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEscape.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEscape.js deleted file mode 100644 index 7f47eda6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEscape.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reEscape = /<%-([\s\S]+?)%>/g; - -module.exports = reEscape; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEvaluate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEvaluate.js deleted file mode 100644 index 6adfc312..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reEvaluate.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reEvaluate = /<%([\s\S]+?)%>/g; - -module.exports = reEvaluate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reInterpolate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reInterpolate.js deleted file mode 100644 index d02ff0b2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reInterpolate.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to match template delimiters. */ -var reInterpolate = /<%=([\s\S]+?)%>/g; - -module.exports = reInterpolate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_realNames.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_realNames.js deleted file mode 100644 index aa0d5292..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_realNames.js +++ /dev/null @@ -1,4 +0,0 @@ -/** Used to lookup unminified function names. */ -var realNames = {}; - -module.exports = realNames; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reorder.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reorder.js deleted file mode 100644 index a3502b05..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_reorder.js +++ /dev/null @@ -1,29 +0,0 @@ -var copyArray = require('./_copyArray'), - isIndex = require('./_isIndex'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ -function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; -} - -module.exports = reorder; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_replaceHolders.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_replaceHolders.js deleted file mode 100644 index 74360ec4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_replaceHolders.js +++ /dev/null @@ -1,29 +0,0 @@ -/** Used as the internal argument placeholder. */ -var PLACEHOLDER = '__lodash_placeholder__'; - -/** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ -function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; -} - -module.exports = replaceHolders; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_root.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_root.js deleted file mode 100644 index d2852bed..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_root.js +++ /dev/null @@ -1,9 +0,0 @@ -var freeGlobal = require('./_freeGlobal'); - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -module.exports = root; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheAdd.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheAdd.js deleted file mode 100644 index 1081a744..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheAdd.js +++ /dev/null @@ -1,19 +0,0 @@ -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} - -module.exports = setCacheAdd; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheHas.js deleted file mode 100644 index 9a492556..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setCacheHas.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} - -module.exports = setCacheHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setData.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setData.js deleted file mode 100644 index d86c6108..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setData.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseSetData = require('./_baseSetData'), - now = require('./now'); - -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 150, - HOT_SPAN = 16; - -/** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ -var setData = (function() { - var count = 0, - lastCalled = 0; - - return function(key, value) { - var stamp = now(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return key; - } - } else { - count = 0; - } - return baseSetData(key, value); - }; -}()); - -module.exports = setData; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToArray.js deleted file mode 100644 index b87f0741..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} - -module.exports = setToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToPairs.js deleted file mode 100644 index 36ad37a0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setToPairs.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ -function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; -} - -module.exports = setToPairs; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setWrapToString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setWrapToString.js deleted file mode 100644 index 3c53cd0f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_setWrapToString.js +++ /dev/null @@ -1,27 +0,0 @@ -var constant = require('./constant'), - defineProperty = require('./_defineProperty'), - getWrapDetails = require('./_getWrapDetails'), - identity = require('./identity'), - insertWrapDetails = require('./_insertWrapDetails'), - updateWrapDetails = require('./_updateWrapDetails'); - -/** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ -var setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) { - var source = (reference + ''); - return defineProperty(wrapper, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))) - }); -}; - -module.exports = setWrapToString; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackClear.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackClear.js deleted file mode 100644 index 498482c4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackClear.js +++ /dev/null @@ -1,14 +0,0 @@ -var ListCache = require('./_ListCache'); - -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; -} - -module.exports = stackClear; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackDelete.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackDelete.js deleted file mode 100644 index 8c60260c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackDelete.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - return this.__data__['delete'](key); -} - -module.exports = stackDelete; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackGet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackGet.js deleted file mode 100644 index 1cdf0040..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackGet.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} - -module.exports = stackGet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackHas.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackHas.js deleted file mode 100644 index 16a3ad11..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackHas.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} - -module.exports = stackHas; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackSet.js deleted file mode 100644 index 60491837..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stackSet.js +++ /dev/null @@ -1,32 +0,0 @@ -var ListCache = require('./_ListCache'), - Map = require('./_Map'), - MapCache = require('./_MapCache'); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var cache = this.__data__; - if (cache instanceof ListCache) { - var pairs = cache.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - return this; - } - cache = this.__data__ = new MapCache(pairs); - } - cache.set(key, value); - return this; -} - -module.exports = stackSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringSize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringSize.js deleted file mode 100644 index 17ef462a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringSize.js +++ /dev/null @@ -1,18 +0,0 @@ -var asciiSize = require('./_asciiSize'), - hasUnicode = require('./_hasUnicode'), - unicodeSize = require('./_unicodeSize'); - -/** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ -function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); -} - -module.exports = stringSize; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToArray.js deleted file mode 100644 index d161158c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToArray.js +++ /dev/null @@ -1,18 +0,0 @@ -var asciiToArray = require('./_asciiToArray'), - hasUnicode = require('./_hasUnicode'), - unicodeToArray = require('./_unicodeToArray'); - -/** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); -} - -module.exports = stringToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToPath.js deleted file mode 100644 index 3eaf5c39..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_stringToPath.js +++ /dev/null @@ -1,31 +0,0 @@ -var memoize = require('./memoize'), - toString = require('./toString'); - -/** Used to match property names within property paths. */ -var reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -module.exports = stringToPath; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toKey.js deleted file mode 100644 index c6d645c4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toKey.js +++ /dev/null @@ -1,21 +0,0 @@ -var isSymbol = require('./isSymbol'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} - -module.exports = toKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toSource.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toSource.js deleted file mode 100644 index 00ac4548..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_toSource.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var funcProto = Function.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} - -module.exports = toSource; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unescapeHtmlChar.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unescapeHtmlChar.js deleted file mode 100644 index 11e5b7d5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unescapeHtmlChar.js +++ /dev/null @@ -1,22 +0,0 @@ -var basePropertyOf = require('./_basePropertyOf'); - -/** Used to map HTML entities to characters. */ -var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", - '`': '`' -}; - -/** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ -var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - -module.exports = unescapeHtmlChar; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeSize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeSize.js deleted file mode 100644 index 3f50ce86..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeSize.js +++ /dev/null @@ -1,42 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - result++; - } - return result; -} - -module.exports = unicodeSize; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeToArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeToArray.js deleted file mode 100644 index 11ac7631..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeToArray.js +++ /dev/null @@ -1,38 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ -function unicodeToArray(string) { - return string.match(reUnicode) || []; -} - -module.exports = unicodeToArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeWords.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeWords.js deleted file mode 100644 index a02e9307..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_unicodeWords.js +++ /dev/null @@ -1,63 +0,0 @@ -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - -/** Used to compose unicode capture groups. */ -var rsApos = "['\u2019]", - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')', - rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; - -/** Used to match complex or compound words. */ -var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', - rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr, - rsUpper + '+' + rsOptUpperContr, - rsDigits, - rsEmoji -].join('|'), 'g'); - -/** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ -function unicodeWords(string) { - return string.match(reUnicodeWord) || []; -} - -module.exports = unicodeWords; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_updateWrapDetails.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_updateWrapDetails.js deleted file mode 100644 index 128b1b46..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_updateWrapDetails.js +++ /dev/null @@ -1,46 +0,0 @@ -var arrayEach = require('./_arrayEach'), - arrayIncludes = require('./_arrayIncludes'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64, - ARY_FLAG = 128, - REARG_FLAG = 256, - FLIP_FLAG = 512; - -/** Used to associate wrap methods with their bit flags. */ -var wrapFlags = [ - ['ary', ARY_FLAG], - ['bind', BIND_FLAG], - ['bindKey', BIND_KEY_FLAG], - ['curry', CURRY_FLAG], - ['curryRight', CURRY_RIGHT_FLAG], - ['flip', FLIP_FLAG], - ['partial', PARTIAL_FLAG], - ['partialRight', PARTIAL_RIGHT_FLAG], - ['rearg', REARG_FLAG] -]; - -/** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ -function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); -} - -module.exports = updateWrapDetails; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_wrapperClone.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_wrapperClone.js deleted file mode 100644 index 7bb58a2e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/_wrapperClone.js +++ /dev/null @@ -1,23 +0,0 @@ -var LazyWrapper = require('./_LazyWrapper'), - LodashWrapper = require('./_LodashWrapper'), - copyArray = require('./_copyArray'); - -/** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ -function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; -} - -module.exports = wrapperClone; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/add.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/add.js deleted file mode 100644 index f0695156..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/add.js +++ /dev/null @@ -1,22 +0,0 @@ -var createMathOperation = require('./_createMathOperation'); - -/** - * Adds two numbers. - * - * @static - * @memberOf _ - * @since 3.4.0 - * @category Math - * @param {number} augend The first number in an addition. - * @param {number} addend The second number in an addition. - * @returns {number} Returns the total. - * @example - * - * _.add(6, 4); - * // => 10 - */ -var add = createMathOperation(function(augend, addend) { - return augend + addend; -}, 0); - -module.exports = add; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/after.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/after.js deleted file mode 100644 index 910923a9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/after.js +++ /dev/null @@ -1,42 +0,0 @@ -var toInteger = require('./toInteger'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ -function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; -} - -module.exports = after; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/array.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/array.js deleted file mode 100644 index af688d3e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/array.js +++ /dev/null @@ -1,67 +0,0 @@ -module.exports = { - 'chunk': require('./chunk'), - 'compact': require('./compact'), - 'concat': require('./concat'), - 'difference': require('./difference'), - 'differenceBy': require('./differenceBy'), - 'differenceWith': require('./differenceWith'), - 'drop': require('./drop'), - 'dropRight': require('./dropRight'), - 'dropRightWhile': require('./dropRightWhile'), - 'dropWhile': require('./dropWhile'), - 'fill': require('./fill'), - 'findIndex': require('./findIndex'), - 'findLastIndex': require('./findLastIndex'), - 'first': require('./first'), - 'flatten': require('./flatten'), - 'flattenDeep': require('./flattenDeep'), - 'flattenDepth': require('./flattenDepth'), - 'fromPairs': require('./fromPairs'), - 'head': require('./head'), - 'indexOf': require('./indexOf'), - 'initial': require('./initial'), - 'intersection': require('./intersection'), - 'intersectionBy': require('./intersectionBy'), - 'intersectionWith': require('./intersectionWith'), - 'join': require('./join'), - 'last': require('./last'), - 'lastIndexOf': require('./lastIndexOf'), - 'nth': require('./nth'), - 'pull': require('./pull'), - 'pullAll': require('./pullAll'), - 'pullAllBy': require('./pullAllBy'), - 'pullAllWith': require('./pullAllWith'), - 'pullAt': require('./pullAt'), - 'remove': require('./remove'), - 'reverse': require('./reverse'), - 'slice': require('./slice'), - 'sortedIndex': require('./sortedIndex'), - 'sortedIndexBy': require('./sortedIndexBy'), - 'sortedIndexOf': require('./sortedIndexOf'), - 'sortedLastIndex': require('./sortedLastIndex'), - 'sortedLastIndexBy': require('./sortedLastIndexBy'), - 'sortedLastIndexOf': require('./sortedLastIndexOf'), - 'sortedUniq': require('./sortedUniq'), - 'sortedUniqBy': require('./sortedUniqBy'), - 'tail': require('./tail'), - 'take': require('./take'), - 'takeRight': require('./takeRight'), - 'takeRightWhile': require('./takeRightWhile'), - 'takeWhile': require('./takeWhile'), - 'union': require('./union'), - 'unionBy': require('./unionBy'), - 'unionWith': require('./unionWith'), - 'uniq': require('./uniq'), - 'uniqBy': require('./uniqBy'), - 'uniqWith': require('./uniqWith'), - 'unzip': require('./unzip'), - 'unzipWith': require('./unzipWith'), - 'without': require('./without'), - 'xor': require('./xor'), - 'xorBy': require('./xorBy'), - 'xorWith': require('./xorWith'), - 'zip': require('./zip'), - 'zipObject': require('./zipObject'), - 'zipObjectDeep': require('./zipObjectDeep'), - 'zipWith': require('./zipWith') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ary.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ary.js deleted file mode 100644 index c743b06a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ary.js +++ /dev/null @@ -1,29 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var ARY_FLAG = 128; - -/** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ -function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, ARY_FLAG, undefined, undefined, undefined, undefined, n); -} - -module.exports = ary; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assign.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assign.js deleted file mode 100644 index 5488c8b6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assign.js +++ /dev/null @@ -1,64 +0,0 @@ -var assignValue = require('./_assignValue'), - copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - isArrayLike = require('./isArrayLike'), - isPrototype = require('./_isPrototype'), - keys = require('./keys'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ -var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); - -/** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ -var assign = createAssigner(function(object, source) { - if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } -}); - -module.exports = assign; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignIn.js deleted file mode 100644 index e663473a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignIn.js +++ /dev/null @@ -1,40 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ -var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); -}); - -module.exports = assignIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignInWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignInWith.js deleted file mode 100644 index 68fcc0b0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignInWith.js +++ /dev/null @@ -1,38 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); -}); - -module.exports = assignInWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignWith.js deleted file mode 100644 index 7dc6c761..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/assignWith.js +++ /dev/null @@ -1,37 +0,0 @@ -var copyObject = require('./_copyObject'), - createAssigner = require('./_createAssigner'), - keys = require('./keys'); - -/** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); -}); - -module.exports = assignWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/at.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/at.js deleted file mode 100644 index 5849a8ca..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/at.js +++ /dev/null @@ -1,26 +0,0 @@ -var baseAt = require('./_baseAt'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'); - -/** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths of elements to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ -var at = baseRest(function(object, paths) { - return baseAt(object, baseFlatten(paths, 1)); -}); - -module.exports = at; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/attempt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/attempt.js deleted file mode 100644 index 624d0152..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/attempt.js +++ /dev/null @@ -1,35 +0,0 @@ -var apply = require('./_apply'), - baseRest = require('./_baseRest'), - isError = require('./isError'); - -/** - * Attempts to invoke `func`, returning either the result or the caught error - * object. Any additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Function} func The function to attempt. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {*} Returns the `func` result or error object. - * @example - * - * // Avoid throwing errors for invalid selectors. - * var elements = _.attempt(function(selector) { - * return document.querySelectorAll(selector); - * }, '>_>'); - * - * if (_.isError(elements)) { - * elements = []; - * } - */ -var attempt = baseRest(function(func, args) { - try { - return apply(func, undefined, args); - } catch (e) { - return isError(e) ? e : new Error(e); - } -}); - -module.exports = attempt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/before.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/before.js deleted file mode 100644 index 87aff949..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/before.js +++ /dev/null @@ -1,40 +0,0 @@ -var toInteger = require('./toInteger'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ -function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; -} - -module.exports = before; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bind.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bind.js deleted file mode 100644 index eac913bf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bind.js +++ /dev/null @@ -1,57 +0,0 @@ -var baseRest = require('./_baseRest'), - createWrap = require('./_createWrap'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ -var bind = baseRest(function(func, thisArg, partials) { - var bitmask = BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); -}); - -// Assign default placeholders. -bind.placeholder = {}; - -module.exports = bind; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindAll.js deleted file mode 100644 index 7d0d09d5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindAll.js +++ /dev/null @@ -1,41 +0,0 @@ -var arrayEach = require('./_arrayEach'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - bind = require('./bind'), - toKey = require('./_toKey'); - -/** - * Binds methods of an object to the object itself, overwriting the existing - * method. - * - * **Note:** This method doesn't set the "length" property of bound functions. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} methodNames The object method names to bind. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'click': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * _.bindAll(view, ['click']); - * jQuery(element).on('click', view.click); - * // => Logs 'clicked docs' when clicked. - */ -var bindAll = baseRest(function(object, methodNames) { - arrayEach(baseFlatten(methodNames, 1), function(key) { - key = toKey(key); - object[key] = bind(object[key], object); - }); - return object; -}); - -module.exports = bindAll; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindKey.js deleted file mode 100644 index 88244408..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/bindKey.js +++ /dev/null @@ -1,68 +0,0 @@ -var baseRest = require('./_baseRest'), - createWrap = require('./_createWrap'), - getHolder = require('./_getHolder'), - replaceHolders = require('./_replaceHolders'); - -/** Used to compose bitmasks for function metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ -var bindKey = baseRest(function(object, key, partials) { - var bitmask = BIND_FLAG | BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); -}); - -// Assign default placeholders. -bindKey.placeholder = {}; - -module.exports = bindKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/camelCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/camelCase.js deleted file mode 100644 index d7390def..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/camelCase.js +++ /dev/null @@ -1,29 +0,0 @@ -var capitalize = require('./capitalize'), - createCompounder = require('./_createCompounder'); - -/** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ -var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); -}); - -module.exports = camelCase; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/capitalize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/capitalize.js deleted file mode 100644 index 3e1600e7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/capitalize.js +++ /dev/null @@ -1,23 +0,0 @@ -var toString = require('./toString'), - upperFirst = require('./upperFirst'); - -/** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ -function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); -} - -module.exports = capitalize; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/castArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/castArray.js deleted file mode 100644 index e470bdb9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/castArray.js +++ /dev/null @@ -1,44 +0,0 @@ -var isArray = require('./isArray'); - -/** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ -function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; -} - -module.exports = castArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ceil.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ceil.js deleted file mode 100644 index 56c8722c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/ceil.js +++ /dev/null @@ -1,26 +0,0 @@ -var createRound = require('./_createRound'); - -/** - * Computes `number` rounded up to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round up. - * @param {number} [precision=0] The precision to round up to. - * @returns {number} Returns the rounded up number. - * @example - * - * _.ceil(4.006); - * // => 5 - * - * _.ceil(6.004, 2); - * // => 6.01 - * - * _.ceil(6040, -2); - * // => 6100 - */ -var ceil = createRound('ceil'); - -module.exports = ceil; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chain.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chain.js deleted file mode 100644 index f6cd6475..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chain.js +++ /dev/null @@ -1,38 +0,0 @@ -var lodash = require('./wrapperLodash'); - -/** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ -function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; -} - -module.exports = chain; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chunk.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chunk.js deleted file mode 100644 index 356510f5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/chunk.js +++ /dev/null @@ -1,50 +0,0 @@ -var baseSlice = require('./_baseSlice'), - isIterateeCall = require('./_isIterateeCall'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ -function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array ? array.length : 0; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; -} - -module.exports = chunk; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clamp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clamp.js deleted file mode 100644 index 91a72c97..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clamp.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseClamp = require('./_baseClamp'), - toNumber = require('./toNumber'); - -/** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ -function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); -} - -module.exports = clamp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clone.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clone.js deleted file mode 100644 index d02395ea..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/clone.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ -function clone(value) { - return baseClone(value, false, true); -} - -module.exports = clone; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeep.js deleted file mode 100644 index 94efce12..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeep.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ -function cloneDeep(value) { - return baseClone(value, true, true); -} - -module.exports = cloneDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeepWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeepWith.js deleted file mode 100644 index 4a345fb2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneDeepWith.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ -function cloneDeepWith(value, customizer) { - return baseClone(value, true, true, customizer); -} - -module.exports = cloneDeepWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneWith.js deleted file mode 100644 index c85f573f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cloneWith.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseClone = require('./_baseClone'); - -/** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ -function cloneWith(value, customizer) { - return baseClone(value, false, true, customizer); -} - -module.exports = cloneWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/collection.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/collection.js deleted file mode 100644 index 77fe837f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/collection.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = { - 'countBy': require('./countBy'), - 'each': require('./each'), - 'eachRight': require('./eachRight'), - 'every': require('./every'), - 'filter': require('./filter'), - 'find': require('./find'), - 'findLast': require('./findLast'), - 'flatMap': require('./flatMap'), - 'flatMapDeep': require('./flatMapDeep'), - 'flatMapDepth': require('./flatMapDepth'), - 'forEach': require('./forEach'), - 'forEachRight': require('./forEachRight'), - 'groupBy': require('./groupBy'), - 'includes': require('./includes'), - 'invokeMap': require('./invokeMap'), - 'keyBy': require('./keyBy'), - 'map': require('./map'), - 'orderBy': require('./orderBy'), - 'partition': require('./partition'), - 'reduce': require('./reduce'), - 'reduceRight': require('./reduceRight'), - 'reject': require('./reject'), - 'sample': require('./sample'), - 'sampleSize': require('./sampleSize'), - 'shuffle': require('./shuffle'), - 'size': require('./size'), - 'some': require('./some'), - 'sortBy': require('./sortBy') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/commit.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/commit.js deleted file mode 100644 index fe4db717..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/commit.js +++ /dev/null @@ -1,33 +0,0 @@ -var LodashWrapper = require('./_LodashWrapper'); - -/** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ -function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); -} - -module.exports = wrapperCommit; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/compact.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/compact.js deleted file mode 100644 index 790f3119..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/compact.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ -function compact(array) { - var index = -1, - length = array ? array.length : 0, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; -} - -module.exports = compact; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/concat.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/concat.js deleted file mode 100644 index 506306c6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/concat.js +++ /dev/null @@ -1,42 +0,0 @@ -var arrayPush = require('./_arrayPush'), - baseFlatten = require('./_baseFlatten'), - copyArray = require('./_copyArray'), - isArray = require('./isArray'); - -/** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ -function concat() { - var length = arguments.length, - args = Array(length ? length - 1 : 0), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return length - ? arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)) - : []; -} - -module.exports = concat; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cond.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cond.js deleted file mode 100644 index 28955cef..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/cond.js +++ /dev/null @@ -1,60 +0,0 @@ -var apply = require('./_apply'), - arrayMap = require('./_arrayMap'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that iterates over `pairs` and invokes the corresponding - * function of the first predicate to return truthy. The predicate-function - * pairs are invoked with the `this` binding and arguments of the created - * function. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Array} pairs The predicate-function pairs. - * @returns {Function} Returns the new composite function. - * @example - * - * var func = _.cond([ - * [_.matches({ 'a': 1 }), _.constant('matches A')], - * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], - * [_.stubTrue, _.constant('no match')] - * ]); - * - * func({ 'a': 1, 'b': 2 }); - * // => 'matches A' - * - * func({ 'a': 0, 'b': 1 }); - * // => 'matches B' - * - * func({ 'a': '1', 'b': '2' }); - * // => 'no match' - */ -function cond(pairs) { - var length = pairs ? pairs.length : 0, - toIteratee = baseIteratee; - - pairs = !length ? [] : arrayMap(pairs, function(pair) { - if (typeof pair[1] != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return [toIteratee(pair[0]), pair[1]]; - }); - - return baseRest(function(args) { - var index = -1; - while (++index < length) { - var pair = pairs[index]; - if (apply(pair[0], this, args)) { - return apply(pair[1], this, args); - } - } - }); -} - -module.exports = cond; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conforms.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conforms.js deleted file mode 100644 index e4c537e9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conforms.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseClone = require('./_baseClone'), - baseConforms = require('./_baseConforms'); - -/** - * Creates a function that invokes the predicate properties of `source` with - * the corresponding property values of a given object, returning `true` if - * all predicates return truthy, else `false`. - * - * **Note:** The created function is equivalent to `_.conformsTo` with - * `source` partially applied. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Util - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 2, 'b': 1 }, - * { 'a': 1, 'b': 2 } - * ]; - * - * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); - * // => [{ 'a': 1, 'b': 2 }] - */ -function conforms(source) { - return baseConforms(baseClone(source, true)); -} - -module.exports = conforms; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conformsTo.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conformsTo.js deleted file mode 100644 index b8a93ebf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/conformsTo.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseConformsTo = require('./_baseConformsTo'), - keys = require('./keys'); - -/** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ -function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); -} - -module.exports = conformsTo; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/constant.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/constant.js deleted file mode 100644 index 655ece3f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/constant.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} - -module.exports = constant; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.js deleted file mode 100644 index de27977d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.js +++ /dev/null @@ -1,3806 +0,0 @@ -/** - * @license - * lodash (Custom Build) - * Build: `lodash core -o ./dist/lodash.core.js` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.15.0'; - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to compose bitmasks for function metadata. */ - var BIND_FLAG = 1, - PARTIAL_FLAG = 32; - - /** Used to compose bitmasks for comparison styles. */ - var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - stringTag = '[object String]'; - - /** Used to match HTML entities and HTML characters. */ - var reUnescapedHtml = /[&<>"'`]/g, - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /*--------------------------------------------------------------------------*/ - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - array.push.apply(array, values); - return array; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return baseMap(props, function(key) { - return object[key]; - }); - } - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject() { - return false; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /*--------------------------------------------------------------------------*/ - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - objectProto = Object.prototype; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString = objectProto.toString; - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Built-in value references. */ - var objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeIsFinite = root.isFinite, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array of at least `200` elements - * and any iteratees accept only one argument. The heuristic for whether a - * section qualifies for shortcut fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - return value instanceof LodashWrapper - ? value - : new LodashWrapper(value); - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - } - - LodashWrapper.prototype = baseCreate(lodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Used by `_.defaults` to customize its `_.assignIn` use. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function assignInDefaults(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - object[key] = value; - } - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(proto) { - return isObject(proto) ? objectCreate(proto) : {}; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !false) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return baseFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && objectToString.call(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @param {boolean} [bitmask] The bitmask of comparison flags. - * The bitmask may be composed of the following flags: - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, customizer, bitmask, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; - - if (!objIsArr) { - objTag = objectToString.call(object); - objTag = objTag == argsTag ? objectTag : objTag; - } - if (!othIsArr) { - othTag = objectToString.call(other); - othTag = othTag == argsTag ? objectTag : othTag; - } - var objIsObj = objTag == objectTag && !isHostObject(object), - othIsObj = othTag == objectTag && !isHostObject(other), - isSameTag = objTag == othTag; - - stack || (stack = []); - var objStack = find(stack, function(entry) { - return entry[0] == object; - }); - var othStack = find(stack, function(entry) { - return entry[0] == other; - }); - if (objStack && othStack) { - return objStack[1] == other; - } - stack.push([object, other]); - stack.push([other, object]); - if (isSameTag && !objIsObj) { - var result = (objIsArr) - ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) - : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); - stack.pop(); - return result; - } - if (!(bitmask & PARTIAL_COMPARE_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - var result = equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); - stack.pop(); - return result; - } - } - if (!isSameTag) { - return false; - } - var result = equalObjects(object, other, equalFunc, customizer, bitmask, stack); - stack.pop(); - return result; - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObject(value) && objectToString.call(value) == regexpTag; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(func) { - if (typeof func == 'function') { - return func; - } - if (func == null) { - return identity; - } - return (typeof func == 'object' ? baseMatches : baseProperty)(func); - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var props = nativeKeys(source); - return function(object) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length]; - if (!(key in object && - baseIsEqual(source[key], object[key], undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG) - )) { - return false; - } - } - return true; - }; - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property identifiers to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, props) { - object = Object(object); - return reduce(props, function(result, key) { - if (key in object) { - result[key] = object[key]; - } - return result; - }, {}); - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = array; - return func.apply(this, otherArgs); - }; - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source) { - return baseSlice(source, 0, source.length); - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - return reduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = false; - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = false; - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - assignValue(object, key, newValue === undefined ? source[key] : newValue); - } - return object; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = baseIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var isBind = bitmask & BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return fn.apply(isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - var index = -1, - result = true, - seen = (bitmask & UNORDERED_COMPARE_FLAG) ? [] : undefined; - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - var compared; - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!baseSome(other, function(othValue, othIndex) { - if (!indexOf(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, customizer, bitmask, stack) - )) { - result = false; - break; - } - } - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { - switch (tag) { - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - var result = true; - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - var compared; - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - return result; - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value); - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - var toKey = String; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - return baseFilter(array, Boolean); - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length, - args = Array(length ? length - 1 : 0), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return length - ? arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)) - : []; - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; - } else { - fromIndex = 0; - } - var index = (fromIndex || 0) - 1, - isReflexive = value === value; - - while (++index < length) { - var other = array[index]; - if ((isReflexive ? other === value : other !== other)) { - return index; - } - } - return -1; - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array ? array.length : 0; - start = start == null ? 0 : +start; - end = end === undefined ? length : +end; - return length ? baseSlice(array, start, end) : []; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - predicate = guard ? undefined : predicate; - return baseEvery(collection, baseIteratee(predicate)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ - function filter(collection, predicate) { - return baseFilter(collection, baseIteratee(predicate)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _([1, 2]).forEach(function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - return baseEach(collection, baseIteratee(iteratee)); - } - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - return baseMap(collection, baseIteratee(iteratee)); - } - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - collection = isArrayLike(collection) ? collection : nativeKeys(collection); - return collection.length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - predicate = guard ? undefined : predicate; - return baseSome(collection, baseIteratee(predicate)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, function(o) { return o.user; }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] - * - * _.sortBy(users, 'user', function(o) { - * return Math.floor(o.age / 10); - * }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function sortBy(collection, iteratee) { - var index = 0; - iteratee = baseIteratee(iteratee); - - return baseMap(baseMap(collection, function(value, key, collection) { - return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) }; - }).sort(function(object, other) { - return compareAscending(object.criteria, other.criteria) || (object.index - other.index); - }), baseProperty('value')); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - return createPartial(func, BIND_FLAG | PARTIAL_FLAG, thisArg, partials); - }); - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one or more milliseconds. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - if (!isObject(value)) { - return value; - } - return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && objectToString.call(value) == boolTag); - } - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = baseIsDate; - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (isArrayLike(value) && - (isArray(value) || isString(value) || - isFunction(value.splice) || isArguments(value))) { - return !value.length; - } - return !nativeKeys(value).length; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are **not** supported. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && objectToString.call(value) == numberTag); - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = baseIsRegExp; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!isArrayLike(value)) { - return values(value); - } - return value.length ? copyArray(value) : []; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - var toInteger = Number; - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - var toNumber = Number; - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - copyObject(source, nativeKeys(source), object); - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, nativeKeysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? assign(result, properties) : result; - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(args) { - args.push(undefined, assignInDefaults); - return assignInWith.apply(undefined, args); - }); - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasOwnProperty.call(object, path); - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - var keys = nativeKeys; - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - var keysIn = nativeKeysIn; - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [props] The property identifiers to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = baseRest(function(object, props) { - return object == null ? {} : basePick(object, baseMap(baseFlatten(props, 1), toKey)); - }); - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - var value = object == null ? undefined : object[path]; - if (value === undefined) { - value = defaultValue; - } - return isFunction(value) ? value.call(object) : value; - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object ? baseValues(object, keys(object)) : []; - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in IE < 9, they can break out of - * attribute values or HTML comments. See [#59](https://html5sec.org/#59), - * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and - * [#133](https://html5sec.org/#133) of the - * [HTML5 Security Cheatsheet](https://html5sec.org/) for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /*------------------------------------------------------------------------*/ - - /** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ - function identity(value) { - return value; - } - - /** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name, the created function returns the - * property value for a given element. If `func` is an array or object, the - * created function returns `true` for elements that contain the equivalent - * source properties, otherwise it returns `false`. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); - * // => [{ 'user': 'barney', 'age': 36, 'active': true }] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, _.iteratee(['user', 'fred'])); - * // => [{ 'user': 'fred', 'age': 40 }] - * - * // The `_.property` iteratee shorthand. - * _.map(users, _.iteratee('user')); - * // => ['barney', 'fred'] - * - * // Create custom iteratee shorthands. - * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { - * return !_.isRegExp(func) ? iteratee(func) : function(string) { - * return func.test(string); - * }; - * }); - * - * _.filter(['abc', 'def'], /ef/); - * // => ['def'] - */ - var iteratee = baseIteratee; - - /** - * Creates a function that performs a partial deep comparison between a given - * object and `source`, returning `true` if the given object has equivalent - * property values, else `false`. - * - * **Note:** The created function is equivalent to `_.isMatch` with `source` - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - * @example - * - * var objects = [ - * { 'a': 1, 'b': 2, 'c': 3 }, - * { 'a': 4, 'b': 5, 'c': 6 } - * ]; - * - * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); - * // => [{ 'a': 4, 'b': 5, 'c': 6 }] - */ - function matches(source) { - return baseMatches(assign({}, source)); - } - - /** - * Adds all own enumerable string keyed function properties of a source - * object to the destination object. If `object` is a function, then methods - * are added to its prototype as well. - * - * **Note:** Use `_.runInContext` to create a pristine `lodash` function to - * avoid conflicts caused by modifying the original. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {Function|Object} [object=lodash] The destination object. - * @param {Object} source The object of functions to add. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.chain=true] Specify whether mixins are chainable. - * @returns {Function|Object} Returns `object`. - * @example - * - * function vowels(string) { - * return _.filter(string, function(v) { - * return /[aeiou]/i.test(v); - * }); - * } - * - * _.mixin({ 'vowels': vowels }); - * _.vowels('fred'); - * // => ['e'] - * - * _('fred').vowels().value(); - * // => ['e'] - * - * _.mixin({ 'vowels': vowels }, { 'chain': false }); - * _('fred').vowels(); - * // => ['e'] - */ - function mixin(object, source, options) { - var props = keys(source), - methodNames = baseFunctions(source, props); - - if (options == null && - !(isObject(source) && (methodNames.length || !props.length))) { - options = source; - source = object; - object = this; - methodNames = baseFunctions(source, keys(source)); - } - var chain = !(isObject(options) && 'chain' in options) || !!options.chain, - isFunc = isFunction(object); - - baseEach(methodNames, function(methodName) { - var func = source[methodName]; - object[methodName] = func; - if (isFunc) { - object.prototype[methodName] = function() { - var chainAll = this.__chain__; - if (chain || chainAll) { - var result = object(this.__wrapped__), - actions = result.__actions__ = copyArray(this.__actions__); - - actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); - result.__chain__ = chainAll; - return result; - } - return func.apply(object, arrayPush([this.value()], arguments)); - }; - } - }); - - return object; - } - - /** - * Reverts the `_` variable to its previous value and returns a reference to - * the `lodash` function. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @returns {Function} Returns the `lodash` function. - * @example - * - * var lodash = _.noConflict(); - */ - function noConflict() { - if (root._ === this) { - root._ = oldDash; - } - return this; - } - - /** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ - function noop() { - // No operation performed. - } - - /** - * Generates a unique ID. If `prefix` is given, the ID is appended to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {string} [prefix=''] The value to prefix the ID with. - * @returns {string} Returns the unique ID. - * @example - * - * _.uniqueId('contact_'); - * // => 'contact_104' - * - * _.uniqueId(); - * // => '105' - */ - function uniqueId(prefix) { - var id = ++idCounter; - return toString(prefix) + id; - } - - /*------------------------------------------------------------------------*/ - - /** - * Computes the maximum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * _.max([]); - * // => undefined - */ - function max(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseGt) - : undefined; - } - - /** - * Computes the minimum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * _.min([]); - * // => undefined - */ - function min(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseLt) - : undefined; - } - - /*------------------------------------------------------------------------*/ - - // Add methods that return wrapped values in chain sequences. - lodash.assignIn = assignIn; - lodash.before = before; - lodash.bind = bind; - lodash.chain = chain; - lodash.compact = compact; - lodash.concat = concat; - lodash.create = create; - lodash.defaults = defaults; - lodash.defer = defer; - lodash.delay = delay; - lodash.filter = filter; - lodash.flatten = flatten; - lodash.flattenDeep = flattenDeep; - lodash.iteratee = iteratee; - lodash.keys = keys; - lodash.map = map; - lodash.matches = matches; - lodash.mixin = mixin; - lodash.negate = negate; - lodash.once = once; - lodash.pick = pick; - lodash.slice = slice; - lodash.sortBy = sortBy; - lodash.tap = tap; - lodash.thru = thru; - lodash.toArray = toArray; - lodash.values = values; - - // Add aliases. - lodash.extend = assignIn; - - // Add methods to `lodash.prototype`. - mixin(lodash, lodash); - - /*------------------------------------------------------------------------*/ - - // Add methods that return unwrapped values in chain sequences. - lodash.clone = clone; - lodash.escape = escape; - lodash.every = every; - lodash.find = find; - lodash.forEach = forEach; - lodash.has = has; - lodash.head = head; - lodash.identity = identity; - lodash.indexOf = indexOf; - lodash.isArguments = isArguments; - lodash.isArray = isArray; - lodash.isBoolean = isBoolean; - lodash.isDate = isDate; - lodash.isEmpty = isEmpty; - lodash.isEqual = isEqual; - lodash.isFinite = isFinite; - lodash.isFunction = isFunction; - lodash.isNaN = isNaN; - lodash.isNull = isNull; - lodash.isNumber = isNumber; - lodash.isObject = isObject; - lodash.isRegExp = isRegExp; - lodash.isString = isString; - lodash.isUndefined = isUndefined; - lodash.last = last; - lodash.max = max; - lodash.min = min; - lodash.noConflict = noConflict; - lodash.noop = noop; - lodash.reduce = reduce; - lodash.result = result; - lodash.size = size; - lodash.some = some; - lodash.uniqueId = uniqueId; - - // Add aliases. - lodash.each = forEach; - lodash.first = head; - - mixin(lodash, (function() { - var source = {}; - baseForOwn(lodash, function(func, methodName) { - if (!hasOwnProperty.call(lodash.prototype, methodName)) { - source[methodName] = func; - } - }); - return source; - }()), { 'chain': false }); - - /*------------------------------------------------------------------------*/ - - /** - * The semantic version number. - * - * @static - * @memberOf _ - * @type {string} - */ - lodash.VERSION = VERSION; - - // Add `Array` methods to `lodash.prototype`. - baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { - var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName], - chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', - retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName); - - lodash.prototype[methodName] = function() { - var args = arguments; - if (retUnwrapped && !this.__chain__) { - var value = this.value(); - return func.apply(isArray(value) ? value : [], args); - } - return this[chainName](function(value) { - return func.apply(isArray(value) ? value : [], args); - }); - }; - }); - - // Add chain sequence methods to the `lodash` wrapper. - lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; - - /*--------------------------------------------------------------------------*/ - - // Some AMD build optimizers, like r.js, check for condition patterns like: - if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) { - // Expose Lodash on the global object to prevent errors when Lodash is - // loaded by a script tag in the presence of an AMD loader. - // See http://requirejs.org/docs/errors.html#mismatch for more details. - // Use `_.noConflict` to remove Lodash from the global object. - root._ = lodash; - - // Define as an anonymous module so, through path mapping, it can be - // referenced as the "underscore" module. - define(function() { - return lodash; - }); - } - // Check for `exports` after `define` in case a build optimizer adds it. - else if (freeModule) { - // Export for Node.js. - (freeModule.exports = lodash)._ = lodash; - // Export for CommonJS support. - freeExports._ = lodash; - } - else { - // Export to the global object. - root._ = lodash; - } -}.call(this)); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.min.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.min.js deleted file mode 100644 index f5c9efae..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/core.min.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * lodash (Custom Build) /license | Underscore.js 1.8.3 underscorejs.org/LICENSE - * Build: `lodash core -o ./dist/lodash.core.js` - */ -;(function(){function n(n,t){return n.push.apply(n,t),n}function t(n){return function(t){return null==t?Z:t[n]}}function r(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function e(n,t){return d(t,function(t){return n[t]})}function u(n){return n instanceof o?n:new o(n)}function o(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function i(n,t,r,e){return n===Z||J(n,an[r])&&!ln.call(e,r)?t:n}function c(n){return V(n)?vn(n):{}}function f(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function"); -return setTimeout(function(){n.apply(Z,r)},t)}function a(n,t){var r=true;return jn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function l(n,t,r){for(var e=-1,u=n.length;++et}function y(n,t,r,e,u){return n===t||(null==n||null==t||!V(n)&&!H(t)?n!==n&&t!==t:g(n,t,y,r,e,u))}function g(n,t,r,e,u,o){var i=wn(n),c=wn(t),f="[object Array]",a="[object Array]";i||(f=sn.call(n),f="[object Arguments]"==f?"[object Object]":f),c||(a=sn.call(t),a="[object Arguments]"==a?"[object Object]":a);var l="[object Object]"==f&&true,c="[object Object]"==a&&true,a=f==a;o||(o=[]);var p=On(o,function(t){return t[0]==n; -}),s=On(o,function(n){return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=B(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 2&u||(i=l&&ln.call(n,"__wrapped__"),f=c&&ln.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=R(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n, -f=f?t.value():t,r=r(i,f,e,u,o),o.pop(),r)}function _(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?m:t)(n)}function j(n,t){return nt&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++ei))return false;for(var c=-1,f=true,a=1&u?[]:Z;++cr?_n(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++rarguments.length,jn)}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=kn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){ -return H(n)&&P(n)&&ln.call(n,"callee")&&(!bn.call(n,"callee")||"[object Arguments]"==sn.call(n))}function P(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1=t),t&&!U(n)}function U(n){return n=V(n)?sn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function V(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function H(n){return!!n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==sn.call(n)} -function L(n){return typeof n=="string"||!wn(n)&&H(n)&&"[object String]"==sn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return n?e(n,Rn(n)):[]}function X(n){return n}function Y(t,r,e){var u=Rn(r),o=v(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=v(r,Rn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(t);return jn(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=E(this.__actions__)).push({ -func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var Z,nn=1/0,tn=/[&<>"'`]/g,rn=RegExp(tn.source),en=typeof self=="object"&&self&&self.Object===Object&&self,un=typeof global=="object"&&global&&global.Object===Object&&global||en||Function("return this")(),on=(en=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,cn=function(n){return function(t){return null==n?Z:n[t]}}({"&":"&", -"<":"<",">":">",'"':""","'":"'","`":"`"}),fn=Array.prototype,an=Object.prototype,ln=an.hasOwnProperty,pn=0,sn=an.toString,hn=un._,vn=Object.create,bn=an.propertyIsEnumerable,yn=un.isFinite,gn=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),_n=Math.max;o.prototype=c(u.prototype),o.prototype.constructor=o;var jn=function(n,t){return function(r,e){if(null==r)return r;if(!P(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++or&&(r=_n(e+r,0));n:{for(t=_(t),e=n.length,r+=-1;++re||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ -var countBy = createAggregator(function(result, value, key) { - hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); -}); - -module.exports = countBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/create.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/create.js deleted file mode 100644 index a99067ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/create.js +++ /dev/null @@ -1,43 +0,0 @@ -var baseAssign = require('./_baseAssign'), - baseCreate = require('./_baseCreate'); - -/** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ -function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? baseAssign(result, properties) : result; -} - -module.exports = create; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curry.js deleted file mode 100644 index ce3910bc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curry.js +++ /dev/null @@ -1,57 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var CURRY_FLAG = 8; - -/** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ -function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; -} - -// Assign default placeholders. -curry.placeholder = {}; - -module.exports = curry; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curryRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curryRight.js deleted file mode 100644 index 2b7691fa..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/curryRight.js +++ /dev/null @@ -1,54 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var CURRY_RIGHT_FLAG = 16; - -/** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ -function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; -} - -// Assign default placeholders. -curryRight.placeholder = {}; - -module.exports = curryRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/date.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/date.js deleted file mode 100644 index cbf5b410..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/date.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - 'now': require('./now') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/debounce.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/debounce.js deleted file mode 100644 index 07dd22ee..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/debounce.js +++ /dev/null @@ -1,188 +0,0 @@ -var isObject = require('./isObject'), - now = require('./now'), - toNumber = require('./toNumber'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ -function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - result = wait - timeSinceLastCall; - - return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; -} - -module.exports = debounce; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/deburr.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/deburr.js deleted file mode 100644 index bc08b05d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/deburr.js +++ /dev/null @@ -1,43 +0,0 @@ -var deburrLetter = require('./_deburrLetter'), - toString = require('./toString'); - -/** Used to match Latin Unicode letters (excluding mathematical operators). */ -var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - -/** Used to compose unicode character classes. */ -var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0'; - -/** Used to compose unicode capture groups. */ -var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']'; - -/** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ -var reComboMark = RegExp(rsCombo, 'g'); - -/** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ -function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); -} - -module.exports = deburr; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultTo.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultTo.js deleted file mode 100644 index 5b333592..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultTo.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks `value` to determine whether a default value should be returned in - * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, - * or `undefined`. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Util - * @param {*} value The value to check. - * @param {*} defaultValue The default value. - * @returns {*} Returns the resolved value. - * @example - * - * _.defaultTo(1, 10); - * // => 1 - * - * _.defaultTo(undefined, 10); - * // => 10 - */ -function defaultTo(value, defaultValue) { - return (value == null || value !== value) ? defaultValue : value; -} - -module.exports = defaultTo; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaults.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaults.js deleted file mode 100644 index 5333b425..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaults.js +++ /dev/null @@ -1,32 +0,0 @@ -var apply = require('./_apply'), - assignInDefaults = require('./_assignInDefaults'), - assignInWith = require('./assignInWith'), - baseRest = require('./_baseRest'); - -/** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var defaults = baseRest(function(args) { - args.push(undefined, assignInDefaults); - return apply(assignInWith, undefined, args); -}); - -module.exports = defaults; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultsDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultsDeep.js deleted file mode 100644 index 41680ed2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defaultsDeep.js +++ /dev/null @@ -1,30 +0,0 @@ -var apply = require('./_apply'), - baseRest = require('./_baseRest'), - mergeDefaults = require('./_mergeDefaults'), - mergeWith = require('./mergeWith'); - -/** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ -var defaultsDeep = baseRest(function(args) { - args.push(undefined, mergeDefaults); - return apply(mergeWith, undefined, args); -}); - -module.exports = defaultsDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defer.js deleted file mode 100644 index 351f630b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -var baseDelay = require('./_baseDelay'), - baseRest = require('./_baseRest'); - -/** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one or more milliseconds. - */ -var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); -}); - -module.exports = defer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/delay.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/delay.js deleted file mode 100644 index bd554796..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/delay.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseDelay = require('./_baseDelay'), - baseRest = require('./_baseRest'), - toNumber = require('./toNumber'); - -/** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ -var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); -}); - -module.exports = delay; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/difference.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/difference.js deleted file mode 100644 index c18e0578..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/difference.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'); - -/** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order of result values is determined by the - * order they occur in the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ -var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; -}); - -module.exports = difference; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceBy.js deleted file mode 100644 index 16fa097a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceBy.js +++ /dev/null @@ -1,43 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. Result values are chosen from the first array. - * The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ -var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2)) - : []; -}); - -module.exports = differenceBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceWith.js deleted file mode 100644 index 82ecc95f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/differenceWith.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseDifference = require('./_baseDifference'), - baseFlatten = require('./_baseFlatten'), - baseRest = require('./_baseRest'), - isArrayLikeObject = require('./isArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. Result values - * are chosen from the first array. The comparator is invoked with two arguments: - * (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ -var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; -}); - -module.exports = differenceWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/divide.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/divide.js deleted file mode 100644 index 8cae0cd1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/divide.js +++ /dev/null @@ -1,22 +0,0 @@ -var createMathOperation = require('./_createMathOperation'); - -/** - * Divide two numbers. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Math - * @param {number} dividend The first number in a division. - * @param {number} divisor The second number in a division. - * @returns {number} Returns the quotient. - * @example - * - * _.divide(6, 4); - * // => 1.5 - */ -var divide = createMathOperation(function(dividend, divisor) { - return dividend / divisor; -}, 1); - -module.exports = divide; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/drop.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/drop.js deleted file mode 100644 index 6124ef76..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/drop.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseSlice = require('./_baseSlice'), - toInteger = require('./toInteger'); - -/** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function drop(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); -} - -module.exports = drop; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRight.js deleted file mode 100644 index 8aa3576e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRight.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseSlice = require('./_baseSlice'), - toInteger = require('./toInteger'); - -/** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function dropRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); -} - -module.exports = dropRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRightWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRightWhile.js deleted file mode 100644 index 9ad36a04..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropRightWhile.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - baseWhile = require('./_baseWhile'); - -/** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ -function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, baseIteratee(predicate, 3), true, true) - : []; -} - -module.exports = dropRightWhile; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropWhile.js deleted file mode 100644 index f89444ed..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/dropWhile.js +++ /dev/null @@ -1,46 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - baseWhile = require('./_baseWhile'); - -/** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ -function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, baseIteratee(predicate, 3), true) - : []; -} - -module.exports = dropWhile; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/each.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/each.js deleted file mode 100644 index 8800f420..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEach'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eachRight.js deleted file mode 100644 index 3252b2ab..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEachRight'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/endsWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/endsWith.js deleted file mode 100644 index 76fc866e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/endsWith.js +++ /dev/null @@ -1,43 +0,0 @@ -var baseClamp = require('./_baseClamp'), - baseToString = require('./_baseToString'), - toInteger = require('./toInteger'), - toString = require('./toString'); - -/** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ -function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; -} - -module.exports = endsWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entries.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entries.js deleted file mode 100644 index 7a88df20..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entries.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairs'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entriesIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entriesIn.js deleted file mode 100644 index f6c6331c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/entriesIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairsIn'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eq.js deleted file mode 100644 index a9406880..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/eq.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} - -module.exports = eq; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escape.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escape.js deleted file mode 100644 index 176417c4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escape.js +++ /dev/null @@ -1,49 +0,0 @@ -var escapeHtmlChar = require('./_escapeHtmlChar'), - toString = require('./toString'); - -/** Used to match HTML entities and HTML characters. */ -var reUnescapedHtml = /[&<>"'`]/g, - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - -/** - * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in IE < 9, they can break out of - * attribute values or HTML comments. See [#59](https://html5sec.org/#59), - * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and - * [#133](https://html5sec.org/#133) of the - * [HTML5 Security Cheatsheet](https://html5sec.org/) for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ -function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; -} - -module.exports = escape; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escapeRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escapeRegExp.js deleted file mode 100644 index 0a58c69f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/escapeRegExp.js +++ /dev/null @@ -1,32 +0,0 @@ -var toString = require('./toString'); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - -/** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ -function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; -} - -module.exports = escapeRegExp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/every.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/every.js deleted file mode 100644 index 114f40f1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/every.js +++ /dev/null @@ -1,57 +0,0 @@ -var arrayEvery = require('./_arrayEvery'), - baseEvery = require('./_baseEvery'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ -function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, baseIteratee(predicate, 3)); -} - -module.exports = every; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extend.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extend.js deleted file mode 100644 index e00166c2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extend.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignIn'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extendWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extendWith.js deleted file mode 100644 index dbdcb3b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/extendWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInWith'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fill.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fill.js deleted file mode 100644 index 5730b7d1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fill.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseFill = require('./_baseFill'), - isIterateeCall = require('./_isIterateeCall'); - -/** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ -function fill(array, value, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); -} - -module.exports = fill; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/filter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/filter.js deleted file mode 100644 index 3df977bb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/filter.js +++ /dev/null @@ -1,49 +0,0 @@ -var arrayFilter = require('./_arrayFilter'), - baseFilter = require('./_baseFilter'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ -function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, baseIteratee(predicate, 3)); -} - -module.exports = filter; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/find.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/find.js deleted file mode 100644 index b6d0950d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/find.js +++ /dev/null @@ -1,43 +0,0 @@ -var createFind = require('./_createFind'), - findIndex = require('./findIndex'); - -/** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ -var find = createFind(findIndex); - -module.exports = find; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findIndex.js deleted file mode 100644 index 0b11d931..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findIndex.js +++ /dev/null @@ -1,56 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIteratee = require('./_baseIteratee'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ -function findIndex(array, predicate, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index); -} - -module.exports = findIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findKey.js deleted file mode 100644 index cac0248a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findKey.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseFindKey = require('./_baseFindKey'), - baseForOwn = require('./_baseForOwn'), - baseIteratee = require('./_baseIteratee'); - -/** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ -function findKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn); -} - -module.exports = findKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLast.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLast.js deleted file mode 100644 index 3ce09f47..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLast.js +++ /dev/null @@ -1,26 +0,0 @@ -var createFind = require('./_createFind'), - findLastIndex = require('./findLastIndex'); - -/** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ -var findLast = createFind(findLastIndex); - -module.exports = findLast; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastIndex.js deleted file mode 100644 index 63e87704..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastIndex.js +++ /dev/null @@ -1,60 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIteratee = require('./_baseIteratee'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ -function findLastIndex(array, predicate, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index, true); -} - -module.exports = findLastIndex; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastKey.js deleted file mode 100644 index 66fb9fbc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/findLastKey.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseFindKey = require('./_baseFindKey'), - baseForOwnRight = require('./_baseForOwnRight'), - baseIteratee = require('./_baseIteratee'); - -/** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ -function findLastKey(object, predicate) { - return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight); -} - -module.exports = findLastKey; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/first.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/first.js deleted file mode 100644 index 53f4ad13..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/first.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./head'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMap.js deleted file mode 100644 index 8c5d8328..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMap.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'); - -/** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); -} - -module.exports = flatMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDeep.js deleted file mode 100644 index 9359882f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDeep.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ -function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); -} - -module.exports = flatMapDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDepth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDepth.js deleted file mode 100644 index 2182bed6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatMapDepth.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - map = require('./map'), - toInteger = require('./toInteger'); - -/** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ -function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); -} - -module.exports = flatMapDepth; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatten.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatten.js deleted file mode 100644 index bd4f4397..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flatten.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseFlatten = require('./_baseFlatten'); - -/** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ -function flatten(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, 1) : []; -} - -module.exports = flatten; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDeep.js deleted file mode 100644 index c20c781a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDeep.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseFlatten = require('./_baseFlatten'); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ -function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, INFINITY) : []; -} - -module.exports = flattenDeep; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDepth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDepth.js deleted file mode 100644 index a0f4b525..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flattenDepth.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseFlatten = require('./_baseFlatten'), - toInteger = require('./toInteger'); - -/** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ -function flattenDepth(array, depth) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); -} - -module.exports = flattenDepth; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flip.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flip.js deleted file mode 100644 index 02e3fc27..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flip.js +++ /dev/null @@ -1,28 +0,0 @@ -var createWrap = require('./_createWrap'); - -/** Used to compose bitmasks for function metadata. */ -var FLIP_FLAG = 512; - -/** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ -function flip(func) { - return createWrap(func, FLIP_FLAG); -} - -module.exports = flip; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/floor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/floor.js deleted file mode 100644 index ab6dfa28..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/floor.js +++ /dev/null @@ -1,26 +0,0 @@ -var createRound = require('./_createRound'); - -/** - * Computes `number` rounded down to `precision`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Math - * @param {number} number The number to round down. - * @param {number} [precision=0] The precision to round down to. - * @returns {number} Returns the rounded down number. - * @example - * - * _.floor(4.006); - * // => 4 - * - * _.floor(0.046, 2); - * // => 0.04 - * - * _.floor(4060, -2); - * // => 4000 - */ -var floor = createRound('floor'); - -module.exports = floor; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flow.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flow.js deleted file mode 100644 index 74b6b62d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flow.js +++ /dev/null @@ -1,27 +0,0 @@ -var createFlow = require('./_createFlow'); - -/** - * Creates a function that returns the result of invoking the given functions - * with the `this` binding of the created function, where each successive - * invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flowRight - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flow([_.add, square]); - * addSquare(1, 2); - * // => 9 - */ -var flow = createFlow(); - -module.exports = flow; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flowRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flowRight.js deleted file mode 100644 index 11461410..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/flowRight.js +++ /dev/null @@ -1,26 +0,0 @@ -var createFlow = require('./_createFlow'); - -/** - * This method is like `_.flow` except that it creates a function that - * invokes the given functions from right to left. - * - * @static - * @since 3.0.0 - * @memberOf _ - * @category Util - * @param {...(Function|Function[])} [funcs] The functions to invoke. - * @returns {Function} Returns the new composite function. - * @see _.flow - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight([square, _.add]); - * addSquare(1, 2); - * // => 9 - */ -var flowRight = createFlow(true); - -module.exports = flowRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEach.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEach.js deleted file mode 100644 index 143515ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEach.js +++ /dev/null @@ -1,41 +0,0 @@ -var arrayEach = require('./_arrayEach'), - baseEach = require('./_baseEach'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _([1, 2]).forEach(function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, baseIteratee(iteratee, 3)); -} - -module.exports = forEach; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEachRight.js deleted file mode 100644 index c5d6e06d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forEachRight.js +++ /dev/null @@ -1,31 +0,0 @@ -var arrayEachRight = require('./_arrayEachRight'), - baseEachRight = require('./_baseEachRight'), - baseIteratee = require('./_baseIteratee'), - isArray = require('./isArray'); - -/** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ -function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, baseIteratee(iteratee, 3)); -} - -module.exports = forEachRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forIn.js deleted file mode 100644 index 2e757da4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forIn.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseFor = require('./_baseFor'), - baseIteratee = require('./_baseIteratee'), - keysIn = require('./keysIn'); - -/** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ -function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, baseIteratee(iteratee, 3), keysIn); -} - -module.exports = forIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forInRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forInRight.js deleted file mode 100644 index a47d6bb4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forInRight.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseForRight = require('./_baseForRight'), - baseIteratee = require('./_baseIteratee'), - keysIn = require('./keysIn'); - -/** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ -function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, baseIteratee(iteratee, 3), keysIn); -} - -module.exports = forInRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwn.js deleted file mode 100644 index 034c30b1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwn.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseForOwn = require('./_baseForOwn'), - baseIteratee = require('./_baseIteratee'); - -/** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forOwn(object, iteratee) { - return object && baseForOwn(object, baseIteratee(iteratee, 3)); -} - -module.exports = forOwn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwnRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwnRight.js deleted file mode 100644 index 0f7aab85..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/forOwnRight.js +++ /dev/null @@ -1,34 +0,0 @@ -var baseForOwnRight = require('./_baseForOwnRight'), - baseIteratee = require('./_baseIteratee'); - -/** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ -function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, baseIteratee(iteratee, 3)); -} - -module.exports = forOwnRight; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp.js deleted file mode 100644 index e372dbbd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp.js +++ /dev/null @@ -1,2 +0,0 @@ -var _ = require('./lodash.min').runInContext(); -module.exports = require('./fp/_baseConvert')(_, _); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/F.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/F.js deleted file mode 100644 index a05a63ad..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/F.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./stubFalse'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/T.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/T.js deleted file mode 100644 index e2ba8ea5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/T.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./stubTrue'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/__.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/__.js deleted file mode 100644 index 4af98deb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/__.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./placeholder'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_baseConvert.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_baseConvert.js deleted file mode 100644 index 0def5f67..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_baseConvert.js +++ /dev/null @@ -1,535 +0,0 @@ -var mapping = require('./_mapping'), - mutateMap = mapping.mutate, - fallbackHolder = require('./placeholder'); - -/** - * Creates a function, with an arity of `n`, that invokes `func` with the - * arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} n The arity of the new function. - * @returns {Function} Returns the new function. - */ -function baseArity(func, n) { - return n == 2 - ? function(a, b) { return func.apply(undefined, arguments); } - : function(a) { return func.apply(undefined, arguments); }; -} - -/** - * Creates a function that invokes `func`, with up to `n` arguments, ignoring - * any additional arguments. - * - * @private - * @param {Function} func The function to cap arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ -function baseAry(func, n) { - return n == 2 - ? function(a, b) { return func(a, b); } - : function(a) { return func(a); }; -} - -/** - * Creates a clone of `array`. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the cloned array. - */ -function cloneArray(array) { - var length = array ? array.length : 0, - result = Array(length); - - while (length--) { - result[length] = array[length]; - } - return result; -} - -/** - * Creates a function that clones a given object using the assignment `func`. - * - * @private - * @param {Function} func The assignment function. - * @returns {Function} Returns the new cloner function. - */ -function createCloner(func) { - return function(object) { - return func({}, object); - }; -} - -/** - * Creates a function that wraps `func` and uses `cloner` to clone the first - * argument it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} cloner The function to clone arguments. - * @returns {Function} Returns the new immutable function. - */ -function wrapImmutable(func, cloner) { - return function() { - var length = arguments.length; - if (!length) { - return; - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var result = args[0] = cloner.apply(undefined, args); - func.apply(undefined, args); - return result; - }; -} - -/** - * The base implementation of `convert` which accepts a `util` object of methods - * required to perform conversions. - * - * @param {Object} util The util object. - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @param {Object} [options] The options object. - * @param {boolean} [options.cap=true] Specify capping iteratee arguments. - * @param {boolean} [options.curry=true] Specify currying. - * @param {boolean} [options.fixed=true] Specify fixed arity. - * @param {boolean} [options.immutable=true] Specify immutable operations. - * @param {boolean} [options.rearg=true] Specify rearranging arguments. - * @returns {Function|Object} Returns the converted function or object. - */ -function baseConvert(util, name, func, options) { - var setPlaceholder, - isLib = typeof name == 'function', - isObj = name === Object(name); - - if (isObj) { - options = func; - func = name; - name = undefined; - } - if (func == null) { - throw new TypeError; - } - options || (options = {}); - - var config = { - 'cap': 'cap' in options ? options.cap : true, - 'curry': 'curry' in options ? options.curry : true, - 'fixed': 'fixed' in options ? options.fixed : true, - 'immutable': 'immutable' in options ? options.immutable : true, - 'rearg': 'rearg' in options ? options.rearg : true - }; - - var forceCurry = ('curry' in options) && options.curry, - forceFixed = ('fixed' in options) && options.fixed, - forceRearg = ('rearg' in options) && options.rearg, - placeholder = isLib ? func : fallbackHolder, - pristine = isLib ? func.runInContext() : undefined; - - var helpers = isLib ? func : { - 'ary': util.ary, - 'assign': util.assign, - 'clone': util.clone, - 'curry': util.curry, - 'forEach': util.forEach, - 'isArray': util.isArray, - 'isFunction': util.isFunction, - 'iteratee': util.iteratee, - 'keys': util.keys, - 'rearg': util.rearg, - 'spread': util.spread, - 'toInteger': util.toInteger, - 'toPath': util.toPath - }; - - var ary = helpers.ary, - assign = helpers.assign, - clone = helpers.clone, - curry = helpers.curry, - each = helpers.forEach, - isArray = helpers.isArray, - isFunction = helpers.isFunction, - keys = helpers.keys, - rearg = helpers.rearg, - spread = helpers.spread, - toInteger = helpers.toInteger, - toPath = helpers.toPath; - - var aryMethodKeys = keys(mapping.aryMethod); - - var wrappers = { - 'castArray': function(castArray) { - return function() { - var value = arguments[0]; - return isArray(value) - ? castArray(cloneArray(value)) - : castArray.apply(undefined, arguments); - }; - }, - 'iteratee': function(iteratee) { - return function() { - var func = arguments[0], - arity = arguments[1], - result = iteratee(func, arity), - length = result.length; - - if (config.cap && typeof arity == 'number') { - arity = arity > 2 ? (arity - 2) : 1; - return (length && length <= arity) ? result : baseAry(result, arity); - } - return result; - }; - }, - 'mixin': function(mixin) { - return function(source) { - var func = this; - if (!isFunction(func)) { - return mixin(func, Object(source)); - } - var pairs = []; - each(keys(source), function(key) { - if (isFunction(source[key])) { - pairs.push([key, func.prototype[key]]); - } - }); - - mixin(func, Object(source)); - - each(pairs, function(pair) { - var value = pair[1]; - if (isFunction(value)) { - func.prototype[pair[0]] = value; - } else { - delete func.prototype[pair[0]]; - } - }); - return func; - }; - }, - 'nthArg': function(nthArg) { - return function(n) { - var arity = n < 0 ? 1 : (toInteger(n) + 1); - return curry(nthArg(n), arity); - }; - }, - 'rearg': function(rearg) { - return function(func, indexes) { - var arity = indexes ? indexes.length : 0; - return curry(rearg(func, indexes), arity); - }; - }, - 'runInContext': function(runInContext) { - return function(context) { - return baseConvert(util, runInContext(context), options); - }; - } - }; - - /*--------------------------------------------------------------------------*/ - - /** - * Casts `func` to a function with an arity capped iteratee if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @returns {Function} Returns the cast function. - */ - function castCap(name, func) { - if (config.cap) { - var indexes = mapping.iterateeRearg[name]; - if (indexes) { - return iterateeRearg(func, indexes); - } - var n = !isLib && mapping.iterateeAry[name]; - if (n) { - return iterateeAry(func, n); - } - } - return func; - } - - /** - * Casts `func` to a curried function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castCurry(name, func, n) { - return (forceCurry || (config.curry && n > 1)) - ? curry(func, n) - : func; - } - - /** - * Casts `func` to a fixed arity function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity cap. - * @returns {Function} Returns the cast function. - */ - function castFixed(name, func, n) { - if (config.fixed && (forceFixed || !mapping.skipFixed[name])) { - var data = mapping.methodSpread[name], - start = data && data.start; - - return start === undefined ? ary(func, n) : spread(func, start); - } - return func; - } - - /** - * Casts `func` to an rearged function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castRearg(name, func, n) { - return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name])) - ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n]) - : func; - } - - /** - * Creates a clone of `object` by `path`. - * - * @private - * @param {Object} object The object to clone. - * @param {Array|string} path The path to clone by. - * @returns {Object} Returns the cloned object. - */ - function cloneByPath(object, path) { - path = toPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - result = clone(Object(object)), - nested = result; - - while (nested != null && ++index < length) { - var key = path[index], - value = nested[key]; - - if (value != null) { - nested[path[index]] = clone(index == lastIndex ? value : Object(value)); - } - nested = nested[key]; - } - return result; - } - - /** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ - function convertLib(options) { - return _.runInContext.convert(options)(undefined); - } - - /** - * Create a converter function for `func` of `name`. - * - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @returns {Function} Returns the new converter function. - */ - function createConverter(name, func) { - var oldOptions = options; - return function(options) { - var newUtil = isLib ? pristine : helpers, - newFunc = isLib ? pristine[name] : func, - newOptions = assign(assign({}, oldOptions), options); - - return baseConvert(newUtil, name, newFunc, newOptions); - }; - } - - /** - * Creates a function that wraps `func` to invoke its iteratee, with up to `n` - * arguments, ignoring any additional arguments. - * - * @private - * @param {Function} func The function to cap iteratee arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ - function iterateeAry(func, n) { - return overArg(func, function(func) { - return typeof func == 'function' ? baseAry(func, n) : func; - }); - } - - /** - * Creates a function that wraps `func` to invoke its iteratee with arguments - * arranged according to the specified `indexes` where the argument value at - * the first index is provided as the first argument, the argument value at - * the second index is provided as the second argument, and so on. - * - * @private - * @param {Function} func The function to rearrange iteratee arguments for. - * @param {number[]} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - */ - function iterateeRearg(func, indexes) { - return overArg(func, function(func) { - var n = indexes.length; - return baseArity(rearg(baseAry(func, n), indexes), n); - }); - } - - /** - * Creates a function that invokes `func` with its first argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function() { - var length = arguments.length; - if (!length) { - return func(); - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var index = config.rearg ? 0 : (length - 1); - args[index] = transform(args[index]); - return func.apply(undefined, args); - }; - } - - /** - * Creates a function that wraps `func` and applys the conversions - * rules by `name`. - * - * @private - * @param {string} name The name of the function to wrap. - * @param {Function} func The function to wrap. - * @returns {Function} Returns the converted function. - */ - function wrap(name, func) { - name = mapping.aliasToReal[name] || name; - - var result, - wrapped = func, - wrapper = wrappers[name]; - - if (wrapper) { - wrapped = wrapper(func); - } - else if (config.immutable) { - if (mutateMap.array[name]) { - wrapped = wrapImmutable(func, cloneArray); - } - else if (mutateMap.object[name]) { - wrapped = wrapImmutable(func, createCloner(func)); - } - else if (mutateMap.set[name]) { - wrapped = wrapImmutable(func, cloneByPath); - } - } - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(otherName) { - if (name == otherName) { - var spreadData = mapping.methodSpread[name], - afterRearg = spreadData && spreadData.afterRearg; - - result = afterRearg - ? castFixed(name, castRearg(name, wrapped, aryKey), aryKey) - : castRearg(name, castFixed(name, wrapped, aryKey), aryKey); - - result = castCap(name, result); - result = castCurry(name, result, aryKey); - return false; - } - }); - return !result; - }); - - result || (result = wrapped); - if (result == func) { - result = forceCurry ? curry(result, 1) : function() { - return func.apply(this, arguments); - }; - } - result.convert = createConverter(name, func); - if (mapping.placeholder[name]) { - setPlaceholder = true; - result.placeholder = func.placeholder = placeholder; - } - return result; - } - - /*--------------------------------------------------------------------------*/ - - if (!isObj) { - return wrap(name, func); - } - var _ = func; - - // Convert methods by ary cap. - var pairs = []; - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(key) { - var func = _[mapping.remap[key] || key]; - if (func) { - pairs.push([key, wrap(key, func)]); - } - }); - }); - - // Convert remaining methods. - each(keys(_), function(key) { - var func = _[key]; - if (typeof func == 'function') { - var length = pairs.length; - while (length--) { - if (pairs[length][0] == key) { - return; - } - } - func.convert = createConverter(key, func); - pairs.push([key, func]); - } - }); - - // Assign to `_` leaving `_.prototype` unchanged to allow chaining. - each(pairs, function(pair) { - _[pair[0]] = pair[1]; - }); - - _.convert = convertLib; - if (setPlaceholder) { - _.placeholder = placeholder; - } - // Assign aliases. - each(keys(_), function(key) { - each(mapping.realToAlias[key] || [], function(alias) { - _[alias] = _[key]; - }); - }); - - return _; -} - -module.exports = baseConvert; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_convertBrowser.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_convertBrowser.js deleted file mode 100644 index 1874a542..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_convertBrowser.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConvert = require('./_baseConvert'); - -/** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Function} lodash The lodash function to convert. - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ -function browserConvert(lodash, options) { - return baseConvert(lodash, lodash, options); -} - -if (typeof _ == 'function') { - _ = browserConvert(_.runInContext()); -} -module.exports = browserConvert; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_falseOptions.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_falseOptions.js deleted file mode 100644 index 773235e3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_falseOptions.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - 'cap': false, - 'curry': false, - 'fixed': false, - 'immutable': false, - 'rearg': false -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_mapping.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_mapping.js deleted file mode 100644 index dd4abcb5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_mapping.js +++ /dev/null @@ -1,362 +0,0 @@ -/** Used to map aliases to their real names. */ -exports.aliasToReal = { - - // Lodash aliases. - 'each': 'forEach', - 'eachRight': 'forEachRight', - 'entries': 'toPairs', - 'entriesIn': 'toPairsIn', - 'extend': 'assignIn', - 'extendAll': 'assignInAll', - 'extendAllWith': 'assignInAllWith', - 'extendWith': 'assignInWith', - 'first': 'head', - - // Methods that are curried variants of others. - 'conforms': 'conformsTo', - 'matches': 'isMatch', - 'property': 'get', - - // Ramda aliases. - '__': 'placeholder', - 'F': 'stubFalse', - 'T': 'stubTrue', - 'all': 'every', - 'allPass': 'overEvery', - 'always': 'constant', - 'any': 'some', - 'anyPass': 'overSome', - 'apply': 'spread', - 'assoc': 'set', - 'assocPath': 'set', - 'complement': 'negate', - 'compose': 'flowRight', - 'contains': 'includes', - 'dissoc': 'unset', - 'dissocPath': 'unset', - 'dropLast': 'dropRight', - 'dropLastWhile': 'dropRightWhile', - 'equals': 'isEqual', - 'identical': 'eq', - 'indexBy': 'keyBy', - 'init': 'initial', - 'invertObj': 'invert', - 'juxt': 'over', - 'omitAll': 'omit', - 'nAry': 'ary', - 'path': 'get', - 'pathEq': 'matchesProperty', - 'pathOr': 'getOr', - 'paths': 'at', - 'pickAll': 'pick', - 'pipe': 'flow', - 'pluck': 'map', - 'prop': 'get', - 'propEq': 'matchesProperty', - 'propOr': 'getOr', - 'props': 'at', - 'symmetricDifference': 'xor', - 'symmetricDifferenceBy': 'xorBy', - 'symmetricDifferenceWith': 'xorWith', - 'takeLast': 'takeRight', - 'takeLastWhile': 'takeRightWhile', - 'unapply': 'rest', - 'unnest': 'flatten', - 'useWith': 'overArgs', - 'where': 'conformsTo', - 'whereEq': 'isMatch', - 'zipObj': 'zipObject' -}; - -/** Used to map ary to method names. */ -exports.aryMethod = { - '1': [ - 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', - 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', - 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', - 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', - 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', - 'uniqueId', 'words', 'zipAll' - ], - '2': [ - 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', - 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith', - 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN', - 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference', - 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', - 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex', - 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach', - 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get', - 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection', - 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy', - 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty', - 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit', - 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial', - 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll', - 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove', - 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex', - 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy', - 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', - 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars', - 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith', - 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject', - 'zipObjectDeep' - ], - '3': [ - 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith', - 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr', - 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith', - 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth', - 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd', - 'padCharsStart', 'pullAllBy', 'pullAllWith', 'reduce', 'reduceRight', 'replace', - 'set', 'slice', 'sortedIndexBy', 'sortedLastIndexBy', 'transform', 'unionBy', - 'unionWith', 'update', 'xorBy', 'xorWith', 'zipWith' - ], - '4': [ - 'fill', 'setWith', 'updateWith' - ] -}; - -/** Used to map ary to rearg configs. */ -exports.aryRearg = { - '2': [1, 0], - '3': [2, 0, 1], - '4': [3, 2, 0, 1] -}; - -/** Used to map method names to their iteratee ary. */ -exports.iterateeAry = { - 'dropRightWhile': 1, - 'dropWhile': 1, - 'every': 1, - 'filter': 1, - 'find': 1, - 'findFrom': 1, - 'findIndex': 1, - 'findIndexFrom': 1, - 'findKey': 1, - 'findLast': 1, - 'findLastFrom': 1, - 'findLastIndex': 1, - 'findLastIndexFrom': 1, - 'findLastKey': 1, - 'flatMap': 1, - 'flatMapDeep': 1, - 'flatMapDepth': 1, - 'forEach': 1, - 'forEachRight': 1, - 'forIn': 1, - 'forInRight': 1, - 'forOwn': 1, - 'forOwnRight': 1, - 'map': 1, - 'mapKeys': 1, - 'mapValues': 1, - 'partition': 1, - 'reduce': 2, - 'reduceRight': 2, - 'reject': 1, - 'remove': 1, - 'some': 1, - 'takeRightWhile': 1, - 'takeWhile': 1, - 'times': 1, - 'transform': 2 -}; - -/** Used to map method names to iteratee rearg configs. */ -exports.iterateeRearg = { - 'mapKeys': [1] -}; - -/** Used to map method names to rearg configs. */ -exports.methodRearg = { - 'assignInAllWith': [1, 2, 0], - 'assignInWith': [1, 2, 0], - 'assignAllWith': [1, 2, 0], - 'assignWith': [1, 2, 0], - 'differenceBy': [1, 2, 0], - 'differenceWith': [1, 2, 0], - 'getOr': [2, 1, 0], - 'intersectionBy': [1, 2, 0], - 'intersectionWith': [1, 2, 0], - 'isEqualWith': [1, 2, 0], - 'isMatchWith': [2, 1, 0], - 'mergeAllWith': [1, 2, 0], - 'mergeWith': [1, 2, 0], - 'padChars': [2, 1, 0], - 'padCharsEnd': [2, 1, 0], - 'padCharsStart': [2, 1, 0], - 'pullAllBy': [2, 1, 0], - 'pullAllWith': [2, 1, 0], - 'setWith': [3, 1, 2, 0], - 'sortedIndexBy': [2, 1, 0], - 'sortedLastIndexBy': [2, 1, 0], - 'unionBy': [1, 2, 0], - 'unionWith': [1, 2, 0], - 'updateWith': [3, 1, 2, 0], - 'xorBy': [1, 2, 0], - 'xorWith': [1, 2, 0], - 'zipWith': [1, 2, 0] -}; - -/** Used to map method names to spread configs. */ -exports.methodSpread = { - 'assignAll': { 'start': 0 }, - 'assignAllWith': { 'afterRearg': true, 'start': 1 }, - 'assignInAll': { 'start': 0 }, - 'assignInAllWith': { 'afterRearg': true, 'start': 1 }, - 'defaultsAll': { 'start': 0 }, - 'defaultsDeepAll': { 'start': 0 }, - 'invokeArgs': { 'start': 2 }, - 'invokeArgsMap': { 'start': 2 }, - 'mergeAll': { 'start': 0 }, - 'mergeAllWith': { 'afterRearg': true, 'start': 1 }, - 'partial': { 'start': 1 }, - 'partialRight': { 'start': 1 }, - 'without': { 'start': 1 }, - 'zipAll': { 'start': 0 } -}; - -/** Used to identify methods which mutate arrays or objects. */ -exports.mutate = { - 'array': { - 'fill': true, - 'pull': true, - 'pullAll': true, - 'pullAllBy': true, - 'pullAllWith': true, - 'pullAt': true, - 'remove': true, - 'reverse': true - }, - 'object': { - 'assign': true, - 'assignAll': true, - 'assignAllWith': true, - 'assignIn': true, - 'assignInAll': true, - 'assignInAllWith': true, - 'assignInWith': true, - 'assignWith': true, - 'defaults': true, - 'defaultsAll': true, - 'defaultsDeep': true, - 'defaultsDeepAll': true, - 'merge': true, - 'mergeAll': true, - 'mergeAllWith': true, - 'mergeWith': true, - }, - 'set': { - 'set': true, - 'setWith': true, - 'unset': true, - 'update': true, - 'updateWith': true - } -}; - -/** Used to track methods with placeholder support */ -exports.placeholder = { - 'bind': true, - 'bindKey': true, - 'curry': true, - 'curryRight': true, - 'partial': true, - 'partialRight': true -}; - -/** Used to map real names to their aliases. */ -exports.realToAlias = (function() { - var hasOwnProperty = Object.prototype.hasOwnProperty, - object = exports.aliasToReal, - result = {}; - - for (var key in object) { - var value = object[key]; - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - } - return result; -}()); - -/** Used to map method names to other names. */ -exports.remap = { - 'assignAll': 'assign', - 'assignAllWith': 'assignWith', - 'assignInAll': 'assignIn', - 'assignInAllWith': 'assignInWith', - 'curryN': 'curry', - 'curryRightN': 'curryRight', - 'defaultsAll': 'defaults', - 'defaultsDeepAll': 'defaultsDeep', - 'findFrom': 'find', - 'findIndexFrom': 'findIndex', - 'findLastFrom': 'findLast', - 'findLastIndexFrom': 'findLastIndex', - 'getOr': 'get', - 'includesFrom': 'includes', - 'indexOfFrom': 'indexOf', - 'invokeArgs': 'invoke', - 'invokeArgsMap': 'invokeMap', - 'lastIndexOfFrom': 'lastIndexOf', - 'mergeAll': 'merge', - 'mergeAllWith': 'mergeWith', - 'padChars': 'pad', - 'padCharsEnd': 'padEnd', - 'padCharsStart': 'padStart', - 'propertyOf': 'get', - 'restFrom': 'rest', - 'spreadFrom': 'spread', - 'trimChars': 'trim', - 'trimCharsEnd': 'trimEnd', - 'trimCharsStart': 'trimStart', - 'zipAll': 'zip' -}; - -/** Used to track methods that skip fixing their arity. */ -exports.skipFixed = { - 'castArray': true, - 'flow': true, - 'flowRight': true, - 'iteratee': true, - 'mixin': true, - 'rearg': true, - 'runInContext': true -}; - -/** Used to track methods that skip rearranging arguments. */ -exports.skipRearg = { - 'add': true, - 'assign': true, - 'assignIn': true, - 'bind': true, - 'bindKey': true, - 'concat': true, - 'difference': true, - 'divide': true, - 'eq': true, - 'gt': true, - 'gte': true, - 'isEqual': true, - 'lt': true, - 'lte': true, - 'matchesProperty': true, - 'merge': true, - 'multiply': true, - 'overArgs': true, - 'partial': true, - 'partialRight': true, - 'propertyOf': true, - 'random': true, - 'range': true, - 'rangeRight': true, - 'subtract': true, - 'zip': true, - 'zipObject': true, - 'zipObjectDeep': true -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_util.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_util.js deleted file mode 100644 index f8148129..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/_util.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - 'ary': require('../ary'), - 'assign': require('../_baseAssign'), - 'clone': require('../clone'), - 'curry': require('../curry'), - 'forEach': require('../_arrayEach'), - 'isArray': require('../isArray'), - 'isFunction': require('../isFunction'), - 'iteratee': require('../iteratee'), - 'keys': require('../_baseKeys'), - 'rearg': require('../rearg'), - 'spread': require('../spread'), - 'toInteger': require('../toInteger'), - 'toPath': require('../toPath') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/add.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/add.js deleted file mode 100644 index 816eeece..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/add.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('add', require('../add')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/after.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/after.js deleted file mode 100644 index 21a0167a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/after.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('after', require('../after')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/all.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/all.js deleted file mode 100644 index d0839f77..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/all.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./every'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/allPass.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/allPass.js deleted file mode 100644 index 79b73ef8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/allPass.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overEvery'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/always.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/always.js deleted file mode 100644 index 98877030..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/always.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./constant'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/any.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/any.js deleted file mode 100644 index 900ac25e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/any.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./some'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/anyPass.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/anyPass.js deleted file mode 100644 index 2774ab37..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/anyPass.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overSome'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/apply.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/apply.js deleted file mode 100644 index 2b757129..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/apply.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./spread'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/array.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/array.js deleted file mode 100644 index fe939c2c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/array.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../array')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ary.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ary.js deleted file mode 100644 index 8edf1877..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ary.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('ary', require('../ary')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assign.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assign.js deleted file mode 100644 index 23f47af1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assign.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assign', require('../assign')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAll.js deleted file mode 100644 index b1d36c7e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignAll', require('../assign')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAllWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAllWith.js deleted file mode 100644 index 21e836e6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignAllWith', require('../assignWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignIn.js deleted file mode 100644 index 6e7c65fa..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignIn', require('../assignIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAll.js deleted file mode 100644 index 7ba75dba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInAll', require('../assignIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAllWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAllWith.js deleted file mode 100644 index e766903d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInAllWith', require('../assignInWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInWith.js deleted file mode 100644 index acb59236..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignInWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignInWith', require('../assignInWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignWith.js deleted file mode 100644 index eb925212..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assignWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('assignWith', require('../assignWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assoc.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assoc.js deleted file mode 100644 index 7648820c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assoc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./set'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assocPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assocPath.js deleted file mode 100644 index 7648820c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/assocPath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./set'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/at.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/at.js deleted file mode 100644 index cc39d257..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/at.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('at', require('../at')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/attempt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/attempt.js deleted file mode 100644 index 26ca42ea..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/attempt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('attempt', require('../attempt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/before.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/before.js deleted file mode 100644 index 7a2de65d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/before.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('before', require('../before')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bind.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bind.js deleted file mode 100644 index 5cbe4f30..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bind.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bind', require('../bind')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindAll.js deleted file mode 100644 index 6b4a4a0f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bindAll', require('../bindAll')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindKey.js deleted file mode 100644 index 6a46c6b1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/bindKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('bindKey', require('../bindKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/camelCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/camelCase.js deleted file mode 100644 index 87b77b49..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/camelCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('camelCase', require('../camelCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/capitalize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/capitalize.js deleted file mode 100644 index cac74e14..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/capitalize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('capitalize', require('../capitalize'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/castArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/castArray.js deleted file mode 100644 index 8681c099..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/castArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('castArray', require('../castArray')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ceil.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ceil.js deleted file mode 100644 index f416b729..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/ceil.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('ceil', require('../ceil')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chain.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chain.js deleted file mode 100644 index 604fe398..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chain.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('chain', require('../chain'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chunk.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chunk.js deleted file mode 100644 index 871ab085..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/chunk.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('chunk', require('../chunk')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clamp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clamp.js deleted file mode 100644 index 3b06c01c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clamp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('clamp', require('../clamp')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clone.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clone.js deleted file mode 100644 index cadb59c9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/clone.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('clone', require('../clone'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeep.js deleted file mode 100644 index a6107aac..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeepWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeepWith.js deleted file mode 100644 index 6f01e44a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneDeepWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneDeepWith', require('../cloneDeepWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneWith.js deleted file mode 100644 index aa885781..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cloneWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cloneWith', require('../cloneWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/collection.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/collection.js deleted file mode 100644 index fc8b328a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/collection.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../collection')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/commit.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/commit.js deleted file mode 100644 index 130a894f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/commit.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('commit', require('../commit'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compact.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compact.js deleted file mode 100644 index ce8f7a1a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compact.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('compact', require('../compact'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/complement.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/complement.js deleted file mode 100644 index 93eb462b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/complement.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./negate'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compose.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compose.js deleted file mode 100644 index 1954e942..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/compose.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flowRight'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/concat.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/concat.js deleted file mode 100644 index e59346ad..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/concat.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('concat', require('../concat')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cond.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cond.js deleted file mode 100644 index 6a0120ef..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/cond.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('cond', require('../cond'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conforms.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conforms.js deleted file mode 100644 index 3247f64a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conforms.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./conformsTo'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conformsTo.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conformsTo.js deleted file mode 100644 index aa7f41ec..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/conformsTo.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('conformsTo', require('../conformsTo')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/constant.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/constant.js deleted file mode 100644 index 9e406fc0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/constant.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('constant', require('../constant'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/contains.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/contains.js deleted file mode 100644 index 594722af..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/contains.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./includes'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/convert.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/convert.js deleted file mode 100644 index 4795dc42..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/convert.js +++ /dev/null @@ -1,18 +0,0 @@ -var baseConvert = require('./_baseConvert'), - util = require('./_util'); - -/** - * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. If `name` is an object its methods - * will be converted. - * - * @param {string} name The name of the function to wrap. - * @param {Function} [func] The function to wrap. - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function|Object} Returns the converted function or object. - */ -function convert(name, func, options) { - return baseConvert(util, name, func, options); -} - -module.exports = convert; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/countBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/countBy.js deleted file mode 100644 index dfa46432..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/countBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('countBy', require('../countBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/create.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/create.js deleted file mode 100644 index 752025fb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/create.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('create', require('../create')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curry.js deleted file mode 100644 index b0b4168c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curry.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curry', require('../curry')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryN.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryN.js deleted file mode 100644 index 2ae7d00a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryN', require('../curry')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRight.js deleted file mode 100644 index cb619eb5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryRight', require('../curryRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRightN.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRightN.js deleted file mode 100644 index 2495afc8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/curryRightN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('curryRightN', require('../curryRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/date.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/date.js deleted file mode 100644 index 82cb952b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/date.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../date')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/debounce.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/debounce.js deleted file mode 100644 index 26122293..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/debounce.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('debounce', require('../debounce')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/deburr.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/deburr.js deleted file mode 100644 index 96463ab8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/deburr.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('deburr', require('../deburr'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultTo.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultTo.js deleted file mode 100644 index d6b52a44..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultTo.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultTo', require('../defaultTo')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaults.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaults.js deleted file mode 100644 index e1a8e6e7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaults.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaults', require('../defaults')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsAll.js deleted file mode 100644 index 238fcc3c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsAll', require('../defaults')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeep.js deleted file mode 100644 index 1f172ff9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsDeep', require('../defaultsDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeepAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeepAll.js deleted file mode 100644 index 6835f2f0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defaultsDeepAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defaultsDeepAll', require('../defaultsDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defer.js deleted file mode 100644 index ec7990fe..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/defer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('defer', require('../defer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/delay.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/delay.js deleted file mode 100644 index 556dbd56..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/delay.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('delay', require('../delay')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/difference.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/difference.js deleted file mode 100644 index 2d037654..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/difference.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('difference', require('../difference')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceBy.js deleted file mode 100644 index 2f914910..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('differenceBy', require('../differenceBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceWith.js deleted file mode 100644 index bcf5ad2e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/differenceWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('differenceWith', require('../differenceWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissoc.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissoc.js deleted file mode 100644 index 7ec7be19..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissoc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./unset'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissocPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissocPath.js deleted file mode 100644 index 7ec7be19..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dissocPath.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./unset'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/divide.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/divide.js deleted file mode 100644 index 82048c5e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/divide.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('divide', require('../divide')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/drop.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/drop.js deleted file mode 100644 index 2fa9b4fa..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/drop.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('drop', require('../drop')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLast.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLast.js deleted file mode 100644 index 174e5255..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLast.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dropRight'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLastWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLastWhile.js deleted file mode 100644 index be2a9d24..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropLastWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./dropRightWhile'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRight.js deleted file mode 100644 index e98881fc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropRight', require('../dropRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRightWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRightWhile.js deleted file mode 100644 index cacaa701..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropRightWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropRightWhile', require('../dropRightWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropWhile.js deleted file mode 100644 index 285f864d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/dropWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('dropWhile', require('../dropWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/each.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/each.js deleted file mode 100644 index 8800f420..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEach'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eachRight.js deleted file mode 100644 index 3252b2ab..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEachRight'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/endsWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/endsWith.js deleted file mode 100644 index 17dc2a49..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/endsWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('endsWith', require('../endsWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entries.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entries.js deleted file mode 100644 index 7a88df20..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entries.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairs'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entriesIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entriesIn.js deleted file mode 100644 index f6c6331c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/entriesIn.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./toPairsIn'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eq.js deleted file mode 100644 index 9a3d21bf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/eq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('eq', require('../eq')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/equals.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/equals.js deleted file mode 100644 index e6a5ce0c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/equals.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isEqual'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escape.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escape.js deleted file mode 100644 index 52c1fbba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escape.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('escape', require('../escape'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escapeRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escapeRegExp.js deleted file mode 100644 index 369b2eff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/escapeRegExp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/every.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/every.js deleted file mode 100644 index 95c2776c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/every.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('every', require('../every')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extend.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extend.js deleted file mode 100644 index e00166c2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extend.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignIn'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAll.js deleted file mode 100644 index cc55b64f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInAll'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAllWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAllWith.js deleted file mode 100644 index 6679d208..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendAllWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInAllWith'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendWith.js deleted file mode 100644 index dbdcb3b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/extendWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./assignInWith'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fill.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fill.js deleted file mode 100644 index b2d47e84..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fill.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('fill', require('../fill')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/filter.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/filter.js deleted file mode 100644 index 796d501c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/filter.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('filter', require('../filter')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/find.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/find.js deleted file mode 100644 index f805d336..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/find.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('find', require('../find')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findFrom.js deleted file mode 100644 index da8275e8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findFrom', require('../find')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndex.js deleted file mode 100644 index 8c15fd11..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findIndex', require('../findIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndexFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndexFrom.js deleted file mode 100644 index 32e98cb9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findIndexFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findIndexFrom', require('../findIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findKey.js deleted file mode 100644 index 475bcfa8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findKey', require('../findKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLast.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLast.js deleted file mode 100644 index 093fe94e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLast.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLast', require('../findLast')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastFrom.js deleted file mode 100644 index 76c38fba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastFrom', require('../findLast')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndex.js deleted file mode 100644 index 36986df0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastIndex', require('../findLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndexFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndexFrom.js deleted file mode 100644 index 34c8176c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastIndexFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastIndexFrom', require('../findLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastKey.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastKey.js deleted file mode 100644 index 5f81b604..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/findLastKey.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('findLastKey', require('../findLastKey')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/first.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/first.js deleted file mode 100644 index 53f4ad13..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/first.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./head'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMap.js deleted file mode 100644 index d01dc4d0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMap', require('../flatMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDeep.js deleted file mode 100644 index 569c42eb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMapDeep', require('../flatMapDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDepth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDepth.js deleted file mode 100644 index 6eb68fde..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatMapDepth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatMapDepth', require('../flatMapDepth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatten.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatten.js deleted file mode 100644 index 30425d89..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flatten.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flatten', require('../flatten'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDeep.js deleted file mode 100644 index aed5db27..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDepth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDepth.js deleted file mode 100644 index ad65e378..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flattenDepth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flattenDepth', require('../flattenDepth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flip.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flip.js deleted file mode 100644 index 0547e7b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flip', require('../flip'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/floor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/floor.js deleted file mode 100644 index a6cf3358..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/floor.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('floor', require('../floor')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flow.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flow.js deleted file mode 100644 index cd83677a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flow.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flow', require('../flow')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flowRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flowRight.js deleted file mode 100644 index 972a5b9b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/flowRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('flowRight', require('../flowRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEach.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEach.js deleted file mode 100644 index 2f494521..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEach.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forEach', require('../forEach')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEachRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEachRight.js deleted file mode 100644 index 3ff97336..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forEachRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forEachRight', require('../forEachRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forIn.js deleted file mode 100644 index 9341749b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forIn', require('../forIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forInRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forInRight.js deleted file mode 100644 index cecf8bbf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forInRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forInRight', require('../forInRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwn.js deleted file mode 100644 index 246449e9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forOwn', require('../forOwn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwnRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwnRight.js deleted file mode 100644 index c5e826e0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/forOwnRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('forOwnRight', require('../forOwnRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fromPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fromPairs.js deleted file mode 100644 index f8cc5968..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/fromPairs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('fromPairs', require('../fromPairs')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/function.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/function.js deleted file mode 100644 index dfe69b1f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/function.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../function')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functions.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functions.js deleted file mode 100644 index 09d1bb1b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functions.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('functions', require('../functions'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functionsIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functionsIn.js deleted file mode 100644 index 2cfeb83e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/functionsIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/get.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/get.js deleted file mode 100644 index 6d3a3286..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/get.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('get', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/getOr.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/getOr.js deleted file mode 100644 index 7dbf771f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/getOr.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('getOr', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/groupBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/groupBy.js deleted file mode 100644 index fc0bc78a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/groupBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('groupBy', require('../groupBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gt.js deleted file mode 100644 index 9e57c808..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('gt', require('../gt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gte.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gte.js deleted file mode 100644 index 45847863..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/gte.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('gte', require('../gte')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/has.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/has.js deleted file mode 100644 index b9012983..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/has.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('has', require('../has')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/hasIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/hasIn.js deleted file mode 100644 index b3c3d1a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/hasIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('hasIn', require('../hasIn')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/head.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/head.js deleted file mode 100644 index 2694f0a2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/head.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('head', require('../head'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identical.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identical.js deleted file mode 100644 index 85563f4a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identical.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./eq'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identity.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identity.js deleted file mode 100644 index 096415a5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/identity.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('identity', require('../identity'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/inRange.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/inRange.js deleted file mode 100644 index 202d940b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/inRange.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('inRange', require('../inRange')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includes.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includes.js deleted file mode 100644 index 11467805..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includes.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('includes', require('../includes')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includesFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includesFrom.js deleted file mode 100644 index 683afdb4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/includesFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('includesFrom', require('../includes')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexBy.js deleted file mode 100644 index 7e64bc0f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./keyBy'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOf.js deleted file mode 100644 index 524658eb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('indexOf', require('../indexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOfFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOfFrom.js deleted file mode 100644 index d99c822f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/indexOfFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('indexOfFrom', require('../indexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/init.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/init.js deleted file mode 100644 index 2f88d8b0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/init.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./initial'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/initial.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/initial.js deleted file mode 100644 index b732ba0b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/initial.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('initial', require('../initial'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersection.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersection.js deleted file mode 100644 index 52936d56..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersection.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersection', require('../intersection')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionBy.js deleted file mode 100644 index 72629f27..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersectionBy', require('../intersectionBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionWith.js deleted file mode 100644 index e064f400..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/intersectionWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('intersectionWith', require('../intersectionWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invert.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invert.js deleted file mode 100644 index 2d5d1f0d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invert.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invert', require('../invert')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertBy.js deleted file mode 100644 index 63ca97ec..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invertBy', require('../invertBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertObj.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertObj.js deleted file mode 100644 index f1d842e4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invertObj.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./invert'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invoke.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invoke.js deleted file mode 100644 index fcf17f0d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invoke.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invoke', require('../invoke')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgs.js deleted file mode 100644 index d3f2953f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeArgs', require('../invoke')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgsMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgsMap.js deleted file mode 100644 index eaa9f84f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeArgsMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeArgsMap', require('../invokeMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeMap.js deleted file mode 100644 index 6515fd73..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/invokeMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('invokeMap', require('../invokeMap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArguments.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArguments.js deleted file mode 100644 index 1d93c9e5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArguments.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArguments', require('../isArguments'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArray.js deleted file mode 100644 index ba7ade8d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArray', require('../isArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayBuffer.js deleted file mode 100644 index 5088513f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayBuffer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLike.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLike.js deleted file mode 100644 index 8f1856bf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLike.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLikeObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLikeObject.js deleted file mode 100644 index 21084984..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isArrayLikeObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBoolean.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBoolean.js deleted file mode 100644 index 9339f75b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBoolean.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBuffer.js deleted file mode 100644 index e60b1238..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isBuffer.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isDate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isDate.js deleted file mode 100644 index dc41d089..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isDate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isDate', require('../isDate'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isElement.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isElement.js deleted file mode 100644 index 18ee039a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isElement.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isElement', require('../isElement'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEmpty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEmpty.js deleted file mode 100644 index 0f4ae841..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEmpty.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqual.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqual.js deleted file mode 100644 index 41383865..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqual.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEqual', require('../isEqual')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqualWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqualWith.js deleted file mode 100644 index 029ff5cd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isEqualWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isEqualWith', require('../isEqualWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isError.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isError.js deleted file mode 100644 index 3dfd81cc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isError.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isError', require('../isError'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFinite.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFinite.js deleted file mode 100644 index 0b647b84..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFinite.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isFinite', require('../isFinite'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFunction.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFunction.js deleted file mode 100644 index ff8e5c45..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isFunction.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isFunction', require('../isFunction'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isInteger.js deleted file mode 100644 index 67af4ff6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isInteger', require('../isInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isLength.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isLength.js deleted file mode 100644 index fc101c5a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isLength.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isLength', require('../isLength'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMap.js deleted file mode 100644 index a209aa66..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMap', require('../isMap'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatch.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatch.js deleted file mode 100644 index 6264ca17..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatch.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMatch', require('../isMatch')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatchWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatchWith.js deleted file mode 100644 index d95f3193..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isMatchWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isMatchWith', require('../isMatchWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNaN.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNaN.js deleted file mode 100644 index 66a978f1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNaN.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNaN', require('../isNaN'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNative.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNative.js deleted file mode 100644 index 3d775ba9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNative.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNative', require('../isNative'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNil.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNil.js deleted file mode 100644 index 5952c028..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNil.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNil', require('../isNil'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNull.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNull.js deleted file mode 100644 index f201a354..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNull.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNull', require('../isNull'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNumber.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNumber.js deleted file mode 100644 index a2b5fa04..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isNumber.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isNumber', require('../isNumber'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObject.js deleted file mode 100644 index 231ace03..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isObject', require('../isObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObjectLike.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObjectLike.js deleted file mode 100644 index f16082e6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isObjectLike.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isPlainObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isPlainObject.js deleted file mode 100644 index b5bea90d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isPlainObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isRegExp.js deleted file mode 100644 index 12a1a3d7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isRegExp.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSafeInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSafeInteger.js deleted file mode 100644 index 7230f552..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSafeInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSet.js deleted file mode 100644 index 35c01f6f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSet.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSet', require('../isSet'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isString.js deleted file mode 100644 index 1fd0679e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isString', require('../isString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSymbol.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSymbol.js deleted file mode 100644 index 38676956..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isSymbol.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isTypedArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isTypedArray.js deleted file mode 100644 index 85679538..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isTypedArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isUndefined.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isUndefined.js deleted file mode 100644 index ddbca31c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isUndefined.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakMap.js deleted file mode 100644 index ef60c613..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakMap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakSet.js deleted file mode 100644 index c99bfaa6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/isWeakSet.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/iteratee.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/iteratee.js deleted file mode 100644 index 9f0f7173..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/iteratee.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('iteratee', require('../iteratee')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/join.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/join.js deleted file mode 100644 index a220e003..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/join.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('join', require('../join')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/juxt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/juxt.js deleted file mode 100644 index f71e04e0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/juxt.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./over'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/kebabCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/kebabCase.js deleted file mode 100644 index 60737f17..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/kebabCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keyBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keyBy.js deleted file mode 100644 index 9a6a85d4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keyBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keyBy', require('../keyBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keys.js deleted file mode 100644 index e12bb07f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keys.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keys', require('../keys'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keysIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keysIn.js deleted file mode 100644 index f3eb36a8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/keysIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('keysIn', require('../keysIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lang.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lang.js deleted file mode 100644 index 08cc9c14..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lang.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../lang')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/last.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/last.js deleted file mode 100644 index 0f716993..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/last.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('last', require('../last'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOf.js deleted file mode 100644 index ddf39c30..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lastIndexOf', require('../lastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOfFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOfFrom.js deleted file mode 100644 index 1ff6a0b5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lastIndexOfFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lastIndexOfFrom', require('../lastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerCase.js deleted file mode 100644 index ea64bc15..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerFirst.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerFirst.js deleted file mode 100644 index 539720a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lowerFirst.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lt.js deleted file mode 100644 index a31d21ec..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lt', require('../lt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lte.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lte.js deleted file mode 100644 index d795d10e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/lte.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('lte', require('../lte')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/map.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/map.js deleted file mode 100644 index cf987943..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/map.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('map', require('../map')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapKeys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapKeys.js deleted file mode 100644 index 16845870..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapKeys.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mapKeys', require('../mapKeys')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapValues.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapValues.js deleted file mode 100644 index 40049727..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mapValues.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mapValues', require('../mapValues')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matches.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matches.js deleted file mode 100644 index 29d1e1e4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matches.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isMatch'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matchesProperty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matchesProperty.js deleted file mode 100644 index 4575bd24..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/matchesProperty.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('matchesProperty', require('../matchesProperty')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/math.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/math.js deleted file mode 100644 index e8f50f79..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/math.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../math')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/max.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/max.js deleted file mode 100644 index a66acac2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/max.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('max', require('../max'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/maxBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/maxBy.js deleted file mode 100644 index d083fd64..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/maxBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('maxBy', require('../maxBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mean.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mean.js deleted file mode 100644 index 31172460..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mean.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mean', require('../mean'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/meanBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/meanBy.js deleted file mode 100644 index 556f25ed..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/meanBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('meanBy', require('../meanBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/memoize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/memoize.js deleted file mode 100644 index 638eec63..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/memoize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('memoize', require('../memoize')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/merge.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/merge.js deleted file mode 100644 index ac66adde..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/merge.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('merge', require('../merge')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAll.js deleted file mode 100644 index a3674d67..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeAll', require('../merge')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAllWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAllWith.js deleted file mode 100644 index 4bd4206d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeAllWith', require('../mergeWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeWith.js deleted file mode 100644 index 00d44d5e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mergeWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mergeWith', require('../mergeWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/method.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/method.js deleted file mode 100644 index f4060c68..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/method.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('method', require('../method')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/methodOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/methodOf.js deleted file mode 100644 index 61399056..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/methodOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('methodOf', require('../methodOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/min.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/min.js deleted file mode 100644 index d12c6b40..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/min.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('min', require('../min'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/minBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/minBy.js deleted file mode 100644 index fdb9e24d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/minBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('minBy', require('../minBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mixin.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mixin.js deleted file mode 100644 index 332e6fbf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/mixin.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('mixin', require('../mixin')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/multiply.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/multiply.js deleted file mode 100644 index 4dcf0b0d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/multiply.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('multiply', require('../multiply')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nAry.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nAry.js deleted file mode 100644 index f262a76c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nAry.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./ary'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/negate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/negate.js deleted file mode 100644 index 8b6dc7c5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/negate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('negate', require('../negate'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/next.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/next.js deleted file mode 100644 index 140155e2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/next.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('next', require('../next'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/noop.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/noop.js deleted file mode 100644 index b9e32cc8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/noop.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('noop', require('../noop'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/now.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/now.js deleted file mode 100644 index 6de2068a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/now.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('now', require('../now'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nth.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nth.js deleted file mode 100644 index da4fda74..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nth.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('nth', require('../nth')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nthArg.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nthArg.js deleted file mode 100644 index fce31659..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/nthArg.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('nthArg', require('../nthArg')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/number.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/number.js deleted file mode 100644 index 5c10b884..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/number.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../number')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/object.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/object.js deleted file mode 100644 index ae39a134..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/object.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../object')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omit.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omit.js deleted file mode 100644 index fd685291..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omit.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('omit', require('../omit')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitAll.js deleted file mode 100644 index 144cf4b9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./omit'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitBy.js deleted file mode 100644 index 90df7380..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/omitBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('omitBy', require('../omitBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/once.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/once.js deleted file mode 100644 index f8f0a5c7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/once.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('once', require('../once'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/orderBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/orderBy.js deleted file mode 100644 index 848e2107..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/orderBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('orderBy', require('../orderBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/over.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/over.js deleted file mode 100644 index 01eba7b9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/over.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('over', require('../over')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overArgs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overArgs.js deleted file mode 100644 index 738556f0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overArgs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overArgs', require('../overArgs')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overEvery.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overEvery.js deleted file mode 100644 index 9f5a032d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overEvery.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overEvery', require('../overEvery')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overSome.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overSome.js deleted file mode 100644 index 15939d58..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/overSome.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('overSome', require('../overSome')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pad.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pad.js deleted file mode 100644 index f1dea4a9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pad.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pad', require('../pad')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padChars.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padChars.js deleted file mode 100644 index d6e0804c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padChars.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padChars', require('../pad')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsEnd.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsEnd.js deleted file mode 100644 index d4ab79ad..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padCharsEnd', require('../padEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsStart.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsStart.js deleted file mode 100644 index a08a3000..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padCharsStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padCharsStart', require('../padStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padEnd.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padEnd.js deleted file mode 100644 index a8522ec3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padEnd', require('../padEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padStart.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padStart.js deleted file mode 100644 index f4ca79d4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/padStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('padStart', require('../padStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/parseInt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/parseInt.js deleted file mode 100644 index 27314ccb..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/parseInt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('parseInt', require('../parseInt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partial.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partial.js deleted file mode 100644 index 5d460159..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partial.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partial', require('../partial')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partialRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partialRight.js deleted file mode 100644 index 7f05fed0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partialRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partialRight', require('../partialRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partition.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partition.js deleted file mode 100644 index 2ebcacc1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/partition.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('partition', require('../partition')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/path.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/path.js deleted file mode 100644 index b29cfb21..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/path.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathEq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathEq.js deleted file mode 100644 index 36c027a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./matchesProperty'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathOr.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathOr.js deleted file mode 100644 index 4ab58209..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pathOr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./getOr'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/paths.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/paths.js deleted file mode 100644 index 1eb7950a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/paths.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./at'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pick.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pick.js deleted file mode 100644 index 197393de..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pick.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pick', require('../pick')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickAll.js deleted file mode 100644 index a8ecd461..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickAll.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./pick'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickBy.js deleted file mode 100644 index d832d16b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pickBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pickBy', require('../pickBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pipe.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pipe.js deleted file mode 100644 index b2e1e2cc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pipe.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flow'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/placeholder.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/placeholder.js deleted file mode 100644 index 1ce17393..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/placeholder.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * The default argument placeholder value for methods. - * - * @type {Object} - */ -module.exports = {}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/plant.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/plant.js deleted file mode 100644 index eca8f32b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/plant.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('plant', require('../plant'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pluck.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pluck.js deleted file mode 100644 index 0d1e1abf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pluck.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./map'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/prop.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/prop.js deleted file mode 100644 index b29cfb21..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/prop.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propEq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propEq.js deleted file mode 100644 index 36c027a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./matchesProperty'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propOr.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propOr.js deleted file mode 100644 index 4ab58209..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propOr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./getOr'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/property.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/property.js deleted file mode 100644 index b29cfb21..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/property.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./get'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propertyOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propertyOf.js deleted file mode 100644 index f6273ee4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/propertyOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('propertyOf', require('../get')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/props.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/props.js deleted file mode 100644 index 1eb7950a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/props.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./at'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pull.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pull.js deleted file mode 100644 index 8d7084f0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pull.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pull', require('../pull')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAll.js deleted file mode 100644 index 98d5c9a7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAll', require('../pullAll')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllBy.js deleted file mode 100644 index 876bc3bf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAllBy', require('../pullAllBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllWith.js deleted file mode 100644 index f71ba4d7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAllWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAllWith', require('../pullAllWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAt.js deleted file mode 100644 index e8b3bb61..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/pullAt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('pullAt', require('../pullAt')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/random.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/random.js deleted file mode 100644 index 99d852e4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/random.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('random', require('../random')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/range.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/range.js deleted file mode 100644 index a6bb5911..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/range.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('range', require('../range')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rangeRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rangeRight.js deleted file mode 100644 index fdb712f9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rangeRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rangeRight', require('../rangeRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rearg.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rearg.js deleted file mode 100644 index 678e02a3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rearg.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rearg', require('../rearg')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduce.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduce.js deleted file mode 100644 index 4cef0a00..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduce.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reduce', require('../reduce')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduceRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduceRight.js deleted file mode 100644 index caf5bb51..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reduceRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reduceRight', require('../reduceRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reject.js deleted file mode 100644 index c1632738..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reject', require('../reject')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/remove.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/remove.js deleted file mode 100644 index e9d13273..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/remove.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('remove', require('../remove')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/repeat.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/repeat.js deleted file mode 100644 index 08470f24..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/repeat.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('repeat', require('../repeat')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/replace.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/replace.js deleted file mode 100644 index 2227db62..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/replace.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('replace', require('../replace')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rest.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rest.js deleted file mode 100644 index c1f3d64b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/rest.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('rest', require('../rest')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/restFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/restFrom.js deleted file mode 100644 index 714e42b5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/restFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('restFrom', require('../rest')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/result.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/result.js deleted file mode 100644 index f86ce071..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/result.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('result', require('../result')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reverse.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reverse.js deleted file mode 100644 index 07c9f5e4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/reverse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('reverse', require('../reverse')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/round.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/round.js deleted file mode 100644 index 4c0e5c82..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/round.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('round', require('../round')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sample.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sample.js deleted file mode 100644 index 6bea1254..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sample.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sample', require('../sample'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sampleSize.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sampleSize.js deleted file mode 100644 index 359ed6fc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sampleSize.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sampleSize', require('../sampleSize')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/seq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/seq.js deleted file mode 100644 index d8f42b0a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/seq.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../seq')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/set.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/set.js deleted file mode 100644 index 0b56a56c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/set.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('set', require('../set')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/setWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/setWith.js deleted file mode 100644 index 0b584952..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/setWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('setWith', require('../setWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/shuffle.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/shuffle.js deleted file mode 100644 index aa3a1ca5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/shuffle.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('shuffle', require('../shuffle'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/size.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/size.js deleted file mode 100644 index 7490136e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/size.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('size', require('../size'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/slice.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/slice.js deleted file mode 100644 index 15945d32..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/slice.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('slice', require('../slice')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/snakeCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/snakeCase.js deleted file mode 100644 index a0ff7808..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/snakeCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/some.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/some.js deleted file mode 100644 index a4fa2d00..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/some.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('some', require('../some')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortBy.js deleted file mode 100644 index e0790ad5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortBy', require('../sortBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndex.js deleted file mode 100644 index 364a0543..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndex', require('../sortedIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexBy.js deleted file mode 100644 index 9593dbd1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndexBy', require('../sortedIndexBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexOf.js deleted file mode 100644 index c9084cab..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedIndexOf', require('../sortedIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndex.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndex.js deleted file mode 100644 index 47fe241a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndex.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndex', require('../sortedLastIndex')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexBy.js deleted file mode 100644 index 0f9a3473..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndexBy', require('../sortedLastIndexBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexOf.js deleted file mode 100644 index 0d4d9327..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedLastIndexOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedLastIndexOf', require('../sortedLastIndexOf')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniq.js deleted file mode 100644 index 882d2837..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniqBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniqBy.js deleted file mode 100644 index 033db91c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sortedUniqBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sortedUniqBy', require('../sortedUniqBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/split.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/split.js deleted file mode 100644 index 14de1a7e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/split.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('split', require('../split')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spread.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spread.js deleted file mode 100644 index 2d11b707..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spread.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('spread', require('../spread')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spreadFrom.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spreadFrom.js deleted file mode 100644 index 0b630df1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/spreadFrom.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('spreadFrom', require('../spread')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startCase.js deleted file mode 100644 index ada98c94..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('startCase', require('../startCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startsWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startsWith.js deleted file mode 100644 index 985e2f29..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/startsWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('startsWith', require('../startsWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/string.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/string.js deleted file mode 100644 index 773b0370..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/string.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../string')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubArray.js deleted file mode 100644 index cd604cb4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubArray', require('../stubArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubFalse.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubFalse.js deleted file mode 100644 index 32966645..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubFalse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubObject.js deleted file mode 100644 index c6c8ec47..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubObject', require('../stubObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubString.js deleted file mode 100644 index 701051e8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubString', require('../stubString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubTrue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubTrue.js deleted file mode 100644 index 9249082c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/stubTrue.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/subtract.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/subtract.js deleted file mode 100644 index d32b16d4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/subtract.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('subtract', require('../subtract')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sum.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sum.js deleted file mode 100644 index 5cce12b3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sum.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sum', require('../sum'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sumBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sumBy.js deleted file mode 100644 index c8826565..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/sumBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('sumBy', require('../sumBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifference.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifference.js deleted file mode 100644 index 78c16add..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifference.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xor'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceBy.js deleted file mode 100644 index 298fc7ff..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceBy.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xorBy'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceWith.js deleted file mode 100644 index 70bc6faf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/symmetricDifferenceWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./xorWith'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tail.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tail.js deleted file mode 100644 index f122f0ac..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tail.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('tail', require('../tail'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/take.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/take.js deleted file mode 100644 index 9af98a7b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/take.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('take', require('../take')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLast.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLast.js deleted file mode 100644 index e98c84a1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLast.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./takeRight'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLastWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLastWhile.js deleted file mode 100644 index 5367968a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeLastWhile.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./takeRightWhile'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRight.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRight.js deleted file mode 100644 index b82950a6..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRight.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeRight', require('../takeRight')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRightWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRightWhile.js deleted file mode 100644 index 8ffb0a28..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeRightWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeRightWhile', require('../takeRightWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeWhile.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeWhile.js deleted file mode 100644 index 28136644..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/takeWhile.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('takeWhile', require('../takeWhile')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tap.js deleted file mode 100644 index d33ad6ec..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/tap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('tap', require('../tap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/template.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/template.js deleted file mode 100644 index 74857e1c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/template.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('template', require('../template')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/templateSettings.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/templateSettings.js deleted file mode 100644 index 7bcc0a82..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/templateSettings.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/throttle.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/throttle.js deleted file mode 100644 index 77fff142..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/throttle.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('throttle', require('../throttle')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/thru.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/thru.js deleted file mode 100644 index d42b3b1d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/thru.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('thru', require('../thru')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/times.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/times.js deleted file mode 100644 index 0dab06da..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/times.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('times', require('../times')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toArray.js deleted file mode 100644 index f0c360ac..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toArray.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toArray', require('../toArray'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toFinite.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toFinite.js deleted file mode 100644 index 3a47687d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toFinite.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toFinite', require('../toFinite'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toInteger.js deleted file mode 100644 index e0af6a75..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toInteger', require('../toInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toIterator.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toIterator.js deleted file mode 100644 index 65e6baa9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toIterator.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toIterator', require('../toIterator'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toJSON.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toJSON.js deleted file mode 100644 index 2d718d0b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toJSON.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toJSON', require('../toJSON'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLength.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLength.js deleted file mode 100644 index b97cdd93..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLength.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toLength', require('../toLength'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLower.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLower.js deleted file mode 100644 index 616ef36a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toLower.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toLower', require('../toLower'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toNumber.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toNumber.js deleted file mode 100644 index d0c6f4d3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toNumber.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toNumber', require('../toNumber'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairs.js deleted file mode 100644 index af783786..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairs.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPairs', require('../toPairs'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairsIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairsIn.js deleted file mode 100644 index 66504abf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPairsIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPath.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPath.js deleted file mode 100644 index b4d5e50f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPath.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPath', require('../toPath'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPlainObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPlainObject.js deleted file mode 100644 index 278bb863..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toPlainObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toSafeInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toSafeInteger.js deleted file mode 100644 index 367a26fd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toSafeInteger.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toString.js deleted file mode 100644 index cec4f8e2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toString.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toString', require('../toString'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toUpper.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toUpper.js deleted file mode 100644 index 54f9a560..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/toUpper.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('toUpper', require('../toUpper'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/transform.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/transform.js deleted file mode 100644 index 759d088f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/transform.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('transform', require('../transform')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trim.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trim.js deleted file mode 100644 index e6319a74..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trim.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trim', require('../trim')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimChars.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimChars.js deleted file mode 100644 index c9294de4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimChars.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimChars', require('../trim')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsEnd.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsEnd.js deleted file mode 100644 index 284bc2f8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimCharsEnd', require('../trimEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsStart.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsStart.js deleted file mode 100644 index ff0ee65d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimCharsStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimCharsStart', require('../trimStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimEnd.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimEnd.js deleted file mode 100644 index 71908805..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimEnd.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimEnd', require('../trimEnd')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimStart.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimStart.js deleted file mode 100644 index fda902c3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/trimStart.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('trimStart', require('../trimStart')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/truncate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/truncate.js deleted file mode 100644 index d265c1de..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/truncate.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('truncate', require('../truncate')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unapply.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unapply.js deleted file mode 100644 index c5dfe779..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unapply.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./rest'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unary.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unary.js deleted file mode 100644 index 286c945f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unary.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unary', require('../unary'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unescape.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unescape.js deleted file mode 100644 index fddcb46e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unescape.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unescape', require('../unescape'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/union.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/union.js deleted file mode 100644 index ef8228d7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/union.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('union', require('../union')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionBy.js deleted file mode 100644 index 603687a1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unionBy', require('../unionBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionWith.js deleted file mode 100644 index 65bb3a79..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unionWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unionWith', require('../unionWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniq.js deleted file mode 100644 index bc185249..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniq.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniq', require('../uniq'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqBy.js deleted file mode 100644 index 634c6a8b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqBy', require('../uniqBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqWith.js deleted file mode 100644 index 0ec601a9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqWith', require('../uniqWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqueId.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqueId.js deleted file mode 100644 index aa8fc2f7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/uniqueId.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('uniqueId', require('../uniqueId')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unnest.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unnest.js deleted file mode 100644 index 5d34060a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unnest.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flatten'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unset.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unset.js deleted file mode 100644 index ea203a0f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unset.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unset', require('../unset')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzip.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzip.js deleted file mode 100644 index cc364b3c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unzip', require('../unzip'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzipWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzipWith.js deleted file mode 100644 index 182eaa10..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/unzipWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('unzipWith', require('../unzipWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/update.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/update.js deleted file mode 100644 index b8ce2cc9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/update.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('update', require('../update')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/updateWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/updateWith.js deleted file mode 100644 index d5e8282d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/updateWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('updateWith', require('../updateWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperCase.js deleted file mode 100644 index c886f202..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperCase.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('upperCase', require('../upperCase'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperFirst.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperFirst.js deleted file mode 100644 index d8c04df5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/upperFirst.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/useWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/useWith.js deleted file mode 100644 index d8b3df5a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/useWith.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./overArgs'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/util.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/util.js deleted file mode 100644 index 18c00bae..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/util.js +++ /dev/null @@ -1,2 +0,0 @@ -var convert = require('./convert'); -module.exports = convert(require('../util')); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/value.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/value.js deleted file mode 100644 index 555eec7a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/value.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('value', require('../value'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valueOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valueOf.js deleted file mode 100644 index f968807d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valueOf.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('valueOf', require('../valueOf'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/values.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/values.js deleted file mode 100644 index 2dfc5613..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/values.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('values', require('../values'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valuesIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valuesIn.js deleted file mode 100644 index a1b2bb87..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/valuesIn.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/where.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/where.js deleted file mode 100644 index 3247f64a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/where.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./conformsTo'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/whereEq.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/whereEq.js deleted file mode 100644 index 29d1e1e4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/whereEq.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./isMatch'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/without.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/without.js deleted file mode 100644 index bad9e125..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/without.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('without', require('../without')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/words.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/words.js deleted file mode 100644 index 4a901414..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/words.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('words', require('../words')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrap.js deleted file mode 100644 index e93bd8a1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrap.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrap', require('../wrap')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperAt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperAt.js deleted file mode 100644 index 8f0a310f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperAt.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperChain.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperChain.js deleted file mode 100644 index 2a48ea2b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperChain.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperLodash.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperLodash.js deleted file mode 100644 index a7162d08..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperLodash.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperReverse.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperReverse.js deleted file mode 100644 index e1481aab..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperReverse.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperValue.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperValue.js deleted file mode 100644 index 8eb9112f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/wrapperValue.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xor.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xor.js deleted file mode 100644 index 29e28194..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xor.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xor', require('../xor')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorBy.js deleted file mode 100644 index b355686d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorBy.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xorBy', require('../xorBy')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorWith.js deleted file mode 100644 index 8e05739a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/xorWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('xorWith', require('../xorWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zip.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zip.js deleted file mode 100644 index 69e147a4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zip.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zip', require('../zip')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipAll.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipAll.js deleted file mode 100644 index efa8ccbf..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipAll.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipAll', require('../zip')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObj.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObj.js deleted file mode 100644 index f4a34531..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObj.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./zipObject'); diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObject.js deleted file mode 100644 index 462dbb68..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObject.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipObject', require('../zipObject')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObjectDeep.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObjectDeep.js deleted file mode 100644 index 53a5d338..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipObjectDeep.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipObjectDeep', require('../zipObjectDeep')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipWith.js deleted file mode 100644 index c5cf9e21..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fp/zipWith.js +++ /dev/null @@ -1,5 +0,0 @@ -var convert = require('./convert'), - func = convert('zipWith', require('../zipWith')); - -func.placeholder = require('./placeholder'); -module.exports = func; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fromPairs.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fromPairs.js deleted file mode 100644 index 39f5fb34..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/fromPairs.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ -function fromPairs(pairs) { - var index = -1, - length = pairs ? pairs.length : 0, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; -} - -module.exports = fromPairs; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/function.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/function.js deleted file mode 100644 index b0fc6d93..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/function.js +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - 'after': require('./after'), - 'ary': require('./ary'), - 'before': require('./before'), - 'bind': require('./bind'), - 'bindKey': require('./bindKey'), - 'curry': require('./curry'), - 'curryRight': require('./curryRight'), - 'debounce': require('./debounce'), - 'defer': require('./defer'), - 'delay': require('./delay'), - 'flip': require('./flip'), - 'memoize': require('./memoize'), - 'negate': require('./negate'), - 'once': require('./once'), - 'overArgs': require('./overArgs'), - 'partial': require('./partial'), - 'partialRight': require('./partialRight'), - 'rearg': require('./rearg'), - 'rest': require('./rest'), - 'spread': require('./spread'), - 'throttle': require('./throttle'), - 'unary': require('./unary'), - 'wrap': require('./wrap') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functions.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functions.js deleted file mode 100644 index 9722928f..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functions.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFunctions = require('./_baseFunctions'), - keys = require('./keys'); - -/** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ -function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); -} - -module.exports = functions; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functionsIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functionsIn.js deleted file mode 100644 index f00345d0..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/functionsIn.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFunctions = require('./_baseFunctions'), - keysIn = require('./keysIn'); - -/** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ -function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); -} - -module.exports = functionsIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/get.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/get.js deleted file mode 100644 index 8805ff92..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/get.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseGet = require('./_baseGet'); - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} - -module.exports = get; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/groupBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/groupBy.js deleted file mode 100644 index 3a7dbaf4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/groupBy.js +++ /dev/null @@ -1,41 +0,0 @@ -var createAggregator = require('./_createAggregator'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - result[key] = [value]; - } -}); - -module.exports = groupBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gt.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gt.js deleted file mode 100644 index 3a662828..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gt.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseGt = require('./_baseGt'), - createRelationalOperation = require('./_createRelationalOperation'); - -/** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ -var gt = createRelationalOperation(baseGt); - -module.exports = gt; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gte.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gte.js deleted file mode 100644 index 4180a687..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/gte.js +++ /dev/null @@ -1,30 +0,0 @@ -var createRelationalOperation = require('./_createRelationalOperation'); - -/** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ -var gte = createRelationalOperation(function(value, other) { - return value >= other; -}); - -module.exports = gte; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/has.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/has.js deleted file mode 100644 index 34df55e8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/has.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseHas = require('./_baseHas'), - hasPath = require('./_hasPath'); - -/** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ -function has(object, path) { - return object != null && hasPath(object, path, baseHas); -} - -module.exports = has; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/hasIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/hasIn.js deleted file mode 100644 index 06a36865..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/hasIn.js +++ /dev/null @@ -1,34 +0,0 @@ -var baseHasIn = require('./_baseHasIn'), - hasPath = require('./_hasPath'); - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} - -module.exports = hasIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/head.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/head.js deleted file mode 100644 index dee9d1f1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/head.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ -function head(array) { - return (array && array.length) ? array[0] : undefined; -} - -module.exports = head; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/identity.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/identity.js deleted file mode 100644 index 2d5d963c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/identity.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} - -module.exports = identity; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/inRange.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/inRange.js deleted file mode 100644 index f20728d9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/inRange.js +++ /dev/null @@ -1,55 +0,0 @@ -var baseInRange = require('./_baseInRange'), - toFinite = require('./toFinite'), - toNumber = require('./toNumber'); - -/** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ -function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); -} - -module.exports = inRange; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/includes.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/includes.js deleted file mode 100644 index ae0deedc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/includes.js +++ /dev/null @@ -1,53 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'), - isArrayLike = require('./isArrayLike'), - isString = require('./isString'), - toInteger = require('./toInteger'), - values = require('./values'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ -function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); -} - -module.exports = includes; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/index.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/index.js deleted file mode 100644 index 5d063e21..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lodash'); \ No newline at end of file diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/indexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/indexOf.js deleted file mode 100644 index 8c9b86dc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/indexOf.js +++ /dev/null @@ -1,42 +0,0 @@ -var baseIndexOf = require('./_baseIndexOf'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ -function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); -} - -module.exports = indexOf; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/initial.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/initial.js deleted file mode 100644 index 63e0c93e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/initial.js +++ /dev/null @@ -1,22 +0,0 @@ -var baseSlice = require('./_baseSlice'); - -/** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ -function initial(array) { - var length = array ? array.length : 0; - return length ? baseSlice(array, 0, -1) : []; -} - -module.exports = initial; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersection.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersection.js deleted file mode 100644 index b56d4dd3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersection.js +++ /dev/null @@ -1,30 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'); - -/** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order of result values is determined by the - * order they occur in the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ -var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; -}); - -module.exports = intersection; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionBy.js deleted file mode 100644 index 436c2864..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionBy.js +++ /dev/null @@ -1,44 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseIteratee = require('./_baseIteratee'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. Result values are chosen from the first array. - * The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ -var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, baseIteratee(iteratee, 2)) - : []; -}); - -module.exports = intersectionBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionWith.js deleted file mode 100644 index 736eca26..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/intersectionWith.js +++ /dev/null @@ -1,42 +0,0 @@ -var arrayMap = require('./_arrayMap'), - baseIntersection = require('./_baseIntersection'), - baseRest = require('./_baseRest'), - castArrayLikeObject = require('./_castArrayLikeObject'), - last = require('./last'); - -/** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. Result values are chosen - * from the first array. The comparator is invoked with two arguments: - * (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ -var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (comparator === last(mapped)) { - comparator = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; -}); - -module.exports = intersectionWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invert.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invert.js deleted file mode 100644 index 21d10aba..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invert.js +++ /dev/null @@ -1,27 +0,0 @@ -var constant = require('./constant'), - createInverter = require('./_createInverter'), - identity = require('./identity'); - -/** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ -var invert = createInverter(function(result, value, key) { - result[value] = key; -}, constant(identity)); - -module.exports = invert; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invertBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invertBy.js deleted file mode 100644 index e5ba0f70..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invertBy.js +++ /dev/null @@ -1,44 +0,0 @@ -var baseIteratee = require('./_baseIteratee'), - createInverter = require('./_createInverter'); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ -var invertBy = createInverter(function(result, value, key) { - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } -}, baseIteratee); - -module.exports = invertBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invoke.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invoke.js deleted file mode 100644 index 97d51eb5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invoke.js +++ /dev/null @@ -1,24 +0,0 @@ -var baseInvoke = require('./_baseInvoke'), - baseRest = require('./_baseRest'); - -/** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ -var invoke = baseRest(baseInvoke); - -module.exports = invoke; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invokeMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invokeMap.js deleted file mode 100644 index f3302db8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/invokeMap.js +++ /dev/null @@ -1,44 +0,0 @@ -var apply = require('./_apply'), - baseEach = require('./_baseEach'), - baseInvoke = require('./_baseInvoke'), - baseRest = require('./_baseRest'), - isArrayLike = require('./isArrayLike'), - isKey = require('./_isKey'); - -/** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ -var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - isProp = isKey(path), - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined); - result[++index] = func ? apply(func, value, args) : baseInvoke(value, path, args); - }); - return result; -}); - -module.exports = invokeMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArguments.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArguments.js deleted file mode 100644 index 624a2f3c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArguments.js +++ /dev/null @@ -1,46 +0,0 @@ -var isArrayLikeObject = require('./isArrayLikeObject'); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); -} - -module.exports = isArguments; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArray.js deleted file mode 100644 index 88ab55fd..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArray.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -module.exports = isArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayBuffer.js deleted file mode 100644 index 12904a64..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayBuffer.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsArrayBuffer = require('./_baseIsArrayBuffer'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer; - -/** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ -var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - -module.exports = isArrayBuffer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLike.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLike.js deleted file mode 100644 index 0f966805..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLike.js +++ /dev/null @@ -1,33 +0,0 @@ -var isFunction = require('./isFunction'), - isLength = require('./isLength'); - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -module.exports = isArrayLike; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLikeObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLikeObject.js deleted file mode 100644 index 6c4812a8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isArrayLikeObject.js +++ /dev/null @@ -1,33 +0,0 @@ -var isArrayLike = require('./isArrayLike'), - isObjectLike = require('./isObjectLike'); - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -module.exports = isArrayLikeObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBoolean.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBoolean.js deleted file mode 100644 index 45cbdc1c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBoolean.js +++ /dev/null @@ -1,38 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ -function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && objectToString.call(value) == boolTag); -} - -module.exports = isBoolean; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBuffer.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBuffer.js deleted file mode 100644 index c103cc74..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isBuffer.js +++ /dev/null @@ -1,38 +0,0 @@ -var root = require('./_root'), - stubFalse = require('./stubFalse'); - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; - -module.exports = isBuffer; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isDate.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isDate.js deleted file mode 100644 index 7f0209fc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isDate.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsDate = require('./_baseIsDate'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsDate = nodeUtil && nodeUtil.isDate; - -/** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ -var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - -module.exports = isDate; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isElement.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isElement.js deleted file mode 100644 index 62cdb062..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isElement.js +++ /dev/null @@ -1,25 +0,0 @@ -var isObjectLike = require('./isObjectLike'), - isPlainObject = require('./isPlainObject'); - -/** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ -function isElement(value) { - return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); -} - -module.exports = isElement; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEmpty.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEmpty.js deleted file mode 100644 index 726ac987..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEmpty.js +++ /dev/null @@ -1,79 +0,0 @@ -var getTag = require('./_getTag'), - isArguments = require('./isArguments'), - isArray = require('./isArray'), - isArrayLike = require('./isArrayLike'), - isBuffer = require('./isBuffer'), - isPrototype = require('./_isPrototype'), - nativeKeys = require('./_nativeKeys'); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ -var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); - -/** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ -function isEmpty(value) { - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || - typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (nonEnumShadows || isPrototype(value)) { - return !nativeKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; -} - -module.exports = isEmpty; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqual.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqual.js deleted file mode 100644 index 8a541262..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqual.js +++ /dev/null @@ -1,35 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'); - -/** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are **not** supported. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ -function isEqual(value, other) { - return baseIsEqual(value, other); -} - -module.exports = isEqual; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqualWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqualWith.js deleted file mode 100644 index fb83d501..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isEqualWith.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseIsEqual = require('./_baseIsEqual'); - -/** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ -function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, customizer) : !!result; -} - -module.exports = isEqualWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isError.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isError.js deleted file mode 100644 index 85884b52..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isError.js +++ /dev/null @@ -1,42 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var errorTag = '[object Error]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ -function isError(value) { - if (!isObjectLike(value)) { - return false; - } - return (objectToString.call(value) == errorTag) || - (typeof value.message == 'string' && typeof value.name == 'string'); -} - -module.exports = isError; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFinite.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFinite.js deleted file mode 100644 index 601842bc..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFinite.js +++ /dev/null @@ -1,36 +0,0 @@ -var root = require('./_root'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsFinite = root.isFinite; - -/** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ -function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); -} - -module.exports = isFinite; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFunction.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFunction.js deleted file mode 100644 index f1d440b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isFunction.js +++ /dev/null @@ -1,41 +0,0 @@ -var isObject = require('./isObject'); - -/** `Object#toString` result references. */ -var funcTag = '[object Function]', - genTag = '[object GeneratorFunction]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -module.exports = isFunction; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isInteger.js deleted file mode 100644 index 66aa87d5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isInteger.js +++ /dev/null @@ -1,33 +0,0 @@ -var toInteger = require('./toInteger'); - -/** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ -function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); -} - -module.exports = isInteger; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isLength.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isLength.js deleted file mode 100644 index 3a95caa9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isLength.js +++ /dev/null @@ -1,35 +0,0 @@ -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -module.exports = isLength; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMap.js deleted file mode 100644 index 44f8517e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMap.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsMap = require('./_baseIsMap'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsMap = nodeUtil && nodeUtil.isMap; - -/** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ -var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - -module.exports = isMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatch.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatch.js deleted file mode 100644 index 9773a18c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatch.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'); - -/** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ -function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); -} - -module.exports = isMatch; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatchWith.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatchWith.js deleted file mode 100644 index 187b6a61..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isMatchWith.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseIsMatch = require('./_baseIsMatch'), - getMatchData = require('./_getMatchData'); - -/** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ -function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); -} - -module.exports = isMatchWith; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNaN.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNaN.js deleted file mode 100644 index 7d0d783b..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNaN.js +++ /dev/null @@ -1,38 +0,0 @@ -var isNumber = require('./isNumber'); - -/** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ -function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; -} - -module.exports = isNaN; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNative.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNative.js deleted file mode 100644 index 4bd57d8d..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNative.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseIsNative = require('./_baseIsNative'), - isMaskable = require('./_isMaskable'); - -/** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (isMaskable(value)) { - throw new Error('This method is not supported with core-js. Try https://github.com/es-shims.'); - } - return baseIsNative(value); -} - -module.exports = isNative; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNil.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNil.js deleted file mode 100644 index 79f05052..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNil.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ -function isNil(value) { - return value == null; -} - -module.exports = isNil; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNull.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNull.js deleted file mode 100644 index c0a374d7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNull.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ -function isNull(value) { - return value === null; -} - -module.exports = isNull; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNumber.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNumber.js deleted file mode 100644 index b8662920..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isNumber.js +++ /dev/null @@ -1,47 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var numberTag = '[object Number]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ -function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && objectToString.call(value) == numberTag); -} - -module.exports = isNumber; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObject.js deleted file mode 100644 index 4f96dd0a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObject.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -module.exports = isObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObjectLike.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObjectLike.js deleted file mode 100644 index e34114be..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isObjectLike.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -module.exports = isObjectLike; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isPlainObject.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isPlainObject.js deleted file mode 100644 index 3ac962c7..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isPlainObject.js +++ /dev/null @@ -1,70 +0,0 @@ -var getPrototype = require('./_getPrototype'), - isHostObject = require('./_isHostObject'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || - objectToString.call(value) != objectTag || isHostObject(value)) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return (typeof Ctor == 'function' && - Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); -} - -module.exports = isPlainObject; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isRegExp.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isRegExp.js deleted file mode 100644 index 76c9b6e9..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isRegExp.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsRegExp = require('./_baseIsRegExp'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp; - -/** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ -var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - -module.exports = isRegExp; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSafeInteger.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSafeInteger.js deleted file mode 100644 index 2a48526e..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSafeInteger.js +++ /dev/null @@ -1,37 +0,0 @@ -var isInteger = require('./isInteger'); - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ -function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; -} - -module.exports = isSafeInteger; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSet.js deleted file mode 100644 index ab88bdf8..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSet.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsSet = require('./_baseIsSet'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsSet = nodeUtil && nodeUtil.isSet; - -/** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ -var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - -module.exports = isSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isString.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isString.js deleted file mode 100644 index 7b8be86c..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isString.js +++ /dev/null @@ -1,39 +0,0 @@ -var isArray = require('./isArray'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var stringTag = '[object String]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); -} - -module.exports = isString; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSymbol.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSymbol.js deleted file mode 100644 index aef51150..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isSymbol.js +++ /dev/null @@ -1,38 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); -} - -module.exports = isSymbol; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isTypedArray.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isTypedArray.js deleted file mode 100644 index da3f8dd1..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isTypedArray.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseIsTypedArray = require('./_baseIsTypedArray'), - baseUnary = require('./_baseUnary'), - nodeUtil = require('./_nodeUtil'); - -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - -module.exports = isTypedArray; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isUndefined.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isUndefined.js deleted file mode 100644 index 377d121a..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isUndefined.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ -function isUndefined(value) { - return value === undefined; -} - -module.exports = isUndefined; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakMap.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakMap.js deleted file mode 100644 index 8d36f663..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakMap.js +++ /dev/null @@ -1,28 +0,0 @@ -var getTag = require('./_getTag'), - isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var weakMapTag = '[object WeakMap]'; - -/** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ -function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; -} - -module.exports = isWeakMap; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakSet.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakSet.js deleted file mode 100644 index 290164b4..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/isWeakSet.js +++ /dev/null @@ -1,37 +0,0 @@ -var isObjectLike = require('./isObjectLike'); - -/** `Object#toString` result references. */ -var weakSetTag = '[object WeakSet]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ -function isWeakSet(value) { - return isObjectLike(value) && objectToString.call(value) == weakSetTag; -} - -module.exports = isWeakSet; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/iteratee.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/iteratee.js deleted file mode 100644 index 8ec05887..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/iteratee.js +++ /dev/null @@ -1,50 +0,0 @@ -var baseClone = require('./_baseClone'), - baseIteratee = require('./_baseIteratee'); - -/** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name, the created function returns the - * property value for a given element. If `func` is an array or object, the - * created function returns `true` for elements that contain the equivalent - * source properties, otherwise it returns `false`. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); - * // => [{ 'user': 'barney', 'age': 36, 'active': true }] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, _.iteratee(['user', 'fred'])); - * // => [{ 'user': 'fred', 'age': 40 }] - * - * // The `_.property` iteratee shorthand. - * _.map(users, _.iteratee('user')); - * // => ['barney', 'fred'] - * - * // Create custom iteratee shorthands. - * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { - * return !_.isRegExp(func) ? iteratee(func) : function(string) { - * return func.test(string); - * }; - * }); - * - * _.filter(['abc', 'def'], /ef/); - * // => ['def'] - */ -function iteratee(func) { - return baseIteratee(typeof func == 'function' ? func : baseClone(func, true)); -} - -module.exports = iteratee; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/join.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/join.js deleted file mode 100644 index fe310676..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/join.js +++ /dev/null @@ -1,26 +0,0 @@ -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeJoin = arrayProto.join; - -/** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ -function join(array, separator) { - return array ? nativeJoin.call(array, separator) : ''; -} - -module.exports = join; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/kebabCase.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/kebabCase.js deleted file mode 100644 index 8a52be64..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/kebabCase.js +++ /dev/null @@ -1,28 +0,0 @@ -var createCompounder = require('./_createCompounder'); - -/** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ -var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); -}); - -module.exports = kebabCase; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keyBy.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keyBy.js deleted file mode 100644 index 44393bf5..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keyBy.js +++ /dev/null @@ -1,36 +0,0 @@ -var createAggregator = require('./_createAggregator'); - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ -var keyBy = createAggregator(function(result, value, key) { - result[key] = value; -}); - -module.exports = keyBy; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keys.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keys.js deleted file mode 100644 index d143c718..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keys.js +++ /dev/null @@ -1,37 +0,0 @@ -var arrayLikeKeys = require('./_arrayLikeKeys'), - baseKeys = require('./_baseKeys'), - isArrayLike = require('./isArrayLike'); - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} - -module.exports = keys; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keysIn.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keysIn.js deleted file mode 100644 index a62308f2..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/keysIn.js +++ /dev/null @@ -1,32 +0,0 @@ -var arrayLikeKeys = require('./_arrayLikeKeys'), - baseKeysIn = require('./_baseKeysIn'), - isArrayLike = require('./isArrayLike'); - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); -} - -module.exports = keysIn; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lang.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lang.js deleted file mode 100644 index a3962169..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lang.js +++ /dev/null @@ -1,58 +0,0 @@ -module.exports = { - 'castArray': require('./castArray'), - 'clone': require('./clone'), - 'cloneDeep': require('./cloneDeep'), - 'cloneDeepWith': require('./cloneDeepWith'), - 'cloneWith': require('./cloneWith'), - 'conformsTo': require('./conformsTo'), - 'eq': require('./eq'), - 'gt': require('./gt'), - 'gte': require('./gte'), - 'isArguments': require('./isArguments'), - 'isArray': require('./isArray'), - 'isArrayBuffer': require('./isArrayBuffer'), - 'isArrayLike': require('./isArrayLike'), - 'isArrayLikeObject': require('./isArrayLikeObject'), - 'isBoolean': require('./isBoolean'), - 'isBuffer': require('./isBuffer'), - 'isDate': require('./isDate'), - 'isElement': require('./isElement'), - 'isEmpty': require('./isEmpty'), - 'isEqual': require('./isEqual'), - 'isEqualWith': require('./isEqualWith'), - 'isError': require('./isError'), - 'isFinite': require('./isFinite'), - 'isFunction': require('./isFunction'), - 'isInteger': require('./isInteger'), - 'isLength': require('./isLength'), - 'isMap': require('./isMap'), - 'isMatch': require('./isMatch'), - 'isMatchWith': require('./isMatchWith'), - 'isNaN': require('./isNaN'), - 'isNative': require('./isNative'), - 'isNil': require('./isNil'), - 'isNull': require('./isNull'), - 'isNumber': require('./isNumber'), - 'isObject': require('./isObject'), - 'isObjectLike': require('./isObjectLike'), - 'isPlainObject': require('./isPlainObject'), - 'isRegExp': require('./isRegExp'), - 'isSafeInteger': require('./isSafeInteger'), - 'isSet': require('./isSet'), - 'isString': require('./isString'), - 'isSymbol': require('./isSymbol'), - 'isTypedArray': require('./isTypedArray'), - 'isUndefined': require('./isUndefined'), - 'isWeakMap': require('./isWeakMap'), - 'isWeakSet': require('./isWeakSet'), - 'lt': require('./lt'), - 'lte': require('./lte'), - 'toArray': require('./toArray'), - 'toFinite': require('./toFinite'), - 'toInteger': require('./toInteger'), - 'toLength': require('./toLength'), - 'toNumber': require('./toNumber'), - 'toPlainObject': require('./toPlainObject'), - 'toSafeInteger': require('./toSafeInteger'), - 'toString': require('./toString') -}; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/last.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/last.js deleted file mode 100644 index 6402a4c3..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/last.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; -} - -module.exports = last; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lastIndexOf.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lastIndexOf.js deleted file mode 100644 index c2e2c411..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lastIndexOf.js +++ /dev/null @@ -1,55 +0,0 @@ -var baseFindIndex = require('./_baseFindIndex'), - baseIsNaN = require('./_baseIsNaN'), - toInteger = require('./toInteger'); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ -function lastIndexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = ( - index < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1) - ) + 1; - } - if (value !== value) { - return baseFindIndex(array, baseIsNaN, index - 1, true); - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -module.exports = lastIndexOf; diff --git a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lodash.js b/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lodash.js deleted file mode 100644 index 6b252563..00000000 --- a/.vscode/extensions/vscodevim.vim-0.2.0/node_modules/lodash/lodash.js +++ /dev/null @@ -1,16733 +0,0 @@ -/** - * @license - * lodash - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.15.0'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for function metadata. */ - var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_BOUND_FLAG = 4, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64, - ARY_FLAG = 128, - REARG_FLAG = 256, - FLIP_FLAG = 512; - - /** Used to compose bitmasks for comparison styles. */ - var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 150, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', ARY_FLAG], - ['bind', BIND_FLAG], - ['bindKey', BIND_KEY_FLAG], - ['curry', CURRY_FLAG], - ['curryRight', CURRY_RIGHT_FLAG], - ['flip', FLIP_FLAG], - ['partial', PARTIAL_FLAG], - ['partialRight', PARTIAL_RIGHT_FLAG], - ['rearg', REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, - reUnescapedHtml = /[&<>"'`]/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - reLeadingDot = /^\./, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect hexadecimal string values. */ - var reHasHexPrefix = /^0x/i; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', - rsComboSymbolsRange = '\\u20d0-\\u20f0', - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')', - rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', - rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr, - rsUpper + '+' + rsOptUpperContr, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 'ss' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", - '`': '`' - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - return freeProcess && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * Adds the key-value `pair` to `map`. - * - * @private - * @param {Object} map The map to modify. - * @param {Array} pair The key-value pair to add. - * @returns {Object} Returns `map`. - */ - function addMapEntry(map, pair) { - // Don't return `map.set` because it's not chainable in IE 11. - map.set(pair[0], pair[1]); - return map; - } - - /** - * Adds `value` to `set`. - * - * @private - * @param {Object} set The set to modify. - * @param {*} value The value to add. - * @returns {Object} Returns `set`. - */ - function addSetEntry(set, value) { - // Don't return `set.add` because it's not chainable in IE 11. - set.add(value); - return set; - } - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array ? array.length : 0; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array ? array.length : 0, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array ? array.length : 0; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array ? array.length : 0, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array ? array.length : 0; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array ? array.length : 0; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array ? array.length : 0; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return baseFindIndex(array, baseIsNaN, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array ? array.length : 0; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a cache value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - result++; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - result++; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Use `context` to stub `Date#getTime` use in `_.now`. - * var stubbed = _.runInContext({ - * 'Date': function() { - * return { 'getTime': stubGetTime }; - * } - * }); - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - function runInContext(context) { - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var objectToString = objectProto.toString; - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - getPrototype = overArg(Object.getPrototypeOf, Object), - iteratorSymbol = Symbol ? Symbol.iterator : undefined, - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /* Used to set `toString` methods. */ - var defineProperty = (function() { - var func = getNative(Object, 'defineProperty'), - name = getNative.name; - - return (name && name.length > 2) ? func : undefined; - }()); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */ - var nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf'); - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array of at least `200` elements - * and any iteratees accept only one argument. The heuristic for whether a - * section qualifies for shortcut fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB). Change the following template settings to use - * alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || arrLength < LARGE_ARRAY_SIZE || - (arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries ? entries.length : 0; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values ? values.length : 0; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - this.__data__ = new ListCache(entries); - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - return this.__data__['delete'](key); - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var cache = this.__data__; - if (cache instanceof ListCache) { - var pairs = cache.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - return this; - } - cache = this.__data__ = new MapCache(pairs); - } - cache.set(key, value); - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = (isArray(value) || isArguments(value)) - ? baseTimes(value.length, String) - : []; - - var length = result.length, - skipIndexes = !!length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && (key == 'length' || isIndex(key, length)))) { - result.push(key); - } - } - return result; - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function assignInDefaults(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (typeof key == 'number' && value === undefined && !(key in object))) { - object[key] = value; - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - object[key] = value; - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths of elements to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - isNil = object == null, - length = paths.length, - result = Array(length); - - while (++index < length) { - result[index] = isNil ? undefined : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {boolean} [isFull] Specify a clone including symbols. - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, isFull, customizer, key, object, stack) { - var result; - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - if (isHostObject(value)) { - return object ? value : {}; - } - result = initCloneObject(isFunc ? {} : value); - if (!isDeep) { - return copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, baseClone, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (!isArr) { - var props = isFull ? getAllKeys(value) : keys(value); - } - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - function baseCreate(proto) { - return isObject(proto) ? objectCreate(proto) : {}; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - return objectToString.call(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - if (!isKey(path, object)) { - path = castPath(path); - object = parent(object, path); - path = last(path); - } - var func = object == null ? object : object[toKey(path)]; - return func == null ? undefined : apply(func, object, args); - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && objectToString.call(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && objectToString.call(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @param {boolean} [bitmask] The bitmask of comparison flags. - * The bitmask may be composed of the following flags: - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, customizer, bitmask, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; - - if (!objIsArr) { - objTag = getTag(object); - objTag = objTag == argsTag ? objectTag : objTag; - } - if (!othIsArr) { - othTag = getTag(other); - othTag = othTag == argsTag ? objectTag : othTag; - } - var objIsObj = objTag == objectTag && !isHostObject(object), - othIsObj = othTag == objectTag && !isHostObject(other), - isSameTag = objTag == othTag; - - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) - : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); - } - if (!(bitmask & PARTIAL_COMPARE_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, equalFunc, customizer, bitmask, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObject(value) && objectToString.call(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - if (!(isArray(source) || isTypedArray(source))) { - var props = baseKeysIn(source); - } - arrayEach(props || source, function(srcValue, key) { - if (props) { - key = srcValue; - srcValue = source[key]; - } - if (isObject(srcValue)) { - stack || (stack = new Stack); - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(object[key], srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = object[key], - srcValue = source[key], - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - newValue = srcValue; - if (isArray(srcValue) || isTypedArray(srcValue)) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else { - isCommon = false; - newValue = baseClone(srcValue, true); - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - isCommon = false; - newValue = baseClone(srcValue, true); - } - else { - newValue = objValue; - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property identifiers to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, props) { - object = Object(object); - return basePickBy(object, props, function(value, key) { - return key in object; - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property identifiers to pick from. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, props, predicate) { - var index = -1, - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index], - value = object[key]; - - if (predicate(value, key)) { - result[key] = value; - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } - else if (!isKey(index, array)) { - var path = castPath(index), - object = parent(array, path); - - if (object != null) { - delete object[toKey(last(path))]; - } - } - else { - delete array[toKey(index)]; - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = array; - return apply(func, this, otherArgs); - }; - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = isKey(path, object) ? [path] : castPath(path); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop detection. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array ? array.length : low; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array ? array.length : 0, - valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = isKey(path, object) ? [path] : castPath(path); - object = parent(object, path); - - var key = toKey(last(path)); - return !(object != null && hasOwnProperty.call(object, key)) || delete object[key]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var index = -1, - length = arrays.length; - - while (++index < length) { - var result = result - ? arrayPush( - baseDifference(result, arrays[index], iteratee, comparator), - baseDifference(arrays[index], result, iteratee, comparator) - ) - : arrays[index]; - } - return (result && result.length) ? baseUniq(result, iteratee, comparator) : []; - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value) { - return isArray(value) ? value : stringToPath(value); - } - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var result = new buffer.constructor(buffer.length); - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `map`. - * - * @private - * @param {Object} map The map to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned map. - */ - function cloneMap(map, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map); - return arrayReduce(array, addMapEntry, new map.constructor); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of `set`. - * - * @private - * @param {Object} set The set to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned set. - */ - function cloneSet(set, isDeep, cloneFunc) { - var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set); - return arrayReduce(array, addSetEntry, new set.constructor); - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - assignValue(object, key, newValue === undefined ? source[key] : newValue); - } - return object; - } - - /** - * Copies own symbol properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return baseRest(function(funcs) { - funcs = baseFlatten(funcs, 1); - - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (ARY_FLAG | CURRY_FLAG | PARTIAL_FLAG | REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && - isArray(value) && value.length >= LARGE_ARRAY_SIZE) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & ARY_FLAG, - isBind = bitmask & BIND_FLAG, - isBindKey = bitmask & BIND_KEY_FLAG, - isCurried = bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG), - isFlip = bitmask & FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return baseRest(function(iteratees) { - iteratees = (iteratees.length == 1 && isArray(iteratees[0])) - ? arrayMap(iteratees[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(iteratees, 1), baseUnary(getIteratee())); - - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); - - if (!(bitmask & CURRY_BOUND_FLAG)) { - bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = nativeMin(toInteger(precision), 292); - if (precision) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] == null - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (CURRY_FLAG | CURRY_RIGHT_FLAG)) { - bitmask &= ~(CURRY_FLAG | CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == CURRY_FLAG || bitmask == CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!seen.has(othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { - return seen.add(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, customizer, bitmask, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & PARTIAL_COMPARE_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= UNORDERED_COMPARE_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * Creates an array of the own enumerable symbol properties of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray; - - /** - * Creates an array of the own and inherited enumerable symbol properties - * of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11, - // for data views in Edge < 14, and promises in Node.js. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = objectToString.call(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = isKey(path, object) ? [path] : castPath(path); - - var result, - index = -1, - length = path.length; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result) { - return result; - } - var length = object ? object.length : 0; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {Function} cloneFunc The function to clone values. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, cloneFunc, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return cloneMap(object, isDeep, cloneFunc); - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return cloneSet(object, isDeep, cloneFunc); - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length, - lastIndex = length - 1; - - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - length = length == null ? MAX_SAFE_INTEGER : length; - return !!length && - (typeof value == 'number' || reIsUint.test(value)) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (BIND_FLAG | BIND_KEY_FLAG | ARY_FLAG); - - var isCombo = - ((srcBitmask == ARY_FLAG) && (bitmask == CURRY_FLAG)) || - ((srcBitmask == ARY_FLAG) && (bitmask == REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (ARY_FLAG | REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & BIND_FLAG ? 0 : CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function mergeDefaults(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, mergeDefaults, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = (function() { - var count = 0, - lastCalled = 0; - - return function(key, value) { - var stamp = now(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return key; - } - } else { - count = 0; - } - return baseSetData(key, value); - }; - }()); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - var setWrapToString = !defineProperty ? identity : function(wrapper, reference, bitmask) { - var source = (reference + ''); - return defineProperty(wrapper, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))) - }); - }; - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoize(function(string) { - string = toString(string); - - var result = []; - if (reLeadingDot.test(string)) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, string) { - result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to process. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array ? array.length : 0; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length, - args = Array(length ? length - 1 : 0), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return length - ? arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)) - : []; - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order of result values is determined by the - * order they occur in the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. Result values are chosen from the first array. - * The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. Result values - * are chosen from the first array. The comparator is invoked with two arguments: - * (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs ? pairs.length : 0, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array ? array.length : 0; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order of result values is determined by the - * order they occur in the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. Result values are chosen from the first array. - * The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. Result values are chosen - * from the first array. The comparator is invoked with two arguments: - * (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (comparator === last(mapped)) { - comparator = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array ? nativeJoin.call(array, separator) : ''; - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = ( - index < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1) - ) + 1; - } - if (value !== value) { - return baseFindIndex(array, baseIsNaN, index - 1, true); - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = baseRest(function(array, indexes) { - indexes = baseFlatten(indexes, 1); - - var length = array ? array.length : 0, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array ? nativeReverse.call(array) : array; - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array ? array.length : 0; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array ? array.length : 0; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array ? array.length : 0; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false}, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each - * element is kept. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) - ? baseUniq(array) - : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) - ? baseUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - return (array && array.length) - ? baseUniq(array, undefined, comparator) - : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] - * The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths of elements to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = baseRest(function(paths) { - paths = baseFlatten(paths, 1); - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] - * The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _([1, 2]).forEach(function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - result[key] = [value]; - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - isProp = isKey(path), - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - var func = isFunc ? path : ((isProp && value != null) ? value[path] : undefined); - result[++index] = func ? apply(func, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] - * The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var array = isArrayLike(collection) ? collection : values(collection), - length = array.length; - - return length > 0 ? array[baseRandom(0, length - 1)] : undefined; - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - var index = -1, - result = toArray(collection), - length = result.length, - lastIndex = length - 1; - - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = baseClamp(toInteger(n), 0, length); - } - while (++index < n) { - var rand = baseRandom(index, lastIndex), - value = result[rand]; - - result[rand] = result[index]; - result[index] = value; - } - result.length = n; - return result; - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - return sampleSize(collection, MAX_ARRAY_LENGTH); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, function(o) { return o.user; }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] - * - * _.sortBy(users, 'user', function(o) { - * return Math.floor(o.age / 10); - * }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, ARY_FLAG, undefined, undefined, undefined, undefined, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = BIND_FLAG | BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - result = wait - timeSinceLastCall; - - return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one or more milliseconds. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result); - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Assign cache to `_.memoize`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = baseRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, PARTIAL_FLAG, undefined, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, PARTIAL_RIGHT_FLAG, undefined, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = baseRest(function(func, indexes) { - return createWrap(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes, 1)); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

      ' + func(text) + '

      '; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

      fred, barney, & pebbles

      ' - */ - function wrap(value, wrapper) { - wrapper = wrapper == null ? identity : wrapper; - return partial(wrapper, value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, false, true); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - return baseClone(value, false, true, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, true, true); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - return baseClone(value, true, true, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && objectToString.call(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return !!value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || - typeof value.splice == 'function' || isBuffer(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (nonEnumShadows || isPrototype(value)) { - return !nativeKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are **not** supported. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - return (objectToString.call(value) == errorTag) || - (typeof value.message == 'string' && typeof value.name == 'string'); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return !!value && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error('This method is not supported with core-js. Try https://github.com/es-shims.'); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && objectToString.call(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || - objectToString.call(value) != objectTag || isHostObject(value)) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return (typeof Ctor == 'function' && - Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && objectToString.call(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && objectToString.call(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (iteratorSymbol && value[iteratorSymbol]) { - return iteratorToArray(value[iteratorSymbol]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths of elements to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = baseRest(function(object, paths) { - return baseAt(object, baseFlatten(paths, 1)); - }); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties ? baseAssign(result, properties) : result; - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(args) { - args.push(undefined, assignInDefaults); - return apply(assignInWith, undefined, args); - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined, mergeDefaults); - return apply(mergeWith, undefined, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - result[iteratee(value, key, object)] = value; - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - result[key] = iteratee(value, key, object); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with seven arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable string keyed properties of `object` that are - * not omitted. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [props] The property identifiers to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = baseRest(function(object, props) { - if (object == null) { - return {}; - } - props = arrayMap(baseFlatten(props, 1), toKey); - return basePick(object, baseDifference(getAllKeysIn(object), props)); - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [props] The property identifiers to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = baseRest(function(object, props) { - return object == null ? {} : basePick(object, arrayMap(baseFlatten(props, 1), toKey)); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - return object == null ? {} : basePickBy(object, getAllKeysIn(object), getIteratee(predicate)); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = isKey(path, object) ? [path] : castPath(path); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - object = undefined; - length = 1; - } - while (++index < length) { - var value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = getIteratee(iteratee, 4); - - if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - } else { - accumulator = {}; - } - } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object ? baseValues(object, keys(object)) : []; - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined; - } - if (floating === undefined) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined; - } - } - if (lower === undefined && upper === undefined) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', "'", and "\`" in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in IE < 9, they can break out of - * attribute values or HTML comments. See [#59](https://html5sec.org/#59), - * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and - * [#133](https://html5sec.org/#133) of the - * [HTML5 Security Cheatsheet](https://html5sec.org/) for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - // Chrome fails to trim leading whitespace characters. - // See https://bugs.chromium.org/p/v8/issues/detail?id=3109 for more details. - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - string = toString(string).replace(reTrim, ''); - return nativeParseInt(string, radix || (reHasHexPrefix.test(string) ? 16 : 10)); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined; - } - limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = baseClamp(toInteger(position), 0, string.length); - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': '

      - - - -